diff --git a/addons/account/account.py b/addons/account/account.py
index 68af88754f5..c3ead387fba 100644
--- a/addons/account/account.py
+++ b/addons/account/account.py
@@ -1213,22 +1213,10 @@ class account_move(osv.osv):
return False
return True
- def _check_period_journal(self, cursor, user, ids, context=None):
- for move in self.browse(cursor, user, ids, context=context):
- for line in move.line_id:
- if line.period_id.id != move.period_id.id:
- return False
- if line.journal_id.id != move.journal_id.id:
- return False
- return True
-
_constraints = [
(_check_centralisation,
'You can not create more than one move per period on centralized journal',
['journal_id']),
- (_check_period_journal,
- 'You can not create journal items on different periods/journals in the same journal entry',
- ['line_id']),
]
def post(self, cr, uid, ids, context=None):
@@ -1511,8 +1499,6 @@ class account_move(osv.osv):
# Update the move lines (set them as valid)
obj_move_line.write(cr, uid, line_draft_ids, {
- 'journal_id': move.journal_id.id,
- 'period_id': move.period_id.id,
'state': 'valid'
}, context, check=False)
@@ -1553,8 +1539,6 @@ class account_move(osv.osv):
# We can't validate it (it's unbalanced)
# Setting the lines as draft
obj_move_line.write(cr, uid, line_ids, {
- 'journal_id': move.journal_id.id,
- 'period_id': move.period_id.id,
'state': 'draft'
}, context, check=False)
# Create analytic lines for the valid moves
@@ -1579,11 +1563,15 @@ class account_move_reconcile(osv.osv):
_defaults = {
'name': lambda self,cr,uid,ctx={}: self.pool.get('ir.sequence').get(cr, uid, 'account.reconcile') or '/',
}
+
def reconcile_partial_check(self, cr, uid, ids, type='auto', context=None):
total = 0.0
for rec in self.browse(cr, uid, ids, context=context):
for line in rec.line_partial_ids:
- total += (line.debit or 0.0) - (line.credit or 0.0)
+ if line.account_id.currency_id:
+ total += line.amount_currency
+ else:
+ total += (line.debit or 0.0) - (line.credit or 0.0)
if not total:
self.pool.get('account.move.line').write(cr, uid,
map(lambda x: x.id, rec.line_partial_ids),
@@ -2634,7 +2622,8 @@ class account_fiscal_position_template(osv.osv):
'name': fields.char('Fiscal Position Template', size=64, required=True),
'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', required=True),
'account_ids': fields.one2many('account.fiscal.position.account.template', 'position_id', 'Account Mapping'),
- 'tax_ids': fields.one2many('account.fiscal.position.tax.template', 'position_id', 'Tax Mapping')
+ 'tax_ids': fields.one2many('account.fiscal.position.tax.template', 'position_id', 'Tax Mapping'),
+ 'note': fields.text('Notes', translate=True),
}
account_fiscal_position_template()
@@ -2718,7 +2707,7 @@ class account_financial_report(osv.osv):
return res
_columns = {
- 'name': fields.char('Report Name', size=128, required=True),
+ 'name': fields.char('Report Name', size=128, required=True, translate=True),
'parent_id': fields.many2one('account.financial.report', 'Parent'),
'children_ids': fields.one2many('account.financial.report', 'parent_id', 'Account Report'),
'sequence': fields.integer('Sequence'),
diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py
index 834da02d1b4..146dbe019ec 100644
--- a/addons/account/account_invoice.py
+++ b/addons/account/account_invoice.py
@@ -880,7 +880,7 @@ class account_invoice(osv.osv):
'account_id': acc_id,
'date_maturity': t[0],
'amount_currency': diff_currency_p \
- and amount_currency or False,
+ and amount_currency or False,
'currency_id': diff_currency_p \
and inv.currency_id.id or False,
'ref': ref,
diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml
index 11ec7d8360a..a84eb5f5a32 100644
--- a/addons/account/account_invoice_view.xml
+++ b/addons/account/account_invoice_view.xml
@@ -305,8 +305,8 @@
+
-
diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py
index 92d71339168..13803d3ff79 100644
--- a/addons/account/account_move_line.py
+++ b/addons/account/account_move_line.py
@@ -494,8 +494,14 @@ class account_move_line(osv.osv):
'amount_residual_currency': fields.function(_amount_residual, string='Residual Amount', multi="residual", help="The residual amount on a receivable or payable of a journal entry expressed in its currency (maybe different of the company currency)."),
'amount_residual': fields.function(_amount_residual, string='Residual Amount', multi="residual", help="The residual amount on a receivable or payable of a journal entry expressed in the company currency."),
'currency_id': fields.many2one('res.currency', 'Currency', help="The optional other currency if it is a multi-currency entry."),
- 'period_id': fields.many2one('account.period', 'Period', required=True, select=2),
- 'journal_id': fields.many2one('account.journal', 'Journal', required=True, select=1),
+ 'journal_id': fields.related('move_id', 'journal_id', string='Journal', type='many2one', relation='account.journal', required=True, select=True, readonly=True,
+ store = {
+ 'account.move': (_get_move_lines, ['journal_id'], 20)
+ }),
+ 'period_id': fields.related('move_id', 'period_id', string='Period', type='many2one', relation='account.period', required=True, select=True, readonly=True,
+ store = {
+ 'account.move': (_get_move_lines, ['period_id'], 20)
+ }),
'blocked': fields.boolean('Litigation', help="You can check this box to mark this journal item as a litigation with the associated partner"),
'partner_id': fields.many2one('res.partner', 'Partner', select=1, ondelete='restrict'),
'date_maturity': fields.date('Due date', select=True ,help="This field is used for payable and receivable journal entries. You can put the limit date for the payment of this line."),
@@ -597,11 +603,19 @@ class account_move_line(osv.osv):
return False
return True
+ def _check_currency(self, cr, uid, ids, context=None):
+ for l in self.browse(cr, uid, ids, context=context):
+ if l.account_id.currency_id:
+ if not l.currency_id or not l.currency_id.id == l.account_id.currency_id.id:
+ return False
+ return True
+
_constraints = [
(_check_no_view, 'You can not create move line on view account.', ['account_id']),
(_check_no_closed, 'You can not create move line on closed account.', ['account_id']),
- (_check_company_id, 'Company must be same for its related account and period.',['company_id'] ),
- (_check_date, 'The date of your Journal Entry is not in the defined period!',['date'] ),
+ (_check_company_id, 'Company must be same for its related account and period.', ['company_id']),
+ (_check_date, 'The date of your Journal Entry is not in the defined period!', ['date']),
+ (_check_currency, 'The selected account of your Journal Entry must receive a value in its secondary currency', ['currency_id']),
]
#TODO: ONCHANGE_ACCOUNT_ID: set account_tax_id
@@ -735,7 +749,10 @@ class account_move_line(osv.osv):
company_list.append(line.company_id.id)
for line in self.browse(cr, uid, ids, context=context):
- company_currency_id = line.company_id.currency_id
+ if line.account_id.currency_id:
+ currency_id = line.account_id.currency_id
+ else:
+ currency_id = line.company_id.currency_id
if line.reconcile_id:
raise osv.except_osv(_('Warning'), _('Already Reconciled!'))
if line.reconcile_partial_id:
@@ -743,12 +760,18 @@ class account_move_line(osv.osv):
if not line2.reconcile_id:
if line2.id not in merges:
merges.append(line2.id)
- total += (line2.debit or 0.0) - (line2.credit or 0.0)
+ if line2.account_id.currency_id:
+ total += line2.amount_currency
+ else:
+ total += (line2.debit or 0.0) - (line2.credit or 0.0)
merges_rec.append(line.reconcile_partial_id.id)
else:
unmerge.append(line.id)
- total += (line.debit or 0.0) - (line.credit or 0.0)
- if self.pool.get('res.currency').is_zero(cr, uid, company_currency_id, total):
+ if line.account_id.currency_id:
+ total += line.amount_currency
+ else:
+ total += (line.debit or 0.0) - (line.credit or 0.0)
+ if self.pool.get('res.currency').is_zero(cr, uid, currency_id, total):
res = self.reconcile(cr, uid, merges+unmerge, context=context, writeoff_acc_id=writeoff_acc_id, writeoff_period_id=writeoff_period_id, writeoff_journal_id=writeoff_journal_id)
return res
r_id = move_rec_obj.create(cr, uid, {
@@ -1259,7 +1282,7 @@ class account_move_line(osv.osv):
break
# Automatically convert in the account's secondary currency if there is one and
# the provided values were not already multi-currency
- if account.currency_id and not vals.get('ammount_currency') and account.currency_id.id != account.company_id.currency_id.id:
+ if account.currency_id and (vals.get('amount_currency', False) is False) and account.currency_id.id != account.company_id.currency_id.id:
vals['currency_id'] = account.currency_id.id
ctx = {}
if 'date' in vals:
diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml
index 2ae910a36b3..e01ff58e1f7 100644
--- a/addons/account/account_view.xml
+++ b/addons/account/account_view.xml
@@ -455,9 +455,9 @@
-
+
-
+
diff --git a/addons/account/i18n/nb.po b/addons/account/i18n/nb.po
index 1adaf2da850..14770df6b39 100644
--- a/addons/account/i18n/nb.po
+++ b/addons/account/i18n/nb.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
-"PO-Revision-Date: 2011-03-30 13:55+0000\n"
+"PO-Revision-Date: 2011-10-13 07:32+0000\n"
"Last-Translator: Rolv Råen (adEgo) \n"
"Language-Team: Norwegian Bokmal \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-17 04:58+0000\n"
-"X-Generator: Launchpad (build 13955)\n"
+"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@@ -4933,7 +4933,7 @@ msgstr "Analytisk bokføring"
#: selection:account.invoice.report,type:0
#: selection:report.invoice.created,type:0
msgid "Customer Refund"
-msgstr "Kunderefusjon"
+msgstr "Kreditnota"
#. module: account
#: view:account.account:0
@@ -5489,7 +5489,7 @@ msgstr " 365 dager "
#: model:ir.actions.act_window,name:account.action_invoice_tree3
#: model:ir.ui.menu,name:account.menu_action_invoice_tree3
msgid "Customer Refunds"
-msgstr "Kunderefusjon"
+msgstr "Kreditnota"
#. module: account
#: view:account.payment.term.line:0
@@ -5945,7 +5945,7 @@ msgstr "Legg inn en startdato !"
#: selection:account.invoice.report,type:0
#: selection:report.invoice.created,type:0
msgid "Supplier Refund"
-msgstr "Leverandørrefusjon"
+msgstr "Kreditnota"
#. module: account
#: model:ir.ui.menu,name:account.menu_dashboard_acc
@@ -6815,7 +6815,7 @@ msgstr "Kommentar"
#: field:account.tax,domain:0
#: field:account.tax.template,domain:0
msgid "Domain"
-msgstr "Område"
+msgstr "Domene"
#. module: account
#: model:ir.model,name:account.model_account_use_model
@@ -9616,7 +9616,7 @@ msgstr "Søk faktura"
#: view:account.invoice.report:0
#: model:ir.actions.act_window,name:account.action_account_invoice_refund
msgid "Refund"
-msgstr "Refusjon"
+msgstr "Kreditnota"
#. module: account
#: field:wizard.multi.charts.accounts,bank_accounts_id:0
diff --git a/addons/account/installer.py b/addons/account/installer.py
index bed92df4fd2..530ea7ccc6f 100644
--- a/addons/account/installer.py
+++ b/addons/account/installer.py
@@ -149,7 +149,7 @@ class account_installer(osv.osv_memory):
}
new_paid_tax_code_temp = obj_tax_code_temp.create(cr, uid, vals_paid_tax_code_temp, context=context)
sales_tax_temp = obj_tax_temp.create(cr, uid, {
- 'name': _('TAX %s%%') % (s_tax*100),
+ 'name': _('Sale TAX %s%%') % (s_tax*100),
'amount': s_tax,
'base_code_id': new_tax_code_temp,
'tax_code_id': new_paid_tax_code_temp,
@@ -178,8 +178,7 @@ class account_installer(osv.osv_memory):
}
new_paid_tax_code_temp = obj_tax_code_temp.create(cr, uid, vals_paid_tax_code_temp, context=context)
purchase_tax_temp = obj_tax_temp.create(cr, uid, {
- 'name': _('TAX %s%%') % (p_tax*100),
- 'description': _('TAX %s%%') % (p_tax*100),
+ 'name': _('Purchase TAX %s%%') % (p_tax*100),
'amount': p_tax,
'base_code_id': new_tax_code_temp,
'tax_code_id': new_paid_tax_code_temp,
diff --git a/addons/account/project/project_view.xml b/addons/account/project/project_view.xml
index 54abae1d992..ec9ded68a12 100644
--- a/addons/account/project/project_view.xml
+++ b/addons/account/project/project_view.xml
@@ -45,7 +45,7 @@
-
+
@@ -65,6 +65,7 @@
+
diff --git a/addons/account/test/account_change_currency.yml b/addons/account/test/account_change_currency.yml
index 479afd2f2e2..5ec7405d719 100644
--- a/addons/account/test/account_change_currency.yml
+++ b/addons/account/test/account_change_currency.yml
@@ -33,11 +33,11 @@
-
!python {model: account.change.currency}: |
self.view_init(cr, uid, [ref("account_change_currency_0")], {"lang": 'en_US',
- "active_model": "account.invoice", "tz": False, "record_id": 4, "active_ids":
+ "active_model": "account.invoice", "tz": False, "active_ids":
[ref("account_invoice_currency")], "type": "out_invoice", "active_id": ref("account_invoice_currency"),
})
self.change_currency(cr, uid, [ref("account_change_currency_0")], {"lang": 'en_US',
- "active_model": "account.invoice", "tz": False, "record_id": 4, "active_ids":
+ "active_model": "account.invoice", "tz": False, "active_ids":
[ref("account_invoice_currency")], "type": "out_invoice", "active_id": ref("account_invoice_currency"),
})
-
@@ -71,7 +71,7 @@
-
!python {model: account.change.currency}: |
self.change_currency(cr, uid, [ref("account_change_currency_0")], {"lang": 'en_US',
- "active_model": "account.invoice", "tz": False, "record_id": 4, "active_ids":
+ "active_model": "account.invoice", "tz": False, "active_ids":
[ref("account_invoice_currency")], "type": "out_invoice", "active_id": ref("account_invoice_currency"),
})
-
diff --git a/addons/account/wizard/account_automatic_reconcile_view.xml b/addons/account/wizard/account_automatic_reconcile_view.xml
index a18adaa0320..a2fe0b3c689 100644
--- a/addons/account/wizard/account_automatic_reconcile_view.xml
+++ b/addons/account/wizard/account_automatic_reconcile_view.xml
@@ -42,7 +42,7 @@
form
tree,form
- {'record_id':active_id}
+ {}
new
diff --git a/addons/account/wizard/account_change_currency_view.xml b/addons/account/wizard/account_change_currency_view.xml
index 336766a2f42..4504f064a1d 100644
--- a/addons/account/wizard/account_change_currency_view.xml
+++ b/addons/account/wizard/account_change_currency_view.xml
@@ -25,7 +25,7 @@
form
form
- {'record_id' : active_id}
+ {}
new
diff --git a/addons/account/wizard/account_reconcile_partner_process_view.xml b/addons/account/wizard/account_reconcile_partner_process_view.xml
index 457e144e4ab..d7ac5e85d07 100644
--- a/addons/account/wizard/account_reconcile_partner_process_view.xml
+++ b/addons/account/wizard/account_reconcile_partner_process_view.xml
@@ -28,7 +28,7 @@
form
tree,form
- {'record_id':active_id}
+ {}
new
diff --git a/addons/account/wizard/account_report_aged_partner_balance_view.xml b/addons/account/wizard/account_report_aged_partner_balance_view.xml
index fb0952e4614..bd54b925eea 100644
--- a/addons/account/wizard/account_report_aged_partner_balance_view.xml
+++ b/addons/account/wizard/account_report_aged_partner_balance_view.xml
@@ -37,7 +37,7 @@
form
tree,form
- {'record_id':active_id}
+ {}
new
diff --git a/addons/account/wizard/account_report_partner_balance_view.xml b/addons/account/wizard/account_report_partner_balance_view.xml
index 679ef1aa456..6dbe6d7b77b 100644
--- a/addons/account/wizard/account_report_partner_balance_view.xml
+++ b/addons/account/wizard/account_report_partner_balance_view.xml
@@ -29,7 +29,7 @@
form
tree,form
- {'record_id':active_id}
+ {}
new
This report is analysis by partner. It is a PDF report containing one line per partner representing the cumulative credit balance.
diff --git a/addons/account/wizard/account_report_partner_ledger_view.xml b/addons/account/wizard/account_report_partner_ledger_view.xml
index 97dcdf8d3f2..c3c731c1954 100644
--- a/addons/account/wizard/account_report_partner_ledger_view.xml
+++ b/addons/account/wizard/account_report_partner_ledger_view.xml
@@ -34,7 +34,7 @@
form
tree,form
- {'record_id':active_id}
+ {}
new
diff --git a/addons/account/wizard/account_state_open_view.xml b/addons/account/wizard/account_state_open_view.xml
index 563a15bff73..d3b68cb5186 100644
--- a/addons/account/wizard/account_state_open_view.xml
+++ b/addons/account/wizard/account_state_open_view.xml
@@ -27,7 +27,7 @@
form
form
- {'record_id' : active_id}
+ {}
new
diff --git a/addons/account/wizard/account_unreconcile_view.xml b/addons/account/wizard/account_unreconcile_view.xml
index 714d64fb400..2efe457b1e2 100644
--- a/addons/account/wizard/account_unreconcile_view.xml
+++ b/addons/account/wizard/account_unreconcile_view.xml
@@ -64,7 +64,7 @@
form
form
- {'record_id' : active_id}
+ {}
new
diff --git a/addons/account/wizard/account_validate_move_view.xml b/addons/account/wizard/account_validate_move_view.xml
index fa3a2774a77..d12ae8d847f 100644
--- a/addons/account/wizard/account_validate_move_view.xml
+++ b/addons/account/wizard/account_validate_move_view.xml
@@ -66,7 +66,7 @@
form
form
- {'record_id' : active_id}
+ {}
new
This wizard will validate all journal entries of a particular journal and period. Once journal entries are validated, you can not update them anymore.
diff --git a/addons/account_followup/i18n/ca.po b/addons/account_followup/i18n/ca.po
index fcc835a5d9d..17739bada14 100644
--- a/addons/account_followup/i18n/ca.po
+++ b/addons/account_followup/i18n/ca.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
-"PO-Revision-Date: 2011-08-17 23:03+0000\n"
+"PO-Revision-Date: 2011-10-16 23:06+0000\n"
"Last-Translator: mgaja (GrupoIsep.com) \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 05:11+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-17 04:43+0000\n"
+"X-Generator: Launchpad (build 14155)\n"
#. module: account_followup
#: code:addons/account_followup/wizard/account_followup_print.py:298
@@ -90,6 +90,11 @@ msgid ""
"\n"
"%s"
msgstr ""
+"\n"
+"\n"
+"Correu electrònic enviat a les empreses amb èxit!\n"
+"\n"
+"%s"
#. module: account_followup
#: view:account_followup.followup:0
diff --git a/addons/account_voucher/__openerp__.py b/addons/account_voucher/__openerp__.py
index 97ac9950efb..5e6e6ab0513 100644
--- a/addons/account_voucher/__openerp__.py
+++ b/addons/account_voucher/__openerp__.py
@@ -59,7 +59,12 @@ Account Voucher module includes all the basic requirements of Voucher Entries fo
"test/account_voucher.yml",
"test/sales_receipt.yml",
"test/sales_payment.yml",
- "test/account_voucher_report.yml"
+ "test/account_voucher_report.yml",
+ "test/case1_usd_usd.yml",
+ "test/case2_usd_eur_debtor_in_eur.yml",
+ "test/case2_usd_eur_debtor_in_usd.yml",
+ "test/case3_eur_eur.yml",
+ "test/case4_cad_chf.yml",
],
'certificate': '0037580727101',
"active": False,
diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py
index 005e5d9ab46..38af59009d8 100644
--- a/addons/account_voucher/account_voucher.py
+++ b/addons/account_voucher/account_voucher.py
@@ -651,13 +651,302 @@ class account_voucher(osv.osv):
res['account_id'] = account_id
return {'value':res}
+ def _sel_context(self, cr, uid, voucher_id,context=None):
+ """
+ Select the context to use accordingly if it needs to be multicurrency or not.
+
+ :param voucher_id: Id of the actual voucher
+ :return: The returned context will be the same as given in parameter if the voucher currency is the same
+ than the company currency, otherwise it's a copy of the parameter with an extra key 'date' containing
+ the date of the voucher.
+ :rtype: dict
+ """
+ company_currency = self._get_company_currency(cr, uid, voucher_id, context)
+ current_currency = self._get_current_currency(cr, uid, voucher_id, context)
+ if current_currency <> company_currency:
+ context_multi_currency = context.copy()
+ voucher_brw = self.pool.get('account.voucher').browse(cr, uid, voucher_id, context)
+ context_multi_currency.update({'date': voucher_brw.date})
+ return context_multi_currency
+ return context
+
+ def first_move_line_get(self, cr, uid, voucher_id, move_id, company_currency, current_currency, context=None):
+ '''
+ Return a dict to be use to create the first account move line of given voucher.
+
+ :param voucher_id: Id of voucher what we are creating account_move.
+ :param move_id: Id of account move where this line will be added.
+ :param company_currency: id of currency of the company to which the voucher belong
+ :param current_currency: id of currency of the voucher
+ :return: mapping between fieldname and value of account move line to create
+ :rtype: dict
+ '''
+ move_line_obj = self.pool.get('account.move.line')
+ currency_obj = self.pool.get('res.currency')
+ voucher_brw = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context)
+ debit = credit = 0.0
+ # TODO: is there any other alternative then the voucher type ??
+ # ANSWER: We can have payment and receipt "In Advance".
+ # TODO: Make this logic available.
+ # -for sale, purchase we have but for the payment and receipt we do not have as based on the bank/cash journal we can not know its payment or receipt
+ if voucher_brw.type in ('purchase', 'payment'):
+ credit = currency_obj.compute(cr, uid, current_currency, company_currency, voucher_brw.amount, context=context)
+ elif voucher_brw.type in ('sale', 'receipt'):
+ debit = currency_obj.compute(cr, uid, current_currency, company_currency, voucher_brw.amount, context=context)
+ if debit < 0: credit = -debit; debit = 0.0
+ if credit < 0: debit = -credit; credit = 0.0
+ sign = debit - credit < 0 and -1 or 1
+ #set the first line of the voucher
+ move_line = {
+ 'name': voucher_brw.name or '/',
+ 'debit': debit,
+ 'credit': credit,
+ 'account_id': voucher_brw.account_id.id,
+ 'move_id': move_id,
+ 'journal_id': voucher_brw.journal_id.id,
+ 'period_id': voucher_brw.period_id.id,
+ 'partner_id': voucher_brw.partner_id.id,
+ 'currency_id': company_currency <> current_currency and current_currency or False,
+ 'amount_currency': company_currency <> current_currency and sign * voucher_brw.amount or 0.0,
+ 'date': voucher_brw.date,
+ 'date_maturity': voucher_brw.date_due
+ }
+ return move_line
+
+ def account_move_get(self, cr, uid, voucher_id, context=None):
+ '''
+ This method prepare the creation of the account move related to the given voucher.
+
+ :param voucher_id: Id of voucher for which we are creating account_move.
+ :return: mapping between fieldname and value of account move to create
+ :rtype: dict
+ '''
+ move_obj = self.pool.get('account.move')
+ seq_obj = self.pool.get('ir.sequence')
+ voucher_brw = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context)
+ if voucher_brw.number:
+ name = voucher_brw.number
+ elif voucher_brw.journal_id.sequence_id:
+ name = seq_obj.next_by_id(cr, uid, voucher_brw.journal_id.sequence_id.id)
+ else:
+ raise osv.except_osv(_('Error !'),
+ _('Please define a sequence on the journal !'))
+ if not voucher_brw.reference:
+ ref = name.replace('/','')
+ else:
+ ref = voucher_brw.reference
+
+ move = {
+ 'name': name,
+ 'journal_id': voucher_brw.journal_id.id,
+ 'narration': voucher_brw.narration,
+ 'date': voucher_brw.date,
+ 'ref': ref,
+ 'period_id': voucher_brw.period_id and voucher_brw.period_id.id or False
+ }
+ return move
+
+ def _get_exchange_lines(self, cr, uid, line, move_id, amount_residual, company_currency, current_currency, context=None):
+ '''
+ Prepare the two lines due to currency rate difference.
+
+ :param line: browse record of the voucher.line for which we want to create currency rate difference accounting entries
+ :param move_id: Account move wher the move lines will be.
+ :param amount_residual: Amount to be posted.
+ :param company_currency: id of currency of the company to which the voucher belong
+ :param current_currency: id of currency of the voucher
+ :return: the account move line and its counterpart to create, depicted as mapping between fieldname and value
+ :rtype: tuple of dict
+ '''
+ if not line.voucher_id.exchange_acc_id.id:
+ raise osv.except_osv(_('Error!'), _('You must provide an account for the exchange difference.'))
+
+ move_line = {
+ 'journal_id': line.voucher_id.journal_id.id,
+ 'period_id': line.voucher_id.period_id.id,
+ 'name': _('change')+': '+(line.name or '/'),
+ 'account_id': line.account_id.id,
+ 'move_id': move_id,
+ 'partner_id': line.voucher_id.partner_id.id,
+ 'currency_id': company_currency <> current_currency and current_currency or False,
+ 'amount_currency': 0.0,
+ 'quantity': 1,
+ 'credit': amount_residual > 0 and amount_residual or 0.0,
+ 'debit': amount_residual < 0 and -amount_residual or 0.0,
+ 'date': line.voucher_id.date,
+ }
+ move_line_counterpart = {
+ 'journal_id': line.voucher_id.journal_id.id,
+ 'period_id': line.voucher_id.period_id.id,
+ 'name': _('change')+': '+(line.name or '/'),
+ 'account_id': line.voucher_id.exchange_acc_id.id,
+ 'move_id': move_id,
+ 'amount_currency': 0.0,
+ 'partner_id': line.voucher_id.partner_id.id,
+ 'currency_id': company_currency <> current_currency and current_currency or False,
+ 'quantity': 1,
+ 'debit': amount_residual > 0 and amount_residual or 0.0,
+ 'credit': amount_residual < 0 and -amount_residual or 0.0,
+ 'date': line.voucher_id.date,
+ }
+ return (move_line, move_line_counterpart)
+
+ def voucher_move_line_create(self, cr, uid, voucher_id, line_total, move_id, company_currency, current_currency, context=None):
+ '''
+ Create one account move line, on the given account move, per voucher line where amount is not 0.0.
+ It returns Tuple with tot_line what is total of difference between debit and credit and
+ a list of lists with ids to be reconciled with this format (total_deb_cred,list_of_lists).
+
+ :param voucher_id: Voucher id what we are working with
+ :param line_total: Amount of the first line, which correspond to the amount we should totally split among all voucher lines.
+ :param move_id: Account move wher those lines will be joined.
+ :param company_currency: id of currency of the company to which the voucher belong
+ :param current_currency: id of currency of the voucher
+ :return: Tuple build as (remaining amount not allocated on voucher lines, list of account_move_line created in this method)
+ :rtype: tuple(int, list of int)
+ '''
+ move_line_obj = self.pool.get('account.move.line')
+ currency_obj = self.pool.get('res.currency')
+ tot_line = line_total
+ rec_lst_ids = []
+
+ voucher_brw = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context)
+ for line in voucher_brw.line_ids:
+ #create one move line per voucher line where amount is not 0.0
+ if not line.amount:
+ continue
+ #we check if the voucher line is fully paid or not and create a move line to balance the payment and initial invoice if needed
+ if line.amount == line.amount_unreconciled:
+ amount = currency_obj.compute(cr, uid, current_currency, company_currency, line.untax_amount or line.amount, context=context)
+ amount_residual = line.move_line_id.amount_residual - amount #residual amount in company currency
+ else:
+ amount = currency_obj.compute(cr, uid, current_currency, company_currency, line.untax_amount or line.amount, context=context)
+ amount_residual = 0.0
+ move_line = {
+ 'journal_id': voucher_brw.journal_id.id,
+ 'period_id': voucher_brw.period_id.id,
+ 'name': line.name or '/',
+ 'account_id': line.account_id.id,
+ 'move_id': move_id,
+ 'partner_id': voucher_brw.partner_id.id,
+ 'currency_id': company_currency <> current_currency and current_currency or False,
+ 'analytic_account_id': line.account_analytic_id and line.account_analytic_id.id or False,
+ 'quantity': 1,
+ 'credit': 0.0,
+ 'debit': 0.0,
+ 'date': voucher_brw.date
+ }
+ if amount < 0:
+ amount = -amount
+ if line.type == 'dr':
+ line.type = 'cr'
+ else:
+ line.type = 'dr'
+
+ if (line.type=='dr'):
+ tot_line += amount
+ move_line['debit'] = amount
+ else:
+ tot_line -= amount
+ move_line['credit'] = amount
+
+ if voucher_brw.tax_id and voucher_brw.type in ('sale', 'purchase'):
+ move_line.update({
+ 'account_tax_id': voucher_brw.tax_id.id,
+ })
+
+ if move_line.get('account_tax_id', False):
+ tax_data = tax_obj.browse(cr, uid, [move_line['account_tax_id']], context=context)[0]
+ if not (tax_data.base_code_id and tax_data.tax_code_id):
+ raise osv.except_osv(_('No Account Base Code and Account Tax Code!'),_("You have to configure account base code and account tax code on the '%s' tax!") % (tax_data.name))
+
+ sign = (move_line['debit'] - move_line['credit']) < 0 and -1 or 1
+ move_line['amount_currency'] = company_currency <> current_currency and sign * line.amount or False
+ voucher_line = move_line_obj.create(cr, uid, move_line)
+ rec_ids = [voucher_line, line.move_line_id.id]
+
+ if amount_residual:
+ # Change difference entry
+ exch_lines = self._get_exchange_lines(cr, uid, line, move_id, amount_residual, company_currency, current_currency, context=context)
+ new_id = move_line_obj.create(cr, uid, exch_lines[0],context)
+ move_line_obj.create(cr, uid, exch_lines[1], context)
+ rec_ids.append(new_id)
+
+ if line.move_line_id.id:
+ rec_lst_ids.append(rec_ids)
+
+ return (tot_line, rec_lst_ids)
+
+ def writeoff_move_line_get(self, cr, uid, voucher_id, line_total, move_id, name, company_currency, current_currency, context=None):
+ '''
+ Set a dict to be use to create the writeoff move line.
+
+ :param voucher_id: Id of voucher what we are creating account_move.
+ :param line_total: Amount remaining to be allocated on lines.
+ :param move_id: Id of account move where this line will be added.
+ :param name: Description of account move line.
+ :param company_currency: id of currency of the company to which the voucher belong
+ :param current_currency: id of currency of the voucher
+ :return: mapping between fieldname and value of account move line to create
+ :rtype: dict
+ '''
+ move_line_obj = self.pool.get('account.move.line')
+ currency_obj = self.pool.get('res.currency')
+ move_line = {}
+
+ voucher_brw = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context)
+ current_currency_obj = voucher_brw.currency_id or voucher_brw.journal_id.company_id.currency_id
+
+ if not currency_obj.is_zero(cr, uid, current_currency_obj, line_total):
+ diff = line_total
+ account_id = False
+ write_off_name = ''
+ if voucher_brw.payment_option == 'with_writeoff':
+ account_id = voucher_brw.writeoff_acc_id.id
+ write_off_name = voucher_brw.comment
+ elif voucher_brw.type in ('sale', 'receipt'):
+ account_id = voucher_brw.partner_id.property_account_receivable.id
+ else:
+ account_id = voucher_brw.partner_id.property_account_payable.id
+ move_line = {
+ 'name': write_off_name or name,
+ 'account_id': account_id,
+ 'move_id': move_id,
+ 'partner_id': voucher_brw.partner_id.id,
+ 'date': voucher_brw.date,
+ 'credit': diff > 0 and diff or 0.0,
+ 'debit': diff < 0 and -diff or 0.0,
+ 'amount_currency': company_currency <> current_currency and voucher_brw.writeoff_amount or False,
+ 'currency_id': company_currency <> current_currency and current_currency or False,
+ }
+
+ return move_line
+
+ def _get_company_currency(self, cr, uid, voucher_id, context=None):
+ '''
+ Get the currency of the actual company.
+
+ :param voucher_id: Id of the voucher what i want to obtain company currency.
+ :return: currency id of the company of the voucher
+ :rtype: int
+ '''
+ return self.pool.get('account.voucher').browse(cr,uid,voucher_id,context).journal_id.company_id.currency_id.id
+
+ def _get_current_currency(self, cr, uid, voucher_id, context=None):
+ '''
+ Get the currency of the voucher.
+
+ :param voucher_id: Id of the voucher what i want to obtain current currency.
+ :return: currency id of the voucher
+ :rtype: int
+ '''
+ voucher = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context)
+ return voucher.currency_id.id or self._get_company_currency(cr,uid,voucher.id,context)
+
def action_move_line_create(self, cr, uid, ids, context=None):
- def _get_payment_term_lines(term_id, amount):
- term_pool = self.pool.get('account.payment.term')
- if term_id and amount:
- terms = term_pool.compute(cr, uid, term_id, amount)
- return terms
- return False
+ '''
+ Confirm the vouchers given in ids and create the journal entries for each of them
+ '''
if context is None:
context = {}
move_pool = self.pool.get('account.move')
@@ -665,198 +954,44 @@ class account_voucher(osv.osv):
currency_pool = self.pool.get('res.currency')
tax_obj = self.pool.get('account.tax')
seq_obj = self.pool.get('ir.sequence')
- for inv in self.browse(cr, uid, ids, context=context):
- if inv.move_id:
+ for voucher in self.browse(cr, uid, ids, context=context):
+ if voucher.move_id:
continue
- context_multi_currency = context.copy()
- context_multi_currency.update({'date': inv.date})
-
- if inv.number:
- name = inv.number
- elif inv.journal_id.sequence_id:
- name = seq_obj.next_by_id(cr, uid, inv.journal_id.sequence_id.id)
- else:
- raise osv.except_osv(_('Error !'), _('Please define a sequence on the journal !'))
- if not inv.reference:
- ref = name.replace('/','')
- else:
- ref = inv.reference
-
- move = {
- 'name': name,
- 'journal_id': inv.journal_id.id,
- 'narration': inv.narration,
- 'date': inv.date,
- 'ref': ref,
- 'period_id': inv.period_id and inv.period_id.id or False
- }
- move_id = move_pool.create(cr, uid, move)
-
- #create the first line manually
- company_currency = inv.journal_id.company_id.currency_id.id
- current_currency = inv.currency_id.id or company_currency
- current_currency_obj = inv.currency_id or inv.journal_id.company_id.currency_id
- debit = 0.0
- credit = 0.0
- # TODO: is there any other alternative then the voucher type ??
- # -for sale, purchase we have but for the payment and receipt we do not have as based on the bank/cash journal we can not know its payment or receipt
- if inv.type in ('purchase', 'payment'):
- credit = currency_pool.compute(cr, uid, current_currency, company_currency, inv.amount, context=context_multi_currency)
- elif inv.type in ('sale', 'receipt'):
- debit = currency_pool.compute(cr, uid, current_currency, company_currency, inv.amount, context=context_multi_currency)
- if debit < 0:
- credit = -debit
- debit = 0.0
- if credit < 0:
- debit = -credit
- credit = 0.0
- sign = debit - credit < 0 and -1 or 1
- #create the first line of the voucher, the payment made
- move_line = {
- 'name': inv.name or '/',
- 'debit': debit,
- 'credit': credit,
- 'account_id': inv.account_id.id,
- 'move_id': move_id,
- 'journal_id': inv.journal_id.id,
- 'period_id': inv.period_id.id,
- 'partner_id': inv.partner_id.id,
- 'currency_id': company_currency <> current_currency and current_currency or False,
- 'amount_currency': company_currency <> current_currency and sign * inv.amount or 0.0,
- 'date': inv.date,
- 'date_maturity': inv.date_due
- }
- move_line_pool.create(cr, uid, move_line)
+ company_currency = self._get_company_currency(cr, uid, voucher.id, context)
+ current_currency = self._get_current_currency(cr, uid, voucher.id, context)
+ context = self._sel_context(cr, uid, voucher.id, context)
+ #Create the account move record.
+ move_id = move_pool.create(cr, uid, self.account_move_get(cr, uid, voucher.id, context=context), context=context)
+ # Get the name of the account_move just created
+ name = move_pool.browse(cr, uid, move_id, context=context).name
+ #Create the first line of the voucher
+ move_line_id = move_line_pool.create(cr, uid, self.first_move_line_get(cr,uid,voucher.id, move_id, company_currency, current_currency, context), context)
+ move_line_brw = move_line_pool.browse(cr, uid, move_line_id, context=context)
+ line_total = move_line_brw.debit - move_line_brw.credit
rec_list_ids = []
- line_total = debit - credit
- if inv.type == 'sale':
- line_total = line_total - currency_pool.compute(cr, uid, current_currency, company_currency, inv.tax_amount, context=context_multi_currency)
- elif inv.type == 'purchase':
- line_total = line_total + currency_pool.compute(cr, uid, current_currency, company_currency, inv.tax_amount, context=context_multi_currency)
+ if voucher.type == 'sale':
+ line_total = line_total - currency_pool.compute(cr, uid, current_currency, company_currency, voucher.tax_amount, context=context)
+ elif voucher.type == 'purchase':
+ line_total = line_total + currency_pool.compute(cr, uid, current_currency, company_currency, voucher.tax_amount, context=context)
+ #create one move line per voucher line where amount is not 0.0
+ line_total, rec_list_ids = self.voucher_move_line_create(cr, uid, voucher.id, line_total, move_id, company_currency, current_currency, context)
- for line in inv.line_ids:
- #create one move line per voucher line where amount is not 0.0
- if not line.amount:
- continue
- #we check if the voucher line is fully paid or not and create a move line to balance the payment and initial invoice if needed
- if line.amount == line.amount_unreconciled:
- amount = currency_pool.compute(cr, uid, current_currency, company_currency, line.untax_amount or line.amount, context=context_multi_currency)
- amount_residual = line.move_line_id.amount_residual - amount #residual amount in company currency
- else:
- amount = currency_pool.compute(cr, uid, current_currency, company_currency, line.untax_amount or line.amount, context=context_multi_currency)
- amount_residual = 0.0
- move_line = {
- 'journal_id': inv.journal_id.id,
- 'period_id': inv.period_id.id,
- 'name': line.name or '/',
- 'account_id': line.account_id.id,
- 'move_id': move_id,
- 'partner_id': inv.partner_id.id,
- 'currency_id': company_currency <> current_currency and current_currency or False,
- 'analytic_account_id': line.account_analytic_id and line.account_analytic_id.id or False,
- 'quantity': 1,
- 'credit': 0.0,
- 'debit': 0.0,
- 'date': inv.date
- }
- if amount < 0:
- amount = -amount
- if line.type == 'dr':
- line.type = 'cr'
- else:
- line.type = 'dr'
- if (line.type=='dr'):
- line_total += amount
- move_line['debit'] = amount
- else:
- line_total -= amount
- move_line['credit'] = amount
-
- if inv.tax_id and inv.type in ('sale', 'purchase'):
- move_line.update({
- 'account_tax_id': inv.tax_id.id,
- })
- if move_line.get('account_tax_id', False):
- tax_data = tax_obj.browse(cr, uid, [move_line['account_tax_id']], context=context)[0]
- if not (tax_data.base_code_id and tax_data.tax_code_id):
- raise osv.except_osv(_('No Account Base Code and Account Tax Code!'),_("You have to configure account base code and account tax code on the '%s' tax!") % (tax_data.name))
- sign = (move_line['debit'] - move_line['credit']) < 0 and -1 or 1
- move_line['amount_currency'] = company_currency <> current_currency and sign * line.amount or 0.0
- voucher_line = move_line_pool.create(cr, uid, move_line)
- rec_ids = [voucher_line, line.move_line_id.id]
-
- # Change difference entry
- if amount_residual:
- if not inv.exchange_acc_id.id:
- raise osv.except_osv(_('Error!'), _('You must provide an account for the exchange difference.'))
- move_line = {
- 'journal_id': inv.journal_id.id,
- 'period_id': inv.period_id.id,
- 'name': _('change')+': '+(line.name or '/'),
- 'account_id': line.account_id.id,
- 'move_id': move_id,
- 'partner_id': inv.partner_id.id,
- 'currency_id': company_currency <> current_currency and current_currency or False,
- 'amount_currency': 0.0,
- 'quantity': 1,
- 'credit': amount_residual > 0 and amount_residual or 0.0,
- 'debit': amount_residual < 0 and -amount_residual or 0.0,
- 'date': inv.date
- }
- new_id = move_line_pool.create(cr, uid, move_line)
- move_line = {
- 'journal_id': inv.journal_id.id,
- 'period_id': inv.period_id.id,
- 'name': _('change')+': '+(line.name or '/'),
- 'account_id': inv.exchange_acc_id.id,
- 'move_id': move_id,
- 'amount_currency': 0.0,
- 'partner_id': inv.partner_id.id,
- 'currency_id': company_currency <> current_currency and current_currency or False,
- 'quantity': 1,
- 'debit': amount_residual > 0 and amount_residual or 0.0,
- 'credit': amount_residual < 0 and -amount_residual or 0.0,
- 'date': inv.date
- }
- move_line_pool.create(cr, uid, move_line)
- rec_ids.append(new_id)
-
- if line.move_line_id.id:
- rec_list_ids.append(rec_ids)
-
- if not currency_pool.is_zero(cr, uid, current_currency_obj, line_total):
- diff = line_total
- account_id = False
- write_off_name = ''
- if inv.payment_option == 'with_writeoff':
- account_id = inv.writeoff_acc_id.id
- write_off_name = inv.comment
- elif inv.type in ('sale', 'receipt'):
- account_id = inv.partner_id.property_account_receivable.id
- else:
- account_id = inv.partner_id.property_account_payable.id
- move_line = {
- 'name': write_off_name or name,
- 'account_id': account_id,
- 'move_id': move_id,
- 'partner_id': inv.partner_id.id,
- 'date': inv.date,
- 'credit': diff > 0 and diff or 0.0,
- 'debit': diff < 0 and -diff or 0.0,
- #'amount_currency': company_currency <> current_currency and currency_pool.compute(cr, uid, company_currency, current_currency, diff * -1, context=context_multi_currency) or 0.0,
- #'currency_id': company_currency <> current_currency and current_currency or False,
- }
- move_line_pool.create(cr, uid, move_line)
- self.write(cr, uid, [inv.id], {
+ #create the writeoff line if needed
+ ml_writeoff = self.writeoff_move_line_get(cr, uid, voucher.id, line_total, move_id, name, company_currency, current_currency, context)
+ if ml_writeoff:
+ ml_writeoff_id = move_line_pool.create(cr, uid, ml_writeoff, context)
+ #We post the voucher.
+ self.write(cr, uid, [voucher.id], {
'move_id': move_id,
'state': 'posted',
'number': name,
})
- if inv.journal_id.entry_posted:
+ if voucher.journal_id.entry_posted:
move_pool.post(cr, uid, [move_id], context={})
+ #We automatically reconcile the account move lines.
for rec_ids in rec_list_ids:
if len(rec_ids) >= 2:
- move_line_pool.reconcile_partial(cr, uid, rec_ids, writeoff_acc_id=inv.exchange_acc_id.id, writeoff_period_id=inv.period_id.id, writeoff_journal_id=inv.journal_id.id)
+ move_line_pool.reconcile_partial(cr, uid, rec_ids, writeoff_acc_id=voucher.exchange_acc_id.id, writeoff_period_id=voucher.period_id.id, writeoff_journal_id=voucher.journal_id.id)
return True
def copy(self, cr, uid, id, default={}, context=None):
@@ -1056,7 +1191,7 @@ class account_bank_statement_line(osv.osv):
for obj in self.browse(cr, uid, ids, context=context):
if obj.voucher_id:
diff = abs(obj.amount) - obj.voucher_id.amount
- if not self.pool.get('res.currency').is_zero(cr, uid, obj.voucher_id.currency_id, diff):
+ if not self.pool.get('res.currency').is_zero(cr, uid, obj.statement_id.currency, diff):
return False
return True
diff --git a/addons/account_voucher/test/case1_usd_usd.yml b/addons/account_voucher/test/case1_usd_usd.yml
new file mode 100644
index 00000000000..eabcec2a08c
--- /dev/null
+++ b/addons/account_voucher/test/case1_usd_usd.yml
@@ -0,0 +1,344 @@
+-
+ In order to check the Account_voucher module with multi-currency in OpenERP,
+ I create 2 Invoices in USD and make 2 Payments in USD based on the currency rating on that particular date
+-
+ I create currency USD in OpenERP for January of 1.333333 Rate
+-
+ !python {model: res.currency.rate}: |
+ from datetime import datetime
+ curr_id = self.pool.get('res.currency').search(cr, uid, [('name', '=', 'USD')])[0]
+ date = '%s-01-01' %(datetime.now().year)
+ ids = self.search(cr, uid, [('currency_id','=',curr_id), ('name', '=', date)])
+ self.write(cr, uid, ids, {'rate': 1.333333})
+-
+ I create currency USD in OpenERP for February of 1.250000 Rate
+-
+ !record {model: res.currency.rate, id: feb_usd}:
+ currency_id: base.USD
+ name: !eval "'%s-02-01' %(datetime.now().year)"
+ rate: 1.250000
+
+-
+ I create currency USD in OpenERP for March of 1.111111 Rate
+-
+ !record {model: res.currency.rate, id: mar_usd}:
+ currency_id: base.USD
+ name: !eval "'%s-03-01' %(datetime.now().year)"
+ rate: 1.111111
+
+-
+ I create currency USD in OpenERP for April of 1.052632 Rate
+-
+ !record {model: res.currency.rate, id: apr_usd}:
+ currency_id: base.USD
+ name: !eval "'%s-04-01' %(datetime.now().year)"
+ rate: 1.052632
+
+-
+ I create a bank journal with USD as currency
+-
+ !record {model: account.journal, id: bank_journal_USD}:
+ name: Bank Journal(USD)
+ code: BUSD
+ type: bank
+ analytic_journal_id: account.sit
+ sequence_id: account.sequence_bank_journal
+ default_debit_account_id: account.cash
+ default_credit_account_id: account.cash
+ currency: base.USD
+ company_id: base.main_company
+ view_id: account.account_journal_bank_view
+
+-
+ I create new partner Mark Strauss.
+-
+ !record {model: res.partner, id: res_partner_strauss0}:
+ address:
+ - city: paris
+ country_id: base.fr
+ name: Mark Strauss
+ street: 1 rue Rockfeller
+ type: invoice
+ zip: '75016'
+ name: Mr. Mark Strauss
+-
+ I create the first invoice on 1st January for 200 USD
+-
+ !record {model: account.invoice, id: account_invoice_jan}:
+ account_id: account.a_recv
+ address_contact_id: base.res_partner_address_3000
+ address_invoice_id: base.res_partner_address_3000
+ company_id: base.main_company
+ currency_id: base.USD
+ date_invoice: !eval "'%s-01-01' %(datetime.now().year)"
+ period_id: account.period_1
+ invoice_line:
+ - account_id: account.a_sale
+ name: '[PC1] Basic PC'
+ price_unit: 200.0
+ quantity: 1.0
+ product_id: product.product_product_pc1
+ uos_id: product.product_uom_unit
+ journal_id: account.sales_journal
+ partner_id: res_partner_strauss0
+ reference_type: none
+-
+ I Validate invoice by clicking on Validate button
+-
+ !workflow {model: account.invoice, action: invoice_open, ref: account_invoice_jan}
+-
+ I check that first invoice move is correct for debtor account (debit - credit == 150.0)
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_invoice_jan"))
+ assert invoice_id.move_id, "Move not created for open invoice"
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.debit - move_line.credit == 150.0), "Invoice move is not correct for debtors account"
+-
+ I create the second invoice on 1st February for 100 USD
+-
+ !record {model: account.invoice, id: account_invoice_feb}:
+ account_id: account.a_recv
+ address_contact_id: base.res_partner_address_3000
+ address_invoice_id: base.res_partner_address_3000
+ company_id: base.main_company
+ currency_id: base.USD
+ date_invoice: !eval "'%s-02-01' %(datetime.now().year)"
+ period_id: account.period_2
+ invoice_line:
+ - account_id: account.a_sale
+ name: '[PC1] Basic PC'
+ price_unit: 100.0
+ quantity: 1.0
+ product_id: product.product_product_pc1
+ uos_id: product.product_uom_unit
+ journal_id: account.sales_journal
+ partner_id: res_partner_strauss0
+ reference_type: none
+-
+ I Validate invoice by clicking on Validate button
+-
+ !workflow {model: account.invoice, action: invoice_open, ref: account_invoice_feb}
+-
+ I check that second invoice move is correct for debtor account (debit - credit == 80)
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_invoice_feb"))
+ assert invoice_id.move_id, "Move not created for open invoice"
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.debit - move_line.credit == 80), "Invoice move is not correct for debtors account"
+
+-
+ I create the first voucher of payment
+
+-
+ !python {model: account.voucher}: |
+ import netsvc, time
+ vals = {}
+ res = self.onchange_partner_id(cr, uid, [], ref("res_partner_strauss0"), ref('bank_journal_USD'), 240.00, 2, ttype='receipt', date=False)
+ vals = {
+ 'account_id': ref('account.cash'),
+ 'amount': 240.00,
+ 'company_id': ref('base.main_company'),
+ 'currency_id': ref('base.USD'),
+ 'journal_id': ref('bank_journal_USD'),
+ 'partner_id': ref('res_partner_strauss0'),
+ 'period_id': ref('account.period_3'),
+ 'type': 'receipt',
+ 'date': time.strftime("%Y-03-01"),
+ 'payment_option': 'with_writeoff',
+ 'writeoff_acc_id': ref('account.a_expense'),
+ 'comment': 'Write Off',
+ 'name': 'First payment',
+ }
+ if not res['value']['line_cr_ids']:
+ res['value']['line_cr_ids'] = [{'type': 'cr', 'account_id': ref('account.a_recv'),}]
+ for item in res['value']['line_cr_ids']:
+ if item['amount_unreconciled'] == 200.00:
+ item['amount'] = 180.00
+ else:
+ item['amount'] = 70.00
+ vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
+ id = self.create(cr, uid, vals)
+ voucher_id = self.browse(cr, uid, id)
+ assert (voucher_id.state=='draft'), "Voucher is not in draft state"
+-
+ I check that writeoff amount computed is 10.0
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_strauss0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ assert (voucher_id.writeoff_amount == 10.0), "Writeoff amount is not 10.0"
+-
+ I confirm the voucher
+-
+ !python {model: account.voucher}: |
+ import netsvc
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_strauss0'))])
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+-
+ I check that the move of my first voucher is valid
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_strauss0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ assert move_line.state == 'valid', "Voucher move is not valid"
+-
+ I check that my debtor account is correct
+-
+ I check that the debtor account has 2 new lines with -180 and -70 as amount_currency columns and that their credit columns are respectively 162 and 63
+-
+ I check that my write-off is correct. 9 debit and 10 amount_currency
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_strauss0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ if move_line.amount_currency == -180.00:
+ assert move_line.credit == 162.00, "Debtor account has wrong entry."
+ elif move_line.amount_currency == -70.00:
+ assert move_line.credit == 63.00, "Debtor account has wrong entry."
+ elif move_line.amount_currency == 10.00:
+ assert move_line.debit == 9.00, "Writeoff amount is wrong."
+-
+ I check the residual amount of Invoice1, should be 20 in amount_currency
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_invoice_jan"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 20.0) , "Residual amount is not correct for first Invoice"
+-
+ I check the residual amuont of Invoice2, should be 30 in residual currency and 24 in amount_residual
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_invoice_feb"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 30.0) , "Residual amount is not correct for first Invoice"
+-
+ I create the second voucher of payment
+
+
+-
+ !python {model: account.voucher}: |
+ import netsvc, time
+ vals = {}
+ res = self.onchange_partner_id(cr, uid, [], ref("res_partner_strauss0"), ref('bank_journal_USD'), 45.00, 2, ttype='receipt', date=False)
+ vals = {
+ 'account_id': ref('account.cash'),
+ 'amount': 45.00,
+ 'exchange_acc_id': ref('account.o_expense'),
+ 'company_id': ref('base.main_company'),
+ 'currency_id': ref('base.USD'),
+ 'journal_id': ref('bank_journal_USD'),
+ 'partner_id': ref('res_partner_strauss0'),
+ 'period_id': ref('account.period_3'),
+ 'type': 'receipt',
+ 'date': time.strftime("%Y-04-01"),
+ 'payment_option': 'with_writeoff',
+ 'writeoff_acc_id': ref('account.a_expense'),
+ 'comment': 'Write Off',
+ 'name': 'Second payment',
+ }
+ if not res['value']['line_cr_ids']:
+ res['value']['line_cr_ids'] = [{'type': 'cr', 'account_id': ref('account.a_recv'),}]
+ for item in res['value']['line_cr_ids']:
+ if item['amount_unreconciled'] == 20.00:
+ item['amount'] = 20.00
+ else:
+ item['amount'] = 30.00
+ vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
+ id = self.create(cr, uid, vals)
+ voucher_id = self.browse(cr, uid, id)
+ assert (voucher_id.state=='draft'), "Voucher is not in draft state"
+-
+ I check that writeoff amount computed is 5.0
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_strauss0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ assert (voucher_id.writeoff_amount == 5.0), "Writeoff amount is not 5.0"
+-
+ I confirm the voucher
+-
+ !python {model: account.voucher}: |
+ import netsvc
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_strauss0'))])
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+-
+ I check that the move of my second voucher is valid
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_strauss0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ assert move_line.state == 'valid', "Voucher move is not valid"
+-
+ I check that my debtor account is correct
+-
+ I check that the debtor account has 2 new lines with -20 and -30 as amount_currency columns and their credit columns are respectively 19 and 28.5
+-
+ I check that my currency rate difference is correct. 8.5 in credit with no amount_currency
+-
+ I check that the total reconcilation created entries as expected
+-
+ I check that my writeoff is correct. 4.75 debit and 5 amount_currency
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_strauss0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ reconcile_a = reconcile_b = False
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ if move_line.amount_currency == -20.00:
+ assert move_line.reconcile_id.id, "The invoice of 200$ is not fully reconciled"
+ reconcile_b = move_line.reconcile_id.id
+ elif move_line.amount_currency == -30.00:
+ assert move_line.reconcile_id.id, "The invoice of 100$ is not fully reconciled"
+ reconcile_a = move_line.reconcile_id.id
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ if move_line.amount_currency == -20.00:
+ assert move_line.credit == 19.00, "Debtor account has wrong entry."
+ elif move_line.amount_currency == -30.00:
+ assert move_line.credit == 28.50, "Debtor account has wrong entry."
+ elif move_line.amount_currency == 5.00:
+ assert move_line.debit == 4.75, "Writeoff amount is wrong."
+ elif move_line.debit == 11.5 and move_line.account_id.reconcile:
+ assert move_line.amount_currency == 0.0 and move_line.reconcile_id.id == reconcile_a, "Exchange difference entry for the invoice of 100$ is wrong"
+ elif move_line.debit == 31.0 and move_line.account_id.reconcile:
+ assert move_line.amount_currency == 0.0 and move_line.reconcile_id.id == reconcile_b, "Exchange difference entry for the invoice of 200$ is wrong"
+-
+ I check the residual amount of Invoice1, should be 0 in residual currency and 0 in amount_residual and paid
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_invoice_jan"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for first Invoice"
+-
+ I check the residual amuont of Invoice2, should be 0 in residual currency and 0 in amount_residual and paid
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_invoice_feb"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for second Invoice"
diff --git a/addons/account_voucher/test/case2_suppl_usd_eur.yml b/addons/account_voucher/test/case2_suppl_usd_eur.yml
new file mode 100644
index 00000000000..31e756d5355
--- /dev/null
+++ b/addons/account_voucher/test/case2_suppl_usd_eur.yml
@@ -0,0 +1,328 @@
+-
+ In order to check the Account_voucher module with multi-currency in OpenERP,
+ I create 2 Invoices in USD and make 2 Payments one in USD and another in EUR, based on the currency rating on that particular date
+-
+ I create a bank journal with EUR as currency
+-
+ !record {model: account.journal, id: bank_journal_EUR}:
+ name: Bank Journal(EUR)
+ code: BEUR
+ type: bank
+ analytic_journal_id: account.sit
+ sequence_id: account.sequence_bank_journal
+ default_debit_account_id: account.cash
+ default_credit_account_id: account.cash
+ currency: base.EUR
+ company_id: base.main_company
+ view_id: account.account_journal_bank_view
+-
+ I create a bank journal with USD as currency
+-
+ !record {model: account.journal, id: bank_journal_USD}:
+ name: Bank Journal(USD)
+ code: BUSD
+ type: bank
+ analytic_journal_id: account.sit
+ sequence_id: account.sequence_bank_journal
+ default_debit_account_id: account.cash
+ default_credit_account_id: account.cash
+ currency: base.USD
+ company_id: base.main_company
+ view_id: account.account_journal_bank_view
+-
+ I create a new partner Robert Clements
+-
+ !record {model: res.partner, id: res_partner_clements0}:
+ address:
+ - city: marseille
+ country_id: base.fr
+ name: Robert
+ street: 1 rue Rockfeller
+ type: invoice
+ zip: '13016'
+ name: Mr.Robert Clements
+-
+ I create the first invoice on 1st January for 200 USD
+-
+ !record {model: account.invoice, id: account_first_invoice_jan_suppl}:
+ account_id: account.a_pay
+ type : in_invoice
+ address_contact_id: base.res_partner_address_3000
+ address_invoice_id: base.res_partner_address_3000
+ company_id: base.main_company
+ currency_id: base.USD
+ date_invoice: !eval "'%s-01-01' %(datetime.now().year)"
+ period_id: account.period_1
+ invoice_line:
+ - account_id: account.a_expense
+ name: '[PC1] Basic PC'
+ price_unit: 200.0
+ quantity: 1.0
+ product_id: product.product_product_pc1
+ uos_id: product.product_uom_unit
+ journal_id: account.sales_journal
+ partner_id: res_partner_clements0
+ reference_type: none
+ check_total : 200
+-
+ I Validate invoice by clicking on Validate button
+-
+ !workflow {model: account.invoice, action: invoice_open, ref: account_first_invoice_jan_suppl}
+-
+ I check that first invoice move is correct for debtor account(debit - credit == -150)
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_suppl"))
+ assert invoice_id.move_id, "Move not created for open invoice"
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.debit - move_line.credit == -150.00), "Invoice move is incorrect for debtors account"
+-
+ I create the second invoice on 1st February for 100 USD
+-
+ !record {model: account.invoice, id: account_second_invoice_feb_suppl}:
+ account_id: account.a_pay
+ address_contact_id: base.res_partner_address_3000
+ address_invoice_id: base.res_partner_address_3000
+ company_id: base.main_company
+ currency_id: base.USD
+ date_invoice: !eval "'%s-02-01' %(datetime.now().year)"
+ period_id: account.period_2
+ type : in_invoice
+ invoice_line:
+ - account_id: account.a_expense
+ name: '[PC1] Basic PC'
+ price_unit: 100.0
+ quantity: 1.0
+ product_id: product.product_product_pc1
+ uos_id: product.product_uom_unit
+ journal_id: account.sales_journal
+ partner_id: res_partner_clements0
+ reference_type: none
+ check_total : 100.0
+-
+ I Validate invoice by clicking on Validate button
+-
+ !workflow {model: account.invoice, action: invoice_open, ref: account_second_invoice_feb_suppl}
+-
+ I check that second invoice move is correct for debtor account (debit - credit == -80)
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb_suppl"))
+ assert invoice_id.move_id, "Move not created for open invoice"
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.debit - move_line.credit == -80), "Invoice move is incorrect for debtors account"
+-
+ I create the first voucher of payment
+
+-
+ !python {model: account.voucher}: |
+ import netsvc, time
+ vals = {}
+ res = self.onchange_partner_id(cr, uid, [], ref("res_partner_clements0"), ref('bank_journal_EUR'), 240.0, 2, ttype='payment', date=False)
+ vals = {
+ 'account_id': ref('account.cash'),
+ 'amount': 240.0,
+ 'company_id': ref('base.main_company'),
+ 'currency_id': ref('base.EUR'),
+ 'journal_id': ref('bank_journal_EUR'),
+ 'partner_id': ref('res_partner_clements0'),
+ 'period_id': ref('account.period_3'),
+ 'type': 'payment',
+ 'date': time.strftime("%Y-03-01"),
+ 'payment_option': 'with_writeoff',
+ 'writeoff_acc_id': ref('account.a_expense'),
+ 'comment': 'Write Off',
+ 'name': 'First payment',
+ }
+ if not res['value']['line_dr_ids']:
+ res['value']['line_dr_ids'] = [{'type': 'dr', 'account_id': ref('account.a_pay'),}]
+ for item in res['value']['line_dr_ids']:
+ if item['amount_unreconciled'] == 200.00:
+ item['amount'] = 180.00
+ else:
+ item['amount'] = 70.00
+ vals['line_dr_ids'] = [(0,0,i) for i in res['value']['line_dr_ids']]
+ id = self.create(cr, uid, vals)
+ voucher_id = self.browse(cr, uid, id)
+ assert (voucher_id.state=='draft'), "Voucher is not in draft state"
+-
+ I check that writeoff amount computed is -15.0
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_clements0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ assert (voucher_id.writeoff_amount == -15.0), "Writeoff amount is not -15.0"
+-
+ I check that currency rate difference is 34.0
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_clements0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ assert (voucher_id.currency_rate_difference == 34.0), "Currency rate difference is not 34.0"
+-
+ I confirm the voucher
+-
+ !python {model: account.voucher}: |
+ import netsvc
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_clements0'))])
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+-
+ I check that the move of my voucher is valid
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_clements0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ assert move_line.state == 'valid', "Voucher move is not valid"
+-
+ I check that my creditor account is correct
+-
+ I check that the creditor account has 2 new lines with 180 and 70 in amount_currency columns and their debit columns are respectively 135 and 56 and currency is USD($).
+-
+ I check that my currency rate difference is correct. -34 in credit with no amount_currency
+-
+ I check that my writeoff is correct. -15 in credit with no amount_currency
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_clements0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ if move_line.amount_currency == 180.00:
+ assert move_line.debit == 135.00, "Creditor account has wrong entry."
+ elif move_line.amount_currency == 70.00:
+ assert move_line.debit == 56.00, "Debtor account has wrong entry."
+ elif move_line.debit == 34.00:
+ assert move_line.amount_currency == 0.00, "Incorrect Currency Difference."
+ elif move_line.debit == 15.00:
+ assert move_line.amount_currency == 0.00, "Writeoff amount is wrong."
+-
+ I check the residual amount of Invoice1, should be 20 in residual currency and 15 in amount_residual
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_suppl"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 20.0 and move_line.amount_residual == 15) , "Residual amount is not correct for first Invoice"
+-
+ I check the residual amuont of Invoice2, should be 30 in residual currency and 24 in amount_residual
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb_suppl"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 30 and move_line.amount_residual == 24) , "Residual amount is not correct for second Invoice"
+-
+ I create the second voucher of payment
+
+-
+ !python {model: account.voucher}: |
+ import netsvc, time
+ vals = {}
+ res = self.onchange_partner_id(cr, uid, [], ref("res_partner_clements0"), ref('bank_journal_EUR'), 45.0, 2, ttype='payment', date=False)
+ vals = {
+ 'account_id': ref('account.cash'),
+ 'amount': 45.0,
+ 'company_id': ref('base.main_company'),
+ 'currency_id': ref('base.USD'),
+ 'journal_id': ref('bank_journal_USD'),
+ 'partner_id': ref('res_partner_clements0'),
+ 'period_id': ref('account.period_3'),
+ 'type': 'payment',
+ 'date': time.strftime("%Y-04-01"),
+ 'payment_option': 'with_writeoff',
+ 'writeoff_acc_id': ref('account.a_expense'),
+ 'comment': 'Write Off',
+ 'name': 'Second payment',
+ }
+ if not res['value']['line_dr_ids']:
+ res['value']['line_dr_ids'] = [{'type': 'dr', 'account_id': ref('account.a_pay'),}]
+ for item in res['value']['line_dr_ids']:
+ if item['amount_unreconciled'] == 20.00:
+ item['amount'] = 20.00
+ else:
+ item['amount'] = 30.00
+ vals['line_dr_ids'] = [(0,0,i) for i in res['value']['line_dr_ids']]
+ id = self.create(cr, uid, vals)
+ voucher_id = self.browse(cr, uid, id)
+ assert (voucher_id.state=='draft'), "Voucher is not in draft state"
+-
+ I check that writeoff amount computed is -5.0
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_clements0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ assert (voucher_id.writeoff_amount == 5.0), "Writeoff amount is not 5.0"
+-
+ I check that currency rate difference is 8.50
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_clements0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ assert (voucher_id.currency_rate_difference == 8.50), "Currency rate difference is not 8.50"
+-
+ I confirm the voucher
+-
+ !python {model: account.voucher}: |
+ import netsvc
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_clements0'))])
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+-
+ I check that my voucher state is posted
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_clements0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ assert voucher_id.state == 'posted', "Voucher state is not posted"
+-
+ I check that my creditor account is correct
+-
+ I check that the creditor account has 2 new lines with 20 and 30 in amount_currency columns and their debit columns are respectively 15 and 24 and currency is USD($).
+-
+ I check that my currency rate difference is correct. 8.50 in debit with no amount_currency
+-
+ I check that my writeoff is correct. 4.75 in credit and 5 in amount_currency
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_clements0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ if move_line.amount_currency == 20.00:
+ assert move_line.debit == 15.00, "Debtor account has wrong entry."
+ elif move_line.amount_currency == 30.00:
+ assert move_line.debit == 24.00, "Debtor account has wrong entry."
+ elif move_line.debit == 8.50:
+ assert move_line.amount_currency == 0.00, "Incorrect Currency Difference."
+ elif move_line.amount_currency == -5.00:
+ assert move_line.credit == 4.75, "Writeoff amount is wrong."
+-
+ I check the residual amount of invoice 1, should be 0 in residual currency and 0 in amount_residual and paid
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_suppl"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for first Invoice"
+-
+ I check the residual amount of invoice 2, should be 0 in residual currency and 0 in amount_residual and paid
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb_suppl"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for second Invoice"
diff --git a/addons/account_voucher/test/case2_usd_eur_debtor_in_eur.yml b/addons/account_voucher/test/case2_usd_eur_debtor_in_eur.yml
new file mode 100644
index 00000000000..b872a54561d
--- /dev/null
+++ b/addons/account_voucher/test/case2_usd_eur_debtor_in_eur.yml
@@ -0,0 +1,340 @@
+-
+ In order to check the Account_voucher module with multi-currency in OpenERP,
+ I create 2 Invoices in USD and make 2 Payments one in USD and another in EUR, based on the currency rating on that particular date
+-
+ I modify the debtor account in order to make sure there is no currency_id linked
+-
+ !python {model: account.account}: |
+ from datetime import datetime
+ ids = self.search(cr, uid, [('name', 'ilike', 'debtor')])
+ self.write(cr, uid, ids, {'currency_id': False})
+-
+ I create currency USD in OpenERP for January of 1.333333 Rate
+-
+ !python {model: res.currency.rate}: |
+ from datetime import datetime
+ curr_id = self.pool.get('res.currency').search(cr, uid, [('name', '=', 'USD')])[0]
+ date = '%s-01-01' %(datetime.now().year)
+ ids = self.search(cr, uid, [('currency_id', '=', curr_id), ('name', '=', date)])
+ self.write(cr, uid, ids, {'rate': 1.333333})
+-
+ I create currency USD in OpenERP for February of 1.250000 Rate
+-
+ !record {model: res.currency.rate, id: febr_usd}:
+ currency_id: base.USD
+ name: !eval "'%s-02-01' %(datetime.now().year)"
+ rate: 1.250000
+-
+ I create currency USD in OpenERP for March of 1.111111 Rate
+-
+ !record {model: res.currency.rate, id: marc_usd}:
+ currency_id: base.USD
+ name: !eval "'%s-03-01' %(datetime.now().year)"
+ rate: 1.111111
+-
+ I create currency USD in OpenERP for April of 1.052632 Rate
+-
+ !record {model: res.currency.rate, id: apri_usd}:
+ currency_id: base.USD
+ name: !eval "'%s-04-01' %(datetime.now().year)"
+ rate: 1.052632
+-
+ I create a bank journal with EUR as currency
+-
+ !record {model: account.journal, id: bank_journal_EUR}:
+ name: Bank Journal(EUR)
+ code: BEUR
+ type: bank
+ analytic_journal_id: account.sit
+ sequence_id: account.sequence_bank_journal
+ default_debit_account_id: account.cash
+ default_credit_account_id: account.cash
+ currency: base.EUR
+ company_id: base.main_company
+ view_id: account.account_journal_bank_view
+-
+ I create a bank journal with USD as currency
+-
+ !record {model: account.journal, id: bank_journal_USD}:
+ name: Bank Journal(USD)
+ code: BUSD
+ type: bank
+ analytic_journal_id: account.sit
+ sequence_id: account.sequence_bank_journal
+ default_debit_account_id: account.cash
+ default_credit_account_id: account.cash
+ currency: base.USD
+ company_id: base.main_company
+ view_id: account.account_journal_bank_view
+-
+ I create a new partner Michael Geller
+-
+ !record {model: res.partner, id: res_partner_michael0}:
+ address:
+ - city: paris
+ country_id: base.fr
+ name: Michael
+ street: 1 rue Rockfeller
+ type: invoice
+ zip: '75016'
+ name: Mr.Michael Geller
+-
+ I create the first invoice on 1st January for 200 USD
+-
+ !record {model: account.invoice, id: account_first_invoice_jan}:
+ account_id: account.a_recv
+ address_contact_id: base.res_partner_address_3000
+ address_invoice_id: base.res_partner_address_3000
+ company_id: base.main_company
+ currency_id: base.USD
+ date_invoice: !eval "'%s-01-01' %(datetime.now().year)"
+ period_id: account.period_1
+ invoice_line:
+ - account_id: account.a_sale
+ name: '[PC1] Basic PC'
+ price_unit: 200.0
+ quantity: 1.0
+ product_id: product.product_product_pc1
+ uos_id: product.product_uom_unit
+ journal_id: account.sales_journal
+ partner_id: res_partner_michael0
+ reference_type: none
+-
+ I Validate invoice by clicking on Validate button
+-
+ !workflow {model: account.invoice, action: invoice_open, ref: account_first_invoice_jan}
+-
+ I check that first invoice move is correct for debtor account(debit - credit == 150)
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan"))
+ assert invoice_id.move_id, "Move not created for open invoice"
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.debit - move_line.credit == 150.00), "Invoice move is incorrect for debtors account"
+-
+ I create the second invoice on 1st February for 100 USD
+-
+ !record {model: account.invoice, id: account_second_invoice_feb}:
+ account_id: account.a_recv
+ address_contact_id: base.res_partner_address_3000
+ address_invoice_id: base.res_partner_address_3000
+ company_id: base.main_company
+ currency_id: base.USD
+ date_invoice: !eval "'%s-02-01' %(datetime.now().year)"
+ period_id: account.period_2
+ invoice_line:
+ - account_id: account.a_sale
+ name: '[PC1] Basic PC'
+ price_unit: 100.0
+ quantity: 1.0
+ product_id: product.product_product_pc1
+ uos_id: product.product_uom_unit
+ journal_id: account.sales_journal
+ partner_id: res_partner_michael0
+ reference_type: none
+-
+ I Validate invoice by clicking on Validate button
+-
+ !workflow {model: account.invoice, action: invoice_open, ref: account_second_invoice_feb}
+-
+ I check that second invoice move is correct for debtor account (debit - credit == 80)
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb"))
+ assert invoice_id.move_id, "Move not created for open invoice"
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.debit - move_line.credit == 80), "Invoice move is incorrect for debtors account"
+-
+ I create the first voucher of payment
+
+-
+ !python {model: account.voucher}: |
+ import netsvc, time
+ vals = {}
+ res = self.onchange_partner_id(cr, uid, [], ref("res_partner_michael0"), ref('bank_journal_EUR'), 240.0, 2, ttype='receipt', date=False)
+ vals = {
+ 'account_id': ref('account.cash'),
+ 'amount': 200.0,
+ 'company_id': ref('base.main_company'),
+ 'currency_id': ref('base.EUR'),
+ 'journal_id': ref('bank_journal_EUR'),
+ 'partner_id': ref('res_partner_michael0'),
+ 'period_id': ref('account.period_3'),
+ 'type': 'receipt',
+ 'date': time.strftime("%Y-03-01"),
+ 'payment_option': 'with_writeoff',
+ 'writeoff_acc_id': ref('account.a_expense'),
+ 'comment': 'Write Off',
+ 'name': 'First payment',
+ }
+ if not res['value']['line_cr_ids']:
+ res['value']['line_cr_ids'] = [{'type': 'cr', 'account_id': ref('account.a_recv'),}]
+ for item in res['value']['line_cr_ids']:
+ if item['amount_unreconciled'] == 150.00:
+ item['amount'] = 130.00
+ else:
+ item['amount'] = 70.00
+ vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
+ id = self.create(cr, uid, vals)
+ voucher_id = self.browse(cr, uid, id)
+ assert (voucher_id.state=='draft'), "Voucher is not in draft state"
+-
+ I confirm the voucher
+-
+ !python {model: account.voucher}: |
+ import netsvc
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_michael0'))])
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+-
+ I check that the move of my voucher is valid
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_michael0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ assert move_line.state == 'valid', "Voucher move is not valid"
+-
+ I check that my debtor account is correct
+-
+ I check that the debtor account has 2 new lines with 0 in amount_currency columns and their credit columns are 130 and 70
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_michael0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ assert move_line.amount_currency == 0.00, "A line has the 'amount_currency' column filled"
+-
+ I check the residual amount of Invoice1, should be 55.56 in residual currency and 20 in amount_residual
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 55.56 and move_line.amount_residual == 20) , "Residual amount is not correct for first Invoice"
+- toto
+ I check the residual amuont of Invoice2, should be 22.22 in residual currency and 10 in amount_residual
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 22.22 and move_line.amount_residual == 10) , "Residual amount is not correct for second Invoice"
+-
+ I create the second voucher of payment
+
+-
+ !python {model: account.voucher}: |
+ import netsvc, time
+ vals = {}
+ res = self.onchange_partner_id(cr, uid, [], ref("res_partner_michael0"), ref('bank_journal_USD'), 80.0, 2, ttype='receipt', date=False)
+ vals = {
+ 'account_id': ref('account.cash'),
+ 'amount': 80.0,
+ 'company_id': ref('base.main_company'),
+ 'currency_id': ref('base.USD'),
+ 'journal_id': ref('bank_journal_USD'),
+ 'partner_id': ref('res_partner_michael0'),
+ 'period_id': ref('account.period_3'),
+ 'type': 'receipt',
+ 'date': time.strftime("%Y-04-01"),
+ 'payment_option': 'with_writeoff',
+ 'writeoff_acc_id': ref('account.a_expense'),
+ 'exchange_acc_id': ref('account.o_expense'),
+ 'comment': 'Write Off',
+ 'name': 'Second payment',
+ }
+ if not res['value']['line_cr_ids']:
+ res['value']['line_cr_ids'] = [{'type': 'cr', 'account_id': ref('account.a_recv'),}]
+ for item in res['value']['line_cr_ids']:
+ if item['amount_unreconciled'] == 55.56:
+ item['amount'] = 55.56
+ else:
+ item['amount'] = 22.22
+ vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
+ id = self.create(cr, uid, vals)
+ voucher_id = self.browse(cr, uid, id)
+ assert (voucher_id.state=='draft'), "Voucher is not in draft state"
+-
+ I check that writeoff amount computed is 2.22
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_michael0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ assert (round(voucher_id.writeoff_amount, 2) == 2.22), "Writeoff amount is not 2.22$"
+-
+ I confirm the voucher
+-
+ !python {model: account.voucher}: |
+ import netsvc
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_michael0'))])
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+-
+ I check that my voucher state is posted
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_michael0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ assert voucher_id.state == 'posted', "Voucher state is not posted"
+-
+ I check that my debtor account is correct
+-
+ I check that the debtor account has 2 new lines with -55.56 and -22.22 in amount_currency columns and their credit columns are respectively 52.78 and 21.11 and currency is USD($).
+-
+ I check that my currency rate difference is correct.
+-
+ I check that my writeoff is correct. 2.11 in credit and 2.22 in amount_currency
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_michael0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ reconcile_a = reconcile_b = False
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ if move_line.amount_currency == -22.22:
+ assert move_line.reconcile_id.id, "The invoice of 200$ is not fully reconciled"
+ reconcile_b = move_line.reconcile_id.id
+ elif move_line.amount_currency == -55.56:
+ assert move_line.reconcile_id.id, "The invoice of 100$ is not fully reconciled"
+ reconcile_a = move_line.reconcile_id.id
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ if move_line.amount_currency == -55.56:
+ assert move_line.credit == 52.78, "Debtor account has wrong entry."
+ elif move_line.amount_currency == -22.22:
+ assert move_line.credit == 21.11, "Debtor account has wrong entry."
+ elif move_line.credit == 11.11 and move_line.account_id.reconcile:
+ assert move_line.amount_currency == 0.00 and move_line.reconcile_id.id == reconcile_b, "Incorrect Currency Difference."
+ elif move_line.credit == 32.78 and move_line.account_id.reconcile:
+ assert move_line.amount_currency == 0.00 and move_line.reconcile_id.id == reconcile_a, "Incorrect Currency Difference."
+ elif move_line.amount_currency == 2.22:
+ assert move_line.credit == 2.11, "Writeoff amount is wrong."
+-
+ I check the residual amount of invoice 1, should be 0 in residual currency and 0 in amount_residual and paid
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for first Invoice"
+-
+ I check the residual amuont of invoice 2, should be 0 in residual currency and 0 in amount_residual and paid
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for second Invoice"
diff --git a/addons/account_voucher/test/case2_usd_eur_debtor_in_usd.yml b/addons/account_voucher/test/case2_usd_eur_debtor_in_usd.yml
new file mode 100644
index 00000000000..8fc495d79c8
--- /dev/null
+++ b/addons/account_voucher/test/case2_usd_eur_debtor_in_usd.yml
@@ -0,0 +1,343 @@
+-
+ In order to check the Account_voucher module with multi-currency in OpenERP,
+ I create 2 Invoices in USD and make 2 Payments one in USD and another in EUR, based on the currency rating on that particular date
+-
+ I modify the debtor account in order to set the currency_id = USD
+-
+ !python {model: account.account}: |
+ from datetime import datetime
+ ids = self.search(cr, uid, [('name', 'ilike', 'debtor')])
+ self.write(cr, uid, ids, {'currency_id': ref('base.USD')})
+-
+ I create currency USD in OpenERP for January of 1.333333 Rate
+-
+ !python {model: res.currency.rate}: |
+ from datetime import datetime
+ curr_id = self.pool.get('res.currency').search(cr, uid, [('name', '=', 'USD')])[0]
+ date = '%s-01-01' %(datetime.now().year)
+ ids = self.search(cr, uid, [('currency_id', '=', curr_id), ('name', '=', date)])
+ self.write(cr, uid, ids, {'rate': 1.333333})
+-
+ I create currency USD in OpenERP for February of 1.250000 Rate
+-
+ !record {model: res.currency.rate, id: febr_usd}:
+ currency_id: base.USD
+ name: !eval "'%s-02-01' %(datetime.now().year)"
+ rate: 1.250000
+-
+ I create currency USD in OpenERP for March of 1.111111 Rate
+-
+ !record {model: res.currency.rate, id: marc_usd}:
+ currency_id: base.USD
+ name: !eval "'%s-03-01' %(datetime.now().year)"
+ rate: 1.111111
+-
+ I create currency USD in OpenERP for April of 1.052632 Rate
+-
+ !record {model: res.currency.rate, id: apri_usd}:
+ currency_id: base.USD
+ name: !eval "'%s-04-01' %(datetime.now().year)"
+ rate: 1.052632
+-
+ I create a bank journal with EUR as currency
+-
+ !record {model: account.journal, id: bank_journal_EUR}:
+ name: Bank Journal(EUR)
+ code: BEUR
+ type: bank
+ analytic_journal_id: account.sit
+ sequence_id: account.sequence_bank_journal
+ default_debit_account_id: account.cash
+ default_credit_account_id: account.cash
+ currency: base.EUR
+ company_id: base.main_company
+ view_id: account.account_journal_bank_view
+-
+ I create a bank journal with USD as currency
+-
+ !record {model: account.journal, id: bank_journal_USD}:
+ name: Bank Journal(USD)
+ code: BUSD
+ type: bank
+ analytic_journal_id: account.sit
+ sequence_id: account.sequence_bank_journal
+ default_debit_account_id: account.cash
+ default_credit_account_id: account.cash
+ currency: base.USD
+ company_id: base.main_company
+ view_id: account.account_journal_bank_view
+-
+ I create a new partner Michal Gallette
+-
+ !record {model: res.partner, id: res_partner_michal1}:
+ address:
+ - city: paris
+ country_id: base.fr
+ name: Michal
+ street: 1 rue Rockfeller
+ type: invoice
+ zip: '75016'
+ name: Mr.Michal Gallette
+-
+ I create the first invoice on 1st January for 200 USD
+-
+ !record {model: account.invoice, id: account_first_invoice_jan_michal}:
+ account_id: account.a_recv
+ address_contact_id: base.res_partner_address_3000
+ address_invoice_id: base.res_partner_address_3000
+ company_id: base.main_company
+ currency_id: base.USD
+ date_invoice: !eval "'%s-01-01' %(datetime.now().year)"
+ period_id: account.period_1
+ invoice_line:
+ - account_id: account.a_sale
+ name: '[PC1] Basic PC'
+ price_unit: 200.0
+ quantity: 1.0
+ product_id: product.product_product_pc1
+ uos_id: product.product_uom_unit
+ journal_id: account.sales_journal
+ partner_id: res_partner_michal1
+ reference_type: none
+-
+ I Validate invoice by clicking on Validate button
+-
+ !workflow {model: account.invoice, action: invoice_open, ref: account_first_invoice_jan_michal}
+-
+ I check that first invoice move is correct for debtor account(debit - credit == 150)
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_michal"))
+ assert invoice_id.move_id, "Move not created for open invoice"
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.debit - move_line.credit == 150.00), "Invoice move is incorrect for debtors account"
+-
+ I create the second invoice on 1st February for 100 USD
+-
+ !record {model: account.invoice, id: account_second_invoice_feb_michal}:
+ account_id: account.a_recv
+ address_contact_id: base.res_partner_address_3000
+ address_invoice_id: base.res_partner_address_3000
+ company_id: base.main_company
+ currency_id: base.USD
+ date_invoice: !eval "'%s-02-01' %(datetime.now().year)"
+ period_id: account.period_2
+ invoice_line:
+ - account_id: account.a_sale
+ name: '[PC1] Basic PC'
+ price_unit: 100.0
+ quantity: 1.0
+ product_id: product.product_product_pc1
+ uos_id: product.product_uom_unit
+ journal_id: account.sales_journal
+ partner_id: res_partner_michal1
+ reference_type: none
+-
+ I Validate invoice by clicking on Validate button
+-
+ !workflow {model: account.invoice, action: invoice_open, ref: account_second_invoice_feb_michal}
+-
+ I check that second invoice move is correct for debtor account (debit - credit == 80)
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb_michal"))
+ assert invoice_id.move_id, "Move not created for open invoice"
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.debit - move_line.credit == 80), "Invoice move is incorrect for debtors account"
+-
+ I create the first voucher of payment
+
+-
+ !python {model: account.voucher}: |
+ import netsvc, time
+ vals = {}
+ res = self.onchange_partner_id(cr, uid, [], ref("res_partner_michal1"), ref('bank_journal_EUR'), 200.0, 2, ttype='receipt', date=False)
+ vals = {
+ 'account_id': ref('account.cash'),
+ 'amount': 200.0,
+ 'company_id': ref('base.main_company'),
+ 'currency_id': ref('base.EUR'),
+ 'journal_id': ref('bank_journal_EUR'),
+ 'partner_id': ref('res_partner_michal1'),
+ 'period_id': ref('account.period_3'),
+ 'type': 'receipt',
+ 'date': time.strftime("%Y-03-01"),
+ 'payment_option': 'with_writeoff',
+ 'writeoff_acc_id': ref('account.a_expense'),
+ 'comment': 'Write Off',
+ 'name': 'First payment',
+ }
+ if not res['value']['line_cr_ids']:
+ res['value']['line_cr_ids'] = [{'type': 'cr', 'account_id': ref('account.a_recv'),}]
+ for item in res['value']['line_cr_ids']:
+ if item['amount_unreconciled'] == 150.00:
+ item['amount'] = 130.00
+ else:
+ item['amount'] = 70.00
+ vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
+ id = self.create(cr, uid, vals)
+ voucher_id = self.browse(cr, uid, id)
+ assert (voucher_id.state=='draft'), "Voucher is not in draft state"
+-
+ I confirm the voucher
+-
+ !python {model: account.voucher}: |
+ import netsvc
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_michal1'))])
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+-
+ I check that the move of my voucher is valid
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_michal1'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ assert move_line.state == 'valid', "Voucher move is not valid"
+-
+ I check that my debtor account is correct
+-
+ I check that the debtor account has 2 new lines with 144.44 and 77.78 in amount_currency columns and their credit columns are 130 and 70
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_michal1'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ if move_line.credit == 70.0:
+ assert move_line.amount_currency == -77.78, "Wrong debtor entry"
+ if move_line.credit == 130.0:
+ assert move_line.amount_currency == -144.44, "Wrong debtor entry"
+-
+ I check the residual amount of Invoice1, should be 55.56 in residual currency and 20 in amount_residual
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_michal"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 55.56 and move_line.amount_residual == 20) , "Residual amount is not correct for first Invoice"
+- toto
+ I check the residual amuont of Invoice2, should be 22.22 in residual currency and 10 in amount_residual
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb_michal"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 22.22 and move_line.amount_residual == 10) , "Residual amount is not correct for second Invoice"
+-
+ I create the second voucher of payment
+
+-
+ !python {model: account.voucher}: |
+ import netsvc, time
+ vals = {}
+ res = self.onchange_partner_id(cr, uid, [], ref("res_partner_michal1"), ref('bank_journal_USD'), 80.0, 2, ttype='receipt', date=False)
+ vals = {
+ 'account_id': ref('account.cash'),
+ 'amount': 80.0,
+ 'company_id': ref('base.main_company'),
+ 'currency_id': ref('base.USD'),
+ 'journal_id': ref('bank_journal_USD'),
+ 'partner_id': ref('res_partner_michal1'),
+ 'period_id': ref('account.period_3'),
+ 'type': 'receipt',
+ 'date': time.strftime("%Y-04-01"),
+ 'payment_option': 'with_writeoff',
+ 'writeoff_acc_id': ref('account.a_expense'),
+ 'exchange_acc_id': ref('account.o_expense'),
+ 'comment': 'Write Off',
+ 'name': 'Second payment',
+ }
+ if not res['value']['line_cr_ids']:
+ res['value']['line_cr_ids'] = [{'type': 'cr', 'account_id': ref('account.a_recv'),}]
+ for item in res['value']['line_cr_ids']:
+ if item['amount_unreconciled'] == 55.56:
+ item['amount'] = 55.56
+ else:
+ item['amount'] = 22.22
+ vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
+ id = self.create(cr, uid, vals)
+ voucher_id = self.browse(cr, uid, id)
+ assert (voucher_id.state=='draft'), "Voucher is not in draft state"
+-
+ I check that writeoff amount computed is 2.22
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_michal1'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ assert (round(voucher_id.writeoff_amount, 2) == 2.22), "Writeoff amount is not 2.22$"
+-
+ I confirm the voucher
+-
+ !python {model: account.voucher}: |
+ import netsvc
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_michal1'))])
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+-
+ I check that my voucher state is posted
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_michal1'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ assert voucher_id.state == 'posted', "Voucher state is not posted"
+-
+ I check that my debtor account is correct
+-
+ I check that the debtor account has 2 new lines with -55.56 and -22.22 in amount_currency columns and their credit columns are respectively 52.78 and 21.11 and currency is USD($).
+-
+ I check that my currency rate difference is correct.
+-
+ I check that my writeoff is correct. 2.11 in credit and 2.22 in amount_currency
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_michal1'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ reconcile_a = reconcile_b = False
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ if move_line.amount_currency == -22.22:
+ assert move_line.reconcile_id.id, "The invoice of 200$ is not fully reconciled"
+ reconcile_b = move_line.reconcile_id.id
+ elif move_line.amount_currency == -55.56:
+ assert move_line.reconcile_id.id, "The invoice of 100$ is not fully reconciled"
+ reconcile_a = move_line.reconcile_id.id
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ if move_line.amount_currency == -55.56:
+ assert move_line.credit == 52.78, "Debtor account has wrong entry."
+ elif move_line.amount_currency == -22.22:
+ assert move_line.credit == 21.11, "Debtor account has wrong entry."
+ elif move_line.credit == 11.11 and move_line.account_id.reconcile:
+ assert move_line.amount_currency == 0.00 and move_line.reconcile_id.id == reconcile_b, "Incorrect Currency Difference."
+ elif move_line.credit == 32.78 and move_line.account_id.reconcile:
+ assert move_line.amount_currency == 0.00 and move_line.reconcile_id.id == reconcile_a, "Incorrect Currency Difference."
+ elif move_line.amount_currency == 2.22:
+ assert move_line.credit == 2.11, "Writeoff amount is wrong."
+-
+ I check the residual amount of invoice 1, should be 0 in residual currency and 0 in amount_residual and paid
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_michal"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for first Invoice"
+-
+ I check the residual amuont of invoice 2, should be 0 in residual currency and 0 in amount_residual and paid
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb_michal"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for second Invoice"
diff --git a/addons/account_voucher/test/case3_eur_eur.yml b/addons/account_voucher/test/case3_eur_eur.yml
new file mode 100644
index 00000000000..374f40607bd
--- /dev/null
+++ b/addons/account_voucher/test/case3_eur_eur.yml
@@ -0,0 +1,297 @@
+-
+ In order to check the Account_voucher module with multi-currency in OpenERP,
+ I create 2 Invoices in EUR and make 2 Payments in EUR based on the currency rating on that particular date.
+-
+ I create currency EUR in OpenERP for January of 1.000000 Rate
+-
+ !record {model: res.currency.rate, id: jan_eur}:
+ currency_id: base.EUR
+ name: !eval "'%s-01-01' %(datetime.now().year)"
+ rate: 1.000000
+-
+ I modify the debtor account in order to make sure there is no currency_id linked
+-
+ !python {model: account.account}: |
+ from datetime import datetime
+ ids = self.search(cr, uid, [('name', 'ilike', 'debtor')])
+ self.write(cr, uid, ids, {'currency_id': False})
+-
+ I create a bank journal with EUR as currency
+-
+ !record {model: account.journal, id: bank_journal_EUR}:
+ name: Bank Journal(EUR)
+ code: BEUR
+ type: bank
+ analytic_journal_id: account.sit
+ sequence_id: account.sequence_bank_journal
+ default_debit_account_id: account.cash
+ default_credit_account_id: account.cash
+ currency: base.EUR
+ company_id: base.main_company
+ view_id: account.account_journal_bank_view
+-
+ I create a new partner Peter Lawson.
+-
+ !record {model: res.partner, id: res_partner_peter0}:
+ address:
+ - city: paris
+ country_id: base.fr
+ name: Peter
+ street: 1 rue Rockfeller
+ type: invoice
+ zip: '75016'
+ name: Mr.Peter Lawson
+-
+ I create the first invoice on 1st January for 150 EUR
+-
+ !record {model: account.invoice, id: account_first_invoice_jan_eur}:
+ account_id: account.a_recv
+ address_contact_id: base.res_partner_address_3000
+ address_invoice_id: base.res_partner_address_3000
+ company_id: base.main_company
+ currency_id: base.EUR
+ date_invoice: !eval "'%s-01-01' %(datetime.now().year)"
+ period_id: account.period_1
+ invoice_line:
+ - account_id: account.a_sale
+ name: '[PC1] Basic PC'
+ price_unit: 150.0
+ quantity: 1.0
+ product_id: product.product_product_pc1
+ uos_id: product.product_uom_unit
+ journal_id: account.sales_journal
+ partner_id: res_partner_peter0
+ reference_type: none
+-
+ I Validate invoice by clicking on Validate button
+-
+ !workflow {model: account.invoice, action: invoice_open, ref: account_first_invoice_jan_eur}
+-
+ I check that first invoice move is correct for debtor account(debit - credit == 150)
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_eur"))
+ assert invoice_id.move_id, "Move not created for open invoice"
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.debit - move_line.credit == 150.00), "Invoice move is incorrect for debtors account"
+-
+ I create the second invoice on 1st February for 80 EUR
+-
+ !record {model: account.invoice, id: account_second_invoice_feb_eur}:
+ account_id: account.a_recv
+ address_contact_id: base.res_partner_address_3000
+ address_invoice_id: base.res_partner_address_3000
+ company_id: base.main_company
+ currency_id: base.EUR
+ date_invoice: !eval "'%s-02-01' %(datetime.now().year)"
+ period_id: account.period_1
+ invoice_line:
+ - account_id: account.a_sale
+ name: '[PC1] Basic PC'
+ price_unit: 80.0
+ quantity: 1.0
+ product_id: product.product_product_pc1
+ uos_id: product.product_uom_unit
+ journal_id: account.sales_journal
+ partner_id: res_partner_peter0
+ reference_type: none
+-
+ I Validate invoice by clicking on Validate button
+-
+ !workflow {model: account.invoice, action: invoice_open, ref: account_second_invoice_feb_eur}
+-
+ I check that second invoice move is correct for debtor account (debit - credit == 80)
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb_eur"))
+ assert invoice_id.move_id, "Move not created for open invoice"
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.debit - move_line.credit == 80.00), "Invoice move is incorrect for debtors account"
+-
+ I create the first voucher of payment
+
+-
+ !python {model: account.voucher}: |
+ import netsvc, time
+ vals = {}
+ res = self.onchange_partner_id(cr, uid, [], ref("res_partner_peter0"), ref('bank_journal_EUR'), 120.00, 2, ttype='receipt', date=False)
+ vals = {
+ 'account_id': ref('account.cash'),
+ 'amount': 120.00,
+ 'company_id': ref('base.main_company'),
+ 'currency_id': ref('base.EUR'),
+ 'journal_id': ref('bank_journal_EUR'),
+ 'partner_id': ref('res_partner_peter0'),
+ 'period_id': ref('account.period_3'),
+ 'type': 'receipt',
+ 'date': time.strftime("%Y-03-01"),
+ 'payment_option': 'with_writeoff',
+ 'writeoff_acc_id': ref('account.a_expense'),
+ 'comment': 'Write Off',
+ 'name': 'First payment',
+ }
+ if not res['value']['line_cr_ids']:
+ res['value']['line_cr_ids'] = [{'type': 'cr', 'account_id': ref('account.a_recv'),}]
+ for item in res['value']['line_cr_ids']:
+ if item['amount_unreconciled'] == 150.00:
+ item['amount'] = 100.00
+ else:
+ item['amount'] = 20.00
+ vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
+ id = self.create(cr, uid, vals)
+ voucher_id = self.browse(cr, uid, id)
+ assert (voucher_id.state=='draft'), "Voucher is not in draft state"
+-
+ I check that writeoff amount computed is 0.00
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'),('partner_id', '=', ref('res_partner_peter0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ assert (voucher_id.writeoff_amount == 0.00), "Writeoff amount is not 0.00"
+-
+ I confirm the voucher
+-
+ !python {model: account.voucher}: |
+ import netsvc
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'),('partner_id', '=', ref('res_partner_peter0'))])
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+-
+ I check that the move of my first voucher is valid
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'),('partner_id', '=', ref('res_partner_peter0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ assert move_line.state == 'valid', "Voucher move is not valid"
+-
+ I check that my debtor account is correct
+-
+ I check that the debtor account has 2 new lines with 0.00 and 0.00 in amount_currency columns and their credit are 20 and 100 respectively
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'),('partner_id', '=', ref('res_partner_peter0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ if move_line.credit == 20.00:
+ assert move_line.amount_currency == 0.00, "Debtor account has wrong entry."
+ elif move_line.credit == 100.00:
+ assert move_line.amount_currency == 0.00, "Debtor account has wrong entry."
+-
+ I check the residual amount of Invoice1 is 50
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_eur"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 50.0 and move_line.amount_residual == 50.0) , "Residual amount is not correct for first Invoice"
+-
+ I check the residual amuont of Invoice2 is 60
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb_eur"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 60.0 and move_line.amount_residual == 60.0) , "Residual amount is not correct for second Invoice"
+-
+ I create the second voucher of payment and check to let open the debtor overpaid amount.
+
+-
+ !python {model: account.voucher}: |
+ import netsvc, time
+ vals = {}
+ res = self.onchange_partner_id(cr, uid, [], ref("res_partner_peter0"), ref('bank_journal_EUR'), 120.00, 2, ttype='receipt', date=False)
+ vals = {
+ 'account_id': ref('account.cash'),
+ 'amount': 120.00,
+ 'company_id': ref('base.main_company'),
+ 'currency_id': ref('base.EUR'),
+ 'journal_id': ref('bank_journal_EUR'),
+ 'partner_id': ref('res_partner_peter0'),
+ 'period_id': ref('account.period_3'),
+ 'type': 'receipt',
+ 'date': time.strftime("%Y-04-01"),
+ 'payment_option': 'with_writeoff',
+ 'writeoff_acc_id': ref('account.a_expense'),
+ 'comment': 'Write Off',
+ 'name': 'Second payment',
+ }
+ if not res['value']['line_cr_ids']:
+ res['value']['line_cr_ids'] = [{'type': 'cr', 'account_id': ref('account.a_recv'),}]
+ for item in res['value']['line_cr_ids']:
+ if item['amount_unreconciled'] == 50.00:
+ item['amount'] = 50.00
+ elif item['amount_unreconciled'] == 60.00:
+ item['amount'] = 70.00
+ vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
+ id = self.create(cr, uid, vals)
+ voucher_id = self.browse(cr, uid, id)
+ assert (voucher_id.state=='draft'), "Voucher is not in draft state"
+-
+ I check that writeoff amount computed is 0.00
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'),('partner_id', '=', ref('res_partner_peter0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ assert (voucher_id.writeoff_amount == 0.00), "Writeoff amount is not 0"
+-
+ I confirm the voucher
+-
+ !python {model: account.voucher}: |
+ import netsvc
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_peter0'))])
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+-
+ I check that the move of my second voucher is valid
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_peter0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ assert move_line.state == 'valid', "Voucher move is not valid"
+-
+ I check that my debtor account is correct
+-
+ I check that the debtor account has 2 new lines with 0.00 and 0.00 in amount_currency columns and their credit are 70 and 50
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_peter0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ if move_line.credit == 70.00:
+ assert move_line.amount_currency == 0.00, "Debtor account has wrong entry."
+ elif move_line.credit == 50.00:
+ assert move_line.amount_currency == 0.00, "Debtor account has wrong entry."
+-
+ I check the residual amount of Invoice1 is 0
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_eur"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 0 and move_line.amount_residual == 0) , "Residual amount is not correct for first Invoice"
+-
+ I check the residual amuont of Invoice2 is -10
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb_eur"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == -10.0 and move_line.amount_residual == -10.0) , "Residual amount is not correct for second Invoice"
diff --git a/addons/account_voucher/test/case4_cad_chf.yml b/addons/account_voucher/test/case4_cad_chf.yml
new file mode 100644
index 00000000000..deaf341d1c0
--- /dev/null
+++ b/addons/account_voucher/test/case4_cad_chf.yml
@@ -0,0 +1,185 @@
+-
+ In order to check the Account_voucher module with multi-currency in OpenERP,
+ I create an invoice in CAD and make its Payment in CHF based on the currency rating on that particular date.
+-
+ I create currency CAD in OpenERP for January of 1.338800 Rate
+-
+ !record {model: res.currency.rate, id: jan_cad}:
+ currency_id: base.CAD
+ name: !eval "'%s-01-01' %(datetime.now().year)"
+ rate: 1.338800
+-
+ I create currency CAD in OpenERP for March of 2.000000 Rate
+-
+ !record {model: res.currency.rate, id: mar_cad}:
+ currency_id: base.CAD
+ name: !eval "'%s-03-01' %(datetime.now().year)"
+ rate: 2.000000
+-
+ I create currency CHF in OpenERP for January of 1.308600 Rate
+-
+ !record {model: res.currency.rate, id: jan_chf}:
+ currency_id: base.CHF
+ name: !eval "'%s-01-01' %(datetime.now().year)"
+ rate: 1.308600
+-
+ I create currency CHF in OpenERP for March of 1.250000 Rate
+-
+ !record {model: res.currency.rate, id: mar_chf}:
+ currency_id: base.CHF
+ name: !eval "'%s-03-01' %(datetime.now().year)"
+ rate: 1.25000
+-
+ I create a bank journal with CHF as currency
+-
+ !record {model: account.journal, id: bank_journal_CHF}:
+ name: Bank Journal(CHF)
+ code: BCHF
+ type: bank
+ analytic_journal_id: account.sit
+ sequence_id: account.sequence_bank_journal
+ default_debit_account_id: account.cash
+ default_credit_account_id: account.cash
+ currency: base.CHF
+ company_id: base.main_company
+ view_id: account.account_journal_bank_view
+-
+ I create a new partner John Armani.
+-
+ !record {model: res.partner, id: res_partner_john0}:
+ address:
+ - city: paris
+ country_id: base.fr
+ name: John
+ street: 1 rue Rockfeller
+ type: invoice
+ zip: '75016'
+ name: Mr.John Armani
+-
+ I create the first invoice on 1st January for 200 CAD
+-
+ !record {model: account.invoice, id: account_first_invoice_jan_cad}:
+ account_id: account.a_recv
+ address_contact_id: base.res_partner_address_3000
+ address_invoice_id: base.res_partner_address_3000
+ company_id: base.main_company
+ currency_id: base.CAD
+ date_invoice: !eval "'%s-01-01' %(datetime.now().year)"
+ period_id: account.period_1
+ invoice_line:
+ - account_id: account.a_sale
+ name: '[PC1] Basic PC'
+ price_unit: 200.0
+ quantity: 1.0
+ product_id: product.product_product_pc1
+ uos_id: product.product_uom_unit
+ journal_id: account.sales_journal
+ partner_id: res_partner_john0
+ reference_type: none
+-
+ I Validate invoice by clicking on Validate button
+-
+ !workflow {model: account.invoice, action: invoice_open, ref: account_first_invoice_jan_cad}
+-
+ I check that first invoice move is correct for debtor account (debit - credit == 149.39)
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_cad"))
+ assert invoice_id.move_id, "Move not created for open invoice"
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.debit - move_line.credit == 149.39), "Invoice move is incorrect for debtors account"
+-
+ I create the first voucher of payment
+
+-
+ !python {model: account.voucher}: |
+ import netsvc, time
+ vals = {}
+ res = self.onchange_partner_id(cr, uid, [], ref("res_partner_john0"), ref('bank_journal_CHF'), 200.00, 2, ttype='receipt', date=False)
+ vals = {
+ 'account_id': ref('account.cash'),
+ 'amount': 200.00,
+ 'company_id': ref('base.main_company'),
+ 'currency_id': ref('base.CHF'),
+ 'journal_id': ref('bank_journal_CHF'),
+ 'partner_id': ref('res_partner_john0'),
+ 'period_id': ref('account.period_3'),
+ 'type': 'receipt',
+ 'date': time.strftime("%Y-03-01"),
+ 'payment_option': 'with_writeoff',
+ 'writeoff_acc_id': ref('account.a_expense'),
+ 'exchange_acc_id': ref('account.o_expense'),
+ 'comment': 'Write Off',
+ 'name': 'First payment',
+ }
+ if not res['value']['line_cr_ids']:
+ res['value']['line_cr_ids'] = [{'type': 'cr', 'account_id': ref('account.a_recv'),}]
+ for item in res['value']['line_cr_ids']:
+ if item['amount_unreconciled'] == 186.74:
+ item['amount'] = 186.74
+ vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
+ id = self.create(cr, uid, vals)
+ voucher_id = self.browse(cr, uid, id)
+ assert (voucher_id.state=='draft'), "Voucher is not in draft state"
+-
+ I check that writeoff amount computed is 13.26
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_john0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ assert (round(voucher_id.writeoff_amount,2) == 13.26), "Writeoff amount is not 13.26 CHF"
+-
+ I confirm the voucher
+-
+ !python {model: account.voucher}: |
+ import netsvc
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_john0'))])
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+-
+ I check that the move of my voucher is valid
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_john0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ assert move_line.state == 'valid', "Voucher move is not valid"
+ assert voucher_id.state == 'posted', "Voucher state is not posted"
+-
+ I check that my debtor account is correct
+-
+ I check that the debtor account has 1 new line with -186.74 as amount_currency columns and 149.39 of credit and currency is CHF.
+-
+ I check that my currency rate difference is correct. 0 in debit with no amount_currency
+-
+ I check that my writeoff is correct. 11.05 credit and 13.26 amount_currency
+-
+ !python {model: account.voucher}: |
+ voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_john0'))])
+ voucher_id = self.browse(cr, uid, voucher[0])
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
+ for move_line in move_line_obj.browse(cr, uid, move_lines):
+ if move_line.amount_currency == 200:
+ assert move_line.debit == 160.00, "Bank account has wrong entry."
+ elif move_line.amount_currency == -186.74:
+ assert move_line.credit == 149.39, "Debtor account has wrong entry."
+ elif move_line.debit == 0.00 and move_line.credit == 0.00:
+ assert move_line.amount_currency == 0.00, "Incorrect Currency Difference."
+ elif move_line.credit == 10.61:
+ assert move_line.amount_currency == 13.26, "Writeoff amount is wrong."
+ else:
+ assert False, "Wrong entry"
+-
+ I check the residual amount of Invoice1, should be 0 in residual currency and 0 in amount_residual and paid
+-
+ !python {model: account.invoice}: |
+ invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_cad"))
+ move_line_obj = self.pool.get('account.move.line')
+ move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
+ move_line = move_line_obj.browse(cr, uid, move_lines[0])
+ assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for first Invoice"
diff --git a/addons/anonymization/i18n/et.po b/addons/anonymization/i18n/et.po
new file mode 100644
index 00000000000..c4b0a66617f
--- /dev/null
+++ b/addons/anonymization/i18n/et.po
@@ -0,0 +1,226 @@
+# Estonian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:14+0000\n"
+"PO-Revision-Date: 2011-10-11 18:09+0000\n"
+"Last-Translator: Aare Vesi \n"
+"Language-Team: Estonian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-10-12 04:40+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
+
+#. module: anonymization
+#: model:ir.model,name:anonymization.model_ir_model_fields_anonymize_wizard
+msgid "ir.model.fields.anonymize.wizard"
+msgstr ""
+
+#. module: anonymization
+#: field:ir.model.fields.anonymization,field_name:0
+msgid "Field Name"
+msgstr "Välja Nimi:"
+
+#. module: anonymization
+#: field:ir.model.fields.anonymization,field_id:0
+msgid "Field"
+msgstr "Väli"
+
+#. module: anonymization
+#: field:ir.model.fields.anonymization.history,state:0
+#: field:ir.model.fields.anonymize.wizard,state:0
+msgid "State"
+msgstr ""
+
+#. module: anonymization
+#: field:ir.model.fields.anonymize.wizard,file_import:0
+msgid "Import"
+msgstr "Import"
+
+#. module: anonymization
+#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization
+msgid "ir.model.fields.anonymization"
+msgstr ""
+
+#. module: anonymization
+#: model:ir.module.module,shortdesc:anonymization.module_meta_information
+msgid "Database anonymization module"
+msgstr ""
+
+#. module: anonymization
+#: field:ir.model.fields.anonymization.history,direction:0
+msgid "Direction"
+msgstr "Suund"
+
+#. module: anonymization
+#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymization_tree
+#: view:ir.model.fields.anonymization:0
+#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_fields
+msgid "Anonymized Fields"
+msgstr ""
+
+#. module: anonymization
+#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization
+msgid "Database anonymization"
+msgstr ""
+
+#. module: anonymization
+#: code:addons/anonymization/anonymization.py:55
+#: sql_constraint:ir.model.fields.anonymization:0
+#, python-format
+msgid "You cannot have two records having the same model and the same field"
+msgstr ""
+
+#. module: anonymization
+#: selection:ir.model.fields.anonymization,state:0
+#: selection:ir.model.fields.anonymize.wizard,state:0
+msgid "Anonymized"
+msgstr ""
+
+#. module: anonymization
+#: field:ir.model.fields.anonymization,state:0
+msgid "unknown"
+msgstr ""
+
+#. module: anonymization
+#: field:ir.model.fields.anonymization,model_id:0
+msgid "Object"
+msgstr "Objekt"
+
+#. module: anonymization
+#: field:ir.model.fields.anonymization.history,filepath:0
+msgid "File path"
+msgstr "Faili asukoht"
+
+#. module: anonymization
+#: field:ir.model.fields.anonymization.history,date:0
+msgid "Date"
+msgstr "Kuupäev"
+
+#. module: anonymization
+#: field:ir.model.fields.anonymize.wizard,file_export:0
+msgid "Export"
+msgstr "Eksport"
+
+#. module: anonymization
+#: view:ir.model.fields.anonymize.wizard:0
+msgid "Reverse the Database Anonymization"
+msgstr ""
+
+#. module: anonymization
+#: view:ir.model.fields.anonymize.wizard:0
+msgid "Database Anonymization"
+msgstr ""
+
+#. module: anonymization
+#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_wizard
+msgid "Anonymize database"
+msgstr ""
+
+#. module: anonymization
+#: view:ir.model.fields.anonymization.history:0
+#: field:ir.model.fields.anonymization.history,field_ids:0
+msgid "Fields"
+msgstr "Väljad"
+
+#. module: anonymization
+#: selection:ir.model.fields.anonymization,state:0
+#: selection:ir.model.fields.anonymize.wizard,state:0
+msgid "Clear"
+msgstr ""
+
+#. module: anonymization
+#: selection:ir.model.fields.anonymization.history,direction:0
+msgid "clear -> anonymized"
+msgstr ""
+
+#. module: anonymization
+#: view:ir.model.fields.anonymize.wizard:0
+#: field:ir.model.fields.anonymize.wizard,summary:0
+msgid "Summary"
+msgstr "Kokkuvõte"
+
+#. module: anonymization
+#: view:ir.model.fields.anonymization:0
+msgid "Anonymized Field"
+msgstr ""
+
+#. module: anonymization
+#: model:ir.module.module,description:anonymization.module_meta_information
+msgid ""
+"\n"
+"This module allows you to anonymize a database.\n"
+" "
+msgstr ""
+
+#. module: anonymization
+#: selection:ir.model.fields.anonymize.wizard,state:0
+msgid "Unstable"
+msgstr ""
+
+#. module: anonymization
+#: selection:ir.model.fields.anonymization.history,state:0
+msgid "Exception occured"
+msgstr ""
+
+#. module: anonymization
+#: selection:ir.model.fields.anonymization,state:0
+#: selection:ir.model.fields.anonymize.wizard,state:0
+msgid "Not Existing"
+msgstr ""
+
+#. module: anonymization
+#: field:ir.model.fields.anonymization,model_name:0
+msgid "Object Name"
+msgstr "Objekti nimi"
+
+#. module: anonymization
+#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymization_history_tree
+#: view:ir.model.fields.anonymization.history:0
+#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_history
+msgid "Anonymization History"
+msgstr ""
+
+#. module: anonymization
+#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_history
+msgid "ir.model.fields.anonymization.history"
+msgstr ""
+
+#. module: anonymization
+#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymize_wizard
+#: view:ir.model.fields.anonymize.wizard:0
+msgid "Anonymize Database"
+msgstr ""
+
+#. module: anonymization
+#: field:ir.model.fields.anonymize.wizard,name:0
+msgid "File Name"
+msgstr ""
+
+#. module: anonymization
+#: selection:ir.model.fields.anonymization.history,direction:0
+msgid "anonymized -> clear"
+msgstr ""
+
+#. module: anonymization
+#: selection:ir.model.fields.anonymization.history,state:0
+msgid "Started"
+msgstr ""
+
+#. module: anonymization
+#: selection:ir.model.fields.anonymization.history,state:0
+msgid "Done"
+msgstr ""
+
+#. module: anonymization
+#: view:ir.model.fields.anonymization.history:0
+#: field:ir.model.fields.anonymization.history,msg:0
+#: field:ir.model.fields.anonymize.wizard,msg:0
+msgid "Message"
+msgstr ""
diff --git a/addons/auth_openid/static/src/js/auth_openid.js b/addons/auth_openid/static/src/js/auth_openid.js
index 7399e1fb371..bc067d8824d 100644
--- a/addons/auth_openid/static/src/js/auth_openid.js
+++ b/addons/auth_openid/static/src/js/auth_openid.js
@@ -15,7 +15,7 @@ instance.web.Login = instance.web.Login.extend({
var openIdProvider = null;
- if (this.has_local_storage && this.remember_creditentials) {
+ if (this.has_local_storage && this.remember_credentials) {
openIdProvider = localStorage.getItem('openid-provider');
}
@@ -23,7 +23,7 @@ instance.web.Login = instance.web.Login.extend({
$openid_selected_provider = openIdProvider;
this.do_openid_select('a[href="#' + openIdProvider + '"]', openIdProvider, true);
- if (this.has_local_storage && this.remember_creditentials) {
+ if (this.has_local_storage && this.remember_credentials) {
this.$openid_selected_input.find('input').val(localStorage.getItem('openid-login'));
}
}
@@ -54,7 +54,7 @@ instance.web.Login = instance.web.Login.extend({
self.$openid_selected_input.find('input:first').focus();
self.$openid_selected_provider = (self.$openid_selected_button.attr('href') || '').substr(1);
- if (self.has_local_storage && self.remember_creditentials) {
+ if (self.has_local_storage && self.remember_credentials) {
localStorage.setItem('openid-provider', self.$openid_selected_provider);
}
@@ -91,7 +91,7 @@ instance.web.Login = instance.web.Login.extend({
ev.preventDefault();
var id = this.$openid_selected_input.find('input').val();
- if (this.has_local_storage && this.remember_creditentials) {
+ if (this.has_local_storage && this.remember_credentials) {
localStorage.setItem('openid-login', id);
}
diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py
index 3c6a36b965e..18f267a1df1 100644
--- a/addons/base_calendar/base_calendar.py
+++ b/addons/base_calendar/base_calendar.py
@@ -1005,7 +1005,7 @@ class calendar_event(osv.osv):
return result
_columns = {
- 'id': fields.integer('ID'),
+ 'id': fields.integer('ID', readonly=True),
'sequence': fields.integer('Sequence'),
'name': fields.char('Description', size=64, required=False, states={'done': [('readonly', True)]}),
'date': fields.datetime('Date', states={'done': [('readonly', True)]}),
diff --git a/addons/base_calendar/i18n/et.po b/addons/base_calendar/i18n/et.po
new file mode 100644
index 00000000000..11c69ec9d45
--- /dev/null
+++ b/addons/base_calendar/i18n/et.po
@@ -0,0 +1,1658 @@
+# Estonian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:14+0000\n"
+"PO-Revision-Date: 2011-10-11 18:08+0000\n"
+"Last-Translator: Aare Vesi \n"
+"Language-Team: Estonian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-10-12 04:40+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
+
+#. module: base_calendar
+#: selection:calendar.alarm,trigger_related:0
+#: selection:res.alarm,trigger_related:0
+msgid "The event starts"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,freq:0
+msgid "Hourly"
+msgstr "Kord tunnis"
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+msgid "Required to Join"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.event,exdate:0
+#: help:calendar.todo,exdate:0
+msgid ""
+"This property defines the list of date/time exceptions for a recurring "
+"calendar component."
+msgstr ""
+
+#. module: base_calendar
+#: constraint:res.users:0
+msgid "The chosen company is not in the allowed companies for this user"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event.edit.all,name:0
+msgid "Title"
+msgstr "Pealkiri"
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,freq:0
+#: selection:calendar.event,rrule_type:0
+#: selection:calendar.todo,rrule_type:0
+msgid "Monthly"
+msgstr "Igakuine"
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+msgid "Invited User"
+msgstr "Kutsutud kasutaja"
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+msgid "Invitation"
+msgstr "Kutse"
+
+#. module: base_calendar
+#: help:calendar.event,recurrency:0
+#: help:calendar.todo,recurrency:0
+msgid "Recurrent Meeting"
+msgstr "Korduv kohtumine"
+
+#. module: base_calendar
+#: model:ir.actions.act_window,name:base_calendar.action_res_alarm_view
+#: model:ir.ui.menu,name:base_calendar.menu_crm_meeting_avail_alarm
+msgid "Alarms"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,week_list:0
+#: selection:calendar.event,week_list:0
+#: selection:calendar.todo,week_list:0
+msgid "Sunday"
+msgstr "Pühapäev"
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+#: field:calendar.attendee,role:0
+msgid "Role"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+#: view:calendar.event:0
+msgid "Invitation details"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,byday:0
+#: selection:calendar.event,byday:0
+#: selection:calendar.todo,byday:0
+msgid "Fourth"
+msgstr "Neljas"
+
+#. module: base_calendar
+#: field:calendar.event,show_as:0
+#: field:calendar.todo,show_as:0
+msgid "Show as"
+msgstr ""
+
+#. module: base_calendar
+#: field:base.calendar.set.exrule,day:0
+#: selection:base.calendar.set.exrule,select1:0
+#: field:calendar.event,day:0
+#: selection:calendar.event,select1:0
+#: field:calendar.todo,day:0
+#: selection:calendar.todo,select1:0
+msgid "Date of month"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.event,class:0
+#: selection:calendar.todo,class:0
+msgid "Public"
+msgstr "Avalik"
+
+#. module: base_calendar
+#: view:calendar.event:0
+msgid " "
+msgstr " "
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,month_list:0
+#: selection:calendar.event,month_list:0
+#: selection:calendar.todo,month_list:0
+msgid "March"
+msgstr "Märts"
+
+#. module: base_calendar
+#: code:addons/base_calendar/base_calendar.py:414
+#: code:addons/base_calendar/wizard/base_calendar_set_exrule.py:90
+#, python-format
+msgid "Warning !"
+msgstr "Hoiatus!"
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,week_list:0
+#: selection:calendar.event,week_list:0
+#: selection:calendar.todo,week_list:0
+msgid "Friday"
+msgstr "Reede"
+
+#. module: base_calendar
+#: field:calendar.event,allday:0
+#: field:calendar.todo,allday:0
+msgid "All Day"
+msgstr "Kogu päev"
+
+#. module: base_calendar
+#: field:base.calendar.set.exrule,select1:0
+#: field:calendar.event,select1:0
+#: field:calendar.todo,select1:0
+msgid "Option"
+msgstr "Valik"
+
+#. module: base_calendar
+#: selection:calendar.attendee,availability:0
+#: selection:calendar.event,show_as:0
+#: selection:calendar.todo,show_as:0
+#: selection:res.users,availability:0
+msgid "Free"
+msgstr "Vaba"
+
+#. module: base_calendar
+#: help:calendar.attendee,rsvp:0
+msgid "Indicats whether the favor of a reply is requested"
+msgstr ""
+
+#. module: base_calendar
+#: model:ir.model,name:base_calendar.model_ir_attachment
+msgid "ir.attachment"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.attendee,delegated_to:0
+msgid "The users that the original request was delegated to"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.attendee,ref:0
+msgid "Event Ref"
+msgstr ""
+
+#. module: base_calendar
+#: field:base.calendar.set.exrule,we:0
+#: field:calendar.event,we:0
+#: field:calendar.todo,we:0
+msgid "Wed"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+msgid "Show time as"
+msgstr ""
+
+#. module: base_calendar
+#: field:base.calendar.set.exrule,tu:0
+#: field:calendar.event,tu:0
+#: field:calendar.todo,tu:0
+msgid "Tue"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,freq:0
+#: selection:calendar.event,rrule_type:0
+#: selection:calendar.todo,rrule_type:0
+msgid "Yearly"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.alarm,trigger_related:0
+#: selection:res.alarm,trigger_related:0
+msgid "The event ends"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,byday:0
+#: selection:calendar.event,byday:0
+#: selection:calendar.todo,byday:0
+msgid "Last"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.attendee,state:0
+msgid "Status of the attendee's participation"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.attendee,cutype:0
+msgid "Room"
+msgstr "Ruum"
+
+#. module: base_calendar
+#: selection:calendar.alarm,trigger_interval:0
+#: selection:calendar.event,freq:0
+#: selection:calendar.todo,freq:0
+#: selection:res.alarm,trigger_interval:0
+msgid "Days"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+#: view:calendar.event:0
+msgid "Invitation Detail"
+msgstr ""
+
+#. module: base_calendar
+#: code:addons/base_calendar/base_calendar.py:1355
+#: code:addons/base_calendar/wizard/base_calendar_invite_attendee.py:96
+#: code:addons/base_calendar/wizard/base_calendar_invite_attendee.py:143
+#: code:addons/base_calendar/wizard/base_calendar_set_exrule.py:128
+#: code:addons/base_calendar/wizard/base_calendar_set_exrule.py:136
+#, python-format
+msgid "Error!"
+msgstr "Viga!"
+
+#. module: base_calendar
+#: selection:calendar.attendee,role:0
+msgid "Chair Person"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.alarm,action:0
+msgid "Procedure"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.event,state:0
+#: selection:calendar.todo,state:0
+msgid "Cancelled"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.alarm,trigger_interval:0
+#: selection:res.alarm,trigger_interval:0
+msgid "Minutes"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.alarm,action:0
+msgid "Display"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event.edit.all:0
+msgid "Edit all Occurrences"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+msgid "Invitation type"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,freq:0
+msgid "Secondly"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.alarm,event_date:0
+#: field:calendar.attendee,event_date:0
+#: view:calendar.event:0
+msgid "Event Date"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+#: view:calendar.event:0
+msgid "Group By..."
+msgstr ""
+
+#. module: base_calendar
+#: help:base_calendar.invite.attendee,email:0
+msgid "Provide external email address who will receive this invitation."
+msgstr ""
+
+#. module: base_calendar
+#: model:ir.module.module,description:base_calendar.module_meta_information
+msgid ""
+"Full featured calendar system that supports:\n"
+" - Calendar of events\n"
+" - Alerts (create requests)\n"
+" - Recurring events\n"
+" - Invitations to people"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.attendee,cutype:0
+msgid "Specify the type of Invitation"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.event,freq:0
+#: selection:calendar.todo,freq:0
+msgid "Years"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.alarm,event_end_date:0
+#: field:calendar.attendee,event_end_date:0
+msgid "Event End Date"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.attendee,role:0
+msgid "Optional Participation"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,date_deadline:0
+#: field:calendar.todo,date_deadline:0
+msgid "Deadline"
+msgstr ""
+
+#. module: base_calendar
+#: code:addons/base_calendar/base_calendar.py:385
+#: code:addons/base_calendar/base_calendar.py:1088
+#: code:addons/base_calendar/base_calendar.py:1090
+#, python-format
+msgid "Warning!"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.event,active:0
+#: help:calendar.todo,active:0
+msgid ""
+"If the active field is set to true, it will allow you to hide the "
+"event alarm information without removing it."
+msgstr ""
+
+#. module: base_calendar
+#: model:ir.module.module,shortdesc:base_calendar.module_meta_information
+msgid "Basic Calendar Functionality"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,organizer:0
+#: field:calendar.event,organizer_id:0
+#: field:calendar.todo,organizer:0
+#: field:calendar.todo,organizer_id:0
+msgid "Organizer"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+#: view:calendar.event:0
+#: field:calendar.event,user_id:0
+#: field:calendar.todo,user_id:0
+msgid "Responsible"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+#: model:res.request.link,name:base_calendar.request_link_meeting
+msgid "Event"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.event,edit_all:0
+#: help:calendar.todo,edit_all:0
+msgid "Edit all Occurrences of recurrent Meeting."
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.alarm,trigger_occurs:0
+#: selection:res.alarm,trigger_occurs:0
+msgid "Before"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+#: selection:calendar.event,state:0
+#: selection:calendar.todo,state:0
+msgid "Confirmed"
+msgstr ""
+
+#. module: base_calendar
+#: model:ir.actions.act_window,name:base_calendar.action_calendar_event_edit_all
+msgid "Edit all events"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.alarm,attendee_ids:0
+#: field:calendar.event,attendee_ids:0
+#: field:calendar.todo,attendee_ids:0
+msgid "Attendees"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+msgid "Confirm"
+msgstr ""
+
+#. module: base_calendar
+#: model:ir.model,name:base_calendar.model_calendar_todo
+msgid "Calendar Task"
+msgstr ""
+
+#. module: base_calendar
+#: field:base.calendar.set.exrule,su:0
+#: field:calendar.event,su:0
+#: field:calendar.todo,su:0
+msgid "Sun"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.attendee,cutype:0
+msgid "Invite Type"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.attendee,partner_id:0
+msgid "Partner related to contact"
+msgstr ""
+
+#. module: base_calendar
+#: view:res.alarm:0
+msgid "Reminder details"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.attendee,parent_ids:0
+msgid "Delegrated From"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,select1:0
+#: selection:calendar.event,select1:0
+#: selection:calendar.todo,select1:0
+msgid "Day of month"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+#: field:calendar.event,location:0
+#: field:calendar.event.edit.all,location:0
+#: field:calendar.todo,location:0
+msgid "Location"
+msgstr ""
+
+#. module: base_calendar
+#: field:base_calendar.invite.attendee,send_mail:0
+msgid "Send mail?"
+msgstr ""
+
+#. module: base_calendar
+#: field:base_calendar.invite.attendee,email:0
+#: selection:calendar.alarm,action:0
+#: field:calendar.attendee,email:0
+msgid "Email"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+msgid "Event Detail"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.alarm,state:0
+msgid "Run"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,exdate:0
+#: field:calendar.todo,exdate:0
+msgid "Exception Date/Times"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.event,class:0
+#: selection:calendar.todo,class:0
+msgid "Confidential"
+msgstr ""
+
+#. module: base_calendar
+#: field:base.calendar.set.exrule,end_date:0
+#: field:calendar.event,end_date:0
+#: field:calendar.todo,end_date:0
+msgid "Repeat Until"
+msgstr ""
+
+#. module: base_calendar
+#: model:ir.actions.act_window,help:base_calendar.action_res_alarm_view
+msgid ""
+"Create specific calendar alarms that may be assigned to calendar events or "
+"meetings."
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+msgid "Visibility"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.attendee,rsvp:0
+msgid "Required Reply?"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,base_calendar_url:0
+#: field:calendar.todo,base_calendar_url:0
+msgid "Caldav URL"
+msgstr ""
+
+#. module: base_calendar
+#: view:base.calendar.set.exrule:0
+msgid "Select range to Exclude"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,recurrent_uid:0
+#: field:calendar.todo,recurrent_uid:0
+msgid "Recurrent ID"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,month_list:0
+#: selection:calendar.event,month_list:0
+#: selection:calendar.todo,month_list:0
+msgid "July"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+#: selection:calendar.attendee,state:0
+msgid "Accepted"
+msgstr ""
+
+#. module: base_calendar
+#: field:base.calendar.set.exrule,th:0
+#: field:calendar.event,th:0
+#: field:calendar.todo,th:0
+msgid "Thu"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.attendee,child_ids:0
+msgid "Delegrated To"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+msgid "Required Reply"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.event,end_type:0
+#: selection:calendar.todo,end_type:0
+msgid "Forever"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.attendee,role:0
+msgid "Participation required"
+msgstr ""
+
+#. module: base_calendar
+#: view:base.calendar.set.exrule:0
+msgid "_Cancel"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,create_date:0
+#: field:calendar.todo,create_date:0
+msgid "Created"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.event,class:0
+#: selection:calendar.todo,class:0
+msgid "Private"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,freq:0
+#: selection:calendar.event,rrule_type:0
+#: selection:calendar.todo,rrule_type:0
+msgid "Daily"
+msgstr ""
+
+#. module: base_calendar
+#: code:addons/base_calendar/base_calendar.py:385
+#, python-format
+msgid "Can not Duplicate"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,class:0
+#: field:calendar.todo,class:0
+msgid "Mark as"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+#: field:calendar.attendee,partner_address_id:0
+msgid "Contact"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.event,rrule_type:0
+#: help:calendar.todo,rrule_type:0
+msgid "Let the event automatically repeat at that interval"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+#: view:calendar.event:0
+msgid "Delegate"
+msgstr ""
+
+#. module: base_calendar
+#: field:base_calendar.invite.attendee,partner_id:0
+#: view:calendar.attendee:0
+#: field:calendar.attendee,partner_id:0
+msgid "Partner"
+msgstr ""
+
+#. module: base_calendar
+#: view:base_calendar.invite.attendee:0
+#: selection:base_calendar.invite.attendee,type:0
+msgid "Partner Contacts"
+msgstr ""
+
+#. module: base_calendar
+#: view:base.calendar.set.exrule:0
+msgid "_Ok"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,byday:0
+#: selection:calendar.event,byday:0
+#: selection:calendar.todo,byday:0
+msgid "First"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+msgid "Privacy"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,vtimezone:0
+#: field:calendar.todo,vtimezone:0
+msgid "Timezone"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+msgid "Subject"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,month_list:0
+#: selection:calendar.event,month_list:0
+#: selection:calendar.todo,month_list:0
+msgid "September"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,month_list:0
+#: selection:calendar.event,month_list:0
+#: selection:calendar.todo,month_list:0
+msgid "December"
+msgstr ""
+
+#. module: base_calendar
+#: help:base_calendar.invite.attendee,send_mail:0
+msgid "Check this if you want to send an Email to Invited Person"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+msgid "Availability"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event.edit.all:0
+msgid "_Save"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.attendee,cutype:0
+msgid "Individual"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.event,count:0
+#: help:calendar.todo,count:0
+msgid "Repeat x times"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.alarm,user_id:0
+msgid "Owner"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+msgid "Delegation Info"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+#: field:calendar.event.edit.all,date:0
+msgid "Start Date"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.attendee,cn:0
+msgid "Common name"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+#: selection:calendar.attendee,state:0
+msgid "Declined"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+msgid "My Role"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+msgid "My Events"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+#: view:calendar.event:0
+msgid "Decline"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.event,freq:0
+#: selection:calendar.todo,freq:0
+msgid "Weeks"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.attendee,cutype:0
+msgid "Group"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,edit_all:0
+#: field:calendar.todo,edit_all:0
+msgid "Edit All"
+msgstr ""
+
+#. module: base_calendar
+#: field:base_calendar.invite.attendee,contact_ids:0
+msgid "Contacts"
+msgstr ""
+
+#. module: base_calendar
+#: model:ir.model,name:base_calendar.model_res_alarm
+msgid "Basic Alarm Information"
+msgstr ""
+
+#. module: base_calendar
+#: field:base.calendar.set.exrule,fr:0
+#: field:calendar.event,fr:0
+#: field:calendar.todo,fr:0
+msgid "Fri"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.alarm,trigger_interval:0
+#: selection:calendar.event,freq:0
+#: selection:calendar.todo,freq:0
+#: selection:res.alarm,trigger_interval:0
+msgid "Hours"
+msgstr ""
+
+#. module: base_calendar
+#: code:addons/base_calendar/base_calendar.py:1090
+#, python-format
+msgid "Count can not be Negative"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.attendee,member:0
+msgid "Member"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.event,location:0
+#: help:calendar.todo,location:0
+msgid "Location of Event"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,rrule:0
+#: field:calendar.todo,rrule:0
+msgid "Recurrent Rule"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.alarm,state:0
+msgid "Draft"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.alarm,attach:0
+msgid "Attachment"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+msgid "Invitation From"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+msgid "End of recurrency"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+#: field:calendar.event.edit.all,alarm_id:0
+msgid "Reminder"
+msgstr ""
+
+#. module: base_calendar
+#: view:base.calendar.set.exrule:0
+#: model:ir.model,name:base_calendar.model_base_calendar_set_exrule
+msgid "Set Exrule"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+#: model:ir.actions.act_window,name:base_calendar.action_view_event
+#: model:ir.ui.menu,name:base_calendar.menu_events
+msgid "Events"
+msgstr ""
+
+#. module: base_calendar
+#: model:ir.actions.act_window,name:base_calendar.action_view_calendar_invite_attendee_wizard
+#: model:ir.model,name:base_calendar.model_base_calendar_invite_attendee
+msgid "Invite Attendees"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.attendee,email:0
+msgid "Email of Invited Person"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.alarm,repeat:0
+#: field:calendar.event,count:0
+#: field:calendar.todo,count:0
+#: field:res.alarm,repeat:0
+msgid "Repeat"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.attendee,dir:0
+msgid ""
+"Reference to the URIthat points to the directory information corresponding "
+"to the attendee."
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,month_list:0
+#: selection:calendar.event,month_list:0
+#: selection:calendar.todo,month_list:0
+msgid "August"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,week_list:0
+#: selection:calendar.event,week_list:0
+#: selection:calendar.todo,week_list:0
+msgid "Monday"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,byday:0
+#: selection:calendar.event,byday:0
+#: selection:calendar.todo,byday:0
+msgid "Third"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,month_list:0
+#: selection:calendar.event,month_list:0
+#: selection:calendar.todo,month_list:0
+msgid "June"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.alarm,alarm_id:0
+msgid "Basic Alarm"
+msgstr ""
+
+#. module: base_calendar
+#: view:base.calendar.set.exrule:0
+#: view:calendar.event:0
+msgid "The"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+#: field:calendar.attendee,delegated_from:0
+msgid "Delegated From"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.attendee,user_id:0
+msgid "User"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+#: field:calendar.event,date:0
+msgid "Date"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,month_list:0
+#: selection:calendar.event,month_list:0
+#: selection:calendar.todo,month_list:0
+msgid "November"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.attendee,member:0
+msgid "Indicate the groups that the attendee belongs to"
+msgstr ""
+
+#. module: base_calendar
+#: view:base_calendar.invite.attendee:0
+msgid "Data"
+msgstr ""
+
+#. module: base_calendar
+#: field:base.calendar.set.exrule,mo:0
+#: field:calendar.event,mo:0
+#: field:calendar.todo,mo:0
+msgid "Mon"
+msgstr ""
+
+#. module: base_calendar
+#: field:base.calendar.set.exrule,count:0
+msgid "Count"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,freq:0
+#: selection:calendar.event,freq:0
+#: selection:calendar.todo,freq:0
+msgid "No Repeat"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,month_list:0
+#: selection:calendar.event,month_list:0
+#: selection:calendar.todo,month_list:0
+msgid "October"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+#: view:calendar.event:0
+msgid "Uncertain"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.attendee,language:0
+msgid "Language"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.alarm,trigger_occurs:0
+#: field:res.alarm,trigger_occurs:0
+msgid "Triggers"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,month_list:0
+#: selection:calendar.event,month_list:0
+#: selection:calendar.todo,month_list:0
+msgid "January"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.alarm,trigger_related:0
+#: field:res.alarm,trigger_related:0
+msgid "Related to"
+msgstr ""
+
+#. module: base_calendar
+#: field:base.calendar.set.exrule,interval:0
+#: field:calendar.alarm,trigger_interval:0
+#: field:res.alarm,trigger_interval:0
+msgid "Interval"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,week_list:0
+#: selection:calendar.event,week_list:0
+#: selection:calendar.todo,week_list:0
+msgid "Wednesday"
+msgstr ""
+
+#. module: base_calendar
+#: code:addons/base_calendar/base_calendar.py:1088
+#, python-format
+msgid "Interval can not be Negative"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.alarm,name:0
+#: view:calendar.event:0
+msgid "Summary"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.alarm,active:0
+#: field:calendar.event,active:0
+#: field:calendar.todo,active:0
+#: field:res.alarm,active:0
+msgid "Active"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+msgid "Choose day in the month where repeat the meeting"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.alarm,action:0
+msgid "Action"
+msgstr ""
+
+#. module: base_calendar
+#: help:base_calendar.invite.attendee,type:0
+msgid "Select whom you want to Invite"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.alarm,duration:0
+#: help:res.alarm,duration:0
+msgid ""
+"Duration' and 'Repeat' are both optional, but if one occurs, so MUST the "
+"other"
+msgstr ""
+
+#. module: base_calendar
+#: model:ir.model,name:base_calendar.model_calendar_event_edit_all
+msgid "Calendar Edit all event"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.attendee,role:0
+msgid "Participation role for the calendar user"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+#: field:calendar.attendee,delegated_to:0
+msgid "Delegated To"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.alarm,action:0
+msgid "Defines the action to be invoked when an alarm is triggered"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.event,end_type:0
+#: selection:calendar.todo,end_type:0
+msgid "End date"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+msgid "Search Events"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+msgid "Recurrency Option"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,freq:0
+#: selection:calendar.event,rrule_type:0
+#: selection:calendar.todo,rrule_type:0
+msgid "Weekly"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.alarm,active:0
+#: help:res.alarm,active:0
+msgid ""
+"If the active field is set to true, it will allow you to hide the event "
+"alarm information without removing it."
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,recurrent_id:0
+#: field:calendar.todo,recurrent_id:0
+msgid "Recurrent ID date"
+msgstr ""
+
+#. module: base_calendar
+#: sql_constraint:res.users:0
+msgid "You can not have two users with the same login !"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.alarm,state:0
+#: view:calendar.attendee:0
+#: field:calendar.attendee,state:0
+#: view:calendar.event:0
+#: field:calendar.event,state:0
+#: field:calendar.todo,state:0
+msgid "State"
+msgstr ""
+
+#. module: base_calendar
+#: view:res.alarm:0
+msgid "Reminder Details"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+msgid "To Review"
+msgstr ""
+
+#. module: base_calendar
+#: field:base.calendar.set.exrule,freq:0
+#: field:calendar.event,freq:0
+#: field:calendar.todo,freq:0
+msgid "Frequency"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.alarm,state:0
+msgid "Done"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.event,interval:0
+#: help:calendar.todo,interval:0
+msgid "Repeat every (Days/Week/Month/Year)"
+msgstr ""
+
+#. module: base_calendar
+#: view:base_calendar.invite.attendee:0
+#: field:base_calendar.invite.attendee,user_ids:0
+msgid "Users"
+msgstr ""
+
+#. module: base_calendar
+#: view:base.calendar.set.exrule:0
+msgid "of"
+msgstr ""
+
+#. module: base_calendar
+#: view:base_calendar.invite.attendee:0
+#: view:calendar.event:0
+#: view:calendar.event.edit.all:0
+msgid "Cancel"
+msgstr ""
+
+#. module: base_calendar
+#: model:ir.model,name:base_calendar.model_res_users
+msgid "res.users"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,week_list:0
+#: selection:calendar.event,week_list:0
+#: selection:calendar.todo,week_list:0
+msgid "Tuesday"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.alarm,description:0
+msgid ""
+"Provides a more complete description of the "
+"calendar component, than that provided by the "
+"\"SUMMARY\" property"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+msgid "Responsible User"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.attendee,availability:0
+#: selection:calendar.event,show_as:0
+#: selection:calendar.todo,show_as:0
+#: selection:res.users,availability:0
+msgid "Busy"
+msgstr ""
+
+#. module: base_calendar
+#: model:ir.model,name:base_calendar.model_calendar_event
+msgid "Calendar Event"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.attendee,state:0
+#: selection:calendar.event,state:0
+#: selection:calendar.todo,state:0
+msgid "Tentative"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,interval:0
+#: field:calendar.todo,interval:0
+msgid "Repeat every"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.event,end_type:0
+#: selection:calendar.todo,end_type:0
+msgid "Fix amout of times"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,recurrency:0
+#: field:calendar.todo,recurrency:0
+msgid "Recurrent"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,rrule_type:0
+#: field:calendar.todo,rrule_type:0
+msgid "Recurrency"
+msgstr ""
+
+#. module: base_calendar
+#: model:ir.actions.act_window,name:base_calendar.action_view_attendee_form
+#: model:ir.ui.menu,name:base_calendar.menu_attendee_invitations
+msgid "Event Invitations"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,week_list:0
+#: selection:calendar.event,week_list:0
+#: selection:calendar.todo,week_list:0
+msgid "Thursday"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,exrule:0
+#: field:calendar.todo,exrule:0
+msgid "Exception Rule"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.attendee,language:0
+msgid ""
+"To specify the language for text values in aproperty or property parameter."
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+msgid "Details"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.event,exrule:0
+#: help:calendar.todo,exrule:0
+msgid ""
+"Defines a rule or repeating pattern of time to exclude from the recurring "
+"rule."
+msgstr ""
+
+#. module: base_calendar
+#: field:base.calendar.set.exrule,month_list:0
+#: field:calendar.event,month_list:0
+#: field:calendar.todo,month_list:0
+msgid "Month"
+msgstr ""
+
+#. module: base_calendar
+#: view:base_calendar.invite.attendee:0
+#: view:calendar.event:0
+msgid "Invite People"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.event,rrule:0
+#: help:calendar.todo,rrule:0
+msgid ""
+"Defines a rule or repeating pattern for recurring events\n"
+"e.g.: Every other month on the last Sunday of the month for 10 occurrences: "
+" FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=-1SU"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.attendee,dir:0
+msgid "URI Reference"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.alarm,description:0
+#: view:calendar.event:0
+#: field:calendar.event,description:0
+#: field:calendar.event,name:0
+#: field:calendar.todo,description:0
+#: field:calendar.todo,name:0
+msgid "Description"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,month_list:0
+#: selection:calendar.event,month_list:0
+#: selection:calendar.todo,month_list:0
+msgid "May"
+msgstr ""
+
+#. module: base_calendar
+#: field:base_calendar.invite.attendee,type:0
+#: view:calendar.attendee:0
+msgid "Type"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+msgid "Search Invitations"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.alarm,trigger_occurs:0
+#: selection:res.alarm,trigger_occurs:0
+msgid "After"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.alarm,state:0
+msgid "Stop"
+msgstr ""
+
+#. module: base_calendar
+#: model:ir.model,name:base_calendar.model_ir_values
+msgid "ir.values"
+msgstr ""
+
+#. module: base_calendar
+#: model:ir.model,name:base_calendar.model_ir_model
+msgid "Objects"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+#: selection:calendar.attendee,state:0
+msgid "Delegated"
+msgstr ""
+
+#. module: base_calendar
+#: field:base.calendar.set.exrule,sa:0
+#: field:calendar.event,sa:0
+#: field:calendar.todo,sa:0
+msgid "Sat"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+msgid "Choose day where repeat the meeting"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,freq:0
+msgid "Minutely"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.attendee,sent_by:0
+msgid "Specify the user that is acting on behalf of the calendar user"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+#: field:calendar.event.edit.all,date_deadline:0
+msgid "End Date"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,month_list:0
+#: selection:calendar.event,month_list:0
+#: selection:calendar.todo,month_list:0
+msgid "February"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.event,freq:0
+#: selection:calendar.todo,freq:0
+msgid "Months"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.attendee,cutype:0
+msgid "Resource"
+msgstr ""
+
+#. module: base_calendar
+#: field:res.alarm,name:0
+msgid "Name"
+msgstr ""
+
+#. module: base_calendar
+#: model:ir.model,name:base_calendar.model_calendar_alarm
+msgid "Event alarm information"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.alarm,name:0
+msgid ""
+"Contains the text to be used as the message subject for "
+"email or contains the text to be used for display"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,alarm_id:0
+#: field:calendar.event,base_calendar_alarm_id:0
+#: field:calendar.todo,alarm_id:0
+#: field:calendar.todo,base_calendar_alarm_id:0
+msgid "Alarm"
+msgstr ""
+
+#. module: base_calendar
+#: code:addons/base_calendar/wizard/base_calendar_set_exrule.py:90
+#, python-format
+msgid "Please Apply Recurrency before applying Exception Rule."
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.attendee,sent_by_uid:0
+msgid "Sent By User"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,month_list:0
+#: selection:calendar.event,month_list:0
+#: selection:calendar.todo,month_list:0
+msgid "April"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.event:0
+msgid "Recurrency period"
+msgstr ""
+
+#. module: base_calendar
+#: field:base.calendar.set.exrule,week_list:0
+#: field:calendar.event,week_list:0
+#: field:calendar.todo,week_list:0
+msgid "Weekday"
+msgstr ""
+
+#. module: base_calendar
+#: field:base.calendar.set.exrule,byday:0
+#: field:calendar.event,byday:0
+#: field:calendar.todo,byday:0
+msgid "By day"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.alarm,model_id:0
+msgid "Model"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.alarm,action:0
+msgid "Audio"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,id:0
+#: field:calendar.todo,id:0
+msgid "ID"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.attendee,role:0
+msgid "For information Purpose"
+msgstr ""
+
+#. module: base_calendar
+#: view:base_calendar.invite.attendee:0
+msgid "Invite"
+msgstr ""
+
+#. module: base_calendar
+#: model:ir.model,name:base_calendar.model_calendar_attendee
+msgid "Attendee information"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.alarm,res_id:0
+msgid "Resource ID"
+msgstr ""
+
+#. module: base_calendar
+#: selection:calendar.attendee,state:0
+msgid "Needs Action"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.attendee,sent_by:0
+msgid "Sent By"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,sequence:0
+#: field:calendar.todo,sequence:0
+msgid "Sequence"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.event,alarm_id:0
+#: help:calendar.todo,alarm_id:0
+msgid "Set an alarm at this time, before the event occurs"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base_calendar.invite.attendee,type:0
+msgid "Internal User"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+#: view:calendar.event:0
+msgid "Accept"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,week_list:0
+#: selection:calendar.event,week_list:0
+#: selection:calendar.todo,week_list:0
+msgid "Saturday"
+msgstr ""
+
+#. module: base_calendar
+#: view:calendar.attendee:0
+msgid "Invitation To"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,byday:0
+#: selection:calendar.event,byday:0
+#: selection:calendar.todo,byday:0
+msgid "Second"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.attendee,availability:0
+#: field:res.users,availability:0
+msgid "Free/Busy"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.event,end_type:0
+#: field:calendar.todo,end_type:0
+msgid "Way to end reccurency"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.alarm,duration:0
+#: field:calendar.alarm,trigger_duration:0
+#: field:calendar.event,duration:0
+#: field:calendar.todo,date:0
+#: field:calendar.todo,duration:0
+#: field:res.alarm,duration:0
+#: field:res.alarm,trigger_duration:0
+msgid "Duration"
+msgstr ""
+
+#. module: base_calendar
+#: selection:base_calendar.invite.attendee,type:0
+msgid "External Email"
+msgstr ""
+
+#. module: base_calendar
+#: field:calendar.alarm,trigger_date:0
+msgid "Trigger Date"
+msgstr ""
+
+#. module: base_calendar
+#: help:calendar.alarm,attach:0
+msgid ""
+"* Points to a sound resource, which is rendered when the "
+"alarm is triggered for audio,\n"
+" * File which is intended to be sent as message "
+"attachments for email,\n"
+" * Points to a procedure resource, which is invoked when "
+" the alarm is triggered for procedure."
+msgstr ""
+
+#. module: base_calendar
+#: selection:base.calendar.set.exrule,byday:0
+#: selection:calendar.event,byday:0
+#: selection:calendar.todo,byday:0
+msgid "Fifth"
+msgstr ""
diff --git a/addons/base_module_quality/i18n/es.po b/addons/base_module_quality/i18n/es.po
index 69500f23540..95dfedff04f 100644
--- a/addons/base_module_quality/i18n/es.po
+++ b/addons/base_module_quality/i18n/es.po
@@ -8,15 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
-"PO-Revision-Date: 2010-12-27 09:16+0000\n"
-"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
-"\n"
+"PO-Revision-Date: 2011-10-16 22:58+0000\n"
+"Last-Translator: David Acevedo Toledo \n"
"Language-Team: Spanish \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 05:42+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-17 04:43+0000\n"
+"X-Generator: Launchpad (build 14155)\n"
#. module: base_module_quality
#: code:addons/base_module_quality/object_test/object_test.py:187
@@ -391,7 +390,7 @@ msgstr "¡Error! El módulo no está cargado/instalado correctamente"
#: code:addons/base_module_quality/speed_test/speed_test.py:116
#, python-format
msgid "Error in Read method: %s"
-msgstr ""
+msgstr "Error en el metodo de entrada %s"
#. module: base_module_quality
#: code:addons/base_module_quality/speed_test/speed_test.py:138
diff --git a/addons/base_setup/base_setup.py b/addons/base_setup/base_setup.py
index 3610c227142..c11bb273ff0 100644
--- a/addons/base_setup/base_setup.py
+++ b/addons/base_setup/base_setup.py
@@ -35,7 +35,7 @@ DEFAULT_MODULES = {
'Project Management' : ['project',],
'Knowledge Management' : ['document',],
'Warehouse Management' : ['stock',],
- 'Manufacturing' : ['mrp', 'procurement'],
+ 'Manufacturing' : ['mrp'],
'Accounting & Finance' : ['account'],
'Purchase Management' : ['purchase'],
'Human Resources' : ['hr',],
@@ -107,7 +107,8 @@ class base_setup_installer(osv.osv_memory):
for cat in cat_proxy.browse(cr, uid, cat_ids, context=context):
m = DEFAULT_MODULES.get(cat.name,[])
r = module_proxy.search(cr, uid, [('state','=','installed'),('name','in',m)])
- result['category_%d' % (cat.id,)] = bool(r)
+
+ result['category_%d' % (cat.id,)] = bool(r) and (len(r) == len(m))
return result
diff --git a/addons/base_synchro/i18n/et.po b/addons/base_synchro/i18n/et.po
new file mode 100644
index 00000000000..370c619e35a
--- /dev/null
+++ b/addons/base_synchro/i18n/et.po
@@ -0,0 +1,289 @@
+# Estonian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:14+0000\n"
+"PO-Revision-Date: 2011-10-11 17:56+0000\n"
+"Last-Translator: Aare Vesi \n"
+"Language-Team: Estonian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-10-12 04:40+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
+
+#. module: base_synchro
+#: model:ir.actions.act_window,name:base_synchro.action_view_base_synchro
+msgid "Base Synchronization"
+msgstr ""
+
+#. module: base_synchro
+#: field:base.synchro.server,server_db:0
+msgid "Server Database"
+msgstr "Serveri andmebaas"
+
+#. module: base_synchro
+#: view:base.synchro.server:0
+#: model:ir.model,name:base_synchro.model_base_synchro_server
+msgid "Synchronized server"
+msgstr ""
+
+#. module: base_synchro
+#: field:base.synchro.obj.avoid,name:0
+msgid "Field Name"
+msgstr "Välja Nimi:"
+
+#. module: base_synchro
+#: field:base.synchro.obj,synchronize_date:0
+msgid "Latest Synchronization"
+msgstr "Viimane sünkroniseerimine"
+
+#. module: base_synchro
+#: field:base.synchro,user_id:0
+msgid "Send Result To"
+msgstr ""
+
+#. module: base_synchro
+#: model:ir.model,name:base_synchro.model_base_synchro_obj_avoid
+msgid "Fields to not synchronize"
+msgstr ""
+
+#. module: base_synchro
+#: view:base.synchro:0
+msgid "_Close"
+msgstr "_Sulge"
+
+#. module: base_synchro
+#: view:base.synchro:0
+msgid "Transfer Data To Server"
+msgstr ""
+
+#. module: base_synchro
+#: model:ir.model,name:base_synchro.model_base_synchro_obj
+msgid "Register Class"
+msgstr ""
+
+#. module: base_synchro
+#: view:base.synchro.obj:0
+#: model:ir.actions.act_window,name:base_synchro.action_transfer_tree
+#: model:ir.ui.menu,name:base_synchro.transfer_menu_id
+msgid "Synchronized objects"
+msgstr ""
+
+#. module: base_synchro
+#: field:base.synchro.server,obj_ids:0
+msgid "Models"
+msgstr ""
+
+#. module: base_synchro
+#: field:base.synchro.obj.avoid,obj_id:0
+#: view:base.synchro.obj.line:0
+#: field:base.synchro.obj.line,obj_id:0
+msgid "Object"
+msgstr "Objekt"
+
+#. module: base_synchro
+#: field:base.synchro.server,login:0
+msgid "User Name"
+msgstr "Kasutajanimi"
+
+#. module: base_synchro
+#: view:base.synchro.obj:0
+#: view:base.synchro.obj.line:0
+msgid "Group By"
+msgstr "Rühmitamise alus"
+
+#. module: base_synchro
+#: selection:base.synchro.obj,action:0
+msgid "Upload"
+msgstr "Lae üles"
+
+#. module: base_synchro
+#: view:base.synchro.obj:0
+msgid "Latest synchronization"
+msgstr ""
+
+#. module: base_synchro
+#: model:ir.module.module,description:base_synchro.module_meta_information
+msgid "Synchronization with all objects."
+msgstr ""
+
+#. module: base_synchro
+#: view:base.synchro.obj.line:0
+#: field:base.synchro.obj.line,name:0
+msgid "Date"
+msgstr "Kuupäev"
+
+#. module: base_synchro
+#: field:base.synchro.server,password:0
+msgid "Password"
+msgstr "Salasõna"
+
+#. module: base_synchro
+#: field:base.synchro.obj,avoid_ids:0
+msgid "Fields Not Sync."
+msgstr ""
+
+#. module: base_synchro
+#: selection:base.synchro.obj,action:0
+msgid "Both"
+msgstr "Mõlemad"
+
+#. module: base_synchro
+#: field:base.synchro.obj,name:0
+msgid "Name"
+msgstr "Nimi"
+
+#. module: base_synchro
+#: view:base.synchro.obj:0
+msgid "Fields"
+msgstr "Väljad"
+
+#. module: base_synchro
+#: view:base.synchro.obj.line:0
+msgid "Transfered Ids Details"
+msgstr ""
+
+#. module: base_synchro
+#: field:base.synchro.obj,action:0
+msgid "Synchronisation direction"
+msgstr ""
+
+#. module: base_synchro
+#: field:base.synchro.obj,server_id:0
+msgid "Server"
+msgstr "Server"
+
+#. module: base_synchro
+#: model:ir.actions.act_window,name:base_synchro.action_base_synchro_obj_line_tree
+#: model:ir.model,name:base_synchro.model_base_synchro_obj_line
+#: model:ir.ui.menu,name:base_synchro.menu_action_base_synchro_obj_line_tree
+msgid "Synchronized instances"
+msgstr ""
+
+#. module: base_synchro
+#: field:base.synchro.obj,active:0
+msgid "Active"
+msgstr ""
+
+#. module: base_synchro
+#: view:base.synchro.obj:0
+#: field:base.synchro.obj,model_id:0
+msgid "Object to synchronize"
+msgstr ""
+
+#. module: base_synchro
+#: model:ir.module.module,shortdesc:base_synchro.module_meta_information
+msgid "Base Synchro"
+msgstr ""
+
+#. module: base_synchro
+#: model:ir.actions.act_window,name:base_synchro.action_base_synchro_server_tree
+#: model:ir.ui.menu,name:base_synchro.synchro_server_tree_menu_id
+msgid "Servers to be synchronized"
+msgstr ""
+
+#. module: base_synchro
+#: view:base.synchro.obj:0
+msgid "Transfer Details"
+msgstr ""
+
+#. module: base_synchro
+#: field:base.synchro.obj.line,remote_id:0
+msgid "Remote Id"
+msgstr ""
+
+#. module: base_synchro
+#: field:base.synchro.obj,line_id:0
+msgid "Ids Affected"
+msgstr ""
+
+#. module: base_synchro
+#: model:ir.ui.menu,name:base_synchro.next_id_63
+msgid "History"
+msgstr "Ajalugu"
+
+#. module: base_synchro
+#: model:ir.ui.menu,name:base_synchro.next_id_62
+#: model:ir.ui.menu,name:base_synchro.synch_config
+msgid "Synchronization"
+msgstr "Sünkroniseerimine"
+
+#. module: base_synchro
+#: field:base.synchro.obj,domain:0
+msgid "Domain"
+msgstr "Domeen"
+
+#. module: base_synchro
+#: view:base.synchro:0
+msgid "_Synchronize"
+msgstr "_Sünkroniseeri"
+
+#. module: base_synchro
+#: view:base.synchro:0
+msgid "OK"
+msgstr "OK"
+
+#. module: base_synchro
+#: field:base.synchro.server,name:0
+msgid "Server name"
+msgstr "Serveri nimi"
+
+#. module: base_synchro
+#: field:base.synchro.obj,sequence:0
+msgid "Sequence"
+msgstr "Järgnevus"
+
+#. module: base_synchro
+#: view:base.synchro:0
+msgid ""
+"The synchronisation has been started.You will receive a request when it's "
+"done."
+msgstr ""
+
+#. module: base_synchro
+#: field:base.synchro.server,server_port:0
+msgid "Server Port"
+msgstr "Serveri port"
+
+#. module: base_synchro
+#: model:ir.ui.menu,name:base_synchro.menu_action_view_base_synchro
+msgid "Synchronize objects"
+msgstr ""
+
+#. module: base_synchro
+#: view:base.synchro:0
+msgid "Synchronization Complited!"
+msgstr ""
+
+#. module: base_synchro
+#: model:ir.model,name:base_synchro.model_base_synchro
+msgid "base.synchro"
+msgstr "base.synchro"
+
+#. module: base_synchro
+#: field:base.synchro.obj.line,local_id:0
+msgid "Local Id"
+msgstr ""
+
+#. module: base_synchro
+#: model:ir.actions.act_window,name:base_synchro.actions_regclass_tree
+#: model:ir.actions.act_window,name:base_synchro.actions_transfer_line_form
+msgid "Filters"
+msgstr "Filtrid"
+
+#. module: base_synchro
+#: selection:base.synchro.obj,action:0
+msgid "Download"
+msgstr "Lae alla"
+
+#. module: base_synchro
+#: field:base.synchro,server_url:0
+#: field:base.synchro.server,server_url:0
+msgid "Server URL"
+msgstr ""
diff --git a/addons/board/__openerp__.py b/addons/board/__openerp__.py
index 7f37f125903..6cb0e3ecce7 100644
--- a/addons/board/__openerp__.py
+++ b/addons/board/__openerp__.py
@@ -34,10 +34,18 @@ The user can also publish notes.
""",
'author': 'OpenERP SA',
'depends': ['base'],
- 'update_xml': ['security/board_security.xml','security/ir.model.access.csv', 'wizard/board_menu_create_view.xml', 'board_view.xml','board_administration_view.xml'],
- 'demo_xml': ['board_demo.xml'],
+ 'update_xml': [
+ 'security/ir.model.access.csv',
+ 'wizard/board_menu_create_view.xml',
+ 'board_view.xml',
+ 'board_data_admin.xml',
+ 'board_data_home.xml',
+ ],
+ 'demo_xml': [
+ 'board_demo.xml'
+ ],
'installable': True,
- 'active': False,
+ 'active': True,
'certificate': '0076912305725',
'images': ['images/1_dashboard_definition.jpeg','images/2_publish_note.jpeg','images/3_admin_dashboard.jpeg',],
}
diff --git a/addons/board/board.py b/addons/board/board.py
index d215981953a..6a87d5b190b 100644
--- a/addons/board/board.py
+++ b/addons/board/board.py
@@ -168,9 +168,6 @@ class board_board(osv.osv):
'name':lambda *args: 'Dashboard'
}
-board_board()
-
-
class board_line(osv.osv):
"""
Board Line
@@ -193,8 +190,6 @@ class board_line(osv.osv):
'position': lambda *args: 'left'
}
-board_line()
-
class res_log_report(osv.osv):
""" Log Report """
_name = "res.log.report"
diff --git a/addons/board/board_administration_view.xml b/addons/board/board_data_admin.xml
similarity index 92%
rename from addons/board/board_administration_view.xml
rename to addons/board/board_data_admin.xml
index 9e22dbd3fb6..1f45a6f5a72 100644
--- a/addons/board/board_administration_view.xml
+++ b/addons/board/board_data_admin.xml
@@ -1,7 +1,6 @@
-
-
+
user.connection.tree
@@ -158,23 +157,13 @@
-
-
-
-
+
+
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/board/board_data_home.xml b/addons/board/board_data_home.xml
new file mode 100644
index 00000000000..829aa0a816d
--- /dev/null
+++ b/addons/board/board_data_home.xml
@@ -0,0 +1,76 @@
+
+
+
+
+
+ Applications Tiles
+ board.home.applications
+
+
+
+ Events Widget
+ board.home.widgets
+
+
+
+ Facebook Widget
+ board.home.widgets
+
+
+
+ Note Widget
+ board.home.widgets
+
+
+
+ Google Maps Widget
+ board.home.widgets
+
+
+
+ Currency Converter Widget
+ board.home.widgets
+
+
+
+
+
+ Homepage Board
+ board.board
+ form
+
+
+
+
+
+ Home Page
+ board.board
+ form
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/board/board_demo.xml b/addons/board/board_demo.xml
index 2f704e640bc..384e29abdf2 100644
--- a/addons/board/board_demo.xml
+++ b/addons/board/board_demo.xml
@@ -1,8 +1,9 @@
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
diff --git a/addons/board/board_view.xml b/addons/board/board_view.xml
index b5048fa7b3d..36d75002476 100644
--- a/addons/board/board_view.xml
+++ b/addons/board/board_view.xml
@@ -1,146 +1,74 @@
-
-
- Applications Tiles
- board.home.applications
-
-
-
- Events Widget
- board.home.widgets
-
-
-
- Facebook Widget
- board.home.widgets
-
-
-
- Note Widget
- board.home.widgets
-
-
-
- Google Maps Widget
- board.home.widgets
-
-
-
- Currency Converter Widget
- board.home.widgets
-
-
-
- Homepage Board
+
+
+
+ board.board.search
+ board.board
+ search
+
+
+
+
+
+
+
+
+
+
+ board.board.tree
+ board.board
+ tree
+
+
+
+
+
+
+
+
+
+ board.board.form
board.board
form
+
-
-
-
-
- Home Page
- board.board
- form
- form
-
-
-
-
-
-
- board.board.tree
- board.board
- tree
-
-
+
-
-
-
-
-
-
- board.board.form
- board.board
- form
-
-
-
-
-
-
-
- board.board.search
- board.board
- search
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Dashboard Definition
+ board.board
+ form
+ tree,form
+
+
-
- Dashboard Definition
- board.board
- form
- tree,form
-
-
+
-
-
-
-
-
+
diff --git a/addons/board/security/board_security.xml b/addons/board/security/board_security.xml
deleted file mode 100644
index ee544e098cc..00000000000
--- a/addons/board/security/board_security.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
- Sales / User
-
-
-
-
diff --git a/addons/board/security/ir.model.access.csv b/addons/board/security/ir.model.access.csv
index e16104a0acc..8661750bfb8 100644
--- a/addons/board/security/ir.model.access.csv
+++ b/addons/board/security/ir.model.access.csv
@@ -1,7 +1,6 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_board_board","board.board","model_board_board","base.group_user",1,1,1,1
"access_board_board_line","board.board.line","model_board_board_line","base.group_user",1,1,1,1
-"access_board_board_sale_salesman","board.board.sale.salesman","model_board_board","base.group_sale_salesman",1,1,1,1
"access_res_log_report","res.log.report","model_res_log_report","base.group_user",1,1,1,1
"access_res_log_report_system","res.log.report system","model_res_log_report",base.group_system,1,0,0,0
"access_res_log_report_erp_manager","res.log.report erp_manager","model_res_log_report",base.group_erp_manager,1,0,0,0
diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py
index d09e0bf8ba5..b53028c952a 100644
--- a/addons/crm/crm_lead.py
+++ b/addons/crm/crm_lead.py
@@ -133,7 +133,7 @@ class crm_lead(crm_case, osv.osv):
'partner_id': fields.many2one('res.partner', 'Partner', ondelete='set null',
select=True, help="Optional linked partner, usually after conversion of the lead"),
- 'id': fields.integer('ID'),
+ 'id': fields.integer('ID', readonly=True),
'name': fields.char('Name', size=64, select=1),
'active': fields.boolean('Active', required=False),
'date_action_last': fields.datetime('Last Action', readonly=1),
diff --git a/addons/crm/crm_meeting.py b/addons/crm/crm_meeting.py
index c3381601cbf..40ba8662f13 100644
--- a/addons/crm/crm_meeting.py
+++ b/addons/crm/crm_meeting.py
@@ -52,7 +52,7 @@ class crm_meeting(crm_base, osv.osv):
'section_id': fields.many2one('crm.case.section', 'Sales Team', states={'done': [('readonly', True)]}, \
select=True, help='Sales team to which Case belongs to.'),
'email_from': fields.char('Email', size=128, states={'done': [('readonly', True)]}, help="These people will receive email."),
- 'id': fields.integer('ID'),
+ 'id': fields.integer('ID', readonly=True),
'create_date': fields.datetime('Creation Date' , readonly=True),
'write_date': fields.datetime('Write Date' , readonly=True),
'date_action_last': fields.datetime('Last Action', readonly=1),
diff --git a/addons/crm/crm_phonecall.py b/addons/crm/crm_phonecall.py
index d5d7d6c5614..748f85ad063 100644
--- a/addons/crm/crm_phonecall.py
+++ b/addons/crm/crm_phonecall.py
@@ -34,7 +34,7 @@ class crm_phonecall(crm_base, osv.osv):
_order = "id desc"
_columns = {
# From crm.case
- 'id': fields.integer('ID'),
+ 'id': fields.integer('ID', readonly=True),
'name': fields.char('Call Summary', size=64),
'active': fields.boolean('Active', required=False),
'date_action_last': fields.datetime('Last Action', readonly=1),
diff --git a/addons/crm/i18n/nb.po b/addons/crm/i18n/nb.po
index a4cc2bac437..241e3959b9c 100644
--- a/addons/crm/i18n/nb.po
+++ b/addons/crm/i18n/nb.po
@@ -8,26 +8,26 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2011-08-23 11:25+0000\n"
+"PO-Revision-Date: 2011-10-13 07:42+0000\n"
"Last-Translator: Rolv Råen (adEgo) \n"
"Language-Team: Norwegian Bokmal \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 05:07+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: crm
#: view:crm.lead.report:0
msgid "# Leads"
-msgstr ""
+msgstr "# Leads"
#. module: crm
#: view:crm.lead:0
#: selection:crm.lead,type:0
#: selection:crm.lead.report,type:0
msgid "Lead"
-msgstr ""
+msgstr "Lead"
#. module: crm
#: model:crm.case.categ,name:crm.categ_oppor3
diff --git a/addons/crm/res_partner_view.xml b/addons/crm/res_partner_view.xml
index 8f9012b1bf0..79b8bebb55d 100644
--- a/addons/crm/res_partner_view.xml
+++ b/addons/crm/res_partner_view.xml
@@ -53,7 +53,7 @@
-
+
@@ -84,7 +84,7 @@
icon="gtk-go-up" />
-
+
@@ -92,7 +92,7 @@
-
+
diff --git a/addons/crm_fundraising/crm_fundraising.py b/addons/crm_fundraising/crm_fundraising.py
index a935162e98e..07ba7460dec 100644
--- a/addons/crm_fundraising/crm_fundraising.py
+++ b/addons/crm_fundraising/crm_fundraising.py
@@ -33,7 +33,7 @@ class crm_fundraising(crm.crm_case, osv.osv):
_order = "id desc"
_inherit = ['mail.thread']
_columns = {
- 'id': fields.integer('ID'),
+ 'id': fields.integer('ID', readonly=True),
'name': fields.char('Name', size=128, required=True),
'active': fields.boolean('Active', required=False),
'date_action_last': fields.datetime('Last Action', readonly=1),
diff --git a/addons/delivery/i18n/et.po b/addons/delivery/i18n/et.po
index 1fef0ec02ba..c2cbc7812cc 100644
--- a/addons/delivery/i18n/et.po
+++ b/addons/delivery/i18n/et.po
@@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2010-10-30 13:40+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
+"PO-Revision-Date: 2011-10-11 17:52+0000\n"
+"Last-Translator: Aare Vesi \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 05:00+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-12 04:39+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: delivery
#: report:sale.shipping:0
msgid "Order Ref."
-msgstr ""
+msgstr "Tellimuse viide"
#. module: delivery
#: model:product.template,name:delivery.delivery_product_product_template
@@ -34,12 +34,12 @@ msgstr "Sihtpunkt"
#. module: delivery
#: field:stock.move,weight_net:0
msgid "Net weight"
-msgstr ""
+msgstr "Netokaal"
#. module: delivery
#: view:stock.picking:0
msgid "Delivery Order"
-msgstr ""
+msgstr "Tarnekorraldus"
#. module: delivery
#: code:addons/delivery/delivery.py:141
@@ -77,7 +77,7 @@ msgstr ""
#. module: delivery
#: model:ir.actions.report.xml,name:delivery.report_shipping
msgid "Delivery order"
-msgstr ""
+msgstr "Tarnetellimus"
#. module: delivery
#: view:res.partner:0
@@ -103,7 +103,7 @@ msgstr "Riigid"
#. module: delivery
#: report:sale.shipping:0
msgid "Delivery Order :"
-msgstr ""
+msgstr "Tarnetellimus :"
#. module: delivery
#: field:delivery.grid.line,variable_factor:0
@@ -137,7 +137,7 @@ msgstr "Tarneviis"
#. module: delivery
#: model:ir.model,name:delivery.model_stock_move
msgid "Stock Move"
-msgstr ""
+msgstr "Laoseisu liikumine"
#. module: delivery
#: code:addons/delivery/delivery.py:141
@@ -153,7 +153,7 @@ msgstr ""
#. module: delivery
#: field:stock.picking,weight_net:0
msgid "Net Weight"
-msgstr ""
+msgstr "Netokaal"
#. module: delivery
#: model:ir.actions.act_window,help:delivery.action_delivery_carrier_form
@@ -177,7 +177,7 @@ msgstr ""
#. module: delivery
#: view:delivery.sale.order:0
msgid "_Cancel"
-msgstr ""
+msgstr "_Tühista"
#. module: delivery
#: field:delivery.grid.line,operator:0
@@ -187,12 +187,12 @@ msgstr "Operaator"
#. module: delivery
#: model:ir.model,name:delivery.model_res_partner
msgid "Partner"
-msgstr ""
+msgstr "Partner"
#. module: delivery
#: model:ir.model,name:delivery.model_sale_order
msgid "Sales Order"
-msgstr ""
+msgstr "Müügitellimus"
#. module: delivery
#: model:ir.model,name:delivery.model_delivery_grid
@@ -207,7 +207,7 @@ msgstr ""
#. module: delivery
#: model:ir.model,name:delivery.model_stock_picking
msgid "Picking List"
-msgstr ""
+msgstr "Noppeleht"
#. module: delivery
#: model:ir.model,name:delivery.model_delivery_sale_order
@@ -250,7 +250,7 @@ msgstr ""
#. module: delivery
#: report:sale.shipping:0
msgid "Order Date"
-msgstr ""
+msgstr "Tellimuse Kuupäev"
#. module: delivery
#: field:delivery.grid,name:0
@@ -260,12 +260,12 @@ msgstr ""
#. module: delivery
#: view:stock.move:0
msgid "Weights"
-msgstr ""
+msgstr "Kaalud"
#. module: delivery
#: field:stock.picking,number_of_packages:0
msgid "Number of Packages"
-msgstr ""
+msgstr "Pakkide arv"
#. module: delivery
#: selection:delivery.grid.line,type:0
@@ -309,7 +309,7 @@ msgstr "Viga! Sa ei saa luua rekursiivseid seotud liikmeid."
#. module: delivery
#: report:sale.shipping:0
msgid "Lot"
-msgstr ""
+msgstr "Partii"
#. module: delivery
#: constraint:stock.move:0
@@ -325,7 +325,7 @@ msgstr "Aktiivne"
#. module: delivery
#: report:sale.shipping:0
msgid "Shipping Date"
-msgstr ""
+msgstr "Tarnimise kuupäev"
#. module: delivery
#: field:delivery.carrier,product_id:0
@@ -361,7 +361,7 @@ msgstr "Maksimumväärtus"
#. module: delivery
#: report:sale.shipping:0
msgid "Quantity"
-msgstr ""
+msgstr "Kogus"
#. module: delivery
#: field:delivery.grid,zip_from:0
@@ -387,7 +387,7 @@ msgstr "Müügid ja ostud"
#. module: delivery
#: selection:delivery.grid.line,operator:0
msgid "<="
-msgstr ""
+msgstr "<="
#. module: delivery
#: constraint:stock.move:0
@@ -408,7 +408,7 @@ msgstr "Tarnekulud"
#. module: delivery
#: report:sale.shipping:0
msgid "Description"
-msgstr ""
+msgstr "Kirjeldus"
#. module: delivery
#: model:ir.actions.act_window,name:delivery.action_delivery_grid_form
@@ -469,7 +469,7 @@ msgstr "Tarnija"
#. module: delivery
#: view:delivery.sale.order:0
msgid "_Apply"
-msgstr ""
+msgstr "_Rakenda"
#. module: delivery
#: field:sale.order,id:0
diff --git a/addons/document_ftp/i18n/et.po b/addons/document_ftp/i18n/et.po
new file mode 100644
index 00000000000..67b38b6bf0a
--- /dev/null
+++ b/addons/document_ftp/i18n/et.po
@@ -0,0 +1,135 @@
+# Estonian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-10-11 18:05+0000\n"
+"Last-Translator: Aare Vesi \n"
+"Language-Team: Estonian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-10-12 04:40+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
+
+#. module: document_ftp
+#: model:ir.model,name:document_ftp.model_document_ftp_configuration
+msgid "Auto Directory Configuration"
+msgstr ""
+
+#. module: document_ftp
+#: view:document.ftp.configuration:0
+msgid ""
+"Indicate the network address on which your OpenERP server should be "
+"reachable for end-users. This depends on your network topology and "
+"configuration, and will only affect the links displayed to the users. The "
+"format is HOST:PORT and the default host (localhost) is only suitable for "
+"access from the server machine itself.."
+msgstr ""
+
+#. module: document_ftp
+#: field:document.ftp.configuration,progress:0
+msgid "Configuration Progress"
+msgstr ""
+
+#. module: document_ftp
+#: model:ir.actions.url,name:document_ftp.action_document_browse
+msgid "Browse Files"
+msgstr "Failide sirvimine"
+
+#. module: document_ftp
+#: field:document.ftp.configuration,config_logo:0
+msgid "Image"
+msgstr "Pilt"
+
+#. module: document_ftp
+#: field:document.ftp.configuration,host:0
+msgid "Address"
+msgstr "Aadress"
+
+#. module: document_ftp
+#: field:document.ftp.browse,url:0
+msgid "FTP Server"
+msgstr "FTP server"
+
+#. module: document_ftp
+#: model:ir.actions.act_window,name:document_ftp.action_config_auto_directory
+msgid "FTP Server Configuration"
+msgstr "FTP serveri konfiguratsioon"
+
+#. module: document_ftp
+#: model:ir.module.module,description:document_ftp.module_meta_information
+msgid ""
+"This is a support FTP Interface with document management system.\n"
+" With this module you would not only be able to access documents through "
+"OpenERP\n"
+" but you would also be able to connect with them through the file system "
+"using the\n"
+" FTP client.\n"
+msgstr ""
+
+#. module: document_ftp
+#: view:document.ftp.browse:0
+msgid "_Browse"
+msgstr "_Sirvi"
+
+#. module: document_ftp
+#: help:document.ftp.configuration,host:0
+msgid ""
+"Server address or IP and port to which users should connect to for DMS access"
+msgstr ""
+
+#. module: document_ftp
+#: model:ir.ui.menu,name:document_ftp.menu_document_browse
+msgid "Shared Repository (FTP)"
+msgstr ""
+
+#. module: document_ftp
+#: view:document.ftp.browse:0
+msgid "_Cancel"
+msgstr "_Tühista"
+
+#. module: document_ftp
+#: view:document.ftp.configuration:0
+msgid "Configure FTP Server"
+msgstr ""
+
+#. module: document_ftp
+#: model:ir.module.module,shortdesc:document_ftp.module_meta_information
+msgid "Integrated FTP Server with Document Management System"
+msgstr ""
+
+#. module: document_ftp
+#: view:document.ftp.configuration:0
+msgid "title"
+msgstr "pealkiri"
+
+#. module: document_ftp
+#: model:ir.model,name:document_ftp.model_document_ftp_browse
+msgid "Document FTP Browse"
+msgstr ""
+
+#. module: document_ftp
+#: view:document.ftp.configuration:0
+msgid "Knowledge Application Configuration"
+msgstr ""
+
+#. module: document_ftp
+#: model:ir.actions.act_window,name:document_ftp.action_ftp_browse
+msgid "Document Browse"
+msgstr ""
+
+#. module: document_ftp
+#: view:document.ftp.browse:0
+msgid "Browse Document"
+msgstr ""
+
+#. module: document_ftp
+#: view:document.ftp.configuration:0
+msgid "res_config_contents"
+msgstr ""
diff --git a/addons/email_template/i18n/et.po b/addons/email_template/i18n/et.po
new file mode 100644
index 00000000000..f327fa5f870
--- /dev/null
+++ b/addons/email_template/i18n/et.po
@@ -0,0 +1,1280 @@
+# Estonian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-10-11 18:04+0000\n"
+"Last-Translator: Aare Vesi \n"
+"Language-Team: Estonian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-10-12 04:40+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
+
+#. module: email_template
+#: help:email_template.account,auto_delete:0
+msgid "Permanently delete emails after sending"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.account:0
+msgid "Email Account Configuration"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/wizard/email_template_send_wizard.py:195
+#, python-format
+msgid "Emails for multiple items saved in outbox."
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/wizard/email_template_send_wizard.py:59
+#: code:addons/email_template/wizard/email_template_send_wizard.py:60
+#, python-format
+msgid ""
+"No personal email accounts are configured for you. \n"
+"Either ask admin to enforce an account for this template or get yourself a "
+"personal email account."
+msgstr ""
+
+#. module: email_template
+#: view:email_template.mailbox:0
+msgid "Personal Emails"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,file_name:0
+msgid "Report Filename"
+msgstr "Aruande failinimi"
+
+#. module: email_template
+#: view:email.template:0
+msgid "Email Content "
+msgstr ""
+
+#. module: email_template
+#: view:email_template.send.wizard:0
+msgid "Send mail Wizard"
+msgstr ""
+
+#. module: email_template
+#: selection:email_template.mailbox,mail_type:0
+msgid "Plain Text & HTML with no attachments"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,model_object_field:0
+msgid ""
+"Select the field from the model you want to use.\n"
+"If it is a relationship field you will be able to choose the nested values "
+"in the box below\n"
+"(Note:If there are no values make sure you have selected the correct model)"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.preview,body_html:0
+#: field:email_template.preview,body_text:0
+#: field:email_template.send.wizard,body_html:0
+#: field:email_template.send.wizard,body_text:0
+msgid "Body"
+msgstr "Sisu"
+
+#. module: email_template
+#: code:addons/email_template/email_template.py:304
+#, python-format
+msgid "Deletion of Record failed"
+msgstr ""
+
+#. module: email_template
+#: help:email_template.account,company:0
+msgid ""
+"Select if this mail account does not belong to specific user but to the "
+"organization as a whole. eg: info@companydomain.com"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.send.wizard:0
+msgid "Send now"
+msgstr ""
+
+#. module: email_template
+#: selection:email_template.mailbox,state:0
+msgid "Not Applicable"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.account:0
+#: model:ir.ui.menu,name:email_template.menu_email_account_all_tools
+#: model:ir.ui.menu,name:email_template.menu_email_template_account_all
+msgid "Email Accounts"
+msgstr "E-posti kontod"
+
+#. module: email_template
+#: view:email_template.send.wizard:0
+msgid "Send all mails"
+msgstr "Saada kõik kirjad"
+
+#. module: email_template
+#: help:email_template.account,smtpuname:0
+msgid ""
+"Specify the username if your SMTP server requires authentication, otherwise "
+"leave it empty."
+msgstr ""
+
+#. module: email_template
+#: field:email_template.mailbox,server_ref:0
+msgid "Server Reference of mail"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.account:0
+#: selection:email_template.account,state:0
+msgid "Approved"
+msgstr "Heakskiidetud"
+
+#. module: email_template
+#: help:email.template,def_cc:0
+msgid ""
+"Carbon Copy address(es), comma-separated. Placeholders can be used here. "
+"e.g. ${object.email_cc}"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+msgid "Account"
+msgstr "Konto"
+
+#. module: email_template
+#: field:email.template,table_html:0
+msgid "HTML code"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.mailbox:0
+msgid "Send Mail"
+msgstr "Saada kiri"
+
+#. module: email_template
+#: help:email_template.account,name:0
+msgid ""
+"The description is used as the Sender name along with the provided From "
+"Email, unless it is already specified in the From Email, e.g: John Doe "
+""
+msgstr ""
+
+#. module: email_template
+#: field:email.template,from_account:0
+msgid "Email Account"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/wizard/email_template_send_wizard.py:201
+#, python-format
+msgid "Email sending failed for one or more objects."
+msgstr ""
+
+#. module: email_template
+#: view:email_template.send.wizard:0
+msgid ""
+"Add here all attachments of the current document you want to include in the "
+"Email."
+msgstr ""
+
+#. module: email_template
+#: help:email.template,lang:0
+msgid ""
+"The default language for the email. Placeholders can be used here. eg. "
+"${object.partner_id.lang}"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,sub_model_object_field:0
+msgid ""
+"When you choose relationship fields this field will specify the sub value "
+"you can use."
+msgstr ""
+
+#. module: email_template
+#: selection:email_template.send.wizard,state:0
+msgid "Wizard Complete"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,reply_to:0
+#: field:email_template.mailbox,reply_to:0
+#: field:email_template.preview,reply_to:0
+#: field:email_template.send.wizard,reply_to:0
+msgid "Reply-To"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+msgid "Delete Action"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.account:0
+msgid "Approve Account"
+msgstr "Kinnita konto"
+
+#. module: email_template
+#: field:email_template.preview,rel_model_ref:0
+#: field:email_template.send.wizard,rel_model_ref:0
+msgid "Referred Document"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.send.wizard,full_success:0
+msgid "Complete Success"
+msgstr ""
+
+#. module: email_template
+#: selection:email_template.account,send_pref:0
+msgid "Both HTML & Text (Mixed)"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.preview:0
+msgid "OK"
+msgstr "OK"
+
+#. module: email_template
+#: field:email_template.account,auto_delete:0
+msgid "Auto Delete"
+msgstr ""
+
+#. module: email_template
+#: selection:email_template.account,send_pref:0
+msgid "Both HTML & Text (Alternative)"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.send.wizard,requested:0
+msgid "No of requested Mails"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,def_body_text:0
+#: view:email_template.mailbox:0
+#: field:email_template.mailbox,body_text:0
+msgid "Standard Body (Text)"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,attachment_ids:0
+msgid "Attached Files"
+msgstr "Lisatud failid"
+
+#. module: email_template
+#: field:email_template.account,smtpssl:0
+msgid "SSL/TLS (only in python 2.6)"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.account,email_id:0
+msgid "From Email"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template.py:304
+#, python-format
+msgid "Warning"
+msgstr "Hoiatus"
+
+#. module: email_template
+#: model:ir.actions.act_window,name:email_template.action_email_template_account_tree_all
+msgid "Accounts"
+msgstr "Kontod"
+
+#. module: email_template
+#: view:email_template.preview:0
+msgid "Body(Text)"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.mailbox:0
+msgid "Company Emails"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.send.wizard:0
+msgid ""
+"Tip: Multiple emails are sent in the same language (the first one is "
+"proposed). We suggest you send emails in groups according to language."
+msgstr ""
+
+#. module: email_template
+#: help:email_template.preview,reply_to:0
+#: help:email_template.send.wizard,reply_to:0
+msgid ""
+"The address recipients should reply to, if different from the From address. "
+"Placeholders can be used here."
+msgstr ""
+
+#. module: email_template
+#: field:email.template,def_subject:0
+#: field:email_template.mailbox,subject:0
+#: field:email_template.preview,subject:0
+#: field:email_template.send.wizard,subject:0
+msgid "Subject"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template_account.py:256
+#, python-format
+msgid "Reason: %s"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.mailbox,email_from:0
+msgid "From"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.preview,ref_template:0
+#: field:email_template.send.wizard,ref_template:0
+msgid "Template"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template_account.py:367
+#, python-format
+msgid ""
+"Mail from Account %s failed. Probable Reason: Server Send Error\n"
+" Description: %s"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+msgid "Insert Simple Field"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.preview:0
+msgid "Body(Html)"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,def_bcc:0
+msgid ""
+"Blind Carbon Copy address(es), comma-separated. Placeholders can be used "
+"here. e.g. ${object.email_bcc}"
+msgstr ""
+
+#. module: email_template
+#: model:ir.actions.act_window,name:email_template.wizard_email_template_preview
+msgid "Template Preview"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,def_body_html:0
+msgid "Body (Text-Web Client Only)"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.account,state:0
+#: view:email_template.mailbox:0
+msgid "State"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,ref_ir_value:0
+msgid "Wizard Button"
+msgstr ""
+
+#. module: email_template
+#: help:email_template.account,email_id:0
+msgid "eg: 'john@doe.com' or 'John Doe '"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+#: field:email.template,object_name:0
+msgid "Resource"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template_account.py:255
+#, python-format
+msgid "Out going connection test failed"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template_account.py:371
+#, python-format
+msgid "Mail from Account %s successfully Sent."
+msgstr ""
+
+#. module: email_template
+#: view:email_template.mailbox:0
+msgid "Standard Body"
+msgstr ""
+
+#. module: email_template
+#: selection:email.template,template_language:0
+msgid "Mako Templates"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,def_body_html:0
+#: help:email.template,def_body_text:0
+msgid "The text version of the mail"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template.py:449
+#, python-format
+msgid " (Email Attachment)"
+msgstr ""
+
+#. module: email_template
+#: selection:email_template.mailbox,folder:0
+msgid "Sent Items"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.account:0
+msgid "Test Outgoing Connection"
+msgstr ""
+
+#. module: email_template
+#: model:ir.actions.act_window,name:email_template.action_email_template_mailbox
+msgid "Mailbox"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,reply_to:0
+msgid ""
+"The address recipients should reply to, if different from the From address. "
+"Placeholders can be used here. e.g. ${object.email_reply_to}"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,ref_ir_value:0
+msgid ""
+"Button in the side bar of the form view of this Resource that will invoke "
+"the Window Action"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.mailbox,account_id:0
+msgid "User account"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.send.wizard,signature:0
+msgid "Attach my signature to mail"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/wizard/email_template_send_wizard.py:255
+#: view:email.template:0
+#, python-format
+msgid "Report"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,sub_model_object_field:0
+msgid "Sub Field"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+#: view:email_template.mailbox:0
+msgid "Advanced"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.mailbox:0
+msgid "My Emails"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+msgid "Expression Builder"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,sub_object:0
+msgid ""
+"When a relation field is used this field will show you the type of field you "
+"have selected"
+msgstr ""
+
+#. module: email_template
+#: selection:email_template.mailbox,mail_type:0
+msgid "HTML Body"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.account:0
+msgid "Suspend Account"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,null_value:0
+msgid "This Value is used if the field is empty"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+msgid "Preview Template"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.account,smtpserver:0
+msgid "Server"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,copyvalue:0
+msgid ""
+"Copy and paste the value in the location you want to use a system value."
+msgstr ""
+
+#. module: email_template
+#: help:email.template,track_campaign_item:0
+msgid ""
+"Enable this is you wish to include a special tracking marker in outgoing "
+"emails so you can identify replies and link them back to the corresponding "
+"resource record. This is useful for CRM leads for example"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+msgid "Body (Raw HTML)"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,use_sign:0
+msgid "Signature"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,sub_object:0
+msgid "Sub-model"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+msgid "Options"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.send.wizard:0
+msgid "Body (Plain Text)"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+msgid "Body (Text)"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.mailbox,date_mail:0
+msgid "Rec/Sent Date"
+msgstr ""
+
+#. module: email_template
+#: selection:email_template.account,state:0
+msgid "Initiated"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,report_template:0
+msgid "Report to send"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.account:0
+msgid "Server Information"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.send.wizard,generated:0
+msgid "No of generated Mails"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+msgid "Mail Details"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template_account.py:235
+#, python-format
+msgid "SMTP SERVER or PORT not specified"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+msgid "Note: This is Raw HTML."
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+msgid "Group by..."
+msgstr ""
+
+#. module: email_template
+#: selection:email_template.send.wizard,state:0
+msgid "Multiple Mail Wizard Step 1"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.account,user:0
+msgid "Related User"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.mailbox,body_html:0
+msgid "Body (Rich Text Clients Only)"
+msgstr ""
+
+#. module: email_template
+#: selection:email_template.account,company:0
+msgid "Yes"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,ref_ir_act_window:0
+msgid "Window Action"
+msgstr ""
+
+#. module: email_template
+#: selection:email_template.account,send_pref:0
+msgid "HTML, otherwise Text"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.mailbox:0
+#: selection:email_template.mailbox,folder:0
+msgid "Drafts"
+msgstr ""
+
+#. module: email_template
+#: selection:email_template.account,company:0
+msgid "No"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.account,smtpport:0
+msgid "SMTP Port"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.mailbox,mail_type:0
+msgid "Mail Contents"
+msgstr ""
+
+#. module: email_template
+#: sql_constraint:email.template:0
+msgid "The template name must be unique !"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,def_bcc:0
+#: field:email_template.mailbox,email_bcc:0
+#: field:email_template.preview,bcc:0
+#: field:email_template.send.wizard,bcc:0
+msgid "BCC"
+msgstr ""
+
+#. module: email_template
+#: selection:email_template.mailbox,mail_type:0
+msgid "Plain Text"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.account:0
+msgid "Draft"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,model_int_name:0
+msgid "Model Internal Name"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,message_id:0
+#: field:email_template.mailbox,message_id:0
+#: field:email_template.preview,message_id:0
+#: field:email_template.send.wizard,message_id:0
+msgid "Message-ID"
+msgstr ""
+
+#. module: email_template
+#: help:email_template.mailbox,server_ref:0
+msgid "Applicable for inward items only"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.send.wizard:0
+msgid ""
+"After clicking send all mails, mails will be sent to outbox and cleared in "
+"next Send/Recieve"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.mailbox,state:0
+#: field:email_template.send.wizard,state:0
+msgid "Status"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.account:0
+msgid "Outgoing"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template_account.py:427
+#, python-format
+msgid "Datetime Extraction failed.Date:%s \tError:%s"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,use_sign:0
+msgid "the signature from the User details will be appended to the mail"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.send.wizard,from:0
+msgid "From Account"
+msgstr ""
+
+#. module: email_template
+#: selection:email_template.mailbox,mail_type:0
+msgid "Intermixed content"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.account:0
+msgid "Request Re-activation"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+#: model:ir.actions.act_window,name:email_template.action_email_template_tree_all
+#: model:ir.ui.menu,name:email_template.menu_email_template_all
+#: model:ir.ui.menu,name:email_template.menu_email_template_all_tools
+msgid "Email Templates"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.account,smtpuname:0
+msgid "User Name"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.mailbox,user:0
+msgid "User"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+msgid "Advanced Options"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.mailbox:0
+#: selection:email_template.mailbox,folder:0
+msgid "Outbox"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.send.wizard:0
+msgid "Save in Drafts"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template_account.py:362
+#, python-format
+msgid ""
+"Mail from Account %s failed. Probable Reason:MIME Error\n"
+"Description: %s"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.account,smtptls:0
+msgid "TLS"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,lang:0
+msgid "Language"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template_account.py:275
+#: code:addons/email_template/email_template_account.py:280
+#: code:addons/email_template/email_template_account.py:362
+#: code:addons/email_template/email_template_account.py:371
+#: code:addons/email_template/email_template_account.py:374
+#: code:addons/email_template/email_template_account.py:424
+#: code:addons/email_template/wizard/email_template_send_wizard.py:201
+#: model:ir.ui.menu,name:email_template.menu_email_template
+#: model:ir.ui.menu,name:email_template.menu_email_template_config_tools
+#: model:ir.ui.menu,name:email_template.menu_email_template_configuration
+#: model:ir.ui.menu,name:email_template.menu_email_template_tools
+#, python-format
+msgid "Email Template"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.account:0
+msgid "Send/Receive"
+msgstr ""
+
+#. module: email_template
+#: model:ir.ui.menu,name:email_template.menu_email_template_personal_mails
+msgid "Personal Mails"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.account:0
+#: selection:email_template.account,state:0
+msgid "Suspended"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,allowed_groups:0
+msgid ""
+"Only users from these groups will be allowed to send mails from this Template"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template.py:284
+#, python-format
+msgid "Send Mail (%s)"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,def_subject:0
+msgid "The subject of email. Placeholders can be used here."
+msgstr ""
+
+#. module: email_template
+#: field:email_template.send.wizard,report:0
+msgid "Report File Name"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,copyvalue:0
+msgid "Expression"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.mailbox:0
+#: field:email_template.mailbox,history:0
+msgid "History"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+#: view:email_template.mailbox:0
+#: field:email_template.mailbox,attachments_ids:0
+#: view:email_template.send.wizard:0
+#: field:email_template.send.wizard,attachment_ids:0
+msgid "Attachments"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.preview,to:0
+#: field:email_template.send.wizard,to:0
+msgid "To"
+msgstr ""
+
+#. module: email_template
+#: selection:email_template.account,send_pref:0
+msgid "Text, otherwise HTML"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template.py:319
+#, python-format
+msgid "Copy of template %s"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.send.wizard:0
+msgid "Discard Mail"
+msgstr ""
+
+#. module: email_template
+#: model:ir.model,name:email_template.model_email_template
+msgid "Email Templates for Models"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.send.wizard:0
+msgid "Close"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template_mailbox.py:48
+#, python-format
+msgid "Error sending mail: %s"
+msgstr ""
+
+#. module: email_template
+#: constraint:email_template.account:0
+msgid "Error: You are not allowed to have more than 1 account."
+msgstr ""
+
+#. module: email_template
+#: view:email_template.mailbox:0
+msgid "Body (HTML-Web Client Only)"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/wizard/email_template_send_wizard.py:253
+#, python-format
+msgid "%s (Email Attachment)"
+msgstr ""
+
+#. module: email_template
+#: selection:email_template.mailbox,state:0
+msgid "Sending"
+msgstr ""
+
+#. module: email_template
+#: model:ir.actions.act_window,help:email_template.action_email_template_mailbox
+msgid ""
+"An email template is an email document that will be sent as part of a "
+"marketing campaign. You can personalize it according to specific customer "
+"profile fields, so that a partner name or other partner related information "
+"may be inserted automatically."
+msgstr ""
+
+#. module: email_template
+#: field:email.template,allowed_groups:0
+msgid "Allowed User Groups"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,model_object_field:0
+msgid "Field"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.account:0
+msgid "User Information"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+msgid "Actions"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template_account.py:363
+#: code:addons/email_template/email_template_account.py:368
+#, python-format
+msgid ""
+"Server Send Error\n"
+"Description: %s"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,file_name:0
+msgid ""
+"Name of the generated report file. Placeholders can be used in the filename. "
+"eg: 2009_SO003.pdf"
+msgstr ""
+
+#. module: email_template
+#: help:email_template.mailbox,date_mail:0
+msgid "Date on which Email Sent or Received"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.mailbox:0
+#: selection:email_template.mailbox,folder:0
+msgid "Trash"
+msgstr ""
+
+#. module: email_template
+#: model:ir.model,name:email_template.model_email_template_mailbox
+msgid "Email Mailbox"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template_mailbox.py:104
+#, python-format
+msgid ""
+"Sending of Mail %s failed. Probable Reason:Could not login to server\n"
+"Error: %s"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/wizard/email_template_send_wizard.py:60
+#, python-format
+msgid "Missing mail account"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template_account.py:250
+#, python-format
+msgid "SMTP Test Connection Was Successful"
+msgstr ""
+
+#. module: email_template
+#: model:ir.module.module,shortdesc:email_template.module_meta_information
+msgid "Email Template for OpenERP"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.account,name:0
+msgid "Description"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+msgid "Create Action"
+msgstr ""
+
+#. module: email_template
+#: help:email_template.account,smtpserver:0
+msgid "Enter name of outgoing server, eg: smtp.yourdomain.com"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,attachment_ids:0
+msgid ""
+"You may attach existing files to this template, so they will be added in all "
+"emails created from this template"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,message_id:0
+msgid ""
+"Specify the Message-ID SMTP header to use in outgoing emails. Please note "
+"that this overrides the Resource tracking option! Placeholders can be used "
+"here."
+msgstr ""
+
+#. module: email_template
+#: field:email.template,def_to:0
+#: field:email_template.mailbox,email_to:0
+msgid "Recipient (To)"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,null_value:0
+msgid "Null Value"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,template_language:0
+msgid "Templating Language"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,def_cc:0
+#: field:email_template.mailbox,email_cc:0
+#: field:email_template.preview,cc:0
+#: field:email_template.send.wizard,cc:0
+msgid "CC"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.mailbox:0
+msgid "Sent"
+msgstr ""
+
+#. module: email_template
+#: sql_constraint:email_template.account:0
+msgid "Another setting already exists with this email ID !"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,ref_ir_act_window:0
+msgid "Action that will open this email template on Resource records"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.account,smtppass:0
+msgid "Password"
+msgstr ""
+
+#. module: email_template
+#: help:email_template.preview,message_id:0
+#: help:email_template.send.wizard,message_id:0
+msgid ""
+"The Message-ID header value, if you need tospecify it, for example to "
+"automatically recognize the replies later. Placeholders can be used here."
+msgstr ""
+
+#. module: email_template
+#: view:email_template.mailbox:0
+#: model:ir.actions.act_window,name:email_template.action_email_template_mailbox
+#: model:ir.ui.menu,name:email_template.menu_email_template_mails_tools
+#: model:ir.ui.menu,name:email_template.menu_email_template_personal_mails
+msgid "Emails"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+msgid "Templates"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.preview,report:0
+msgid "Report Name"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,name:0
+msgid "Name"
+msgstr ""
+
+#. module: email_template
+#: field:email.template,track_campaign_item:0
+msgid "Resource Tracking"
+msgstr ""
+
+#. module: email_template
+#: model:ir.model,name:email_template.model_email_template_preview
+msgid "Email Template Preview"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.preview:0
+msgid "Email Preview"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,def_to:0
+msgid ""
+"The Recipient of email. Placeholders can be used here. e.g. "
+"${object.email_to}"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+msgid "Existing files"
+msgstr ""
+
+#. module: email_template
+#: model:ir.module.module,description:email_template.module_meta_information
+msgid ""
+"\n"
+" Email Template is extraction of Power Email basically just to send the "
+"emails.\n"
+" "
+msgstr ""
+
+#. module: email_template
+#: view:email_template.send.wizard:0
+msgid "Body (HTML)"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,table_html:0
+msgid ""
+"Copy this html code to your HTML message body for displaying the info in "
+"your mail."
+msgstr ""
+
+#. module: email_template
+#: model:ir.model,name:email_template.model_email_template_account
+msgid "email_template.account"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.preview,rel_model:0
+#: field:email_template.send.wizard,rel_model:0
+msgid "Model"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template_account.py:236
+#, python-format
+msgid "Core connection for the given ID does not exist"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.account,company:0
+msgid "Corporate"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template_account.py:275
+#, python-format
+msgid ""
+"Mail from Account %s failed on login. Probable Reason:Could not login to "
+"server\n"
+"Error: %s"
+msgstr ""
+
+#. module: email_template
+#: model:ir.model,name:email_template.model_email_template_send_wizard
+msgid "This is the wizard for sending mail"
+msgstr ""
+
+#. module: email_template
+#: view:email.template:0
+msgid "Addresses"
+msgstr ""
+
+#. module: email_template
+#: help:email.template,from_account:0
+msgid "Emails will be sent from this approved account."
+msgstr ""
+
+#. module: email_template
+#: field:email_template.account,send_pref:0
+msgid "Mail Format"
+msgstr ""
+
+#. module: email_template
+#: field:email_template.mailbox,folder:0
+msgid "Folder"
+msgstr ""
+
+#. module: email_template
+#: view:email_template.account:0
+msgid "Company Accounts"
+msgstr ""
+
+#. module: email_template
+#: help:email_template.account,smtpport:0
+msgid "Enter port number, eg: 25 or 587"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/wizard/email_template_send_wizard.py:59
+#, python-format
+msgid "email-template"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template_account.py:280
+#: code:addons/email_template/email_template_account.py:374
+#: code:addons/email_template/email_template_account.py:375
+#, python-format
+msgid "Mail from Account %s failed. Probable Reason:Account not approved"
+msgstr ""
+
+#. module: email_template
+#: selection:email_template.send.wizard,state:0
+msgid "Simple Mail Wizard Step 1"
+msgstr ""
+
+#. module: email_template
+#: selection:email_template.mailbox,mail_type:0
+msgid "Has Attachments"
+msgstr ""
+
+#. module: email_template
+#: code:addons/email_template/email_template.py:452
+#: code:addons/email_template/wizard/email_template_send_wizard.py:256
+#, python-format
+msgid "No Description"
+msgstr ""
diff --git a/addons/fetchmail/i18n/et.po b/addons/fetchmail/i18n/et.po
new file mode 100644
index 00000000000..24cc08e4b50
--- /dev/null
+++ b/addons/fetchmail/i18n/et.po
@@ -0,0 +1,305 @@
+# Estonian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-10-11 18:02+0000\n"
+"Last-Translator: Aare Vesi \n"
+"Language-Team: Estonian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-10-12 04:40+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
+
+#. module: fetchmail
+#: constraint:email.server:0
+msgid ""
+"Warning! Record for selected Model can not be created\n"
+"Please choose valid Model"
+msgstr ""
+
+#. module: fetchmail
+#: selection:email.server,state:0
+msgid "Confirmed"
+msgstr "Kinnitatud"
+
+#. module: fetchmail
+#: view:email.server:0
+msgid "Confirm"
+msgstr "Kinnita"
+
+#. module: fetchmail
+#: view:email.server:0
+msgid "Group By..."
+msgstr "Grupeeri..."
+
+#. module: fetchmail
+#: view:email.server:0
+#: field:email.server,state:0
+msgid "State"
+msgstr "Olek"
+
+#. module: fetchmail
+#: view:email.server:0
+msgid "POP"
+msgstr "POP"
+
+#. module: fetchmail
+#: selection:email.server,state:0
+msgid "Not Confirmed"
+msgstr "Kinnitamata"
+
+#. module: fetchmail
+#: field:email.server,user:0
+msgid "User Name"
+msgstr "Kasutajanimi"
+
+#. module: fetchmail
+#: view:email.server:0
+msgid "Type"
+msgstr "Tüüp"
+
+#. module: fetchmail
+#: view:email.server:0
+msgid "POP/IMAP Servers"
+msgstr "POP/IMAP serverid"
+
+#. module: fetchmail
+#: model:ir.module.module,shortdesc:fetchmail.module_meta_information
+msgid "Fetchmail Server"
+msgstr "Fetchmail server"
+
+#. module: fetchmail
+#: view:email.server:0
+#: field:email.server,note:0
+msgid "Description"
+msgstr "Kirjeldus"
+
+#. module: fetchmail
+#: help:email.server,object_id:0
+msgid ""
+"OpenObject Model. Generates a record of this model.\n"
+"Select Object with message_new attrbutes."
+msgstr ""
+
+#. module: fetchmail
+#: field:email.server,attach:0
+msgid "Add Attachments ?"
+msgstr ""
+
+#. module: fetchmail
+#: view:email.server:0
+msgid "# of emails"
+msgstr ""
+
+#. module: fetchmail
+#: model:ir.actions.act_window,name:fetchmail.act_server_history
+msgid "Email History"
+msgstr ""
+
+#. module: fetchmail
+#: field:email.server,user_id:0
+msgid "User"
+msgstr "Kasutaja"
+
+#. module: fetchmail
+#: field:email.server,date:0
+msgid "Date"
+msgstr "Kuupäev"
+
+#. module: fetchmail
+#: selection:email.server,state:0
+msgid "Waiting for Verification"
+msgstr ""
+
+#. module: fetchmail
+#: field:email.server,password:0
+msgid "Password"
+msgstr "Salasõna"
+
+#. module: fetchmail
+#: model:ir.actions.act_window,name:fetchmail.act_server_history
+#: view:mailgate.message:0
+msgid "Emails"
+msgstr "E-kirjad"
+
+#. module: fetchmail
+#: view:email.server:0
+msgid "Search Email Servers"
+msgstr ""
+
+#. module: fetchmail
+#: view:email.server:0
+msgid "Server & Login"
+msgstr ""
+
+#. module: fetchmail
+#: view:email.server:0
+msgid "Auto Reply?"
+msgstr "Automaatvastus"
+
+#. module: fetchmail
+#: field:email.server,name:0
+msgid "Name"
+msgstr "Nimi"
+
+#. module: fetchmail
+#: model:ir.model,name:fetchmail.model_mailgate_message
+msgid "Mailgateway Message"
+msgstr ""
+
+#. module: fetchmail
+#: model:ir.actions.act_window,name:fetchmail.action_email_server_tree
+msgid "POP Servers"
+msgstr "POP serverid"
+
+#. module: fetchmail
+#: view:email.server:0
+msgid "Set to Draft"
+msgstr "Määra mustandiks"
+
+#. module: fetchmail
+#: field:email.server,message_ids:0
+#: model:ir.actions.act_window,name:fetchmail.action_view_mail_message_emails
+msgid "Messages"
+msgstr "Sõnumid"
+
+#. module: fetchmail
+#: model:ir.ui.menu,name:fetchmail.menu_action_fetchmail_server_tree
+msgid "Fetchmail Services"
+msgstr "Fetchmail teenused"
+
+#. module: fetchmail
+#: field:email.server,server:0
+msgid "Server"
+msgstr "Server"
+
+#. module: fetchmail
+#: field:email.server,active:0
+msgid "Active"
+msgstr "Aktiivne"
+
+#. module: fetchmail
+#: view:email.server:0
+msgid "Process Parameter"
+msgstr ""
+
+#. module: fetchmail
+#: field:email.server,is_ssl:0
+msgid "SSL ?"
+msgstr "SSL ?"
+
+#. module: fetchmail
+#: selection:email.server,type:0
+#: selection:mailgate.message,server_type:0
+msgid "IMAP Server"
+msgstr "IMAP server"
+
+#. module: fetchmail
+#: field:email.server,object_id:0
+msgid "Model"
+msgstr "Mudel"
+
+#. module: fetchmail
+#: view:email.server:0
+msgid "IMAP"
+msgstr "IMAP"
+
+#. module: fetchmail
+#: view:email.server:0
+#: model:ir.model,name:fetchmail.model_email_server
+msgid "POP/IMAP Server"
+msgstr "POP/IMAP server"
+
+#. module: fetchmail
+#: constraint:email.server:0
+msgid "Warning! Can't have duplicate server configuration!"
+msgstr ""
+
+#. module: fetchmail
+#: field:email.server,type:0
+#: field:mailgate.message,server_type:0
+msgid "Server Type"
+msgstr "Serveri tüüp"
+
+#. module: fetchmail
+#: view:email.server:0
+msgid "Login Information"
+msgstr "Sisselogimise info"
+
+#. module: fetchmail
+#: view:email.server:0
+msgid "Server Information"
+msgstr "Serveri info"
+
+#. module: fetchmail
+#: help:email.server,attach:0
+msgid "Fetches mail with attachments if true."
+msgstr ""
+
+#. module: fetchmail
+#: selection:email.server,type:0
+#: selection:mailgate.message,server_type:0
+msgid "POP Server"
+msgstr "POP server"
+
+#. module: fetchmail
+#: field:email.server,port:0
+msgid "Port"
+msgstr "Port"
+
+#. module: fetchmail
+#: model:ir.module.module,description:fetchmail.module_meta_information
+msgid ""
+"Fetchmail: \n"
+" * Fetch email from Pop / IMAP server\n"
+" * Support SSL\n"
+" * Integrated with all Modules\n"
+" * Automatic Email Receive\n"
+" * Email based Records (Add, Update)\n"
+" "
+msgstr ""
+
+#. module: fetchmail
+#: view:email.server:0
+msgid "SSL"
+msgstr "SSL"
+
+#. module: fetchmail
+#: help:email.server,action_id:0
+msgid ""
+"An Email Server Action. It will be run whenever an e-mail is fetched from "
+"server."
+msgstr ""
+
+#. module: fetchmail
+#: help:email.server,priority:0
+msgid "Priority between 0 to 10, select define the order of Processing"
+msgstr ""
+
+#. module: fetchmail
+#: field:email.server,action_id:0
+msgid "Email Server Action"
+msgstr ""
+
+#. module: fetchmail
+#: field:email.server,priority:0
+msgid "Server Priority"
+msgstr ""
+
+#. module: fetchmail
+#: view:mailgate.message:0
+#: field:mailgate.message,server_id:0
+msgid "Mail Server"
+msgstr ""
+
+#. module: fetchmail
+#: view:email.server:0
+msgid "Fetch Emails"
+msgstr ""
diff --git a/addons/hr/__openerp__.py b/addons/hr/__openerp__.py
index bca65c54cb2..900c689dfbf 100644
--- a/addons/hr/__openerp__.py
+++ b/addons/hr/__openerp__.py
@@ -48,13 +48,12 @@ You can manage:
'process/hr_process.xml',
'hr_installer.xml',
'hr_data.xml',
- 'board_hr_view.xml',
- 'board_hr_manager_view.xml',
- ],
+ 'hr_board.xml',
+ ],
'demo_xml': [
'hr_demo.xml',
'hr_department_demo.xml',
- ],
+ ],
'test': ['test/test_hr.yml'],
'installable': True,
'active': False,
diff --git a/addons/hr/board_hr_manager_view.xml b/addons/hr/board_hr_manager_view.xml
deleted file mode 100644
index 3cfaf165840..00000000000
--- a/addons/hr/board_hr_manager_view.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
- board.hr.manager.form
- board.board
- form
-
-
-
-
-
-
-
-
-
-
-
-
-
- HR Manager Dashboard
- board.board
- form
- form
- menu
-
-
-
-
diff --git a/addons/hr/board_hr_view.xml b/addons/hr/board_hr_view.xml
deleted file mode 100644
index 4124328c801..00000000000
--- a/addons/hr/board_hr_view.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
- board.hr.form
- board.board
- form
-
-
-
-
-
-
-
-
-
-
-
-
-
- Human Resources Dashboard
- board.board
- form
- form
- menu
-
-
-
-
-
-
-
-
diff --git a/addons/hr/hr_board.xml b/addons/hr/hr_board.xml
new file mode 100644
index 00000000000..874b0d368d6
--- /dev/null
+++ b/addons/hr/hr_board.xml
@@ -0,0 +1,62 @@
+
+
+
+
+
+ board.hr.form
+ board.board
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+ Human Resources Dashboard
+ board.board
+ form
+ form
+ menu
+
+
+
+
+
+
+
+
+
+
+ board.hr.manager.form
+ board.board
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+ HR Manager Dashboard
+ board.board
+ form
+ form
+ menu
+
+
+
+
+
+
+
diff --git a/addons/hr_expense/board_hr_expense_manager_view.xml b/addons/hr_expense/board_hr_expense_manager_view.xml
index d86c7614d7f..c45979057a1 100644
--- a/addons/hr_expense/board_hr_expense_manager_view.xml
+++ b/addons/hr_expense/board_hr_expense_manager_view.xml
@@ -21,12 +21,5 @@
-
diff --git a/addons/hr_expense/board_hr_expense_view.xml b/addons/hr_expense/board_hr_expense_view.xml
index 0493f628ebd..4e213048dc7 100644
--- a/addons/hr_expense/board_hr_expense_view.xml
+++ b/addons/hr_expense/board_hr_expense_view.xml
@@ -2,13 +2,6 @@
-
-
My Expenses
hr.expense.expense
diff --git a/addons/hr_holidays/board_hr_holidays_view.xml b/addons/hr_holidays/board_hr_holidays_view.xml
index 71b4e2a98fb..9dc9646da9b 100644
--- a/addons/hr_holidays/board_hr_holidays_view.xml
+++ b/addons/hr_holidays/board_hr_holidays_view.xml
@@ -1,17 +1,6 @@
-
-
-
-
-
-
My Leaves
hr.holidays.status
diff --git a/addons/hr_holidays/board_hr_manager_holidays_view.xml b/addons/hr_holidays/board_hr_manager_holidays_view.xml
index 980a8dd5fbb..662569fb81d 100644
--- a/addons/hr_holidays/board_hr_manager_holidays_view.xml
+++ b/addons/hr_holidays/board_hr_manager_holidays_view.xml
@@ -15,7 +15,7 @@
board.hr.holidays.manager.form
board.board
-
+
form
@@ -24,12 +24,5 @@
-
diff --git a/addons/hr_holidays/hr_holidays_wizard.xml b/addons/hr_holidays/hr_holidays_wizard.xml
index 01aff603626..8215abf12f9 100644
--- a/addons/hr_holidays/hr_holidays_wizard.xml
+++ b/addons/hr_holidays/hr_holidays_wizard.xml
@@ -1,12 +1,6 @@
-
-
-
-
diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml
index e5905b16a77..3310dbcf4ef 100644
--- a/addons/hr_recruitment/hr_recruitment_view.xml
+++ b/addons/hr_recruitment/hr_recruitment_view.xml
@@ -89,7 +89,8 @@
-
+
+
diff --git a/addons/hr_timesheet/hr_timesheet_report.xml b/addons/hr_timesheet/hr_timesheet_report.xml
index 3e5f6c26619..dd848d453df 100644
--- a/addons/hr_timesheet/hr_timesheet_report.xml
+++ b/addons/hr_timesheet/hr_timesheet_report.xml
@@ -1,11 +1,6 @@
-
-
diff --git a/addons/html_view/i18n/et.po b/addons/html_view/i18n/et.po
new file mode 100644
index 00000000000..5c7c9a6e909
--- /dev/null
+++ b/addons/html_view/i18n/et.po
@@ -0,0 +1,63 @@
+# Estonian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-10-11 17:49+0000\n"
+"Last-Translator: Aare Vesi \n"
+"Language-Team: Estonian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-10-12 04:40+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
+
+#. module: html_view
+#: field:html.view,name:0
+msgid "Name"
+msgstr "Nimi"
+
+#. module: html_view
+#: field:html.view,comp_id:0
+msgid "Company"
+msgstr ""
+
+#. module: html_view
+#: model:ir.actions.act_window,name:html_view.action_html_view_form
+#: model:ir.ui.menu,name:html_view.html_form
+msgid "Html Test"
+msgstr ""
+
+#. module: html_view
+#: view:html.view:0
+msgid "Html Example"
+msgstr ""
+
+#. module: html_view
+#: model:ir.module.module,shortdesc:html_view.module_meta_information
+msgid "Html View"
+msgstr ""
+
+#. module: html_view
+#: field:html.view,bank_ids:0
+msgid "Banks"
+msgstr "Pangad"
+
+#. module: html_view
+#: model:ir.module.module,description:html_view.module_meta_information
+msgid ""
+"\n"
+" This is the test module which shows html tag supports in normal xml form "
+"view.\n"
+" "
+msgstr ""
+
+#. module: html_view
+#: model:ir.model,name:html_view.model_html_view
+msgid "html.view"
+msgstr ""
diff --git a/addons/idea/i18n/et.po b/addons/idea/i18n/et.po
index 8557eaf1f4c..0ea8fbc0661 100644
--- a/addons/idea/i18n/et.po
+++ b/addons/idea/i18n/et.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev_rc3\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2011-10-10 19:38+0000\n"
+"PO-Revision-Date: 2011-10-11 17:58+0000\n"
"Last-Translator: Aare Vesi \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-10-11 05:35+0000\n"
-"X-Generator: Launchpad (build 14123)\n"
+"X-Launchpad-Export-Date: 2011-10-12 04:40+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: idea
#: help:idea.category,visibility:0
@@ -434,7 +434,7 @@ msgstr "Juuni"
#: field:report.vote,creater_id:0
#: field:report.vote,user_id:0
msgid "User Name"
-msgstr "Kasutaja nimi"
+msgstr "Kasutajanimi"
#. module: idea
#: model:ir.model,name:idea.model_idea_vote_stat
diff --git a/addons/l10n_cn/i18n/sr@latin.po b/addons/l10n_cn/i18n/sr@latin.po
new file mode 100644
index 00000000000..09720c6d34c
--- /dev/null
+++ b/addons/l10n_cn/i18n/sr@latin.po
@@ -0,0 +1,55 @@
+# Serbian Latin translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-07 05:27+0000\n"
+"PO-Revision-Date: 2011-10-13 15:14+0000\n"
+"Last-Translator: Milan Milosevic \n"
+"Language-Team: Serbian Latin \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
+
+#. module: l10n_cn
+#: model:ir.module.module,shortdesc:l10n_cn.module_meta_information
+msgid "中国会计科目表"
+msgstr ""
+
+#. module: l10n_cn
+#: model:ir.module.module,description:l10n_cn.module_meta_information
+msgid ""
+"\n"
+" 添加中文省份数据\n"
+" 科目类型\\会计科目表模板\\增值税\\辅助核算类别\\管理会计凭证簿\\财务会计凭证簿\n"
+" "
+msgstr ""
+"\n"
+" 添加中文省份数据\n"
+" 科目类型\\会计科目表模板\\增值税\\辅助核算类别\\管理会计凭证簿\\财务会计凭证簿\n"
+" "
+
+#. module: l10n_cn
+#: model:ir.actions.todo,note:l10n_cn.config_call_account_template_cn_chart
+msgid ""
+"Generate Chart of Accounts from a Chart Template. You will be asked to pass "
+"the name of the company, the chart template to follow, the no. of digits to "
+"generate the code for your accounts and Bank account, currency to create "
+"Journals. Thus,the pure copy of chart Template is generated.\n"
+"\tThis is the same wizard that runs from Financial "
+"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
+"Chart of Accounts from a Chart Template."
+msgstr ""
+"Generiše tabelu računâ iz šablona tabelâ. Bićete upitani za ime kompanije, "
+"šablon tabelâ koji ćete pratiti, broj cifara za generisanje koda za Vaše "
+"naloge i bankovni račun, valuta za pravljenje dnevnika. Na taj način se "
+"generiše čista kopija šablona tabelâ.\n"
+"\tTo je isti setup wizard koji se pokreće iz Financial "
+"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
+"Chart of Accounts from a Chart Template."
diff --git a/addons/l10n_es/i18n/sr@latin.po b/addons/l10n_es/i18n/sr@latin.po
index e9d4f00f356..16898170cea 100644
--- a/addons/l10n_es/i18n/sr@latin.po
+++ b/addons/l10n_es/i18n/sr@latin.po
@@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2010-12-10 18:18+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2011-10-13 15:18+0000\n"
+"Last-Translator: Milan Milosevic \n"
"Language-Team: Serbian latin \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 05:58+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_es
#: model:ir.module.module,shortdesc:l10n_es.module_meta_information
msgid "Spanish Charts of Accounts (PGCE 2008)"
-msgstr ""
+msgstr "Računske tabele za Španiju (PGCE 2008)"
#. module: l10n_es
#: model:ir.module.module,description:l10n_es.module_meta_information
@@ -37,3 +37,13 @@ msgid ""
"Note: You should install the l10n_ES_account_balance_report module\n"
"for yearly account reporting (balance, profit & losses).\n"
msgstr ""
+"Računske tabele za Španiju (PGCE 2008)\n"
+"\n"
+"*Definiše sledeće modele za računske tabele:\n"
+" *Opšte računske tabele za Španiju 2008.\n"
+" *OPšte računske tabele za Španiju za mala i srednja preduzeća.\n"
+"*Definiše modele za prodaju i nabavku VAT-a.\n"
+"*Definiše model za takseni kod.\n"
+"\n"
+"Beleška: Trebalo bi da instalirate modul ''l10n_ES_account_balance_report''\n"
+"za godišnje izveštaje o računu (balans, prihod i rashod).\n"
diff --git a/addons/l10n_gt/i18n/sr@latin.po b/addons/l10n_gt/i18n/sr@latin.po
index 53f15ada957..9582a13f983 100644
--- a/addons/l10n_gt/i18n/sr@latin.po
+++ b/addons/l10n_gt/i18n/sr@latin.po
@@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2010-12-10 18:19+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2011-10-13 15:20+0000\n"
+"Last-Translator: Milan Milosevic \n"
"Language-Team: Serbian latin \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 05:58+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_gt
#: model:ir.module.module,shortdesc:l10n_gt.module_meta_information
msgid "Guatemala - Plan contable general"
-msgstr ""
+msgstr "Gvatemala - Plan contable general"
#. module: l10n_gt
#: model:ir.actions.todo,note:l10n_gt.config_call_account_template_gt_minimal
@@ -29,6 +29,9 @@ msgid ""
"una compañía, el modelo a utilizar, el número de digitos a usar en la "
"nomenclatura, la moneda para crear los diarios."
msgstr ""
+"Generar la nomenclatura contable a partir de un modelo. Deberá seleccionar "
+"una compañía, el modelo a utilizar, el número de digitos a usar en la "
+"nomenclatura, la moneda para crear los diarios."
#. module: l10n_gt
#: model:ir.module.module,description:l10n_gt.module_meta_information
@@ -37,3 +40,6 @@ msgid ""
"la moneda del Quetzal. -- Adds accounting chart for Guatemala. It also "
"includes taxes and the Quetzal currency"
msgstr ""
+"Agrega una nomenclatura contable para Guatemala. También icluye impuestos y "
+"la moneda del Quetzal. -- Dodaje računske tabele za Gvatemalu. Takođe "
+"uključuje porez i Kvetzal valutu."
diff --git a/addons/l10n_hn/i18n/ca.po b/addons/l10n_hn/i18n/ca.po
index 6db7f5a1dd5..2a3d4a52ef4 100755
--- a/addons/l10n_hn/i18n/ca.po
+++ b/addons/l10n_hn/i18n/ca.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2011-03-12 20:48+0000\n"
-"Last-Translator: mgaja (GrupoIsep.com) \n"
+"PO-Revision-Date: 2011-10-12 06:36+0000\n"
+"Last-Translator: OpenERP Administrators \n"
"Language-Team: Catalan \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-13 06:16+0000\n"
-"X-Generator: Launchpad (build 12559)\n"
+"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_hn
#: model:ir.module.module,shortdesc:l10n_hn.module_meta_information
diff --git a/addons/l10n_hn/i18n/es.po b/addons/l10n_hn/i18n/es.po
index d3372528aae..bc2d514595d 100755
--- a/addons/l10n_hn/i18n/es.po
+++ b/addons/l10n_hn/i18n/es.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0.0-rc1\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2011-01-19 12:00+0000\n"
-"Last-Translator: Nicolas Vanhoren (OpenERP) \n"
+"PO-Revision-Date: 2011-10-12 06:36+0000\n"
+"Last-Translator: OpenERP Administrators \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-01-25 06:47+0000\n"
-"X-Generator: Launchpad (build 12177)\n"
+"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_hn
#: model:ir.module.module,shortdesc:l10n_hn.module_meta_information
diff --git a/addons/l10n_hn/i18n/fr.po b/addons/l10n_hn/i18n/fr.po
index 424997a7e20..489286bc16f 100755
--- a/addons/l10n_hn/i18n/fr.po
+++ b/addons/l10n_hn/i18n/fr.po
@@ -8,15 +8,15 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2011-01-19 12:00+0000\n"
+"PO-Revision-Date: 2011-10-12 06:36+0000\n"
"Last-Translator: Maxime Chambreuil (http://www.savoirfairelinux.com) "
"\n"
"Language-Team: French \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-01-25 06:47+0000\n"
-"X-Generator: Launchpad (build 12177)\n"
+"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_hn
#: model:ir.module.module,shortdesc:l10n_hn.module_meta_information
diff --git a/addons/l10n_hn/i18n/gl.po b/addons/l10n_hn/i18n/gl.po
index af9cb8304e6..279639065a7 100755
--- a/addons/l10n_hn/i18n/gl.po
+++ b/addons/l10n_hn/i18n/gl.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2011-02-11 13:05+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2011-10-12 06:36+0000\n"
+"Last-Translator: OpenERP Administrators \n"
"Language-Team: Galician \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-02-12 06:06+0000\n"
-"X-Generator: Launchpad (build 12351)\n"
+"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_hn
#: model:ir.module.module,shortdesc:l10n_hn.module_meta_information
diff --git a/addons/l10n_hn/i18n/hu.po b/addons/l10n_hn/i18n/hu.po
index 803d195e5ac..ec7a48e3e1c 100755
--- a/addons/l10n_hn/i18n/hu.po
+++ b/addons/l10n_hn/i18n/hu.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2011-01-19 12:00+0000\n"
+"PO-Revision-Date: 2011-10-12 06:34+0000\n"
"Last-Translator: FULL NAME \n"
"Language-Team: Hungarian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-01-25 06:47+0000\n"
-"X-Generator: Launchpad (build 12177)\n"
+"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_hn
#: model:ir.module.module,shortdesc:l10n_hn.module_meta_information
diff --git a/addons/l10n_hn/i18n/it.po b/addons/l10n_hn/i18n/it.po
index 220b98bc9df..bc558d65a10 100755
--- a/addons/l10n_hn/i18n/it.po
+++ b/addons/l10n_hn/i18n/it.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2011-01-19 12:00+0000\n"
-"Last-Translator: Nicola Riolini - Micronaet \n"
+"PO-Revision-Date: 2011-10-12 06:36+0000\n"
+"Last-Translator: OpenERP Administrators \n"
"Language-Team: Italian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-01-25 06:47+0000\n"
-"X-Generator: Launchpad (build 12177)\n"
+"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_hn
#: model:ir.module.module,shortdesc:l10n_hn.module_meta_information
diff --git a/addons/l10n_hn/i18n/pt_BR.po b/addons/l10n_hn/i18n/pt_BR.po
index 6dd7ba3c90b..d668e6f4c4a 100755
--- a/addons/l10n_hn/i18n/pt_BR.po
+++ b/addons/l10n_hn/i18n/pt_BR.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2011-03-10 23:09+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2011-10-12 06:36+0000\n"
+"Last-Translator: OpenERP Administrators \n"
"Language-Team: Brazilian Portuguese \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-03-11 06:00+0000\n"
-"X-Generator: Launchpad (build 12559)\n"
+"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_hn
#: model:ir.module.module,shortdesc:l10n_hn.module_meta_information
diff --git a/addons/l10n_hn/i18n/sr@latin.po b/addons/l10n_hn/i18n/sr@latin.po
index 2e5a15962a7..366267adce7 100755
--- a/addons/l10n_hn/i18n/sr@latin.po
+++ b/addons/l10n_hn/i18n/sr@latin.po
@@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2011-01-19 12:00+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2011-10-13 15:22+0000\n"
+"Last-Translator: Milan Milosevic \n"
"Language-Team: Serbian latin \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-01-25 06:47+0000\n"
-"X-Generator: Launchpad (build 12177)\n"
+"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_hn
#: model:ir.module.module,shortdesc:l10n_hn.module_meta_information
msgid "Honduras - Plan contable general"
-msgstr ""
+msgstr "Honduras - Plan contable general"
#. module: l10n_hn
#: model:ir.actions.todo,note:l10n_hn.config_call_account_template_hn_minimal
@@ -29,6 +29,9 @@ msgid ""
"una compañía, el modelo a utilizar, el número de digitos a usar en la "
"nomenclatura, la moneda para crear los diarios."
msgstr ""
+"Generar la nomenclatura contable a partir de un modelo. Deberá seleccionar "
+"una compañía, el modelo a utilizar, el número de digitos a usar en la "
+"nomenclatura, la moneda para crear los diarios."
#. module: l10n_hn
#: model:ir.module.module,description:l10n_hn.module_meta_information
@@ -37,3 +40,6 @@ msgid ""
"la moneda del Lempira. -- Adds accounting chart for Honduras. It also "
"includes taxes and the Lempira currency"
msgstr ""
+"Agrega una nomenclatura contable para Honduras. También icluye impuestos y "
+"la moneda del Lempira. -- Dodaje računske tabele za Gvatemalu. Takođe "
+"uključuje porez i lempira valutu."
diff --git a/addons/l10n_mx/i18n/sr@latin.po b/addons/l10n_mx/i18n/sr@latin.po
new file mode 100644
index 00000000000..7cee42ce9bb
--- /dev/null
+++ b/addons/l10n_mx/i18n/sr@latin.po
@@ -0,0 +1,48 @@
+# Serbian Latin translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-07 06:07+0000\n"
+"PO-Revision-Date: 2011-10-13 15:04+0000\n"
+"Last-Translator: Milan Milosevic \n"
+"Language-Team: Serbian Latin \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
+
+#. module: l10n_mx
+#: model:ir.module.module,description:l10n_mx.module_meta_information
+msgid ""
+"This is the module to manage the accounting chart for Mexico in Open ERP."
+msgstr "Ovo je modul za sređivanje računskih tabela za Meksiko u OPenERP-u."
+
+#. module: l10n_mx
+#: model:ir.actions.todo,note:l10n_mx.config_call_account_template_mx_chart
+msgid ""
+"Generate Chart of Accounts from a Chart Template. You will be asked to pass "
+"the name of the company, the chart template to follow, the no. of digits to "
+"generate the code for your accounts and Bank account, currency to create "
+"Journals. Thus,the pure copy of chart Template is generated.\n"
+"\tThis is the same wizard that runs from Financial "
+"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
+"Chart of Accounts from a Chart Template."
+msgstr ""
+"Generiše tabelu računâ iz šablona tabelâ. Bićete upitani za ime kompanije, "
+"šablon tabelâ koji ćete pratiti, broj cifara za generisanje koda za Vaše "
+"naloge i bankovni račun, valuta za pravljenje dnevnika. Na taj način se "
+"generiše čista kopija šablona tabelâ.\n"
+"\tTo je isti setup wizard koji se pokreće iz Financial "
+"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
+"Chart of Accounts from a Chart Template."
+
+#. module: l10n_mx
+#: model:ir.module.module,shortdesc:l10n_mx.module_meta_information
+msgid "Mexico - Chart of Account"
+msgstr "Meksiko - računske tabele"
diff --git a/addons/l10n_nl/i18n/sr@latin.po b/addons/l10n_nl/i18n/sr@latin.po
new file mode 100644
index 00000000000..34dc854e607
--- /dev/null
+++ b/addons/l10n_nl/i18n/sr@latin.po
@@ -0,0 +1,127 @@
+# Serbian Latin translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-07 06:11+0000\n"
+"PO-Revision-Date: 2011-10-13 15:02+0000\n"
+"Last-Translator: Milan Milosevic \n"
+"Language-Team: Serbian Latin \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
+
+#. module: l10n_nl
+#: model:ir.actions.todo,note:l10n_nl.config_call_account_template
+msgid ""
+"Na installatie van deze module word de configuratie wizard voor "
+"\"Accounting\" aangeroepen.\n"
+"* U krijgt een lijst met grootboektemplates aangeboden waarin zich ook het "
+"Nederlandse grootboekschema bevind.\n"
+"* Als de configuratie wizard start, wordt u gevraagd om de naam van uw "
+"bedrijf in te voeren, welke grootboekschema te installeren, uit hoeveel "
+"cijfers een grootboekrekening mag bestaan, het rekeningnummer van uw bank en "
+"de currency om Journalen te creeren.\n"
+" \n"
+"Let op!! -> De template van het Nederlandse rekeningschema is opgebouwd uit "
+"4 cijfers. Dit is het minimale aantal welk u moet invullen, u mag het aantal "
+"verhogen. De extra cijfers worden dan achter het rekeningnummer aangevult "
+"met \"nullen\"\n"
+" \n"
+"* Dit is dezelfe configuratie wizard welke aangeroepen kan worden via "
+"Financial Management/Configuration/Financial Accounting/Financial "
+"Accounts/Generate Chart of Accounts from a Chart Template.\n"
+msgstr ""
+"Na installatie van deze module word de configuratie wizard voor "
+"\"Accounting\" aangeroepen.\n"
+" * U krijgt een lijst met grootboektemplates aangeboden waarin zich ook het "
+"Nederlandse grootboekschema bevind.\n"
+" * Als de configuratie wizard start, wordt u gevraagd om de naam van uw "
+"bedrijf in te voeren, welke grootboekschema te installeren, uit hoeveel "
+"cijfers een grootboekrekening mag bestaan, het rekeningnummer van uw bank en "
+"de currency om Journalen te creeren.\n"
+" \n"
+" Let op!! -> De template van het Nederlandse rekeningschema is opgebouwd uit "
+"4 cijfers. Dit is het minimale aantal welk u moet invullen, u mag het aantal "
+"verhogen. De extra cijfers worden dan achter het rekeningnummer aangevult "
+"met \"nullen\"\n"
+" \n"
+" * Dit is dezelfe configuratie wizard welke aangeroepen kan worden via "
+"Financial Management/Configuration/Financial Accounting/Financial "
+"Accounts/Generate Chart of Accounts from a Chart Template.\n"
+
+#. module: l10n_nl
+#: model:ir.module.module,shortdesc:l10n_nl.module_meta_information
+msgid "Netherlands - Grootboek en BTW rekeningen"
+msgstr "Holandija - Grootboek en BTW rekeningen"
+
+#. module: l10n_nl
+#: model:ir.module.module,description:l10n_nl.module_meta_information
+msgid ""
+"\n"
+"Read changelog in file __terp__.py for version information. \n"
+"Dit is een basismodule om een uitgebreid grootboek- en BTW schema voor "
+"Nederlandse bedrijven te installeren in OpenERP versie 5.\n"
+" De BTW rekeningen zijn waar nodig gekoppeld om de juiste rapportage te "
+"genereren, denk b.v. aan intracommunautaire verwervingen\n"
+" waarbij u 19% BTW moet opvoeren, maar tegelijkertijd ook 19% als "
+"voorheffing weer mag aftrekken.\n"
+" \n"
+" Na installatie van deze module word de configuratie wizard voor "
+"\"Accounting\" aangeroepen.\n"
+" * U krijgt een lijst met grootboektemplates aangeboden waarin zich ook "
+"het Nederlandse grootboekschema bevind.\n"
+" \n"
+" * Als de configuratie wizard start, wordt u gevraagd om de naam van uw "
+"bedrijf in te voeren, welke grootboekschema te installeren, uit hoeveel "
+"cijfers een grootboekrekening mag bestaan, het rekeningnummer van uw bank en "
+"de currency om Journalen te creeren.\n"
+" \n"
+" Let op!! -> De template van het Nederlandse rekeningschema is opgebouwd "
+"uit 4 cijfers. Dit is het minimale aantal welk u moet invullen, u mag het "
+"aantal verhogen. De extra cijfers worden dan achter het rekeningnummer "
+"aangevult met \"nullen\"\n"
+" \n"
+" * Dit is dezelfe configuratie wizard welke aangeroepen kan worden via "
+"Financial Management/Configuration/Financial Accounting/Financial "
+"Accounts/Generate Chart of Accounts from a Chart Template.\n"
+"\n"
+" "
+msgstr ""
+"\n"
+"Pročitajte spisak izmena u datoteci file __terp__.py za podatke o verziji. "
+"\n"
+"Dit is een basismodule om een uitgebreid grootboek- en BTW schema voor "
+"Nederlandse bedrijven te installeren in OpenERP versie 5\n"
+" De BTW rekeningen zijn waar nodig gekoppeld om de juiste rapportage te "
+"genereren, denk b.v. aan intracommunautaire verwervingen\n"
+" waarbij u 19% BTW moet opvoeren, maar tegelijkertijd ook 19% als "
+"voorheffing weer mag aftrekken.\n"
+" \n"
+" Na installatie van deze module word de configuratie wizard voor "
+"\"Accounting\" aangeroepen\n"
+" * U krijgt een lijst met grootboektemplates aangeboden waarin zich ook "
+"het Nederlandse grootboekschema bevind\n"
+" \n"
+"\n"
+" * Als de configuratie wizard start, wordt u gevraagd om de naam van uw "
+"bedrijf in te voeren, welke grootboekschema te installeren, uit hoeveel "
+"cijfers een grootboekrekening mag bestaan, het rekeningnummer van uw bank en "
+"de currency om Journalen te creeren.\n"
+" \n"
+" Let op!! -> De template van het Nederlandse rekeningschema is opgebouwd "
+"uit 4 cijfers. Dit is het minimale aantal welk u moet invullen, u mag het "
+"aantal verhogen. De extra cijfers worden dan achter het rekeningnummer "
+"aangevult met \"nullen\"\n"
+" \n"
+" * Dit is dezelfe configuratie wizard welke aangeroepen kan worden via "
+"Financial Management/Configuration/Financial Accounting/Financial "
+"Accounts/Generate Chart of Accounts from a Chart Template\n"
+"\n"
+" "
diff --git a/addons/l10n_pl/i18n/sr@latin.po b/addons/l10n_pl/i18n/sr@latin.po
new file mode 100644
index 00000000000..59046dbc706
--- /dev/null
+++ b/addons/l10n_pl/i18n/sr@latin.po
@@ -0,0 +1,68 @@
+# Serbian Latin translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-07 06:14+0000\n"
+"PO-Revision-Date: 2011-10-13 14:58+0000\n"
+"Last-Translator: Milan Milosevic \n"
+"Language-Team: Serbian Latin \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
+
+#. module: l10n_pl
+#: model:ir.module.module,description:l10n_pl.module_meta_information
+msgid ""
+"\n"
+" This is the module to manage the accounting chart and taxes for Poland "
+"in Open ERP.\n"
+" \n"
+" To jest moduł do tworzenia wzorcowego planu kont i podstawowych "
+"ustawień do podatków\n"
+" VAT 0%, 7% i 22%. Moduł ustawia też konta do kupna i sprzedaży towarów "
+"zakładając,\n"
+" że wszystkie towary są w obrocie hurtowym.\n"
+" "
+msgstr ""
+"\n"
+" Ovo je modul za sređivanje računskih tabelai taksi za Poljsku u OpenERP-"
+"u.\n"
+" \n"
+" To jest moduł do tworzenia wzorcowego planu kont i podstawowych "
+"ustawień do podatków\n"
+" VAT 0%, 7% i 22%. Moduł ustawia też konta do kupna i sprzedaży towarów "
+"zakładając,\n"
+" że wszystkie towary są w obrocie hurtowym.\n"
+" "
+
+#. module: l10n_pl
+#: model:ir.module.module,shortdesc:l10n_pl.module_meta_information
+msgid "Poland - Chart of Accounts"
+msgstr "Poljska - računske tabele"
+
+#. module: l10n_pl
+#: model:ir.actions.todo,note:l10n_pl.config_call_account_template_pl_chart
+msgid ""
+"Generate Chart of Accounts from a Chart Template. You will be asked to pass "
+"the name of the company, the chart template to follow, the no. of digits to "
+"generate the code for your accounts and Bank account, currency to create "
+"Journals. Thus,the pure copy of chart Template is generated.\n"
+"\tThis is the same wizard that runs from Financial "
+"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
+"Chart of Accounts from a Chart Template."
+msgstr ""
+"Generiše tabelu računâ iz šablona tabelâ. Bićete upitani za ime kompanije, "
+"šablon tabelâ koji ćete pratiti, broj cifara za generisanje koda za Vaše "
+"naloge i bankovni račun, valuta za pravljenje dnevnika. Na taj način se "
+"generiše čista kopija šablona tabelâ.\n"
+"\n"
+"\tTo je isti setup wizard koji se pokreće iz Financial "
+"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
+"Chart of Accounts from a Chart Template."
diff --git a/addons/l10n_ro/i18n/sr@latin.po b/addons/l10n_ro/i18n/sr@latin.po
new file mode 100644
index 00000000000..547ebe422b6
--- /dev/null
+++ b/addons/l10n_ro/i18n/sr@latin.po
@@ -0,0 +1,67 @@
+# Serbian Latin translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-07 06:16+0000\n"
+"PO-Revision-Date: 2011-10-13 14:55+0000\n"
+"Last-Translator: Milan Milosevic \n"
+"Language-Team: Serbian Latin \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
+
+#. module: l10n_ro
+#: help:res.partner,nrc:0
+msgid "Registration number at the Registry of Commerce"
+msgstr "Registracioni broj pri Trgovinskom registru"
+
+#. module: l10n_ro
+#: field:res.partner,nrc:0
+msgid "NRC"
+msgstr "NRC"
+
+#. module: l10n_ro
+#: model:ir.actions.todo,note:l10n_ro.config_call_account_template_ro
+msgid ""
+"Generate Chart of Accounts from a Chart Template. You will be asked to pass "
+"the name of the company, the chart template to follow, the no. of digits to "
+"generate the code for your accounts and Bank account, currency to create "
+"Journals. Thus,the pure copy of chart Template is generated.\n"
+"\tThis is the same wizard that runs from Financial "
+"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
+"Chart of Accounts from a Chart Template."
+msgstr ""
+"Generiše tabelu računâ iz šablona tabelâ. Bićete upitani za ime kompanije, "
+"šablon tabelâ koji ćete pratiti, broj cifara za generisanje koda za Vaše "
+"naloge i bankovni račun, valuta za pravljenje dnevnika. Na taj način se "
+"generiše čista kopija šablona tabelâ.\n"
+"\n"
+"\tTo je isti setup wizard koji se pokreće iz Financial "
+"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
+"Chart of Accounts from a Chart Template."
+
+#. module: l10n_ro
+#: model:ir.module.module,shortdesc:l10n_ro.module_meta_information
+msgid "Romania - Chart of Accounts"
+msgstr "Rumunija - računske tabele"
+
+#. module: l10n_ro
+#: model:ir.model,name:l10n_ro.model_res_partner
+msgid "Partner"
+msgstr "Partner"
+
+#. module: l10n_ro
+#: model:ir.module.module,description:l10n_ro.module_meta_information
+msgid ""
+"This is the module to manage the accounting chart, VAT structure and "
+"Registration Number for Romania in Open ERP."
+msgstr ""
+"Ovo je model za sređivanje računskih tabela, VAT strukture i Registracioni "
+"broj za Rumuniju u OPenERP-u"
diff --git a/addons/l10n_th/i18n/sr@latin.po b/addons/l10n_th/i18n/sr@latin.po
new file mode 100644
index 00000000000..30a595c5fcf
--- /dev/null
+++ b/addons/l10n_th/i18n/sr@latin.po
@@ -0,0 +1,54 @@
+# Serbian Latin translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-07 06:19+0000\n"
+"PO-Revision-Date: 2011-10-13 14:53+0000\n"
+"Last-Translator: Milan Milosevic \n"
+"Language-Team: Serbian Latin \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
+
+#. module: l10n_th
+#: model:ir.actions.todo,note:l10n_th.config_call_account_template_th
+msgid ""
+"Generate Chart of Accounts from a Chart Template. You will be asked to pass "
+"the name of the company, the chart template to follow, the no. of digits to "
+"generate the code for your accounts and Bank account, currency to create "
+"Journals. Thus,the pure copy of chart Template is generated.\n"
+"This is the same wizard that runs from Financial "
+"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
+"Chart of Accounts from a Chart Template."
+msgstr ""
+"Generiše tabelu računâ iz šablona tabelâ. Bićete upitani za ime kompanije, "
+"šablon tabelâ koji ćete pratiti, broj cifara za generisanje koda za Vaše "
+"naloge i bankovni račun, valuta za pravljenje dnevnika. Na taj način se "
+"generiše čista kopija šablona tabelâ.\n"
+"\n"
+" To je isti setup wizard koji se pokreće iz Financial "
+"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
+"Chart of Accounts from a Chart Template."
+
+#. module: l10n_th
+#: model:ir.module.module,shortdesc:l10n_th.module_meta_information
+msgid "Thailand - Thai Chart of Accounts"
+msgstr "Tajland - tajlandske računske tabele"
+
+#. module: l10n_th
+#: model:ir.module.module,description:l10n_th.module_meta_information
+msgid ""
+"\n"
+"Chart of accounts for Thailand.\n"
+" "
+msgstr ""
+"\n"
+"Računske tabele za Tajland.\n"
+" "
diff --git a/addons/l10n_uk/i18n/sr@latin.po b/addons/l10n_uk/i18n/sr@latin.po
index ec03b2e0ab5..adf4f303e45 100644
--- a/addons/l10n_uk/i18n/sr@latin.po
+++ b/addons/l10n_uk/i18n/sr@latin.po
@@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2010-12-10 18:22+0000\n"
+"PO-Revision-Date: 2011-10-13 14:51+0000\n"
"Last-Translator: Milan Milosevic \n"
"Language-Team: Serbian latin \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 05:57+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_uk
#: model:ir.module.module,shortdesc:l10n_uk.module_meta_information
msgid "United Kingdom - minimal"
-msgstr ""
+msgstr "Ujedinjeno Kraljevstvo - minimalno"
#. module: l10n_uk
#: model:ir.module.module,description:l10n_uk.module_meta_information
@@ -28,6 +28,8 @@ msgid ""
"This is the base module to manage the accounting chart for United Kingdom in "
"OpenERP."
msgstr ""
+"Ovo je osnovni modul za sređivanje računskih tabela za Ujedinjeno "
+"kraljevstvo u OpenERP-u."
#. module: l10n_uk
#: model:ir.actions.todo,note:l10n_uk.config_call_account_template_uk_minimal
@@ -40,3 +42,11 @@ msgid ""
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template."
msgstr ""
+"Generiše tabelu računâ iz šablona tabelâ. Bićete upitani za ime kompanije, "
+"šablon tabelâ koji ćete pratiti, broj cifara za generisanje koda za Vaše "
+"naloge i bankovni račun, valuta za pravljenje dnevnika. Na taj način se "
+"generiše čista kopija šablona tabelâ.\n"
+"\n"
+" To je isti setup wizard koji se pokreće iz Financial "
+"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
+"Chart of Accounts from a Chart Template."
diff --git a/addons/l10n_ve/i18n/sr@latin.po b/addons/l10n_ve/i18n/sr@latin.po
new file mode 100644
index 00000000000..86a0c4ba40b
--- /dev/null
+++ b/addons/l10n_ve/i18n/sr@latin.po
@@ -0,0 +1,70 @@
+# Serbian Latin translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-07 06:21+0000\n"
+"PO-Revision-Date: 2011-10-13 15:23+0000\n"
+"Last-Translator: Milan Milosevic \n"
+"Language-Team: Serbian Latin \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
+
+#. module: l10n_ve
+#: model:ir.actions.todo,note:l10n_ve.config_call_account_template_ve_chart
+msgid ""
+"Generate Chart of Accounts from a Chart Template. You will be asked to pass "
+"the name of the company, the chart template to follow, the no. of digits to "
+"generate the code for your accounts and Bank account, currency to create "
+"Journals. Thus,the pure copy of chart Template is generated.\n"
+"This is the same wizard that runs from Financial "
+"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
+"Chart of Accounts from a Chart Template.\n"
+"Genere el Plan de cuentas de una Plantilla de Carta. Le pedirán pasar el "
+"nombre de la compania, la plantilla de carta para seguir, el no. de digitos "
+"para generar el codigo para sus cuentas y cuenta Bancaria, dinero para crear "
+"Diarios. Asi, la copia pura de la carta la Plantilla es generada.\n"
+"Esto es el mismo wizard que corre de la Financial "
+"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
+"Chart of Accounts from a Chart Template.\n"
+" "
+msgstr ""
+"Generiše tabelu računâ iz šablona tabelâ. Bićete upitani za ime kompanije, "
+"šablon tabelâ koji ćete pratiti, broj cifara za generisanje koda za Vaše "
+"naloge i bankovni račun, valuta za pravljenje dnevnika. Na taj način se "
+"generiše čista kopija šablona tabelâ.\n"
+"To je isti setup wizard koji se pokreće iz Financial "
+"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
+"Chart of Accounts from a Chart Template.\n"
+"Genere el Plan de cuentas de una Plantilla de Carta. Le pedirán pasar el "
+"nombre de la compania, la plantilla de carta para seguir, el no. de digitos "
+"para generar el codigo para sus cuentas y cuenta Bancaria, dinero para crear "
+"Diarios. Asi, la copia pura de la carta la Plantilla es generada.\n"
+" Esto es el mismo wizard que corre de la Financial "
+"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
+"Chart of Accounts from a Chart Template.\n"
+" "
+
+#. module: l10n_ve
+#: model:ir.module.module,description:l10n_ve.module_meta_information
+msgid ""
+"\n"
+"This is the module to manage the accounting chart for Venezuela in Open "
+"ERP.\n"
+"Este módulo es para manejar un catálogo de cuentas ejemplo para Venezuela.\n"
+msgstr ""
+"\n"
+"Ovo je modul za uređivanje računskih tabela za Venecuelu u OPenERP-u.\n"
+"Este módulo es para manejar un catálogo de cuentas ejemplo para Venezuela.\n"
+
+#. module: l10n_ve
+#: model:ir.module.module,shortdesc:l10n_ve.module_meta_information
+msgid "Venezuela -Chart of Account"
+msgstr "Venecuela - računske tabele"
diff --git a/addons/marketing/i18n/sl.po b/addons/marketing/i18n/sl.po
new file mode 100644
index 00000000000..c3cba4b3f45
--- /dev/null
+++ b/addons/marketing/i18n/sl.po
@@ -0,0 +1,111 @@
+# Slovenian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2011-10-11 16:48+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Slovenian \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-10-12 04:40+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
+
+#. module: marketing
+#: model:ir.module.module,description:marketing.module_meta_information
+msgid "Menu for Marketing"
+msgstr ""
+
+#. module: marketing
+#: help:marketing.installer,marketing_campaign:0
+msgid ""
+"Helps you to manage marketing campaigns and automate actions and "
+"communication steps."
+msgstr ""
+
+#. module: marketing
+#: field:marketing.installer,progress:0
+msgid "Configuration Progress"
+msgstr "Potek konfiguracije"
+
+#. module: marketing
+#: view:marketing.installer:0
+msgid "title"
+msgstr ""
+
+#. module: marketing
+#: field:marketing.installer,email_template:0
+msgid "Automated E-Mails"
+msgstr ""
+
+#. module: marketing
+#: field:marketing.installer,config_logo:0
+msgid "Image"
+msgstr "Slika"
+
+#. module: marketing
+#: view:marketing.installer:0
+msgid "Configure Your Marketing Application"
+msgstr ""
+
+#. module: marketing
+#: help:marketing.installer,email_template:0
+msgid ""
+"Helps you to design templates of emails and integrate them in your different "
+"processes."
+msgstr ""
+
+#. module: marketing
+#: model:ir.model,name:marketing.model_marketing_installer
+msgid "marketing.installer"
+msgstr ""
+
+#. module: marketing
+#: model:ir.module.module,shortdesc:marketing.module_meta_information
+msgid "Marketing"
+msgstr "Marketing"
+
+#. module: marketing
+#: field:marketing.installer,crm_profiling:0
+msgid "Profiling Tools"
+msgstr "Orodja za profiliranje"
+
+#. module: marketing
+#: view:marketing.installer:0
+msgid ""
+"OpenERP provides Addons to better manage your sales and marketing processes. "
+"Select the ones you would be interested in."
+msgstr ""
+
+#. module: marketing
+#: view:marketing.installer:0
+msgid "Marketing Application Configuration"
+msgstr ""
+
+#. module: marketing
+#: model:ir.actions.act_window,name:marketing.action_marketing_installer
+msgid "Marketing Modules Installation"
+msgstr ""
+
+#. module: marketing
+#: field:marketing.installer,marketing_campaign:0
+msgid "Marketing Campaigns"
+msgstr ""
+
+#. module: marketing
+#: help:marketing.installer,crm_profiling:0
+msgid ""
+"Helps you to perform segmentation of partners and design segmentation "
+"questionnaires"
+msgstr ""
+
+#. module: marketing
+#: view:marketing.installer:0
+msgid "Configure"
+msgstr "Nastavitve"
diff --git a/addons/mrp_repair/mrp_repair.py b/addons/mrp_repair/mrp_repair.py
index 6e5543dbadd..18979e998bd 100644
--- a/addons/mrp_repair/mrp_repair.py
+++ b/addons/mrp_repair/mrp_repair.py
@@ -122,7 +122,7 @@ class mrp_repair(osv.osv):
'prodlot_id': fields.many2one('stock.production.lot', 'Lot Number', select=True, domain="[('product_id','=',product_id)]"),
'state': fields.selection([
('draft','Quotation'),
- ('confirmed','Confirmed, to repair'),
+ ('confirmed','Confirmed'),
('ready','Ready to Repair'),
('under_repair','Under Repair'),
('2binvoiced','To be Invoiced'),
diff --git a/addons/point_of_sale/i18n/et.po b/addons/point_of_sale/i18n/et.po
index 3d295b74c53..3d7af321ef2 100644
--- a/addons/point_of_sale/i18n/et.po
+++ b/addons/point_of_sale/i18n/et.po
@@ -7,17 +7,17 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-03 16:58+0000\n"
-"PO-Revision-Date: 2010-10-30 09:04+0000\n"
-"Last-Translator: OpenERP Administrators \n"
+"PO-Revision-Date: 2011-10-11 18:22+0000\n"
+"Last-Translator: Aare Vesi \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 05:05+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-12 04:39+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: point_of_sale
-#: code:addons/point_of_sale/point_of_sale.py:1206
+#: code:addons/point_of_sale/point_of_sale.py:1202
#, python-format
msgid "Create line failed !"
msgstr "Rea loomine ebaõnnestus!"
@@ -29,7 +29,7 @@ msgid "Invalid action !"
msgstr "Vigane tegevus !"
#. module: point_of_sale
-#: code:addons/point_of_sale/point_of_sale.py:1214
+#: code:addons/point_of_sale/point_of_sale.py:1210
#, python-format
msgid "Modify line failed !"
msgstr "Rea muutmine ebaõnnestus!"
@@ -73,7 +73,7 @@ msgstr "Kassa"
#. module: point_of_sale
#: view:report.pos.order:0
msgid "Today"
-msgstr ""
+msgstr "Täna"
#. module: point_of_sale
#: view:pos.add.product:0
@@ -121,7 +121,7 @@ msgstr "Scanneeri toodet"
#: view:report.pos.order:0
#: field:report.pos.order,day:0
msgid "Day"
-msgstr ""
+msgstr "Päev"
#. module: point_of_sale
#: view:pos.make.payment:0
@@ -132,7 +132,7 @@ msgstr "Lisa maksmine :"
#: view:report.cash.register:0
#: view:report.pos.order:0
msgid "My Sales"
-msgstr ""
+msgstr "Minu müügid"
#. module: point_of_sale
#: model:ir.actions.act_window,name:point_of_sale.action_box_out
@@ -163,7 +163,7 @@ msgstr "Käibemaks"
#. module: point_of_sale
#: report:pos.invoice:0
msgid "Origin"
-msgstr ""
+msgstr "Päritolu"
#. module: point_of_sale
#: report:pos.invoice:0
@@ -196,7 +196,7 @@ msgstr "Päevasumma"
#: view:report.pos.order:0
#: field:report.pos.order,average_price:0
msgid "Average Price"
-msgstr ""
+msgstr "Keskmine hind"
#. module: point_of_sale
#: report:pos.lines:0
@@ -248,24 +248,24 @@ msgstr ""
#: field:pos.box.entries,ref:0
#: field:pos.box.out,ref:0
msgid "Ref"
-msgstr ""
+msgstr "Viide"
#. module: point_of_sale
#: view:report.pos.order:0
#: field:report.pos.order,price_total:0
msgid "Total Price"
-msgstr ""
+msgstr "Hind kokku"
#. module: point_of_sale
#: view:product.product:0
msgid "Miscelleanous"
-msgstr ""
+msgstr "Mitmesugune"
#. module: point_of_sale
#: model:ir.actions.report.xml,name:point_of_sale.pos_sales_user
#: report:pos.sales.user:0
msgid "Sales Report"
-msgstr ""
+msgstr "Müügiaruanne"
#. module: point_of_sale
#: code:addons/point_of_sale/wizard/pos_discount.py:52
@@ -276,18 +276,18 @@ msgstr ""
#. module: point_of_sale
#: view:pos.order:0
msgid "Other Information"
-msgstr ""
+msgstr "Muu info"
#. module: point_of_sale
#: view:product.product:0
msgid "Product Type"
-msgstr ""
+msgstr "Toote tüüp"
#. module: point_of_sale
#: view:pos.order:0
#: view:pos.payment.report.date:0
msgid "Dates"
-msgstr ""
+msgstr "Kuupäevad"
#. module: point_of_sale
#: field:res.company,company_discount:0
@@ -300,8 +300,8 @@ msgid "Cash register management"
msgstr ""
#. module: point_of_sale
-#: code:addons/point_of_sale/point_of_sale.py:1056
-#: code:addons/point_of_sale/point_of_sale.py:1075
+#: code:addons/point_of_sale/point_of_sale.py:1057
+#: code:addons/point_of_sale/point_of_sale.py:1076
#, python-format
msgid "No valid pricelist line found !"
msgstr "Kehtiv hinnakirja rida ei ole leitud !"
@@ -314,13 +314,13 @@ msgstr "Kehtiv hinnakirja rida ei ole leitud !"
#: report:pos.payment.report.user:0
#: report:pos.user.product:0
msgid "["
-msgstr ""
+msgstr "["
#. module: point_of_sale
#: field:report.sales.by.margin.pos,total:0
#: field:report.sales.by.margin.pos.month,total:0
msgid "Margin"
-msgstr ""
+msgstr "Kate"
#. module: point_of_sale
#: field:pos.order.line,discount:0
@@ -380,13 +380,13 @@ msgstr ""
#: selection:report.cash.register,month:0
#: selection:report.pos.order,month:0
msgid "August"
-msgstr ""
+msgstr "August"
#. module: point_of_sale
#: selection:report.cash.register,month:0
#: selection:report.pos.order,month:0
msgid "June"
-msgstr ""
+msgstr "Juuni"
#. module: point_of_sale
#: model:ir.actions.act_window,name:point_of_sale.action_report_sales_by_user_pos_month
@@ -409,7 +409,7 @@ msgstr ""
#: selection:report.cash.register,month:0
#: selection:report.pos.order,month:0
msgid "October"
-msgstr ""
+msgstr "Oktoober"
#. module: point_of_sale
#: field:account.bank.statement.line,am_out:0
@@ -425,7 +425,7 @@ msgstr "Üldistus"
#. module: point_of_sale
#: view:pos.order:0
msgid "Quotations"
-msgstr ""
+msgstr "Pakkumised"
#. module: point_of_sale
#: field:report.pos.order,delay_payment:0
@@ -450,7 +450,7 @@ msgstr ""
#. module: point_of_sale
#: view:account.bank.statement:0
msgid "Period"
-msgstr ""
+msgstr "Periood"
#. module: point_of_sale
#: report:pos.invoice:0
@@ -466,7 +466,7 @@ msgstr "Rea kirjeldus"
#. module: point_of_sale
#: view:product.product:0
msgid "Codes"
-msgstr ""
+msgstr "Koodid"
#. module: point_of_sale
#: view:pos.box.out:0
@@ -483,7 +483,7 @@ msgstr ""
#: view:pos.sales.user.today:0
#: view:pos.sales.user.today.current_user:0
msgid "Print Report"
-msgstr ""
+msgstr "Trüki aruanne"
#. module: point_of_sale
#: report:pos.invoice:0
@@ -509,7 +509,7 @@ msgstr ""
#: model:ir.model,name:point_of_sale.model_pos_add_product
#, python-format
msgid "Add Product"
-msgstr ""
+msgstr "Lisa toode"
#. module: point_of_sale
#: field:report.transaction.pos,invoice_am:0
@@ -581,7 +581,7 @@ msgstr ""
#. module: point_of_sale
#: constraint:product.product:0
msgid "Error: Invalid ean code"
-msgstr ""
+msgstr "Viga: vigane EAN kood"
#. module: point_of_sale
#: model:ir.model,name:point_of_sale.model_pos_open_statement
@@ -626,7 +626,7 @@ msgstr ""
#: selection:report.cash.register,month:0
#: selection:report.pos.order,month:0
msgid "March"
-msgstr ""
+msgstr "Märts"
#. module: point_of_sale
#: model:ir.actions.report.xml,name:point_of_sale.pos_users_product_re
@@ -635,8 +635,8 @@ msgid "User's Product"
msgstr ""
#. module: point_of_sale
-#: code:addons/point_of_sale/point_of_sale.py:1042
-#: code:addons/point_of_sale/point_of_sale.py:1067
+#: code:addons/point_of_sale/point_of_sale.py:1043
+#: code:addons/point_of_sale/point_of_sale.py:1068
#, python-format
msgid ""
"You have to select a pricelist in the sale form !\n"
@@ -749,7 +749,7 @@ msgstr "Kokku :"
#: field:report.sales.by.margin.pos,product_name:0
#: field:report.sales.by.margin.pos.month,product_name:0
msgid "Product Name"
-msgstr ""
+msgstr "Toote nimi"
#. module: point_of_sale
#: field:pos.make.payment,pricelist_id:0
@@ -767,7 +767,7 @@ msgstr "Kokku arves"
#: view:report.pos.order:0
#: field:report.pos.order,product_qty:0
msgid "# of Qty"
-msgstr ""
+msgstr "Kogus"
#. module: point_of_sale
#: model:ir.model,name:point_of_sale.model_pos_return
@@ -786,7 +786,7 @@ msgstr ""
#: field:report.sales.by.user.pos,date_order:0
#: field:report.sales.by.user.pos.month,date_order:0
msgid "Order Date"
-msgstr ""
+msgstr "Tellimuse Kuupäev"
#. module: point_of_sale
#: report:all.closed.cashbox.of.the.day:0
@@ -825,7 +825,7 @@ msgstr ""
#: selection:report.cash.register,month:0
#: selection:report.pos.order,month:0
msgid "September"
-msgstr ""
+msgstr "September"
#. module: point_of_sale
#: report:account.statement:0
@@ -836,7 +836,7 @@ msgstr ""
#. module: point_of_sale
#: report:pos.lines:0
msgid "Taxes :"
-msgstr ""
+msgstr "Maksud :"
#. module: point_of_sale
#: field:report.transaction.pos,disc:0
@@ -859,7 +859,6 @@ msgid "Receipt :"
msgstr ""
#. module: point_of_sale
-#: field:account.bank.statement.line,pos_statement_id:0
#: field:pos.order,amount_return:0
msgid "unknown"
msgstr "teadmata"
@@ -878,7 +877,7 @@ msgstr ""
#. module: point_of_sale
#: field:pos.order,num_sale:0
msgid "Internal Note"
-msgstr ""
+msgstr "Sisemine märkus"
#. module: point_of_sale
#: model:ir.model,name:point_of_sale.model_res_company
@@ -916,7 +915,7 @@ msgstr ""
#. module: point_of_sale
#: report:pos.invoice:0
msgid "Your Reference"
-msgstr ""
+msgstr "Teie viide"
#. module: point_of_sale
#: field:report.transaction.pos,no_trans:0
@@ -948,7 +947,7 @@ msgstr "Müük (üldistus)"
#. module: point_of_sale
#: view:product.product:0
msgid "Information"
-msgstr ""
+msgstr "informatsioon"
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_wizard_enter_jrnl
@@ -974,7 +973,7 @@ msgstr ""
#. module: point_of_sale
#: field:pos.order,first_name:0
msgid "First Name"
-msgstr ""
+msgstr "Eesnimi"
#. module: point_of_sale
#: view:res.company:0
@@ -1002,7 +1001,7 @@ msgstr ""
#: view:account.journal:0
#: field:account.journal,journal_users:0
msgid "Users"
-msgstr ""
+msgstr "Kasutajad"
#. module: point_of_sale
#: report:pos.details:0
@@ -1028,7 +1027,7 @@ msgstr "POS"
#. module: point_of_sale
#: field:report.cash.register,date:0
msgid "Create Date"
-msgstr ""
+msgstr "Loomise kuupäev"
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_wizard_enter_jrnl2
@@ -1047,7 +1046,7 @@ msgstr ""
#: report:pos.sales.user.today:0
#: report:pos.sales.user.today.current.user:0
msgid "Name"
-msgstr ""
+msgstr "Nimi"
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_open_statement
@@ -1062,7 +1061,7 @@ msgstr ""
#: report:pos.payment.report.user:0
#: report:pos.user.product:0
msgid "]"
-msgstr ""
+msgstr "]"
#. module: point_of_sale
#: sql_constraint:account.journal:0
@@ -1080,7 +1079,7 @@ msgstr "Tarnija tagasimakse"
#: view:report.cash.register:0
#: view:report.pos.order:0
msgid "Group By..."
-msgstr ""
+msgstr "Grupeeri..."
#. module: point_of_sale
#: view:pos.order:0
@@ -1093,8 +1092,8 @@ msgid "All Closed CashBox"
msgstr ""
#. module: point_of_sale
-#: code:addons/point_of_sale/point_of_sale.py:1041
-#: code:addons/point_of_sale/point_of_sale.py:1066
+#: code:addons/point_of_sale/point_of_sale.py:1042
+#: code:addons/point_of_sale/point_of_sale.py:1067
#, python-format
msgid "No Pricelist !"
msgstr "Puudub hinnakiri !"
@@ -1118,7 +1117,7 @@ msgstr "Baas"
#. module: point_of_sale
#: view:product.product:0
msgid "Account"
-msgstr ""
+msgstr "Konto"
#. module: point_of_sale
#: field:pos.order,sale_manager:0
@@ -1161,7 +1160,7 @@ msgstr "Tootekood"
#: model:ir.ui.menu,name:point_of_sale.menu_point_of_sale_product
#: model:ir.ui.menu,name:point_of_sale.menu_pos_products
msgid "Products"
-msgstr ""
+msgstr "Tooted"
#. module: point_of_sale
#: model:ir.actions.report.xml,name:point_of_sale.pos_payment_report
@@ -1250,15 +1249,15 @@ msgid "Sale by User"
msgstr ""
#. module: point_of_sale
-#: code:addons/point_of_sale/point_of_sale.py:555
-#: code:addons/point_of_sale/point_of_sale.py:743
-#: code:addons/point_of_sale/point_of_sale.py:851
+#: code:addons/point_of_sale/point_of_sale.py:558
+#: code:addons/point_of_sale/point_of_sale.py:744
+#: code:addons/point_of_sale/point_of_sale.py:852
#: code:addons/point_of_sale/report/pos_invoice.py:46
#: code:addons/point_of_sale/wizard/pos_box_entries.py:103
#: code:addons/point_of_sale/wizard/pos_box_entries.py:107
-#: code:addons/point_of_sale/wizard/pos_box_out.py:95
-#: code:addons/point_of_sale/wizard/pos_box_out.py:99
+#: code:addons/point_of_sale/wizard/pos_box_out.py:97
#: code:addons/point_of_sale/wizard/pos_box_out.py:101
+#: code:addons/point_of_sale/wizard/pos_box_out.py:103
#, python-format
msgid "Error !"
msgstr "Viga !"
@@ -1282,10 +1281,10 @@ msgstr ""
#: selection:report.cash.register,month:0
#: selection:report.pos.order,month:0
msgid "July"
-msgstr ""
+msgstr "Juuli"
#. module: point_of_sale
-#: code:addons/point_of_sale/point_of_sale.py:544
+#: code:addons/point_of_sale/point_of_sale.py:547
#, python-format
msgid "Please provide an account for the product: %s"
msgstr ""
@@ -1338,7 +1337,7 @@ msgstr ""
#: view:report.pos.order:0
#: field:report.pos.order,month:0
msgid "Month"
-msgstr ""
+msgstr "Kuu"
#. module: point_of_sale
#: view:pos.order:0
@@ -1386,7 +1385,7 @@ msgid "Customer Note"
msgstr ""
#. module: point_of_sale
-#: code:addons/point_of_sale/point_of_sale.py:337
+#: code:addons/point_of_sale/point_of_sale.py:340
#, python-format
msgid "No order lines defined for this sale."
msgstr ""
@@ -1595,7 +1594,7 @@ msgid "Yes"
msgstr ""
#. module: point_of_sale
-#: code:addons/point_of_sale/point_of_sale.py:743
+#: code:addons/point_of_sale/point_of_sale.py:744
#, python-format
msgid "There is no income account defined for this product: \"%s\" (id:%d)"
msgstr ""
@@ -1696,8 +1695,8 @@ msgid "Invoice Date"
msgstr "Arve Kuupäev"
#. module: point_of_sale
-#: code:addons/point_of_sale/point_of_sale.py:1057
-#: code:addons/point_of_sale/point_of_sale.py:1076
+#: code:addons/point_of_sale/point_of_sale.py:1058
+#: code:addons/point_of_sale/point_of_sale.py:1077
#, python-format
msgid ""
"Couldn't find a pricelist line matching this product and quantity.\n"
@@ -1715,9 +1714,9 @@ msgid "Reprint"
msgstr ""
#. module: point_of_sale
-#: code:addons/point_of_sale/point_of_sale.py:555
+#: code:addons/point_of_sale/point_of_sale.py:558
#: code:addons/point_of_sale/wizard/pos_box_entries.py:103
-#: code:addons/point_of_sale/wizard/pos_box_out.py:101
+#: code:addons/point_of_sale/wizard/pos_box_out.py:103
#, python-format
msgid "You have to open at least one cashbox"
msgstr ""
@@ -1907,8 +1906,8 @@ msgid "Validation Date"
msgstr ""
#. module: point_of_sale
-#: code:addons/point_of_sale/point_of_sale.py:504
-#: code:addons/point_of_sale/point_of_sale.py:506
+#: code:addons/point_of_sale/point_of_sale.py:507
+#: code:addons/point_of_sale/point_of_sale.py:509
#, python-format
msgid "You don't have enough access to validate this sale!"
msgstr ""
@@ -2027,13 +2026,13 @@ msgid "PRO-FORMA"
msgstr "Ettemaks"
#. module: point_of_sale
-#: code:addons/point_of_sale/point_of_sale.py:637
+#: code:addons/point_of_sale/point_of_sale.py:638
#, python-format
msgid "Please provide a partner for the sale."
msgstr "Palun lisa müügipartnerit"
#. module: point_of_sale
-#: code:addons/point_of_sale/point_of_sale.py:852
+#: code:addons/point_of_sale/point_of_sale.py:853
#, python-format
msgid ""
"There is no receivable account defined for this journal: \"%s\" (id:%d)"
@@ -2091,13 +2090,13 @@ msgid "POS Orders lines"
msgstr ""
#. module: point_of_sale
-#: code:addons/point_of_sale/point_of_sale.py:337
-#: code:addons/point_of_sale/point_of_sale.py:504
-#: code:addons/point_of_sale/point_of_sale.py:506
-#: code:addons/point_of_sale/point_of_sale.py:544
-#: code:addons/point_of_sale/point_of_sale.py:637
-#: code:addons/point_of_sale/point_of_sale.py:1206
-#: code:addons/point_of_sale/point_of_sale.py:1214
+#: code:addons/point_of_sale/point_of_sale.py:340
+#: code:addons/point_of_sale/point_of_sale.py:507
+#: code:addons/point_of_sale/point_of_sale.py:509
+#: code:addons/point_of_sale/point_of_sale.py:547
+#: code:addons/point_of_sale/point_of_sale.py:638
+#: code:addons/point_of_sale/point_of_sale.py:1202
+#: code:addons/point_of_sale/point_of_sale.py:1210
#, python-format
msgid "Error"
msgstr "Viga"
@@ -2193,7 +2192,7 @@ msgid "Please fill these fields for entries to the box:"
msgstr ""
#. module: point_of_sale
-#: code:addons/point_of_sale/wizard/pos_box_out.py:99
+#: code:addons/point_of_sale/wizard/pos_box_out.py:101
#, python-format
msgid "please check that account is set to %s"
msgstr ""
diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml
index 4f1019e602e..65b356b3845 100644
--- a/addons/point_of_sale/point_of_sale_view.xml
+++ b/addons/point_of_sale/point_of_sale_view.xml
@@ -670,7 +670,7 @@
product.product
form
tree,form
- [('income_pdt','=',True)]
+ [('expense_pdt','=',True)]
@@ -696,7 +696,7 @@
product.product
form
tree,form
- [('expense_pdt','=',True)]
+ [('income_pdt','=',True)]
diff --git a/addons/point_of_sale/static/src/pos.html b/addons/point_of_sale/static/src/pos.html
index 93b2418dee6..2484e0a612c 100644
--- a/addons/point_of_sale/static/src/pos.html
+++ b/addons/point_of_sale/static/src/pos.html
@@ -33,7 +33,7 @@
var db = openerp.init();
openerp.point_of_sale(db);
var session = new db.web.Session('DEBUG');
- session.session_login('trunk', 'admin', 'a').then(function() {
+ session.session_login('addons-trunk_all', 'admin', 'admin').then(function() {
var pos = new db.point_of_sale.PointOfSale({session: session});
pos.appendTo($("body"));
});
diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml
index 35798ce939d..254a75fdcdc 100644
--- a/addons/product/product_view.xml
+++ b/addons/product/product_view.xml
@@ -10,7 +10,7 @@
-
+
diff --git a/addons/project/board_project_view.xml b/addons/project/board_project_view.xml
index 6470dd3e49d..f2c44fab574 100644
--- a/addons/project/board_project_view.xml
+++ b/addons/project/board_project_view.xml
@@ -48,7 +48,7 @@
-
+
My Open Tasks
project.task
form
@@ -83,7 +83,7 @@
-
+
diff --git a/addons/project/i18n/ca.po b/addons/project/i18n/ca.po
index 5af0da1e28e..c2692b42d1f 100644
--- a/addons/project/i18n/ca.po
+++ b/addons/project/i18n/ca.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2011-08-17 22:31+0000\n"
+"PO-Revision-Date: 2011-10-16 23:02+0000\n"
"Last-Translator: mgaja (GrupoIsep.com) \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 04:53+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-17 04:43+0000\n"
+"X-Generator: Launchpad (build 14155)\n"
#. module: project
#: model:ir.actions.act_window,name:project.act_res_users_2_project_task_opened
@@ -71,7 +71,7 @@ msgstr "Operació no permesa!"
#: code:addons/project/wizard/project_task_delegate.py:67
#, python-format
msgid "CHECK: %s"
-msgstr "CHECK: %s"
+msgstr "COMPROVA: %s"
#. module: project
#: code:addons/project/wizard/project_task_delegate.py:55
diff --git a/addons/project/i18n/es.po b/addons/project/i18n/es.po
index 22b2e410bcb..d1ed605f860 100644
--- a/addons/project/i18n/es.po
+++ b/addons/project/i18n/es.po
@@ -7,15 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2011-01-16 18:25+0000\n"
-"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
-"\n"
+"PO-Revision-Date: 2011-10-16 23:01+0000\n"
+"Last-Translator: mgaja (GrupoIsep.com) \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 04:54+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-17 04:43+0000\n"
+"X-Generator: Launchpad (build 14155)\n"
#. module: project
#: model:ir.actions.act_window,name:project.act_res_users_2_project_task_opened
@@ -72,7 +71,7 @@ msgstr "¡Operación no permitida!"
#: code:addons/project/wizard/project_task_delegate.py:67
#, python-format
msgid "CHECK: %s"
-msgstr ""
+msgstr "CONSULTAR: %s"
#. module: project
#: code:addons/project/wizard/project_task_delegate.py:55
diff --git a/addons/project/project.py b/addons/project/project.py
index 967bd4ebbd3..05bed8a9b9a 100644
--- a/addons/project/project.py
+++ b/addons/project/project.py
@@ -469,7 +469,7 @@ class task(osv.osv):
'work_ids': fields.one2many('project.task.work', 'task_id', 'Work done'),
'manager_id': fields.related('project_id', 'analytic_account_id', 'user_id', type='many2one', relation='res.users', string='Project Manager'),
'company_id': fields.many2one('res.company', 'Company'),
- 'id': fields.integer('ID'),
+ 'id': fields.integer('ID', readonly=True),
'color': fields.integer('Color Index'),
}
diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml
index b518cb31de2..f8eec371d48 100644
--- a/addons/project/project_view.xml
+++ b/addons/project/project_view.xml
@@ -511,20 +511,6 @@
A task represents a work that has to be done. Each user works in his own list of tasks where he can record his task work in hours. He can work and close the task itself or delegate it to another user. If you delegate a task to another user, you get a new task in pending state, which will be reopened when you have to review the work achieved. If you install the project_timesheet module, task work can be invoiced based on the project configuration. With the project_mrp module, sales orders can create tasks automatically when they are confirmed.
-
-
-
- tree
-
-
-
-
-
-
- form
-
-
-
diff --git a/addons/project/report/project_report.py b/addons/project/report/project_report.py
index 989f646724e..fb1b0b030d6 100644
--- a/addons/project/report/project_report.py
+++ b/addons/project/report/project_report.py
@@ -128,6 +128,7 @@ class project_vs_hours(osv.osv):
_columns = {
'project': fields.char('Project', size=128, required=True),
'remaining_hours': fields.float('Remaining Hours', readonly=True),
+ 'user_id': fields.many2one('res.users', 'Assigned To', readonly=True),
'planned_hours': fields.float('Planned Hours', readonly=True),
'total_hours': fields.float('Total Hours', readonly=True),
'state': fields.selection([('draft','Draft'),('open','Open'), ('pending','Pending'),('cancelled', 'Cancelled'),('close','Close'),('template', 'Template')], 'State', required=True, readonly=True)
@@ -140,7 +141,7 @@ class project_vs_hours(osv.osv):
CREATE or REPLACE view project_vs_hours as (
select
min(pt.id) as id,
- aaa.user_id as uid,
+ aaa.user_id as user_id,
aaa.name as project,
aaa.state,
sum(pt.remaining_hours) as remaining_hours,
@@ -154,7 +155,7 @@ class project_vs_hours(osv.osv):
UNION All
SELECT
min(pt.id) as id,
- pur.uid as uid,
+ pur.uid as user_id,
aaa.name as project,
aaa.state,
sum(pt.remaining_hours) as remaining_hours,
diff --git a/addons/project/report/project_report_view.xml b/addons/project/report/project_report_view.xml
index 601f6e2004f..2e084261afa 100644
--- a/addons/project/report/project_report_view.xml
+++ b/addons/project/report/project_report_view.xml
@@ -184,7 +184,7 @@
project.vs.hours
form
graph,tree
- [('uid','=',uid),('state','=','open')]
+ [('user_id','=',uid),('state','=','open')]
@@ -272,7 +272,7 @@
form
graph,tree
{}
- [('uid','=',uid),('state','=','open')]
+ [('user_id','=',uid),('state','=','open')]
diff --git a/addons/project/wizard/project_task_reevaluate.py b/addons/project/wizard/project_task_reevaluate.py
index d627ffa4408..ce3e728a98e 100644
--- a/addons/project/wizard/project_task_reevaluate.py
+++ b/addons/project/wizard/project_task_reevaluate.py
@@ -73,11 +73,11 @@ class project_task_reevaluate(osv.osv_memory):
if context is None:
context = {}
data = self.browse(cr, uid, ids, context=context)[0]
- task_pool = self.pool.get('project.task')
- task_id = context.get('active_id', False)
+ task_id = context.get('active_id')
if task_id:
+ task_pool = self.pool.get('project.task')
task_pool.write(cr, uid, task_id, {'remaining_hours': data.remaining_hours})
- if context.get('button_reactivate', False):
+ if context.get('button_reactivate'):
task_pool.do_reopen(cr, uid, [task_id], context=context)
return {'type': 'ir.actions.act_window_close'}
project_task_reevaluate()
diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py
index 74a78a9808a..e94349e028f 100644
--- a/addons/project_issue/project_issue.py
+++ b/addons/project_issue/project_issue.py
@@ -180,7 +180,7 @@ class project_issue(crm.crm_case, osv.osv):
return res
_columns = {
- 'id': fields.integer('ID'),
+ 'id': fields.integer('ID', readonly=True),
'name': fields.char('Issue', size=128, required=True),
'active': fields.boolean('Active', required=False),
'create_date': fields.datetime('Creation Date', readonly=True,select=True),
diff --git a/addons/project_retro_planning/i18n/sr@latin.po b/addons/project_retro_planning/i18n/sr@latin.po
index ae31dd06d8b..5bd209378c8 100644
--- a/addons/project_retro_planning/i18n/sr@latin.po
+++ b/addons/project_retro_planning/i18n/sr@latin.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2010-12-23 14:52+0000\n"
-"Last-Translator: Olivier Dony (OpenERP) \n"
+"PO-Revision-Date: 2011-10-13 15:26+0000\n"
+"Last-Translator: Milan Milosevic \n"
"Language-Team: Serbian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 05:42+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: project_retro_planning
#: model:ir.model,name:project_retro_planning.model_project_project
@@ -35,13 +35,17 @@ msgid ""
" then the deadline date and start date for all the tasks will "
"change accordingly "
msgstr ""
+"\n"
+" - Ako je datum kraja projekta izmenjen\n"
+" onda će datum krajnjeg roka i datum početka za sve zadatke biti "
+"shodno tome izmenjeni "
#. module: project_retro_planning
#: constraint:project.project:0
msgid "Error! project start-date must be lower then project end-date."
-msgstr ""
+msgstr "Greška! datum početka projekta mora biti ispred datuma kraja."
#. module: project_retro_planning
#: constraint:project.project:0
msgid "Error! You cannot assign escalation to the same project!"
-msgstr ""
+msgstr "Greška! Ne možete dodeliti eskalaciju jednom istom projektu!"
diff --git a/addons/project_scrum/i18n/pt_BR.po b/addons/project_scrum/i18n/pt_BR.po
index e5bd82d8446..d5d8e6cd4cc 100644
--- a/addons/project_scrum/i18n/pt_BR.po
+++ b/addons/project_scrum/i18n/pt_BR.po
@@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2011-03-15 16:12+0000\n"
-"Last-Translator: Emerson \n"
+"PO-Revision-Date: 2011-10-13 00:57+0000\n"
+"Last-Translator: Joe Pimentel \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 05:03+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: project_scrum
#: help:project.scrum.email,scrum_master_email:0
msgid "Email Id of Scrum Master"
-msgstr ""
+msgstr "Email do Scrum Master"
#. module: project_scrum
#: view:project.scrum.backlog.assign.sprint:0
@@ -68,12 +68,35 @@ msgid ""
" * http://controlchaos.com\n"
" "
msgstr ""
+"\n"
+" Este módulo implementa todos os conceitos definidos pela metodologia de "
+"gerenciamento\n"
+" de projeto Scrum para empresas de TI:\n"
+" * Projetos com sprints, Dono do Produto, Scrum Master\n"
+" * Sprints com Revisões, Encontros Diários, Feedbacks\n"
+" * Backlog do Produto\n"
+" * Backlog do Sprint \n"
+"\n"
+" Ele adiciona alguns conceitos ao modulo de gerenciamento de projetos:\n"
+" * Roteiros de Médio e longo prazo\n"
+" * Requisitos Funcionais/de Clientes VS técnicos\n"
+"\n"
+" Ele também cria umnovo relatório:\n"
+" * Burn-down chart\n"
+"\n"
+" The scrum projects and tasks inherit from the real projects and\n"
+" tasks, so you can continue working on normal tasks that will also\n"
+" include tasks from scrum projects.\n"
+"\n"
+" Mais informações sobre a Metodologia:\n"
+" * http://controlchaos.com\n"
+" "
#. module: project_scrum
#: view:project.scrum.meeting:0
#: view:project.scrum.sprint:0
msgid "What did you do since the last meeting?"
-msgstr ""
+msgstr "O que você executou desde a última reunião?"
#. module: project_scrum
#: model:ir.actions.act_window,help:project_scrum.action_sprint_all_tree
@@ -83,6 +106,11 @@ msgid ""
"which the team implements a list of product backlogs. The sprint review is "
"organized when the team presents its work to the customer and product owner."
msgstr ""
+"A metodologia ágil Scrum é utilizada no desenvolvimento de projetos de "
+"software. Nesta metodologia, um Sprint é um período curto de tempo (ex. 1 "
+"mes) durante o qual o time implementa uma lista de Backlogs de Produto. A "
+"revisão do Sprint é organizada quando o time apresenta o seu trabalho para o "
+"Cliente e o Dono do Produto."
#. module: project_scrum
#: view:project.scrum.meeting:0
@@ -117,7 +145,7 @@ msgstr "Scrum Master"
#: code:addons/project_scrum/project_scrum.py:83
#, python-format
msgid "The sprint '%s' has been opened."
-msgstr ""
+msgstr "O Sprint '%s' foi iniciado."
#. module: project_scrum
#: constraint:project.project:0
@@ -159,24 +187,24 @@ msgstr "Definir como Provisório"
#. module: project_scrum
#: model:ir.model,name:project_scrum.model_project_scrum_backlog_merge
msgid "Merge Product Backlogs"
-msgstr ""
+msgstr "Mesclar Backlog de Produtos"
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_scrum_backlog_merge
#: view:project.scrum.backlog.merge:0
msgid "Merge Backlogs"
-msgstr ""
+msgstr "Mesclar Backlogs"
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_email.py:53
#, python-format
msgid "Scrum Meeting : %s"
-msgstr ""
+msgstr "Reuniáo Scrum: %s"
#. module: project_scrum
#: view:project.task:0
msgid "Backlog"
-msgstr ""
+msgstr "Backlog"
#. module: project_scrum
#: model:ir.model,name:project_scrum.model_project_scrum_email
@@ -206,7 +234,7 @@ msgstr "Ok"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Spent hours"
-msgstr ""
+msgstr "Horas Gastas"
#. module: project_scrum
#: model:ir.actions.act_window,help:project_scrum.action_meeting_form
@@ -215,30 +243,36 @@ msgid ""
"this methodology, a daily meeting is organized by the scrum master with his "
"team in order to detect the difficulties the team faced/will face."
msgstr ""
+"A metodologia ágil Scrum é usada em projetos de desenvolvimento de software. "
+"Nesta metodologia, uma reunião diária é organizada pelo Scrum Master com o "
+"time de forma a detectar as dificuldades as quais o time está ou irá "
+"encontrar."
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:316
#, python-format
msgid "Please provide email address for product owner defined on sprint."
msgstr ""
+"Por favor, forneça um endereço de email para o Dono do Produto definido no "
+"Sprint."
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:327
#, python-format
msgid "Scrum Meeting of %s"
-msgstr ""
+msgstr "Reunião Scrum de %s"
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_backlog_sprint.py:57
#, python-format
msgid "Product Backlog '%s' is converted into Task %d."
-msgstr ""
+msgstr "Backlog de Produto '%s' esta convertida na Tarefa %d."
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_backlog_sprint.py:62
#, python-format
msgid "Product Backlog '%s' is assigned sprint:%s"
-msgstr ""
+msgstr "Backlog de Produto '%s' esta atribuída a Sprint: %s"
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_backlog_sprint.py:57
@@ -264,7 +298,7 @@ msgstr "Projeto"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Start Task"
-msgstr ""
+msgstr "Iniciar Tarefa"
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_email.py:90
@@ -272,12 +306,12 @@ msgstr ""
#: code:addons/project_scrum/wizard/project_scrum_email.py:96
#, python-format
msgid "None"
-msgstr ""
+msgstr "Nenhum(a)"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Change Stage"
-msgstr ""
+msgstr "Mudar Estágio"
#. module: project_scrum
#: view:project.scrum.sprint:0
@@ -293,7 +327,7 @@ msgstr "Data Final"
#: view:project.scrum.meeting:0
#: view:project.scrum.sprint:0
msgid "Links"
-msgstr ""
+msgstr "Ligações"
#. module: project_scrum
#: help:project.scrum.sprint,effective_hours:0
@@ -304,17 +338,17 @@ msgstr "Calculado usando a soma do trabalho realizado da tarefa."
#: code:addons/project_scrum/wizard/project_scrum_email.py:91
#, python-format
msgid "Task for Today"
-msgstr ""
+msgstr "Tarefa de Hoje"
#. module: project_scrum
#: field:project.scrum.backlog.assign.sprint,state_open:0
msgid "Open Backlog"
-msgstr ""
+msgstr "Abrir Backlog"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Total Spent Hours"
-msgstr ""
+msgstr "Total de Horas Gastas"
#. module: project_scrum
#: field:project.scrum.sprint,date_start:0
@@ -325,24 +359,24 @@ msgstr "Data de Início"
#: code:addons/project_scrum/wizard/project_scrum_email.py:94
#, python-format
msgid "Blocking points encountered:"
-msgstr ""
+msgstr "Pontos de bloqueio encontrados:"
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Planning"
-msgstr ""
+msgstr "Planejamento"
#. module: project_scrum
#: view:project.scrum.backlog.assign.sprint:0
#: view:project.scrum.backlog.create.task:0
#: view:project.scrum.email:0
msgid "_Cancel"
-msgstr ""
+msgstr "_Cancelar"
#. module: project_scrum
#: help:project.scrum.sprint,scrum_master_id:0
msgid "The person who is maintains the processes for the product"
-msgstr ""
+msgstr "A pessoa que mantem os processos para o produto"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
@@ -354,7 +388,7 @@ msgstr "Horas planejadas"
#. module: project_scrum
#: field:project.scrum.email,subject:0
msgid "Subject"
-msgstr ""
+msgstr "Assunto"
#. module: project_scrum
#: view:board.board:0
@@ -364,28 +398,28 @@ msgstr ""
#: view:project.scrum.product.backlog:0
#: view:project.scrum.sprint:0
msgid "Sprints"
-msgstr ""
+msgstr "Sprints"
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:314
#, python-format
msgid "Email notification could not be sent to the product owner %s"
-msgstr ""
+msgstr "Email de notificação não pode ser enviado para o Dono do Prodyuto %s"
#. module: project_scrum
#: field:project.scrum.backlog.assign.sprint,convert_to_task:0
msgid "Convert To Task"
-msgstr ""
+msgstr "Converter em Tarefa"
#. module: project_scrum
#: view:project.scrum.backlog.merge:0
msgid "Are you sure you want to merge these Backlogs?"
-msgstr ""
+msgstr "Tem certeza que deseja mesclar estes Backlogs?"
#. module: project_scrum
#: help:project.scrum.backlog.create.task,user_id:0
msgid "Responsible user who can work on task"
-msgstr ""
+msgstr "Usuário responsável que pode trabalhar na tarefa"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
@@ -408,14 +442,14 @@ msgstr "Scrum Diário"
#. module: project_scrum
#: view:project.scrum.backlog.create.task:0
msgid "C_onvert"
-msgstr ""
+msgstr "C_onverter"
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_product_backlog_form
#: model:ir.ui.menu,name:project_scrum.menu_action_product_backlog_form
#: view:project.scrum.product.backlog:0
msgid "Product Backlogs"
-msgstr ""
+msgstr "Backlogs de Produto"
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:301
@@ -424,18 +458,18 @@ msgstr ""
#: code:addons/project_scrum/project_scrum.py:316
#, python-format
msgid "Error !"
-msgstr ""
+msgstr "Erro!"
#. module: project_scrum
#: field:project.scrum.product.backlog,create_date:0
msgid "Creation Date"
-msgstr ""
+msgstr "Data de Criação"
#. module: project_scrum
#: view:project.scrum.meeting:0
#: view:project.scrum.sprint:0
msgid "Are there anything blocking you?"
-msgstr ""
+msgstr "Existe alguma coisa bloqueando você?"
#. module: project_scrum
#: model:ir.ui.menu,name:project_scrum.menu_scrum
@@ -459,32 +493,32 @@ msgstr "Tarefas desde ontem"
#: code:addons/project_scrum/wizard/project_scrum_backlog_merger.py:71
#, python-format
msgid "Warning"
-msgstr ""
+msgstr "Aviso"
#. module: project_scrum
#: model:ir.model,name:project_scrum.model_project_scrum_backlog_assign_sprint
msgid "Assign sprint to backlogs"
-msgstr ""
+msgstr "Atribuir Sprint para Backlogs"
#. module: project_scrum
#: help:project.scrum.sprint,expected_hours:0
msgid "Estimated time to do the task."
-msgstr ""
+msgstr "Tempo estimado para realizar a tarefa"
#. module: project_scrum
#: field:project.scrum.product.backlog,task_hours:0
msgid "Task Hours"
-msgstr ""
+msgstr "Horas da Tarefa"
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Dates"
-msgstr ""
+msgstr "Datas"
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Send to Scrum Master"
-msgstr ""
+msgstr "Enviar para Scrum Master"
#. module: project_scrum
#: selection:project.scrum.product.backlog,state:0
@@ -504,11 +538,13 @@ msgid ""
"Hello , \n"
"I am sending you Scrum Meeting : %s for the Sprint '%s' of Project '%s'"
msgstr ""
+"Olá ,\n"
+"Estou enviando-lhe Reunião Scrum: %s para o Sprint '%s' do Projeto '%s'"
#. module: project_scrum
#: view:project.scrum.meeting:0
msgid "Daily"
-msgstr ""
+msgstr "Diária"
#. module: project_scrum
#: field:project.scrum.sprint,backlog_ids:0
@@ -518,24 +554,24 @@ msgstr "Backlog do Sprint"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Delegate"
-msgstr ""
+msgstr "Delegar"
#. module: project_scrum
#: view:board.board:0
msgid "My Board"
-msgstr ""
+msgstr "Meu Painel"
#. module: project_scrum
#: view:postpone.wizard:0
msgid "Postpone Backlog"
-msgstr ""
+msgstr "Adiar Backlog"
#. module: project_scrum
#: view:board.board:0
#: model:ir.actions.act_window,name:project_scrum.action_view_task_progress_graph
#: view:project.task:0
msgid "Task Progress"
-msgstr ""
+msgstr "Progresso da Tarefa"
#. module: project_scrum
#: field:project.scrum.meeting,date:0
@@ -554,17 +590,17 @@ msgstr "Tarefas"
#. module: project_scrum
#: field:project.scrum.email,product_owner_email:0
msgid "Product Owner Email"
-msgstr ""
+msgstr "Email do Dono do Produto"
#. module: project_scrum
#: view:project.scrum.email:0
msgid "_Send"
-msgstr ""
+msgstr "_Enviar"
#. module: project_scrum
#: help:project.scrum.backlog.assign.sprint,sprint_id:0
msgid "Select Sprint to assign backlog."
-msgstr ""
+msgstr "Selecione Sprint para atribuir Backlog"
#. module: project_scrum
#: help:project.scrum.product.backlog,progress:0
@@ -576,7 +612,7 @@ msgstr "Calculado como: Tempo Gasto / Tempo Total."
#: view:project.scrum.meeting:0
#: view:project.scrum.sprint:0
msgid "Month"
-msgstr ""
+msgstr "Mês"
#. module: project_scrum
#: field:project.scrum.meeting,question_blocks:0
@@ -587,23 +623,25 @@ msgstr "Bloqueios encontrados"
#: help:project.scrum.backlog.assign.sprint,state_open:0
msgid "Change the state of product backlogs to open if its in draft state"
msgstr ""
+"Alterar o estado do Backlog de Produto para Aberto se estiver em estado "
+"Rascunho"
#. module: project_scrum
#: view:project.scrum.email:0
#: field:project.scrum.email,message:0
msgid "Message"
-msgstr ""
+msgstr "Mensagem"
#. module: project_scrum
#: field:project.scrum.email,scrum_master_email:0
msgid "Scrum Master Email"
-msgstr ""
+msgstr "Email do Scrum Master"
#. module: project_scrum
#: help:project.project,product_owner_id:0
#: help:project.scrum.sprint,product_owner_id:0
msgid "The person who is responsible for the product"
-msgstr ""
+msgstr "A pesoa que é responsável pelo produto"
#. module: project_scrum
#: view:project.scrum.meeting:0
@@ -614,7 +652,7 @@ msgstr "Scrum Sprint"
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Product owner"
-msgstr ""
+msgstr "Dono do Produto"
#. module: project_scrum
#: view:project.scrum.sprint:0
@@ -642,19 +680,21 @@ msgstr "Esboço"
msgid ""
"Related product backlog that contains this task. Used in SCRUM methodology"
msgstr ""
+"Backlog de Produto relacionado que contém esta tarefa. Utilizado na "
+"Metodologia SCRUM"
#. module: project_scrum
#: view:project.scrum.meeting:0
#: view:project.scrum.sprint:0
msgid "What do you plan to do till the next meeting?"
-msgstr ""
+msgstr "O que você planeja realizar até a próxima reuniáo"
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_postpone_wizard
#: view:postpone.wizard:0
#: view:project.scrum.product.backlog:0
msgid "Postpone"
-msgstr ""
+msgstr "Adiar"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
@@ -668,17 +708,17 @@ msgstr "Pendente"
#: view:project.scrum.meeting:0
#: view:project.scrum.sprint:0
msgid "Optional Info"
-msgstr ""
+msgstr "Informação Opcional"
#. module: project_scrum
#: model:ir.model,name:project_scrum.model_project_scrum_backlog_create_task
msgid "Create Tasks from Product Backlogs"
-msgstr ""
+msgstr "Criar Tarefas a partir do Backlog de Produto"
#. module: project_scrum
#: help:project.project,sprint_size:0
msgid "Number of days allocated for sprint"
-msgstr ""
+msgstr "Número de dias alocados para o Sprint"
#. module: project_scrum
#: field:project.project,product_owner_id:0
@@ -690,6 +730,7 @@ msgstr "Proprietário do Produto"
#: help:project.scrum.product.backlog,sequence:0
msgid "Gives the sequence order when displaying a list of product backlog."
msgstr ""
+"Fornece a ordem de sequência quando mostrando uma lista de Backlog de Produto"
#. module: project_scrum
#: model:process.node,name:project_scrum.process_node_productbacklog0
@@ -706,12 +747,12 @@ msgstr "Backlogs"
#: code:addons/project_scrum/project_scrum.py:326
#, python-format
msgid "Thank you"
-msgstr ""
+msgstr "Obrigado"
#. module: project_scrum
#: help:project.scrum.backlog.assign.sprint,convert_to_task:0
msgid "Create Task for Product Backlog"
-msgstr ""
+msgstr "Criar Tarefa para o Backlog de Produto"
#. module: project_scrum
#: field:project.scrum.product.backlog,active:0
@@ -722,22 +763,22 @@ msgstr "Ativo"
#: model:ir.actions.act_window,name:project_scrum.action_meeting_form
#: model:ir.ui.menu,name:project_scrum.menu_action_meeting_form
msgid "Scrum Meetings"
-msgstr ""
+msgstr "Reuniões de Scrum"
#. module: project_scrum
#: help:project.scrum.product.backlog,expected_hours:0
msgid "Estimated total time to do the Backlog"
-msgstr ""
+msgstr "Tempo total estimado para realizar o Backlog"
#. module: project_scrum
#: help:project.scrum.backlog.merge,project_id:0
msgid "Select project for the new product backlog"
-msgstr ""
+msgstr "Selecione o projeto para o novo Backlog de Produto"
#. module: project_scrum
#: view:project.scrum.backlog.merge:0
msgid "Merge"
-msgstr ""
+msgstr "Mesclar"
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_sprint_backlog_open
@@ -754,7 +795,7 @@ msgstr "Precisão do Backlog"
#: view:project.scrum.backlog.create.task:0
#: view:project.scrum.product.backlog:0
msgid "Convert to Task"
-msgstr ""
+msgstr "Converter para Tarefa"
#. module: project_scrum
#: help:project.scrum.sprint,project_id:0
@@ -773,20 +814,20 @@ msgstr "Seqüência"
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Send to Product Owner"
-msgstr ""
+msgstr "Enviar para o Dono do Produto"
#. module: project_scrum
#: view:board.board:0
#: model:ir.actions.act_window,name:project_scrum.action_view_backlog_progress_graph
#: view:project.scrum.product.backlog:0
msgid "Backlog Progress"
-msgstr ""
+msgstr "Progresso do Backlog"
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:301
#, python-format
msgid "Email notification could not be sent to the scrum master %s"
-msgstr ""
+msgstr "Notificação de Email não pode ser enviada para o Scrum Master %s"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
@@ -806,7 +847,7 @@ msgstr "Cancelar"
#: view:project.scrum.product.backlog:0
#: view:project.scrum.sprint:0
msgid "Close"
-msgstr ""
+msgstr "Fechar"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
@@ -825,7 +866,7 @@ msgstr "Horas efetivas"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Information"
-msgstr ""
+msgstr "Informação"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
@@ -835,7 +876,7 @@ msgstr "Horas Restantes"
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Responsible"
-msgstr ""
+msgstr "Responsável"
#. module: project_scrum
#: field:project.scrum.product.backlog,name:0
@@ -848,17 +889,17 @@ msgstr "Característica"
#: view:project.scrum.sprint:0
#: view:project.task:0
msgid "Current"
-msgstr ""
+msgstr "Atual"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "My Backlogs"
-msgstr ""
+msgstr "Meus Backlogs"
#. module: project_scrum
#: view:project.scrum.email:0
msgid "Send Email for Scrum Meeting Details"
-msgstr ""
+msgstr "Enviar email para Detalhes da Reunião Scrum"
#. module: project_scrum
#: model:ir.actions.act_window,help:project_scrum.action_product_backlog_form
@@ -868,6 +909,11 @@ msgid ""
"can be planified in a development sprint and may be split into several "
"tasks. The product backlog is managed by the product owner of the project."
msgstr ""
+"A metodologia ágil Scrum é usada em projetos de desenvolvimento de software. "
+" O Backlog de Produto é a lista de características a ser implementadas. Um "
+"Backlog de Produto pode ser planejado em um Sprint de desenvolvimento e pode "
+"ser quebrado em várias tarefas. O Backlog de Produto é gerenciado pelo Dono "
+"do Produto"
#. module: project_scrum
#: model:process.transition,name:project_scrum.process_transition_backlogtask0
@@ -893,7 +939,7 @@ msgstr "Reunião de Scrum"
#: model:ir.actions.report.xml,name:project_scrum.report_scrum_sprint_burndown_chart
#: view:project.scrum.sprint:0
msgid "Burndown Chart"
-msgstr ""
+msgstr "Burndown Chart"
#. module: project_scrum
#: view:project.scrum.sprint:0
@@ -903,7 +949,7 @@ msgstr "Reuniões Diárias"
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Expected hours"
-msgstr ""
+msgstr "Horas Esperadas"
#. module: project_scrum
#: field:project.project,sprint_size:0
@@ -913,7 +959,7 @@ msgstr "Dias do Sprint"
#. module: project_scrum
#: help:project.scrum.email,product_owner_email:0
msgid "Email Id of Product Owner"
-msgstr ""
+msgstr "Id do Email do Dono do Produto"
#. module: project_scrum
#: field:project.scrum.sprint,progress:0
@@ -928,6 +974,10 @@ msgid ""
" \n"
"I am sending you Daily Meeting Details of date %s for the Sprint %s\n"
msgstr ""
+"Olá %s,\n"
+"\n"
+"Estou lhe enviando os Detalhes da Reunião Diária da data %s para o Sprint "
+"%s\n"
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:325
@@ -942,6 +992,14 @@ msgid ""
"*Blocks encountered:\n"
"_______________________ %s"
msgstr ""
+"\n"
+"*Tarefas desde ontem:\n"
+"_______________________%s\n"
+"*Tarefas para Hoje:\n"
+"_______________________ %s\n"
+"\n"
+"*Bloqueios encontrados:\n"
+"_______________________ %s"
#. module: project_scrum
#: help:project.scrum.product.backlog,active:0
@@ -949,11 +1007,13 @@ msgid ""
"If Active field is set to true, it will allow you to hide the product "
"backlog without removing it."
msgstr ""
+"Se o campo Ativo estiver ajustado para verdadeiro, permitirá esconder o "
+"Backlog de Produto sem removê-lo."
#. module: project_scrum
#: help:project.scrum.product.backlog,task_hours:0
msgid "Estimated time of the total hours of the tasks"
-msgstr ""
+msgstr "Tempo estimado do total de horas das tarefas"
#. module: project_scrum
#: view:project.project:0
@@ -963,12 +1023,12 @@ msgstr "Dados do Scrum"
#. module: project_scrum
#: field:project.project,scrum:0
msgid "Is a Scrum Project"
-msgstr ""
+msgstr "É um Projeto Scrum"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Edit"
-msgstr ""
+msgstr "Editar"
#. module: project_scrum
#: field:project.scrum.product.backlog,tasks_id:0
@@ -978,12 +1038,12 @@ msgstr "Detalhes das Tarefas"
#. module: project_scrum
#: model:ir.model,name:project_scrum.model_postpone_wizard
msgid "postpone.wizard"
-msgstr ""
+msgstr "postpone.wizard"
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Total Planned Hours"
-msgstr ""
+msgstr "Horas Totais Planejadas"
#. module: project_scrum
#: view:project.scrum.backlog.merge:0
@@ -991,39 +1051,43 @@ msgid ""
"This wizard merge backlogs and create one new backlog with draft state (Old "
"backlogs Will be deleted). And it also merge old tasks from backlogs"
msgstr ""
+"Este assistente mescla Backlogs e cria um novo Backlog no estado Rascunho "
+"(Antigos Backlogs serão deletados). E isto também mescla antigas tarefas dos "
+"Backlogs."
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:303
#, python-format
msgid "Please provide email address for scrum master defined on sprint."
msgstr ""
+"Favor providenciar endereço de email do Scrum Master definido no Sprint"
#. module: project_scrum
#: view:project.scrum.backlog.merge:0
msgid "Select the project for merged backlogs"
-msgstr ""
+msgstr "Selecione o projeto para Backlogs mesclados"
#. module: project_scrum
#: view:board.board:0
#: model:ir.actions.act_window,name:project_scrum.action_view_my_scrum_sprint_tree
msgid "My Sprint"
-msgstr ""
+msgstr "Meu Sprint"
#. module: project_scrum
#: field:project.scrum.product.backlog,effective_hours:0
msgid "Spent Hours"
-msgstr ""
+msgstr "Horas Gastas"
#. module: project_scrum
#: help:project.scrum.product.backlog,effective_hours:0
msgid "Computed using the sum of the time spent on every related tasks"
-msgstr ""
+msgstr "Computado usando a soma do tempo gasto em cada tarefa relacionada"
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.open_board_project_scrum
#: model:ir.ui.menu,name:project_scrum.menu_deshboard_scurm
msgid "Scrum Dashboard"
-msgstr ""
+msgstr "Painel Scrum"
#. module: project_scrum
#: model:ir.model,name:project_scrum.model_project_scrum_sprint
@@ -1033,31 +1097,31 @@ msgstr ""
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Feature Description"
-msgstr ""
+msgstr "Descrição da Característica"
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_backlog_merger.py:71
#, python-format
msgid "Please select any Project."
-msgstr ""
+msgstr "Favor selecionar algum Projeto"
#. module: project_scrum
#: code:addons/project_scrum/wizard/project_scrum_email.py:97
#, python-format
msgid "Thank you,"
-msgstr ""
+msgstr "Obrigado"
#. module: project_scrum
#: code:addons/project_scrum/project_scrum.py:90
#, python-format
msgid "The sprint '%s' has been closed."
-msgstr ""
+msgstr "O Sprint '%s' foi fechado."
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_scrum_backlog_to_sprint
#: view:project.scrum.backlog.assign.sprint:0
msgid "Assign Sprint"
-msgstr ""
+msgstr "Atribuir Sprint"
#. module: project_scrum
#: field:project.scrum.backlog.create.task,user_id:0
@@ -1067,7 +1131,7 @@ msgstr "Atribuir para"
#. module: project_scrum
#: view:postpone.wizard:0
msgid "Are you sure to postpone Backlog ?"
-msgstr ""
+msgstr "Tem certeza de adiar Backlog"
#. module: project_scrum
#: field:project.scrum.backlog.assign.sprint,sprint_id:0
@@ -1084,7 +1148,7 @@ msgstr "Sprint"
#: code:addons/project_scrum/wizard/project_scrum_backlog_merger.py:39
#, python-format
msgid "Please select at least two product Backlogs"
-msgstr ""
+msgstr "Favor selecionar no mínimo dois Backlogs de Produto"
#. module: project_scrum
#: field:project.scrum.sprint,review:0
diff --git a/addons/project_scrum/project_scrum_view.xml b/addons/project_scrum/project_scrum_view.xml
index 4622bd305c7..ddf74eb2e93 100644
--- a/addons/project_scrum/project_scrum_view.xml
+++ b/addons/project_scrum/project_scrum_view.xml
@@ -431,7 +431,7 @@
-
+
diff --git a/addons/purchase/i18n/es.po b/addons/purchase/i18n/es.po
index 16e79d63699..c8fc84d318e 100644
--- a/addons/purchase/i18n/es.po
+++ b/addons/purchase/i18n/es.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
-"PO-Revision-Date: 2011-01-14 09:43+0000\n"
-"Last-Translator: Alberto Luengo Cabanillas (Pexego) \n"
+"PO-Revision-Date: 2011-10-16 23:04+0000\n"
+"Last-Translator: mgaja (GrupoIsep.com) \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 05:02+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-17 04:43+0000\n"
+"X-Generator: Launchpad (build 14155)\n"
#. module: purchase
#: model:process.transition,note:purchase.process_transition_confirmingpurchaseorder0
@@ -84,7 +84,7 @@ msgstr ""
#. module: purchase
#: selection:purchase.order,invoice_method:0
msgid "From Reception"
-msgstr ""
+msgstr "En la recepción"
#. module: purchase
#: view:purchase.order:0
@@ -998,13 +998,13 @@ msgstr "Para ser revisado por el contable."
#: model:ir.actions.act_window,name:purchase.purchase_line_form_action2
#: model:ir.ui.menu,name:purchase.menu_purchase_line_order_draft
msgid "On Purchase Order Line"
-msgstr ""
+msgstr "En la línea de órdenes de compra"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.action_picking_tree4_picking_to_invoice
#: model:ir.ui.menu,name:purchase.action_picking_tree4_picking_to_invoice
msgid "On Receptions"
-msgstr ""
+msgstr "en recepciones"
#. module: purchase
#: report:purchase.order:0
diff --git a/addons/purchase/report/purchase_report_view.xml b/addons/purchase/report/purchase_report_view.xml
index d0b0c13c211..f947857a016 100644
--- a/addons/purchase/report/purchase_report_view.xml
+++ b/addons/purchase/report/purchase_report_view.xml
@@ -99,8 +99,8 @@
-
-
+
+
diff --git a/addons/purchase_analytic_plans/i18n/sr@latin.po b/addons/purchase_analytic_plans/i18n/sr@latin.po
index a831cc55c07..6378f57f778 100644
--- a/addons/purchase_analytic_plans/i18n/sr@latin.po
+++ b/addons/purchase_analytic_plans/i18n/sr@latin.po
@@ -8,39 +8,39 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-03 16:58+0000\n"
-"PO-Revision-Date: 2010-12-23 10:59+0000\n"
-"Last-Translator: qdp (OpenERP) \n"
+"PO-Revision-Date: 2011-10-13 15:29+0000\n"
+"Last-Translator: Milan Milosevic \n"
"Language-Team: Serbian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 04:55+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: purchase_analytic_plans
#: model:ir.model,name:purchase_analytic_plans.model_purchase_order_line
msgid "Purchase Order Line"
-msgstr "Linija Narudžbenica"
+msgstr "Red nabavnog naloga"
#. module: purchase_analytic_plans
#: sql_constraint:purchase.order:0
msgid "Order Reference must be unique !"
-msgstr ""
+msgstr "Referenca nabavke mora biti jedinstvena !"
#. module: purchase_analytic_plans
#: field:purchase.order.line,analytics_id:0
msgid "Analytic Distribution"
-msgstr "Analitička Distribucija"
+msgstr "Analitička distribucija"
#. module: purchase_analytic_plans
#: model:ir.model,name:purchase_analytic_plans.model_purchase_order
msgid "Purchase Order"
-msgstr "Narudžbenica"
+msgstr "Nabavni nalog"
#. module: purchase_analytic_plans
#: model:ir.module.module,shortdesc:purchase_analytic_plans.module_meta_information
msgid "Purchase Analytic Distribution Management"
-msgstr "Upravljanje Analitickom Distribucijom Nabavke"
+msgstr "Uređivanje analitičke distribucije nabavke"
#. module: purchase_analytic_plans
#: model:ir.module.module,description:purchase_analytic_plans.module_meta_information
@@ -49,6 +49,9 @@ msgid ""
" The base module to manage analytic distribution and purchase orders.\n"
" "
msgstr ""
+"\n"
+" Osnovni modul za uređivanje analitičke distribucije i naloga nabavke.\n"
+" "
#~ msgid "Invalid XML for View Architecture!"
#~ msgstr "Nevažeći XML za pregled arhitekture"
diff --git a/addons/sale/i18n/et.po b/addons/sale/i18n/et.po
index a54fadaee91..b28b1290c6a 100644
--- a/addons/sale/i18n/et.po
+++ b/addons/sale/i18n/et.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev_rc3\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
-"PO-Revision-Date: 2010-12-15 21:31+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
+"PO-Revision-Date: 2011-10-11 18:12+0000\n"
+"Last-Translator: Aare Vesi \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 05:21+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-12 04:40+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: sale
#: view:sale.order:0
@@ -148,7 +148,7 @@ msgstr "Maksmine enne kohaletoimetamist"
#: code:addons/sale/wizard/sale_make_invoice.py:42
#, python-format
msgid "Warning !"
-msgstr ""
+msgstr "Hoiatus!"
#. module: sale
#: report:sale.order:0
@@ -190,7 +190,7 @@ msgstr ""
#: view:sale.report:0
#: field:sale.report,partner_id:0
msgid "Partner"
-msgstr ""
+msgstr "Partner"
#. module: sale
#: view:sale.order:0
@@ -281,7 +281,7 @@ msgstr ""
#. module: sale
#: view:sale.order:0
msgid "Dates"
-msgstr ""
+msgstr "Kuupäevad"
#. module: sale
#: model:process.transition,note:sale.process_transition_invoiceafterdelivery0
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index ef3734e849f..d0a3ccbf050 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -25,6 +25,7 @@ import time
import pooler
from osv import fields, osv
from tools.translate import _
+from tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
import decimal_precision as dp
import netsvc
@@ -268,7 +269,7 @@ class sale_order(osv.osv):
}
_defaults = {
'picking_policy': 'direct',
- 'date_order': lambda *a: time.strftime('%Y-%m-%d'),
+ 'date_order': lambda *a: time.strftime(DEFAULT_SERVER_DATE_FORMAT),
'order_policy': 'manual',
'state': 'draft',
'user_id': lambda obj, cr, uid, context: uid,
@@ -435,7 +436,7 @@ class sale_order(osv.osv):
}
inv.update(self._inv_get(cr, uid, order))
inv_id = inv_obj.create(cr, uid, inv, context=context)
- data = inv_obj.onchange_payment_term_date_invoice(cr, uid, [inv_id], pay_term, time.strftime('%Y-%m-%d'))
+ data = inv_obj.onchange_payment_term_date_invoice(cr, uid, [inv_id], pay_term, time.strftime(DEFAULT_SERVER_DATE_FORMAT))
if data.get('value', False):
inv_obj.write(cr, uid, [inv_id], data['value'], context=context)
inv_obj.button_compute(cr, uid, [inv_id])
@@ -619,9 +620,9 @@ class sale_order(osv.osv):
def action_wait(self, cr, uid, ids, *args):
for o in self.browse(cr, uid, ids):
if (o.order_policy == 'manual'):
- self.write(cr, uid, [o.id], {'state': 'manual', 'date_confirm': time.strftime('%Y-%m-%d')})
+ self.write(cr, uid, [o.id], {'state': 'manual', 'date_confirm': time.strftime(DEFAULT_SERVER_DATE_FORMAT)})
else:
- self.write(cr, uid, [o.id], {'state': 'progress', 'date_confirm': time.strftime('%Y-%m-%d')})
+ self.write(cr, uid, [o.id], {'state': 'progress', 'date_confirm': time.strftime(DEFAULT_SERVER_DATE_FORMAT)})
self.pool.get('sale.order.line').button_confirm(cr, uid, [x.id for x in o.order_line])
message = _("The quotation '%s' has been converted to a sales order.") % (o.name,)
self.log(cr, uid, o.id, message)
@@ -673,113 +674,144 @@ class sale_order(osv.osv):
return False
return canceled
- def action_ship_create(self, cr, uid, ids, *args):
- wf_service = netsvc.LocalService("workflow")
- picking_id = False
- move_obj = self.pool.get('stock.move')
- proc_obj = self.pool.get('procurement.order')
- company = self.pool.get('res.users').browse(cr, uid, uid).company_id
- for order in self.browse(cr, uid, ids, context={}):
- proc_ids = []
- output_id = order.shop_id.warehouse_id.lot_output_id.id
- picking_id = False
- for line in order.order_line:
- proc_id = False
- date_planned = datetime.strptime(order.date_order, '%Y-%m-%d') + relativedelta(days=line.delay or 0.0)
- date_planned = (date_planned - timedelta(days=company.security_lead)).strftime('%Y-%m-%d %H:%M:%S')
+ def _prepare_order_line_procurement(self, cr, uid, order, line, move_id, date_planned, *args):
+ return {
+ 'name': line.name,
+ 'origin': order.name,
+ 'date_planned': date_planned,
+ 'product_id': line.product_id.id,
+ 'product_qty': line.product_uom_qty,
+ 'product_uom': line.product_uom.id,
+ 'product_uos_qty': (line.product_uos and line.product_uos_qty)\
+ or line.product_uom_qty,
+ 'product_uos': (line.product_uos and line.product_uos.id)\
+ or line.product_uom.id,
+ 'location_id': order.shop_id.warehouse_id.lot_stock_id.id,
+ 'procure_method': line.type,
+ 'move_id': move_id,
+ 'property_ids': [(6, 0, [x.id for x in line.property_ids])],
+ 'company_id': order.company_id.id,
+ 'sale_line_id': line.id,
+ }
- if line.state == 'done':
- continue
- move_id = False
- if line.product_id and line.product_id.product_tmpl_id.type in ('product', 'consu'):
- location_id = order.shop_id.warehouse_id.lot_stock_id.id
+ def _prepare_order_line_move(self, cr, uid, order, line, picking_id, date_planned, *args):
+ location_id = order.shop_id.warehouse_id.lot_stock_id.id
+ output_id = order.shop_id.warehouse_id.lot_output_id.id
+ return {
+ 'name': line.name[:64],
+ 'picking_id': picking_id,
+ 'product_id': line.product_id.id,
+ 'date': date_planned,
+ 'date_expected': date_planned,
+ 'product_qty': line.product_uom_qty,
+ 'product_uom': line.product_uom.id,
+ 'product_uos_qty': line.product_uos_qty,
+ 'product_uos': (line.product_uos and line.product_uos.id)\
+ or line.product_uom.id,
+ 'product_packaging': line.product_packaging.id,
+ 'address_id': line.address_allotment_id.id or order.partner_shipping_id.id,
+ 'location_id': location_id,
+ 'location_dest_id': output_id,
+ 'sale_line_id': line.id,
+ 'tracking_id': False,
+ 'state': 'draft',
+ #'state': 'waiting',
+ 'note': line.notes,
+ 'company_id': order.company_id.id,
+ 'price_unit': line.product_id.standard_price or 0.0
+ }
+
+ def _prepare_order_picking(self, cr, uid, order, *args):
+ pick_name = self.pool.get('ir.sequence').get(cr, uid, 'stock.picking.out')
+ return {
+ 'name': pick_name,
+ 'origin': order.name,
+ 'type': 'out',
+ 'state': 'auto',
+ 'move_type': order.picking_policy,
+ 'sale_id': order.id,
+ 'address_id': order.partner_shipping_id.id,
+ 'note': order.note,
+ 'invoice_state': (order.order_policy=='picking' and '2binvoiced') or 'none',
+ 'company_id': order.company_id.id,
+ }
+
+ def _create_pickings_and_procurements(self, cr, uid, order, order_lines, picking_id=False, *args):
+ """Create the required procurements to supply sale order lines, also connecting
+ the procurements to appropriate stock moves in order to bring the goods to the
+ sale order's requested location.
+
+ If ``picking_id`` is provided, the stock moves will be added to it, otherwise
+ a standard outgoing picking will be created to wrap the stock moves, as returned
+ by :meth:`~._prepare_order_picking`.
+
+ Modules that wish to customize the procurements or partition the stock moves over
+ multiple stock pickings may override this method and call ``super()`` with
+ different subsets of ``order_lines`` and/or preset ``picking_id`` values.
+
+ :param browse_record order: sale order to which the order lines belong
+ :param list(browse_record) order_lines: sale order line records to procure
+ :param int picking_id: optional ID of a stock picking to which the created stock moves
+ will be added. A new picking will be created if ommitted.
+ :return: True
+ """
+ proc_ids = []
+ for line in order_lines:
+ if line.state == 'done':
+ continue
+
+ date_planned = datetime.strptime(order.date_order, DEFAULT_SERVER_DATE_FORMAT) + relativedelta(days=line.delay or 0.0)
+ date_planned = (date_planned - timedelta(days=order.company_id.security_lead)).strftime(DEFAULT_SERVER_DATETIME_FORMAT)
+
+ if line.product_id:
+ if line.product_id.product_tmpl_id.type in ('product', 'consu'):
if not picking_id:
- pick_name = self.pool.get('ir.sequence').get(cr, uid, 'stock.picking.out')
- picking_id = self.pool.get('stock.picking').create(cr, uid, {
- 'name': pick_name,
- 'origin': order.name,
- 'type': 'out',
- 'state': 'auto',
- 'move_type': order.picking_policy,
- 'sale_id': order.id,
- 'address_id': order.partner_shipping_id.id,
- 'note': order.note,
- 'invoice_state': (order.order_policy=='picking' and '2binvoiced') or 'none',
- 'company_id': order.company_id.id,
- })
- move_id = self.pool.get('stock.move').create(cr, uid, {
- 'name': line.name[:64],
- 'picking_id': picking_id,
- 'product_id': line.product_id.id,
- 'date': date_planned,
- 'date_expected': date_planned,
- 'product_qty': line.product_uom_qty,
- 'product_uom': line.product_uom.id,
- 'product_uos_qty': line.product_uos_qty,
- 'product_uos': (line.product_uos and line.product_uos.id)\
- or line.product_uom.id,
- 'product_packaging': line.product_packaging.id,
- 'address_id': line.address_allotment_id.id or order.partner_shipping_id.id,
- 'location_id': location_id,
- 'location_dest_id': output_id,
- 'sale_line_id': line.id,
- 'tracking_id': False,
- 'state': 'draft',
- #'state': 'waiting',
- 'note': line.notes,
- 'company_id': order.company_id.id,
- 'price_unit': line.product_id.standard_price or 0.0
- })
-
- if line.product_id:
- proc_id = self.pool.get('procurement.order').create(cr, uid, {
- 'name': line.name,
- 'origin': order.name,
- 'date_planned': date_planned,
- 'product_id': line.product_id.id,
- 'product_qty': line.product_uom_qty,
- 'product_uom': line.product_uom.id,
- 'product_uos_qty': (line.product_uos and line.product_uos_qty)\
- or line.product_uom_qty,
- 'product_uos': (line.product_uos and line.product_uos.id)\
- or line.product_uom.id,
- 'location_id': order.shop_id.warehouse_id.lot_stock_id.id,
- 'procure_method': line.type,
- 'move_id': move_id,
- 'property_ids': [(6, 0, [x.id for x in line.property_ids])],
- 'company_id': order.company_id.id,
- 'sale_line_id': line.id,
- })
- proc_ids.append(proc_id)
- self.pool.get('sale.order.line').write(cr, uid, [line.id], {'procurement_id': proc_id})
- if order.state == 'shipping_except':
- for pick in order.picking_ids:
- for move in pick.move_lines:
- if move.state == 'cancel':
- mov_ids = move_obj.search(cr, uid, [('state', '=', 'cancel'),('sale_line_id', '=', line.id),('picking_id', '=', pick.id)])
- if mov_ids:
- for mov in move_obj.browse(cr, uid, mov_ids):
- move_obj.write(cr, uid, [move_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty})
- proc_obj.write(cr, uid, [proc_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty})
+ picking_id = self.pool.get('stock.picking').create(cr, uid, self._prepare_order_picking(cr, uid, order, args))
+ move_id = self.pool.get('stock.move').create(cr, uid, self._prepare_order_line_move(cr, uid, order, line, picking_id, date_planned, args))
+ else:
+ # a service has no stock move
+ move_id = False
- val = {}
+ proc_id = self.pool.get('procurement.order').create(cr, uid, self._prepare_order_line_procurement(cr, uid, order, line, move_id, date_planned, args))
+ proc_ids.append(proc_id)
+ line.write({'procurement_id': proc_id})
- if picking_id:
- wf_service.trg_validate(uid, 'stock.picking', picking_id, 'button_confirm', cr)
+ # FIXME: deals with potentially cancelled shipments, seems broken, see below
+ # FIXME: was introduced by revid: mtr@mtr-20101125100355-0a1b7m792t63mssv
+ if order.state == 'shipping_except':
+ for pick in order.picking_ids:
+ for move in pick.move_lines:
+ if move.state == 'cancel':
+ mov_ids = self.pool.get('stock.move').search(cr, uid, [('state', '=', 'cancel'),('sale_line_id', '=', line.id),('picking_id', '=', pick.id)])
+ if mov_ids:
+ for mov in move_obj.browse(cr, uid, mov_ids):
+ # FIXME: the following seems broken: what if move_id doesn't exist? What if there are several mov_ids? Shouldn't that be a sum?
+ self.pool.get('stock.move').write(cr, uid, [move_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty})
+ self.pool.get('procurement.order').write(cr, uid, [proc_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty})
- for proc_id in proc_ids:
- wf_service.trg_validate(uid, 'procurement.order', proc_id, 'button_confirm', cr)
+ wf_service = netsvc.LocalService("workflow")
+ if picking_id:
+ wf_service.trg_validate(uid, 'stock.picking', picking_id, 'button_confirm', cr)
- if order.state == 'shipping_except':
- val['state'] = 'progress'
- val['shipped'] = False
+ for proc_id in proc_ids:
+ wf_service.trg_validate(uid, 'procurement.order', proc_id, 'button_confirm', cr)
- if (order.order_policy == 'manual'):
- for line in order.order_line:
- if (not line.invoiced) and (line.state not in ('cancel', 'draft')):
- val['state'] = 'manual'
- break
- self.write(cr, uid, [order.id], val)
+ val = {}
+ if order.state == 'shipping_except':
+ val['state'] = 'progress'
+ val['shipped'] = False
+
+ if (order.order_policy == 'manual'):
+ for line in order.order_line:
+ if (not line.invoiced) and (line.state not in ('cancel', 'draft')):
+ val['state'] = 'manual'
+ break
+ order.write(val)
+ return True
+
+ def action_ship_create(self, cr, uid, ids, *args):
+ for order in self.browse(cr, uid, ids, context={}):
+ self._create_pickings_and_procurements(cr, uid, order, order.order_line, None, args)
return True
def action_ship_end(self, cr, uid, ids, context=None):
@@ -814,7 +846,7 @@ class sale_order(osv.osv):
'description': 'Order '+str(inv['id']),
'document': '',
'partner_id': part,
- 'date': time.strftime('%Y-%m-%d'),
+ 'date': time.strftime(DEFAULT_SERVER_DATE_FORMAT),
'user_id': uid,
'partner_type': partnertype,
'probability': 1.0,
@@ -1063,7 +1095,7 @@ class sale_order_line(osv.osv):
'product_uos_qty': qty}, 'domain': {'product_uom': [],
'product_uos': []}}
if not date_order:
- date_order = time.strftime('%Y-%m-%d')
+ date_order = time.strftime(DEFAULT_SERVER_DATE_FORMAT)
result = {}
product_obj = product_obj.browse(cr, uid, product, context=context)
diff --git a/addons/sale_analytic_plans/i18n/sr@latin.po b/addons/sale_analytic_plans/i18n/sr@latin.po
index 97439e1d671..6890889b908 100644
--- a/addons/sale_analytic_plans/i18n/sr@latin.po
+++ b/addons/sale_analytic_plans/i18n/sr@latin.po
@@ -8,24 +8,24 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-03 16:58+0000\n"
-"PO-Revision-Date: 2010-12-23 14:51+0000\n"
-"Last-Translator: Olivier Dony (OpenERP) \n"
+"PO-Revision-Date: 2011-10-13 15:11+0000\n"
+"Last-Translator: Milan Milosevic \n"
"Language-Team: Serbian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 05:35+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: sale_analytic_plans
#: field:sale.order.line,analytics_id:0
msgid "Analytic Distribution"
-msgstr "Analitička Distribucija"
+msgstr "Analitička distribucija"
#. module: sale_analytic_plans
#: model:ir.module.module,shortdesc:sale_analytic_plans.module_meta_information
msgid "Sales Analytic Distribution Management"
-msgstr "Menadzment Analiticke Distribucije Prodaje"
+msgstr "Uređivanje analitičke distribucije prodaje"
#. module: sale_analytic_plans
#: model:ir.module.module,description:sale_analytic_plans.module_meta_information
@@ -34,11 +34,15 @@ msgid ""
" The base module to manage analytic distribution and sales orders.\n"
" "
msgstr ""
+"\n"
+" Osnovni modul za uređivanje analitičke distribucije prodaje i redosleda "
+"narudžbina.\n"
+" "
#. module: sale_analytic_plans
#: model:ir.model,name:sale_analytic_plans.model_sale_order_line
msgid "Sales Order Line"
-msgstr ""
+msgstr "Redosled narudžbina"
#~ msgid "Invalid XML for View Architecture!"
#~ msgstr "Nevažeći XML za pregled arhitekture"
diff --git a/addons/sale_mrp/i18n/sr@latin.po b/addons/sale_mrp/i18n/sr@latin.po
index 58db6cda33e..37af72071f0 100644
--- a/addons/sale_mrp/i18n/sr@latin.po
+++ b/addons/sale_mrp/i18n/sr@latin.po
@@ -8,29 +8,29 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
-"PO-Revision-Date: 2011-03-05 11:29+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2011-10-13 15:09+0000\n"
+"Last-Translator: Milan Milosevic \n"
"Language-Team: Serbian Latin \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 05:47+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: sale_mrp
#: help:mrp.production,sale_ref:0
msgid "Indicate the Customer Reference from sales order."
-msgstr ""
+msgstr "Označite referencu kupca za prodajni nalog."
#. module: sale_mrp
#: field:mrp.production,sale_ref:0
msgid "Sales Reference"
-msgstr ""
+msgstr "Referenca prodaje"
#. module: sale_mrp
#: model:ir.model,name:sale_mrp.model_mrp_production
msgid "Manufacturing Order"
-msgstr ""
+msgstr "Nalog proizvodnje"
#. module: sale_mrp
#: model:ir.module.module,description:sale_mrp.module_meta_information
@@ -44,23 +44,30 @@ msgid ""
" It adds sales name and sales Reference on production order\n"
" "
msgstr ""
+"\n"
+" Ovaj modul omogučava korisniku instaliranje mrp i prodajnih modula\n"
+" u dogledno vreme. U osnovi, upotrebljava se kad želimo pratiti pravljenje "
+"proizvodnih\n"
+" naloga iz naloga za prodaju.\n"
+" Dodaje naziv prodaje i referencu prodaje na proizvodni nalog\n"
+" "
#. module: sale_mrp
#: field:mrp.production,sale_name:0
msgid "Sales Name"
-msgstr ""
+msgstr "Naziv prodaje"
#. module: sale_mrp
#: model:ir.module.module,shortdesc:sale_mrp.module_meta_information
msgid "Sales and MRP Management"
-msgstr ""
+msgstr "Prodaja i MRP uređivanje"
#. module: sale_mrp
#: constraint:mrp.production:0
msgid "Order quantity cannot be negative or zero !"
-msgstr ""
+msgstr "Količina naloga ne može biti negativna ili nula !"
#. module: sale_mrp
#: help:mrp.production,sale_name:0
msgid "Indicate the name of sales order."
-msgstr ""
+msgstr "Označite naziv za prodajni nalog"
diff --git a/addons/stock/i18n/ca.po b/addons/stock/i18n/ca.po
index e81650afe12..76fe654668e 100644
--- a/addons/stock/i18n/ca.po
+++ b/addons/stock/i18n/ca.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
-"PO-Revision-Date: 2011-08-17 22:42+0000\n"
+"PO-Revision-Date: 2011-10-16 23:07+0000\n"
"Last-Translator: mgaja (GrupoIsep.com) \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-10-11 05:32+0000\n"
-"X-Generator: Launchpad (build 14123)\n"
+"X-Launchpad-Export-Date: 2011-10-17 04:43+0000\n"
+"X-Generator: Launchpad (build 14155)\n"
#. module: stock
#: field:product.product,track_outgoing:0
@@ -2269,7 +2269,7 @@ msgstr "Qtat futura"
#. module: stock
#: field:product.category,property_stock_valuation_account_id:0
msgid "Stock Valuation Account"
-msgstr ""
+msgstr "Compte de la valoració d'estoc"
#. module: stock
#: field:stock.move,note:0
diff --git a/addons/stock/i18n/et.po b/addons/stock/i18n/et.po
index c4190e60f74..0c9bc2de03e 100644
--- a/addons/stock/i18n/et.po
+++ b/addons/stock/i18n/et.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
-"PO-Revision-Date: 2010-10-30 15:49+0000\n"
-"Last-Translator: OpenERP Administrators \n"
+"PO-Revision-Date: 2011-10-11 18:14+0000\n"
+"Last-Translator: Aare Vesi \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-10-11 05:32+0000\n"
-"X-Generator: Launchpad (build 14123)\n"
+"X-Launchpad-Export-Date: 2011-10-12 04:39+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: stock
#: field:product.product,track_outgoing:0
@@ -47,7 +47,7 @@ msgstr ""
#. module: stock
#: field:stock.move.split.lines,action:0
msgid "Action"
-msgstr ""
+msgstr "Tegevus"
#. module: stock
#: view:stock.production.lot:0
@@ -63,7 +63,7 @@ msgstr ""
#. module: stock
#: view:stock.move:0
msgid "Today"
-msgstr ""
+msgstr "Täna"
#. module: stock
#: field:stock.production.lot.revision,indice:0
@@ -138,7 +138,7 @@ msgstr ""
#: view:report.stock.move:0
#: field:report.stock.move,day:0
msgid "Day"
-msgstr ""
+msgstr "Päev"
#. module: stock
#: view:stock.inventory:0
@@ -168,7 +168,7 @@ msgstr "Laopäevik"
#. module: stock
#: view:report.stock.move:0
msgid "Incoming"
-msgstr ""
+msgstr "Sissetulev"
#. module: stock
#: help:product.category,property_stock_account_output_categ:0
diff --git a/addons/stock/report/report_stock_view.xml b/addons/stock/report/report_stock_view.xml
index 829fae14b6b..fe49e8eae9f 100644
--- a/addons/stock/report/report_stock_view.xml
+++ b/addons/stock/report/report_stock_view.xml
@@ -38,7 +38,7 @@
+ domain="[('product_id.type','=', 'consu')]"/>
diff --git a/addons/subscription/i18n/et.po b/addons/subscription/i18n/et.po
index cb52a15396d..6190bcdec45 100644
--- a/addons/subscription/i18n/et.po
+++ b/addons/subscription/i18n/et.po
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
-"PO-Revision-Date: 2010-10-30 14:37+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
+"PO-Revision-Date: 2011-10-11 18:14+0000\n"
+"Last-Translator: Aare Vesi \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 04:58+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-12 04:39+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: subscription
#: field:subscription.subscription,doc_source:0
@@ -30,7 +30,7 @@ msgstr "Objekt"
#. module: subscription
#: view:subscription.subscription:0
msgid "This Week"
-msgstr ""
+msgstr "See nädal"
#. module: subscription
#: view:subscription.subscription:0
@@ -76,13 +76,13 @@ msgstr "Nädalad"
#. module: subscription
#: view:subscription.subscription:0
msgid "Today"
-msgstr ""
+msgstr "Täna"
#. module: subscription
#: code:addons/subscription/subscription.py:44
#, python-format
msgid "Error !"
-msgstr ""
+msgstr "Viga !"
#. module: subscription
#: model:ir.actions.act_window,name:subscription.action_subscription_form
@@ -265,7 +265,7 @@ msgstr "Väär"
#. module: subscription
#: view:subscription.subscription:0
msgid "Group By..."
-msgstr ""
+msgstr "Grupeeri..."
#. module: subscription
#: view:subscription.subscription:0
diff --git a/addons/survey/i18n/et.po b/addons/survey/i18n/et.po
index 727fa44a098..d58d104c052 100644
--- a/addons/survey/i18n/et.po
+++ b/addons/survey/i18n/et.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
-"PO-Revision-Date: 2010-05-13 09:26+0000\n"
-"Last-Translator: lyyser \n"
+"PO-Revision-Date: 2011-10-11 18:13+0000\n"
+"Last-Translator: Aare Vesi \n"
"Language-Team: Estonian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 05:44+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
+"X-Launchpad-Export-Date: 2011-10-12 04:40+0000\n"
+"X-Generator: Launchpad (build 14124)\n"
#. module: survey
#: view:survey.print:0
@@ -88,7 +88,7 @@ msgstr ""
#: view:survey.question:0
#: view:survey.request:0
msgid "Group By..."
-msgstr ""
+msgstr "Grupeeri..."
#. module: survey
#: view:survey.send.invitation.log:0
@@ -163,12 +163,12 @@ msgstr ""
#. module: survey
#: view:survey:0
msgid "Completed"
-msgstr ""
+msgstr "Valmis"
#. module: survey
#: selection:survey.question,required_type:0
msgid "Exactly"
-msgstr ""
+msgstr "Täpselt"
#. module: survey
#: view:survey:0
diff --git a/addons/warning/warning.py b/addons/warning/warning.py
index ab7a5926653..9f699ab9911 100644
--- a/addons/warning/warning.py
+++ b/addons/warning/warning.py
@@ -197,7 +197,7 @@ class sale_order_line(osv.osv):
def product_id_change(self, cr, uid, ids, pricelist, product, qty=0,
uom=False, qty_uos=0, uos=False, name='', partner_id=False,
lang=False, update_tax=True, date_order=False, packaging=False,
- fiscal_position=False, flag=False):
+ fiscal_position=False, flag=False, context=None):
warning = {}
if not product:
return {'value': {'th_weight' : 0, 'product_packaging': False,
@@ -232,7 +232,7 @@ class purchase_order_line(osv.osv):
_inherit = 'purchase.order.line'
def product_id_change(self,cr, uid, ids, pricelist, product, qty, uom,
partner_id, date_order=False, fiscal_position=False, date_planned=False,
- name=False, price_unit=False, notes=False):
+ name=False, price_unit=False, notes=False, context=None):
warning = {}
if not product:
return {'value': {'price_unit': 0.0, 'name':'','notes':'', 'product_uom' : False}, 'domain':{'product_uom':[]}}
diff --git a/addons/web_uservoice/LICENSE b/addons/web_uservoice/LICENSE
index 27a1a4cf453..ff64be448e9 100644
--- a/addons/web_uservoice/LICENSE
+++ b/addons/web_uservoice/LICENSE
@@ -1,5 +1,5 @@
OpenERP, Open Source Management Solution
-Copyright © 2010 OpenERP SA ().
+Copyright © 2010-2011 OpenERP SA ().
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
diff --git a/addons/web_uservoice/__init__.py b/addons/web_uservoice/__init__.py
index 723a87ab410..b0c3c528f28 100644
--- a/addons/web_uservoice/__init__.py
+++ b/addons/web_uservoice/__init__.py
@@ -1,7 +1,7 @@
##############################################################################
#
# OpenERP, Open Source Management Solution
-# Copyright (C) 2010 OpenERP s.a. ().
+# Copyright (C) 2010-2011 OpenERP s.a. ().
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -17,3 +17,4 @@
# along with this program. If not, see .
#
##############################################################################
+
diff --git a/addons/web_uservoice/__openerp__.py b/addons/web_uservoice/__openerp__.py
index 9cbff61ad54..65f953ed3d1 100644
--- a/addons/web_uservoice/__openerp__.py
+++ b/addons/web_uservoice/__openerp__.py
@@ -2,7 +2,7 @@
##############################################################################
#
# OpenERP, Open Source Management Solution
-# Copyright (C) 2010 OpenERP s.a. ().
+# Copyright (C) 2010-2011 OpenERP s.a. ().
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -20,7 +20,7 @@
##############################################################################
{
'name': 'Receive User Feedback',
- 'version': '1.0',
+ 'version': '2.0',
'category': 'Hidden',
'complexity': "easy",
'description': """
@@ -36,5 +36,8 @@ Invite OpenERP user feedback, powered by uservoice.
'installable': True,
'active': False,
'certificate': '0040452504963885',
- 'images': ['images/submit_an_idea.jpeg','images/web_uservoice_feedback.jpeg'],
+
+ 'js': ['static/src/js/web_uservoice.js'],
+ 'css': ['static/src/css/uservoice.css'],
+ 'images': ['static/src/img/submit_an_idea.jpeg', 'static/src/img/web_uservoice_feedback.jpeg'],
}
diff --git a/addons/web_uservoice/web/static/css/uservoice.css b/addons/web_uservoice/static/src/css/uservoice.css
similarity index 52%
rename from addons/web_uservoice/web/static/css/uservoice.css
rename to addons/web_uservoice/static/src/css/uservoice.css
index 9ca2af55678..665ccee7f6e 100644
--- a/addons/web_uservoice/web/static/css/uservoice.css
+++ b/addons/web_uservoice/static/src/css/uservoice.css
@@ -1,7 +1,7 @@
-#corner p.feedback a {
+div.header_corner div.feedback a {
/*color: #9a0404;*/
}
-#corner p.feedback img {
+div.header_corner div.feedback img {
vertical-align: middle;
margin-right: 0.5em;
}
diff --git a/addons/web_uservoice/static/src/js/web_uservoice.js b/addons/web_uservoice/static/src/js/web_uservoice.js
new file mode 100644
index 00000000000..a574652686f
--- /dev/null
+++ b/addons/web_uservoice/static/src/js/web_uservoice.js
@@ -0,0 +1,80 @@
+
+openerp.web_uservoice = function(instance) {
+
+var QWeb = instance.web.qweb;
+QWeb.add_template('/web_uservoice/static/src/xml/web_uservoice.xml');
+
+$(function() {
+ var src = ("https:" == document.location.protocol ? "https://" : "http://") + "cdn.uservoice.com/javascripts/widgets/tab.js";
+ $.getScript(src);
+});
+
+
+instance.web_uservoice.UserVoice = instance.web.Widget.extend({
+ template: 'Header-UserVoice',
+ default_forum: '77459',
+
+ init: function() {
+ this._super.apply(this, arguments);
+ this.uservoiceForums = {};
+ this.uservoiceOptions = {
+ key: 'openerpsa',
+ host: 'feedback.openerp.com',
+ forum: this.default_forum,
+ lang: 'en',
+ showTab: false
+ };
+
+ instance.webclient.menu.do_menu_click.add_first(this.do_menu_click);
+ },
+
+ start: function() {
+ this._super();
+
+ var self = this;
+ var forum_mapping = {
+ 'accounting': '87921',
+ 'administration': '87935',
+ 'human resources': '87923',
+ 'knowledge': '87927',
+ 'manufacturing': '87915',
+ 'marketing': '87925',
+ 'point of sale': '87929',
+ 'project': '87919',
+ 'purchases': '87911',
+ 'sales': '87907',
+ 'tools': '87933',
+ 'warehouse': '87913',
+ };
+
+ var ds = new instance.web.DataSetSearch(this, 'ir.ui.menu', {lang: 'NO_LANG'}, [['parent_id', '=', false]]);
+
+ ds.read_slice(['name'], null, function(result) {
+ _.each(result, function(menu) {
+ self.uservoiceForums[menu.id] = forum_mapping[menu.name.toLowerCase()] || self.default_forum;
+ });
+ });
+
+ this.$element.find('a').click(function(e) {
+ e.preventDefault();
+ UserVoice.Popin.show(self.uservoiceOptions);
+ return false;
+ });
+ },
+
+
+ do_menu_click: function($clicked_menu, manual) {
+ var id = $clicked_menu.attr('data-menu');
+ if (id) {
+ this.uservoiceOptions.forum = this.uservoiceForums[id] || this.default_forum;
+ }
+ },
+
+});
+
+
+instance.webclient.uservoice = new instance.web_uservoice.UserVoice(instance.webclient);
+instance.webclient.uservoice.prependTo('div.header_corner');
+
+};
+
diff --git a/addons/web_uservoice/static/src/xml/web_uservoice.xml b/addons/web_uservoice/static/src/xml/web_uservoice.xml
new file mode 100644
index 00000000000..e37ed2c17d3
--- /dev/null
+++ b/addons/web_uservoice/static/src/xml/web_uservoice.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
diff --git a/addons/web_uservoice/web/__init__.py b/addons/web_uservoice/web/__init__.py
deleted file mode 100644
index c651b91f353..00000000000
--- a/addons/web_uservoice/web/__init__.py
+++ /dev/null
@@ -1,22 +0,0 @@
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2010 OpenERP s.a. ().
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-import editors
-import controllers
-
diff --git a/addons/web_uservoice/web/controllers.py b/addons/web_uservoice/web/controllers.py
deleted file mode 100644
index 07376ee8fed..00000000000
--- a/addons/web_uservoice/web/controllers.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2010 OpenERP s.a. ().
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-
-from openerp.controllers import SecuredController
-from openobject import rpc
-from openobject.tools import expose
-import cherrypy
-
-class Root(SecuredController):
-
- _cp_path = "/openerp"
-
- @expose(mark_only=True)
- def menu(self, active=None, next=None):
- try:
- menu_id = int(active)
- except (TypeError, ValueError):
- menu_id = False
-
- menus = rpc.RPCProxy("ir.ui.menu")
- ids = menus.search([('parent_id', '=', False)])
- if next or active:
- if not menu_id and ids:
- menu_id = ids[0]
-
- menu = ''
- if menu_id:
- ctx = dict(lang='NO_LANG') # force loading original string even if the english have been translated...
- menu = menus.read([menu_id], ['name'], ctx)[0]['name'] or ''
-
- general_forum = 77459
- forum = {
- 'accounting': 87921,
- 'administration': 87935,
- 'human resources': 87923,
- 'knowledge': 87927,
- 'manufacturing': 87915,
- 'marketing': 87925,
- 'point of sale': 87929,
- 'project': 87919,
- 'purchases': 87911,
- 'sales': 87907,
- 'tools': 87933,
- 'warehouse': 87913,
- }.get(menu.lower().strip(), general_forum)
-
- cherrypy.request.uservoice_forum = forum
- return super(Root, self).menu(active, next)
-
-
diff --git a/addons/web_uservoice/web/editors.py b/addons/web_uservoice/web/editors.py
deleted file mode 100644
index 585bc3428f3..00000000000
--- a/addons/web_uservoice/web/editors.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2010-2011 OpenERP s.a. ().
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-import openobject.templating
-
-class BaseTemplateEditor(openobject.templating.TemplateEditor):
- templates = ['/openobject/controllers/templates/base.mako']
-
- def edit(self, template, template_text):
- output = super(BaseTemplateEditor, self).edit(template, template_text)
-
- end_head = output.index('')
-
- output = output[:end_head] + """
-
- """ + output[end_head:]
-
-
- end_body = output.index('