[MERGE] Merged lp:openoject-addons
bzr revid: psa@tinyerp.com-20120831053423-kw7d2tymuh34wl25 bzr revid: psa@tinyerp.com-20120903050251-b78iibz5b3fb6mvw
This commit is contained in:
commit
eeff139db2
|
@ -30,6 +30,8 @@ from osv import fields, osv
|
||||||
import decimal_precision as dp
|
import decimal_precision as dp
|
||||||
from tools.translate import _
|
from tools.translate import _
|
||||||
from tools.float_utils import float_round
|
from tools.float_utils import float_round
|
||||||
|
from openerp import SUPERUSER_ID
|
||||||
|
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -746,9 +748,11 @@ class account_journal(osv.osv):
|
||||||
'profit_account_id' : fields.many2one('account.account', 'Profit Account'),
|
'profit_account_id' : fields.many2one('account.account', 'Profit Account'),
|
||||||
'loss_account_id' : fields.many2one('account.account', 'Loss Account'),
|
'loss_account_id' : fields.many2one('account.account', 'Loss Account'),
|
||||||
'internal_account_id' : fields.many2one('account.account', 'Internal Transfers Account', select=1),
|
'internal_account_id' : fields.many2one('account.account', 'Internal Transfers Account', select=1),
|
||||||
|
'cash_control' : fields.boolean('Cash Control', help='If you want the journal should be control at opening/closing, check this option'),
|
||||||
}
|
}
|
||||||
|
|
||||||
_defaults = {
|
_defaults = {
|
||||||
|
'cash_control' : False,
|
||||||
'with_last_closing_balance' : False,
|
'with_last_closing_balance' : False,
|
||||||
'user_id': lambda self, cr, uid, context: uid,
|
'user_id': lambda self, cr, uid, context: uid,
|
||||||
'company_id': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id,
|
'company_id': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id,
|
||||||
|
@ -817,7 +821,7 @@ class account_journal(osv.osv):
|
||||||
if not 'sequence_id' in vals or not vals['sequence_id']:
|
if not 'sequence_id' in vals or not vals['sequence_id']:
|
||||||
# if we have the right to create a journal, we should be able to
|
# if we have the right to create a journal, we should be able to
|
||||||
# create it's sequence.
|
# create it's sequence.
|
||||||
vals.update({'sequence_id': self.create_sequence(cr, 1, vals, context)})
|
vals.update({'sequence_id': self.create_sequence(cr, SUPERUSER_ID, vals, context)})
|
||||||
return super(account_journal, self).create(cr, uid, vals, context)
|
return super(account_journal, self).create(cr, uid, vals, context)
|
||||||
|
|
||||||
def name_get(self, cr, user, ids, context=None):
|
def name_get(self, cr, user, ids, context=None):
|
||||||
|
@ -1856,7 +1860,7 @@ class account_tax(osv.osv):
|
||||||
|
|
||||||
def get_precision_tax():
|
def get_precision_tax():
|
||||||
def change_digit_tax(cr):
|
def change_digit_tax(cr):
|
||||||
res = pooler.get_pool(cr.dbname).get('decimal.precision').precision_get(cr, 1, 'Account')
|
res = pooler.get_pool(cr.dbname).get('decimal.precision').precision_get(cr, SUPERUSER_ID, 'Account')
|
||||||
return (16, res+2)
|
return (16, res+2)
|
||||||
return change_digit_tax
|
return change_digit_tax
|
||||||
|
|
||||||
|
@ -3345,13 +3349,11 @@ class wizard_multi_charts_accounts(osv.osv_memory):
|
||||||
# Install all the templates objects and generate the real objects
|
# Install all the templates objects and generate the real objects
|
||||||
acc_template_ref, taxes_ref, tax_code_ref = self._install_template(cr, uid, obj_wizard.chart_template_id.id, company_id, code_digits=obj_wizard.code_digits, obj_wizard=obj_wizard, context=context)
|
acc_template_ref, taxes_ref, tax_code_ref = self._install_template(cr, uid, obj_wizard.chart_template_id.id, company_id, code_digits=obj_wizard.code_digits, obj_wizard=obj_wizard, context=context)
|
||||||
|
|
||||||
# write values of default taxes for product
|
# write values of default taxes for product as super user
|
||||||
if obj_wizard.sale_tax and taxes_ref:
|
if obj_wizard.sale_tax and taxes_ref:
|
||||||
ir_values_obj.set(cr, uid, key='default', key2=False, name="taxes_id", company=company_id,
|
ir_values_obj.set_default(cr, SUPERUSER_ID, 'product.product', "taxes_id", [taxes_ref[obj_wizard.sale_tax.id]], for_all_users=True, company_id=company_id)
|
||||||
models =[('product.product',False)], value=[taxes_ref[obj_wizard.sale_tax.id]])
|
|
||||||
if obj_wizard.purchase_tax and taxes_ref:
|
if obj_wizard.purchase_tax and taxes_ref:
|
||||||
ir_values_obj.set(cr, uid, key='default', key2=False, name="supplier_taxes_id", company=company_id,
|
ir_values_obj.set_default(cr, SUPERUSER_ID, 'product.product', "supplier_taxes_id", [taxes_ref[obj_wizard.purchase_tax.id]], for_all_users=True, company_id=company_id)
|
||||||
models =[('product.product',False)], value=[taxes_ref[obj_wizard.purchase_tax.id]])
|
|
||||||
|
|
||||||
# Create Bank journals
|
# Create Bank journals
|
||||||
self._create_bank_journals_from_o2m(cr, uid, obj_wizard, company_id, acc_template_ref, context=context)
|
self._create_bank_journals_from_o2m(cr, uid, obj_wizard, company_id, acc_template_ref, context=context)
|
||||||
|
|
|
@ -194,12 +194,27 @@ class account_cash_statement(osv.osv):
|
||||||
journal = self.pool.get('account.journal').browse(cr, uid, vals['journal_id'], context=context)
|
journal = self.pool.get('account.journal').browse(cr, uid, vals['journal_id'], context=context)
|
||||||
if journal and (journal.type == 'cash') and not vals.get('details_ids'):
|
if journal and (journal.type == 'cash') and not vals.get('details_ids'):
|
||||||
vals['details_ids'] = []
|
vals['details_ids'] = []
|
||||||
|
|
||||||
|
last_pieces = None
|
||||||
|
|
||||||
|
if journal.with_last_closing_balance == True:
|
||||||
|
domain = [('journal_id', '=', journal.id),
|
||||||
|
('state', '=', 'confirm')]
|
||||||
|
last_bank_statement_ids = self.search(cr, uid, domain, limit=1, order='create_date desc', context=context)
|
||||||
|
if last_bank_statement_ids:
|
||||||
|
last_bank_statement = self.browse(cr, uid, last_bank_statement_ids[0], context=context)
|
||||||
|
|
||||||
|
last_pieces = dict(
|
||||||
|
(line.pieces, line.number_closing) for line in last_bank_statement.details_ids
|
||||||
|
)
|
||||||
|
|
||||||
for value in journal.cashbox_line_ids:
|
for value in journal.cashbox_line_ids:
|
||||||
nested_values = {
|
nested_values = {
|
||||||
'number_closing' : 0,
|
'number_closing' : 0,
|
||||||
'number_opening' : 0,
|
'number_opening' : last_pieces.get(value.pieces, 0) if isinstance(last_pieces, dict) else 0,
|
||||||
'pieces' : value.pieces
|
'pieces' : value.pieces
|
||||||
}
|
}
|
||||||
|
|
||||||
vals['details_ids'].append([0, False, nested_values])
|
vals['details_ids'].append([0, False, nested_values])
|
||||||
|
|
||||||
res_id = super(account_cash_statement, self).create(cr, uid, vals, context=context)
|
res_id = super(account_cash_statement, self).create(cr, uid, vals, context=context)
|
||||||
|
|
|
@ -515,7 +515,7 @@
|
||||||
<separator colspan="4" string="Accounts Allowed (empty for no control)"/>
|
<separator colspan="4" string="Accounts Allowed (empty for no control)"/>
|
||||||
<field colspan="4" name="account_control_ids" nolabel="1"/>
|
<field colspan="4" name="account_control_ids" nolabel="1"/>
|
||||||
</page>
|
</page>
|
||||||
<page string="Cash Registers" attrs="{'invisible':[('type', '!=', 'cash')]}">
|
<page string="Cash Registers">
|
||||||
<group>
|
<group>
|
||||||
<group string="Accounts">
|
<group string="Accounts">
|
||||||
<field name="profit_account_id"/>
|
<field name="profit_account_id"/>
|
||||||
|
@ -524,10 +524,11 @@
|
||||||
</group>
|
</group>
|
||||||
<group string="Miscellaneous">
|
<group string="Miscellaneous">
|
||||||
<field name="with_last_closing_balance"/>
|
<field name="with_last_closing_balance"/>
|
||||||
|
<field name="cash_control"/>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<separator string="Available Coins" colspan="4" />
|
<separator string="Available Coins" colspan="4" attrs="{'invisible' : [('cash_control', '=', False)] }"/>
|
||||||
<field name="cashbox_line_ids" nolabel="1" string="Unit Of Currency Definition" colspan="4">
|
<field name="cashbox_line_ids" nolabel="1" string="Unit Of Currency Definition" colspan="4" attrs="{'invisible' : [('cash_control', '=', False)]}">
|
||||||
<tree string="CashBox Lines" editable="bottom">
|
<tree string="CashBox Lines" editable="bottom">
|
||||||
<field name="pieces" />
|
<field name="pieces" />
|
||||||
</tree>
|
</tree>
|
||||||
|
|
|
@ -381,6 +381,11 @@
|
||||||
<field name="name">Cash Journal - (test)</field>
|
<field name="name">Cash Journal - (test)</field>
|
||||||
<field name="code">TCSH</field>
|
<field name="code">TCSH</field>
|
||||||
<field name="type">cash</field>
|
<field name="type">cash</field>
|
||||||
|
<field name="profit_account_id" model="account.account" ref="rsa" />
|
||||||
|
<field name="loss_account_id" model="account.account" ref="rsa" />
|
||||||
|
<field name="internal_account_id" model="account.account" ref="chart0" />
|
||||||
|
<field name="with_last_closing_balance" eval="True" />
|
||||||
|
<field name="cash_control" eval="True" />
|
||||||
<field name="view_id" ref="account_journal_bank_view"/>
|
<field name="view_id" ref="account_journal_bank_view"/>
|
||||||
<field name="sequence_id" ref="sequence_cash_journal"/>
|
<field name="sequence_id" ref="sequence_cash_journal"/>
|
||||||
<field model="account.account" name="default_debit_account_id" ref="cash"/>
|
<field model="account.account" name="default_debit_account_id" ref="cash"/>
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
<label for="quantity_max"/>
|
<label for="quantity_max"/>
|
||||||
<div>
|
<div>
|
||||||
<field name="quantity_max" class="oe_inline"/>
|
<field name="quantity_max" class="oe_inline"/>
|
||||||
<field name="company_uom_id" readonly="1" class="oe_inline"/>
|
|
||||||
</div>
|
</div>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr='//group[@name="invoice_on_timesheets"]' position="replace">
|
<xpath expr='//group[@name="invoice_on_timesheets"]' position="replace">
|
||||||
|
|
|
@ -25,6 +25,7 @@ from tools.translate import _
|
||||||
import pooler
|
import pooler
|
||||||
import time
|
import time
|
||||||
import tools
|
import tools
|
||||||
|
from openerp import SUPERUSER_ID
|
||||||
|
|
||||||
class audittrail_rule(osv.osv):
|
class audittrail_rule(osv.osv):
|
||||||
"""
|
"""
|
||||||
|
@ -252,10 +253,10 @@ class audittrail_objects_proxy(object_proxy):
|
||||||
pool = pooler.get_pool(cr.dbname)
|
pool = pooler.get_pool(cr.dbname)
|
||||||
resource_pool = pool.get(model)
|
resource_pool = pool.get(model)
|
||||||
model_pool = pool.get('ir.model')
|
model_pool = pool.get('ir.model')
|
||||||
model_ids = model_pool.search(cr, 1, [('model', '=', model)])
|
model_ids = model_pool.search(cr, SUPERUSER_ID, [('model', '=', model)])
|
||||||
model_id = model_ids and model_ids[0] or False
|
model_id = model_ids and model_ids[0] or False
|
||||||
assert model_id, _("'%s' Model does not exist..." %(model))
|
assert model_id, _("'%s' Model does not exist..." %(model))
|
||||||
model = model_pool.browse(cr, 1, model_id)
|
model = model_pool.browse(cr, SUPERUSER_ID, model_id)
|
||||||
|
|
||||||
# fields to log. currently only used by log on read()
|
# fields to log. currently only used by log on read()
|
||||||
field_list = []
|
field_list = []
|
||||||
|
@ -322,7 +323,7 @@ class audittrail_objects_proxy(object_proxy):
|
||||||
data = {}
|
data = {}
|
||||||
resource_pool = pool.get(model.model)
|
resource_pool = pool.get(model.model)
|
||||||
# read all the fields of the given resources in super admin mode
|
# read all the fields of the given resources in super admin mode
|
||||||
for resource in resource_pool.read(cr, 1, res_ids):
|
for resource in resource_pool.read(cr, SUPERUSER_ID, res_ids):
|
||||||
values = {}
|
values = {}
|
||||||
values_text = {}
|
values_text = {}
|
||||||
resource_id = resource['id']
|
resource_id = resource['id']
|
||||||
|
@ -332,19 +333,19 @@ class audittrail_objects_proxy(object_proxy):
|
||||||
continue
|
continue
|
||||||
values[field] = resource[field]
|
values[field] = resource[field]
|
||||||
# get the textual value of that field for this record
|
# get the textual value of that field for this record
|
||||||
values_text[field] = self.get_value_text(cr, 1, pool, resource_pool, method, field, resource[field])
|
values_text[field] = self.get_value_text(cr, SUPERUSER_ID, pool, resource_pool, method, field, resource[field])
|
||||||
|
|
||||||
field_obj = resource_pool._all_columns.get(field).column
|
field_obj = resource_pool._all_columns.get(field).column
|
||||||
if field_obj._type in ('one2many','many2many'):
|
if field_obj._type in ('one2many','many2many'):
|
||||||
# check if an audittrail rule apply in super admin mode
|
# check if an audittrail rule apply in super admin mode
|
||||||
if self.check_rules(cr, 1, field_obj._obj, method):
|
if self.check_rules(cr, SUPERUSER_ID, field_obj._obj, method):
|
||||||
# check if the model associated to a *2m field exists, in super admin mode
|
# check 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_ids = pool.get('ir.model').search(cr, SUPERUSER_ID, [('model', '=', field_obj._obj)])
|
||||||
x2m_model_id = x2m_model_ids and x2m_model_ids[0] or False
|
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))
|
assert x2m_model_id, _("'%s' Model does not exist..." %(field_obj._obj))
|
||||||
x2m_model = pool.get('ir.model').browse(cr, 1, x2m_model_id)
|
x2m_model = pool.get('ir.model').browse(cr, SUPERUSER_ID, x2m_model_id)
|
||||||
#recursive call on x2m fields that need to be checked too
|
#recursive call on x2m fields that need to be checked too
|
||||||
data.update(self.get_data(cr, 1, pool, resource[field], x2m_model, method))
|
data.update(self.get_data(cr, SUPERUSER_ID, pool, resource[field], x2m_model, method))
|
||||||
data[(model.id, resource_id)] = {'text':values_text, 'value': values}
|
data[(model.id, resource_id)] = {'text':values_text, 'value': values}
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
@ -389,12 +390,12 @@ class audittrail_objects_proxy(object_proxy):
|
||||||
field_obj = field_definition.column
|
field_obj = field_definition.column
|
||||||
if field_obj._type in ('one2many','many2many'):
|
if field_obj._type in ('one2many','many2many'):
|
||||||
# checking if an audittrail rule apply in super admin mode
|
# checking if an audittrail rule apply in super admin mode
|
||||||
if self.check_rules(cr, 1, field_obj._obj, method):
|
if self.check_rules(cr, SUPERUSER_ID, field_obj._obj, method):
|
||||||
# checking if the model associated to a *2m field exists, in super admin mode
|
# 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_ids = pool.get('ir.model').search(cr, SUPERUSER_ID, [('model', '=', field_obj._obj)])
|
||||||
x2m_model_id = x2m_model_ids and x2m_model_ids[0] or False
|
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))
|
assert x2m_model_id, _("'%s' Model does not exist..." %(field_obj._obj))
|
||||||
x2m_model = pool.get('ir.model').browse(cr, 1, x2m_model_id)
|
x2m_model = pool.get('ir.model').browse(cr, SUPERUSER_ID, x2m_model_id)
|
||||||
# the resource_ids that need to be checked are the sum of both old and previous values (because we
|
# the resource_ids that need to be checked are the sum of both old and previous values (because we
|
||||||
# need to log also creation or deletion in those lists).
|
# need to log also creation or deletion in those lists).
|
||||||
x2m_old_values_ids = old_values.get(key, {'value': {}})['value'].get(field_name, [])
|
x2m_old_values_ids = old_values.get(key, {'value': {}})['value'].get(field_name, [])
|
||||||
|
@ -402,7 +403,7 @@ class audittrail_objects_proxy(object_proxy):
|
||||||
# We use list(set(...)) to remove duplicates.
|
# We use list(set(...)) to remove duplicates.
|
||||||
res_ids = list(set(x2m_old_values_ids + x2m_new_values_ids))
|
res_ids = list(set(x2m_old_values_ids + x2m_new_values_ids))
|
||||||
for res_id in res_ids:
|
for res_id in res_ids:
|
||||||
lines.update(self.prepare_audittrail_log_line(cr, 1, pool, x2m_model, res_id, method, old_values, new_values, field_list))
|
lines.update(self.prepare_audittrail_log_line(cr, SUPERUSER_ID, pool, x2m_model, res_id, method, old_values, new_values, field_list))
|
||||||
# if the value value is different than the old value: record the change
|
# if the value value is different than the old value: record the change
|
||||||
if key not in old_values or key not in new_values or old_values[key]['value'][field_name] != new_values[key]['value'][field_name]:
|
if key not in old_values or key not in new_values or old_values[key]['value'][field_name] != new_values[key]['value'][field_name]:
|
||||||
data = {
|
data = {
|
||||||
|
@ -459,9 +460,9 @@ class audittrail_objects_proxy(object_proxy):
|
||||||
vals.update({'method': 'unlink'})
|
vals.update({'method': 'unlink'})
|
||||||
# create the audittrail log in super admin mode, only if a change has been detected
|
# create the audittrail log in super admin mode, only if a change has been detected
|
||||||
if lines[(model_id, resource_id)]:
|
if lines[(model_id, resource_id)]:
|
||||||
log_id = pool.get('audittrail.log').create(cr, 1, vals)
|
log_id = pool.get('audittrail.log').create(cr, SUPERUSER_ID, vals)
|
||||||
model = pool.get('ir.model').browse(cr, uid, model_id)
|
model = pool.get('ir.model').browse(cr, uid, model_id)
|
||||||
self.create_log_line(cr, 1, log_id, model, lines[(model_id, resource_id)])
|
self.create_log_line(cr, SUPERUSER_ID, log_id, model, lines[(model_id, resource_id)])
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def check_rules(self, cr, uid, model, method):
|
def check_rules(self, cr, uid, model, method):
|
||||||
|
@ -475,11 +476,11 @@ class audittrail_objects_proxy(object_proxy):
|
||||||
"""
|
"""
|
||||||
pool = pooler.get_pool(cr.dbname)
|
pool = pooler.get_pool(cr.dbname)
|
||||||
if 'audittrail.rule' in pool.models:
|
if 'audittrail.rule' in pool.models:
|
||||||
model_ids = pool.get('ir.model').search(cr, 1, [('model', '=', model)])
|
model_ids = pool.get('ir.model').search(cr, SUPERUSER_ID, [('model', '=', model)])
|
||||||
model_id = model_ids and model_ids[0] or False
|
model_id = model_ids and model_ids[0] or False
|
||||||
if model_id:
|
if model_id:
|
||||||
rule_ids = pool.get('audittrail.rule').search(cr, 1, [('object_id', '=', model_id), ('state', '=', 'subscribed')])
|
rule_ids = pool.get('audittrail.rule').search(cr, SUPERUSER_ID, [('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']):
|
for rule in pool.get('audittrail.rule').read(cr, SUPERUSER_ID, 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):
|
if rule.get('log_'+method,0):
|
||||||
return True
|
return True
|
||||||
|
|
|
@ -7,31 +7,31 @@ msgstr ""
|
||||||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
"PO-Revision-Date: 2009-01-23 17:17+0000\n"
|
"PO-Revision-Date: 2012-08-30 13:46+0000\n"
|
||||||
"Last-Translator: <>\n"
|
"Last-Translator: Eric Huang <eh@cenoq.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-08-28 06:25+0000\n"
|
"X-Launchpad-Export-Date: 2012-08-31 04:56+0000\n"
|
||||||
"X-Generator: Launchpad (build 15864)\n"
|
"X-Generator: Launchpad (build 15887)\n"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: code:addons/audittrail/audittrail.py:75
|
#: code:addons/audittrail/audittrail.py:75
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "WARNING: audittrail is not part of the pool"
|
msgid "WARNING: audittrail is not part of the pool"
|
||||||
msgstr ""
|
msgstr "警告:稽核追蹤不屬於此池"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.log.line,log_id:0
|
#: field:audittrail.log.line,log_id:0
|
||||||
msgid "Log"
|
msgid "Log"
|
||||||
msgstr ""
|
msgstr "日誌"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.rule:0
|
#: view:audittrail.rule:0
|
||||||
#: selection:audittrail.rule,state:0
|
#: selection:audittrail.rule,state:0
|
||||||
msgid "Subscribed"
|
msgid "Subscribed"
|
||||||
msgstr ""
|
msgstr "已訂閱"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: sql_constraint:audittrail.rule:0
|
#: sql_constraint:audittrail.rule:0
|
||||||
|
@ -39,330 +39,332 @@ msgid ""
|
||||||
"There is already a rule defined on this object\n"
|
"There is already a rule defined on this object\n"
|
||||||
" You cannot define another: please edit the existing one."
|
" You cannot define another: please edit the existing one."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"該對象已經定義了稽核規則。\n"
|
||||||
|
"您不能再次定義,請直接編輯現有的稽核規則。"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.rule:0
|
#: view:audittrail.rule:0
|
||||||
msgid "Subscribed Rule"
|
msgid "Subscribed Rule"
|
||||||
msgstr ""
|
msgstr "已訂閱規則"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: model:ir.model,name:audittrail.model_audittrail_rule
|
#: model:ir.model,name:audittrail.model_audittrail_rule
|
||||||
msgid "Audittrail Rule"
|
msgid "Audittrail Rule"
|
||||||
msgstr ""
|
msgstr "稽核追蹤規則"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.view.log:0
|
#: view:audittrail.view.log:0
|
||||||
#: model:ir.actions.act_window,name:audittrail.action_audittrail_log_tree
|
#: model:ir.actions.act_window,name:audittrail.action_audittrail_log_tree
|
||||||
#: model:ir.ui.menu,name:audittrail.menu_action_audittrail_log_tree
|
#: model:ir.ui.menu,name:audittrail.menu_action_audittrail_log_tree
|
||||||
msgid "Audit Logs"
|
msgid "Audit Logs"
|
||||||
msgstr ""
|
msgstr "稽核日誌"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.log:0
|
#: view:audittrail.log:0
|
||||||
#: view:audittrail.rule:0
|
#: view:audittrail.rule:0
|
||||||
msgid "Group By..."
|
msgid "Group By..."
|
||||||
msgstr ""
|
msgstr "分類方式..."
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.rule:0
|
#: view:audittrail.rule:0
|
||||||
#: field:audittrail.rule,state:0
|
#: field:audittrail.rule,state:0
|
||||||
msgid "State"
|
msgid "State"
|
||||||
msgstr ""
|
msgstr "狀態"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.rule:0
|
#: view:audittrail.rule:0
|
||||||
msgid "_Subscribe"
|
msgid "_Subscribe"
|
||||||
msgstr ""
|
msgstr "訂閱(_S)"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.rule:0
|
#: view:audittrail.rule:0
|
||||||
#: selection:audittrail.rule,state:0
|
#: selection:audittrail.rule,state:0
|
||||||
msgid "Draft"
|
msgid "Draft"
|
||||||
msgstr ""
|
msgstr "草稿"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.log.line,old_value:0
|
#: field:audittrail.log.line,old_value:0
|
||||||
msgid "Old Value"
|
msgid "Old Value"
|
||||||
msgstr ""
|
msgstr "舊值"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: model:ir.actions.act_window,name:audittrail.action_audittrail_view_log
|
#: model:ir.actions.act_window,name:audittrail.action_audittrail_view_log
|
||||||
msgid "View log"
|
msgid "View log"
|
||||||
msgstr ""
|
msgstr "查看日誌"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: help:audittrail.rule,log_read:0
|
#: help:audittrail.rule,log_read:0
|
||||||
msgid ""
|
msgid ""
|
||||||
"Select this if you want to keep track of read/open on any record of the "
|
"Select this if you want to keep track of read/open on any record of the "
|
||||||
"object of this rule"
|
"object of this rule"
|
||||||
msgstr ""
|
msgstr "如果你需要追蹤對該對象的任何記錄的讀和打開動作請選擇此項"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.log,method:0
|
#: field:audittrail.log,method:0
|
||||||
msgid "Method"
|
msgid "Method"
|
||||||
msgstr ""
|
msgstr "方法"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.view.log,from:0
|
#: field:audittrail.view.log,from:0
|
||||||
msgid "Log From"
|
msgid "Log From"
|
||||||
msgstr ""
|
msgstr "日誌來源"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.log.line,log:0
|
#: field:audittrail.log.line,log:0
|
||||||
msgid "Log ID"
|
msgid "Log ID"
|
||||||
msgstr ""
|
msgstr "日誌標識"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.log,res_id:0
|
#: field:audittrail.log,res_id:0
|
||||||
msgid "Resource Id"
|
msgid "Resource Id"
|
||||||
msgstr ""
|
msgstr "資源標識"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: help:audittrail.rule,user_id:0
|
#: help:audittrail.rule,user_id:0
|
||||||
msgid "if User is not added then it will applicable for all users"
|
msgid "if User is not added then it will applicable for all users"
|
||||||
msgstr ""
|
msgstr "如果未加入使用者則適用於所有使用者"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: help:audittrail.rule,log_workflow:0
|
#: help:audittrail.rule,log_workflow:0
|
||||||
msgid ""
|
msgid ""
|
||||||
"Select this if you want to keep track of workflow on any record of the "
|
"Select this if you want to keep track of workflow on any record of the "
|
||||||
"object of this rule"
|
"object of this rule"
|
||||||
msgstr ""
|
msgstr "如果您需要追蹤該對象所有記錄的工作流程請選擇此項"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.rule,user_id:0
|
#: field:audittrail.rule,user_id:0
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr ""
|
msgstr "使用者"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.log:0
|
#: view:audittrail.log:0
|
||||||
msgid "Log Lines"
|
msgid "Log Lines"
|
||||||
msgstr ""
|
msgstr "日誌明細"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.log:0
|
#: view:audittrail.log:0
|
||||||
#: field:audittrail.log,object_id:0
|
#: field:audittrail.log,object_id:0
|
||||||
#: field:audittrail.rule,object_id:0
|
#: field:audittrail.rule,object_id:0
|
||||||
msgid "Object"
|
msgid "Object"
|
||||||
msgstr ""
|
msgstr "對象"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.rule:0
|
#: view:audittrail.rule:0
|
||||||
msgid "AuditTrail Rule"
|
msgid "AuditTrail Rule"
|
||||||
msgstr ""
|
msgstr "稽核追蹤規則"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.view.log,to:0
|
#: field:audittrail.view.log,to:0
|
||||||
msgid "Log To"
|
msgid "Log To"
|
||||||
msgstr ""
|
msgstr "記錄到"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.log:0
|
#: view:audittrail.log:0
|
||||||
msgid "New Value Text: "
|
msgid "New Value Text: "
|
||||||
msgstr ""
|
msgstr "新值內容: "
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.rule:0
|
#: view:audittrail.rule:0
|
||||||
msgid "Search Audittrail Rule"
|
msgid "Search Audittrail Rule"
|
||||||
msgstr ""
|
msgstr "搜索稽核追蹤規則"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: model:ir.actions.act_window,name:audittrail.action_audittrail_rule_tree
|
#: model:ir.actions.act_window,name:audittrail.action_audittrail_rule_tree
|
||||||
#: model:ir.ui.menu,name:audittrail.menu_action_audittrail_rule_tree
|
#: model:ir.ui.menu,name:audittrail.menu_action_audittrail_rule_tree
|
||||||
msgid "Audit Rules"
|
msgid "Audit Rules"
|
||||||
msgstr ""
|
msgstr "稽核規則"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.log:0
|
#: view:audittrail.log:0
|
||||||
msgid "Old Value : "
|
msgid "Old Value : "
|
||||||
msgstr ""
|
msgstr "舊值: "
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.log,name:0
|
#: field:audittrail.log,name:0
|
||||||
msgid "Resource Name"
|
msgid "Resource Name"
|
||||||
msgstr ""
|
msgstr "資源名稱"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.log:0
|
#: view:audittrail.log:0
|
||||||
#: field:audittrail.log,timestamp:0
|
#: field:audittrail.log,timestamp:0
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr ""
|
msgstr "日期"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: help:audittrail.rule,log_write:0
|
#: help:audittrail.rule,log_write:0
|
||||||
msgid ""
|
msgid ""
|
||||||
"Select this if you want to keep track of modification on any record of the "
|
"Select this if you want to keep track of modification on any record of the "
|
||||||
"object of this rule"
|
"object of this rule"
|
||||||
msgstr ""
|
msgstr "如果您要追蹤此對象所有記錄的變更請選擇此項。"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.rule,log_create:0
|
#: field:audittrail.rule,log_create:0
|
||||||
msgid "Log Creates"
|
msgid "Log Creates"
|
||||||
msgstr ""
|
msgstr "建立日誌"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: help:audittrail.rule,object_id:0
|
#: help:audittrail.rule,object_id:0
|
||||||
msgid "Select object for which you want to generate log."
|
msgid "Select object for which you want to generate log."
|
||||||
msgstr ""
|
msgstr "選擇您要生成稽核日誌的對象"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.log:0
|
#: view:audittrail.log:0
|
||||||
msgid "Old Value Text : "
|
msgid "Old Value Text : "
|
||||||
msgstr ""
|
msgstr "舊值內容: "
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.rule,log_workflow:0
|
#: field:audittrail.rule,log_workflow:0
|
||||||
msgid "Log Workflow"
|
msgid "Log Workflow"
|
||||||
msgstr ""
|
msgstr "記錄工作流"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.rule,log_read:0
|
#: field:audittrail.rule,log_read:0
|
||||||
msgid "Log Reads"
|
msgid "Log Reads"
|
||||||
msgstr ""
|
msgstr "記錄讀操作"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: code:addons/audittrail/audittrail.py:76
|
#: code:addons/audittrail/audittrail.py:76
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Change audittrail depends -- Setting rule as DRAFT"
|
msgid "Change audittrail depends -- Setting rule as DRAFT"
|
||||||
msgstr ""
|
msgstr "修改檢查稽核依賴 - 設定規則為草稿"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.log,line_ids:0
|
#: field:audittrail.log,line_ids:0
|
||||||
msgid "Log lines"
|
msgid "Log lines"
|
||||||
msgstr ""
|
msgstr "日誌明細"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.log.line,field_id:0
|
#: field:audittrail.log.line,field_id:0
|
||||||
msgid "Fields"
|
msgid "Fields"
|
||||||
msgstr ""
|
msgstr "欄位列表"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.rule:0
|
#: view:audittrail.rule:0
|
||||||
msgid "AuditTrail Rules"
|
msgid "AuditTrail Rules"
|
||||||
msgstr ""
|
msgstr "稽核追蹤規則"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: help:audittrail.rule,log_unlink:0
|
#: help:audittrail.rule,log_unlink:0
|
||||||
msgid ""
|
msgid ""
|
||||||
"Select this if you want to keep track of deletion on any record of the "
|
"Select this if you want to keep track of deletion on any record of the "
|
||||||
"object of this rule"
|
"object of this rule"
|
||||||
msgstr ""
|
msgstr "如果你要追蹤所有刪除這個對象記錄的操作請選擇此項"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.log:0
|
#: view:audittrail.log:0
|
||||||
#: field:audittrail.log,user_id:0
|
#: field:audittrail.log,user_id:0
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr ""
|
msgstr "使用者"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.rule,action_id:0
|
#: field:audittrail.rule,action_id:0
|
||||||
msgid "Action ID"
|
msgid "Action ID"
|
||||||
msgstr ""
|
msgstr "動作ID"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.rule:0
|
#: view:audittrail.rule:0
|
||||||
msgid "Users (if User is not added then it will applicable for all users)"
|
msgid "Users (if User is not added then it will applicable for all users)"
|
||||||
msgstr ""
|
msgstr "使用者(如果沒有選擇使用者則適用於所有使用者)"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.rule:0
|
#: view:audittrail.rule:0
|
||||||
msgid "UnSubscribe"
|
msgid "UnSubscribe"
|
||||||
msgstr ""
|
msgstr "取消訂閱"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.rule,log_unlink:0
|
#: field:audittrail.rule,log_unlink:0
|
||||||
msgid "Log Deletes"
|
msgid "Log Deletes"
|
||||||
msgstr ""
|
msgstr "記錄刪除操作"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.log.line,field_description:0
|
#: field:audittrail.log.line,field_description:0
|
||||||
msgid "Field Description"
|
msgid "Field Description"
|
||||||
msgstr ""
|
msgstr "欄位說明"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.log:0
|
#: view:audittrail.log:0
|
||||||
msgid "Search Audittrail Log"
|
msgid "Search Audittrail Log"
|
||||||
msgstr ""
|
msgstr "搜尋稽核追蹤日誌"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.rule,log_write:0
|
#: field:audittrail.rule,log_write:0
|
||||||
msgid "Log Writes"
|
msgid "Log Writes"
|
||||||
msgstr ""
|
msgstr "記錄修改操作"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.view.log:0
|
#: view:audittrail.view.log:0
|
||||||
msgid "Open Logs"
|
msgid "Open Logs"
|
||||||
msgstr ""
|
msgstr "打開日誌"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.log.line,new_value_text:0
|
#: field:audittrail.log.line,new_value_text:0
|
||||||
msgid "New value Text"
|
msgid "New value Text"
|
||||||
msgstr ""
|
msgstr "新值內容"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.rule,name:0
|
#: field:audittrail.rule,name:0
|
||||||
msgid "Rule Name"
|
msgid "Rule Name"
|
||||||
msgstr ""
|
msgstr "規則名稱"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.log.line,new_value:0
|
#: field:audittrail.log.line,new_value:0
|
||||||
msgid "New Value"
|
msgid "New Value"
|
||||||
msgstr ""
|
msgstr "新值"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.log:0
|
#: view:audittrail.log:0
|
||||||
msgid "AuditTrail Logs"
|
msgid "AuditTrail Logs"
|
||||||
msgstr ""
|
msgstr "稽核追蹤日誌"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.rule:0
|
#: view:audittrail.rule:0
|
||||||
msgid "Draft Rule"
|
msgid "Draft Rule"
|
||||||
msgstr ""
|
msgstr "草稿規則"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: model:ir.model,name:audittrail.model_audittrail_log
|
#: model:ir.model,name:audittrail.model_audittrail_log
|
||||||
msgid "Audittrail Log"
|
msgid "Audittrail Log"
|
||||||
msgstr ""
|
msgstr "稽核追蹤日誌"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: help:audittrail.rule,log_action:0
|
#: help:audittrail.rule,log_action:0
|
||||||
msgid ""
|
msgid ""
|
||||||
"Select this if you want to keep track of actions on the object of this rule"
|
"Select this if you want to keep track of actions on the object of this rule"
|
||||||
msgstr ""
|
msgstr "如果你要追蹤這個對象所有記錄執行的操作請選擇此項"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.log:0
|
#: view:audittrail.log:0
|
||||||
msgid "New Value : "
|
msgid "New Value : "
|
||||||
msgstr ""
|
msgstr "新值: "
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.log.line,old_value_text:0
|
#: field:audittrail.log.line,old_value_text:0
|
||||||
msgid "Old value Text"
|
msgid "Old value Text"
|
||||||
msgstr ""
|
msgstr "舊值內容"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: view:audittrail.view.log:0
|
#: view:audittrail.view.log:0
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr "取消"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: model:ir.model,name:audittrail.model_audittrail_view_log
|
#: model:ir.model,name:audittrail.model_audittrail_view_log
|
||||||
msgid "View Log"
|
msgid "View Log"
|
||||||
msgstr ""
|
msgstr "查看日誌"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: model:ir.model,name:audittrail.model_audittrail_log_line
|
#: model:ir.model,name:audittrail.model_audittrail_log_line
|
||||||
msgid "Log Line"
|
msgid "Log Line"
|
||||||
msgstr ""
|
msgstr "日誌明細"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: field:audittrail.rule,log_action:0
|
#: field:audittrail.rule,log_action:0
|
||||||
msgid "Log Action"
|
msgid "Log Action"
|
||||||
msgstr ""
|
msgstr "記錄動作"
|
||||||
|
|
||||||
#. module: audittrail
|
#. module: audittrail
|
||||||
#: help:audittrail.rule,log_create:0
|
#: help:audittrail.rule,log_create:0
|
||||||
msgid ""
|
msgid ""
|
||||||
"Select this if you want to keep track of creation on any record of the "
|
"Select this if you want to keep track of creation on any record of the "
|
||||||
"object of this rule"
|
"object of this rule"
|
||||||
msgstr ""
|
msgstr "如果你想追蹤此對象所有記錄的建立請選擇此項"
|
||||||
|
|
|
@ -7,6 +7,7 @@ import werkzeug.utils
|
||||||
import openerp.modules.registry
|
import openerp.modules.registry
|
||||||
import openerp.addons.web.controllers.main
|
import openerp.addons.web.controllers.main
|
||||||
import openerp.addons.web.common.http as openerpweb
|
import openerp.addons.web.common.http as openerpweb
|
||||||
|
from openerp import SUPERUSER_ID
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -18,7 +19,7 @@ class OAuthController(openerpweb.Controller):
|
||||||
registry = openerp.modules.registry.RegistryManager.get(dbname)
|
registry = openerp.modules.registry.RegistryManager.get(dbname)
|
||||||
with registry.cursor() as cr:
|
with registry.cursor() as cr:
|
||||||
providers = registry.get('auth.oauth.provider')
|
providers = registry.get('auth.oauth.provider')
|
||||||
l = providers.read(cr, 1, providers.search(cr, 1, [('enabled','=',True)]))
|
l = providers.read(cr, SUPERUSER_ID, providers.search(cr, SUPERUSER_ID, [('enabled','=',True)]))
|
||||||
return l
|
return l
|
||||||
|
|
||||||
@openerpweb.httprequest
|
@openerpweb.httprequest
|
||||||
|
@ -30,7 +31,7 @@ class OAuthController(openerpweb.Controller):
|
||||||
with registry.cursor() as cr:
|
with registry.cursor() as cr:
|
||||||
try:
|
try:
|
||||||
u = registry.get('res.users')
|
u = registry.get('res.users')
|
||||||
credentials = u.auth_oauth(cr, 1, provider, kw)
|
credentials = u.auth_oauth(cr, SUPERUSER_ID, provider, kw)
|
||||||
cr.commit()
|
cr.commit()
|
||||||
return openerp.addons.web.controllers.main.login_and_redirect(req, *credentials)
|
return openerp.addons.web.controllers.main.login_and_redirect(req, *credentials)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
|
|
|
@ -6,6 +6,7 @@ import simplejson
|
||||||
|
|
||||||
import openerp
|
import openerp
|
||||||
from openerp.osv import osv, fields
|
from openerp.osv import osv, fields
|
||||||
|
from openerp import SUPERUSER_ID
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -63,7 +64,7 @@ class res_users(osv.Model):
|
||||||
try:
|
try:
|
||||||
return super(res_users, self).check_credentials(cr, uid, password)
|
return super(res_users, self).check_credentials(cr, uid, password)
|
||||||
except openerp.exceptions.AccessDenied:
|
except openerp.exceptions.AccessDenied:
|
||||||
res = self.search(cr, 1, [('id','=',uid),('oauth_access_token','=',password)])
|
res = self.search(cr, SUPERUSER_ID, [('id','=',uid),('oauth_access_token','=',password)])
|
||||||
if not res:
|
if not res:
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ import logging
|
||||||
import os
|
import os
|
||||||
import tempfile
|
import tempfile
|
||||||
import urllib
|
import urllib
|
||||||
|
from openerp import SUPERUSER_ID
|
||||||
|
|
||||||
import werkzeug.urls
|
import werkzeug.urls
|
||||||
import werkzeug.exceptions
|
import werkzeug.exceptions
|
||||||
|
@ -176,7 +177,7 @@ class OpenIDController(openerpweb.Controller):
|
||||||
with registry.cursor() as cr:
|
with registry.cursor() as cr:
|
||||||
Modules = registry.get('ir.module.module')
|
Modules = registry.get('ir.module.module')
|
||||||
|
|
||||||
installed = Modules.search_count(cr, 1, ['&', ('name', '=', 'auth_openid'), ('state', '=', 'installed')]) == 1
|
installed = Modules.search_count(cr, SUPERUSER_ID, ['&', ('name', '=', 'auth_openid'), ('state', '=', 'installed')]) == 1
|
||||||
if installed:
|
if installed:
|
||||||
|
|
||||||
Users = registry.get('res.users')
|
Users = registry.get('res.users')
|
||||||
|
@ -196,13 +197,13 @@ class OpenIDController(openerpweb.Controller):
|
||||||
|
|
||||||
domain += [('openid_url', '=', openid_url), ('active', '=', True)]
|
domain += [('openid_url', '=', openid_url), ('active', '=', True)]
|
||||||
|
|
||||||
ids = Users.search(cr, 1, domain)
|
ids = Users.search(cr, SUPERUSER_ID, domain)
|
||||||
assert len(ids) < 2
|
assert len(ids) < 2
|
||||||
if ids:
|
if ids:
|
||||||
user_id = ids[0]
|
user_id = ids[0]
|
||||||
login = Users.browse(cr, 1, user_id).login
|
login = Users.browse(cr, SUPERUSER_ID, user_id).login
|
||||||
key = randomString(utils.KEY_LENGTH, '0123456789abcdef')
|
key = randomString(utils.KEY_LENGTH, '0123456789abcdef')
|
||||||
Users.write(cr, 1, [user_id], {'openid_key': key})
|
Users.write(cr, SUPERUSER_ID, [user_id], {'openid_key': key})
|
||||||
# TODO fill empty fields with the ones from sreg/ax
|
# TODO fill empty fields with the ones from sreg/ax
|
||||||
cr.commit()
|
cr.commit()
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ import urlparse
|
||||||
|
|
||||||
from openerp.tools import config
|
from openerp.tools import config
|
||||||
from openerp.osv import osv, fields
|
from openerp.osv import osv, fields
|
||||||
|
from openerp import SUPERUSER_ID
|
||||||
|
|
||||||
TWENTY_FOUR_HOURS = 24 * 60 * 60
|
TWENTY_FOUR_HOURS = 24 * 60 * 60
|
||||||
|
|
||||||
|
@ -76,9 +77,9 @@ class res_users(osv.osv):
|
||||||
MailMessage.send(cr, uid, [msg_id], context=context)
|
MailMessage.send(cr, uid, [msg_id], context=context)
|
||||||
|
|
||||||
def send_reset_password_request(self, cr, uid, email, context=None):
|
def send_reset_password_request(self, cr, uid, email, context=None):
|
||||||
ids = self.pool.get('res.users').search(cr, 1, [('user_email', '=', email)], context=context)
|
ids = self.pool.get('res.users').search(cr, SUPERUSER_ID, [('user_email', '=', email)], context=context)
|
||||||
if ids:
|
if ids:
|
||||||
self._auth_reset_password_send_email(cr, 1, email, 'reset_password_email', ids[0], context=context)
|
self._auth_reset_password_send_email(cr, SUPERUSER_ID, email, 'reset_password_email', ids[0], context=context)
|
||||||
return True
|
return True
|
||||||
#else:
|
#else:
|
||||||
# _m, company_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'base', 'main_company')
|
# _m, company_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'base', 'main_company')
|
||||||
|
@ -109,7 +110,7 @@ class auth_reset_password(osv.TransientModel):
|
||||||
Users = self.pool.get('res.users')
|
Users = self.pool.get('res.users')
|
||||||
data = Users._auth_reset_password_check_token(cr, uid, values.get('token', ''))
|
data = Users._auth_reset_password_check_token(cr, uid, values.get('token', ''))
|
||||||
if data:
|
if data:
|
||||||
Users.write(cr, 1, data['uid'], {'password': pw}, context=context)
|
Users.write(cr, SUPERUSER_ID, data['uid'], {'password': pw}, context=context)
|
||||||
else:
|
else:
|
||||||
raise osv.except_osv('Error', 'Invalid token')
|
raise osv.except_osv('Error', 'Invalid token')
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,10 @@ Allow users to sign up.
|
||||||
'website': 'http://www.openerp.com',
|
'website': 'http://www.openerp.com',
|
||||||
'installable': True,
|
'installable': True,
|
||||||
'depends': ['base_setup'],
|
'depends': ['base_setup'],
|
||||||
'data': ['res_config.xml'],
|
'data': [
|
||||||
|
'auth_signup_data.xml',
|
||||||
|
'res_config.xml',
|
||||||
|
],
|
||||||
'js': ['static/src/js/auth_signup.js'],
|
'js': ['static/src/js/auth_signup.js'],
|
||||||
'qweb': ['static/src/xml/auth_signup.xml'],
|
'qweb': ['static/src/xml/auth_signup.xml'],
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<openerp>
|
||||||
|
<data noupdate="1">
|
||||||
|
|
||||||
|
<!-- Default template user for new users signing in -->
|
||||||
|
<record id="default_template_user" model="res.users">
|
||||||
|
<field name="name">Template User</field>
|
||||||
|
<field name="login">portaltemplate</field>
|
||||||
|
<!-- No password: this template user doesn't need to log in -->
|
||||||
|
<field name="password"></field>
|
||||||
|
<field name="active" eval="False"/>
|
||||||
|
<!-- Avoid auto-including this user in any default group, just like a typical portal member -->
|
||||||
|
<field name="groups_id" eval="[(5,)]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="default_template_user" model="ir.config_parameter">
|
||||||
|
<field name="key">auth_signup.template_user_id</field>
|
||||||
|
<field name="value" ref="default_template_user"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</data>
|
||||||
|
</openerp>
|
|
@ -5,6 +5,7 @@ import werkzeug.urls
|
||||||
from openerp.modules.registry import RegistryManager
|
from openerp.modules.registry import RegistryManager
|
||||||
from openerp.addons.web.controllers.main import login_and_redirect
|
from openerp.addons.web.controllers.main import login_and_redirect
|
||||||
import openerp.addons.web.common.http as openerpweb
|
import openerp.addons.web.common.http as openerpweb
|
||||||
|
from openerp import SUPERUSER_ID
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -18,7 +19,7 @@ class OpenIDController(openerpweb.Controller):
|
||||||
with registry.cursor() as cr:
|
with registry.cursor() as cr:
|
||||||
try:
|
try:
|
||||||
Users = registry.get('res.users')
|
Users = registry.get('res.users')
|
||||||
credentials = Users.auth_signup(cr, 1, name, login, password)
|
credentials = Users.auth_signup(cr, SUPERUSER_ID, name, login, password)
|
||||||
cr.commit()
|
cr.commit()
|
||||||
return login_and_redirect(req, *credentials)
|
return login_and_redirect(req, *credentials)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
|
|
|
@ -29,13 +29,13 @@ class base_config_settings(osv.TransientModel):
|
||||||
'auth_signup_template_user_id': fields.many2one('res.users', 'Template user for new users created through signup'),
|
'auth_signup_template_user_id': fields.many2one('res.users', 'Template user for new users created through signup'),
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_default_signup(self, cr, uid, fields, context=None):
|
def get_default_auth_signup_template_user_id(self, cr, uid, fields, context=None):
|
||||||
icp = self.pool.get('ir.config_parameter')
|
icp = self.pool.get('ir.config_parameter')
|
||||||
return {
|
return {
|
||||||
'auth_signup_template_user_id': icp.get_param(cr, uid, 'auth.signup_template_user_id', 0) or False
|
'auth_signup_template_user_id': icp.get_param(cr, uid, 'auth_signup.template_user_id', 0) or False
|
||||||
}
|
}
|
||||||
|
|
||||||
def set_signup(self, cr, uid, ids, context=None):
|
def set_auth_signup_template_user_id(self, cr, uid, ids, context=None):
|
||||||
config = self.browse(cr, uid, ids[0], context=context)
|
config = self.browse(cr, uid, ids[0], context=context)
|
||||||
icp = self.pool.get('ir.config_parameter')
|
icp = self.pool.get('ir.config_parameter')
|
||||||
icp.set_param(cr, uid, 'auth.signup_template_user_id', config.auth_signup_template_user_id.id)
|
icp.set_param(cr, uid, 'auth_signup.template_user_id', config.auth_signup_template_user_id.id)
|
||||||
|
|
|
@ -12,9 +12,9 @@
|
||||||
<field name="auth_signup_uninvited" class="oe_inline"/>
|
<field name="auth_signup_uninvited" class="oe_inline"/>
|
||||||
<label for="auth_signup_uninvited"/>
|
<label for="auth_signup_uninvited"/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div attrs="{'invisible':[('auth_signup_uninvited','=',False)]}">
|
||||||
<label for="auth_signup_template_user_id"/>
|
<label for="auth_signup_template_user_id"/>
|
||||||
<field name="auth_signup_template_user_id" class="oe_inline"/>
|
<field name="auth_signup_template_user_id" class="oe_inline" domain="['|',('active','=',0),('active','=',1)]"/>
|
||||||
</div>
|
</div>
|
||||||
</xpath>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import openerp
|
import openerp
|
||||||
from openerp.osv import osv
|
from openerp.osv import osv
|
||||||
|
from openerp import SUPERUSER_ID
|
||||||
|
|
||||||
class res_users(osv.Model):
|
class res_users(osv.Model):
|
||||||
_inherit = 'res.users'
|
_inherit = 'res.users'
|
||||||
|
@ -15,9 +16,9 @@ class res_users(osv.Model):
|
||||||
#
|
#
|
||||||
user_template_id = self.pool.get('ir.config_parameter').get_param(cr, uid, 'auth.signup_template_user_id', 0)
|
user_template_id = self.pool.get('ir.config_parameter').get_param(cr, uid, 'auth.signup_template_user_id', 0)
|
||||||
if user_template_id:
|
if user_template_id:
|
||||||
self.pool.get('res.users').copy(cr, 1, user_template_id, new_user, context=context)
|
self.pool.get('res.users').copy(cr, SUPERUSER_ID, user_template_id, new_user, context=context)
|
||||||
else:
|
else:
|
||||||
self.pool.get('res.users').create(cr, 1, new_user, context=context)
|
self.pool.get('res.users').create(cr, SUPERUSER_ID, new_user, context=context)
|
||||||
|
|
||||||
def auth_signup(self, cr, uid, name, login, password, context=None):
|
def auth_signup(self, cr, uid, name, login, password, context=None):
|
||||||
r = (cr.dbname, login, password)
|
r = (cr.dbname, login, password)
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# OpenERP, Open Source Management Solution
|
||||||
|
# Copyright (C) 2004-2010 Openerp sa (<http://openerp.com>).
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
import res_company
|
||||||
|
import ir_translation
|
||||||
|
import wizard
|
||||||
|
|
||||||
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -0,0 +1,50 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# OpenERP, Open Source Management Solution
|
||||||
|
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
{
|
||||||
|
'name': 'Automated Translations through Gengo API',
|
||||||
|
'version': '0.1',
|
||||||
|
'category': 'Tools',
|
||||||
|
'description': """
|
||||||
|
Automated Translations through Gengo API
|
||||||
|
----------------------------------------
|
||||||
|
This module will install passive scheduler job for automated translations
|
||||||
|
using the Gengo API. To activate it, you must
|
||||||
|
1) Configure your Gengo authentication parameters under `Settings > Companies > Gengo Parameters`
|
||||||
|
2) Launch the wizard under `Settings > Application Terms > Gengo: Manual Request of Translation` and follow the wizard.
|
||||||
|
|
||||||
|
This wizard will activate the CRON job and the Scheduler and will start the automatic translation via Gengo Services for all the terms where you requested it.
|
||||||
|
""",
|
||||||
|
'author': 'OpenERP SA',
|
||||||
|
'website': 'http://www.openerp.com',
|
||||||
|
'depends': ['base'],
|
||||||
|
'init_xml': ['gengo_sync_schedular_data.xml'],
|
||||||
|
'update_xml': [
|
||||||
|
'ir_translation.xml',
|
||||||
|
'res_company_view.xml',
|
||||||
|
'wizard/base_gengo_translations_view.xml',
|
||||||
|
],
|
||||||
|
'demo_xml': [],
|
||||||
|
'test': [],
|
||||||
|
'installable': True,
|
||||||
|
'auto_install': False,
|
||||||
|
}
|
||||||
|
|
||||||
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<openerp>
|
||||||
|
<data>
|
||||||
|
<!--Scheduler sync Receive Request-->
|
||||||
|
<record id="gengo_sync_receive_request_scheduler" model="ir.cron">
|
||||||
|
<field name="name" >Gengo Sync Translation (Response)</field>
|
||||||
|
<field eval="False" name="active"/>
|
||||||
|
<field name="interval_number">20</field>
|
||||||
|
<field name="interval_type">minutes</field>
|
||||||
|
<field name="numbercall">-1</field>
|
||||||
|
<field eval="'base.gengo.translations'" name="model"></field>
|
||||||
|
<field eval="'_sync_response'" name="function"/>
|
||||||
|
<field eval="'(20,)'" name="args"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!--Scheduler Sync Send Request-->
|
||||||
|
<record id="gengo_sync_send_request_scheduler" model="ir.cron">
|
||||||
|
<field name="name" >Gengo Sync Translation (Request)</field>
|
||||||
|
<field eval="False" name="active"/>
|
||||||
|
<field name="interval_number">20</field>
|
||||||
|
<field name="interval_type">minutes</field>
|
||||||
|
<field name="numbercall">-1</field>
|
||||||
|
<field eval="'base.gengo.translations'" name="model"></field>
|
||||||
|
<field eval="'_sync_request'" name="function"/>
|
||||||
|
<field eval="'(20,)'" name="args"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
</openerp>
|
|
@ -0,0 +1,88 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# OpenERP, Open Source Business Applications
|
||||||
|
# Copyright (C) 2004-2012 OpenERP S.A. (<http://openerp.com>).
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
from osv import fields, osv
|
||||||
|
from tools.translate import _
|
||||||
|
|
||||||
|
LANG_CODE_MAPPING = {
|
||||||
|
'ar_SA': ('ar', 'Arabic'),
|
||||||
|
'id_ID': ('id', 'Indonesian'),
|
||||||
|
'nl_NL': ('nl', 'Dutch'),
|
||||||
|
'fr_CA': ('fr-ca', 'French (Canada)'),
|
||||||
|
'pl_PL': ('pl', 'Polish'),
|
||||||
|
'zh_TW': ('zh-tw', 'Chinese (Traditional)'),
|
||||||
|
'sv_SE': ('sv', 'Swedish'),
|
||||||
|
'ko_KR': ('ko', 'Korean'),
|
||||||
|
'pt_PT': ('pt', 'Portuguese (Europe)'),
|
||||||
|
'en_US': ('en', 'English'),
|
||||||
|
'ja_JP': ('ja', 'Japanese'),
|
||||||
|
'es_ES': ('es', 'Spanish (Spain)'),
|
||||||
|
'zh_CN': ('zh', 'Chinese (Simplified)'),
|
||||||
|
'de_DE': ('de', 'German'),
|
||||||
|
'fr_FR': ('fr', 'French'),
|
||||||
|
'fr_BE': ('fr', 'French'),
|
||||||
|
'ru_RU': ('ru', 'Russian'),
|
||||||
|
'it_IT': ('it', 'Italian'),
|
||||||
|
'pt_BR': ('pt-br', 'Portuguese (Brazil)')
|
||||||
|
}
|
||||||
|
|
||||||
|
class ir_translation(osv.Model):
|
||||||
|
_name = "ir.translation"
|
||||||
|
_inherit = "ir.translation"
|
||||||
|
_columns = {
|
||||||
|
'gengo_comment': fields.text("Comments & Activity Linked to Gengo"),
|
||||||
|
'job_id': fields.char('Gengo Job ID', size=32),
|
||||||
|
"gengo_translation": fields.selection([('machine', 'Translation By Machine'),
|
||||||
|
('standard', 'Standard'),
|
||||||
|
('pro', 'Pro'),
|
||||||
|
('ultra', 'Ultra')], "Gengo Translation Service Level", help='You can select here the service level you want for an automatic translation using Gengo.'),
|
||||||
|
}
|
||||||
|
|
||||||
|
def _get_all_supported_languages(self, cr, uid, context=None):
|
||||||
|
flag, gengo = self.pool.get('base.gengo.translations').gengo_authentication(cr, uid, context=context)
|
||||||
|
if not flag:
|
||||||
|
raise osv.except_osv(_('Gengo Authentication Error'), gengo)
|
||||||
|
supported_langs = {}
|
||||||
|
lang_pair = gengo.getServiceLanguagePairs(lc_src='en')
|
||||||
|
if lang_pair['opstat'] == 'ok':
|
||||||
|
for g_lang in lang_pair['response']:
|
||||||
|
if g_lang['lc_tgt'] not in supported_langs:
|
||||||
|
supported_langs[g_lang['lc_tgt']] = []
|
||||||
|
supported_langs[g_lang['lc_tgt']] += [g_lang['tier']]
|
||||||
|
return supported_langs
|
||||||
|
|
||||||
|
def _get_gengo_corresponding_language(cr, lang):
|
||||||
|
return lang in LANG_CODE_MAPPING and LANG_CODE_MAPPING[lang][0] or lang
|
||||||
|
|
||||||
|
def _check_lang_support(self, cr, uid, ids, context=None):
|
||||||
|
for term in self.browse(cr, uid, ids, context=context):
|
||||||
|
if term.gengo_translation:
|
||||||
|
supported_langs = self._get_all_supported_languages(cr, uid, context=context)
|
||||||
|
if supported_langs:
|
||||||
|
tier = "nonprofit" if term.gengo_translation == 'machine' else term.gengo_translation
|
||||||
|
language = self._get_gengo_corresponding_language(term.lang)
|
||||||
|
if tier not in supported_langs.get(language,[]):
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
_constraints = [
|
||||||
|
(_check_lang_support, 'The Gengo translation service selected is not supported for this language.', ['gengo_translation'])
|
||||||
|
]
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<openerp>
|
||||||
|
<data>
|
||||||
|
<record id="view_translation_search" model="ir.ui.view">
|
||||||
|
<field name="name">Translations</field>
|
||||||
|
<field name="model">ir.translation</field>
|
||||||
|
<field name="inherit_id" ref="base.view_translation_search"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<search string="Translations">
|
||||||
|
<filter string="To Approve In Gengo" domain="[('state','=','inprogress'),('gengo_translation','=',True)]"></filter>
|
||||||
|
</search>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- ir.translation form view -->
|
||||||
|
<record model="ir.ui.view" id="view_ir_translation_inherit_base_gengo_form">
|
||||||
|
<field name="name">ir.translation.form.inherit</field>
|
||||||
|
<field name="inherit_id" ref="base.view_translation_form"/>
|
||||||
|
<field name="model">ir.translation</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//form[@string='Translations']/sheet" position="inside">
|
||||||
|
<group string="Gengo Translation Service" col="4" colspan="4">
|
||||||
|
<field name="gengo_translation" />
|
||||||
|
<label string="Note: If the translation state is 'In Progress', it means that the translation has to be approved to be uploaded in this system. You are supposed to do that directly by using your Gengo Account"/>
|
||||||
|
<field name="gengo_comment" nolabel="1" placeholder="Gengo Comments & Activity..." colspan="4"/>
|
||||||
|
</group>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
</openerp>
|
|
@ -0,0 +1,37 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# OpenERP, Open Source Business Applications
|
||||||
|
# Copyright (C) 2004-2012 OpenERP S.A. (<http://openerp.com>).
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
from osv import fields, osv
|
||||||
|
|
||||||
|
|
||||||
|
class res_company(osv.Model):
|
||||||
|
_name = "res.company"
|
||||||
|
_inherit = "res.company"
|
||||||
|
_columns = {
|
||||||
|
"gengo_private_key": fields.text("Gengo Private Key"),
|
||||||
|
"gengo_public_key": fields.text("Gengo Public Key"),
|
||||||
|
"gengo_comment": fields.text("Comments", help="This comment will be automatically be enclosed in each an every request sent to Gengo"),
|
||||||
|
"gengo_auto_approve": fields.boolean("Auto Approve Translation ?", help="Jobs are Automatically Approved by Gengo."),
|
||||||
|
}
|
||||||
|
|
||||||
|
_defaults = {
|
||||||
|
"gengo_auto_approve": True,
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<openerp>
|
||||||
|
<data>
|
||||||
|
<!-- res.company form view -->
|
||||||
|
<record model="ir.ui.view" id="view_company_inherit_base_gengo_form">
|
||||||
|
<field name="name">res.company.form.inherit</field>
|
||||||
|
<field name="inherit_id" ref="base.view_company_form"/>
|
||||||
|
<field name="model">res.company</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//notebook[last()]" position="inside">
|
||||||
|
<page string="Gengo Parameters">
|
||||||
|
<group col="2">
|
||||||
|
<group col="1" string="Public Key">
|
||||||
|
<field name="gengo_public_key" nolabel="1" placeholder="Add Gengo login Public Key..."/>
|
||||||
|
</group>
|
||||||
|
<group col="1" string="Private Key">
|
||||||
|
<field name="gengo_private_key" password="True" nolabel="1" placeholder="Add Gengo login Private Key..."/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
<group col="4">
|
||||||
|
<field name="gengo_auto_approve"/>
|
||||||
|
</group>
|
||||||
|
<group string="Comments for Translator" col="1">
|
||||||
|
<field name="gengo_comment" nolabel="1" placeholder="Add your comments here for translator...."/>
|
||||||
|
</group>
|
||||||
|
</page>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</data>
|
||||||
|
</openerp>
|
|
@ -0,0 +1,24 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# OpenERP, Open Source Management Solution
|
||||||
|
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
import base_gengo_translations
|
||||||
|
|
||||||
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -0,0 +1,253 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# OpenERP, Open Source Business Applications
|
||||||
|
# Copyright (C) 2004-2012 OpenERP S.A. (<http://openerp.com>).
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
from osv import osv, fields
|
||||||
|
from tools.translate import _
|
||||||
|
import re
|
||||||
|
try:
|
||||||
|
from mygengo import MyGengo
|
||||||
|
except ImportError:
|
||||||
|
raise osv.except_osv(_('Gengo ImportError'), _('Please install mygengo lib from http://pypi.python.org/pypi/mygengo'))
|
||||||
|
|
||||||
|
import logging
|
||||||
|
import tools
|
||||||
|
import time
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
GENGO_DEFAULT_LIMIT = 20
|
||||||
|
|
||||||
|
DEFAULT_CRON_VALS = {
|
||||||
|
'active': True,
|
||||||
|
'interval_number': 20,
|
||||||
|
'interval_type': 'minutes',
|
||||||
|
'model': "'base.gengo.translations'",
|
||||||
|
'args': "'(%s,)'" % (str(GENGO_DEFAULT_LIMIT)),
|
||||||
|
}
|
||||||
|
|
||||||
|
class base_gengo_translations(osv.osv_memory):
|
||||||
|
|
||||||
|
_name = 'base.gengo.translations'
|
||||||
|
_columns = {
|
||||||
|
'restart_send_job': fields.boolean("Restart Sending Job"),
|
||||||
|
'lang_id': fields.many2one('res.lang', 'Language', help="Leave empty if you don't want to restrict the request to a single language"),
|
||||||
|
}
|
||||||
|
|
||||||
|
def gengo_authentication(self, cr, uid, context=None):
|
||||||
|
'''
|
||||||
|
This method tries to open a connection with Gengo. For that, it uses the Public and Private
|
||||||
|
keys that are linked to the company (given by Gengo on subscription). It returns a tuple with
|
||||||
|
* as first element: a boolean depicting if the authentication was a success or not
|
||||||
|
* as second element: the connection, if it was a success, or the error message returned by
|
||||||
|
Gengo when the connection failed.
|
||||||
|
This error message can either be displayed in the server logs (if the authentication was called
|
||||||
|
by the cron) or in a dialog box (if requested by the user), thus it's important to return it
|
||||||
|
translated.
|
||||||
|
'''
|
||||||
|
|
||||||
|
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
||||||
|
if not user.company_id.gengo_public_key or not user.company_id.gengo_private_key:
|
||||||
|
return (False, _("Invalid Gengo configuration. Gengo authentication `Public Key` or `Private Key` is missing. Complete Gengo authentication parameters under `Settings > Companies > Gengo Parameters`."))
|
||||||
|
try:
|
||||||
|
gengo = MyGengo(
|
||||||
|
public_key=user.company_id.gengo_public_key.encode('ascii'),
|
||||||
|
private_key=user.company_id.gengo_private_key.encode('ascii'),
|
||||||
|
sandbox=True,
|
||||||
|
)
|
||||||
|
gengo.getAccountStats()
|
||||||
|
|
||||||
|
return (True, gengo)
|
||||||
|
except Exception, e:
|
||||||
|
return (False, _("Gengo Connection Error\n%s") %e)
|
||||||
|
|
||||||
|
def do_check_schedular(self, cr, uid, xml_id, name, fn, context=None):
|
||||||
|
"""
|
||||||
|
This function is used to reset a cron to its default values, or to recreate it if it was deleted.
|
||||||
|
"""
|
||||||
|
cron_pool = self.pool.get('ir.cron')
|
||||||
|
cron_vals = DEFAULT_CRON_VALS.copy()
|
||||||
|
cron_vals.update({'name': name, "function": fn})
|
||||||
|
try:
|
||||||
|
res = []
|
||||||
|
model, res = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'base_gengo', xml_id)
|
||||||
|
cron_pool.write(cr, uid, [res], cron_vals, context=context)
|
||||||
|
except:
|
||||||
|
#the cron job was not found, probably deleted previously, so we create it again using default values
|
||||||
|
cron_vals.update({'numbercall': -1})
|
||||||
|
return cron_pool.create(cr, uid, cron_vals, context=context)
|
||||||
|
|
||||||
|
def act_update(self, cr, uid, ids, context=None):
|
||||||
|
'''
|
||||||
|
Function called by the wizard.
|
||||||
|
'''
|
||||||
|
if context == None:
|
||||||
|
context = {}
|
||||||
|
|
||||||
|
flag, gengo = self.gengo_authentication(cr, uid, context=context)
|
||||||
|
if not flag:
|
||||||
|
raise osv.except_osv(_('Gengo Authentication Error'), gengo)
|
||||||
|
for wizard in self.browse(cr, uid, ids, context=context):
|
||||||
|
supported_langs = self.pool.get('ir.translation')._get_all_supported_languages(cr, uid, context=context)
|
||||||
|
language = self.pool.get('ir.translation')._get_gengo_corresponding_language(wizard.lang_id.code)
|
||||||
|
if language not in supported_langs:
|
||||||
|
raise osv.except_osv(_("Warning"), _('This language is not supported by the Gengo translation services.'))
|
||||||
|
|
||||||
|
#send immediately a new request for the selected language (if any)
|
||||||
|
ctx = context.copy()
|
||||||
|
ctx['gengo_language'] = wizard.lang_id.id
|
||||||
|
self._sync_request(cr, uid, limit=GENGO_DEFAULT_LIMIT, context=ctx)
|
||||||
|
self._sync_response( cr, uid, limit=GENGO_DEFAULT_LIMIT, context=ctx)
|
||||||
|
#check the cron jobs and eventually restart/recreate them
|
||||||
|
if wizard.restart_send_job:
|
||||||
|
self.do_check_schedular(cr, uid, 'gengo_sync_send_request_scheduler', _('Gengo Sync Translation (Request)'), '_sync_request', context=context)
|
||||||
|
self.do_check_schedular(cr, uid, 'gengo_sync_receive_request_scheduler', _('Gengo Sync Translation (Response)'), '_sync_response', context=context)
|
||||||
|
return {'type': 'ir.actions.act_window_close'}
|
||||||
|
|
||||||
|
def _sync_response(self, cr, uid, limit=GENGO_DEFAULT_LIMIT, context=None):
|
||||||
|
"""
|
||||||
|
This method will be called by cron services to get translations from
|
||||||
|
Gengo. It will read translated terms and comments from Gengo and will
|
||||||
|
update respective ir.translation in openerp.
|
||||||
|
"""
|
||||||
|
translation_pool = self.pool.get('ir.translation')
|
||||||
|
flag, gengo = self.gengo_authentication(cr, uid, context=context)
|
||||||
|
if not flag:
|
||||||
|
_logger.warning("%s", gengo)
|
||||||
|
else:
|
||||||
|
translation_id = translation_pool.search(cr, uid, [('state', '=', 'inprogress'), ('gengo_translation', 'in', ('machine','standard','pro','ultra'))], limit=limit, context=context)
|
||||||
|
for term in translation_pool.browse(cr, uid, translation_id, context=context):
|
||||||
|
up_term = up_comment = 0
|
||||||
|
if term.job_id:
|
||||||
|
vals={}
|
||||||
|
job_response = gengo.getTranslationJob(id=term.job_id)
|
||||||
|
if job_response['opstat'] != 'ok':
|
||||||
|
_logger.warning("Invalid Response! Skipping translation Terms with `id` %s." % (term.job_id))
|
||||||
|
continue
|
||||||
|
if job_response['response']['job']['status'] == 'approved':
|
||||||
|
vals.update({'state': 'translated',
|
||||||
|
'value': job_response['response']['job']['body_tgt']})
|
||||||
|
up_term += 1
|
||||||
|
job_comment = gengo.getTranslationJobComments(id=term.job_id)
|
||||||
|
if job_comment['opstat']=='ok':
|
||||||
|
gengo_comments=""
|
||||||
|
for comment in job_comment['response']['thread']:
|
||||||
|
gengo_comments += _('%s\n\n--\n Commented on %s by %s.') % (comment['body'], time.ctime(comment['ctime']), comment['author'])
|
||||||
|
vals.update({'gengo_comment': gengo_comments})
|
||||||
|
up_comment += 1
|
||||||
|
if vals:
|
||||||
|
translation_pool.write(cr, uid, term.id, vals)
|
||||||
|
_logger.info("Successfully Updated `%d` terms and %d Comments." % (up_term, up_comment ))
|
||||||
|
else:
|
||||||
|
_logger.warning("%s", 'Cannot retrieve the Gengo job ID for translation %s: %s' % (term.id, term.src))
|
||||||
|
return True
|
||||||
|
|
||||||
|
def _update_terms(self, cr, uid, response, context=None):
|
||||||
|
"""
|
||||||
|
Update the terms after their translation were requested to Gengo
|
||||||
|
"""
|
||||||
|
translation_pool = self.pool.get('ir.translation')
|
||||||
|
for jobs in response['jobs']:
|
||||||
|
for t_id, res in jobs.items():
|
||||||
|
vals = {}
|
||||||
|
t_id = int(t_id)
|
||||||
|
tier = translation_pool.read(cr, uid, [t_id], ['gengo_translation'], context=context)[0]['gengo_translation']
|
||||||
|
if tier == "machine":
|
||||||
|
vals.update({'value': res['body_tgt'], 'state': 'translated'})
|
||||||
|
else:
|
||||||
|
vals.update({'job_id': res['job_id'], 'state': 'inprogress'})
|
||||||
|
translation_pool.write(cr, uid, [t_id], vals, context=context)
|
||||||
|
return
|
||||||
|
|
||||||
|
def pack_jobs_request(self, cr, uid, term_ids, context=None):
|
||||||
|
''' prepare the terms that will be requested to gengo and returns them in a dictionary with following format
|
||||||
|
{'jobs': {
|
||||||
|
'term1.id': {...}
|
||||||
|
'term2.id': {...}
|
||||||
|
}
|
||||||
|
}'''
|
||||||
|
|
||||||
|
translation_pool = self.pool.get('ir.translation')
|
||||||
|
jobs = {}
|
||||||
|
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
||||||
|
auto_approve = 1 if user.company_id.gengo_auto_approve else 0
|
||||||
|
for term in translation_pool.browse(cr, uid, term_ids, context=context):
|
||||||
|
if re.search(r"\w", term.src or ""):
|
||||||
|
jobs[term.id] = {'type': 'text',
|
||||||
|
'slug': 'single::English to ' + term.lang,
|
||||||
|
'tier': tools.ustr(term.gengo_translation),
|
||||||
|
'body_src': term.src,
|
||||||
|
'lc_src': 'en',
|
||||||
|
'lc_tgt': translation_pool._get_gengo_corresponding_language(term.lang),
|
||||||
|
'auto_approve': auto_approve,
|
||||||
|
'comment': user.company_id.gengo_comment,
|
||||||
|
}
|
||||||
|
return {'jobs': jobs}
|
||||||
|
|
||||||
|
|
||||||
|
def _send_translation_terms(self, cr, uid, term_ids, context=None):
|
||||||
|
"""
|
||||||
|
Send a request to Gengo with all the term_ids in a different job, get the response and update the terms in
|
||||||
|
database accordingly.
|
||||||
|
"""
|
||||||
|
|
||||||
|
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
||||||
|
flag, gengo = self.gengo_authentication(cr, uid, context=context)
|
||||||
|
if flag:
|
||||||
|
request = self.pack_jobs_request(cr, uid, term_ids, context=context)
|
||||||
|
if request['jobs']:
|
||||||
|
result = gengo.postTranslationJobs(jobs=request)
|
||||||
|
if result['opstat'] == 'ok':
|
||||||
|
self._update_terms(cr, uid, result['response'], context=context)
|
||||||
|
else:
|
||||||
|
_logger.error(gengo)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def _sync_request(self, cr, uid, limit=GENGO_DEFAULT_LIMIT, context=None):
|
||||||
|
"""
|
||||||
|
This scheduler will send a job request to the gengo , which terms are
|
||||||
|
waiing to be translated and for which gengo_translation is enabled.
|
||||||
|
|
||||||
|
A special key 'gengo_language' can be passed in the context in order to
|
||||||
|
request only translations of that language only. Its value is the language
|
||||||
|
ID in openerp.
|
||||||
|
"""
|
||||||
|
if context is None:
|
||||||
|
context = {}
|
||||||
|
language_pool = self.pool.get('res.lang')
|
||||||
|
translation_pool = self.pool.get('ir.translation')
|
||||||
|
try:
|
||||||
|
#by default, the request will be made for all terms that needs it, whatever the language
|
||||||
|
lang_ids = language_pool.search(cr, uid, [], context=context)
|
||||||
|
if context.get('gengo_language'):
|
||||||
|
#but if this specific key is given, then we restrict the request on terms of this language only
|
||||||
|
lang_ids = [context.get('gengo_language')]
|
||||||
|
langs = [lang.code for lang in language_pool.browse(cr, uid, lang_ids, context=context)]
|
||||||
|
#search for the n first terms to translate
|
||||||
|
term_ids = translation_pool.search(cr, uid, [('state', '=', 'to_translate'), ('gengo_translation', 'in', ('machine','standard','pro','ultra')), ('lang', 'in', langs)], limit=limit, context=context)
|
||||||
|
if term_ids:
|
||||||
|
self._send_translation_terms(cr, uid, term_ids, context=context)
|
||||||
|
_logger.info("%s Translation terms have been posted to Gengo successfully", len(term_ids))
|
||||||
|
else:
|
||||||
|
_logger.info('No Translation terms to process.')
|
||||||
|
except Exception, e:
|
||||||
|
_logger.error("%s", e)
|
||||||
|
|
||||||
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -0,0 +1,38 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<openerp>
|
||||||
|
<data>
|
||||||
|
<record model="ir.ui.view" id="base_gengo_translation_wizard_from">
|
||||||
|
<field name="name">base.gengo.translation.form</field>
|
||||||
|
<field name="model">base.gengo.translations</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form string="Gengo Request Form" version="7.0">
|
||||||
|
<group col="4">
|
||||||
|
<group>
|
||||||
|
<field name="lang_id" required="1"/>
|
||||||
|
<field name="restart_send_job"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<label colspan="2" string="Leave empty for requesting all the terms to Gengo that needs it, regardless of their language"/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
<footer>
|
||||||
|
<button name="act_update" string="Send" type="object" class="oe_highlight"/>
|
||||||
|
or
|
||||||
|
<button name="act_cancel" special="cancel" string="Cancel" type="object" class="oe_link"/>
|
||||||
|
</footer>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="action_wizard_base_gengo_translations" model="ir.actions.act_window">
|
||||||
|
<field name="name">Gengo: Manual Request of Translation</field>
|
||||||
|
<field name="type">ir.actions.act_window</field>
|
||||||
|
<field name="res_model">base.gengo.translations</field>
|
||||||
|
<field name="view_type">form</field>
|
||||||
|
<field name="view_mode">form</field>
|
||||||
|
<field name="target">new</field>
|
||||||
|
</record>
|
||||||
|
<menuitem action="action_wizard_base_gengo_translations" id="menu_action_wizard_base_gengo_translations" parent="base.menu_translation_app"/>
|
||||||
|
|
||||||
|
</data>
|
||||||
|
</openerp>
|
|
@ -7,14 +7,14 @@ msgstr ""
|
||||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
"PO-Revision-Date: 2012-01-20 19:34+0000\n"
|
"PO-Revision-Date: 2012-08-30 17:01+0000\n"
|
||||||
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
|
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-08-28 06:08+0000\n"
|
"X-Launchpad-Export-Date: 2012-08-31 04:56+0000\n"
|
||||||
"X-Generator: Launchpad (build 15864)\n"
|
"X-Generator: Launchpad (build 15887)\n"
|
||||||
|
|
||||||
#. module: base_setup
|
#. module: base_setup
|
||||||
#: field:user.preferences.config,menu_tips:0
|
#: field:user.preferences.config,menu_tips:0
|
||||||
|
@ -79,12 +79,12 @@ msgstr ""
|
||||||
#. module: base_setup
|
#. module: base_setup
|
||||||
#: field:product.installer,customers:0
|
#: field:product.installer,customers:0
|
||||||
msgid "Customers"
|
msgid "Customers"
|
||||||
msgstr ""
|
msgstr "Заказчики"
|
||||||
|
|
||||||
#. module: base_setup
|
#. module: base_setup
|
||||||
#: selection:user.preferences.config,view:0
|
#: selection:user.preferences.config,view:0
|
||||||
msgid "Extended"
|
msgid "Extended"
|
||||||
msgstr ""
|
msgstr "Расширенный"
|
||||||
|
|
||||||
#. module: base_setup
|
#. module: base_setup
|
||||||
#: selection:base.setup.terminology,partner:0
|
#: selection:base.setup.terminology,partner:0
|
||||||
|
@ -197,7 +197,7 @@ msgstr ""
|
||||||
#. module: base_setup
|
#. module: base_setup
|
||||||
#: selection:base.setup.terminology,partner:0
|
#: selection:base.setup.terminology,partner:0
|
||||||
msgid "Client"
|
msgid "Client"
|
||||||
msgstr ""
|
msgstr "Клиент"
|
||||||
|
|
||||||
#. module: base_setup
|
#. module: base_setup
|
||||||
#: field:migrade.application.installer.modules,import_saleforce:0
|
#: field:migrade.application.installer.modules,import_saleforce:0
|
||||||
|
@ -207,7 +207,7 @@ msgstr ""
|
||||||
#. module: base_setup
|
#. module: base_setup
|
||||||
#: field:user.preferences.config,context_tz:0
|
#: field:user.preferences.config,context_tz:0
|
||||||
msgid "Timezone"
|
msgid "Timezone"
|
||||||
msgstr ""
|
msgstr "Часовой пояс"
|
||||||
|
|
||||||
#. module: base_setup
|
#. module: base_setup
|
||||||
#: model:ir.actions.act_window,name:base_setup.action_partner_terminology_config_form
|
#: model:ir.actions.act_window,name:base_setup.action_partner_terminology_config_form
|
||||||
|
@ -224,6 +224,8 @@ msgstr ""
|
||||||
msgid ""
|
msgid ""
|
||||||
"Check out this box if you want to always display tips on each menu action"
|
"Check out this box if you want to always display tips on each menu action"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Отметьте этот квадратик, если вы хотите всегда выводить советы для каждого "
|
||||||
|
"пункта меню"
|
||||||
|
|
||||||
#. module: base_setup
|
#. module: base_setup
|
||||||
#: field:base.setup.terminology,config_logo:0
|
#: field:base.setup.terminology,config_logo:0
|
||||||
|
@ -261,7 +263,7 @@ msgstr ""
|
||||||
#. module: base_setup
|
#. module: base_setup
|
||||||
#: selection:user.preferences.config,view:0
|
#: selection:user.preferences.config,view:0
|
||||||
msgid "Simplified"
|
msgid "Simplified"
|
||||||
msgstr ""
|
msgstr "Упрощенный"
|
||||||
|
|
||||||
#. module: base_setup
|
#. module: base_setup
|
||||||
#: help:migrade.application.installer.modules,import_sugarcrm:0
|
#: help:migrade.application.installer.modules,import_sugarcrm:0
|
||||||
|
@ -271,7 +273,7 @@ msgstr ""
|
||||||
#. module: base_setup
|
#. module: base_setup
|
||||||
#: selection:base.setup.terminology,partner:0
|
#: selection:base.setup.terminology,partner:0
|
||||||
msgid "Partner"
|
msgid "Partner"
|
||||||
msgstr ""
|
msgstr "Контрагент"
|
||||||
|
|
||||||
#. module: base_setup
|
#. module: base_setup
|
||||||
#: view:base.setup.terminology:0
|
#: view:base.setup.terminology:0
|
||||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
||||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||||
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
|
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
|
||||||
"PO-Revision-Date: 2012-08-06 11:58+0000\n"
|
"PO-Revision-Date: 2012-08-30 17:52+0000\n"
|
||||||
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
|
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-08-28 06:06+0000\n"
|
"X-Launchpad-Export-Date: 2012-08-31 04:56+0000\n"
|
||||||
"X-Generator: Launchpad (build 15864)\n"
|
"X-Generator: Launchpad (build 15887)\n"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.lead.report:0
|
#: view:crm.lead.report:0
|
||||||
|
@ -320,7 +320,7 @@ msgstr "Перспективный партнер"
|
||||||
#: code:addons/crm/crm_lead.py:735
|
#: code:addons/crm/crm_lead.py:735
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "No Subject"
|
msgid "No Subject"
|
||||||
msgstr ""
|
msgstr "Без темы"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: model:crm.case.resource.type,name:crm.type_lead6
|
#: model:crm.case.resource.type,name:crm.type_lead6
|
||||||
|
@ -535,7 +535,7 @@ msgstr "Эл. письмо"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.phonecall:0
|
#: view:crm.phonecall:0
|
||||||
msgid "Phonecalls during last 7 days"
|
msgid "Phonecalls during last 7 days"
|
||||||
msgstr ""
|
msgstr "Звонки за последние 7 дней"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: selection:crm.lead.report,creation_month:0
|
#: selection:crm.lead.report,creation_month:0
|
||||||
|
@ -626,7 +626,7 @@ msgstr "Встреча '%s' была подтверждена."
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: selection:crm.add.note,state:0 selection:crm.lead,state:0
|
#: selection:crm.add.note,state:0 selection:crm.lead,state:0
|
||||||
msgid "In Progress"
|
msgid "In Progress"
|
||||||
msgstr ""
|
msgstr "В процессе"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: help:crm.case.section,reply_to:0
|
#: help:crm.case.section,reply_to:0
|
||||||
|
@ -720,7 +720,7 @@ msgstr "Вероятность (%)"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: field:crm.lead,company_currency:0
|
#: field:crm.lead,company_currency:0
|
||||||
msgid "Company Currency"
|
msgid "Company Currency"
|
||||||
msgstr ""
|
msgstr "Валюта организации"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.lead:0
|
#: view:crm.lead:0
|
||||||
|
@ -763,7 +763,7 @@ msgstr "Остановить процесс"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.lead.report:0 view:crm.phonecall.report:0
|
#: view:crm.lead.report:0 view:crm.phonecall.report:0
|
||||||
msgid "Month-1"
|
msgid "Month-1"
|
||||||
msgstr ""
|
msgstr "Месяц-1"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.phonecall:0
|
#: view:crm.phonecall:0
|
||||||
|
@ -778,7 +778,7 @@ msgstr "Продолжить"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: field:crm.segmentation,som_interval:0
|
#: field:crm.segmentation,som_interval:0
|
||||||
msgid "Days per Period"
|
msgid "Days per Period"
|
||||||
msgstr ""
|
msgstr "Дней в периоде"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: field:crm.meeting,byday:0
|
#: field:crm.meeting,byday:0
|
||||||
|
@ -933,7 +933,7 @@ msgstr "Внимание!"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.phonecall.report:0
|
#: view:crm.phonecall.report:0
|
||||||
msgid "Phone calls made in current year"
|
msgid "Phone calls made in current year"
|
||||||
msgstr ""
|
msgstr "Звонки за текущий год"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: field:crm.lead,day_open:0
|
#: field:crm.lead,day_open:0
|
||||||
|
@ -943,7 +943,7 @@ msgstr "Дней до открытия"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.meeting:0
|
#: view:crm.meeting:0
|
||||||
msgid "Show Time as"
|
msgid "Show Time as"
|
||||||
msgstr ""
|
msgstr "Показать время как"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.phonecall2partner:0
|
#: view:crm.phonecall2partner:0
|
||||||
|
@ -973,7 +973,7 @@ msgstr "Мои встречи"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.phonecall:0
|
#: view:crm.phonecall:0
|
||||||
msgid "Todays's Phonecalls"
|
msgid "Todays's Phonecalls"
|
||||||
msgstr ""
|
msgstr "Звонки за сегодня"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:board.board:0
|
#: view:board.board:0
|
||||||
|
@ -1030,7 +1030,7 @@ msgstr ""
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.lead:0
|
#: view:crm.lead:0
|
||||||
msgid "Change Color"
|
msgid "Change Color"
|
||||||
msgstr ""
|
msgstr "Изменить цвет"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.segmentation:0
|
#: view:crm.segmentation:0
|
||||||
|
@ -1180,7 +1180,7 @@ msgstr "Письмо партнеру"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.opportunity2phonecall:0 view:crm.phonecall2phonecall:0
|
#: view:crm.opportunity2phonecall:0 view:crm.phonecall2phonecall:0
|
||||||
msgid "Call Details"
|
msgid "Call Details"
|
||||||
msgstr ""
|
msgstr "Детали звонка"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: field:crm.meeting,class:0
|
#: field:crm.meeting,class:0
|
||||||
|
@ -1270,7 +1270,7 @@ msgstr "Продолжительность в минутах"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: field:crm.case.channel,name:0
|
#: field:crm.case.channel,name:0
|
||||||
msgid "Channel Name"
|
msgid "Channel Name"
|
||||||
msgstr ""
|
msgstr "Название канала"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: field:crm.partner2opportunity,name:0 field:crm.phonecall2opportunity,name:0
|
#: field:crm.partner2opportunity,name:0 field:crm.phonecall2opportunity,name:0
|
||||||
|
@ -1321,7 +1321,7 @@ msgstr "Дата записи"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.meeting:0
|
#: view:crm.meeting:0
|
||||||
msgid "End of Recurrency"
|
msgid "End of Recurrency"
|
||||||
msgstr ""
|
msgstr "Конец повторения"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.meeting:0
|
#: view:crm.meeting:0
|
||||||
|
@ -1345,7 +1345,7 @@ msgstr "Установить сигнал на это время, перед с
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: model:ir.actions.act_window,name:crm.crm_case_categ_phone_create_partner
|
#: model:ir.actions.act_window,name:crm.crm_case_categ_phone_create_partner
|
||||||
msgid "Schedule a Call"
|
msgid "Schedule a Call"
|
||||||
msgstr ""
|
msgstr "Назначить звонок"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.lead2partner:0 view:crm.phonecall:0 view:crm.phonecall2partner:0
|
#: view:crm.lead2partner:0 view:crm.phonecall:0 view:crm.phonecall2partner:0
|
||||||
|
@ -1433,7 +1433,7 @@ msgstr ""
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.phonecall.report:0
|
#: view:crm.phonecall.report:0
|
||||||
msgid "Date of call"
|
msgid "Date of call"
|
||||||
msgstr ""
|
msgstr "Дата звонка"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: help:crm.lead,section_id:0
|
#: help:crm.lead,section_id:0
|
||||||
|
@ -1549,7 +1549,7 @@ msgstr ""
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.lead:0
|
#: view:crm.lead:0
|
||||||
msgid "Mail"
|
msgid "Mail"
|
||||||
msgstr ""
|
msgstr "Почта"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: model:ir.actions.act_window,name:crm.crm_phonecall_categ_action
|
#: model:ir.actions.act_window,name:crm.crm_phonecall_categ_action
|
||||||
|
@ -1905,7 +1905,7 @@ msgstr "Преобразовать в предложение"
|
||||||
#: model:ir.model,name:crm.model_crm_case_channel
|
#: model:ir.model,name:crm.model_crm_case_channel
|
||||||
#: model:ir.ui.menu,name:crm.menu_crm_case_channel
|
#: model:ir.ui.menu,name:crm.menu_crm_case_channel
|
||||||
msgid "Channels"
|
msgid "Channels"
|
||||||
msgstr ""
|
msgstr "Каналы"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.phonecall:0 selection:crm.phonecall,state:0
|
#: view:crm.phonecall:0 selection:crm.phonecall,state:0
|
||||||
|
@ -2181,7 +2181,7 @@ msgstr "Создать нового партнера"
|
||||||
#: model:ir.actions.act_window,name:crm.crm_case_categ_phone_outgoing0
|
#: model:ir.actions.act_window,name:crm.crm_case_categ_phone_outgoing0
|
||||||
#: model:ir.ui.menu,name:crm.menu_crm_case_phone_outbound
|
#: model:ir.ui.menu,name:crm.menu_crm_case_phone_outbound
|
||||||
msgid "Scheduled Calls"
|
msgid "Scheduled Calls"
|
||||||
msgstr ""
|
msgstr "Запланированные звонки"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.meeting:0 view:res.partner:0
|
#: view:crm.meeting:0 view:res.partner:0
|
||||||
|
@ -2191,7 +2191,7 @@ msgstr "Дата начала"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.phonecall:0
|
#: view:crm.phonecall:0
|
||||||
msgid "Scheduled Phonecalls"
|
msgid "Scheduled Phonecalls"
|
||||||
msgstr ""
|
msgstr "Запланированные звонки"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.meeting:0
|
#: view:crm.meeting:0
|
||||||
|
@ -2201,7 +2201,7 @@ msgstr "Отклонить"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: field:crm.lead,user_email:0
|
#: field:crm.lead,user_email:0
|
||||||
msgid "User Email"
|
msgid "User Email"
|
||||||
msgstr ""
|
msgstr "Email пользователя"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: help:crm.lead,optin:0
|
#: help:crm.lead,optin:0
|
||||||
|
@ -2387,7 +2387,7 @@ msgstr "Прочее"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: model:ir.actions.act_window,name:crm.open_board_crm
|
#: model:ir.actions.act_window,name:crm.open_board_crm
|
||||||
msgid "Sales"
|
msgid "Sales"
|
||||||
msgstr ""
|
msgstr "Продажи"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: code:addons/crm/crm.py:430
|
#: code:addons/crm/crm.py:430
|
||||||
|
@ -2575,7 +2575,7 @@ msgstr "Проверка классификации"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: field:crm.lead,user_login:0
|
#: field:crm.lead,user_login:0
|
||||||
msgid "User Login"
|
msgid "User Login"
|
||||||
msgstr ""
|
msgstr "Логин пользователя"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.segmentation:0
|
#: view:crm.segmentation:0
|
||||||
|
@ -2706,7 +2706,7 @@ msgstr ""
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: field:crm.lead,subjects:0
|
#: field:crm.lead,subjects:0
|
||||||
msgid "Subject of Email"
|
msgid "Subject of Email"
|
||||||
msgstr ""
|
msgstr "Тема письма"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: model:ir.actions.act_window,name:crm.action_view_attendee_form
|
#: model:ir.actions.act_window,name:crm.action_view_attendee_form
|
||||||
|
@ -2822,7 +2822,7 @@ msgstr ""
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: field:crm.lead,color:0
|
#: field:crm.lead,color:0
|
||||||
msgid "Color Index"
|
msgid "Color Index"
|
||||||
msgstr ""
|
msgstr "Цветовая палитра"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.lead:0
|
#: view:crm.lead:0
|
||||||
|
@ -3010,7 +3010,7 @@ msgstr "Создание предложений из кандидатов"
|
||||||
#: model:ir.actions.act_window,name:crm.open_board_statistical_dash
|
#: model:ir.actions.act_window,name:crm.open_board_statistical_dash
|
||||||
#: model:ir.ui.menu,name:crm.menu_board_statistics_dash
|
#: model:ir.ui.menu,name:crm.menu_board_statistics_dash
|
||||||
msgid "CRM Dashboard"
|
msgid "CRM Dashboard"
|
||||||
msgstr ""
|
msgstr "Панель аналитики CRM"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: model:crm.case.categ,name:crm.categ_oppor4
|
#: model:crm.case.categ,name:crm.categ_oppor4
|
||||||
|
@ -3095,7 +3095,7 @@ msgstr "Условие на историю общения"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.phonecall:0
|
#: view:crm.phonecall:0
|
||||||
msgid "Date of Call"
|
msgid "Date of Call"
|
||||||
msgstr ""
|
msgstr "Дата звонка"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: help:crm.segmentation,som_interval:0
|
#: help:crm.segmentation,som_interval:0
|
||||||
|
@ -3398,7 +3398,7 @@ msgstr "Закрыть"
|
||||||
#: selection:crm.opportunity2phonecall,action:0
|
#: selection:crm.opportunity2phonecall,action:0
|
||||||
#: selection:crm.phonecall2phonecall,action:0
|
#: selection:crm.phonecall2phonecall,action:0
|
||||||
msgid "Schedule a call"
|
msgid "Schedule a call"
|
||||||
msgstr ""
|
msgstr "Запланировать звонок"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.lead:0 view:crm.phonecall:0
|
#: view:crm.lead:0 view:crm.phonecall:0
|
||||||
|
@ -3408,7 +3408,7 @@ msgstr "Категоризация"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.lead:0
|
#: view:crm.lead:0
|
||||||
msgid "Log Call"
|
msgid "Log Call"
|
||||||
msgstr ""
|
msgstr "Описать звонок"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: model:ir.model,name:crm.model_base_action_rule
|
#: model:ir.model,name:crm.model_base_action_rule
|
||||||
|
@ -3438,7 +3438,7 @@ msgstr "Кому"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.lead:0
|
#: view:crm.lead:0
|
||||||
msgid "Create date"
|
msgid "Create date"
|
||||||
msgstr ""
|
msgstr "Дата создания"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: selection:crm.meeting,class:0
|
#: selection:crm.meeting,class:0
|
||||||
|
@ -3470,7 +3470,7 @@ msgstr "Описание"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.phonecall.report:0
|
#: view:crm.phonecall.report:0
|
||||||
msgid "Phone calls made in current month"
|
msgid "Phone calls made in current month"
|
||||||
msgstr ""
|
msgstr "Звонки, сделанные в текущем месяце"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: selection:crm.lead.report,creation_month:0
|
#: selection:crm.lead.report,creation_month:0
|
||||||
|
@ -3565,7 +3565,7 @@ msgstr "Проиграно"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.lead:0
|
#: view:crm.lead:0
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr ""
|
msgstr "Изменить"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: field:crm.lead,country_id:0 view:crm.lead.report:0
|
#: field:crm.lead,country_id:0 view:crm.lead.report:0
|
||||||
|
@ -3625,6 +3625,9 @@ msgid ""
|
||||||
"channels that will be maintained at the creation of a document in the "
|
"channels that will be maintained at the creation of a document in the "
|
||||||
"system. Some examples of channels can be: Website, Phone Call, Reseller, etc."
|
"system. Some examples of channels can be: Website, Phone Call, Reseller, etc."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Отлеживание источников появления кандидатов и предложений путём создания "
|
||||||
|
"специализированных каналов, обслуживаемых при создании докумета в системе. "
|
||||||
|
"Например, каналы могут быть такими: сайт, телефонный звонок, реселлер и т.д."
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: selection:crm.lead2opportunity.partner,name:0
|
#: selection:crm.lead2opportunity.partner,name:0
|
||||||
|
@ -3655,7 +3658,7 @@ msgstr "Последовательность"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: model:ir.model,name:crm.model_mail_compose_message
|
#: model:ir.model,name:crm.model_mail_compose_message
|
||||||
msgid "E-mail composition wizard"
|
msgid "E-mail composition wizard"
|
||||||
msgstr ""
|
msgstr "Мастер создания электронной почты"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.meeting:0
|
#: view:crm.meeting:0
|
||||||
|
@ -3692,7 +3695,7 @@ msgstr "Год"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: constraint:res.partner:0
|
#: constraint:res.partner:0
|
||||||
msgid "Error ! You cannot create recursive associated members."
|
msgid "Error ! You cannot create recursive associated members."
|
||||||
msgstr ""
|
msgstr "Ошибка! Вы не можете создавать рекурсивные ссылки на участников."
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: model:crm.case.resource.type,name:crm.type_lead8
|
#: model:crm.case.resource.type,name:crm.type_lead8
|
||||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
||||||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||||
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
|
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
|
||||||
"PO-Revision-Date: 2012-08-30 02:54+0000\n"
|
"PO-Revision-Date: 2012-08-30 10:41+0000\n"
|
||||||
"Last-Translator: Bonnie Duan <bonnie.duan@cenoq.com>\n"
|
"Last-Translator: Walter Cheuk <wwycheuk@gmail.com>\n"
|
||||||
"Language-Team: Cenoq Corp.\n"
|
"Language-Team: Cenoq Corp.\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-08-30 05:12+0000\n"
|
"X-Launchpad-Export-Date: 2012-08-31 04:56+0000\n"
|
||||||
"X-Generator: Launchpad (build 15864)\n"
|
"X-Generator: Launchpad (build 15887)\n"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.lead.report:0
|
#: view:crm.lead.report:0
|
||||||
|
@ -2307,7 +2307,7 @@ msgstr "動作"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: field:crm.segmentation,som_interval_decrease:0
|
#: field:crm.segmentation,som_interval_decrease:0
|
||||||
msgid "Decrease (0>1)"
|
msgid "Decrease (0>1)"
|
||||||
msgstr "下降因子(0.0>1.0)"
|
msgstr "減少 (0>1)"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: field:crm.lead.report,deadline_day:0
|
#: field:crm.lead.report,deadline_day:0
|
||||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-08-30 05:12+0000\n"
|
"X-Launchpad-Export-Date: 2012-08-31 04:56+0000\n"
|
||||||
"X-Generator: Launchpad (build 15864)\n"
|
"X-Generator: Launchpad (build 15887)\n"
|
||||||
|
|
||||||
#. module: crm_claim
|
#. module: crm_claim
|
||||||
#: field:crm.claim.report,nbr:0
|
#: field:crm.claim.report,nbr:0
|
||||||
|
@ -797,14 +797,3 @@ msgstr "建立日期"
|
||||||
#: view:crm.claim:0
|
#: view:crm.claim:0
|
||||||
msgid "In Progress Claims"
|
msgid "In Progress Claims"
|
||||||
msgstr "正在處理的抱怨"
|
msgstr "正在處理的抱怨"
|
||||||
|
|
||||||
#~ msgid ""
|
|
||||||
#~ "The state is set to 'Draft', when a case is created. \n"
|
|
||||||
#~ "If the case is in progress the state is set to 'Open'. \n"
|
|
||||||
#~ "When the case is over, the state is set to 'Done'. \n"
|
|
||||||
#~ "If the case needs to be reviewed then the state is set to 'Pending'."
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "當一個業務建立時狀態設為'草稿'\n"
|
|
||||||
#~ "如果業務正在處理狀態設為'開啟'\n"
|
|
||||||
#~ "當業務結束狀態設為'完成'\n"
|
|
||||||
#~ "如果業務需要審查狀態設為'待定'"
|
|
||||||
|
|
|
@ -0,0 +1,744 @@
|
||||||
|
# Chinese (Traditional) translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
|
"PO-Revision-Date: 2012-08-30 10:12+0000\n"
|
||||||
|
"Last-Translator: Bonnie Duan <bonnie.duan@cenoq.com>\n"
|
||||||
|
"Language-Team: Cenoq Corp.\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Launchpad-Export-Date: 2012-08-31 04:56+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15887)\n"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk.report,delay_close:0
|
||||||
|
msgid "Delay to Close"
|
||||||
|
msgstr "延遲關閉"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk.report,nbr:0
|
||||||
|
msgid "# of Cases"
|
||||||
|
msgstr "# 業務量"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "Group By..."
|
||||||
|
msgstr "分類方式..."
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Today"
|
||||||
|
msgstr "今日"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk.report,month:0
|
||||||
|
msgid "March"
|
||||||
|
msgstr "3月"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "Helpdesk requests occurred in current year"
|
||||||
|
msgstr "本年發生的服務需求"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,company_id:0
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
#: field:crm.helpdesk.report,company_id:0
|
||||||
|
msgid "Company"
|
||||||
|
msgstr "公司"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,email_cc:0
|
||||||
|
msgid "Watchers Emails"
|
||||||
|
msgstr "視察者的電子郵件"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk,priority:0
|
||||||
|
#: selection:crm.helpdesk.report,priority:0
|
||||||
|
msgid "Highest"
|
||||||
|
msgstr "最高"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
#: field:crm.helpdesk.report,day:0
|
||||||
|
msgid "Day"
|
||||||
|
msgstr "日"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Add Internal Note"
|
||||||
|
msgstr "加入內部備註"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "Date of helpdesk requests"
|
||||||
|
msgstr "客服需求日期"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Notes"
|
||||||
|
msgstr "備註"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,message_ids:0
|
||||||
|
msgid "Messages"
|
||||||
|
msgstr "訊息"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "My company"
|
||||||
|
msgstr "我的公司"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk,state:0
|
||||||
|
#: selection:crm.helpdesk.report,state:0
|
||||||
|
msgid "Cancelled"
|
||||||
|
msgstr "已取消"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: model:ir.actions.act_window,name:crm_helpdesk.action_report_crm_helpdesk
|
||||||
|
#: model:ir.ui.menu,name:crm_helpdesk.menu_report_crm_helpdesks_tree
|
||||||
|
msgid "Helpdesk Analysis"
|
||||||
|
msgstr "客服分析"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
#: field:crm.helpdesk.report,date_closed:0
|
||||||
|
msgid "Close Date"
|
||||||
|
msgstr "結束日期"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,ref:0
|
||||||
|
msgid "Reference"
|
||||||
|
msgstr "關聯"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,date_action_next:0
|
||||||
|
msgid "Next Action"
|
||||||
|
msgstr "下一動作"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Helpdesk Supports"
|
||||||
|
msgstr "客服協助"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Extra Info"
|
||||||
|
msgstr "額外資訊"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
#: field:crm.helpdesk,partner_id:0
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
#: field:crm.helpdesk.report,partner_id:0
|
||||||
|
msgid "Partner"
|
||||||
|
msgstr "業務夥伴"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Estimates"
|
||||||
|
msgstr "估計"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk.report,section_id:0
|
||||||
|
msgid "Section"
|
||||||
|
msgstr "劃分"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "Helpdesk requests occurred in last month"
|
||||||
|
msgstr "上個月發生的客服需求"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Send New Email"
|
||||||
|
msgstr "發送新的電子郵件"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Helpdesk requests during last 7 days"
|
||||||
|
msgstr "之前7天內的客服需求"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
#: selection:crm.helpdesk,state:0
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "New"
|
||||||
|
msgstr "新建"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: model:ir.model,name:crm_helpdesk.model_crm_helpdesk_report
|
||||||
|
msgid "Helpdesk report after Sales Services"
|
||||||
|
msgstr "客服售後服務報表"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,email_from:0
|
||||||
|
msgid "Email"
|
||||||
|
msgstr "電子郵件"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,channel_id:0
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
#: field:crm.helpdesk.report,channel_id:0
|
||||||
|
msgid "Channel"
|
||||||
|
msgstr "管道"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk,priority:0
|
||||||
|
#: selection:crm.helpdesk.report,priority:0
|
||||||
|
msgid "Lowest"
|
||||||
|
msgstr "最低"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "# Mails"
|
||||||
|
msgstr "郵件"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "My Sales Team(s)"
|
||||||
|
msgstr "我的銷售團隊"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,create_date:0
|
||||||
|
#: field:crm.helpdesk.report,create_date:0
|
||||||
|
msgid "Creation Date"
|
||||||
|
msgstr "建立日期"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Reset to Draft"
|
||||||
|
msgstr "重設為草稿"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
#: selection:crm.helpdesk,state:0
|
||||||
|
#: selection:crm.helpdesk.report,state:0
|
||||||
|
msgid "Pending"
|
||||||
|
msgstr "待處理"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
#: field:crm.helpdesk,date_deadline:0
|
||||||
|
#: field:crm.helpdesk.report,date_deadline:0
|
||||||
|
msgid "Deadline"
|
||||||
|
msgstr "截止日期"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk.report,month:0
|
||||||
|
msgid "July"
|
||||||
|
msgstr "7月"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: model:ir.actions.act_window,name:crm_helpdesk.crm_helpdesk_categ_action
|
||||||
|
msgid "Helpdesk Categories"
|
||||||
|
msgstr "客服分類"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: model:ir.ui.menu,name:crm_helpdesk.menu_crm_case_helpdesk-act
|
||||||
|
msgid "Categories"
|
||||||
|
msgstr "分類"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "New Helpdesk Request"
|
||||||
|
msgstr "新的客服需求"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "History Information"
|
||||||
|
msgstr "日誌資訊"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Dates"
|
||||||
|
msgstr "日期"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "Month of helpdesk requests"
|
||||||
|
msgstr "客服需求月份"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: code:addons/crm_helpdesk/crm_helpdesk.py:101
|
||||||
|
#, python-format
|
||||||
|
msgid "No Subject"
|
||||||
|
msgstr "無主題"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "#Helpdesk"
|
||||||
|
msgstr "客服"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "All pending Helpdesk Request"
|
||||||
|
msgstr "所有暫停的客服需求"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "Year of helpdesk requests"
|
||||||
|
msgstr "服務需求的年份"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "References"
|
||||||
|
msgstr "關聯"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk.report,month:0
|
||||||
|
msgid "September"
|
||||||
|
msgstr "9月"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Communication"
|
||||||
|
msgstr "溝通"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
#: field:crm.helpdesk.report,month:0
|
||||||
|
msgid "Month"
|
||||||
|
msgstr "月份"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Escalate"
|
||||||
|
msgstr "提升"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,write_date:0
|
||||||
|
msgid "Update Date"
|
||||||
|
msgstr "更新日期"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "Helpdesk requests occurred in current month"
|
||||||
|
msgstr "當月發生的客服需求"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "Salesman"
|
||||||
|
msgstr "業務員"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,ref2:0
|
||||||
|
msgid "Reference 2"
|
||||||
|
msgstr "關聯2"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,categ_id:0
|
||||||
|
#: field:crm.helpdesk.report,categ_id:0
|
||||||
|
msgid "Category"
|
||||||
|
msgstr "分類"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Responsible User"
|
||||||
|
msgstr "負責使用者"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Helpdesk Support"
|
||||||
|
msgstr "客服協助"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,planned_cost:0
|
||||||
|
#: field:crm.helpdesk.report,planned_cost:0
|
||||||
|
msgid "Planned Costs"
|
||||||
|
msgstr "計劃成本"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: help:crm.helpdesk,channel_id:0
|
||||||
|
msgid "Communication channel."
|
||||||
|
msgstr "通訊管道"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: help:crm.helpdesk,email_cc:0
|
||||||
|
msgid ""
|
||||||
|
"These email addresses will be added to the CC field of all inbound and "
|
||||||
|
"outbound emails for this record before being sent. Separate multiple email "
|
||||||
|
"addresses with a comma"
|
||||||
|
msgstr "這些郵件地址將加入到之前發送記錄的發送和接收郵件的郵件副本欄位,分隔多個郵件地址有逗號。"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Search Helpdesk"
|
||||||
|
msgstr "搜索客服"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk.report,state:0
|
||||||
|
msgid "Draft"
|
||||||
|
msgstr "草稿"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk,priority:0
|
||||||
|
#: selection:crm.helpdesk.report,priority:0
|
||||||
|
msgid "Low"
|
||||||
|
msgstr "低"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,date_closed:0
|
||||||
|
#: selection:crm.helpdesk,state:0
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
#: selection:crm.helpdesk.report,state:0
|
||||||
|
msgid "Closed"
|
||||||
|
msgstr "已結束"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Reply"
|
||||||
|
msgstr "回覆"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "7 Days"
|
||||||
|
msgstr "7天"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Communication & History"
|
||||||
|
msgstr "溝通&日誌"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk.report,month:0
|
||||||
|
msgid "August"
|
||||||
|
msgstr "8月"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk,priority:0
|
||||||
|
#: selection:crm.helpdesk.report,priority:0
|
||||||
|
msgid "Normal"
|
||||||
|
msgstr "普通"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Global CC"
|
||||||
|
msgstr "完整副本"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk.report,month:0
|
||||||
|
msgid "June"
|
||||||
|
msgstr "6月"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,planned_revenue:0
|
||||||
|
msgid "Planned Revenue"
|
||||||
|
msgstr "計劃收入"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk.report,user_id:0
|
||||||
|
msgid "User"
|
||||||
|
msgstr "使用者"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,active:0
|
||||||
|
msgid "Active"
|
||||||
|
msgstr "生效"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk.report,month:0
|
||||||
|
msgid "November"
|
||||||
|
msgstr "11月"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "Extended Filters..."
|
||||||
|
msgstr "增加篩選條件"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: model:ir.actions.act_window,name:crm_helpdesk.crm_case_helpdesk_act111
|
||||||
|
msgid "Helpdesk Requests"
|
||||||
|
msgstr "客服需求"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "Search"
|
||||||
|
msgstr "搜索"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk.report,month:0
|
||||||
|
msgid "October"
|
||||||
|
msgstr "10月"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk.report,month:0
|
||||||
|
msgid "January"
|
||||||
|
msgstr "1月"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: help:crm.helpdesk,email_from:0
|
||||||
|
msgid "These people will receive email."
|
||||||
|
msgstr "這些人將收到電子郵件。"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
#: field:crm.helpdesk,date:0
|
||||||
|
msgid "Date"
|
||||||
|
msgstr "日期"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "History"
|
||||||
|
msgstr "日誌"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
#: field:crm.helpdesk,priority:0
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
#: field:crm.helpdesk.report,priority:0
|
||||||
|
msgid "Priority"
|
||||||
|
msgstr "優先級"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,partner_address_id:0
|
||||||
|
msgid "Partner Contact"
|
||||||
|
msgstr "業務夥伴聯絡人"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Misc"
|
||||||
|
msgstr "雜項"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
#: field:crm.helpdesk,state:0
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
#: field:crm.helpdesk.report,state:0
|
||||||
|
msgid "State"
|
||||||
|
msgstr "狀態"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "General"
|
||||||
|
msgstr "一般"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Send Reminder"
|
||||||
|
msgstr "傳送提醒"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: help:crm.helpdesk,section_id:0
|
||||||
|
msgid ""
|
||||||
|
"Sales team to which Case belongs to. Define "
|
||||||
|
"Responsible user and Email account for mail gateway."
|
||||||
|
msgstr "屬於此種情況下,銷售團隊。定義負責用戶和電子郵件帳戶的郵件網關。"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "完成"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk.report,month:0
|
||||||
|
msgid "December"
|
||||||
|
msgstr "12月"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr "取消"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "結束"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
#: selection:crm.helpdesk.report,state:0
|
||||||
|
msgid "Open"
|
||||||
|
msgstr "開啟"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Helpdesk Support Tree"
|
||||||
|
msgstr "客服協助來源"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk,state:0
|
||||||
|
msgid "In Progress"
|
||||||
|
msgstr "進行中"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Categorization"
|
||||||
|
msgstr "分類"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
#: model:ir.model,name:crm_helpdesk.model_crm_helpdesk
|
||||||
|
#: model:ir.ui.menu,name:crm_helpdesk.menu_config_helpdesk
|
||||||
|
msgid "Helpdesk"
|
||||||
|
msgstr "客服"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
#: field:crm.helpdesk,user_id:0
|
||||||
|
msgid "Responsible"
|
||||||
|
msgstr "負責人"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk.report,delay_expected:0
|
||||||
|
msgid "Overpassed Deadline"
|
||||||
|
msgstr "超過截止日期"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,description:0
|
||||||
|
msgid "Description"
|
||||||
|
msgstr "說明"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk.report,month:0
|
||||||
|
msgid "May"
|
||||||
|
msgstr "5月"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,probability:0
|
||||||
|
msgid "Probability (%)"
|
||||||
|
msgstr "概率(%)"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk.report,email:0
|
||||||
|
msgid "# Emails"
|
||||||
|
msgstr "電子郵件"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: model:ir.actions.act_window,help:crm_helpdesk.action_report_crm_helpdesk
|
||||||
|
msgid ""
|
||||||
|
"Have a general overview of all support requests by sorting them with "
|
||||||
|
"specific criteria such as the processing time, number of requests answered, "
|
||||||
|
"emails sent and costs."
|
||||||
|
msgstr "為所有的支持請求排序指定具體標準如:處理時間,請求回覆的次數,發送的郵件,成本."
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: help:crm.helpdesk,state:0
|
||||||
|
msgid ""
|
||||||
|
"The state is set to 'Draft', when a case is created. "
|
||||||
|
" \n"
|
||||||
|
"If the case is in progress the state is set to 'Open'. "
|
||||||
|
" \n"
|
||||||
|
"When the case is over, the state is set to 'Done'. "
|
||||||
|
" \n"
|
||||||
|
"If the case needs to be reviewed then the state is set to 'Pending'."
|
||||||
|
msgstr ""
|
||||||
|
"當一個業務建立時狀態設為'草稿'\n"
|
||||||
|
"如果業務正在處理狀態設為'開啟'\n"
|
||||||
|
"當業務結束狀態設為'完成'\n"
|
||||||
|
"如果業務需要審查狀態設為'待處理'"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk.report,month:0
|
||||||
|
msgid "February"
|
||||||
|
msgstr "2月"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,name:0
|
||||||
|
msgid "Name"
|
||||||
|
msgstr "名稱"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "Month-1"
|
||||||
|
msgstr "上月"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: model:ir.ui.menu,name:crm_helpdesk.menu_help_support_main
|
||||||
|
msgid "Helpdesk and Support"
|
||||||
|
msgstr "客服和協助"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk.report,month:0
|
||||||
|
msgid "April"
|
||||||
|
msgstr "4月"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "My Case(s)"
|
||||||
|
msgstr "我的業務"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Query"
|
||||||
|
msgstr "提問"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,id:0
|
||||||
|
msgid "ID"
|
||||||
|
msgstr "ID"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: model:ir.actions.act_window,help:crm_helpdesk.crm_helpdesk_categ_action
|
||||||
|
msgid ""
|
||||||
|
"Create and manage helpdesk categories to better manage and classify your "
|
||||||
|
"support requests."
|
||||||
|
msgstr "建立和管理客服類型去更好管理和分類你的需求協助"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Todays's Helpdesk Requests"
|
||||||
|
msgstr "今天的客服需求"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Request Date"
|
||||||
|
msgstr "需求日期"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Open Helpdesk Request"
|
||||||
|
msgstr "打開客服需求"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk,priority:0
|
||||||
|
#: selection:crm.helpdesk.report,priority:0
|
||||||
|
msgid "High"
|
||||||
|
msgstr "高"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
#: field:crm.helpdesk,section_id:0
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "Sales Team"
|
||||||
|
msgstr "銷售團隊"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,date_action_last:0
|
||||||
|
msgid "Last Action"
|
||||||
|
msgstr "最近動作"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: model:ir.actions.act_window,help:crm_helpdesk.crm_case_helpdesk_act111
|
||||||
|
msgid ""
|
||||||
|
"Helpdesk and Support allow you to track your interventions. Select a "
|
||||||
|
"customer, add notes and categorize interventions with partners if necessary. "
|
||||||
|
"You can also assign a priority level. Use the OpenERP Issues system to "
|
||||||
|
"manage your support activities. Issues can be connected to the email "
|
||||||
|
"gateway: new emails may create issues, each of them automatically gets the "
|
||||||
|
"history of the conversation with the customer."
|
||||||
|
msgstr ""
|
||||||
|
"客服和協助使你可以去追蹤.如果需要選擇一個客戶增加備註和類型這業務夥伴.你可以分配一優先級用系統問題模塊來管理的的支持活動.問題能鏈接郵件閘道.新的郵件可"
|
||||||
|
"能建立新的問題,它們能自動寫入於客戶溝通的日誌."
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
#: field:crm.helpdesk.report,name:0
|
||||||
|
msgid "Year"
|
||||||
|
msgstr "年"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,duration:0
|
||||||
|
msgid "Duration"
|
||||||
|
msgstr "持續時間"
|
|
@ -0,0 +1,885 @@
|
||||||
|
# Chinese (Traditional) translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
|
"PO-Revision-Date: 2012-08-30 10:14+0000\n"
|
||||||
|
"Last-Translator: Bonnie Duan <bonnie.duan@cenoq.com>\n"
|
||||||
|
"Language-Team: Cenoq Corp.MIME-Version: 1.0\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Launchpad-Export-Date: 2012-08-31 04:56+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15887)\n"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,send_to:0
|
||||||
|
msgid "Send to"
|
||||||
|
msgstr "傳送給"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,subtype:0
|
||||||
|
msgid "Message type"
|
||||||
|
msgstr "訊息類型"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: help:crm.lead.forward.to.partner,auto_delete:0
|
||||||
|
msgid "Permanently delete emails after sending"
|
||||||
|
msgstr "電子郵件發送後永久刪除"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.report.assign,delay_close:0
|
||||||
|
msgid "Delay to Close"
|
||||||
|
msgstr "延遲關閉"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: help:crm.lead.forward.to.partner,email_to:0
|
||||||
|
msgid "Message recipients"
|
||||||
|
msgstr "收件人"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.report.assign,planned_revenue:0
|
||||||
|
msgid "Planned Revenue"
|
||||||
|
msgstr "計劃收入"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.report.assign,nbr:0
|
||||||
|
msgid "# of Cases"
|
||||||
|
msgstr "# 業務量"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
#: view:crm.partner.report.assign:0
|
||||||
|
msgid "Group By..."
|
||||||
|
msgstr "分組..."
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,template_id:0
|
||||||
|
msgid "Template"
|
||||||
|
msgstr "範本"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead:0
|
||||||
|
msgid "Forward"
|
||||||
|
msgstr "轉寄"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:res.partner:0
|
||||||
|
msgid "Geo Localize"
|
||||||
|
msgstr "Geo 定位"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: help:crm.lead.forward.to.partner,body_text:0
|
||||||
|
msgid "Plain-text version of the message"
|
||||||
|
msgstr "內容的純文字版本"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.forward.to.partner:0
|
||||||
|
msgid "Body"
|
||||||
|
msgstr "內文"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,month:0
|
||||||
|
msgid "March"
|
||||||
|
msgstr "3月"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,type:0
|
||||||
|
msgid "Lead"
|
||||||
|
msgstr "潛在客戶"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
msgid "Delay to close"
|
||||||
|
msgstr "延遲關閉"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.partner.report.assign:0
|
||||||
|
msgid "#Partner"
|
||||||
|
msgstr "#Partner"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.forward.to.partner,history:0
|
||||||
|
msgid "Whole Story"
|
||||||
|
msgstr "完整的情況"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
#: field:crm.lead.report.assign,company_id:0
|
||||||
|
msgid "Company"
|
||||||
|
msgstr "公司"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: code:addons/crm_partner_assign/partner_geo_assign.py:37
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Could not contact geolocation servers, please make sure you have a working "
|
||||||
|
"internet connection (%s)"
|
||||||
|
msgstr "無法連接到服務器,請確保你的連線(%s) 正常。"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.report.assign,date_assign:0
|
||||||
|
msgid "Partner Date"
|
||||||
|
msgstr "業務夥伴日期"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,priority:0
|
||||||
|
msgid "Highest"
|
||||||
|
msgstr "最高"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,body_text:0
|
||||||
|
msgid "Text contents"
|
||||||
|
msgstr "文本內容"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
#: field:crm.lead.report.assign,day:0
|
||||||
|
msgid "Day"
|
||||||
|
msgstr "日"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: help:crm.lead.forward.to.partner,message_id:0
|
||||||
|
msgid "Message unique identifier"
|
||||||
|
msgstr "訊息唯一編號"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.forward.to.partner,history:0
|
||||||
|
msgid "Latest email"
|
||||||
|
msgstr "最近的郵件"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead,partner_latitude:0
|
||||||
|
#: field:res.partner,partner_latitude:0
|
||||||
|
msgid "Geo Latitude"
|
||||||
|
msgstr "Geo 緯度"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.forward.to.partner:0
|
||||||
|
msgid ""
|
||||||
|
"Add here all attachments of the current document you want to include in the "
|
||||||
|
"Email."
|
||||||
|
msgstr "在這裡加入你在郵件裡要加入現有的單據附件。"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,state:0
|
||||||
|
msgid "Cancelled"
|
||||||
|
msgstr "已取消"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead:0
|
||||||
|
msgid "Geo Assignation"
|
||||||
|
msgstr "Geo 指派的"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.report.assign,date_closed:0
|
||||||
|
msgid "Close Date"
|
||||||
|
msgstr "結束日期"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: help:res.partner,partner_weight:0
|
||||||
|
msgid ""
|
||||||
|
"Gives the probability to assign a lead to this partner. (0 means no "
|
||||||
|
"assignation.)"
|
||||||
|
msgstr "為潛在客戶指定一個業務夥伴的概率(表示沒指派)"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: help:crm.lead.forward.to.partner,body_html:0
|
||||||
|
msgid "Rich-text/HTML version of the message"
|
||||||
|
msgstr "內容的富文本/HTML版本"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,auto_delete:0
|
||||||
|
msgid "Auto Delete"
|
||||||
|
msgstr "自動刪除"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: help:crm.lead.forward.to.partner,email_bcc:0
|
||||||
|
msgid "Blind carbon copy message recipients"
|
||||||
|
msgstr "密件副本收件人"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,partner_id:0
|
||||||
|
#: selection:crm.lead.forward.to.partner,send_to:0
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
#: field:crm.lead.report.assign,partner_assigned_id:0
|
||||||
|
#: model:ir.model,name:crm_partner_assign.model_res_partner
|
||||||
|
msgid "Partner"
|
||||||
|
msgstr "業務夥伴"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.report.assign,probability:0
|
||||||
|
msgid "Avg Probability"
|
||||||
|
msgstr "平均概率"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:res.partner:0
|
||||||
|
msgid "Previous"
|
||||||
|
msgstr "前一個"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: code:addons/crm_partner_assign/partner_geo_assign.py:36
|
||||||
|
#, python-format
|
||||||
|
msgid "Network error"
|
||||||
|
msgstr "網絡錯誤"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,email_from:0
|
||||||
|
msgid "From"
|
||||||
|
msgstr "來自"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: model:ir.actions.act_window,name:crm_partner_assign.res_partner_grade_action
|
||||||
|
#: model:ir.ui.menu,name:crm_partner_assign.menu_res_partner_grade_action
|
||||||
|
#: field:res.partner,grade_id:0
|
||||||
|
#: view:res.partner.grade:0
|
||||||
|
msgid "Partner Grade"
|
||||||
|
msgstr "業務夥伴級別"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
#: view:crm.partner.report.assign:0
|
||||||
|
msgid "Section"
|
||||||
|
msgstr "劃分"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.forward.to.partner:0
|
||||||
|
msgid "Send"
|
||||||
|
msgstr "發送"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:res.partner:0
|
||||||
|
msgid "Next"
|
||||||
|
msgstr "下一個"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
#: field:crm.lead.report.assign,priority:0
|
||||||
|
msgid "Priority"
|
||||||
|
msgstr "優先級"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
#: field:crm.lead.report.assign,state:0
|
||||||
|
msgid "State"
|
||||||
|
msgstr "狀態"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.report.assign,delay_expected:0
|
||||||
|
msgid "Overpassed Deadline"
|
||||||
|
msgstr "超過截止日期"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.report.assign,type:0
|
||||||
|
msgid "Type"
|
||||||
|
msgstr "類型"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.partner.report.assign:0
|
||||||
|
msgid "Name"
|
||||||
|
msgstr "名稱"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,priority:0
|
||||||
|
msgid "Lowest"
|
||||||
|
msgstr "最低"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: help:crm.lead.forward.to.partner,subtype:0
|
||||||
|
msgid ""
|
||||||
|
"Type of message, usually 'html' or 'plain', used to select plaintext or rich "
|
||||||
|
"text contents accordingly"
|
||||||
|
msgstr "內容類型,一般是“html”或“純文本”,用於對應地選擇純文本或富文本"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
msgid "Assign Date"
|
||||||
|
msgstr "分配日期"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
msgid "Leads Analysis"
|
||||||
|
msgstr "潛在客戶分析"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.report.assign,creation_date:0
|
||||||
|
msgid "Creation Date"
|
||||||
|
msgstr "建立日期"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,res_id:0
|
||||||
|
msgid "Related Document ID"
|
||||||
|
msgstr "相關單據編號"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
msgid "7 Days"
|
||||||
|
msgstr "7天"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead:0
|
||||||
|
msgid "Partner Assignation"
|
||||||
|
msgstr "指定業務夥伴"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: help:crm.lead.report.assign,type:0
|
||||||
|
msgid "Type is used to separate Leads and Opportunities"
|
||||||
|
msgstr "類型用於區分線索和商機"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,month:0
|
||||||
|
msgid "July"
|
||||||
|
msgstr "7月"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
#: field:crm.lead.report.assign,stage_id:0
|
||||||
|
msgid "Stage"
|
||||||
|
msgstr "階段"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,model:0
|
||||||
|
msgid "Related Document model"
|
||||||
|
msgstr "相關單據模組"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: code:addons/crm_partner_assign/wizard/crm_forward_to_partner.py:192
|
||||||
|
#, python-format
|
||||||
|
msgid "Fwd"
|
||||||
|
msgstr "轉發"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:res.partner:0
|
||||||
|
msgid "Geo Localization"
|
||||||
|
msgstr "Geo 定位"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
#: view:crm.partner.report.assign:0
|
||||||
|
msgid "Opportunities Assignment Analysis"
|
||||||
|
msgstr "商機指定分析"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:res.partner:0
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr "取消"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,history:0
|
||||||
|
msgid "Send history"
|
||||||
|
msgstr "發送日誌"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.forward.to.partner:0
|
||||||
|
msgid "Contact"
|
||||||
|
msgstr "聯絡人"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.forward.to.partner:0
|
||||||
|
#: view:res.partner:0
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "結束"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,use_template:0
|
||||||
|
msgid "Use Template"
|
||||||
|
msgstr "使用者範本"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: model:ir.actions.act_window,name:crm_partner_assign.action_report_crm_opportunity_assign
|
||||||
|
#: model:ir.ui.menu,name:crm_partner_assign.menu_report_crm_opportunities_assign_tree
|
||||||
|
msgid "Opp. Assignment Analysis"
|
||||||
|
msgstr "商機指定分析"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: help:crm.lead.report.assign,delay_close:0
|
||||||
|
msgid "Number of Days to close the case"
|
||||||
|
msgstr "到期天數"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:res.partner,partner_weight:0
|
||||||
|
msgid "Weight"
|
||||||
|
msgstr "重要性"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
msgid "Delay to open"
|
||||||
|
msgstr "延遲開啟"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
#: field:crm.lead.report.assign,grade_id:0
|
||||||
|
#: view:crm.partner.report.assign:0
|
||||||
|
#: field:crm.partner.report.assign,grade_id:0
|
||||||
|
msgid "Grade"
|
||||||
|
msgstr "級別"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,month:0
|
||||||
|
msgid "December"
|
||||||
|
msgstr "12月"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
#: field:crm.lead.report.assign,month:0
|
||||||
|
msgid "Month"
|
||||||
|
msgstr "月"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.report.assign,opening_date:0
|
||||||
|
msgid "Opening Date"
|
||||||
|
msgstr "開啟日期"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,subject:0
|
||||||
|
msgid "Subject"
|
||||||
|
msgstr "主題"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
#: view:crm.partner.report.assign:0
|
||||||
|
msgid "Salesman"
|
||||||
|
msgstr "業務員"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
#: field:crm.lead.report.assign,categ_id:0
|
||||||
|
msgid "Category"
|
||||||
|
msgstr "分類"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
msgid "#Opportunities"
|
||||||
|
msgstr "#商機"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead:0
|
||||||
|
msgid "Team"
|
||||||
|
msgstr "團隊"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead:0
|
||||||
|
msgid "Referred Partner"
|
||||||
|
msgstr "推薦的業務夥伴"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,state:0
|
||||||
|
msgid "Draft"
|
||||||
|
msgstr "草稿"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,priority:0
|
||||||
|
msgid "Low"
|
||||||
|
msgstr "低"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
#: selection:crm.lead.report.assign,state:0
|
||||||
|
msgid "Closed"
|
||||||
|
msgstr "已結束"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: model:ir.actions.act_window,name:crm_partner_assign.action_crm_send_mass_forward
|
||||||
|
msgid "Mass forward to partner"
|
||||||
|
msgstr "批量轉發給業務夥伴"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:res.partner:0
|
||||||
|
#: field:res.partner,opportunity_assigned_ids:0
|
||||||
|
msgid "Assigned Opportunities"
|
||||||
|
msgstr "轉為商機"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead,date_assign:0
|
||||||
|
msgid "Assignation Date"
|
||||||
|
msgstr "指定日期"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.report.assign,probability_max:0
|
||||||
|
msgid "Max Probability"
|
||||||
|
msgstr "最大可能"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,month:0
|
||||||
|
msgid "August"
|
||||||
|
msgstr "8月"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,priority:0
|
||||||
|
msgid "Normal"
|
||||||
|
msgstr "普通"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:res.partner:0
|
||||||
|
msgid "Escalate"
|
||||||
|
msgstr "提升"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,month:0
|
||||||
|
msgid "June"
|
||||||
|
msgstr "6月"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: help:crm.lead.report.assign,delay_open:0
|
||||||
|
msgid "Number of Days to open the case"
|
||||||
|
msgstr "業務開啟的天數"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.report.assign,delay_open:0
|
||||||
|
msgid "Delay to Open"
|
||||||
|
msgstr "延遲開啟"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.forward.to.partner,send_to:0
|
||||||
|
#: field:crm.lead.forward.to.partner,user_id:0
|
||||||
|
#: field:crm.lead.report.assign,user_id:0
|
||||||
|
#: field:crm.partner.report.assign,user_id:0
|
||||||
|
msgid "User"
|
||||||
|
msgstr "使用者"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:res.partner.grade,active:0
|
||||||
|
msgid "Active"
|
||||||
|
msgstr "生效"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,month:0
|
||||||
|
msgid "November"
|
||||||
|
msgstr "11月"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
msgid "Extended Filters..."
|
||||||
|
msgstr "增加篩選條件"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead,partner_longitude:0
|
||||||
|
#: field:res.partner,partner_longitude:0
|
||||||
|
msgid "Geo Longitude"
|
||||||
|
msgstr "Geo 經度"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.partner.report.assign,opp:0
|
||||||
|
msgid "# of Opportunity"
|
||||||
|
msgstr "商機編號"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
msgid "Lead Assign"
|
||||||
|
msgstr "潛在客戶指定"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,month:0
|
||||||
|
msgid "October"
|
||||||
|
msgstr "10月"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead:0
|
||||||
|
msgid "Assignation"
|
||||||
|
msgstr "指定"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,month:0
|
||||||
|
msgid "January"
|
||||||
|
msgstr "1月"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: help:crm.lead,partner_assigned_id:0
|
||||||
|
msgid "Partner this case has been forwarded/assigned to."
|
||||||
|
msgstr "這業務的業務夥伴已提出/已指定"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,date:0
|
||||||
|
msgid "Date"
|
||||||
|
msgstr "日期"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,body_html:0
|
||||||
|
msgid "Rich-text contents"
|
||||||
|
msgstr "Rich-text內容"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
msgid "Planned Revenues"
|
||||||
|
msgstr "已計劃收入"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: model:ir.model,name:crm_partner_assign.model_res_partner_grade
|
||||||
|
msgid "res.partner.grade"
|
||||||
|
msgstr "res.partner.grade"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,message_id:0
|
||||||
|
msgid "Message-Id"
|
||||||
|
msgstr "訊息-Id"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.forward.to.partner:0
|
||||||
|
#: field:crm.lead.forward.to.partner,attachment_ids:0
|
||||||
|
msgid "Attachments"
|
||||||
|
msgstr "附件"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,email_cc:0
|
||||||
|
msgid "Cc"
|
||||||
|
msgstr "副本收件人"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,month:0
|
||||||
|
msgid "September"
|
||||||
|
msgstr "9月"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,references:0
|
||||||
|
msgid "References"
|
||||||
|
msgstr "關聯"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
msgid "Last 30 Days"
|
||||||
|
msgstr "最近30天"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:res.partner.grade,name:0
|
||||||
|
msgid "Grade Name"
|
||||||
|
msgstr "級別名稱"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: help:crm.lead,date_assign:0
|
||||||
|
msgid "Last date this case was forwarded/assigned to a partner"
|
||||||
|
msgstr "這業務指定/轉發的業務夥伴的最後期限"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,state:0
|
||||||
|
#: view:res.partner:0
|
||||||
|
msgid "Open"
|
||||||
|
msgstr "開啟"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: help:crm.lead.forward.to.partner,email_cc:0
|
||||||
|
msgid "Carbon copy message recipients"
|
||||||
|
msgstr "郵件副本收件人"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: help:crm.lead.forward.to.partner,headers:0
|
||||||
|
msgid ""
|
||||||
|
"Full message headers, e.g. SMTP session headers (usually available on "
|
||||||
|
"inbound messages only)"
|
||||||
|
msgstr "完整的郵件標題,例如僅SMTP會話頭(通常可在入站消息)"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:res.partner,date_localization:0
|
||||||
|
msgid "Geo Localization Date"
|
||||||
|
msgstr "Geo 定位的日期"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
msgid "Current"
|
||||||
|
msgstr "當前的"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,email_to:0
|
||||||
|
msgid "To"
|
||||||
|
msgstr "給"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: help:crm.lead.forward.to.partner,email_from:0
|
||||||
|
msgid ""
|
||||||
|
"Message sender, taken from user preferences. If empty, this is not a mail "
|
||||||
|
"but a message."
|
||||||
|
msgstr "郵件發件人,來自使用者的個人設置。如果為空,不發郵件而是發內部消息。"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.partner.report.assign,nbr:0
|
||||||
|
msgid "# of Partner"
|
||||||
|
msgstr "# of Partner"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.forward.to.partner:0
|
||||||
|
#: model:ir.actions.act_window,name:crm_partner_assign.crm_lead_forward_to_partner_act
|
||||||
|
msgid "Forward to Partner"
|
||||||
|
msgstr "轉發給業務夥伴"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.partner.report.assign,name:0
|
||||||
|
msgid "Partner name"
|
||||||
|
msgstr "上級名稱"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,month:0
|
||||||
|
msgid "May"
|
||||||
|
msgstr "5月"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.report.assign,probable_revenue:0
|
||||||
|
msgid "Probable Revenue"
|
||||||
|
msgstr "預計收入"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,reply_to:0
|
||||||
|
msgid "Reply-To"
|
||||||
|
msgstr "回覆給"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead,partner_assigned_id:0
|
||||||
|
msgid "Assigned Partner"
|
||||||
|
msgstr "指定的業務夥伴"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,address_id:0
|
||||||
|
msgid "Address"
|
||||||
|
msgstr "地址"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,type:0
|
||||||
|
msgid "Opportunity"
|
||||||
|
msgstr "商機"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.forward.to.partner:0
|
||||||
|
msgid "Send Mail"
|
||||||
|
msgstr "發送郵件"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.report.assign,partner_id:0
|
||||||
|
msgid "Customer"
|
||||||
|
msgstr "客戶"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,month:0
|
||||||
|
msgid "February"
|
||||||
|
msgstr "2月"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.forward.to.partner,send_to:0
|
||||||
|
msgid "Email Address"
|
||||||
|
msgstr "電子郵件地址"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
#: field:crm.lead.report.assign,country_id:0
|
||||||
|
#: view:crm.partner.report.assign:0
|
||||||
|
#: field:crm.partner.report.assign,country_id:0
|
||||||
|
msgid "Country"
|
||||||
|
msgstr "國家"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,headers:0
|
||||||
|
msgid "Message headers"
|
||||||
|
msgstr "郵件頭"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:res.partner:0
|
||||||
|
msgid "Convert to Opportunity"
|
||||||
|
msgstr "轉換為商機"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,email_bcc:0
|
||||||
|
msgid "Bcc"
|
||||||
|
msgstr "密件副本"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead:0
|
||||||
|
msgid "Geo Assign"
|
||||||
|
msgstr "指定geolocalization"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,month:0
|
||||||
|
msgid "April"
|
||||||
|
msgstr "4月"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: model:ir.actions.act_window,name:crm_partner_assign.action_report_crm_partner_assign
|
||||||
|
#: model:ir.ui.menu,name:crm_partner_assign.menu_report_crm_partner_assign_tree
|
||||||
|
msgid "Partnership Analysis"
|
||||||
|
msgstr "業務夥伴分析"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: model:ir.model,name:crm_partner_assign.model_crm_lead
|
||||||
|
msgid "crm.lead"
|
||||||
|
msgstr "crm.lead"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,state:0
|
||||||
|
msgid "Pending"
|
||||||
|
msgstr "待處理"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.partner.report.assign:0
|
||||||
|
msgid "Partner assigned Analysis"
|
||||||
|
msgstr "業務夥伴分配分析"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: model:ir.model,name:crm_partner_assign.model_crm_lead_report_assign
|
||||||
|
msgid "CRM Lead Report"
|
||||||
|
msgstr "客戶關係管理 線索報表"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: help:crm.lead.forward.to.partner,references:0
|
||||||
|
msgid "Message references, such as identifiers of previous messages"
|
||||||
|
msgstr "郵件引用,例如前一個郵件的ID"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: constraint:res.partner:0
|
||||||
|
msgid "Error ! You cannot create recursive associated members."
|
||||||
|
msgstr "錯誤,您不能建立循環引用的會員用戶"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.forward.to.partner,history:0
|
||||||
|
msgid "Case Information"
|
||||||
|
msgstr "業務資訊"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:res.partner.grade,sequence:0
|
||||||
|
msgid "Sequence"
|
||||||
|
msgstr "順序"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: model:ir.model,name:crm_partner_assign.model_crm_partner_report_assign
|
||||||
|
msgid "CRM Partner Report"
|
||||||
|
msgstr "CRM業務夥伴報表"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: model:ir.model,name:crm_partner_assign.model_crm_lead_forward_to_partner
|
||||||
|
msgid "Email composition wizard"
|
||||||
|
msgstr "電子郵件成分嚮導"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: selection:crm.lead.report.assign,priority:0
|
||||||
|
msgid "High"
|
||||||
|
msgstr "高"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.report.assign,section_id:0
|
||||||
|
#: field:crm.partner.report.assign,section_id:0
|
||||||
|
msgid "Sales Team"
|
||||||
|
msgstr "銷售團隊"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.report.assign,create_date:0
|
||||||
|
msgid "Create Date"
|
||||||
|
msgstr "建立日期"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: field:crm.lead.forward.to.partner,filter_id:0
|
||||||
|
msgid "Filters"
|
||||||
|
msgstr "篩選"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: view:crm.lead.report.assign:0
|
||||||
|
#: field:crm.lead.report.assign,year:0
|
||||||
|
msgid "Year"
|
||||||
|
msgstr "年"
|
||||||
|
|
||||||
|
#. module: crm_partner_assign
|
||||||
|
#: help:crm.lead.forward.to.partner,reply_to:0
|
||||||
|
msgid "Preferred response address for the message"
|
||||||
|
msgstr "本郵件推薦的回覆地址"
|
||||||
|
|
||||||
|
#~ msgid "E-mail composition wizard"
|
||||||
|
#~ msgstr "郵件協同作業"
|
|
@ -22,6 +22,7 @@
|
||||||
from osv import osv, fields
|
from osv import osv, fields
|
||||||
import tools
|
import tools
|
||||||
import pooler
|
import pooler
|
||||||
|
from openerp import SUPERUSER_ID
|
||||||
|
|
||||||
class decimal_precision(osv.osv):
|
class decimal_precision(osv.osv):
|
||||||
_name = 'decimal.precision'
|
_name = 'decimal.precision'
|
||||||
|
@ -56,7 +57,7 @@ decimal_precision()
|
||||||
|
|
||||||
def get_precision(application):
|
def get_precision(application):
|
||||||
def change_digit(cr):
|
def change_digit(cr):
|
||||||
res = pooler.get_pool(cr.dbname).get('decimal.precision').precision_get(cr, 1, application)
|
res = pooler.get_pool(cr.dbname).get('decimal.precision').precision_get(cr, SUPERUSER_ID, application)
|
||||||
return (16, res)
|
return (16, res)
|
||||||
return change_digit
|
return change_digit
|
||||||
|
|
||||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
||||||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
"PO-Revision-Date: 2011-01-28 03:53+0000\n"
|
"PO-Revision-Date: 2012-08-30 11:51+0000\n"
|
||||||
"Last-Translator: Walter Cheuk <wwycheuk@gmail.com>\n"
|
"Last-Translator: Bonnie Duan <bonnie.duan@cenoq.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: Cenoq Corp.\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-08-28 06:28+0000\n"
|
"X-Launchpad-Export-Date: 2012-08-31 04:56+0000\n"
|
||||||
"X-Generator: Launchpad (build 15864)\n"
|
"X-Generator: Launchpad (build 15887)\n"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory,parent_id:0
|
#: field:document.directory,parent_id:0
|
||||||
|
@ -35,7 +35,7 @@ msgstr "名稱欄位"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:board.board:0
|
#: view:board.board:0
|
||||||
msgid "Document board"
|
msgid "Document board"
|
||||||
msgstr ""
|
msgstr "文件佈告欄"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.model,name:document.model_process_node
|
#: model:ir.model,name:document.model_process_node
|
||||||
|
@ -58,7 +58,7 @@ msgstr "用作資源目錄名稱之欄位。如留空,會用該「名稱」。
|
||||||
#: view:document.directory:0
|
#: view:document.directory:0
|
||||||
#: view:document.storage:0
|
#: view:document.storage:0
|
||||||
msgid "Group By..."
|
msgid "Group By..."
|
||||||
msgstr "分組根據..."
|
msgstr "分類方式..."
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.model,name:document.model_document_directory_content_type
|
#: model:ir.model,name:document.model_document_directory_content_type
|
||||||
|
@ -79,7 +79,7 @@ msgstr "檔案"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:report.files.partner:0
|
#: view:report.files.partner:0
|
||||||
msgid "Files per Month"
|
msgid "Files per Month"
|
||||||
msgstr ""
|
msgstr "當月文件"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: selection:report.document.user,month:0
|
#: selection:report.document.user,month:0
|
||||||
|
@ -90,12 +90,12 @@ msgstr "三月"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.configuration:0
|
#: view:document.configuration:0
|
||||||
msgid "title"
|
msgid "title"
|
||||||
msgstr ""
|
msgstr "抬頭"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory.dctx,expr:0
|
#: field:document.directory.dctx,expr:0
|
||||||
msgid "Expression"
|
msgid "Expression"
|
||||||
msgstr "表達式"
|
msgstr "表達方式"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.directory:0
|
#: view:document.directory:0
|
||||||
|
@ -111,7 +111,7 @@ msgstr "目錄內容"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.directory:0
|
#: view:document.directory:0
|
||||||
msgid "Dynamic context"
|
msgid "Dynamic context"
|
||||||
msgstr ""
|
msgstr "動態背景"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.ui.menu,name:document.menu_document_management_configuration
|
#: model:ir.ui.menu,name:document.menu_document_management_configuration
|
||||||
|
@ -125,11 +125,14 @@ msgid ""
|
||||||
"You can use 'dir_id' for current dir, 'res_id', 'res_model' as a reference "
|
"You can use 'dir_id' for current dir, 'res_id', 'res_model' as a reference "
|
||||||
"to the current record, in dynamic folders"
|
"to the current record, in dynamic folders"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"A python expression used to evaluate the field.\n"
|
||||||
|
"You can use 'dir_id' for current dir, 'res_id', 'res_model' as a reference "
|
||||||
|
"to the current record, in dynamic folders"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:report.document.user:0
|
#: view:report.document.user:0
|
||||||
msgid "This Year"
|
msgid "This Year"
|
||||||
msgstr "本年"
|
msgstr "今年"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.storage,path:0
|
#: field:document.storage,path:0
|
||||||
|
@ -146,7 +149,7 @@ msgstr "目錄名不能重覆!"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:ir.attachment:0
|
#: view:ir.attachment:0
|
||||||
msgid "Filter on my documents"
|
msgid "Filter on my documents"
|
||||||
msgstr ""
|
msgstr "過濾我的文件"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:ir.attachment,index_content:0
|
#: field:ir.attachment,index_content:0
|
||||||
|
@ -158,12 +161,12 @@ msgstr "已索引內容"
|
||||||
msgid ""
|
msgid ""
|
||||||
"If true, all attachments that match this resource will be located. If "
|
"If true, all attachments that match this resource will be located. If "
|
||||||
"false, only ones that have this as parent."
|
"false, only ones that have this as parent."
|
||||||
msgstr ""
|
msgstr "如果正確,所有符合資源的附件會被發現。如果錯誤,只有符合資源的附件會被歸屬。"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.actions.todo.category,name:document.category_knowledge_mgmt_config
|
#: model:ir.actions.todo.category,name:document.category_knowledge_mgmt_config
|
||||||
msgid "Knowledge Management"
|
msgid "Knowledge Management"
|
||||||
msgstr ""
|
msgstr "知識管理"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.directory:0
|
#: view:document.directory:0
|
||||||
|
@ -175,7 +178,7 @@ msgstr "目錄"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.model,name:document.model_report_document_user
|
#: model:ir.model,name:document.model_report_document_user
|
||||||
msgid "Files details by Users"
|
msgid "Files details by Users"
|
||||||
msgstr "各用戶檔案詳情"
|
msgstr "各使用者檔案詳情"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: code:addons/document/document_storage.py:573
|
#: code:addons/document/document_storage.py:573
|
||||||
|
@ -187,17 +190,17 @@ msgstr "錯誤!"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory,resource_find_all:0
|
#: field:document.directory,resource_find_all:0
|
||||||
msgid "Find all resources"
|
msgid "Find all resources"
|
||||||
msgstr ""
|
msgstr "尋找所有資源"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: selection:document.directory,type:0
|
#: selection:document.directory,type:0
|
||||||
msgid "Folders per resource"
|
msgid "Folders per resource"
|
||||||
msgstr ""
|
msgstr "按資源歸類檔案夾"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory.content,suffix:0
|
#: field:document.directory.content,suffix:0
|
||||||
msgid "Suffix"
|
msgid "Suffix"
|
||||||
msgstr "後綴"
|
msgstr "字尾"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:report.document.user,change_date:0
|
#: field:report.document.user,change_date:0
|
||||||
|
@ -207,7 +210,7 @@ msgstr "修改日期"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.configuration:0
|
#: view:document.configuration:0
|
||||||
msgid "Knowledge Application Configuration"
|
msgid "Knowledge Application Configuration"
|
||||||
msgstr ""
|
msgstr "文管設定"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:ir.attachment:0
|
#: view:ir.attachment:0
|
||||||
|
@ -219,7 +222,7 @@ msgstr "伙伴"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:board.board:0
|
#: view:board.board:0
|
||||||
msgid "Files by Users"
|
msgid "Files by Users"
|
||||||
msgstr "各用戶檔案"
|
msgstr "使用者檔案"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:process.node,directory_id:0
|
#: field:process.node,directory_id:0
|
||||||
|
@ -239,7 +242,7 @@ msgstr "檢驗錯誤"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.model,name:document.model_ir_actions_report_xml
|
#: model:ir.model,name:document.model_ir_actions_report_xml
|
||||||
msgid "ir.actions.report.xml"
|
msgid "ir.actions.report.xml"
|
||||||
msgstr ""
|
msgstr "ir.actions.report.xml"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.actions.act_window,name:document.action_document_file_form
|
#: model:ir.actions.act_window,name:document.action_document_file_form
|
||||||
|
@ -252,13 +255,13 @@ msgstr "文件"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: constraint:document.directory:0
|
#: constraint:document.directory:0
|
||||||
msgid "Error! You can not create recursive Directories."
|
msgid "Error! You can not create recursive Directories."
|
||||||
msgstr ""
|
msgstr "錯誤! 您不可以建立循環目錄。"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.directory:0
|
#: view:document.directory:0
|
||||||
#: field:document.directory,storage_id:0
|
#: field:document.directory,storage_id:0
|
||||||
msgid "Storage"
|
msgid "Storage"
|
||||||
msgstr ""
|
msgstr "存儲器"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory,ressource_type_id:0
|
#: field:document.directory,ressource_type_id:0
|
||||||
|
@ -292,28 +295,28 @@ msgstr "類型"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Select an object here and there will be one folder per record of that "
|
"Select an object here and there will be one folder per record of that "
|
||||||
"resource."
|
"resource."
|
||||||
msgstr ""
|
msgstr "在這裡選擇一個目標,這個資源將會是一筆記錄一個檔案夾"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: help:document.directory,domain:0
|
#: help:document.directory,domain:0
|
||||||
msgid ""
|
msgid ""
|
||||||
"Use a domain if you want to apply an automatic filter on visible resources."
|
"Use a domain if you want to apply an automatic filter on visible resources."
|
||||||
msgstr ""
|
msgstr "請使用一個領域,如果您要將可見的資源自動過濾。"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.actions.act_window,name:document.action_view_files_by_partner
|
#: model:ir.actions.act_window,name:document.action_view_files_by_partner
|
||||||
msgid "Files Per Partner"
|
msgid "Files Per Partner"
|
||||||
msgstr ""
|
msgstr "夥伴文件"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory,dctx_ids:0
|
#: field:document.directory,dctx_ids:0
|
||||||
msgid "Context fields"
|
msgid "Context fields"
|
||||||
msgstr "脈絡欄位"
|
msgstr "內文欄位"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:ir.attachment,store_fname:0
|
#: field:ir.attachment,store_fname:0
|
||||||
msgid "Stored Filename"
|
msgid "Stored Filename"
|
||||||
msgstr ""
|
msgstr "儲存名稱"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.directory:0
|
#: view:document.directory:0
|
||||||
|
@ -336,7 +339,7 @@ msgstr "七月"
|
||||||
#: model:ir.actions.act_window,name:document.open_board_document_manager
|
#: model:ir.actions.act_window,name:document.open_board_document_manager
|
||||||
#: model:ir.ui.menu,name:document.menu_reports_document_manager
|
#: model:ir.ui.menu,name:document.menu_reports_document_manager
|
||||||
msgid "Document Dashboard"
|
msgid "Document Dashboard"
|
||||||
msgstr "文件儀錶板"
|
msgstr "文件控制台"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory.content.type,code:0
|
#: field:document.directory.content.type,code:0
|
||||||
|
@ -346,7 +349,7 @@ msgstr "延伸檔案"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:ir.attachment:0
|
#: view:ir.attachment:0
|
||||||
msgid "Created"
|
msgid "Created"
|
||||||
msgstr ""
|
msgstr "已建立"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory,content_ids:0
|
#: field:document.directory,content_ids:0
|
||||||
|
@ -356,25 +359,25 @@ msgstr "虛擬檔案"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:ir.attachment:0
|
#: view:ir.attachment:0
|
||||||
msgid "Modified"
|
msgid "Modified"
|
||||||
msgstr ""
|
msgstr "已修改"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: code:addons/document/document_storage.py:639
|
#: code:addons/document/document_storage.py:639
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Error at doc write!"
|
msgid "Error at doc write!"
|
||||||
msgstr ""
|
msgstr "文件書寫錯誤!"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.directory:0
|
#: view:document.directory:0
|
||||||
msgid "Generated Files"
|
msgid "Generated Files"
|
||||||
msgstr ""
|
msgstr "已產生檔案"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.configuration:0
|
#: view:document.configuration:0
|
||||||
msgid ""
|
msgid ""
|
||||||
"When executing this wizard, it will configure your directories automatically "
|
"When executing this wizard, it will configure your directories automatically "
|
||||||
"according to modules installed."
|
"according to modules installed."
|
||||||
msgstr ""
|
msgstr "執行這個精靈,它會根據已安裝的模組自動組態您的目錄。"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory.content,directory_id:0
|
#: field:document.directory.content,directory_id:0
|
||||||
|
@ -397,7 +400,7 @@ msgstr "安全"
|
||||||
#: field:document.storage,write_uid:0
|
#: field:document.storage,write_uid:0
|
||||||
#: field:ir.attachment,write_uid:0
|
#: field:ir.attachment,write_uid:0
|
||||||
msgid "Last Modification User"
|
msgid "Last Modification User"
|
||||||
msgstr "最後修改用戶"
|
msgstr "最後修改使用者"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.actions.act_window,name:document.act_res_partner_document
|
#: model:ir.actions.act_window,name:document.act_res_partner_document
|
||||||
|
@ -425,7 +428,7 @@ msgstr "各目錄檔案詳情"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:report.document.user:0
|
#: view:report.document.user:0
|
||||||
msgid "All users files"
|
msgid "All users files"
|
||||||
msgstr "所有用戶檔案"
|
msgstr "所有使用者檔案"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:board.board:0
|
#: view:board.board:0
|
||||||
|
@ -453,18 +456,18 @@ msgstr "靜態目錄"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory,child_ids:0
|
#: field:document.directory,child_ids:0
|
||||||
msgid "Children"
|
msgid "Children"
|
||||||
msgstr ""
|
msgstr "子目錄"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.directory:0
|
#: view:document.directory:0
|
||||||
msgid "Define words in the context, for all child directories and files"
|
msgid "Define words in the context, for all child directories and files"
|
||||||
msgstr ""
|
msgstr "在內文中定義所有的子目錄及檔案"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: help:document.storage,online:0
|
#: help:document.storage,online:0
|
||||||
msgid ""
|
msgid ""
|
||||||
"If not checked, media is currently offline and its contents not available"
|
"If not checked, media is currently offline and its contents not available"
|
||||||
msgstr ""
|
msgstr "如果未檢查,媒體已離線且其內容也無法使用。"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.directory:0
|
#: view:document.directory:0
|
||||||
|
@ -475,7 +478,7 @@ msgstr ""
|
||||||
#: field:report.document.user,user_id:0
|
#: field:report.document.user,user_id:0
|
||||||
#: field:report.document.wall,user_id:0
|
#: field:report.document.wall,user_id:0
|
||||||
msgid "Owner"
|
msgid "Owner"
|
||||||
msgstr ""
|
msgstr "擁有人"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.directory:0
|
#: view:document.directory:0
|
||||||
|
@ -492,7 +495,7 @@ msgstr "內容"
|
||||||
#: field:document.storage,create_date:0
|
#: field:document.storage,create_date:0
|
||||||
#: field:report.document.user,create_date:0
|
#: field:report.document.user,create_date:0
|
||||||
msgid "Date Created"
|
msgid "Date Created"
|
||||||
msgstr ""
|
msgstr "產生的日期"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: help:document.directory.content,include_name:0
|
#: help:document.directory.content,include_name:0
|
||||||
|
@ -501,12 +504,14 @@ msgid ""
|
||||||
"name.\n"
|
"name.\n"
|
||||||
"If set, the directory will have to be a resource one."
|
"If set, the directory will have to be a resource one."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"如果您要檔案名稱包含記錄名稱,請檢查這個欄位。\n"
|
||||||
|
"如果設定, 這個目錄將會是第一個資源"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.configuration:0
|
#: view:document.configuration:0
|
||||||
#: model:ir.actions.act_window,name:document.action_config_auto_directory
|
#: model:ir.actions.act_window,name:document.action_config_auto_directory
|
||||||
msgid "Configure Directories"
|
msgid "Configure Directories"
|
||||||
msgstr ""
|
msgstr "目錄組態"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory.content,include_name:0
|
#: field:document.directory.content,include_name:0
|
||||||
|
@ -521,26 +526,26 @@ msgstr "附件"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:ir.actions.report.xml,model_id:0
|
#: field:ir.actions.report.xml,model_id:0
|
||||||
msgid "Model Id"
|
msgid "Model Id"
|
||||||
msgstr ""
|
msgstr "模型 Id"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.storage,online:0
|
#: field:document.storage,online:0
|
||||||
msgid "Online"
|
msgid "Online"
|
||||||
msgstr ""
|
msgstr "在線上"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: help:document.directory,ressource_tree:0
|
#: help:document.directory,ressource_tree:0
|
||||||
msgid ""
|
msgid ""
|
||||||
"Check this if you want to use the same tree structure as the object selected "
|
"Check this if you want to use the same tree structure as the object selected "
|
||||||
"in the system."
|
"in the system."
|
||||||
msgstr ""
|
msgstr "檢查這個項目,如果您要在系統中使用相同的樹狀結構當作選擇的目標。"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: help:document.directory,ressource_id:0
|
#: help:document.directory,ressource_id:0
|
||||||
msgid ""
|
msgid ""
|
||||||
"Along with Parent Model, this ID attaches this folder to a specific record "
|
"Along with Parent Model, this ID attaches this folder to a specific record "
|
||||||
"of Parent Model."
|
"of Parent Model."
|
||||||
msgstr ""
|
msgstr "隨著母模型,這個ID在這個檔案夾附屬在母模型的特定記錄上。"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: selection:report.document.user,month:0
|
#: selection:report.document.user,month:0
|
||||||
|
@ -551,7 +556,7 @@ msgstr "八月"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: sql_constraint:document.directory:0
|
#: sql_constraint:document.directory:0
|
||||||
msgid "Directory cannot be parent of itself!"
|
msgid "Directory cannot be parent of itself!"
|
||||||
msgstr ""
|
msgstr "目錄不能作自己的母目錄!"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: selection:report.document.user,month:0
|
#: selection:report.document.user,month:0
|
||||||
|
@ -563,7 +568,7 @@ msgstr "六月"
|
||||||
#: field:report.document.user,user:0
|
#: field:report.document.user,user:0
|
||||||
#: field:report.document.wall,user:0
|
#: field:report.document.wall,user:0
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "用戶"
|
msgstr "使用者"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory,group_ids:0
|
#: field:document.directory,group_ids:0
|
||||||
|
@ -574,7 +579,7 @@ msgstr "群組"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory.content.type,active:0
|
#: field:document.directory.content.type,active:0
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr ""
|
msgstr "啟用"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: selection:report.document.user,month:0
|
#: selection:report.document.user,month:0
|
||||||
|
@ -596,6 +601,8 @@ msgid ""
|
||||||
"record, just like attachments. Don't put a parent directory if you select a "
|
"record, just like attachments. Don't put a parent directory if you select a "
|
||||||
"parent model."
|
"parent model."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"如果您在這裡放置一個目標,這個目錄範本將會出現下列所有目標。這種目錄是 \"附件\" "
|
||||||
|
"於特定的模型或記錄,就像附屬文件。如果您選擇一個母模型,就不要放置母目錄。"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.directory:0
|
#: view:document.directory:0
|
||||||
|
@ -611,7 +618,7 @@ msgstr "十月"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.directory:0
|
#: view:document.directory:0
|
||||||
msgid "Seq."
|
msgid "Seq."
|
||||||
msgstr ""
|
msgstr "Seq."
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: selection:document.storage,type:0
|
#: selection:document.storage,type:0
|
||||||
|
@ -637,12 +644,12 @@ msgstr ""
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.ui.menu,name:document.menu_reports_document
|
#: model:ir.ui.menu,name:document.menu_reports_document
|
||||||
msgid "Dashboard"
|
msgid "Dashboard"
|
||||||
msgstr "儀錶板"
|
msgstr "控制台"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.actions.act_window,name:document.action_view_user_graph
|
#: model:ir.actions.act_window,name:document.action_view_user_graph
|
||||||
msgid "Files By Users"
|
msgid "Files By Users"
|
||||||
msgstr "各用戶檔案"
|
msgstr "各使用者檔案"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.storage,readonly:0
|
#: field:document.storage,readonly:0
|
||||||
|
@ -652,7 +659,7 @@ msgstr "唯讀"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.actions.act_window,name:document.action_document_directory_form
|
#: model:ir.actions.act_window,name:document.action_document_directory_form
|
||||||
msgid "Document Directory"
|
msgid "Document Directory"
|
||||||
msgstr ""
|
msgstr "文件目錄"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: sql_constraint:document.directory:0
|
#: sql_constraint:document.directory:0
|
||||||
|
@ -663,12 +670,12 @@ msgstr "目錄名不能重覆!"
|
||||||
#: field:document.directory,create_uid:0
|
#: field:document.directory,create_uid:0
|
||||||
#: field:document.storage,create_uid:0
|
#: field:document.storage,create_uid:0
|
||||||
msgid "Creator"
|
msgid "Creator"
|
||||||
msgstr ""
|
msgstr "建置者"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory.content,sequence:0
|
#: field:document.directory.content,sequence:0
|
||||||
msgid "Sequence"
|
msgid "Sequence"
|
||||||
msgstr ""
|
msgstr "順序"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.configuration:0
|
#: view:document.configuration:0
|
||||||
|
@ -678,6 +685,8 @@ msgid ""
|
||||||
"attached to the document, or to print and download any report. This tool "
|
"attached to the document, or to print and download any report. This tool "
|
||||||
"will create directories automatically according to modules installed."
|
"will create directories automatically according to modules installed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"OpenERP's "
|
||||||
|
"文件管理系統支援虛擬檔案夾與文件配對。文件的虛擬檔案夾可以用來管理文件的附件,或列印及下載任何報表。這個工具會根據安裝的模組自動產生目錄。"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:board.board:0
|
#: view:board.board:0
|
||||||
|
@ -695,7 +704,7 @@ msgstr "九月"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory.content,prefix:0
|
#: field:document.directory.content,prefix:0
|
||||||
msgid "Prefix"
|
msgid "Prefix"
|
||||||
msgstr "前綴"
|
msgstr "字尾"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:report.document.wall,last:0
|
#: field:report.document.wall,last:0
|
||||||
|
@ -710,7 +719,7 @@ msgstr "檔案名稱"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.configuration:0
|
#: view:document.configuration:0
|
||||||
msgid "res_config_contents"
|
msgid "res_config_contents"
|
||||||
msgstr ""
|
msgstr "res_config_contents"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory,ressource_id:0
|
#: field:document.directory,ressource_id:0
|
||||||
|
@ -720,19 +729,19 @@ msgstr "資源ID"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: selection:document.storage,type:0
|
#: selection:document.storage,type:0
|
||||||
msgid "External file storage"
|
msgid "External file storage"
|
||||||
msgstr ""
|
msgstr "外部檔案儲存"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:board.board:0
|
#: view:board.board:0
|
||||||
#: model:ir.actions.act_window,name:document.action_view_wall
|
#: model:ir.actions.act_window,name:document.action_view_wall
|
||||||
#: view:report.document.wall:0
|
#: view:report.document.wall:0
|
||||||
msgid "Wall of Shame"
|
msgid "Wall of Shame"
|
||||||
msgstr ""
|
msgstr "排行榜"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: help:document.storage,path:0
|
#: help:document.storage,path:0
|
||||||
msgid "For file storage, the root path of the storage"
|
msgid "For file storage, the root path of the storage"
|
||||||
msgstr ""
|
msgstr "關於檔案儲存,儲存的根路徑"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.model,name:document.model_report_files_partner
|
#: model:ir.model,name:document.model_report_files_partner
|
||||||
|
@ -747,17 +756,17 @@ msgstr "欄位"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.model,name:document.model_document_directory_dctx
|
#: model:ir.model,name:document.model_document_directory_dctx
|
||||||
msgid "Directory Dynamic Context"
|
msgid "Directory Dynamic Context"
|
||||||
msgstr ""
|
msgstr "目錄動態內文"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory,ressource_parent_type_id:0
|
#: field:document.directory,ressource_parent_type_id:0
|
||||||
msgid "Parent Model"
|
msgid "Parent Model"
|
||||||
msgstr ""
|
msgstr "母模型"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:report.document.user:0
|
#: view:report.document.user:0
|
||||||
msgid "Files by users"
|
msgid "Files by users"
|
||||||
msgstr "各用戶檔案"
|
msgstr "各使用者檔案"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:report.document.file,month:0
|
#: field:report.document.file,month:0
|
||||||
|
@ -771,12 +780,12 @@ msgstr "月"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:report.document.user:0
|
#: view:report.document.user:0
|
||||||
msgid "This Months Files"
|
msgid "This Months Files"
|
||||||
msgstr ""
|
msgstr "當月檔案"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.ui.menu,name:document.menu_reporting
|
#: model:ir.ui.menu,name:document.menu_reporting
|
||||||
msgid "Reporting"
|
msgid "Reporting"
|
||||||
msgstr "報告"
|
msgstr "報表"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory,ressource_tree:0
|
#: field:document.directory,ressource_tree:0
|
||||||
|
@ -792,29 +801,29 @@ msgstr "五月"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.actions.act_window,name:document.action_view_all_document_tree1
|
#: model:ir.actions.act_window,name:document.action_view_all_document_tree1
|
||||||
msgid "All Users files"
|
msgid "All Users files"
|
||||||
msgstr "所有用戶檔案"
|
msgstr "所有使用者檔案"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.model,name:document.model_report_document_wall
|
#: model:ir.model,name:document.model_report_document_wall
|
||||||
msgid "Users that did not inserted documents since one month"
|
msgid "Users that did not inserted documents since one month"
|
||||||
msgstr ""
|
msgstr "使用者已經一個月未插入文件"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.actions.act_window,help:document.action_document_file_form
|
#: model:ir.actions.act_window,help:document.action_document_file_form
|
||||||
msgid ""
|
msgid ""
|
||||||
"The Documents repository gives you access to all attachments, such as mails, "
|
"The Documents repository gives you access to all attachments, such as mails, "
|
||||||
"project documents, invoices etc."
|
"project documents, invoices etc."
|
||||||
msgstr ""
|
msgstr "文件儲存室讓您可以存取所有附件,如電郵、專案文件、商業發票等"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.directory:0
|
#: view:document.directory:0
|
||||||
msgid "For each entry here, virtual files will appear in this folder."
|
msgid "For each entry here, virtual files will appear in this folder."
|
||||||
msgstr ""
|
msgstr "對於每一輸入,虛擬檔案在檔案夾中出現"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.model,name:document.model_ir_attachment
|
#: model:ir.model,name:document.model_ir_attachment
|
||||||
msgid "ir.attachment"
|
msgid "ir.attachment"
|
||||||
msgstr ""
|
msgstr "ir.attachment"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:board.board:0
|
#: view:board.board:0
|
||||||
|
@ -834,7 +843,7 @@ msgstr "各伙伴檔案"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:ir.attachment:0
|
#: view:ir.attachment:0
|
||||||
msgid "Indexed Content - experimental"
|
msgid "Indexed Content - experimental"
|
||||||
msgstr ""
|
msgstr "已索引內容 - 實驗性質"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:report.document.user:0
|
#: view:report.document.user:0
|
||||||
|
@ -844,12 +853,12 @@ msgstr "本月"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:ir.attachment:0
|
#: view:ir.attachment:0
|
||||||
msgid "Notes"
|
msgid "Notes"
|
||||||
msgstr "注解"
|
msgstr "備註"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.model,name:document.model_document_configuration
|
#: model:ir.model,name:document.model_document_configuration
|
||||||
msgid "Directory Configuration"
|
msgid "Directory Configuration"
|
||||||
msgstr ""
|
msgstr "目錄組態"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: help:document.directory,type:0
|
#: help:document.directory,type:0
|
||||||
|
@ -860,6 +869,8 @@ msgid ""
|
||||||
"resources automatically possess sub-directories for each of resource types "
|
"resources automatically possess sub-directories for each of resource types "
|
||||||
"defined in the parent directory."
|
"defined in the parent directory."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"每一個目錄可以是靜態或連接於另一個資源。一個靜態的目錄與其作業系統,是一個典型的目錄可以包含一組檔案。這個目錄連接於系統資源,在母目錄中按資源別自動持有次"
|
||||||
|
"目錄。"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: selection:report.document.user,month:0
|
#: selection:report.document.user,month:0
|
||||||
|
@ -871,14 +882,14 @@ msgstr "二月"
|
||||||
#: model:ir.actions.act_window,name:document.open_board_document_manager1
|
#: model:ir.actions.act_window,name:document.open_board_document_manager1
|
||||||
#: model:ir.ui.menu,name:document.menu_reports_document_manager1
|
#: model:ir.ui.menu,name:document.menu_reports_document_manager1
|
||||||
msgid "Statistics by User"
|
msgid "Statistics by User"
|
||||||
msgstr "各用戶統計"
|
msgstr "各使用者統計"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: help:document.directory.dctx,field:0
|
#: help:document.directory.dctx,field:0
|
||||||
msgid ""
|
msgid ""
|
||||||
"The name of the field. Note that the prefix \"dctx_\" will be prepended to "
|
"The name of the field. Note that the prefix \"dctx_\" will be prepended to "
|
||||||
"what is typed here."
|
"what is typed here."
|
||||||
msgstr ""
|
msgstr "這個欄位名稱的字首包含\"dctx_\" 將會根據這裡的輸入預先決定。"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory,name:0
|
#: field:document.directory,name:0
|
||||||
|
@ -889,7 +900,7 @@ msgstr "名稱"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: sql_constraint:document.storage:0
|
#: sql_constraint:document.storage:0
|
||||||
msgid "The storage path must be unique!"
|
msgid "The storage path must be unique!"
|
||||||
msgstr ""
|
msgstr "儲存路徑不能重複!"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.directory:0
|
#: view:document.directory:0
|
||||||
|
@ -899,7 +910,7 @@ msgstr "欄位"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: help:document.storage,readonly:0
|
#: help:document.storage,readonly:0
|
||||||
msgid "If set, media is for reading only"
|
msgid "If set, media is for reading only"
|
||||||
msgstr ""
|
msgstr "如果設定,媒體只能唯讀。"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: selection:report.document.user,month:0
|
#: selection:report.document.user,month:0
|
||||||
|
@ -918,21 +929,21 @@ msgstr "檔案數"
|
||||||
#: code:addons/document/document.py:209
|
#: code:addons/document/document.py:209
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "(copy)"
|
msgid "(copy)"
|
||||||
msgstr ""
|
msgstr "(copy)"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.directory:0
|
#: view:document.directory:0
|
||||||
msgid ""
|
msgid ""
|
||||||
"Only members of these groups will have access to this directory and its "
|
"Only members of these groups will have access to this directory and its "
|
||||||
"files."
|
"files."
|
||||||
msgstr ""
|
msgstr "只有這個群組中的數字,才能存取這個目錄及其檔案。"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:document.directory:0
|
#: view:document.directory:0
|
||||||
msgid ""
|
msgid ""
|
||||||
"These groups, however, do NOT apply to children directories, which must "
|
"These groups, however, do NOT apply to children directories, which must "
|
||||||
"define their own groups."
|
"define their own groups."
|
||||||
msgstr ""
|
msgstr "雖然這些模組沒有子目錄,但是還是要定義它們自己的群組。"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory.content.type,mimetype:0
|
#: field:document.directory.content.type,mimetype:0
|
||||||
|
@ -942,7 +953,7 @@ msgstr "Mime 類型"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: view:report.document.user:0
|
#: view:report.document.user:0
|
||||||
msgid "All Months Files"
|
msgid "All Months Files"
|
||||||
msgstr ""
|
msgstr "所有月份文件"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: field:document.directory.content,name:0
|
#: field:document.directory.content,name:0
|
||||||
|
@ -959,12 +970,12 @@ msgstr "檔案名不能重覆!"
|
||||||
#. module: document
|
#. module: document
|
||||||
#: selection:document.storage,type:0
|
#: selection:document.storage,type:0
|
||||||
msgid "Internal File storage"
|
msgid "Internal File storage"
|
||||||
msgstr ""
|
msgstr "內部文件儲存"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: sql_constraint:document.directory:0
|
#: sql_constraint:document.directory:0
|
||||||
msgid "Directory must have a parent or a storage"
|
msgid "Directory must have a parent or a storage"
|
||||||
msgstr ""
|
msgstr "目錄必須要有母目錄或儲存"
|
||||||
|
|
||||||
#. module: document
|
#. module: document
|
||||||
#: model:ir.actions.act_window,name:document.action_document_directory_tree
|
#: model:ir.actions.act_window,name:document.action_document_directory_tree
|
||||||
|
@ -1030,3 +1041,6 @@ msgstr "文件類型"
|
||||||
|
|
||||||
#~ msgid "Product"
|
#~ msgid "Product"
|
||||||
#~ msgstr "產品"
|
#~ msgstr "產品"
|
||||||
|
|
||||||
|
#~ msgid "Attached To"
|
||||||
|
#~ msgstr "附屬於"
|
||||||
|
|
|
@ -7,165 +7,165 @@ msgstr ""
|
||||||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||||
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
|
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
|
||||||
"PO-Revision-Date: 2012-08-13 12:08+0000\n"
|
"PO-Revision-Date: 2012-08-30 09:36+0000\n"
|
||||||
"Last-Translator: <>\n"
|
"Last-Translator: Bonnie Duan <bonnie.duan@cenoq.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-08-28 06:43+0000\n"
|
"X-Launchpad-Export-Date: 2012-08-31 04:56+0000\n"
|
||||||
"X-Generator: Launchpad (build 15864)\n"
|
"X-Generator: Launchpad (build 15887)\n"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page.type,template:0
|
#: field:document.page.type,template:0
|
||||||
msgid "Document page Template"
|
msgid "Document page Template"
|
||||||
msgstr ""
|
msgstr "文檔頁面範本"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: model:ir.actions.act_window,name:document_page.action_wiki
|
#: model:ir.actions.act_window,name:document_page.action_wiki
|
||||||
#: model:ir.ui.menu,name:document_page.menu_action_wiki_wiki
|
#: model:ir.ui.menu,name:document_page.menu_action_wiki_wiki
|
||||||
msgid "Document Pages"
|
msgid "Document Pages"
|
||||||
msgstr ""
|
msgstr "文檔頁面"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page.type,method:0
|
#: field:document.page.type,method:0
|
||||||
msgid "Display Method"
|
msgid "Display Method"
|
||||||
msgstr ""
|
msgstr "展示方法"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:document.page:0 field:document.page,create_uid:0
|
#: view:document.page:0 field:document.page,create_uid:0
|
||||||
msgid "Author"
|
msgid "Author"
|
||||||
msgstr ""
|
msgstr "作者"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: model:ir.actions.act_window,name:document_page.action_view_wiki_wiki_page_open
|
#: model:ir.actions.act_window,name:document_page.action_view_wiki_wiki_page_open
|
||||||
#: view:document.page.page.open:0
|
#: view:document.page.page.open:0
|
||||||
msgid "Open Page"
|
msgid "Open Page"
|
||||||
msgstr ""
|
msgstr "開啓葉面"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page,menu_id:0
|
#: field:document.page,menu_id:0
|
||||||
msgid "Menu"
|
msgid "Menu"
|
||||||
msgstr ""
|
msgstr "選單"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: help:document.page,type:0
|
#: help:document.page,type:0
|
||||||
msgid "Indicates that this pages have a table of contents or not"
|
msgid "Indicates that this pages have a table of contents or not"
|
||||||
msgstr ""
|
msgstr "表示,這個頁面至少有一個表的內容"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: model:ir.model,name:document_page.model_wiki_wiki_history view:document.page.history:0
|
#: model:ir.model,name:document_page.model_wiki_wiki_history view:document.page.history:0
|
||||||
msgid "Document page History"
|
msgid "Document page History"
|
||||||
msgstr ""
|
msgstr "頁面歷史文件"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page,minor_edit:0
|
#: field:document.page,minor_edit:0
|
||||||
msgid "Minor edit"
|
msgid "Minor edit"
|
||||||
msgstr ""
|
msgstr "小編輯"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:document.page:0 field:document.page,content:0
|
#: view:document.page:0 field:document.page,content:0
|
||||||
msgid "Content"
|
msgid "Content"
|
||||||
msgstr ""
|
msgstr "內容"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page,child_ids:0
|
#: field:document.page,child_ids:0
|
||||||
msgid "Child Pages"
|
msgid "Child Pages"
|
||||||
msgstr ""
|
msgstr "子頁面"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page,parent_id:0
|
#: field:document.page,parent_id:0
|
||||||
msgid "Parent Page"
|
msgid "Parent Page"
|
||||||
msgstr ""
|
msgstr "上級頁面"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:document.page:0 field:document.page,write_uid:0
|
#: view:document.page:0 field:document.page,write_uid:0
|
||||||
msgid "Last Contributor"
|
msgid "Last Contributor"
|
||||||
msgstr ""
|
msgstr "最後的貢獻者"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page.create.menu,menu_parent_id:0
|
#: field:document.page.create.menu,menu_parent_id:0
|
||||||
msgid "Parent Menu"
|
msgid "Parent Menu"
|
||||||
msgstr ""
|
msgstr "上級選單"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page,name:0
|
#: field:document.page,name:0
|
||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr ""
|
msgstr "標題"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: model:ir.model,name:document_page.model_wiki_create_menu
|
#: model:ir.model,name:document_page.model_wiki_create_menu
|
||||||
msgid "Wizard Create Menu"
|
msgid "Wizard Create Menu"
|
||||||
msgstr ""
|
msgstr "嚮導創建選單"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page,history_id:0
|
#: field:document.page,history_id:0
|
||||||
msgid "History Lines"
|
msgid "History Lines"
|
||||||
msgstr ""
|
msgstr "歷史記錄"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:document.page:0
|
#: view:document.page:0
|
||||||
msgid "Page Content"
|
msgid "Page Content"
|
||||||
msgstr ""
|
msgstr "頁面內容"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: code:addons/document_page/document_page.py:237 code:addons/wiki/wizard/wiki_make_index.py:52
|
#: code:addons/document_page/document_page.py:237 code:addons/wiki/wizard/wiki_make_index.py:52
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Warning !"
|
msgid "Warning !"
|
||||||
msgstr ""
|
msgstr "警告!"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: code:addons/document_page/document_page.py:237
|
#: code:addons/document_page/document_page.py:237
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "There are no changes in revisions"
|
msgid "There are no changes in revisions"
|
||||||
msgstr ""
|
msgstr "有沒有變化修訂"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page.create.menu,menu_name:0
|
#: field:document.page.create.menu,menu_name:0
|
||||||
msgid "Menu Name"
|
msgid "Menu Name"
|
||||||
msgstr ""
|
msgstr "選單名稱"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page.type,notes:0
|
#: field:document.page.type,notes:0
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr ""
|
msgstr "描述"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page,review:0
|
#: field:document.page,review:0
|
||||||
msgid "Needs Review"
|
msgid "Needs Review"
|
||||||
msgstr ""
|
msgstr "需要回顧"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: help:document.page,review:0
|
#: help:document.page,review:0
|
||||||
msgid ""
|
msgid ""
|
||||||
"Indicates that this page should be reviewed, raising the attention of other "
|
"Indicates that this page should be reviewed, raising the attention of other "
|
||||||
"contributors"
|
"contributors"
|
||||||
msgstr ""
|
msgstr "表示這個頁面應該檢討,提高其他出資人的注意"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:document.page.create.menu:0 view:document.page.make.index:0
|
#: view:document.page.create.menu:0 view:document.page.make.index:0
|
||||||
msgid "Menu Information"
|
msgid "Menu Information"
|
||||||
msgstr ""
|
msgstr "選單資訊"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: model:ir.actions.act_window,name:document_page.act_wiki_wiki_history
|
#: model:ir.actions.act_window,name:document_page.act_wiki_wiki_history
|
||||||
msgid "Page History"
|
msgid "Page History"
|
||||||
msgstr ""
|
msgstr "頁面歷史記錄"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: selection:document.page.type,method:0
|
#: selection:document.page.type,method:0
|
||||||
msgid "Tree"
|
msgid "Tree"
|
||||||
msgstr ""
|
msgstr "目錄樹"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:document.page.type:0
|
#: view:document.page.type:0
|
||||||
msgid "Page Template"
|
msgid "Page Template"
|
||||||
msgstr ""
|
msgstr "頁面模版"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page,tags:0
|
#: field:document.page,tags:0
|
||||||
msgid "Keywords"
|
msgid "Keywords"
|
||||||
msgstr ""
|
msgstr "關鍵字"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: model:ir.actions.act_window,help:document_page.action_wiki
|
#: model:ir.actions.act_window,help:document_page.action_wiki
|
||||||
|
@ -175,173 +175,175 @@ msgid ""
|
||||||
"(CRM, Sales, etc.). You can use keywords to ease access to your wiki pages. "
|
"(CRM, Sales, etc.). You can use keywords to ease access to your wiki pages. "
|
||||||
"There is a basic wiki editing for text format."
|
"There is a basic wiki editing for text format."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Wiki頁面,您可以與您的同事的想法和問題。您可以創建一個新的文件,可以連接到一個或多個應用程序(客戶關係管理(CRM),銷售等)。您可以使用關鍵字,以便"
|
||||||
|
"於訪問到您的wiki頁面。有一個基本的的維基編輯為文本格式。"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: code:addons/document_page/wizard/document_page_show_diff.py:54
|
#: code:addons/document_page/wizard/document_page_show_diff.py:54
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Warning"
|
msgid "Warning"
|
||||||
msgstr ""
|
msgstr "警告"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: help:document.page.type,home:0
|
#: help:document.page.type,home:0
|
||||||
msgid "Required to select home page if display method is Home Page"
|
msgid "Required to select home page if display method is Home Page"
|
||||||
msgstr ""
|
msgstr "在首頁,需要選擇首頁顯示的方法"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page.history,create_date:0
|
#: field:document.page.history,create_date:0
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr ""
|
msgstr "日期"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:document.page.make.index:0
|
#: view:document.page.make.index:0
|
||||||
msgid "Want to create a Index on Selected Pages ? "
|
msgid "Want to create a Index on Selected Pages ? "
|
||||||
msgstr ""
|
msgstr "要選定的頁面上創建一個索引呢? "
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: model:ir.actions.act_window,name:document_page.action_view_wiki_show_diff
|
#: model:ir.actions.act_window,name:document_page.action_view_wiki_show_diff
|
||||||
#: model:ir.actions.act_window,name:document_page.action_view_wiki_show_diff_values
|
#: model:ir.actions.act_window,name:document_page.action_view_wiki_show_diff_values
|
||||||
#: view:wizard.document.page.history.show_diff:0
|
#: view:wizard.document.page.history.show_diff:0
|
||||||
msgid "Difference"
|
msgid "Difference"
|
||||||
msgstr ""
|
msgstr "差異"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page.type,page_ids:0
|
#: field:document.page.type,page_ids:0
|
||||||
msgid "Pages"
|
msgid "Pages"
|
||||||
msgstr ""
|
msgstr "頁面"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:document.page.type:0
|
#: view:document.page.type:0
|
||||||
msgid "Group Description"
|
msgid "Group Description"
|
||||||
msgstr ""
|
msgstr "群組敘述"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:document.page.page.open:0
|
#: view:document.page.page.open:0
|
||||||
msgid "Want to open a wiki page? "
|
msgid "Want to open a wiki page? "
|
||||||
msgstr ""
|
msgstr "要打開一個wiki頁面? "
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page.history,content:0
|
#: field:document.page.history,content:0
|
||||||
msgid "Text area"
|
msgid "Text area"
|
||||||
msgstr ""
|
msgstr "文本區域"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:document.page:0
|
#: view:document.page:0
|
||||||
msgid "Meta Information"
|
msgid "Meta Information"
|
||||||
msgstr ""
|
msgstr "中繼資訊"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page,create_date:0
|
#: field:document.page,create_date:0
|
||||||
msgid "Created on"
|
msgid "Created on"
|
||||||
msgstr ""
|
msgstr "建立於"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:document.page.type:0 view:wizard.document.page.history.show_diff:0
|
#: view:document.page.type:0 view:wizard.document.page.history.show_diff:0
|
||||||
msgid "Notes"
|
msgid "Notes"
|
||||||
msgstr ""
|
msgstr "備註"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: selection:document.page.type,method:0
|
#: selection:document.page.type,method:0
|
||||||
msgid "List"
|
msgid "List"
|
||||||
msgstr ""
|
msgstr "列表"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page,summary:0 field:document.page.history,edit_summary:0
|
#: field:document.page,summary:0 field:document.page.history,edit_summary:0
|
||||||
msgid "Summary"
|
msgid "Summary"
|
||||||
msgstr ""
|
msgstr "摘要"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page.groups,create_date:0
|
#: field:document.page.groups,create_date:0
|
||||||
msgid "Created Date"
|
msgid "Created Date"
|
||||||
msgstr ""
|
msgstr "建立日期"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: model:ir.actions.act_window,name:document_page.action_history
|
#: model:ir.actions.act_window,name:document_page.action_history
|
||||||
msgid "All Page Histories"
|
msgid "All Page Histories"
|
||||||
msgstr ""
|
msgstr "所有頁面的歷史記錄"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: model:ir.model,name:document_page.model_wiki_wiki
|
#: model:ir.model,name:document_page.model_wiki_wiki
|
||||||
msgid "document.page"
|
msgid "document.page"
|
||||||
msgstr ""
|
msgstr "document.page"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: help:document.page.type,method:0
|
#: help:document.page.type,method:0
|
||||||
msgid "Define the default behaviour of the menu created on this group"
|
msgid "Define the default behaviour of the menu created on this group"
|
||||||
msgstr ""
|
msgstr "本組創建的選單中定義默認行為"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:wizard.document.page.history.show_diff:0
|
#: view:wizard.document.page.history.show_diff:0
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr ""
|
msgstr "結束"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: model:ir.model,name:document_page.model_wizard_wiki_history_show_diff
|
#: model:ir.model,name:document_page.model_wizard_wiki_history_show_diff
|
||||||
msgid "wizard.document.page.history.show_diff"
|
msgid "wizard.document.page.history.show_diff"
|
||||||
msgstr ""
|
msgstr "wizard.document.page.history.show_diff"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page.history,wiki_id:0
|
#: field:document.page.history,wiki_id:0
|
||||||
msgid "Wiki Id"
|
msgid "Wiki Id"
|
||||||
msgstr ""
|
msgstr "維基標識"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page.type,home:0 selection:document.page.type,method:0
|
#: field:document.page.type,home:0 selection:document.page.type,method:0
|
||||||
msgid "Home Page"
|
msgid "Home Page"
|
||||||
msgstr ""
|
msgstr "首頁"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: help:document.page,parent_id:0
|
#: help:document.page,parent_id:0
|
||||||
msgid "Allows you to link with the other page with in the current topic"
|
msgid "Allows you to link with the other page with in the current topic"
|
||||||
msgstr ""
|
msgstr "允許您與其他頁的鏈接,在當前主題"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:document.page:0
|
#: view:document.page:0
|
||||||
msgid "Modification Information"
|
msgid "Modification Information"
|
||||||
msgstr ""
|
msgstr "修改信息"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: model:ir.ui.menu,name:document_page.menu_wiki_configuration view:document.page:0
|
#: model:ir.ui.menu,name:document_page.menu_wiki_configuration view:document.page:0
|
||||||
msgid "Wiki"
|
msgid "Wiki"
|
||||||
msgstr ""
|
msgstr "維基 (Wiki)"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page,write_date:0
|
#: field:document.page,write_date:0
|
||||||
msgid "Modification Date"
|
msgid "Modification Date"
|
||||||
msgstr ""
|
msgstr "修改日期"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:document.page.type:0
|
#: view:document.page.type:0
|
||||||
msgid "Configuration"
|
msgid "Configuration"
|
||||||
msgstr ""
|
msgstr "設置"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: model:ir.actions.act_window,name:document_page.action_view_wiki_make_index
|
#: model:ir.actions.act_window,name:document_page.action_view_wiki_make_index
|
||||||
#: model:ir.actions.act_window,name:document_page.action_view_wiki_make_index_values
|
#: model:ir.actions.act_window,name:document_page.action_view_wiki_make_index_values
|
||||||
#: model:ir.model,name:document_page.model_wiki_make_index view:document.page.make.index:0
|
#: model:ir.model,name:document_page.model_wiki_make_index view:document.page.make.index:0
|
||||||
msgid "Create Index"
|
msgid "Create Index"
|
||||||
msgstr ""
|
msgstr "創建索引"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: code:addons/document_page/wizard/document_page_show_diff.py:54
|
#: code:addons/document_page/wizard/document_page_show_diff.py:54
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "You need to select minimum 1 or maximum 2 history revision!"
|
msgid "You need to select minimum 1 or maximum 2 history revision!"
|
||||||
msgstr ""
|
msgstr "您需要選擇最小或最大歷史修訂!"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:document.page:0
|
#: view:document.page:0
|
||||||
msgid "Group By..."
|
msgid "Group By..."
|
||||||
msgstr ""
|
msgstr "分類方式..."
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: model:ir.actions.act_window,name:document_page.action_wiki_create_menu
|
#: model:ir.actions.act_window,name:document_page.action_wiki_create_menu
|
||||||
#: view:document.page.create.menu:0 view:document.page.type:0 view:document.page.make.index:0
|
#: view:document.page.create.menu:0 view:document.page.type:0 view:document.page.make.index:0
|
||||||
msgid "Create Menu"
|
msgid "Create Menu"
|
||||||
msgstr ""
|
msgstr "建立選單"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page.history,minor_edit:0
|
#: field:document.page.history,minor_edit:0
|
||||||
msgid "This is a major edit ?"
|
msgid "This is a major edit ?"
|
||||||
msgstr ""
|
msgstr "這是一個主要的編輯嗎?"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: model:ir.actions.act_window,name:document_page.action_wiki_groups
|
#: model:ir.actions.act_window,name:document_page.action_wiki_groups
|
||||||
|
@ -349,56 +351,56 @@ msgstr ""
|
||||||
#: model:ir.model,name:document_page.model_wiki_groups
|
#: model:ir.model,name:document_page.model_wiki_groups
|
||||||
#: model:ir.ui.menu,name:document_page.menu_action_wiki_groups view:document.page.type:0
|
#: model:ir.ui.menu,name:document_page.menu_action_wiki_groups view:document.page.type:0
|
||||||
msgid "Document Types"
|
msgid "Document Types"
|
||||||
msgstr ""
|
msgstr "文件類型"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:document.page:0
|
#: view:document.page:0
|
||||||
msgid "Topic"
|
msgid "Topic"
|
||||||
msgstr ""
|
msgstr "主題"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:document.page.history,write_uid:0
|
#: field:document.page.history,write_uid:0
|
||||||
msgid "Modify By"
|
msgid "Modify By"
|
||||||
msgstr ""
|
msgstr "修改者"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: code:addons/document_page/web/widgets/wikimarkup/__init__.py:1981
|
#: code:addons/document_page/web/widgets/wikimarkup/__init__.py:1981
|
||||||
#: field:document.page,type:0
|
#: field:document.page,type:0
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr ""
|
msgstr "類型"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:document.page.type:0 view:document.page.page.open:0
|
#: view:document.page.type:0 view:document.page.page.open:0
|
||||||
msgid "Open Document Page"
|
msgid "Open Document Page"
|
||||||
msgstr ""
|
msgstr "開啓文件"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: model:ir.model,name:document_page.model_wiki_wiki_page_open
|
#: model:ir.model,name:document_page.model_wiki_wiki_page_open
|
||||||
msgid "wiz open page"
|
msgid "wiz open page"
|
||||||
msgstr ""
|
msgstr "WIZ打開的頁面"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:document.page.create.menu:0 view:document.page.make.index:0 view:document.page.page.open:0
|
#: view:document.page.create.menu:0 view:document.page.make.index:0 view:document.page.page.open:0
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr "刪除"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: field:wizard.document.page.history.show_diff,file_path:0
|
#: field:wizard.document.page.history.show_diff,file_path:0
|
||||||
msgid "Diff"
|
msgid "Diff"
|
||||||
msgstr ""
|
msgstr "差異"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: view:document.page:0
|
#: view:document.page:0
|
||||||
msgid "Need Review"
|
msgid "Need Review"
|
||||||
msgstr ""
|
msgstr "需要回顧"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: model:ir.actions.act_window,name:document_page.action_wiki_review
|
#: model:ir.actions.act_window,name:document_page.action_wiki_review
|
||||||
msgid "Pages Waiting Review"
|
msgid "Pages Waiting Review"
|
||||||
msgstr ""
|
msgstr "頁面等待審查"
|
||||||
|
|
||||||
#. module: document_page
|
#. module: document_page
|
||||||
#: model:ir.actions.act_window,name:document_page.act_wiki_group_open
|
#: model:ir.actions.act_window,name:document_page.act_wiki_group_open
|
||||||
msgid "Search Page"
|
msgid "Search Page"
|
||||||
msgstr ""
|
msgstr "搜尋頁面"
|
||||||
|
|
|
@ -0,0 +1,196 @@
|
||||||
|
# Chinese (Traditional) translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
|
"PO-Revision-Date: 2012-08-30 11:51+0000\n"
|
||||||
|
"Last-Translator: Bonnie Duan <bonnie.duan@cenoq.com>\n"
|
||||||
|
"Language-Team: Cenoq Corp.\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Launchpad-Export-Date: 2012-08-31 04:56+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15887)\n"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: field:document.webdav.dir.property,create_date:0
|
||||||
|
#: field:document.webdav.file.property,create_date:0
|
||||||
|
msgid "Date Created"
|
||||||
|
msgstr "建立日期"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: model:ir.ui.menu,name:document_webdav.menu_document_props
|
||||||
|
msgid "Documents"
|
||||||
|
msgstr "文件"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: constraint:document.directory:0
|
||||||
|
msgid "Error! You can not create recursive Directories."
|
||||||
|
msgstr "錯誤! 您不能建立循環的目錄"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: view:document.webdav.dir.property:0
|
||||||
|
#: view:document.webdav.file.property:0
|
||||||
|
msgid "Search Document properties"
|
||||||
|
msgstr "搜尋文件目錄"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: view:document.webdav.dir.property:0
|
||||||
|
#: field:document.webdav.dir.property,namespace:0
|
||||||
|
#: view:document.webdav.file.property:0
|
||||||
|
#: field:document.webdav.file.property,namespace:0
|
||||||
|
msgid "Namespace"
|
||||||
|
msgstr "Namespace"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: field:document.directory,dav_prop_ids:0
|
||||||
|
msgid "DAV properties"
|
||||||
|
msgstr "DAV 內容"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: model:ir.model,name:document_webdav.model_document_webdav_file_property
|
||||||
|
msgid "document.webdav.file.property"
|
||||||
|
msgstr "document.webdav.file.property"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: view:document.webdav.dir.property:0
|
||||||
|
#: view:document.webdav.file.property:0
|
||||||
|
msgid "Group By..."
|
||||||
|
msgstr "群組...."
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: view:document.directory:0
|
||||||
|
msgid "These properties will be added to WebDAV requests"
|
||||||
|
msgstr "這些內容將被加到 WebDAV 請求"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: model:ir.actions.act_window,name:document_webdav.action_file_props_form
|
||||||
|
msgid "DAV Properties for Documents"
|
||||||
|
msgstr "文件的DAV 內容"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: code:addons/document_webdav/webdav.py:37
|
||||||
|
#, python-format
|
||||||
|
msgid "PyWebDAV Import Error!"
|
||||||
|
msgstr "PyWebDAV 匯入錯誤!"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: view:document.webdav.file.property:0
|
||||||
|
#: field:document.webdav.file.property,file_id:0
|
||||||
|
msgid "Document"
|
||||||
|
msgstr "文件"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: model:ir.ui.menu,name:document_webdav.menu_folder_props
|
||||||
|
msgid "Folders"
|
||||||
|
msgstr "檔案夾"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: sql_constraint:document.directory:0
|
||||||
|
msgid "Directory cannot be parent of itself!"
|
||||||
|
msgstr "目錄不能成為自己的母目錄!"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: view:document.directory:0
|
||||||
|
msgid "Dynamic context"
|
||||||
|
msgstr "動態背景"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: view:document.directory:0
|
||||||
|
msgid "WebDAV properties"
|
||||||
|
msgstr "WebDAV 內容"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: sql_constraint:document.directory:0
|
||||||
|
msgid "The directory name must be unique !"
|
||||||
|
msgstr "目錄名不能重覆!"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: code:addons/document_webdav/webdav.py:37
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Please install PyWebDAV from "
|
||||||
|
"http://code.google.com/p/pywebdav/downloads/detail?name=PyWebDAV-"
|
||||||
|
"0.9.4.tar.gz&can=2&q=/"
|
||||||
|
msgstr ""
|
||||||
|
"從 http://code.google.com/p/pywebdav/downloads/detail?name=PyWebDAV-"
|
||||||
|
"0.9.4.tar.gz&can=2&q=/,請安裝 PyWebDAV"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: model:ir.actions.act_window,name:document_webdav.action_dir_props_form
|
||||||
|
msgid "DAV Properties for Folders"
|
||||||
|
msgstr "DAV 檔案夾內容"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: view:document.directory:0
|
||||||
|
#: view:document.webdav.dir.property:0
|
||||||
|
#: view:document.webdav.file.property:0
|
||||||
|
msgid "Properties"
|
||||||
|
msgstr "內容"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: field:document.webdav.dir.property,name:0
|
||||||
|
#: field:document.webdav.file.property,name:0
|
||||||
|
msgid "Name"
|
||||||
|
msgstr "名稱"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: model:ir.model,name:document_webdav.model_document_webdav_dir_property
|
||||||
|
msgid "document.webdav.dir.property"
|
||||||
|
msgstr "document.webdav.dir.property"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: field:document.webdav.dir.property,value:0
|
||||||
|
#: field:document.webdav.file.property,value:0
|
||||||
|
msgid "Value"
|
||||||
|
msgstr "價值"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: field:document.webdav.dir.property,dir_id:0
|
||||||
|
#: model:ir.model,name:document_webdav.model_document_directory
|
||||||
|
msgid "Directory"
|
||||||
|
msgstr "目錄"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: field:document.webdav.dir.property,write_uid:0
|
||||||
|
#: field:document.webdav.file.property,write_uid:0
|
||||||
|
msgid "Last Modification User"
|
||||||
|
msgstr "最後修改使用者"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: view:document.webdav.dir.property:0
|
||||||
|
msgid "Dir"
|
||||||
|
msgstr "路徑"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: field:document.webdav.dir.property,write_date:0
|
||||||
|
#: field:document.webdav.file.property,write_date:0
|
||||||
|
msgid "Date Modified"
|
||||||
|
msgstr "修改日期"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: field:document.webdav.dir.property,create_uid:0
|
||||||
|
#: field:document.webdav.file.property,create_uid:0
|
||||||
|
msgid "Creator"
|
||||||
|
msgstr "建立者"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: model:ir.ui.menu,name:document_webdav.menu_properties
|
||||||
|
msgid "DAV Properties"
|
||||||
|
msgstr "DAV 內容"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: sql_constraint:document.directory:0
|
||||||
|
msgid "Directory must have a parent or a storage"
|
||||||
|
msgstr "目錄必須要有母目錄或儲存室"
|
||||||
|
|
||||||
|
#. module: document_webdav
|
||||||
|
#: field:document.webdav.dir.property,do_subst:0
|
||||||
|
#: field:document.webdav.file.property,do_subst:0
|
||||||
|
msgid "Substitute"
|
||||||
|
msgstr "替代項目"
|
|
@ -25,6 +25,8 @@ from tools.safe_eval import safe_eval as eval
|
||||||
import time
|
import time
|
||||||
import urllib
|
import urllib
|
||||||
import uuid
|
import uuid
|
||||||
|
from openerp import SUPERUSER_ID
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from tools.dict_tools import dict_filter
|
from tools.dict_tools import dict_filter
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
@ -233,7 +235,7 @@ class node_acl_mixin(object):
|
||||||
|
|
||||||
if props_to_delete:
|
if props_to_delete:
|
||||||
# explicitly delete, as admin, any of the ids we have identified.
|
# explicitly delete, as admin, any of the ids we have identified.
|
||||||
propobj.unlink(cr, 1, props_to_delete)
|
propobj.unlink(cr, SUPERUSER_ID, props_to_delete)
|
||||||
|
|
||||||
if lock_data.get('unlock_mode', False):
|
if lock_data.get('unlock_mode', False):
|
||||||
return lock_found and True
|
return lock_found and True
|
||||||
|
|
|
@ -42,6 +42,7 @@ from tools import config
|
||||||
from xmlrpclib import Transport, ProtocolError
|
from xmlrpclib import Transport, ProtocolError
|
||||||
import StringIO
|
import StringIO
|
||||||
import base64
|
import base64
|
||||||
|
from openerp import SUPERUSER_ID
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -361,7 +362,7 @@ class DAVClient(object):
|
||||||
to break if "base_crypt" is used.
|
to break if "base_crypt" is used.
|
||||||
"""
|
"""
|
||||||
ruob = obj.pool.get('res.users')
|
ruob = obj.pool.get('res.users')
|
||||||
res = ruob.read(cr, 1, [uid,], ['login', 'password'])
|
res = ruob.read(cr, SUPERUSER_ID, [uid,], ['login', 'password'])
|
||||||
assert res, "uid %s not found" % uid
|
assert res, "uid %s not found" % uid
|
||||||
self.user = res[0]['login']
|
self.user = res[0]['login']
|
||||||
self.passwd = res[0]['password']
|
self.passwd = res[0]['password']
|
||||||
|
|
|
@ -0,0 +1,386 @@
|
||||||
|
# Chinese (Traditional) translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
|
||||||
|
"PO-Revision-Date: 2012-08-30 11:51+0000\n"
|
||||||
|
"Last-Translator: Bonnie Duan <bonnie.duan@cenoq.com>\n"
|
||||||
|
"Language-Team: Cenoq Corp.\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Launchpad-Export-Date: 2012-08-31 04:56+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15887)\n"
|
||||||
|
|
||||||
|
#. module: edi
|
||||||
|
#: sql_constraint:res.currency:0
|
||||||
|
msgid "The currency code must be unique per company!"
|
||||||
|
msgstr "每個公司的貨幣代碼必須唯一"
|
||||||
|
|
||||||
|
#. module: edi
|
||||||
|
#: model:ir.model,name:edi.model_res_partner_address
|
||||||
|
msgid "Partner Addresses"
|
||||||
|
msgstr "業務夥伴地址"
|
||||||
|
|
||||||
|
#. module: edi
|
||||||
|
#: sql_constraint:res.company:0
|
||||||
|
msgid "The company name must be unique !"
|
||||||
|
msgstr "公司名稱必須唯一!"
|
||||||
|
|
||||||
|
#. module: edi
|
||||||
|
#: constraint:res.partner:0
|
||||||
|
msgid "Error ! You cannot create recursive associated members."
|
||||||
|
msgstr "錯誤,您不能建立循環引用的會員"
|
||||||
|
|
||||||
|
#. module: edi
|
||||||
|
#: field:edi.document,name:0
|
||||||
|
msgid "EDI token"
|
||||||
|
msgstr "EDI權杖"
|
||||||
|
|
||||||
|
#. module: edi
|
||||||
|
#: help:edi.document,name:0
|
||||||
|
msgid "Unique identifier for retrieving an EDI document."
|
||||||
|
msgstr "接收EDI文件的唯一標識符"
|
||||||
|
|
||||||
|
#. module: edi
|
||||||
|
#: constraint:res.company:0
|
||||||
|
msgid "Error! You can not create recursive companies."
|
||||||
|
msgstr "錯誤!您不能建立循環引用的公司."
|
||||||
|
|
||||||
|
#. module: edi
|
||||||
|
#: model:ir.model,name:edi.model_res_company
|
||||||
|
msgid "Companies"
|
||||||
|
msgstr "公司"
|
||||||
|
|
||||||
|
#. module: edi
|
||||||
|
#: sql_constraint:edi.document:0
|
||||||
|
msgid "EDI Tokens must be unique!"
|
||||||
|
msgstr "EDI權杖必須唯一"
|
||||||
|
|
||||||
|
#. module: edi
|
||||||
|
#: model:ir.model,name:edi.model_res_currency
|
||||||
|
msgid "Currency"
|
||||||
|
msgstr "貨幣"
|
||||||
|
|
||||||
|
#. module: edi
|
||||||
|
#: code:addons/edi/models/edi.py:153
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"The document you are trying to import requires the OpenERP `%s` application. "
|
||||||
|
"You can install it by connecting as the administrator and opening the "
|
||||||
|
"configuration assistant."
|
||||||
|
msgstr "你要匯入的文件需要OpenERP的 %s 模組。你可以用管理員使用者安裝並打開配置精靈。"
|
||||||
|
|
||||||
|
#. module: edi
|
||||||
|
#: help:edi.document,document:0
|
||||||
|
msgid "EDI document content"
|
||||||
|
msgstr "EDI文件內容"
|
||||||
|
|
||||||
|
#. module: edi
|
||||||
|
#: model:ir.model,name:edi.model_edi_document
|
||||||
|
msgid "EDI Document"
|
||||||
|
msgstr "EDI文件"
|
||||||
|
|
||||||
|
#. module: edi
|
||||||
|
#: code:addons/edi/models/edi.py:48
|
||||||
|
#, python-format
|
||||||
|
msgid "'%s' is an invalid external ID"
|
||||||
|
msgstr "%s是個無效的外部ID"
|
||||||
|
|
||||||
|
#. module: edi
|
||||||
|
#: model:ir.model,name:edi.model_res_partner
|
||||||
|
msgid "Partner"
|
||||||
|
msgstr "業務夥伴"
|
||||||
|
|
||||||
|
#. module: edi
|
||||||
|
#: code:addons/edi/models/edi.py:152
|
||||||
|
#, python-format
|
||||||
|
msgid "Missing Application"
|
||||||
|
msgstr "不存在此功能"
|
||||||
|
|
||||||
|
#. module: edi
|
||||||
|
#: field:edi.document,document:0
|
||||||
|
msgid "Document"
|
||||||
|
msgstr "文件"
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:23
|
||||||
|
msgid "View/Print"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:28
|
||||||
|
msgid "Import this document"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:33
|
||||||
|
msgid "Import it into an existing OpenERP instance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:36
|
||||||
|
msgid "OpenERP instance address:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:39
|
||||||
|
msgid "Import"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:44
|
||||||
|
msgid "Import it into a new OpenERP Online instance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:47
|
||||||
|
msgid "Create my new OpenERP instance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:52
|
||||||
|
msgid "Import into another application"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:54
|
||||||
|
msgid ""
|
||||||
|
"OpenERP's Electronic Data Interchange documents are based on a generic and "
|
||||||
|
"language\n"
|
||||||
|
" independent"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:56
|
||||||
|
msgid "JSON"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:56
|
||||||
|
msgid ""
|
||||||
|
"serialization of the document's attribute.\n"
|
||||||
|
" It is usually very quick and straightforward to "
|
||||||
|
"create a small plug-in for your preferred\n"
|
||||||
|
" application that will be capable of importing "
|
||||||
|
"any OpenERP EDI document.\n"
|
||||||
|
" You can find out more details about how to do "
|
||||||
|
"this and what the content of OpenERP EDI documents\n"
|
||||||
|
" is like in the"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:60
|
||||||
|
msgid "OpenERP documentation"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:61
|
||||||
|
msgid "To get started immediately,"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:62
|
||||||
|
msgid "see is all it takes to use this EDI document in Python"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:70
|
||||||
|
msgid "You can download the raw EDI document here:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:73
|
||||||
|
msgid "Download"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:87
|
||||||
|
msgid "Powered by"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi.xml:87
|
||||||
|
msgid "OpenERP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:34
|
||||||
|
msgid "Invoice"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:37
|
||||||
|
msgid "Description"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:38
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:41
|
||||||
|
msgid "Date"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:39
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:40
|
||||||
|
msgid "Your Reference"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:50
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:57
|
||||||
|
msgid "Product Description"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:51
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:58
|
||||||
|
msgid "Quantity"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:52
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:59
|
||||||
|
msgid "Unit Price"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:53
|
||||||
|
msgid "Discount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:54
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:61
|
||||||
|
msgid "Price"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:72
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:81
|
||||||
|
msgid "Net Total:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:83
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:92
|
||||||
|
msgid "Taxes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:94
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:103
|
||||||
|
msgid "Total:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:106
|
||||||
|
msgid "Tax"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:107
|
||||||
|
msgid "Base Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:108
|
||||||
|
msgid "Amount"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:121
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:113
|
||||||
|
msgid "Notes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:129
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:121
|
||||||
|
msgid "Pay Online"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:133
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:125
|
||||||
|
msgid "Paypal"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:135
|
||||||
|
msgid ""
|
||||||
|
"You may directly pay this invoice online via Paypal's secure payment gateway:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:145
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:137
|
||||||
|
msgid "Bank Wire Transfer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:147
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:139
|
||||||
|
msgid "Please transfer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:148
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:140
|
||||||
|
msgid "to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:149
|
||||||
|
msgid ""
|
||||||
|
"(postal address on the invoice header)\n"
|
||||||
|
" using one of the following bank accounts. Be sure to "
|
||||||
|
"mention the invoice\n"
|
||||||
|
" reference"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_account.xml:151
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:143
|
||||||
|
msgid "on the transfer:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:36
|
||||||
|
msgid "Order"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:42
|
||||||
|
msgid "Salesman"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:43
|
||||||
|
msgid "Payment terms"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:60
|
||||||
|
msgid "Discount(%)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:127
|
||||||
|
msgid ""
|
||||||
|
"You may directly pay this order online via Paypal's secure payment gateway:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/edi/static/src/xml/edi_sale_purchase.xml:141
|
||||||
|
msgid ""
|
||||||
|
"(postal address on the order header)\n"
|
||||||
|
" using one of the following bank accounts. Be sure to "
|
||||||
|
"mention the document\n"
|
||||||
|
" reference"
|
||||||
|
msgstr ""
|
|
@ -0,0 +1,711 @@
|
||||||
|
# Chinese (Traditional) translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
|
"PO-Revision-Date: 2012-08-30 10:19+0000\n"
|
||||||
|
"Last-Translator: Bonnie Duan <bonnie.duan@cenoq.com>\n"
|
||||||
|
"Language-Team: Cenoq Corp.\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Launchpad-Export-Date: 2012-08-31 04:56+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15887)\n"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,subtype:0
|
||||||
|
#: field:email_template.preview,subtype:0
|
||||||
|
msgid "Message type"
|
||||||
|
msgstr "訊息類型"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,report_name:0
|
||||||
|
#: field:email_template.preview,report_name:0
|
||||||
|
msgid "Report Filename"
|
||||||
|
msgstr "報表檔名"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid "SMTP Server"
|
||||||
|
msgstr "SMTP 伺服器"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid "Remove the sidebar button currently displayed on related documents"
|
||||||
|
msgstr "移除側邊欄按鈕目前顯示在相關的文件"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,ref_ir_act_window:0
|
||||||
|
#: field:email_template.preview,ref_ir_act_window:0
|
||||||
|
msgid "Sidebar action"
|
||||||
|
msgstr "側邊欄動作"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:mail.compose.message:0
|
||||||
|
msgid "Save as a new template"
|
||||||
|
msgstr "另存新的範本"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,subject:0
|
||||||
|
#: help:email_template.preview,subject:0
|
||||||
|
msgid "Subject (placeholders may be used here)"
|
||||||
|
msgstr "主旨 (佔位符可在這裡使用)"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,email_cc:0
|
||||||
|
#: help:email_template.preview,email_cc:0
|
||||||
|
msgid "Carbon copy recipients (placeholders may be used here)"
|
||||||
|
msgstr "副本收件人 (佔位符可在這裡使用)"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: selection:email.template,state:0
|
||||||
|
#: selection:email_template.preview,state:0
|
||||||
|
msgid "Received"
|
||||||
|
msgstr "收到"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
#: field:email.template,ref_ir_value:0
|
||||||
|
#: field:email_template.preview,ref_ir_value:0
|
||||||
|
msgid "Sidebar Button"
|
||||||
|
msgstr "側邊欄按鈕"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,report_name:0
|
||||||
|
#: help:email_template.preview,report_name:0
|
||||||
|
msgid ""
|
||||||
|
"Name to use for the generated report file (may contain placeholders)\n"
|
||||||
|
"The extension can be omitted and will then come from the report type."
|
||||||
|
msgstr ""
|
||||||
|
"產生的報表文件命名(可能包含佔位符)\n"
|
||||||
|
"可以省略分機號碼然後將會成為報表型態."
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid "Attach existing files"
|
||||||
|
msgstr "附加現有文件"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid "Email Content"
|
||||||
|
msgstr "郵件內容"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: selection:email.template,state:0
|
||||||
|
#: selection:email_template.preview,state:0
|
||||||
|
msgid "Cancelled"
|
||||||
|
msgstr "已取消"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,reply_to:0
|
||||||
|
#: field:email_template.preview,reply_to:0
|
||||||
|
msgid "Reply-To"
|
||||||
|
msgstr "回覆給"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,auto_delete:0
|
||||||
|
#: field:email_template.preview,auto_delete:0
|
||||||
|
msgid "Auto Delete"
|
||||||
|
msgstr "自動刪除"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: code:addons/email_template/email_template.py:218
|
||||||
|
#, python-format
|
||||||
|
msgid "Warning"
|
||||||
|
msgstr "警告"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: model:ir.model,name:email_template.model_res_partner
|
||||||
|
msgid "Partner"
|
||||||
|
msgstr "業務夥伴"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,subject:0
|
||||||
|
#: field:email_template.preview,subject:0
|
||||||
|
msgid "Subject"
|
||||||
|
msgstr "主旨"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,email_from:0
|
||||||
|
#: field:email_template.preview,email_from:0
|
||||||
|
msgid "From"
|
||||||
|
msgstr "從"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:mail.compose.message,template_id:0
|
||||||
|
msgid "Template"
|
||||||
|
msgstr "範本"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,partner_id:0
|
||||||
|
#: field:email_template.preview,partner_id:0
|
||||||
|
msgid "Related partner"
|
||||||
|
msgstr "相關的合作夥伴"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,sub_model_object_field:0
|
||||||
|
#: field:email_template.preview,sub_model_object_field:0
|
||||||
|
msgid "Sub-field"
|
||||||
|
msgstr "子欄位"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid ""
|
||||||
|
"Display a button in the sidebar of related documents to open a composition "
|
||||||
|
"wizard with this template"
|
||||||
|
msgstr "相關文件螢幕上的精靈列按鈕可打開這範本之精靈"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,state:0
|
||||||
|
#: field:email_template.preview,state:0
|
||||||
|
msgid "State"
|
||||||
|
msgstr "狀態"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: selection:email.template,state:0
|
||||||
|
#: selection:email_template.preview,state:0
|
||||||
|
msgid "Sent"
|
||||||
|
msgstr "傳送"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,subtype:0
|
||||||
|
#: help:email_template.preview,subtype:0
|
||||||
|
msgid ""
|
||||||
|
"Type of message, usually 'html' or 'plain', used to select plaintext or rich "
|
||||||
|
"text contents accordingly"
|
||||||
|
msgstr "訊息類型, 經常是'html'或'plain', 用於選擇 plaintext 或 rich text 做為內容"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: model:ir.model,name:email_template.model_mail_compose_message
|
||||||
|
msgid "Email composition wizard"
|
||||||
|
msgstr "電子郵件成分嚮導"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid "Dynamic Values Builder"
|
||||||
|
msgstr "建立動態值"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,res_id:0
|
||||||
|
msgid "Related Document ID"
|
||||||
|
msgstr "相關文件 ID"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,lang:0
|
||||||
|
#: field:email_template.preview,lang:0
|
||||||
|
msgid "Language Selection"
|
||||||
|
msgstr "語言選擇"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid "Advanced"
|
||||||
|
msgstr "提出"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,email_to:0
|
||||||
|
#: field:email_template.preview,email_to:0
|
||||||
|
msgid "To"
|
||||||
|
msgstr "給"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,model:0
|
||||||
|
#: field:email_template.preview,model:0
|
||||||
|
msgid "Related Document Model"
|
||||||
|
msgstr "相關文檔模型"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,model_object_field:0
|
||||||
|
#: help:email_template.preview,model_object_field:0
|
||||||
|
msgid ""
|
||||||
|
"Select target field from the related document model.\n"
|
||||||
|
"If it is a relationship field you will be able to select a target field at "
|
||||||
|
"the destination of the relationship."
|
||||||
|
msgstr ""
|
||||||
|
"從相關文件類型選擇目標\n"
|
||||||
|
"若它是關聯欄位,您就可以在這關聯關係中,取得這欄位"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid "Preview Template"
|
||||||
|
msgstr "預覽範本"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,null_value:0
|
||||||
|
#: field:email_template.preview,null_value:0
|
||||||
|
msgid "Null value"
|
||||||
|
msgstr "空值"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,sub_object:0
|
||||||
|
#: field:email_template.preview,sub_object:0
|
||||||
|
msgid "Sub-model"
|
||||||
|
msgstr "子類型"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,track_campaign_item:0
|
||||||
|
#: help:email_template.preview,track_campaign_item:0
|
||||||
|
msgid ""
|
||||||
|
"Enable this is you wish to include a special tracking marker in outgoing "
|
||||||
|
"emails so you can identify replies and link them back to the corresponding "
|
||||||
|
"resource record. This is useful for CRM leads for example"
|
||||||
|
msgstr "啟用,這是您希望包括一個特殊的追蹤電子郵件標記,這樣您就可以找出答覆並連接到相應的資源記錄。這是有用的,例如CRM的線索"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:mail.compose.message,use_template:0
|
||||||
|
msgid "Use Template"
|
||||||
|
msgstr "使用範本"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,attachment_ids:0
|
||||||
|
#: field:email_template.preview,attachment_ids:0
|
||||||
|
msgid "Files to attach"
|
||||||
|
msgstr "附加的文件"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid "Options"
|
||||||
|
msgstr "選項"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,model_id:0
|
||||||
|
#: field:email_template.preview,model_id:0
|
||||||
|
msgid "Related document model"
|
||||||
|
msgstr "相關文件類型"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,email_from:0
|
||||||
|
#: help:email_template.preview,email_from:0
|
||||||
|
msgid "Sender address (placeholders may be used here)"
|
||||||
|
msgstr "發信人地址(佔位符可以用在這)"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:res.partner,opt_out:0
|
||||||
|
msgid ""
|
||||||
|
"If checked, this partner will not receive any automated email notifications, "
|
||||||
|
"such as the availability of invoices."
|
||||||
|
msgstr "若勾選, 這個合作夥伴將不會收到任何自動郵件回復, 例如有效發票"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid "Note: This is Raw HTML."
|
||||||
|
msgstr "備註: 這是Raw HTML."
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid "Group by..."
|
||||||
|
msgstr "分類方式..."
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,user_signature:0
|
||||||
|
#: field:email_template.preview,user_signature:0
|
||||||
|
msgid "Add Signature"
|
||||||
|
msgstr "加入簽名"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,body_text:0
|
||||||
|
#: help:email_template.preview,body_text:0
|
||||||
|
msgid "Plaintext version of the message (placeholders may be used here)"
|
||||||
|
msgstr "Plaintext 消息版本(佔位符可以用在這)"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,original:0
|
||||||
|
#: help:email_template.preview,original:0
|
||||||
|
msgid "Original version of the message, as it was sent on the network"
|
||||||
|
msgstr "消息原始版本, 因為它是在網路上發送"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: code:addons/email_template/email_template.py:230
|
||||||
|
#, python-format
|
||||||
|
msgid "(copy)"
|
||||||
|
msgstr "(副本)"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: selection:email.template,state:0
|
||||||
|
#: selection:email_template.preview,state:0
|
||||||
|
msgid "Outgoing"
|
||||||
|
msgstr "外送"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:mail.compose.message:0
|
||||||
|
msgid "Use a message template"
|
||||||
|
msgstr "使用訊息範本"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,user_signature:0
|
||||||
|
#: help:email_template.preview,user_signature:0
|
||||||
|
msgid ""
|
||||||
|
"If checked, the user's signature will be appended to the text version of the "
|
||||||
|
"message"
|
||||||
|
msgstr "若勾選, 使用者的簽名將附加到郵件的文字版本"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
#: view:email_template.preview:0
|
||||||
|
msgid "Body (Rich/HTML)"
|
||||||
|
msgstr "內文 (Rich/HTML)"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,sub_object:0
|
||||||
|
#: help:email_template.preview,sub_object:0
|
||||||
|
msgid ""
|
||||||
|
"When a relationship field is selected as first field, this field shows the "
|
||||||
|
"document model the relationship goes to."
|
||||||
|
msgstr ""
|
||||||
|
"當這相關欄位是選為第一欄位, this field shows the document model the relationship goes to."
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: model:ir.model,name:email_template.model_email_template
|
||||||
|
msgid "Email Templates"
|
||||||
|
msgstr "郵件範本"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,date:0
|
||||||
|
#: field:email_template.preview,date:0
|
||||||
|
msgid "Date"
|
||||||
|
msgstr "日期"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: model:ir.actions.act_window,name:email_template.wizard_email_template_preview
|
||||||
|
msgid "Template Preview"
|
||||||
|
msgstr "預覽範本"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,message_id:0
|
||||||
|
#: field:email_template.preview,message_id:0
|
||||||
|
msgid "Message-Id"
|
||||||
|
msgstr "訊息-Id"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid "Add sidebar button"
|
||||||
|
msgstr "加入側邊欄按鈕"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
#: view:email_template.preview:0
|
||||||
|
msgid "Body (Text)"
|
||||||
|
msgstr "內文 (Text)"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid "Advanced Options"
|
||||||
|
msgstr "進階選項"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: code:addons/email_template/email_template.py:183
|
||||||
|
#, python-format
|
||||||
|
msgid "Send Mail (%s)"
|
||||||
|
msgstr "傳送郵件 (%s)"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,body_html:0
|
||||||
|
#: field:email_template.preview,body_html:0
|
||||||
|
msgid "Rich-text Contents"
|
||||||
|
msgstr "富文本內容"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,copyvalue:0
|
||||||
|
#: field:email_template.preview,copyvalue:0
|
||||||
|
msgid "Expression"
|
||||||
|
msgstr "表達"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,original:0
|
||||||
|
#: field:email_template.preview,original:0
|
||||||
|
msgid "Original"
|
||||||
|
msgstr "原作"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid "Addresses"
|
||||||
|
msgstr "地址"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,copyvalue:0
|
||||||
|
#: help:email_template.preview,copyvalue:0
|
||||||
|
msgid ""
|
||||||
|
"Final placeholder expression, to be copy-pasted in the desired template "
|
||||||
|
"field."
|
||||||
|
msgstr "最後的模板欄位,找到要複製-貼上的區塊"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid "Attachments"
|
||||||
|
msgstr "附件"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid "Email Details"
|
||||||
|
msgstr "郵件詳情"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,email_cc:0
|
||||||
|
#: field:email_template.preview,email_cc:0
|
||||||
|
msgid "Cc"
|
||||||
|
msgstr "副本"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,body_text:0
|
||||||
|
#: field:email_template.preview,body_text:0
|
||||||
|
msgid "Text Contents"
|
||||||
|
msgstr "文字內容"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,auto_delete:0
|
||||||
|
#: help:email_template.preview,auto_delete:0
|
||||||
|
msgid "Permanently delete this email after sending it, to save space"
|
||||||
|
msgstr "永久刪除已發送的郵件以節省空間"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,references:0
|
||||||
|
#: field:email_template.preview,references:0
|
||||||
|
msgid "References"
|
||||||
|
msgstr "參考"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,display_text:0
|
||||||
|
#: field:email_template.preview,display_text:0
|
||||||
|
msgid "Display Text"
|
||||||
|
msgstr "顯示文字"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email_template.preview:0
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "關閉"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,attachment_ids:0
|
||||||
|
#: help:email_template.preview,attachment_ids:0
|
||||||
|
msgid ""
|
||||||
|
"You may attach files to this template, to be added to all emails created "
|
||||||
|
"from this template"
|
||||||
|
msgstr "這個範本您可以加入附件, 從這範本新建所有郵件"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,headers:0
|
||||||
|
#: help:email_template.preview,headers:0
|
||||||
|
msgid ""
|
||||||
|
"Full message headers, e.g. SMTP session headers (usually available on "
|
||||||
|
"inbound messages only)"
|
||||||
|
msgstr "完整的郵件標題,例如僅SMTP會話頭(通常可在入站消息)"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,mail_server_id:0
|
||||||
|
#: field:email_template.preview,mail_server_id:0
|
||||||
|
msgid "Outgoing Mail Server"
|
||||||
|
msgstr "發送郵件伺服器"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,ref_ir_act_window:0
|
||||||
|
#: help:email_template.preview,ref_ir_act_window:0
|
||||||
|
msgid ""
|
||||||
|
"Sidebar action to make this template available on records of the related "
|
||||||
|
"document model"
|
||||||
|
msgstr "側邊欄動作使這個範本記錄相關的文件類型"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,model_object_field:0
|
||||||
|
#: field:email_template.preview,model_object_field:0
|
||||||
|
msgid "Field"
|
||||||
|
msgstr "欄位"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,user_id:0
|
||||||
|
#: field:email_template.preview,user_id:0
|
||||||
|
msgid "Related user"
|
||||||
|
msgstr "相關使用者"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
#: model:ir.actions.act_window,name:email_template.action_email_template_tree_all
|
||||||
|
#: model:ir.ui.menu,name:email_template.menu_email_templates
|
||||||
|
msgid "Templates"
|
||||||
|
msgstr "範本"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:res.partner,opt_out:0
|
||||||
|
msgid "Opt-Out"
|
||||||
|
msgstr "不參加"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,email_bcc:0
|
||||||
|
#: help:email_template.preview,email_bcc:0
|
||||||
|
msgid "Blind carbon copy recipients (placeholders may be used here)"
|
||||||
|
msgstr "密件副本收件人(佔位符可以用在這裡)"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,lang:0
|
||||||
|
#: help:email_template.preview,lang:0
|
||||||
|
msgid ""
|
||||||
|
"Optional translation language (ISO code) to select when sending out an "
|
||||||
|
"email. If not set, the english version will be used. This should usually be "
|
||||||
|
"a placeholder expression that provides the appropriate language code, e.g. "
|
||||||
|
"${object.partner_id.lang.code}."
|
||||||
|
msgstr ""
|
||||||
|
"選擇翻譯語言(ISO代碼)選擇發送電子郵件時。如果沒有設置,將使用英文版本。通常,這應該是一個佔位符,表達式,提供適當的語言代碼,例如$ "
|
||||||
|
"{object.partner_id.lang.code}。"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email_template.preview,res_id:0
|
||||||
|
msgid "Sample Document"
|
||||||
|
msgstr "文件範本"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,email_to:0
|
||||||
|
#: help:email_template.preview,email_to:0
|
||||||
|
msgid "Comma-separated recipient addresses (placeholders may be used here)"
|
||||||
|
msgstr "逗號分隔的收件人地址(佔位符可以用在這裡)"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,name:0
|
||||||
|
#: field:email_template.preview,name:0
|
||||||
|
msgid "Name"
|
||||||
|
msgstr "名稱"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,track_campaign_item:0
|
||||||
|
#: field:email_template.preview,track_campaign_item:0
|
||||||
|
msgid "Resource Tracking"
|
||||||
|
msgstr "資源追蹤"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: model:ir.model,name:email_template.model_email_template_preview
|
||||||
|
msgid "Email Template Preview"
|
||||||
|
msgstr "預覽郵件範本"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email_template.preview:0
|
||||||
|
msgid "Email Preview"
|
||||||
|
msgstr "預覽郵件"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,message_id:0
|
||||||
|
#: help:email_template.preview,message_id:0
|
||||||
|
msgid ""
|
||||||
|
"Message-ID SMTP header to use in outgoing messages based on this template. "
|
||||||
|
"Please note that this overrides the 'Resource Tracking' option, so if you "
|
||||||
|
"simply need to track replies to outgoing emails, enable that option "
|
||||||
|
"instead.\n"
|
||||||
|
"Placeholders must be used here, as this value always needs to be unique!"
|
||||||
|
msgstr ""
|
||||||
|
"消息ID SMTP頭使用在基於此模板的傳出消息。請注意,這將覆蓋'資源追蹤'選項,所以如果您只需要跟蹤答覆外發郵件,啟用該選項。\n"
|
||||||
|
"佔位符必須用在這裡,這個值永遠必須是唯一的!"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,headers:0
|
||||||
|
#: field:email_template.preview,headers:0
|
||||||
|
msgid "Message headers"
|
||||||
|
msgstr "訊息頂端"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,email_bcc:0
|
||||||
|
#: field:email_template.preview,email_bcc:0
|
||||||
|
msgid "Bcc"
|
||||||
|
msgstr "密件副本收件人"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,reply_to:0
|
||||||
|
#: help:email_template.preview,reply_to:0
|
||||||
|
msgid "Preferred response address (placeholders may be used here)"
|
||||||
|
msgstr "首選的回覆地址(佔位符可以用在這裡)"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid "Remove sidebar button"
|
||||||
|
msgstr "移動側邊欄按鈕"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,null_value:0
|
||||||
|
#: help:email_template.preview,null_value:0
|
||||||
|
msgid "Optional value to use if the target field is empty"
|
||||||
|
msgstr "若欄位是空的需選擇使用值"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid "Model"
|
||||||
|
msgstr "型號"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,references:0
|
||||||
|
#: help:email_template.preview,references:0
|
||||||
|
msgid "Message references, such as identifiers of previous messages"
|
||||||
|
msgstr "消息引用,如以前的消息標識符"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,ref_ir_value:0
|
||||||
|
#: help:email_template.preview,ref_ir_value:0
|
||||||
|
msgid "Sidebar button to open the sidebar action"
|
||||||
|
msgstr "側邊欄按鈕來打開側邊欄動作"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: constraint:res.partner:0
|
||||||
|
msgid "Error ! You cannot create recursive associated members."
|
||||||
|
msgstr "錯誤 ! 您不行建立相關成員"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: code:addons/email_template/email_template.py:218
|
||||||
|
#, python-format
|
||||||
|
msgid "Deletion of the action record failed."
|
||||||
|
msgstr "刪除的動作記錄失敗"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,mail_server_id:0
|
||||||
|
#: help:email_template.preview,mail_server_id:0
|
||||||
|
msgid ""
|
||||||
|
"Optional preferred server for outgoing mails. If not set, the highest "
|
||||||
|
"priority one will be used."
|
||||||
|
msgstr "可選擇伺服器發送的郵件。如果沒有設置,優先級最高的將被使用。"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: selection:email.template,state:0
|
||||||
|
#: selection:email_template.preview,state:0
|
||||||
|
msgid "Delivery Failed"
|
||||||
|
msgstr "傳送失敗"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,sub_model_object_field:0
|
||||||
|
#: help:email_template.preview,sub_model_object_field:0
|
||||||
|
msgid ""
|
||||||
|
"When a relationship field is selected as first field, this field lets you "
|
||||||
|
"select the target field within the destination document model (sub-model)."
|
||||||
|
msgstr "當相關欄位已被選擇為第一欄位, 這欄位,讓您選擇目標欄位內的目標文件類型(子類型型)。"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: view:email.template:0
|
||||||
|
msgid "Attach Report"
|
||||||
|
msgstr "附加報表"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: field:email.template,report_template:0
|
||||||
|
#: field:email_template.preview,report_template:0
|
||||||
|
msgid "Optional report to print and attach"
|
||||||
|
msgstr "選擇報表列印與附加"
|
||||||
|
|
||||||
|
#. module: email_template
|
||||||
|
#: help:email.template,body_html:0
|
||||||
|
#: help:email_template.preview,body_html:0
|
||||||
|
msgid "Rich-text/HTML version of the message (placeholders may be used here)"
|
||||||
|
msgstr "Rich-text/HTML版本的消息(佔位符可以用在這裡)"
|
||||||
|
|
||||||
|
#~ msgid "Sidebar button"
|
||||||
|
#~ msgstr "側邊欄按鈕"
|
||||||
|
|
||||||
|
#~ msgid "E-mail composition wizard"
|
||||||
|
#~ msgstr "郵件合併精靈"
|
||||||
|
|
||||||
|
#~ msgid "Related Document model"
|
||||||
|
#~ msgstr "相關文件類型"
|
||||||
|
|
||||||
|
#~ msgid "Rich-text contents"
|
||||||
|
#~ msgstr "豐富的文字內容"
|
||||||
|
|
||||||
|
#~ msgid "Text contents"
|
||||||
|
#~ msgstr "文字內容"
|
||||||
|
|
||||||
|
#~ msgid "Opt-out"
|
||||||
|
#~ msgstr "退出選擇"
|
File diff suppressed because it is too large
Load Diff
|
@ -13,8 +13,8 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-08-30 05:12+0000\n"
|
"X-Launchpad-Export-Date: 2012-08-31 04:56+0000\n"
|
||||||
"X-Generator: Launchpad (build 15864)\n"
|
"X-Generator: Launchpad (build 15887)\n"
|
||||||
|
|
||||||
#. module: event_project
|
#. module: event_project
|
||||||
#: model:ir.model,name:event_project.model_event_project
|
#: model:ir.model,name:event_project.model_event_project
|
||||||
|
|
|
@ -3,7 +3,7 @@ var _t = instance.web._t;
|
||||||
|
|
||||||
instance.web.Sidebar = instance.web.Sidebar.extend({
|
instance.web.Sidebar = instance.web.Sidebar.extend({
|
||||||
on_attachments_loaded: function(attachments) {
|
on_attachments_loaded: function(attachments) {
|
||||||
self = this
|
var self = this;
|
||||||
self._super(attachments);
|
self._super(attachments);
|
||||||
// if attachment contains a google doc url do nothing
|
// if attachment contains a google doc url do nothing
|
||||||
// else display a button to create a google doc
|
// else display a button to create a google doc
|
||||||
|
|
|
@ -25,6 +25,7 @@ import datetime, time
|
||||||
from itertools import groupby
|
from itertools import groupby
|
||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
|
|
||||||
|
import math
|
||||||
import netsvc
|
import netsvc
|
||||||
from osv import fields, osv
|
from osv import fields, osv
|
||||||
from tools.translate import _
|
from tools.translate import _
|
||||||
|
@ -112,7 +113,7 @@ class hr_holidays(osv.osv):
|
||||||
return result
|
return result
|
||||||
|
|
||||||
_columns = {
|
_columns = {
|
||||||
'name': fields.char('Description', required=True, size=64),
|
'name': fields.char('Description', size=64),
|
||||||
'state': fields.selection([('draft', 'To Submit'), ('cancel', 'Cancelled'),('confirm', 'To Approve'), ('refuse', 'Refused'), ('validate1', 'Second Approval'), ('validate', 'Approved')],
|
'state': fields.selection([('draft', 'To Submit'), ('cancel', 'Cancelled'),('confirm', 'To Approve'), ('refuse', 'Refused'), ('validate1', 'Second Approval'), ('validate', 'Approved')],
|
||||||
'State', readonly=True, help='The state is set to \'To Submit\', when a holiday request is created.\
|
'State', readonly=True, help='The state is set to \'To Submit\', when a holiday request is created.\
|
||||||
\nThe state is \'To Approve\', when holiday request is confirmed by user.\
|
\nThe state is \'To Approve\', when holiday request is confirmed by user.\
|
||||||
|
@ -123,8 +124,6 @@ class hr_holidays(osv.osv):
|
||||||
'date_to': fields.datetime('End Date', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
|
'date_to': fields.datetime('End Date', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
|
||||||
'holiday_status_id': fields.many2one("hr.holidays.status", "Leave Type", required=True,readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
|
'holiday_status_id': fields.many2one("hr.holidays.status", "Leave Type", required=True,readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
|
||||||
'employee_id': fields.many2one('hr.employee', "Employee", select=True, invisible=False, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}, help='Leave Manager can let this field empty if this leave request/allocation is for every employee'),
|
'employee_id': fields.many2one('hr.employee', "Employee", select=True, invisible=False, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}, help='Leave Manager can let this field empty if this leave request/allocation is for every employee'),
|
||||||
#'manager_id': fields.many2one('hr.employee', 'Leave Manager', invisible=False, readonly=True, help='This area is automatically filled by the user who validate the leave'),
|
|
||||||
#'notes': fields.text('Notes',readonly=True, states={'draft':[('readonly',False)]}),
|
|
||||||
'manager_id': fields.many2one('hr.employee', 'First Approval', invisible=False, readonly=True, help='This area is automatically filled by the user who validate the leave'),
|
'manager_id': fields.many2one('hr.employee', 'First Approval', invisible=False, readonly=True, help='This area is automatically filled by the user who validate the leave'),
|
||||||
'notes': fields.text('Reasons',readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
|
'notes': fields.text('Reasons',readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
|
||||||
'number_of_days_temp': fields.float('Number of Days', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
|
'number_of_days_temp': fields.float('Number of Days', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
|
||||||
|
@ -134,8 +133,8 @@ class hr_holidays(osv.osv):
|
||||||
'parent_id': fields.many2one('hr.holidays', 'Parent'),
|
'parent_id': fields.many2one('hr.holidays', 'Parent'),
|
||||||
'linked_request_ids': fields.one2many('hr.holidays', 'parent_id', 'Linked Requests',),
|
'linked_request_ids': fields.one2many('hr.holidays', 'parent_id', 'Linked Requests',),
|
||||||
'department_id':fields.related('employee_id', 'department_id', string='Department', type='many2one', relation='hr.department', readonly=True, store=True),
|
'department_id':fields.related('employee_id', 'department_id', string='Department', type='many2one', relation='hr.department', readonly=True, store=True),
|
||||||
'category_id': fields.many2one('hr.employee.category', "Category", help='Category of Employee'),
|
'category_id': fields.many2one('hr.employee.category', "Category", help='Category of Employee', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
|
||||||
'holiday_type': fields.selection([('employee','By Employee'),('category','By Employee Category')], 'Allocation Type', help='By Employee: Allocation/Request for individual Employee, By Employee Category: Allocation/Request for group of employees in category', required=True),
|
'holiday_type': fields.selection([('employee','By Employee'),('category','By Employee Category')], 'Allocation Mode', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}, help='By Employee: Allocation/Request for individual Employee, By Employee Category: Allocation/Request for group of employees in category', required=True),
|
||||||
'manager_id2': fields.many2one('hr.employee', 'Second Approval', readonly=True, help='This area is automaticly filled by the user who validate the leave with second level (If Leave type need second validation)'),
|
'manager_id2': fields.many2one('hr.employee', 'Second Approval', readonly=True, help='This area is automaticly filled by the user who validate the leave with second level (If Leave type need second validation)'),
|
||||||
'double_validation': fields.related('holiday_status_id', 'double_validation', type='boolean', relation='hr.holidays.status', string='Apply Double Validation'),
|
'double_validation': fields.related('holiday_status_id', 'double_validation', type='boolean', relation='hr.holidays.status', string='Apply Double Validation'),
|
||||||
}
|
}
|
||||||
|
@ -147,16 +146,11 @@ class hr_holidays(osv.osv):
|
||||||
'holiday_type': 'employee'
|
'holiday_type': 'employee'
|
||||||
}
|
}
|
||||||
_sql_constraints = [
|
_sql_constraints = [
|
||||||
('type_value', "CHECK( (holiday_type='employee' AND employee_id IS NOT NULL) or (holiday_type='category' AND category_id IS NOT NULL))", "You have to select an employee or a category."),
|
('type_value', "CHECK( (holiday_type='employee' AND employee_id IS NOT NULL) or (holiday_type='category' AND category_id IS NOT NULL))", "The employee or employee category of this request is missing."),
|
||||||
('date_check2', "CHECK ( (type='add') OR (date_from <= date_to))", "The start date must be before the end date !"),
|
('date_check2', "CHECK ( (type='add') OR (date_from <= date_to))", "The start date must be before the end date !"),
|
||||||
('date_check', "CHECK ( number_of_days_temp >= 0 )", "The number of days must be greater than 0 !"),
|
('date_check', "CHECK ( number_of_days_temp >= 0 )", "The number of days must be greater than 0 !"),
|
||||||
]
|
]
|
||||||
|
|
||||||
def create(self, cr, uid, vals, context=None):
|
|
||||||
obj_id = super(hr_holidays, self).create(cr, uid, vals, context=context)
|
|
||||||
self.create_notificate(cr, uid, [obj_id], context=context)
|
|
||||||
return obj_id
|
|
||||||
|
|
||||||
def _create_resource_leave(self, cr, uid, leaves, context=None):
|
def _create_resource_leave(self, cr, uid, leaves, context=None):
|
||||||
'''This method will create entry in resource calendar leave object at the time of holidays validated '''
|
'''This method will create entry in resource calendar leave object at the time of holidays validated '''
|
||||||
obj_res_leave = self.pool.get('resource.calendar.leaves')
|
obj_res_leave = self.pool.get('resource.calendar.leaves')
|
||||||
|
@ -201,8 +195,8 @@ class hr_holidays(osv.osv):
|
||||||
|
|
||||||
def unlink(self, cr, uid, ids, context=None):
|
def unlink(self, cr, uid, ids, context=None):
|
||||||
for rec in self.browse(cr, uid, ids, context=context):
|
for rec in self.browse(cr, uid, ids, context=context):
|
||||||
if rec.state<>'draft':
|
if rec.state not in ['draft', 'cancel', 'confirm']:
|
||||||
raise osv.except_osv(_('Warning!'),_('You cannot delete a leave which is not in draft state !'))
|
raise osv.except_osv(_('Warning!'),_('You cannot delete a leave which is in %s state!')%(rec.state))
|
||||||
return super(hr_holidays, self).unlink(cr, uid, ids, context)
|
return super(hr_holidays, self).unlink(cr, uid, ids, context)
|
||||||
|
|
||||||
def onchange_date_from(self, cr, uid, ids, date_to, date_from):
|
def onchange_date_from(self, cr, uid, ids, date_to, date_from):
|
||||||
|
@ -210,7 +204,7 @@ class hr_holidays(osv.osv):
|
||||||
if date_to and date_from:
|
if date_to and date_from:
|
||||||
diff_day = self._get_number_of_days(date_from, date_to)
|
diff_day = self._get_number_of_days(date_from, date_to)
|
||||||
result['value'] = {
|
result['value'] = {
|
||||||
'number_of_days_temp': round(diff_day)+1
|
'number_of_days_temp': round(math.floor(diff_day))+1
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
result['value'] = {
|
result['value'] = {
|
||||||
|
@ -244,29 +238,30 @@ class hr_holidays(osv.osv):
|
||||||
self.unlink(cr, uid, to_unlink, context=context)
|
self.unlink(cr, uid, to_unlink, context=context)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def holidays_validate(self, cr, uid, ids, context=None):
|
def holidays_first_validate(self, cr, uid, ids, context=None):
|
||||||
self.check_holidays(cr, uid, ids, context=context)
|
self.check_holidays(cr, uid, ids, context=context)
|
||||||
obj_emp = self.pool.get('hr.employee')
|
obj_emp = self.pool.get('hr.employee')
|
||||||
ids2 = obj_emp.search(cr, uid, [('user_id', '=', uid)])
|
ids2 = obj_emp.search(cr, uid, [('user_id', '=', uid)])
|
||||||
manager = ids2 and ids2[0] or False
|
manager = ids2 and ids2[0] or False
|
||||||
self.holidays_validate_notificate(cr, uid, ids, context=context)
|
self.holidays_first_validate_notificate(cr, uid, ids, context=context)
|
||||||
return self.write(cr, uid, ids, {'state':'validate1', 'manager_id': manager})
|
return self.write(cr, uid, ids, {'state':'validate1', 'manager_id': manager})
|
||||||
|
|
||||||
def holidays_validate2(self, cr, uid, ids, context=None):
|
def holidays_validate(self, cr, uid, ids, context=None):
|
||||||
self.check_holidays(cr, uid, ids, context=context)
|
self.check_holidays(cr, uid, ids, context=context)
|
||||||
obj_emp = self.pool.get('hr.employee')
|
obj_emp = self.pool.get('hr.employee')
|
||||||
ids2 = obj_emp.search(cr, uid, [('user_id', '=', uid)])
|
ids2 = obj_emp.search(cr, uid, [('user_id', '=', uid)])
|
||||||
manager = ids2 and ids2[0] or False
|
manager = ids2 and ids2[0] or False
|
||||||
self.write(cr, uid, ids, {'state':'validate'})
|
self.write(cr, uid, ids, {'state':'validate'})
|
||||||
data_holiday = self.browse(cr, uid, ids)
|
data_holiday = self.browse(cr, uid, ids)
|
||||||
holiday_ids = []
|
|
||||||
for record in data_holiday:
|
for record in data_holiday:
|
||||||
if record.holiday_status_id.double_validation:
|
if record.double_validation:
|
||||||
holiday_ids.append(record.id)
|
self.write(cr, uid, [record.id], {'manager_id2': manager})
|
||||||
|
else:
|
||||||
|
self.write(cr, uid, [record.id], {'manager_id': manager})
|
||||||
if record.holiday_type == 'employee' and record.type == 'remove':
|
if record.holiday_type == 'employee' and record.type == 'remove':
|
||||||
meeting_obj = self.pool.get('crm.meeting')
|
meeting_obj = self.pool.get('crm.meeting')
|
||||||
meeting_vals = {
|
meeting_vals = {
|
||||||
'name': record.name,
|
'name': record.name or _('Leave Request'),
|
||||||
'categ_ids': record.holiday_status_id.categ_id and [(6,0,[record.holiday_status_id.categ_id.id])] or [],
|
'categ_ids': record.holiday_status_id.categ_id and [(6,0,[record.holiday_status_id.categ_id.id])] or [],
|
||||||
'duration': record.number_of_days_temp * 8,
|
'duration': record.number_of_days_temp * 8,
|
||||||
'description': record.notes,
|
'description': record.notes,
|
||||||
|
@ -301,25 +296,27 @@ class hr_holidays(osv.osv):
|
||||||
wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'confirm', cr)
|
wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'confirm', cr)
|
||||||
wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'validate', cr)
|
wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'validate', cr)
|
||||||
wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'second_validate', cr)
|
wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'second_validate', cr)
|
||||||
if holiday_ids:
|
self.holidays_validate_notificate(cr, uid, ids, context=context)
|
||||||
self.holidays_valid2_notificate(cr, uid, holiday_ids, context=context)
|
|
||||||
self.write(cr, uid, holiday_ids, {'manager_id2': manager})
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def holidays_confirm(self, cr, uid, ids, context=None):
|
def holidays_confirm(self, cr, uid, ids, context=None):
|
||||||
self.check_holidays(cr, uid, ids, context=context)
|
self.check_holidays(cr, uid, ids, context=context)
|
||||||
|
for record in self.browse(cr, uid, ids, context=context):
|
||||||
|
if record.employee_id and record.employee_id.parent_id and record.employee_id.parent_id.user_id:
|
||||||
|
self.message_subscribe(cr, uid, [record.id], user_ids=[record.employee_id.parent_id.user_id.id], context=context)
|
||||||
self.holidays_confirm_notificate(cr, uid, ids, context=context)
|
self.holidays_confirm_notificate(cr, uid, ids, context=context)
|
||||||
return self.write(cr, uid, ids, {'state':'confirm'})
|
return self.write(cr, uid, ids, {'state':'confirm'})
|
||||||
|
|
||||||
def holidays_refuse(self, cr, uid, ids, approval, context=None):
|
def holidays_refuse(self, cr, uid, ids, context=None):
|
||||||
obj_emp = self.pool.get('hr.employee')
|
obj_emp = self.pool.get('hr.employee')
|
||||||
ids2 = obj_emp.search(cr, uid, [('user_id', '=', uid)])
|
ids2 = obj_emp.search(cr, uid, [('user_id', '=', uid)])
|
||||||
manager = ids2 and ids2[0] or False
|
manager = ids2 and ids2[0] or False
|
||||||
if approval == 'first_approval':
|
for holiday in self.browse(cr, uid, ids, context=context):
|
||||||
self.write(cr, uid, ids, {'state': 'refuse', 'manager_id': manager})
|
if holiday.state == 'validate1':
|
||||||
|
self.write(cr, uid, [holiday.id], {'state': 'refuse', 'manager_id': manager})
|
||||||
else:
|
else:
|
||||||
self.write(cr, uid, ids, {'state': 'refuse', 'manager_id2': manager})
|
self.write(cr, uid, [holiday.id], {'state': 'refuse', 'manager_id2': manager})
|
||||||
self.holidays_refuse_notificate(cr, uid, ids, approval, context=context)
|
self.holidays_refuse_notificate(cr, uid, ids, context=context)
|
||||||
self.holidays_cancel(cr, uid, ids, context=context)
|
self.holidays_cancel(cr, uid, ids, context=context)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -333,7 +330,7 @@ class hr_holidays(osv.osv):
|
||||||
# If a category that created several holidays, cancel all related
|
# If a category that created several holidays, cancel all related
|
||||||
wf_service = netsvc.LocalService("workflow")
|
wf_service = netsvc.LocalService("workflow")
|
||||||
for request in record.linked_request_ids or []:
|
for request in record.linked_request_ids or []:
|
||||||
wf_service.trg_validate(uid, 'hr.holidays', request.id, 'cancel', cr)
|
wf_service.trg_validate(uid, 'hr.holidays', request.id, 'refuse', cr)
|
||||||
|
|
||||||
self._remove_resource_leave(cr, uid, ids, context=context)
|
self._remove_resource_leave(cr, uid, ids, context=context)
|
||||||
return True
|
return True
|
||||||
|
@ -355,7 +352,7 @@ class hr_holidays(osv.osv):
|
||||||
def get_needaction_user_ids(self, cr, uid, ids, context=None):
|
def get_needaction_user_ids(self, cr, uid, ids, context=None):
|
||||||
result = super(hr_holidays, self).get_needaction_user_ids(cr, uid, ids, context=context)
|
result = super(hr_holidays, self).get_needaction_user_ids(cr, uid, ids, context=context)
|
||||||
for obj in self.browse(cr, uid, ids, context=context):
|
for obj in self.browse(cr, uid, ids, context=context):
|
||||||
if obj.state == 'confirm' and obj.employee_id.parent_id:
|
if obj.state == 'confirm' and obj.holiday_type == 'employee' and obj.employee_id.parent_id:
|
||||||
result[obj.id] = [obj.employee_id.parent_id.user_id.id]
|
result[obj.id] = [obj.employee_id.parent_id.user_id.id]
|
||||||
elif obj.state == 'validate1':
|
elif obj.state == 'validate1':
|
||||||
# get group_hr_manager: everyone will be warned of second validation
|
# get group_hr_manager: everyone will be warned of second validation
|
||||||
|
@ -369,44 +366,38 @@ class hr_holidays(osv.osv):
|
||||||
def message_get_monitored_follower_fields(self, cr, uid, ids, context=None):
|
def message_get_monitored_follower_fields(self, cr, uid, ids, context=None):
|
||||||
""" Add 'user_id' and 'manager' to the monitored fields """
|
""" Add 'user_id' and 'manager' to the monitored fields """
|
||||||
res = super(hr_holidays, self).message_get_monitored_follower_fields(cr, uid, ids, context=context)
|
res = super(hr_holidays, self).message_get_monitored_follower_fields(cr, uid, ids, context=context)
|
||||||
# TODO: add manager
|
|
||||||
return res + ['user_id']
|
return res + ['user_id']
|
||||||
|
|
||||||
def create_notificate(self, cr, uid, ids, context=None):
|
def create_notificate(self, cr, uid, ids, context=None):
|
||||||
for obj in self.browse(cr, uid, ids, context=context):
|
for obj in self.browse(cr, uid, ids, context=context):
|
||||||
self.message_append_note(cr, uid, ids, _('System notification'),
|
self.message_append_note(cr, uid, ids, _('System notification'),
|
||||||
_("The %s request has been <b>created</b> and is waiting confirmation.")
|
_("The request has been <b>created</b> and is waiting confirmation."), type='notification', context=context)
|
||||||
% ('leave' if obj.type == 'remove' else 'allocation',), type='notification', context=context)
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def holidays_confirm_notificate(self, cr, uid, ids, context=None):
|
def holidays_confirm_notificate(self, cr, uid, ids, context=None):
|
||||||
for obj in self.browse(cr, uid, ids):
|
for obj in self.browse(cr, uid, ids):
|
||||||
self.message_append_note(cr, uid, [obj.id], _('System notification'),
|
self.message_append_note(cr, uid, [obj.id], _('System notification'),
|
||||||
_("The %s request has been <b>confirmed</b> and is waiting for validation by the manager.")
|
_("The request has been <b>submitted</b> and is waiting for validation by the manager."), type='notification')
|
||||||
% ('leave' if obj.type == 'remove' else 'allocation',), type='notification')
|
|
||||||
|
def holidays_first_validate_notificate(self, cr, uid, ids, context=None):
|
||||||
|
for obj in self.browse(cr, uid, ids, context=context):
|
||||||
|
self.message_append_note(cr, uid, [obj.id], _('System notification'),
|
||||||
|
_("The request has been <b>approved</b>. A second validation is necessary and is now pending."), type='notification', context=context)
|
||||||
|
|
||||||
def holidays_validate_notificate(self, cr, uid, ids, context=None):
|
def holidays_validate_notificate(self, cr, uid, ids, context=None):
|
||||||
for obj in self.browse(cr, uid, ids):
|
for obj in self.browse(cr, uid, ids):
|
||||||
if obj.holiday_status_id.double_validation:
|
if obj.double_validation:
|
||||||
self.message_append_note(cr, uid, [obj.id], _('System notification'),
|
self.message_append_note(cr, uid, [obj.id], _('System notification'),
|
||||||
_("The %s request has been <b>approved</b>. A second validation is necessary and is now pending.")
|
_("The request has been <b>double validated</b>. The validation process is now over."), type='notification', context=context)
|
||||||
% ('leave' if obj.type == 'remove' else 'allocation',), type='notification', context=context)
|
|
||||||
else:
|
else:
|
||||||
self.message_append_note(cr, uid, [obj.id], _('System notification'),
|
self.message_append_note(cr, uid, [obj.id], _('System notification'),
|
||||||
_("The %s request has been <b>approved</b>. The validation process is now over.")
|
_("The request has been <b>approved</b>. The validation process is now over."), type='notification', context=context)
|
||||||
% ('leave' if obj.type == 'remove' else 'allocation',), type='notification', context=context)
|
|
||||||
|
|
||||||
def holidays_valid2_notificate(self, cr, uid, ids, context=None):
|
|
||||||
|
def holidays_refuse_notificate(self, cr, uid, ids, context=None):
|
||||||
for obj in self.browse(cr, uid, ids):
|
for obj in self.browse(cr, uid, ids):
|
||||||
self.message_append_note(cr, uid, [obj.id], _('System notification'),
|
self.message_append_note(cr, uid, [obj.id], _('System notification'),
|
||||||
_("The %s request has been <b>double validated</b>. The validation process is now over.")
|
_("The request has been <b>refused</b>. The validation process is now over."), type='notification', context=context)
|
||||||
% ('leave' if obj.type == 'remove' else 'allocation',), type='notification', context=context)
|
|
||||||
|
|
||||||
def holidays_refuse_notificate(self, cr, uid, ids, approval, context=None):
|
|
||||||
for obj in self.browse(cr, uid, ids):
|
|
||||||
self.message_append_note(cr, uid, [obj.id], _('System notification'),
|
|
||||||
_("The %s request has been <b>refused</b>. The validation process is now over.")
|
|
||||||
% ('leave' if obj.type == 'remove' else 'allocation',), type='notification', context=context)
|
|
||||||
|
|
||||||
hr_holidays()
|
hr_holidays()
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
<record model="hr.holidays" id="hr_holidays_employee1_cl">
|
<record model="hr.holidays" id="hr_holidays_employee1_cl">
|
||||||
<field name="name">Trip with Family</field>
|
<field name="name">Trip with Family</field>
|
||||||
<field name="holiday_status_id" ref="holiday_status_cl"/>
|
<field name="holiday_status_id" ref="holiday_status_comp"/>
|
||||||
<field eval="time.strftime('%Y-%m-01')" name="date_from"/>
|
<field eval="time.strftime('%Y-%m-01')" name="date_from"/>
|
||||||
<field eval="time.strftime('%Y-%m-03')" name="date_to"/>
|
<field eval="time.strftime('%Y-%m-03')" name="date_to"/>
|
||||||
<field name="type">remove</field>
|
<field name="type">remove</field>
|
||||||
|
@ -52,13 +52,10 @@
|
||||||
<field name="employee_id" ref="hr.employee_fp"/>
|
<field name="employee_id" ref="hr.employee_fp"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<workflow action="confirm" model="hr.holidays" ref="hr_holidays_employee1_allocation_cl"/>
|
|
||||||
<workflow action="validate" model="hr.holidays" ref="hr_holidays_employee1_allocation_cl"/>
|
<workflow action="validate" model="hr.holidays" ref="hr_holidays_employee1_allocation_cl"/>
|
||||||
|
|
||||||
<workflow action="confirm" model="hr.holidays" ref="hr_holidays_employee1_sl"/>
|
|
||||||
<workflow action="validate" model="hr.holidays" ref="hr_holidays_employee1_sl"/>
|
<workflow action="validate" model="hr.holidays" ref="hr_holidays_employee1_sl"/>
|
||||||
|
|
||||||
<workflow action="confirm" model="hr.holidays" ref="hr_holidays_employee1_int_tour"/>
|
|
||||||
<workflow action="validate" model="hr.holidays" ref="hr_holidays_employee1_int_tour"/>
|
<workflow action="validate" model="hr.holidays" ref="hr_holidays_employee1_int_tour"/>
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</openerp>
|
||||||
|
|
|
@ -91,49 +91,35 @@
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form string="Leave Request" version="7.0">
|
<form string="Leave Request" version="7.0">
|
||||||
<header>
|
<header>
|
||||||
<button string="Submit to Manager" name="confirm" states="draft" type="workflow" class="oe_highlight"/>
|
|
||||||
<button string="Approve" name="validate" states="confirm" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
|
<button string="Approve" name="validate" states="confirm" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
|
||||||
<button string="Validate" name="second_validate" states="validate1" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
|
<button string="Validate" name="second_validate" states="validate1" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
|
||||||
<button string="Refuse" name="refuse" states="confirm,validate1" type="workflow" groups="base.group_hr_user,base.group_hr_manager" class="oe_highlight"/>
|
<button string="Refuse" name="refuse" states="confirm,validate1,validate" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
|
||||||
<button string="Reset to New" name="set_to_draft" states="refuse,validate" type="object" groups="base.group_hr_user" />
|
<button string="Reset to New" name="set_to_draft" states="refuse" type="object" groups="base.group_hr_user" />
|
||||||
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,validate" statusbar_colors='{"confirm":"blue","validate1":"blue","refuse":"red"}'/>
|
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,validate" statusbar_colors='{"confirm":"blue","validate1":"blue","refuse":"red"}'/>
|
||||||
</header>
|
</header>
|
||||||
<sheet string="Leave Request">
|
<sheet string="Leave Request">
|
||||||
<group>
|
<group>
|
||||||
<group>
|
<group>
|
||||||
<field name="name" attrs="{'readonly':[('state','!=','draft'),('state','!=','confirm')]}"/>
|
<field name="name" attrs="{'readonly':[('state','!=','draft'),('state','!=','confirm')]}"/>
|
||||||
<field name="holiday_type" on_change="onchange_type(holiday_type)" attrs="{'readonly':[('state','!=','draft')]}" width="130" string="Mode" groups="base.group_hr_user"/>
|
|
||||||
<field name="employee_id" attrs="{'required':[('holiday_type','=','employee')],'invisible':[('holiday_type','=','category')]}" groups="base.group_hr_user"/>
|
|
||||||
<field name="category_id" attrs="{'required':[('holiday_type','=','category')], 'invisible':[('holiday_type','=','employee')], 'readonly':[('state','!=','draft'), ('state','!=','confirm')]}"/>
|
|
||||||
<field name="department_id" attrs="{'readonly':[('holiday_type','=','category')]}" groups="base.group_hr_user"/>
|
|
||||||
</group>
|
|
||||||
<group>
|
|
||||||
<field name="holiday_status_id" on_change="onchange_status_id(holiday_status_id)" context="{'employee_id':employee_id}"/>
|
<field name="holiday_status_id" on_change="onchange_status_id(holiday_status_id)" context="{'employee_id':employee_id}"/>
|
||||||
<label for="number_of_days_temp" string="Duration"/>
|
<label for="number_of_days_temp" string="Duration"/>
|
||||||
<div>
|
<div>
|
||||||
<field name="date_from" on_change="onchange_date_from(date_to, date_from)" required="1" class="oe_inline"/> -
|
<group col="3">
|
||||||
<field name="date_to" on_change="onchange_date_from(date_to, date_from)" required="1" class="oe_inline"/>
|
<field name="date_from" nolabel="1" on_change="onchange_date_from(date_to, date_from)" required="1" class="oe_inline"/><label string="-" class="oe_inline" />
|
||||||
|
<field name="date_to" nolabel="1" on_change="onchange_date_from(date_to, date_from)" required="1" class="oe_inline"/>
|
||||||
|
</group>
|
||||||
<div>
|
<div>
|
||||||
<field name="number_of_days_temp" class="oe_inline"/> days
|
<field name="number_of_days_temp" class="oe_inline"/> days
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</group>
|
<field name="category_id" attrs="{'required':[('holiday_type','=','category')], 'invisible':[('holiday_type','=','employee')], 'readonly':[('state','!=','draft'), ('state','!=','confirm')]}"/>
|
||||||
</group>
|
|
||||||
<notebook colspan="4">
|
|
||||||
<page string="General">
|
|
||||||
<group>
|
|
||||||
<group>
|
|
||||||
<field name="manager_id" groups="base.group_no_one"/>
|
|
||||||
<field name="double_validation" invisible="1"/>
|
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<field name="manager_id2" attrs="{'invisible':[('double_validation', '!=', True)]}" groups="base.group_no_one"/>
|
<field name="holiday_type" on_change="onchange_type(holiday_type)" attrs="{'readonly':[('state','!=','draft')]}" width="130" string="Mode" groups="base.group_hr_user"/>
|
||||||
|
<field name="employee_id" attrs="{'required':[('holiday_type','=','employee')],'invisible':[('holiday_type','=','category')]}" groups="base.group_hr_user"/>
|
||||||
|
<field name="department_id" attrs="{'readonly':[('holiday_type','=','category')]}" groups="base.group_hr_user"/>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<newline/>
|
|
||||||
<field name="notes" nolabel="1" colspan="4" placeholder="Add a reason..."/>
|
|
||||||
</page>
|
|
||||||
</notebook>
|
|
||||||
</sheet>
|
</sheet>
|
||||||
<div class="oe_chatter">
|
<div class="oe_chatter">
|
||||||
<field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>
|
<field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>
|
||||||
|
@ -150,37 +136,27 @@
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form string="Allocation Request" version="7.0">
|
<form string="Allocation Request" version="7.0">
|
||||||
<header>
|
<header>
|
||||||
<button string="Submit to Manager" name="confirm" states="draft" type="workflow" class="oe_highlight"/>
|
|
||||||
<button string="Approve" name="validate" states="confirm" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
|
<button string="Approve" name="validate" states="confirm" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
|
||||||
<button string="Validate" name="second_validate" states="validate1" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
|
<button string="Validate" name="second_validate" states="validate1" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
|
||||||
<button string="Refuse" name="refuse" states="confirm,validate1" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
|
<button string="Refuse" name="refuse" states="confirm,validate,validate1" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
|
||||||
<button string="Reset to New" name="set_to_draft" states="cancel,validate,refuse" type="object" groups="base.group_hr_user" />
|
<button string="Reset to New" name="set_to_draft" states="cancel,refuse" type="object" groups="base.group_hr_user" />
|
||||||
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,validate" statusbar_colors='{"confirm":"blue","validate1":"blue","refuse":"red"}'/>
|
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,validate" statusbar_colors='{"confirm":"blue","validate1":"blue","refuse":"red"}'/>
|
||||||
</header>
|
</header>
|
||||||
<sheet>
|
<sheet>
|
||||||
<group>
|
<group>
|
||||||
<group>
|
<group>
|
||||||
<field name="name"/>
|
<field name="name" required="1" attrs="{'readonly':[('state','!=','draft'),('state','!=','confirm')]}"/>
|
||||||
<field name="holiday_type" on_change="onchange_type(holiday_type)" attrs="{'readonly':[('state','!=','draft')]}" string="Allocation Mode" groups="base.group_hr_manager"/>
|
|
||||||
<field name="employee_id" attrs="{'required':[('holiday_type','=','employee')], 'invisible':[('holiday_type','=','category')]}"/>
|
|
||||||
<field name="category_id" attrs="{'required':[('holiday_type','=','category')], 'readonly':[('state','!=','draft')], 'invisible':[('holiday_type','=','employee')]}"/>
|
|
||||||
<field name="department_id" attrs="{'readonly':['|', ('holiday_type','=','category'), ('state','not in' ,('draft', 'confirm'))]}"/>
|
|
||||||
</group>
|
|
||||||
<group>
|
|
||||||
<field name="holiday_status_id" on_change="onchange_status_id(holiday_status_id)" context="{'employee_id':employee_id}"/>
|
<field name="holiday_status_id" on_change="onchange_status_id(holiday_status_id)" context="{'employee_id':employee_id}"/>
|
||||||
<field name="number_of_days_temp"/>
|
<field name="number_of_days_temp"/>
|
||||||
</group>
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="holiday_type" on_change="onchange_type(holiday_type)"/>
|
||||||
|
<field name="employee_id" attrs="{'required':[('holiday_type','=','employee')], 'invisible':[('holiday_type','=','category')]}"/>
|
||||||
|
<field name="category_id" attrs="{'required':[('holiday_type','=','category')], 'invisible':[('holiday_type','=','employee')]}"/>
|
||||||
|
<field name="department_id" attrs="{'invisible':[('holiday_type','=','category')]}"/>
|
||||||
</group>
|
</group>
|
||||||
<notebook>
|
|
||||||
<page string="General">
|
|
||||||
<group col="4">
|
|
||||||
<field name="double_validation" invisible="1"/>
|
|
||||||
<field name="manager_id"/>
|
|
||||||
<field name="manager_id2" attrs="{'invisible':[('double_validation', '!=', True)]}"/>
|
|
||||||
</group>
|
</group>
|
||||||
<field name="notes" placeholder="Add a reason..."/>
|
<field name="notes" nolabel="1" colspan="4" placeholder="Add a reason..."/>
|
||||||
</page>
|
|
||||||
</notebook>
|
|
||||||
</sheet>
|
</sheet>
|
||||||
<div class="oe_chatter">
|
<div class="oe_chatter">
|
||||||
<field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>
|
<field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>
|
||||||
|
@ -225,7 +201,6 @@
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
</header>
|
</header>
|
||||||
<group col="4">
|
<group col="4">
|
||||||
<field name="name"/>
|
|
||||||
<field name="holiday_status_id"/>
|
<field name="holiday_status_id"/>
|
||||||
<field name="type"/>
|
<field name="type"/>
|
||||||
<field name="date_from" on_change="onchange_date_from(date_to, date_from)" attrs="{'readonly':[('type','=','add')], 'required':[('type','=','remove')]}"/>
|
<field name="date_from" on_change="onchange_date_from(date_to, date_from)" attrs="{'readonly':[('type','=','add')], 'required':[('type','=','remove')]}"/>
|
||||||
|
@ -233,7 +208,7 @@
|
||||||
<field name="number_of_days_temp"/>
|
<field name="number_of_days_temp"/>
|
||||||
<field name="manager_id"/>
|
<field name="manager_id"/>
|
||||||
</group>
|
</group>
|
||||||
<field name="notes"/>
|
<field name="name" placeholder="Add a reason..."/>
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -288,12 +263,12 @@
|
||||||
<menuitem name="Leaves" parent="hr.menu_hr_root" id="menu_open_ask_holidays" sequence="20"/>
|
<menuitem name="Leaves" parent="hr.menu_hr_root" id="menu_open_ask_holidays" sequence="20"/>
|
||||||
|
|
||||||
<record model="ir.actions.act_window" id="open_ask_holidays">
|
<record model="ir.actions.act_window" id="open_ask_holidays">
|
||||||
<field name="name">Leave Requests</field>
|
<field name="name">My Leave Requests</field>
|
||||||
<field name="res_model">hr.holidays</field>
|
<field name="res_model">hr.holidays</field>
|
||||||
<field name="view_type">form</field>
|
<field name="view_type">form</field>
|
||||||
<field name="view_id" ref="edit_holiday_new"/>
|
<field name="view_id" ref="edit_holiday_new"/>
|
||||||
<field name="context">{}</field>
|
<field name="context">{}</field>
|
||||||
<field name="domain">[('type','=','remove')]</field>
|
<field name="domain">[('type','=','remove'),('employee_id.user_id','=', uid)]</field>
|
||||||
<field name="search_view_id" ref="view_hr_holidays_filter"/>
|
<field name="search_view_id" ref="view_hr_holidays_filter"/>
|
||||||
<field name="help" type="html">
|
<field name="help" type="html">
|
||||||
<p class="oe_view_nocontent_create">
|
<p class="oe_view_nocontent_create">
|
||||||
|
@ -357,11 +332,11 @@
|
||||||
<menuitem name="Leave Requests to Approve" parent="menu_open_ask_holidays" id="menu_request_approve_holidays" action="request_approve_holidays" groups="base.group_hr_user"/>
|
<menuitem name="Leave Requests to Approve" parent="menu_open_ask_holidays" id="menu_request_approve_holidays" action="request_approve_holidays" groups="base.group_hr_user"/>
|
||||||
|
|
||||||
<record model="ir.actions.act_window" id="open_allocation_holidays">
|
<record model="ir.actions.act_window" id="open_allocation_holidays">
|
||||||
<field name="name">Allocation Requests</field>
|
<field name="name">My Allocation Requests</field>
|
||||||
<field name="res_model">hr.holidays</field>
|
<field name="res_model">hr.holidays</field>
|
||||||
<field name="view_type">form</field>
|
<field name="view_type">form</field>
|
||||||
<field name="context">{'default_type':'add'}</field>
|
<field name="context">{'default_type':'add'}</field>
|
||||||
<field name="domain">[('type','=','add')]</field>
|
<field name="domain">[('type','=','add'),('employee_id.user_id','=', uid)]</field>
|
||||||
<field name="view_id" ref="allocation_leave_new"/>
|
<field name="view_id" ref="allocation_leave_new"/>
|
||||||
<field name="search_view_id" ref="view_hr_holidays_filter"/>
|
<field name="search_view_id" ref="view_hr_holidays_filter"/>
|
||||||
</record>
|
</record>
|
||||||
|
@ -380,7 +355,7 @@
|
||||||
<field name="act_window_id" ref="open_allocation_holidays"/>
|
<field name="act_window_id" ref="open_allocation_holidays"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<menuitem name="Allocation Requests" parent="menu_open_ask_holidays" id="menu_open_allocation_holidays" action="open_allocation_holidays"/>
|
<menuitem name="My Allocation Requests" parent="menu_open_ask_holidays" id="menu_open_allocation_holidays" action="open_allocation_holidays"/>
|
||||||
|
|
||||||
<record model="ir.actions.act_window" id="open_company_allocation">
|
<record model="ir.actions.act_window" id="open_company_allocation">
|
||||||
<field name="name">Leaves Summary</field>
|
<field name="name">Leaves Summary</field>
|
||||||
|
|
|
@ -2,7 +2,16 @@
|
||||||
<openerp>
|
<openerp>
|
||||||
<data>
|
<data>
|
||||||
|
|
||||||
<!-- Workflow definition -->
|
<!-- Workflow definition
|
||||||
|
1. draft->submitted (no signal)
|
||||||
|
2. submitted->accepted (validate signal) if not double_validation
|
||||||
|
2. submitted -> first_accepted (validate signal) if double_validation
|
||||||
|
2. submitted->refused (refuse signal)
|
||||||
|
3. accepted->refused (refuse signal)
|
||||||
|
4. first_accepted -> accepted (second_validate signal)
|
||||||
|
4. first_accepted -> refused (refuse signal)
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
<record model="workflow" id="wkf_holidays">
|
<record model="workflow" id="wkf_holidays">
|
||||||
<field name="name">hr.wkf.holidays</field>
|
<field name="name">hr.wkf.holidays</field>
|
||||||
|
@ -10,13 +19,13 @@
|
||||||
<field name="on_create">True</field>
|
<field name="on_create">True</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="workflow.activity" id="act_draft">
|
<record model="workflow.activity" id="act_draft"> <!-- draft -->
|
||||||
<field name="wkf_id" ref="wkf_holidays" />
|
<field name="wkf_id" ref="wkf_holidays" />
|
||||||
<field name="flow_start">True</field>
|
<field name="flow_start">True</field>
|
||||||
<field name="name">draft</field>
|
<field name="name">draft</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="workflow.activity" id="act_confirm">
|
<record model="workflow.activity" id="act_confirm"> <!-- submitted -->
|
||||||
<field name="wkf_id" ref="wkf_holidays" />
|
<field name="wkf_id" ref="wkf_holidays" />
|
||||||
<field name="name">confirm</field>
|
<field name="name">confirm</field>
|
||||||
<field name="kind">function</field>
|
<field name="kind">function</field>
|
||||||
|
@ -24,74 +33,94 @@
|
||||||
<field name="split_mode">OR</field>
|
<field name="split_mode">OR</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="workflow.activity" id="act_validate">
|
<record model="workflow.activity" id="act_validate"> <!-- accepted -->
|
||||||
<field name="wkf_id" ref="wkf_holidays" />
|
<field name="wkf_id" ref="wkf_holidays" />
|
||||||
<field name="name">validate</field>
|
<field name="name">validate</field>
|
||||||
<field name="kind">function</field>
|
<field name="kind">function</field>
|
||||||
<field name="action">holidays_validate()</field>
|
<field name="action">holidays_validate()</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="workflow.activity" id="act_validate1">
|
<record model="workflow.activity" id="act_validate1"> <!-- first_accepted -->
|
||||||
<field name="wkf_id" ref="wkf_holidays" />
|
<field name="wkf_id" ref="wkf_holidays" />
|
||||||
<field name="name">second_validate</field>
|
<field name="name">first_validate</field>
|
||||||
<field name="kind">function</field>
|
<field name="kind">function</field>
|
||||||
<field name="action">holidays_validate2()</field>
|
<field name="action">holidays_first_validate()</field>
|
||||||
|
<field name="split_mode">OR</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|
||||||
<record model="workflow.activity" id="act_refuse">
|
<record model="workflow.activity" id="act_refuse"> <!-- refused -->
|
||||||
<field name="wkf_id" ref="wkf_holidays" />
|
<field name="wkf_id" ref="wkf_holidays" />
|
||||||
<field name="name">refuse</field>
|
<field name="name">refuse</field>
|
||||||
<field name="flow_stop">True</field>
|
<field name="flow_stop">True</field>
|
||||||
<field name="kind">stopall</field>
|
<field name="kind">function</field>
|
||||||
|
<field name="action">holidays_refuse()</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
workflow transition
|
workflow transition
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<record model="workflow.transition" id="t1">
|
<record model="workflow.transition" id="holiday_draft2confirm"> <!-- 1. draft->submitted (no signal) -->
|
||||||
<field name="act_from" ref="act_draft" />
|
<field name="act_from" ref="act_draft" />
|
||||||
<field name="act_to" ref="act_confirm" />
|
<field name="act_to" ref="act_confirm" />
|
||||||
<field name="signal">confirm</field>
|
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="workflow.transition" id="t2">
|
<record model="workflow.transition" id="holiday_confirm2validate"> <!-- 2. submitted->accepted (validate signal) if not double_validation-->
|
||||||
<field name="act_from" ref="act_confirm" />
|
<field name="act_from" ref="act_confirm" />
|
||||||
<field name="act_to" ref="act_validate" />
|
<field name="act_to" ref="act_validate" />
|
||||||
<field name="signal">validate</field>
|
<field name="signal">validate</field>
|
||||||
|
<field name="condition">not double_validation</field>
|
||||||
|
<field name="group_id" ref="base.group_hr_user"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="workflow.transition" id="holiday_confirm2validate1"> <!-- 2. submitted -> first_accepted (validate signal) if double_validation-->
|
||||||
|
<field name="act_from" ref="act_confirm" />
|
||||||
|
<field name="act_to" ref="act_validate1" />
|
||||||
|
<field name="condition">double_validation</field>
|
||||||
|
<field name="group_id" ref="base.group_hr_user"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<record model="workflow.transition" id="holiday_confirm2refuse"> <!-- 2. submitted->refused (refuse signal) -->
|
||||||
|
<field name="act_from" ref="act_confirm" />
|
||||||
|
<field name="act_to" ref="act_refuse" />
|
||||||
|
<field name="signal">refuse</field>
|
||||||
<field name="condition">True</field>
|
<field name="condition">True</field>
|
||||||
<field name="group_id" ref="base.group_hr_user"/>
|
<field name="group_id" ref="base.group_hr_user"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="workflow.transition" id="t3">
|
<record model="workflow.transition" id="holiday_validate2refuse"> <!-- 3. accepted->refused (refuse signal) -->
|
||||||
<field name="act_from" ref="act_confirm" />
|
|
||||||
<field name="act_to" ref="act_refuse" />
|
|
||||||
<field name="signal">refuse</field>
|
|
||||||
<field name="condition">holidays_refuse('first_approval')</field>
|
|
||||||
<field name="group_id" ref="base.group_hr_user"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="workflow.transition" id="t4">
|
|
||||||
<field name="act_from" ref="act_validate" />
|
<field name="act_from" ref="act_validate" />
|
||||||
<field name="act_to" ref="act_refuse" />
|
<field name="act_to" ref="act_refuse" />
|
||||||
<field name="signal">refuse</field>
|
<field name="signal">refuse</field>
|
||||||
<field name="condition">holidays_refuse('second_approval')</field>
|
<field name="condition">True</field>
|
||||||
<field name="group_id" ref="base.group_hr_user"/>
|
<field name="group_id" ref="base.group_hr_user"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="workflow.transition" id="t8">
|
<record model="workflow.transition" id="holiday_validate2refuse"> <!-- 3. accepted->refused (refuse signal) -->
|
||||||
<field name="act_from" ref="act_validate" />
|
<field name="act_from" ref="act_validate" />
|
||||||
<field name="act_to" ref="act_validate1" />
|
<field name="act_to" ref="act_refuse" />
|
||||||
|
<field name="signal">refuse</field>
|
||||||
|
<field name="condition">True</field>
|
||||||
|
<field name="group_id" ref="base.group_hr_user"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<record model="workflow.transition" id="holiday_validate1_validate"> <!-- 4. first_accepted -> accepted (second_validate signal) -->
|
||||||
|
<field name="act_from" ref="act_validate1" />
|
||||||
|
<field name="act_to" ref="act_validate" />
|
||||||
|
<field name="condition">True</field>
|
||||||
<field name="signal">second_validate</field>
|
<field name="signal">second_validate</field>
|
||||||
<field name="group_id" ref="base.group_hr_manager" />
|
<field name="group_id" ref="base.group_hr_user"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="workflow.transition" id="t11">
|
<record model="workflow.transition" id="holiday_validate1_refuse"> <!-- 4. first_accepted->refused (refuse signal) -->
|
||||||
<field name="act_from" ref="act_validate" />
|
<field name="act_from" ref="act_validate1" />
|
||||||
<field name="act_to" ref="act_validate1" />
|
<field name="act_to" ref="act_refuse" />
|
||||||
<field name="condition">not holiday_status_id.double_validation</field>
|
<field name="signal">refuse</field>
|
||||||
<field name="signal" eval="False"/>
|
<field name="condition">True</field>
|
||||||
|
<field name="group_id" ref="base.group_hr_user"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -4,5 +4,5 @@ access_hr_holidays_user,hr.holidays.user,model_hr_holidays,base.group_hr_user,1,
|
||||||
access_hr_holidays_employee,hr.holidays.employee,model_hr_holidays,base.group_user,1,1,1,1
|
access_hr_holidays_employee,hr.holidays.employee,model_hr_holidays,base.group_user,1,1,1,1
|
||||||
access_hr_holydays_status_employee,hr.holidays.status employee,model_hr_holidays_status,base.group_user,1,0,0,0
|
access_hr_holydays_status_employee,hr.holidays.status employee,model_hr_holidays_status,base.group_user,1,0,0,0
|
||||||
access_hr_holidays_remain_user,hr.holidays.ramain.user,model_hr_holidays_remaining_leaves_user,base.group_hr_user,1,1,1,1
|
access_hr_holidays_remain_user,hr.holidays.ramain.user,model_hr_holidays_remaining_leaves_user,base.group_hr_user,1,1,1,1
|
||||||
access_resource_calendar_leaves_manager,resource_calendar_leaves_manager,resource.model_resource_calendar_leaves,base.group_hr_manager,1,1,1,1
|
access_resource_calendar_leaves_user,resource_calendar_leaves_user,resource.model_resource_calendar_leaves,base.group_hr_user,1,1,1,1
|
||||||
access_crm_meeting_type_manager,crm.meeting.type.manager,base_calendar.model_crm_meeting_type,base.group_hr_manager,1,1,1,1
|
access_crm_meeting_type_manager,crm.meeting.type.manager,base_calendar.model_crm_meeting_type,base.group_hr_manager,1,1,1,1
|
||||||
|
|
|
|
@ -1,6 +1,19 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<openerp>
|
<openerp>
|
||||||
<data>
|
<data>
|
||||||
|
<record id="property_rule_holidays_employee" model="ir.rule">
|
||||||
|
<field name="name">Employee Holidays</field>
|
||||||
|
<field model="ir.model" name="model_id" ref="model_hr_holidays"/>
|
||||||
|
<field name="domain_force">[('employee_id.user_id','=',user.id)]</field>
|
||||||
|
<field name="groups" eval="[(4,ref('base.group_user'))]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="property_rule_holidays_officer" model="ir.rule">
|
||||||
|
<field name="name">Holidays Officer</field>
|
||||||
|
<field model="ir.model" name="model_id" ref="model_hr_holidays"/>
|
||||||
|
<field name="domain_force">[(1,'=',1)]</field>
|
||||||
|
<field name="groups" eval="[(4,ref('base.group_hr_user'))]"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</openerp>
|
||||||
|
|
|
@ -0,0 +1,217 @@
|
||||||
|
# Mongolian translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
|
"PO-Revision-Date: 2012-08-31 07:21+0000\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: Mongolian <mn@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Launchpad-Export-Date: 2012-09-01 04:55+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15890)\n"
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: help:synchronize.google.import,group_name:0
|
||||||
|
msgid "Choose which group to import, By default it takes all."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:synchronize.google.import:0
|
||||||
|
msgid "Import Google Calendar Events"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:synchronize.google.import:0
|
||||||
|
msgid "_Import Events"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: code:addons/import_google/wizard/import_google_data.py:71
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"No Google Username or password Defined for user.\n"
|
||||||
|
"Please define in user view"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: code:addons/import_google/wizard/import_google_data.py:127
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Invalid login detail !\n"
|
||||||
|
" Specify Username/Password."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: field:synchronize.google.import,supplier:0
|
||||||
|
msgid "Supplier"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:synchronize.google.import:0
|
||||||
|
msgid "Import Options"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: field:synchronize.google.import,group_name:0
|
||||||
|
msgid "Group Name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: model:ir.model,name:import_google.model_crm_case_categ
|
||||||
|
msgid "Category of Case"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: model:ir.actions.act_window,name:import_google.act_google_login_contact_form
|
||||||
|
#: model:ir.ui.menu,name:import_google.menu_sync_contact
|
||||||
|
msgid "Import Google Contacts"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:google.import.message:0
|
||||||
|
msgid "Import Google Data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:crm.meeting:0
|
||||||
|
msgid "Meeting Type"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: code:addons/import_google/wizard/import_google.py:38
|
||||||
|
#: code:addons/import_google/wizard/import_google_data.py:28
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Please install gdata-python-client from http://code.google.com/p/gdata-"
|
||||||
|
"python-client/downloads/list"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: model:ir.model,name:import_google.model_google_login
|
||||||
|
msgid "Google Contact"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:synchronize.google.import:0
|
||||||
|
msgid "Import contacts from a google account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: code:addons/import_google/wizard/import_google_data.py:133
|
||||||
|
#, python-format
|
||||||
|
msgid "Please specify correct user and password !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: field:synchronize.google.import,customer:0
|
||||||
|
msgid "Customer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:synchronize.google.import:0
|
||||||
|
msgid "_Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: model:ir.model,name:import_google.model_synchronize_google_import
|
||||||
|
msgid "synchronize.google.import"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:synchronize.google.import:0
|
||||||
|
msgid "_Import Contacts"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: model:ir.actions.act_window,name:import_google.act_google_login_form
|
||||||
|
#: model:ir.ui.menu,name:import_google.menu_sync_calendar
|
||||||
|
msgid "Import Google Calendar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: code:addons/import_google/wizard/import_google_data.py:50
|
||||||
|
#, python-format
|
||||||
|
msgid "Import google"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: code:addons/import_google/wizard/import_google_data.py:127
|
||||||
|
#: code:addons/import_google/wizard/import_google_data.py:133
|
||||||
|
#, python-format
|
||||||
|
msgid "Error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: code:addons/import_google/wizard/import_google_data.py:71
|
||||||
|
#, python-format
|
||||||
|
msgid "Warning !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: field:synchronize.google.import,create_partner:0
|
||||||
|
msgid "Options"
|
||||||
|
msgstr "Тохируулга"
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:google.import.message:0
|
||||||
|
msgid "_Ok"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: code:addons/import_google/wizard/import_google.py:38
|
||||||
|
#: code:addons/import_google/wizard/import_google_data.py:28
|
||||||
|
#, python-format
|
||||||
|
msgid "Google Contacts Import Error!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: model:ir.model,name:import_google.model_google_import_message
|
||||||
|
msgid "Import Message"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: field:synchronize.google.import,calendar_name:0
|
||||||
|
msgid "Calendar Name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: help:synchronize.google.import,supplier:0
|
||||||
|
msgid "Check this box to set newly created partner as Supplier."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: selection:synchronize.google.import,create_partner:0
|
||||||
|
msgid "Import only address"
|
||||||
|
msgstr "Зөвхөн хаяг оруулах"
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: field:crm.case.categ,user_id:0
|
||||||
|
msgid "User"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: view:synchronize.google.import:0
|
||||||
|
msgid "Partner Status for this Group:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: field:google.import.message,name:0
|
||||||
|
msgid "Message"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: selection:synchronize.google.import,create_partner:0
|
||||||
|
msgid "Create partner for each contact"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: import_google
|
||||||
|
#: help:synchronize.google.import,customer:0
|
||||||
|
msgid "Check this box to set newly created partner as Customer."
|
||||||
|
msgstr ""
|
|
@ -29,6 +29,7 @@ import decimal_precision as dp
|
||||||
from tools.misc import currency
|
from tools.misc import currency
|
||||||
from tools.translate import _
|
from tools.translate import _
|
||||||
from tools import config
|
from tools import config
|
||||||
|
from openerp import SUPERUSER_ID
|
||||||
|
|
||||||
class account_tax_code_template(osv.osv):
|
class account_tax_code_template(osv.osv):
|
||||||
|
|
||||||
|
@ -53,7 +54,7 @@ class account_tax_template(osv.osv):
|
||||||
|
|
||||||
def get_precision_tax():
|
def get_precision_tax():
|
||||||
def change_digit_tax(cr):
|
def change_digit_tax(cr):
|
||||||
res = pooler.get_pool(cr.dbname).get('decimal.precision').precision_get(cr, 1, 'Account')
|
res = pooler.get_pool(cr.dbname).get('decimal.precision').precision_get(cr, SUPERUSER_ID, 'Account')
|
||||||
return (16, res+2)
|
return (16, res+2)
|
||||||
return change_digit_tax
|
return change_digit_tax
|
||||||
|
|
||||||
|
@ -91,7 +92,7 @@ class account_tax(osv.osv):
|
||||||
|
|
||||||
def get_precision_tax():
|
def get_precision_tax():
|
||||||
def change_digit_tax(cr):
|
def change_digit_tax(cr):
|
||||||
res = pooler.get_pool(cr.dbname).get('decimal.precision').precision_get(cr, 1, 'Account')
|
res = pooler.get_pool(cr.dbname).get('decimal.precision').precision_get(cr, SUPERUSER_ID, 'Account')
|
||||||
return (16, res+2)
|
return (16, res+2)
|
||||||
return change_digit_tax
|
return change_digit_tax
|
||||||
|
|
||||||
|
|
|
@ -93,9 +93,8 @@ class mail_alias(osv.Model):
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'alias_defaults': '{}',
|
'alias_defaults': '{}',
|
||||||
'alias_user_id': lambda self,cr,uid,context: uid,
|
'alias_user_id': lambda self,cr,uid,context: uid,
|
||||||
|
|
||||||
# looks better when creating new aliases - even if the field is informative only
|
# looks better when creating new aliases - even if the field is informative only
|
||||||
'alias_domain': lambda self,cr,uid,context: self._get_alias_domain(cr,1,[1],None,None)[1]
|
'alias_domain': lambda self,cr,uid,context: self._get_alias_domain(cr, SUPERUSER_ID,[1],None,None)[1]
|
||||||
}
|
}
|
||||||
|
|
||||||
_sql_constraints = [
|
_sql_constraints = [
|
||||||
|
|
|
@ -88,7 +88,7 @@ class res_users(osv.Model):
|
||||||
subject = '''%s has joined %s.''' % (user.name, company_name)
|
subject = '''%s has joined %s.''' % (user.name, company_name)
|
||||||
body = '''Welcome to OpenERP !'''
|
body = '''Welcome to OpenERP !'''
|
||||||
# TODO change 1 into user.id but catch errors
|
# TODO change 1 into user.id but catch errors
|
||||||
return self.pool.get('res.partner').message_append_note(cr, 1, [user.partner_id.id],
|
return self.pool.get('res.partner').message_append_note(cr, SUPERUSER_ID, [user.partner_id.id],
|
||||||
subject=subject, body=body, type='comment', content_subtype='html', context=context)
|
subject=subject, body=body, type='comment', content_subtype='html', context=context)
|
||||||
|
|
||||||
def write(self, cr, uid, ids, vals, context=None):
|
def write(self, cr, uid, ids, vals, context=None):
|
||||||
|
|
|
@ -996,35 +996,6 @@
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="product_normal_form_view" model="ir.ui.view">
|
|
||||||
<field name="name">product.normal.form.mrp.inherit</field>
|
|
||||||
<field name="model">product.product</field>
|
|
||||||
<field name="inherit_id" ref="stock.view_normal_procurement_locations_form"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<page string="Procurement & Locations" position="inside">
|
|
||||||
<separator string="Bill of Materials"/>
|
|
||||||
<field name="bom_ids" widget="one2many_list" mode="tree" context="{'default_product_id': active_id}">
|
|
||||||
<tree string="Bill of Materials">
|
|
||||||
<field name="name" string="Component Name"/>
|
|
||||||
<field name="bom_id"/>
|
|
||||||
<field name="product_qty" string="Quantity of Product"/>
|
|
||||||
<field name="type"/>
|
|
||||||
<field name="date_start"/>
|
|
||||||
<field name="date_stop"/>
|
|
||||||
</tree>
|
|
||||||
<form string="Bill of Material">
|
|
||||||
<field name="name" string="Component Name"/>
|
|
||||||
<field name="bom_id"/>
|
|
||||||
<field name="product_qty" string="Quantity of Product"/>
|
|
||||||
<field name="type"/>
|
|
||||||
<field name="date_start"/>
|
|
||||||
<field name="date_stop"/>
|
|
||||||
</form>
|
|
||||||
</field>
|
|
||||||
</page>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<act_window
|
<act_window
|
||||||
context="{'search_default_product_id': [active_id]}"
|
context="{'search_default_product_id': [active_id]}"
|
||||||
id="act_product_manufacturing_open"
|
id="act_product_manufacturing_open"
|
||||||
|
@ -1079,5 +1050,24 @@
|
||||||
id="menu_mrp_production_order_action" name="Orders Planning"
|
id="menu_mrp_production_order_action" name="Orders Planning"
|
||||||
parent="menu_mrp_planning" sequence="1"/>
|
parent="menu_mrp_planning" sequence="1"/>
|
||||||
|
|
||||||
|
|
||||||
|
<record model="ir.actions.act_window" id="product_open_bom">
|
||||||
|
<field name="context">{'default_product_id': active_id, 'search_default_product_id': active_id}</field>
|
||||||
|
<field name="name">Bill of Materials</field>
|
||||||
|
<field name="res_model">mrp.bom</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.ui.view" id="product_form_view_bom_button">
|
||||||
|
<field name="name">product.product.procurement</field>
|
||||||
|
<field name="model">product.product</field>
|
||||||
|
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//div[@name='buttons']" position="inside">
|
||||||
|
<button string="Bill of Materials" name="%(product_open_bom)d" type="action"/>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</openerp>
|
||||||
|
|
|
@ -26,7 +26,7 @@ from tools.translate import _
|
||||||
class product_product(osv.osv):
|
class product_product(osv.osv):
|
||||||
_inherit = "product.product"
|
_inherit = "product.product"
|
||||||
_columns = {
|
_columns = {
|
||||||
"bom_ids": fields.one2many('mrp.bom', 'product_id','Bill of Materials'),
|
"bom_ids": fields.one2many('mrp.bom', 'product_id','Bill of Materials', domain=[('bom_id','=',False)]),
|
||||||
}
|
}
|
||||||
def copy(self, cr, uid, id, default=None, context=None):
|
def copy(self, cr, uid, id, default=None, context=None):
|
||||||
if not default:
|
if not default:
|
||||||
|
|
|
@ -12,6 +12,8 @@ class pad_common(osv.osv_memory):
|
||||||
def pad_generate_url(self, cr, uid, context=None):
|
def pad_generate_url(self, cr, uid, context=None):
|
||||||
pad_server = self.pool.get('res.users').browse(cr, uid, uid, context).company_id.pad_server
|
pad_server = self.pool.get('res.users').browse(cr, uid, uid, context).company_id.pad_server
|
||||||
# make sure pad server in the form of http://hostname
|
# make sure pad server in the form of http://hostname
|
||||||
|
if not pad_server:
|
||||||
|
return ''
|
||||||
if not pad_server.startswith('http'):
|
if not pad_server.startswith('http'):
|
||||||
pad_server = 'http://' + pad_server
|
pad_server = 'http://' + pad_server
|
||||||
pad_server = pad_server.rstrip('/')
|
pad_server = pad_server.rstrip('/')
|
||||||
|
|
|
@ -27,15 +27,10 @@ class account_journal(osv.osv):
|
||||||
_columns = {
|
_columns = {
|
||||||
'journal_user': fields.boolean('PoS Payment Method', help="Check this box if this journal define a payment method that can be used in point of sales."),
|
'journal_user': fields.boolean('PoS Payment Method', help="Check this box if this journal define a payment method that can be used in point of sales."),
|
||||||
|
|
||||||
'opening_control': fields.boolean('Opening Control', help="If you want the journal should be control at opening, check this option"),
|
|
||||||
'closing_control': fields.boolean('Closing Control', help="If you want the journal should be control at closing, check this option"),
|
|
||||||
|
|
||||||
'amount_authorized_diff' : fields.float('Amount Authorized Difference'),
|
'amount_authorized_diff' : fields.float('Amount Authorized Difference'),
|
||||||
'self_checkout_payment_method' : fields.boolean('Self Checkout Payment Method'),
|
'self_checkout_payment_method' : fields.boolean('Self Checkout Payment Method'),
|
||||||
}
|
}
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'opening_control' : False,
|
|
||||||
'closing_control' : False,
|
|
||||||
'self_checkout_payment_method' : False,
|
'self_checkout_payment_method' : False,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,6 +41,7 @@ class account_cash_statement(osv.osv):
|
||||||
_columns = {
|
_columns = {
|
||||||
'pos_session_id' : fields.many2one('pos.session'),
|
'pos_session_id' : fields.many2one('pos.session'),
|
||||||
}
|
}
|
||||||
|
|
||||||
account_cash_statement()
|
account_cash_statement()
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
|
@ -10,8 +10,6 @@
|
||||||
<page string="Point of Sale">
|
<page string="Point of Sale">
|
||||||
<group col="4" colspan="4">
|
<group col="4" colspan="4">
|
||||||
<field name="journal_user"/>
|
<field name="journal_user"/>
|
||||||
<field name="opening_control"/>
|
|
||||||
<field name="closing_control"/>
|
|
||||||
<field name="amount_authorized_diff"/>
|
<field name="amount_authorized_diff"/>
|
||||||
<field name="self_checkout_payment_method" />
|
<field name="self_checkout_payment_method" />
|
||||||
</group>
|
</group>
|
||||||
|
@ -113,37 +111,5 @@
|
||||||
<field name="view_id" ref="account.view_bank_statement_form2"/>
|
<field name="view_id" ref="account.view_bank_statement_form2"/>
|
||||||
<field name="act_window_id" ref="action_new_bank_statement_all_tree"/>
|
<field name="act_window_id" ref="action_new_bank_statement_all_tree"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<!--
|
|
||||||
<menuitem name="Cash Register Management" parent="point_of_sale.menu_point_root"
|
|
||||||
id="menu_point_open_config" sequence="10"/>
|
|
||||||
<menuitem
|
|
||||||
name="Open Cash Registers" parent="menu_point_open_config"
|
|
||||||
string="Open Cash Registers"
|
|
||||||
action="action_pos_open_statement"
|
|
||||||
id="menu_open_statement" sequence="1" />
|
|
||||||
|
|
||||||
<menuitem
|
|
||||||
name="Close Cash Registers" parent="menu_point_open_config"
|
|
||||||
string="Close Cash Registers"
|
|
||||||
action="action_pos_close_statement"
|
|
||||||
id="menu_close_statement" sequence="2" />
|
|
||||||
|
|
||||||
<menuitem
|
|
||||||
parent="menu_point_open_config"
|
|
||||||
action="action_pos_confirm"
|
|
||||||
id="menu_wizard_pos_confirm" sequence="8" />
|
|
||||||
|
|
||||||
|
|
||||||
<menuitem
|
|
||||||
name="List of Cash Registers"
|
|
||||||
parent="menu_point_open_config"
|
|
||||||
action="action_new_bank_statement_all_tree"
|
|
||||||
id="menu_all_menu_all_register"
|
|
||||||
sequence="4"
|
|
||||||
/>
|
|
||||||
-->
|
|
||||||
|
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</openerp>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -74,6 +74,26 @@ class pos_config(osv.osv):
|
||||||
'group_by' : fields.boolean('Group Journal Items', help="Check this if you want to group the Journal Items by Product while closing a Session"),
|
'group_by' : fields.boolean('Group Journal Items', help="Check this if you want to group the Journal Items by Product while closing a Session"),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def _check_cash_control(self, cr, uid, ids, context=None):
|
||||||
|
return all(
|
||||||
|
(sum(int(journal.cash_control) for journal in record.journal_ids) <= 1)
|
||||||
|
for record in self.browse(cr, uid, ids, context=context)
|
||||||
|
)
|
||||||
|
|
||||||
|
_constraints = [
|
||||||
|
(_check_cash_control, "You cannot have two cash controls in one Point Of Sale !", ['journal_ids']),
|
||||||
|
]
|
||||||
|
|
||||||
|
def copy(self, cr, uid, id, default=None, context=None):
|
||||||
|
if not default:
|
||||||
|
default = {}
|
||||||
|
d = {
|
||||||
|
'sequence_id' : False,
|
||||||
|
}
|
||||||
|
d.update(default)
|
||||||
|
return super(pos_order, self).copy(cr, uid, id, d, context=context)
|
||||||
|
|
||||||
|
|
||||||
def name_get(self, cr, uid, ids, context=None):
|
def name_get(self, cr, uid, ids, context=None):
|
||||||
result = []
|
result = []
|
||||||
states = {
|
states = {
|
||||||
|
@ -90,11 +110,6 @@ class pos_config(osv.osv):
|
||||||
result.append((record.id, record.name + ' ('+session.user_id.name+')')) #, '+states[session.state]+')'))
|
result.append((record.id, record.name + ' ('+session.user_id.name+')')) #, '+states[session.state]+')'))
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def _default_payment_journal(self, cr, uid, context=None):
|
|
||||||
res = self.pool.get('account.journal').search(cr, uid, [('type', 'in', ('bank','cash'))], limit=2)
|
|
||||||
return res or []
|
|
||||||
|
|
||||||
def _default_sale_journal(self, cr, uid, context=None):
|
def _default_sale_journal(self, cr, uid, context=None):
|
||||||
res = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'sale')], limit=1)
|
res = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'sale')], limit=1)
|
||||||
return res and res[0] or False
|
return res and res[0] or False
|
||||||
|
@ -107,7 +122,6 @@ class pos_config(osv.osv):
|
||||||
'state' : POS_CONFIG_STATE[0][0],
|
'state' : POS_CONFIG_STATE[0][0],
|
||||||
'shop_id': _default_shop,
|
'shop_id': _default_shop,
|
||||||
'journal_id': _default_sale_journal,
|
'journal_id': _default_sale_journal,
|
||||||
'journal_ids': _default_payment_journal,
|
|
||||||
'group_by' : True,
|
'group_by' : True,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,45 +162,20 @@ class pos_session(osv.osv):
|
||||||
('closed', 'Closed & Posted'),
|
('closed', 'Closed & Posted'),
|
||||||
]
|
]
|
||||||
|
|
||||||
def _compute_cash_journal_id(self, cr, uid, ids, fieldnames, args, context=None):
|
def _compute_cash_all(self, cr, uid, ids, fieldnames, args, context=None):
|
||||||
result = dict.fromkeys(ids, False)
|
result = dict()
|
||||||
for record in self.browse(cr, uid, ids, context=context):
|
|
||||||
for st in record.statement_ids:
|
|
||||||
if st.journal_id.type == 'cash':
|
|
||||||
result[record.id] = st.journal_id.id
|
|
||||||
break
|
|
||||||
return result
|
|
||||||
|
|
||||||
def _compute_cash_register_id(self, cr, uid, ids, fieldnames, args, context=None):
|
|
||||||
result = dict.fromkeys(ids, False)
|
|
||||||
for record in self.browse(cr, uid, ids, context=context):
|
|
||||||
for st in record.statement_ids:
|
|
||||||
if st.journal_id.type == 'cash':
|
|
||||||
result[record.id] = st.id
|
|
||||||
break
|
|
||||||
return result
|
|
||||||
|
|
||||||
def _compute_controls(self, cr, uid, ids, fieldnames, args, context=None):
|
|
||||||
result = {}
|
|
||||||
|
|
||||||
for record in self.browse(cr, uid, ids, context=context):
|
for record in self.browse(cr, uid, ids, context=context):
|
||||||
has_opening_control = False
|
result[record.id] = {
|
||||||
has_closing_control = False
|
'cash_journal_id' : False,
|
||||||
|
'cash_register_id' : False,
|
||||||
for journal in record.config_id.journal_ids:
|
'cash_control' : False,
|
||||||
if journal.opening_control == True:
|
|
||||||
has_opening_control = True
|
|
||||||
if journal.closing_control == True:
|
|
||||||
has_closing_control = True
|
|
||||||
|
|
||||||
if has_opening_control and has_closing_control:
|
|
||||||
break
|
|
||||||
|
|
||||||
values = {
|
|
||||||
'has_opening_control': has_opening_control,
|
|
||||||
'has_closing_control': has_closing_control,
|
|
||||||
}
|
}
|
||||||
result[record.id] = values
|
for st in record.statement_ids:
|
||||||
|
if st.journal_id.cash_control == True:
|
||||||
|
result[record.id]['cash_control'] = True
|
||||||
|
result[record.id]['cash_journal_id'] = st.journal_id.id
|
||||||
|
result[record.id]['cash_register_id'] = st.id
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
@ -212,10 +201,15 @@ class pos_session(osv.osv):
|
||||||
required=True, readonly=True,
|
required=True, readonly=True,
|
||||||
select=1),
|
select=1),
|
||||||
|
|
||||||
'cash_journal_id' : fields.function(_compute_cash_journal_id, method=True,
|
'cash_control' : fields.function(_compute_cash_all,
|
||||||
|
multi='cash',
|
||||||
|
type='boolean', string='Has Cash Control'),
|
||||||
|
'cash_journal_id' : fields.function(_compute_cash_all,
|
||||||
|
multi='cash',
|
||||||
type='many2one', relation='account.journal',
|
type='many2one', relation='account.journal',
|
||||||
string='Cash Journal', store=True),
|
string='Cash Journal', store=True),
|
||||||
'cash_register_id' : fields.function(_compute_cash_register_id, method=True,
|
'cash_register_id' : fields.function(_compute_cash_all,
|
||||||
|
multi='cash',
|
||||||
type='many2one', relation='account.bank.statement',
|
type='many2one', relation='account.bank.statement',
|
||||||
string='Cash Register', store=True),
|
string='Cash Register', store=True),
|
||||||
|
|
||||||
|
@ -261,8 +255,6 @@ class pos_session(osv.osv):
|
||||||
'order_ids' : fields.one2many('pos.order', 'session_id', 'Orders'),
|
'order_ids' : fields.one2many('pos.order', 'session_id', 'Orders'),
|
||||||
|
|
||||||
'statement_ids' : fields.one2many('account.bank.statement', 'pos_session_id', 'Bank Statement', readonly=True),
|
'statement_ids' : fields.one2many('account.bank.statement', 'pos_session_id', 'Bank Statement', readonly=True),
|
||||||
'has_opening_control' : fields.function(_compute_controls, string='Has Opening Control', multi='control', type='boolean'),
|
|
||||||
'has_closing_control' : fields.function(_compute_controls, string='Has Closing Control', multi='control', type='boolean'),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_defaults = {
|
_defaults = {
|
||||||
|
@ -372,10 +364,8 @@ class pos_session(osv.osv):
|
||||||
def wkf_action_closing_control(self, cr, uid, ids, context=None):
|
def wkf_action_closing_control(self, cr, uid, ids, context=None):
|
||||||
for session in self.browse(cr, uid, ids, context=context):
|
for session in self.browse(cr, uid, ids, context=context):
|
||||||
for statement in session.statement_ids:
|
for statement in session.statement_ids:
|
||||||
if statement.id <> session.cash_register_id.id:
|
if statement != session.cash_register_id and statement.balance_end != statement.balance_end_real:
|
||||||
if statement.balance_end<>statement.balance_end_real:
|
self.pool.get('account.bank.statement').write(cr, uid, [statement.id], {'balance_end_real': statement.balance_end})
|
||||||
self.pool.get('account.bank.statement').write(cr, uid,
|
|
||||||
[statement.id], {'balance_end_real': statement.balance_end})
|
|
||||||
return self.write(cr, uid, ids, {'state' : 'closing_control', 'stop_at' : time.strftime('%Y-%m-%d %H:%M:%S')}, context=context)
|
return self.write(cr, uid, ids, {'state' : 'closing_control', 'stop_at' : time.strftime('%Y-%m-%d %H:%M:%S')}, context=context)
|
||||||
|
|
||||||
def wkf_action_close(self, cr, uid, ids, context=None):
|
def wkf_action_close(self, cr, uid, ids, context=None):
|
||||||
|
@ -388,7 +378,7 @@ class pos_session(osv.osv):
|
||||||
if not self.pool.get('ir.model.access').check_groups(cr, uid, "point_of_sale.group_pos_manager"):
|
if not self.pool.get('ir.model.access').check_groups(cr, uid, "point_of_sale.group_pos_manager"):
|
||||||
raise osv.except_osv( _('Error!'),
|
raise osv.except_osv( _('Error!'),
|
||||||
_("Your ending balance is too different from the theorical cash closing (%.2f), the maximum allowed is: %.2f. You can contact your manager to force it.") % (st.difference, st.journal_id.amount_authorized_diff))
|
_("Your ending balance is too different from the theorical cash closing (%.2f), the maximum allowed is: %.2f. You can contact your manager to force it.") % (st.difference, st.journal_id.amount_authorized_diff))
|
||||||
if st.difference:
|
if st.difference and st.journal_id.cash_control == True:
|
||||||
if st.difference > 0.0:
|
if st.difference > 0.0:
|
||||||
name= _('Point of Sale Profit')
|
name= _('Point of Sale Profit')
|
||||||
account_id = st.journal_id.profit_account_id.id
|
account_id = st.journal_id.profit_account_id.id
|
||||||
|
@ -406,6 +396,9 @@ class pos_session(osv.osv):
|
||||||
'account_id': account_id
|
'account_id': account_id
|
||||||
}, context=context)
|
}, context=context)
|
||||||
|
|
||||||
|
if st.journal_id.type == 'bank':
|
||||||
|
st.write({'balance_end_real' : st.balance_end})
|
||||||
|
|
||||||
getattr(st, 'button_confirm_%s' % st.journal_id.type)(context=context)
|
getattr(st, 'button_confirm_%s' % st.journal_id.type)(context=context)
|
||||||
self._confirm_orders(cr, uid, ids, context=context)
|
self._confirm_orders(cr, uid, ids, context=context)
|
||||||
self.write(cr, uid, ids, {'state' : 'closed'}, context=context)
|
self.write(cr, uid, ids, {'state' : 'closed'}, context=context)
|
||||||
|
@ -731,7 +724,7 @@ class pos_order(osv.osv):
|
||||||
'pos_statement_id' : order_id,
|
'pos_statement_id' : order_id,
|
||||||
'journal_id' : journal_id,
|
'journal_id' : journal_id,
|
||||||
'type' : 'customer',
|
'type' : 'customer',
|
||||||
'ref' : order.name,
|
'ref' : order.session_id.name,
|
||||||
})
|
})
|
||||||
|
|
||||||
statement_line_obj.create(cr, uid, args, context=context)
|
statement_line_obj.create(cr, uid, args, context=context)
|
||||||
|
@ -1084,6 +1077,7 @@ class account_bank_statement_line(osv.osv):
|
||||||
_columns= {
|
_columns= {
|
||||||
'pos_statement_id': fields.many2one('pos.order', ondelete='cascade'),
|
'pos_statement_id': fields.many2one('pos.order', ondelete='cascade'),
|
||||||
}
|
}
|
||||||
|
|
||||||
account_bank_statement_line()
|
account_bank_statement_line()
|
||||||
|
|
||||||
class pos_order_line(osv.osv):
|
class pos_order_line(osv.osv):
|
||||||
|
@ -1284,8 +1278,30 @@ class product_product(osv.osv):
|
||||||
help="If you want to sell this product through the point of sale, select the category it belongs to."),
|
help="If you want to sell this product through the point of sale, select the category it belongs to."),
|
||||||
'to_weight' : fields.boolean('To Weight', help="This category contains products that should be weighted, mainly used for the self-checkout interface"),
|
'to_weight' : fields.boolean('To Weight', help="This category contains products that should be weighted, mainly used for the self-checkout interface"),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def _default_pos_categ_id(self, cr, uid, context=None):
|
||||||
|
proxy = self.pool.get('ir.model.data')
|
||||||
|
|
||||||
|
try:
|
||||||
|
category_id = proxy.get_object_reference(cr, uid, 'point_of_sale', 'categ_others')[1]
|
||||||
|
except ValueError:
|
||||||
|
values = {
|
||||||
|
'name' : 'Others',
|
||||||
|
}
|
||||||
|
category_id = self.pool.get('pos.category').create(cr, uid, values, context=context)
|
||||||
|
values = {
|
||||||
|
'name' : 'categ_others',
|
||||||
|
'model' : 'pos.category',
|
||||||
|
'module' : 'point_of_sale',
|
||||||
|
'res_id' : category_id,
|
||||||
|
}
|
||||||
|
proxy.create(cr, uid, values, context=context)
|
||||||
|
|
||||||
|
return category_id
|
||||||
|
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'to_weight' : False,
|
'to_weight' : False,
|
||||||
|
'pos_categ_id' : _default_pos_categ_id,
|
||||||
}
|
}
|
||||||
|
|
||||||
def edit_ean(self, cr, uid, ids, context):
|
def edit_ean(self, cr, uid, ids, context):
|
||||||
|
|
|
@ -36,6 +36,10 @@
|
||||||
<field name="groups_id" eval="[(4,ref('group_pos_user'))]"/>
|
<field name="groups_id" eval="[(4,ref('group_pos_user'))]"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<record model="pos.config" id="pos_config_main">
|
||||||
|
<field name="journal_ids" eval="[(6, 0, [ref('account.cash_journal'), ref('account.bank_journal')])]" />
|
||||||
|
</record>
|
||||||
|
|
||||||
<!-- Resource: pos.category -->
|
<!-- Resource: pos.category -->
|
||||||
|
|
||||||
<record id="beverage" model="pos.category">
|
<record id="beverage" model="pos.category">
|
||||||
|
|
|
@ -126,7 +126,7 @@
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
<record model="ir.ui.view" id="view_pos_order_tree">
|
<record model="ir.ui.view" id="view_pos_order_tree">
|
||||||
<field name="name">Sales</field>
|
<field name="name">Orders</field>
|
||||||
<field name="model">pos.order</field>
|
<field name="model">pos.order</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<tree string="POS Orders" colors="blue:state == 'draft';gray:state in ('done','cancel');black:state not in('done','cancel')">
|
<tree string="POS Orders" colors="blue:state == 'draft';gray:state in ('done','cancel');black:state not in('done','cancel')">
|
||||||
|
@ -138,6 +138,7 @@
|
||||||
<field name="amount_total" sum="Amount total"/>
|
<field name="amount_total" sum="Amount total"/>
|
||||||
<field name="company_id" groups="base.group_multi_company"/>
|
<field name="company_id" groups="base.group_multi_company"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
|
<field name="session_id" />
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -791,8 +792,7 @@
|
||||||
<field name="code" />
|
<field name="code" />
|
||||||
<field name="name" />
|
<field name="name" />
|
||||||
<field name="type" />
|
<field name="type" />
|
||||||
<field name="opening_control" />
|
<field name="cash_control" />
|
||||||
<field name="closing_control" />
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
<group string="Material Interfaces" >
|
<group string="Material Interfaces" >
|
||||||
|
@ -878,10 +878,10 @@
|
||||||
<header>
|
<header>
|
||||||
<button name="open" type="workflow" string="Validate & Open Session" states="opening_control" class="oe_highlight"/>
|
<button name="open" type="workflow" string="Validate & Open Session" states="opening_control" class="oe_highlight"/>
|
||||||
<button name="cashbox_control" type="workflow" string="End of Session"
|
<button name="cashbox_control" type="workflow" string="End of Session"
|
||||||
attrs="{'invisible' : [('has_closing_control', '=', False),('state', '=', 'opened')]}"
|
attrs="{'invisible' : ['|', ('cash_control', '=', False),('state', '!=', 'opened')]}"
|
||||||
class="oe_highlight" />
|
class="oe_highlight" />
|
||||||
<button name="close" type="workflow" string="Validate Closing & Post Entries"
|
<button name="close" type="workflow" string="Validate Closing & Post Entries"
|
||||||
attrs="{'invisible' : [('has_closing_control', '=', True),('state', '=', 'opened')]}"
|
attrs="{'invisible' : ['|', ('cash_control', '=', True),('state', '!=', 'opened')]}"
|
||||||
class="oe_highlight" />
|
class="oe_highlight" />
|
||||||
<button name="close" type="workflow" string="Validate Closing & Post Entries" states="closing_control"
|
<button name="close" type="workflow" string="Validate Closing & Post Entries" states="closing_control"
|
||||||
class="oe_highlight" />
|
class="oe_highlight" />
|
||||||
|
@ -900,8 +900,7 @@
|
||||||
<field name="name" attrs="{'invisible': [('name','=','/')]}" class="oe_inline"/>
|
<field name="name" attrs="{'invisible': [('name','=','/')]}" class="oe_inline"/>
|
||||||
</h1>
|
</h1>
|
||||||
<group>
|
<group>
|
||||||
<field name="has_opening_control" invisible="1" />
|
<field name="cash_control" invisible="1" />
|
||||||
<field name="has_closing_control" invisible="1" />
|
|
||||||
<group>
|
<group>
|
||||||
<field name="user_id"/>
|
<field name="user_id"/>
|
||||||
<field name="config_id" attrs="{'invisible' : [('config_id', '<>', False)]}"/>
|
<field name="config_id" attrs="{'invisible' : [('config_id', '<>', False)]}"/>
|
||||||
|
@ -912,16 +911,16 @@
|
||||||
</group>
|
</group>
|
||||||
<newline/>
|
<newline/>
|
||||||
|
|
||||||
<group string="Opening Cash Control">
|
<group string="Opening Cash Control" attrs="{'invisible' : ['|', ('cash_control', '=', False),('state', '=', 'closed')]}">
|
||||||
<field name="opening_details_ids" nolabel="1" colspan="2" attrs="{'readonly' : [('state', 'not in', ('opening_control',))]}">
|
<field name="opening_details_ids" nolabel="1" colspan="2" attrs="{'readonly' : [('state', 'not in', ('opening_control',))]}">
|
||||||
<tree string="Opening Cashbox Lines" editable="bottom">
|
<tree string="Opening Cashbox Lines" editable="bottom">
|
||||||
<field name="pieces" readonly="1" />
|
<field name="pieces" readonly="1" />
|
||||||
<field name="number_opening" string="Opening Unit Numbers" on_change="on_change_sub_opening(pieces, number_opening)" />
|
<field name="number_opening" on_change="on_change_sub_opening(pieces, number_opening)" />
|
||||||
<field name="subtotal_opening" string="Opening Subtotal" sum="Total"/>
|
<field name="subtotal_opening" string="Opening Subtotal" sum="Total"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</group>
|
</group>
|
||||||
<group string="Closing Cash Control" attrs="{'invisible': [('state', '=', 'opening_control')]}">
|
<group string="Closing Cash Control" attrs="{'invisible': ['|', ('cash_control', '=', False), ('state', '!=', 'closing_control')]}">
|
||||||
<field name="details_ids" nolabel="1" colspan="2">
|
<field name="details_ids" nolabel="1" colspan="2">
|
||||||
<tree string="Cashbox Lines" editable="bottom">
|
<tree string="Cashbox Lines" editable="bottom">
|
||||||
<field name="pieces" readonly="1" />
|
<field name="pieces" readonly="1" />
|
||||||
|
@ -931,7 +930,7 @@
|
||||||
</field>
|
</field>
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
<div>
|
<div attrs="{'invisible': [('state', '=', 'closed')]}">
|
||||||
<group class="oe_subtotal_footer oe_right">
|
<group class="oe_subtotal_footer oe_right">
|
||||||
<field name="cash_register_balance_start" readonly="1" string="Opening Balance" class="oe_subtotal_footer_separator"/>
|
<field name="cash_register_balance_start" readonly="1" string="Opening Balance" class="oe_subtotal_footer_separator"/>
|
||||||
<field name="cash_register_total_entry_encoding" attrs="{'invisible' : [('state', '=', 'opening_control')]}" string="+ Transactions"/>
|
<field name="cash_register_total_entry_encoding" attrs="{'invisible' : [('state', '=', 'opening_control')]}" string="+ Transactions"/>
|
||||||
|
@ -948,7 +947,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<group class="oe_subtotal_footer oe_right" attrs="{'invisible' : [('state', '=', 'opening_control')]}">
|
<group class="oe_subtotal_footer oe_right" attrs="{'invisible' : [('state', 'in', ('opening_control', 'closed'))]}">
|
||||||
<field name="cash_register_balance_end_real" class="oe_subtotal_footer_separator"/>
|
<field name="cash_register_balance_end_real" class="oe_subtotal_footer_separator"/>
|
||||||
<field name="cash_register_difference" class="oe_subtotal_footer_separator"/>
|
<field name="cash_register_difference" class="oe_subtotal_footer_separator"/>
|
||||||
</group>
|
</group>
|
||||||
|
|
|
@ -126,14 +126,14 @@
|
||||||
<field name="act_from" ref="act_start" />
|
<field name="act_from" ref="act_start" />
|
||||||
<field name="act_to" ref="act_opening_control" />
|
<field name="act_to" ref="act_opening_control" />
|
||||||
<field name="signal" eval="False" /> <!-- >start_to_opening_control</field> -->
|
<field name="signal" eval="False" /> <!-- >start_to_opening_control</field> -->
|
||||||
<field name="condition">has_opening_control == True</field>
|
<field name="condition">cash_control == True</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="workflow.transition" id="trans_start_to_open">
|
<record model="workflow.transition" id="trans_start_to_open">
|
||||||
<field name="act_from" ref="act_start" />
|
<field name="act_from" ref="act_start" />
|
||||||
<field name="act_to" ref="act_open" />
|
<field name="act_to" ref="act_open" />
|
||||||
<field name="signal" eval="False" />
|
<field name="signal" eval="False" />
|
||||||
<field name="condition">has_opening_control == False</field>
|
<field name="condition">cash_control == False</field>
|
||||||
</record>
|
</record>
|
||||||
<!-- state:opening_control -> signal:open -> state:opened -> signal:cashbox_control -> state:closing_control -> signal:close -> state:close -->
|
<!-- state:opening_control -> signal:open -> state:opened -> signal:cashbox_control -> state:closing_control -> signal:close -> state:close -->
|
||||||
|
|
||||||
|
@ -147,14 +147,14 @@
|
||||||
<field name="act_from" ref="act_open" />
|
<field name="act_from" ref="act_open" />
|
||||||
<field name="act_to" ref="act_closing_control" />
|
<field name="act_to" ref="act_closing_control" />
|
||||||
<field name="signal">cashbox_control</field>
|
<field name="signal">cashbox_control</field>
|
||||||
<field name="condition">has_closing_control == True</field>
|
<field name="condition">cash_control == True</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="workflow.transition" id="trans_open_to_close">
|
<record model="workflow.transition" id="trans_open_to_close">
|
||||||
<field name="act_from" ref="act_open" />
|
<field name="act_from" ref="act_open" />
|
||||||
<field name="act_to" ref="act_close" />
|
<field name="act_to" ref="act_close" />
|
||||||
<field name="signal">close</field>
|
<field name="signal">close</field>
|
||||||
<field name="condition">has_closing_control == False</field>
|
<field name="condition">cash_control == False</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="workflow.transition" id="trans_closing_control_to_close">
|
<record model="workflow.transition" id="trans_closing_control_to_close">
|
||||||
|
|
|
@ -65,7 +65,7 @@ class pos_open_statement(osv.osv_memory):
|
||||||
statement_id = statement_obj.create(cr, uid, data, context=context)
|
statement_id = statement_obj.create(cr, uid, data, context=context)
|
||||||
st_ids.append(int(statement_id))
|
st_ids.append(int(statement_id))
|
||||||
|
|
||||||
if journal.opening_control:
|
if journal.cash_control:
|
||||||
statement_obj.button_open(cr, uid, [statement_id], context)
|
statement_obj.button_open(cr, uid, [statement_id], context)
|
||||||
|
|
||||||
tree_res = mod_obj.get_object_reference(cr, uid, 'point_of_sale', 'view_cash_statement_pos_tree')
|
tree_res = mod_obj.get_object_reference(cr, uid, 'point_of_sale', 'view_cash_statement_pos_tree')
|
||||||
|
|
|
@ -15,6 +15,10 @@ class pos_session_opening(osv.osv_memory):
|
||||||
'pos_state' : fields.selection(pos_session.POS_SESSION_STATE,
|
'pos_state' : fields.selection(pos_session.POS_SESSION_STATE,
|
||||||
'Session State', readonly=True),
|
'Session State', readonly=True),
|
||||||
'show_config' : fields.boolean('Show Config', readonly=True),
|
'show_config' : fields.boolean('Show Config', readonly=True),
|
||||||
|
'pos_session_name' : fields.related('pos_session_id', 'name',
|
||||||
|
type='char', size=64, readonly=True),
|
||||||
|
'pos_session_username' : fields.related('pos_session_id', 'user_id', 'name',
|
||||||
|
type='char', size=64, readonly=True)
|
||||||
}
|
}
|
||||||
|
|
||||||
def open_ui(self, cr, uid, ids, context=None):
|
def open_ui(self, cr, uid, ids, context=None):
|
||||||
|
@ -66,7 +70,9 @@ class pos_session_opening(osv.osv_memory):
|
||||||
def on_change_config(self, cr, uid, ids, config_id, context=None):
|
def on_change_config(self, cr, uid, ids, config_id, context=None):
|
||||||
result = {
|
result = {
|
||||||
'pos_session_id': False,
|
'pos_session_id': False,
|
||||||
'pos_state': False
|
'pos_state': False,
|
||||||
|
'pos_session_username' : False,
|
||||||
|
'pos_session_name' : False,
|
||||||
}
|
}
|
||||||
if not config_id:
|
if not config_id:
|
||||||
return {'value': result}
|
return {'value': result}
|
||||||
|
@ -76,8 +82,11 @@ class pos_session_opening(osv.osv_memory):
|
||||||
('config_id', '=', config_id),
|
('config_id', '=', config_id),
|
||||||
], context=context)
|
], context=context)
|
||||||
if session_ids:
|
if session_ids:
|
||||||
result['pos_state'] = proxy.browse(cr, uid, session_ids[0], context=context).state
|
session = proxy.browse(cr, uid, session_ids[0], context=context)
|
||||||
result['pos_session_id'] = session_ids[0]
|
result['pos_state'] = session.state
|
||||||
|
result['pos_session_id'] = session.id
|
||||||
|
result['pos_session_name'] = session.name
|
||||||
|
result['pos_session_username'] = session.user_id.name
|
||||||
return {'value' : result}
|
return {'value' : result}
|
||||||
|
|
||||||
def default_get(self, cr, uid, fieldnames, context=None):
|
def default_get(self, cr, uid, fieldnames, context=None):
|
||||||
|
|
|
@ -44,6 +44,15 @@
|
||||||
interface.
|
interface.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div attrs="{'invisible' : [('pos_state', '!=', 'opened')]}" class="oe_view_nocontent">
|
||||||
|
<p class="oe_view_nocontent_create">
|
||||||
|
Click to continue the session.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The session <field name="pos_session_name" class="oe_inline" /> (<field name="pos_session_username" class="oe_inline" />) is "<b><field name="pos_state" class="oe_inline" /></b>"<br/>
|
||||||
|
You can continue sales from the touchscreen interface by clicking on "<b>Settings</b>" or close the cash register session ?
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
<field name="name">Portal</field>
|
<field name="name">Portal</field>
|
||||||
<field name="group_id" ref="group_portal_member"/>
|
<field name="group_id" ref="group_portal_member"/>
|
||||||
<field name="override_menu" eval="False"/>
|
<field name="override_menu" eval="False"/>
|
||||||
|
<!-- Insert the template user from auth_signup in the portal members group -->
|
||||||
|
<field name="users" eval="[(4,ref('auth_signup.default_template_user'))]"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<!-- Mail group for the company's news -->
|
<!-- Mail group for the company's news -->
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -8,14 +8,14 @@ msgstr ""
|
||||||
"Project-Id-Version: openobject-addons\n"
|
"Project-Id-Version: openobject-addons\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
|
||||||
"PO-Revision-Date: 2011-03-16 07:09+0000\n"
|
"PO-Revision-Date: 2012-08-30 18:15+0000\n"
|
||||||
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
|
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
|
||||||
"Language-Team: Russian <ru@li.org>\n"
|
"Language-Team: Russian <ru@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-08-28 06:36+0000\n"
|
"X-Launchpad-Export-Date: 2012-08-31 04:56+0000\n"
|
||||||
"X-Generator: Launchpad (build 15864)\n"
|
"X-Generator: Launchpad (build 15887)\n"
|
||||||
|
|
||||||
#. module: procurement
|
#. module: procurement
|
||||||
#: view:make.procurement:0
|
#: view:make.procurement:0
|
||||||
|
@ -376,7 +376,7 @@ msgstr "Ссылки"
|
||||||
#: view:product.product:0
|
#: view:product.product:0
|
||||||
#: field:product.product,orderpoint_ids:0
|
#: field:product.product,orderpoint_ids:0
|
||||||
msgid "Minimum Stock Rule"
|
msgid "Minimum Stock Rule"
|
||||||
msgstr ""
|
msgstr "Правило минимальных запасов"
|
||||||
|
|
||||||
#. module: procurement
|
#. module: procurement
|
||||||
#: view:res.company:0
|
#: view:res.company:0
|
||||||
|
@ -390,6 +390,8 @@ msgid ""
|
||||||
"Please check the quantity in procurement order(s), it should not be 0 or "
|
"Please check the quantity in procurement order(s), it should not be 0 or "
|
||||||
"less!"
|
"less!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Пожалуйста, проверьте количество в заказе на снабжение, оно не должно быть "
|
||||||
|
"нулевым или отрицательным!"
|
||||||
|
|
||||||
#. module: procurement
|
#. module: procurement
|
||||||
#: help:procurement.order,procure_method:0
|
#: help:procurement.order,procure_method:0
|
||||||
|
@ -615,7 +617,7 @@ msgstr "Правило минимума ТМЦ"
|
||||||
#. module: procurement
|
#. module: procurement
|
||||||
#: help:stock.warehouse.orderpoint,qty_multiple:0
|
#: help:stock.warehouse.orderpoint,qty_multiple:0
|
||||||
msgid "The procurement quantity will be rounded up to this multiple."
|
msgid "The procurement quantity will be rounded up to this multiple."
|
||||||
msgstr ""
|
msgstr "Количество в заказе будет округляться до этого значения."
|
||||||
|
|
||||||
#. module: procurement
|
#. module: procurement
|
||||||
#: model:ir.model,name:procurement.model_res_company
|
#: model:ir.model,name:procurement.model_res_company
|
||||||
|
@ -655,7 +657,7 @@ msgstr "Заказ по максимуму"
|
||||||
#. module: procurement
|
#. module: procurement
|
||||||
#: sql_constraint:stock.picking:0
|
#: sql_constraint:stock.picking:0
|
||||||
msgid "Reference must be unique per Company!"
|
msgid "Reference must be unique per Company!"
|
||||||
msgstr ""
|
msgstr "Ссылка должна быть уникальна для каждой компании!"
|
||||||
|
|
||||||
#. module: procurement
|
#. module: procurement
|
||||||
#: field:procurement.order,date_close:0
|
#: field:procurement.order,date_close:0
|
||||||
|
@ -896,7 +898,7 @@ msgstr ""
|
||||||
#. module: procurement
|
#. module: procurement
|
||||||
#: sql_constraint:res.company:0
|
#: sql_constraint:res.company:0
|
||||||
msgid "The company name must be unique !"
|
msgid "The company name must be unique !"
|
||||||
msgstr ""
|
msgstr "Название компании должно быть уникальным!"
|
||||||
|
|
||||||
#. module: procurement
|
#. module: procurement
|
||||||
#: field:mrp.property,name:0
|
#: field:mrp.property,name:0
|
||||||
|
@ -995,7 +997,7 @@ msgstr ""
|
||||||
#. module: procurement
|
#. module: procurement
|
||||||
#: constraint:product.product:0
|
#: constraint:product.product:0
|
||||||
msgid "Error: Invalid ean code"
|
msgid "Error: Invalid ean code"
|
||||||
msgstr ""
|
msgstr "Ошибка: Неверный штрих-код"
|
||||||
|
|
||||||
#. module: procurement
|
#. module: procurement
|
||||||
#: code:addons/procurement/schedulers.py:152
|
#: code:addons/procurement/schedulers.py:152
|
||||||
|
|
|
@ -283,23 +283,11 @@
|
||||||
<menuitem id="menu_stock_procurement" name="Automatic Procurements" parent="stock.menu_stock_configuration" sequence="5"/>
|
<menuitem id="menu_stock_procurement" name="Automatic Procurements" parent="stock.menu_stock_configuration" sequence="5"/>
|
||||||
<menuitem action="action_orderpoint_form" id="menu_stock_order_points" parent="stock.menu_stock_configuration" sequence="10"/>
|
<menuitem action="action_orderpoint_form" id="menu_stock_order_points" parent="stock.menu_stock_configuration" sequence="10"/>
|
||||||
|
|
||||||
<record id="product_normal_form_view" model="ir.ui.view">
|
|
||||||
<field name="name">product.normal.form.orderpoint.inherit</field>
|
<record model="ir.actions.act_window" id="product_open_orderpoint">
|
||||||
<field name="model">product.product</field>
|
<field name="context">{'default_product_id': active_id, 'search_default_product_id': active_id}</field>
|
||||||
<field name="inherit_id" ref="stock.view_normal_procurement_locations_form"/>
|
<field name="name">Orderpoints</field>
|
||||||
<field name="arch" type="xml">
|
<field name="res_model">stock.warehouse.orderpoint</field>
|
||||||
<page string="Procurement & Locations" position="inside">
|
|
||||||
<separator string="Minimum Stock Rules"/>
|
|
||||||
<field name="orderpoint_ids" widget="one2many_list" mode="tree" context="{'default_product_id': active_id}">
|
|
||||||
<tree string="Reordering Rules">
|
|
||||||
<field name="name"/>
|
|
||||||
<field name="warehouse_id"/>
|
|
||||||
<field name="product_min_qty"/>
|
|
||||||
<field name="product_max_qty"/>
|
|
||||||
</tree>
|
|
||||||
</field>
|
|
||||||
</page>
|
|
||||||
</field>
|
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="ir.ui.view" id="product_form_view_procurement_button">
|
<record model="ir.ui.view" id="product_form_view_procurement_button">
|
||||||
|
@ -307,10 +295,9 @@
|
||||||
<field name="model">product.product</field>
|
<field name="model">product.product</field>
|
||||||
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<xpath expr="//field[@name='image_medium']" position="after">
|
<xpath expr="//div[@name='buttons']" position="inside">
|
||||||
<div class='oe_right oe_button_box'>
|
<button string="Request Procurement" name="%(act_make_procurement)d" type="action"/>
|
||||||
<button string="Procurement Request" name="%(act_make_procurement)d" type="action"/>
|
<button string="Orderpoints" name="%(product_open_orderpoint)d" type="action"/>
|
||||||
</div>
|
|
||||||
</xpath>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
||||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
|
||||||
"PO-Revision-Date: 2012-07-26 16:28+0000\n"
|
"PO-Revision-Date: 2012-08-30 18:22+0000\n"
|
||||||
"Last-Translator: Michael Otcheskih <otma@mail.ru>\n"
|
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-08-28 06:18+0000\n"
|
"X-Launchpad-Export-Date: 2012-08-31 04:56+0000\n"
|
||||||
"X-Generator: Launchpad (build 15864)\n"
|
"X-Generator: Launchpad (build 15887)\n"
|
||||||
|
|
||||||
#. module: product
|
#. module: product
|
||||||
#: model:product.template,name:product.product_product_ram512_product_template
|
#: model:product.template,name:product.product_product_ram512_product_template
|
||||||
|
@ -968,7 +968,7 @@ msgstr "Итоговый вес пакета"
|
||||||
#. module: product
|
#. module: product
|
||||||
#: field:product.template,seller_info_id:0
|
#: field:product.template,seller_info_id:0
|
||||||
msgid "unknown"
|
msgid "unknown"
|
||||||
msgstr ""
|
msgstr "неизвесно"
|
||||||
|
|
||||||
#. module: product
|
#. module: product
|
||||||
#: help:product.packaging,code:0
|
#: help:product.packaging,code:0
|
||||||
|
@ -1893,7 +1893,7 @@ msgstr "Другие ТМЦ"
|
||||||
#. module: product
|
#. module: product
|
||||||
#: field:product.product,color:0
|
#: field:product.product,color:0
|
||||||
msgid "Color Index"
|
msgid "Color Index"
|
||||||
msgstr ""
|
msgstr "Цветовая палитра"
|
||||||
|
|
||||||
#. module: product
|
#. module: product
|
||||||
#: view:product.product:0
|
#: view:product.product:0
|
||||||
|
@ -1919,7 +1919,7 @@ msgstr "Каталог поставщика"
|
||||||
#: code:addons/product/product.py:175
|
#: code:addons/product/product.py:175
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Warning"
|
msgid "Warning"
|
||||||
msgstr ""
|
msgstr "Внимание"
|
||||||
|
|
||||||
#. module: product
|
#. module: product
|
||||||
#: field:product.pricelist.item,base:0
|
#: field:product.pricelist.item,base:0
|
||||||
|
@ -2007,7 +2007,7 @@ msgstr ""
|
||||||
#: model:ir.actions.act_window,name:product.product_uom_categ_form_action
|
#: model:ir.actions.act_window,name:product.product_uom_categ_form_action
|
||||||
#: model:ir.ui.menu,name:product.menu_product_uom_categ_form_action
|
#: model:ir.ui.menu,name:product.menu_product_uom_categ_form_action
|
||||||
msgid "UoM Categories"
|
msgid "UoM Categories"
|
||||||
msgstr ""
|
msgstr "Категории единиц"
|
||||||
|
|
||||||
#. module: product
|
#. module: product
|
||||||
#: field:product.template,seller_delay:0
|
#: field:product.template,seller_delay:0
|
||||||
|
@ -2088,7 +2088,7 @@ msgstr "Поставщик ТМЦ"
|
||||||
#. module: product
|
#. module: product
|
||||||
#: field:product.product,product_image:0
|
#: field:product.product,product_image:0
|
||||||
msgid "Image"
|
msgid "Image"
|
||||||
msgstr ""
|
msgstr "Изображение"
|
||||||
|
|
||||||
#. module: product
|
#. module: product
|
||||||
#: field:product.uom,uom_type:0
|
#: field:product.uom,uom_type:0
|
||||||
|
|
|
@ -72,6 +72,8 @@
|
||||||
<label for="categ_id" class="oe_edit_only"/>
|
<label for="categ_id" class="oe_edit_only"/>
|
||||||
<h2><field name="categ_id"/></h2>
|
<h2><field name="categ_id"/></h2>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="oe_right oe_button_box" name="buttons">
|
||||||
|
</div>
|
||||||
<notebook>
|
<notebook>
|
||||||
<page string="Information">
|
<page string="Information">
|
||||||
<group>
|
<group>
|
||||||
|
|
|
@ -26,6 +26,7 @@ from osv import fields, osv
|
||||||
from openerp.addons.resource.faces import task as Task
|
from openerp.addons.resource.faces import task as Task
|
||||||
import time
|
import time
|
||||||
from tools.translate import _
|
from tools.translate import _
|
||||||
|
from openerp import SUPERUSER_ID
|
||||||
|
|
||||||
_TASK_STATE = [('draft', 'New'),('open', 'In Progress'),('pending', 'Pending'), ('done', 'Done'), ('cancelled', 'Cancelled')]
|
_TASK_STATE = [('draft', 'New'),('open', 'In Progress'),('pending', 'Pending'), ('done', 'Done'), ('cancelled', 'Cancelled')]
|
||||||
|
|
||||||
|
@ -877,7 +878,7 @@ class task(base_stage, osv.osv):
|
||||||
if context is None: context = {}
|
if context is None: context = {}
|
||||||
# read uom as admin to avoid access rights issues, e.g. for portal/share users,
|
# read uom as admin to avoid access rights issues, e.g. for portal/share users,
|
||||||
# this should be safe (no context passed to avoid side-effects)
|
# this should be safe (no context passed to avoid side-effects)
|
||||||
obj_tm = users_obj.browse(cr, 1, uid, context=context).company_id.project_time_mode_id
|
obj_tm = users_obj.browse(cr, SUPERUSER_ID, uid, context=context).company_id.project_time_mode_id
|
||||||
tm = obj_tm and obj_tm.name or 'Hours'
|
tm = obj_tm and obj_tm.name or 'Hours'
|
||||||
|
|
||||||
res = super(task, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar, submenu=submenu)
|
res = super(task, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar, submenu=submenu)
|
||||||
|
|
|
@ -273,7 +273,7 @@ class account_analytic_account(osv.osv):
|
||||||
_inherit = 'account.analytic.account'
|
_inherit = 'account.analytic.account'
|
||||||
_description = 'Analytic Account'
|
_description = 'Analytic Account'
|
||||||
_columns = {
|
_columns = {
|
||||||
'use_phases': fields.boolean('Phases Planing', help="Check this field if project manages phases"),
|
'use_phases': fields.boolean('Phases', help="Check this field if you plan to use phase-based scheduling"),
|
||||||
}
|
}
|
||||||
|
|
||||||
def on_change_template(self, cr, uid, ids, template_id, context=None):
|
def on_change_template(self, cr, uid, ids, template_id, context=None):
|
||||||
|
|
|
@ -96,11 +96,14 @@
|
||||||
<field name="model">project.project</field>
|
<field name="model">project.project</field>
|
||||||
<field name="inherit_id" ref="project.edit_project"/>
|
<field name="inherit_id" ref="project.edit_project"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<xpath expr='//tr[@name="use_tasks_row"]' position='after'>
|
<xpath expr="//div[@name='options_active']" position='inside'>
|
||||||
<tr>
|
<field name="use_phases" class="oe_inline"/>
|
||||||
<td><group><field name="use_phases"/></group></td>
|
<label for="use_phases"/>
|
||||||
<td><button icon="terp-gtk-go-back-rtl" name="%(act_project_phases)d" string="Phases" type="action" attrs="{'invisible':[('use_phases','=', 0)]}"/></td>
|
</xpath>
|
||||||
</tr>
|
<xpath expr="//div[@name='buttons']" position='inside'>
|
||||||
|
<button icon="terp-gtk-go-back-rtl" name="%(act_project_phases)d"
|
||||||
|
string="Phases" type="action"
|
||||||
|
attrs="{'invisible':[('use_phases','=', 0)]}"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -347,11 +350,9 @@
|
||||||
<field name="inherit_id" ref="analytic.view_account_analytic_account_form"/>
|
<field name="inherit_id" ref="analytic.view_account_analytic_account_form"/>
|
||||||
<field eval="18" name="priority"/>
|
<field eval="18" name="priority"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<xpath expr='//separator[@name="project_sep"]' position='replace'>
|
<xpath expr='//div[@name="project"]' position='inside'>
|
||||||
<separator name="project_sep" string="Project Management" colspan="4"/> <!-- removal of invisible attribute -->
|
|
||||||
</xpath>
|
|
||||||
<xpath expr='//separator[@name="project_sep"]' position='after'>
|
|
||||||
<field name="use_phases"/>
|
<field name="use_phases"/>
|
||||||
|
<label for="use_phases"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -259,8 +259,8 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<tree string="Sales Order Lines" editable="bottom">
|
<tree string="Sales Order Lines" editable="bottom">
|
||||||
|
<field name="sequence" widget="handle"/>
|
||||||
<field name="state" invisible="1"/>
|
<field name="state" invisible="1"/>
|
||||||
<field name="sequence" invisible="1"/>
|
|
||||||
<field name="delay" invisible="1"/>
|
<field name="delay" invisible="1"/>
|
||||||
<field name="tax_id" invisible="1"/>
|
<field name="tax_id" invisible="1"/>
|
||||||
<field name="type" invisible="1"/>
|
<field name="type" invisible="1"/>
|
||||||
|
|
|
@ -7,30 +7,30 @@ msgstr ""
|
||||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
|
||||||
"PO-Revision-Date: 2012-08-18 17:40+0000\n"
|
"PO-Revision-Date: 2012-08-31 14:59+0000\n"
|
||||||
"Last-Translator: Heling Yao <Unknown>\n"
|
"Last-Translator: ccdos <Unknown>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-08-28 06:07+0000\n"
|
"X-Launchpad-Export-Date: 2012-09-01 04:55+0000\n"
|
||||||
"X-Generator: Launchpad (build 15864)\n"
|
"X-Generator: Launchpad (build 15890)\n"
|
||||||
|
|
||||||
#. module: sale_crm
|
#. module: sale_crm
|
||||||
#: field:sale.order,categ_id:0
|
#: field:sale.order,categ_id:0
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr ""
|
msgstr "分类"
|
||||||
|
|
||||||
#. module: sale_crm
|
#. module: sale_crm
|
||||||
#: sql_constraint:sale.order:0
|
#: sql_constraint:sale.order:0
|
||||||
msgid "Order Reference must be unique per Company!"
|
msgid "Order Reference must be unique per Company!"
|
||||||
msgstr ""
|
msgstr "订单号必须在一个公司范围内唯一"
|
||||||
|
|
||||||
#. module: sale_crm
|
#. module: sale_crm
|
||||||
#: code:addons/sale_crm/wizard/crm_make_sale.py:112
|
#: code:addons/sale_crm/wizard/crm_make_sale.py:112
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Converted to Sales Quotation(%s)."
|
msgid "Converted to Sales Quotation(%s)."
|
||||||
msgstr ""
|
msgstr "转换为销售报价单(%s)。"
|
||||||
|
|
||||||
#. module: sale_crm
|
#. module: sale_crm
|
||||||
#: view:crm.make.sale:0
|
#: view:crm.make.sale:0
|
||||||
|
@ -73,7 +73,7 @@ msgstr "在生成销售订单后检查是否关闭商机。"
|
||||||
#. module: sale_crm
|
#. module: sale_crm
|
||||||
#: view:board.board:0
|
#: view:board.board:0
|
||||||
msgid "My Opportunities"
|
msgid "My Opportunities"
|
||||||
msgstr ""
|
msgstr "我的商机"
|
||||||
|
|
||||||
#. module: sale_crm
|
#. module: sale_crm
|
||||||
#: view:crm.lead:0
|
#: view:crm.lead:0
|
||||||
|
@ -104,13 +104,13 @@ msgstr "关闭商机"
|
||||||
#. module: sale_crm
|
#. module: sale_crm
|
||||||
#: view:board.board:0
|
#: view:board.board:0
|
||||||
msgid "My Planned Revenues by Stage"
|
msgid "My Planned Revenues by Stage"
|
||||||
msgstr ""
|
msgstr "这阶段我的计划收入"
|
||||||
|
|
||||||
#. module: sale_crm
|
#. module: sale_crm
|
||||||
#: code:addons/sale_crm/wizard/crm_make_sale.py:110
|
#: code:addons/sale_crm/wizard/crm_make_sale.py:110
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Opportunity '%s' is converted to Quotation."
|
msgid "Opportunity '%s' is converted to Quotation."
|
||||||
msgstr ""
|
msgstr "商机 '%s' 被转换为报价单"
|
||||||
|
|
||||||
#. module: sale_crm
|
#. module: sale_crm
|
||||||
#: view:sale.order:0
|
#: view:sale.order:0
|
||||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
||||||
"Project-Id-Version: openobject-addons\n"
|
"Project-Id-Version: openobject-addons\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
|
||||||
"PO-Revision-Date: 2011-06-28 05:04+0000\n"
|
"PO-Revision-Date: 2012-08-31 14:59+0000\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: ccdos <Unknown>\n"
|
||||||
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
|
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-08-28 06:34+0000\n"
|
"X-Launchpad-Export-Date: 2012-09-01 04:55+0000\n"
|
||||||
"X-Generator: Launchpad (build 15864)\n"
|
"X-Generator: Launchpad (build 15890)\n"
|
||||||
|
|
||||||
#. module: sale_mrp
|
#. module: sale_mrp
|
||||||
#: help:mrp.production,sale_ref:0
|
#: help:mrp.production,sale_ref:0
|
||||||
|
@ -40,12 +40,12 @@ msgstr "销售名称"
|
||||||
#. module: sale_mrp
|
#. module: sale_mrp
|
||||||
#: sql_constraint:mrp.production:0
|
#: sql_constraint:mrp.production:0
|
||||||
msgid "Reference must be unique per Company!"
|
msgid "Reference must be unique per Company!"
|
||||||
msgstr ""
|
msgstr "编号必须在公司内唯一!"
|
||||||
|
|
||||||
#. module: sale_mrp
|
#. module: sale_mrp
|
||||||
#: constraint:mrp.production:0
|
#: constraint:mrp.production:0
|
||||||
msgid "Order quantity cannot be negative or zero!"
|
msgid "Order quantity cannot be negative or zero!"
|
||||||
msgstr ""
|
msgstr "订单数量不能是负数或者0!"
|
||||||
|
|
||||||
#. module: sale_mrp
|
#. module: sale_mrp
|
||||||
#: help:mrp.production,sale_name:0
|
#: help:mrp.production,sale_name:0
|
||||||
|
|
|
@ -23,6 +23,7 @@ import random
|
||||||
import time
|
import time
|
||||||
from urllib import quote_plus
|
from urllib import quote_plus
|
||||||
import uuid
|
import uuid
|
||||||
|
from openerp import SUPERUSER_ID
|
||||||
|
|
||||||
import simplejson
|
import simplejson
|
||||||
|
|
||||||
|
@ -545,7 +546,7 @@ class share_wizard(osv.TransientModel):
|
||||||
_logger.debug("Copying rule %s (%s) on model %s with domain: %s", rule.name, rule.id, model.model, rule.domain_force)
|
_logger.debug("Copying rule %s (%s) on model %s with domain: %s", rule.name, rule.id, model.model, rule.domain_force)
|
||||||
else:
|
else:
|
||||||
# otherwise we can simply link the rule to keep it dynamic
|
# otherwise we can simply link the rule to keep it dynamic
|
||||||
rule_obj.write(cr, 1, [rule.id], {
|
rule_obj.write(cr, SUPERUSER_ID, [rule.id], {
|
||||||
'groups': [(4,group_id)]
|
'groups': [(4,group_id)]
|
||||||
})
|
})
|
||||||
_logger.debug("Linking rule %s (%s) on model %s with domain: %s", rule.name, rule.id, model.model, rule.domain_force)
|
_logger.debug("Linking rule %s (%s) on model %s with domain: %s", rule.name, rule.id, model.model, rule.domain_force)
|
||||||
|
|
Loading…
Reference in New Issue