[MERGE] Merge from trunk addons

bzr revid: mra@mra-laptop-20110316043544-su18vv9wgf1px5qa
This commit is contained in:
Mustufa Rangwala
2011-03-16 10:05:44 +05:30
70 changed files with 4513 additions and 830 deletions
+9 -3
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-03-13 20:17+0000\n"
"PO-Revision-Date: 2011-03-14 19:24+0000\n"
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-03-14 04:46+0000\n"
"X-Launchpad-Export-Date: 2011-03-15 04:54+0000\n"
"X-Generator: Launchpad (build 12559)\n"
#. module: account
@@ -2573,6 +2573,10 @@ msgid ""
"Note that journal entries that are automatically created by the system are "
"always skipping that state."
msgstr ""
"Отметьте, если не хотите, чтобы новые записи в журнале проходили через "
"состояние 'Черновик', а сразу проводились без утверждения вручную. \n"
"Автоматически создаваемые системой записи в журнал всегда пропускают это "
"состояние."
#. module: account
#: model:ir.actions.server,name:account.ir_actions_server_action_wizard_multi_chart
@@ -3480,6 +3484,8 @@ msgstr "Счета к оплате"
msgid ""
"You cannot create entries on different periods/journals in the same move"
msgstr ""
"Вы не можете создавать проводки по разным периодам / журналам в одном "
"действии."
#. module: account
#: model:process.node,name:account.process_node_supplierpaymentorder0
@@ -7892,7 +7898,7 @@ msgstr "Общая сумма к оплате этому поставщику."
#: model:process.node,name:account.process_node_analytic0
#: model:process.node,name:account.process_node_analyticcost0
msgid "Analytic Costs"
msgstr ""
msgstr "Аналитические расходы"
#. module: account
#: field:account.analytic.journal,name:0
@@ -143,15 +143,15 @@ class account_automatic_reconcile(osv.osv_memory):
obj_model = self.pool.get('ir.model.data')
if context is None:
context = {}
form = self.read(cr, uid, ids, [])[0]
max_amount = form.get('max_amount', False) and form.get('max_amount') or 0.0
power = form['power']
allow_write_off = form['allow_write_off']
form = self.browse(cr, uid, ids, context=context)[0]
max_amount = form.max_amount or 0.0
power = form.power
allow_write_off = form.allow_write_off
reconciled = unreconciled = 0
if not form['account_ids']:
if not form.account_ids:
raise osv.except_osv(_('UserError'), _('You must select accounts to reconcile'))
for account_id in form['account_ids']:
params = (account_id,)
for account_id in form.account_ids:
params = (account_id.id,)
if not allow_write_off:
query = """SELECT partner_id FROM account_move_line WHERE account_id=%s AND reconcile_id IS NULL
AND state <> 'draft' GROUP BY partner_id
@@ -172,12 +172,12 @@ class account_automatic_reconcile(osv.osv_memory):
"AND partner_id=%s " \
"AND state <> 'draft' " \
"AND reconcile_id IS NULL",
(account_id, partner_id))
(account_id.id, partner_id))
line_ids = [id for (id,) in cr.fetchall()]
if line_ids:
reconciled += len(line_ids)
if allow_write_off:
move_line_obj.reconcile(cr, uid, line_ids, 'auto', form['writeoff_acc_id'], form['period_id'], form['journal_id'], context)
move_line_obj.reconcile(cr, uid, line_ids, 'auto', form.writeoff_acc_id.id, form.period_id.id, form.journal_id.id, context)
else:
move_line_obj.reconcile_partial(cr, uid, line_ids, 'manual', context=context)
@@ -191,7 +191,7 @@ class account_automatic_reconcile(osv.osv_memory):
"AND partner_id IS NOT NULL " \
"GROUP BY partner_id " \
"HAVING count(*)>1",
(account_id,))
(account_id.id,))
partner_ids = [id for (id,) in cr.fetchall()]
#filter?
for partner_id in partner_ids:
@@ -205,7 +205,7 @@ class account_automatic_reconcile(osv.osv_memory):
"AND state <> 'draft' " \
"AND debit > 0 " \
"ORDER BY date_maturity",
(account_id, partner_id))
(account_id.id, partner_id))
debits = cr.fetchall()
# get the list of unreconciled 'credit transactions' for this partner
@@ -218,10 +218,10 @@ class account_automatic_reconcile(osv.osv_memory):
"AND state <> 'draft' " \
"AND credit > 0 " \
"ORDER BY date_maturity",
(account_id, partner_id))
(account_id.id, partner_id))
credits = cr.fetchall()
(rec, unrec) = self.do_reconcile(cr, uid, credits, debits, max_amount, power, form['writeoff_acc_id'], form['period_id'], form['journal_id'], context)
(rec, unrec) = self.do_reconcile(cr, uid, credits, debits, max_amount, power, form.writeoff_acc_id.id, form.period_id.id, form.journal_id.id, context)
reconciled += rec
unreconciled += unrec
@@ -234,7 +234,7 @@ class account_automatic_reconcile(osv.osv_memory):
"WHERE account_id=%s " \
"AND reconcile_id IS NULL " \
"AND state <> 'draft' " + partner_filter,
(account_id,))
(account_id.id,))
additional_unrec = cr.fetchone()[0]
unreconciled = unreconciled + additional_unrec
context.update({'reconciled': reconciled, 'unreconciled': unreconciled})
@@ -252,4 +252,4 @@ class account_automatic_reconcile(osv.osv_memory):
account_automatic_reconcile()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -45,8 +45,8 @@ class account_change_currency(osv.osv_memory):
obj_currency = self.pool.get('res.currency')
if context is None:
context = {}
data = self.read(cr, uid, ids)[0]
new_currency = data['currency_id']
data = self.browse(cr, uid, ids, context=context)[0]
new_currency = data.currency_id.id
invoice = obj_inv.browse(cr, uid, context['active_id'], context=context)
if invoice.currency_id.id == new_currency:
@@ -76,4 +76,4 @@ class account_change_currency(osv.osv_memory):
account_change_currency()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -56,22 +56,22 @@ class account_fiscalyear_close(osv.osv_memory):
obj_acc_account = self.pool.get('account.account')
obj_acc_journal_period = self.pool.get('account.journal.period')
data = self.read(cr, uid, ids, context=context)
data = self.browse(cr, uid, ids, context=context)
if context is None:
context = {}
fy_id = data[0]['fy_id']
fy_id = data[0].fy_id.id
cr.execute("SELECT id FROM account_period WHERE date_stop < (SELECT date_start FROM account_fiscalyear WHERE id = %s)", (str(data[0]['fy2_id']),))
cr.execute("SELECT id FROM account_period WHERE date_stop < (SELECT date_start FROM account_fiscalyear WHERE id = %s)", (str(data[0].fy2_id.id),))
fy_period_set = ','.join(map(lambda id: str(id[0]), cr.fetchall()))
cr.execute("SELECT id FROM account_period WHERE date_start > (SELECT date_stop FROM account_fiscalyear WHERE id = %s)", (str(fy_id),))
fy2_period_set = ','.join(map(lambda id: str(id[0]), cr.fetchall()))
period = obj_acc_period.browse(cr, uid, data[0]['period_id'], context=context)
new_fyear = obj_acc_fiscalyear.browse(cr, uid, data[0]['fy2_id'], context=context)
old_fyear = obj_acc_fiscalyear.browse(cr, uid, data[0]['fy_id'], context=context)
period = obj_acc_period.browse(cr, uid, data[0].period_id.id, context=context)
new_fyear = obj_acc_fiscalyear.browse(cr, uid, data[0].fy2_id.id, context=context)
old_fyear = obj_acc_fiscalyear.browse(cr, uid, fy_id, context=context)
new_journal = data[0]['journal_id']
new_journal = data[0].journal_id.id
new_journal = obj_acc_journal.browse(cr, uid, new_journal, context=context)
if not new_journal.default_credit_account_id or not new_journal.default_debit_account_id:
@@ -107,7 +107,7 @@ class account_fiscalyear_close(osv.osv_memory):
obj_acc_move_line.create(cr, uid, {
'debit': account.balance>0 and account.balance,
'credit': account.balance<0 and -account.balance,
'name': data[0]['report_name'],
'name': data[0].report_name,
'date': period.date_start,
'journal_id': new_journal.id,
'period_id': period.id,
@@ -204,7 +204,7 @@ class account_fiscalyear_close(osv.osv_memory):
if ids:
obj_acc_move_line.reconcile(cr, uid, ids, context=context)
new_period = data[0]['period_id']
new_period = data[0].period_id.id
ids = obj_acc_journal_period.search(cr, uid, [('journal_id','=',new_journal.id),('period_id','=',new_period)])
if not ids:
ids = [obj_acc_journal_period.create(cr, uid, {
@@ -41,7 +41,7 @@ class account_fiscalyear_close_state(osv.osv_memory):
"""
for data in self.read(cr, uid, ids, context=context):
fy_id = data['fy_id']
fy_id = data['fy_id'][0]
cr.execute('UPDATE account_journal_period ' \
'SET state = %s ' \
@@ -61,4 +61,4 @@ class account_fiscalyear_close_state(osv.osv_memory):
account_fiscalyear_close_state()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+11 -11
View File
@@ -88,29 +88,29 @@ class account_invoice_refund(osv.osv_memory):
if context is None:
context = {}
for form in self.read(cr, uid, ids, context=context):
for form in self.browse(cr, uid, ids, context=context):
created_inv = []
date = False
period = False
description = False
company = res_users_obj.browse(cr, uid, uid, context=context).company_id
journal_id = form.get('journal_id', False)
journal_id = form.journal_id.id
for inv in inv_obj.browse(cr, uid, context.get('active_ids'), context=context):
if inv.state in ['draft', 'proforma2', 'cancel']:
raise osv.except_osv(_('Error !'), _('Can not %s draft/proforma/cancel invoice.') % (mode))
if inv.reconciled and mode in ('cancel', 'modify'):
raise osv.except_osv(_('Error !'), _('Can not %s invoice which is already reconciled, invoice should be unreconciled first. You can only Refund this invoice') % (mode))
if form['period']:
period = form['period']
if form.period.id:
period = form.period.id
else:
period = inv.period_id and inv.period_id.id or False
if not journal_id:
journal_id = inv.journal_id.id
if form['date']:
date = form['date']
if not form['period']:
if form.date:
date = form.date
if not form.period.id:
cr.execute("select name from ir_model_fields \
where model = 'account.period' \
and name = 'company_id'")
@@ -128,8 +128,8 @@ class account_invoice_refund(osv.osv_memory):
period = res[0]
else:
date = inv.date_invoice
if form['description']:
description = form['description']
if form.description:
description = form.description
else:
description = inv.name
@@ -211,10 +211,10 @@ class account_invoice_refund(osv.osv_memory):
return result
def invoice_refund(self, cr, uid, ids, context=None):
data_refund = self.read(cr, uid, ids, [],context=context)[0]['filter_refund']
data_refund = self.read(cr, uid, ids, ['filter_refund'],context=context)[0]['filter_refund']
return self.compute_refund(cr, uid, ids, data_refund, context=context)
account_invoice_refund()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -148,7 +148,7 @@ class account_move_journal(osv.osv_memory):
journal_id = self._get_journal(cr, uid, context)
period_id = self._get_period(cr, uid, context)
target_move = self.read(cr, uid, ids, [])[0]['target_move']
target_move = self.read(cr, uid, ids, ['target_move'], context=context)[0]['target_move']
name = _("Journal Items")
if journal_id:
@@ -31,14 +31,13 @@ class account_open_closed_fiscalyear(osv.osv_memory):
}
def remove_entries(self, cr, uid, ids, context=None):
fy_obj = self.pool.get('account.fiscalyear')
move_obj = self.pool.get('account.move')
data = self.read(cr, uid, ids, [], context=context)[0]
data_fyear = fy_obj.browse(cr, uid, data['fyear_id'], context=context)
if not data_fyear.end_journal_period_id:
data = self.browse(cr, uid, ids, context=context)[0]
period_journal = data.fyear_id.end_journal_period_id or False
if not period_journal:
raise osv.except_osv(_('Error !'), _('No End of year journal defined for the fiscal year'))
period_journal = data_fyear.end_journal_period_id
ids_move = move_obj.search(cr, uid, [('journal_id','=',period_journal.journal_id.id),('period_id','=',period_journal.period_id.id)])
if ids_move:
cr.execute('delete from account_move where id IN %s', (tuple(ids_move),))
@@ -46,4 +45,4 @@ class account_open_closed_fiscalyear(osv.osv_memory):
account_open_closed_fiscalyear()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -131,7 +131,10 @@ class account_common_report(osv.osv_memory):
data = {}
data['ids'] = context.get('active_ids', [])
data['model'] = context.get('active_model', 'ir.ui.menu')
data['form'] = self.read(cr, uid, ids, ['date_from', 'date_to', 'fiscalyear_id', 'journal_ids', 'period_from', 'period_to', 'filter', 'chart_account_id', 'target_move'])[0]
data['form'] = self.read(cr, uid, ids, ['date_from', 'date_to', 'fiscalyear_id', 'journal_ids', 'period_from', 'period_to', 'filter', 'chart_account_id', 'target_move'], context=context)[0]
for field in ['fiscalyear_id', 'chart_account_id', 'period_from', 'period_to']:
if isinstance(data['form'][field], tuple):
data['form'][field] = data['form'][field][0]
used_context = self._build_contexts(cr, uid, ids, data, context=context)
data['form']['periods'] = used_context.get('periods', False) and used_context['periods'] or []
data['form']['used_context'] = used_context
+10 -12
View File
@@ -54,21 +54,19 @@ class account_tax_chart(osv.osv_memory):
period_obj = self.pool.get('account.period')
if context is None:
context = {}
data = self.read(cr, uid, ids, [], context=context)[0]
data = self.browse(cr, uid, ids, context=context)[0]
result = mod_obj.get_object_reference(cr, uid, 'account', 'action_tax_code_tree')
id = result and result[1] or False
result = act_obj.read(cr, uid, [id], context=context)[0]
if data['period_id']:
fiscalyear_id = period_obj.read(cr, uid, [data['period_id']], context=context)[0]['fiscalyear_id'][0]
result['context'] = str({'period_id': data['period_id'], \
'fiscalyear_id': fiscalyear_id, \
'state': data['target_move']})
else:
result['context'] = str({'state': data['target_move']})
if data['period_id']:
period_code = period_obj.read(cr, uid, [data['period_id']], context=context)[0]['code']
if data.period_id:
result['context'] = str({'period_id': data.period_id.id, \
'fiscalyear_id': data.period_id.fiscalyear_id.id, \
'state': data.target_move})
period_code = data.period_id.code
result['name'] += period_code and (':' + period_code) or ''
else:
result['context'] = str({'state': data.target_move})
return result
_defaults = {
@@ -78,4 +76,4 @@ class account_tax_chart(osv.osv_memory):
account_tax_chart()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -33,8 +33,8 @@ class validate_account_move(osv.osv_memory):
obj_move = self.pool.get('account.move')
if context is None:
context = {}
data = self.read(cr, uid, ids, context=context)[0]
ids_move = obj_move.search(cr, uid, [('state','=','draft'),('journal_id','=',data['journal_id']),('period_id','=',data['period_id'])])
data = self.browse(cr, uid, ids, context=context)[0]
ids_move = obj_move.search(cr, uid, [('state','=','draft'),('journal_id','=',data.journal_id.id),('period_id','=',data.period_id.id)])
if not ids_move:
raise osv.except_osv(_('Warning'), _('Specified Journal does not have any account move entries in draft state for this period'))
obj_move.button_validate(cr, uid, ids_move, context=context)
+4 -1
View File
@@ -46,7 +46,10 @@ class account_vat_declaration(osv.osv_memory):
context = {}
datas = {'ids': context.get('active_ids', [])}
datas['model'] = 'account.tax.code'
datas['form'] = self.read(cr, uid, ids)[0]
datas['form'] = self.read(cr, uid, ids, context=context)[0]
for field in datas['form'].keys():
if isinstance(datas['form'][field], tuple):
datas['form'][field] = datas['form'][field][0]
datas['form']['company_id'] = self.pool.get('account.tax.code').browse(cr, uid, [datas['form']['chart_tax_id']], context=context)[0].company_id.id
return {
'type': 'ir.actions.report.xml',
@@ -45,6 +45,7 @@ class account_crossovered_analytic(osv.osv_memory):
acc_ids = [x[0] for x in res]
data = self.read(cr, uid, ids, [], context=context)[0]
data['ref'] = data['ref'][0]
obj_acc = self.pool.get('account.analytic.account').browse(cr, uid, data['ref'], context=context)
name = obj_acc.name
@@ -72,4 +73,4 @@ class account_crossovered_analytic(osv.osv_memory):
account_crossovered_analytic()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -69,14 +69,14 @@ class account_coda_import(osv.osv_memory):
if context is None:
context = {}
data = self.read(cr, uid, ids)[0]
data = self.browse(cr, uid, ids, context=context)[0]
codafile = data['coda']
journal_code = journal_obj.browse(cr, uid, data['journal_id'], context=context).code
codafile = data.coda
journal_code = data.journal_id.code
period = account_period_obj.find(cr, uid, context=context)[0]
def_pay_acc = data['def_payable']
def_rec_acc = data['def_receivable']
def_pay_acc = data.def_payable.id
def_rec_acc = data.def_receivable.id
err_log = "Errors:\n------\n"
nb_err=0
@@ -96,7 +96,7 @@ class account_coda_import(osv.osv_memory):
bank_statement["bank_statement_line"]={}
bank_statement_lines = {}
bank_statement['date'] = str2date(line[5:11])
bank_statement['journal_id']=data['journal_id']
bank_statement['journal_id']=data.journal_id.id
period_id = account_period_obj.search(cr, uid, [('date_start', '<=', time.strftime('%Y-%m-%d', time.strptime(bank_statement['date'], "%y/%m/%d"))), ('date_stop', '>=', time.strftime('%Y-%m-%d', time.strptime(bank_statement['date'], "%y/%m/%d")))])
bank_statement['period_id'] = period_id and period_id[0] or False
bank_statement['state']='draft'
@@ -144,7 +144,7 @@ class account_coda_import(osv.osv_memory):
bank_statement["bank_statement_line"]=bank_statement_lines
elif line[1] == '2':
st_line_name = line[2:6]
bank_statement_lines[st_line_name].update({'account_id': data['awaiting_account']})
bank_statement_lines[st_line_name].update({'account_id': data.awaiting_account.id})
elif line[1] == '3':
# movement data record 3.1
@@ -165,7 +165,7 @@ class account_coda_import(osv.osv_memory):
else:
nb_err += 1
err_log += _('The bank account %s is not defined for the partner %s.\n')%(cntry_number, contry_name)
bank_statement_lines[st_line_name].update({'account_id': data['awaiting_account']})
bank_statement_lines[st_line_name].update({'account_id': data.awaiting_account.id})
bank_statement["bank_statement_line"]=bank_statement_lines
elif line[0]=='3':
@@ -296,7 +296,7 @@ class account_coda_import(osv.osv_memory):
'name': codafile,
'statement_ids': [(6, 0, bkst_list,)],
'note': str_log1+str_not+std_log+err_log,
'journal_id': data['journal_id'],
'journal_id': data.journal_id.id,
'date': time.strftime("%Y-%m-%d"),
'user_id': uid,
})
@@ -336,4 +336,4 @@ class account_coda_import(osv.osv_memory):
account_coda_import()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -48,10 +48,10 @@ class account_followup_print(osv.osv_memory):
if context is None:
context = {}
data = self.read(cr, uid, ids, [], context=context)[0]
data = self.browse(cr, uid, ids, context=context)[0]
model_data_ids = mod_obj.search(cr, uid, [('model','=','ir.ui.view'),('name','=','view_account_followup_print_all')], context=context)
resource_id = mod_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id']
context.update({'followup_id': data['followup_id'], 'date':data['date']})
context.update({'followup_id': data.followup_id.id, 'date':data.date})
return {
'name': _('Select Partners'),
'view_type': 'form',
@@ -146,7 +146,7 @@ class account_followup_print_all(osv.osv_memory):
if context is None:
context = {}
if ids:
data = self.read(cr, uid, ids, [], context=context)[0]
data = self.browse(cr, uid, ids, context=context)[0]
cr.execute(
"SELECT l.partner_id, l.followup_line_id,l.date_maturity, l.date, l.id "\
"FROM account_move_line AS l "\
@@ -162,8 +162,8 @@ class account_followup_print_all(osv.osv_memory):
move_lines = cr.fetchall()
old = None
fups = {}
fup_id = 'followup_id' in context and context['followup_id'] or data['followup_id']
date = 'date' in context and context['date'] or data['date']
fup_id = 'followup_id' in context and context['followup_id'] or data.followup_id.id
date = 'date' in context and context['date'] or data.date
current_date = datetime.date(*time.strptime(date,
'%Y-%m-%d')[:3])
@@ -208,14 +208,15 @@ class account_followup_print_all(osv.osv_memory):
if context is None:
context = {}
data = self.read(cr, uid, ids, [], context=context)[0]
data = self.browse(cr, uid, ids, context=context)[0]
partner_ids = [partner_id.id for partner_id in data.partner_ids]
model_data_ids = mod_obj.search(cr, uid, [('model','=','ir.ui.view'),('name','=','view_account_followup_print_all_msg')], context=context)
resource_id = mod_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id']
if data['email_conf']:
if data.email_conf:
msg_sent = ''
msg_unsent = ''
data_user = user_obj.browse(cr, uid, uid, context=context)
move_lines = line_obj.browse(cr, uid, data['partner_ids'], context=context)
move_lines = line_obj.browse(cr, uid, partner_ids, context=context)
partners = []
dict_lines = {}
for line in move_lines:
@@ -235,8 +236,8 @@ class account_followup_print_all(osv.osv_memory):
if adr.email:
dest = [adr.email]
src = tools.config.options['email_from']
if not data['partner_lang']:
body = data['email_body']
if not data.partner_lang:
body = data.email_body
else:
cxt = context.copy()
cxt['lang'] = partner.lang
@@ -272,7 +273,7 @@ class account_followup_print_all(osv.osv_memory):
'date':time.strftime('%Y-%m-%d'),
}
body = body%val
sub = tools.ustr(data['email_subject'])
sub = tools.ustr(data.email_subject)
msg = ''
if dest:
try:
@@ -37,7 +37,8 @@ class account_invoice_with_message(report_sxw.rml_parse):
self.context = context
def spcl_msg(self, form):
account_msg_data = pooler.get_pool(self.cr.dbname).get('notify.message').browse(self.cr, self.uid, form['message'])
msg_id = form['message'][0]
account_msg_data = pooler.get_pool(self.cr.dbname).get('notify.message').browse(self.cr, self.uid, msg_id)
msg = account_msg_data.msg
return msg
+11 -6
View File
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-02-21 17:42+0000\n"
"PO-Revision-Date: 2011-03-14 07:27+0000\n"
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-02-22 04:54+0000\n"
"X-Generator: Launchpad (build 12351)\n"
"X-Launchpad-Export-Date: 2011-03-15 04:55+0000\n"
"X-Generator: Launchpad (build 12559)\n"
#. module: account_payment
#: field:payment.order,date_scheduled:0
@@ -40,7 +40,7 @@ msgstr "Выберите режим платежа для применения"
#: view:payment.mode:0
#: view:payment.order:0
msgid "Group By..."
msgstr "Объединять по..."
msgstr "Группировать по ..."
#. module: account_payment
#: model:ir.module.module,description:account_payment.module_meta_information
@@ -51,6 +51,11 @@ msgid ""
"* a basic mechanism to easily plug various automated payment.\n"
" "
msgstr ""
"\n"
"Этот модуль обеспечивает :\n"
"* более эффективный способ управления оплатой счетов.\n"
"* постой механизм для разных автоматических платежей.\n"
" "
#. module: account_payment
#: field:payment.order,line_ids:0
@@ -305,7 +310,7 @@ msgstr "Искать платежные поручения"
#: constraint:account.move.line:0
msgid ""
"You can not create move line on receivable/payable account without partner"
msgstr ""
msgstr "Нельзя сделать действие по дебетовому/кредитовому счету без партнера"
#. module: account_payment
#: field:payment.line,create_date:0
@@ -377,7 +382,7 @@ msgstr "Если дата платежа не задана, банк сразу
#. module: account_payment
#: model:ir.model,name:account_payment.model_account_payment_populate_statement
msgid "Account Payment Populate Statement"
msgstr ""
msgstr "Заполнение платежного поручения"
#. module: account_payment
#: help:payment.mode,name:0
@@ -62,8 +62,8 @@ class payment_order_create(osv.osv_memory):
payment_obj = self.pool.get('payment.line')
if context is None:
context = {}
data = self.read(cr, uid, ids, [], context=context)[0]
line_ids = data['entries']
data = self.browse(cr, uid, ids, context=context)[0]
line_ids = [entry.id for entry in data.entries]
if not line_ids:
return {'type': 'ir.actions.act_window_close'}
@@ -97,8 +97,8 @@ class payment_order_create(osv.osv_memory):
mod_obj = self.pool.get('ir.model.data')
if context is None:
context = {}
data = self.read(cr, uid, ids, [], context=context)[0]
search_due_date = data['duedate']
data = self.browse(cr, uid, ids, context=context)[0]
search_due_date = data.duedate
# payment = self.pool.get('payment.order').browse(cr, uid, context['active_id'], context=context)
# Search for move line to pay:
+18 -10
View File
@@ -8,26 +8,28 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-03-05 12:14+0000\n"
"Last-Translator: Stanislav Hanzhin <Unknown>\n"
"PO-Revision-Date: 2011-03-14 07:15+0000\n"
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
"Language-Team: Russian <ru@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-03-06 04:50+0000\n"
"X-Generator: Launchpad (build 12351)\n"
"X-Launchpad-Export-Date: 2011-03-15 04:55+0000\n"
"X-Generator: Launchpad (build 12559)\n"
#. module: account_sequence
#: view:account.sequence.installer:0
#: model:ir.actions.act_window,name:account_sequence.action_account_seq_installer
msgid "Account Sequence Application Configuration"
msgstr ""
msgstr "Настройка нумерации по счету"
#. module: account_sequence
#: constraint:account.move:0
msgid ""
"You cannot create entries on different periods/journals in the same move"
msgstr ""
"Вы не можете создавать проводки по разным периодам / журналам в одном "
"действии."
#. module: account_sequence
#: help:account.move,internal_sequence_number:0
@@ -74,12 +76,12 @@ msgstr "Следующее число последовательности бу
#. module: account_sequence
#: view:account.sequence.installer:0
msgid "Configure Your Account Sequence Application"
msgstr ""
msgstr "Настройка вашей нумерации по счету"
#. module: account_sequence
#: field:account.sequence.installer,progress:0
msgid "Configuration Progress"
msgstr "Процесс настройки"
msgstr "Выполнение настройки"
#. module: account_sequence
#: help:account.sequence.installer,suffix:0
@@ -97,6 +99,8 @@ msgid ""
"This sequence will be used to maintain the internal number for the journal "
"entries related to this journal."
msgstr ""
"Эта последовательность будет использована для внутренней нумерации записей в "
"журнал, связанный с этим журналом."
#. module: account_sequence
#: field:account.sequence.installer,padding:0
@@ -125,6 +129,8 @@ msgid ""
"OpenERP will automatically adds some '0' on the left of the 'Next Number' to "
"get the required padding size."
msgstr ""
"OpenERP автоматически добавляет несколько '0' слева от 'Следующее число' для "
" заданного выравнивания."
#. module: account_sequence
#: field:account.sequence.installer,name:0
@@ -141,6 +147,8 @@ msgstr "Нельзя сделать проводку по закрытому с
msgid ""
"You cannot create more than one move per period on centralized journal"
msgstr ""
"Вы не можете создать больше одного действия за период по централизованному "
"журналу."
#. module: account_sequence
#: sql_constraint:account.move.line:0
@@ -160,7 +168,7 @@ msgstr "account.sequence.installer"
#. module: account_sequence
#: view:account.sequence.installer:0
msgid "Configure"
msgstr "Настройка"
msgstr "Настроить"
#. module: account_sequence
#: help:account.sequence.installer,prefix:0
@@ -185,7 +193,7 @@ msgstr "Изображение"
#. module: account_sequence
#: view:account.sequence.installer:0
msgid "title"
msgstr ""
msgstr "title"
#. module: account_sequence
#: sql_constraint:account.journal:0
@@ -206,7 +214,7 @@ msgstr "Код журнала должен быть уникальным для
#: constraint:account.move.line:0
msgid ""
"You can not create move line on receivable/payable account without partner"
msgstr ""
msgstr "Нельзя сделать действие по дебетовому/кредитовому счету без партнера"
#. module: account_sequence
#: model:ir.model,name:account_sequence.model_account_journal
+11 -11
View File
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-02-20 20:50+0000\n"
"Last-Translator: Pedro_Maschio <pedro.bicudo@tgtconsult.com.br>\n"
"PO-Revision-Date: 2011-03-15 00:58+0000\n"
"Last-Translator: Emerson <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-02-21 04:51+0000\n"
"X-Generator: Launchpad (build 12351)\n"
"X-Launchpad-Export-Date: 2011-03-15 04:55+0000\n"
"X-Generator: Launchpad (build 12559)\n"
#. module: auction
#: model:ir.ui.menu,name:auction.auction_report_menu
@@ -547,7 +547,7 @@ msgstr "# dos vendedores:"
#: field:report.auction,date:0
#: field:report.object.encoded,date:0
msgid "Create Date"
msgstr "Criar Data"
msgstr "Data de Criação"
#. module: auction
#: view:auction.dates:0
@@ -737,7 +737,7 @@ msgstr "Categorias de Objeto"
#. module: auction
#: field:auction.lots.sms.send,app_id:0
msgid "API ID"
msgstr ""
msgstr "API ID"
#. module: auction
#: field:auction.bid,name:0
@@ -844,7 +844,7 @@ msgstr ""
#. module: auction
#: model:product.template,name:auction.monproduit_product_template
msgid "Oeuvres a 21%"
msgstr ""
msgstr "Obras a 21%"
#. module: auction
#: field:report.object.encoded,adj:0
@@ -1105,7 +1105,7 @@ msgstr "Nome"
#: field:auction.deposit,name:0
#: field:auction.lots,bord_vnd_id:0
msgid "Depositer Inventory"
msgstr ""
msgstr "Inventário do Depositante"
#. module: auction
#: code:addons/auction/auction.py:692
@@ -1505,7 +1505,7 @@ msgstr ""
#. module: auction
#: model:account.tax,name:auction.auction_tax1
msgid "TVA"
msgstr ""
msgstr "TVA"
#. module: auction
#: field:auction.lots,important:0
@@ -1520,7 +1520,7 @@ msgstr "Total:"
#. module: auction
#: model:account.tax,name:auction.auction_tax2
msgid "TVA1"
msgstr ""
msgstr "TVA1"
#. module: auction
#: view:report.auction.object.date:0
@@ -2116,7 +2116,7 @@ msgstr "Erro"
#: field:auction.lots,ach_inv_id:0
#: view:auction.lots.make.invoice.buyer:0
msgid "Buyer Invoice"
msgstr ""
msgstr "Fatura do Comprador"
#. module: auction
#: report:auction.bids:0
File diff suppressed because it is too large Load Diff
+12 -10
View File
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-01-13 18:04+0000\n"
"Last-Translator: serg_alban <Unknown>\n"
"PO-Revision-Date: 2011-03-14 08:56+0000\n"
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-01-15 05:15+0000\n"
"X-Generator: Launchpad (build 12177)\n"
"X-Launchpad-Export-Date: 2011-03-15 04:54+0000\n"
"X-Generator: Launchpad (build 12559)\n"
#. module: base_contact
#: field:res.partner.contact,title:0
@@ -39,12 +39,12 @@ msgstr "Обращение"
#. module: base_contact
#: help:res.partner.job,date_start:0
msgid "Start date of job(Joining Date)"
msgstr ""
msgstr "Дата начала работы(дата присоединения)"
#. module: base_contact
#: view:base.contact.installer:0
msgid "Select the Option for Addresses Migration"
msgstr ""
msgstr "Выберите опции для перемещения адресов"
#. module: base_contact
#: help:res.partner.job,function:0
@@ -68,7 +68,7 @@ msgstr ""
#. module: base_contact
#: help:res.partner.job,fax:0
msgid "Job FAX no."
msgstr ""
msgstr "Рабочий номер факса"
#. module: base_contact
#: field:res.partner.contact,mobile:0
@@ -129,6 +129,8 @@ msgid ""
"If the active field is set to False, it will allow you to "
"hide the partner contact without removing it."
msgstr ""
"Если поле 'Активно' имеет значение ложь, то это позволит вам скрыть контакт "
"партнера, не удаляя его."
#. module: base_contact
#: model:ir.module.module,description:base_contact.module_meta_information
@@ -196,7 +198,7 @@ msgstr "Внутренний / внешний расширение телефо
#. module: base_contact
#: help:res.partner.job,phone:0
msgid "Job Phone no."
msgstr ""
msgstr "Рабочий телефон"
#. module: base_contact
#: view:res.partner.contact:0
@@ -213,7 +215,7 @@ msgstr "Контакт"
#. module: base_contact
#: help:res.partner.job,email:0
msgid "Job E-Mail"
msgstr ""
msgstr "Рабочий e-mail"
#. module: base_contact
#: field:res.partner.job,sequence_partner:0
@@ -477,7 +479,7 @@ msgstr "Имя"
#. module: base_contact
#: view:base.contact.installer:0
msgid "You can migrate Partner's current addresses to the contact."
msgstr ""
msgstr "Вы можете переместить текущие адреса контрагента в контакт"
#. module: base_contact
#: field:res.partner.contact,partner_id:0
+3 -3
View File
@@ -70,10 +70,10 @@ class board_menu_create(osv.osv_memory):
})
obj_menu = self.pool.get('ir.ui.menu')
#start Loop
for data in self.read(cr, uid, ids):
for data in self.browse(cr, uid, ids, context=context):
obj_menu.create(cr, uid, {
'name': data.get('menu_name'),
'parent_id': data.get('menu_parent_id'),
'name': data.menu_name,
'parent_id': data.menu_parent_id.id,
'icon': 'STOCK_SELECT_COLOR',
'action': 'ir.actions.act_window,' + str(action_id)
}, context=context)
+2 -2
View File
@@ -107,7 +107,7 @@
</record>
<record model="ir.actions.act_window" id="open_board_statistical_dash">
<field name="name">CRM - Statistics Dashboard</field>
<field name="name">CRM Dashboard</field>
<field name="res_model">board.board</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
@@ -118,7 +118,7 @@
<menuitem id="board.menu_dasboard" name="Dashboard" sequence="0" parent="base.next_id_64"/>
<menuitem
name="Statistics Dashboard" parent="board.menu_dasboard"
name="CRM Dashboard" parent="board.menu_dasboard"
action="open_board_statistical_dash"
sequence="0"
id="menu_board_statistics_dash"
+148 -34
View File
@@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-02-25 19:53+0000\n"
"PO-Revision-Date: 2011-03-14 18:33+0000\n"
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-02-26 05:00+0000\n"
"X-Generator: Launchpad (build 12351)\n"
"X-Launchpad-Export-Date: 2011-03-15 04:54+0000\n"
"X-Generator: Launchpad (build 12559)\n"
#. module: crm
#: view:crm.lead.report:0
msgid "# Leads"
msgstr "# Кандидаты"
msgstr "# Кандидатов"
#. module: crm
#: view:crm.lead:0
@@ -238,7 +238,7 @@ msgstr "Запланировать другой звонок"
#. module: crm
#: help:crm.meeting,edit_all:0
msgid "Edit all Occurrences of recurrent Meeting."
msgstr ""
msgstr "Изменить все повторяющиеся встречи"
#. module: crm
#: code:addons/crm/wizard/crm_opportunity_to_phonecall.py:134
@@ -294,7 +294,7 @@ msgstr "Разделы"
#. module: crm
#: view:crm.merge.opportunity:0
msgid "_Merge"
msgstr ""
msgstr "_Объединить"
#. module: crm
#: view:crm.lead.report:0
@@ -410,7 +410,7 @@ msgstr "При обнаружении реального проекта/сдел
#. module: crm
#: field:crm.installer,crm_fundraising:0
msgid "Fundraising"
msgstr ""
msgstr "Фандрайзинг"
#. module: crm
#: view:res.partner:0
@@ -515,12 +515,12 @@ msgstr "Повторяющееся правило"
#. module: crm
#: model:crm.case.resource.type,name:crm.type_lead1
msgid "Version 4.2"
msgstr ""
msgstr "Версия 4.2"
#. module: crm
#: model:crm.case.resource.type,name:crm.type_lead2
msgid "Version 4.4"
msgstr ""
msgstr "Версия 4.4"
#. module: crm
#: help:crm.installer,fetchmail:0
@@ -701,6 +701,8 @@ msgid ""
"modes available with the customer. With each commercial opportunity, you can "
"indicate the canall which is this opportunity source."
msgstr ""
"Каналы представляют собой различные способы общения с клиентом. При каждой "
"возможной сделке вы можете указывать канал - источник сделки."
#. module: crm
#: code:addons/crm/crm_meeting.py:93
@@ -737,6 +739,8 @@ msgid ""
"Defines a rule or repeating pattern of time to exclude from the recurring "
"rule."
msgstr ""
"Определяет правило или повторяющийся шаблон времени для исключения из "
"правил повторения."
#. module: crm
#: field:crm.case.section,resource_calendar_id:0
@@ -865,12 +869,12 @@ msgstr "Дней в периоде"
#. module: crm
#: field:crm.meeting,byday:0
msgid "By day"
msgstr ""
msgstr "По дню"
#. module: crm
#: field:base.action.rule,act_section_id:0
msgid "Set Team to"
msgstr ""
msgstr "Установить отдел"
#. module: crm
#: view:calendar.attendee:0
@@ -897,7 +901,7 @@ msgstr "Сделка '%s' выиграна."
#. module: crm
#: help:crm.meeting,alarm_id:0
msgid "Set an alarm at this time, before the event occurs"
msgstr ""
msgstr "Установить сигнал на это время, перед событием"
#. module: crm
#: model:ir.module.module,description:crm.module_meta_information
@@ -962,6 +966,8 @@ msgid ""
"This property defines the list of date/time exceptions for a recurring "
"calendar component."
msgstr ""
"Это свойство определяет список исключений дат/времени для повторяющихся "
"элементов календаря."
#. module: crm
#: view:crm.phonecall2opportunity:0
@@ -1034,7 +1040,7 @@ msgstr "Сделка '%s' закрыта."
#. module: crm
#: field:crm.lead,day_open:0
msgid "Days to Open"
msgstr ""
msgstr "Дней до открытия"
#. module: crm
#: view:crm.meeting:0
@@ -1062,7 +1068,7 @@ msgstr "Моб. тел."
#. module: crm
#: field:crm.meeting,end_type:0
msgid "Way to end reccurency"
msgstr ""
msgstr "Способ прекращения повторения"
#. module: crm
#: code:addons/crm/wizard/crm_merge_opportunities.py:53
@@ -1111,7 +1117,7 @@ msgstr "Встречи"
#. module: crm
#: view:crm.meeting:0
msgid "Choose day where repeat the meeting"
msgstr ""
msgstr "Выбрать день, когда повторить встречу"
#. module: crm
#: field:crm.lead,date_action_next:0
@@ -1137,6 +1143,8 @@ msgid ""
"If the active field is set to true, it will allow you to hide the "
"event alarm information without removing it."
msgstr ""
"Если в поле 'Активно' установлено значение Ложь, вы сможете скрыть "
"информацию о сигнале события, без её удаления."
#. module: crm
#: code:addons/crm/wizard/crm_phonecall_to_opportunity.py:57
@@ -1258,7 +1266,7 @@ msgstr "Дата создания"
#. module: crm
#: model:crm.case.categ,name:crm.categ_oppor5
msgid "Need a Website Design"
msgstr ""
msgstr "Нужен дизайн сайта"
#. module: crm
#: field:crm.meeting,recurrent_uid:0
@@ -1350,6 +1358,7 @@ msgid ""
"Create specific phone call categories to better define the type of calls "
"tracked in the system."
msgstr ""
"Создать специальные категории звонков для лучшего их отслеживания в системе."
#. module: crm
#: selection:crm.lead.report,month:0
@@ -1396,6 +1405,8 @@ msgid ""
"If the active field is set to true, it will allow you to hide the sales team "
"without removing it."
msgstr ""
"Если в поле 'Активно' установлено значение Ложь, вы сможете скрыть отдел "
"продаж, не удаляя его."
#. module: crm
#: view:crm.lead.report:0
@@ -1426,7 +1437,7 @@ msgstr ""
#. module: crm
#: view:crm.meeting:0
msgid "End of recurrency"
msgstr ""
msgstr "Конец повторения"
#. module: crm
#: view:crm.meeting:0
@@ -1524,7 +1535,7 @@ msgstr "Сделки по категориям"
#. module: crm
#: view:crm.meeting:0
msgid "Choose day in the month where repeat the meeting"
msgstr ""
msgstr "Выбери день месяца, когда повторить встречу."
#. module: crm
#: view:crm.segmentation:0
@@ -1544,6 +1555,10 @@ msgid ""
"better manage your interactions with them. The segmentation tool is able to "
"assign categories to partners according to criteria you set."
msgstr ""
"Создать специальные категории партнеров, которые вы можете назначить "
"партнерам, чтобы лучше управлять вашим взаимодействием с ними. Инструмент "
"сегментирования может назначить категории для партнеров в соответствии с "
"вашими критериями."
#. module: crm
#: field:crm.case.section,code:0
@@ -1698,6 +1713,9 @@ msgid ""
"organise their sales pipeline. Stages will allow them to easily track how a "
"specific lead or opportunity is positioned in the sales cycle."
msgstr ""
"Добавление специальных этапов к кандидатам и сделкам позволяет лучше "
"организовать процесс продаж. Этапы позволяют легче отслеживать нахождение "
"кандидатов и сделок в процессе продаж."
#. module: crm
#: view:crm.lead.report:0
@@ -1726,6 +1744,8 @@ msgid ""
"Sales team to which this case belongs to. Defines responsible user and e-"
"mail address for the mail gateway."
msgstr ""
"Отдел продаж к которому относится этот вопрос. Определяет ответственного "
"пользователя и адрес эл. почты для почтового шлюза."
#. module: crm
#: view:crm.lead:0
@@ -1807,6 +1827,7 @@ msgstr "Объединять по..."
#: help:crm.lead,partner_id:0
msgid "Optional linked partner, usually after conversion of the lead"
msgstr ""
"Необязательный связанный партнер, обычно после преобразования кандидата."
#. module: crm
#: view:crm.meeting:0
@@ -1862,6 +1883,8 @@ msgid ""
"This percentage depicts the default/average probability of the Case for this "
"stage to be a success"
msgstr ""
"Этот процент изображает по умолчанию / среднюю вероятность успеха на этом "
"этапе"
#. module: crm
#: view:crm.phonecall.report:0
@@ -1914,7 +1937,7 @@ msgstr ""
#. module: crm
#: help:crm.meeting,recurrency:0
msgid "Recurrent Meeting"
msgstr ""
msgstr "Повторяющаяся встреча"
#. module: crm
#: view:crm.case.section:0
@@ -1977,12 +2000,12 @@ msgstr "Сделки по этапам"
#. module: crm
#: view:crm.meeting:0
msgid "Recurrency Option"
msgstr ""
msgstr "Опция повторения"
#. module: crm
#: model:process.transition,note:crm.process_transition_leadpartner0
msgid "Prospect is converting to business partner"
msgstr ""
msgstr "Перспектива преобразуется в бизнес-партнера"
#. module: crm
#: view:crm.lead2opportunity:0
@@ -2030,7 +2053,7 @@ msgstr "crm.phonecall"
#. module: crm
#: model:crm.case.resource.type,name:crm.type_lead3
msgid "Mail Campaign 2"
msgstr ""
msgstr "Почтовая кампания 2"
#. module: crm
#: view:crm.lead:0
@@ -2128,7 +2151,7 @@ msgstr "Ожидаемая выручка"
#. module: crm
#: model:crm.case.resource.type,name:crm.type_lead6
msgid "Google Adwords 2"
msgstr ""
msgstr "Google Adwords 2"
#. module: crm
#: help:crm.lead,type:0
@@ -2157,6 +2180,11 @@ msgid ""
"The opportunities and sales order displayed, will automatically be filtered "
"according to his team."
msgstr ""
"Определение отдела продаж для организации различных продавцов или отделов "
"продаж в отдельные команды. Каждая команда будет работать со своим списком "
"сделок, заказов и т.д. Каждый пользователь может установить команду по "
"умолчанию в своих настройках. Выводимые сделки и заказы, будут "
"автоматически фильтроваться в соответствии с отделом продаж пользователя."
#. module: crm
#: help:crm.meeting,count:0
@@ -2234,6 +2262,16 @@ msgid ""
"email gateway: new emails may create leads, each of them automatically gets "
"the history of the conversation with the prospect."
msgstr ""
"Кандидаты позволяют управлять и отслеживать все первоначальные контакты с "
"предполагаемыми клиентами или партнерами проявившими интерес к вашей "
"продукции или услугам. Кандидат - обычно первый шаг в процессе продажи. "
"После оценки, кандидат может быть преобразован в сделку с созданием "
"соответствующего партнера для будущего отслеживания связанной с ним "
"деятельности. Вы можете импортировать базу данных предполагаемых клиентов, "
"работать с визитными карточками или интегрировать запросы с вашего сайта с "
"кандидатами в OpenERP. Кандидаты могут быть подсоединены к почтовому шлюзу: "
"новые эл. письма могут создавать кандидатов, каждый из них автоматически "
"получает историю переговоров с предполагаемым клиентом."
#. module: crm
#: selection:crm.lead2opportunity.partner,action:0
@@ -2342,7 +2380,7 @@ msgstr "Встреча с заказчиком"
#: view:crm.lead:0
#: field:crm.lead,email_cc:0
msgid "Global CC"
msgstr ""
msgstr "Глобальная копия"
#. module: crm
#: view:crm.phonecall:0
@@ -2416,6 +2454,7 @@ msgid ""
"Helps you manage wiki pages for Frequently Asked Questions on Sales "
"Application."
msgstr ""
"Помогает вам управлять вики страницы для частых вопросов по продажам."
#. module: crm
#: help:crm.installer,crm_fundraising:0
@@ -2535,7 +2574,7 @@ msgstr "Техподдержка"
#. module: crm
#: field:crm.meeting,recurrency:0
msgid "Recurrent"
msgstr ""
msgstr "Повторение"
#. module: crm
#: code:addons/crm/crm.py:397
@@ -2571,6 +2610,9 @@ msgid ""
"e.g.: Every other month on the last Sunday of the month for 10 occurrences: "
" FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=-1SU"
msgstr ""
"Определяет правила или шаблон для повторяющихся событий\n"
"например: раз в два месяца в последнее воскресенье месяца 10 раз: "
"FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=-1SU"
#. module: crm
#: field:crm.lead,job_id:0
@@ -2580,7 +2622,7 @@ msgstr "Основная должность"
#. module: crm
#: field:base.action.rule,trg_max_history:0
msgid "Maximum Communication History"
msgstr ""
msgstr "Максимальная история общения"
#. module: crm
#: view:crm.lead2opportunity.partner:0
@@ -2612,6 +2654,10 @@ msgid ""
" \n"
"If the case needs to be reviewed then the state is set to 'Pending'."
msgstr ""
"Состояние установлено в 'Черновик', при создании вопроса. \n"
"Если вопрос в работе состояние установлено в 'Открыто'. \n"
"Когда вопрос решен состояние установлено в 'Сделано'. \n"
"Если вопрос нуждается в рассмотрении, то состояние 'В ожидании'."
#. module: crm
#: view:crm.meeting:0
@@ -2630,6 +2676,8 @@ msgid ""
"The computation is made on all events that occured during this interval, the "
"past X periods."
msgstr ""
"Вычисление производится по всем событиям, которые произошли в течение этого "
"интервала, прошедшие X периодов."
#. module: crm
#: view:board.board:0
@@ -2661,7 +2709,7 @@ msgstr "Задержка открытия"
#. module: crm
#: view:crm.meeting:0
msgid "Recurrency period"
msgstr ""
msgstr "Период повторения"
#. module: crm
#: field:crm.meeting,week_list:0
@@ -2709,6 +2757,7 @@ msgid ""
"The name of the future partner that will be created while converting the "
"into opportunity"
msgstr ""
"Название будущего партнера, который будет создан при преобразовании в сделку"
#. module: crm
#: field:crm.opportunity2phonecall,user_id:0
@@ -2809,6 +2858,17 @@ msgid ""
"opportunities, convert them into quotations, manage related documents, track "
"all customer related activities, and much more."
msgstr ""
"Со сделками вы можете управлять и отслеживать процесс продаж с помощью "
"создания специфичных для заказчика или предполагаемого клиента документов "
"для продаж. Может быть сохранена такая информация: ожидаемый доход, этап "
"сделки, ожидаемая дата закрытия, история общения и многое другое. Сделки "
"могут быть связаны с почтовым шлюзом: новые сообщения могут создавать "
"сделки, каждая из них автоматически получает историю общения с клиентом.\n"
"\n"
"Вы и ваш отдел будете иметь возможность планировать встречи и телефонные "
"звонки по сделкам, превращать их в запросы цен, управлять связанными "
"документами, отслеживать деятельность связанную с заказчиком, и многое "
"другое."
#. module: crm
#: view:crm.meeting:0
@@ -2888,7 +2948,7 @@ msgstr "Сообщения"
#. module: crm
#: help:crm.case.stage,on_change:0
msgid "Change Probability on next and previous stages."
msgstr ""
msgstr "Изменение вероятности на следующей и предыдущей стадии."
#. module: crm
#: code:addons/crm/crm.py:455
@@ -2952,6 +3012,10 @@ msgid ""
"instance reflect your product structure or the different types of sales you "
"do."
msgstr ""
"Создавать специальные категории, которые подходят к деятельности вашей "
"компании, чтобы лучше классифицировать и анализировать ваших кандидатов и "
"сделки. Такие категории, могут, например, отражать вашу структуру продукции "
"или различные типы продаж."
#. module: crm
#: help:crm.segmentation,som_interval_decrease:0
@@ -2959,6 +3023,8 @@ msgid ""
"If the partner has not purchased (or bought) during a period, decrease the "
"state of mind by this factor. It's a multiplication"
msgstr ""
"Если партнер не покупал в течение периода, уменьшить мнение на этот "
"коэффициент. Это умножение"
#. module: crm
#: model:ir.actions.act_window,help:crm.action_report_crm_phonecall
@@ -2968,16 +3034,21 @@ msgid ""
"several criteria and drill down the information, by adding more groups in "
"the report."
msgstr ""
"По этому отчету можно анализировать производительность вашего отдела продаж, "
"основанную на их телефонных звонках. Вы можете группировать или фильтровать "
"информацию по нескольким критериям и детализировать информацию за счет "
"добавления новых групп в отчет."
#. module: crm
#: view:crm.case.section:0
msgid "Mailgateway"
msgstr ""
msgstr "Почтовый шлюз"
#. module: crm
#: help:crm.lead,user_id:0
msgid "By Default Salesman is Administrator when create New User"
msgstr ""
"По умолчанию продавец - администратор, далее создайте нового пользователя"
#. module: crm
#: view:crm.lead.report:0
@@ -3027,6 +3098,8 @@ msgid ""
"These addresses will receive a copy of this email. To modify the permanent "
"CC list, edit the global CC field of this case"
msgstr ""
"Эти адреса будут получать копию этого письма. Для изменения постоянного "
"списка рассылки копий измените поле 'Глобальная копия' этого вопроса."
#. module: crm
#: view:crm.meeting:0
@@ -3055,6 +3128,8 @@ msgid ""
"You can not escalate, You are already at the top level regarding your sales-"
"team category."
msgstr ""
"Вы не можете обострить, Вы уже на высшем уровне относительно вашего отдела "
"продаж."
#. module: crm
#: selection:crm.segmentation.line,operator:0
@@ -3080,7 +3155,7 @@ msgstr "Создать"
#. module: crm
#: view:crm.meeting:0
msgid "Mail TO"
msgstr ""
msgstr "Кому"
#. module: crm
#: view:crm.lead:0
@@ -3141,11 +3216,13 @@ msgid ""
"Deadline Date is automatically computed from Start "
"Date + Duration"
msgstr ""
"Последний срок автоматически вычисляются как \"Дата начала\" + "
"\"Длительность\""
#. module: crm
#: field:crm.lead,state_id:0
msgid "Fed. State"
msgstr "Область"
msgstr "Штат"
#. module: crm
#: model:process.transition,note:crm.process_transition_leadopportunity0
@@ -3208,7 +3285,7 @@ msgstr " Месяц-1 "
#. module: crm
#: help:crm.installer,sale_crm:0
msgid "This module relates sale from opportunity cases in the CRM."
msgstr ""
msgstr "Этот модуль связывает продажи с возможными вопросами в модуле CRM."
#. module: crm
#: selection:crm.meeting,rrule_type:0
@@ -3246,7 +3323,7 @@ msgstr "Изображение"
#. module: crm
#: view:base.action.rule:0
msgid "Condition on Communication History"
msgstr ""
msgstr "Условие на историю общения"
#. module: crm
#: help:crm.segmentation,som_interval:0
@@ -3259,6 +3336,13 @@ msgid ""
"bought goods to another supplier. \n"
"Use this functionality for recurring businesses."
msgstr ""
"Период - среднее количество дней между двумя циклами продаж или покупок для "
"этой сегментации. \n"
"Это, главным образом, используется для обнаружения слишком длительного "
"периода за который партнер ничего не покупал, \n"
"поэтому мы предполагаем, что его мнение ухудшилось, потому что он, вероятно, "
"купил товар у другого поставщика. \n"
"Используйте эту функцию для постоянных клиентов."
#. module: crm
#: view:crm.send.mail:0
@@ -3332,7 +3416,7 @@ msgstr "Открыто"
#: view:crm.case.section:0
#: field:crm.case.section,member_ids:0
msgid "Team Members"
msgstr ""
msgstr "Сотрудники отдела"
#. module: crm
#: view:crm.lead:0
@@ -3516,6 +3600,9 @@ msgid ""
"them to easily track how is positioned a specific opportunity in the sales "
"cycle."
msgstr ""
"Добавление специальных этапов, которые будут помогать лучше организовывать "
"процесс продаж. Этапы позволяют легче отслеживать положение сделок в "
"процессе продаж."
#. module: crm
#: model:process.process,name:crm.process_process_contractprocess0
@@ -4037,6 +4124,9 @@ msgstr "Рассылка"
#~ msgid "Open cases"
#~ msgstr "Открытые вопросы"
#~ msgid "My cases"
#~ msgstr "Мои вопросы"
#~ msgid "Cases Histories"
#~ msgstr "Истории вопросов"
@@ -4087,6 +4177,9 @@ msgstr "Рассылка"
#~ msgid "Maximim Priority"
#~ msgstr "Максимальный приоритет"
#~ msgid "All Unclosed and Unassigned "
#~ msgstr "Все незакрытые и неназначенные "
#~ msgid "Your action"
#~ msgstr "Ваши действия"
@@ -5155,3 +5248,24 @@ msgstr "Рассылка"
#~ msgid "Case Meeting"
#~ msgstr "Встреча по вопросу"
#~ msgid "New Form"
#~ msgstr "Новая форма"
#~ msgid "All Draft "
#~ msgstr "Все черновики "
#~ msgid "New "
#~ msgstr "Новый "
#~ msgid "Don't Create"
#~ msgstr "Не создавать"
#~ msgid "My Unclosed "
#~ msgstr "Мои незакрытые "
#~ msgid "My Late "
#~ msgstr "Мои просроченные "
#~ msgid "Tree View"
#~ msgstr "В виде дерева"
+8 -6
View File
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-02-23 12:39+0000\n"
"PO-Revision-Date: 2011-03-14 19:21+0000\n"
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
"Language-Team: Russian <ru@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-02-25 04:40+0000\n"
"X-Generator: Launchpad (build 12351)\n"
"X-Launchpad-Export-Date: 2011-03-15 04:55+0000\n"
"X-Generator: Launchpad (build 12559)\n"
#. module: crm_partner_assign
#: field:crm.lead.forward.to.partner,name:0
@@ -190,6 +190,8 @@ msgid ""
"These addresses will receive a copy of this email. To modify the permanent "
"CC list, edit the global CC field of this case"
msgstr ""
"Эти адреса будут получать копию этого письма. Для изменения постоянного "
"списка рассылки копий измените поле 'Глобальная копия' этого вопроса."
#. module: crm_partner_assign
#: field:crm.lead.forward.to.partner,email_from:0
@@ -584,7 +586,7 @@ msgstr "Текущий"
#. module: crm_partner_assign
#: field:crm.lead.forward.to.partner,email_to:0
msgid "To"
msgstr ""
msgstr "Кому"
#. module: crm_partner_assign
#: model:ir.model,name:crm_partner_assign.model_crm_lead_forward_to_partner
@@ -666,12 +668,12 @@ msgstr "crm.lead"
#. module: crm_partner_assign
#: model:ir.model,name:crm_partner_assign.model_crm_lead_report_assign
msgid "CRM Lead Report"
msgstr ""
msgstr "Отчет по кандидатам в CRM"
#. module: crm_partner_assign
#: selection:crm.lead.forward.to.partner,history:0
msgid "Case Information"
msgstr ""
msgstr "Информация о вопросе"
#. module: crm_partner_assign
#: field:res.partner.grade,sequence:0
+5 -4
View File
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2010-10-16 10:39+0000\n"
"Last-Translator: Nikolay Chesnokov <chesnokov_n@msn.com>\n"
"PO-Revision-Date: 2011-03-14 18:48+0000\n"
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
"Language-Team: Russian <ru@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-01-15 05:51+0000\n"
"X-Generator: Launchpad (build 12177)\n"
"X-Launchpad-Export-Date: 2011-03-15 04:55+0000\n"
"X-Generator: Launchpad (build 12559)\n"
#. module: decimal_precision
#: field:decimal.precision,digits:0
@@ -58,6 +58,7 @@ msgstr "Использование"
#: sql_constraint:decimal.precision:0
msgid "Only one value can be defined for each given usage!"
msgstr ""
"Только одно значение может быть определено для каждого использования!"
#. module: decimal_precision
#: model:ir.module.module,shortdesc:decimal_precision.module_meta_information
+10 -4
View File
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-03-07 13:37+0000\n"
"PO-Revision-Date: 2011-03-14 18:56+0000\n"
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-03-08 04:47+0000\n"
"X-Generator: Launchpad (build 12351)\n"
"X-Launchpad-Export-Date: 2011-03-15 04:54+0000\n"
"X-Generator: Launchpad (build 12559)\n"
#. module: delivery
#: report:sale.shipping:0
@@ -118,6 +118,10 @@ msgid ""
"can define several price lists for one delivery method, per country or a "
"zone in a specific country defined by a postal code range."
msgstr ""
"Прайс лист на доставку позволяет вычислить стоимость и продажную цену "
"доставки в зависимости от веса продукции и других критериев. Вы можете "
"задать несколько прайс листов на один способ доставки, по странам или зонам "
"в конкретной стране, определяемым по диапазонам почтовых индексов ."
#. module: delivery
#: selection:delivery.grid.line,price_type:0
@@ -187,7 +191,7 @@ msgstr "Оператор"
#. module: delivery
#: model:ir.model,name:delivery.model_res_partner
msgid "Partner"
msgstr "Партнёр"
msgstr "Контрагент"
#. module: delivery
#: model:ir.model,name:delivery.model_sale_order
@@ -282,6 +286,8 @@ msgid ""
"If the active field is set to False, it will allow you to hide the delivery "
"carrier without removing it."
msgstr ""
"Если поле \"Активно\" имеет значение ложь, то это позволит вам скрыть "
"перевозчика, не удаляя его."
#. module: delivery
#: code:addons/delivery/wizard/delivery_sale_order.py:95
File diff suppressed because it is too large Load Diff
+306
View File
@@ -0,0 +1,306 @@
# Bulgarian translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-03-14 16:36+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Bulgarian <bg@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-03-15 04:55+0000\n"
"X-Generator: Launchpad (build 12559)\n"
#. module: fetchmail
#: constraint:email.server:0
msgid ""
"Warning! Record for selected Model can not be created\n"
"Please choose valid Model"
msgstr ""
"Внимание! Запис за избрания модел не може да бъде създаден\n"
"Моля, изберете валиден модел."
#. module: fetchmail
#: selection:email.server,state:0
msgid "Confirmed"
msgstr "Потвърден"
#. module: fetchmail
#: view:email.server:0
msgid "Confirm"
msgstr "Потвърди"
#. module: fetchmail
#: view:email.server:0
msgid "Group By..."
msgstr "Групиране по..."
#. module: fetchmail
#: view:email.server:0
#: field:email.server,state:0
msgid "State"
msgstr "Състояние"
#. module: fetchmail
#: view:email.server:0
msgid "POP"
msgstr "POP"
#. module: fetchmail
#: selection:email.server,state:0
msgid "Not Confirmed"
msgstr "Не потвърден"
#. module: fetchmail
#: field:email.server,user:0
msgid "User Name"
msgstr "Име на потребител"
#. module: fetchmail
#: view:email.server:0
msgid "Type"
msgstr "Тип"
#. module: fetchmail
#: view:email.server:0
msgid "POP/IMAP Servers"
msgstr "POP/IMAP Сървъри"
#. module: fetchmail
#: model:ir.module.module,shortdesc:fetchmail.module_meta_information
msgid "Fetchmail Server"
msgstr ""
#. module: fetchmail
#: view:email.server:0
#: field:email.server,note:0
msgid "Description"
msgstr "Описание"
#. module: fetchmail
#: help:email.server,object_id:0
msgid ""
"OpenObject Model. Generates a record of this model.\n"
"Select Object with message_new attrbutes."
msgstr ""
#. module: fetchmail
#: field:email.server,attach:0
msgid "Add Attachments ?"
msgstr "Добавете прикрепен файл"
#. module: fetchmail
#: view:email.server:0
msgid "# of emails"
msgstr "# имейли"
#. module: fetchmail
#: model:ir.actions.act_window,name:fetchmail.act_server_history
msgid "Email History"
msgstr ""
#. module: fetchmail
#: field:email.server,user_id:0
msgid "User"
msgstr "Потребител"
#. module: fetchmail
#: field:email.server,date:0
msgid "Date"
msgstr "Дата"
#. module: fetchmail
#: selection:email.server,state:0
msgid "Waiting for Verification"
msgstr ""
#. module: fetchmail
#: field:email.server,password:0
msgid "Password"
msgstr "Парола"
#. module: fetchmail
#: view:mailgate.message:0
msgid "Emails"
msgstr "Имейли"
#. module: fetchmail
#: view:email.server:0
msgid "Search Email Servers"
msgstr "Търсене на мейл сървъри"
#. module: fetchmail
#: view:email.server:0
msgid "Server & Login"
msgstr "Сървъри и вход"
#. module: fetchmail
#: view:email.server:0
msgid "Auto Reply?"
msgstr "Автоматичен отговор?"
#. module: fetchmail
#: field:email.server,name:0
msgid "Name"
msgstr "Име"
#. module: fetchmail
#: model:ir.model,name:fetchmail.model_mailgate_message
msgid "Mailgateway Message"
msgstr ""
#. module: fetchmail
#: model:ir.actions.act_window,name:fetchmail.action_email_server_tree
msgid "POP Servers"
msgstr "POP Сървъри"
#. module: fetchmail
#: view:email.server:0
msgid "Set to Draft"
msgstr "Пращане в проект"
#. module: fetchmail
#: field:email.server,message_ids:0
#: model:ir.actions.act_window,name:fetchmail.action_view_mail_message_emails
msgid "Messages"
msgstr "Съобщения"
#. module: fetchmail
#: model:ir.ui.menu,name:fetchmail.menu_action_fetchmail_server_tree
msgid "Fetchmail Services"
msgstr ""
#. module: fetchmail
#: field:email.server,server:0
msgid "Server"
msgstr "Сървър"
#. module: fetchmail
#: field:email.server,active:0
msgid "Active"
msgstr "Активен"
#. module: fetchmail
#: view:email.server:0
msgid "Process Parameter"
msgstr ""
#. module: fetchmail
#: field:email.server,is_ssl:0
msgid "SSL ?"
msgstr "SSL ?"
#. module: fetchmail
#: selection:email.server,type:0
#: selection:mailgate.message,server_type:0
msgid "IMAP Server"
msgstr "IMAP Сървър"
#. module: fetchmail
#: field:email.server,object_id:0
msgid "Model"
msgstr "Модел"
#. module: fetchmail
#: view:email.server:0
msgid "IMAP"
msgstr "IMAP"
#. module: fetchmail
#: view:email.server:0
#: model:ir.model,name:fetchmail.model_email_server
msgid "POP/IMAP Server"
msgstr "POP/IMAP Сървър"
#. module: fetchmail
#: constraint:email.server:0
msgid "Warning! Can't have duplicate server configuration!"
msgstr "Внимание! Не може да се дублира конфигурация на сървър!"
#. module: fetchmail
#: field:email.server,type:0
#: field:mailgate.message,server_type:0
msgid "Server Type"
msgstr "Тип сървър"
#. module: fetchmail
#: view:email.server:0
msgid "Login Information"
msgstr "Данни за вход"
#. module: fetchmail
#: view:email.server:0
msgid "Server Information"
msgstr "Информация за сървър"
#. module: fetchmail
#: help:email.server,attach:0
msgid "Fetches mail with attachments if true."
msgstr ""
#. module: fetchmail
#: selection:email.server,type:0
#: selection:mailgate.message,server_type:0
msgid "POP Server"
msgstr "POP Сървър"
#. module: fetchmail
#: field:email.server,port:0
msgid "Port"
msgstr "Port"
#. module: fetchmail
#: model:ir.module.module,description:fetchmail.module_meta_information
msgid ""
"Fetchmail: \n"
" * Fetch email from Pop / IMAP server\n"
" * Support SSL\n"
" * Integrated with all Modules\n"
" * Automatic Email Receive\n"
" * Email based Records (Add, Update)\n"
" "
msgstr ""
#. module: fetchmail
#: view:email.server:0
msgid "SSL"
msgstr "SSL"
#. module: fetchmail
#: help:email.server,action_id:0
msgid ""
"An Email Server Action. It will be run whenever an e-mail is fetched from "
"server."
msgstr ""
#. module: fetchmail
#: help:email.server,priority:0
msgid "Priority between 0 to 10, select define the order of Processing"
msgstr "Приоритет от 0 до 10 изберете за да определите реда на обработка"
#. module: fetchmail
#: field:email.server,action_id:0
msgid "Email Server Action"
msgstr ""
#. module: fetchmail
#: field:email.server,priority:0
msgid "Server Priority"
msgstr "Приоритена на сървър"
#. module: fetchmail
#: view:mailgate.message:0
#: field:mailgate.message,server_id:0
msgid "Mail Server"
msgstr "Пощенски сървър"
#. module: fetchmail
#: view:email.server:0
msgid "Fetch Emails"
msgstr ""
@@ -106,18 +106,6 @@
plan_id: 'hr_evaluation_plan_managersplan0'
progress: 0.0
state: draft
-
I create an Interview Request record
-
!record {model: hr.evaluation.interview, id: hr_evaluation_interview_0}:
date_deadline: !eval time.strftime('%Y-%m-%d')
evaluation_id: 'hr_evaluation_evaluation_0'
survey_id: hr_evaluation.survey_0
-
I check that evaluation is in "Draft" state.
-
!assert {model: hr_evaluation.evaluation, id: hr_evaluation_evaluation_0}:
- state == 'draft'
-
I start the evaluation process by click on "Start Evaluation" button.
-
@@ -127,8 +115,9 @@
-
I close this survey request by giving answer of survey question.
-
!python {model: hr.evaluation.interview}: |
self.survey_req_done(cr, uid, [ref('hr_evaluation_interview_0')])
!python {model: hr_evaluation.evaluation}: |
evaluation = self.browse(cr, uid, ref('hr_evaluation_evaluation_0'))
self.pool.get('hr.evaluation.interview').survey_req_done(cr, uid, [r.id for r in evaluation.survey_request_ids])
-
I click on "Final Validation" button to finalise evaluation.
-
+13 -13
View File
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2010-10-30 08:51+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2011-03-15 02:08+0000\n"
"Last-Translator: Emerson <Unknown>\n"
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-01-15 05:40+0000\n"
"X-Generator: Launchpad (build 12177)\n"
"X-Launchpad-Export-Date: 2011-03-15 04:55+0000\n"
"X-Generator: Launchpad (build 12559)\n"
#. module: hr_holidays
#: selection:hr.holidays.status,color_name:0
@@ -72,7 +72,7 @@ msgstr ""
#. module: hr_holidays
#: selection:hr.holidays.status,color_name:0
msgid "Brown"
msgstr ""
msgstr "Marrom"
#. module: hr_holidays
#: view:hr.holidays:0
@@ -94,14 +94,14 @@ msgstr ""
#. module: hr_holidays
#: view:hr.holidays:0
msgid "Set to Draft"
msgstr ""
msgstr "Definir como Provisório"
#. module: hr_holidays
#: model:ir.actions.act_window,name:hr_holidays.act_hr_employee_holiday_request
#: model:ir.ui.menu,name:hr_holidays.menu_hr_reporting_holidays
#: model:ir.ui.menu,name:hr_holidays.menu_open_ask_holidays
msgid "Holidays"
msgstr ""
msgstr "Feriados"
#. module: hr_holidays
#: selection:hr.holidays.status,color_name:0
@@ -131,12 +131,12 @@ msgstr ""
#: view:hr.holidays:0
#: selection:hr.holidays,state:0
msgid "Approved"
msgstr ""
msgstr "Aprovado"
#. module: hr_holidays
#: view:hr.holidays:0
msgid "Refuse"
msgstr ""
msgstr "Recusar"
#. module: hr_holidays
#: code:addons/hr_holidays/hr_holidays.py:309
@@ -238,7 +238,7 @@ msgstr ""
#: selection:hr.holidays.summary.dept,holiday_type:0
#: selection:hr.holidays.summary.employee,holiday_type:0
msgid "Confirmed"
msgstr ""
msgstr "Confirmado"
#. module: hr_holidays
#: field:hr.holidays.summary.dept,date_from:0
@@ -249,7 +249,7 @@ msgstr ""
#. module: hr_holidays
#: view:hr.holidays:0
msgid "Confirm"
msgstr ""
msgstr "Confirmar"
#. module: hr_holidays
#: sql_constraint:hr.holidays:0
@@ -314,7 +314,7 @@ msgstr ""
#: field:hr.holidays,employee_id:0
#: field:hr.holidays.remaining.leaves.user,name:0
msgid "Employee"
msgstr ""
msgstr "Funcionário"
#. module: hr_holidays
#: view:hr.holidays:0
@@ -339,7 +339,7 @@ msgstr ""
#. module: hr_holidays
#: selection:hr.holidays.status,color_name:0
msgid "Wheat"
msgstr ""
msgstr "Bege"
#. module: hr_holidays
#: constraint:resource.calendar.leaves:0
@@ -77,7 +77,7 @@ class job2phonecall(osv.osv_memory):
phonecall_case_obj = self.pool.get('crm.phonecall')
if context is None:
context = {}
form = self.read(cr, uid, ids, [], context=context)[0]
form = self.browse(cr, uid, ids, context=context)[0]
result = mod_obj._get_id(cr, uid, 'crm', 'view_crm_case_phonecalls_filter')
res = mod_obj.read(cr, uid, result, ['res_id'], context=context)
# Select the view
@@ -93,10 +93,10 @@ class job2phonecall(osv.osv_memory):
#TODO: Take other info from job
new_phonecall_id = phonecall_case_obj.create(cr, uid, {
'name': job.name,
'user_id': form['user_id'],
'categ_id': form['category_id'],
'description': form['note'],
'date': form['deadline'],
'user_id': form.user_id.id,
'categ_id': form.category_id.id,
'description': form.note,
'date': form.deadline,
'description': job.description,
'partner_id': job.partner_id.id,
'partner_address_id': job.partner_address_id.id,
+13 -13
View File
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: pt_BR\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-02-10 00:27+0000\n"
"Last-Translator: Joe Pimentel <joe.b.pimentel@gmail.com>\n"
"PO-Revision-Date: 2011-03-15 00:54+0000\n"
"Last-Translator: Emerson <Unknown>\n"
"Language-Team: <pt@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-02-11 04:59+0000\n"
"X-Generator: Launchpad (build 12177)\n"
"X-Launchpad-Export-Date: 2011-03-15 04:55+0000\n"
"X-Generator: Launchpad (build 12559)\n"
#. module: hr_timesheet
#: model:product.template,name:hr_timesheet.product_consultant_product_template
@@ -165,7 +165,7 @@ msgstr "Aviso !"
#: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:132
#, python-format
msgid "UserError"
msgstr ""
msgstr "Erro de Usuário"
#. module: hr_timesheet
#: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:77
@@ -183,13 +183,13 @@ msgstr "Ter"
#. module: hr_timesheet
#: field:hr.sign.out.project,account_id:0
msgid "Analytic Account"
msgstr "Centro de Custo"
msgstr "Conta Analítica"
#. module: hr_timesheet
#: code:addons/hr_timesheet/wizard/hr_timesheet_print_employee.py:42
#, python-format
msgid "Warning"
msgstr "Alerta"
msgstr "Atenção"
#. module: hr_timesheet
#: model:ir.module.module,shortdesc:hr_timesheet.module_meta_information
@@ -225,7 +225,7 @@ msgstr "Imprimir"
#. module: hr_timesheet
#: view:hr.analytic.timesheet:0
msgid "Timesheet Lines"
msgstr ""
msgstr "Linhas do Apontamento de Horas"
#. module: hr_timesheet
#: selection:hr.analytical.timesheet.employee,month:0
@@ -313,7 +313,7 @@ msgstr "Setembro"
#. module: hr_timesheet
#: model:ir.model,name:hr_timesheet.model_hr_analytic_timesheet
msgid "Timesheet Line"
msgstr ""
msgstr "Linha de Apontamento de Horas"
#. module: hr_timesheet
#: field:hr.analytical.timesheet.users,employee_ids:0
@@ -345,7 +345,7 @@ msgstr "Para ser faturado"
#. module: hr_timesheet
#: model:ir.actions.report.xml,name:hr_timesheet.report_user_timesheet
msgid "Employee timesheet"
msgstr ""
msgstr "Apontamento de horas do Funcionário"
#. module: hr_timesheet
#: model:ir.actions.act_window,name:hr_timesheet.action_hr_timesheet_sign_in
@@ -381,7 +381,7 @@ msgstr ""
#. module: hr_timesheet
#: view:hr.employee:0
msgid "Timesheets"
msgstr ""
msgstr "Apontamento de horas"
#. module: hr_timesheet
#: help:hr.employee,product_id:0
@@ -598,7 +598,7 @@ msgstr "(horário local do servidor)"
#: model:ir.actions.act_window,name:hr_timesheet.act_hr_timesheet_line_evry1_all_form
#: model:ir.ui.menu,name:hr_timesheet.menu_hr_working_hours
msgid "Working Hours"
msgstr ""
msgstr "Horas Trabalhadas"
#. module: hr_timesheet
#: model:ir.model,name:hr_timesheet.model_hr_sign_in_project
@@ -615,7 +615,7 @@ msgstr "Fevereiro"
#. module: hr_timesheet
#: field:hr.analytic.timesheet,line_id:0
msgid "Analytic line"
msgstr ""
msgstr "Linha analítica"
#. module: hr_timesheet
#: model:ir.model,name:hr_timesheet.model_hr_sign_out_project
@@ -31,7 +31,7 @@ class analytical_timesheet_employee(osv.osv_memory):
'Month', required=True),
'year': fields.integer('Year', required=True),
'employee_id': fields.many2one('hr.employee', 'Employee', required=True)
}
def _get_user(self, cr, uid, context=None):
@@ -50,6 +50,7 @@ class analytical_timesheet_employee(osv.osv_memory):
def print_report(self, cr, uid, ids, context=None):
data = self.read(cr, uid, ids, context=context)[0]
data['employee_id'] = data['employee_id'][0]
datas = {
'ids': [],
'model': 'hr.employee',
@@ -58,7 +58,9 @@ class final_invoice_create(osv.osv_memory):
result = mod_obj._get_id(cr, uid, 'account', 'view_account_invoice_filter')
res = mod_obj.read(cr, uid, result, ['res_id'], context=context)
data = self.read(cr, uid, ids, [], context=context)[0]
data = self.browse(cr, uid, ids, context=context)[0]
balance_product = data.balance_product.id
account_ids = 'active_ids' in context and context['active_ids'] or []
for account in analytic_account_obj.browse(cr, uid, account_ids, context=context):
@@ -143,9 +145,9 @@ class final_invoice_create(osv.osv_memory):
}
invoice_line_obj.create(cr, uid, curr_line, context=context)
if not data['balance_product']:
if not balance_product:
raise osv.except_osv(_('Balance product needed'), _('Please fill a Balance product in the wizard'))
product = product_obj.browse(cr, uid, data['balance_product'], context2)
product = product_obj.browse(cr, uid, balance_product, context=context2)
taxes = product.taxes_id
tax = fiscal_pos_obj.map_tax(cr, uid, account.partner_id.property_account_position, taxes)
account_id = product.product_tmpl_id.property_account_income.id or product.categ_id.property_account_income_categ.id
@@ -180,4 +182,4 @@ class final_invoice_create(osv.osv_memory):
final_invoice_create()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -120,13 +120,13 @@ class hr_timesheet_invoice_create(osv.osv_memory):
raise osv.except_osv(_('Error'), _('At least one line has no product !'))
factor_name = ''
factor = invoice_factor_obj.browse(cr, uid, factor_id, context2)
if not data['product']:
if factor.customer_name:
factor_name = product.name+' - '+factor.customer_name
else:
factor_name = product.name
else:
data['product'] = data['product'][0]
factor_name = product_obj.name_get(cr, uid, [data['product']], context=context)[0][1]
if account.pricelist_id:
+73 -48
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2010-12-10 17:15+0000\n"
"PO-Revision-Date: 2011-03-12 22:49+0000\n"
"PO-Revision-Date: 2011-03-15 00:06+0000\n"
"Last-Translator: Emerson <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-03-13 04:50+0000\n"
"X-Launchpad-Export-Date: 2011-03-15 04:55+0000\n"
"X-Generator: Launchpad (build 12559)\n"
#. module: l10n_ch
@@ -216,7 +216,7 @@ msgstr "BVR account number"
#: code:addons/l10n_ch/wizard/bvr_import.py:0
#, python-format
msgid "Number record different from the computed!"
msgstr ""
msgstr "Number record different from the computed!"
#. module: l10n_ch
#: field:res.bank,clearing:0
@@ -502,7 +502,7 @@ msgstr "Journal Items"
#. module: l10n_ch
#: constraint:account.move.line:0
msgid "Company must be same for its related account and period."
msgstr ""
msgstr "Company must be same for its related account and period."
#. module: l10n_ch
#: code:addons/l10n_ch/wizard/create_dta.py:0
@@ -512,51 +512,54 @@ msgid ""
"for the bank account: %s\n"
"' + 'on line: %s"
msgstr ""
"No IBAN defined \n"
"for the bank account: %s\n"
"' + 'on line: %s"
#. module: l10n_ch
#: model:account.account.type,name:l10n_ch.account_type_non_ope_asset
msgid "Bilan : Actifs hors exploitation"
msgstr ""
msgstr "Bilan : Actifs hors exploitation"
#. module: l10n_ch
#: model:res.partner.title,shortcut:l10n_ch.res_c_partner_title_mlle
#: model:res.partner.title,shortcut:l10n_ch.res_partner_title_mlle
msgid "Mlle"
msgstr ""
msgstr "Mlle"
#. module: l10n_ch
#: model:res.partner.bank.type,name:l10n_ch.bank_dta
msgid "Ordering party DTA"
msgstr ""
msgstr "Ordering party DTA"
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_res_company
msgid "Companies"
msgstr ""
msgstr "Companies"
#. module: l10n_ch
#: model:res.partner.title,name:l10n_ch.res_c_partner_title_madame
#: model:res.partner.title,name:l10n_ch.res_partner_title_madame
msgid "Madame"
msgstr ""
msgstr "Madame"
#. module: l10n_ch
#: model:res.partner.bank.type,name:l10n_ch.bvpost
msgid "DTA-BVPOST"
msgstr ""
msgstr "DTA-BVPOST"
#. module: l10n_ch
#: code:addons/l10n_ch/wizard/bvr_import.py:0
#: code:addons/l10n_ch/wizard/create_dta.py:0
#, python-format
msgid "Error"
msgstr ""
msgstr "Error"
#. module: l10n_ch
#: model:res.partner.title,name:l10n_ch.res_c_partner_title_societe
#: model:res.partner.title,name:l10n_ch.res_partner_title_societe
msgid "Société"
msgstr ""
msgstr "Société"
#. module: l10n_ch
#: code:addons/l10n_ch/wizard/bvr_report.py:0
@@ -566,48 +569,51 @@ msgid ""
"Please check your company information for the invoice:\n"
"%s"
msgstr ""
"Your bank BVR number should be of the form 0X-XXX-X!\n"
"Please check your company information for the invoice:\n"
"%s"
#. module: l10n_ch
#: field:res.partner.bank,dta_code:0
msgid "DTA code"
msgstr ""
msgstr "DTA code"
#. module: l10n_ch
#: model:res.partner.title,name:l10n_ch.res_c_partner_title_mlle
#: model:res.partner.title,name:l10n_ch.res_partner_title_mlle
msgid "Mademoiselle"
msgstr ""
msgstr "Mademoiselle"
#. module: l10n_ch
#: model:ir.module.module,shortdesc:l10n_ch.module_meta_information
msgid "Switzerland localisation corrected by Camptocamp"
msgstr ""
msgstr "Switzerland localisation corrected by Camptocamp"
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_res_partner_bank
msgid "Bank Accounts"
msgstr ""
msgstr "Bank Accounts"
#. module: l10n_ch
#: view:create.dta.wizard:0
#: model:ir.actions.act_window,name:l10n_ch.action_dta_create
msgid "Create DTA"
msgstr ""
msgstr "Create DTA"
#. module: l10n_ch
#: field:res.partner.bank,post_number:0
msgid "Post number"
msgstr ""
msgstr "Post number"
#. module: l10n_ch
#: field:create.dta.wizard,dta_file:0
msgid "DTA File"
msgstr ""
msgstr "DTA File"
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_account_invoice
msgid "Invoice"
msgstr ""
msgstr "Invoice"
#. module: l10n_ch
#: view:bvr.import.wizard:0
@@ -615,32 +621,32 @@ msgstr ""
#: view:bvr.report:0
#: view:create.dta.wizard:0
msgid "Cancel"
msgstr ""
msgstr "Cancel"
#. module: l10n_ch
#: model:account.account.type,name:l10n_ch.account_type_inventory
msgid "Bilan : Stocks"
msgstr ""
msgstr "Bilan : Stocks"
#. module: l10n_ch
#: model:account.account.type,name:l10n_ch.account_type_personnal_exp
msgid "PP : Charge de personnel"
msgstr ""
msgstr "PP : Charge de personnel"
#. module: l10n_ch
#: model:res.partner.bank.type.field,name:l10n_ch.post_field_bvpost
msgid "post_number"
msgstr ""
msgstr "post_number"
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_payment_order
msgid "Payment Order"
msgstr ""
msgstr "Payment Order"
#. module: l10n_ch
#: model:account.account.type,name:l10n_ch.account_type_report_result
msgid "Bilan : Resultat reporte"
msgstr ""
msgstr "Bilan : Resultat reporte"
#. module: l10n_ch
#: code:addons/l10n_ch/wizard/create_dta.py:0
@@ -651,17 +657,21 @@ msgid ""
"on the partner: %s\n"
"on line: %s"
msgstr ""
"No bank defined\n"
"for the bank account: %s\n"
"on the partner: %s\n"
"on line: %s"
#. module: l10n_ch
#: code:addons/l10n_ch/wizard/bvr_import.py:0
#, python-format
msgid "Too much total record found!"
msgstr ""
msgstr "Too much total record found!"
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_create_dta_wizard
msgid "create.dta.wizard"
msgstr ""
msgstr "create.dta.wizard"
#. module: l10n_ch
#: code:addons/l10n_ch/wizard/create_dta.py:0
@@ -671,38 +681,41 @@ msgid ""
"for the partner bank: %s\n"
"on line %s"
msgstr ""
"You must provide a Clearing Number\n"
"for the partner bank: %s\n"
"on line %s"
#. module: l10n_ch
#: field:res.partner.bank,print_account:0
msgid "Print Account Number on BVR"
msgstr ""
msgstr "Print Account Number on BVR"
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_res_bank
msgid "Bank"
msgstr ""
msgstr "Bank"
#. module: l10n_ch
#: model:res.partner.title,shortcut:l10n_ch.res_c_partner_title_mme_m
#: model:res.partner.title,shortcut:l10n_ch.res_partner_title_mme_m
msgid "Mme,m"
msgstr ""
msgstr "Mme,m"
#. module: l10n_ch
#: model:res.partner.bank.type,name:l10n_ch.bvrbank
msgid "DTA-BVRBANK"
msgstr ""
msgstr "DTA-BVRBANK"
#. module: l10n_ch
#: field:bvr.invoices.report,name:0
#: field:bvr.report,name:0
msgid "Name"
msgstr ""
msgstr "Name"
#. module: l10n_ch
#: model:account.account.type,name:l10n_ch.account_type_consolidation
msgid "Autre : Consolidation"
msgstr ""
msgstr "Autre : Consolidation"
#. module: l10n_ch
#: code:addons/l10n_ch/wizard/create_dta.py:0
@@ -711,37 +724,39 @@ msgid ""
"You must provide a valid BVR reference number \n"
"for the line: %s"
msgstr ""
"You must provide a valid BVR reference number \n"
"for the line: %s"
#. module: l10n_ch
#: view:bvr.invoices.report:0
msgid "Print BVR Invoice Report"
msgstr ""
msgstr "Print BVR Invoice Report"
#. module: l10n_ch
#: model:res.partner.title,shortcut:l10n_ch.res_c_partner_title_societe
#: model:res.partner.title,shortcut:l10n_ch.res_partner_title_societe
msgid "sc"
msgstr ""
msgstr "sc"
#. module: l10n_ch
#: model:account.account.type,name:l10n_ch.account_type_income
msgid "PP : Chiffre d'affaires"
msgstr ""
msgstr "PP : Chiffre d'affaires"
#. module: l10n_ch
#: help:res.company,bvr_delta_vert:0
msgid "vert. delta in mm 1.2 will print the bvz 1.2mm lefter"
msgstr ""
msgstr "vert. delta in mm 1.2 will print the bvz 1.2mm lefter"
#. module: l10n_ch
#: model:account.account.type,name:l10n_ch.account_type_non_ope_result
msgid "PP : Resultat activites annexes"
msgstr ""
msgstr "PP : Resultat activites annexes"
#. module: l10n_ch
#: model:res.partner.bank.type,name:l10n_ch.dta_iban
msgid "DTA-IBAN"
msgstr ""
msgstr "DTA-IBAN"
#. module: l10n_ch
#: model:res.partner.bank.type.field,name:l10n_ch.acc_num_field_bvbank
@@ -751,7 +766,7 @@ msgstr "acc_number"
#. module: l10n_ch
#: field:res.company,bvr_delta_vert:0
msgid "BVR Vert. Delta (mm)"
msgstr ""
msgstr "BVR Vert. Delta (mm)"
#. module: l10n_ch
#: model:ir.actions.todo,note:l10n_ch.config_call_account_template_l10n_ch
@@ -767,43 +782,53 @@ msgid ""
"Accounting/Financial\n"
" Accounts/Generate Chart of Accounts from a Chart Template."
msgstr ""
"Generate Chart of Accounts from a Chart Template. You will be asked\n"
" to pass the name of the company, the chart template to "
"follow, the no. of digits to\n"
" generate the code for your accounts and Bank account, "
"currency to create Journals.\n"
" Thus,the pure copy of chart Template is generated. This is "
"the same wizard that runs\n"
" from Financial Management/Configuration/Financial "
"Accounting/Financial\n"
" Accounts/Generate Chart of Accounts from a Chart Template."
#. module: l10n_ch
#: help:res.company,bvr_delta_horz:0
msgid "horiz. delta in mm 1.2 will print the bvz 1.2mm lefter"
msgstr ""
msgstr "horiz. delta in mm 1.2 will print the bvz 1.2mm lefter"
#. module: l10n_ch
#: model:account.account.type,name:l10n_ch.account_type_building_asset
msgid "Bilan : Immo corporelles immobilieres"
msgstr ""
msgstr "Bilan : Immo corporelles immobilieres"
#. module: l10n_ch
#: model:ir.model,name:l10n_ch.model_bvr_import_wizard
msgid "bvr.import.wizard"
msgstr ""
msgstr "bvr.import.wizard"
#. module: l10n_ch
#: model:res.partner.bank.type.field,name:l10n_ch.bvr_num_field_bvrbank
#: model:res.partner.bank.type.field,name:l10n_ch.bvr_num_field_bvrpost
msgid "bvr_number"
msgstr ""
msgstr "bvr_number"
#. module: l10n_ch
#: model:res.partner.title,shortcut:l10n_ch.res_c_partner_title_sir
#: model:res.partner.title,shortcut:l10n_ch.res_partner_title_sir
msgid "M. "
msgstr ""
msgstr "M. "
#. module: l10n_ch
#: model:account.account.type,name:l10n_ch.account_type_closing
msgid "Autre : Cloture"
msgstr ""
msgstr "Autre : Cloture"
#. module: l10n_ch
#: constraint:account.move.line:0
msgid "You can not create move line on view account."
msgstr ""
msgstr "You can not create move line on view account."
#~ msgid "The VAT doesn't seem to be correct."
#~ msgstr "O imposto não parece estar correto."
+540
View File
@@ -0,0 +1,540 @@
# Brazilian Portuguese translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-03-15 01:10+0000\n"
"Last-Translator: Emerson <Unknown>\n"
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-03-15 04:55+0000\n"
"X-Generator: Launchpad (build 12559)\n"
#. module: lunch
#: wizard_view:lunch.cashbox.clean,init:0
msgid "Reset cashbox"
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_order_form
#: model:ir.ui.menu,name:lunch.menu_lunch_order_form
#: model:ir.ui.menu,name:lunch.menu_lunch_reporting_order
msgid "Lunch Orders"
msgstr ""
#. module: lunch
#: wizard_view:lunch.order.cancel,init:0
msgid "Are you sure you want to cancel this order ?"
msgstr "Tem certeza que deseja cancelar este pedido?"
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_cashmove_form
msgid "Cash Moves"
msgstr ""
#. module: lunch
#: view:lunch.cashmove:0
#: view:lunch.order:0
#: view:report.lunch.amount:0
#: view:report.lunch.order:0
msgid "Group By..."
msgstr "Agrupar Por..."
#. module: lunch
#: model:ir.model,name:lunch.model_lunch_order_confirm
msgid "confirm Order"
msgstr "confirmar o Pedido"
#. module: lunch
#: view:report.lunch.order:0
msgid " 7 Days "
msgstr " 7 Dias "
#. module: lunch
#: model:ir.module.module,description:lunch.module_meta_information
msgid ""
"\n"
" The base module to manage lunch\n"
"\n"
" keep track for the Lunch Order ,Cash Moves ,CashBox ,Product.\n"
" Apply Different Category for the product.\n"
" "
msgstr ""
#. module: lunch
#: view:lunch.cashmove:0
#: view:lunch.order:0
msgid "Today"
msgstr "Hoje"
#. module: lunch
#: selection:report.lunch.amount,month:0
#: selection:report.lunch.order,month:0
msgid "March"
msgstr "Março"
#. module: lunch
#: report:lunch.order:0
msgid "Total :"
msgstr "Total :"
#. module: lunch
#: field:report.lunch.amount,day:0
#: view:report.lunch.order:0
#: field:report.lunch.order,day:0
msgid "Day"
msgstr "Dia"
#. module: lunch
#: model:ir.actions.wizard,name:lunch.wizard_id_cancel
#: wizard_view:lunch.order.cancel,init:0
msgid "Cancel Order"
msgstr "Cancelar Pedido"
#. module: lunch
#: field:lunch.cashmove,amount:0
#: field:report.lunch.amount,amount:0
msgid "Amount"
msgstr "Valor"
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_product_form
#: view:lunch.product:0
msgid "Products"
msgstr "Produtos"
#. module: lunch
#: model:ir.model,name:lunch.model_report_lunch_amount
msgid "Amount available by user and box"
msgstr ""
#. module: lunch
#: view:report.lunch.amount:0
msgid " Month "
msgstr " Mês "
#. module: lunch
#: model:ir.model,name:lunch.model_report_lunch_order
msgid "Lunch Orders Statistics"
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_cashmove_form
#: view:lunch.cashmove:0
#: field:lunch.order,cashmove:0
msgid "CashMove"
msgstr ""
#. module: lunch
#: selection:lunch.order,state:0
msgid "Confirmed"
msgstr "Confirmado"
#. module: lunch
#: view:lunch.order.confirm:0
msgid "Confirm"
msgstr "Confirmar"
#. module: lunch
#: model:ir.module.module,shortdesc:lunch.module_meta_information
msgid "Lunch Module"
msgstr ""
#. module: lunch
#: view:lunch.order:0
msgid "Search Lunch Order"
msgstr ""
#. module: lunch
#: field:lunch.order,state:0
msgid "State"
msgstr "Status"
#. module: lunch
#: field:report.lunch.order,price_total:0
msgid "Total Price"
msgstr "Preço Total"
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_report_amount_tree
#: view:report.lunch.amount:0
msgid "Box Amount by User"
msgstr ""
#. module: lunch
#: field:lunch.cashmove,create_date:0
msgid "Creation Date"
msgstr "Data de Criação"
#. module: lunch
#: report:lunch.order:0
msgid "Name/Date"
msgstr "Nome/Data"
#. module: lunch
#: field:lunch.order,descript:0
msgid "Description Order"
msgstr "Descrição do Pedido"
#. module: lunch
#: model:ir.actions.wizard,name:lunch.lunch_order_confirm
#: wizard_button:lunch.order.confirm,init,go:0
msgid "Confirm Order"
msgstr "Confirmar Pedido"
#. module: lunch
#: selection:report.lunch.amount,month:0
#: selection:report.lunch.order,month:0
msgid "July"
msgstr "Julho"
#. module: lunch
#: view:lunch.cashmove:0
#: view:report.lunch.amount:0
#: view:report.lunch.order:0
msgid "Box"
msgstr "Caixa"
#. module: lunch
#: view:report.lunch.order:0
msgid " 365 Days "
msgstr " 365 dias "
#. module: lunch
#: view:report.lunch.amount:0
msgid " Month-1 "
msgstr " Mês-1 "
#. module: lunch
#: field:report.lunch.amount,date:0
msgid "Created Date"
msgstr "Data de Criação"
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_category_form
msgid " Product Categories "
msgstr ""
#. module: lunch
#: wizard_button:lunch.cashbox.clean,init,zero:0
msgid "Set to Zero"
msgstr "Definir como Zero"
#. module: lunch
#: model:ir.model,name:lunch.model_lunch_cashmove
msgid "Cash Move"
msgstr ""
#. module: lunch
#: selection:report.lunch.amount,month:0
#: selection:report.lunch.order,month:0
msgid "April"
msgstr "Abril"
#. module: lunch
#: selection:report.lunch.amount,month:0
#: selection:report.lunch.order,month:0
msgid "September"
msgstr "Setembro"
#. module: lunch
#: selection:report.lunch.amount,month:0
#: selection:report.lunch.order,month:0
msgid "December"
msgstr "Dezembro"
#. module: lunch
#: field:report.lunch.amount,month:0
#: view:report.lunch.order:0
#: field:report.lunch.order,month:0
msgid "Month"
msgstr "Mês"
#. module: lunch
#: wizard_field:lunch.order.confirm,init,confirm_cashbox:0
msgid "Name of box"
msgstr ""
#. module: lunch
#: wizard_button:lunch.order.cancel,init,cancel:0
msgid "Yes"
msgstr "Sim"
#. module: lunch
#: model:ir.model,name:lunch.model_lunch_category
#: view:lunch.category:0
#: field:lunch.product,category_id:0
msgid "Category"
msgstr "Categoria"
#. module: lunch
#: view:report.lunch.amount:0
msgid " Year "
msgstr " Ano "
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_category_form
msgid "Product Categories"
msgstr "Categorias de Produtos"
#. module: lunch
#: wizard_button:lunch.order.cancel,init,end:0
msgid "No"
msgstr "Não"
#. module: lunch
#: wizard_view:lunch.order.confirm,init:0
msgid "Orders Confirmation"
msgstr ""
#. module: lunch
#: wizard_view:lunch.cashbox.clean,init:0
msgid "Are you sure you want to reset this cashbox ?"
msgstr ""
#. module: lunch
#: selection:lunch.order,state:0
msgid "Draft"
msgstr "Provisório"
#. module: lunch
#: selection:report.lunch.amount,month:0
#: selection:report.lunch.order,month:0
msgid "August"
msgstr "Agosto"
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_report_lunch_order_all
#: view:report.lunch.order:0
msgid "Lunch Order Analysis"
msgstr ""
#. module: lunch
#: selection:report.lunch.amount,month:0
#: selection:report.lunch.order,month:0
msgid "June"
msgstr "Junho"
#. module: lunch
#: field:lunch.cashmove,user_cashmove:0
#: field:lunch.order,user_id:0
#: field:report.lunch.amount,user_id:0
msgid "User Name"
msgstr "Nome do Usuário"
#. module: lunch
#: view:report.lunch.order:0
msgid "Sales Analysis"
msgstr "Análise de Vendas"
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch
msgid "Lunch"
msgstr ""
#. module: lunch
#: view:lunch.cashmove:0
#: view:report.lunch.order:0
msgid "User"
msgstr "Usuário"
#. module: lunch
#: field:lunch.order,date:0
msgid "Date"
msgstr "Data"
#. module: lunch
#: selection:report.lunch.amount,month:0
#: selection:report.lunch.order,month:0
msgid "November"
msgstr "Novembro"
#. module: lunch
#: selection:report.lunch.amount,month:0
#: selection:report.lunch.order,month:0
msgid "October"
msgstr "Outubro"
#. module: lunch
#: selection:report.lunch.amount,month:0
#: selection:report.lunch.order,month:0
msgid "January"
msgstr "Janeiro"
#. module: lunch
#: model:ir.model,name:lunch.model_lunch_cashbox_clean
msgid "clean cashbox"
msgstr ""
#. module: lunch
#: field:lunch.cashmove,active:0
#: field:lunch.product,active:0
msgid "Active"
msgstr "Ativo"
#. module: lunch
#: field:report.lunch.order,date:0
msgid "Date Order"
msgstr "Data do Pedido"
#. module: lunch
#: model:ir.model,name:lunch.model_lunch_cashbox
msgid "Cashbox for Lunch "
msgstr ""
#. module: lunch
#: model:ir.actions.wizard,name:lunch.wizard_clean_cashbox
msgid "Set CashBox to Zero"
msgstr ""
#. module: lunch
#: field:lunch.cashmove,box:0
#: field:report.lunch.amount,box:0
msgid "Box Name"
msgstr ""
#. module: lunch
#: wizard_button:lunch.cashbox.clean,init,end:0
#: wizard_button:lunch.order.confirm,init,end:0
msgid "Cancel"
msgstr "Cancelar"
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_cashbox_form
msgid " Cashboxes "
msgstr ""
#. module: lunch
#: rml:lunch.order:0
msgid "Unit Price"
msgstr "Preço Unitário"
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_product_form
#: field:lunch.order,product:0
msgid "Product"
msgstr "Produto"
#. module: lunch
#: rml:lunch.order:0
#: field:lunch.product,description:0
msgid "Description"
msgstr "Descrição"
#. module: lunch
#: selection:report.lunch.amount,month:0
#: selection:report.lunch.order,month:0
msgid "May"
msgstr "Maio"
#. module: lunch
#: field:lunch.order,price:0
#: field:lunch.product,price:0
msgid "Price"
msgstr "Preço"
#. module: lunch
#: view:lunch.cashmove:0
msgid "Search CashMove"
msgstr ""
#. module: lunch
#: view:report.lunch.amount:0
msgid "Total box"
msgstr ""
#. module: lunch
#: model:ir.model,name:lunch.model_lunch_product
msgid "Lunch Product"
msgstr ""
#. module: lunch
#: field:lunch.cashbox,sum_remain:0
msgid "Total Remaining"
msgstr ""
#. module: lunch
#: view:lunch.order:0
msgid "Total price"
msgstr ""
#. module: lunch
#: selection:report.lunch.amount,month:0
#: selection:report.lunch.order,month:0
msgid "February"
msgstr "Fevereiro"
#. module: lunch
#: field:lunch.cashbox,name:0
#: field:lunch.cashmove,name:0
#: field:lunch.category,name:0
#: rml:lunch.order:0
#: field:lunch.product,name:0
msgid "Name"
msgstr "Nome"
#. module: lunch
#: view:lunch.cashmove:0
msgid "Total amount"
msgstr "Valor total"
#. module: lunch
#: view:lunch.category:0
msgid "Category related to Products"
msgstr ""
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_cashbox_form
#: view:lunch.cashbox:0
msgid "Cashboxes"
msgstr ""
#. module: lunch
#: view:lunch.category:0
#: rml:lunch.order:0
#: view:lunch.order:0
msgid "Order"
msgstr "Pedido"
#. module: lunch
#: model:ir.actions.report.xml,name:lunch.report_lunch_order
#: model:ir.model,name:lunch.model_lunch_order
#: model:ir.ui.menu,name:lunch.menu_lunch
#: report:lunch.order:0
msgid "Lunch Order"
msgstr ""
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_report_lunch_amount_tree
#: model:ir.ui.menu,name:lunch.menu_lunch_report_amount_tree
msgid "Cash Position by User"
msgstr ""
#. module: lunch
#: field:lunch.cashbox,manager:0
msgid "Manager"
msgstr "Gerente"
#. module: lunch
#: view:report.lunch.order:0
msgid " 30 Days "
msgstr " 30 Dias "
#. module: lunch
#: view:lunch.order:0
msgid "To Confirm"
msgstr ""
#. module: lunch
#: field:report.lunch.amount,year:0
#: view:report.lunch.order:0
#: field:report.lunch.order,year:0
msgid "Year"
msgstr ""
+2 -2
View File
@@ -46,8 +46,8 @@ class lunch_order_confirm(osv.osv_memory):
data = context and context.get('active_ids', []) or []
order_ref = self.pool.get('lunch.order')
for confirm_obj in self.read(cr, uid, ids):
order_ref.confirm(cr, uid, data, confirm_obj['confirm_cashbox'], context)
for confirm_obj in self.browse(cr, uid, ids, context=context):
order_ref.confirm(cr, uid, data, confirm_obj.confirm_cashbox.id, context)
return {'type': 'ir.actions.act_window_close'}
lunch_order_confirm()
+2 -2
View File
@@ -70,10 +70,10 @@ class mrp_product_produce(osv.osv_memory):
context = {}
prod_obj = self.pool.get('mrp.production')
move_ids = context.get('active_ids', [])
for data in self.read(cr, uid, ids, context=context):
for data in self.browse(cr, uid, ids, context=context):
for move_id in move_ids:
prod_obj.action_produce(cr, uid, move_id,
data['product_qty'], data['mode'], context=context)
data.product_qty, data.mode, context=context)
return {}
mrp_product_produce()
-129
View File
@@ -1,129 +0,0 @@
# -*- 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/>.
#
##############################################################################
from osv import osv, fields
class mrp_track_move(osv.osv_memory):
_name = 'mrp.production.track'
_description = 'Production Track'
def view_init(self, cr, uid, fields_list, context=None):
""" Creates view dynamically and adding fields at runtime.
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
@param context: A standard dictionary
@return: New arch of view with new columns.
"""
res = super(mrp_track_move, self).view_init(cr, uid, fields_list, context=context)
record_id = context and context.get('active_id', False) or False
if record_id:
prod_obj = self.pool.get('mrp.production')
try:
prod = prod_obj.browse(cr, uid, record_id, context=context)
for m in [line for line in prod.move_created_ids]:
if 'track%s'%(m.id) not in self._columns:
self._columns['track%s'%(m.id)] = fields.boolean(string=m.product_id.name)
except:
return res
return res
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
""" Changes the view dynamically
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
@param context: A standard dictionary
@return: New arch of view.
"""
if context is None:
context = {}
res = super(mrp_track_move, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False)
record_id = context and context.get('active_id', False) or False
active_model = context.get('active_model')
if not record_id or (active_model and active_model != 'mrp.production'):
return res
prod_obj = self.pool.get('mrp.production')
prod = prod_obj.browse(cr, uid, record_id, context=context)
if prod.state != 'done':
res['arch'] = '''<form string="Track lines">
<label colspan="4" string="You can not split an unfinished production Output." />
<group col="2" colspan="4">
<button icon='gtk-cancel' special="cancel"
string="Exit" />
</group>
</form>
'''
else:
arch_lst = ['<form string="Track lines">', '<label colspan="4" string="The field on each line says whether this lot should be tracked or not." />']
for m in [line for line in prod.move_created_ids]:
quantity = m.product_qty
res['fields']['track%s' %m.id] = {'string' : m.product_id.name, 'type' : 'boolean', 'default' : lambda x,y,z: False}
arch_lst.append('<field name="track%s" />\n<newline />' %m.id)
arch_lst.append('<group col="2" colspan="4">')
arch_lst.append('<button icon=\'gtk-cancel\' special="cancel" string="Cancel" />')
arch_lst.append('<button name="track_lines" string="Track" colspan="1" type="object" icon="gtk-ok" />')
arch_lst.append('</group>')
arch_lst.append('</form>')
res['arch'] = '\n'.join(arch_lst)
return res
def track_lines(self, cr, uid, ids, context=None):
""" Tracks Finished products and splits products to finish lines.
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
@param ids: List of IDs selected
@param context: A standard dictionary
@return:
"""
if context is None:
context = {}
record_id = context and context.get('active_id', False) or False
assert record_id, 'Active ID not found'
data = self.read(cr, uid, ids[0])
prod_obj = self.pool.get('mrp.production')
prod = prod_obj.browse(cr, uid, record_id, context=context)
if not prod.move_created_ids and prod.state != 'done':
return {}
prodlot_obj = self.pool.get('stock.production.lot')
move_obj = self.pool.get('stock.move')
move_ids = [m.id for m in [line for line in prod.move_created_ids]]
for idx, move in enumerate(move_obj.browse(cr, uid, move_ids, context=context)):
if data['track%s' %move.id]:
for idx in range(int(move.product_qty)):
update_val = {'product_qty': 1}
if idx:
current_move = move_obj.copy(cr, uid, move.id, {'state': move.state, 'production_id': move.production_id.id})
else:
current_move = move.id
new_prodlot = prodlot_obj.create(cr, uid, {'name': 'PRODUCTION:%d:LOT:%d' % (record_id, idx+1), 'product_id': move.product_id.id})
update_val['prodlot_id'] = new_prodlot
move_obj.write(cr, uid, [current_move], update_val)
return {'type': 'ir.actions.act_window_close'}
mrp_track_move()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-16
View File
@@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- Track Production -->
<act_window name="Track Production"
res_model="mrp.production.track"
src_model="mrp.production"
view_mode="form"
target="new"
key2="client_action_multi"
id="act_production_track"/>
</data>
</openerp>
@@ -374,7 +374,9 @@
I click on Return Picking button.
-
!record {model: pos.return, id: pos_return_0}:
{}
pos_moves_ids:
- product_id: product_product_hppaviliondesktoppcs0
quantity: 5.0
-
I Return the product.
-
@@ -149,6 +149,8 @@ class pos_make_payment(osv.osv_memory):
order = order_obj.browse(cr, uid, active_id, context=context)
amount = order.amount_total - order.amount_paid
data = self.read(cr, uid, ids, context=context)[0]
for m2o_field in ['product_id','pricelist_id','partner_id']:
data[m2o_field] = data[m2o_field][0]
partner = obj_partner.browse(cr, uid, data['partner_id'], context=context)
if not partner.address:
raise osv.except_osv(_('Error!'),_("Customer doesn't have an address to make the invoice"))
+52 -128
View File
@@ -24,9 +24,25 @@ from osv import osv,fields
from tools.translate import _
import time
class pos_return_memory(osv.osv_memory):
_name = "pos.return.memory"
_rec_name = 'product_id'
_columns = {
'product_id' : fields.many2one('product.product', string="Product", required=True),
'quantity' : fields.float("Quantity", required=True),
'pos_moves_id' : fields.many2one('pos.return', string="Move"),
'line_id': fields.integer('Line Id'),
}
pos_return_memory()
class pos_return(osv.osv_memory):
_name = 'pos.return'
_description = 'Point of sale return'
_columns = {
'pos_moves_ids' : fields.one2many('pos.return.memory', 'pos_moves_id', 'Moves'),
}
def default_get(self, cr, uid, fields, context=None):
"""
@@ -41,98 +57,22 @@ class pos_return(osv.osv_memory):
@return: A dictionary which of fields with values.
"""
res = super(pos_return, self).default_get(cr, uid, fields, context=context)
order_obj = self.pool.get('pos.order')
if context is None:
context={}
active_ids = context.get('active_ids')
result=[]
for order in order_obj.browse(cr, uid, active_ids, context=context):
for line in order.lines:
if 'return%s'%(line.id) in fields:
res['return%s'%(line.id)] = line.qty
result.append({
'product_id' : line.product_id.id,
'quantity' : line.qty,
'line_id':line.id
})
res.update({'pos_moves_ids': result})
return res
def view_init(self, cr, uid, fields_list, context=None):
"""
Creates view dynamically and adding fields at runtime.
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
@param context: A standard dictionary
@return: New arch of view with new columns.
"""
res = super(pos_return, self).view_init(cr, uid, fields_list, context=context)
order_obj=self.pool.get('pos.order')
if context is None:
context={}
active_ids=context.get('active_ids')
for order in order_obj.browse(cr, uid, active_ids, context=context):
for line in order.lines:
if 'return%s'%(line.id) not in self._columns:
self._columns['return%s'%(line.id)] = fields.float("Quantity")
return res
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False,submenu=False):
"""
Changes the view dynamically
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
@param context: A standard dictionary
@return: New arch of view.
"""
result = super(pos_return, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar,submenu)
if context is None:
context={}
active_model = context.get('active_model')
if not active_model and active_model != 'pos.order':
return result
order_obj = self.pool.get('pos.order')
active_id = context.get('active_id', False)
if active_id:
_moves_arch_lst="""<?xml version="1.0"?>
<form string="Return lines">
<label string="Quantities you enter, match to products that will return to the stock." colspan="4"/>"""
_line_fields = result['fields']
order=order_obj.browse(cr, uid, active_id, context=context)
for line in order.lines:
quantity=line.qty
_line_fields.update({
'return%s'%(line.id) : {
'string': line.product_id.name,
'type' : 'float',
'required': True,
'default':quantity
},
})
_moves_arch_lst += """
<field name="return%s"/>
<newline/>
"""%(line.id)
_moves_arch_lst+="""
<newline/>
<separator colspan="4"/>
<button icon='gtk-cancel' special="cancel"
string="Cancel" />
<button icon='gtk-ok' name= "create_returns"
string="Return with Exchange" type="object"/>
<button icon='gtk-ok' name="create_returns2"
string="Refund Without Exchange" type="object"/>
</form>"""
result['arch'] = _moves_arch_lst
result['fields'] = _line_fields
return result
def create_returns(self, cr, uid, data, context=None):
"""
@param self: The object pointer.
@@ -145,23 +85,15 @@ class pos_return(osv.osv_memory):
"""
if context is None:
context = {}
current_rec = self.read(cr, uid, data[0], context=context)
current_rec = self.browse(cr, uid, data, context=context)[0]
order_obj =self.pool.get('pos.order')
line_obj = self.pool.get('pos.order.line')
pos_current = order_obj.browse(cr, uid, context.get('active_id'), context=context)
pos_line_ids = pos_current.lines
if pos_line_ids:
for pos_line in pos_line_ids:
line_field = "return"+str(pos_line.id)
pos_list = current_rec.keys()
newline_vals = {}
if line_field in pos_list :
less_qty = current_rec.get(line_field)
pos_cur_line = line_obj.browse(cr, uid, pos_line.id, context=context)
qty = pos_cur_line.qty
qty = qty - less_qty
newline_vals.update({'qty':qty})
line_obj.write(cr, uid, pos_line.id, newline_vals, context=context)
for pos_line in pos_current.lines:
for record in current_rec.pos_moves_ids:
if pos_line.id == record.line_id:
less_qty = record.quantity
line_obj.write(cr, uid, pos_line.id, {'qty':pos_line.qty - less_qty}, context=context)
return {
'name': _('Add Product'),
'view_type': 'form',
@@ -174,6 +106,7 @@ class pos_return(osv.osv_memory):
'type': 'ir.actions.act_window',
}
def create_returns2(self, cr, uid, ids, context=None):
if context is None:
context = {}
active_id = context.get('active_id', False)
@@ -187,18 +120,16 @@ class pos_return(osv.osv_memory):
wf_service = netsvc.LocalService("workflow")
#Todo :Need to clean the code
if active_id:
data = self.read(cr, uid, ids)[0]
data = self.browse(cr, uid, ids, context=context)[0]
date_cur = time.strftime('%Y-%m-%d %H:%M:%S')
for order_id in order_obj.browse(cr, uid, [active_id], context=context):
prop_ids = property_obj.search(cr, uid,[('name', '=', 'property_stock_customer')])
val = property_obj.browse(cr, uid, prop_ids[0], context=context).value_reference
stock_dest_id = property_obj.get(cr, uid, 'property_stock_customer', 'res.partner', context=context).id
cr.execute("SELECT s.id FROM stock_location s, stock_warehouse w "
"WHERE w.lot_stock_id=s.id AND w.id=%s ",
(order_id.shop_id.warehouse_id.id,))
res = cr.fetchone()
location_id = res and res[0] or None
stock_dest_id = val.id
new_picking = picking_obj.copy(cr, uid, order_id.picking_id.id, {'name':'%s (return)' % order_id.name,
'move_lines': [],
'state':'draft',
@@ -212,25 +143,23 @@ class pos_return(osv.osv_memory):
account_def = property_obj.get(cr, uid, 'property_account_payable', 'res.partner', context=context)
amount = 0.0
for line in order_id.lines:
if line.id:
try:
qty = data['return%s' %line.id]
for record in data.pos_moves_ids:
if line.id == record.line_id:
qty = record.quantity
amount += qty * line.price_unit
except :
qty = line.qty
stock_move_obj.create(cr, uid, {
'product_qty': qty ,
'product_uos_qty': uom_obj._compute_qty(cr, uid, qty ,line.product_id.uom_id.id),
'picking_id': new_picking,
'product_uom': line.product_id.uom_id.id,
'location_id': location_id,
'product_id': line.product_id.id,
'location_dest_id': stock_dest_id,
'name': '%s (return)' %order_id.name,
'date': date_cur
})
if qty != 0.0:
line_obj.copy(cr, uid, line.id, {'qty': -qty, 'order_id': new_order})
stock_move_obj.create(cr, uid, {
'product_qty': qty ,
'product_uos_qty': uom_obj._compute_qty(cr, uid, qty ,line.product_id.uom_id.id),
'picking_id': new_picking,
'product_uom': line.product_id.uom_id.id,
'location_id': location_id,
'product_id': line.product_id.id,
'location_dest_id': stock_dest_id,
'name': '%s (return)' %order_id.name,
'date': date_cur
})
if qty != 0.0:
line_obj.copy(cr, uid, line.id, {'qty': -qty, 'order_id': new_order})
statementl_obj.create(cr, uid, {
'name': 'Refund %s'%order_id.name,
'statement_id': order_id.statement_ids[0].statement_id.id,
@@ -290,15 +219,12 @@ class add_product(osv.osv_memory):
for order_id in order_obj.browse(cr, uid, [active_id], context=context):
prod=data['product_id']
qty=data['quantity']
prop_ids = property_obj.search(cr, uid, [('name', '=', 'property_stock_customer')])
val = property_obj.browse(cr, uid, prop_ids[0]).value_reference
stock_dest_id = property_obj.get(cr, uid, 'property_stock_customer', 'res.partner', context=context).id
cr.execute("SELECT s.id FROM stock_location s, stock_warehouse w "
"WHERE w.lot_stock_id=s.id AND w.id=%s ",
(order_id.shop_id.warehouse_id.id,))
res=cr.fetchone()
location_id=res and res[0] or None
stock_dest_id = val.id
prod_id=prod_obj.browse(cr, uid, prod, context=context)
new_picking=picking_obj.create(cr, uid, {
'name':'%s (Added)' %order_id.name,
@@ -353,18 +279,16 @@ class add_product(osv.osv_memory):
data = return_boj.read(cr,uid,return_id,[])[0]
wf_service = netsvc.LocalService("workflow")
self_data = self.read(cr, uid, ids)[0]
order_obj.add_product(cr, uid, active_ids[0], self_data['product_id'], self_data['quantity'], context=context)
self_data = self.browse(cr, uid, ids, context=context)[0]
order_obj.add_product(cr, uid, active_ids[0], self_data.product_id.id, self_data.quantity, context=context)
for order_id in order_obj.browse(cr, uid, active_ids, context=context):
prop_ids =property_obj.search(cr, uid, [('name', '=', 'property_stock_customer')])
val = property_obj.browse(cr, uid, prop_ids[0]).value_reference
stock_dest_id = property_obj.get(cr, uid, 'property_stock_customer', 'res.partner', context=context).id
cr.execute("SELECT s.id FROM stock_location s, stock_warehouse w "
" WHERE w.lot_stock_id=s.id AND w.id=%s ",
(order_id.shop_id.warehouse_id.id,))
res=cr.fetchone()
location_id=res and res[0] or None
stock_dest_id = val.id
order_obj.write(cr,uid,[order_id.id],{'type_rec':'Exchange'})
if order_id.invoice_id:
+55 -10
View File
@@ -1,13 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="action_view_pos_return" model="ir.actions.act_window">
<field name="name">Return lines</field>
<field name="res_model">pos.return</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<data>
<record id="pos_return_form" model="ir.ui.view">
<field name="name">pos.return</field>
<field name="model">pos.return</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Return lines">
<label string=" Enter the quantities which you want to return." colspan="4"/>
<separator colspan="4"/>
<field name="pos_moves_ids" colspan="4" nolabel="1" mode="tree,form" width="550" height="200" >
</field>
<newline/>
<separator colspan="4"/>
<button icon='gtk-cancel' special="cancel" string="Cancel" />
<button icon='gtk-ok' name= "create_returns" string="Return With Exchange" type="object"/>
<button icon='gtk-ok' name="create_returns2" string="Refund Without Exchange" type="object"/>
</form>
</field>
</record>
<record id="action_view_pos_return" model="ir.actions.act_window">
<field name="name">Return lines</field>
<field name="res_model">pos.return</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<record id="pos_return_tree_in" model="ir.ui.view">
<field name="name">pos.return.memory</field>
<field name="model">pos.return.memory</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree editable="bottom" string="Return Product">
<field name="product_id" />
<field name="quantity" />
<field name="line_id" invisible="1"/>
</tree>
</field>
</record>
<record id="pos_return_form_in" model="ir.ui.view">
<field name="name">pos.return.memory</field>
<field name="model">pos.return.memory</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form>
<field name="product_id" />
<field name="quantity" />
<field name="line_id" invisible="1"/>
</form>
</field>
</record>
</data>
</openerp>
</data>
</openerp>
+1
View File
@@ -53,6 +53,7 @@ class product_price_list(osv.osv_memory):
datas = {'ids': context.get('active_ids', [])}
res = self.read(cr, uid, ids, ['price_list','qty1', 'qty2','qty3','qty4','qty5'], context=context)
res = res and res[0] or {}
res['price_list'] = res['price_list'][0]
datas['form'] = res
return {
'type': 'ir.actions.report.xml',
@@ -105,6 +105,7 @@ class project_task_delegate(osv.osv_memory):
task_id = context.get('active_id', False)
task_pool = self.pool.get('project.task')
delegate_data = self.read(cr, uid, ids, context=context)[0]
delegate_data['user_id'] = delegate_data['user_id'][0]
delegate_data['name'] = tools.ustr(delegate_data['name'])
task_pool.do_delegate(cr, uid, task_id, delegate_data, context=context)
return {}
@@ -53,7 +53,7 @@ class project_timebox_fill(osv.osv_memory):
data = self.read(cr, uid, ids, [], context=context)
if not data[0]['task_ids']:
return {}
self.pool.get('project.task').write(cr, uid, data[0]['task_ids'], {'timebox_id':data[0]['timebox_to_id']})
self.pool.get('project.task').write(cr, uid, data[0]['task_ids'], {'timebox_id':data[0]['timebox_to_id'][0]})
return {'type': 'ir.actions.act_window_close'}
project_timebox_fill()
@@ -50,7 +50,7 @@ class project_compute_phases(osv.osv_memory):
raise osv.except_osv(_('Error!'), _('Please Specify Project to be schedule'))
if data['project_id']: # If project mentioned find its phases
project_ids = [data['project_id']]
project_ids = [data['project_id'][0]]
else: # Else take all the draft,open,pending states phases
project_ids = project_pool.search(cr, uid, [], context=context)
@@ -38,7 +38,7 @@ class project_compute_tasks(osv.osv_memory):
context = {}
context['compute_by'] = 'project'
data = self.read(cr, uid, ids, [])[0]
project_id = data['project_id']
project_id = data['project_id'][0]
project_pool.schedule_tasks(cr, uid, [project_id], context=context)
return self._open_task_list(cr, uid, data, context=context)
@@ -35,6 +35,8 @@ class backlog_create_task(osv.osv_memory):
ids_task = []
data = self.read(cr, uid, ids, [], context=context)[0]
data['user_id'] = data['user_id'][0]
backlogs = backlog_id.browse(cr, uid, context['active_ids'], context=context)
result = mod_obj._get_id(cr, uid, 'project', 'view_task_search_form')
id = mod_obj.read(cr, uid, result, ['res_id'])
@@ -66,15 +66,14 @@ class project_scrum_backlog_merge(osv.osv_memory):
context = {}
#This will check product backlog's project id if different then will accept a new id provided by the user.
if 'scrum_projects' in context:
data = self.read(cr, uid, ids, [])[0]
if data['project_id'] == False:
data = self.browse(cr, uid, ids, [])[0]
if data.project_id.id == False:
raise osv.except_osv(_('Warning'),_('Please select any Project.'))
new_project_id = data['project_id']
new_project_id = data.project_id.id
else:
p_id = backlog_obj.read(cr, uid, context['active_id'], ['project_id'])
new_project_id = p_id['project_id'][0]
#To merge note and description of backlogs
new_note = ''
new_description = ''
for backlogs in backlog_obj.browse(cr, uid, context['active_ids'], context=context):
@@ -93,7 +92,6 @@ class project_scrum_backlog_merge(osv.osv_memory):
'project_id': new_project_id,
'expected_hours': round(max(new_exp_hour))
}, context=context)
#To assing a new product backlog to merged tasks
task_obj.write(cr, uid, task_lines, {'product_backlog_id': id_b})
backlog_obj.unlink(cr, uid, context['active_ids'], context=context)
@@ -41,10 +41,10 @@ class backlog_sprint_assign(osv.osv_memory):
backlog_ids = []
if context is None:
context = {}
data = self.read(cr, uid, ids, [], context=context)[0]
data = self.browse(cr, uid, ids,context=context)[0]
for backlog in backlog_obj.browse(cr, uid, context['active_ids'], context=context):
backlog_ids.append(backlog.id)
if data['convert_to_task']:
if data.convert_to_task:
task_id = task.create(cr, uid, {
'product_backlog_id': backlog.id,
'name': backlog.name,
@@ -56,12 +56,12 @@ class backlog_sprint_assign(osv.osv_memory):
})
message = _('Product Backlog') + " '" + backlog.name + "' "+ _("is converted into Task %d."%(task_id,))
self.log(cr, uid, backlog.id, message)
if data['state_open'] and backlog.state == "draft":
if data.state_open and backlog.state == "draft":
backlog_obj.write(cr, uid, backlog.id, {'state':'open'})
sprint = sprint_obj.browse(cr, uid, data['sprint_id'], context=context)
sprint = sprint_obj.browse(cr, uid, data.sprint_id.id, context=context)
message = _('Product Backlog') + " '" + backlog.name + "' "+ _("is assigned sprint:%s"%(sprint.name))
self.log(cr, uid, backlog.id, message)
backlog_obj.write(cr, uid, backlog_ids, {'sprint_id': data['sprint_id']}, context=context)
backlog_obj.write(cr, uid, backlog_ids, {'sprint_id': data.sprint_id.id}, context=context)
return {'type': 'ir.actions.act_window_close'}
backlog_sprint_assign()
@@ -67,7 +67,7 @@ class purchase_requisition_partner(osv.osv_memory):
context = {}
record_ids = context and context.get('active_ids', False)
if record_ids:
data = self.read(cr, uid, ids)
data = self.browse(cr, uid, ids,context=context)[0]
company = self.pool.get('res.users').browse(cr, uid, uid, context).company_id
order_obj = self.pool.get('purchase.order')
order_line_obj = self.pool.get('purchase.order.line')
@@ -77,10 +77,8 @@ class purchase_requisition_partner(osv.osv_memory):
prod_obj = self.pool.get('product.product')
tender_obj = self.pool.get('purchase.requisition')
acc_pos_obj = self.pool.get('account.fiscal.position')
partner_id = data[0]['partner_id']
supplier_data = partner_obj.browse(cr, uid, partner_id, context=context)
partner_id = data.partner_id.id
supplier_data = data.partner_id
address_id = partner_obj.address_get(cr, uid, [partner_id], ['delivery'])['delivery']
list_line=[]
purchase_order_line={}
@@ -1,3 +1,3 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_ir_header_webkit","ir.header_webkit","model_ir_header_webkit",,,,,
"access_ir_header_webkit","ir.header_webkit","model_ir_header_webkit",,1,,,
"access_ir_header_img","ir.header_img","model_ir_header_img",,,,,
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_ir_header_webkit ir.header_webkit model_ir_header_webkit 1
3 access_ir_header_img ir.header_img model_ir_header_img
+2 -1
View File
@@ -691,7 +691,7 @@ class stock_picking(osv.osv):
if res:
picking_obj = self.browse(cr, uid, res, context=context)
for move in picking_obj.move_lines:
move_obj.write(cr, uid, [move.id], {'tracking_id': False,'prodlot_id':False})
move_obj.write(cr, uid, [move.id], {'tracking_id': False,'prodlot_id':False, 'move_history_ids2': [(6, 0, [])], 'move_history_ids': [(6, 0, [])]})
return res
def onchange_partner_in(self, cr, uid, context=None, partner_id=None):
@@ -1623,6 +1623,7 @@ class stock_move(osv.osv):
if default is None:
default = {}
default = default.copy()
default.update({'move_history_ids2': [], 'move_history_ids': []})
return super(stock_move, self).copy(cr, uid, id, default, context=context)
def _auto_init(self, cursor, context=None):
@@ -115,7 +115,7 @@ class stock_invoice_onshipping(osv.osv_memory):
if context is None:
context = {}
picking_pool = self.pool.get('stock.picking')
onshipdata_obj = self.read(cr, uid, ids, ['journal_id', 'group', 'invoice_date'], context=context)
onshipdata_obj = self.read(cr, uid, ids, ['journal_id', 'group', 'invoice_date'])
if context.get('new_picking', False):
onshipdata_obj['id'] = onshipdata_obj.new_picking
onshipdata_obj[ids] = onshipdata_obj.new_picking
@@ -127,7 +127,7 @@ class stock_invoice_onshipping(osv.osv_memory):
res = picking_pool.action_invoice_create(cr, uid, active_ids,
journal_id = onshipdata_obj[0]['journal_id'],
group = onshipdata_obj[0]['group'],
type = context.get('inv_type'),
type = None,
context=context)
return res
+2 -2
View File
@@ -100,9 +100,9 @@ class stock_move_consume(osv.osv_memory):
context = {}
move_obj = self.pool.get('stock.move')
move_ids = context['active_ids']
for data in self.read(cr, uid, ids):
for data in self.browse(cr, uid, ids, context=context):
move_obj.action_consume(cr, uid, move_ids,
data['product_qty'], data['location_id'],
data.product_qty, data.location_id.id,
context=context)
return {'type': 'ir.actions.act_window_close'}
+1 -1
View File
@@ -68,7 +68,7 @@ class stock_partial_picking(osv.osv_memory):
if m.state in ('done', 'cancel'):
continue
result.append(self.__create_partial_picking_memory(m, pick_type))
if 'product_moves_in' in fields:
res.update({'product_moves_in': result})
if 'product_moves_out' in fields:
+76 -82
View File
@@ -25,9 +25,26 @@ import time
from osv import osv,fields
from tools.translate import _
class stock_return_picking_memory(osv.osv_memory):
_name = "stock.return.picking.memory"
_rec_name = 'product_id'
_columns = {
'product_id' : fields.many2one('product.product', string="Product", required=True),
'quantity' : fields.float("Quantity", required=True),
'wizard_id' : fields.many2one('stock.return.picking', string="Wizard"),
'move_id' : fields.many2one('stock.move', "Move"),
}
stock_return_picking_memory()
class stock_return_picking(osv.osv_memory):
_name = 'stock.return.picking'
_description = 'Return Picking'
_columns = {
'product_return_moves' : fields.one2many('stock.return.picking.memory', 'wizard_id', 'Moves'),
'invoice_state': fields.selection([('2binvoiced', 'To be refunded/invoiced'), ('none', 'No invoicing')], 'Invoicing',required=True),
}
def default_get(self, cr, uid, fields, context=None):
"""
@@ -39,6 +56,7 @@ class stock_return_picking(osv.osv_memory):
@param context: A standard dictionary
@return: A dictionary with default values for all field in ``fields``
"""
result1 = []
if context is None:
context = {}
res = super(stock_return_picking, self).default_get(cr, uid, fields, context=context)
@@ -48,13 +66,16 @@ class stock_return_picking(osv.osv_memory):
if pick:
if 'invoice_state' in fields:
if pick.invoice_state=='invoiced':
res['invoice_state'] = '2binvoiced'
res.update({'invoice_state': '2binvoiced'})
else:
res['invoice_state'] = 'none'
res.update({'invoice_state': 'none'})
return_history = self.get_return_history(cr, uid, record_id, context)
for line in pick.move_lines:
return_id = 'return%s'%(line.id)
if return_id in fields:
res[return_id] = line.product_qty
qty = line.product_qty - return_history[line.id]
if qty > 0:
result1.append({'product_id': line.product_id.id, 'quantity': qty,'move_id':line.id})
if 'product_return_moves' in fields:
res.update({'product_return_moves': result1})
return res
def view_init(self, cr, uid, fields_list, context=None):
@@ -75,62 +96,34 @@ class stock_return_picking(osv.osv_memory):
pick = pick_obj.browse(cr, uid, record_id, context=context)
if pick.state not in ['done','confirmed','assigned']:
raise osv.except_osv(_('Warning !'), _("You may only return pickings that are Confirmed, Available or Done!"))
return_history = {}
valid_lines = 0
for m in [line for line in pick.move_lines]:
if m.state == 'done':
return_history[m.id] = 0
for rec in m.move_history_ids2:
return_history[m.id] += (rec.product_qty * rec.product_uom.factor)
if m.product_qty * m.product_uom.factor >= return_history[m.id]:
return_history = self.get_return_history(cr, uid, record_id, context)
for m in pick.move_lines:
if m.product_qty * m.product_uom.factor > return_history[m.id]:
valid_lines += 1
if 'return%s'%(m.id) not in self._columns:
self._columns['return%s'%(m.id)] = fields.float(string=m.name, required=True)
if 'invoice_state' not in self._columns:
self._columns['invoice_state'] = fields.selection([('2binvoiced', 'To be refunded/invoiced'), ('none', 'No invoicing')], string='Invoicing', required=True)
if not valid_lines:
raise osv.except_osv(_('Warning !'), _("There are no products to return (only lines in Done state and not fully returned yet can be returned)!"))
return res
def fields_view_get(self, cr, uid, view_id=None, view_type='form',
context=None, toolbar=False, submenu=False):
"""
Changes the view dynamically
def get_return_history(self, cr, uid, pick_id, context=None):
"""
Get return_history.
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
@param pick_id: Picking id
@param context: A standard dictionary
@return: New arch of view.
@return: A dictionary which of values.
"""
res = super(stock_return_picking, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False)
record_id = context and context.get('active_id', False)
active_model = context.get('active_model')
if active_model != 'stock.picking':
return res
if record_id:
pick_obj = self.pool.get('stock.picking')
pick = pick_obj.browse(cr, uid, record_id)
return_history = {}
res['fields'].clear()
arch_lst=['<?xml version="1.0"?>', '<form string="%s">' % _('Return lines'), '<label string="%s" colspan="4"/>' % _('Provide the quantities of the returned products.')]
for m in pick.move_lines:
pick_obj = self.pool.get('stock.picking')
pick = pick_obj.browse(cr, uid, pick_id, context=context)
return_history = {}
for m in pick.move_lines:
if m.state == 'done':
return_history[m.id] = 0
for rec in m.move_history_ids2:
return_history[m.id] += rec.product_qty
quantity = m.product_qty
if m.state=='done' and quantity > return_history[m.id]:
arch_lst.append('<field name="return%s"/>\n<newline/>' % (m.id,))
res['fields']['return%s' % m.id]={'string':m.name, 'type':'float', 'required':True}
res.setdefault('returns', []).append(m.id)
arch_lst.append('<field name="invoice_state"/>\n<newline/>')
res['fields']['invoice_state']={'string':_('Invoicing'), 'type':'selection','required':True, 'selection':[('2binvoiced', _('To be refunded/invoiced')), ('none', _('No invoicing'))]}
arch_lst.append('<group col="2" colspan="4">')
arch_lst.append('<button icon="gtk-cancel" special="cancel" string="Cancel" />')
arch_lst.append('<button name="create_returns" string="Return" colspan="1" type="object" icon="gtk-apply" />')
arch_lst.append('</group>')
arch_lst.append('</form>')
res['arch'] = '\n'.join(arch_lst)
return res
return_history[m.id] += (rec.product_qty * rec.product_uom.factor)
return return_history
def create_returns(self, cr, uid, ids, context=None):
"""
@@ -148,48 +141,49 @@ class stock_return_picking(osv.osv_memory):
move_obj = self.pool.get('stock.move')
pick_obj = self.pool.get('stock.picking')
uom_obj = self.pool.get('product.uom')
data_obj = self.pool.get('stock.return.picking.memory')
wf_service = netsvc.LocalService("workflow")
pick = pick_obj.browse(cr, uid, record_id, context=context)
data = self.read(cr, uid, ids[0], context=context)
new_picking = None
date_cur = time.strftime('%Y-%m-%d %H:%M:%S')
set_invoice_state_to_none = True
returned_lines = 0
for move in pick.move_lines:
if not new_picking:
if pick.type=='out':
new_type = 'in'
elif pick.type=='in':
new_type = 'out'
else:
new_type = 'internal'
new_picking = pick_obj.copy(cr, uid, pick.id, {'name':'%s-return' % pick.name,
'move_lines':[], 'state':'draft', 'type':new_type,
'date':date_cur, 'invoice_state':data['invoice_state'],})
# Create new picking for returned products
if pick.type=='out':
new_type = 'in'
elif pick.type=='in':
new_type = 'out'
else:
new_type = 'internal'
new_picking = pick_obj.copy(cr, uid, pick.id, {'name':'%s-return' % pick.name,
'move_lines':[], 'state':'draft', 'type':new_type,
'date':date_cur, 'invoice_state':data['invoice_state'],})
val_id = data['product_return_moves']
for v in val_id:
data_get = data_obj.read(cr, uid, v)
mov_id = data_get['move_id']
new_qty = data_get['quantity']
move = move_obj.browse(cr, uid, mov_id, context=context)
new_location=move.location_dest_id.id
if move.state=='done':
new_qty = data['return%s' % move.id]
returned_qty = move.product_qty
for rec in move.move_history_ids2:
returned_qty -= rec.product_qty
if returned_qty != new_qty:
set_invoice_state_to_none = False
if new_qty:
returned_lines += 1
new_move=move_obj.copy(cr, uid, move.id, {
'product_qty': new_qty,
'product_uos_qty': uom_obj._compute_qty(cr, uid, move.product_uom.id,
new_qty, move.product_uos.id),
'picking_id':new_picking, 'state':'draft',
'location_id':new_location, 'location_dest_id':move.location_id.id,
'date':date_cur,})
move_obj.write(cr, uid, [move.id], {'move_history_ids2':[(4,new_move)]})
returned_qty = move.product_qty
for rec in move.move_history_ids2:
returned_qty -= rec.product_qty
if returned_qty != new_qty:
set_invoice_state_to_none = False
if new_qty:
returned_lines += 1
new_move=move_obj.copy(cr, uid, move.id, {
'product_qty': new_qty,
'product_uos_qty': uom_obj._compute_qty(cr, uid, move.product_uom.id,
new_qty, move.product_uos.id),
'picking_id':new_picking, 'state':'draft',
'location_id':new_location, 'location_dest_id':move.location_id.id,
'date':date_cur,})
move_obj.write(cr, uid, [move.id], {'move_history_ids2':[(4,new_move)]})
if not returned_lines:
raise osv.except_osv(_('Warning !'), _("Please specify at least one non-zero quantity!"))
@@ -9,5 +9,50 @@
key2="client_action_multi"
multi="True"
id="act_stock_return_picking"/>
</data>
<record id="stock_return_memory_tree_in" model="ir.ui.view">
<field name="name">stock.return.picking.memory.tree</field>
<field name="model">stock.return.picking.memory</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree editable="bottom" string="Product Moves">
<field name="product_id" />
<field name="quantity" />
</tree>
</field>
</record>
<record id="stock_return_memory_form_in" model="ir.ui.view">
<field name="name">stock.return.picking.memory.from</field>
<field name="model">stock.return.picking.memory</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form>
<field name="product_id" />
<field name="quantity" />
</form>
</field>
</record>
<record id="view_stock_return_picking_form" model="ir.ui.view">
<field name="name">Return lines</field>
<field name="model">stock.return.picking</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Return lines">
<label string="Provide the quantities of the returned products." colspan="4"/>
<separator string="" colspan="4"/>
<field name="product_return_moves" nolabel="1" colspan="6"/>
<field name="invoice_state" />
<separator string="" colspan="4" />
<group col="2" colspan="4">
<button special="cancel" string="_Cancel" icon="gtk-cancel"/>
<button name="create_returns" string="Return" colspan="1" type="object" icon="gtk-apply" />
</group>
</form>
</field>
</record>
</data>
</openerp>
-124
View File
@@ -1,124 +0,0 @@
# -*- 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/>.
#
##############################################################################
from osv import osv, fields
class stock_split_move_line(osv.osv_memory):
_name = 'stock.move.line.split'
_description = "Split Moves"
def default_get(self, cr, uid, fields, context=None):
""" To get default values for the object.
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
@param fields: List of fields for which we want default values
@param context: A standard dictionary
@return: A dictionary which of fields with values.
"""
if context is None:
context = {}
res = super(stock_split_move_line, self).default_get(cr, uid, fields, context=context)
record_id = context and context.get('active_id', False) or False
pick_obj = self.pool.get('stock.picking')
pick = pick_obj.browse(cr, uid, record_id, context=context)
for m in [line for line in pick.move_lines]:
res['move%s'%(m.id)] = m.product_qty
return res
def view_init(self, cr, uid, fields_list, context=None):
""" Creates view dynamically and adding fields at runtime.
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
@param context: A standard dictionary
@return: New arch of view with new columns.
"""
res = super(stock_split_move_line, self).view_init(cr, uid, fields_list, context=context)
record_id = context and context.get('active_id', False) or False
if record_id:
pick_obj = self.pool.get('stock.picking')
try:
pick = pick_obj.browse(cr, uid, record_id, context=context)
for m in [line for line in pick.move_lines]:
if 'move%s' % m.id not in self._columns:
self._columns['move%s' % m.id] = fields.float(string=m.product_id.name)
except:
return res
return res
def fields_view_get(self, cr, uid, view_id=None, view_type='form',
context=None, toolbar=False, submenu=False):
""" Changes the view dynamically
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
@param context: A standard dictionary
@return: New arch of view.
"""
res = super(stock_split_move_line, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False)
record_id = context and context.get('active_id', False) or False
assert record_id,'Active ID not found'
pick_obj = self.pool.get('stock.picking')
pick = pick_obj.browse(cr, uid, record_id, context=context)
arch_lst = ['<?xml version="1.0"?>', '<form string="Split lines">', '<label string="Indicate here the quantity of the new line. A quantity of zero will not split the line." colspan="4"/>']
for m in [line for line in pick.move_lines]:
quantity = m.product_qty
arch_lst.append('<field name="move%s" />\n<newline />' % (m.id,))
res['fields']['move%s' % m.id] = {'string' : m.product_id.name, 'type' : 'float', 'required' : True}
arch_lst.append('<group col="2" colspan="4">')
arch_lst.append('<button icon="gtk-cancel" special="cancel" string="Cancel" />')
arch_lst.append('<button name="split_lines" string="Split" colspan="1" type="object" icon="gtk-apply" />')
arch_lst.append('</group>')
arch_lst.append('</form>')
res['arch'] = '\n'.join(arch_lst)
return res
def split_lines(self, cr, uid, ids, context=None):
""" Splits moves in quantity given in the wizard.
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
@param ids: List of ids selected
@param context: A standard dictionary
@return: A dictionary which of fields with values.
"""
if context is None:
context = {}
move_obj = self.pool.get('stock.move')
record_id = context and context.get('active_id', False) or False
pick_obj = self.pool.get('stock.picking')
pick = pick_obj.browse(cr, uid, record_id, context=context)
data = self.read(cr, uid, ids[0])
for move in pick.move_lines:
quantity = data['move%s' % move.id]
if 0 < quantity < move.product_qty:
new_qty = move.product_qty - quantity
new_uos_qty = new_qty / move.product_qty * move.product_uos_qty
new_obj = move_obj.copy(cr, uid, move.id, {'product_qty' : new_qty, 'product_uos_qty': new_uos_qty, 'state':move.state})
uos_qty = quantity / move.product_qty * move.product_uos_qty
move_obj.write(cr, uid, [move.id], {'product_qty' : quantity, 'product_uos_qty': uos_qty})
return {'type': 'ir.actions.act_window_close'}
stock_split_move_line()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- Split Moves -->
<record id="act_split_moves" model="ir.actions.act_window">
<field name="name">Split Moves</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">stock.move.line.split</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</openerp>
+2 -3
View File
@@ -55,10 +55,9 @@ class survey_print(osv.osv_memory):
@param context: A standard dictionary for contextual values
@return : Dictionary value for print survey form.
"""
datas = {'ids' : self.read(cr, uid, ids, [], context)[0]['survey_ids']}
datas = {'ids' : self.read(cr, uid, ids, ['survey_ids'], context=context)[0]['survey_ids']}
res = self.read(cr, uid, ids, ['survey_title', 'orientation', 'paper_size',\
'page_number', 'without_pagebreak'], context)
'page_number', 'without_pagebreak'], context=context)
res = res and res[0] or {}
datas['form'] = res
datas['model'] = 'survey.print'
+1 -1
View File
@@ -59,7 +59,7 @@ class survey_print_answer(osv.osv_memory):
context = {}
datas = {'ids': context.get('active_ids', [])}
res = self.read(cr, uid, ids, ['response_ids', 'orientation', 'paper_size',\
'page_number', 'without_pagebreak'], context)
'page_number', 'without_pagebreak'], context=context)
res = res and res[0] or {}
datas['form'] = res
datas['model'] = 'survey.print.answer'
@@ -44,7 +44,7 @@ class survey_print_statistics(osv.osv_memory):
if context is None:
context = {}
datas = {'ids': context.get('active_ids', [])}
res = self.read(cr, uid, ids, ['survey_ids'], context)
res = self.read(cr, uid, ids, ['survey_ids'], context=context)
res = res and res[0] or {}
datas['form'] = res
datas['model'] = 'survey.print.statistics'
+5 -5
View File
@@ -122,9 +122,9 @@ class survey_name_wiz(osv.osv_memory):
search_obj = self.pool.get('ir.ui.view')
if context is None: context = {}
sur_id = self.read(cr, uid, ids, [])[0]
survey_id = sur_id['survey_id']
context.update({'survey_id': survey_id, 'sur_name_id': sur_id['id']})
this = self.browse(cr, uid, ids, context=context)[0]
survey_id = this.survey_id
context.update({'survey_id': survey_id, 'sur_name_id': this.id})
cr.execute('select count(id) from survey_history where user_id=%s\
and survey_id=%s' % (uid,survey_id))
@@ -133,8 +133,8 @@ class survey_name_wiz(osv.osv_memory):
if user_limit and res >= user_limit:
raise osv.except_osv(_('Warning !'),_("You can not give response for this survey more than %s times") % (user_limit))
sur_rec = survey_obj.read(cr,uid,self.read(cr,uid,ids)[0]['survey_id'])
if sur_rec['max_response_limit'] and sur_rec['max_response_limit'] <= sur_rec['tot_start_survey']:
sur_rec = survey_obj.browse(cr,uid,ids,context=context)[0]
if sur_rec.max_response_limit and sur_rec.max_response_limit <= sur_rec.tot_start_survey:
raise osv.except_osv(_('Warning !'),_("You can not give more response. Please contact the author of this survey for further assistance."))
search_id = search_obj.search(cr,uid,[('model','=','survey.question.wiz'),('name','=','Survey Search')])
@@ -96,7 +96,7 @@ class survey_send_invitation(osv.osv_memory):
def action_send(self, cr, uid, ids, context=None):
if context is None:
context = {}
record = self.read(cr, uid, ids, [])
record = self.read(cr, uid, ids, [],context=context)
survey_ids = context.get('active_ids', [])
record = record and record[0]
partner_ids = record['partner_ids']