[MERGE] turnk

bzr revid: al@openerp.com-20121220020433-v4zw6s5qe2g13dog
This commit is contained in:
Antony Lesuisse 2012-12-20 03:04:33 +01:00
commit 3557f3a25e
329 changed files with 13616 additions and 10878 deletions

View File

@ -1014,10 +1014,15 @@ class account_period(osv.osv):
else:
company_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id
args.append(('company_id', '=', company_id))
ids = self.search(cr, uid, args, context=context)
if not ids:
raise osv.except_osv(_('Error!'), _('There is no period defined for this date: %s.\nPlease create one.')%dt)
return ids
result = []
if context.get('account_period_prefer_normal'):
# look for non-special periods first, and fallback to all if no result is found
result = self.search(cr, uid, args + [('special', '=', False)], context=context)
if not result:
result = self.search(cr, uid, args, context=context)
if not result:
raise osv.except_osv(_('Error !'), _('There is no period defined for this date: %s.\nPlease create one.')%dt)
return result
def action_draft(self, cr, uid, ids, *args):
mode = 'draft'
@ -1191,10 +1196,9 @@ class account_move(osv.osv):
return res
def _get_period(self, cr, uid, context=None):
periods = self.pool.get('account.period').find(cr, uid)
if periods:
return periods[0]
return False
ctx = dict(context or {}, account_period_prefer_normal=True)
period_ids = self.pool.get('account.period').find(cr, uid, context=ctx)
return period_ids[0]
def _amount_compute(self, cr, uid, ids, name, args, context, where =''):
if not ids: return {}

View File

@ -82,7 +82,7 @@ class account_analytic_line(osv.osv):
if j_id.type == 'purchase':
unit = prod.uom_po_id.id
if j_id.type <> 'sale':
a = prod.product_tmpl_id.property_account_expense.id
a = prod.property_account_expense.id
if not a:
a = prod.categ_id.property_account_expense_categ.id
if not a:
@ -91,7 +91,7 @@ class account_analytic_line(osv.osv):
'for this product: "%s" (id:%d).') % \
(prod.name, prod.id,))
else:
a = prod.product_tmpl_id.property_account_income.id
a = prod.property_account_income.id
if not a:
a = prod.categ_id.property_account_income_categ.id
if not a:

View File

@ -439,10 +439,11 @@ class account_bank_statement(osv.osv):
for st in self.browse(cr, uid, ids, context=context):
if st.state=='draft':
continue
ids = []
move_ids = []
for line in st.line_ids:
ids += [x.id for x in line.move_ids]
account_move_obj.unlink(cr, uid, ids, context)
move_ids += [x.id for x in line.move_ids]
account_move_obj.button_cancel(cr, uid, move_ids, context=context)
account_move_obj.unlink(cr, uid, move_ids, context)
done.append(st.id)
return self.write(cr, uid, done, {'state':'draft'}, context=context)

View File

@ -994,7 +994,8 @@ class account_invoice(osv.osv):
'narration':inv.comment
}
period_id = inv.period_id and inv.period_id.id or False
ctx.update({'company_id': inv.company_id.id})
ctx.update(company_id=inv.company_id.id,
account_period_prefer_normal=True)
if not period_id:
period_ids = period_obj.find(cr, uid, inv.date_invoice, context=ctx)
period_id = period_ids and period_ids[0] or False
@ -1149,73 +1150,92 @@ class account_invoice(osv.osv):
ids = self.search(cr, user, [('name',operator,name)] + args, limit=limit, context=context)
return self.name_get(cr, user, ids, context)
def _refund_cleanup_lines(self, cr, uid, lines):
def _refund_cleanup_lines(self, cr, uid, lines, context=None):
clean_lines = []
for line in lines:
del line['id']
del line['invoice_id']
for field in ('company_id', 'partner_id', 'account_id', 'product_id',
'uos_id', 'account_analytic_id', 'tax_code_id', 'base_code_id'):
if line.get(field):
line[field] = line[field][0]
if 'invoice_line_tax_id' in line:
line['invoice_line_tax_id'] = [(6,0, line.get('invoice_line_tax_id', [])) ]
return map(lambda x: (0,0,x), lines)
clean_line = {}
for field in line._all_columns.keys():
if line._all_columns[field].column._type == 'many2one':
clean_line[field] = line[field].id
elif line._all_columns[field].column._type not in ['many2many','one2many']:
clean_line[field] = line[field]
elif field == 'invoice_line_tax_id':
tax_list = []
for tax in line[field]:
tax_list.append(tax.id)
clean_line[field] = [(6,0, tax_list)]
clean_lines.append(clean_line)
return map(lambda x: (0,0,x), clean_lines)
def refund(self, cr, uid, ids, date=None, period_id=None, description=None, journal_id=None):
invoices = self.read(cr, uid, ids, ['name', 'type', 'number', 'reference', 'comment', 'date_due', 'partner_id', 'partner_contact', 'partner_insite', 'partner_ref', 'payment_term', 'account_id', 'currency_id', 'invoice_line', 'tax_line', 'journal_id', 'company_id', 'user_id', 'fiscal_position'])
obj_invoice_line = self.pool.get('account.invoice.line')
obj_invoice_tax = self.pool.get('account.invoice.tax')
def _prepare_refund(self, cr, uid, invoice, date=None, period_id=None, description=None, journal_id=None, context=None):
"""Prepare the dict of values to create the new refund from the invoice.
This method may be overridden to implement custom
refund generation (making sure to call super() to establish
a clean extension chain).
:param integer invoice_id: id of the invoice to refund
:param dict invoice: read of the invoice to refund
:param string date: refund creation date from the wizard
:param integer period_id: force account.period from the wizard
:param string description: description of the refund from the wizard
:param integer journal_id: account.journal from the wizard
:return: dict of value to create() the refund
"""
obj_journal = self.pool.get('account.journal')
new_ids = []
for invoice in invoices:
del invoice['id']
type_dict = {
'out_invoice': 'out_refund', # Customer Invoice
'in_invoice': 'in_refund', # Supplier Invoice
'out_refund': 'out_invoice', # Customer Refund
'in_refund': 'in_invoice', # Supplier Refund
}
invoice_lines = obj_invoice_line.read(cr, uid, invoice['invoice_line'])
invoice_lines = self._refund_cleanup_lines(cr, uid, invoice_lines)
tax_lines = obj_invoice_tax.read(cr, uid, invoice['tax_line'])
tax_lines = filter(lambda l: l['manual'], tax_lines)
tax_lines = self._refund_cleanup_lines(cr, uid, tax_lines)
if journal_id:
refund_journal_ids = [journal_id]
elif invoice['type'] == 'in_invoice':
refund_journal_ids = obj_journal.search(cr, uid, [('type','=','purchase_refund')])
type_dict = {
'out_invoice': 'out_refund', # Customer Invoice
'in_invoice': 'in_refund', # Supplier Invoice
'out_refund': 'out_invoice', # Customer Refund
'in_refund': 'in_invoice', # Supplier Refund
}
invoice_data = {}
for field in ['name', 'reference', 'comment', 'date_due', 'partner_id', 'company_id',
'account_id', 'currency_id', 'payment_term', 'user_id', 'fiscal_position']:
if invoice._all_columns[field].column._type == 'many2one':
invoice_data[field] = invoice[field].id
else:
refund_journal_ids = obj_journal.search(cr, uid, [('type','=','sale_refund')])
invoice_data[field] = invoice[field] if invoice[field] else False
if not date:
date = time.strftime('%Y-%m-%d')
invoice.update({
'type': type_dict[invoice['type']],
'date_invoice': date,
'state': 'draft',
'number': False,
'invoice_line': invoice_lines,
'tax_line': tax_lines,
'journal_id': refund_journal_ids
})
if period_id:
invoice.update({
'period_id': period_id,
})
if description:
invoice.update({
'name': description,
})
# take the id part of the tuple returned for many2one fields
for field in ('partner_id', 'company_id',
'account_id', 'currency_id', 'payment_term', 'journal_id',
'user_id', 'fiscal_position'):
invoice[field] = invoice[field] and invoice[field][0]
invoice_lines = self._refund_cleanup_lines(cr, uid, invoice.invoice_line, context=context)
tax_lines = filter(lambda l: l['manual'], invoice.tax_line)
tax_lines = self._refund_cleanup_lines(cr, uid, tax_lines, context=context)
if journal_id:
refund_journal_ids = [journal_id]
elif invoice['type'] == 'in_invoice':
refund_journal_ids = obj_journal.search(cr, uid, [('type','=','purchase_refund')], context=context)
else:
refund_journal_ids = obj_journal.search(cr, uid, [('type','=','sale_refund')], context=context)
if not date:
date = time.strftime('%Y-%m-%d')
invoice_data.update({
'type': type_dict[invoice['type']],
'date_invoice': date,
'state': 'draft',
'number': False,
'invoice_line': invoice_lines,
'tax_line': tax_lines,
'journal_id': refund_journal_ids and refund_journal_ids[0] or False,
})
if period_id:
invoice_data['period_id'] = period_id
if description:
invoice_data['name'] = description
return invoice_data
def refund(self, cr, uid, ids, date=None, period_id=None, description=None, journal_id=None, context=None):
new_ids = []
for invoice in self.browse(cr, uid, ids, context=context):
invoice = self._prepare_refund(cr, uid, invoice,
date=date,
period_id=period_id,
description=description,
journal_id=journal_id,
context=context)
# create the new invoice
new_ids.append(self.create(cr, uid, invoice))
new_ids.append(self.create(cr, uid, invoice, context=context))
return new_ids
@ -1456,11 +1476,11 @@ class account_invoice_line(osv.osv):
res = self.pool.get('product.product').browse(cr, uid, product, context=context)
if type in ('out_invoice','out_refund'):
a = res.product_tmpl_id.property_account_income.id
a = res.property_account_income.id
if not a:
a = res.categ_id.property_account_income_categ.id
else:
a = res.product_tmpl_id.property_account_expense.id
a = res.property_account_expense.id
if not a:
a = res.categ_id.property_account_expense_categ.id
a = fpos_obj.map_account(cr, uid, fpos, a)

View File

@ -145,7 +145,8 @@
<header>
<button name="invoice_open" states="draft,proforma2" string="Validate" class="oe_highlight" groups="account.group_account_invoice"/>
<button name="%(action_account_invoice_refund)d" type='action' string='Ask Refund' states='open,paid' groups="account.group_account_invoice"/>
<button name="invoice_cancel" states="draft,proforma2,sale,open" string="Cancel" groups="base.group_no_one"/>
<button name="invoice_cancel" states="draft,proforma2" string="Cancel" groups="account.group_account_invoice"/>
<button name="invoice_cancel" states="sale,open" string="Cancel" groups="base.group_no_one"/>
<button name="action_cancel_draft" states="cancel" string="Set to Draft" type="object" groups="account.group_account_invoice"/>
<button name='%(action_account_state_open)d' type='action' string='Re-Open' groups="account.group_account_invoice" attrs="{'invisible':['|', ('state','&lt;&gt;','paid'), ('reconciled', '=', True)]}" help="This button only appears when the state of the invoice is 'paid' (showing that it has been fully reconciled) and auto-computed boolean 'reconciled' is False (depicting that it's not the case anymore). In other words, the invoice has been dereconciled and it does not fit anymore the 'paid' state. You should press this button to re-open it and let it continue its normal process after having resolved the eventual exceptions it may have created."/>
<field name="state" widget="statusbar" statusbar_visible="draft,open,paid" statusbar_colors='{"proforma":"blue","proforma2":"blue"}'/>

View File

@ -983,7 +983,8 @@ class account_move_line(osv.osv):
if context is None:
context = {}
period_pool = self.pool.get('account.period')
pids = period_pool.search(cr, user, [('date_start','<=',date), ('date_stop','>=',date)])
ctx = dict(context, account_period_prefer_normal=True)
pids = period_pool.find(cr, user, date, context=ctx)
if pids:
res.update({
'period_id':pids[0]

View File

@ -577,7 +577,7 @@
<field name="date"/>
<field name="name"/>
<field name="ref"/>
<field name="partner_id" on_change="onchange_partner_id(partner_id)"/>
<field name="partner_id" on_change="onchange_partner_id(partner_id)" domain="['|',('parent_id','=',False),('is_company','=',True)]"/>
<field name="type" on_change="onchange_type(partner_id, type)"/>
<field name="account_id" options='{"no_open":True}' domain="[('journal_id','=',parent.journal_id), ('company_id', '=', parent.company_id)]"/>
<field name="analytic_account_id" groups="analytic.group_analytic_accounting" domain="[('company_id', '=', parent.company_id), ('type', '&lt;&gt;', 'view')]"/>

View File

@ -7,15 +7,15 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-12-17 21:28+0000\n"
"PO-Revision-Date: 2012-12-18 15:25+0000\n"
"Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-"
"consulting.net>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-18 05:00+0000\n"
"X-Generator: Launchpad (build 16372)\n"
"X-Launchpad-Export-Date: 2012-12-19 05:16+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@ -39,8 +39,8 @@ msgid ""
"Determine the display order in the report 'Accounting \\ Reporting \\ "
"Generic Reporting \\ Taxes \\ Taxes Report'"
msgstr ""
"Legen Sie die Reihenfolge der Anzeige im Report 'Finanz \\ Berichte \\ "
"Allgemeine Berichte \\ Steuern \\ Steuererklärung' fest"
"Legen Sie die Reihenfolge der Anzeige im Bericht 'Finanzen \\ Berichte \\ "
"Standard Auswertungen \\ Steuern \\ Umsatzsteuer Anmeldung' fest"
#. module: account
#: view:account.move.reconcile:0
@ -1749,7 +1749,7 @@ msgstr "eRechnung & Zahlungen"
#. module: account
#: view:account.analytic.cost.ledger.journal.report:0
msgid "Cost Ledger for Period"
msgstr "Auszug Analysekonto für Periode"
msgstr "Kostenstellen Umsatz der Periode"
#. module: account
#: view:account.entries.report:0
@ -4410,7 +4410,7 @@ msgstr ""
#. module: account
#: model:ir.model,name:account.model_account_journal_cashbox_line
msgid "account.journal.cashbox.line"
msgstr ""
msgstr "account.journal.cashbox.line"
#. module: account
#: model:ir.model,name:account.model_account_partner_reconcile_process
@ -4544,8 +4544,8 @@ msgid ""
"If not applicable (computed through a Python code), the tax won't appear on "
"the invoice."
msgstr ""
"Wenn nicht aktiviert (Berechnung durch Python Code) scheint die Steuer nicht "
"auf der Rechnung auf."
"Soweit nicht Berechnung durch Python Code ausgewählt wird, wird die Steuer "
"nicht auf der Rechnung erscheinen."
#. module: account
#: field:account.config.settings,group_check_supplier_invoice_total:0
@ -4837,7 +4837,7 @@ msgstr "Anzeige Partner"
#. module: account
#: view:account.invoice:0
msgid "Validate"
msgstr "Validieren"
msgstr "Genehmigen & Buchen"
#. module: account
#: model:account.financial.report,name:account.account_financial_report_assets0
@ -5030,9 +5030,9 @@ msgid ""
"Analytic costs (timesheets, some purchased products, ...) come from analytic "
"accounts. These generate draft supplier invoices."
msgstr ""
"Analytische Kosten (Zeiterfassung, eingekaufte Produkte, ...) durch "
"Buchungen auf Analytischen Konten. Diese Buchungen erzeugen "
"Eingangsrechnungen im Entwurf."
"Zu analysierende Kosten (Stundenzettel, eingekaufte Produkte, ...) werden "
"verursacht durch Kostenstellen. Diese erzeugen Lieferantenrechnungen im "
"Entwurf."
#. module: account
#: view:account.bank.statement:0
@ -6208,7 +6208,7 @@ msgstr ""
#. module: account
#: field:account.tax.code,sign:0
msgid "Coefficent for parent"
msgstr "Koeff. f. übergeordnete Steuer"
msgstr "Koeffizient für Konsolidierung"
#. module: account
#: report:account.partner.balance:0
@ -6312,7 +6312,7 @@ msgstr "Standardauswertung Finanzen"
#: field:account.bank.statement.line,name:0
#: field:account.invoice,reference:0
msgid "Communication"
msgstr "Kommunikation"
msgstr "Verwendungszweck"
#. module: account
#: view:account.config.settings:0
@ -7095,7 +7095,7 @@ msgid ""
"choice assumes that the set of tax defined for the chosen template is "
"complete"
msgstr ""
"Diese Auswähl erlaubt Ihnen die Einkaufs- und Verkaufssteuern zu definieren "
"Diese Auswahl erlaubt Ihnen die Einkaufs- und Verkaufssteuern zu definieren "
"oder aus einer Liste auszuwählen. Letzteres setzt voraus, dass die Vorlage "
"vollständig ist."
@ -7292,7 +7292,7 @@ msgstr "Journal & Partner"
#. module: account
#: field:account.automatic.reconcile,power:0
msgid "Power"
msgstr "Stärke"
msgstr "Maximum Ausgleichspositionen"
#. module: account
#: code:addons/account/account.py:3392
@ -7334,12 +7334,12 @@ msgstr "Ausgleich Offener Posten: Gehe zu nächstem Partner"
#: model:ir.actions.act_window,name:account.action_account_analytic_invert_balance
#: model:ir.actions.report.xml,name:account.account_analytic_account_inverted_balance
msgid "Inverted Analytic Balance"
msgstr "Umgekehrter Saldo (Anal.)"
msgstr "Kostenstellen - Kostenarten Analyse"
#. module: account
#: field:account.tax.template,applicable_type:0
msgid "Applicable Type"
msgstr "Anwendbare Art"
msgstr "Anwendbarer Typ"
#. module: account
#: field:account.invoice.line,invoice_id:0
@ -7405,7 +7405,7 @@ msgstr "Kostenstellen Buchungen"
#. module: account
#: field:account.config.settings,has_default_company:0
msgid "Has default company"
msgstr ""
msgstr "Hat Unternehmensvorgabe"
#. module: account
#: view:account.fiscalyear.close:0
@ -7454,6 +7454,8 @@ msgid ""
"You cannot change the owner company of an account that already contains "
"journal items."
msgstr ""
"Sie dürfen die Unternehmenszuordnung eines Kontos nicht ändern, wenn es "
"bereits Buchungen gibt."
#. module: account
#: report:account.invoice:0
@ -7940,7 +7942,8 @@ msgid ""
"The currency chosen should be shared by the default accounts too."
msgstr ""
"Konfigurationsfehler !\n"
"Die Währung sollte auch durch die Standard Konten freigegeben werden."
"Die ausgewählte Währung sollte auch bei den verwendeten Standard Konten "
"zugelassen werden."
#. module: account
#: code:addons/account/account.py:2251
@ -8311,7 +8314,7 @@ msgstr "Buchungen anlegen"
#. module: account
#: model:ir.model,name:account.model_cash_box_out
msgid "cash.box.out"
msgstr ""
msgstr "cash.box.out"
#. module: account
#: help:account.config.settings,currency_id:0
@ -8778,7 +8781,7 @@ msgstr ""
#. module: account
#: model:ir.model,name:account.model_cash_box_in
msgid "cash.box.in"
msgstr ""
msgstr "cash.box.in"
#. module: account
#: help:account.invoice,move_id:0
@ -8788,7 +8791,7 @@ msgstr "Verweis auf automatisch generierte Buchungen"
#. module: account
#: model:ir.model,name:account.model_account_config_settings
msgid "account.config.settings"
msgstr ""
msgstr "account.config.settings"
#. module: account
#: selection:account.config.settings,period:0
@ -10200,7 +10203,7 @@ msgstr "Start Periode"
#. module: account
#: model:ir.actions.report.xml,name:account.account_central_journal
msgid "Central Journal"
msgstr ""
msgstr "Zentrales Journal"
#. module: account
#: field:account.aged.trial.balance,direction_selection:0
@ -10210,7 +10213,7 @@ msgstr "Analysezeitraum"
#. module: account
#: field:res.partner,ref_companies:0
msgid "Companies that refers to partner"
msgstr ""
msgstr "Unternehmen mit Bezug zu diesem Partner"
#. module: account
#: view:account.invoice:0

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: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-12-14 11:26+0000\n"
"PO-Revision-Date: 2012-12-18 18:34+0000\n"
"Last-Translator: Pedro Manuel Baeza <pedro.baeza@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: 2012-12-15 05:05+0000\n"
"X-Generator: Launchpad (build 16372)\n"
"X-Launchpad-Export-Date: 2012-12-19 05:16+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@ -339,6 +339,16 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
"Pulse para crear una factura rectificativa. \n"
"</p><p>\n"
"Una factura rectificativa es un documento que abona una factura total o "
"parcialmente.\n"
"</p><p>\n"
"En lugar de crear una factura rectificativa manualmente, puede generarla "
"directamente desde la misma factura origen.\n"
"</p>\n"
" "
#. module: account
#: help:account.installer,charts:0
@ -472,6 +482,12 @@ msgid ""
"this box, you will be able to do invoicing & payments,\n"
" but not accounting (Journal Items, Chart of Accounts, ...)"
msgstr ""
"Le permite gestionar los activos de una compañía o persona.\n"
"Realiza un seguimiento de la depreciación de estos activos, y crea asientos "
"para las líneas de depreciación.\n"
"Esto instala el módulo 'account_asset'. \n"
"Si no marca esta casilla, podrá realizar facturas y pagos, pero no "
"contabilidad (asientos contables, plan de cuentas, ...)"
#. module: account
#. openerp-web
@ -1203,6 +1219,16 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
"Pulse para añadir una cuenta.\n"
"</p><p>\n"
"Cuando se realizan transacciones con múltiples monedas, puede perder o ganar "
"algún importe debido a las variaciones en el tipo de cambio. Este menú le da "
"una previsión de las pérdidas y ganancias que se efectuaría si estas "
"transacciones se finalizaran hoy. Sólo para cuentas que tengan una moneda "
"secundaria configurada.\n"
"</p>\n"
" "
#. module: account
#: field:account.bank.accounts.wizard,acc_name:0
@ -1297,6 +1323,16 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
"Pulse para crear un nuevo registro de caja.\n"
"</p><p>\n"
"Los registros de caja le permiten gestionar entradas de efectivo en sus "
"diarios de caja. Esta función le proporciona una forma fácil de revisar los "
"pagos en efectivo diariamente. Puede introducir las monedas que hay en su "
"caja registradora, y después realizar registros cuando el dinero entra o "
"sale de la caja.\n"
"</p>\n"
" "
#. module: account
#: model:account.account.type,name:account.data_account_type_bank
@ -1836,6 +1872,15 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
"Pulse para definir un nuevo tipo de cuenta.\n"
"</p><p>\n"
"Se usa los tipos de cuenta para determinar cómo es usada una cuenta en cada "
"diario. El método de cierre de un tipo de cuenta determina el proceso para "
"el cierre anual. Informes como el balance y la cuenta de Resultados usan la "
"categoría (Ganancia/Pérdida o balance).\n"
"</p>\n"
" "
#. module: account
#: report:account.invoice:0
@ -2031,6 +2076,105 @@ msgid ""
"</div>\n"
" "
msgstr ""
"\n"
"<div style=\"font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-"
"serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, "
"255, 255); \">\n"
"\n"
" <p>Hola ${object.partner_id.name and ' ' or ''}${object.partner_id.name "
"or ''},</p>\n"
"\n"
" <p>Tiene una nueva factura disponible: </p>\n"
" \n"
" <p style=\"border-left: 1px solid #8e0000; margin-left: 30px;\">\n"
" &nbsp;&nbsp;<strong>REFERENCIAS</strong><br />\n"
" &nbsp;&nbsp;Nº factura: <strong>${object.number}</strong><br />\n"
" &nbsp;&nbsp;Total factura: <strong>${object.amount_total} "
"${object.currency_id.name}</strong><br />\n"
" &nbsp;&nbsp;Fecha factura: ${object.date_invoice}<br />\n"
" % if object.origin:\n"
" &nbsp;&nbsp;Referencia pedido: ${object.origin}<br />\n"
" % endif\n"
" % if object.user_id:\n"
" &nbsp;&nbsp;Su contacto: <a href=\"mailto:${object.user_id.email or "
"''}?subject=Invoice%20${object.number}\">${object.user_id.name}</a>\n"
" % endif\n"
" </p> \n"
" \n"
" % if object.company_id.paypal_account and object.type in ('out_invoice', "
"'in_refund'):\n"
" <% \n"
" comp_name = quote(object.company_id.name)\n"
" inv_number = quote(object.number)\n"
" paypal_account = quote(object.company_id.paypal_account)\n"
" inv_amount = quote(str(object.residual))\n"
" cur_name = quote(object.currency_id.name)\n"
" paypal_url = \"https://www.paypal.com/cgi-"
"bin/webscr?cmd=_xclick&amp;business=%s&amp;item_name=%s%%20Invoice%%20%s&amp;"
"\" \\\n"
" "
"\"invoice=%s&amp;amount=%s&amp;currency_code=%s&amp;button_subtype=services&a"
"mp;no_note=1&amp;bn=OpenERP_Invoice_PayNow_%s\" % \\\n"
" "
"(paypal_account,comp_name,inv_number,inv_number,inv_amount,cur_name,cur_name)"
"\n"
" %>\n"
" <br/>\n"
" <p>También es posibe pagar directamente mediante Paypal:</p>\n"
" <a style=\"margin-left: 120px;\" href=\"${paypal_url}\">\n"
" <img class=\"oe_edi_paypal_button\" "
"src=\"https://www.paypal.com/en_US/i/btn/btn_paynowCC_LG.gif\"/>\n"
" </a>\n"
" % endif\n"
" \n"
" <br/>\n"
" <p>Para cualquier aclaración, no dude en contactar con nosotros.</p>\n"
" <p>Gracias por confiar en ${object.company_id.name or 'us'}!</p>\n"
" <br/>\n"
" <br/>\n"
" <div style=\"width: 375px; margin: 0px; padding: 0px; background-color: "
"#8E0000; border-top-left-radius: 5px 5px; border-top-right-radius: 5px 5px; "
"background-repeat: repeat no-repeat;\">\n"
" <h3 style=\"margin: 0px; padding: 2px 14px; font-size: 12px; color: "
"#FFF;\">\n"
" <strong style=\"text-"
"transform:uppercase;\">${object.company_id.name}</strong></h3>\n"
" </div>\n"
" <div style=\"width: 347px; margin: 0px; padding: 5px 14px; line-height: "
"16px; background-color: #F2F2F2;\">\n"
" <span style=\"color: #222; margin-bottom: 5px; display: block; \">\n"
" % if object.company_id.street:\n"
" ${object.company_id.street}<br/>\n"
" % endif\n"
" % if object.company_id.street2:\n"
" ${object.company_id.street2}<br/>\n"
" % endif\n"
" % if object.company_id.city or object.company_id.zip:\n"
" ${object.company_id.zip} ${object.company_id.city}<br/>\n"
" % endif\n"
" % if object.company_id.country_id:\n"
" ${object.company_id.state_id and ('%s, ' % "
"object.company_id.state_id.name) or ''} ${object.company_id.country_id.name "
"or ''}<br/>\n"
" % endif\n"
" </span>\n"
" % if object.company_id.phone:\n"
" <div style=\"margin-top: 0px; margin-right: 0px; margin-bottom: "
"0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: "
"0px; padding-left: 0px; \">\n"
" Teléfono:&nbsp; ${object.company_id.phone}\n"
" </div>\n"
" % endif\n"
" % if object.company_id.website:\n"
" <div>\n"
" Web :&nbsp;<a "
"href=\"${object.company_id.website}\">${object.company_id.website}</a>\n"
" </div>\n"
" %endif\n"
" <p></p>\n"
" </div>\n"
"</div>\n"
" "
#. module: account
#: field:account.tax.code,sum:0
@ -2247,6 +2391,14 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
"Pulse para registrar una nueva factura de proveedor.\n"
"</p><p>\n"
"Puede controlar la factura de su proveedor según lo que compró o recibió. "
"OpenERP también puede generar borradores de facturas automáticamente a "
"partir de pedidos o recibos de compra.\n"
"</p>\n"
" "
#. module: account
#: sql_constraint:account.move.line:0
@ -5093,6 +5245,9 @@ msgid ""
"You can create one in the menu: \n"
"Configuration\\Journals\\Journals."
msgstr ""
"No se puede encontrar ningún diario del tipo %s para esta compañía.\n"
"\n"
"Puede crear uno en el menú: Configuración\\Diarios\\Diarios."
#. module: account
#: report:account.vat.declaration:0
@ -5179,6 +5334,8 @@ msgid ""
"It adds the currency column on report if the currency differs from the "
"company currency."
msgstr ""
"Añade la columna de moneda en el informe si la moneda difiere de la moneda "
"de la compañía."
#. module: account
#: code:addons/account/account.py:3336
@ -5228,7 +5385,7 @@ msgstr "Nuevo"
#. module: account
#: view:wizard.multi.charts.accounts:0
msgid "Sale Tax"
msgstr ""
msgstr "Impuesto de venta"
#. module: account
#: field:account.tax,ref_tax_code_id:0
@ -5253,6 +5410,9 @@ msgid ""
"printed it comes to 'Printed' status. When all transactions are done, it "
"comes in 'Done' status."
msgstr ""
"Cuando se crea el periodo, el estado es 'Borrador'. Si se imprime un "
"informe, cambia al estado 'Imprimido'. Cuando todas las transacciones se han "
"hecho, cambia a 'Realizado'."
#. module: account
#: code:addons/account/account.py:3147
@ -5286,7 +5446,7 @@ msgstr "Facturas"
#. module: account
#: help:account.config.settings,expects_chart_of_accounts:0
msgid "Check this box if this company is a legal entity."
msgstr ""
msgstr "Marque esta casilla si la compañía es una entidad legal."
#. module: account
#: model:account.account.type,name:account.conf_account_type_chk
@ -5332,7 +5492,7 @@ msgstr "Comprobar"
#: view:validate.account.move:0
#: view:validate.account.move.lines:0
msgid "or"
msgstr ""
msgstr "o"
#. module: account
#: view:account.invoice.report:0
@ -5402,6 +5562,8 @@ msgid ""
"Set the account that will be set by default on invoice tax lines for "
"invoices. Leave empty to use the expense account."
msgstr ""
"Configure la cuenta por defecto para las líneas de impuestos de las "
"facturas. Dejar vacío para usar la cuenta de gastos."
#. module: account
#: code:addons/account/account.py:889
@ -5417,7 +5579,7 @@ msgstr "Asientos a revisar"
#. module: account
#: selection:res.company,tax_calculation_rounding_method:0
msgid "Round Globally"
msgstr ""
msgstr "Redondear globalmente"
#. module: account
#: field:account.bank.statement,message_comment_ids:0
@ -5425,7 +5587,7 @@ msgstr ""
#: field:account.invoice,message_comment_ids:0
#: help:account.invoice,message_comment_ids:0
msgid "Comments and emails"
msgstr ""
msgstr "Comentarios y correos electrónicos"
#. module: account
#: view:account.bank.statement:0
@ -5445,6 +5607,8 @@ msgid ""
"Please verify the price of the invoice !\n"
"The encoded total does not match the computed total."
msgstr ""
"¡Verifique por favor el importe de la factura!\n"
"El importe total no coincide con el total calculado."
#. module: account
#: field:account.account,active:0
@ -5460,7 +5624,7 @@ msgstr "Activo"
#: view:account.bank.statement:0
#: field:account.journal,cash_control:0
msgid "Cash Control"
msgstr ""
msgstr "Control de efectivo"
#. module: account
#: field:account.analytic.balance,date2:0
@ -5490,7 +5654,7 @@ msgstr "Saldo por tipo de cuenta"
#: code:addons/account/account_cash_statement.py:301
#, python-format
msgid "There is no %s Account on the journal %s."
msgstr ""
msgstr "No hay ninguna cuenta %s en el diario %s."
#. module: account
#: model:res.groups,name:account.group_account_user
@ -5510,7 +5674,7 @@ msgstr ""
#. module: account
#: model:res.groups,name:account.group_account_manager
msgid "Financial Manager"
msgstr ""
msgstr "Gestor financiero"
#. module: account
#: field:account.journal,group_invoice_lines:0
@ -5531,7 +5695,7 @@ msgstr "Movimientos"
#: field:account.bank.statement,details_ids:0
#: view:account.journal:0
msgid "CashBox Lines"
msgstr ""
msgstr "Asientos de caja"
#. module: account
#: model:ir.model,name:account.model_account_vat_declaration
@ -5544,6 +5708,8 @@ msgid ""
"If you do not check this box, you will be able to do invoicing & payments, "
"but not accounting (Journal Items, Chart of Accounts, ...)"
msgstr ""
"Si no marca esta casilla, podrá realizar facturas y pagos, pero no "
"contabilidad (asientos contables, plan de cuentas, ...)"
#. module: account
#: view:account.period:0
@ -5577,6 +5743,8 @@ msgid ""
"There is no period defined for this date: %s.\n"
"Please create one."
msgstr ""
"No hay periodo definido para esta fecha: %s.\n"
"Por favor, cree uno."
#. module: account
#: help:account.tax,price_include:0
@ -5629,6 +5797,8 @@ msgstr "Movimientos destino"
msgid ""
"Move cannot be deleted if linked to an invoice. (Invoice: %s - Move ID:%s)"
msgstr ""
"El movimiento no puede ser eliminado si está enlazado a una factura. "
"(Factura: %s - Id. mov.: %s)"
#. module: account
#: view:account.bank.statement:0
@ -5681,7 +5851,7 @@ msgstr ""
#: code:addons/account/account_invoice.py:1335
#, python-format
msgid "%s <b>paid</b>."
msgstr ""
msgstr "%s <b>pagado</b>."
#. module: account
#: view:account.financial.report:0
@ -5706,7 +5876,7 @@ msgstr "Año"
#. module: account
#: help:account.invoice,sent:0
msgid "It indicates that the invoice has been sent."
msgstr ""
msgstr "Indica que la factura ha sido enviada."
#. module: account
#: view:account.payment.term.line:0
@ -5726,11 +5896,14 @@ msgid ""
"Put a sequence in the journal definition for automatic numbering or create a "
"sequence manually for this piece."
msgstr ""
"No se puede crear una secuencia automatica para este elemento.\n"
"Ponga una secuencia en la definición del diario para numeración automática o "
"cree una secuencia manual para este elemento."
#. module: account
#: view:account.invoice:0
msgid "Pro Forma Invoice "
msgstr ""
msgstr "Factura pro-forma "
#. module: account
#: selection:account.subscription,period_type:0
@ -5796,6 +5969,8 @@ msgstr "Código para calcular (si tipo=código)"
msgid ""
"Cannot find a chart of accounts for this company, you should create one."
msgstr ""
"No se ha encontrado ningún plan de cuentas para esta compañía. Debería crear "
"uno."
#. module: account
#: selection:account.analytic.journal,type:0
@ -5855,6 +6030,8 @@ msgid ""
"Holds the Chatter summary (number of messages, ...). This summary is "
"directly in html format in order to be inserted in kanban views."
msgstr ""
"Contiene el resumen del chatter (nº de mensajes, ...). Este resumen viene "
"directamente en formato HTML para poder ser insertado en las vistas kanban."
#. module: account
#: field:account.tax,child_depend:0
@ -5872,6 +6049,12 @@ msgid ""
"entry was reconciled, either the user pressed the button \"Fully "
"Reconciled\" in the manual reconciliation process"
msgstr ""
"Fecha en la cual las entradas contables de la empresa fueron completamente "
"conciliadas por última vez. Difiere de la fecha de la última conciliación "
"realizada para esta empresa, ya que aquí se describe el hecho de que nada "
"más fue conciliado en esta fecha. Se puede llegar a esto de 2 formas: o bien "
"la última entrada de deber/haber fue conciliada, o el usuario pulsó el botón "
"\"Completamente conciliado\" en el proceso manual de conciliación."
#. module: account
#: field:account.journal,update_posted:0
@ -5918,13 +6101,14 @@ msgstr "account.instalador"
#. module: account
#: view:account.invoice:0
msgid "Recompute taxes and total"
msgstr ""
msgstr "Recalcular total e impuestos"
#. module: account
#: code:addons/account/account.py:1097
#, python-format
msgid "You cannot modify/delete a journal with entries for this period."
msgstr ""
"No puede modificar/eliminar un diario con asientos para este periodo."
#. module: account
#: field:account.tax.template,include_base_amount:0
@ -5934,7 +6118,7 @@ msgstr "Incluir en importe base"
#. module: account
#: field:account.invoice,supplier_invoice_number:0
msgid "Supplier Invoice Number"
msgstr ""
msgstr "Nº de factura del proveedor"
#. module: account
#: help:account.payment.term.line,days:0
@ -5955,6 +6139,7 @@ msgstr "Calculo importe"
#, python-format
msgid "You can not add/modify entries in a closed period %s of journal %s."
msgstr ""
"No puede añadir/modificar asientos en un periodo cerrado %s del diario %s."
#. module: account
#: view:account.journal:0
@ -5979,7 +6164,7 @@ msgstr "Inicio del período"
#. module: account
#: model:account.account.type,name:account.account_type_asset_view1
msgid "Asset View"
msgstr ""
msgstr "Vista de activo"
#. module: account
#: model:ir.model,name:account.model_account_common_account_report
@ -6005,6 +6190,9 @@ msgid ""
"that you should have your last line with the type 'Balance' to ensure that "
"the whole amount will be treated."
msgstr ""
"Seleccione aquí el tipo de valoración relacionado con esta línea de plazo de "
"pago. Tenga en cuenta que debería tener su última línea con el tipo 'Saldo' "
"para asegurarse que todo el importe será tratado."
#. module: account
#: field:account.partner.ledger,initial_balance:0
@ -6052,12 +6240,12 @@ msgstr "Diario asientos cierre del ejercicio"
#. module: account
#: view:account.invoice:0
msgid "Draft Refund "
msgstr ""
msgstr "Borrador de factura rectificativa "
#. module: account
#: view:cash.box.in:0
msgid "Fill in this form if you put money in the cash register:"
msgstr ""
msgstr "Rellene este formulario si pone dinero en la caja registradora:"
#. module: account
#: field:account.payment.term.line,value_amount:0
@ -6116,7 +6304,7 @@ msgstr "Fecha de pago"
#: view:account.bank.statement:0
#: field:account.bank.statement,opening_details_ids:0
msgid "Opening Cashbox Lines"
msgstr ""
msgstr "Líneas de apertura de caja"
#. module: account
#: view:account.analytic.account:0
@ -6141,7 +6329,7 @@ msgstr "Importe divisa"
#. module: account
#: selection:res.company,tax_calculation_rounding_method:0
msgid "Round per Line"
msgstr ""
msgstr "Redondear por línea"
#. module: account
#: report:account.analytic.account.balance:0
@ -6197,7 +6385,7 @@ msgstr ""
#: code:addons/account/wizard/account_report_aged_partner_balance.py:56
#, python-format
msgid "You must set a period length greater than 0."
msgstr ""
msgstr "Debe poner una longitud de periodo mayor a 0."
#. module: account
#: view:account.fiscal.position.template:0
@ -6208,7 +6396,7 @@ msgstr "Plantilla de posición fiscal"
#. module: account
#: view:account.invoice:0
msgid "Draft Refund"
msgstr ""
msgstr "Borrador de factura rectificativa"
#. module: account
#: view:account.analytic.chart:0
@ -6245,7 +6433,7 @@ msgstr "Conciliación con desfase"
#. module: account
#: constraint:account.move.line:0
msgid "You cannot create journal items on an account of type view."
msgstr ""
msgstr "No puede crear asientos en una cuenta de tipo vista."
#. module: account
#: selection:account.payment.term.line,value:0
@ -6258,7 +6446,7 @@ msgstr "Importe fijo"
#: code:addons/account/account_move_line.py:1046
#, python-format
msgid "You cannot change the tax, you should remove and recreate lines."
msgstr ""
msgstr "No puede cambiar el impuesto. Debería eliminar y recrear las líneas."
#. module: account
#: model:ir.actions.act_window,name:account.action_account_automatic_reconcile
@ -6383,7 +6571,7 @@ msgstr "Mapeo fiscal"
#. module: account
#: view:account.config.settings:0
msgid "Select Company"
msgstr ""
msgstr "Seleccione compañía"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_state_open
@ -6457,7 +6645,7 @@ msgstr "Nº de líneas"
#. module: account
#: view:account.invoice:0
msgid "(update)"
msgstr ""
msgstr "(actualizar)"
#. module: account
#: field:account.aged.trial.balance,filter:0
@ -6667,7 +6855,7 @@ msgstr "Línea analítica"
#. module: account
#: model:ir.ui.menu,name:account.menu_action_model_form
msgid "Models"
msgstr ""
msgstr "Modelos"
#. module: account
#: code:addons/account/account_invoice.py:1090
@ -6760,7 +6948,7 @@ msgstr "Mostrar descendientes en plano"
#. module: account
#: view:account.config.settings:0
msgid "Bank & Cash"
msgstr ""
msgstr "Banco y efectivo"
#. module: account
#: help:account.fiscalyear.close.state,fy_id:0
@ -6847,7 +7035,7 @@ msgstr "A cobrar"
#. module: account
#: constraint:account.move.line:0
msgid "You cannot create journal items on closed account."
msgstr ""
msgstr "No puede crear asiento en una cuenta cerrada."
#. module: account
#: code:addons/account/account_invoice.py:594
@ -6874,7 +7062,7 @@ msgstr "La moneda contable relacionada si no es igual a la de la compañía."
#: code:addons/account/installer.py:48
#, python-format
msgid "Custom"
msgstr ""
msgstr "Personalizado"
#. module: account
#: view:account.analytic.account:0
@ -6901,7 +7089,7 @@ msgstr "Patrimonio"
#. module: account
#: field:account.journal,internal_account_id:0
msgid "Internal Transfers Account"
msgstr ""
msgstr "Cuentas de transferencias internas"
#. module: account
#: code:addons/account/wizard/pos_box.py:33
@ -6918,7 +7106,7 @@ msgstr "Porcentaje"
#. module: account
#: selection:account.config.settings,tax_calculation_rounding_method:0
msgid "Round globally"
msgstr ""
msgstr "Redondear globalmente"
#. module: account
#: selection:account.report.general.ledger,sortby:0
@ -6950,7 +7138,7 @@ msgstr "Número factura"
#. module: account
#: field:account.bank.statement,difference:0
msgid "Difference"
msgstr ""
msgstr "Diferencia"
#. module: account
#: help:account.tax,include_base_amount:0
@ -6989,6 +7177,8 @@ msgid ""
"There is no opening/closing period defined, please create one to set the "
"initial balance."
msgstr ""
"No hay periodo de apertura/cierra definido. Cree por uno para establecer el "
"saldo inicial."
#. module: account
#: help:account.tax.template,sequence:0
@ -7016,12 +7206,12 @@ msgstr ""
#: code:addons/account/wizard/account_report_aged_partner_balance.py:58
#, python-format
msgid "User Error!"
msgstr ""
msgstr "¡Error de usuario!"
#. module: account
#: view:account.open.closed.fiscalyear:0
msgid "Discard"
msgstr ""
msgstr "Descartar"
#. module: account
#: selection:account.account,type:0
@ -7039,7 +7229,7 @@ msgstr "Apuntes analíticos"
#. module: account
#: field:account.config.settings,has_default_company:0
msgid "Has default company"
msgstr ""
msgstr "Tiene compañía por defecto"
#. module: account
#: view:account.fiscalyear.close:0
@ -7253,7 +7443,7 @@ msgstr ""
#: code:addons/account/account_invoice.py:1321
#, python-format
msgid "Customer invoice"
msgstr ""
msgstr "Factura de proveedor"
#. module: account
#: selection:account.account.type,report_type:0
@ -7337,13 +7527,13 @@ msgstr "Pérdidas y ganancias (cuenta de gastos)"
#. module: account
#: field:account.bank.statement,total_entry_encoding:0
msgid "Total Transactions"
msgstr ""
msgstr "Transacciones totales"
#. module: account
#: code:addons/account/account.py:635
#, python-format
msgid "You cannot remove an account that contains journal items."
msgstr ""
msgstr "No puede eliminar una cuenta que contiene asientos."
#. module: account
#: code:addons/account/account_move_line.py:1095
@ -7387,7 +7577,7 @@ msgstr "Manual"
#: code:addons/account/wizard/account_report_aged_partner_balance.py:58
#, python-format
msgid "You must set a start date."
msgstr ""
msgstr "Debe establecer una fecha de inicio."
#. module: account
#: view:account.automatic.reconcile:0
@ -7435,7 +7625,7 @@ msgstr "Asientos contables"
#: code:addons/account/wizard/account_invoice_refund.py:147
#, python-format
msgid "No period found on the invoice."
msgstr ""
msgstr "No se ha encontrado periodo en la factura."
#. module: account
#: help:account.partner.ledger,page_split:0
@ -7480,7 +7670,7 @@ msgstr "Todos los asientos"
#. module: account
#: constraint:account.move.reconcile:0
msgid "You can only reconcile journal items with the same partner."
msgstr ""
msgstr "Sólo puede conciliar apuntes con la misma empresa."
#. module: account
#: view:account.journal.select:0

View File

@ -7,15 +7,15 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-12-07 15:21+0000\n"
"Last-Translator: Frederic Clementi - Camptocamp.com "
"<frederic.clementi@camptocamp.com>\n"
"PO-Revision-Date: 2012-12-18 18:03+0000\n"
"Last-Translator: Pierre Lamarche (www.savoirfairelinux.com) "
"<pierre.lamarche@savoirfairelinux.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: 2012-12-08 04:59+0000\n"
"X-Generator: Launchpad (build 16341)\n"
"X-Launchpad-Export-Date: 2012-12-19 05:16+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: account
#: code:addons/account/wizard/account_fiscalyear_close.py:41
@ -91,6 +91,8 @@ msgstr "Règlement enregistré dans le système"
msgid ""
"An account fiscal position could be defined only once time on same accounts."
msgstr ""
"La position fiscale d'un compte peut être définie seulement une seule fois "
"pour ce compte"
#. module: account
#: view:account.unreconcile:0
@ -132,7 +134,7 @@ msgstr "Solde dû"
#: code:addons/account/account_bank_statement.py:368
#, python-format
msgid "Journal item \"%s\" is not valid."
msgstr ""
msgstr "L'élément \"%s\" du journal n'est pas valide"
#. module: account
#: model:ir.model,name:account.model_report_aged_receivable
@ -297,6 +299,9 @@ msgid ""
"lines for invoices. Leave empty if you don't want to use an analytic account "
"on the invoice tax lines by default."
msgstr ""
"Définissez le compte analytique qui sera utilisé par défaut sur les lignes "
"de taxes des factures. Laissez vide si, par défaut, vous ne voulez pas "
"utiliser un compte analytique sur les lignes de taxes des factures."
#. module: account
#: model:ir.actions.act_window,name:account.action_account_tax_template_form

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: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-12-13 16:07+0000\n"
"Last-Translator: Andrei Talpa (multibase.pt) <andrei.talpa@multibase.pt>\n"
"PO-Revision-Date: 2012-12-18 15:21+0000\n"
"Last-Translator: Rui Franco (multibase.pt) <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-14 05:37+0000\n"
"X-Generator: Launchpad (build 16369)\n"
"X-Launchpad-Export-Date: 2012-12-19 05:16+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@ -108,6 +108,8 @@ msgid ""
"Error!\n"
"You cannot create recursive account templates."
msgstr ""
"Erro!\n"
"Não pode criar modelos de conta de forma recursiva."
#. module: account
#. openerp-web
@ -357,7 +359,7 @@ msgstr ""
#. module: account
#: field:account.config.settings,group_multi_currency:0
msgid "Allow multi currencies"
msgstr ""
msgstr "Permitir várias divisas"
#. module: account
#: code:addons/account/account_invoice.py:73
@ -962,6 +964,10 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p>\n"
" Não foram encontradas entradas em diário.\n"
" </p>\n"
" "
#. module: account
#: code:addons/account/account.py:1632
@ -1007,7 +1013,7 @@ msgstr "Limite"
#. module: account
#: field:account.config.settings,purchase_journal_id:0
msgid "Purchase journal"
msgstr ""
msgstr "Diário de compras"
#. module: account
#: code:addons/account/account.py:1316
@ -1342,7 +1348,7 @@ msgstr "Taxa de câmbios nas vendas"
#. module: account
#: field:account.config.settings,chart_template_id:0
msgid "Template"
msgstr ""
msgstr "Modelo"
#. module: account
#: selection:account.analytic.journal,type:0
@ -1434,7 +1440,7 @@ msgstr "Nível"
#: code:addons/account/wizard/account_change_currency.py:38
#, python-format
msgid "You can only change currency for Draft Invoice."
msgstr ""
msgstr "Só se pode mudar a divisa num rascunho de fatura."
#. module: account
#: report:account.invoice:0
@ -1505,7 +1511,7 @@ msgstr "Opções de relatório"
#. module: account
#: field:account.fiscalyear.close.state,fy_id:0
msgid "Fiscal Year to Close"
msgstr ""
msgstr "Ano fiscal a ser fechado"
#. module: account
#: field:account.config.settings,sale_sequence_prefix:0
@ -1634,7 +1640,7 @@ msgstr "Nota de crédito"
#. module: account
#: view:account.config.settings:0
msgid "eInvoicing & Payments"
msgstr ""
msgstr "Faturação eletrónica e pagamentos"
#. module: account
#: view:account.analytic.cost.ledger.journal.report:0
@ -1711,7 +1717,7 @@ msgstr "Sem imposto"
#. module: account
#: view:account.journal:0
msgid "Advanced Settings"
msgstr ""
msgstr "Configurações avançadas"
#. module: account
#: view:account.bank.statement:0
@ -2025,7 +2031,7 @@ msgstr ""
#. module: account
#: view:account.period:0
msgid "Duration"
msgstr ""
msgstr "Duração"
#. module: account
#: view:account.bank.statement:0
@ -2089,7 +2095,7 @@ msgstr "Montante do crédito"
#: field:account.bank.statement,message_ids:0
#: field:account.invoice,message_ids:0
msgid "Messages"
msgstr ""
msgstr "Mensagens"
#. module: account
#: view:account.vat.declaration:0
@ -2188,7 +2194,7 @@ msgstr "Análise de faturas"
#. module: account
#: model:ir.model,name:account.model_mail_compose_message
msgid "Email composition wizard"
msgstr ""
msgstr "Assistente de criação de mensagem eletrónica"
#. module: account
#: model:ir.model,name:account.model_account_period_close
@ -2234,7 +2240,7 @@ msgstr ""
#. module: account
#: field:account.config.settings,currency_id:0
msgid "Default company currency"
msgstr ""
msgstr "Divisa padrão da empresa"
#. module: account
#: field:account.invoice,move_id:0
@ -2282,7 +2288,7 @@ msgstr "Válido"
#: field:account.bank.statement,message_follower_ids:0
#: field:account.invoice,message_follower_ids:0
msgid "Followers"
msgstr ""
msgstr "Seguidores"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_print_journal
@ -2311,14 +2317,14 @@ msgstr "Relatório de Balancete de Antiguidade de Contas Experimental"
#. module: account
#: view:account.fiscalyear.close.state:0
msgid "Close Fiscal Year"
msgstr ""
msgstr "Fechar ano fiscal"
#. module: account
#. openerp-web
#: code:addons/account/static/src/xml/account_move_line_quickadd.xml:14
#, python-format
msgid "Journal :"
msgstr ""
msgstr "Diáro:"
#. module: account
#: sql_constraint:account.fiscal.position.tax:0
@ -2356,7 +2362,7 @@ msgstr ""
#: code:addons/account/static/src/xml/account_move_reconciliation.xml:8
#, python-format
msgid "Good job!"
msgstr ""
msgstr "Bom trabalho!"
#. module: account
#: field:account.config.settings,module_account_asset:0
@ -2737,7 +2743,7 @@ msgstr "Posições Fiscais"
#: code:addons/account/account_move_line.py:578
#, python-format
msgid "You cannot create journal items on a closed account %s %s."
msgstr ""
msgstr "Não se pode criar entradas em diário numa conta já fechada %s %s."
#. module: account
#: field:account.period.close,sure:0
@ -2770,7 +2776,7 @@ msgstr "Estado de rascunho de uma fatura"
#. module: account
#: view:product.category:0
msgid "Account Properties"
msgstr ""
msgstr "Propriedades da conta"
#. module: account
#: view:account.partner.reconcile.process:0
@ -2857,7 +2863,7 @@ msgstr "EXJ"
#. module: account
#: view:account.invoice.refund:0
msgid "Create Credit Note"
msgstr ""
msgstr "Criar nota de crédito"
#. module: account
#: field:product.template,supplier_taxes_id:0
@ -3167,7 +3173,7 @@ msgstr "Fechar montante"
#: field:account.bank.statement,message_unread:0
#: field:account.invoice,message_unread:0
msgid "Unread Messages"
msgstr ""
msgstr "Mensagens por ler"
#. module: account
#: code:addons/account/wizard/account_invoice_state.py:44
@ -3204,7 +3210,7 @@ msgstr ""
#. module: account
#: field:account.config.settings,sale_journal_id:0
msgid "Sale journal"
msgstr ""
msgstr "Diário de vendas"
#. module: account
#: code:addons/account/account.py:2293
@ -3308,7 +3314,7 @@ msgstr "Conta de Despesas"
#: field:account.bank.statement,message_summary:0
#: field:account.invoice,message_summary:0
msgid "Summary"
msgstr ""
msgstr "Resumo"
#. module: account
#: help:account.invoice,period_id:0
@ -3431,7 +3437,7 @@ msgstr "Escolha o Ano Fiscal"
#: view:account.config.settings:0
#: view:account.installer:0
msgid "Date Range"
msgstr ""
msgstr "Intervalo de datas"
#. module: account
#: view:account.period:0
@ -3615,7 +3621,7 @@ msgstr "Templates de Plano de Contas"
#. module: account
#: view:account.bank.statement:0
msgid "Transactions"
msgstr ""
msgstr "Transações"
#. module: account
#: model:ir.model,name:account.model_account_unreconcile_reconcile
@ -4031,7 +4037,7 @@ msgstr ""
#. module: account
#: model:ir.model,name:account.model_account_journal_cashbox_line
msgid "account.journal.cashbox.line"
msgstr ""
msgstr "account.journal.cashbox.line"
#. module: account
#: model:ir.model,name:account.model_account_partner_reconcile_process
@ -4314,7 +4320,7 @@ msgstr "ID Parceiro"
#: help:account.bank.statement,message_ids:0
#: help:account.invoice,message_ids:0
msgid "Messages and communication history"
msgstr ""
msgstr "Histórico de mensagens e comunicação"
#. module: account
#: help:account.journal,analytic_journal_id:0
@ -4355,7 +4361,7 @@ msgstr ""
#: code:addons/account/account_move_line.py:1131
#, python-format
msgid "You cannot use an inactive account."
msgstr ""
msgstr "Não se pode usar uma conta inativa."
#. module: account
#: model:ir.actions.act_window,name:account.open_board_account
@ -4386,7 +4392,7 @@ msgstr "Dependentes consolidados"
#: code:addons/account/wizard/account_invoice_refund.py:146
#, python-format
msgid "Insufficient Data!"
msgstr ""
msgstr "Dados insuficientes!"
#. module: account
#: help:account.account,unrealized_gain_loss:0
@ -4423,7 +4429,7 @@ msgstr "título"
#. module: account
#: selection:account.invoice.refund,filter_refund:0
msgid "Create a draft credit note"
msgstr ""
msgstr "Criar um rascunho de nota de crédito"
#. module: account
#: view:account.invoice:0
@ -4455,7 +4461,7 @@ msgstr "Ativos"
#. module: account
#: view:account.config.settings:0
msgid "Accounting & Finance"
msgstr ""
msgstr "Contabilidade e finanças"
#. module: account
#: view:account.invoice.confirm:0
@ -4632,6 +4638,8 @@ msgid ""
"Error!\n"
"You cannot create recursive Tax Codes."
msgstr ""
"Erro!\n"
"Não se pode criar códigos de imposto de forma recursiva."
#. module: account
#: constraint:account.period:0
@ -4639,6 +4647,8 @@ msgid ""
"Error!\n"
"The duration of the Period(s) is/are invalid."
msgstr ""
"Erro!\n"
"As durações dos períodos são inválidas."
#. module: account
#: field:account.entries.report,month:0
@ -4676,7 +4686,7 @@ msgstr ""
#: view:analytic.entries.report:0
#: field:analytic.entries.report,product_uom_id:0
msgid "Product Unit of Measure"
msgstr ""
msgstr "Unidade de medida do produto"
#. module: account
#: field:res.company,paypal_account:0
@ -4936,6 +4946,9 @@ msgid ""
"Error!\n"
"You cannot create an account which has parent account of different company."
msgstr ""
"Erro!\n"
"Não se pode criar uma conta que esteja dependente de uma conta pertencente a "
"outra empresa."
#. module: account
#: code:addons/account/account_invoice.py:615
@ -5071,7 +5084,7 @@ msgstr "Fatura cancelada"
#. module: account
#: view:account.invoice:0
msgid "My Invoices"
msgstr ""
msgstr "As minhas faturas"
#. module: account
#: selection:account.bank.statement,state:0
@ -5185,7 +5198,7 @@ msgstr "Cheque"
#: view:validate.account.move:0
#: view:validate.account.move.lines:0
msgid "or"
msgstr ""
msgstr "ou"
#. module: account
#: view:account.invoice.report:0
@ -5278,7 +5291,7 @@ msgstr ""
#: field:account.invoice,message_comment_ids:0
#: help:account.invoice,message_comment_ids:0
msgid "Comments and emails"
msgstr ""
msgstr "Comentários e emails"
#. module: account
#: view:account.bank.statement:0
@ -6235,7 +6248,7 @@ msgstr "Mapeamento Fiscal"
#. module: account
#: view:account.config.settings:0
msgid "Select Company"
msgstr ""
msgstr "Selecione a empresa"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_state_open
@ -6310,7 +6323,7 @@ msgstr "Número de linhas"
#. module: account
#: view:account.invoice:0
msgid "(update)"
msgstr ""
msgstr "(atualizar)"
#. module: account
#: field:account.aged.trial.balance,filter:0
@ -6519,7 +6532,7 @@ msgstr "Linha analítica"
#. module: account
#: model:ir.ui.menu,name:account.menu_action_model_form
msgid "Models"
msgstr ""
msgstr "Modelos"
#. module: account
#: code:addons/account/account_invoice.py:1090
@ -6699,7 +6712,7 @@ msgstr "A receber"
#. module: account
#: constraint:account.move.line:0
msgid "You cannot create journal items on closed account."
msgstr ""
msgstr "Não se pode criar entradas em diário numa conta já fechada."
#. module: account
#: code:addons/account/account_invoice.py:594
@ -7238,7 +7251,7 @@ msgstr "Manual"
#: code:addons/account/wizard/account_report_aged_partner_balance.py:58
#, python-format
msgid "You must set a start date."
msgstr ""
msgstr "Tem de definir uma data de início"
#. module: account
#: view:account.automatic.reconcile:0
@ -7466,6 +7479,8 @@ msgid ""
"Error!\n"
"The start date of a fiscal year must precede its end date."
msgstr ""
"Erro!\n"
"O início do ano fiscal deve ser anterior ao seu fim."
#. module: account
#: view:account.tax.template:0
@ -7774,7 +7789,7 @@ msgstr "Criar movimentos"
#. module: account
#: model:ir.model,name:account.model_cash_box_out
msgid "cash.box.out"
msgstr ""
msgstr "cash.box.out"
#. module: account
#: help:account.config.settings,currency_id:0
@ -8205,6 +8220,8 @@ msgid ""
"Error!\n"
"You cannot create recursive accounts."
msgstr ""
"Erro!\n"
"Não se pode criar contas de forma recursiva."
#. module: account
#: model:ir.model,name:account.model_cash_box_in

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: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-12-17 16:09+0000\n"
"PO-Revision-Date: 2012-12-18 22:31+0000\n"
"Last-Translator: Dusan Laznik <laznik@mentis.si>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-18 05:01+0000\n"
"X-Generator: Launchpad (build 16372)\n"
"X-Launchpad-Export-Date: 2012-12-19 05:16+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@ -291,7 +291,7 @@ msgid ""
"This includes all the basic requirements of voucher entries for bank, cash, "
"sales, purchase, expense, contra, etc.\n"
" This installs the module account_voucher."
msgstr ""
msgstr "Poslovanje z vavčerji"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_use_model_create_entry
@ -923,7 +923,7 @@ msgstr "Pošlji po e-pošti"
msgid ""
"Print Report with the currency column if the currency differs from the "
"company currency."
msgstr ""
msgstr "Poročilo z valuto različno od privzete valute podjetja."
#. module: account
#: report:account.analytic.account.quantity_cost_ledger:0
@ -1166,6 +1166,13 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Kliknite , če želite dodati konto\n"
" </p><p>\n"
" Prikaz predvidene valutne razlike\n"
" \n"
" </p>\n"
" "
#. module: account
#: field:account.bank.accounts.wizard,acc_name:0
@ -1581,6 +1588,8 @@ msgid ""
"There is no default debit account defined \n"
"on journal \"%s\"."
msgstr ""
"Ni privzetega debetnega konta \n"
"v dnevniku \"%s\"."
#. module: account
#: view:account.tax:0
@ -1614,7 +1623,7 @@ msgstr "Največji znesek odpisa"
msgid ""
"There is nothing to reconcile. All invoices and payments\n"
" have been reconciled, your partner balance is clean."
msgstr ""
msgstr "Ni neusklajenih postavk"
#. module: account
#: field:account.chart.template,code_digits:0
@ -2586,7 +2595,7 @@ msgstr "Konto prihodkov"
#. module: account
#: help:account.config.settings,default_sale_tax:0
msgid "This sale tax will be assigned by default on new products."
msgstr ""
msgstr "Ta davek bo privzet na novih izdelkih"
#. module: account
#: report:account.general.ledger_landscape:0
@ -2675,7 +2684,7 @@ msgstr "Obdrži prazno za odprto poslovno leto"
msgid ""
"You cannot change the type of account from 'Closed' to any other type as it "
"contains journal items!"
msgstr ""
msgstr "Ne morete spremeniti vrste konta, ker vsebuje vknjižbe!"
#. module: account
#: field:account.invoice.report,account_line_id:0
@ -2860,7 +2869,7 @@ msgstr "EXJ"
#. module: account
#: view:account.invoice.refund:0
msgid "Create Credit Note"
msgstr ""
msgstr "Nov dobropis"
#. module: account
#: field:product.template,supplier_taxes_id:0
@ -3170,7 +3179,7 @@ msgstr "Neprebrana sporočila"
msgid ""
"Selected invoice(s) cannot be confirmed as they are not in 'Draft' or 'Pro-"
"Forma' state."
msgstr ""
msgstr "Izbrani računi nimajo statusa \"Osnutek\" ali \"Predračun\""
#. module: account
#: code:addons/account/account.py:1056
@ -3300,7 +3309,7 @@ msgstr "Konto stroškov"
#: field:account.bank.statement,message_summary:0
#: field:account.invoice,message_summary:0
msgid "Summary"
msgstr ""
msgstr "Povzetek"
#. module: account
#: help:account.invoice,period_id:0
@ -3570,7 +3579,7 @@ msgstr "Saldakonti"
#: code:addons/account/account_invoice.py:1330
#, python-format
msgid "%s <b>created</b>."
msgstr ""
msgstr "%s <b>ustvarjeno</b>."
#. module: account
#: view:account.period:0
@ -3866,7 +3875,7 @@ msgstr "Kontni načrti"
#: view:cash.box.out:0
#: model:ir.actions.act_window,name:account.action_cash_box_out
msgid "Take Money Out"
msgstr ""
msgstr "Dvig gotovine"
#. module: account
#: report:account.vat.declaration:0
@ -4331,7 +4340,7 @@ msgstr ""
#: code:addons/account/account_move_line.py:1131
#, python-format
msgid "You cannot use an inactive account."
msgstr ""
msgstr "Ne morete uporabiti de aktiviranega konta."
#. module: account
#: model:ir.actions.act_window,name:account.open_board_account
@ -4625,12 +4634,12 @@ msgstr "Mesec"
#: code:addons/account/account.py:667
#, python-format
msgid "You cannot change the code of account which contains journal items!"
msgstr ""
msgstr "Ne morete spremeniti kode konta , ki vsebuje vknjižbe"
#. module: account
#: field:account.config.settings,purchase_sequence_prefix:0
msgid "Supplier invoice sequence"
msgstr ""
msgstr "Številčno zaporedje dobaviteljevih računov"
#. module: account
#: code:addons/account/account_invoice.py:571
@ -4755,7 +4764,7 @@ msgstr "Periodična obdelava"
#. module: account
#: selection:account.move.line,state:0
msgid "Balanced"
msgstr ""
msgstr "Uklajeno"
#. module: account
#: model:process.node,note:account.process_node_importinvoice0
@ -4854,7 +4863,7 @@ msgstr "Dobropis"
#: model:ir.actions.act_window,name:account.action_account_manual_reconcile
#: model:ir.ui.menu,name:account.menu_manual_reconcile_bank
msgid "Journal Items to Reconcile"
msgstr ""
msgstr "Odprte postavke"
#. module: account
#: sql_constraint:account.period:0
@ -4869,7 +4878,7 @@ msgstr ""
#. module: account
#: view:account.tax:0
msgid "Tax Computation"
msgstr ""
msgstr "Izračun davka"
#. module: account
#: view:wizard.multi.charts.accounts:0
@ -4965,7 +4974,7 @@ msgstr "Privzeti kreditni konto"
#. module: account
#: view:cash.box.out:0
msgid "Describe why you take money from the cash register:"
msgstr ""
msgstr "Razlog za dvig gotovine"
#. module: account
#: selection:account.invoice,state:0
@ -5050,7 +5059,7 @@ msgstr "Nov"
#. module: account
#: view:wizard.multi.charts.accounts:0
msgid "Sale Tax"
msgstr ""
msgstr "Prodajni davek"
#. module: account
#: field:account.tax,ref_tax_code_id:0
@ -5236,7 +5245,7 @@ msgstr "Postavke za pregled"
#. module: account
#: selection:res.company,tax_calculation_rounding_method:0
msgid "Round Globally"
msgstr ""
msgstr "Skupno zaokroževanje"
#. module: account
#: field:account.bank.statement,message_comment_ids:0
@ -5279,7 +5288,7 @@ msgstr "Aktivno"
#: view:account.bank.statement:0
#: field:account.journal,cash_control:0
msgid "Cash Control"
msgstr ""
msgstr "Gotovina"
#. module: account
#: field:account.analytic.balance,date2:0
@ -5392,7 +5401,7 @@ msgstr "Podrejeni konti davkov"
msgid ""
"There is no period defined for this date: %s.\n"
"Please create one."
msgstr ""
msgstr "Obračunsko obdobje za : %s ni določeno."
#. module: account
#: help:account.tax,price_include:0
@ -5518,7 +5527,7 @@ msgstr "Leto"
#. module: account
#: help:account.invoice,sent:0
msgid "It indicates that the invoice has been sent."
msgstr ""
msgstr "Oznaka , da je bil račun poslan."
#. module: account
#: view:account.payment.term.line:0
@ -5729,7 +5738,7 @@ msgstr "account.installer"
#. module: account
#: view:account.invoice:0
msgid "Recompute taxes and total"
msgstr ""
msgstr "Ponovni izračun davkov in salda"
#. module: account
#: code:addons/account/account.py:1097
@ -5869,7 +5878,7 @@ msgstr ""
#. module: account
#: view:cash.box.in:0
msgid "Fill in this form if you put money in the cash register:"
msgstr ""
msgstr "Izpolnite ta obrazec za polog gotovine:"
#. module: account
#: field:account.payment.term.line,value_amount:0
@ -6055,7 +6064,7 @@ msgstr "Zapri z odpisom"
#. module: account
#: constraint:account.move.line:0
msgid "You cannot create journal items on an account of type view."
msgstr ""
msgstr "No možno knjižiti na konto vrste \"Pogled\"."
#. module: account
#: selection:account.payment.term.line,value:0
@ -6388,7 +6397,7 @@ msgstr "Podjetje"
#. module: account
#: help:account.config.settings,group_multi_currency:0
msgid "Allows you multi currency environment"
msgstr ""
msgstr "Več valutno poslovanje"
#. module: account
#: view:account.subscription:0
@ -6647,7 +6656,7 @@ msgstr "Terjatev"
#. module: account
#: constraint:account.move.line:0
msgid "You cannot create journal items on closed account."
msgstr ""
msgstr "Ni možno knjižiti na konto,ki je zaprt."
#. module: account
#: code:addons/account/account_invoice.py:594
@ -6718,7 +6727,7 @@ msgstr "Odstotek"
#. module: account
#: selection:account.config.settings,tax_calculation_rounding_method:0
msgid "Round globally"
msgstr ""
msgstr "Skupno zaokroževanje"
#. module: account
#: selection:account.report.general.ledger,sortby:0
@ -6998,7 +7007,7 @@ msgstr "Konto vrste stroškov"
#. module: account
#: sql_constraint:account.tax:0
msgid "Tax Name must be unique per company!"
msgstr ""
msgstr "Ime davka mora biti enolično"
#. module: account
#: view:account.bank.statement:0
@ -7218,7 +7227,7 @@ msgstr "Dnevniki"
#: code:addons/account/wizard/account_invoice_refund.py:147
#, python-format
msgid "No period found on the invoice."
msgstr ""
msgstr "Ni obračunskega obdobja"
#. module: account
#: help:account.partner.ledger,page_split:0
@ -7263,7 +7272,7 @@ msgstr "Vse postavke"
#. module: account
#: constraint:account.move.reconcile:0
msgid "You can only reconcile journal items with the same partner."
msgstr ""
msgstr "Postavke se lahko usklajujejo samo na istem partnerju."
#. module: account
#: view:account.journal.select:0
@ -7492,7 +7501,7 @@ msgstr "Davki:"
msgid ""
"You can not delete an invoice which is not cancelled. You should refund it "
"instead."
msgstr ""
msgstr "Preklicanega računa ni možno brisati."
#. module: account
#: help:account.tax,amount:0
@ -7603,7 +7612,7 @@ msgstr "Združeno po letu raćuna"
#. module: account
#: field:account.config.settings,purchase_tax_rate:0
msgid "Purchase tax (%)"
msgstr ""
msgstr "Nabavni davek (%)"
#. module: account
#: help:res.partner,credit:0
@ -7702,7 +7711,7 @@ msgstr "cash.box.out"
#. module: account
#: help:account.config.settings,currency_id:0
msgid "Main currency of the company."
msgstr ""
msgstr "Glavna valuta"
#. module: account
#: model:ir.ui.menu,name:account.menu_finance_reports
@ -8211,7 +8220,7 @@ msgstr "Postavka blagajne"
#. module: account
#: field:account.installer,charts:0
msgid "Accounting Package"
msgstr ""
msgstr "Računovodski paket"
#. module: account
#: report:account.third_party_ledger:0
@ -8922,7 +8931,7 @@ msgstr "Koda konta že obstaja!"
#: help:product.category,property_account_expense_categ:0
#: help:product.template,property_account_expense:0
msgid "This account will be used to value outgoing stock using cost price."
msgstr ""
msgstr "Konto porabe po nabavni ceni."
#. module: account
#: view:account.invoice:0
@ -8960,7 +8969,7 @@ msgstr "Dovoljeni konti (prazno - ni kontrole)"
#. module: account
#: field:account.config.settings,sale_tax_rate:0
msgid "Sales tax (%)"
msgstr ""
msgstr "Prodajni davek (%)"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_analytic_account_tree2
@ -9226,7 +9235,7 @@ msgstr ""
#: code:addons/account/account.py:633
#, python-format
msgid "You cannot deactivate an account that contains journal items."
msgstr ""
msgstr "Ni možno de aktivirati konta , ki ima vknjižbe"
#. module: account
#: selection:account.tax,applicable_type:0
@ -9340,7 +9349,7 @@ msgstr "Ustvari račun"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_configuration_installer
msgid "Configure Accounting Data"
msgstr ""
msgstr "Nastavitve računovodstva"
#. module: account
#: field:wizard.multi.charts.accounts,purchase_tax_rate:0
@ -9619,7 +9628,7 @@ msgstr "Filter"
#: field:account.cashbox.line,number_closing:0
#: field:account.cashbox.line,number_opening:0
msgid "Number of Units"
msgstr ""
msgstr "Število enot"
#. module: account
#: model:process.node,note:account.process_node_manually0
@ -9644,12 +9653,12 @@ msgstr "Prenos"
#: code:addons/account/wizard/account_period_close.py:51
#, python-format
msgid "Invalid Action!"
msgstr ""
msgstr "Napačno dejanje!"
#. module: account
#: view:account.bank.statement:0
msgid "Date / Period"
msgstr ""
msgstr "Datum/Obdobje"
#. module: account
#: report:account.central.journal:0
@ -9672,7 +9681,7 @@ msgstr ""
#. module: account
#: report:account.overdue:0
msgid "There is nothing due with this customer."
msgstr ""
msgstr "Ni zapadlih postavk za tega kupca."
#. module: account
#: help:account.tax,account_paid_id:0
@ -9731,7 +9740,7 @@ msgstr "Skupno poročilo"
#: field:account.config.settings,default_sale_tax:0
#: field:account.config.settings,sale_tax:0
msgid "Default sale tax"
msgstr ""
msgstr "Privzeti prodajni davek"
#. module: account
#: report:account.overdue:0
@ -9818,7 +9827,7 @@ msgstr "Konec obdobja"
#. module: account
#: model:account.account.type,name:account.account_type_expense_view1
msgid "Expense View"
msgstr ""
msgstr "Stroški"
#. module: account
#: field:account.move.line,date_maturity:0
@ -9905,7 +9914,7 @@ msgstr "Osnutki računov"
#: view:cash.box.in:0
#: model:ir.actions.act_window,name:account.action_cash_box_in
msgid "Put Money In"
msgstr ""
msgstr "Polog gotovine"
#. module: account
#: selection:account.account.type,close_method:0
@ -9957,7 +9966,7 @@ msgstr "Iz analitičnih kontov"
#. module: account
#: view:account.installer:0
msgid "Configure your Fiscal Year"
msgstr ""
msgstr "Nastavitve poslovnega leta"
#. module: account
#: field:account.period,name:0
@ -10497,7 +10506,7 @@ msgstr "Konti brez vknjižb ? "
#: code:addons/account/account_move_line.py:1046
#, python-format
msgid "Unable to change tax!"
msgstr ""
msgstr "Ni možno spremeniti davka!"
#. module: account
#: constraint:account.bank.statement:0

View File

@ -68,6 +68,7 @@
<field eval="&quot;&quot;&quot;Accounting&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Accounting entries.&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="process_process_supplierinvoiceprocess0"/>
<field eval="&quot;&quot;&quot;object.state=='posted'&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<data noupdate="0">
<record id="group_account_invoice" model="res.groups">
<field name="name">Invoicing &amp; Payments</field>
@ -30,7 +30,9 @@
<field name="name">Check Total on supplier invoices</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
</data>
<data noupdate="1">
<record id="account_move_comp_rule" model="ir.rule">
<field name="name">Account Entry</field>
<field name="model_id" ref="model_account_move"/>

View File

@ -103,7 +103,7 @@ openerp.account = function (instance) {
action_id: result[1],
context: additional_context
}).done(function (result) {
result.context = _.extend(result.context || {}, additional_context);
result.context = instance.web.pyeval.eval('contexts', [result.context, additional_context]);
result.flags = result.flags || {};
result.flags.new_window = true;
return self.do_action(result, {

View File

@ -69,5 +69,7 @@
!python {model: account.bank.statement}: |
try:
self.button_cancel(cr, uid, [ref("account_bank_statement_0")])
except Exception, e:
assert e[0]=='User Error!', 'Another exception has been raised!'
assert False, "An exception should have been raised, the journal should not let us cancel moves!"
except Exception:
# exception was raised as expected, as the journal does not allow cancelling moves
pass

View File

@ -146,7 +146,7 @@ class account_invoice_refund(osv.osv_memory):
raise osv.except_osv(_('Insufficient Data!'), \
_('No period found on the invoice.'))
refund_id = inv_obj.refund(cr, uid, [inv.id], date, period, description, journal_id)
refund_id = inv_obj.refund(cr, uid, [inv.id], date, period, description, journal_id, context=context)
refund = inv_obj.browse(cr, uid, refund_id[0], context=context)
inv_obj.write(cr, uid, [refund.id], {'date_due': date,
'check_total': inv.check_total})

View File

@ -6,9 +6,9 @@
<field name="name">Unreconcile Entries</field>
<field name="model">account.unreconcile</field>
<field name="arch" type="xml">
<form string="Unreconciliation" version="7.0">
<separator string="Unreconciliate Transactions"/>
<label string="If you unreconciliate transactions, you must also verify all the actions that are linked to those transactions because they will not be disabled"/>
<form string="Unreconcile" version="7.0">
<separator string="Unreconcile Transactions"/>
<label string="If you unreconcile transactions, you must also verify all the actions that are linked to those transactions because they will not be disabled"/>
<footer>
<button string="Unreconcile" name="trans_unrec" type="object" default_focus="1" class="oe_highlight"/>
or
@ -44,8 +44,8 @@
<header>
<button icon="gtk-ok" string="Unreconcile" name="trans_unrec_reconcile" type="object" default_focus="1" class="oe_highlight" />
</header>
<separator string="Unreconciliation Transactions"/>
<label string="If you unreconciliate transactions, you must also verify all the actions that are linked to those transactions because they will not be disable"/>
<separator string="Unreconcile Transactions"/>
<label string="If you unreconcile transactions, you must also verify all the actions that are linked to those transactions because they will not be disable"/>
</form>
</field>
</record>

View File

@ -7,15 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev_rc3\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-12-17 21:42+0000\n"
"Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-"
"consulting.net>\n"
"PO-Revision-Date: 2012-12-18 15:30+0000\n"
"Last-Translator: Rudolf Schnapka <rs@techno-flex.de>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-18 05:01+0000\n"
"X-Generator: Launchpad (build 16372)\n"
"X-Launchpad-Export-Date: 2012-12-19 05:17+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@ -194,7 +193,7 @@ msgstr "Berechnungsformel: Geplanter Umsatz - Gesamte Kosten"
#. module: account_analytic_analysis
#: field:account.analytic.account,hours_qtt_invoiced:0
msgid "Invoiced Time"
msgstr "Verrechnete Zeit"
msgstr "Abgerechnete Zeit"
#. module: account_analytic_analysis
#: field:account.analytic.account,fix_price_to_invoice:0
@ -210,6 +209,8 @@ msgid ""
"{'required': [('type','=','contract')], 'invisible': [('type','in',['view', "
"'normal','template'])]}"
msgstr ""
"{'required': [('type','=','contract')], 'invisible': [('type','in',['view', "
"'normal','template'])]}"
#. module: account_analytic_analysis
#: field:account.analytic.account,real_margin_rate:0
@ -227,13 +228,13 @@ msgid ""
"Number of time you spent on the analytic account (from timesheet). It "
"computes quantities on all journal of type 'general'."
msgstr ""
"Anzahl der Zeiten, die auf dieses Analyse Konto gebucht wurden. Es werden "
"alle Summen der Journale 'general' gebildet"
"Arbeitszeiten, die auf diese Kostenstelle gebucht wurden. Es werden nur "
"Journale vom Typ 'sonstige' zur Berechnung herangezogen."
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Nothing to invoice, create"
msgstr ""
msgstr "Nichts abzurechnen, erstelle"
#. module: account_analytic_analysis
#: model:ir.actions.act_window,name:account_analytic_analysis.template_of_contract_action
@ -274,7 +275,7 @@ msgstr "oder Ansicht"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Parent"
msgstr "Elternteil"
msgstr "Hauptprojekt"
#. module: account_analytic_analysis
#: field:account.analytic.account,month_ids:0
@ -332,7 +333,7 @@ msgstr "Auftragszeilen von %s"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "Pending"
msgstr "Unerledigt"
msgstr "Wiedervorlage"
#. module: account_analytic_analysis
#: field:account.analytic.account,is_overdue_quantity:0
@ -358,7 +359,7 @@ msgstr "Zu Erneuern"
#: view:account.analytic.account:0
msgid ""
"A contract in OpenERP is an analytic account having a partner set on it."
msgstr "Ein Vertrag ist ein Analyse Konto mit Partner"
msgstr "Ein Vertrag ist ein Kundenprojekt mit Kostenstelle"
#. module: account_analytic_analysis
#: model:ir.actions.act_window,name:account_analytic_analysis.action_sales_order
@ -601,7 +602,7 @@ msgstr "Datum der letzten Erfassung auf diesem Konto."
#. module: account_analytic_analysis
#: model:ir.model,name:account_analytic_analysis.model_sale_config_settings
msgid "sale.config.settings"
msgstr ""
msgstr "sale.config.settings"
#. module: account_analytic_analysis
#: field:sale.config.settings,group_template_required:0

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: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-11-29 15:09+0000\n"
"Last-Translator: Numérigraphe <Unknown>\n"
"PO-Revision-Date: 2012-12-18 18:07+0000\n"
"Last-Translator: Nicolas JEUDY <njeudy@tuxservices.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: 2012-12-04 05:37+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-19 05:17+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: account_analytic_default
#: model:ir.actions.act_window,name:account_analytic_default.analytic_rule_action_partner
@ -31,7 +31,7 @@ msgstr "Regrouper par..."
#. module: account_analytic_default
#: help:account.analytic.default,date_stop:0
msgid "Default end date for this Analytic Account."
msgstr ""
msgstr "Date de fin par défaut pour ce compte analytique"
#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_stock_picking
@ -50,6 +50,10 @@ msgid ""
"default (e.g. create new customer invoice or Sale order if we select this "
"partner, it will automatically take this as an analytic account)"
msgstr ""
"Choisissez un partenaire qui utilisera le compte analytique par défaut "
"définit dans \"Analytique par défaut\" (par exemple : en créant nouvelle une "
"facture client ou une commande de vente, lorsqu'on choisira ce partenaire, "
"cela sélectionnera automatiquement ce compte analytique)"
#. module: account_analytic_default
#: view:account.analytic.default:0
@ -86,6 +90,10 @@ msgid ""
"default (e.g. create new customer invoice or Sale order if we select this "
"product, it will automatically take this as an analytic account)"
msgstr ""
"Choisissez un article qui utilisera le compte analytique par défaut définit "
"dans \"Analytique par défaut\" (par exemple : en créant nouvelle une facture "
"client ou une commande de vente, lorsqu'on choisira cet article, cela "
"sélectionnera automatiquement ce compte analytique)"
#. module: account_analytic_default
#: field:account.analytic.default,date_stop:0
@ -111,12 +119,17 @@ msgid ""
"default (e.g. create new customer invoice or Sale order if we select this "
"company, it will automatically take this as an analytic account)"
msgstr ""
"Choisissez une société qui utilisera le compte analytique par défaut définit "
"dans \"Analytique par défaut\" (par exemple : en créant nouvelle une facture "
"client ou une commande de vente, lorsqu'on choisira cette société, cela "
"sélectionnera automatiquement ce compte analytique)"
#. module: account_analytic_default
#: help:account.analytic.default,user_id:0
msgid ""
"Select a user which will use analytic account specified in analytic default."
msgstr ""
"Choisissez un utilisateur qui utilisera le compte analytique par défaut"
#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_account_invoice_line
@ -132,7 +145,7 @@ msgstr "Compte Analytique"
#. module: account_analytic_default
#: help:account.analytic.default,date_start:0
msgid "Default start date for this Analytic Account."
msgstr ""
msgstr "Date de début par défaut pour ce compte analytique"
#. module: account_analytic_default
#: view:account.analytic.default:0

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<data noupdate="1">
<record id="analytic_default_comp_rule" model="ir.rule">
<field name="name">Analytic Default multi company rule</field>

View File

@ -157,28 +157,27 @@ class account_invoice_line(osv.osv):
res['value'].update({'account_id':a})
return res
account_invoice_line()
class account_invoice(osv.osv):
_inherit = "account.invoice"
def _refund_cleanup_lines(self, cr, uid, lines):
for line in lines:
inv_id = line['invoice_id']
inv_obj = self.browse(cr, uid, inv_id[0])
if inv_obj.type == 'in_invoice':
if line.get('product_id',False):
product_obj = self.pool.get('product.product').browse(cr, uid, line['product_id'][0])
oa = product_obj.property_stock_account_output and product_obj.property_stock_account_output.id
if not oa:
oa = product_obj.categ_id.property_stock_account_output_categ and product_obj.categ_id.property_stock_account_output_categ.id
if oa:
fpos = inv_obj.fiscal_position or False
a = self.pool.get('account.fiscal.position').map_account(cr, uid, fpos, oa)
account_data = self.pool.get('account.account').read(cr, uid, [a], ['name'])[0]
line.update({'account_id': (account_data['id'],account_data['name'])})
res = super(account_invoice,self)._refund_cleanup_lines(cr, uid, lines)
return res
def _prepare_refund(self, cr, uid, invoice, date=None, period_id=None, description=None, journal_id=None, context=None):
invoice_data = super(account_invoice, self)._prepare_refund(cr, uid, invoice, date, period_id,
description, journal_id, context=context)
if invoice.type == 'in_invoice':
fiscal_position = self.pool.get('account.fiscal.position')
for _, _, line_dict in invoice_data['invoice_line']:
if line_dict.get('product_id'):
product = self.pool.get('product.product').browse(cr, uid, line_dict['product_id'], context=context)
counterpart_acct_id = product.property_stock_account_output and \
product.property_stock_account_output.id
if not counterpart_acct_id:
counterpart_acct_id = product.categ_id.property_stock_account_output_categ and \
product.categ_id.property_stock_account_output_categ.id
if counterpart_acct_id:
fpos = invoice.fiscal_position or False
line_dict['account_id'] = fiscal_position.map_account(cr, uid,
fpos,
counterpart_acct_id)
return invoice_data
account_invoice()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -36,7 +36,7 @@ class stock_picking(osv.osv):
for inv in self.pool.get('account.invoice').browse(cr, uid, res.values(), context=context):
for ol in inv.invoice_line:
if ol.product_id:
oa = ol.product_id.product_tmpl_id.property_stock_account_output and ol.product_id.product_tmpl_id.property_stock_account_output.id
oa = ol.product_id.property_stock_account_output and ol.product_id.property_stock_account_output.id
if not oa:
oa = ol.product_id.categ_id.property_stock_account_output_categ and ol.product_id.categ_id.property_stock_account_output_categ.id
if oa:
@ -48,7 +48,7 @@ class stock_picking(osv.osv):
for inv in self.pool.get('account.invoice').browse(cr, uid, res.values(), context=context):
for ol in inv.invoice_line:
if ol.product_id:
oa = ol.product_id.product_tmpl_id.property_stock_account_input and ol.product_id.product_tmpl_id.property_stock_account_input.id
oa = ol.product_id.property_stock_account_input and ol.product_id.property_stock_account_input.id
if not oa:
oa = ol.product_id.categ_id.property_stock_account_input_categ and ol.product_id.categ_id.property_stock_account_input_categ.id
if oa:

View File

@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-06-09 10:25+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2012-12-18 20:57+0000\n"
"Last-Translator: Dusan Laznik <laznik@mentis.si>\n"
"Language-Team: Slovenian <sl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-04 05:54+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-19 05:17+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: account_asset
#: view:account.asset.asset:0
msgid "Assets in draft and open states"
msgstr ""
msgstr "Osnovna sredstva v stanju \"Osnutek\" ali \"Odprto\""
#. module: account_asset
#: field:account.asset.category,method_end:0
@ -32,12 +32,12 @@ msgstr "Datum zaključka"
#. module: account_asset
#: field:account.asset.asset,value_residual:0
msgid "Residual Value"
msgstr ""
msgstr "Ostanek vrednosti"
#. module: account_asset
#: field:account.asset.category,account_expense_depreciation_id:0
msgid "Depr. Expense Account"
msgstr ""
msgstr "Konto stroška amortizacije"
#. module: account_asset
#: view:asset.asset.report:0
@ -47,7 +47,7 @@ msgstr "Združeno po..."
#. module: account_asset
#: field:asset.asset.report,gross_value:0
msgid "Gross Amount"
msgstr ""
msgstr "Bruto vrednost"
#. module: account_asset
#: view:account.asset.asset:0
@ -66,7 +66,7 @@ msgstr "Premoženje"
msgid ""
"Indicates that the first depreciation entry for this asset have to be done "
"from the purchase date instead of the first January"
msgstr ""
msgstr "Indikator,da se bo amortizacija računala od datuma nabave"
#. module: account_asset
#: selection:account.asset.asset,method:0
@ -97,7 +97,7 @@ msgstr "Se izvaja"
#. module: account_asset
#: field:account.asset.depreciation.line,amount:0
msgid "Depreciation Amount"
msgstr ""
msgstr "Znesek amortizacije"
#. module: account_asset
#: view:asset.asset.report:0
@ -105,7 +105,7 @@ msgstr ""
#: model:ir.model,name:account_asset.model_asset_asset_report
#: model:ir.ui.menu,name:account_asset.menu_action_asset_asset_report
msgid "Assets Analysis"
msgstr ""
msgstr "Analiza osnovnega sredstva"
#. module: account_asset
#: field:asset.modify,name:0
@ -116,13 +116,13 @@ msgstr "Vzrok"
#: field:account.asset.asset,method_progress_factor:0
#: field:account.asset.category,method_progress_factor:0
msgid "Degressive Factor"
msgstr ""
msgstr "Degresivni način obračuna amortizacije"
#. module: account_asset
#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_list_normal
#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_list_normal
msgid "Asset Categories"
msgstr ""
msgstr "Kategorije osnovnega sredstva"
#. module: account_asset
#: view:account.asset.asset:0
@ -136,7 +136,7 @@ msgstr "Vnosi"
#: view:account.asset.asset:0
#: field:account.asset.asset,depreciation_line_ids:0
msgid "Depreciation Lines"
msgstr ""
msgstr "Amortizacijske vrstice"
#. module: account_asset
#: help:account.asset.asset,salvage_value:0

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<data noupdate="1">
<record id="account_asset_category_multi_company_rule" model="ir.rule">
<field name="name">Account Asset Category multi-company</field>
<field ref="model_account_asset_category" name="model_id"/>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="0">
<data noupdate="1">
<record id="budget_post_comp_rule" model="ir.rule">
<field name="name">Budget post multi-company</field>

View File

@ -153,11 +153,11 @@ ${object.get_followup_table_html() | safe}
]]></field>
</record>
<record id="demo_followup1" model="account_followup.followup">
<record id="demo_followup1" model="account_followup.followup" forcecreate="False">
<field name="company_id" ref="base.main_company"/>
</record>
<record id="demo_followup_line1" model="account_followup.followup.line">
<record id="demo_followup_line1" model="account_followup.followup.line" forcecreate="False">
<field name="name">Send first reminder email</field>
<field name="sequence">0</field>
<field name="delay">15</field>
@ -175,7 +175,7 @@ Best Regards,
<field name="email_template_id" ref="email_template_account_followup_level0"/>
</record>
<record id="demo_followup_line2" model="account_followup.followup.line">
<record id="demo_followup_line2" model="account_followup.followup.line" forcecreate="False">
<field name="name">Send reminder letter and email</field>
<field name="sequence">1</field>
<field name="delay">30</field>
@ -199,7 +199,7 @@ Best Regards,
</field>
</record>
<record id="demo_followup_line3" model="account_followup.followup.line">
<record id="demo_followup_line3" model="account_followup.followup.line" forcecreate="False">
<field name="name">Call the customer on the phone</field>
<field name="sequence">3</field>
<field name="delay">40</field>

View File

@ -7,15 +7,15 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-12-11 13:13+0000\n"
"PO-Revision-Date: 2012-12-18 17:41+0000\n"
"Last-Translator: Fábio Martinelli - http://zupy.com.br "
"<webmaster@guaru.net>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n"
"X-Generator: Launchpad (build 16361)\n"
"X-Launchpad-Export-Date: 2012-12-19 05:15+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: account_followup
#: view:account_followup.followup.line:0
@ -1008,6 +1008,80 @@ msgid ""
"</div>\n"
" "
msgstr ""
"\n"
"<div style=\"font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-"
"serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, "
"255, 255); \">\n"
" \n"
" <p>Prezado ${object.name},</p>\n"
" <p>\n"
" Nosso controle de pagamentos acusa, em sua conta, prestação vencida, "
"motivo pelo qual pedimos a V. Sa. sua imediata regularização.\n"
"Tendo em vista que a emissão deste aviso é automática, caso V. Sa. já tenha "
"efetuado o pagamento, solicitamos desconsiderá-lo.\n"
" Caso tenha alguma dúvida não deixe de entrar em contato com nosso "
"departamento financeiro.\n"
" </p>\n"
"<br/>\n"
"Atenciosamente,\n"
"</br>\n"
"</br>\n"
"<br/>\n"
"${user.name}\n"
" \n"
"<br/>\n"
"<br/>\n"
"\n"
" \n"
"\n"
"<%\n"
" from openerp.addons.account_followup.report import "
"account_followup_print\n"
" rml_parse = account_followup_print.report_rappel(object._cr, user.id, "
"\"followup_rml_parser\")\n"
" final_res = rml_parse._lines_get_with_partner(object, "
"user.company_id.id)\n"
" followup_table = ''\n"
" for currency_dict in final_res:\n"
" currency_symbol = currency_dict.get('line', [{'currency_id': "
"user.company_id.currency_id}])[0]['currency_id'].symbol\n"
" followup_table += '''\n"
" <table border=\"2\" width=100%%>\n"
" <tr>\n"
" <td>Data da Fatura</td>\n"
" <td>Referencia</td>\n"
" <td>Data de Vencimento</td>\n"
" <td>Valor (%s)</td>\n"
" <td>Lit.</td>\n"
" </tr>\n"
" ''' % (currency_symbol)\n"
" total = 0\n"
" for aml in currency_dict['line']:\n"
" block = aml['blocked'] and 'X' or ' '\n"
" total += aml['balance']\n"
" strbegin = \"<TD> \"\n"
" strend = \"</TD> \"\n"
" date = aml['date_maturity'] or aml['date']\n"
" if date <= ctx['current_date'] and aml['balance'] > 0:\n"
" strbegin = \"<TD><B>\"\n"
" strend = \"</B></TD>\"\n"
" followup_table +=\"<TR>\" + strbegin + str(aml['date']) + strend "
"+ strbegin + aml['ref'] + strend + strbegin + str(date) + strend + strbegin "
"+ str(aml['balance']) + strend + strbegin + block + strend + \"</TR>\"\n"
" total = rml_parse.formatLang(total, dp='Account', "
"currency_obj=object.company_id.currency_id)\n"
" followup_table += '''<tr> </tr>\n"
" </table>\n"
" <center>Valor devido: %s </center>''' % (total)\n"
"\n"
"%>\n"
"\n"
"${followup_table}\n"
"\n"
" <br/>\n"
"\n"
"</div>\n"
" "
#. module: account_followup
#: help:res.partner,latest_followup_level_id_without_lit:0
@ -1106,6 +1180,85 @@ msgid ""
"</div>\n"
" "
msgstr ""
"\n"
"<div style=\"font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-"
"serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, "
"255, 255); \">\n"
" \n"
" <p>Prezado ${object.name},</p>\n"
" <p>\n"
" Apesar das mensagens enviadas referenes ao seu pagamento, sua conta está "
"ccom um atraso sério.\n"
"É essencial que o pagamento imediato das faturas em aberto seja feito, caso "
"contrário seremos obrigados\n"
"a colocar uma restrição em sua conta e enviar sua fatura para o departamento "
"jurídico\n"
"o que significa que não iremos mais fornecer sua empresa com produtos ou "
"serviços.\n"
"Por favor tome as medidas necessárias para a regularização do pagamento o "
"mais breve possível.\n"
"Se houver algum problema referente a este pagamento, não deixe de entrar em "
"contato com nosso departamento financeiro.\n"
"Os detalhes do pagamento em atraso estão abaixo.\n"
" </p>\n"
"<br/>\n"
"Atenciosamente,\n"
" \n"
"<br/>\n"
"${user.name}\n"
" \n"
"<br/>\n"
"<br/>\n"
"\n"
" \n"
"<%\n"
" from openerp.addons.account_followup.report import "
"account_followup_print\n"
" rml_parse = account_followup_print.report_rappel(object._cr, user.id, "
"\"followup_rml_parser\")\n"
" final_res = rml_parse._lines_get_with_partner(object, "
"user.company_id.id)\n"
" followup_table = ''\n"
" for currency_dict in final_res:\n"
" currency_symbol = currency_dict.get('line', [{'currency_id': "
"user.company_id.currency_id}])[0]['currency_id'].symbol\n"
" followup_table += '''\n"
" <table border=\"2\" width=100%%>\n"
" <tr>\n"
" <td>Data da Fatura</td>\n"
" <td>Referencia</td>\n"
" <td>Data de Vencimento</td>\n"
" <td>Valor (%s)</td>\n"
" <td>Lit.</td>\n"
" </tr>\n"
" ''' % (currency_symbol)\n"
" total = 0\n"
" for aml in currency_dict['line']:\n"
" block = aml['blocked'] and 'X' or ' '\n"
" total += aml['balance']\n"
" strbegin = \"<TD> \"\n"
" strend = \"</TD> \"\n"
" date = aml['date_maturity'] or aml['date']\n"
" if date <= ctx['current_date'] and aml['balance'] > 0:\n"
" strbegin = \"<TD><B>\"\n"
" strend = \"</B></TD>\"\n"
" followup_table +=\"<TR>\" + strbegin + str(aml['date']) + strend "
"+ strbegin + aml['ref'] + strend + strbegin + str(date) + strend + strbegin "
"+ str(aml['balance']) + strend + strbegin + block + strend + \"</TR>\"\n"
" total = rml_parse.formatLang(total, dp='Account', "
"currency_obj=object.company_id.currency_id)\n"
" followup_table += '''<tr> </tr>\n"
" </table>\n"
" <center>Valor devido: %s </center>''' % (total)\n"
"\n"
"%>\n"
"\n"
"${followup_table}\n"
"\n"
" <br/>\n"
"\n"
"</div>\n"
" "
#. module: account_followup
#: field:account.move.line,result:0
@ -1474,6 +1627,80 @@ msgid ""
"</div>\n"
" "
msgstr ""
"\n"
"<div style=\"font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-"
"serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, "
"255, 255); \">\n"
" \n"
" <p>Prezado ${object.name},</p>\n"
" <p>\n"
" Apesar de inúmeras mensagens, sua conta continua em atraso.\n"
"O pagamento imediato das faturas em aberto devem ser feito, caso contrário a "
"cobrança será encaminhada ao departamento jurídico\n"
"sem outro aviso prévio.\n"
"Acreditamos que isso não será necessário.\n"
"Em caso de dúvidas sobre esta cobrança, entre em contato com nosso "
"departamento financeiro.\n"
"</p>\n"
"<br/>\n"
"Atenciosamente,\n"
" \n"
"<br/>\n"
"${user.name}\n"
" \n"
"<br/>\n"
"<br/>\n"
"\n"
" \n"
"\n"
"<%\n"
" from openerp.addons.account_followup.report import "
"account_followup_print\n"
" rml_parse = account_followup_print.report_rappel(object._cr, user.id, "
"\"followup_rml_parser\")\n"
" final_res = rml_parse._lines_get_with_partner(object, "
"user.company_id.id)\n"
" followup_table = ''\n"
" for currency_dict in final_res:\n"
" currency_symbol = currency_dict.get('line', [{'currency_id': "
"user.company_id.currency_id}])[0]['currency_id'].symbol\n"
" followup_table += '''\n"
" <table border=\"2\" width=100%%>\n"
" <tr>\n"
" <td>Data da Fatura</td>\n"
" <td>Referencia</td>\n"
" <td>Data de Vencimento</td>\n"
" <td>Valor (%s)</td>\n"
" <td>Lit.</td>\n"
" </tr>\n"
" ''' % (currency_symbol)\n"
" total = 0\n"
" for aml in currency_dict['line']:\n"
" block = aml['blocked'] and 'X' or ' '\n"
" total += aml['balance']\n"
" strbegin = \"<TD> \"\n"
" strend = \"</TD> \"\n"
" date = aml['date_maturity'] or aml['date']\n"
" if date <= ctx['current_date'] and aml['balance'] > 0:\n"
" strbegin = \"<TD><B>\"\n"
" strend = \"</B></TD>\"\n"
" followup_table +=\"<TR>\" + strbegin + str(aml['date']) + strend "
"+ strbegin + aml['ref'] + strend + strbegin + str(date) + strend + strbegin "
"+ str(aml['balance']) + strend + strbegin + block + strend + \"</TR>\"\n"
" total = rml_parse.formatLang(total, dp='Account', "
"currency_obj=object.company_id.currency_id)\n"
" followup_table += '''<tr> </tr>\n"
" </table>\n"
" <center>Valor devido: %s </center>''' % (total)\n"
"\n"
"%>\n"
"\n"
"${followup_table}\n"
"\n"
" <br/>\n"
"\n"
"</div>\n"
" "
#. module: account_followup
#: help:res.partner,payment_next_action:0

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<data noupdate="1">
<record id="account_followup_comp_rule" model="ir.rule">
<field name="name">Account Follow-up multi company rule</field>

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: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-12-17 14:02+0000\n"
"PO-Revision-Date: 2012-12-18 18:55+0000\n"
"Last-Translator: Davide Corio - agilebg.com <davide.corio@agilebg.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: 2012-12-18 05:01+0000\n"
"X-Generator: Launchpad (build 16372)\n"
"X-Launchpad-Export-Date: 2012-12-19 05:17+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: account_payment
#: model:ir.actions.act_window,help:account_payment.action_payment_order_tree
@ -122,7 +122,7 @@ msgstr "_Aggiungi all'ordine di pagamento"
#: model:ir.actions.act_window,name:account_payment.action_account_payment_populate_statement
#: model:ir.actions.act_window,name:account_payment.action_account_populate_statement_confirm
msgid "Payment Populate statement"
msgstr ""
msgstr "Popolamento estratto pagamento"
#. module: account_payment
#: code:addons/account_payment/account_invoice.py:43
@ -131,6 +131,8 @@ msgid ""
"You cannot cancel an invoice which has already been imported in a payment "
"order. Remove it from the following payment order : %s."
msgstr ""
"Impossibile annullare una fattura che è già stata importata in un ordine di "
"pagamento. Rimuoverla dal seguente ordine di pagamento: %s."
#. module: account_payment
#: code:addons/account_payment/account_invoice.py:43
@ -202,6 +204,9 @@ msgid ""
" Once the bank is confirmed the status is set to 'Confirmed'.\n"
" Then the order is paid the status is 'Done'."
msgstr ""
"Quando un ordine viene creato lo stato è impostato su 'Bozza'.\n"
"Quando la banca è confermata lo stato passa a 'Confermato'.\n"
"Quando l'ordine viene pagato lo stato passa a 'Completato'."
#. module: account_payment
#: view:payment.order:0
@ -262,6 +267,9 @@ msgid ""
"by you.'Directly' stands for the direct execution.'Due date' stands for the "
"scheduled date of execution."
msgstr ""
"Scegliere un'opzione per l'ordine di pagamento: 'Fisso' significa per una "
"data prestabilita. 'Diretto' significa esucizione diretta. 'Data scadenza' "
"significa alla data pianificata per l'esecuzione."
#. module: account_payment
#: field:payment.order,date_created:0
@ -271,7 +279,7 @@ msgstr "Data creazione"
#. module: account_payment
#: help:payment.mode,journal:0
msgid "Bank or Cash Journal for the Payment Mode"
msgstr ""
msgstr "Sezionale di cassa o banca per il metodo di pagamento"
#. module: account_payment
#: selection:payment.order,date_prefered:0
@ -368,13 +376,13 @@ msgstr ""
#. module: account_payment
#: model:ir.model,name:account_payment.model_account_payment_populate_statement
msgid "Account Payment Populate Statement"
msgstr ""
msgstr "Popolamento estratto contabile pagamento"
#. module: account_payment
#: code:addons/account_payment/account_move_line.py:110
#, python-format
msgid "There is no partner defined on the entry line."
msgstr ""
msgstr "Il partner non è definito sulla registrazione."
#. module: account_payment
#: help:payment.mode,name:0
@ -384,7 +392,7 @@ msgstr "Modalità di pagamento"
#. module: account_payment
#: report:payment.order:0
msgid "Value Date"
msgstr ""
msgstr "Data Importo"
#. module: account_payment
#: report:payment.order:0
@ -406,12 +414,12 @@ msgstr "Bozza"
#: view:payment.order:0
#: field:payment.order,state:0
msgid "Status"
msgstr ""
msgstr "Stato"
#. module: account_payment
#: help:payment.line,communication2:0
msgid "The successor message of Communication."
msgstr ""
msgstr "Il successore di Comunicazioni"
#. module: account_payment
#: help:payment.line,info_partner:0
@ -421,7 +429,7 @@ msgstr "Indirizzo del cliente ordinante"
#. module: account_payment
#: view:account.payment.populate.statement:0
msgid "Populate Statement:"
msgstr ""
msgstr "Popolamento estratto:"
#. module: account_payment
#: help:payment.order,date_scheduled:0
@ -445,6 +453,7 @@ msgid ""
"This Entry Line will be referred for the information of the ordering "
"customer."
msgstr ""
"La registrazione farà riferimento alle informazioni del cliente ordinante."
#. module: account_payment
#: view:payment.order.create:0
@ -479,7 +488,7 @@ msgstr "Aggiungi"
#. module: account_payment
#: model:ir.actions.act_window,name:account_payment.action_create_payment_order
msgid "Populate Payment"
msgstr ""
msgstr "Popolamento pagamento"
#. module: account_payment
#: field:account.move.line,amount_to_pay:0
@ -499,7 +508,7 @@ msgstr "Il cliente ordinante"
#. module: account_payment
#: model:ir.model,name:account_payment.model_account_payment_make_payment
msgid "Account make payment"
msgstr ""
msgstr "Emissione pagamento"
#. module: account_payment
#: report:payment.order:0
@ -592,7 +601,7 @@ msgstr "Data pianificata"
#. module: account_payment
#: view:account.payment.make.payment:0
msgid "Are you sure you want to make payment?"
msgstr ""
msgstr "Sicuri di voler emettere il pagamento?"
#. module: account_payment
#: view:payment.mode:0
@ -656,7 +665,7 @@ msgstr "Conto bancario"
#: view:payment.line:0
#: view:payment.order:0
msgid "Entry Information"
msgstr ""
msgstr "Informazioni registrazione"
#. module: account_payment
#: model:ir.model,name:account_payment.model_payment_order_create
@ -682,19 +691,19 @@ msgstr "Emetti pagamento"
#. module: account_payment
#: field:payment.order,date_prefered:0
msgid "Preferred Date"
msgstr ""
msgstr "Data preferita"
#. module: account_payment
#: view:account.payment.make.payment:0
#: view:account.payment.populate.statement:0
#: view:payment.order.create:0
msgid "or"
msgstr ""
msgstr "o"
#. module: account_payment
#: help:payment.mode,bank_id:0
msgid "Bank Account for the Payment Mode"
msgstr ""
msgstr "Conto bancario per il metodo di pagamento"
#~ msgid "Preferred date"
#~ msgstr "Data preferita"

View File

@ -256,10 +256,10 @@
<para style="terp_default_Centre_9">[[line.date=='False' and '-' or formatLang(line.date,date=True) ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[formatLang(line.amount, currency_obj= user.company_id.currency_id) or '-' ]] </para>
<para style="terp_default_Right_9">[[ formatLang(line.amount or '-', currency_obj=line.company_currency) ]] </para>
</td>
<td>
<para style="terp_default_Right_9">[[ formatLang(line.amount_currency, currency_obj= line.currency)]]</para>
<para style="terp_default_Right_9">[[ formatLang(line.amount_currency, currency_obj=line.currency) ]] </para>
</td>
</tr>
</blockTable>
@ -275,10 +275,10 @@
<para style="terp_default_Bold_9">Total:</para>
</td>
<td>
<para style="terp_default_Right_9">[[ formatLang(get_amount_total(o), currency_obj= user.company_id.currency_id) or '' ]] </para>
<para style="terp_default_Right_9">[[ formatLang(get_amount_total(o), currency_obj=o.company_id.currency_id) or '' ]] </para>
</td>
<td>
<para style="terp_default_Right_9">[[ formatLang(get_amount_total_in_currency(o), currency_obj= user.company_id.currency_id) or '' ]] </para>
<para style="terp_default_Right_9">[[ formatLang(get_amount_total_in_currency(o), currency_obj=(o.line_ids and o.line_ids[0].currency or None)) or '' ]] </para>
</td>
</tr>
</blockTable>

View File

@ -31,7 +31,6 @@ class payment_order(report_sxw.rml_parse):
self.localcontext.update( {
'time': time,
'get_invoice_name': self._get_invoice_name,
'get_company_currency': self._get_company_currency,
'get_amount_total_in_currency': self._get_amount_total_in_currency,
'get_amount_total': self._get_amount_total,
'get_account_name': self._get_account_name,
@ -66,12 +65,6 @@ class payment_order(report_sxw.rml_parse):
total += line.amount
return total
def _get_company_currency(self):
pool = pooler.get_pool(self.cr.dbname)
user = pool.get('res.users').browse(self.cr, self.uid, self.uid)
return user.company_id and user.company_id.currency_id and user.company_id.currency_id.symbol or False
def _get_account_name(self,bank_id):
if bank_id:
pool = pooler.get_pool(self.cr.dbname)

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<data noupdate="0">
<record id="group_account_payment" model="res.groups">
<field name="name">Accounting / Payments</field>
@ -10,6 +10,9 @@
<field name="implied_ids" eval="[(4, ref('group_account_payment'))]"/>
</record>
</data>
<data noupdate="1">
<record id="payment_mode_comp_rule" model="ir.rule">
<field name="name">Payment Mode company rule</field>
<field model="ir.model" name="model_id" ref="model_payment_mode"/>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<data noupdate="1">
<record id="voucher_comp_rule" model="ir.rule">
<field name="name">Voucher multi-company</field>
<field model="ir.model" name="model_id" ref="model_account_voucher"/>

View File

@ -74,7 +74,8 @@ class account_statement_from_invoice_lines(osv.osv_memory):
amount = currency_obj.compute(cr, uid, line.invoice.currency_id.id,
statement.currency.id, amount, context=ctx)
context.update({'move_line_ids': [line.id]})
context.update({'move_line_ids': [line.id],
'invoice_id': line.invoice.id})
type = 'general'
ttype = amount < 0 and 'payment' or 'receipt'
sign = 1
@ -90,11 +91,13 @@ class account_statement_from_invoice_lines(osv.osv_memory):
'name': line.name,
'partner_id': line.partner_id.id,
'journal_id': statement.journal_id.id,
'account_id': result.get('account_id', statement.journal_id.default_credit_account_id.id),
'account_id': result['value'].get('account_id', statement.journal_id.default_credit_account_id.id),
'company_id': statement.company_id.id,
'currency_id': statement.currency.id,
'date': line.date,
'amount': sign*amount,
'payment_rate': result['value']['payment_rate'],
'payment_rate_currency_id': result['value']['payment_rate_currency_id'],
'period_id':statement.period_id.id}
voucher_id = voucher_obj.create(cr, uid, voucher_res, context=context)

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp><data>
<openerp>
<data noupdate="1">
<record id="analytic_comp_rule" model="ir.rule">
<field name="name">Analytic multi company rule</field>
@ -14,9 +15,14 @@
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
</data>
<data noupdate="0">
<record id="group_analytic_accounting" model="res.groups">
<field name="name">Analytic Accounting</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
</data></openerp>
</data>
</openerp>

View File

@ -109,20 +109,19 @@ class account_analytic_account(osv.osv):
return res
def open_hr_expense(self, cr, uid, ids, context=None):
mod_obj = self.pool.get('ir.model.data')
act_obj = self.pool.get('ir.actions.act_window')
dummy, act_window_id = mod_obj.get_object_reference(cr, uid, 'hr_expense', 'expense_all')
result = act_obj.read(cr, uid, act_window_id, context=context)
line_ids = self.pool.get('hr.expense.line').search(cr,uid,[('analytic_account', 'in', ids)])
domain = [('line_ids', 'in', line_ids)]
names = [record.name for record in self.browse(cr, uid, ids, context=context)]
name = _('Expenses of %s') % ','.join(names)
return {
'type': 'ir.actions.act_window',
'name': name,
'view_type': 'form',
'view_mode': 'tree,form',
'context':{'analytic_account':ids[0]},
'domain' : domain,
'res_model': 'hr.expense.expense',
'nodestroy': True,
}
result['domain'] = [('line_ids', 'in', line_ids)]
names = [account.name for account in self.browse(cr, uid, ids, context=context)]
result['name'] = _('Expenses of %s') % ','.join(names)
result['context'] = {'analytic_account': ids[0]}
result['view_type'] = 'form'
return result
def hr_to_invoice_expense(self, cr, uid, ids, context=None):
domain = [('invoice_id','=',False),('to_invoice','!=',False), ('journal_id.type', '=', 'purchase'), ('account_id', 'in', ids)]

View File

@ -8,15 +8,15 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-12-17 21:47+0000\n"
"PO-Revision-Date: 2012-12-18 15:31+0000\n"
"Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-"
"consulting.net>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-18 05:02+0000\n"
"X-Generator: Launchpad (build 16372)\n"
"X-Launchpad-Export-Date: 2012-12-19 05:17+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
@ -42,13 +42,13 @@ msgstr "Kostenstelle"
#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:134
#, python-format
msgid "Expenses to Invoice of %s"
msgstr ""
msgstr "Spesen Abrechnung zu %s"
#. module: analytic_contract_hr_expense
#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:119
#, python-format
msgid "Expenses of %s"
msgstr ""
msgstr "Spesen zu %s"
#. module: analytic_contract_hr_expense
#: field:account.analytic.account,expense_invoiced:0

View File

@ -0,0 +1,72 @@
# French translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-12-18 23:00+0000\n"
"Last-Translator: Nicolas JEUDY <njeudy@tuxservices.com>\n"
"Language-Team: French <fr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-19 05:17+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "or view"
msgstr ""
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "Nothing to invoice, create"
msgstr "Rien à facturer, créer"
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "expenses"
msgstr "Dépenses"
#. module: analytic_contract_hr_expense
#: model:ir.model,name:analytic_contract_hr_expense.model_account_analytic_account
msgid "Analytic Account"
msgstr "Compte Analytique"
#. module: analytic_contract_hr_expense
#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:134
#, python-format
msgid "Expenses to Invoice of %s"
msgstr ""
#. module: analytic_contract_hr_expense
#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:119
#, python-format
msgid "Expenses of %s"
msgstr ""
#. module: analytic_contract_hr_expense
#: field:account.analytic.account,expense_invoiced:0
#: field:account.analytic.account,expense_to_invoice:0
#: field:account.analytic.account,remaining_expense:0
msgid "unknown"
msgstr "inconnu"
#. module: analytic_contract_hr_expense
#: field:account.analytic.account,est_expenses:0
msgid "Estimation of Expenses to Invoice"
msgstr "Estimation des Dépenses à facturer"
#. module: analytic_contract_hr_expense
#: field:account.analytic.account,charge_expenses:0
msgid "Charge Expenses"
msgstr ""
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "⇒ Invoice"
msgstr "Facture"

View File

@ -96,10 +96,10 @@ class hr_analytic_timesheet(osv.osv):
res.setdefault('value',{})
res['value']= super(hr_analytic_timesheet, self).on_change_account_id(cr, uid, ids, account_id)['value']
res['value']['product_id'] = r.product_id.id
res['value']['product_uom_id'] = r.product_id.product_tmpl_id.uom_id.id
res['value']['product_uom_id'] = r.product_id.uom_id.id
#the change of product has to impact the amount, uom and general_account_id
a = r.product_id.product_tmpl_id.property_account_expense.id
a = r.product_id.property_account_expense.id
if not a:
a = r.product_id.categ_id.property_account_expense_categ.id
if not a:
@ -128,7 +128,7 @@ class hr_analytic_timesheet(osv.osv):
res['value']['product_id'] = r.product_id.id
#the change of product has to impact the amount, uom and general_account_id
a = r.product_id.product_tmpl_id.property_account_expense.id
a = r.product_id.property_account_expense.id
if not a:
a = r.product_id.categ_id.property_account_expense_categ.id
if not a:

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: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-01-13 19:14+0000\n"
"PO-Revision-Date: 2012-12-18 06:59+0000\n"
"Last-Translator: Ferdinand @ Camptocamp <Unknown>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:31+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-19 05:17+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: anonymization
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymize_wizard
@ -25,17 +25,17 @@ msgstr "ir.model.fields.anonymize.wizard"
#. module: anonymization
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_migration_fix
msgid "ir.model.fields.anonymization.migration.fix"
msgstr ""
msgstr "ir.model.fields.anonymization.migration.fix"
#. module: anonymization
#: field:ir.model.fields.anonymization.migration.fix,target_version:0
msgid "Target Version"
msgstr ""
msgstr "Ziel Version"
#. module: anonymization
#: selection:ir.model.fields.anonymization.migration.fix,query_type:0
msgid "sql"
msgstr ""
msgstr "SQL"
#. module: anonymization
#: field:ir.model.fields.anonymization,field_name:0
@ -62,7 +62,7 @@ msgstr "ir.model.fields.anonymization"
#: field:ir.model.fields.anonymization.history,state:0
#: field:ir.model.fields.anonymize.wizard,state:0
msgid "Status"
msgstr ""
msgstr "Status"
#. module: anonymization
#: field:ir.model.fields.anonymization.history,direction:0
@ -135,7 +135,7 @@ msgstr "Anonymisiere Datenbank"
#. module: anonymization
#: selection:ir.model.fields.anonymization.migration.fix,query_type:0
msgid "python"
msgstr ""
msgstr "python"
#. module: anonymization
#: view:ir.model.fields.anonymization.history:0
@ -189,7 +189,7 @@ msgstr "Anonymisierungs Verlauf"
#. module: anonymization
#: field:ir.model.fields.anonymization.migration.fix,model_name:0
msgid "Model"
msgstr ""
msgstr "Modell"
#. module: anonymization
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_history
@ -202,6 +202,8 @@ msgid ""
"This is the file created by the anonymization process. It should have the "
"'.pickle' extention."
msgstr ""
"Diese Datei wurde durch den Anonymisierungsprozess erzeugt und sollte die "
"Endung '.pickle' haben"
#. module: anonymization
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymize_wizard
@ -217,7 +219,7 @@ msgstr "Dateiname"
#. module: anonymization
#: field:ir.model.fields.anonymization.migration.fix,sequence:0
msgid "Sequence"
msgstr ""
msgstr "Sequenz"
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,direction:0
@ -238,7 +240,7 @@ msgstr "Erledigt"
#: field:ir.model.fields.anonymization.migration.fix,query:0
#: field:ir.model.fields.anonymization.migration.fix,query_type:0
msgid "Query"
msgstr ""
msgstr "Abfrage"
#. module: anonymization
#: view:ir.model.fields.anonymization.history:0

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: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-01-13 19:14+0000\n"
"PO-Revision-Date: 2012-12-18 06:55+0000\n"
"Last-Translator: Ferdinand @ Camptocamp <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:14+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-19 05:17+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: audittrail
#: view:audittrail.log:0
@ -44,7 +44,7 @@ msgstr "Abonniert"
#: code:addons/audittrail/audittrail.py:408
#, python-format
msgid "'%s' Model does not exist..."
msgstr ""
msgstr "'%s' Modell exisitiert nicht"
#. module: audittrail
#: view:audittrail.rule:0
@ -61,7 +61,7 @@ msgstr "Regel Belegrückverfolgung"
#: view:audittrail.rule:0
#: field:audittrail.rule,state:0
msgid "Status"
msgstr ""
msgstr "Status"
#. module: audittrail
#: view:audittrail.view.log:0
@ -221,7 +221,7 @@ msgstr "Wähle Objekt für Rückverfolgung"
#. module: audittrail
#: model:ir.ui.menu,name:audittrail.menu_audit
msgid "Audit"
msgstr ""
msgstr "Audit"
#. module: audittrail
#: field:audittrail.rule,log_workflow:0
@ -298,7 +298,7 @@ msgstr "Protokoll Löschvorgänge"
#: view:audittrail.log:0
#: view:audittrail.rule:0
msgid "Model"
msgstr ""
msgstr "Modell"
#. module: audittrail
#: field:audittrail.log.line,field_description:0
@ -339,7 +339,7 @@ msgstr "Neuer Wert"
#: code:addons/audittrail/audittrail.py:223
#, python-format
msgid "'%s' field does not exist in '%s' model"
msgstr ""
msgstr "Feld '%s' exisitiert nicht in Model '%s'"
#. module: audittrail
#: view:audittrail.log:0
@ -392,7 +392,7 @@ msgstr "Protokoll Zeile"
#. module: audittrail
#: view:audittrail.view.log:0
msgid "or"
msgstr ""
msgstr "oder"
#. module: audittrail
#: field:audittrail.rule,log_action:0

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: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2011-01-13 06:08+0000\n"
"Last-Translator: Aline (OpenERP) <Unknown>\n"
"PO-Revision-Date: 2012-12-18 23:05+0000\n"
"Last-Translator: Quentin THEURET <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:14+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-19 05:17+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: audittrail
#: view:audittrail.log:0
@ -44,7 +44,7 @@ msgstr "S'abonner"
#: code:addons/audittrail/audittrail.py:408
#, python-format
msgid "'%s' Model does not exist..."
msgstr ""
msgstr "Le modèle '%s' n'existe pas…"
#. module: audittrail
#: view:audittrail.rule:0
@ -61,7 +61,7 @@ msgstr "Règle d'audit"
#: view:audittrail.rule:0
#: field:audittrail.rule,state:0
msgid "Status"
msgstr ""
msgstr "État"
#. module: audittrail
#: view:audittrail.view.log:0
@ -223,7 +223,7 @@ msgstr "Sélectionnez l'objet pour lequel vous voulez générer un historique."
#. module: audittrail
#: model:ir.ui.menu,name:audittrail.menu_audit
msgid "Audit"
msgstr ""
msgstr "Audit"
#. module: audittrail
#: field:audittrail.rule,log_workflow:0
@ -309,7 +309,7 @@ msgstr "Enregistrer les suppressions"
#: view:audittrail.log:0
#: view:audittrail.rule:0
msgid "Model"
msgstr ""
msgstr "Modèle"
#. module: audittrail
#: field:audittrail.log.line,field_description:0
@ -350,7 +350,7 @@ msgstr "Nouvelle valeur"
#: code:addons/audittrail/audittrail.py:223
#, python-format
msgid "'%s' field does not exist in '%s' model"
msgstr ""
msgstr "Le champ '%s' n'existe pas dans le modèle '%s'"
#. module: audittrail
#: view:audittrail.log:0
@ -404,7 +404,7 @@ msgstr "Ligne d'historique"
#. module: audittrail
#: view:audittrail.view.log:0
msgid "or"
msgstr ""
msgstr "ou"
#. module: audittrail
#: field:audittrail.rule,log_action:0

View File

@ -18,8 +18,7 @@
#
##############################################################################
from openerp.service import security
import crypt
import auth_crypt
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -19,35 +19,15 @@
#
##############################################################################
{
'name': 'DB Password Encryption',
'name': 'Password Encryption',
'version': '1.1',
'author': ['OpenERP SA', 'FS3'],
'maintainer': 'OpenERP SA',
'website': 'http://www.openerp.com',
'category': 'Tools',
'description': """
Replaces cleartext passwords in the database with a secure hash.
================================================================
For your existing user base, the removal of the cleartext passwords occurs
immediately when you install base_crypt.
All passwords will be replaced by a secure, salted, cryptographic hash,
preventing anyone from reading the original password in the database.
After installing this module, it won't be possible to recover a forgotten password
for your users, the only solution is for an admin to set a new password.
Security Warning:
-----------------
Installing this module does not mean you can ignore other security measures,
as the password is still transmitted unencrypted on the network, unless you
are using a secure protocol such as XML-RPCS or HTTPS.
It also does not protect the rest of the content of the database, which may
contain critical data. Appropriate security measures need to be implemented
by the system administrator in all areas, such as: protection of database
backups, system files, remote shell access, physical server access.
Ecrypted passwords
==================
Interaction with LDAP authentication:
-------------------------------------

View File

@ -0,0 +1,166 @@
#
# Implements encrypting functions.
#
# Copyright (c) 2008, F S 3 Consulting Inc.
#
# Maintainer:
# Alec Joseph Rivera (agi<at>fs3.ph)
# refactored by Antony Lesuisse <al<at>openerp.com>
#
import hashlib
import hmac
import logging
from random import sample
from string import ascii_letters, digits
import openerp
from openerp.osv import fields, osv
_logger = logging.getLogger(__name__)
magic_md5 = '$1$'
magic_sha256 = '$5$'
def gen_salt(length=8, symbols=None):
if symbols is None:
symbols = ascii_letters + digits
return ''.join(sample(symbols, length))
def md5crypt( raw_pw, salt, magic=magic_md5 ):
""" md5crypt FreeBSD crypt(3) based on but different from md5
The md5crypt is based on Mark Johnson's md5crypt.py, which in turn is
based on FreeBSD src/lib/libcrypt/crypt.c (1.2) by Poul-Henning Kamp.
Mark's port can be found in ActiveState ASPN Python Cookbook. Kudos to
Poul and Mark. -agi
Original license:
* "THE BEER-WARE LICENSE" (Revision 42):
*
* <phk@login.dknet.dk> wrote this file. As long as you retain this
* notice you can do whatever you want with this stuff. If we meet some
* day, and you think this stuff is worth it, you can buy me a beer in
* return.
*
* Poul-Henning Kamp
"""
raw_pw = raw_pw.encode('utf-8')
salt = salt.encode('utf-8')
hash = hashlib.md5()
hash.update( raw_pw + magic + salt )
st = hashlib.md5()
st.update( raw_pw + salt + raw_pw)
stretch = st.digest()
for i in range( 0, len( raw_pw ) ):
hash.update( stretch[i % 16] )
i = len( raw_pw )
while i:
if i & 1:
hash.update('\x00')
else:
hash.update( raw_pw[0] )
i >>= 1
saltedmd5 = hash.digest()
for i in range( 1000 ):
hash = hashlib.md5()
if i & 1:
hash.update( raw_pw )
else:
hash.update( saltedmd5 )
if i % 3:
hash.update( salt )
if i % 7:
hash.update( raw_pw )
if i & 1:
hash.update( saltedmd5 )
else:
hash.update( raw_pw )
saltedmd5 = hash.digest()
itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
rearranged = ''
for a, b, c in ((0, 6, 12), (1, 7, 13), (2, 8, 14), (3, 9, 15), (4, 10, 5)):
v = ord( saltedmd5[a] ) << 16 | ord( saltedmd5[b] ) << 8 | ord( saltedmd5[c] )
for i in range(4):
rearranged += itoa64[v & 0x3f]
v >>= 6
v = ord( saltedmd5[11] )
for i in range( 2 ):
rearranged += itoa64[v & 0x3f]
v >>= 6
return magic + salt + '$' + rearranged
def sh256crypt(cls, password, salt, magic=magic_sha256):
iterations = 1000
# see http://en.wikipedia.org/wiki/PBKDF2
result = password.encode('utf8')
for i in xrange(cls.iterations):
result = hmac.HMAC(result, salt, hashlib.sha256).digest() # uses HMAC (RFC 2104) to apply salt
result = result.encode('base64') # doesnt seem to be crypt(3) compatible
return '%s%s$%s' % (magic_sha256, salt, result)
class res_users(osv.osv):
_inherit = "res.users"
def set_pw(self, cr, uid, id, name, value, args, context):
if value:
encrypted = md5crypt(value, gen_salt())
cr.execute('update res_users set password_crypt=%s where id=%s', (encrypted, int(id)))
del value
def get_pw( self, cr, uid, ids, name, args, context ):
cr.execute('select id, password from res_users where id in %s', (tuple(map(int, ids)),))
stored_pws = cr.fetchall()
res = {}
for id, stored_pw in stored_pws:
res[id] = stored_pw
return res
_columns = {
'password': fields.function(get_pw, fnct_inv=set_pw, type='char', string='Password', invisible=True, store=True),
'password_crypt': fields.char(string='Encrypted Password', invisible=True),
}
def check_credentials(self, cr, uid, password):
# convert to base_crypt if needed
cr.execute('SELECT password, password_crypt FROM res_users WHERE id=%s AND active', (uid,))
if cr.rowcount:
stored_password, stored_password_crypt = cr.fetchone()
if password and not stored_password_crypt:
salt = gen_salt()
stored_password_crypt = md5crypt(stored_password, salt)
cr.execute("UPDATE res_users SET password='', password_crypt=%s WHERE id=%s", (stored_password_crypt, uid))
try:
return super(res_users, self).check_credentials(cr, uid, password)
except openerp.exceptions.AccessDenied:
# check md5crypt
if stored_password_crypt[:len(magic_md5)] == magic_md5:
salt = stored_password_crypt[len(magic_md5):11]
if stored_password_crypt == md5crypt(password, salt):
return
elif stored_password_crypt[:len(magic_md5)] == magic_sha256:
salt = stored_password_crypt[len(magic_md5):11]
if stored_password_crypt == md5crypt(password, salt):
return
# Reraise password incorrect
raise
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-01-14 14:56+0000\n"
"PO-Revision-Date: 2012-12-18 06:57+0000\n"
"Last-Translator: Ferdinand @ Camptocamp <Unknown>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-04 05:53+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-19 05:17+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: auth_ldap
#: field:res.company.ldap,user:0
msgid "Template User"
msgstr ""
msgstr "Benutzer Vorlage"
#. module: auth_ldap
#: help:res.company.ldap,ldap_tls:0
@ -65,6 +65,8 @@ msgid ""
"Automatically create local user accounts for new users authenticating via "
"LDAP"
msgstr ""
"Erstelle automatisch Benutzer Konten für neue Benutzer, die sich mit LDAP "
"anmelden"
#. module: auth_ldap
#: field:res.company.ldap,ldap_base:0
@ -99,7 +101,7 @@ msgstr "res.company.ldap"
#. module: auth_ldap
#: help:res.company.ldap,user:0
msgid "User to copy when creating new users"
msgstr ""
msgstr "Standard Benutzerkonto, das für neue Benutzer verwendet wird"
#. module: auth_ldap
#: field:res.company.ldap,ldap_tls:0
@ -151,7 +153,7 @@ msgstr ""
#. module: auth_ldap
#: model:ir.model,name:auth_ldap.model_res_users
msgid "Users"
msgstr ""
msgstr "Benutzer"
#. module: auth_ldap
#: field:res.company.ldap,ldap_filter:0

View File

@ -28,9 +28,14 @@ openerp.auth_oauth = function(instance) {
},
on_oauth_loaded: function(result) {
this.oauth_providers = result;
this.$('.oe_oauth_provider_login_button').remove();
var buttons = QWeb.render("auth_oauth.Login.button",{"widget":this});
this.$(".oe_login_pane form ul").after(buttons);
var params = $.deparam($.param.querystring());
if (this.oauth_providers.length === 1 && params.type === 'signup') {
this.do_oauth_sign_in(this.oauth_providers[0]);
} else {
this.$('.oe_oauth_provider_login_button').remove();
var buttons = QWeb.render("auth_oauth.Login.button",{"widget":this});
this.$(".oe_login_pane form ul").after(buttons);
}
},
on_oauth_sign_in: function(ev) {
ev.preventDefault();

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: 2012-12-03 16:02+0000\n"
"PO-Revision-Date: 2012-05-21 17:32+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2012-12-18 07:05+0000\n"
"Last-Translator: Fekete Mihai <mihai@erpsystems.ro>\n"
"Language-Team: Romanian <ro@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-04 05:54+0000\n"
"X-Generator: Launchpad (build 16335)\n"
"X-Launchpad-Export-Date: 2012-12-19 05:17+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: auth_openid
#. openerp-web
@ -94,7 +94,7 @@ msgstr "Google Apps"
#. module: auth_openid
#: model:ir.model,name:auth_openid.model_res_users
msgid "Users"
msgstr ""
msgstr "Utilizatori"
#~ msgid "res.users"
#~ msgstr "res.utilizatori"

View File

@ -64,7 +64,7 @@ class res_partner(osv.Model):
# the parameters to encode for the query and fragment part of url
query = {'db': cr.dbname}
fragment = {'action': action}
fragment = {'action': action, 'type': partner.signup_type}
if partner.signup_token:
fragment['token'] = partner.signup_token
@ -91,6 +91,7 @@ class res_partner(osv.Model):
_columns = {
'signup_token': fields.char('Signup Token'),
'signup_type': fields.char('Signup Token Type'),
'signup_expiration': fields.datetime('Signup Expiration'),
'signup_valid': fields.function(_get_signup_valid, type='boolean', string='Signup Token is Valid'),
'signup_url': fields.function(_get_signup_url, type='char', string='Signup URL'),
@ -99,7 +100,7 @@ class res_partner(osv.Model):
def action_signup_prepare(self, cr, uid, ids, context=None):
return self.signup_prepare(cr, uid, ids, context=context)
def signup_prepare(self, cr, uid, ids, expiration=False, context=None):
def signup_prepare(self, cr, uid, ids, signup_type="signup", expiration=False, context=None):
""" generate a new token for the partners with the given validity, if necessary
:param expiration: the expiration datetime of the token (string, optional)
"""
@ -108,7 +109,7 @@ class res_partner(osv.Model):
token = random_token()
while self._signup_retrieve_partner(cr, uid, token, context=context):
token = random_token()
partner.write({'signup_token': token, 'signup_expiration': expiration})
partner.write({'signup_token': token, 'signup_type': signup_type, 'signup_expiration': expiration})
return True
def _signup_retrieve_partner(self, cr, uid, token,
@ -182,7 +183,7 @@ class res_users(osv.Model):
partner = res_partner._signup_retrieve_partner(
cr, uid, token, check_validity=True, raise_exception=True, context=None)
# invalidate signup token
partner.write({'signup_token': False, 'signup_expiration': False})
partner.write({'signup_token': False, 'signup_type': False, 'signup_expiration': False})
partner_user = partner.user_ids and partner.user_ids[0] or False
if partner_user:
@ -240,7 +241,7 @@ class res_users(osv.Model):
# prepare reset password signup
res_partner = self.pool.get('res.partner')
partner_ids = [user.partner_id.id for user in self.browse(cr, uid, ids, context)]
res_partner.signup_prepare(cr, uid, partner_ids, expiration=now(days=+1), context=context)
res_partner.signup_prepare(cr, uid, partner_ids, signup_type="reset", expiration=now(days=+1), context=context)
# send email to users with their signup url
template = self.pool.get('ir.model.data').get_object(cr, uid, 'auth_signup', 'reset_password_email')
@ -248,7 +249,7 @@ class res_users(osv.Model):
for user in self.browse(cr, uid, ids, context):
if not user.email:
raise osv.except_osv(_("Cannot send email: user has no email address."), user.name)
self.pool.get('email.template').send_mail(cr, uid, template.id, user.id, context=context)
self.pool.get('email.template').send_mail(cr, uid, template.id, user.id, True, context=context)
return True

View File

@ -43,6 +43,9 @@ openerp.auth_signup = function(instance) {
.fail(self.on_token_failed)
});
}
if (self.params.db && self.params.login) {
this.$("form input[name=login]").val(self.params.login);
}
// bind reset password link
this.$('a.oe_signup_reset_password').click(this.do_reset_password);
@ -130,7 +133,7 @@ openerp.auth_signup = function(instance) {
login: login,
password: password,
};
var self = this,
super_ = this._super;
this.rpc('/auth_signup/signup', params)

View File

@ -1,304 +0,0 @@
# Notice:
# ------
#
# Implements encrypting functions.
#
# Copyright (c) 2008, F S 3 Consulting Inc.
#
# Maintainer:
# Alec Joseph Rivera (agi<at>fs3.ph)
#
#
# Warning:
# -------
#
# This program as such is intended to be used by professional programmers
# who take the whole responsibility of assessing all potential consequences
# resulting from its eventual inadequacies and bugs. End users who are
# looking for a ready-to-use solution with commercial guarantees and
# support are strongly adviced to contract a Free Software Service Company.
#
# This program is Free Software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the:
#
# Free Software Foundation, Inc.
# 59 Temple Place - Suite 330
# Boston, MA 02111-1307
# USA.
from random import seed, sample
from string import ascii_letters, digits
from openerp.osv import fields,osv
from openerp import pooler
from openerp.tools.translate import _
from openerp.service import security
import logging
magic_md5 = '$1$'
_logger = logging.getLogger(__name__)
def gen_salt( length=8, symbols=None):
if symbols is None:
symbols = ascii_letters + digits
seed()
return ''.join( sample( symbols, length ) )
# The encrypt_md5 is based on Mark Johnson's md5crypt.py, which in turn is
# based on FreeBSD src/lib/libcrypt/crypt.c (1.2) by Poul-Henning Kamp.
# Mark's port can be found in ActiveState ASPN Python Cookbook. Kudos to
# Poul and Mark. -agi
#
# Original license:
#
# * "THE BEER-WARE LICENSE" (Revision 42):
# *
# * <phk@login.dknet.dk> wrote this file. As long as you retain this
# * notice you can do whatever you want with this stuff. If we meet some
# * day, and you think this stuff is worth it, you can buy me a beer in
# * return.
# *
# * Poul-Henning Kamp
#TODO: py>=2.6: from hashlib import md5
import hashlib
def encrypt_md5( raw_pw, salt, magic=magic_md5 ):
raw_pw = raw_pw.encode('utf-8')
salt = salt.encode('utf-8')
hash = hashlib.md5()
hash.update( raw_pw + magic + salt )
st = hashlib.md5()
st.update( raw_pw + salt + raw_pw)
stretch = st.digest()
for i in range( 0, len( raw_pw ) ):
hash.update( stretch[i % 16] )
i = len( raw_pw )
while i:
if i & 1:
hash.update('\x00')
else:
hash.update( raw_pw[0] )
i >>= 1
saltedmd5 = hash.digest()
for i in range( 1000 ):
hash = hashlib.md5()
if i & 1:
hash.update( raw_pw )
else:
hash.update( saltedmd5 )
if i % 3:
hash.update( salt )
if i % 7:
hash.update( raw_pw )
if i & 1:
hash.update( saltedmd5 )
else:
hash.update( raw_pw )
saltedmd5 = hash.digest()
itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
rearranged = ''
for a, b, c in ((0, 6, 12), (1, 7, 13), (2, 8, 14), (3, 9, 15), (4, 10, 5)):
v = ord( saltedmd5[a] ) << 16 | ord( saltedmd5[b] ) << 8 | ord( saltedmd5[c] )
for i in range(4):
rearranged += itoa64[v & 0x3f]
v >>= 6
v = ord( saltedmd5[11] )
for i in range( 2 ):
rearranged += itoa64[v & 0x3f]
v >>= 6
return magic + salt + '$' + rearranged
class users(osv.osv):
_name="res.users"
_inherit="res.users"
# agi - 022108
# Add handlers for 'input_pw' field.
def set_pw(self, cr, uid, id, name, value, args, context):
if value:
obj = pooler.get_pool(cr.dbname).get('res.users')
if not hasattr(obj, "_salt_cache"):
obj._salt_cache = {}
salt = obj._salt_cache[id] = gen_salt()
encrypted = encrypt_md5(value, salt)
else:
#setting a password to '' is allowed. It can be used to inactivate the classic log-in of the user
#while the access can still be granted by another login method (openid...)
encrypted = ''
cr.execute('update res_users set password=%s where id=%s',
(encrypted.encode('utf-8'), int(id)))
del value
def get_pw( self, cr, uid, ids, name, args, context ):
cr.execute('select id, password from res_users where id in %s', (tuple(map(int, ids)),))
stored_pws = cr.fetchall()
res = {}
for id, stored_pw in stored_pws:
res[id] = stored_pw
return res
_columns = {
# The column size could be smaller as it is meant to store a hash, but
# an existing column cannot be downsized; thus we use the original
# column size.
'password': fields.function(get_pw, fnct_inv=set_pw, type='char',
size=64, string='Password', invisible=True,
store=True),
}
def login(self, db, login, password):
if not password:
return False
if db is False:
raise RuntimeError("Cannot authenticate to False db!")
cr = None
try:
cr = pooler.get_db(db).cursor()
return self._login(cr, db, login, password)
except Exception:
_logger.exception('Cannot authenticate.')
return Exception('Access denied.')
finally:
if cr is not None:
cr.close()
def _login(self, cr, db, login, password):
cr.execute( 'SELECT password, id FROM res_users WHERE login=%s AND active',
(login.encode('utf-8'),))
if cr.rowcount:
stored_pw, id = cr.fetchone()
else:
# Return early if no one has a login name like that.
return False
stored_pw = self.maybe_encrypt(cr, stored_pw, id)
if not stored_pw:
# means couldn't encrypt or user is not active!
return False
# Calculate an encrypted password from the user-provided
# password.
obj = pooler.get_pool(db).get('res.users')
if not hasattr(obj, "_salt_cache"):
obj._salt_cache = {}
salt = obj._salt_cache[id] = stored_pw[len(magic_md5):11]
encrypted_pw = encrypt_md5(password, salt)
# Check if the encrypted password matches against the one in the db.
cr.execute("""UPDATE res_users
SET login_date=now() AT TIME ZONE 'UTC'
WHERE id=%s AND password=%s AND active
RETURNING id""",
(int(id), encrypted_pw.encode('utf-8')))
res = cr.fetchone()
cr.commit()
if res:
return res[0]
else:
return False
def check(self, db, uid, passwd):
if not passwd:
# empty passwords disallowed for obvious security reasons
raise security.ExceptionNoTb('AccessDenied')
# Get a chance to hash all passwords in db before using the uid_cache.
obj = pooler.get_pool(db).get('res.users')
if not hasattr(obj, "_salt_cache"):
obj._salt_cache = {}
self._uid_cache.get(db, {}).clear()
cached_pass = self._uid_cache.get(db, {}).get(uid)
if (cached_pass is not None) and cached_pass == passwd:
return True
cr = pooler.get_db(db).cursor()
try:
if uid not in self._salt_cache.get(db, {}):
# If we don't have cache, we have to repeat the procedure
# through the login function.
cr.execute( 'SELECT login FROM res_users WHERE id=%s', (uid,) )
stored_login = cr.fetchone()
if stored_login:
stored_login = stored_login[0]
res = self._login(cr, db, stored_login, passwd)
if not res:
raise security.ExceptionNoTb('AccessDenied')
else:
salt = self._salt_cache[db][uid]
cr.execute('SELECT COUNT(*) FROM res_users WHERE id=%s AND password=%s AND active',
(int(uid), encrypt_md5(passwd, salt)))
res = cr.fetchone()[0]
finally:
cr.close()
if not bool(res):
raise security.ExceptionNoTb('AccessDenied')
if res:
if self._uid_cache.has_key(db):
ulist = self._uid_cache[db]
ulist[uid] = passwd
else:
self._uid_cache[db] = {uid: passwd}
return bool(res)
def maybe_encrypt(self, cr, pw, id):
""" Return the password 'pw', making sure it is encrypted.
If the password 'pw' is not encrypted, then encrypt all active passwords
in the db. Returns the (possibly newly) encrypted password for 'id'.
"""
if not pw.startswith(magic_md5):
cr.execute("SELECT id, password FROM res_users " \
"WHERE active=true AND password NOT LIKE '$%'")
# Note that we skip all passwords like $.., in anticipation for
# more than md5 magic prefixes.
res = cr.fetchall()
for i, p in res:
encrypted = encrypt_md5(p, gen_salt())
cr.execute('UPDATE res_users SET password=%s where id=%s',
(encrypted, i))
if i == id:
encrypted_res = encrypted
cr.commit()
return encrypted_res
return pw
users()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

File diff suppressed because it is too large Load Diff

View File

@ -8,28 +8,28 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-12-07 10:31+0000\n"
"Last-Translator: Numérigraphe <Unknown>\n"
"PO-Revision-Date: 2012-12-18 23:27+0000\n"
"Last-Translator: Nicolas JEUDY <njeudy@tuxservices.com>\n"
"Language-Team: French <fr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-08 04:59+0000\n"
"X-Generator: Launchpad (build 16341)\n"
"X-Launchpad-Export-Date: 2012-12-19 05:17+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/js/import.js:420
#, python-format
msgid "Get all possible values"
msgstr ""
msgstr "Récupérer toutes les valeurs possible"
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/xml/import.xml:71
#, python-format
msgid "Need to import data from an other application?"
msgstr ""
msgstr "Besoin d.importer des données d'une autre application ?"
#. module: base_import
#. openerp-web
@ -159,7 +159,7 @@ msgstr ""
#: code:addons/base_import/static/src/xml/import.xml:351
#, python-format
msgid "Don't Import"
msgstr ""
msgstr "Ne pas importer"
#. module: base_import
#. openerp-web
@ -206,7 +206,7 @@ msgstr ""
#: code:addons/base_import/static/src/xml/import.xml:15
#, python-format
msgid "Validate"
msgstr ""
msgstr "Valider"
#. module: base_import
#. openerp-web

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: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-05-10 18:26+0000\n"
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
"PO-Revision-Date: 2012-12-18 07:09+0000\n"
"Last-Translator: Ferdinand @ Camptocamp <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:08+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-19 05:17+0000\n"
"X-Generator: Launchpad (build 16378)\n"
#. module: base_report_designer
#: model:ir.model,name:base_report_designer.model_base_report_sxw
@ -181,7 +181,7 @@ msgstr "Abbruch"
#. module: base_report_designer
#: view:base.report.sxw:0
msgid "or"
msgstr ""
msgstr "oder"
#. module: base_report_designer
#: model:ir.model,name:base_report_designer.model_ir_actions_report_xml

Some files were not shown because too many files have changed in this diff Show More