diff --git a/addons/account/account.py b/addons/account/account.py
index d0e9c501bb9..aced4041f13 100644
--- a/addons/account/account.py
+++ b/addons/account/account.py
@@ -368,16 +368,16 @@ class account_account(osv.osv):
'parent_id': fields.many2one('account.account', 'Parent', ondelete='cascade', domain=[('type','=','view')]),
'child_parent_ids': fields.one2many('account.account','parent_id','Children'),
'child_consol_ids': fields.many2many('account.account', 'account_account_consol_rel', 'child_id', 'parent_id', 'Consolidated Children'),
- 'child_id': fields.function(_get_child_ids, method=True, type='many2many', relation="account.account", string="Child Accounts"),
- 'balance': fields.function(__compute, digits_compute=dp.get_precision('Account'), method=True, string='Balance', multi='balance'),
- 'credit': fields.function(__compute, digits_compute=dp.get_precision('Account'), method=True, string='Credit', multi='balance'),
- 'debit': fields.function(__compute, digits_compute=dp.get_precision('Account'), method=True, string='Debit', multi='balance'),
+ 'child_id': fields.function(_get_child_ids, type='many2many', relation="account.account", string="Child Accounts"),
+ 'balance': fields.function(__compute, digits_compute=dp.get_precision('Account'), string='Balance', multi='balance'),
+ 'credit': fields.function(__compute, digits_compute=dp.get_precision('Account'), string='Credit', multi='balance'),
+ 'debit': fields.function(__compute, digits_compute=dp.get_precision('Account'), string='Debit', multi='balance'),
'reconcile': fields.boolean('Reconcile', help="Check this if the user is allowed to reconcile entries in this account."),
'shortcut': fields.char('Shortcut', size=12),
'tax_ids': fields.many2many('account.tax', 'account_account_tax_default_rel',
'account_id', 'tax_id', 'Default Taxes'),
'note': fields.text('Note'),
- 'company_currency_id': fields.function(_get_company_currency, method=True, type='many2one', relation='res.currency', string='Company Currency'),
+ 'company_currency_id': fields.function(_get_company_currency, type='many2one', relation='res.currency', string='Company Currency'),
'company_id': fields.many2one('res.company', 'Company', required=True),
'active': fields.boolean('Active', select=2, help="If the active field is set to False, it will allow you to hide the account without removing it."),
@@ -390,7 +390,7 @@ class account_account(osv.osv):
'manage this. So if you import from another software system you may have to use the rate at date. ' \
'Incoming transactions always use the rate at date.', \
required=True),
- 'level': fields.function(_get_level, string='Level', method=True, store=True, type='integer'),
+ 'level': fields.function(_get_level, string='Level', store=True, type='integer'),
}
_defaults = {
@@ -587,7 +587,7 @@ class account_journal_column(osv.osv):
_description = "Journal Column"
_columns = {
'name': fields.char('Column Name', size=64, required=True),
- 'field': fields.selection(_col_get, 'Field Name', method=True, required=True, size=32),
+ 'field': fields.selection(_col_get, 'Field Name', required=True, size=32),
'view_id': fields.many2one('account.journal.view', 'Journal View', select=True),
'sequence': fields.integer('Sequence', help="Gives the sequence order to journal column.", readonly=True),
'required': fields.boolean('Required'),
@@ -985,7 +985,7 @@ class account_journal_period(osv.osv):
'name': fields.char('Journal-Period Name', size=64, required=True),
'journal_id': fields.many2one('account.journal', 'Journal', required=True, ondelete="cascade"),
'period_id': fields.many2one('account.period', 'Period', required=True, ondelete="cascade"),
- 'icon': fields.function(_icon_get, method=True, string='Icon', type='char', size=32),
+ 'icon': fields.function(_icon_get, string='Icon', type='char', size=32),
'active': fields.boolean('Active', required=True, help="If the active field is set to False, it will allow you to hide the journal period without removing it."),
'state': fields.selection([('draft','Draft'), ('printed','Printed'), ('done','Done')], 'State', required=True, readonly=True,
help='When journal period is created. The state is \'Draft\'. If a report is printed it comes to \'Printed\' state. When all transactions are done, it comes in \'Done\' state.'),
@@ -1139,7 +1139,7 @@ class account_move(osv.osv):
'line_id': fields.one2many('account.move.line', 'move_id', 'Entries', states={'posted':[('readonly',True)]}),
'to_check': fields.boolean('To Review', help='Check this box if you are unsure of that journal entry and if you want to note it as \'to be reviewed\' by an accounting expert.'),
'partner_id': fields.related('line_id', 'partner_id', type="many2one", relation="res.partner", string="Partner", store=True),
- 'amount': fields.function(_amount_compute, method=True, string='Amount', digits_compute=dp.get_precision('Account'), type='float', fnct_search=_search_amount),
+ 'amount': fields.function(_amount_compute, string='Amount', digits_compute=dp.get_precision('Account'), type='float', fnct_search=_search_amount),
'date': fields.date('Date', required=True, states={'posted':[('readonly',True)]}, select=True),
'narration':fields.text('Narration'),
'company_id': fields.related('journal_id','company_id',type='many2one',relation='res.company',string='Company', store=True, readonly=True),
@@ -1646,8 +1646,8 @@ class account_tax_code(osv.osv):
'name': fields.char('Tax Case Name', size=64, required=True, translate=True),
'code': fields.char('Case Code', size=64),
'info': fields.text('Description'),
- 'sum': fields.function(_sum_year, method=True, string="Year Sum"),
- 'sum_period': fields.function(_sum_period, method=True, string="Period Sum"),
+ 'sum': fields.function(_sum_year, string="Year Sum"),
+ 'sum_period': fields.function(_sum_period, string="Period Sum"),
'parent_id': fields.many2one('account.tax.code', 'Parent Code', select=True),
'child_ids': fields.one2many('account.tax.code', 'parent_id', 'Child Codes'),
'line_ids': fields.one2many('account.move.line', 'tax_code_id', 'Lines'),
@@ -2502,7 +2502,7 @@ class account_tax_template(osv.osv):
'name': fields.char('Tax Name', size=64, required=True),
'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the taxes lines from lower sequences to higher ones. The order is important if you have a tax that has several tax children. In this case, the evaluation order is important."),
'amount': fields.float('Amount', required=True, digits=(14,4), help="For Tax Type percent enter % ratio between 0-1."),
- 'type': fields.selection( [('percent','Percent'), ('fixed','Fixed'), ('none','None'), ('code','Python Code')], 'Tax Type', required=True),
+ 'type': fields.selection( [('percent','Percent'), ('fixed','Fixed'), ('none','None'), ('code','Python Code'), ('balance','Balance')], 'Tax Type', required=True),
'applicable_type': fields.selection( [('true','True'), ('code','Python Code')], 'Applicable Type', required=True, help="If not applicable (computed through a Python code), the tax won't appear on the invoice."),
'domain':fields.char('Domain', size=32, help="This field is only used if you develop your own module allowing developers to create specific taxes in a custom domain."),
'account_collected_id':fields.many2one('account.account.template', 'Invoice Tax Account'),
diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py
index 54776e5c7e6..f712cc9ab0c 100644
--- a/addons/account/account_bank_statement.py
+++ b/addons/account/account_bank_statement.py
@@ -137,7 +137,7 @@ class account_bank_statement(osv.osv):
states={'confirm':[('readonly',True)]}),
'balance_end_real': fields.float('Ending Balance', digits_compute=dp.get_precision('Account'),
states={'confirm':[('readonly', True)]}),
- 'balance_end': fields.function(_end_balance, method=True, string='Balance'),
+ 'balance_end': fields.function(_end_balance, string='Balance'),
'company_id': fields.related('journal_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),
'line_ids': fields.one2many('account.bank.statement.line',
'statement_id', 'Statement lines',
@@ -149,7 +149,7 @@ class account_bank_statement(osv.osv):
states={'confirm': [('readonly', True)]}, readonly="1",
help='When new statement is created the state will be \'Draft\'. \
\n* And after getting confirmation from the bank it will be in \'Confirmed\' state.'),
- 'currency': fields.function(_currency, method=True, string='Currency',
+ 'currency': fields.function(_currency, string='Currency',
type='many2one', relation='res.currency'),
'account_id': fields.related('journal_id', 'default_debit_account_id', type='many2one', relation='account.account', string='Account used in this journal', readonly=True, help='used in statement reconciliation domain, but shouldn\'t be used elswhere.'),
}
diff --git a/addons/account/account_cash_statement.py b/addons/account/account_cash_statement.py
index 04e780ade30..982383ea2a7 100644
--- a/addons/account/account_cash_statement.py
+++ b/addons/account/account_cash_statement.py
@@ -58,7 +58,7 @@ class account_cashbox_line(osv.osv):
_columns = {
'pieces': fields.float('Values', digits_compute=dp.get_precision('Account')),
'number': fields.integer('Number'),
- 'subtotal': fields.function(_sub_total, method=True, string='Sub Total', type='float', digits_compute=dp.get_precision('Account')),
+ 'subtotal': fields.function(_sub_total, string='Sub Total', type='float', digits_compute=dp.get_precision('Account')),
'starting_id': fields.many2one('account.bank.statement', ondelete='cascade'),
'ending_id': fields.many2one('account.bank.statement', ondelete='cascade'),
}
@@ -223,10 +223,10 @@ class account_cash_statement(osv.osv):
[('draft', 'Draft'),
('confirm', 'Closed'),
('open','Open')], 'State', required=True, states={'confirm': [('readonly', True)]}, readonly="1"),
- 'total_entry_encoding': fields.function(_get_sum_entry_encoding, method=True, store=True, string="Cash Transaction", help="Total cash transactions"),
+ 'total_entry_encoding': fields.function(_get_sum_entry_encoding, store=True, string="Cash Transaction", help="Total cash transactions"),
'closing_date': fields.datetime("Closed On"),
- 'balance_end': fields.function(_end_balance, method=True, store=True, string='Balance', help="Closing balance based on Starting Balance and Cash Transactions"),
- 'balance_end_cash': fields.function(_balance_end_cash, method=True, store=True, string='Balance', help="Closing balance based on cashBox"),
+ 'balance_end': fields.function(_end_balance, store=True, string='Balance', help="Closing balance based on Starting Balance and Cash Transactions"),
+ 'balance_end_cash': fields.function(_balance_end_cash, store=True, string='Balance', help="Closing balance based on cashBox"),
'starting_details_ids': fields.one2many('account.cashbox.line', 'starting_id', string='Opening Cashbox'),
'ending_details_ids': fields.one2many('account.cashbox.line', 'ending_id', string='Closing Cashbox'),
'name': fields.char('Name', size=64, required=True, states={'draft': [('readonly', False)]}, readonly=True, help='if you give the Name other then /, its created Accounting Entries Move will be with same name as statement name. This allows the statement entries to have the same references than the statement itself'),
diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py
index 2117d7fc40e..2733ecbd189 100644
--- a/addons/account/account_move_line.py
+++ b/addons/account/account_move_line.py
@@ -489,8 +489,8 @@ class account_move_line(osv.osv):
'reconcile_id': fields.many2one('account.move.reconcile', 'Reconcile', readonly=True, ondelete='set null', select=2),
'reconcile_partial_id': fields.many2one('account.move.reconcile', 'Partial Reconcile', readonly=True, ondelete='set null', select=2),
'amount_currency': fields.float('Amount Currency', help="The amount expressed in an optional other currency if it is a multi-currency entry.", digits_compute=dp.get_precision('Account')),
- 'amount_residual_currency': fields.function(_amount_residual, method=True, 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, method=True, string='Residual Amount', multi="residual", help="The residual amount on a receivable or payable of a journal entry expressed in the company currency."),
+ '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),
@@ -504,13 +504,13 @@ class account_move_line(osv.osv):
'date_created': fields.date('Creation date', select=True),
'analytic_lines': fields.one2many('account.analytic.line', 'move_id', 'Analytic lines'),
'centralisation': fields.selection([('normal','Normal'),('credit','Credit Centralisation'),('debit','Debit Centralisation'),('currency','Currency Adjustment')], 'Centralisation', size=8),
- 'balance': fields.function(_balance, fnct_search=_balance_search, method=True, string='Balance'),
+ 'balance': fields.function(_balance, fnct_search=_balance_search, string='Balance'),
'state': fields.selection([('draft','Unbalanced'), ('valid','Valid')], 'State', readonly=True,
help='When new move line is created the state will be \'Draft\'.\n* When all the payments are done it will be in \'Valid\' state.'),
'tax_code_id': fields.many2one('account.tax.code', 'Tax Account', help="The Account can either be a base tax code or a tax code account."),
'tax_amount': fields.float('Tax/Base Amount', digits_compute=dp.get_precision('Account'), select=True, help="If the Tax account is a tax code account, this field will contain the taxed amount.If the tax account is base tax code, "\
"this field will contain the basic amount(without tax)."),
- 'invoice': fields.function(_invoice, method=True, string='Invoice',
+ 'invoice': fields.function(_invoice, string='Invoice',
type='many2one', relation='account.invoice', fnct_search=_invoice_search),
'account_tax_id':fields.many2one('account.tax', 'Tax'),
'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account'),
diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml
index e0a355c35bf..d3d54a51918 100644
--- a/addons/account/account_view.xml
+++ b/addons/account/account_view.xml
@@ -897,6 +897,7 @@
+
@@ -909,6 +910,7 @@
+
diff --git a/addons/account/company.py b/addons/account/company.py
index a3886cdf14e..c7836e0128b 100644
--- a/addons/account/company.py
+++ b/addons/account/company.py
@@ -30,7 +30,6 @@ class res_company(osv.osv):
type='many2one',
relation='account.account',
string="Reserve and Profit/Loss Account",
- method=True,
view_load=True,
domain="[('type', '=', 'other')]",
help="This Account is used for transferring Profit/Loss(If It is Profit: Amount will be added, Loss : Amount will be deducted.), Which is calculated from Profit & Loss Report"),
diff --git a/addons/account/i18n/de.po b/addons/account/i18n/de.po
index 14a60c5bc7f..3d6a63f1bd9 100644
--- a/addons/account/i18n/de.po
+++ b/addons/account/i18n/de.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-04-21 05:36+0000\n"
+"PO-Revision-Date: 2011-07-02 08:42+0000\n"
"Last-Translator: Ferdinand @ Camptocamp \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-04-29 05:06+0000\n"
-"X-Generator: Launchpad (build 12758)\n"
+"X-Launchpad-Export-Date: 2011-07-03 04:46+0000\n"
+"X-Generator: Launchpad (build 13168)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@@ -34,7 +34,7 @@ msgstr ""
"Es ist kein Journal für den Jahresabschluss des Geschäftsjahres definiert"
#. module: account
-#: code:addons/account/account.py:506
+#: code:addons/account/account.py:516
#, python-format
msgid ""
"You cannot remove/deactivate an account which is set as a property to any "
@@ -68,7 +68,7 @@ msgid "Residual"
msgstr "Restwert"
#. module: account
-#: code:addons/account/invoice.py:785
+#: code:addons/account/invoice.py:793
#, python-format
msgid "Please define sequence on invoice journal"
msgstr "Bitte definieren Sie den Sequenzer für das Rechnungsjournal."
@@ -138,7 +138,7 @@ msgid "Accounting Entries-"
msgstr "Buchungssätze-"
#. module: account
-#: code:addons/account/account.py:1291
+#: code:addons/account/account.py:1305
#, python-format
msgid "You can not delete posted movement: \"%s\"!"
msgstr "Sie können keine gebuchten Vorgänge löschen: \"%s\"!"
@@ -184,7 +184,7 @@ msgstr ""
"angezeigt."
#. module: account
-#: code:addons/account/invoice.py:1421
+#: code:addons/account/invoice.py:1436
#, python-format
msgid "Warning!"
msgstr "Achtung!"
@@ -240,7 +240,7 @@ msgid "account.tax"
msgstr "account.tax"
#. module: account
-#: code:addons/account/account.py:901
+#: code:addons/account/account.py:915
#, python-format
msgid ""
"No period defined for this date: %s !\n"
@@ -272,7 +272,7 @@ msgstr ""
"Rechnung erscheinen sollen"
#. module: account
-#: code:addons/account/invoice.py:1210
+#: code:addons/account/invoice.py:1224
#, python-format
msgid "Invoice '%s' is paid partially: %s%s of %s%s (%s%s remaining)"
msgstr ""
@@ -290,7 +290,7 @@ msgid "Belgian Reports"
msgstr "Auswertungen für Belgien"
#. module: account
-#: code:addons/account/account_move_line.py:1176
+#: code:addons/account/account_move_line.py:1182
#, python-format
msgid "You can not add/modify entries in a closed journal."
msgstr ""
@@ -330,7 +330,7 @@ msgid "St."
msgstr "Beleg"
#. module: account
-#: code:addons/account/invoice.py:529
+#: code:addons/account/invoice.py:532
#, python-format
msgid "Invoice line account company does not match with invoice company."
msgstr ""
@@ -594,7 +594,7 @@ msgid "Not reconciled transactions"
msgstr "Nicht ausgeglichene Posten"
#. module: account
-#: code:addons/account/account_cash_statement.py:348
+#: code:addons/account/account_cash_statement.py:349
#, python-format
msgid "CashBox Balance is not matching with Calculated Balance !"
msgstr "Kassenbestand passt nicht zu Kontensaldo"
@@ -679,7 +679,7 @@ msgid "Tax Code Amount"
msgstr "Steuerbetrag"
#. module: account
-#: code:addons/account/account.py:2779
+#: code:addons/account/account.py:2823
#: code:addons/account/installer.py:434
#, python-format
msgid "SAJ"
@@ -712,8 +712,8 @@ msgid "Journal Period"
msgstr "Journal Periode"
#. module: account
-#: code:addons/account/account_move_line.py:732
-#: code:addons/account/account_move_line.py:776
+#: code:addons/account/account_move_line.py:723
+#: code:addons/account/account_move_line.py:767
#, python-format
msgid "To reconcile the entries company should be the same for all entries"
msgstr ""
@@ -776,7 +776,7 @@ msgid "Analytic Entries by line"
msgstr "Analytische Buchungsbelege"
#. module: account
-#: code:addons/account/wizard/account_change_currency.py:39
+#: code:addons/account/wizard/account_change_currency.py:38
#, python-format
msgid "You can only change currency for Draft Invoice !"
msgstr "Sie können die Währung nur bei Rechnungen"
@@ -880,7 +880,7 @@ msgid "Next Partner to reconcile"
msgstr "Weiterer Partner für automat. Ausgleich"
#. module: account
-#: code:addons/account/account_move_line.py:1191
+#: code:addons/account/account_move_line.py:1197
#, python-format
msgid ""
"You can not do this modification on a confirmed entry ! Please note that you "
@@ -1009,11 +1009,11 @@ msgid "Code"
msgstr "Kurzbezeichnung"
#. module: account
-#: code:addons/account/account.py:2083
+#: code:addons/account/account.py:2097
#: code:addons/account/account_bank_statement.py:350
-#: code:addons/account/account_move_line.py:170
+#: code:addons/account/account_move_line.py:169
#: code:addons/account/invoice.py:73
-#: code:addons/account/invoice.py:670
+#: code:addons/account/invoice.py:678
#: code:addons/account/wizard/account_use_model.py:81
#, python-format
msgid "No Analytic Journal !"
@@ -1095,7 +1095,6 @@ msgstr "GuV (Aufwendungen)"
#. module: account
#: report:account.analytic.account.journal:0
-#: report:account.move.voucher:0
#: report:account.third_party_ledger:0
#: report:account.third_party_ledger_other:0
msgid "-"
@@ -1186,6 +1185,7 @@ msgstr "# Transaktionen"
#. module: account
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.tax.code.entries:0
#: report:account.third_party_ledger:0
#: report:account.third_party_ledger_other:0
@@ -1193,7 +1193,7 @@ msgid "Entry Label"
msgstr "Buchungstext"
#. module: account
-#: code:addons/account/account.py:976
+#: code:addons/account/account.py:990
#, python-format
msgid "You can not modify/delete a journal with entries for this period !"
msgstr ""
@@ -1333,7 +1333,6 @@ msgid "Journal Items Analysis"
msgstr "Analyse der Journaleinträge"
#. module: account
-#: model:ir.actions.act_window,name:account.action_partner_all
#: model:ir.ui.menu,name:account.next_id_22
msgid "Partners"
msgstr "Partner"
@@ -1363,7 +1362,7 @@ msgid "Central Journal"
msgstr "Zentrales Journal"
#. module: account
-#: code:addons/account/account_move_line.py:1271
+#: code:addons/account/account_move_line.py:1277
#, python-format
msgid "You can not use this general account in this journal !"
msgstr "Sie können dieses Sachkonto nicht in diesem Journal einsetzen."
@@ -1460,7 +1459,7 @@ msgid ""
msgstr "Beispiel: 14 Tage 2% Skonto, 30 Tage Netto"
#. module: account
-#: code:addons/account/invoice.py:815
+#: code:addons/account/invoice.py:823
#, python-format
msgid ""
"Cannot create the invoice !\n"
@@ -1631,7 +1630,6 @@ msgid "Separated Journal Sequences"
msgstr "Unterschiedliche Journal Sequenzer"
#. module: account
-#: field:account.bank.statement,user_id:0
#: view:account.invoice:0
msgid "Responsible"
msgstr "Mitarbeiter"
@@ -1705,7 +1703,7 @@ msgid "Error! You cannot define overlapping fiscal years"
msgstr "Fehler ! Sie können keine Überschneidungen bei Geschäftsjahren haben"
#. module: account
-#: code:addons/account/account_move_line.py:808
+#: code:addons/account/account_move_line.py:799
#, python-format
msgid "The account is not defined to be reconciled !"
msgstr ""
@@ -1742,7 +1740,7 @@ msgid "Receivables & Payables"
msgstr "Debitoren & Kreditoren"
#. module: account
-#: code:addons/account/account_move_line.py:815
+#: code:addons/account/account_move_line.py:806
#, python-format
msgid "You have to provide an account for the write off entry !"
msgstr "Sie müssen ein Konto für die Forderungsabschreibung hinterlegen!"
@@ -1778,7 +1776,7 @@ msgid "Customer Ref:"
msgstr "Kundenreferenz:"
#. module: account
-#: code:addons/account/account_cash_statement.py:328
+#: code:addons/account/account_cash_statement.py:329
#, python-format
msgid "User %s does not have rights to access %s journal !"
msgstr "Benutzer %s hat keinen Zugriff auf das %s Journal!"
@@ -1799,7 +1797,7 @@ msgid "Tax Declaration: Credit Notes"
msgstr "Steuermeldung: Ausweis von Gutschriften"
#. module: account
-#: code:addons/account/account.py:499
+#: code:addons/account/account.py:509
#, python-format
msgid "You cannot deactivate an account that contains account moves."
msgstr "Sie können kein Konto mit vorhandenen Buchungen deaktivieren."
@@ -1816,7 +1814,7 @@ msgstr ""
"Sie können keine Buchung auf einem bereits abgeschlossenen Konto vornehmen."
#. module: account
-#: code:addons/account/account.py:519
+#: code:addons/account/account.py:529
#, python-format
msgid ""
"You cannot change the type of account from 'Closed' to any other type which "
@@ -2101,7 +2099,7 @@ msgid " Journal"
msgstr " Journal"
#. module: account
-#: code:addons/account/account.py:1319
+#: code:addons/account/account.py:1333
#, python-format
msgid ""
"There is no default default debit account defined \n"
@@ -2164,7 +2162,7 @@ msgid "Description"
msgstr "Buchungstext"
#. module: account
-#: code:addons/account/account.py:2844
+#: code:addons/account/account.py:2888
#: code:addons/account/installer.py:498
#, python-format
msgid "ECNJ"
@@ -2184,7 +2182,7 @@ msgid "Income Account"
msgstr "Erlöskonto"
#. module: account
-#: code:addons/account/invoice.py:352
+#: code:addons/account/invoice.py:351
#, python-format
msgid "There is no Accounting Journal of type Sale/Purchase defined!"
msgstr ""
@@ -2197,6 +2195,7 @@ msgid "Accounting Properties"
msgstr "Finanzbuchhaltung Eigenschaften"
#. module: account
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: field:account.print.journal,sort_selection:0
msgid "Entries Sorted By"
@@ -2225,6 +2224,7 @@ msgstr "Vorlage f. Produkte"
#: field:account.fiscalyear,name:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.journal.period,fiscalyear_id:0
#: report:account.journal.period.print:0
#: report:account.partner.balance:0
@@ -2333,7 +2333,7 @@ msgid "Account Tax Code"
msgstr "Umsatzsteuer"
#. module: account
-#: code:addons/account/invoice.py:545
+#: code:addons/account/invoice.py:552
#, python-format
msgid ""
"Can't find any account journal of %s type for this company.\n"
@@ -2415,7 +2415,7 @@ msgid "Account Model Entries"
msgstr "Buchungsvorlage"
#. module: account
-#: code:addons/account/account.py:2796
+#: code:addons/account/account.py:2840
#: code:addons/account/installer.py:454
#, python-format
msgid "EXJ"
@@ -2507,7 +2507,7 @@ msgid "Accounts"
msgstr "Finanzkonten"
#. module: account
-#: code:addons/account/invoice.py:351
+#: code:addons/account/invoice.py:350
#, python-format
msgid "Configuration Error!"
msgstr "Konfigurationsfehler !"
@@ -2519,13 +2519,12 @@ msgid "Average Price"
msgstr "Durchschnittspreis"
#. module: account
-#: report:account.move.voucher:0
#: report:account.overdue:0
msgid "Date:"
msgstr "Datum:"
#. module: account
-#: code:addons/account/account.py:640
+#: code:addons/account/account.py:654
#, python-format
msgid ""
"You cannot modify company of this journal as its related record exist in "
@@ -2563,6 +2562,7 @@ msgstr "Rabatt (%)"
#. module: account
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: report:account.overdue:0
#: report:account.third_party_ledger:0
@@ -2679,16 +2679,16 @@ msgid "This wizard will create recurring accounting entries"
msgstr "Diese Assistent erzeugt wiederkehrende Buchungen."
#. module: account
-#: code:addons/account/account.py:1181
+#: code:addons/account/account.py:1195
#, python-format
msgid "No sequence defined on the journal !"
msgstr "Kein Sequenzer für dieses Journal definiert !"
#. module: account
-#: code:addons/account/account.py:2083
+#: code:addons/account/account.py:2097
#: code:addons/account/account_bank_statement.py:350
-#: code:addons/account/account_move_line.py:170
-#: code:addons/account/invoice.py:670
+#: code:addons/account/account_move_line.py:169
+#: code:addons/account/invoice.py:678
#: code:addons/account/wizard/account_use_model.py:81
#, python-format
msgid "You have to define an analytic journal on the '%s' journal!"
@@ -2862,7 +2862,7 @@ msgid "Analytic Entries"
msgstr "Analytische Buchungen"
#. module: account
-#: code:addons/account/account.py:822
+#: code:addons/account/account.py:836
#, python-format
msgid ""
"No fiscal year defined for this date !\n"
@@ -2994,7 +2994,7 @@ msgid "BNK%s"
msgstr "BNK%s"
#. module: account
-#: code:addons/account/account.py:2906
+#: code:addons/account/account.py:2950
#: code:addons/account/installer.py:296
#, python-format
msgid "BNK"
@@ -3119,6 +3119,7 @@ msgstr "Leer lassen um Aufwandskonto zu verwenden"
#: field:account.common.report,journal_ids:0
#: report:account.general.journal:0
#: field:account.general.journal,journal_ids:0
+#: report:account.general.ledger_landscape:0
#: view:account.journal.period:0
#: report:account.partner.balance:0
#: field:account.partner.balance,journal_ids:0
@@ -3179,7 +3180,7 @@ msgid "Starting Balance"
msgstr "Anfangssaldo"
#. module: account
-#: code:addons/account/invoice.py:1284
+#: code:addons/account/invoice.py:1298
#, python-format
msgid "No Partner Defined !"
msgstr "Kein Partner definiert!"
@@ -3223,7 +3224,6 @@ msgstr "Journal:"
#: view:account.invoice.report:0
#: selection:account.invoice.report,state:0
#: selection:account.journal.period,state:0
-#: report:account.move.voucher:0
#: view:account.subscription:0
#: selection:account.subscription,state:0
#: selection:report.invoice.created,state:0
@@ -3277,7 +3277,7 @@ msgstr ""
"bedeutet, dass Sie Ihre einzelnen Buchungen nicht ändern können."
#. module: account
-#: code:addons/account/invoice.py:370
+#: code:addons/account/invoice.py:373
#, python-format
msgid "Cannot delete invoice(s) that are already opened or paid !"
msgstr "Kann offene oder bezahlte Rechnungen nicht löschen"
@@ -3340,7 +3340,7 @@ msgstr ""
"'Abgebrochen' oder 'Erledigt' Status ist."
#. module: account
-#: code:addons/account/account.py:522
+#: code:addons/account/account.py:532
#, python-format
msgid ""
"You cannot change the type of account from '%s' to '%s' type as it contains "
@@ -3351,6 +3351,7 @@ msgstr ""
#. module: account
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
msgid "Counterpart"
msgstr "Gegenbuchung"
@@ -3455,6 +3456,7 @@ msgstr "(Wenn kein Geschäftsjahr ausgewählt wird, werden alle genommen)"
#: field:account.entries.report,date:0
#: selection:account.general.journal,filter:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.invoice.report,date:0
#: report:account.journal.period.print:0
#: view:account.move:0
@@ -3498,7 +3500,7 @@ msgid "Chart of Accounts Template"
msgstr "Vorlage Kontenplan"
#. module: account
-#: code:addons/account/account.py:2095
+#: code:addons/account/account.py:2109
#, python-format
msgid ""
"Maturity date of entry line generated by model line '%s' of model '%s' is "
@@ -3510,13 +3512,13 @@ msgstr ""
"Bitte ordnen Sie dem Partner eine Zahlungsbedingungen zu."
#. module: account
-#: code:addons/account/account_move_line.py:810
+#: code:addons/account/account_move_line.py:801
#, python-format
msgid "Some entries are already reconciled !"
msgstr "Einige Einträge wurden bereits ausgeglichen!"
#. module: account
-#: code:addons/account/account.py:1204
+#: code:addons/account/account.py:1218
#, python-format
msgid ""
"You cannot validate a Journal Entry unless all journal items are in same "
@@ -3644,7 +3646,7 @@ msgid "Analytic Items"
msgstr "Analytische Buchungen"
#. module: account
-#: code:addons/account/account_move_line.py:1128
+#: code:addons/account/account_move_line.py:1134
#, python-format
msgid "Unable to change tax !"
msgstr "Die Steuer kann nicht geändert werden!"
@@ -3655,7 +3657,7 @@ msgid "#Entries"
msgstr "# Buchungen"
#. module: account
-#: code:addons/account/invoice.py:1422
+#: code:addons/account/invoice.py:1437
#, python-format
msgid ""
"You selected an Unit of Measure which is not compatible with the product."
@@ -3663,7 +3665,7 @@ msgstr ""
"Sie haben eine Mengeneinheit gewählt, die nicht kompatibel zum Produkt ist."
#. module: account
-#: code:addons/account/invoice.py:473
+#: code:addons/account/invoice.py:476
#, python-format
msgid ""
"The Payment Term of Supplier does not have Payment Term Lines(Computation) "
@@ -3977,7 +3979,7 @@ msgid "Acc.Type"
msgstr "Kontotyp"
#. module: account
-#: code:addons/account/invoice.py:714
+#: code:addons/account/invoice.py:722
#, python-format
msgid "Global taxes defined, but are not in invoice lines !"
msgstr ""
@@ -4042,7 +4044,7 @@ msgstr ""
"Status unmittelbar 'Gebucht' ist."
#. module: account
-#: code:addons/account/account_analytic_line.py:91
+#: code:addons/account/account_analytic_line.py:90
#, python-format
msgid "There is no expense account defined for this product: \"%s\" (id:%d)"
msgstr ""
@@ -4224,7 +4226,7 @@ msgid "Credit Notes"
msgstr "Gutschrift"
#. module: account
-#: code:addons/account/account.py:2067
+#: code:addons/account/account.py:2081
#: code:addons/account/wizard/account_use_model.py:69
#, python-format
msgid "Unable to find a valid period !"
@@ -4297,11 +4299,11 @@ msgid "Change"
msgstr "Ändere Währung"
#. module: account
-#: code:addons/account/account.py:1290
-#: code:addons/account/account.py:1318
-#: code:addons/account/account.py:1325
-#: code:addons/account/account_move_line.py:1055
-#: code:addons/account/invoice.py:896
+#: code:addons/account/account.py:1304
+#: code:addons/account/account.py:1332
+#: code:addons/account/account.py:1339
+#: code:addons/account/account_move_line.py:1061
+#: code:addons/account/invoice.py:904
#: code:addons/account/wizard/account_automatic_reconcile.py:152
#: code:addons/account/wizard/account_fiscalyear_close.py:78
#: code:addons/account/wizard/account_fiscalyear_close.py:81
@@ -4408,7 +4410,7 @@ msgid "You must define an analytic journal of type '%s' !"
msgstr "Ein Analytisches Journal vom Typ '%s' muss definiert werden"
#. module: account
-#: code:addons/account/account.py:1397
+#: code:addons/account/account.py:1411
#, python-format
msgid ""
"Couldn't create move with currency different from the secondary currency of "
@@ -4480,7 +4482,7 @@ msgid "Invoices"
msgstr "Rechnung"
#. module: account
-#: code:addons/account/invoice.py:804
+#: code:addons/account/invoice.py:812
#, python-format
msgid ""
"Please verify the price of the invoice !\n"
@@ -4594,25 +4596,24 @@ msgid "Third Party (Country)"
msgstr "Drittwelt (Land)"
#. module: account
-#: code:addons/account/account.py:938
-#: code:addons/account/account.py:940
-#: code:addons/account/account.py:1181
-#: code:addons/account/account.py:1393
-#: code:addons/account/account.py:1397
-#: code:addons/account/account_cash_statement.py:249
-#: code:addons/account/account_move_line.py:780
-#: code:addons/account/account_move_line.py:803
-#: code:addons/account/account_move_line.py:805
-#: code:addons/account/account_move_line.py:808
-#: code:addons/account/account_move_line.py:810
-#: code:addons/account/account_move_line.py:1117
+#: code:addons/account/account.py:952
+#: code:addons/account/account.py:954
+#: code:addons/account/account.py:1195
+#: code:addons/account/account.py:1407
+#: code:addons/account/account.py:1411
+#: code:addons/account/account_cash_statement.py:250
+#: code:addons/account/account_move_line.py:771
+#: code:addons/account/account_move_line.py:794
+#: code:addons/account/account_move_line.py:796
+#: code:addons/account/account_move_line.py:799
+#: code:addons/account/account_move_line.py:801
+#: code:addons/account/account_move_line.py:1123
#: code:addons/account/report/common_report_header.py:92
-#: code:addons/account/wizard/account_change_currency.py:39
-#: code:addons/account/wizard/account_change_currency.py:60
-#: code:addons/account/wizard/account_change_currency.py:65
-#: code:addons/account/wizard/account_change_currency.py:71
+#: code:addons/account/wizard/account_change_currency.py:38
+#: code:addons/account/wizard/account_change_currency.py:59
+#: code:addons/account/wizard/account_change_currency.py:64
+#: code:addons/account/wizard/account_change_currency.py:70
#: code:addons/account/wizard/account_move_bank_reconcile.py:49
-#: code:addons/account/wizard/account_open_closed_fiscalyear.py:40
#: code:addons/account/wizard/account_report_common.py:120
#: code:addons/account/wizard/account_report_common.py:126
#, python-format
@@ -4634,7 +4635,7 @@ msgid "Bank Details"
msgstr "Bankkonto Details"
#. module: account
-#: code:addons/account/invoice.py:720
+#: code:addons/account/invoice.py:728
#, python-format
msgid "Taxes missing !"
msgstr "Steuerkonfiguration fehlt!"
@@ -4694,7 +4695,7 @@ msgid "Check Date not in the Period"
msgstr "Prüfe auf ein Datum nicht in Periode"
#. module: account
-#: code:addons/account/account.py:1210
+#: code:addons/account/account.py:1224
#, python-format
msgid ""
"You can not modify a posted entry of this journal !\n"
@@ -4716,7 +4717,7 @@ msgid "Child Tax Accounts"
msgstr "untergeordnete Steuerkonten"
#. module: account
-#: code:addons/account/account.py:940
+#: code:addons/account/account.py:954
#, python-format
msgid "Start period should be smaller then End period"
msgstr "Beginn der Periode sollte kleiner sein als Ende der Periode"
@@ -4746,6 +4747,7 @@ msgstr "Saldo (Anal.)"
#: report:account.general.journal:0
#: field:account.general.journal,target_move:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: field:account.move.journal,target_move:0
#: report:account.partner.balance:0
@@ -4830,7 +4832,7 @@ msgid "Line 1:"
msgstr "Zeile 1:"
#. module: account
-#: code:addons/account/account.py:1167
+#: code:addons/account/account.py:1181
#, python-format
msgid "Integrity Error !"
msgstr "Integritätsfehler!"
@@ -4980,7 +4982,7 @@ msgstr ""
"einen vorher vorhandenen Partner erstellen."
#. module: account
-#: code:addons/account/account.py:2067
+#: code:addons/account/account.py:2081
#: code:addons/account/wizard/account_use_model.py:69
#, python-format
msgid "No period found !"
@@ -5057,7 +5059,7 @@ msgstr ""
"->> Fälligkeitstag = 28.2"
#. module: account
-#: code:addons/account/account.py:2896
+#: code:addons/account/account.py:2940
#: code:addons/account/installer.py:283
#: code:addons/account/installer.py:295
#, python-format
@@ -5085,7 +5087,7 @@ msgid "Start of period"
msgstr "Start Periode"
#. module: account
-#: code:addons/account/account_move_line.py:1193
+#: code:addons/account/account_move_line.py:1199
#, python-format
msgid ""
"You can not do this modification on a reconciled entry ! Please note that "
@@ -5144,12 +5146,12 @@ msgstr "Journal Eröffnungsbuchungen"
#. module: account
#: code:addons/account/account_bank_statement.py:331
-#: code:addons/account/invoice.py:405
-#: code:addons/account/invoice.py:505
-#: code:addons/account/invoice.py:520
-#: code:addons/account/invoice.py:528
-#: code:addons/account/invoice.py:545
-#: code:addons/account/invoice.py:1347
+#: code:addons/account/invoice.py:408
+#: code:addons/account/invoice.py:508
+#: code:addons/account/invoice.py:523
+#: code:addons/account/invoice.py:531
+#: code:addons/account/invoice.py:552
+#: code:addons/account/invoice.py:1361
#: code:addons/account/wizard/account_move_journal.py:63
#, python-format
msgid "Configuration Error !"
@@ -5230,7 +5232,7 @@ msgid "Sort By"
msgstr "Sortiert nach"
#. module: account
-#: code:addons/account/account.py:1326
+#: code:addons/account/account.py:1340
#, python-format
msgid ""
"There is no default default credit account defined \n"
@@ -5391,7 +5393,7 @@ msgid "Generate Opening Entries"
msgstr "Erstelle Vortragsbuchungen"
#. module: account
-#: code:addons/account/account_move_line.py:738
+#: code:addons/account/account_move_line.py:729
#, python-format
msgid "Already Reconciled!"
msgstr "Bereits ausgeglichen"
@@ -5430,7 +5432,7 @@ msgstr "untergeordnete Konten"
#. module: account
#: view:account.move.line.reconcile:0
-#: code:addons/account/account_move_line.py:830
+#: code:addons/account/account_move_line.py:821
#, python-format
msgid "Write-Off"
msgstr "Abschreibung"
@@ -5585,7 +5587,7 @@ msgid "# of Lines"
msgstr "# Positionen"
#. module: account
-#: code:addons/account/wizard/account_change_currency.py:60
+#: code:addons/account/wizard/account_change_currency.py:59
#, python-format
msgid "New currency is not confirured properly !"
msgstr "Neue Währung wurde nicht vollständig konfiguriert !"
@@ -5610,14 +5612,14 @@ msgid "Filter by"
msgstr "Filter durch"
#. module: account
-#: code:addons/account/account_move_line.py:1131
-#: code:addons/account/account_move_line.py:1214
+#: code:addons/account/account_move_line.py:1137
+#: code:addons/account/account_move_line.py:1220
#, python-format
msgid "You can not use an inactive account!"
msgstr "Sie können kein inaktives Konto verwenden!"
#. module: account
-#: code:addons/account/account_move_line.py:803
+#: code:addons/account/account_move_line.py:794
#, python-format
msgid "Entries are not of the same account or already reconciled ! "
msgstr ""
@@ -5654,7 +5656,7 @@ msgstr "7"
#. module: account
#: code:addons/account/account_bank_statement.py:391
-#: code:addons/account/invoice.py:370
+#: code:addons/account/invoice.py:373
#, python-format
msgid "Invalid action !"
msgstr "Fehlerhafte Aktion"
@@ -5876,7 +5878,7 @@ msgid "Companies"
msgstr "Unternehmen"
#. module: account
-#: code:addons/account/account.py:532
+#: code:addons/account/account.py:546
#, python-format
msgid ""
"You cannot modify Company of account as its related record exist in Entry "
@@ -6157,9 +6159,9 @@ msgid "Optional create"
msgstr "Erzeuge optional"
#. module: account
-#: code:addons/account/invoice.py:406
-#: code:addons/account/invoice.py:506
-#: code:addons/account/invoice.py:1348
+#: code:addons/account/invoice.py:409
+#: code:addons/account/invoice.py:509
+#: code:addons/account/invoice.py:1362
#, python-format
msgid "Can not find account chart for this company, Please Create account."
msgstr ""
@@ -6312,8 +6314,8 @@ msgid "Analytic Entries Statistics"
msgstr "Auswertung analytische Buchungen"
#. module: account
-#: code:addons/account/account_analytic_line.py:143
-#: code:addons/account/account_move_line.py:905
+#: code:addons/account/account_analytic_line.py:141
+#: code:addons/account/account_move_line.py:897
#, python-format
msgid "Entries: "
msgstr "Buchungen: "
@@ -6324,7 +6326,7 @@ msgid "Create manual recurring entries in a chosen journal."
msgstr "Händisch wiederkehrende Buchungen in ein bestimmtes Journal buchen."
#. module: account
-#: code:addons/account/account.py:1393
+#: code:addons/account/account.py:1407
#, python-format
msgid "Couldn't create move between different companies"
msgstr "Konnte keine überbetriebliche Buchung erzeugen"
@@ -6373,7 +6375,7 @@ msgid "Total debit"
msgstr "Gesamt Soll"
#. module: account
-#: code:addons/account/account_move_line.py:781
+#: code:addons/account/account_move_line.py:772
#, python-format
msgid "Entry \"%s\" is not valid !"
msgstr "Eintrag \"%s\" ist ungültig !"
@@ -6443,30 +6445,31 @@ msgid " valuation: percent"
msgstr " Wertansatz: Prozent"
#. module: account
-#: code:addons/account/account.py:499
-#: code:addons/account/account.py:501
-#: code:addons/account/account.py:822
-#: code:addons/account/account.py:901
-#: code:addons/account/account.py:976
-#: code:addons/account/account.py:1204
-#: code:addons/account/account.py:1210
-#: code:addons/account/account.py:2095
-#: code:addons/account/account.py:2333
-#: code:addons/account/account_analytic_line.py:90
-#: code:addons/account/account_analytic_line.py:99
+#: code:addons/account/account.py:509
+#: code:addons/account/account.py:511
+#: code:addons/account/account.py:836
+#: code:addons/account/account.py:915
+#: code:addons/account/account.py:990
+#: code:addons/account/account.py:1218
+#: code:addons/account/account.py:1224
+#: code:addons/account/account.py:2109
+#: code:addons/account/account.py:2357
+#: code:addons/account/account_analytic_line.py:89
+#: code:addons/account/account_analytic_line.py:98
#: code:addons/account/account_bank_statement.py:292
#: code:addons/account/account_bank_statement.py:305
#: code:addons/account/account_bank_statement.py:345
-#: code:addons/account/account_cash_statement.py:328
-#: code:addons/account/account_cash_statement.py:348
-#: code:addons/account/account_move_line.py:1176
-#: code:addons/account/account_move_line.py:1191
-#: code:addons/account/account_move_line.py:1193
-#: code:addons/account/invoice.py:785
-#: code:addons/account/invoice.py:815
-#: code:addons/account/invoice.py:1008
+#: code:addons/account/account_cash_statement.py:329
+#: code:addons/account/account_cash_statement.py:349
+#: code:addons/account/account_move_line.py:1182
+#: code:addons/account/account_move_line.py:1197
+#: code:addons/account/account_move_line.py:1199
+#: code:addons/account/invoice.py:793
+#: code:addons/account/invoice.py:823
+#: code:addons/account/invoice.py:1014
#: code:addons/account/wizard/account_invoice_refund.py:100
#: code:addons/account/wizard/account_invoice_refund.py:102
+#: code:addons/account/wizard/account_open_closed_fiscalyear.py:40
#: code:addons/account/wizard/account_use_model.py:44
#, python-format
msgid "Error !"
@@ -6587,7 +6590,7 @@ msgid "Journal Select"
msgstr "Wähle Journal"
#. module: account
-#: code:addons/account/wizard/account_change_currency.py:65
+#: code:addons/account/wizard/account_change_currency.py:64
#, python-format
msgid "Currnt currency is not confirured properly !"
msgstr "Die aktuelle Währung ist nicht korrekt konfiguriert !"
@@ -6604,9 +6607,11 @@ msgstr "Steuern Zuordnung"
#. module: account
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: view:account.report.general.ledger:0
#: model:ir.actions.act_window,name:account.action_account_general_ledger_menu
#: model:ir.actions.report.xml,name:account.account_general_ledger
+#: model:ir.actions.report.xml,name:account.account_general_ledger_landscape
#: model:ir.ui.menu,name:account.menu_general_ledger
msgid "General Ledger"
msgstr "Umsätze nach Konten und Perioden"
@@ -6667,7 +6672,7 @@ msgid "Total:"
msgstr "Summe:"
#. module: account
-#: code:addons/account/account.py:2050
+#: code:addons/account/account.py:2064
#, python-format
msgid ""
"You can specify year, month and date in the name of the model using the "
@@ -6705,7 +6710,7 @@ msgid "Child Codes"
msgstr "untergeordnete Codes"
#. module: account
-#: code:addons/account/invoice.py:473
+#: code:addons/account/invoice.py:476
#: code:addons/account/wizard/account_invoice_refund.py:137
#, python-format
msgid "Data Insufficient !"
@@ -6896,7 +6901,7 @@ msgid "Lines"
msgstr "Positionen"
#. module: account
-#: code:addons/account/invoice.py:521
+#: code:addons/account/invoice.py:524
#, python-format
msgid ""
"Can not find account chart for this company in invoice line account, Please "
@@ -7095,7 +7100,7 @@ msgstr ""
"Steuerberechnung gebraucht wird."
#. module: account
-#: code:addons/account/account.py:938
+#: code:addons/account/account.py:952
#, python-format
msgid "You should have chosen periods that belongs to the same company"
msgstr ""
@@ -7214,7 +7219,7 @@ msgid "Sign on Reports"
msgstr "Sign On Reports"
#. module: account
-#: code:addons/account/account_cash_statement.py:249
+#: code:addons/account/account_cash_statement.py:250
#, python-format
msgid "You can not have two open register for the same journal"
msgstr ""
@@ -7251,7 +7256,6 @@ msgstr ""
#. module: account
#: report:account.invoice:0
#: view:account.invoice:0
-#: report:account.move.voucher:0
msgid "PRO-FORMA"
msgstr "PRO-FORMA"
@@ -7284,6 +7288,7 @@ msgstr "Informationen (Optional)"
#. module: account
#: view:account.analytic.line:0
+#: field:account.bank.statement,user_id:0
#: view:account.journal:0
#: field:account.journal,user_id:0
#: view:analytic.entries.report:0
@@ -7312,13 +7317,13 @@ msgstr ""
"bezahlt werden soll."
#. module: account
-#: code:addons/account/account_move_line.py:1271
+#: code:addons/account/account_move_line.py:1277
#, python-format
msgid "Bad account !"
msgstr "Falsches Konto!"
#. module: account
-#: code:addons/account/account.py:2777
+#: code:addons/account/account.py:2821
#: code:addons/account/installer.py:432
#, python-format
msgid "Sales Journal"
@@ -7336,7 +7341,7 @@ msgid "Invoice Tax"
msgstr "Umsatzsteuer"
#. module: account
-#: code:addons/account/account_move_line.py:1246
+#: code:addons/account/account_move_line.py:1252
#, python-format
msgid "No piece number !"
msgstr "Keine Stückzahl!"
@@ -7582,17 +7587,17 @@ msgid "Fixed"
msgstr "Fest"
#. module: account
-#: code:addons/account/account.py:506
-#: code:addons/account/account.py:519
-#: code:addons/account/account.py:522
+#: code:addons/account/account.py:516
+#: code:addons/account/account.py:529
#: code:addons/account/account.py:532
-#: code:addons/account/account.py:640
-#: code:addons/account/account.py:927
-#: code:addons/account/account_move_line.py:732
-#: code:addons/account/account_move_line.py:776
-#: code:addons/account/invoice.py:714
-#: code:addons/account/invoice.py:717
-#: code:addons/account/invoice.py:720
+#: code:addons/account/account.py:546
+#: code:addons/account/account.py:654
+#: code:addons/account/account.py:941
+#: code:addons/account/account_move_line.py:723
+#: code:addons/account/account_move_line.py:767
+#: code:addons/account/invoice.py:722
+#: code:addons/account/invoice.py:725
+#: code:addons/account/invoice.py:728
#, python-format
msgid "Warning !"
msgstr "Warnung"
@@ -7624,6 +7629,7 @@ msgstr "Betrag (in Worten)"
#: view:account.entries.report:0
#: field:account.entries.report,partner_id:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: view:account.invoice:0
#: field:account.invoice,partner_id:0
#: field:account.invoice.line,partner_id:0
@@ -7654,7 +7660,7 @@ msgid "Can not %s draft/proforma/cancel invoice."
msgstr "Kann Entwurf/ProForma/Storno für Rechnung %s nicht durchführen"
#. module: account
-#: code:addons/account/invoice.py:787
+#: code:addons/account/invoice.py:795
#, python-format
msgid "No Invoice Lines !"
msgstr "Keine Rechnungszeilen !"
@@ -7705,7 +7711,7 @@ msgid "Deferral Method"
msgstr "Abgrenzung Jahreswechsel"
#. module: account
-#: code:addons/account/invoice.py:359
+#: code:addons/account/invoice.py:360
#, python-format
msgid "Invoice '%s' is paid."
msgstr "Rechnung '%s' wurde bezahlt."
@@ -7769,7 +7775,7 @@ msgid "Associated Partner"
msgstr "Zugehöriger Partner"
#. module: account
-#: code:addons/account/invoice.py:1284
+#: code:addons/account/invoice.py:1298
#, python-format
msgid "You must first select a partner !"
msgstr "Sie müssen zuerst einen Partner wählen!"
@@ -7837,7 +7843,7 @@ msgid "Choose Fiscal Year"
msgstr "Wähle Geschäftsjahr"
#. module: account
-#: code:addons/account/account.py:2841
+#: code:addons/account/account.py:2885
#: code:addons/account/installer.py:495
#, python-format
msgid "Purchase Refund Journal"
@@ -7876,6 +7882,7 @@ msgstr "Finanzbuchhaltung"
#: view:account.entries.report:0
#: field:account.entries.report,period_id:0
#: view:account.fiscalyear:0
+#: report:account.general.ledger_landscape:0
#: view:account.invoice:0
#: view:account.invoice.report:0
#: field:account.journal.period,period_id:0
@@ -8057,7 +8064,7 @@ msgid "Account Types"
msgstr "Kontoartkonfiguration"
#. module: account
-#: code:addons/account/invoice.py:897
+#: code:addons/account/invoice.py:905
#, python-format
msgid "Cannot create invoice move on centralised journal"
msgstr "Kann keine Rechnungsbuchungen in zentralisiertem Journal durchführen"
@@ -8107,6 +8114,7 @@ msgstr "Journal Gutschriften"
#: report:account.account.balance:0
#: report:account.central.journal:0
#: report:account.general.journal:0
+#: report:account.general.ledger_landscape:0
#: report:account.partner.balance:0
msgid "Filter By"
msgstr "Filter nach"
@@ -8150,7 +8158,7 @@ msgid "Payment Term Line"
msgstr "Zahlungsbedingungen"
#. module: account
-#: code:addons/account/account.py:2794
+#: code:addons/account/account.py:2838
#: code:addons/account/installer.py:452
#, python-format
msgid "Purchase Journal"
@@ -8326,8 +8334,8 @@ msgstr ""
"Bankauszug übereinstimmen."
#. module: account
-#: code:addons/account/account_move_line.py:1131
-#: code:addons/account/account_move_line.py:1214
+#: code:addons/account/account_move_line.py:1137
+#: code:addons/account/account_move_line.py:1220
#, python-format
msgid "Bad account!"
msgstr "Falsches Konto!"
@@ -8338,7 +8346,7 @@ msgid "Keep empty for all open fiscal years"
msgstr "Frei lassen für alle offenen Geschäftsjahre"
#. module: account
-#: code:addons/account/account_move_line.py:1056
+#: code:addons/account/account_move_line.py:1062
#, python-format
msgid "The account move (%s) for centralisation has been confirmed!"
msgstr "Die Buchungszeile (%s)"
@@ -8361,6 +8369,7 @@ msgstr ""
#: field:account.entries.report,currency_id:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.invoice,currency_id:0
#: field:account.invoice.report,currency_id:0
#: field:account.journal,currency:0
@@ -8564,14 +8573,14 @@ msgid "Period from"
msgstr "Gültig ab"
#. module: account
-#: code:addons/account/account.py:2817
+#: code:addons/account/account.py:2861
#: code:addons/account/installer.py:476
#, python-format
msgid "Sales Refund Journal"
msgstr "Gutschriften Ausgangsrechnungen Journal"
#. module: account
-#: code:addons/account/account.py:927
+#: code:addons/account/account.py:941
#, python-format
msgid ""
"You cannot modify company of this period as its related record exist in "
@@ -8621,7 +8630,7 @@ msgid "Purchase Tax(%)"
msgstr "Steuer Einkauf (%)"
#. module: account
-#: code:addons/account/invoice.py:787
+#: code:addons/account/invoice.py:795
#, python-format
msgid "Please create some invoice lines."
msgstr "Bitte erstellen Sie einige Rechnungspositionen"
@@ -8637,7 +8646,7 @@ msgid "Configure Your Accounting Application"
msgstr "Konfigurieren Sie die Anwendungen für die Finanzbuchhaltung"
#. module: account
-#: code:addons/account/account.py:2820
+#: code:addons/account/account.py:2864
#: code:addons/account/installer.py:479
#, python-format
msgid "SCNJ"
@@ -8682,6 +8691,7 @@ msgstr "Überwachung von Zahlungseingängen"
#: report:account.central.journal:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: report:account.partner.balance:0
#: report:account.third_party_ledger:0
@@ -8691,7 +8701,7 @@ msgid "Start Period"
msgstr "Start Periode"
#. module: account
-#: code:addons/account/account.py:2333
+#: code:addons/account/account.py:2357
#, python-format
msgid "Cannot locate parent code for template account!"
msgstr "Kann keine Buchung auf einem Oberkonto vonehmen."
@@ -8729,7 +8739,7 @@ msgstr ""
"Buchhalter verbucht und validiert die Buchungszeilen einer Rechnung. "
#. module: account
-#: code:addons/account/invoice.py:1008
+#: code:addons/account/invoice.py:1014
#, python-format
msgid ""
"You cannot cancel the Invoice which is Partially Paid! You need to "
@@ -8759,7 +8769,7 @@ msgid "You can not create move line on view account."
msgstr "Sie können keine Buchungen auf Konten des Typs Ansicht erstellen."
#. module: account
-#: code:addons/account/wizard/account_change_currency.py:71
+#: code:addons/account/wizard/account_change_currency.py:70
#, python-format
msgid "Current currency is not confirured properly !"
msgstr "Aktuelle Währung ist nicht korrekt definiert"
@@ -8814,6 +8824,7 @@ msgstr "Leer lassen um das Erlöskonto zu nutzen"
#: field:account.entries.report,balance:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.move.line,balance:0
#: report:account.partner.balance:0
#: selection:account.payment.term.line,value:0
@@ -8832,6 +8843,7 @@ msgstr "Händisch oder automatisch im System erfasst."
#. module: account
#: report:account.account.balance:0
+#: report:account.general.ledger_landscape:0
msgid "Display Account"
msgstr "Anzeige Konten"
@@ -8963,6 +8975,7 @@ msgstr "Händische Buchung"
#. module: account
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: field:account.move.line,move_id:0
#: field:analytic.entries.report,move_id:0
@@ -8970,7 +8983,7 @@ msgid "Move"
msgstr "Buchung"
#. module: account
-#: code:addons/account/account_move_line.py:1128
+#: code:addons/account/account_move_line.py:1134
#, python-format
msgid "You can not change the tax, you should remove and recreate lines !"
msgstr "Die Steuer kann nicht verändert werden. Löschen und Neuerstellen."
@@ -9070,6 +9083,7 @@ msgstr "Saldo Analytisches Konto"
#: report:account.central.journal:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: report:account.partner.balance:0
#: report:account.third_party_ledger:0
@@ -9113,7 +9127,7 @@ msgid "Account Subscription"
msgstr "Konto Automatische Buchung"
#. module: account
-#: code:addons/account/invoice.py:717
+#: code:addons/account/invoice.py:725
#, python-format
msgid ""
"Tax base different !\n"
@@ -9142,6 +9156,7 @@ msgstr "Eingabe automat. Buchung"
#: report:account.general.journal:0
#: field:account.general.journal,date_from:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.installer,date_start:0
#: report:account.journal.period.print:0
#: report:account.partner.balance:0
@@ -9170,7 +9185,7 @@ msgid "Unreconciled"
msgstr "Offene Posten"
#. module: account
-#: code:addons/account/invoice.py:804
+#: code:addons/account/invoice.py:812
#, python-format
msgid "Bad total !"
msgstr "Falsche Summe!"
@@ -9237,13 +9252,13 @@ msgid "Active"
msgstr "Aktiv"
#. module: account
-#: code:addons/account/invoice.py:354
+#: code:addons/account/invoice.py:353
#, python-format
msgid "Unknown Error"
msgstr "Unbekannter Fehler"
#. module: account
-#: code:addons/account/account.py:1167
+#: code:addons/account/account.py:1181
#, python-format
msgid ""
"You cannot validate a non-balanced entry !\n"
@@ -9294,10 +9309,10 @@ msgstr "Buchen"
#: field:account.entries.report,credit:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: field:account.model.line,credit:0
#: field:account.move.line,credit:0
-#: report:account.move.voucher:0
#: report:account.partner.balance:0
#: report:account.tax.code.entries:0
#: report:account.third_party_ledger:0
@@ -9546,7 +9561,6 @@ msgstr "Periode auswählen"
#: view:account.move:0
#: selection:account.move,state:0
#: view:account.move.line:0
-#: report:account.move.voucher:0
msgid "Posted"
msgstr "Gebucht"
@@ -9565,6 +9579,7 @@ msgstr "Gebucht"
#: report:account.general.journal:0
#: field:account.general.journal,date_to:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.installer,date_stop:0
#: report:account.journal.period.print:0
#: report:account.partner.balance:0
@@ -9618,7 +9633,7 @@ msgid "This is a model for recurring accounting entries"
msgstr "Dieses ist ein Modell für wiederkehrende Buchungen."
#. module: account
-#: code:addons/account/account_analytic_line.py:100
+#: code:addons/account/account_analytic_line.py:99
#, python-format
msgid "There is no income account defined for this product: \"%s\" (id:%d)"
msgstr ""
@@ -9781,8 +9796,8 @@ msgid "End period"
msgstr "Ende Periode"
#. module: account
-#: code:addons/account/account_move_line.py:738
-#: code:addons/account/account_move_line.py:815
+#: code:addons/account/account_move_line.py:729
+#: code:addons/account/account_move_line.py:806
#: code:addons/account/wizard/account_invoice_state.py:44
#: code:addons/account/wizard/account_invoice_state.py:68
#: code:addons/account/wizard/account_report_balance_sheet.py:70
@@ -9850,10 +9865,10 @@ msgstr "Eingangsrechnungen"
#: field:account.entries.report,debit:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: field:account.model.line,debit:0
#: field:account.move.line,debit:0
-#: report:account.move.voucher:0
#: report:account.partner.balance:0
#: report:account.tax.code.entries:0
#: report:account.third_party_ledger:0
@@ -9890,7 +9905,7 @@ msgid "Recurring"
msgstr "Wiederkehrend"
#. module: account
-#: code:addons/account/account_move_line.py:805
+#: code:addons/account/account_move_line.py:796
#, python-format
msgid "Entry is already reconciled"
msgstr "Buchung wurde bereits ausgeglichen"
@@ -9911,7 +9926,7 @@ msgid "Range"
msgstr "Bereich"
#. module: account
-#: code:addons/account/account_move_line.py:1246
+#: code:addons/account/account_move_line.py:1252
#, python-format
msgid ""
"Can not create an automatic sequence for this piece !\n"
@@ -10052,7 +10067,7 @@ msgid "Accounts Mapping"
msgstr "Zuordnung Finanzkonten"
#. module: account
-#: code:addons/account/invoice.py:346
+#: code:addons/account/invoice.py:345
#, python-format
msgid "Invoice '%s' is waiting for validation."
msgstr "Rechnung '%s' wartet auf Buchungsfreigabe."
@@ -10077,7 +10092,7 @@ msgid "The income or expense account related to the selected product."
msgstr "Aufwand- und Erlöskonto des Produktes"
#. module: account
-#: code:addons/account/account_move_line.py:1117
+#: code:addons/account/account_move_line.py:1123
#, python-format
msgid "The date of your Journal Entry is not in the defined period!"
msgstr ""
@@ -10241,7 +10256,7 @@ msgstr "Zentrales Journal"
#. module: account
#: report:account.overdue:0
msgid "Maturity"
-msgstr "Fällig am"
+msgstr "überfälllig"
#. module: account
#: selection:account.aged.trial.balance,direction_selection:0
@@ -10287,7 +10302,7 @@ msgid "You must enter a period length that cannot be 0 or below !"
msgstr "Die Länge der Periode muss größer als 0 sein"
#. module: account
-#: code:addons/account/account.py:501
+#: code:addons/account/account.py:511
#, python-format
msgid "You cannot remove an account which has account entries!. "
msgstr ""
@@ -10355,9 +10370,6 @@ msgstr ""
#~ msgid "Unreconciled entries"
#~ msgstr "Offene Posten"
-#~ msgid "Print Taxes Report"
-#~ msgstr "Druck Report Steuer"
-
#, python-format
#~ msgid "Account move line \"%s\" is not valid"
#~ msgstr "Buchungsposition \"%s\" ist ungültig"
@@ -10365,9 +10377,6 @@ msgstr ""
#~ msgid "Unreconcile entries"
#~ msgstr "Storno Ausgleich"
-#~ msgid "Confirm draft invoices"
-#~ msgstr "Bestätige Entwurf Rechnung"
-
#~ msgid "Charts of Account"
#~ msgstr "Kontenplan Finanzkonten"
@@ -11825,16 +11834,6 @@ msgstr ""
#~ msgid "Account Reporting - Reporting"
#~ msgstr "Finanz Reporting"
-#~ msgid ""
-#~ "Gives the view used when writing or browsing entries in this journal. The "
-#~ "view tell Open ERP which fields should be visible, required or readonly and "
-#~ "in which order. You can create your own view for a faster encoding in each "
-#~ "journal."
-#~ msgstr ""
-#~ "Definiert Felder (sichtbar, zwingend, nur lesen) für die Sicht für dieses "
-#~ "Journal. Für jedes Journal können eingene Sichten erzeugt wrden um scheller "
-#~ "erfassen zu können"
-
#~ msgid "wizard.company.setup"
#~ msgstr "wizard.company.setup"
@@ -12289,3 +12288,26 @@ msgstr ""
#~ "dem Geschäftsjahr verwendet (Bei vorläufigem Gewinn: Betrag wird "
#~ "gutgeschrieben, bei vorläufigem Verlust: Betrag wird belastet.) Der Betrag "
#~ "wird durch die Auswertung Gewinn & Verlust generiert."
+
+#~ msgid ""
+#~ "Gives the view used when writing or browsing entries in this journal. The "
+#~ "view tell Open ERP which fields should be visible, required or readonly and "
+#~ "in which order. You can create your own view for a faster encoding in each "
+#~ "journal."
+#~ msgstr ""
+#~ "Zeigt an, welche Sicht genutzt wird, wenn Sie dieses Journal durchblättern "
+#~ "oder etwas schreiben. Die Sichten geben Open ERP an, welche Felder sichtbar "
+#~ "sein sollen, zwingend benötigt werden, ob nur lesend auf sie zugegriffen "
+#~ "werden darf und in welcher Reihenfolge Sie erscheinen sollen. Sie können "
+#~ "Ihre eigene Sicht erstellen, um jedes Journal schneller erfassen zu können."
+
+#~ msgid "Print Taxes Report"
+#~ msgstr "Steuerbericht drucken"
+
+#, python-format
+#~ msgid ""
+#~ "No period defined for this date !\n"
+#~ "Please create a fiscal year."
+#~ msgstr ""
+#~ "Kein Zeitraum für dieses Datum definiert!\n"
+#~ "Bitte erzeugen Sie ein neues Geschäftsjahr."
diff --git a/addons/account/i18n/pt_BR.po b/addons/account/i18n/pt_BR.po
index e3c4f508e2f..12a1b35a98a 100644
--- a/addons/account/i18n/pt_BR.po
+++ b/addons/account/i18n/pt_BR.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-05-04 03:16+0000\n"
-"Last-Translator: Emerson \n"
+"PO-Revision-Date: 2011-07-02 18:53+0000\n"
+"Last-Translator: Nédio Batista Marques \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-05-05 04:40+0000\n"
-"X-Generator: Launchpad (build 12959)\n"
+"X-Launchpad-Export-Date: 2011-07-03 04:46+0000\n"
+"X-Generator: Launchpad (build 13168)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@@ -33,7 +33,7 @@ msgid "No End of year journal defined for the fiscal year"
msgstr "Nenhum Livro de Encerramento definido para o Ano Fiscal."
#. module: account
-#: code:addons/account/account.py:506
+#: code:addons/account/account.py:516
#, python-format
msgid ""
"You cannot remove/deactivate an account which is set as a property to any "
@@ -67,7 +67,7 @@ msgid "Residual"
msgstr "Residual"
#. module: account
-#: code:addons/account/invoice.py:785
+#: code:addons/account/invoice.py:793
#, python-format
msgid "Please define sequence on invoice journal"
msgstr "Defina uma sequencia para o diário"
@@ -136,7 +136,7 @@ msgid "Accounting Entries-"
msgstr "Lançamentos contábeis-"
#. module: account
-#: code:addons/account/account.py:1291
+#: code:addons/account/account.py:1305
#, python-format
msgid "You can not delete posted movement: \"%s\"!"
msgstr "Você não pode excluir o movimento postado: \"%s\"!"
@@ -182,7 +182,7 @@ msgstr ""
"pagamento sem as remover."
#. module: account
-#: code:addons/account/invoice.py:1421
+#: code:addons/account/invoice.py:1436
#, python-format
msgid "Warning!"
msgstr "Aviso!"
@@ -237,7 +237,7 @@ msgid "account.tax"
msgstr "account.tax"
#. module: account
-#: code:addons/account/account.py:901
+#: code:addons/account/account.py:915
#, python-format
msgid ""
"No period defined for this date: %s !\n"
@@ -270,7 +270,7 @@ msgstr ""
"(IVA) relativos a este código de imposto apareçam nas faturas"
#. module: account
-#: code:addons/account/invoice.py:1210
+#: code:addons/account/invoice.py:1224
#, python-format
msgid "Invoice '%s' is paid partially: %s%s of %s%s (%s%s remaining)"
msgstr "Fatura '%s' é parcialmente paga: %s%s of %s%s (%s%s restantes)"
@@ -286,7 +286,7 @@ msgid "Belgian Reports"
msgstr "Relatórios belgas"
#. module: account
-#: code:addons/account/account_move_line.py:1176
+#: code:addons/account/account_move_line.py:1182
#, python-format
msgid "You can not add/modify entries in a closed journal."
msgstr "Você não pode incluir/modificar as lançamentos em um diário fechado."
@@ -324,12 +324,11 @@ msgid "St."
msgstr "St."
#. module: account
-#: code:addons/account/invoice.py:529
+#: code:addons/account/invoice.py:532
#, python-format
msgid "Invoice line account company does not match with invoice company."
msgstr ""
-"A companhia da conta da linha da fatura, não corresponde à companhia da "
-"fatura."
+"A empresa da conta da linha da fatura, não corresponde à empresa da fatura."
#. module: account
#: field:account.journal.column,field:0
@@ -586,7 +585,7 @@ msgid "Not reconciled transactions"
msgstr "Transação não conciliada"
#. module: account
-#: code:addons/account/account_cash_statement.py:348
+#: code:addons/account/account_cash_statement.py:349
#, python-format
msgid "CashBox Balance is not matching with Calculated Balance !"
msgstr "Balanço de Caixa não confere com Balanço Calculado"
@@ -671,7 +670,7 @@ msgid "Tax Code Amount"
msgstr "Valor do Código do Imposto"
#. module: account
-#: code:addons/account/account.py:2779
+#: code:addons/account/account.py:2823
#: code:addons/account/installer.py:434
#, python-format
msgid "SAJ"
@@ -704,8 +703,8 @@ msgid "Journal Period"
msgstr "Período do Diário"
#. module: account
-#: code:addons/account/account_move_line.py:732
-#: code:addons/account/account_move_line.py:776
+#: code:addons/account/account_move_line.py:723
+#: code:addons/account/account_move_line.py:767
#, python-format
msgid "To reconcile the entries company should be the same for all entries"
msgstr ""
@@ -768,7 +767,7 @@ msgid "Analytic Entries by line"
msgstr "Entradas analíticas por linha"
#. module: account
-#: code:addons/account/wizard/account_change_currency.py:39
+#: code:addons/account/wizard/account_change_currency.py:38
#, python-format
msgid "You can only change currency for Draft Invoice !"
msgstr "É permitido alterar a moeda apenas para Fatura Rascunho"
@@ -872,7 +871,7 @@ msgid "Next Partner to reconcile"
msgstr "Próximo Parceiro a reconciliar"
#. module: account
-#: code:addons/account/account_move_line.py:1191
+#: code:addons/account/account_move_line.py:1197
#, python-format
msgid ""
"You can not do this modification on a confirmed entry ! Please note that you "
@@ -999,11 +998,11 @@ msgid "Code"
msgstr "Código"
#. module: account
-#: code:addons/account/account.py:2083
+#: code:addons/account/account.py:2097
#: code:addons/account/account_bank_statement.py:350
-#: code:addons/account/account_move_line.py:170
+#: code:addons/account/account_move_line.py:169
#: code:addons/account/invoice.py:73
-#: code:addons/account/invoice.py:670
+#: code:addons/account/invoice.py:678
#: code:addons/account/wizard/account_use_model.py:81
#, python-format
msgid "No Analytic Journal !"
@@ -1084,7 +1083,6 @@ msgstr "Lucros e Perdas (Conta de Despesas)"
#. module: account
#: report:account.analytic.account.journal:0
-#: report:account.move.voucher:0
#: report:account.third_party_ledger:0
#: report:account.third_party_ledger_other:0
msgid "-"
@@ -1175,6 +1173,7 @@ msgstr "# de transações"
#. module: account
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.tax.code.entries:0
#: report:account.third_party_ledger:0
#: report:account.third_party_ledger_other:0
@@ -1182,7 +1181,7 @@ msgid "Entry Label"
msgstr "Aba de lançamento"
#. module: account
-#: code:addons/account/account.py:976
+#: code:addons/account/account.py:990
#, python-format
msgid "You can not modify/delete a journal with entries for this period !"
msgstr ""
@@ -1321,7 +1320,6 @@ msgid "Journal Items Analysis"
msgstr "Análise de Itens de Diário"
#. module: account
-#: model:ir.actions.act_window,name:account.action_partner_all
#: model:ir.ui.menu,name:account.next_id_22
msgid "Partners"
msgstr "Parceiros"
@@ -1351,7 +1349,7 @@ msgid "Central Journal"
msgstr "Diário Central"
#. module: account
-#: code:addons/account/account_move_line.py:1271
+#: code:addons/account/account_move_line.py:1277
#, python-format
msgid "You can not use this general account in this journal !"
msgstr "Voce não pode usar esta conta geral neste diário !"
@@ -1448,7 +1446,7 @@ msgid ""
msgstr "Exemplo: 2% em 14 dias, restante em 30 dias no fim do mês."
#. module: account
-#: code:addons/account/invoice.py:815
+#: code:addons/account/invoice.py:823
#, python-format
msgid ""
"Cannot create the invoice !\n"
@@ -1618,7 +1616,6 @@ msgid "Separated Journal Sequences"
msgstr "Sequências de diário separadas"
#. module: account
-#: field:account.bank.statement,user_id:0
#: view:account.invoice:0
msgid "Responsible"
msgstr "Responsável"
@@ -1690,7 +1687,7 @@ msgid "Error! You cannot define overlapping fiscal years"
msgstr "Erro! Você não pode definir anos fiscais que se sobreponham."
#. module: account
-#: code:addons/account/account_move_line.py:808
+#: code:addons/account/account_move_line.py:799
#, python-format
msgid "The account is not defined to be reconciled !"
msgstr "A conta não está definida para ser reconciliada !"
@@ -1725,7 +1722,7 @@ msgid "Receivables & Payables"
msgstr "Recebíveis & Pagáveis"
#. module: account
-#: code:addons/account/account_move_line.py:815
+#: code:addons/account/account_move_line.py:806
#, python-format
msgid "You have to provide an account for the write off entry !"
msgstr "Você tem que fornecer uma conta para o lançamento da baixa !"
@@ -1761,7 +1758,7 @@ msgid "Customer Ref:"
msgstr "Ref.Cliente:"
#. module: account
-#: code:addons/account/account_cash_statement.py:328
+#: code:addons/account/account_cash_statement.py:329
#, python-format
msgid "User %s does not have rights to access %s journal !"
msgstr "Usuário %s não possui permissões para acessar o diário %s !"
@@ -1782,7 +1779,7 @@ msgid "Tax Declaration: Credit Notes"
msgstr "Declaração de Impostos: Observações de Crédito"
#. module: account
-#: code:addons/account/account.py:499
+#: code:addons/account/account.py:509
#, python-format
msgid "You cannot deactivate an account that contains account moves."
msgstr ""
@@ -1799,7 +1796,7 @@ msgid "You can not create move line on closed account."
msgstr "Você não pode criar linhas de movimento em uma conta fechada."
#. module: account
-#: code:addons/account/account.py:519
+#: code:addons/account/account.py:529
#, python-format
msgid ""
"You cannot change the type of account from 'Closed' to any other type which "
@@ -2082,7 +2079,7 @@ msgid " Journal"
msgstr " Diário"
#. module: account
-#: code:addons/account/account.py:1319
+#: code:addons/account/account.py:1333
#, python-format
msgid ""
"There is no default default debit account defined \n"
@@ -2144,7 +2141,7 @@ msgid "Description"
msgstr "Descrição"
#. module: account
-#: code:addons/account/account.py:2844
+#: code:addons/account/account.py:2888
#: code:addons/account/installer.py:498
#, python-format
msgid "ECNJ"
@@ -2164,7 +2161,7 @@ msgid "Income Account"
msgstr "Conta de Receita"
#. module: account
-#: code:addons/account/invoice.py:352
+#: code:addons/account/invoice.py:351
#, python-format
msgid "There is no Accounting Journal of type Sale/Purchase defined!"
msgstr "Não existe Diário Contábil do tipo Compra/Venda definido!"
@@ -2175,6 +2172,7 @@ msgid "Accounting Properties"
msgstr "Propriedades da Conta"
#. module: account
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: field:account.print.journal,sort_selection:0
msgid "Entries Sorted By"
@@ -2203,6 +2201,7 @@ msgstr "Modelo de produto"
#: field:account.fiscalyear,name:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.journal.period,fiscalyear_id:0
#: report:account.journal.period.print:0
#: report:account.partner.balance:0
@@ -2312,7 +2311,7 @@ msgid "Account Tax Code"
msgstr "Código da conta de impostos"
#. module: account
-#: code:addons/account/invoice.py:545
+#: code:addons/account/invoice.py:552
#, python-format
msgid ""
"Can't find any account journal of %s type for this company.\n"
@@ -2393,7 +2392,7 @@ msgid "Account Model Entries"
msgstr "Modelo de entrada de contas"
#. module: account
-#: code:addons/account/account.py:2796
+#: code:addons/account/account.py:2840
#: code:addons/account/installer.py:454
#, python-format
msgid "EXJ"
@@ -2484,7 +2483,7 @@ msgid "Accounts"
msgstr "Contas"
#. module: account
-#: code:addons/account/invoice.py:351
+#: code:addons/account/invoice.py:350
#, python-format
msgid "Configuration Error!"
msgstr "Erro de Configuração!"
@@ -2496,13 +2495,12 @@ msgid "Average Price"
msgstr "Preço médio"
#. module: account
-#: report:account.move.voucher:0
#: report:account.overdue:0
msgid "Date:"
msgstr "Data:"
#. module: account
-#: code:addons/account/account.py:640
+#: code:addons/account/account.py:654
#, python-format
msgid ""
"You cannot modify company of this journal as its related record exist in "
@@ -2540,6 +2538,7 @@ msgstr "Desc.(%)"
#. module: account
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: report:account.overdue:0
#: report:account.third_party_ledger:0
@@ -2656,16 +2655,16 @@ msgid "This wizard will create recurring accounting entries"
msgstr "Este assistente irá criar lançamentos contábeis periódicos"
#. module: account
-#: code:addons/account/account.py:1181
+#: code:addons/account/account.py:1195
#, python-format
msgid "No sequence defined on the journal !"
msgstr "Nenhuma seqüência definida no diário !"
#. module: account
-#: code:addons/account/account.py:2083
+#: code:addons/account/account.py:2097
#: code:addons/account/account_bank_statement.py:350
-#: code:addons/account/account_move_line.py:170
-#: code:addons/account/invoice.py:670
+#: code:addons/account/account_move_line.py:169
+#: code:addons/account/invoice.py:678
#: code:addons/account/wizard/account_use_model.py:81
#, python-format
msgid "You have to define an analytic journal on the '%s' journal!"
@@ -2837,7 +2836,7 @@ msgid "Analytic Entries"
msgstr "Lançamentos analíticos"
#. module: account
-#: code:addons/account/account.py:822
+#: code:addons/account/account.py:836
#, python-format
msgid ""
"No fiscal year defined for this date !\n"
@@ -2969,7 +2968,7 @@ msgid "BNK%s"
msgstr "BCO%s"
#. module: account
-#: code:addons/account/account.py:2906
+#: code:addons/account/account.py:2950
#: code:addons/account/installer.py:296
#, python-format
msgid "BNK"
@@ -3091,6 +3090,7 @@ msgstr "Deixe vazio para usar a conta de despesas"
#: field:account.common.report,journal_ids:0
#: report:account.general.journal:0
#: field:account.general.journal,journal_ids:0
+#: report:account.general.ledger_landscape:0
#: view:account.journal.period:0
#: report:account.partner.balance:0
#: field:account.partner.balance,journal_ids:0
@@ -3151,7 +3151,7 @@ msgid "Starting Balance"
msgstr "Saldo Inicial"
#. module: account
-#: code:addons/account/invoice.py:1284
+#: code:addons/account/invoice.py:1298
#, python-format
msgid "No Partner Defined !"
msgstr "Número do parceiro definido !"
@@ -3195,7 +3195,6 @@ msgstr "Diário"
#: view:account.invoice.report:0
#: selection:account.invoice.report,state:0
#: selection:account.journal.period,state:0
-#: report:account.move.voucher:0
#: view:account.subscription:0
#: selection:account.subscription,state:0
#: selection:report.invoice.created,state:0
@@ -3249,7 +3248,7 @@ msgstr ""
"que você não poderá mais alterar seus campos."
#. module: account
-#: code:addons/account/invoice.py:370
+#: code:addons/account/invoice.py:373
#, python-format
msgid "Cannot delete invoice(s) that are already opened or paid !"
msgstr "Impossível excluir fatura(s) que já foram abertas ou pagas!"
@@ -3312,7 +3311,7 @@ msgstr ""
"'Cancelado' ou 'Concluído'!"
#. module: account
-#: code:addons/account/account.py:522
+#: code:addons/account/account.py:532
#, python-format
msgid ""
"You cannot change the type of account from '%s' to '%s' type as it contains "
@@ -3323,6 +3322,7 @@ msgstr ""
#. module: account
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
msgid "Counterpart"
msgstr "Contra-parte"
@@ -3428,6 +3428,7 @@ msgstr ""
#: field:account.entries.report,date:0
#: selection:account.general.journal,filter:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.invoice.report,date:0
#: report:account.journal.period.print:0
#: view:account.move:0
@@ -3471,7 +3472,7 @@ msgid "Chart of Accounts Template"
msgstr "Modelo de plano de contas"
#. module: account
-#: code:addons/account/account.py:2095
+#: code:addons/account/account.py:2109
#, python-format
msgid ""
"Maturity date of entry line generated by model line '%s' of model '%s' is "
@@ -3483,13 +3484,13 @@ msgstr ""
"Por favor, defina o parceiro sobre ela!"
#. module: account
-#: code:addons/account/account_move_line.py:810
+#: code:addons/account/account_move_line.py:801
#, python-format
msgid "Some entries are already reconciled !"
msgstr "Alguns lançamentos já estão conciliados !"
#. module: account
-#: code:addons/account/account.py:1204
+#: code:addons/account/account.py:1218
#, python-format
msgid ""
"You cannot validate a Journal Entry unless all journal items are in same "
@@ -3617,7 +3618,7 @@ msgid "Analytic Items"
msgstr "Itens Analíticos"
#. module: account
-#: code:addons/account/account_move_line.py:1128
+#: code:addons/account/account_move_line.py:1134
#, python-format
msgid "Unable to change tax !"
msgstr "Não foi possível alterar o imposto!"
@@ -3628,14 +3629,14 @@ msgid "#Entries"
msgstr "#Entradas"
#. module: account
-#: code:addons/account/invoice.py:1422
+#: code:addons/account/invoice.py:1437
#, python-format
msgid ""
"You selected an Unit of Measure which is not compatible with the product."
msgstr "Você selecionou uma unidade que não é compatível com o produto."
#. module: account
-#: code:addons/account/invoice.py:473
+#: code:addons/account/invoice.py:476
#, python-format
msgid ""
"The Payment Term of Supplier does not have Payment Term Lines(Computation) "
@@ -3949,7 +3950,7 @@ msgid "Acc.Type"
msgstr "Tipo de Conta"
#. module: account
-#: code:addons/account/invoice.py:714
+#: code:addons/account/invoice.py:722
#, python-format
msgid "Global taxes defined, but are not in invoice lines !"
msgstr ""
@@ -4014,7 +4015,7 @@ msgstr ""
"...) os quais já são gerados com status 'Postado'."
#. module: account
-#: code:addons/account/account_analytic_line.py:91
+#: code:addons/account/account_analytic_line.py:90
#, python-format
msgid "There is no expense account defined for this product: \"%s\" (id:%d)"
msgstr ""
@@ -4193,7 +4194,7 @@ msgid "Credit Notes"
msgstr "Notas de crédito"
#. module: account
-#: code:addons/account/account.py:2067
+#: code:addons/account/account.py:2081
#: code:addons/account/wizard/account_use_model.py:69
#, python-format
msgid "Unable to find a valid period !"
@@ -4247,7 +4248,7 @@ msgstr "Taxa incluida no preço"
#. module: account
#: model:ir.model,name:account.model_account_analytic_cost_ledger_journal_report
msgid "Account Analytic Cost Ledger For Journal Report"
-msgstr ""
+msgstr "Livro-razão Conta Custo Analítico para o Relatório de Diários"
#. module: account
#: model:ir.actions.act_window,name:account.action_model_form
@@ -4266,11 +4267,11 @@ msgid "Change"
msgstr "Alterar"
#. module: account
-#: code:addons/account/account.py:1290
-#: code:addons/account/account.py:1318
-#: code:addons/account/account.py:1325
-#: code:addons/account/account_move_line.py:1055
-#: code:addons/account/invoice.py:896
+#: code:addons/account/account.py:1304
+#: code:addons/account/account.py:1332
+#: code:addons/account/account.py:1339
+#: code:addons/account/account_move_line.py:1061
+#: code:addons/account/invoice.py:904
#: code:addons/account/wizard/account_automatic_reconcile.py:152
#: code:addons/account/wizard/account_fiscalyear_close.py:78
#: code:addons/account/wizard/account_fiscalyear_close.py:81
@@ -4376,7 +4377,7 @@ msgid "You must define an analytic journal of type '%s' !"
msgstr "Você tem que definir um diário analítico '%s' !"
#. module: account
-#: code:addons/account/account.py:1397
+#: code:addons/account/account.py:1411
#, python-format
msgid ""
"Couldn't create move with currency different from the secondary currency of "
@@ -4448,7 +4449,7 @@ msgid "Invoices"
msgstr "Faturas"
#. module: account
-#: code:addons/account/invoice.py:804
+#: code:addons/account/invoice.py:812
#, python-format
msgid ""
"Please verify the price of the invoice !\n"
@@ -4562,25 +4563,24 @@ msgid "Third Party (Country)"
msgstr "Terceiro (País)"
#. module: account
-#: code:addons/account/account.py:938
-#: code:addons/account/account.py:940
-#: code:addons/account/account.py:1181
-#: code:addons/account/account.py:1393
-#: code:addons/account/account.py:1397
-#: code:addons/account/account_cash_statement.py:249
-#: code:addons/account/account_move_line.py:780
-#: code:addons/account/account_move_line.py:803
-#: code:addons/account/account_move_line.py:805
-#: code:addons/account/account_move_line.py:808
-#: code:addons/account/account_move_line.py:810
-#: code:addons/account/account_move_line.py:1117
+#: code:addons/account/account.py:952
+#: code:addons/account/account.py:954
+#: code:addons/account/account.py:1195
+#: code:addons/account/account.py:1407
+#: code:addons/account/account.py:1411
+#: code:addons/account/account_cash_statement.py:250
+#: code:addons/account/account_move_line.py:771
+#: code:addons/account/account_move_line.py:794
+#: code:addons/account/account_move_line.py:796
+#: code:addons/account/account_move_line.py:799
+#: code:addons/account/account_move_line.py:801
+#: code:addons/account/account_move_line.py:1123
#: code:addons/account/report/common_report_header.py:92
-#: code:addons/account/wizard/account_change_currency.py:39
-#: code:addons/account/wizard/account_change_currency.py:60
-#: code:addons/account/wizard/account_change_currency.py:65
-#: code:addons/account/wizard/account_change_currency.py:71
+#: code:addons/account/wizard/account_change_currency.py:38
+#: code:addons/account/wizard/account_change_currency.py:59
+#: code:addons/account/wizard/account_change_currency.py:64
+#: code:addons/account/wizard/account_change_currency.py:70
#: code:addons/account/wizard/account_move_bank_reconcile.py:49
-#: code:addons/account/wizard/account_open_closed_fiscalyear.py:40
#: code:addons/account/wizard/account_report_common.py:120
#: code:addons/account/wizard/account_report_common.py:126
#, python-format
@@ -4602,7 +4602,7 @@ msgid "Bank Details"
msgstr "Detalhes bancários"
#. module: account
-#: code:addons/account/invoice.py:720
+#: code:addons/account/invoice.py:728
#, python-format
msgid "Taxes missing !"
msgstr "Impostos faltando!"
@@ -4661,7 +4661,7 @@ msgid "Check Date not in the Period"
msgstr "Verificar Data fora do Período"
#. module: account
-#: code:addons/account/account.py:1210
+#: code:addons/account/account.py:1224
#, python-format
msgid ""
"You can not modify a posted entry of this journal !\n"
@@ -4683,7 +4683,7 @@ msgid "Child Tax Accounts"
msgstr "Contas de impostos derivados (subcontas)"
#. module: account
-#: code:addons/account/account.py:940
+#: code:addons/account/account.py:954
#, python-format
msgid "Start period should be smaller then End period"
msgstr "Período Inicial deve ser anterior ao Período Final"
@@ -4713,6 +4713,7 @@ msgstr "Balanço analítico -"
#: report:account.general.journal:0
#: field:account.general.journal,target_move:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: field:account.move.journal,target_move:0
#: report:account.partner.balance:0
@@ -4795,7 +4796,7 @@ msgid "Line 1:"
msgstr "Linha 1:"
#. module: account
-#: code:addons/account/account.py:1167
+#: code:addons/account/account.py:1181
#, python-format
msgid "Integrity Error !"
msgstr "Erro de integridade !"
@@ -4945,7 +4946,7 @@ msgstr ""
"um parceiro"
#. module: account
-#: code:addons/account/account.py:2067
+#: code:addons/account/account.py:2081
#: code:addons/account/wizard/account_use_model.py:69
#, python-format
msgid "No period found !"
@@ -5020,7 +5021,7 @@ msgstr ""
"28/02."
#. module: account
-#: code:addons/account/account.py:2896
+#: code:addons/account/account.py:2940
#: code:addons/account/installer.py:283
#: code:addons/account/installer.py:295
#, python-format
@@ -5048,7 +5049,7 @@ msgid "Start of period"
msgstr "Início do período"
#. module: account
-#: code:addons/account/account_move_line.py:1193
+#: code:addons/account/account_move_line.py:1199
#, python-format
msgid ""
"You can not do this modification on a reconciled entry ! Please note that "
@@ -5060,7 +5061,7 @@ msgstr ""
#. module: account
#: model:ir.model,name:account.model_account_common_account_report
msgid "Account Common Account Report"
-msgstr ""
+msgstr "Relatório de Contas da Contabilidade Geral"
#. module: account
#: field:account.bank.statement.line,name:0
@@ -5106,12 +5107,12 @@ msgstr "Diário de lançamentos do fim do ano"
#. module: account
#: code:addons/account/account_bank_statement.py:331
-#: code:addons/account/invoice.py:405
-#: code:addons/account/invoice.py:505
-#: code:addons/account/invoice.py:520
-#: code:addons/account/invoice.py:528
-#: code:addons/account/invoice.py:545
-#: code:addons/account/invoice.py:1347
+#: code:addons/account/invoice.py:408
+#: code:addons/account/invoice.py:508
+#: code:addons/account/invoice.py:523
+#: code:addons/account/invoice.py:531
+#: code:addons/account/invoice.py:552
+#: code:addons/account/invoice.py:1361
#: code:addons/account/wizard/account_move_journal.py:63
#, python-format
msgid "Configuration Error !"
@@ -5191,7 +5192,7 @@ msgid "Sort By"
msgstr "Ordenar Por"
#. module: account
-#: code:addons/account/account.py:1326
+#: code:addons/account/account.py:1340
#, python-format
msgid ""
"There is no default default credit account defined \n"
@@ -5346,7 +5347,7 @@ msgid "Generate Opening Entries"
msgstr "Gerar Lançamentos de Abertura"
#. module: account
-#: code:addons/account/account_move_line.py:738
+#: code:addons/account/account_move_line.py:729
#, python-format
msgid "Already Reconciled!"
msgstr "Já Reconciliado"
@@ -5384,7 +5385,7 @@ msgstr "Sub-contas"
#. module: account
#: view:account.move.line.reconcile:0
-#: code:addons/account/account_move_line.py:830
+#: code:addons/account/account_move_line.py:821
#, python-format
msgid "Write-Off"
msgstr "Baixa ou exclusão"
@@ -5433,6 +5434,8 @@ msgid ""
"Streamlines invoice payment and creates hooks to plug automated payment "
"systems in."
msgstr ""
+"Simplifica o pagamento de faturas e cria ligações com o sistema de pagamento "
+"automático."
#. module: account
#: field:account.payment.term.line,value:0
@@ -5534,7 +5537,7 @@ msgid "# of Lines"
msgstr "# de Linhas"
#. module: account
-#: code:addons/account/wizard/account_change_currency.py:60
+#: code:addons/account/wizard/account_change_currency.py:59
#, python-format
msgid "New currency is not confirured properly !"
msgstr "A nova moeda não está configurada corretamente !"
@@ -5559,14 +5562,14 @@ msgid "Filter by"
msgstr "Filtrar por"
#. module: account
-#: code:addons/account/account_move_line.py:1131
-#: code:addons/account/account_move_line.py:1214
+#: code:addons/account/account_move_line.py:1137
+#: code:addons/account/account_move_line.py:1220
#, python-format
msgid "You can not use an inactive account!"
msgstr "Voce não pode usar uma conta inativa!"
#. module: account
-#: code:addons/account/account_move_line.py:803
+#: code:addons/account/account_move_line.py:794
#, python-format
msgid "Entries are not of the same account or already reconciled ! "
msgstr "Lançamentos não são das mesmas contas ou já estão conciliados ! "
@@ -5601,7 +5604,7 @@ msgstr "7"
#. module: account
#: code:addons/account/account_bank_statement.py:391
-#: code:addons/account/invoice.py:370
+#: code:addons/account/invoice.py:373
#, python-format
msgid "Invalid action !"
msgstr "Ação invalida !"
@@ -5821,7 +5824,7 @@ msgid "Companies"
msgstr "Empresas"
#. module: account
-#: code:addons/account/account.py:532
+#: code:addons/account/account.py:546
#, python-format
msgid ""
"You cannot modify Company of account as its related record exist in Entry "
@@ -6102,9 +6105,9 @@ msgid "Optional create"
msgstr "Criação opcional"
#. module: account
-#: code:addons/account/invoice.py:406
-#: code:addons/account/invoice.py:506
-#: code:addons/account/invoice.py:1348
+#: code:addons/account/invoice.py:409
+#: code:addons/account/invoice.py:509
+#: code:addons/account/invoice.py:1362
#, python-format
msgid "Can not find account chart for this company, Please Create account."
msgstr ""
@@ -6257,8 +6260,8 @@ msgid "Analytic Entries Statistics"
msgstr "Estatísticas de Lançamentos Analíticos"
#. module: account
-#: code:addons/account/account_analytic_line.py:143
-#: code:addons/account/account_move_line.py:905
+#: code:addons/account/account_analytic_line.py:141
+#: code:addons/account/account_move_line.py:897
#, python-format
msgid "Entries: "
msgstr "Lancamentos: "
@@ -6269,7 +6272,7 @@ msgid "Create manual recurring entries in a chosen journal."
msgstr "Criar lançamentos recorrentes manuais no diário escolhido."
#. module: account
-#: code:addons/account/account.py:1393
+#: code:addons/account/account.py:1407
#, python-format
msgid "Couldn't create move between different companies"
msgstr "Não foi possível criar movimentação entre empresas diferentes"
@@ -6316,7 +6319,7 @@ msgid "Total debit"
msgstr "Débito Total"
#. module: account
-#: code:addons/account/account_move_line.py:781
+#: code:addons/account/account_move_line.py:772
#, python-format
msgid "Entry \"%s\" is not valid !"
msgstr "Lançamento \"%s\" não é válido"
@@ -6386,30 +6389,31 @@ msgid " valuation: percent"
msgstr " valorização: porcentagem"
#. module: account
-#: code:addons/account/account.py:499
-#: code:addons/account/account.py:501
-#: code:addons/account/account.py:822
-#: code:addons/account/account.py:901
-#: code:addons/account/account.py:976
-#: code:addons/account/account.py:1204
-#: code:addons/account/account.py:1210
-#: code:addons/account/account.py:2095
-#: code:addons/account/account.py:2333
-#: code:addons/account/account_analytic_line.py:90
-#: code:addons/account/account_analytic_line.py:99
+#: code:addons/account/account.py:509
+#: code:addons/account/account.py:511
+#: code:addons/account/account.py:836
+#: code:addons/account/account.py:915
+#: code:addons/account/account.py:990
+#: code:addons/account/account.py:1218
+#: code:addons/account/account.py:1224
+#: code:addons/account/account.py:2109
+#: code:addons/account/account.py:2357
+#: code:addons/account/account_analytic_line.py:89
+#: code:addons/account/account_analytic_line.py:98
#: code:addons/account/account_bank_statement.py:292
#: code:addons/account/account_bank_statement.py:305
#: code:addons/account/account_bank_statement.py:345
-#: code:addons/account/account_cash_statement.py:328
-#: code:addons/account/account_cash_statement.py:348
-#: code:addons/account/account_move_line.py:1176
-#: code:addons/account/account_move_line.py:1191
-#: code:addons/account/account_move_line.py:1193
-#: code:addons/account/invoice.py:785
-#: code:addons/account/invoice.py:815
-#: code:addons/account/invoice.py:1008
+#: code:addons/account/account_cash_statement.py:329
+#: code:addons/account/account_cash_statement.py:349
+#: code:addons/account/account_move_line.py:1182
+#: code:addons/account/account_move_line.py:1197
+#: code:addons/account/account_move_line.py:1199
+#: code:addons/account/invoice.py:793
+#: code:addons/account/invoice.py:823
+#: code:addons/account/invoice.py:1014
#: code:addons/account/wizard/account_invoice_refund.py:100
#: code:addons/account/wizard/account_invoice_refund.py:102
+#: code:addons/account/wizard/account_open_closed_fiscalyear.py:40
#: code:addons/account/wizard/account_use_model.py:44
#, python-format
msgid "Error !"
@@ -6529,7 +6533,7 @@ msgid "Journal Select"
msgstr "Selecionar Diário"
#. module: account
-#: code:addons/account/wizard/account_change_currency.py:65
+#: code:addons/account/wizard/account_change_currency.py:64
#, python-format
msgid "Currnt currency is not confirured properly !"
msgstr "A moeda atual não está configurada corretamente !"
@@ -6546,9 +6550,11 @@ msgstr "Posição Fiscal dos Impostos"
#. module: account
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: view:account.report.general.ledger:0
#: model:ir.actions.act_window,name:account.action_account_general_ledger_menu
#: model:ir.actions.report.xml,name:account.account_general_ledger
+#: model:ir.actions.report.xml,name:account.account_general_ledger_landscape
#: model:ir.ui.menu,name:account.menu_general_ledger
msgid "General Ledger"
msgstr "Livro Razão"
@@ -6609,7 +6615,7 @@ msgid "Total:"
msgstr "Total:"
#. module: account
-#: code:addons/account/account.py:2050
+#: code:addons/account/account.py:2064
#, python-format
msgid ""
"You can specify year, month and date in the name of the model using the "
@@ -6646,7 +6652,7 @@ msgid "Child Codes"
msgstr "Códigos derivados (sub-contas)"
#. module: account
-#: code:addons/account/invoice.py:473
+#: code:addons/account/invoice.py:476
#: code:addons/account/wizard/account_invoice_refund.py:137
#, python-format
msgid "Data Insufficient !"
@@ -6830,7 +6836,7 @@ msgid "Lines"
msgstr "Linhas"
#. module: account
-#: code:addons/account/invoice.py:521
+#: code:addons/account/invoice.py:524
#, python-format
msgid ""
"Can not find account chart for this company in invoice line account, Please "
@@ -7031,7 +7037,7 @@ msgstr ""
"personalizado."
#. module: account
-#: code:addons/account/account.py:938
+#: code:addons/account/account.py:952
#, python-format
msgid "You should have chosen periods that belongs to the same company"
msgstr "Você deveria ter escolhido períodos que pertencem a mesma empresa"
@@ -7145,7 +7151,7 @@ msgid "Sign on Reports"
msgstr "Assinar relatórios"
#. module: account
-#: code:addons/account/account_cash_statement.py:249
+#: code:addons/account/account_cash_statement.py:250
#, python-format
msgid "You can not have two open register for the same journal"
msgstr "Você não pode ter dois registradores abertos para o mesmo diário"
@@ -7180,7 +7186,6 @@ msgstr ""
#. module: account
#: report:account.invoice:0
#: view:account.invoice:0
-#: report:account.move.voucher:0
msgid "PRO-FORMA"
msgstr "Pro-forma"
@@ -7212,6 +7217,7 @@ msgstr "Informação Opcional"
#. module: account
#: view:account.analytic.line:0
+#: field:account.bank.statement,user_id:0
#: view:account.journal:0
#: field:account.journal,user_id:0
#: view:analytic.entries.report:0
@@ -7239,13 +7245,13 @@ msgstr ""
"Você pode colocar data limite para o pagamento desta linha."
#. module: account
-#: code:addons/account/account_move_line.py:1271
+#: code:addons/account/account_move_line.py:1277
#, python-format
msgid "Bad account !"
msgstr "Conta errada!"
#. module: account
-#: code:addons/account/account.py:2777
+#: code:addons/account/account.py:2821
#: code:addons/account/installer.py:432
#, python-format
msgid "Sales Journal"
@@ -7263,7 +7269,7 @@ msgid "Invoice Tax"
msgstr "Taxa de fatura"
#. module: account
-#: code:addons/account/account_move_line.py:1246
+#: code:addons/account/account_move_line.py:1252
#, python-format
msgid "No piece number !"
msgstr "Nenhum número da parte!"
@@ -7510,17 +7516,17 @@ msgid "Fixed"
msgstr "Fixo"
#. module: account
-#: code:addons/account/account.py:506
-#: code:addons/account/account.py:519
-#: code:addons/account/account.py:522
+#: code:addons/account/account.py:516
+#: code:addons/account/account.py:529
#: code:addons/account/account.py:532
-#: code:addons/account/account.py:640
-#: code:addons/account/account.py:927
-#: code:addons/account/account_move_line.py:732
-#: code:addons/account/account_move_line.py:776
-#: code:addons/account/invoice.py:714
-#: code:addons/account/invoice.py:717
-#: code:addons/account/invoice.py:720
+#: code:addons/account/account.py:546
+#: code:addons/account/account.py:654
+#: code:addons/account/account.py:941
+#: code:addons/account/account_move_line.py:723
+#: code:addons/account/account_move_line.py:767
+#: code:addons/account/invoice.py:722
+#: code:addons/account/invoice.py:725
+#: code:addons/account/invoice.py:728
#, python-format
msgid "Warning !"
msgstr "Atenção !"
@@ -7552,6 +7558,7 @@ msgstr "Valor (por extenso) :"
#: view:account.entries.report:0
#: field:account.entries.report,partner_id:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: view:account.invoice:0
#: field:account.invoice,partner_id:0
#: field:account.invoice.line,partner_id:0
@@ -7582,7 +7589,7 @@ msgid "Can not %s draft/proforma/cancel invoice."
msgstr "Não pode %s provisório/proforma/cancelar fatura."
#. module: account
-#: code:addons/account/invoice.py:787
+#: code:addons/account/invoice.py:795
#, python-format
msgid "No Invoice Lines !"
msgstr "Sem Linhas na Fatura !"
@@ -7631,7 +7638,7 @@ msgid "Deferral Method"
msgstr "Método para deferimento"
#. module: account
-#: code:addons/account/invoice.py:359
+#: code:addons/account/invoice.py:360
#, python-format
msgid "Invoice '%s' is paid."
msgstr "A Fatura '%s' está paga."
@@ -7696,7 +7703,7 @@ msgid "Associated Partner"
msgstr "Parceiro Associado"
#. module: account
-#: code:addons/account/invoice.py:1284
+#: code:addons/account/invoice.py:1298
#, python-format
msgid "You must first select a partner !"
msgstr "Voce precisa selecionar um parceiro primeiro !"
@@ -7766,7 +7773,7 @@ msgid "Choose Fiscal Year"
msgstr "Escolha o Ano Fiscal"
#. module: account
-#: code:addons/account/account.py:2841
+#: code:addons/account/account.py:2885
#: code:addons/account/installer.py:495
#, python-format
msgid "Purchase Refund Journal"
@@ -7804,6 +7811,7 @@ msgstr "Gestão Financeira e Contábil"
#: view:account.entries.report:0
#: field:account.entries.report,period_id:0
#: view:account.fiscalyear:0
+#: report:account.general.ledger_landscape:0
#: view:account.invoice:0
#: view:account.invoice.report:0
#: field:account.journal.period,period_id:0
@@ -7983,7 +7991,7 @@ msgid "Account Types"
msgstr "Tipos de Conta"
#. module: account
-#: code:addons/account/invoice.py:897
+#: code:addons/account/invoice.py:905
#, python-format
msgid "Cannot create invoice move on centralised journal"
msgstr "Não é possível criar um movimento de fatura no diário centralizado"
@@ -8033,6 +8041,7 @@ msgstr "Diário de Devolução"
#: report:account.account.balance:0
#: report:account.central.journal:0
#: report:account.general.journal:0
+#: report:account.general.ledger_landscape:0
#: report:account.partner.balance:0
msgid "Filter By"
msgstr "Filtrar Por"
@@ -8075,7 +8084,7 @@ msgid "Payment Term Line"
msgstr "Linha da forma de pagamento"
#. module: account
-#: code:addons/account/account.py:2794
+#: code:addons/account/account.py:2838
#: code:addons/account/installer.py:452
#, python-format
msgid "Purchase Journal"
@@ -8247,8 +8256,8 @@ msgstr ""
"O valor do recibo deve ser o mesmo valor da linha equivalente no extrato"
#. module: account
-#: code:addons/account/account_move_line.py:1131
-#: code:addons/account/account_move_line.py:1214
+#: code:addons/account/account_move_line.py:1137
+#: code:addons/account/account_move_line.py:1220
#, python-format
msgid "Bad account!"
msgstr "Conta inválida!"
@@ -8259,7 +8268,7 @@ msgid "Keep empty for all open fiscal years"
msgstr "Deixe vazio para todos os anos fiscais abertos"
#. module: account
-#: code:addons/account/account_move_line.py:1056
+#: code:addons/account/account_move_line.py:1062
#, python-format
msgid "The account move (%s) for centralisation has been confirmed!"
msgstr "O movimento de conta (%s) para centralização foi confirmado!"
@@ -8282,6 +8291,7 @@ msgstr ""
#: field:account.entries.report,currency_id:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.invoice,currency_id:0
#: field:account.invoice.report,currency_id:0
#: field:account.journal,currency:0
@@ -8479,14 +8489,14 @@ msgid "Period from"
msgstr "Período de"
#. module: account
-#: code:addons/account/account.py:2817
+#: code:addons/account/account.py:2861
#: code:addons/account/installer.py:476
#, python-format
msgid "Sales Refund Journal"
msgstr "Diário de Devolução de Vendas"
#. module: account
-#: code:addons/account/account.py:927
+#: code:addons/account/account.py:941
#, python-format
msgid ""
"You cannot modify company of this period as its related record exist in "
@@ -8537,7 +8547,7 @@ msgid "Purchase Tax(%)"
msgstr "Imposto de Compra(%)"
#. module: account
-#: code:addons/account/invoice.py:787
+#: code:addons/account/invoice.py:795
#, python-format
msgid "Please create some invoice lines."
msgstr "Por favor, crie algumas linhas da fatura."
@@ -8553,7 +8563,7 @@ msgid "Configure Your Accounting Application"
msgstr "Configure sua Aplicação Contábil"
#. module: account
-#: code:addons/account/account.py:2820
+#: code:addons/account/account.py:2864
#: code:addons/account/installer.py:479
#, python-format
msgid "SCNJ"
@@ -8597,6 +8607,7 @@ msgstr "Gestão de Acompanhamentos"
#: report:account.central.journal:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: report:account.partner.balance:0
#: report:account.third_party_ledger:0
@@ -8606,7 +8617,7 @@ msgid "Start Period"
msgstr "Período Inicial"
#. module: account
-#: code:addons/account/account.py:2333
+#: code:addons/account/account.py:2357
#, python-format
msgid "Cannot locate parent code for template account!"
msgstr "Impossível localizar o código da conta pai para o modelo de conta!"
@@ -8643,7 +8654,7 @@ msgid "Accountant validates the accounting entries coming from the invoice. "
msgstr "O Contador valida os lançamentos contábeis vindos da fatura. "
#. module: account
-#: code:addons/account/invoice.py:1008
+#: code:addons/account/invoice.py:1014
#, python-format
msgid ""
"You cannot cancel the Invoice which is Partially Paid! You need to "
@@ -8673,7 +8684,7 @@ msgid "You can not create move line on view account."
msgstr "Você não pode criar linhas de movimento em uma conta de exibição."
#. module: account
-#: code:addons/account/wizard/account_change_currency.py:71
+#: code:addons/account/wizard/account_change_currency.py:70
#, python-format
msgid "Current currency is not confirured properly !"
msgstr "A moeda atual não está configurada corretamente !"
@@ -8726,6 +8737,7 @@ msgstr "Manter vazio para usar a conta de receita"
#: field:account.entries.report,balance:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.move.line,balance:0
#: report:account.partner.balance:0
#: selection:account.payment.term.line,value:0
@@ -8744,6 +8756,7 @@ msgstr "Entrada manual ou automática no sistema"
#. module: account
#: report:account.account.balance:0
+#: report:account.general.ledger_landscape:0
msgid "Display Account"
msgstr "Mostrar Conta"
@@ -8870,6 +8883,7 @@ msgstr "Lançamento manual"
#. module: account
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: field:account.move.line,move_id:0
#: field:analytic.entries.report,move_id:0
@@ -8877,7 +8891,7 @@ msgid "Move"
msgstr "Movimento"
#. module: account
-#: code:addons/account/account_move_line.py:1128
+#: code:addons/account/account_move_line.py:1134
#, python-format
msgid "You can not change the tax, you should remove and recreate lines !"
msgstr ""
@@ -8976,6 +8990,7 @@ msgstr "Balanço de Conta Analítica"
#: report:account.central.journal:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: report:account.partner.balance:0
#: report:account.third_party_ledger:0
@@ -9019,7 +9034,7 @@ msgid "Account Subscription"
msgstr "Inscriçãoda conta"
#. module: account
-#: code:addons/account/invoice.py:717
+#: code:addons/account/invoice.py:725
#, python-format
msgid ""
"Tax base different !\n"
@@ -9048,6 +9063,7 @@ msgstr "Inscrição de Lançamento"
#: report:account.general.journal:0
#: field:account.general.journal,date_from:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.installer,date_start:0
#: report:account.journal.period.print:0
#: report:account.partner.balance:0
@@ -9076,7 +9092,7 @@ msgid "Unreconciled"
msgstr "Não conciliado"
#. module: account
-#: code:addons/account/invoice.py:804
+#: code:addons/account/invoice.py:812
#, python-format
msgid "Bad total !"
msgstr "Total inválido!"
@@ -9134,13 +9150,13 @@ msgid "Active"
msgstr "Ativo"
#. module: account
-#: code:addons/account/invoice.py:354
+#: code:addons/account/invoice.py:353
#, python-format
msgid "Unknown Error"
msgstr "Erro Desconhecido"
#. module: account
-#: code:addons/account/account.py:1167
+#: code:addons/account/account.py:1181
#, python-format
msgid ""
"You cannot validate a non-balanced entry !\n"
@@ -9188,10 +9204,10 @@ msgstr "Validar Movimento de Conta"
#: field:account.entries.report,credit:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: field:account.model.line,credit:0
#: field:account.move.line,credit:0
-#: report:account.move.voucher:0
#: report:account.partner.balance:0
#: report:account.tax.code.entries:0
#: report:account.third_party_ledger:0
@@ -9441,7 +9457,6 @@ msgstr "Selecione o período"
#: view:account.move:0
#: selection:account.move,state:0
#: view:account.move.line:0
-#: report:account.move.voucher:0
msgid "Posted"
msgstr "Postado"
@@ -9460,6 +9475,7 @@ msgstr "Postado"
#: report:account.general.journal:0
#: field:account.general.journal,date_to:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.installer,date_stop:0
#: report:account.journal.period.print:0
#: report:account.partner.balance:0
@@ -9513,7 +9529,7 @@ msgid "This is a model for recurring accounting entries"
msgstr "Este é um modelo para lançamentos recorrentes de contabilização"
#. module: account
-#: code:addons/account/account_analytic_line.py:100
+#: code:addons/account/account_analytic_line.py:99
#, python-format
msgid "There is no income account defined for this product: \"%s\" (id:%d)"
msgstr "Não há conta de entrada definida para este produto:\"%s\" (id:%d)"
@@ -9668,8 +9684,8 @@ msgid "End period"
msgstr "Período final"
#. module: account
-#: code:addons/account/account_move_line.py:738
-#: code:addons/account/account_move_line.py:815
+#: code:addons/account/account_move_line.py:729
+#: code:addons/account/account_move_line.py:806
#: code:addons/account/wizard/account_invoice_state.py:44
#: code:addons/account/wizard/account_invoice_state.py:68
#: code:addons/account/wizard/account_report_balance_sheet.py:70
@@ -9735,10 +9751,10 @@ msgstr "Fatura do fornecedor"
#: field:account.entries.report,debit:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: field:account.model.line,debit:0
#: field:account.move.line,debit:0
-#: report:account.move.voucher:0
#: report:account.partner.balance:0
#: report:account.tax.code.entries:0
#: report:account.third_party_ledger:0
@@ -9775,7 +9791,7 @@ msgid "Recurring"
msgstr "Recorrente"
#. module: account
-#: code:addons/account/account_move_line.py:805
+#: code:addons/account/account_move_line.py:796
#, python-format
msgid "Entry is already reconciled"
msgstr "Este lançamento já está conciliado"
@@ -9796,7 +9812,7 @@ msgid "Range"
msgstr "Intervalo"
#. module: account
-#: code:addons/account/account_move_line.py:1246
+#: code:addons/account/account_move_line.py:1252
#, python-format
msgid ""
"Can not create an automatic sequence for this piece !\n"
@@ -9936,7 +9952,7 @@ msgid "Accounts Mapping"
msgstr "Mapeando contas"
#. module: account
-#: code:addons/account/invoice.py:346
+#: code:addons/account/invoice.py:345
#, python-format
msgid "Invoice '%s' is waiting for validation."
msgstr "A fatura '%s' está aguardando validação."
@@ -9961,7 +9977,7 @@ msgid "The income or expense account related to the selected product."
msgstr "A conta de receita ou despesa relacionada ao produto selecionado."
#. module: account
-#: code:addons/account/account_move_line.py:1117
+#: code:addons/account/account_move_line.py:1123
#, python-format
msgid "The date of your Journal Entry is not in the defined period!"
msgstr "A data do seu Lançamento de Diário não está no período definido!"
@@ -10168,7 +10184,7 @@ msgid "You must enter a period length that cannot be 0 or below !"
msgstr "Você deve digitar um período que não seja 0 ou menor !"
#. module: account
-#: code:addons/account/account.py:501
+#: code:addons/account/account.py:511
#, python-format
msgid "You cannot remove an account which has account entries!. "
msgstr "Você não pode remover uma conta que contém lançamentos! "
@@ -10253,6 +10269,14 @@ msgstr ""
#~ msgid "x Checks Journal"
#~ msgstr "x Conferências diárias"
+#, python-format
+#~ msgid ""
+#~ "No period defined for this date !\n"
+#~ "Please create a fiscal year."
+#~ msgstr ""
+#~ "Nenhum período definido para esta data !\n"
+#~ "Por favor crie um ano fiscal."
+
#~ msgid "Account No."
#~ msgstr "Conta nro."
@@ -10412,6 +10436,26 @@ msgstr ""
#~ "Indica se o imposto deve ser incluído na base de cálculo para calcular os "
#~ "próximos impostos."
+#, python-format
+#~ msgid ""
+#~ "You can specify year, month and date in the name of the model using the "
+#~ "following labels:\n"
+#~ "\n"
+#~ "%(year)s : To Specify Year \n"
+#~ "%(month)s : To Specify Month \n"
+#~ "%(date)s : Current Date\n"
+#~ "\n"
+#~ "e.g. My model on %(date)s"
+#~ msgstr ""
+#~ "Você pode especificar o ano, mês e data no nome do modelo usando as "
+#~ "seguintes expressões:\n"
+#~ "\n"
+#~ "%(year)s : Para especificar o Ano \n"
+#~ "%(month)s : Para especificar o Mês \n"
+#~ "%(date)s : Data corrente\n"
+#~ "\n"
+#~ "ex: Meu modelo em %(date)s"
+
#~ msgid "Journal - Period"
#~ msgstr "Dario - Período"
@@ -11744,3 +11788,7 @@ msgstr ""
#, python-format
#~ msgid "is validated."
#~ msgstr "está validada."
+
+#, python-format
+#~ msgid "Date not in a defined fiscal year"
+#~ msgstr "A data não está em um ano fiscal definido"
diff --git a/addons/account/i18n/zh_CN.po b/addons/account/i18n/zh_CN.po
index 19544fb613b..a76da12910a 100644
--- a/addons/account/i18n/zh_CN.po
+++ b/addons/account/i18n/zh_CN.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-02-03 07:35+0000\n"
+"PO-Revision-Date: 2011-07-02 15:26+0000\n"
"Last-Translator: Wei \"oldrev\" Li \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-04-29 05:14+0000\n"
-"X-Generator: Launchpad (build 12758)\n"
+"X-Launchpad-Export-Date: 2011-07-03 04:46+0000\n"
+"X-Generator: Launchpad (build 13168)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@@ -33,7 +33,7 @@ msgid "No End of year journal defined for the fiscal year"
msgstr "此财务年度没有定义年终日记账"
#. module: account
-#: code:addons/account/account.py:506
+#: code:addons/account/account.py:516
#, python-format
msgid ""
"You cannot remove/deactivate an account which is set as a property to any "
@@ -65,7 +65,7 @@ msgid "Residual"
msgstr "剩余的"
#. module: account
-#: code:addons/account/invoice.py:785
+#: code:addons/account/invoice.py:793
#, python-format
msgid "Please define sequence on invoice journal"
msgstr "请为发票日记账对应序列"
@@ -110,7 +110,7 @@ msgstr "从发票或支付凭证导入"
#. module: account
#: model:ir.model,name:account.model_wizard_multi_charts_accounts
msgid "wizard.multi.charts.accounts"
-msgstr "wizard.multi.charts.accounts"
+msgstr "多科目图表向导"
#. module: account
#: view:account.move:0
@@ -122,7 +122,7 @@ msgstr "借方合计"
msgid ""
"If you unreconciliate transactions, you must also verify all the actions "
"that are linked to those transactions because they will not be disabled"
-msgstr ""
+msgstr "如果您用非关联交易,您还必须验证所有链接到这些交易行动,因为他们不会被禁用"
#. module: account
#: report:account.tax.code.entries:0
@@ -130,7 +130,7 @@ msgid "Accounting Entries-"
msgstr "会计分录"
#. module: account
-#: code:addons/account/account.py:1291
+#: code:addons/account/account.py:1305
#, python-format
msgid "You can not delete posted movement: \"%s\"!"
msgstr "不能删除已登账的凭证行:\"%s\"!"
@@ -171,10 +171,10 @@ msgstr "选择会计年度 "
msgid ""
"If the active field is set to False, it will allow you to hide the payment "
"term without removing it."
-msgstr ""
+msgstr "如果设置为false,该付款条款将会被隐藏。"
#. module: account
-#: code:addons/account/invoice.py:1421
+#: code:addons/account/invoice.py:1436
#, python-format
msgid "Warning!"
msgstr "警告!"
@@ -212,7 +212,7 @@ msgid ""
"Gives the type of the analytic journal. When it needs for a document (eg: an "
"invoice) to create analytic entries, OpenERP will look for a matching "
"journal of the same type."
-msgstr ""
+msgstr "给出了分析报表类型。当一个文件(如:发票),需要创建解析条目,OpenERP将寻找一个相同类型的匹配杂志。"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_tax_template_form
@@ -223,10 +223,10 @@ msgstr "税模板"
#. module: account
#: model:ir.model,name:account.model_account_tax
msgid "account.tax"
-msgstr "科目.税"
+msgstr "税科目"
#. module: account
-#: code:addons/account/account.py:901
+#: code:addons/account/account.py:915
#, python-format
msgid ""
"No period defined for this date: %s !\n"
@@ -238,7 +238,7 @@ msgstr ""
#. module: account
#: model:ir.model,name:account.model_account_move_line_reconcile_select
msgid "Move line reconcile select"
-msgstr ""
+msgstr "选择核销行"
#. module: account
#: help:account.model.line,sequence:0
@@ -256,15 +256,15 @@ msgid ""
msgstr "勾选此项使发票上不显示增值税"
#. module: account
-#: code:addons/account/invoice.py:1210
+#: code:addons/account/invoice.py:1224
#, python-format
msgid "Invoice '%s' is paid partially: %s%s of %s%s (%s%s remaining)"
-msgstr ""
+msgstr "发票'%s'已部分支付了%s%s ,总金额为:%s%s, 尚余%s%s未付"
#. module: account
#: model:process.transition,note:account.process_transition_supplierentriesreconcile0
msgid "Accounting entries are an input of the reconciliation."
-msgstr ""
+msgstr "会计分录必须借贷相等"
#. module: account
#: model:ir.ui.menu,name:account.menu_finance_management_belgian_reports
@@ -272,7 +272,7 @@ msgid "Belgian Reports"
msgstr "比利时报表"
#. module: account
-#: code:addons/account/account_move_line.py:1176
+#: code:addons/account/account_move_line.py:1182
#, python-format
msgid "You can not add/modify entries in a closed journal."
msgstr "不能添加/修改已结帐的凭证"
@@ -280,7 +280,7 @@ msgstr "不能添加/修改已结帐的凭证"
#. module: account
#: view:account.bank.statement:0
msgid "Calculated Balance"
-msgstr ""
+msgstr "计算余额"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_use_model_create_entry
@@ -310,7 +310,7 @@ msgid "St."
msgstr "结单编码"
#. module: account
-#: code:addons/account/invoice.py:529
+#: code:addons/account/invoice.py:532
#, python-format
msgid "Invoice line account company does not match with invoice company."
msgstr "发票明细的科目公司与发票头的公司不匹配。"
@@ -325,7 +325,7 @@ msgstr "字段名"
msgid ""
"Installs localized accounting charts to match as closely as possible the "
"accounting needs of your company based on your country."
-msgstr ""
+msgstr "安装本地化财务系统以尽可能的适应本国的财务要求"
#. module: account
#: code:addons/account/wizard/account_move_journal.py:63
@@ -335,12 +335,12 @@ msgid ""
"\n"
"You can create one in the menu: \n"
"Configuration/Financial Accounting/Accounts/Journals."
-msgstr ""
+msgstr "无法找到针对该公司%s类型的分类账簿"
#. module: account
#: model:ir.model,name:account.model_account_unreconcile
msgid "Account Unreconcile"
-msgstr ""
+msgstr "科目反核销"
#. module: account
#: view:product.product:0
@@ -352,7 +352,7 @@ msgstr "采购属性"
#: view:account.installer:0
#: view:account.installer.modules:0
msgid "Configure"
-msgstr ""
+msgstr "设置"
#. module: account
#: selection:account.entries.report,month:0
@@ -370,11 +370,12 @@ msgid ""
"OpenERP. Journal items are created by OpenERP if you use Bank Statements, "
"Cash Registers, or Customer/Supplier payments."
msgstr ""
+"本界面供财务人员在OpenERP中批量录入凭证之用。如果你在OpenERP使用银行对帐单,收银机,或者客户/供应商付款, 相应的分录会由系统自动产生。"
#. module: account
#: model:ir.model,name:account.model_account_tax_template
msgid "account.tax.template"
-msgstr ""
+msgstr "account.tax.template"
#. module: account
#: model:ir.model,name:account.model_account_bank_accounts_wizard
@@ -390,7 +391,7 @@ msgstr "建立日期"
#. module: account
#: selection:account.journal,type:0
msgid "Purchase Refund"
-msgstr ""
+msgstr "采购退款"
#. module: account
#: selection:account.journal,type:0
@@ -412,7 +413,7 @@ msgstr "打开会计年度"
msgid ""
"This field contains the informatin related to the numbering of the journal "
"entries of this journal."
-msgstr ""
+msgstr "该字段包含该分类账簿记录数量的信息"
#. module: account
#: field:account.journal,default_debit_account_id:0
@@ -462,6 +463,7 @@ msgid ""
"amount of each area of the tax declaration for your country. It’s presented "
"in a hierarchical structure, which can be modified to fit your needs."
msgstr ""
+"税务表是一个树状视图,反映了税务结构,并显示当前的纳税情况。税务表反映了国家规定的不同纳税领域的纳税申报数量情况。其设置为一个层次结构,请根据需要修改。"
#. module: account
#: view:account.analytic.line:0
@@ -500,17 +502,17 @@ msgstr "业务类型"
#. module: account
#: model:ir.model,name:account.model_account_invoice_confirm
msgid "Confirm the selected invoices"
-msgstr ""
+msgstr "确认选定的发票"
#. module: account
#: field:account.addtmpl.wizard,cparent_id:0
msgid "Parent target"
-msgstr ""
+msgstr "上级目标"
#. module: account
#: field:account.bank.statement,account_id:0
msgid "Account used in this journal"
-msgstr ""
+msgstr "这个分类账簿上的科目"
#. module: account
#: help:account.aged.trial.balance,chart_account_id:0
@@ -529,7 +531,7 @@ msgstr ""
#: help:account.report.general.ledger,chart_account_id:0
#: help:account.vat.declaration,chart_account_id:0
msgid "Select Charts of Accounts"
-msgstr ""
+msgstr "选择科目表"
#. module: account
#: view:product.product:0
@@ -539,7 +541,7 @@ msgstr "进项税"
#. module: account
#: model:ir.model,name:account.model_account_invoice_refund
msgid "Invoice Refund"
-msgstr ""
+msgstr "发票退款"
#. module: account
#: report:account.overdue:0
@@ -552,10 +554,10 @@ msgid "Not reconciled transactions"
msgstr "没核销的交易"
#. module: account
-#: code:addons/account/account_cash_statement.py:348
+#: code:addons/account/account_cash_statement.py:349
#, python-format
msgid "CashBox Balance is not matching with Calculated Balance !"
-msgstr ""
+msgstr "出纳帐与现金不一致"
#. module: account
#: view:account.fiscal.position:0
@@ -589,12 +591,12 @@ msgstr "所有"
#. module: account
#: field:account.invoice.report,address_invoice_id:0
msgid "Invoice Address Name"
-msgstr ""
+msgstr "发票地址"
#. module: account
#: selection:account.installer,period:0
msgid "3 Monthly"
-msgstr ""
+msgstr "3个月"
#. module: account
#: view:account.unreconcile.reconcile:0
@@ -606,7 +608,7 @@ msgstr "如果执行反核销, 你必须检验链接该处理的所有操作.
#. module: account
#: view:analytic.entries.report:0
msgid " 30 Days "
-msgstr ""
+msgstr " 30 天 "
#. module: account
#: field:ir.sequence,fiscal_ids:0
@@ -626,7 +628,7 @@ msgstr ""
#. module: account
#: sql_constraint:account.sequence.fiscalyear:0
msgid "Main Sequence must be different from current !"
-msgstr ""
+msgstr "序列号必须唯一"
#. module: account
#: field:account.invoice.tax,tax_amount:0
@@ -634,7 +636,7 @@ msgid "Tax Code Amount"
msgstr "税事务金额"
#. module: account
-#: code:addons/account/account.py:2779
+#: code:addons/account/account.py:2823
#: code:addons/account/installer.py:434
#, python-format
msgid "SAJ"
@@ -654,7 +656,7 @@ msgstr "关闭会计期间"
#. module: account
#: model:ir.model,name:account.model_account_common_partner_report
msgid "Account Common Partner Report"
-msgstr ""
+msgstr "普通合伙人的科目报表"
#. module: account
#: field:account.fiscalyear.close,period_id:0
@@ -664,11 +666,11 @@ msgstr "会计期间的启用凭证"
#. module: account
#: model:ir.model,name:account.model_account_journal_period
msgid "Journal Period"
-msgstr ""
+msgstr "明细帐期间"
#. module: account
-#: code:addons/account/account_move_line.py:732
-#: code:addons/account/account_move_line.py:776
+#: code:addons/account/account_move_line.py:723
+#: code:addons/account/account_move_line.py:767
#, python-format
msgid "To reconcile the entries company should be the same for all entries"
msgstr ""
@@ -688,7 +690,7 @@ msgstr "应收款科目"
#. module: account
#: model:ir.model,name:account.model_account_report_general_ledger
msgid "General Ledger Report"
-msgstr ""
+msgstr "总账报表"
#. module: account
#: view:account.invoice:0
@@ -708,7 +710,7 @@ msgstr ""
#. module: account
#: field:account.partner.reconcile.process,today_reconciled:0
msgid "Partners Reconciled Today"
-msgstr ""
+msgstr "今天合作伙伴不开心"
#. module: account
#: selection:account.payment.term.line,value:0
@@ -726,13 +728,13 @@ msgstr "表"
#: model:ir.model,name:account.model_project_account_analytic_line
#, python-format
msgid "Analytic Entries by line"
-msgstr ""
+msgstr "按行显示分析科目数据"
#. module: account
-#: code:addons/account/wizard/account_change_currency.py:39
+#: code:addons/account/wizard/account_change_currency.py:38
#, python-format
msgid "You can only change currency for Draft Invoice !"
-msgstr ""
+msgstr "您只能更改发票草案金额!"
#. module: account
#: view:account.analytic.journal:0
@@ -769,17 +771,17 @@ msgstr "反核销"
#. module: account
#: model:ir.model,name:account.model_account_analytic_Journal_report
msgid "Account Analytic Journal"
-msgstr ""
+msgstr "科目分析报表"
#. module: account
#: model:ir.model,name:account.model_account_automatic_reconcile
msgid "Automatic Reconcile"
-msgstr ""
+msgstr "自己核销"
#. module: account
#: view:account.payment.term.line:0
msgid "Due date Computation"
-msgstr ""
+msgstr "计算截止日期"
#. module: account
#: report:account.analytic.account.quantity_cost_ledger:0
@@ -793,7 +795,7 @@ msgstr "成本业务类型/凭证名称"
#: selection:report.account.sales,month:0
#: selection:report.account_type.sales,month:0
msgid "September"
-msgstr ""
+msgstr "9月"
#. module: account
#: selection:account.subscription,period_type:0
@@ -804,7 +806,7 @@ msgstr "天"
#: help:account.account.template,nocreate:0
msgid ""
"If checked, the new chart of accounts will not contain this by default."
-msgstr ""
+msgstr "如果选中,这一点的新报表科目将不包含在默认情况下。"
#. module: account
#: code:addons/account/wizard/account_invoice_refund.py:102
@@ -812,7 +814,7 @@ msgstr ""
msgid ""
"Can not %s invoice which is already reconciled, invoice should be "
"unreconciled first. You can only Refund this invoice"
-msgstr ""
+msgstr "无法%s该发票,该发票已核销,除非先将其反核销。目前只能对该发票做退款处理"
#. module: account
#: model:ir.actions.act_window,name:account.action_subscription_form_new
@@ -827,10 +829,10 @@ msgstr "计算"
#. module: account
#: view:account.move.line:0
msgid "Next Partner to reconcile"
-msgstr ""
+msgstr "与下一个合作伙伴对帐"
#. module: account
-#: code:addons/account/account_move_line.py:1191
+#: code:addons/account/account_move_line.py:1197
#, python-format
msgid ""
"You can not do this modification on a confirmed entry ! Please note that you "
@@ -841,7 +843,7 @@ msgstr "您不能修改已确认的凭证!您只能修改一些非重要字段
#: view:account.invoice.report:0
#: field:account.invoice.report,delay_to_pay:0
msgid "Avg. Delay To Pay"
-msgstr ""
+msgstr "延迟付款平均时间"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_tax_chart
@@ -864,7 +866,7 @@ msgstr "到期"
#: view:account.invoice.report:0
#: field:account.invoice.report,price_total_tax:0
msgid "Total With Tax"
-msgstr ""
+msgstr "总税单(纳税合计)"
#. module: account
#: view:account.invoice:0
@@ -872,7 +874,7 @@ msgstr ""
#: view:validate.account.move:0
#: view:validate.account.move.lines:0
msgid "Approve"
-msgstr ""
+msgstr "核准"
#. module: account
#: view:account.invoice:0
@@ -894,22 +896,22 @@ msgstr "合并"
#: view:account.invoice.report:0
#: view:account.move.line:0
msgid "Extended Filters..."
-msgstr ""
+msgstr "增加筛选条件"
#. module: account
#: model:ir.ui.menu,name:account.menu_account_central_journal
msgid "Centralizing Journal"
-msgstr ""
+msgstr "合并报表"
#. module: account
#: selection:account.journal,type:0
msgid "Sale Refund"
-msgstr ""
+msgstr "销售退款(货)"
#. module: account
#: model:process.node,note:account.process_node_accountingstatemententries0
msgid "Bank statement"
-msgstr ""
+msgstr "银行对帐单"
#. module: account
#: field:account.analytic.line,move_id:0
@@ -927,7 +929,7 @@ msgstr ""
#. module: account
#: view:account.analytic.line:0
msgid "Purchases"
-msgstr ""
+msgstr "采购单列表"
#. module: account
#: field:account.model,lines_id:0
@@ -952,11 +954,11 @@ msgid "Code"
msgstr "代码"
#. module: account
-#: code:addons/account/account.py:2083
+#: code:addons/account/account.py:2097
#: code:addons/account/account_bank_statement.py:350
-#: code:addons/account/account_move_line.py:170
+#: code:addons/account/account_move_line.py:169
#: code:addons/account/invoice.py:73
-#: code:addons/account/invoice.py:670
+#: code:addons/account/invoice.py:678
#: code:addons/account/wizard/account_use_model.py:81
#, python-format
msgid "No Analytic Journal !"
@@ -974,13 +976,13 @@ msgstr "业务伙伴余额"
#. module: account
#: field:account.bank.accounts.wizard,acc_name:0
msgid "Account Name."
-msgstr ""
+msgstr "科目名称"
#. module: account
#: field:account.chart.template,property_reserve_and_surplus_account:0
#: field:res.company,property_reserve_and_surplus_account:0
msgid "Reserve and Profit/Loss Account"
-msgstr ""
+msgstr "所有者权益类科目"
#. module: account
#: field:report.account.receivable,name:0
@@ -997,12 +999,12 @@ msgstr "横向模式"
#. module: account
#: view:board.board:0
msgid "Customer Invoices to Approve"
-msgstr ""
+msgstr "客户发票审核"
#. module: account
#: help:account.fiscalyear.close,fy_id:0
msgid "Select a Fiscal year to close"
-msgstr ""
+msgstr "关闭一个财政年度"
#. module: account
#: help:account.account,user_type:0
@@ -1010,12 +1012,12 @@ msgstr ""
msgid ""
"These types are defined according to your country. The type contains more "
"information about the account and its specificities."
-msgstr ""
+msgstr "根据你的国家定义这些类型,该类型包含有关科目及其具体的信息。"
#. module: account
#: view:account.tax:0
msgid "Applicability Options"
-msgstr ""
+msgstr "可选项"
#. module: account
#: report:account.partner.balance:0
@@ -1026,16 +1028,15 @@ msgstr "争议中"
#: model:ir.actions.act_window,name:account.action_view_bank_statement_tree
#: model:ir.ui.menu,name:account.journal_cash_move_lines
msgid "Cash Registers"
-msgstr ""
+msgstr "出纳现金"
#. module: account
#: selection:account.account.type,report_type:0
msgid "Profit & Loss (Expense Accounts)"
-msgstr ""
+msgstr "损益表"
#. module: account
#: report:account.analytic.account.journal:0
-#: report:account.move.voucher:0
#: report:account.third_party_ledger:0
#: report:account.third_party_ledger_other:0
msgid "-"
@@ -1044,7 +1045,7 @@ msgstr "-"
#. module: account
#: view:account.analytic.account:0
msgid "Manager"
-msgstr ""
+msgstr "经理"
#. module: account
#: view:account.subscription.generate:0
@@ -1054,7 +1055,7 @@ msgstr ""
#. module: account
#: selection:account.bank.accounts.wizard,account_type:0
msgid "Bank"
-msgstr ""
+msgstr "银行"
#. module: account
#: field:account.period,date_start:0
@@ -1064,7 +1065,7 @@ msgstr "开始会计期间"
#. module: account
#: model:process.transition,name:account.process_transition_confirmstatementfromdraft0
msgid "Confirm statement"
-msgstr ""
+msgstr "确认报表"
#. module: account
#: field:account.fiscal.position.tax,tax_dest_id:0
@@ -1085,11 +1086,12 @@ msgid ""
"purchase orders or receipts. This way, you can control the invoice from your "
"supplier according to what you purchased or received."
msgstr ""
+"供应商发票,您可以输入和管理你的供应商发出的发票。 OpenERP还可以自动生成草案从采购订单发票或收据。这样,您就可以控制从供应商的发票."
#. module: account
#: view:account.invoice.cancel:0
msgid "Cancel Invoices"
-msgstr ""
+msgstr "作废发票"
#. module: account
#: view:account.unreconcile.reconcile:0
@@ -1121,6 +1123,7 @@ msgstr "# 处理"
#. module: account
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.tax.code.entries:0
#: report:account.third_party_ledger:0
#: report:account.third_party_ledger_other:0
@@ -1128,7 +1131,7 @@ msgid "Entry Label"
msgstr "凭证标签"
#. module: account
-#: code:addons/account/account.py:976
+#: code:addons/account/account.py:990
#, python-format
msgid "You can not modify/delete a journal with entries for this period !"
msgstr "您不能修改/删除这业务类型和在此会计期间的凭证!"
@@ -1175,19 +1178,19 @@ msgstr "科目"
#. module: account
#: field:account.tax,include_base_amount:0
msgid "Included in base amount"
-msgstr ""
+msgstr "含基数"
#. module: account
#: view:account.entries.report:0
#: model:ir.actions.act_window,name:account.action_account_entries_report_all
#: model:ir.ui.menu,name:account.menu_action_account_entries_report_all
msgid "Entries Analysis"
-msgstr ""
+msgstr "项目分析"
#. module: account
#: field:account.account,level:0
msgid "Level"
-msgstr ""
+msgstr "级别"
#. module: account
#: report:account.invoice:0
@@ -1208,7 +1211,7 @@ msgstr "税"
#: code:addons/account/wizard/account_report_common.py:120
#, python-format
msgid "Select a starting and an ending period"
-msgstr ""
+msgstr "选择一个开始和结束时间"
#. module: account
#: model:ir.model,name:account.model_account_account_template
@@ -1218,12 +1221,12 @@ msgstr "科目模板"
#. module: account
#: view:account.tax.code.template:0
msgid "Search tax template"
-msgstr ""
+msgstr "搜索税模板"
#. module: account
#: report:account.invoice:0
msgid "Your Reference"
-msgstr ""
+msgstr "你的关联单号"
#. module: account
#: view:account.move.reconcile:0
@@ -1242,12 +1245,12 @@ msgstr "逾期付款"
#: report:account.third_party_ledger:0
#: report:account.third_party_ledger_other:0
msgid "Initial Balance"
-msgstr ""
+msgstr "期初余额"
#. module: account
#: view:account.invoice:0
msgid "Reset to Draft"
-msgstr ""
+msgstr "重置为草稿"
#. module: account
#: view:wizard.multi.charts.accounts:0
@@ -1263,13 +1266,12 @@ msgstr "报表选项"
#. module: account
#: model:ir.model,name:account.model_account_entries_report
msgid "Journal Items Analysis"
-msgstr ""
+msgstr "日记帐明细分析"
#. module: account
-#: model:ir.actions.act_window,name:account.action_partner_all
#: model:ir.ui.menu,name:account.next_id_22
msgid "Partners"
-msgstr ""
+msgstr "业务伙伴列表"
#. module: account
#: view:account.bank.statement:0
@@ -1296,7 +1298,7 @@ msgid "Central Journal"
msgstr "主要的业务类型"
#. module: account
-#: code:addons/account/account_move_line.py:1271
+#: code:addons/account/account_move_line.py:1277
#, python-format
msgid "You can not use this general account in this journal !"
msgstr "在这业务类型您不能用这科目!"
@@ -1314,7 +1316,7 @@ msgstr "余额不为0"
#. module: account
#: view:account.tax:0
msgid "Search Taxes"
-msgstr ""
+msgstr "察找税种"
#. module: account
#: model:ir.model,name:account.model_account_analytic_cost_ledger
@@ -1329,7 +1331,7 @@ msgstr "创建凭证"
#. module: account
#: field:account.entries.report,nbr:0
msgid "# of Items"
-msgstr ""
+msgstr "项目"
#. module: account
#: field:account.automatic.reconcile,max_amount:0
@@ -1349,13 +1351,13 @@ msgstr "数字 #"
#. module: account
#: field:account.journal,entry_posted:0
msgid "Skip 'Draft' State for Manual Entries"
-msgstr ""
+msgstr "如果是手工分录的话就跳过“草稿”状态"
#. module: account
#: view:account.invoice.report:0
#: field:account.invoice.report,price_total:0
msgid "Total Without Tax"
-msgstr ""
+msgstr "不含税总金额"
#. module: account
#: model:ir.actions.act_window,help:account.action_move_journal_line
@@ -1369,12 +1371,12 @@ msgstr ""
#. module: account
#: view:account.entries.report:0
msgid "# of Entries "
-msgstr ""
+msgstr "号分录 "
#. module: account
#: model:ir.model,name:account.model_temp_range
msgid "A Temporary table used for Dashboard view"
-msgstr ""
+msgstr "用于仪表盘视图的临时表"
#. module: account
#: model:ir.actions.act_window,name:account.action_invoice_tree4
@@ -1386,10 +1388,10 @@ msgstr "供应商红字发票"
#: view:account.payment.term.line:0
msgid ""
"Example: at 14 net days 2 percents, remaining amount at 30 days end of month."
-msgstr ""
+msgstr "例如:在14天内付款减百分之2,30天则没有减。"
#. module: account
-#: code:addons/account/invoice.py:815
+#: code:addons/account/invoice.py:823
#, python-format
msgid ""
"Cannot create the invoice !\n"
@@ -1400,7 +1402,7 @@ msgstr ""
#. module: account
#: field:account.installer.modules,account_anglo_saxon:0
msgid "Anglo-Saxon Accounting"
-msgstr ""
+msgstr "英国会计系统"
#. module: account
#: selection:account.account,type:0
@@ -1416,7 +1418,7 @@ msgstr "已关闭"
#. module: account
#: model:ir.ui.menu,name:account.menu_finance_recurrent_entries
msgid "Recurring Entries"
-msgstr ""
+msgstr "经常性项目"
#. module: account
#: model:ir.model,name:account.model_account_fiscal_position_template
@@ -1426,7 +1428,7 @@ msgstr "财务结构模板"
#. module: account
#: model:account.tax.code,name:account.account_tax_code_0
msgid "Tax Code Test"
-msgstr ""
+msgstr "测试税代码"
#. module: account
#: field:account.automatic.reconcile,reconciled:0
@@ -1462,18 +1464,18 @@ msgstr "未完税"
#. module: account
#: view:account.partner.reconcile.process:0
msgid "Go to next partner"
-msgstr ""
+msgstr "下一个合作伙伴"
#. module: account
#: view:account.bank.statement:0
msgid "Search Bank Statements"
-msgstr ""
+msgstr "查阅银行对帐单"
#. module: account
#: sql_constraint:account.model.line:0
msgid ""
"Wrong credit or debit value in model (Credit + Debit Must Be greater \"0\")!"
-msgstr ""
+msgstr "错误的现金或银行模型(信用+借方必须大于“0”)!"
#. module: account
#: view:account.chart.template:0
@@ -1502,12 +1504,12 @@ msgid ""
"and the closing balance is to be found on your statement. When you are in "
"the Payment column of a line, you can press F1 to open the reconciliation "
"form."
-msgstr ""
+msgstr "银行对帐单是在一个给定的时间上的存款帐户发生的明细。当是你的一个网上交易清单,你可以按F1打开核销的形式。"
#. module: account
#: report:account.analytic.account.cost_ledger:0
msgid "Date/Code"
-msgstr ""
+msgstr "日期/代码"
#. module: account
#: field:account.analytic.line,general_account_id:0
@@ -1535,7 +1537,7 @@ msgstr "发票"
#: model:process.node,note:account.process_node_analytic0
#: model:process.node,note:account.process_node_analyticcost0
msgid "Analytic costs to invoice"
-msgstr ""
+msgstr "开票成本分析"
#. module: account
#: view:ir.sequence:0
@@ -1548,10 +1550,9 @@ msgid "Separated Journal Sequences"
msgstr "分散的业务类型序列"
#. module: account
-#: field:account.bank.statement,user_id:0
#: view:account.invoice:0
msgid "Responsible"
-msgstr ""
+msgstr "负责人"
#. module: account
#: report:account.overdue:0
@@ -1561,14 +1562,14 @@ msgstr "小计 :"
#. module: account
#: model:ir.actions.act_window,name:account.action_report_account_type_sales_tree_all
msgid "Sales by Account Type"
-msgstr ""
+msgstr "销售科目类型"
#. module: account
#: view:account.invoice.refund:0
msgid ""
"Cancel Invoice: Creates the refund invoice, validate and reconcile it to "
"cancel the current invoice."
-msgstr ""
+msgstr "作废发票,退货发票,核销当前发票"
#. module: account
#: model:ir.ui.menu,name:account.periodical_processing_invoicing
@@ -1594,12 +1595,12 @@ msgstr "年合计"
#. module: account
#: model:ir.actions.report.xml,name:account.report_account_voucher_new
msgid "Print Voucher"
-msgstr ""
+msgstr "打印原始凭证"
#. module: account
#: view:account.change.currency:0
msgid "This wizard will change the currency of the invoice"
-msgstr ""
+msgstr "该向导将改变发票的币种"
#. module: account
#: model:ir.actions.act_window,help:account.action_account_chart
@@ -1612,10 +1613,10 @@ msgstr ""
#. module: account
#: constraint:account.fiscalyear:0
msgid "Error! You cannot define overlapping fiscal years"
-msgstr ""
+msgstr "错误!你不能重复定义会计年度"
#. module: account
-#: code:addons/account/account_move_line.py:808
+#: code:addons/account/account_move_line.py:799
#, python-format
msgid "The account is not defined to be reconciled !"
msgstr "科目未设定为可核销!"
@@ -1623,14 +1624,14 @@ msgstr "科目未设定为可核销!"
#. module: account
#: field:account.cashbox.line,pieces:0
msgid "Values"
-msgstr ""
+msgstr "值"
#. module: account
#: help:account.journal.period,active:0
msgid ""
"If the active field is set to False, it will allow you to hide the journal "
"period without removing it."
-msgstr ""
+msgstr "如果此字段设置为False,你可以让他隐藏而不删除它的报表。"
#. module: account
#: view:res.partner:0
@@ -1648,7 +1649,7 @@ msgid "Receivables & Payables"
msgstr "应收&应付"
#. module: account
-#: code:addons/account/account_move_line.py:815
+#: code:addons/account/account_move_line.py:806
#, python-format
msgid "You have to provide an account for the write off entry !"
msgstr "必须为差异凭证指定默认借贷方科目"
@@ -1656,17 +1657,17 @@ msgstr "必须为差异凭证指定默认借贷方科目"
#. module: account
#: model:ir.model,name:account.model_account_common_journal_report
msgid "Account Common Journal Report"
-msgstr ""
+msgstr "科目常用报表"
#. module: account
#: selection:account.partner.balance,display_partner:0
msgid "All Partners"
-msgstr ""
+msgstr "所有合作伙伴"
#. module: account
#: report:account.move.voucher:0
msgid "Ref. :"
-msgstr ""
+msgstr "关联单号:"
#. module: account
#: view:account.analytic.chart:0
@@ -1676,7 +1677,7 @@ msgstr "辅助核算项目一览表"
#. module: account
#: view:account.analytic.line:0
msgid "My Entries"
-msgstr ""
+msgstr "我的工作区"
#. module: account
#: report:account.overdue:0
@@ -1684,7 +1685,7 @@ msgid "Customer Ref:"
msgstr "客户关联:"
#. module: account
-#: code:addons/account/account_cash_statement.py:328
+#: code:addons/account/account_cash_statement.py:329
#, python-format
msgid "User %s does not have rights to access %s journal !"
msgstr ""
@@ -1702,10 +1703,10 @@ msgstr "银行单据草稿"
#. module: account
#: view:account.tax:0
msgid "Tax Declaration: Credit Notes"
-msgstr ""
+msgstr "纳税申报:欠款"
#. module: account
-#: code:addons/account/account.py:499
+#: code:addons/account/account.py:509
#, python-format
msgid "You cannot deactivate an account that contains account moves."
msgstr "你不能停用这科目因为它有凭证"
@@ -1718,10 +1719,10 @@ msgstr "贷方金额"
#. module: account
#: constraint:account.move.line:0
msgid "You can not create move line on closed account."
-msgstr ""
+msgstr "您不能在关闭的科目上建立分录。"
#. module: account
-#: code:addons/account/account.py:519
+#: code:addons/account/account.py:529
#, python-format
msgid ""
"You cannot change the type of account from 'Closed' to any other type which "
@@ -1731,65 +1732,65 @@ msgstr "你不能改变包含\"已关闭\"科目类型的凭证!"
#. module: account
#: view:res.company:0
msgid "Reserve And Profit/Loss Account"
-msgstr ""
+msgstr "损益类科目"
#. module: account
#: sql_constraint:account.move.line:0
msgid "Wrong credit or debit value in accounting entry !"
-msgstr ""
+msgstr "错误的出纳会计分录"
#. module: account
#: view:account.invoice.report:0
#: model:ir.actions.act_window,name:account.action_account_invoice_report_all
#: model:ir.ui.menu,name:account.menu_action_account_invoice_report_all
msgid "Invoices Analysis"
-msgstr ""
+msgstr "开票分析"
#. module: account
#: model:ir.model,name:account.model_account_period_close
msgid "period close"
-msgstr ""
+msgstr "关闭一个会计期间"
#. module: account
#: view:account.installer:0
msgid "Configure Fiscal Year"
-msgstr ""
+msgstr "配置会计年度"
#. module: account
#: model:ir.actions.act_window,name:account.action_project_account_analytic_line_form
msgid "Entries By Line"
-msgstr ""
+msgstr "进行中的项目"
#. module: account
#: report:account.tax.code.entries:0
msgid "A/c Code"
-msgstr ""
+msgstr "A/c编码"
#. module: account
#: field:account.invoice,move_id:0
#: field:account.invoice,move_name:0
msgid "Journal Entry"
-msgstr ""
+msgstr "分类账"
#. module: account
#: view:account.tax:0
msgid "Tax Declaration: Invoices"
-msgstr ""
+msgstr "纳税申报:发票"
#. module: account
#: field:account.cashbox.line,subtotal:0
msgid "Sub Total"
-msgstr ""
+msgstr "小计"
#. module: account
#: view:account.account:0
msgid "Treasury Analysis"
-msgstr ""
+msgstr "出纳报表"
#. module: account
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
-msgstr ""
+msgstr "错误!您不能创建循环的公司。"
#. module: account
#: view:account.analytic.account:0
@@ -1812,12 +1813,12 @@ msgstr "生效"
#: model:ir.actions.act_window,name:account.action_account_print_journal
#: model:ir.model,name:account.model_account_print_journal
msgid "Account Print Journal"
-msgstr ""
+msgstr "打印科目明细帐"
#. module: account
#: model:ir.model,name:account.model_product_category
msgid "Product Category"
-msgstr ""
+msgstr "产品类别"
#. module: account
#: selection:account.account.type,report_type:0
@@ -1827,18 +1828,18 @@ msgstr "/"
#. module: account
#: field:account.bs.report,reserve_account_id:0
msgid "Reserve & Profit/Loss Account"
-msgstr ""
+msgstr "损益类科目"
#. module: account
#: help:account.bank.statement,balance_end:0
msgid "Closing balance based on Starting Balance and Cash Transactions"
-msgstr ""
+msgstr "关闭现金交易,出纳对帐"
#. module: account
#: model:process.node,note:account.process_node_reconciliation0
#: model:process.node,note:account.process_node_supplierreconciliation0
msgid "Comparison between accounting and payment entries"
-msgstr ""
+msgstr "比较会计和支付项目"
#. module: account
#: view:account.tax:0
@@ -1859,7 +1860,7 @@ msgstr "勾选此项, 如果你想每个新建的业务类型使用不同的序
msgid ""
"It adds the currency column if the currency is different then the company "
"currency"
-msgstr ""
+msgstr "此选项增加一个辅助核算币种,他会自动转为记帐本位币。"
#. module: account
#: help:account.journal,allow_date:0
@@ -1871,19 +1872,19 @@ msgstr ""
#. module: account
#: model:ir.actions.act_window,name:account.action_account_pl_report
msgid "Account Profit And Loss"
-msgstr ""
+msgstr "帐户盈亏"
#. module: account
#: field:account.installer,config_logo:0
#: field:account.installer.modules,config_logo:0
#: field:wizard.multi.charts.accounts,config_logo:0
msgid "Image"
-msgstr ""
+msgstr "图像"
#. module: account
#: report:account.move.voucher:0
msgid "Canceled"
-msgstr ""
+msgstr "已作废"
#. module: account
#: view:account.invoice:0
@@ -1896,7 +1897,7 @@ msgstr "未完税金额"
msgid ""
"If the active field is set to False, it will allow you to hide the tax "
"without removing it."
-msgstr ""
+msgstr "如果此字段设置为False,你可以让他隐藏而不删除它的税表。"
#. module: account
#: help:account.bank.statement,name:0
@@ -1932,7 +1933,7 @@ msgstr "打开凭证"
#. module: account
#: field:account.automatic.reconcile,account_ids:0
msgid "Accounts to Reconcile"
-msgstr ""
+msgstr "科目核销"
#. module: account
#: model:process.transition,note:account.process_transition_filestatement0
@@ -1942,7 +1943,7 @@ msgstr ""
#. module: account
#: model:process.node,name:account.process_node_importinvoice0
msgid "Import from invoice"
-msgstr ""
+msgstr "进口发票"
#. module: account
#: selection:account.entries.report,month:0
@@ -1951,7 +1952,7 @@ msgstr ""
#: selection:report.account.sales,month:0
#: selection:report.account_type.sales,month:0
msgid "January"
-msgstr ""
+msgstr "一月"
#. module: account
#: view:account.journal:0
@@ -1961,12 +1962,12 @@ msgstr ""
#. module: account
#: view:account.entries.report:0
msgid "This F.Year"
-msgstr ""
+msgstr "本财年"
#. module: account
#: view:account.tax.chart:0
msgid "Account tax charts"
-msgstr ""
+msgstr "纳税明细表"
#. module: account
#: constraint:account.period:0
@@ -1987,10 +1988,10 @@ msgstr "形式发票"
#: code:addons/account/installer.py:348
#, python-format
msgid " Journal"
-msgstr ""
+msgstr " 日记帐"
#. module: account
-#: code:addons/account/account.py:1319
+#: code:addons/account/account.py:1333
#, python-format
msgid ""
"There is no default default debit account defined \n"
@@ -2012,7 +2013,7 @@ msgstr ""
#. module: account
#: view:account.chart.template:0
msgid "Search Chart of Account Templates"
-msgstr ""
+msgstr "搜索图表科目模板"
#. module: account
#: view:account.installer:0
@@ -2042,7 +2043,7 @@ msgid "Description"
msgstr "说明"
#. module: account
-#: code:addons/account/account.py:2844
+#: code:addons/account/account.py:2888
#: code:addons/account/installer.py:498
#, python-format
msgid "ECNJ"
@@ -2062,7 +2063,7 @@ msgid "Income Account"
msgstr "收入科目"
#. module: account
-#: code:addons/account/invoice.py:352
+#: code:addons/account/invoice.py:351
#, python-format
msgid "There is no Accounting Journal of type Sale/Purchase defined!"
msgstr "没定义销售/采购业务类型!"
@@ -2073,6 +2074,7 @@ msgid "Accounting Properties"
msgstr "会计属性"
#. module: account
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: field:account.print.journal,sort_selection:0
msgid "Entries Sorted By"
@@ -2081,17 +2083,17 @@ msgstr "凭证排序按"
#. module: account
#: field:account.change.currency,currency_id:0
msgid "Change to"
-msgstr ""
+msgstr "更改为"
#. module: account
#: view:account.entries.report:0
msgid "# of Products Qty "
-msgstr ""
+msgstr "产品数量 "
#. module: account
#: model:ir.model,name:account.model_product_template
msgid "Product Template"
-msgstr ""
+msgstr "产品模板"
#. module: account
#: report:account.account.balance:0
@@ -2101,6 +2103,7 @@ msgstr ""
#: field:account.fiscalyear,name:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.journal.period,fiscalyear_id:0
#: report:account.journal.period.print:0
#: report:account.partner.balance:0
@@ -2189,7 +2192,7 @@ msgstr "待处理"
#: model:process.node,note:account.process_node_draftinvoices0
#: model:process.node,note:account.process_node_supplierdraftinvoices0
msgid "Draft state of an invoice"
-msgstr ""
+msgstr "草稿状态的发票"
#. module: account
#: help:account.account,reconcile:0
@@ -2200,7 +2203,7 @@ msgstr "勾选, 如果用户可以在这科目核销凭证."
#. module: account
#: view:account.partner.reconcile.process:0
msgid "Partner Reconciliation"
-msgstr ""
+msgstr "往来业务核销"
#. module: account
#: field:account.tax,tax_code_id:0
@@ -2209,7 +2212,7 @@ msgid "Account Tax Code"
msgstr "税事务科目"
#. module: account
-#: code:addons/account/invoice.py:545
+#: code:addons/account/invoice.py:552
#, python-format
msgid ""
"Can't find any account journal of %s type for this company.\n"
@@ -2227,7 +2230,7 @@ msgstr "基础税事务代码"
#. module: account
#: help:account.invoice.tax,sequence:0
msgid "Gives the sequence order when displaying a list of invoice tax."
-msgstr ""
+msgstr "按顺序显示发票税列表."
#. module: account
#: field:account.tax,base_sign:0
@@ -2257,7 +2260,7 @@ msgstr "借方汇总"
#: view:account.invoice.confirm:0
#: model:ir.actions.act_window,name:account.action_account_invoice_confirm
msgid "Confirm Draft Invoices"
-msgstr ""
+msgstr "草案确认发票"
#. module: account
#: field:account.entries.report,day:0
@@ -2266,12 +2269,12 @@ msgstr ""
#: view:analytic.entries.report:0
#: field:analytic.entries.report,day:0
msgid "Day"
-msgstr ""
+msgstr "日"
#. module: account
#: model:ir.actions.act_window,name:account.act_account_renew_view
msgid "Accounts to Renew"
-msgstr ""
+msgstr "延续科目有效期"
#. module: account
#: model:ir.model,name:account.model_account_model_line
@@ -2279,11 +2282,11 @@ msgid "Account Model Entries"
msgstr "凭证模板"
#. module: account
-#: code:addons/account/account.py:2796
+#: code:addons/account/account.py:2840
#: code:addons/account/installer.py:454
#, python-format
msgid "EXJ"
-msgstr ""
+msgstr "EXJ"
#. module: account
#: field:product.template,supplier_taxes_id:0
@@ -2310,7 +2313,7 @@ msgstr "选择会计期间"
#. module: account
#: model:ir.ui.menu,name:account.menu_account_pp_statements
msgid "Statements"
-msgstr ""
+msgstr "描述"
#. module: account
#: report:account.analytic.account.journal:0
@@ -2322,18 +2325,18 @@ msgstr "凭证名称"
msgid ""
"The fiscal position will determine taxes and the accounts used for the "
"partner."
-msgstr ""
+msgstr "会计制度决定税的科目."
#. module: account
#: view:account.print.journal:0
msgid ""
"This report gives you an overview of the situation of a specific journal"
-msgstr ""
+msgstr "这份报告是给你一个特定财务情况概述"
#. module: account
#: constraint:product.category:0
msgid "Error ! You can not create recursive categories."
-msgstr ""
+msgstr "错误!你不能创建递归的类型."
#. module: account
#: report:account.invoice:0
@@ -2362,10 +2365,10 @@ msgstr "辅助核算项目"
#: model:ir.ui.menu,name:account.menu_action_account_form
#: model:ir.ui.menu,name:account.menu_analytic
msgid "Accounts"
-msgstr ""
+msgstr "科目"
#. module: account
-#: code:addons/account/invoice.py:351
+#: code:addons/account/invoice.py:350
#, python-format
msgid "Configuration Error!"
msgstr "设置错误!"
@@ -2374,16 +2377,15 @@ msgstr "设置错误!"
#: view:account.invoice.report:0
#: field:account.invoice.report,price_average:0
msgid "Average Price"
-msgstr ""
+msgstr "平均价格"
#. module: account
-#: report:account.move.voucher:0
#: report:account.overdue:0
msgid "Date:"
msgstr "日期:"
#. module: account
-#: code:addons/account/account.py:640
+#: code:addons/account/account.py:654
#, python-format
msgid ""
"You cannot modify company of this journal as its related record exist in "
@@ -2393,12 +2395,12 @@ msgstr ""
#. module: account
#: report:account.journal.period.print:0
msgid "Label"
-msgstr ""
+msgstr "标签"
#. module: account
#: view:account.tax:0
msgid "Accounting Information"
-msgstr ""
+msgstr "会计信息"
#. module: account
#: view:account.tax:0
@@ -2419,6 +2421,7 @@ msgstr "折扣(%)"
#. module: account
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: report:account.overdue:0
#: report:account.third_party_ledger:0
@@ -2429,12 +2432,12 @@ msgstr "关联单号"
#. module: account
#: help:account.move.line,tax_code_id:0
msgid "The Account can either be a base tax code or a tax code account."
-msgstr ""
+msgstr "该科目可以是一个基本的税法或税法帐户。(如营业税)"
#. module: account
#: model:ir.ui.menu,name:account.menu_automatic_reconcile
msgid "Automatic Reconciliation"
-msgstr ""
+msgstr "自动核销"
#. module: account
#: field:account.invoice,reconciled:0
@@ -2452,7 +2455,7 @@ msgstr "退税事务代码"
#: model:ir.actions.act_window,name:account.action_bank_statement_tree
#: model:ir.ui.menu,name:account.menu_bank_statement_tree
msgid "Bank Statements"
-msgstr ""
+msgstr "银行对帐单"
#. module: account
#: selection:account.tax.template,applicable_type:0
@@ -2465,7 +2468,7 @@ msgstr "真"
#: view:account.move:0
#: view:account.move.line:0
msgid "Dates"
-msgstr ""
+msgstr "日期"
#. module: account
#: field:account.tax,parent_id:0
@@ -2478,7 +2481,7 @@ msgstr "上级税科目"
msgid ""
"Automatically generate entries based on what has been entered in the system "
"before a specific date."
-msgstr ""
+msgstr "自动生成以这之前的预约项目."
#. module: account
#: view:account.aged.trial.balance:0
@@ -2491,7 +2494,7 @@ msgstr "账龄分析表"
#: model:process.transition,name:account.process_transition_entriesreconcile0
#: model:process.transition,name:account.process_transition_supplierentriesreconcile0
msgid "Accounting entries"
-msgstr ""
+msgstr "会计分录"
#. module: account
#: field:account.invoice.line,discount:0
@@ -2512,31 +2515,31 @@ msgstr ""
#: model:ir.actions.server,name:account.ir_actions_server_action_wizard_multi_chart
#: model:ir.ui.menu,name:account.menu_act_ir_actions_bleble
msgid "New Company Financial Setting"
-msgstr ""
+msgstr "新公司财务设置"
#. module: account
#: model:ir.actions.act_window,name:account.action_report_account_sales_tree_all
#: view:report.account.sales:0
#: view:report.account_type.sales:0
msgid "Sales by Account"
-msgstr ""
+msgstr "销售科目"
#. module: account
#: view:account.use.model:0
msgid "This wizard will create recurring accounting entries"
-msgstr ""
+msgstr "该向导将创建经常性的会计分录"
#. module: account
-#: code:addons/account/account.py:1181
+#: code:addons/account/account.py:1195
#, python-format
msgid "No sequence defined on the journal !"
-msgstr ""
+msgstr "在日记帐中没有定义的序列!"
#. module: account
-#: code:addons/account/account.py:2083
+#: code:addons/account/account.py:2097
#: code:addons/account/account_bank_statement.py:350
-#: code:addons/account/account_move_line.py:170
-#: code:addons/account/invoice.py:670
+#: code:addons/account/account_move_line.py:169
+#: code:addons/account/invoice.py:678
#: code:addons/account/wizard/account_use_model.py:81
#, python-format
msgid "You have to define an analytic journal on the '%s' journal!"
@@ -2569,7 +2572,7 @@ msgstr "会计期间到"
#: selection:report.account.sales,month:0
#: selection:report.account_type.sales,month:0
msgid "August"
-msgstr ""
+msgstr "8月"
#. module: account
#: code:addons/account/account_bank_statement.py:306
@@ -2601,7 +2604,7 @@ msgstr "关联单号数"
#: selection:report.account.sales,month:0
#: selection:report.account_type.sales,month:0
msgid "October"
-msgstr ""
+msgstr "10月"
#. module: account
#: help:account.move.line,quantity:0
@@ -2613,7 +2616,7 @@ msgstr ""
#. module: account
#: view:account.payment.term.line:0
msgid "Line 2:"
-msgstr ""
+msgstr "第2行"
#. module: account
#: field:account.journal.column,required:0
@@ -2646,7 +2649,7 @@ msgstr "基础税事务代码的金额"
#. module: account
#: field:wizard.multi.charts.accounts,sale_tax:0
msgid "Default Sale Tax"
-msgstr ""
+msgstr "默认销项税"
#. module: account
#: help:account.model.line,date_maturity:0
@@ -2654,7 +2657,7 @@ msgid ""
"The maturity date of the generated entries for this model. You can choose "
"between the creation date or the creation date of the entries plus the "
"partner payment terms."
-msgstr ""
+msgstr "您可以选择开始日期且加上该项止合作伙伴的付款条件,由此模型生成的项目的到期日."
#. module: account
#: model:ir.ui.menu,name:account.menu_finance_accounting
@@ -2665,7 +2668,7 @@ msgstr "财务会计"
#: view:account.pl.report:0
#: model:ir.ui.menu,name:account.menu_account_pl_report
msgid "Profit And Loss"
-msgstr ""
+msgstr "盈利或亏损"
#. module: account
#: view:account.fiscal.position:0
@@ -2696,7 +2699,7 @@ msgid "Analytic Entries"
msgstr "辅助核算凭证"
#. module: account
-#: code:addons/account/account.py:822
+#: code:addons/account/account.py:836
#, python-format
msgid ""
"No fiscal year defined for this date !\n"
@@ -2728,12 +2731,12 @@ msgstr "这用户负责这业务类型"
#. module: account
#: view:account.period:0
msgid "Search Period"
-msgstr ""
+msgstr "搜寻时期"
#. module: account
#: view:account.change.currency:0
msgid "Invoice Currency"
-msgstr ""
+msgstr "货币种类"
#. module: account
#: field:account.payment.term,line_ids:0
@@ -2743,7 +2746,7 @@ msgstr "条款"
#. module: account
#: field:account.bank.statement,total_entry_encoding:0
msgid "Cash Transaction"
-msgstr ""
+msgstr "现金交易"
#. module: account
#: view:res.partner:0
@@ -2779,7 +2782,7 @@ msgstr "条款名称"
#. module: account
#: view:account.fiscalyear:0
msgid "Search Fiscalyear"
-msgstr ""
+msgstr "搜索会计年度"
#. module: account
#: selection:account.tax,applicable_type:0
@@ -2789,7 +2792,7 @@ msgstr ""
#. module: account
#: view:account.analytic.line:0
msgid "Total Quantity"
-msgstr ""
+msgstr "合计数量"
#. module: account
#: field:account.move.line.reconcile.writeoff,writeoff_acc_id:0
@@ -2822,11 +2825,11 @@ msgid "BNK%s"
msgstr ""
#. module: account
-#: code:addons/account/account.py:2906
+#: code:addons/account/account.py:2950
#: code:addons/account/installer.py:296
#, python-format
msgid "BNK"
-msgstr ""
+msgstr "银行"
#. module: account
#: field:account.move.line,analytic_lines:0
@@ -2851,17 +2854,17 @@ msgstr "税事务模板"
#. module: account
#: view:account.subscription:0
msgid "Starts on"
-msgstr ""
+msgstr "开始"
#. module: account
#: model:ir.model,name:account.model_account_partner_ledger
msgid "Account Partner Ledger"
-msgstr ""
+msgstr "合作伙伴会计帐本(往来帐)"
#. module: account
#: help:account.journal.column,sequence:0
msgid "Gives the sequence order to journal column."
-msgstr ""
+msgstr "给日记帐排序号"
#. module: account
#: view:account.tax.template:0
@@ -2873,7 +2876,7 @@ msgstr "税说明"
#: help:account.account.template,currency_id:0
#: help:account.bank.accounts.wizard,currency_id:0
msgid "Forces all moves for this account to have this secondary currency."
-msgstr ""
+msgstr "将此科目的所有发生都转移到他的二级科目。"
#. module: account
#: model:ir.actions.act_window,help:account.action_validate_account_move_line
@@ -2896,7 +2899,7 @@ msgstr "从模板产生科目一览表"
#. module: account
#: model:ir.model,name:account.model_account_unreconcile_reconcile
msgid "Account Unreconcile Reconcile"
-msgstr ""
+msgstr "科目核销反核销"
#. module: account
#: help:account.account.type,close_method:0
@@ -2931,6 +2934,7 @@ msgstr "为使用费用科目而留空"
#: field:account.common.report,journal_ids:0
#: report:account.general.journal:0
#: field:account.general.journal,journal_ids:0
+#: report:account.general.ledger_landscape:0
#: view:account.journal.period:0
#: report:account.partner.balance:0
#: field:account.partner.balance,journal_ids:0
@@ -2952,7 +2956,7 @@ msgstr "业务类型"
#. module: account
#: field:account.partner.reconcile.process,to_reconcile:0
msgid "Remaining Partners"
-msgstr ""
+msgstr "剩下的合作伙伴"
#. module: account
#: view:account.subscription:0
@@ -2977,7 +2981,7 @@ msgstr "采购"
#: model:ir.actions.act_window,name:account.action_account_installer
#: view:wizard.multi.charts.accounts:0
msgid "Accounting Application Configuration"
-msgstr ""
+msgstr "会计应用程序配置"
#. module: account
#: model:ir.actions.act_window,name:account.open_board_account
@@ -2991,7 +2995,7 @@ msgid "Starting Balance"
msgstr "开始余额"
#. module: account
-#: code:addons/account/invoice.py:1284
+#: code:addons/account/invoice.py:1298
#, python-format
msgid "No Partner Defined !"
msgstr "未定义业务伙伴!"
@@ -3018,12 +3022,12 @@ msgstr "增值税"
msgid ""
"The amount expressed in the related account currency if not equal to the "
"company one."
-msgstr ""
+msgstr "如果不是同一公司, 这金额表示相关项的货币"
#. module: account
#: report:account.move.voucher:0
msgid "Journal:"
-msgstr ""
+msgstr "账簿:"
#. module: account
#: view:account.bank.statement:0
@@ -3033,7 +3037,6 @@ msgstr ""
#: view:account.invoice.report:0
#: selection:account.invoice.report,state:0
#: selection:account.journal.period,state:0
-#: report:account.move.voucher:0
#: view:account.subscription:0
#: selection:account.subscription,state:0
#: selection:report.invoice.created,state:0
@@ -3043,7 +3046,7 @@ msgstr "草稿"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_configuration_installer
msgid "Accounting Chart Configuration"
-msgstr ""
+msgstr "会计图表配置"
#. module: account
#: field:account.tax.code,notprintable:0
@@ -3055,17 +3058,17 @@ msgstr "不打印在发票上"
#: report:account.vat.declaration:0
#: field:account.vat.declaration,chart_tax_id:0
msgid "Chart of Tax"
-msgstr ""
+msgstr "税表"
#. module: account
#: view:account.journal:0
msgid "Search Account Journal"
-msgstr ""
+msgstr "搜索科目报表"
#. module: account
#: model:ir.actions.act_window,name:account.action_invoice_tree_pending_invoice
msgid "Pending Invoice"
-msgstr ""
+msgstr "待开票"
#. module: account
#: selection:account.subscription,period_type:0
@@ -3075,17 +3078,17 @@ msgstr "年"
#. module: account
#: report:account.move.voucher:0
msgid "Authorised Signatory"
-msgstr ""
+msgstr "授权的签字人"
#. module: account
#: view:validate.account.move.lines:0
msgid ""
"All selected journal entries will be validated and posted. It means you "
"won't be able to modify their accounting fields anymore."
-msgstr ""
+msgstr "所有的凭证和报表将过帐,这意味着你将不能修改之个会计期间了。"
#. module: account
-#: code:addons/account/invoice.py:370
+#: code:addons/account/invoice.py:373
#, python-format
msgid "Cannot delete invoice(s) that are already opened or paid !"
msgstr "无法删除未结或已付款的发票!"
@@ -3118,12 +3121,12 @@ msgstr "税金额"
#. module: account
#: view:account.installer:0
msgid "Your bank and cash accounts"
-msgstr ""
+msgstr "你的科目和现金科目"
#. module: account
#: view:account.move:0
msgid "Search Move"
-msgstr ""
+msgstr "移动搜索"
#. module: account
#: field:account.tax.code,name:0
@@ -3143,10 +3146,10 @@ msgstr "发票草稿"
msgid ""
"Selected Invoice(s) cannot be cancelled as they are already in 'Cancelled' "
"or 'Done' state!"
-msgstr ""
+msgstr "选择的发票不能被取消,因为它们已“取消”或“完成”状态了!"
#. module: account
-#: code:addons/account/account.py:522
+#: code:addons/account/account.py:532
#, python-format
msgid ""
"You cannot change the type of account from '%s' to '%s' type as it contains "
@@ -3155,24 +3158,25 @@ msgstr "你不能修改这会计类型从'%s' 到 '%s' 因为它含有凭证"
#. module: account
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
msgid "Counterpart"
-msgstr ""
+msgstr "对方"
#. module: account
#: view:account.journal:0
msgid "Invoicing Data"
-msgstr ""
+msgstr "进销存数据"
#. module: account
#: field:account.invoice.report,state:0
msgid "Invoice State"
-msgstr ""
+msgstr "发票状态"
#. module: account
#: view:account.invoice.report:0
#: field:account.invoice.report,categ_id:0
msgid "Category of Product"
-msgstr ""
+msgstr "产品类别"
#. module: account
#: view:account.move:0
@@ -3180,18 +3184,18 @@ msgstr ""
#: view:account.move.line:0
#: field:account.move.line,narration:0
msgid "Narration"
-msgstr ""
+msgstr "描述"
#. module: account
#: view:account.addtmpl.wizard:0
#: model:ir.actions.act_window,name:account.action_account_addtmpl_wizard_form
msgid "Create Account"
-msgstr ""
+msgstr "创建科目"
#. module: account
#: model:ir.model,name:account.model_report_account_type_sales
msgid "Report of the Sales by Account Type"
-msgstr ""
+msgstr "销售报表的科目类型"
#. module: account
#: selection:account.account.type,close_method:0
@@ -3201,7 +3205,7 @@ msgstr "详情"
#. module: account
#: field:account.installer,bank_accounts_id:0
msgid "Your Bank and Cash Accounts"
-msgstr ""
+msgstr "您的银行及现金帐户"
#. module: account
#: report:account.invoice:0
@@ -3219,7 +3223,7 @@ msgstr "科目表"
#. module: account
#: view:account.tax.chart:0
msgid "(If you do not select period it will take all open periods)"
-msgstr ""
+msgstr "如果你不选择时间,将可以在任何期间看到"
#. module: account
#: field:account.journal,centralisation:0
@@ -3229,7 +3233,7 @@ msgstr "汇总副本"
#. module: account
#: model:ir.model,name:account.model_account_partner_reconcile_process
msgid "Reconcilation Process partner by partner"
-msgstr ""
+msgstr "核销合作进程的合作伙伴"
#. module: account
#: selection:account.automatic.reconcile,power:0
@@ -3257,6 +3261,7 @@ msgstr "如果你不选择会计年度将使用所有开启的会计年度"
#: field:account.entries.report,date:0
#: selection:account.general.journal,filter:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.invoice.report,date:0
#: report:account.journal.period.print:0
#: view:account.move:0
@@ -3300,7 +3305,7 @@ msgid "Chart of Accounts Template"
msgstr "科目表模板"
#. module: account
-#: code:addons/account/account.py:2095
+#: code:addons/account/account.py:2109
#, python-format
msgid ""
"Maturity date of entry line generated by model line '%s' of model '%s' is "
@@ -3309,13 +3314,13 @@ msgid ""
msgstr ""
#. module: account
-#: code:addons/account/account_move_line.py:810
+#: code:addons/account/account_move_line.py:801
#, python-format
msgid "Some entries are already reconciled !"
msgstr "部分凭证已核销!"
#. module: account
-#: code:addons/account/account.py:1204
+#: code:addons/account/account.py:1218
#, python-format
msgid ""
"You cannot validate a Journal Entry unless all journal items are in same "
@@ -3330,7 +3335,7 @@ msgstr "税"
#. module: account
#: model:ir.ui.menu,name:account.menu_finance_reporting_budgets
msgid "Budgets"
-msgstr ""
+msgstr "预算"
#. module: account
#: selection:account.aged.trial.balance,filter:0
@@ -3349,7 +3354,7 @@ msgstr ""
#: selection:account.report.general.ledger,filter:0
#: selection:account.vat.declaration,filter:0
msgid "No Filters"
-msgstr ""
+msgstr "无过滤器"
#. module: account
#: selection:account.analytic.journal,type:0
@@ -3359,7 +3364,7 @@ msgstr "状况"
#. module: account
#: view:res.partner:0
msgid "History"
-msgstr ""
+msgstr "历史记录"
#. module: account
#: help:account.tax,applicable_type:0
@@ -3379,7 +3384,7 @@ msgstr "可用代码(如果类型=代码)"
#: view:account.invoice.report:0
#: field:account.invoice.report,product_qty:0
msgid "Qty"
-msgstr ""
+msgstr "数量"
#. module: account
#: field:account.invoice.report,address_contact_id:0
@@ -3435,7 +3440,7 @@ msgid "Analytic Items"
msgstr ""
#. module: account
-#: code:addons/account/account_move_line.py:1128
+#: code:addons/account/account_move_line.py:1134
#, python-format
msgid "Unable to change tax !"
msgstr "无法更改税目!"
@@ -3446,14 +3451,14 @@ msgid "#Entries"
msgstr ""
#. module: account
-#: code:addons/account/invoice.py:1422
+#: code:addons/account/invoice.py:1437
#, python-format
msgid ""
"You selected an Unit of Measure which is not compatible with the product."
msgstr ""
#. module: account
-#: code:addons/account/invoice.py:473
+#: code:addons/account/invoice.py:476
#, python-format
msgid ""
"The Payment Term of Supplier does not have Payment Term Lines(Computation) "
@@ -3491,7 +3496,7 @@ msgstr "名称"
#. module: account
#: model:ir.model,name:account.model_account_aged_trial_balance
msgid "Account Aged Trial balance Report"
-msgstr ""
+msgstr "账龄试算平衡表"
#. module: account
#: field:account.move.line,date:0
@@ -3570,7 +3575,7 @@ msgstr ""
#. module: account
#: field:account.partner.balance,display_partner:0
msgid "Display Partners"
-msgstr ""
+msgstr "显示业务伙伴"
#. module: account
#: view:account.invoice:0
@@ -3747,7 +3752,7 @@ msgid "Acc.Type"
msgstr ""
#. module: account
-#: code:addons/account/invoice.py:714
+#: code:addons/account/invoice.py:722
#, python-format
msgid "Global taxes defined, but are not in invoice lines !"
msgstr "已定义通用税目, 但未在发票行中出现!"
@@ -3806,7 +3811,7 @@ msgid ""
msgstr ""
#. module: account
-#: code:addons/account/account_analytic_line.py:91
+#: code:addons/account/account_analytic_line.py:90
#, python-format
msgid "There is no expense account defined for this product: \"%s\" (id:%d)"
msgstr ""
@@ -3981,7 +3986,7 @@ msgid "Credit Notes"
msgstr "退还"
#. module: account
-#: code:addons/account/account.py:2067
+#: code:addons/account/account.py:2081
#: code:addons/account/wizard/account_use_model.py:69
#, python-format
msgid "Unable to find a valid period !"
@@ -4052,11 +4057,11 @@ msgid "Change"
msgstr "改变"
#. module: account
-#: code:addons/account/account.py:1290
-#: code:addons/account/account.py:1318
-#: code:addons/account/account.py:1325
-#: code:addons/account/account_move_line.py:1055
-#: code:addons/account/invoice.py:896
+#: code:addons/account/account.py:1304
+#: code:addons/account/account.py:1332
+#: code:addons/account/account.py:1339
+#: code:addons/account/account_move_line.py:1061
+#: code:addons/account/invoice.py:904
#: code:addons/account/wizard/account_automatic_reconcile.py:152
#: code:addons/account/wizard/account_fiscalyear_close.py:78
#: code:addons/account/wizard/account_fiscalyear_close.py:81
@@ -4160,7 +4165,7 @@ msgid "You must define an analytic journal of type '%s' !"
msgstr "您必须定义这辅助核算类型'%s' !"
#. module: account
-#: code:addons/account/account.py:1397
+#: code:addons/account/account.py:1411
#, python-format
msgid ""
"Couldn't create move with currency different from the secondary currency of "
@@ -4225,7 +4230,7 @@ msgid "Invoices"
msgstr "发票列表"
#. module: account
-#: code:addons/account/invoice.py:804
+#: code:addons/account/invoice.py:812
#, python-format
msgid ""
"Please verify the price of the invoice !\n"
@@ -4337,25 +4342,24 @@ msgid "Third Party (Country)"
msgstr ""
#. module: account
-#: code:addons/account/account.py:938
-#: code:addons/account/account.py:940
-#: code:addons/account/account.py:1181
-#: code:addons/account/account.py:1393
-#: code:addons/account/account.py:1397
-#: code:addons/account/account_cash_statement.py:249
-#: code:addons/account/account_move_line.py:780
-#: code:addons/account/account_move_line.py:803
-#: code:addons/account/account_move_line.py:805
-#: code:addons/account/account_move_line.py:808
-#: code:addons/account/account_move_line.py:810
-#: code:addons/account/account_move_line.py:1117
+#: code:addons/account/account.py:952
+#: code:addons/account/account.py:954
+#: code:addons/account/account.py:1195
+#: code:addons/account/account.py:1407
+#: code:addons/account/account.py:1411
+#: code:addons/account/account_cash_statement.py:250
+#: code:addons/account/account_move_line.py:771
+#: code:addons/account/account_move_line.py:794
+#: code:addons/account/account_move_line.py:796
+#: code:addons/account/account_move_line.py:799
+#: code:addons/account/account_move_line.py:801
+#: code:addons/account/account_move_line.py:1123
#: code:addons/account/report/common_report_header.py:92
-#: code:addons/account/wizard/account_change_currency.py:39
-#: code:addons/account/wizard/account_change_currency.py:60
-#: code:addons/account/wizard/account_change_currency.py:65
-#: code:addons/account/wizard/account_change_currency.py:71
+#: code:addons/account/wizard/account_change_currency.py:38
+#: code:addons/account/wizard/account_change_currency.py:59
+#: code:addons/account/wizard/account_change_currency.py:64
+#: code:addons/account/wizard/account_change_currency.py:70
#: code:addons/account/wizard/account_move_bank_reconcile.py:49
-#: code:addons/account/wizard/account_open_closed_fiscalyear.py:40
#: code:addons/account/wizard/account_report_common.py:120
#: code:addons/account/wizard/account_report_common.py:126
#, python-format
@@ -4377,7 +4381,7 @@ msgid "Bank Details"
msgstr "银行信息"
#. module: account
-#: code:addons/account/invoice.py:720
+#: code:addons/account/invoice.py:728
#, python-format
msgid "Taxes missing !"
msgstr "缺少税目!"
@@ -4432,7 +4436,7 @@ msgid "Check Date not in the Period"
msgstr ""
#. module: account
-#: code:addons/account/account.py:1210
+#: code:addons/account/account.py:1224
#, python-format
msgid ""
"You can not modify a posted entry of this journal !\n"
@@ -4453,7 +4457,7 @@ msgid "Child Tax Accounts"
msgstr "子税科目"
#. module: account
-#: code:addons/account/account.py:940
+#: code:addons/account/account.py:954
#, python-format
msgid "Start period should be smaller then End period"
msgstr ""
@@ -4483,6 +4487,7 @@ msgstr "辅助核算余额 -"
#: report:account.general.journal:0
#: field:account.general.journal,target_move:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: field:account.move.journal,target_move:0
#: report:account.partner.balance:0
@@ -4565,7 +4570,7 @@ msgid "Line 1:"
msgstr ""
#. module: account
-#: code:addons/account/account.py:1167
+#: code:addons/account/account.py:1181
#, python-format
msgid "Integrity Error !"
msgstr "完整性错误!"
@@ -4711,7 +4716,7 @@ msgid ""
msgstr ""
#. module: account
-#: code:addons/account/account.py:2067
+#: code:addons/account/account.py:2081
#: code:addons/account/wizard/account_use_model.py:69
#, python-format
msgid "No period found !"
@@ -4783,7 +4788,7 @@ msgid ""
msgstr "在计算前加入的天数, 如日期为01/15, 天数是22, 月天数为-1,则应付日期是02/28。"
#. module: account
-#: code:addons/account/account.py:2896
+#: code:addons/account/account.py:2940
#: code:addons/account/installer.py:283
#: code:addons/account/installer.py:295
#, python-format
@@ -4811,7 +4816,7 @@ msgid "Start of period"
msgstr "开始会计期间"
#. module: account
-#: code:addons/account/account_move_line.py:1193
+#: code:addons/account/account_move_line.py:1199
#, python-format
msgid ""
"You can not do this modification on a reconciled entry ! Please note that "
@@ -4867,12 +4872,12 @@ msgstr "结束会计年度业务类型"
#. module: account
#: code:addons/account/account_bank_statement.py:331
-#: code:addons/account/invoice.py:405
-#: code:addons/account/invoice.py:505
-#: code:addons/account/invoice.py:520
-#: code:addons/account/invoice.py:528
-#: code:addons/account/invoice.py:545
-#: code:addons/account/invoice.py:1347
+#: code:addons/account/invoice.py:408
+#: code:addons/account/invoice.py:508
+#: code:addons/account/invoice.py:523
+#: code:addons/account/invoice.py:531
+#: code:addons/account/invoice.py:552
+#: code:addons/account/invoice.py:1361
#: code:addons/account/wizard/account_move_journal.py:63
#, python-format
msgid "Configuration Error !"
@@ -4949,7 +4954,7 @@ msgid "Sort By"
msgstr ""
#. module: account
-#: code:addons/account/account.py:1326
+#: code:addons/account/account.py:1340
#, python-format
msgid ""
"There is no default default credit account defined \n"
@@ -5096,7 +5101,7 @@ msgid "Generate Opening Entries"
msgstr ""
#. module: account
-#: code:addons/account/account_move_line.py:738
+#: code:addons/account/account_move_line.py:729
#, python-format
msgid "Already Reconciled!"
msgstr ""
@@ -5132,7 +5137,7 @@ msgstr "子科目"
#. module: account
#: view:account.move.line.reconcile:0
-#: code:addons/account/account_move_line.py:830
+#: code:addons/account/account_move_line.py:821
#, python-format
msgid "Write-Off"
msgstr "补差额"
@@ -5269,7 +5274,7 @@ msgid "# of Lines"
msgstr ""
#. module: account
-#: code:addons/account/wizard/account_change_currency.py:60
+#: code:addons/account/wizard/account_change_currency.py:59
#, python-format
msgid "New currency is not confirured properly !"
msgstr ""
@@ -5294,14 +5299,14 @@ msgid "Filter by"
msgstr ""
#. module: account
-#: code:addons/account/account_move_line.py:1131
-#: code:addons/account/account_move_line.py:1214
+#: code:addons/account/account_move_line.py:1137
+#: code:addons/account/account_move_line.py:1220
#, python-format
msgid "You can not use an inactive account!"
msgstr "您不能使用一个停用的科目!"
#. module: account
-#: code:addons/account/account_move_line.py:803
+#: code:addons/account/account_move_line.py:794
#, python-format
msgid "Entries are not of the same account or already reconciled ! "
msgstr "不同科目或已核算的凭证! "
@@ -5336,7 +5341,7 @@ msgstr "7"
#. module: account
#: code:addons/account/account_bank_statement.py:391
-#: code:addons/account/invoice.py:370
+#: code:addons/account/invoice.py:373
#, python-format
msgid "Invalid action !"
msgstr "无效动作!"
@@ -5547,7 +5552,7 @@ msgid "Companies"
msgstr ""
#. module: account
-#: code:addons/account/account.py:532
+#: code:addons/account/account.py:546
#, python-format
msgid ""
"You cannot modify Company of account as its related record exist in Entry "
@@ -5813,9 +5818,9 @@ msgid "Optional create"
msgstr ""
#. module: account
-#: code:addons/account/invoice.py:406
-#: code:addons/account/invoice.py:506
-#: code:addons/account/invoice.py:1348
+#: code:addons/account/invoice.py:409
+#: code:addons/account/invoice.py:509
+#: code:addons/account/invoice.py:1362
#, python-format
msgid "Can not find account chart for this company, Please Create account."
msgstr ""
@@ -5964,8 +5969,8 @@ msgid "Analytic Entries Statistics"
msgstr ""
#. module: account
-#: code:addons/account/account_analytic_line.py:143
-#: code:addons/account/account_move_line.py:905
+#: code:addons/account/account_analytic_line.py:141
+#: code:addons/account/account_move_line.py:897
#, python-format
msgid "Entries: "
msgstr "凭证: "
@@ -5976,7 +5981,7 @@ msgid "Create manual recurring entries in a chosen journal."
msgstr ""
#. module: account
-#: code:addons/account/account.py:1393
+#: code:addons/account/account.py:1407
#, python-format
msgid "Couldn't create move between different companies"
msgstr "无法创建公司之间的过帐"
@@ -6014,7 +6019,7 @@ msgid "Total debit"
msgstr "借方合计"
#. module: account
-#: code:addons/account/account_move_line.py:781
+#: code:addons/account/account_move_line.py:772
#, python-format
msgid "Entry \"%s\" is not valid !"
msgstr "凭证\"%s\"无效!"
@@ -6078,30 +6083,31 @@ msgid " valuation: percent"
msgstr ""
#. module: account
-#: code:addons/account/account.py:499
-#: code:addons/account/account.py:501
-#: code:addons/account/account.py:822
-#: code:addons/account/account.py:901
-#: code:addons/account/account.py:976
-#: code:addons/account/account.py:1204
-#: code:addons/account/account.py:1210
-#: code:addons/account/account.py:2095
-#: code:addons/account/account.py:2333
-#: code:addons/account/account_analytic_line.py:90
-#: code:addons/account/account_analytic_line.py:99
+#: code:addons/account/account.py:509
+#: code:addons/account/account.py:511
+#: code:addons/account/account.py:836
+#: code:addons/account/account.py:915
+#: code:addons/account/account.py:990
+#: code:addons/account/account.py:1218
+#: code:addons/account/account.py:1224
+#: code:addons/account/account.py:2109
+#: code:addons/account/account.py:2357
+#: code:addons/account/account_analytic_line.py:89
+#: code:addons/account/account_analytic_line.py:98
#: code:addons/account/account_bank_statement.py:292
#: code:addons/account/account_bank_statement.py:305
#: code:addons/account/account_bank_statement.py:345
-#: code:addons/account/account_cash_statement.py:328
-#: code:addons/account/account_cash_statement.py:348
-#: code:addons/account/account_move_line.py:1176
-#: code:addons/account/account_move_line.py:1191
-#: code:addons/account/account_move_line.py:1193
-#: code:addons/account/invoice.py:785
-#: code:addons/account/invoice.py:815
-#: code:addons/account/invoice.py:1008
+#: code:addons/account/account_cash_statement.py:329
+#: code:addons/account/account_cash_statement.py:349
+#: code:addons/account/account_move_line.py:1182
+#: code:addons/account/account_move_line.py:1197
+#: code:addons/account/account_move_line.py:1199
+#: code:addons/account/invoice.py:793
+#: code:addons/account/invoice.py:823
+#: code:addons/account/invoice.py:1014
#: code:addons/account/wizard/account_invoice_refund.py:100
#: code:addons/account/wizard/account_invoice_refund.py:102
+#: code:addons/account/wizard/account_open_closed_fiscalyear.py:40
#: code:addons/account/wizard/account_use_model.py:44
#, python-format
msgid "Error !"
@@ -6211,7 +6217,7 @@ msgid "Journal Select"
msgstr ""
#. module: account
-#: code:addons/account/wizard/account_change_currency.py:65
+#: code:addons/account/wizard/account_change_currency.py:64
#, python-format
msgid "Currnt currency is not confirured properly !"
msgstr ""
@@ -6228,9 +6234,11 @@ msgstr ""
#. module: account
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: view:account.report.general.ledger:0
#: model:ir.actions.act_window,name:account.action_account_general_ledger_menu
#: model:ir.actions.report.xml,name:account.account_general_ledger
+#: model:ir.actions.report.xml,name:account.account_general_ledger_landscape
#: model:ir.ui.menu,name:account.menu_general_ledger
msgid "General Ledger"
msgstr "按全部业务类型打印全部凭证"
@@ -6284,7 +6292,7 @@ msgid "Total:"
msgstr "合计:"
#. module: account
-#: code:addons/account/account.py:2050
+#: code:addons/account/account.py:2064
#, python-format
msgid ""
"You can specify year, month and date in the name of the model using the "
@@ -6314,7 +6322,7 @@ msgid "Child Codes"
msgstr "子代码"
#. module: account
-#: code:addons/account/invoice.py:473
+#: code:addons/account/invoice.py:476
#: code:addons/account/wizard/account_invoice_refund.py:137
#, python-format
msgid "Data Insufficient !"
@@ -6471,7 +6479,7 @@ msgid "Lines"
msgstr "明细"
#. module: account
-#: code:addons/account/invoice.py:521
+#: code:addons/account/invoice.py:524
#, python-format
msgid ""
"Can not find account chart for this company in invoice line account, Please "
@@ -6639,7 +6647,7 @@ msgid ""
msgstr "这字段只用于如果你开发自己的模块允许开发者在自定义域创建特定的税"
#. module: account
-#: code:addons/account/account.py:938
+#: code:addons/account/account.py:952
#, python-format
msgid "You should have chosen periods that belongs to the same company"
msgstr ""
@@ -6743,7 +6751,7 @@ msgid "Sign on Reports"
msgstr "报表上的符号"
#. module: account
-#: code:addons/account/account_cash_statement.py:249
+#: code:addons/account/account_cash_statement.py:250
#, python-format
msgid "You can not have two open register for the same journal"
msgstr ""
@@ -6772,7 +6780,6 @@ msgstr ""
#. module: account
#: report:account.invoice:0
#: view:account.invoice:0
-#: report:account.move.voucher:0
msgid "PRO-FORMA"
msgstr "形式发票"
@@ -6788,7 +6795,7 @@ msgstr ""
#: view:account.move.line:0
#: selection:account.move.line,state:0
msgid "Unbalanced"
-msgstr ""
+msgstr "不平衡"
#. module: account
#: selection:account.move.line,centralisation:0
@@ -6802,6 +6809,7 @@ msgstr "可选信息"
#. module: account
#: view:account.analytic.line:0
+#: field:account.bank.statement,user_id:0
#: view:account.journal:0
#: field:account.journal,user_id:0
#: view:analytic.entries.report:0
@@ -6827,13 +6835,13 @@ msgid ""
msgstr ""
#. module: account
-#: code:addons/account/account_move_line.py:1271
+#: code:addons/account/account_move_line.py:1277
#, python-format
msgid "Bad account !"
msgstr "无效科目!"
#. module: account
-#: code:addons/account/account.py:2777
+#: code:addons/account/account.py:2821
#: code:addons/account/installer.py:432
#, python-format
msgid "Sales Journal"
@@ -6851,7 +6859,7 @@ msgid "Invoice Tax"
msgstr "发票税"
#. module: account
-#: code:addons/account/account_move_line.py:1246
+#: code:addons/account/account_move_line.py:1252
#, python-format
msgid "No piece number !"
msgstr "没会计期间!"
@@ -7085,17 +7093,17 @@ msgid "Fixed"
msgstr "固定"
#. module: account
-#: code:addons/account/account.py:506
-#: code:addons/account/account.py:519
-#: code:addons/account/account.py:522
+#: code:addons/account/account.py:516
+#: code:addons/account/account.py:529
#: code:addons/account/account.py:532
-#: code:addons/account/account.py:640
-#: code:addons/account/account.py:927
-#: code:addons/account/account_move_line.py:732
-#: code:addons/account/account_move_line.py:776
-#: code:addons/account/invoice.py:714
-#: code:addons/account/invoice.py:717
-#: code:addons/account/invoice.py:720
+#: code:addons/account/account.py:546
+#: code:addons/account/account.py:654
+#: code:addons/account/account.py:941
+#: code:addons/account/account_move_line.py:723
+#: code:addons/account/account_move_line.py:767
+#: code:addons/account/invoice.py:722
+#: code:addons/account/invoice.py:725
+#: code:addons/account/invoice.py:728
#, python-format
msgid "Warning !"
msgstr "警告 !"
@@ -7127,6 +7135,7 @@ msgstr ""
#: view:account.entries.report:0
#: field:account.entries.report,partner_id:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: view:account.invoice:0
#: field:account.invoice,partner_id:0
#: field:account.invoice.line,partner_id:0
@@ -7157,7 +7166,7 @@ msgid "Can not %s draft/proforma/cancel invoice."
msgstr "不能注销 %s 草稿/形式/取消的发票"
#. module: account
-#: code:addons/account/invoice.py:787
+#: code:addons/account/invoice.py:795
#, python-format
msgid "No Invoice Lines !"
msgstr ""
@@ -7206,7 +7215,7 @@ msgid "Deferral Method"
msgstr "递延方法"
#. module: account
-#: code:addons/account/invoice.py:359
+#: code:addons/account/invoice.py:360
#, python-format
msgid "Invoice '%s' is paid."
msgstr ""
@@ -7267,7 +7276,7 @@ msgid "Associated Partner"
msgstr "相关业务伙伴"
#. module: account
-#: code:addons/account/invoice.py:1284
+#: code:addons/account/invoice.py:1298
#, python-format
msgid "You must first select a partner !"
msgstr "你必须首先选择一个业务伙伴!"
@@ -7332,7 +7341,7 @@ msgid "Choose Fiscal Year"
msgstr "选择会计年度"
#. module: account
-#: code:addons/account/account.py:2841
+#: code:addons/account/account.py:2885
#: code:addons/account/installer.py:495
#, python-format
msgid "Purchase Refund Journal"
@@ -7367,6 +7376,7 @@ msgstr ""
#: view:account.entries.report:0
#: field:account.entries.report,period_id:0
#: view:account.fiscalyear:0
+#: report:account.general.ledger_landscape:0
#: view:account.invoice:0
#: view:account.invoice.report:0
#: field:account.journal.period,period_id:0
@@ -7529,7 +7539,7 @@ msgid "Account Types"
msgstr "科目类型"
#. module: account
-#: code:addons/account/invoice.py:897
+#: code:addons/account/invoice.py:905
#, python-format
msgid "Cannot create invoice move on centralised journal"
msgstr "你不能在汇总的副本里创建发票凭证"
@@ -7579,6 +7589,7 @@ msgstr "退款(开红字发票)业务类型"
#: report:account.account.balance:0
#: report:account.central.journal:0
#: report:account.general.journal:0
+#: report:account.general.ledger_landscape:0
#: report:account.partner.balance:0
msgid "Filter By"
msgstr ""
@@ -7617,7 +7628,7 @@ msgid "Payment Term Line"
msgstr "付款条款明细"
#. module: account
-#: code:addons/account/account.py:2794
+#: code:addons/account/account.py:2838
#: code:addons/account/installer.py:452
#, python-format
msgid "Purchase Journal"
@@ -7784,8 +7795,8 @@ msgid ""
msgstr ""
#. module: account
-#: code:addons/account/account_move_line.py:1131
-#: code:addons/account/account_move_line.py:1214
+#: code:addons/account/account_move_line.py:1137
+#: code:addons/account/account_move_line.py:1220
#, python-format
msgid "Bad account!"
msgstr "无效科目!"
@@ -7796,7 +7807,7 @@ msgid "Keep empty for all open fiscal years"
msgstr ""
#. module: account
-#: code:addons/account/account_move_line.py:1056
+#: code:addons/account/account_move_line.py:1062
#, python-format
msgid "The account move (%s) for centralisation has been confirmed!"
msgstr ""
@@ -7817,6 +7828,7 @@ msgstr "如果它是一个多货币凭证,这金额表示一个可选的其它
#: field:account.entries.report,currency_id:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.invoice,currency_id:0
#: field:account.invoice.report,currency_id:0
#: field:account.journal,currency:0
@@ -7989,14 +8001,14 @@ msgid "Period from"
msgstr "会计期间从"
#. module: account
-#: code:addons/account/account.py:2817
+#: code:addons/account/account.py:2861
#: code:addons/account/installer.py:476
#, python-format
msgid "Sales Refund Journal"
msgstr ""
#. module: account
-#: code:addons/account/account.py:927
+#: code:addons/account/account.py:941
#, python-format
msgid ""
"You cannot modify company of this period as its related record exist in "
@@ -8045,7 +8057,7 @@ msgid "Purchase Tax(%)"
msgstr ""
#. module: account
-#: code:addons/account/invoice.py:787
+#: code:addons/account/invoice.py:795
#, python-format
msgid "Please create some invoice lines."
msgstr ""
@@ -8061,7 +8073,7 @@ msgid "Configure Your Accounting Application"
msgstr ""
#. module: account
-#: code:addons/account/account.py:2820
+#: code:addons/account/account.py:2864
#: code:addons/account/installer.py:479
#, python-format
msgid "SCNJ"
@@ -8099,6 +8111,7 @@ msgstr ""
#: report:account.central.journal:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: report:account.partner.balance:0
#: report:account.third_party_ledger:0
@@ -8108,7 +8121,7 @@ msgid "Start Period"
msgstr ""
#. module: account
-#: code:addons/account/account.py:2333
+#: code:addons/account/account.py:2357
#, python-format
msgid "Cannot locate parent code for template account!"
msgstr ""
@@ -8145,7 +8158,7 @@ msgid "Accountant validates the accounting entries coming from the invoice. "
msgstr ""
#. module: account
-#: code:addons/account/invoice.py:1008
+#: code:addons/account/invoice.py:1014
#, python-format
msgid ""
"You cannot cancel the Invoice which is Partially Paid! You need to "
@@ -8173,7 +8186,7 @@ msgid "You can not create move line on view account."
msgstr ""
#. module: account
-#: code:addons/account/wizard/account_change_currency.py:71
+#: code:addons/account/wizard/account_change_currency.py:70
#, python-format
msgid "Current currency is not confirured properly !"
msgstr ""
@@ -8222,6 +8235,7 @@ msgstr "留空为使用收入科目"
#: field:account.entries.report,balance:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.move.line,balance:0
#: report:account.partner.balance:0
#: selection:account.payment.term.line,value:0
@@ -8240,6 +8254,7 @@ msgstr ""
#. module: account
#: report:account.account.balance:0
+#: report:account.general.ledger_landscape:0
msgid "Display Account"
msgstr ""
@@ -8354,6 +8369,7 @@ msgstr ""
#. module: account
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: field:account.move.line,move_id:0
#: field:analytic.entries.report,move_id:0
@@ -8361,7 +8377,7 @@ msgid "Move"
msgstr "凭证"
#. module: account
-#: code:addons/account/account_move_line.py:1128
+#: code:addons/account/account_move_line.py:1134
#, python-format
msgid "You can not change the tax, you should remove and recreate lines !"
msgstr "您不能更改此税目,请移除并重新创建凭证!"
@@ -8455,6 +8471,7 @@ msgstr ""
#: report:account.central.journal:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: report:account.partner.balance:0
#: report:account.third_party_ledger:0
@@ -8498,7 +8515,7 @@ msgid "Account Subscription"
msgstr "周期性凭证科目"
#. module: account
-#: code:addons/account/invoice.py:717
+#: code:addons/account/invoice.py:725
#, python-format
msgid ""
"Tax base different !\n"
@@ -8527,6 +8544,7 @@ msgstr "周期性凭证"
#: report:account.general.journal:0
#: field:account.general.journal,date_from:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.installer,date_start:0
#: report:account.journal.period.print:0
#: report:account.partner.balance:0
@@ -8555,7 +8573,7 @@ msgid "Unreconciled"
msgstr "反核销"
#. module: account
-#: code:addons/account/invoice.py:804
+#: code:addons/account/invoice.py:812
#, python-format
msgid "Bad total !"
msgstr "坏的合计!"
@@ -8613,13 +8631,13 @@ msgid "Active"
msgstr "启用"
#. module: account
-#: code:addons/account/invoice.py:354
+#: code:addons/account/invoice.py:353
#, python-format
msgid "Unknown Error"
msgstr ""
#. module: account
-#: code:addons/account/account.py:1167
+#: code:addons/account/account.py:1181
#, python-format
msgid ""
"You cannot validate a non-balanced entry !\n"
@@ -8662,10 +8680,10 @@ msgstr ""
#: field:account.entries.report,credit:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: field:account.model.line,credit:0
#: field:account.move.line,credit:0
-#: report:account.move.voucher:0
#: report:account.partner.balance:0
#: report:account.tax.code.entries:0
#: report:account.third_party_ledger:0
@@ -8901,7 +8919,6 @@ msgstr "选择会计期间"
#: view:account.move:0
#: selection:account.move,state:0
#: view:account.move.line:0
-#: report:account.move.voucher:0
msgid "Posted"
msgstr "已登账"
@@ -8920,6 +8937,7 @@ msgstr "已登账"
#: report:account.general.journal:0
#: field:account.general.journal,date_to:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.installer,date_stop:0
#: report:account.journal.period.print:0
#: report:account.partner.balance:0
@@ -8973,7 +8991,7 @@ msgid "This is a model for recurring accounting entries"
msgstr "这是一个循环凭证模型"
#. module: account
-#: code:addons/account/account_analytic_line.py:100
+#: code:addons/account/account_analytic_line.py:99
#, python-format
msgid "There is no income account defined for this product: \"%s\" (id:%d)"
msgstr ""
@@ -9123,8 +9141,8 @@ msgid "End period"
msgstr ""
#. module: account
-#: code:addons/account/account_move_line.py:738
-#: code:addons/account/account_move_line.py:815
+#: code:addons/account/account_move_line.py:729
+#: code:addons/account/account_move_line.py:806
#: code:addons/account/wizard/account_invoice_state.py:44
#: code:addons/account/wizard/account_invoice_state.py:68
#: code:addons/account/wizard/account_report_balance_sheet.py:70
@@ -9190,10 +9208,10 @@ msgstr "供应商发票"
#: field:account.entries.report,debit:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: report:account.journal.period.print:0
#: field:account.model.line,debit:0
#: field:account.move.line,debit:0
-#: report:account.move.voucher:0
#: report:account.partner.balance:0
#: report:account.tax.code.entries:0
#: report:account.third_party_ledger:0
@@ -9227,7 +9245,7 @@ msgid "Recurring"
msgstr ""
#. module: account
-#: code:addons/account/account_move_line.py:805
+#: code:addons/account/account_move_line.py:796
#, python-format
msgid "Entry is already reconciled"
msgstr "凭证已经核销"
@@ -9248,7 +9266,7 @@ msgid "Range"
msgstr "范围"
#. module: account
-#: code:addons/account/account_move_line.py:1246
+#: code:addons/account/account_move_line.py:1252
#, python-format
msgid ""
"Can not create an automatic sequence for this piece !\n"
@@ -9327,17 +9345,17 @@ msgstr "如果是一个多货币凭证可选其它货币"
#: model:process.transition,note:account.process_transition_invoiceimport0
msgid ""
"Import of the statement in the system from a supplier or customer invoice"
-msgstr ""
+msgstr "供应商或客户发票在系统中的入口"
#. module: account
#: model:ir.ui.menu,name:account.menu_finance_periodical_processing_billing
msgid "Billing"
-msgstr ""
+msgstr "发票"
#. module: account
#: view:account.account:0
msgid "Parent Account"
-msgstr ""
+msgstr "父科目"
#. module: account
#: model:ir.actions.act_window,help:account.action_account_journal_form
@@ -9353,7 +9371,7 @@ msgstr ""
#. module: account
#: model:ir.model,name:account.model_account_analytic_chart
msgid "Account Analytic Chart"
-msgstr ""
+msgstr "科目分析图表"
#. module: account
#: help:account.invoice,residual:0
@@ -9363,14 +9381,14 @@ msgstr "剩余的欠款"
#. module: account
#: model:ir.ui.menu,name:account.menu_finance_statistic_report_statement
msgid "Statistic Reports"
-msgstr ""
+msgstr "统计报告"
#. module: account
#: field:account.installer,progress:0
#: field:account.installer.modules,progress:0
#: field:wizard.multi.charts.accounts,progress:0
msgid "Configuration Progress"
-msgstr ""
+msgstr "配置进度"
#. module: account
#: view:account.fiscal.position.template:0
@@ -9378,7 +9396,7 @@ msgid "Accounts Mapping"
msgstr "科目一览"
#. module: account
-#: code:addons/account/invoice.py:346
+#: code:addons/account/invoice.py:345
#, python-format
msgid "Invoice '%s' is waiting for validation."
msgstr ""
@@ -9403,7 +9421,7 @@ msgid "The income or expense account related to the selected product."
msgstr "和选择的产品相关的收入或费用科目"
#. module: account
-#: code:addons/account/account_move_line.py:1117
+#: code:addons/account/account_move_line.py:1123
#, python-format
msgid "The date of your Journal Entry is not in the defined period!"
msgstr ""
@@ -9487,7 +9505,7 @@ msgstr ""
#. module: account
#: view:account.invoice.tax:0
msgid "Manual Invoice Taxes"
-msgstr "手动发票税"
+msgstr "上门纳税(非主营业务纳税)"
#. module: account
#: field:account.account,parent_right:0
@@ -9589,7 +9607,7 @@ msgstr "通常用 1或-1"
#. module: account
#: model:ir.model,name:account.model_account_fiscal_position_account_template
msgid "Template Account Fiscal Mapping"
-msgstr ""
+msgstr "以这个会计科目为模版制图"
#. module: account
#: field:account.chart.template,property_account_expense:0
@@ -9599,7 +9617,7 @@ msgstr "产品模板的费用科目"
#. module: account
#: field:account.analytic.line,amount_currency:0
msgid "Amount currency"
-msgstr ""
+msgstr "金额"
#. module: account
#: code:addons/account/wizard/account_report_aged_partner_balance.py:55
@@ -9608,7 +9626,7 @@ msgid "You must enter a period length that cannot be 0 or below !"
msgstr "您必须输入的期间长度不能为0或以下 !"
#. module: account
-#: code:addons/account/account.py:501
+#: code:addons/account/account.py:511
#, python-format
msgid "You cannot remove an account which has account entries!. "
msgstr "你不能删除这科目因为它已有凭证! "
diff --git a/addons/account/invoice.py b/addons/account/invoice.py
index 9d95a5af4ba..8b1b2a0edda 100644
--- a/addons/account/invoice.py
+++ b/addons/account/invoice.py
@@ -227,21 +227,21 @@ class account_invoice(osv.osv):
'tax_line': fields.one2many('account.invoice.tax', 'invoice_id', 'Tax Lines', readonly=True, states={'draft':[('readonly',False)]}),
'move_id': fields.many2one('account.move', 'Journal Entry', readonly=True, select=1, ondelete='restrict', help="Link to the automatically generated Journal Items."),
- 'amount_untaxed': fields.function(_amount_all, method=True, digits_compute=dp.get_precision('Account'), string='Untaxed',
+ 'amount_untaxed': fields.function(_amount_all, digits_compute=dp.get_precision('Account'), string='Untaxed',
store={
'account.invoice': (lambda self, cr, uid, ids, c={}: ids, ['invoice_line'], 20),
'account.invoice.tax': (_get_invoice_tax, None, 20),
'account.invoice.line': (_get_invoice_line, ['price_unit','invoice_line_tax_id','quantity','discount','invoice_id'], 20),
},
multi='all'),
- 'amount_tax': fields.function(_amount_all, method=True, digits_compute=dp.get_precision('Account'), string='Tax',
+ 'amount_tax': fields.function(_amount_all, digits_compute=dp.get_precision('Account'), string='Tax',
store={
'account.invoice': (lambda self, cr, uid, ids, c={}: ids, ['invoice_line'], 20),
'account.invoice.tax': (_get_invoice_tax, None, 20),
'account.invoice.line': (_get_invoice_line, ['price_unit','invoice_line_tax_id','quantity','discount','invoice_id'], 20),
},
multi='all'),
- 'amount_total': fields.function(_amount_all, method=True, digits_compute=dp.get_precision('Account'), string='Total',
+ 'amount_total': fields.function(_amount_all, digits_compute=dp.get_precision('Account'), string='Total',
store={
'account.invoice': (lambda self, cr, uid, ids, c={}: ids, ['invoice_line'], 20),
'account.invoice.tax': (_get_invoice_tax, None, 20),
@@ -252,7 +252,7 @@ class account_invoice(osv.osv):
'journal_id': fields.many2one('account.journal', 'Journal', required=True, readonly=True, states={'draft':[('readonly',False)]}),
'company_id': fields.many2one('res.company', 'Company', required=True, change_default=True, readonly=True, states={'draft':[('readonly',False)]}),
'check_total': fields.float('Total', digits_compute=dp.get_precision('Account'), states={'open':[('readonly',True)],'close':[('readonly',True)]}),
- 'reconciled': fields.function(_reconciled, method=True, string='Paid/Reconciled', type='boolean',
+ 'reconciled': fields.function(_reconciled, string='Paid/Reconciled', type='boolean',
store={
'account.invoice': (lambda self, cr, uid, ids, c={}: ids, None, 50), # Check if we can remove ?
'account.move.line': (_get_invoice_from_line, None, 50),
@@ -260,8 +260,8 @@ class account_invoice(osv.osv):
}, help="The Journal Entry of the invoice have been totally reconciled with one or several Journal Entries of payment."),
'partner_bank_id': fields.many2one('res.partner.bank', 'Bank Account',
help='Bank Account Number, Company bank account if Invoice is customer or supplier refund, otherwise Partner bank account number.', readonly=True, states={'draft':[('readonly',False)]}),
- 'move_lines':fields.function(_get_lines, method=True, type='many2many', relation='account.move.line', string='Entry Lines'),
- 'residual': fields.function(_amount_residual, method=True, digits_compute=dp.get_precision('Account'), string='Residual',
+ 'move_lines':fields.function(_get_lines, type='many2many', relation='account.move.line', string='Entry Lines'),
+ 'residual': fields.function(_amount_residual, digits_compute=dp.get_precision('Account'), string='Residual',
store={
'account.invoice': (lambda self, cr, uid, ids, c={}: ids, ['invoice_line','move_id'], 50),
'account.invoice.tax': (_get_invoice_tax, None, 50),
@@ -270,7 +270,7 @@ class account_invoice(osv.osv):
'account.move.reconcile': (_get_invoice_from_reconcile, None, 50),
},
help="Remaining amount due."),
- 'payment_ids': fields.function(_compute_lines, method=True, relation='account.move.line', type="many2many", string='Payments'),
+ 'payment_ids': fields.function(_compute_lines, relation='account.move.line', type="many2many", string='Payments'),
'move_name': fields.char('Journal Entry', size=64, readonly=True, states={'draft':[('readonly',False)]}),
'user_id': fields.many2one('res.users', 'Salesman', readonly=True, states={'draft':[('readonly',False)]}),
'fiscal_position': fields.many2one('account.fiscal.position', 'Fiscal Position', readonly=True, states={'draft':[('readonly',False)]})
@@ -1282,7 +1282,7 @@ class account_invoice_line(osv.osv):
'product_id': fields.many2one('product.product', 'Product', ondelete='set null'),
'account_id': fields.many2one('account.account', 'Account', required=True, domain=[('type','<>','view'), ('type', '<>', 'closed')], help="The income or expense account related to the selected product."),
'price_unit': fields.float('Unit Price', required=True, digits_compute= dp.get_precision('Account')),
- 'price_subtotal': fields.function(_amount_line, method=True, string='Subtotal', type="float",
+ 'price_subtotal': fields.function(_amount_line, string='Subtotal', type="float",
digits_compute= dp.get_precision('Account'), store=True),
'quantity': fields.float('Quantity', required=True),
'discount': fields.float('Discount (%)', digits_compute= dp.get_precision('Account')),
@@ -1505,8 +1505,8 @@ class account_invoice_tax(osv.osv):
'tax_code_id': fields.many2one('account.tax.code', 'Tax Code', help="The tax basis of the tax declaration."),
'tax_amount': fields.float('Tax Code Amount', digits_compute=dp.get_precision('Account')),
'company_id': fields.related('account_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),
- 'factor_base': fields.function(_count_factor, method=True, string='Multipication factor for Base code', type='float', multi="all"),
- 'factor_tax': fields.function(_count_factor, method=True, string='Multipication factor Tax code', type='float', multi="all")
+ 'factor_base': fields.function(_count_factor, string='Multipication factor for Base code', type='float', multi="all"),
+ 'factor_tax': fields.function(_count_factor, string='Multipication factor Tax code', type='float', multi="all")
}
def base_change(self, cr, uid, ids, base, currency_id=False, company_id=False, date_invoice=False):
diff --git a/addons/account/partner.py b/addons/account/partner.py
index 9e2aafe849a..6ff3879889c 100644
--- a/addons/account/partner.py
+++ b/addons/account/partner.py
@@ -142,15 +142,14 @@ class res_partner(osv.osv):
_columns = {
'credit': fields.function(_credit_debit_get,
- fnct_search=_credit_search, method=True, string='Total Receivable', multi='dc', help="Total amount this customer owes you."),
- 'debit': fields.function(_credit_debit_get, fnct_search=_debit_search, method=True, string='Total Payable', multi='dc', help="Total amount you have to pay to this supplier."),
+ fnct_search=_credit_search, string='Total Receivable', multi='dc', help="Total amount this customer owes you."),
+ 'debit': fields.function(_credit_debit_get, fnct_search=_debit_search, string='Total Payable', multi='dc', help="Total amount you have to pay to this supplier."),
'debit_limit': fields.float('Payable Limit'),
'property_account_payable': fields.property(
'account.account',
type='many2one',
relation='account.account',
string="Account Payable",
- method=True,
view_load=True,
domain="[('type', '=', 'payable')]",
help="This account will be used instead of the default one as the payable account for the current partner",
@@ -160,7 +159,6 @@ class res_partner(osv.osv):
type='many2one',
relation='account.account',
string="Account Receivable",
- method=True,
view_load=True,
domain="[('type', '=', 'receivable')]",
help="This account will be used instead of the default one as the receivable account for the current partner",
@@ -170,7 +168,6 @@ class res_partner(osv.osv):
type='many2one',
relation='account.fiscal.position',
string="Fiscal Position",
- method=True,
view_load=True,
help="The fiscal position will determine taxes and the accounts used for the partner.",
),
@@ -179,7 +176,6 @@ class res_partner(osv.osv):
type='many2one',
relation='account.payment.term',
string ='Payment Term',
- method=True,
view_load=True,
help="This payment term will be used instead of the default one for the current partner"),
'ref_companies': fields.one2many('res.company', 'partner_id',
diff --git a/addons/account/product.py b/addons/account/product.py
index b8af27b03e5..9be49b4c56a 100644
--- a/addons/account/product.py
+++ b/addons/account/product.py
@@ -29,7 +29,6 @@ class product_category(osv.osv):
type='many2one',
relation='account.account',
string="Income Account",
- method=True,
view_load=True,
help="This account will be used for invoices to value sales for the current product category"),
'property_account_expense_categ': fields.property(
@@ -37,7 +36,6 @@ class product_category(osv.osv):
type='many2one',
relation='account.account',
string="Expense Account",
- method=True,
view_load=True,
help="This account will be used for invoices to value expenses for the current product category"),
}
@@ -61,7 +59,6 @@ class product_template(osv.osv):
type='many2one',
relation='account.account',
string="Income Account",
- method=True,
view_load=True,
help="This account will be used for invoices instead of the default one to value sales for the current product"),
'property_account_expense': fields.property(
@@ -69,7 +66,6 @@ class product_template(osv.osv):
type='many2one',
relation='account.account',
string="Expense Account",
- method=True,
view_load=True,
help="This account will be used for invoices instead of the default one to value expenses for the current product"),
}
diff --git a/addons/account/report/account_report.py b/addons/account/report/account_report.py
index 6b22dc21fdf..6666b1ccd83 100644
--- a/addons/account/report/account_report.py
+++ b/addons/account/report/account_report.py
@@ -114,7 +114,7 @@ class report_aged_receivable(osv.osv):
_columns = {
'name': fields.char('Month Range', size=7, readonly=True),
- 'balance': fields.function(_calc_bal, method=True, string='Balance', readonly=True),
+ 'balance': fields.function(_calc_bal, string='Balance', readonly=True),
}
def init(self, cr, uid=1):
diff --git a/addons/account/report/account_treasury_report.py b/addons/account/report/account_treasury_report.py
index 4d3ec449204..fce3661b4c4 100644
--- a/addons/account/report/account_treasury_report.py
+++ b/addons/account/report/account_treasury_report.py
@@ -47,8 +47,8 @@ class account_treasury_report(osv.osv):
'credit': fields.float('Credit', readonly=True),
'balance': fields.float('Balance', readonly=True),
'date': fields.date('Beginning of Period Date', readonly=True),
- 'starting_balance': fields.function(_compute_balances, digits_compute=dp.get_precision('Account'), method=True, string='Starting Balance', multi='balance'),
- 'ending_balance': fields.function(_compute_balances, digits_compute=dp.get_precision('Account'), method=True, string='Ending Balance', multi='balance'),
+ 'starting_balance': fields.function(_compute_balances, digits_compute=dp.get_precision('Account'), string='Starting Balance', multi='balance'),
+ 'ending_balance': fields.function(_compute_balances, digits_compute=dp.get_precision('Account'), string='Ending Balance', multi='balance'),
'company_id': fields.many2one('res.company', 'Company', readonly=True),
}
diff --git a/addons/account/security/account_security.xml b/addons/account/security/account_security.xml
index b7271fec84b..016c147be91 100644
--- a/addons/account/security/account_security.xml
+++ b/addons/account/security/account_security.xml
@@ -97,6 +97,13 @@
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
+
+ Invoice Analysis multi-company
+
+
+ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
+
+
Account fiscal Mapping company rule
diff --git a/addons/account_analytic_analysis/account_analytic_analysis.py b/addons/account_analytic_analysis/account_analytic_analysis.py
index 11f92614b73..22eb9401ad7 100644
--- a/addons/account_analytic_analysis/account_analytic_analysis.py
+++ b/addons/account_analytic_analysis/account_analytic_analysis.py
@@ -375,49 +375,49 @@ class account_analytic_account(osv.osv):
return res
_columns ={
- 'ca_invoiced': fields.function(_ca_invoiced_calc, method=True, type='float', string='Invoiced Amount',
+ 'ca_invoiced': fields.function(_ca_invoiced_calc, type='float', string='Invoiced Amount',
help="Total customer invoiced amount for this account.",
digits_compute=dp.get_precision('Account')),
- 'total_cost': fields.function(_total_cost_calc, method=True, type='float', string='Total Costs',
+ 'total_cost': fields.function(_total_cost_calc, type='float', string='Total Costs',
help="Total of costs for this account. It includes real costs (from invoices) and indirect costs, like time spent on timesheets.",
digits_compute=dp.get_precision('Account')),
- 'ca_to_invoice': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='float', string='Uninvoiced Amount',
+ 'ca_to_invoice': fields.function(_analysis_all, multi='analytic_analysis', type='float', string='Uninvoiced Amount',
help="If invoice from analytic account, the remaining amount you can invoice to the customer based on the total costs.",
digits_compute=dp.get_precision('Account')),
- 'ca_theorical': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='float', string='Theoretical Revenue',
+ 'ca_theorical': fields.function(_analysis_all, multi='analytic_analysis', type='float', string='Theoretical Revenue',
help="Based on the costs you had on the project, what would have been the revenue if all these costs have been invoiced at the normal sale price provided by the pricelist.",
digits_compute=dp.get_precision('Account')),
- 'hours_quantity': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='float', string='Hours Tot',
+ 'hours_quantity': fields.function(_analysis_all, multi='analytic_analysis', type='float', string='Hours Tot',
help="Number of hours you spent on the analytic account (from timesheet). It computes on all journal of type 'general'."),
- 'last_invoice_date': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='date', string='Last Invoice Date',
+ 'last_invoice_date': fields.function(_analysis_all, multi='analytic_analysis', type='date', string='Last Invoice Date',
help="If invoice from the costs, this is the date of the latest invoiced."),
- 'last_worked_invoiced_date': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='date', string='Date of Last Invoiced Cost',
+ 'last_worked_invoiced_date': fields.function(_analysis_all, multi='analytic_analysis', type='date', string='Date of Last Invoiced Cost',
help="If invoice from the costs, this is the date of the latest work or cost that have been invoiced."),
- 'last_worked_date': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='date', string='Date of Last Cost/Work',
+ 'last_worked_date': fields.function(_analysis_all, multi='analytic_analysis', type='date', string='Date of Last Cost/Work',
help="Date of the latest work done on this account."),
- 'hours_qtt_non_invoiced': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='float', string='Uninvoiced Hours',
+ 'hours_qtt_non_invoiced': fields.function(_analysis_all, multi='analytic_analysis', type='float', string='Uninvoiced Hours',
help="Number of hours (from journal of type 'general') that can be invoiced if you invoice based on analytic account."),
- 'hours_qtt_invoiced': fields.function(_hours_qtt_invoiced_calc, method=True, type='float', string='Invoiced Hours',
+ 'hours_qtt_invoiced': fields.function(_hours_qtt_invoiced_calc, type='float', string='Invoiced Hours',
help="Number of hours that can be invoiced plus those that already have been invoiced."),
- 'remaining_hours': fields.function(_remaining_hours_calc, method=True, type='float', string='Remaining Hours',
+ 'remaining_hours': fields.function(_remaining_hours_calc, type='float', string='Remaining Hours',
help="Computed using the formula: Maximum Quantity - Hours Tot."),
- 'remaining_ca': fields.function(_remaining_ca_calc, method=True, type='float', string='Remaining Revenue',
+ 'remaining_ca': fields.function(_remaining_ca_calc, type='float', string='Remaining Revenue',
help="Computed using the formula: Max Invoice Price - Invoiced Amount.",
digits_compute=dp.get_precision('Account')),
- 'revenue_per_hour': fields.function(_revenue_per_hour_calc, method=True, type='float', string='Revenue per Hours (real)',
+ 'revenue_per_hour': fields.function(_revenue_per_hour_calc, type='float', string='Revenue per Hours (real)',
help="Computed using the formula: Invoiced Amount / Hours Tot.",
digits_compute=dp.get_precision('Account')),
- 'real_margin': fields.function(_real_margin_calc, method=True, type='float', string='Real Margin',
+ 'real_margin': fields.function(_real_margin_calc, type='float', string='Real Margin',
help="Computed using the formula: Invoiced Amount - Total Costs.",
digits_compute=dp.get_precision('Account')),
- 'theorical_margin': fields.function(_theorical_margin_calc, method=True, type='float', string='Theoretical Margin',
+ 'theorical_margin': fields.function(_theorical_margin_calc, type='float', string='Theoretical Margin',
help="Computed using the formula: Theorial Revenue - Total Costs",
digits_compute=dp.get_precision('Account')),
- 'real_margin_rate': fields.function(_real_margin_rate_calc, method=True, type='float', string='Real Margin Rate (%)',
+ 'real_margin_rate': fields.function(_real_margin_rate_calc, type='float', string='Real Margin Rate (%)',
help="Computes using the formula: (Real Margin / Total Costs) * 100.",
digits_compute=dp.get_precision('Account')),
- 'month_ids': fields.function(_analysis_all, method=True, multi='analytic_analysis', type='many2many', relation='account_analytic_analysis.summary.month', string='Month'),
- 'user_ids': fields.function(_analysis_all, method=True, multi='analytic_analysis', type="many2many", relation='account_analytic_analysis.summary.user', string='User'),
+ 'month_ids': fields.function(_analysis_all, multi='analytic_analysis', type='many2many', relation='account_analytic_analysis.summary.month', string='Month'),
+ 'user_ids': fields.function(_analysis_all, multi='analytic_analysis', type="many2many", relation='account_analytic_analysis.summary.user', string='User'),
}
account_analytic_account()
@@ -456,7 +456,7 @@ class account_analytic_account_summary_user(osv.osv):
_columns = {
'account_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True),
- 'unit_amount': fields.function(_unit_amount, method=True, type='float',
+ 'unit_amount': fields.function(_unit_amount, type='float',
string='Total Time'),
'user': fields.many2one('res.users', 'User'),
}
@@ -620,7 +620,7 @@ class account_analytic_account_summary_month(osv.osv):
_columns = {
'account_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True),
- 'unit_amount': fields.function(_unit_amount, method=True, type='float', string='Total Time'),
+ 'unit_amount': fields.function(_unit_amount, type='float', string='Total Time'),
'month': fields.char('Month', size=32, readonly=True),
}
diff --git a/addons/account_analytic_default/i18n/zh_CN.po b/addons/account_analytic_default/i18n/zh_CN.po
index 7c6b8677b1c..f6cc673966d 100644
--- a/addons/account_analytic_default/i18n/zh_CN.po
+++ b/addons/account_analytic_default/i18n/zh_CN.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: 2010-09-29 09:13+0000\n"
-"Last-Translator: Black Jack \n"
+"PO-Revision-Date: 2011-07-01 10:20+0000\n"
+"Last-Translator: digitalsatori \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-04-29 05:25+0000\n"
-"X-Generator: Launchpad (build 12758)\n"
+"X-Launchpad-Export-Date: 2011-07-02 05:06+0000\n"
+"X-Generator: Launchpad (build 13168)\n"
#. module: account_analytic_default
#: model:ir.module.module,shortdesc:account_analytic_default.module_meta_information
@@ -49,7 +49,7 @@ msgstr ""
#. module: account_analytic_default
#: view:account.analytic.default:0
msgid "Group By..."
-msgstr ""
+msgstr "分组..."
#. module: account_analytic_default
#: help:account.analytic.default,date_stop:0
@@ -59,7 +59,7 @@ msgstr ""
#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_stock_picking
msgid "Picking List"
-msgstr ""
+msgstr "领料/提货单"
#. module: account_analytic_default
#: view:account.analytic.default:0
diff --git a/addons/account_analytic_plans/account_analytic_plans.py b/addons/account_analytic_plans/account_analytic_plans.py
index 990f53e91ef..c8ab5334d8a 100644
--- a/addons/account_analytic_plans/account_analytic_plans.py
+++ b/addons/account_analytic_plans/account_analytic_plans.py
@@ -61,7 +61,7 @@ class account_analytic_line(osv.osv):
return res
_columns = {
- 'amount_currency': fields.function(_get_amount, string="Amount Currency", type="float", method=True, store=True, help="The amount expressed in the related account currency if not equal to the company one.", readonly=True),
+ 'amount_currency': fields.function(_get_amount, string="Amount Currency", type="float", store=True, help="The amount expressed in the related account currency if not equal to the company one.", readonly=True),
'percentage': fields.float('Percentage')
}
diff --git a/addons/account_anglo_saxon/product.py b/addons/account_anglo_saxon/product.py
index ebb9bde3d00..a2a5f7e6e95 100644
--- a/addons/account_anglo_saxon/product.py
+++ b/addons/account_anglo_saxon/product.py
@@ -28,7 +28,6 @@ class product_category(osv.osv):
type='many2one',
relation='account.account',
string="Price Difference Account",
- method=True,
view_load=True,
help="This account will be used to value price difference between purchase price and cost price."),
@@ -38,7 +37,6 @@ class product_category(osv.osv):
type='many2one',
relation='account.account',
string="Income Account",
- method=True,
view_load=True,
help="This account will be used to value outgoing stock for the current product category using sale price"),
'property_account_expense_categ': fields.property(
@@ -46,7 +44,6 @@ class product_category(osv.osv):
type='many2one',
relation='account.account',
string="Expense Account",
- method=True,
view_load=True,
help="This account will be used to value outgoing stock for the current product category using cost price"),
@@ -61,7 +58,6 @@ class product_template(osv.osv):
type='many2one',
relation='account.account',
string="Price Difference Account",
- method=True,
view_load=True,
help="This account will be used to value price difference between purchase price and cost price."),
@@ -71,7 +67,6 @@ class product_template(osv.osv):
type='many2one',
relation='account.account',
string="Income Account",
- method=True,
view_load=True,
help="This account will be used to value outgoing stock for the current product category using sale price"),
'property_account_expense': fields.property(
@@ -79,7 +74,6 @@ class product_template(osv.osv):
type='many2one',
relation='account.account',
string="Expense Account",
- method=True,
view_load=True,
help="This account will be used to value outgoing stock for the current product category using cost price"),
diff --git a/addons/account_budget/account_budget.py b/addons/account_budget/account_budget.py
index 12caba17374..7d9666ae5ac 100644
--- a/addons/account_budget/account_budget.py
+++ b/addons/account_budget/account_budget.py
@@ -196,9 +196,9 @@ class crossovered_budget_lines(osv.osv):
'date_to': fields.date('End Date', required=True),
'paid_date': fields.date('Paid Date'),
'planned_amount':fields.float('Planned Amount', required=True, digits_compute=dp.get_precision('Account')),
- 'practical_amount':fields.function(_prac, method=True, string='Practical Amount', type='float', digits_compute=dp.get_precision('Account')),
- 'theoritical_amount':fields.function(_theo, method=True, string='Theoretical Amount', type='float', digits_compute=dp.get_precision('Account')),
- 'percentage':fields.function(_perc, method=True, string='Percentage', type='float'),
+ 'practical_amount':fields.function(_prac, string='Practical Amount', type='float', digits_compute=dp.get_precision('Account')),
+ 'theoritical_amount':fields.function(_theo, string='Theoretical Amount', type='float', digits_compute=dp.get_precision('Account')),
+ 'percentage':fields.function(_perc, string='Percentage', type='float'),
'company_id': fields.related('crossovered_budget_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True)
}
diff --git a/addons/account_invoice_layout/account_invoice_layout.py b/addons/account_invoice_layout/account_invoice_layout.py
index 3337710420f..b0fb92c9abb 100644
--- a/addons/account_invoice_layout/account_invoice_layout.py
+++ b/addons/account_invoice_layout/account_invoice_layout.py
@@ -161,7 +161,7 @@ class account_invoice_line(osv.osv):
('break','Page Break'),]
,'Type', select=True, required=True),
'sequence': fields.integer('Sequence Number', help="Gives the sequence order when displaying a list of invoice lines."),
- 'functional_field': fields.function(_fnct, arg=None, fnct_inv=None, fnct_inv_arg=None, type='char', fnct_search=None, obj=None, method=True, store=False, string="Source Account"),
+ 'functional_field': fields.function(_fnct, arg=None, fnct_inv=None, fnct_inv_arg=None, type='char', fnct_search=None, obj=None, store=False, string="Source Account"),
}
def _default_account(self, cr, uid, context=None):
diff --git a/addons/account_payment/account_invoice.py b/addons/account_payment/account_invoice.py
index 1f882b48421..fd787863c7d 100644
--- a/addons/account_payment/account_invoice.py
+++ b/addons/account_payment/account_invoice.py
@@ -42,7 +42,7 @@ class Invoice(osv.osv):
return res
_columns = {
- 'amount_to_pay': fields.function(_amount_to_pay, method=True,
+ 'amount_to_pay': fields.function(_amount_to_pay,
type='float', string='Amount to be paid',
help='The amount which should be paid at the current date\n' \
'minus the amount which is already in payment order'),
diff --git a/addons/account_payment/account_move_line.py b/addons/account_payment/account_move_line.py
index 68bb33ca4e5..24f9486be95 100644
--- a/addons/account_payment/account_move_line.py
+++ b/addons/account_payment/account_move_line.py
@@ -111,7 +111,7 @@ class account_move_line(osv.osv):
return line2bank
_columns = {
- 'amount_to_pay': fields.function(amount_to_pay, method=True,
+ 'amount_to_pay': fields.function(amount_to_pay,
type='float', string='Amount to pay', fnct_search=_to_pay_search),
}
diff --git a/addons/account_payment/account_payment.py b/addons/account_payment/account_payment.py
index 19de746b7c9..9858d536d17 100644
--- a/addons/account_payment/account_payment.py
+++ b/addons/account_payment/account_payment.py
@@ -96,7 +96,7 @@ class payment_order(osv.osv):
('done', 'Done')], 'State', select=True,
help='When an order is placed the state is \'Draft\'.\n Once the bank is confirmed the state is set to \'Confirmed\'.\n Then the order is paid the state is \'Done\'.'),
'line_ids': fields.one2many('payment.line', 'order_id', 'Payment lines', states={'done': [('readonly', True)]}),
- 'total': fields.function(_total, string="Total", method=True, type='float'),
+ 'total': fields.function(_total, string="Total", type='float'),
'user_id': fields.many2one('res.users', 'User', required=True, states={'done': [('readonly', True)]}),
'date_prefered': fields.selection([
('now', 'Directly'),
@@ -344,14 +344,14 @@ class payment_line(osv.osv):
ondelete='cascade', select=True),
'partner_id': fields.many2one('res.partner', string="Partner", required=True, help='The Ordering Customer'),
'amount': fields.function(_amount, string='Amount in Company Currency',
- method=True, type='float',
+ type='float',
help='Payment amount in the company currency'),
'ml_date_created': fields.function(_get_ml_created_date, string="Effective Date",
- method=True, type='date', help="Invoice Effective Date"),
- 'ml_maturity_date': fields.function(_get_ml_maturity_date, method=True, type='date', string='Due Date'),
- 'ml_inv_ref': fields.function(_get_ml_inv_ref, method=True, type='many2one', relation='account.invoice', string='Invoice Ref.'),
- 'info_owner': fields.function(info_owner, string="Owner Account", method=True, type="text", help='Address of the Main Partner'),
- 'info_partner': fields.function(info_partner, string="Destination Account", method=True, type="text", help='Address of the Ordering Customer.'),
+ type='date', help="Invoice Effective Date"),
+ 'ml_maturity_date': fields.function(_get_ml_maturity_date, type='date', string='Due Date'),
+ 'ml_inv_ref': fields.function(_get_ml_inv_ref, type='many2one', relation='account.invoice', string='Invoice Ref.'),
+ 'info_owner': fields.function(info_owner, string="Owner Account", type="text", help='Address of the Main Partner'),
+ 'info_partner': fields.function(info_partner, string="Destination Account", type="text", help='Address of the Ordering Customer.'),
'date': fields.date('Payment Date', help="If no payment date is specified, the bank will treat this payment line directly"),
'create_date': fields.datetime('Created', readonly=True),
'state': fields.selection([('normal','Free'), ('structured','Structured')], 'Communication Type', required=True),
diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py
index b4422cd8051..dee3d81832b 100644
--- a/addons/account_voucher/account_voucher.py
+++ b/addons/account_voucher/account_voucher.py
@@ -226,7 +226,7 @@ class account_voucher(osv.osv):
'writeoff_acc_id': fields.many2one('account.account', 'Write-Off account', readonly=True, states={'draft': [('readonly', False)]}),
'comment': fields.char('Write-Off Comment', size=64, required=True, readonly=True, states={'draft': [('readonly', False)]}),
'analytic_id': fields.many2one('account.analytic.account','Write-Off Analytic Account', readonly=True, states={'draft': [('readonly', False)]}),
- 'writeoff_amount': fields.function(_get_writeoff_amount, method=True, string='Write-Off Amount', type='float', readonly=True),
+ 'writeoff_amount': fields.function(_get_writeoff_amount, string='Write-Off Amount', type='float', readonly=True),
}
_defaults = {
'period_id': _get_period,
@@ -845,8 +845,8 @@ class account_voucher_line(osv.osv):
'move_line_id': fields.many2one('account.move.line', 'Journal Item'),
'date_original': fields.related('move_line_id','date', type='date', relation='account.move.line', string='Date', readonly=1),
'date_due': fields.related('move_line_id','date_maturity', type='date', relation='account.move.line', string='Due Date', readonly=1),
- 'amount_original': fields.function(_compute_balance, method=True, multi='dc', type='float', string='Original Amount', store=True),
- 'amount_unreconciled': fields.function(_compute_balance, method=True, multi='dc', type='float', string='Open Balance', store=True),
+ 'amount_original': fields.function(_compute_balance, multi='dc', type='float', string='Original Amount', store=True),
+ 'amount_unreconciled': fields.function(_compute_balance, multi='dc', type='float', string='Open Balance', store=True),
'company_id': fields.related('voucher_id','company_id', relation='res.company', type='many2one', string='Company', store=True, readonly=True),
}
_defaults = {
@@ -991,7 +991,7 @@ class account_bank_statement_line(osv.osv):
_columns = {
'amount_reconciled': fields.function(_amount_reconciled,
- string='Amount reconciled', method=True, type='float'),
+ string='Amount reconciled', type='float'),
'voucher_id': fields.many2one('account.voucher', 'Payment'),
}
diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py
index d822c382c91..a155352adf8 100644
--- a/addons/analytic/analytic.py
+++ b/addons/analytic/analytic.py
@@ -149,18 +149,18 @@ class account_analytic_account(osv.osv):
_columns = {
'name': fields.char('Account Name', size=128, required=True),
- 'complete_name': fields.function(_complete_name_calc, method=True, type='char', string='Full Account Name'),
+ 'complete_name': fields.function(_complete_name_calc, type='char', string='Full Account Name'),
'code': fields.char('Account Code', size=24, select=True),
'type': fields.selection([('view','View'), ('normal','Normal')], 'Account Type', help='If you select the View Type, it means you won\'t allow to create journal entries using that account.'),
'description': fields.text('Description'),
'parent_id': fields.many2one('account.analytic.account', 'Parent Analytic Account', select=2),
'child_ids': fields.one2many('account.analytic.account', 'parent_id', 'Child Accounts'),
- 'child_complete_ids': fields.function(_child_compute, relation='account.analytic.account', method=True, string="Account Hierarchy", type='many2many'),
+ 'child_complete_ids': fields.function(_child_compute, relation='account.analytic.account', string="Account Hierarchy", type='many2many'),
'line_ids': fields.one2many('account.analytic.line', 'account_id', 'Analytic Entries'),
- 'balance': fields.function(_debit_credit_bal_qtty, method=True, type='float', string='Balance', multi='debit_credit_bal_qtty', digits_compute=dp.get_precision('Account')),
- 'debit': fields.function(_debit_credit_bal_qtty, method=True, type='float', string='Debit', multi='debit_credit_bal_qtty', digits_compute=dp.get_precision('Account')),
- 'credit': fields.function(_debit_credit_bal_qtty, method=True, type='float', string='Credit', multi='debit_credit_bal_qtty', digits_compute=dp.get_precision('Account')),
- 'quantity': fields.function(_debit_credit_bal_qtty, method=True, type='float', string='Quantity', multi='debit_credit_bal_qtty'),
+ 'balance': fields.function(_debit_credit_bal_qtty, type='float', string='Balance', multi='debit_credit_bal_qtty', digits_compute=dp.get_precision('Account')),
+ 'debit': fields.function(_debit_credit_bal_qtty, type='float', string='Debit', multi='debit_credit_bal_qtty', digits_compute=dp.get_precision('Account')),
+ 'credit': fields.function(_debit_credit_bal_qtty, type='float', string='Credit', multi='debit_credit_bal_qtty', digits_compute=dp.get_precision('Account')),
+ 'quantity': fields.function(_debit_credit_bal_qtty, type='float', string='Quantity', multi='debit_credit_bal_qtty'),
'quantity_max': fields.float('Maximum Quantity', help='Sets the higher limit of quantity of hours.'),
'partner_id': fields.many2one('res.partner', 'Partner'),
'contact_id': fields.many2one('res.partner.address', 'Contact'),
@@ -175,7 +175,7 @@ class account_analytic_account(osv.osv):
\n* And finally when all the transactions are over, it can be in \'Close\' state. \
\n* The project can be in either if the states \'Template\' and \'Running\'.\n If it is template then we can make projects based on the template projects. If its in \'Running\' state it is a normal project.\
\n If it is to be reviewed then the state is \'Pending\'.\n When the project is completed the state is set to \'Done\'.'),
- 'currency_id': fields.function(_currency, fnct_inv=_set_company_currency, method=True,
+ 'currency_id': fields.function(_currency, fnct_inv=_set_company_currency,
store = {
'res.company': (_get_analytic_account, ['currency_id'], 10),
}, string='Currency', type='many2one', relation='res.currency'),
diff --git a/addons/anonymization/anonymization.py b/addons/anonymization/anonymization.py
index 2814227015a..c4a2d9f0488 100644
--- a/addons/anonymization/anonymization.py
+++ b/addons/anonymization/anonymization.py
@@ -240,10 +240,10 @@ class ir_model_fields_anonymize_wizard(osv.osv_memory):
_columns = {
'name': fields.char(size='64', string='File Name'),
- 'summary': fields.function(_get_summary, method=True, type='text', string='Summary'),
+ 'summary': fields.function(_get_summary, type='text', string='Summary'),
'file_export': fields.binary(string='Export'),
'file_import': fields.binary(string='Import'),
- 'state': fields.function(_get_state, method=True, string='State', type='selection', selection=ANONYMIZATION_STATES, readonly=False),
+ 'state': fields.function(_get_state, string='State', type='selection', selection=ANONYMIZATION_STATES, readonly=False),
'msg': fields.text(string='Message'),
}
diff --git a/addons/anonymization/i18n/fi.po b/addons/anonymization/i18n/fi.po
new file mode 100644
index 00000000000..9526b2a0f71
--- /dev/null
+++ b/addons/anonymization/i18n/fi.po
@@ -0,0 +1,227 @@
+# Finnish 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-06-30 09:52+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Finnish \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-07-01 04:54+0000\n"
+"X-Generator: Launchpad (build 13168)\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 "Kentän nimi"
+
+#. module: anonymization
+#: field:ir.model.fields.anonymization,field_id:0
+msgid "Field"
+msgstr "Kenttä"
+
+#. module: anonymization
+#: field:ir.model.fields.anonymization.history,state:0
+#: field:ir.model.fields.anonymize.wizard,state:0
+msgid "State"
+msgstr "Tila"
+
+#. module: anonymization
+#: field:ir.model.fields.anonymize.wizard,file_import:0
+msgid "Import"
+msgstr "Tuo"
+
+#. 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 "Tietokannan anonymisointi moduuli"
+
+#. module: anonymization
+#: field:ir.model.fields.anonymization.history,direction:0
+msgid "Direction"
+msgstr "suunta"
+
+#. 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 "Anonymisoidut kentät"
+
+#. module: anonymization
+#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization
+msgid "Database anonymization"
+msgstr "Tietokannan anonymisointi"
+
+#. 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 ""
+"Sinulla ei voi olla kahta tietuetta joilla on sama malli ja sama kenttä"
+
+#. module: anonymization
+#: selection:ir.model.fields.anonymization,state:0
+#: selection:ir.model.fields.anonymize.wizard,state:0
+msgid "Anonymized"
+msgstr "Anonymisoitu"
+
+#. module: anonymization
+#: field:ir.model.fields.anonymization,state:0
+msgid "unknown"
+msgstr "Tuntematon"
+
+#. module: anonymization
+#: field:ir.model.fields.anonymization,model_id:0
+msgid "Object"
+msgstr "Objekti"
+
+#. module: anonymization
+#: field:ir.model.fields.anonymization.history,filepath:0
+msgid "File path"
+msgstr "Tiedoston polku"
+
+#. module: anonymization
+#: field:ir.model.fields.anonymization.history,date:0
+msgid "Date"
+msgstr "Päiväys"
+
+#. module: anonymization
+#: field:ir.model.fields.anonymize.wizard,file_export:0
+msgid "Export"
+msgstr "Vie"
+
+#. module: anonymization
+#: view:ir.model.fields.anonymize.wizard:0
+msgid "Reverse the Database Anonymization"
+msgstr "Poista tietokannan anonymisointi"
+
+#. module: anonymization
+#: view:ir.model.fields.anonymize.wizard:0
+msgid "Database Anonymization"
+msgstr "Tietokannan anonymisointi"
+
+#. module: anonymization
+#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_wizard
+msgid "Anonymize database"
+msgstr "Anonymisoi tietokanta"
+
+#. module: anonymization
+#: view:ir.model.fields.anonymization.history:0
+#: field:ir.model.fields.anonymization.history,field_ids:0
+msgid "Fields"
+msgstr "Kentät"
+
+#. module: anonymization
+#: selection:ir.model.fields.anonymization,state:0
+#: selection:ir.model.fields.anonymize.wizard,state:0
+msgid "Clear"
+msgstr "Tyhjennä"
+
+#. module: anonymization
+#: selection:ir.model.fields.anonymization.history,direction:0
+msgid "clear -> anonymized"
+msgstr "näkyvä -> anonymisoitu"
+
+#. module: anonymization
+#: view:ir.model.fields.anonymize.wizard:0
+#: field:ir.model.fields.anonymize.wizard,summary:0
+msgid "Summary"
+msgstr "Yhteenveto"
+
+#. 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 "Epävakaa"
+
+#. module: anonymization
+#: selection:ir.model.fields.anonymization.history,state:0
+msgid "Exception occured"
+msgstr "Poikkeus tapahtui"
+
+#. module: anonymization
+#: selection:ir.model.fields.anonymization,state:0
+#: selection:ir.model.fields.anonymize.wizard,state:0
+msgid "Not Existing"
+msgstr "Ei ole olemassa"
+
+#. module: anonymization
+#: field:ir.model.fields.anonymization,model_name:0
+msgid "Object Name"
+msgstr "Objektin 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 "Anonymisoinnin historia"
+
+#. 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 "Anonymisoi tietokanta"
+
+#. module: anonymization
+#: field:ir.model.fields.anonymize.wizard,name:0
+msgid "File Name"
+msgstr "Tiedostonimi"
+
+#. module: anonymization
+#: selection:ir.model.fields.anonymization.history,direction:0
+msgid "anonymized -> clear"
+msgstr "Anonymisoitu -> näkyvä"
+
+#. module: anonymization
+#: selection:ir.model.fields.anonymization.history,state:0
+msgid "Started"
+msgstr "Käynnistetty"
+
+#. module: anonymization
+#: selection:ir.model.fields.anonymization.history,state:0
+msgid "Done"
+msgstr "Valmis"
+
+#. 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 "Viesti"
diff --git a/addons/anonymization/i18n/pt_BR.po b/addons/anonymization/i18n/pt_BR.po
index b710579d4d2..00f32c21c99 100644
--- a/addons/anonymization/i18n/pt_BR.po
+++ b/addons/anonymization/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:14+0000\n"
-"PO-Revision-Date: 2011-05-20 02:08+0000\n"
+"PO-Revision-Date: 2011-07-02 18:49+0000\n"
"Last-Translator: Gustavo T \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-05-21 05:02+0000\n"
-"X-Generator: Launchpad (build 12959)\n"
+"X-Launchpad-Export-Date: 2011-07-03 04:47+0000\n"
+"X-Generator: Launchpad (build 13168)\n"
#. module: anonymization
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymize_wizard
@@ -25,7 +25,7 @@ msgstr "ir.model.fields.anonymize.wizard"
#. module: anonymization
#: field:ir.model.fields.anonymization,field_name:0
msgid "Field Name"
-msgstr "Nome do Campo"
+msgstr "Nome do campo"
#. module: anonymization
#: field:ir.model.fields.anonymization,field_id:0
@@ -138,7 +138,7 @@ msgstr "Limpar"
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,direction:0
msgid "clear -> anonymized"
-msgstr ""
+msgstr "em branco -> anonimizado"
#. module: anonymization
#: view:ir.model.fields.anonymize.wizard:0
@@ -149,7 +149,7 @@ msgstr "Resumo"
#. module: anonymization
#: view:ir.model.fields.anonymization:0
msgid "Anonymized Field"
-msgstr ""
+msgstr "Campo Anonimizado"
#. module: anonymization
#: model:ir.module.module,description:anonymization.module_meta_information
@@ -158,6 +158,9 @@ msgid ""
"This module allows you to anonymize a database.\n"
" "
msgstr ""
+"\n"
+"Este módulo permite que você anonimize um banco de dados\n"
+" "
#. module: anonymization
#: selection:ir.model.fields.anonymize.wizard,state:0
@@ -196,7 +199,7 @@ msgstr "ir.model.fields.anonymization.history"
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymize_wizard
#: view:ir.model.fields.anonymize.wizard:0
msgid "Anonymize Database"
-msgstr ""
+msgstr "Anonimizar Banco de Dados"
#. module: anonymization
#: field:ir.model.fields.anonymize.wizard,name:0
@@ -206,21 +209,21 @@ msgstr "Nome do Arquivo"
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,direction:0
msgid "anonymized -> clear"
-msgstr ""
+msgstr "anonimizado -> em branco"
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,state:0
msgid "Started"
-msgstr ""
+msgstr "Iniciada"
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,state:0
msgid "Done"
-msgstr ""
+msgstr "Concluído"
#. 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 ""
+msgstr "Mensagem"
diff --git a/addons/auction/auction.py b/addons/auction/auction.py
index 0b2fc467f88..685b6ee3368 100644
--- a/addons/auction/auction.py
+++ b/addons/auction/auction.py
@@ -95,12 +95,12 @@ class auction_dates(osv.osv):
'seller_costs': fields.many2many('account.tax', 'auction_seller_taxes_rel', 'auction_id', 'tax_id', 'Seller Costs', help="Account tax for seller"),
'acc_income': fields.many2one('account.account', 'Income Account', required=True),
'acc_expense': fields.many2one('account.account', 'Expense Account', required=True),
- 'adj_total': fields.function(_adjudication_get, method=True, string='Total Adjudication', store=True),
+ 'adj_total': fields.function(_adjudication_get, string='Total Adjudication', store=True),
'state': fields.selection((('draft', 'Draft'), ('closed', 'Closed')), 'State', select=1, readonly=True,
help='When auction starts the state is \'Draft\'.\n At the end of auction, the state becomes \'Closed\'.'),
'account_analytic_id': fields.many2one('account.analytic.account', 'Analytic Account', required=False),
- 'buyer_invoice_history': fields.function(_get_invoice, relation='account.invoice', method=True, string="Buyer Invoice", type='many2many', multi=True),
- 'seller_invoice_history': fields.function(_get_invoice, relation='account.invoice', method=True, string="Seller Invoice", type='many2many', multi=True),
+ 'buyer_invoice_history': fields.function(_get_invoice, relation='account.invoice', string="Buyer Invoice", type='many2many', multi=True),
+ 'seller_invoice_history': fields.function(_get_invoice, relation='account.invoice', string="Seller Invoice", type='many2many', multi=True),
}
_defaults = {
@@ -382,8 +382,8 @@ class auction_lots(osv.osv):
'vnd_lim': fields.float('Seller limit'),
'vnd_lim_net': fields.boolean('Net limit ?', readonly=True),
'image': fields.binary('Image', help="Object Image"),
- 'paid_vnd':fields.function(_getprice, string='Seller Paid', method=True, type='boolean', store=True, multi="paid_vnd", help="When state of Seller Invoice is 'Paid', this field is selected as True."),
- 'paid_ach':fields.function(_getprice, string='Buyer Invoice Reconciled', method=True, type='boolean', store=True, multi="paid_ach", help="When state of Buyer Invoice is 'Paid', this field is selected as True."),
+ 'paid_vnd':fields.function(_getprice, string='Seller Paid', type='boolean', store=True, multi="paid_vnd", help="When state of Seller Invoice is 'Paid', this field is selected as True."),
+ 'paid_ach':fields.function(_getprice, string='Buyer Invoice Reconciled', type='boolean', store=True, multi="paid_ach", help="When state of Buyer Invoice is 'Paid', this field is selected as True."),
'state': fields.selection((
('draft', 'Draft'),
('unsold', 'Unsold'),
@@ -394,14 +394,14 @@ class auction_lots(osv.osv):
\n* The \'Unsold\' state is used when object does not sold for long time, user can also set it as draft state after unsold. \
\n* The \'Paid\' state is used when user pay for the object \
\n* The \'Sold\' state is used when user buy the object.'),
- 'buyer_price': fields.function(_getprice, method=True, string='Buyer price', store=True, multi="buyer_price", help="Buyer Price"),
- 'seller_price': fields.function(_getprice, method=True, string='Seller price', store=True, multi="seller_price", help="Seller Price"),
- 'gross_revenue':fields.function(_getprice, method=True, string='Gross revenue', store=True, multi="gross_revenue", help="Buyer Price - Seller Price"),
- 'gross_margin':fields.function(_getprice, method=True, string='Gross Margin (%)', store=True, multi="gross_margin", help="(Gross Revenue*100.0)/ Object Price"),
- 'costs':fields.function(_getprice, method=True, string='Indirect costs', store=True, multi="costs", help="Deposit cost"),
+ 'buyer_price': fields.function(_getprice, string='Buyer price', store=True, multi="buyer_price", help="Buyer Price"),
+ 'seller_price': fields.function(_getprice, string='Seller price', store=True, multi="seller_price", help="Seller Price"),
+ 'gross_revenue':fields.function(_getprice, string='Gross revenue', store=True, multi="gross_revenue", help="Buyer Price - Seller Price"),
+ 'gross_margin':fields.function(_getprice, string='Gross Margin (%)', store=True, multi="gross_margin", help="(Gross Revenue*100.0)/ Object Price"),
+ 'costs':fields.function(_getprice, string='Indirect costs', store=True, multi="costs", help="Deposit cost"),
'statement_id': fields.many2many('account.bank.statement.line', 'auction_statement_line_rel', 'auction_id', 'statement', 'Payment', help="Bank statement line for given buyer"),
- 'net_revenue':fields.function(_getprice, method=True, string='Net revenue', store=True, multi="net_revenue", help="Buyer Price - Seller Price - Indirect Cost"),
- 'net_margin':fields.function(_getprice, method=True, string='Net Margin (%)', store=True, multi="net_margin", help="(Net Revenue * 100)/ Object Price"),
+ 'net_revenue':fields.function(_getprice, string='Net revenue', store=True, multi="net_revenue", help="Buyer Price - Seller Price - Indirect Cost"),
+ 'net_margin':fields.function(_getprice, string='Net Margin (%)', store=True, multi="net_margin", help="(Net Revenue * 100)/ Object Price"),
}
_defaults = {
'state':lambda *a: 'draft',
diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py
index 4df126e191e..5f24b08884a 100644
--- a/addons/base_calendar/base_calendar.py
+++ b/addons/base_calendar/base_calendar.py
@@ -341,26 +341,26 @@ class calendar_attendee(osv.osv):
help="Status of the attendee's participation"),
'rsvp': fields.boolean('Required Reply?',
help="Indicats whether the favor of a reply is requested"),
- 'delegated_to': fields.function(_compute_data, method=True, \
+ 'delegated_to': fields.function(_compute_data, \
string='Delegated To', type="char", size=124, store=True, \
multi='delegated_to', help="The users that the original \
request was delegated to"),
- 'delegated_from': fields.function(_compute_data, method=True, string=\
+ 'delegated_from': fields.function(_compute_data, string=\
'Delegated From', type="char", store=True, size=124, multi='delegated_from'),
'parent_ids': fields.many2many('calendar.attendee', 'calendar_attendee_parent_rel', \
'attendee_id', 'parent_id', 'Delegrated From'),
'child_ids': fields.many2many('calendar.attendee', 'calendar_attendee_child_rel', \
'attendee_id', 'child_id', 'Delegrated To'),
- 'sent_by': fields.function(_compute_data, method=True, string='Sent By', \
+ 'sent_by': fields.function(_compute_data, string='Sent By', \
type="char", multi='sent_by', store=True, size=124, \
help="Specify the user that is acting on behalf of the calendar user"),
- 'sent_by_uid': fields.function(_compute_data, method=True, string='Sent By User', \
+ 'sent_by_uid': fields.function(_compute_data, string='Sent By User', \
type="many2one", relation="res.users", multi='sent_by_uid'),
- 'cn': fields.function(_compute_data, method=True, string='Common name', \
+ 'cn': fields.function(_compute_data, string='Common name', \
type="char", size=124, multi='cn', store=True),
'dir': fields.char('URI Reference', size=124, help="Reference to the URI\
that points to the directory information corresponding to the attendee."),
- 'language': fields.function(_compute_data, method=True, string='Language', \
+ 'language': fields.function(_compute_data, string='Language', \
type="selection", selection=_lang_get, multi='language', \
store=True, help="To specify the language for text values in a\
property or property parameter."),
@@ -369,9 +369,9 @@ property or property parameter."),
'partner_id': fields.related('partner_address_id', 'partner_id', type='many2one', \
relation='res.partner', string='Partner', help="Partner related to contact"),
'email': fields.char('Email', size=124, help="Email of Invited Person"),
- 'event_date': fields.function(_compute_data, method=True, string='Event Date', \
+ 'event_date': fields.function(_compute_data, string='Event Date', \
type="datetime", multi='event_date'),
- 'event_end_date': fields.function(_compute_data, method=True, \
+ 'event_end_date': fields.function(_compute_data, \
string='Event End Date', type="datetime", \
multi='event_end_date'),
'ref': fields.reference('Event Ref', selection=_links_get, size=128),
@@ -1022,7 +1022,7 @@ class calendar_event(osv.osv):
defines the list of date/time exceptions for a recurring calendar component."),
'exrule': fields.char('Exception Rule', size=352, help="Defines a \
rule or repeating pattern of time to exclude from the recurring rule."),
- 'rrule': fields.function(_get_rulestring, type='char', size=124, method=True, \
+ 'rrule': fields.function(_get_rulestring, type='char', size=124, \
store=True, string='Recurrent Rule'),
'rrule_type': fields.selection([('none', ''), ('daily', 'Daily'), \
('weekly', 'Weekly'), ('monthly', 'Monthly'), \
@@ -1552,7 +1552,7 @@ class calendar_todo(osv.osv):
return self.write(cr, uid, id, { 'date_start': value }, context=context)
_columns = {
- 'date': fields.function(_get_date, method=True, fnct_inv=_set_date, \
+ 'date': fields.function(_get_date, fnct_inv=_set_date, \
string='Duration', store=True, type='datetime'),
'duration': fields.integer('Duration'),
}
@@ -1750,7 +1750,7 @@ class res_users(osv.osv):
_columns = {
'availability': fields.function(_get_user_avail_fun, type='selection', \
selection=[('free', 'Free'), ('busy', 'Busy')], \
- string='Free/Busy', method=True),
+ string='Free/Busy'),
}
res_users()
diff --git a/addons/base_contact/base_contact.py b/addons/base_contact/base_contact.py
index 8a003ec7cf1..cf0bc610be8 100644
--- a/addons/base_contact/base_contact.py
+++ b/addons/base_contact/base_contact.py
@@ -64,7 +64,7 @@ class res_partner_contact(osv.osv):
relation='res.partner', string='Main Employer'),
'function': fields.related('job_ids', 'function', type='char', \
string='Main Function'),
- 'job_id': fields.function(_main_job, method=True, type='many2one',\
+ 'job_id': fields.function(_main_job, type='many2one',\
relation='res.partner.job', string='Main Job'),
'email': fields.char('E-Mail', size=240),
'comment': fields.text('Notes', translate=True),
diff --git a/addons/base_crypt/crypt.py b/addons/base_crypt/crypt.py
index a616b7e5b74..5a55c02269d 100644
--- a/addons/base_crypt/crypt.py
+++ b/addons/base_crypt/crypt.py
@@ -163,7 +163,7 @@ class users(osv.osv):
# an existing column cannot be downsized; thus we use the original
# column size.
'password': fields.function(get_pw, fnct_inv=set_pw, type='char',
- method=True, size=64, string='Password', invisible=True,
+ size=64, string='Password', invisible=True,
store=True),
}
diff --git a/addons/base_report_creator/base_report_creator.py b/addons/base_report_creator/base_report_creator.py
index a026a077c85..29699b9000d 100644
--- a/addons/base_report_creator/base_report_creator.py
+++ b/addons/base_report_creator/base_report_creator.py
@@ -415,7 +415,7 @@ class report_creator(osv.osv):
'model_ids': fields.many2many('ir.model', 'base_report_creator_report_model_rel', 'report_id', 'model_id', 'Reported Objects'),
'field_ids': fields.one2many('base_report_creator.report.fields', 'report_id', 'Fields to Display'),
'filter_ids': fields.one2many('base_report_creator.report.filter', 'report_id', 'Filters'),
- 'sql_query': fields.function(_sql_query_get, method=True, type="text", string='SQL Query', store=True),
+ 'sql_query': fields.function(_sql_query_get, type="text", string='SQL Query', store=True),
'group_ids': fields.many2many('res.groups', 'base_report_creator_group_rel', 'report_id', 'group_id', 'Authorized Groups'),
'menu_id': fields.many2one('ir.ui.menu', "Menu", readonly=True),
}
diff --git a/addons/base_synchro/i18n/vi.po b/addons/base_synchro/i18n/vi.po
new file mode 100644
index 00000000000..de9c8ada1da
--- /dev/null
+++ b/addons/base_synchro/i18n/vi.po
@@ -0,0 +1,289 @@
+# Vietnamese 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-07-06 04:09+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Vietnamese \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-07-06 04:34+0000\n"
+"X-Generator: Launchpad (build 13168)\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 ""
+
+#. 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 ""
+
+#. module: base_synchro
+#: field:base.synchro.obj,synchronize_date:0
+msgid "Latest Synchronization"
+msgstr ""
+
+#. 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 ""
+
+#. 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 ""
+
+#. module: base_synchro
+#: field:base.synchro.server,login:0
+msgid "User Name"
+msgstr ""
+
+#. module: base_synchro
+#: view:base.synchro.obj:0
+#: view:base.synchro.obj.line:0
+msgid "Group By"
+msgstr ""
+
+#. module: base_synchro
+#: selection:base.synchro.obj,action:0
+msgid "Upload"
+msgstr ""
+
+#. 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 ""
+
+#. module: base_synchro
+#: field:base.synchro.server,password:0
+msgid "Password"
+msgstr ""
+
+#. 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 ""
+
+#. module: base_synchro
+#: field:base.synchro.obj,name:0
+msgid "Name"
+msgstr ""
+
+#. module: base_synchro
+#: view:base.synchro.obj:0
+msgid "Fields"
+msgstr ""
+
+#. 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 ""
+
+#. 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 ""
+
+#. 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 ""
+
+#. module: base_synchro
+#: field:base.synchro.obj,domain:0
+msgid "Domain"
+msgstr ""
+
+#. module: base_synchro
+#: view:base.synchro:0
+msgid "_Synchronize"
+msgstr ""
+
+#. module: base_synchro
+#: view:base.synchro:0
+msgid "OK"
+msgstr ""
+
+#. module: base_synchro
+#: field:base.synchro.server,name:0
+msgid "Server name"
+msgstr ""
+
+#. module: base_synchro
+#: field:base.synchro.obj,sequence:0
+msgid "Sequence"
+msgstr ""
+
+#. 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 ""
+
+#. 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 ""
+
+#. 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 ""
+
+#. module: base_synchro
+#: selection:base.synchro.obj,action:0
+msgid "Download"
+msgstr ""
+
+#. module: base_synchro
+#: field:base.synchro,server_url:0
+#: field:base.synchro.server,server_url:0
+msgid "Server URL"
+msgstr ""
diff --git a/addons/caldav/i18n/zh_CN.po b/addons/caldav/i18n/zh_CN.po
new file mode 100644
index 00000000000..8cdf821ca45
--- /dev/null
+++ b/addons/caldav/i18n/zh_CN.po
@@ -0,0 +1,818 @@
+# Chinese (Simplified) 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-07-04 10:45+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Chinese (Simplified) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-07-05 04:33+0000\n"
+"X-Generator: Launchpad (build 13168)\n"
+
+#. module: caldav
+#: view:basic.calendar:0
+msgid "Value Mapping"
+msgstr "值列表"
+
+#. module: caldav
+#: help:caldav.browse,url:0
+msgid "Url of the caldav server, use for synchronization"
+msgstr "caldav服务器网址,用于同步"
+
+#. module: caldav
+#: field:basic.calendar.alias,name:0
+msgid "Filename"
+msgstr "文件名"
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_calendar_event_export
+msgid "Event Export"
+msgstr "事件导出"
+
+#. module: caldav
+#: view:calendar.event.subscribe:0
+msgid "Provide path for Remote Calendar"
+msgstr "提供远程日历路径"
+
+#. module: caldav
+#: model:ir.actions.act_window,name:caldav.action_calendar_event_import_values
+msgid "Import .ics File"
+msgstr "导入 .ics 文件"
+
+#. module: caldav
+#: view:calendar.event.export:0
+msgid "_Close"
+msgstr "关闭(_C):"
+
+#. module: caldav
+#: selection:basic.calendar.attributes,type:0
+#: selection:basic.calendar.lines,name:0
+msgid "Attendee"
+msgstr "参与者"
+
+#. module: caldav
+#: sql_constraint:basic.calendar.fields:0
+msgid "Can not map a field more than once"
+msgstr "不能映射,相关字段多于一个"
+
+#. module: caldav
+#: code:addons/caldav/calendar.py:787
+#: code:addons/caldav/calendar.py:877
+#: code:addons/caldav/wizard/calendar_event_import.py:63
+#, python-format
+msgid "Warning !"
+msgstr "警告!"
+
+#. module: caldav
+#: field:basic.calendar.lines,object_id:0
+msgid "Object"
+msgstr "对象"
+
+#. module: caldav
+#: view:basic.calendar:0
+msgid "Todo"
+msgstr "待办事项"
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_user_preference
+msgid "User preference Form"
+msgstr "用户编好"
+
+#. module: caldav
+#: field:user.preference,service:0
+msgid "Services"
+msgstr "服务"
+
+#. module: caldav
+#: selection:basic.calendar.fields,fn:0
+msgid "Expression as constant"
+msgstr "表现像常量"
+
+#. module: caldav
+#: selection:user.preference,device:0
+msgid "Evolution"
+msgstr "演变"
+
+#. module: caldav
+#: view:calendar.event.import:0
+#: view:calendar.event.subscribe:0
+msgid "Ok"
+msgstr "确定"
+
+#. module: caldav
+#: code:addons/caldav/calendar.py:877
+#, python-format
+msgid "Please provide proper configuration of \"%s\" in Calendar Lines"
+msgstr "在日程表明细中请为 \"%s\" 进行合适的设置"
+
+#. module: caldav
+#: field:calendar.event.export,name:0
+msgid "File name"
+msgstr "文件名"
+
+#. module: caldav
+#: field:caldav.browse,url:0
+msgid "Caldav Server"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/wizard/calendar_event_subscribe.py:59
+#, python-format
+msgid "Error!"
+msgstr ""
+
+#. module: caldav
+#: help:caldav.browse,caldav_doc_file:0
+msgid "download full caldav Documentation."
+msgstr ""
+
+#. module: caldav
+#: selection:user.preference,device:0
+msgid "iPhone"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/wizard/caldav_browse.py:32
+#, python-format
+msgid ""
+"\n"
+" * Webdav server that provides remote access to calendar\n"
+" * Synchronisation of calendar using WebDAV\n"
+" * Customize calendar event and todo attribute with any of OpenERP model\n"
+" * Provides iCal Import/Export functionality\n"
+"\n"
+" To access Calendars using CalDAV clients, point them to:\n"
+" "
+"http://HOSTNAME:PORT/webdav/DATABASE_NAME/calendars/users/USERNAME/c\n"
+"\n"
+" To access OpenERP Calendar using WebCal to remote site use the URL "
+"like:\n"
+" "
+"http://HOSTNAME:PORT/webdav/DATABASE_NAME/Calendars/CALENDAR_NAME.ics\n"
+"\n"
+" Where,\n"
+" HOSTNAME: Host on which OpenERP server(With webdav) is running\n"
+" PORT : Port on which OpenERP server is running (By Default : 8069)\n"
+" DATABASE_NAME: Name of database on which OpenERP Calendar is "
+"created\n"
+" CALENDAR_NAME: Name of calendar to access\n"
+" "
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/wizard/caldav_browse.py:147
+#, python-format
+msgid ""
+"\n"
+"Prerequire\n"
+"----------\n"
+"If you are using thunderbird, first you need to install the lightning "
+"module\n"
+"http://www.mozilla.org/projects/calendar/lightning/\n"
+"\n"
+"configuration\n"
+"-------------\n"
+"\n"
+"1. Go to Calendar View\n"
+"\n"
+"2. File -> New Calendar\n"
+"\n"
+"3. Chosse \"On the Network\"\n"
+"\n"
+"4. for format choose CalDav\n"
+" and as location the url given above (ie : "
+"http://host.com:8069/webdav/db/calendars/users/demo/c/Meetings)\n"
+" \n"
+"5. Choose a name and a color for the Calendar, and we advice you to uncheck "
+"\"alarm\"\n"
+"\n"
+"6. Then put your openerp login and password (to give the password only check "
+"the box \"Use password Manager to remember this password\"\n"
+"\n"
+"7. Then Finish, your meetings should appear now in your calendar view\n"
+msgstr ""
+
+#. module: caldav
+#: selection:basic.calendar,type:0
+#: selection:basic.calendar.attributes,type:0
+#: selection:basic.calendar.lines,name:0
+msgid "TODO"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.export:0
+msgid "Export ICS"
+msgstr ""
+
+#. module: caldav
+#: selection:basic.calendar.fields,fn:0
+msgid "Use the field"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/calendar.py:787
+#, python-format
+msgid "Can not create line \"%s\" more than once"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+#: field:basic.calendar,line_ids:0
+#: model:ir.model,name:caldav.model_basic_calendar_lines
+msgid "Calendar Lines"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_calendar_event_subscribe
+msgid "Event subscribe"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.import:0
+msgid "Import ICS"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.import:0
+#: view:calendar.event.subscribe:0
+#: view:user.preference:0
+msgid "_Cancel"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_basic_calendar_event
+msgid "basic.calendar.event"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+#: selection:basic.calendar,type:0
+#: selection:basic.calendar.attributes,type:0
+#: selection:basic.calendar.lines,name:0
+msgid "Event"
+msgstr ""
+
+#. module: caldav
+#: field:document.directory,calendar_collection:0
+#: field:user.preference,collection:0
+msgid "Calendar Collection"
+msgstr ""
+
+#. module: caldav
+#: constraint:document.directory:0
+msgid "Error! You can not create recursive Directories."
+msgstr ""
+
+#. module: caldav
+#: view:user.preference:0
+msgid "_Open"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar,type:0
+#: field:basic.calendar.attributes,type:0
+#: field:basic.calendar.fields,type_id:0
+#: field:basic.calendar.lines,name:0
+msgid "Type"
+msgstr ""
+
+#. module: caldav
+#: help:calendar.event.export,name:0
+msgid "Save in .ics format"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/calendar.py:1291
+#, python-format
+msgid "Error !"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/wizard/caldav_browse.py:128
+#, python-format
+msgid ""
+"\n"
+" 1. Go to Calendar View\n"
+"\n"
+" 2. File -> New -> Calendar\n"
+"\n"
+" 3. Fill the form \n"
+" - type : CalDav\n"
+" - name : Whaterver you want (ie : Meeting)\n"
+" - url : "
+"http://HOST:PORT/webdav/DB_NAME/calendars/users/USER/c/Meetings (ie : "
+"http://localhost:8069/webdav/db_1/calendars/users/demo/c/Meetings) the one "
+"given on the top of this window\n"
+" - uncheck \"User SSL\"\n"
+" - Username : Your username (ie : Demo)\n"
+" - Refresh : everytime you want that evolution synchronize the data "
+"with the server\n"
+"\n"
+" 4. Click ok and give your openerp password\n"
+"\n"
+" 5. A new calendar named with the name you gave should appear on the left "
+"side. \n"
+" "
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_basic_calendar_attributes
+msgid "Calendar attributes"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_caldav_browse
+msgid "Caldav Browse"
+msgstr ""
+
+#. module: caldav
+#: model:ir.module.module,description:caldav.module_meta_information
+msgid ""
+"\n"
+" This module Contains basic functionality for caldav system like: \n"
+" - Webdav server that provides remote access to calendar\n"
+" - Synchronisation of calendar using WebDAV\n"
+" - Customize calendar event and todo attribute with any of OpenERP model\n"
+" - Provides iCal Import/Export functionality\n"
+"\n"
+" To access Calendars using CalDAV clients, point them to:\n"
+" "
+"http://HOSTNAME:PORT/webdav/DATABASE_NAME/calendars/users/USERNAME/c\n"
+"\n"
+" To access OpenERP Calendar using WebCal to remote site use the URL "
+"like:\n"
+" "
+"http://HOSTNAME:PORT/webdav/DATABASE_NAME/Calendars/CALENDAR_NAME.ics\n"
+"\n"
+" Where,\n"
+" HOSTNAME: Host on which OpenERP server(With webdav) is running\n"
+" PORT : Port on which OpenERP server is running (By Default : 8069)\n"
+" DATABASE_NAME: Name of database on which OpenERP Calendar is "
+"created\n"
+" CALENDAR_NAME: Name of calendar to access\n"
+msgstr ""
+
+#. module: caldav
+#: selection:user.preference,device:0
+msgid "Android based device"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar,create_date:0
+msgid "Created Date"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+msgid "Attributes Mapping"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_document_directory
+msgid "Directory"
+msgstr ""
+
+#. module: caldav
+#: field:calendar.event.subscribe,url_path:0
+msgid "Provide path for remote calendar"
+msgstr ""
+
+#. module: caldav
+#: view:caldav.browse:0
+msgid "_Ok"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar.lines,domain:0
+msgid "Domain"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.subscribe:0
+msgid "_Subscribe"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar,user_id:0
+msgid "Owner"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+#: field:basic.calendar.alias,cal_line_id:0
+#: field:basic.calendar.lines,calendar_id:0
+#: model:ir.ui.menu,name:caldav.menu_calendar
+#: field:user.preference,calendar:0
+msgid "Calendar"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/calendar.py:41
+#, python-format
+msgid ""
+"Please install python-vobject from http://vobject.skyhouseconsulting.com/"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/wizard/calendar_event_import.py:63
+#, python-format
+msgid "Invalid format of the ics, file can not be imported"
+msgstr ""
+
+#. module: caldav
+#: selection:user.preference,service:0
+msgid "CalDAV"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar.fields,field_id:0
+msgid "OpenObject Field"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar.alias,res_id:0
+msgid "Res. ID"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.subscribe:0
+msgid "Message..."
+msgstr ""
+
+#. module: caldav
+#: selection:user.preference,device:0
+msgid "Other"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+#: field:basic.calendar,has_webcal:0
+msgid "WebCal"
+msgstr ""
+
+#. module: caldav
+#: view:document.directory:0
+#: model:ir.actions.act_window,name:caldav.action_calendar_collection_form
+#: model:ir.ui.menu,name:caldav.menu_calendar_collection
+msgid "Calendar Collections"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/calendar.py:813
+#: sql_constraint:basic.calendar.alias:0
+#, python-format
+msgid "The same filename cannot apply to two records!"
+msgstr ""
+
+#. module: caldav
+#: sql_constraint:document.directory:0
+msgid "Directory cannot be parent of itself!"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+#: field:document.directory,calendar_ids:0
+#: model:ir.actions.act_window,name:caldav.action_caldav_form
+#: model:ir.ui.menu,name:caldav.menu_caldav_directories
+msgid "Calendars"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar,collection_id:0
+msgid "Collection"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar,write_date:0
+msgid "Write Date"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/wizard/caldav_browse.py:104
+#, python-format
+msgid ""
+"\n"
+"Prerequire\n"
+"----------\n"
+"There is no buit-in way to synchronize calendar with caldav.\n"
+"So you need to install a third part software : Calendar (CalDav) \n"
+"for now it's the only one\n"
+"\n"
+"configuration\n"
+"-------------\n"
+"\n"
+"1. Open Calendar Sync\n"
+" I'll get an interface with 2 tabs\n"
+" Stay on the first one\n"
+" \n"
+"2. CaDAV Calendar URL : put the URL given above (ie : "
+"http://host.com:8069/webdav/db/calendars/users/demo/c/Meetings)\n"
+"\n"
+"3. Put your openerp username and password\n"
+"\n"
+"4. If your server don't use SSL, you'll get a warnign, say \"Yes\"\n"
+"\n"
+"5. Then you can synchronize manually or custom the settings to synchronize "
+"every x minutes.\n"
+" \n"
+" "
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/wizard/caldav_browse.py:53
+#, python-format
+msgid ""
+"\n"
+" For SSL specific configuration see the documentation below\n"
+"\n"
+"Now, to setup the calendars, you need to:\n"
+"\n"
+"1. Click on the \"Settings\" and go to the \"Mail, Contacts, Calendars\" "
+"page.\n"
+"2. Go to \"Add account...\"\n"
+"3. Click on \"Other\"\n"
+"4. From the \"Calendars\" group, select \"Add CalDAV Account\"\n"
+"\n"
+"5. Enter the host's name \n"
+" (ie : if the url is http://openerp.com:8069/webdav/db_1/calendars/ , "
+"openerp.com is the host)\n"
+"\n"
+"6. Fill Username and password with your openerp login and password\n"
+"\n"
+"7. As a description, you can either leave the server's name or\n"
+" something like \"OpenERP calendars\".\n"
+"\n"
+"9. If you are not using a SSL server, you'll get an error, do not worry and "
+"push \"Continue\"\n"
+"\n"
+"10. Then click to \"Advanced Settings\" to specify the right\n"
+" ports and paths. \n"
+" \n"
+"11. Specify the port for the OpenERP server: 8071 for SSL, 8069 without.\n"
+"\n"
+"12. Set the \"Account URL\" to the right path of the OpenERP webdav:\n"
+" the url given by the wizard (ie : "
+"http://my.server.ip:8069/webdav/dbname/calendars/ )\n"
+"\n"
+"11. Click on Done. The phone will hopefully connect to the OpenERP server\n"
+" and verify it can use the account.\n"
+"\n"
+"12. Go to the main menu of the iPhone and enter the Calendar application.\n"
+" Your OpenERP calendars will be visible inside the selection of the\n"
+" \"Calendars\" button.\n"
+" Note that when creating a new calendar entry, you will have to specify\n"
+" which calendar it should be saved at.\n"
+"\n"
+"\n"
+"\n"
+"IF you need SSL (and your certificate is not a verified one, as usual),\n"
+"then you first will need to let the iPhone trust that. Follow these\n"
+"steps:\n"
+"\n"
+" s1. Open Safari and enter the https location of the OpenERP server:\n"
+" https://my.server.ip:8071/\n"
+" (assuming you have the server at \"my.server.ip\" and the HTTPS port\n"
+" is the default 8071)\n"
+" s2. Safari will try to connect and issue a warning about the "
+"certificate\n"
+" used. Inspect the certificate and click \"Accept\" so that iPhone\n"
+" now trusts it. \n"
+" "
+msgstr ""
+
+#. module: caldav
+#: sql_constraint:document.directory:0
+msgid "The directory name must be unique !"
+msgstr ""
+
+#. module: caldav
+#: view:user.preference:0
+msgid "User Preference"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/wizard/calendar_event_subscribe.py:59
+#, python-format
+msgid "Please provide Proper URL !"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_basic_calendar_timezone
+msgid "basic.calendar.timezone"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar.fields,expr:0
+msgid "Expression"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_basic_calendar_attendee
+msgid "basic.calendar.attendee"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_basic_calendar_alias
+msgid "basic.calendar.alias"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.import:0
+#: field:calendar.event.import,file_path:0
+msgid "Select ICS file"
+msgstr ""
+
+#. module: caldav
+#: field:caldav.browse,caldav_doc_file:0
+msgid "Caldav Document"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar.lines,mapping_ids:0
+msgid "Fields Mapping"
+msgstr ""
+
+#. module: caldav
+#: view:caldav.browse:0
+msgid "Browse caldav"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_basic_calendar
+msgid "basic.calendar"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+msgid "Other Info"
+msgstr ""
+
+#. module: caldav
+#: field:user.preference,device:0
+msgid "Software/Devices"
+msgstr ""
+
+#. module: caldav
+#: help:basic.calendar,has_webcal:0
+msgid ""
+"Also export a .ics entry next to the calendar folder, with WebCal "
+"content."
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar.fields,fn:0
+msgid "Function"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+#: field:basic.calendar,description:0
+#: view:caldav.browse:0
+#: field:caldav.browse,description:0
+msgid "Description"
+msgstr ""
+
+#. module: caldav
+#: help:basic.calendar.alias,cal_line_id:0
+msgid "The calendar/line this mapping applies to"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar.fields,mapping:0
+msgid "Mapping"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/wizard/calendar_event_import.py:86
+#, python-format
+msgid "Import Sucessful"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.import:0
+msgid "_Import"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_calendar_event_import
+msgid "Event Import"
+msgstr ""
+
+#. module: caldav
+#: selection:basic.calendar.fields,fn:0
+msgid "Interval in hours"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.subscribe:0
+msgid "Subscribe to Remote Calendar"
+msgstr ""
+
+#. module: caldav
+#: help:basic.calendar,calendar_color:0
+msgid "For supporting clients, the color of the calendar entries"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar,name:0
+#: field:basic.calendar.attributes,name:0
+#: field:basic.calendar.fields,name:0
+msgid "Name"
+msgstr ""
+
+#. module: caldav
+#: selection:basic.calendar.attributes,type:0
+#: selection:basic.calendar.lines,name:0
+msgid "Alarm"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_basic_calendar_alarm
+msgid "basic.calendar.alarm"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/calendar.py:1291
+#, python-format
+msgid "Attendee must have an Email Id"
+msgstr ""
+
+#. module: caldav
+#: model:ir.actions.act_window,name:caldav.action_calendar_event_export_values
+msgid "Export .ics File"
+msgstr ""
+
+#. module: caldav
+#: code:addons/caldav/calendar.py:41
+#, python-format
+msgid "vobject Import Error!"
+msgstr ""
+
+#. module: caldav
+#: field:calendar.event.export,file_path:0
+msgid "Save ICS file"
+msgstr ""
+
+#. module: caldav
+#: selection:user.preference,device:0
+msgid "Sunbird/Thunderbird"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar,calendar_order:0
+msgid "Order"
+msgstr ""
+
+#. module: caldav
+#: model:ir.module.module,shortdesc:caldav.module_meta_information
+msgid "Share Calendar using CalDAV"
+msgstr ""
+
+#. module: caldav
+#: field:basic.calendar,calendar_color:0
+msgid "Color"
+msgstr ""
+
+#. module: caldav
+#: view:basic.calendar:0
+msgid "MY"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_basic_calendar_fields
+msgid "Calendar fields"
+msgstr ""
+
+#. module: caldav
+#: view:calendar.event.import:0
+msgid "Import Message"
+msgstr ""
+
+#. module: caldav
+#: model:ir.actions.act_window,name:caldav.action_calendar_event_subscribe
+#: model:ir.actions.act_window,name:caldav.action_calendar_event_subscribe_values
+msgid "Subscribe"
+msgstr ""
+
+#. module: caldav
+#: sql_constraint:document.directory:0
+msgid "Directory must have a parent or a storage"
+msgstr ""
+
+#. module: caldav
+#: model:ir.model,name:caldav.model_basic_calendar_todo
+msgid "basic.calendar.todo"
+msgstr ""
+
+#. module: caldav
+#: help:basic.calendar,calendar_order:0
+msgid "For supporting clients, the order of this folder among the calendars"
+msgstr ""
diff --git a/addons/caldav/wizard/caldav_browse.py b/addons/caldav/wizard/caldav_browse.py
index 9e67f972216..f6ecc5dccd5 100644
--- a/addons/caldav/wizard/caldav_browse.py
+++ b/addons/caldav/wizard/caldav_browse.py
@@ -26,9 +26,8 @@ import addons
from tools.translate import _
class caldav_browse(osv.osv_memory):
-
+
__doc = {
-
'other' : _("""
* Webdav server that provides remote access to calendar
* Synchronisation of calendar using WebDAV
@@ -45,11 +44,8 @@ class caldav_browse(osv.osv_memory):
HOSTNAME: Host on which OpenERP server(With webdav) is running
PORT : Port on which OpenERP server is running (By Default : 8069)
DATABASE_NAME: Name of database on which OpenERP Calendar is created
- CALENDAR_NAME: Name of calendar to access
"""),
-
-
-
+
'iphone' : _("""
For SSL specific configuration see the documentation below
@@ -60,7 +56,7 @@ Now, to setup the calendars, you need to:
3. Click on "Other"
4. From the "Calendars" group, select "Add CalDAV Account"
-5. Enter the host's name
+5. Enter the host's name
(ie : if the url is http://openerp.com:8069/webdav/db_1/calendars/ , openerp.com is the host)
6. Fill Username and password with your openerp login and password
@@ -71,8 +67,8 @@ Now, to setup the calendars, you need to:
9. If you are not using a SSL server, you'll get an error, do not worry and push "Continue"
10. Then click to "Advanced Settings" to specify the right
- ports and paths.
-
+ ports and paths.
+
11. Specify the port for the OpenERP server: 8071 for SSL, 8069 without.
12. Set the "Account URL" to the right path of the OpenERP webdav:
@@ -87,8 +83,6 @@ Now, to setup the calendars, you need to:
Note that when creating a new calendar entry, you will have to specify
which calendar it should be saved at.
-
-
IF you need SSL (and your certificate is not a verified one, as usual),
then you first will need to let the iPhone trust that. Follow these
steps:
@@ -99,13 +93,13 @@ steps:
is the default 8071)
s2. Safari will try to connect and issue a warning about the certificate
used. Inspect the certificate and click "Accept" so that iPhone
- now trusts it.
+ now trusts it.
"""),
'android' : _("""
Prerequire
----------
There is no buit-in way to synchronize calendar with caldav.
-So you need to install a third part software : Calendar (CalDav)
+So you need to install a third part software : Calendar (CalDav)
for now it's the only one
configuration
@@ -114,7 +108,7 @@ configuration
1. Open Calendar Sync
I'll get an interface with 2 tabs
Stay on the first one
-
+
2. CaDAV Calendar URL : put the URL given above (ie : http://host.com:8069/webdav/db/calendars/users/demo/c/Meetings)
3. Put your openerp username and password
@@ -122,7 +116,7 @@ configuration
4. If your server don't use SSL, you'll get a warnign, say "Yes"
5. Then you can synchronize manually or custom the settings to synchronize every x minutes.
-
+
"""),
'evolution' : _("""
@@ -130,7 +124,7 @@ configuration
2. File -> New -> Calendar
- 3. Fill the form
+ 3. Fill the form
- type : CalDav
- name : Whaterver you want (ie : Meeting)
- url : http://HOST:PORT/webdav/DB_NAME/calendars/users/USER/c/Meetings (ie : http://localhost:8069/webdav/db_1/calendars/users/demo/c/Meetings) the one given on the top of this window
@@ -140,10 +134,9 @@ configuration
4. Click ok and give your openerp password
- 5. A new calendar named with the name you gave should appear on the left side.
+ 5. A new calendar named with the name you gave should appear on the left side.
"""),
-
-
+
'thunderbird' : _("""
Prerequire
----------
@@ -161,7 +154,7 @@ configuration
4. for format choose CalDav
and as location the url given above (ie : http://host.com:8069/webdav/db/calendars/users/demo/c/Meetings)
-
+
5. Choose a name and a color for the Calendar, and we advice you to uncheck "alarm"
6. Then put your openerp login and password (to give the password only check the box "Use password Manager to remember this password"
@@ -169,8 +162,6 @@ configuration
7. Then Finish, your meetings should appear now in your calendar view
"""),
}
-
-
_name = 'caldav.browse'
_description = 'Caldav Browse'
@@ -181,55 +172,48 @@ configuration
}
def default_get(self, cr, uid, fields, context=None):
+ pref_obj = self.pool.get('user.preference')
+ pref_ids = pref_obj.browse(cr, uid ,context.get('rec_id',False), context=context)
res = {}
- host = ''
+ host = context.get('host')
port = ''
- prefix = 'http://'
+ prefix = 'http://'
if not config.get('xmlrpc'):
if not config.get('netrpc'):
- prefix = 'https://'
- host = config.get('xmlrpcs_interface', None)
+ prefix = 'https://'
port = config.get('xmlrpcs_port', 8071)
else:
- host = config.get('netrpc_interface', None)
- port = config.get('netrpc_port',8070)
- else:
- host = config.get('xmlrpc_interface', None)
+ port = config.get('netrpc_port',8070)
+ else:
port = config.get('xmlrpc_port',8069)
- if host == '' or None:
- host = 'localhost'
- port = 8069
if not config.get_misc('webdav','enable',True):
raise Exception("WebDAV is disabled, cannot continue")
user_pool = self.pool.get('res.users')
current_user = user_pool.browse(cr, uid, uid, context=context)
- pref_obj = self.pool.get('user.preference')
- pref_ids = pref_obj.browse(cr, uid ,context.get('rec_id',False), context=context)
#TODO write documentation
res['description'] = self.__doc['other']
if pref_ids:
- pref_ids = pref_ids[0]
+ pref_ids = pref_ids[0]
if pref_ids.device == 'iphone':
url = host + ':' + str(port) + '/'+ pref_ids.service + '/' + cr.dbname + '/'+'calendars/'
else :
url = host + ':' + str(port) + '/'+ pref_ids.service + '/' + cr.dbname + '/'+'calendars/'+ 'users/'+ current_user.login + '/'+ pref_ids.collection.name+ '/'+ pref_ids.calendar.name
-
+
res['description'] = self.__doc.get(pref_ids.device , self.__doc['other'])
file = open(addons.get_module_resource('caldav','doc', 'caldav_doc.pdf'),'rb')
res['caldav_doc_file'] = base64.encodestring(file.read())
-
+
#res['doc_link'] = 'http://doc.openerp.com/'
res['url'] = prefix+url
return res
def browse_caldav(self, cr, uid, ids, context):
-
return {}
caldav_browse()
class user_preference(osv.osv_memory):
-
+
_name = 'user.preference'
_description = 'User preference Form'
@@ -238,32 +222,39 @@ class user_preference(osv.osv_memory):
'calendar' :fields.many2one('basic.calendar', 'Calendar', required=True),
'service': fields.selection([('webdav','CalDAV')], "Services"),
'device' : fields.selection([('other', 'Other'), ('iphone', 'iPhone'), ('android', 'Android based device'),('thunderbird', 'Sunbird/Thunderbird'), ('evolution','Evolution')], "Software/Devices"),
+ 'host_name': fields.char('Host Name', size=64, required=True),
}
-
+
def _get_default_calendar(self, cr, uid, context):
if context == None:
context = {}
name = context.get('cal_name')
-
collection_obj = self.pool.get('basic.calendar')
ids = collection_obj.search(cr, uid, [('name', '=', name)])
return ids[0]
-
-
+
def _get_default_collection(self, cr, uid, context):
collection_obj = self.pool.get('document.directory')
ids = collection_obj.search(cr, uid, [('name', '=', 'c')])
return ids[0]
-
+ def _get_default_host(self, cr, uid, context):
+ ids=self.search(cr,uid,[])
+ host_name = ''
+ if ids:
+ ids = len(ids)> 1 and len(ids)-1 or ids[0] # Use len(ids)-1 for taking the value of last id
+ host_name = self.browse(cr, uid,[ids],context=context)[0].host_name
+ return host_name
+
_defaults={
'service': 'webdav',
'collection' : _get_default_collection,
'calendar' : _get_default_calendar,
'device' : 'other',
-
- }
-
+ 'host_name':_get_default_host
+
+ }
+
def open_window(self, cr, uid, ids, context=None):
obj_model = self.pool.get('ir.model.data')
model_data_ids = obj_model.search(cr,uid,[('model','=','ir.ui.view'),('name','=','caldav_Browse')])
@@ -278,6 +269,22 @@ class user_preference(osv.osv_memory):
'target': 'new',
'context': context,
}
-
-
+
+ def next_window(self, cr, uid, ids, context=None):
+ obj_model = self.pool.get('ir.model.data')
+ host_name = self.browse (cr,uid,ids)[0].host_name
+ model_data_ids = obj_model.search(cr,uid,[('model','=','ir.ui.view'),('name','=','user_prefernce_form')])
+ resource_id = obj_model.read(cr, uid, model_data_ids, fields=['res_id'])
+ context.update({'res_id': ids,'host':host_name})
+ resource_id = obj_model.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id']
+ return {
+ 'view_type': 'form',
+ 'view_mode': 'form',
+ 'res_model': 'user.preference',
+ 'views': [(resource_id,'form')],
+ 'type': 'ir.actions.act_window',
+ 'target': 'new',
+ 'context': context,
+ }
+
user_preference()
diff --git a/addons/caldav/wizard/caldav_browse_view.xml b/addons/caldav/wizard/caldav_browse_view.xml
index 53af6029883..565e3a44407 100644
--- a/addons/caldav/wizard/caldav_browse_view.xml
+++ b/addons/caldav/wizard/caldav_browse_view.xml
@@ -11,19 +11,39 @@
-
-
-
-
-
+
+
+
+
+
+ host_preference
+ user.preference
+ form
+
+
+
+
+
user_preference
user.preference
diff --git a/addons/claim_from_delivery/i18n/zh_CN.po b/addons/claim_from_delivery/i18n/zh_CN.po
new file mode 100644
index 00000000000..9d6c10ac3bf
--- /dev/null
+++ b/addons/claim_from_delivery/i18n/zh_CN.po
@@ -0,0 +1,33 @@
+# Chinese (Simplified) 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-07-04 05:17+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Chinese (Simplified) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-07-05 04:33+0000\n"
+"X-Generator: Launchpad (build 13168)\n"
+
+#. module: claim_from_delivery
+#: model:ir.actions.act_window,name:claim_from_delivery.action_claim_from_delivery
+msgid "Claim"
+msgstr "索赔"
+
+#. module: claim_from_delivery
+#: model:ir.module.module,description:claim_from_delivery.module_meta_information
+msgid "Create Claim from delivery order:\n"
+msgstr "创建送货单索赔:\n"
+
+#. module: claim_from_delivery
+#: model:ir.module.module,shortdesc:claim_from_delivery.module_meta_information
+msgid "Claim from delivery"
+msgstr "送货单索赔"
diff --git a/addons/crm/crm.py b/addons/crm/crm.py
index 7003bba2a8e..0b1e8db7bbb 100644
--- a/addons/crm/crm.py
+++ b/addons/crm/crm.py
@@ -682,7 +682,7 @@ class crm_case_section(osv.osv):
_columns = {
'name': fields.char('Sales Team', size=64, required=True, translate=True),
- 'complete_name': fields.function(get_full_name, method=True, type='char', size=256, readonly=True, store=True),
+ 'complete_name': fields.function(get_full_name, type='char', size=256, readonly=True, store=True),
'code': fields.char('Code', size=8),
'active': fields.boolean('Active', help="If the active field is set to "\
"true, it will allow you to hide the sales team without removing it."),
diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py
index 11f465d8e39..98bc01a51af 100644
--- a/addons/crm/crm_lead.py
+++ b/addons/crm/crm_lead.py
@@ -161,16 +161,16 @@ class crm_lead(crm_case, osv.osv):
'referred': fields.char('Referred By', size=64),
'date_open': fields.datetime('Opened', readonly=True),
'day_open': fields.function(_compute_day, string='Days to Open', \
- method=True, multi='day_open', type="float", store=True),
+ multi='day_open', type="float", store=True),
'day_close': fields.function(_compute_day, string='Days to Close', \
- method=True, multi='day_close', type="float", store=True),
+ multi='day_close', type="float", store=True),
'state': fields.selection(crm.AVAILABLE_STATES, 'State', size=16, readonly=True,
help='The state is set to \'Draft\', when a case is created.\
\nIf the case is in progress the state is set to \'Open\'.\
\nWhen the case is over, the state is set to \'Done\'.\
\nIf the case needs to be reviewed then the state is set to \'Pending\'.'),
'message_ids': fields.one2many('mailgate.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
- 'subjects': fields.function(_get_email_subject, fnct_search=_history_search, string='Subject of Email', method=True, type='char', size=64),
+ 'subjects': fields.function(_get_email_subject, fnct_search=_history_search, string='Subject of Email', type='char', size=64),
}
@@ -345,7 +345,7 @@ class crm_lead(crm_case, osv.osv):
"""
mailgate_pool = self.pool.get('email.server.tools')
- subject = msg.get('subject')
+ subject = msg.get('subject') or _("No Subject")
body = msg.get('body')
msg_from = msg.get('from')
priority = msg.get('priority')
diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml
index c98adb86bb9..0159141eb1c 100644
--- a/addons/crm/crm_lead_view.xml
+++ b/addons/crm/crm_lead_view.xml
@@ -105,7 +105,7 @@
-
diff --git a/addons/crm/crm_meeting.py b/addons/crm/crm_meeting.py
index 6d3d68ef881..4e329ddc6d4 100644
--- a/addons/crm/crm_meeting.py
+++ b/addons/crm/crm_meeting.py
@@ -125,7 +125,7 @@ class calendar_attendee(osv.osv):
return result
_columns = {
- 'categ_id': fields.function(_compute_data, method=True, \
+ 'categ_id': fields.function(_compute_data, \
string='Event Type', type="many2one", \
relation="crm.case.categ", multi='categ_id'),
}
@@ -138,16 +138,19 @@ class res_users(osv.osv):
def create(self, cr, uid, data, context=None):
user_id = super(res_users, self).create(cr, uid, data, context=context)
- data_obj = self.pool.get('ir.model.data')
- try:
- data_id = data_obj._get_id(cr, uid, 'crm', 'ir_ui_view_sc_calendar0')
- view_id = data_obj.browse(cr, uid, data_id, context=context).res_id
- self.pool.get('ir.ui.view_sc').copy(cr, uid, view_id, default = {
- 'user_id': user_id}, context=context)
- except:
- # Tolerate a missing shortcut. See product/product.py for similar code.
- logging.getLogger('orm').debug('Skipped meetings shortcut for user "%s"', data.get('name','
-
diff --git a/addons/crm/i18n/zh_CN.po b/addons/crm/i18n/zh_CN.po
index da15c68eb6e..2b55be47a1e 100644
--- a/addons/crm/i18n/zh_CN.po
+++ b/addons/crm/i18n/zh_CN.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-04-11 11:33+0000\n"
-"Last-Translator: lky \n"
+"PO-Revision-Date: 2011-07-01 15:43+0000\n"
+"Last-Translator: hifly \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-04-29 05:00+0000\n"
-"X-Generator: Launchpad (build 12758)\n"
+"X-Launchpad-Export-Date: 2011-07-02 05:06+0000\n"
+"X-Generator: Launchpad (build 13168)\n"
#. module: crm
#: view:crm.lead.report:0
@@ -36,12 +36,12 @@ msgstr "需要服务"
#. module: crm
#: selection:crm.meeting,rrule_type:0
msgid "Monthly"
-msgstr "按月"
+msgstr "月度"
#. module: crm
#: view:crm.opportunity2phonecall:0
msgid "Schedule a PhoneCall"
-msgstr "安排一个电话访问"
+msgstr "安排一次电话访问"
#. module: crm
#: model:ir.model,name:crm.model_crm_case_stage
@@ -67,7 +67,7 @@ msgstr "显示为"
#: field:crm.meeting,day:0
#: selection:crm.meeting,select1:0
msgid "Date of month"
-msgstr "月的天数"
+msgstr "每月的指定日期"
#. module: crm
#: view:crm.lead:0
@@ -124,10 +124,10 @@ msgid "The code of the sales team must be unique !"
msgstr "销售团队编码必须唯一!"
#. module: crm
-#: code:addons/crm/wizard/crm_lead_to_opportunity.py:93
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:95
#, python-format
msgid "Lead '%s' has been converted to an opportunity."
-msgstr "线索'%s'已转化商机"
+msgstr "线索'%s'已转化为商机"
#. module: crm
#: code:addons/crm/crm_lead.py:228
@@ -141,8 +141,8 @@ msgid "No Repeat"
msgstr "不重复"
#. module: crm
-#: code:addons/crm/wizard/crm_lead_to_opportunity.py:133
-#: code:addons/crm/wizard/crm_lead_to_opportunity.py:258
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:135
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:260
#: code:addons/crm/wizard/crm_lead_to_partner.py:55
#: code:addons/crm/wizard/crm_phonecall_to_partner.py:52
#, python-format
@@ -152,7 +152,7 @@ msgstr "警告!"
#. module: crm
#: selection:crm.meeting,rrule_type:0
msgid "Yearly"
-msgstr "按年"
+msgstr "年度"
#. module: crm
#: field:crm.segmentation.line,name:0
@@ -172,7 +172,7 @@ msgstr "营销活动"
#. module: crm
#: selection:crm.lead2opportunity.partner,action:0
msgid "Do not create a partner"
-msgstr "不能创建这业务伙伴"
+msgstr "不能创建业务伙伴"
#. module: crm
#: view:crm.lead:0
@@ -184,7 +184,7 @@ msgstr "搜索商机"
#, python-format
msgid ""
"Opportunity must have Partner assigned before merging with other Opportunity."
-msgstr "必须要为商机选择一个业务伙伴才能进行商机合并."
+msgstr "必须为商机选择业务伙伴才能和其它商机合并."
#. module: crm
#: code:addons/crm/wizard/crm_merge_opportunities.py:46
@@ -536,9 +536,9 @@ msgstr "第一次与新的潜在客户接触"
#. module: crm
#: code:addons/crm/crm_lead.py:278
-#: code:addons/crm/wizard/crm_lead_to_opportunity.py:195
-#: code:addons/crm/wizard/crm_lead_to_opportunity.py:229
-#: code:addons/crm/wizard/crm_lead_to_opportunity.py:297
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:197
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:231
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:299
#: view:crm.lead2opportunity:0
#: view:crm.partner2opportunity:0
#: model:ir.actions.act_window,name:crm.action_crm_lead2opportunity
@@ -597,7 +597,7 @@ msgstr "销售FAQ"
#. module: crm
#: model:ir.model,name:crm.model_crm_send_mail_attachment
msgid "crm.send.mail.attachment"
-msgstr ""
+msgstr "crm.send.mail.attachment"
#. module: crm
#: selection:crm.lead.report,month:0
@@ -805,8 +805,8 @@ msgid "Statistics Dashboard"
msgstr "统计控制台"
#. module: crm
-#: code:addons/crm/wizard/crm_lead_to_opportunity.py:86
-#: code:addons/crm/wizard/crm_lead_to_opportunity.py:96
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:88
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:98
#: code:addons/crm/wizard/crm_partner_to_opportunity.py:101
#: code:addons/crm/wizard/crm_phonecall_to_opportunity.py:117
#: view:crm.lead:0
@@ -870,7 +870,7 @@ msgstr "事件类型"
#. module: crm
#: model:ir.model,name:crm.model_crm_installer
msgid "crm.installer"
-msgstr ""
+msgstr "crm.installer"
#. module: crm
#: field:crm.segmentation,exclusif:0
@@ -1099,7 +1099,7 @@ msgstr "订阅"
#. module: crm
#: code:addons/crm/crm_opportunity.py:208
-#: code:addons/crm/crm_phonecall.py:184
+#: code:addons/crm/crm_phonecall.py:185
#: code:addons/crm/wizard/crm_phonecall_to_meeting.py:55
#: code:addons/crm/wizard/crm_phonecall_to_meeting.py:137
#: view:crm.meeting:0
@@ -2610,7 +2610,7 @@ msgid "Meeting Type"
msgstr "会议类型"
#. module: crm
-#: code:addons/crm/wizard/crm_lead_to_opportunity.py:312
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:314
#, python-format
msgid "Merge with Existing Opportunity"
msgstr "合并现有的商机"
@@ -3128,8 +3128,8 @@ msgid "Schedule Call"
msgstr "计划的电话访问"
#. module: crm
-#: code:addons/crm/wizard/crm_lead_to_opportunity.py:133
-#: code:addons/crm/wizard/crm_lead_to_opportunity.py:258
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:135
+#: code:addons/crm/wizard/crm_lead_to_opportunity.py:260
#, python-format
msgid "Closed/Cancelled Leads Could not convert into Opportunity"
msgstr "已结束/已取消的线索不能转换为商机"
diff --git a/addons/crm_caldav/crm_caldav_view.xml b/addons/crm_caldav/crm_caldav_view.xml
index b8b0ffdea03..a610095d6a6 100644
--- a/addons/crm_caldav/crm_caldav_view.xml
+++ b/addons/crm_caldav/crm_caldav_view.xml
@@ -5,7 +5,7 @@
Caldav Browse
ir.actions.act_window
user.preference
-
+
{'cal_name' : 'Meetings'}
form
form
diff --git a/addons/crm_claim/crm_claim.py b/addons/crm_claim/crm_claim.py
index 05634d564b8..c5755085216 100644
--- a/addons/crm_claim/crm_claim.py
+++ b/addons/crm_claim/crm_claim.py
@@ -181,7 +181,7 @@ class crm_claim(crm.crm_case, osv.osv):
"""
mailgate_pool = self.pool.get('email.server.tools')
- subject = msg.get('subject')
+ subject = msg.get('subject') or _("No Subject")
body = msg.get('body')
msg_from = msg.get('from')
priority = msg.get('priority')
diff --git a/addons/crm_helpdesk/crm_helpdesk.py b/addons/crm_helpdesk/crm_helpdesk.py
index 30a2af63512..5d02ec12369 100644
--- a/addons/crm_helpdesk/crm_helpdesk.py
+++ b/addons/crm_helpdesk/crm_helpdesk.py
@@ -24,6 +24,7 @@ from osv import fields, osv
import time
import binascii
import tools
+from tools.translate import _
CRM_HELPDESK_STATES = (
crm.AVAILABLE_STATES[2][0], # Cancelled
@@ -104,7 +105,7 @@ class crm_helpdesk(crm.crm_case, osv.osv):
"""
mailgate_pool = self.pool.get('email.server.tools')
- subject = msg.get('subject')
+ subject = msg.get('subject') or _("No Subject")
body = msg.get('body')
msg_from = msg.get('from')
priority = msg.get('priority')
diff --git a/addons/delivery/delivery.py b/addons/delivery/delivery.py
index 031fdeeeb92..d70af4b4d1e 100644
--- a/addons/delivery/delivery.py
+++ b/addons/delivery/delivery.py
@@ -65,14 +65,13 @@ class delivery_carrier(osv.osv):
'partner_id': fields.many2one('res.partner', 'Carrier Partner', required=True),
'product_id': fields.many2one('product.product', 'Delivery Product', required=True),
'grids_id': fields.one2many('delivery.grid', 'carrier_id', 'Delivery Grids'),
- 'price' : fields.function(get_price, method=True,string='Price'),
+ 'price' : fields.function(get_price, string='Price'),
'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the delivery carrier without removing it."),
'normal_price': fields.float('Normal Price'),
'free_if_more_than': fields.boolean('Free If More Than'),
'amount': fields.float('Amount'),
'use_detailed_pricelist': fields.boolean('Use Detailed Pricelist'),
'pricelist_ids': fields.one2many('delivery.grid', 'carrier_id', 'Price List'),
-
}
_defaults = {
diff --git a/addons/delivery/partner.py b/addons/delivery/partner.py
index 386e9d08139..62008c2c7cf 100644
--- a/addons/delivery/partner.py
+++ b/addons/delivery/partner.py
@@ -29,7 +29,6 @@ class res_partner(osv.osv):
type='many2one',
relation='delivery.carrier',
string="Delivery Method",
- method=True,
view_load=True,
help="This delivery method will be used when invoicing from picking."),
}
diff --git a/addons/delivery/stock.py b/addons/delivery/stock.py
index d1ffb7ba968..05074268220 100644
--- a/addons/delivery/stock.py
+++ b/addons/delivery/stock.py
@@ -54,12 +54,12 @@ class stock_picking(osv.osv):
_columns = {
'carrier_id':fields.many2one("delivery.carrier","Carrier"),
'volume': fields.float('Volume'),
- 'weight': fields.function(_cal_weight, method=True, type='float', string='Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_weight',
+ 'weight': fields.function(_cal_weight, type='float', string='Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_weight',
store={
'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 20),
'stock.move': (_get_picking_line, ['product_id','product_qty','product_uom','product_uos_qty'], 20),
}),
- 'weight_net': fields.function(_cal_weight, method=True, type='float', string='Net Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_weight',
+ 'weight_net': fields.function(_cal_weight, type='float', string='Net Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_weight',
store={
'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 20),
'stock.move': (_get_picking_line, ['product_id','product_qty','product_uom','product_uos_qty'], 20),
@@ -158,11 +158,11 @@ class stock_move(osv.osv):
return res
_columns = {
- 'weight': fields.function(_cal_move_weight, method=True, type='float', string='Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_move_weight',
+ 'weight': fields.function(_cal_move_weight, type='float', string='Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_move_weight',
store={
'stock.move': (lambda self, cr, uid, ids, c=None: ids, ['product_id', 'product_qty', 'product_uom'], 20),
}),
- 'weight_net': fields.function(_cal_move_weight, method=True, type='float', string='Net weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_move_weight',
+ 'weight_net': fields.function(_cal_move_weight, type='float', string='Net weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_move_weight',
store={
'stock.move': (lambda self, cr, uid, ids, c=None: ids, ['product_id', 'product_qty', 'product_uom'], 20),
}),
diff --git a/addons/document/directory_report.py b/addons/document/directory_report.py
index 1665a7abf68..2726fcd5462 100644
--- a/addons/document/directory_report.py
+++ b/addons/document/directory_report.py
@@ -56,7 +56,7 @@ class ir_action_report_xml(osv.osv):
return [('id','in',report_id)]
_columns={
- 'model_id' : fields.function(_model_get, fnct_search=_model_search, method=True, string='Model Id'),
+ 'model_id' : fields.function(_model_get, fnct_search=_model_search, string='Model Id'),
}
ir_action_report_xml()
diff --git a/addons/document/document.py b/addons/document/document.py
index 90f57438ce8..69e123b87eb 100644
--- a/addons/document/document.py
+++ b/addons/document/document.py
@@ -117,7 +117,7 @@ class document_file(osv.osv):
# If ir.attachment contained any data before document is installed, preserve
# the data, don't drop the column!
'db_datas': fields.binary('Data', oldname='datas'),
- 'datas': fields.function(_data_get, method=True, fnct_inv=_data_set, string='File Content', type="binary", nodrop=True),
+ 'datas': fields.function(_data_get, fnct_inv=_data_set, string='File Content', type="binary", nodrop=True),
# Fields of document:
'user_id': fields.many2one('res.users', 'Owner', select=1),
diff --git a/addons/event/event.py b/addons/event/event.py
index 4d392689bba..0fc28c7c193 100644
--- a/addons/event/event.py
+++ b/addons/event/event.py
@@ -207,9 +207,9 @@ class event_event(osv.osv):
'type': fields.many2one('event.type', 'Type', help="Type of Event like Seminar, Exhibition, Conference, Training.", readonly=False, states={'done': [('readonly', True)]}),
'register_max': fields.integer('Maximum Registrations', help="Provide Maximum Number of Registrations", readonly=True, states={'draft': [('readonly', False)]}),
'register_min': fields.integer('Minimum Registrations', help="Provide Minimum Number of Registrations", readonly=True, states={'draft': [('readonly', False)]}),
- 'register_current': fields.function(_get_register, method=True, string='Confirmed Registrations', multi='register_current',
+ 'register_current': fields.function(_get_register, string='Confirmed Registrations', multi='register_current',
help="Total of Open and Done Registrations"),
- 'register_prospect': fields.function(_get_register, method=True, string='Unconfirmed Registrations', multi='register_prospect',
+ 'register_prospect': fields.function(_get_register, string='Unconfirmed Registrations', multi='register_prospect',
help="Total of Prospect Registrations"),
'registration_ids': fields.one2many('event.registration', 'event_id', 'Registrations', readonly=False, states={'done': [('readonly', True)]}),
'date_begin': fields.datetime('Beginning date', required=True, help="Beginning Date of Event", readonly=True, states={'draft': [('readonly', False)]}),
@@ -301,7 +301,7 @@ class event_registration(osv.osv):
"partner_invoice_id": fields.many2one('res.partner', 'Partner Invoiced', readonly=True, states={'draft': [('readonly', False)]}),
"contact_id": fields.many2one('res.partner.contact', 'Partner Contact', readonly=False, states={'done': [('readonly', True)]}), #TODO: filter only the contacts that have a function into the selected partner_id
"unit_price": fields.float('Unit Price', required=True, digits_compute=dp.get_precision('Sale Price'), readonly=True, states={'draft': [('readonly', False)]}),
- 'price_subtotal': fields.function(_amount_line, method=True, string='Subtotal', digits_compute=dp.get_precision('Sale Price'), store=True),
+ 'price_subtotal': fields.function(_amount_line, string='Subtotal', digits_compute=dp.get_precision('Sale Price'), store=True),
"badge_ids": fields.one2many('event.registration.badge', 'registration_id', 'Badges', readonly=False, states={'done': [('readonly', True)]}),
"event_product": fields.char("Invoice Name", size=128, readonly=True, states={'draft': [('readonly', False)]}),
"tobe_invoiced": fields.boolean("To be Invoiced", readonly=True, states={'draft': [('readonly', False)]}),
diff --git a/addons/fetchmail/fetchmail.py b/addons/fetchmail/fetchmail.py
index 9aeddd7ba9b..9817f0d6633 100644
--- a/addons/fetchmail/fetchmail.py
+++ b/addons/fetchmail/fetchmail.py
@@ -116,7 +116,7 @@ class email_server(osv.osv):
if context is None:
context = {}
for server in self.browse(cr, uid, ids, context=context):
- logger.notifyChannel('imap', netsvc.LOG_INFO, 'fetchmail start checking for new emails on %s' % (server.name))
+ logger.notifyChannel(server.type, netsvc.LOG_INFO, 'fetchmail start checking for new emails on %s' % (server.name))
context.update({'server_id': server.id, 'server_type': server.type})
try:
if server.type == 'imap':
@@ -199,7 +199,7 @@ class email_server(osv.osv):
pop_server.quit()
- logger.notifyChannel('imap', netsvc.LOG_INFO, 'fetchmail fetch %s email(s) from %s' % (numMsgs, server.name))
+ logger.notifyChannel(server.type, netsvc.LOG_INFO, 'fetchmail fetch %s email(s) from %s' % (numMsgs, server.name))
except Exception, e:
logger.notifyChannel(server.type, netsvc.LOG_WARNING, '%s' % (tools.ustr(e)))
diff --git a/addons/hr/hr.py b/addons/hr/hr.py
index 8a49fd876ba..dbd3b393345 100644
--- a/addons/hr/hr.py
+++ b/addons/hr/hr.py
@@ -45,7 +45,7 @@ class hr_employee_category(osv.osv):
_description = "Employee Category"
_columns = {
'name': fields.char("Category", size=64, required=True),
- 'complete_name': fields.function(_name_get_fnc, method=True, type="char", string='Name'),
+ 'complete_name': fields.function(_name_get_fnc, type="char", string='Name'),
'parent_id': fields.many2one('hr.employee.category', 'Parent Category', select=True),
'child_ids': fields.one2many('hr.employee.category', 'parent_id', 'Child Categories')
}
@@ -92,8 +92,8 @@ class hr_job(osv.osv):
_description = "Job Description"
_columns = {
'name': fields.char('Job Name', size=128, required=True, select=True),
- 'expected_employees': fields.function(_no_of_employee, method=True, string='Expected Employees', help='Required number of Employees in total for that job.', multi="no_of_employee", store=True),
- 'no_of_employee': fields.function(_no_of_employee, method=True, string="No of Employee", help='Number of employee with that job.', multi="no_of_employee", store=True),
+ 'expected_employees': fields.function(_no_of_employee, string='Expected Employees', help='Required number of Employees in total for that job.', multi="no_of_employee", store=True),
+ 'no_of_employee': fields.function(_no_of_employee, string="No of Employee", help='Number of employee with that job.', multi="no_of_employee", store=True),
'no_of_recruitment': fields.float('Expected in Recruitment'),
'employee_ids': fields.one2many('hr.employee', 'job_id', 'Employees'),
'description': fields.text('Job Description'),
@@ -241,16 +241,19 @@ class res_users(osv.osv):
def create(self, cr, uid, data, context=None):
user_id = super(res_users, self).create(cr, uid, data, context=context)
- data_obj = self.pool.get('ir.model.data')
- try:
- data_id = data_obj._get_id(cr, uid, 'hr', 'ir_ui_view_sc_employee')
- view_id = data_obj.browse(cr, uid, data_id, context=context).res_id
- self.pool.get('ir.ui.view_sc').copy(cr, uid, view_id, default = {
- 'user_id': user_id}, context=context)
- except:
- # Tolerate a missing shortcut. See product/product.py for similar code.
- logging.getLogger('orm').debug('Skipped meetings shortcut for user "%s"', data.get('name','
-
-
-
+
+
+
diff --git a/addons/hr_payroll_account/hr_payroll_account.py b/addons/hr_payroll_account/hr_payroll_account.py
index 416aeb485ef..7d069bdf346 100644
--- a/addons/hr_payroll_account/hr_payroll_account.py
+++ b/addons/hr_payroll_account/hr_payroll_account.py
@@ -60,7 +60,6 @@ class hr_employee(osv.osv):
type='many2one',
relation='account.account',
string="Bank Account",
- method=True,
domain="[('type', '=', 'liquidity')]",
view_load=True,
help="Select Bank Account from where Salary Expense will be Paid, to be used for payslip verification."),
@@ -69,7 +68,6 @@ class hr_employee(osv.osv):
type='many2one',
relation='account.account',
string="Salary Account",
- method=True,
domain="[('type', '=', 'other')]",
view_load=True,
help="Expense account when Salary Expense will be recorded"),
@@ -78,7 +76,6 @@ class hr_employee(osv.osv):
type='many2one',
relation='account.account',
string="Employee Account",
- method=True,
domain="[('type', '=', 'other')]",
view_load=True,
help="Employee Payable Account"),
@@ -87,7 +84,6 @@ class hr_employee(osv.osv):
type='many2one',
relation='account.analytic.account',
string="Analytic Account",
- method=True,
view_load=True,
help="Analytic Account for Salary Analysis"),
}
@@ -180,8 +176,8 @@ class contrib_register(osv.osv):
_columns = {
'account_id': fields.many2one('account.account', 'Account'),
'analytic_account_id':fields.many2one('account.analytic.account', 'Analytic Account'),
- 'yearly_total_by_emp': fields.function(_total_contrib, method=True, multi='dc', store=True, string='Total By Employee', digits=(16, 4)),
- 'yearly_total_by_comp': fields.function(_total_contrib, method=True, multi='dc', store=True, string='Total By Company', digits=(16, 4)),
+ 'yearly_total_by_emp': fields.function(_total_contrib, multi='dc', store=True, string='Total By Employee', digits=(16, 4)),
+ 'yearly_total_by_comp': fields.function(_total_contrib, multi='dc', store=True, string='Total By Company', digits=(16, 4)),
}
contrib_register()
diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py
index bc7489a0c4f..5e738fc6f48 100644
--- a/addons/hr_recruitment/hr_recruitment.py
+++ b/addons/hr_recruitment/hr_recruitment.py
@@ -157,9 +157,9 @@ class hr_applicant(crm.crm_case, osv.osv):
'response': fields.integer("Response"),
'reference': fields.char('Reference', size=128),
'day_open': fields.function(_compute_day, string='Days to Open', \
- method=True, multi='day_open', type="float", store=True),
+ multi='day_open', type="float", store=True),
'day_close': fields.function(_compute_day, string='Days to Close', \
- method=True, multi='day_close', type="float", store=True),
+ multi='day_close', type="float", store=True),
}
def _get_stage(self, cr, uid, context=None):
@@ -308,7 +308,7 @@ class hr_applicant(crm.crm_case, osv.osv):
mailgate_pool = self.pool.get('email.server.tools')
attach_obj = self.pool.get('ir.attachment')
- subject = msg.get('subject')
+ subject = msg.get('subject') or _("No Subject")
body = msg.get('body')
msg_from = msg.get('from')
priority = msg.get('priority')
diff --git a/addons/hr_timesheet_invoice/hr_timesheet_invoice.py b/addons/hr_timesheet_invoice/hr_timesheet_invoice.py
index 5c042c5c7e3..d9314690ce7 100644
--- a/addons/hr_timesheet_invoice/hr_timesheet_invoice.py
+++ b/addons/hr_timesheet_invoice/hr_timesheet_invoice.py
@@ -66,7 +66,7 @@ class account_analytic_account(osv.osv):
'pricelist_id': fields.many2one('product.pricelist', 'Sale Pricelist',
help="The product to invoice is defined on the employee form, the price will be deduced by this pricelist on the product."),
'amount_max': fields.float('Max. Invoice Price'),
- 'amount_invoiced': fields.function(_invoiced_calc, method=True, string='Invoiced Amount',
+ 'amount_invoiced': fields.function(_invoiced_calc, string='Invoiced Amount',
help="Total invoiced"),
'to_invoice': fields.many2one('hr_timesheet_invoice.factor', 'Reinvoice Costs',
help="Fill this field if you plan to automatically generate invoices based " \
diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py
index ea2b5017790..cf4351112a4 100644
--- a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py
+++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py
@@ -286,13 +286,13 @@ class hr_timesheet_sheet(osv.osv):
help=' * The \'Draft\' state is used when a user is encoding a new and unconfirmed timesheet. \
\n* The \'Confirmed\' state is used for to confirm the timesheet by user. \
\n* The \'Done\' state is used when users timesheet is accepted by his/her senior.'),
- 'state_attendance' : fields.function(_state_attendance, method=True, type='selection', selection=[('absent', 'Absent'), ('present', 'Present'),('none','No employee defined')], string='Current Status'),
- 'total_attendance_day': fields.function(_total_day, method=True, string='Total Attendance', multi="_total_day"),
- 'total_timesheet_day': fields.function(_total_day, method=True, string='Total Timesheet', multi="_total_day"),
- 'total_difference_day': fields.function(_total_day, method=True, string='Difference', multi="_total_day"),
- 'total_attendance': fields.function(_total, method=True, string='Total Attendance', multi="_total_sheet"),
- 'total_timesheet': fields.function(_total, method=True, string='Total Timesheet', multi="_total_sheet"),
- 'total_difference': fields.function(_total, method=True, string='Difference', multi="_total_sheet"),
+ 'state_attendance' : fields.function(_state_attendance, type='selection', selection=[('absent', 'Absent'), ('present', 'Present'),('none','No employee defined')], string='Current Status'),
+ 'total_attendance_day': fields.function(_total_day, string='Total Attendance', multi="_total_day"),
+ 'total_timesheet_day': fields.function(_total_day, string='Total Timesheet', multi="_total_day"),
+ 'total_difference_day': fields.function(_total_day, string='Difference', multi="_total_day"),
+ 'total_attendance': fields.function(_total, string='Total Attendance', multi="_total_sheet"),
+ 'total_timesheet': fields.function(_total, string='Total Timesheet', multi="_total_sheet"),
+ 'total_difference': fields.function(_total, string='Difference', multi="_total_sheet"),
'period_ids': fields.one2many('hr_timesheet_sheet.sheet.day', 'sheet_id', 'Period', readonly=True),
'account_ids': fields.one2many('hr_timesheet_sheet.sheet.account', 'sheet_id', 'Analytic accounts', readonly=True),
'company_id': fields.many2one('res.company', 'Company'),
@@ -473,7 +473,7 @@ class hr_timesheet_line(osv.osv):
return [('id', 'in', [x[0] for x in res])]
_columns = {
- 'sheet_id': fields.function(_sheet, method=True, string='Sheet',
+ 'sheet_id': fields.function(_sheet, string='Sheet',
type='many2one', relation='hr_timesheet_sheet.sheet',
fnct_search=_sheet_search),
}
@@ -494,6 +494,8 @@ class hr_timesheet_line(osv.osv):
]
def unlink(self, cr, uid, ids, *args, **kwargs):
+ if isinstance(ids, (int, long)):
+ ids = [ids]
self._check(cr, uid, ids)
return super(hr_timesheet_line,self).unlink(cr, uid, ids,*args, **kwargs)
@@ -596,7 +598,7 @@ class hr_attendance(osv.osv):
return [('id', 'in', [x[0] for x in res])]
_columns = {
- 'sheet_id': fields.function(_sheet, method=True, string='Sheet',
+ 'sheet_id': fields.function(_sheet, string='Sheet',
type='many2one', relation='hr_timesheet_sheet.sheet',
fnct_search=_sheet_search),
}
@@ -619,12 +621,16 @@ class hr_attendance(osv.osv):
return res
def unlink(self, cr, uid, ids, *args, **kwargs):
+ if isinstance(ids, (int, long)):
+ ids = [ids]
self._check(cr, uid, ids)
return super(hr_attendance,self).unlink(cr, uid, ids,*args, **kwargs)
def write(self, cr, uid, ids, vals, context=None):
if context is None:
context = {}
+ if isinstance(ids, (int, long)):
+ ids = [ids]
self._check(cr, uid, ids)
res = super(hr_attendance,self).write(cr, uid, ids, vals, context=context)
if 'sheet_id' in context:
diff --git a/addons/idea/idea.py b/addons/idea/idea.py
index 04ae4dff5df..0e6e89f15b5 100644
--- a/addons/idea/idea.py
+++ b/addons/idea/idea.py
@@ -52,7 +52,7 @@ class idea_category(osv.osv):
_columns = {
'name': fields.char('Category', size=64, required=True),
- 'complete_name': fields.function(_categ_name_get_fnc, method=True, type="char", string='Name'),
+ 'complete_name': fields.function(_categ_name_get_fnc, type="char", string='Name'),
'summary': fields.text('Summary'),
'parent_id': fields.many2one('idea.category', 'Parent Categories', ondelete='set null'),
'child_ids': fields.one2many('idea.category', 'parent_id', 'Child Categories'),
@@ -180,10 +180,10 @@ class idea_idea(osv.osv):
'created_date': fields.datetime('Creation date', readonly=True),
'open_date': fields.datetime('Open date', readonly=True, help="Date when an idea opened"),
'vote_ids': fields.one2many('idea.vote', 'idea_id', 'Vote'),
- 'my_vote': fields.function(_vote_read, fnct_inv = _vote_save, string="My Vote", method=True, type="selection", selection=VoteValues),
- 'vote_avg': fields.function(_vote_avg_compute, method=True, string="Average Score", type="float"),
- 'count_votes': fields.function(_vote_count, method=True, string="Count of votes", type="integer"),
- 'count_comments': fields.function(_comment_count, method=True, string="Count of comments", type="integer"),
+ 'my_vote': fields.function(_vote_read, fnct_inv = _vote_save, string="My Vote", type="selection", selection=VoteValues),
+ 'vote_avg': fields.function(_vote_avg_compute, string="Average Score", type="float"),
+ 'count_votes': fields.function(_vote_count, string="Count of votes", type="integer"),
+ 'count_comments': fields.function(_comment_count, string="Count of comments", type="integer"),
'category_id': fields.many2one('idea.category', 'Category', required=True, readonly=True, states={'draft':[('readonly',False)]}),
'state': fields.selection([('draft', 'Draft'),
('open', 'Opened'),
diff --git a/addons/import_google/wizard/import_google_data.py b/addons/import_google/wizard/import_google_data.py
index fae404d103a..776cb578f08 100644
--- a/addons/import_google/wizard/import_google_data.py
+++ b/addons/import_google/wizard/import_google_data.py
@@ -71,7 +71,7 @@ class synchronize_google(osv.osv_memory):
raise osv.except_osv(_('Warning !'), _("No Google Username or password Defined for user.\nPlease define in user view"))
gd_client = google.google_login(user_obj.gmail_user,user_obj.gmail_password,type='group')
if not gd_client:
- raise osv.except_osv(_('Error'), _("Authentication fail check the user and password !"))
+ return [('failed', 'Connection to google fail')]
res = []
query = gdata.contacts.service.GroupsQuery(feed='/m8/feeds/groups/default/full')
@@ -92,7 +92,7 @@ class synchronize_google(osv.osv_memory):
for cal in calendars.entry:
res.append((cal.id.text, cal.title.text))
except Exception, e:
- raise osv.except_osv('Error !', e.args[0].get('body'))
+ return [('failed', 'Connection to google fail')]
res.append(('all', 'All Calendars'))
return res
diff --git a/addons/l10n_ch/invoice.py b/addons/l10n_ch/invoice.py
index af9beac55e0..4896931b77b 100644
--- a/addons/l10n_ch/invoice.py
+++ b/addons/l10n_ch/invoice.py
@@ -73,7 +73,7 @@ class account_invoice(osv.osv):
help='The partner bank account to pay\nKeep empty to use the default'
),
### Amount to pay
- 'amount_to_pay': fields.function(_amount_to_pay, method=True,
+ 'amount_to_pay': fields.function(_amount_to_pay,
type='float', string='Amount to be paid',
help='The amount which should be paid at the current date\n' \
'minus the amount which is already in payment order'),
diff --git a/addons/lunch/lunch.py b/addons/lunch/lunch.py
index 3778caaa34f..771779310cb 100644
--- a/addons/lunch/lunch.py
+++ b/addons/lunch/lunch.py
@@ -81,7 +81,7 @@ class lunch_cashbox(osv.osv):
_columns = {
'manager': fields.many2one('res.users', 'Manager'),
'name': fields.char('Name', size=30, required=True, unique = True),
- 'sum_remain': fields.function(amount_available, method=True, string='Total Remaining'),
+ 'sum_remain': fields.function(amount_available, string='Total Remaining'),
}
lunch_cashbox()
@@ -140,7 +140,7 @@ class lunch_order(osv.osv):
states = {'draft':[('readonly', False)]}),
'state': fields.selection([('draft', 'Draft'), ('confirmed', 'Confirmed'), ], \
'State', readonly=True, select=True),
- 'price': fields.function(_price_get, method=True, string="Price"),
+ 'price': fields.function(_price_get, string="Price"),
'category': fields.many2one('lunch.category','Category'),
}
diff --git a/addons/mail_gateway/mail_gateway.py b/addons/mail_gateway/mail_gateway.py
index f60e26fe331..4fa70484666 100644
--- a/addons/mail_gateway/mail_gateway.py
+++ b/addons/mail_gateway/mail_gateway.py
@@ -281,7 +281,7 @@ class mailgate_message(osv.osv):
'description': fields.text('Description', readonly=True),
'partner_id': fields.many2one('res.partner', 'Partner', required=False),
'attachment_ids': fields.many2many('ir.attachment', 'message_attachment_rel', 'message_id', 'attachment_id', 'Attachments', readonly=True),
- 'display_text': fields.function(_get_display_text, method=True, type='text', size="512", string='Display Text'),
+ 'display_text': fields.function(_get_display_text, type='text', size="512", string='Display Text'),
}
def init(self, cr):
@@ -519,7 +519,7 @@ class mailgate_tool(osv.osv_memory):
body = content
has_plain_text = True
elif part.get_content_maintype() in ('application', 'image'):
- if filename :
+ if filename and attach:
attachments[filename] = part.get_payload(decode=True)
else:
res = part.get_payload(decode=True)
diff --git a/addons/marketing_campaign/i18n/zh_CN.po b/addons/marketing_campaign/i18n/zh_CN.po
new file mode 100644
index 00000000000..95aafae0f40
--- /dev/null
+++ b/addons/marketing_campaign/i18n/zh_CN.po
@@ -0,0 +1,1054 @@
+# Chinese (Simplified) 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-07-01 03:28+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Chinese (Simplified) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-07-02 05:06+0000\n"
+"X-Generator: Launchpad (build 13168)\n"
+
+#. module: marketing_campaign
+#: view:marketing.campaign:0
+msgid "Manual Mode"
+msgstr "手工模式"
+
+#. module: marketing_campaign
+#: field:marketing.campaign.transition,activity_from_id:0
+msgid "Previous Activity"
+msgstr "前一个活动"
+
+#. module: marketing_campaign
+#: code:addons/marketing_campaign/marketing_campaign.py:772
+#, python-format
+msgid "The current step for this item has no email or report to preview."
+msgstr "这步没有邮件或者报表。"
+
+#. module: marketing_campaign
+#: constraint:marketing.campaign.transition:0
+msgid "The To/From Activity of transition must be of the same Campaign "
+msgstr "前后活动必须属于同一个营销活动 "
+
+#. module: marketing_campaign
+#: code:addons/marketing_campaign/marketing_campaign.py:144
+#, python-format
+msgid ""
+"The campaign cannot be started: it doesn't have any starting activity (or "
+"any activity with a signal and no previous activity)"
+msgstr "营销活动无法开始:它没有开始的活动(或者标识为开始但没有前一个活动的活动)"
+
+#. module: marketing_campaign
+#: selection:marketing.campaign.transition,trigger:0
+msgid "Time"
+msgstr "时间"
+
+#. module: marketing_campaign
+#: selection:marketing.campaign.activity,type:0
+msgid "Custom Action"
+msgstr "自定义操作"
+
+#. module: marketing_campaign
+#: code:addons/marketing_campaign/marketing_campaign.py:139
+#, python-format
+msgid ""
+"The campaign cannot be started: the email account is missing in email "
+"activity '%s'"
+msgstr "营销活动无法开始:没有为邮件活动'%s'设置邮箱帐号"
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+#: view:marketing.campaign:0
+#: view:marketing.campaign.segment:0
+#: view:marketing.campaign.workitem:0
+msgid "Group By..."
+msgstr "分组..."
+
+#. module: marketing_campaign
+#: help:marketing.campaign.activity,revenue:0
+msgid ""
+"Set an expected revenue if you consider that every campaign item that has "
+"reached this point has generated a certain revenue. You can get revenue "
+"statistics in the Reporting section"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.transition,trigger:0
+msgid "Trigger"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:campaign.analysis,count:0
+msgid "# of Actions"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign:0
+msgid "Campaign Editor"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+#: view:marketing.campaign.workitem:0
+msgid "Today"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:campaign.analysis,month:0
+msgid "March"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign.segment,sync_mode:0
+msgid ""
+"Determines an additional criterion to add to the filter when selecting new "
+"records to inject in the campaign."
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.activity,object_id:0
+msgid "Object"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign.activity,condition:0
+msgid ""
+"Python expression to decide whether the activity can be executed, otherwise "
+"it will be deleted or cancelled.The expression may use the following "
+"[browsable] variables:\n"
+" - activity: the campaign activity\n"
+" - workitem: the campaign workitem\n"
+" - resource: the resource object this campaign item represents\n"
+" - transitions: list of campaign transitions outgoing from this activity\n"
+"...- re: Python regular expression module"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign:0
+#: view:marketing.campaign.segment:0
+msgid "Set to Draft"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.activity,to_ids:0
+msgid "Next Activities"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.segment:0
+msgid "Synchronization"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+msgid "This Year"
+msgstr ""
+
+#. module: marketing_campaign
+#: code:addons/marketing_campaign/marketing_campaign.py:772
+#, python-format
+msgid "No preview"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.segment:0
+#: field:marketing.campaign.segment,date_run:0
+msgid "Launch Date"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+#: field:campaign.analysis,day:0
+msgid "Day"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.activity:0
+msgid "Outgoing Transitions"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.workitem:0
+msgid "Reset"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign,object_id:0
+msgid "Choose the resource on which you want this campaign to be run"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.segment,sync_last_date:0
+msgid "Last Synchronization"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:marketing.campaign.transition,interval_type:0
+msgid "Year(s)"
+msgstr ""
+
+#. module: marketing_campaign
+#: code:addons/marketing_campaign/marketing_campaign.py:209
+#, python-format
+msgid "Sorry, campaign duplication is not supported at the moment."
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign.segment,sync_last_date:0
+msgid ""
+"Date on which this segment was synchronized last time (automatically or "
+"manually)"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:campaign.analysis,state:0
+#: selection:marketing.campaign,state:0
+#: selection:marketing.campaign.segment,state:0
+#: selection:marketing.campaign.workitem,state:0
+msgid "Cancelled"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:marketing.campaign.transition,trigger:0
+msgid "Automatic"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign,mode:0
+msgid ""
+"Test - It creates and process all the activities directly (without waiting "
+"for the delay on transitions) but does not send emails or produce reports.\n"
+"Test in Realtime - It creates and processes all the activities directly but "
+"does not send emails or produce reports.\n"
+"With Manual Confirmation - the campaigns runs normally, but the user has to "
+"validate all workitem manually.\n"
+"Normal - the campaign runs normally and automatically sends all emails and "
+"reports (be very careful with this mode, you're live!)"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign.segment,date_run:0
+msgid "Initial start date of this segment."
+msgstr ""
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+#: field:campaign.analysis,campaign_id:0
+#: view:marketing.campaign:0
+#: field:marketing.campaign.activity,campaign_id:0
+#: view:marketing.campaign.segment:0
+#: field:marketing.campaign.segment,campaign_id:0
+#: view:marketing.campaign.workitem:0
+#: field:marketing.campaign.workitem,campaign_id:0
+msgid "Campaign"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.activity,start:0
+msgid "Start"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign,partner_field_id:0
+msgid ""
+"The generated workitems will be linked to the partner related to the record. "
+"If the record is the partner itself leave this field empty."
+msgstr ""
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+#: field:campaign.analysis,segment_id:0
+#: view:marketing.campaign.segment:0
+#: view:marketing.campaign.workitem:0
+#: field:marketing.campaign.workitem,segment_id:0
+msgid "Segment"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.activity:0
+msgid "Cost / Revenue"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign.activity,type:0
+msgid ""
+"The type of action to execute when an item enters this activity, such as:\n"
+" - Email: send an email using a predefined email template\n"
+" - Report: print an existing Report defined on the resource item and save "
+"it into a specific directory\n"
+" - Custom Action: execute a predefined action, e.g. to modify the fields "
+"of the resource record\n"
+" "
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign.segment,date_next_sync:0
+msgid "Next time the synchronization job is scheduled to run automatically"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:marketing.campaign.transition,interval_type:0
+msgid "Month(s)"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+#: field:campaign.analysis,partner_id:0
+#: model:ir.model,name:marketing_campaign.model_res_partner
+#: field:marketing.campaign.workitem,partner_id:0
+msgid "Partner"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.activity:0
+msgid "Transitions"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.activity,keep_if_condition_not_met:0
+msgid "Don't delete workitems"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+#: field:campaign.analysis,state:0
+#: view:marketing.campaign:0
+#: field:marketing.campaign,state:0
+#: view:marketing.campaign.segment:0
+#: field:marketing.campaign.segment,state:0
+#: view:marketing.campaign.workitem:0
+#: field:marketing.campaign.workitem,state:0
+msgid "State"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+msgid "Marketing Reports"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.activity,type:0
+msgid "Type"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.workitem:0
+msgid "Related Resource"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign,name:0
+#: field:marketing.campaign.activity,name:0
+#: field:marketing.campaign.segment,name:0
+#: field:marketing.campaign.transition,name:0
+msgid "Name"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.workitem,res_name:0
+msgid "Resource Name"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.segment,sync_mode:0
+msgid "Synchronization mode"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign:0
+#: view:marketing.campaign.segment:0
+msgid "Run"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.activity,from_ids:0
+msgid "Previous Activities"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign.segment,date_done:0
+msgid "Date this segment was last closed or cancelled."
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.workitem:0
+msgid "Marketing Campaign Activities"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.workitem:0
+#: field:marketing.campaign.workitem,error_msg:0
+msgid "Error Message"
+msgstr ""
+
+#. module: marketing_campaign
+#: model:ir.actions.act_window,name:marketing_campaign.action_marketing_campaign_form
+#: model:ir.ui.menu,name:marketing_campaign.menu_marketing_campaign
+#: model:ir.ui.menu,name:marketing_campaign.menu_marketing_campaign_form
+#: view:marketing.campaign:0
+msgid "Campaigns"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.transition,interval_type:0
+msgid "Interval Unit"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:campaign.analysis,country_id:0
+msgid "Country"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.activity,report_id:0
+#: selection:marketing.campaign.activity,type:0
+msgid "Report"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:campaign.analysis,month:0
+msgid "July"
+msgstr ""
+
+#. module: marketing_campaign
+#: model:ir.ui.menu,name:marketing_campaign.menu_marketing_configuration
+msgid "Configuration"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign.activity,variable_cost:0
+msgid ""
+"Set a variable cost if you consider that every campaign item that has "
+"reached this point has entailed a certain cost. You can get cost statistics "
+"in the Reporting section"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:marketing.campaign.transition,interval_type:0
+msgid "Hour(s)"
+msgstr ""
+
+#. module: marketing_campaign
+#: model:ir.model,name:marketing_campaign.model_marketing_campaign_segment
+msgid "Campaign Segment"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign:0
+#: view:marketing.campaign.segment:0
+#: view:marketing.campaign.workitem:0
+msgid "Cancel"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign.activity,keep_if_condition_not_met:0
+msgid ""
+"By activating this option, workitems that aren't executed because the "
+"condition is not met are marked as cancelled instead of being deleted."
+msgstr ""
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+msgid "Exceptions"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:res.partner,workitem_ids:0
+msgid "Workitems"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign,fixed_cost:0
+msgid "Fixed Cost"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.segment:0
+msgid "Newly Modified"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.transition,interval_nbr:0
+msgid "Interval Value"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:campaign.analysis,revenue:0
+#: field:marketing.campaign.activity,revenue:0
+msgid "Revenue"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:campaign.analysis,month:0
+msgid "September"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:campaign.analysis,month:0
+msgid "December"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+#: field:campaign.analysis,month:0
+msgid "Month"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.transition,activity_to_id:0
+msgid "Next Activity"
+msgstr ""
+
+#. module: marketing_campaign
+#: model:ir.actions.act_window,name:marketing_campaign.act_marketing_campaing_followup
+msgid "Campaign Follow-up"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign.activity,email_template_id:0
+msgid "The e-mail to send when this activity is activated"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+msgid "This Month"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign:0
+msgid "Test Mode"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:marketing.campaign.segment,sync_mode:0
+msgid "Only records modified after last sync (no duplicates)"
+msgstr ""
+
+#. module: marketing_campaign
+#: model:ir.model,name:marketing_campaign.model_ir_actions_report_xml
+msgid "ir.actions.report.xml"
+msgstr ""
+
+#. module: marketing_campaign
+#: model:ir.actions.act_window,name:marketing_campaign.act_marketing_campaing_stat
+msgid "Campaign Statistics"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign.activity,server_action_id:0
+msgid "The action to perform when this activity is activated"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign,partner_field_id:0
+msgid "Partner Field"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+#: model:ir.actions.act_window,name:marketing_campaign.action_campaign_analysis_all
+#: model:ir.model,name:marketing_campaign.model_campaign_analysis
+#: model:ir.ui.menu,name:marketing_campaign.menu_action_campaign_analysis_all
+msgid "Campaign Analysis"
+msgstr ""
+
+#. module: marketing_campaign
+#: sql_constraint:marketing.campaign.transition:0
+msgid "The interval must be positive or zero"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:marketing.campaign,mode:0
+msgid "Test in Realtime"
+msgstr ""
+
+#. module: marketing_campaign
+#: sql_constraint:email.template:0
+msgid "The template name must be unique !"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:marketing.campaign,mode:0
+msgid "Test Directly"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.activity,report_directory_id:0
+msgid "Directory"
+msgstr ""
+
+#. module: marketing_campaign
+#: constraint:res.partner:0
+msgid "Error ! You can not create recursive associated members."
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign:0
+#: selection:marketing.campaign,state:0
+#: view:marketing.campaign.segment:0
+#: selection:marketing.campaign.segment,state:0
+msgid "Draft"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.workitem:0
+msgid "Preview"
+msgstr ""
+
+#. module: marketing_campaign
+#: model:ir.module.module,description:marketing_campaign.module_meta_information
+msgid ""
+"\n"
+"This module provides leads automation through marketing campaigns (campaigns "
+"can in fact be defined on any resource, not just CRM Leads).\n"
+" The campaigns are dynamic and multi-channels. The process is as "
+"follows:\n"
+" * Design marketing campaigns like workflows, including email "
+"templates to send, reports to print and send by email, custom actions, etc.\n"
+" * Define input segments that will select the items that should "
+"enter the campaign (e.g leads from certain countries, etc.)\n"
+" * Run you campaign in simulation mode to test it real-time or "
+"accelerated, and fine-tune it\n"
+" * You may also start the real campaign in manual mode, where each "
+"action requires manual validation\n"
+" * Finally launch your campaign live, and watch the statistics as "
+"the campaign does everything fully automatically. \n"
+" While the campaign runs you can of course continue to fine-tune "
+"the parameters, input segments, workflow, etc.\n"
+" \n"
+" Note: If you need demo data, you can install the "
+"marketing_campaign_crm_demo module, but this will also install the CRM "
+"application as it depends on CRM Leads.\n"
+" "
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:campaign.analysis,month:0
+msgid "August"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:marketing.campaign,mode:0
+msgid "Normal"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign.activity,start:0
+msgid "This activity is launched when the campaign starts."
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign.activity,signal:0
+msgid ""
+"An activity with a signal can be called programmatically. Be careful, the "
+"workitem is always created when a signal is sent"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:campaign.analysis,month:0
+msgid "June"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:marketing.campaign.segment,sync_mode:0
+msgid "All records (no duplicates)"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.segment:0
+msgid "Newly Created"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:campaign.analysis,date:0
+#: view:marketing.campaign.workitem:0
+msgid "Date"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:campaign.analysis,month:0
+msgid "November"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.activity:0
+#: field:marketing.campaign.activity,condition:0
+msgid "Condition"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign.activity,report_id:0
+msgid "The report to generate when this activity is activated"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:campaign.analysis,state:0
+#: view:marketing.campaign.workitem:0
+#: selection:marketing.campaign.workitem,state:0
+msgid "Exception"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:campaign.analysis,month:0
+msgid "October"
+msgstr ""
+
+#. module: marketing_campaign
+#: code:addons/marketing_campaign/marketing_campaign.py:141
+#, python-format
+msgid ""
+"The campaign cannot be started: the email account is not approved in email "
+"activity '%s'"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.activity,email_template_id:0
+msgid "Email Template"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:campaign.analysis,month:0
+msgid "January"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.workitem:0
+#: field:marketing.campaign.workitem,date:0
+msgid "Execution Date"
+msgstr ""
+
+#. module: marketing_campaign
+#: model:ir.model,name:marketing_campaign.model_marketing_campaign_workitem
+msgid "Campaign Workitem"
+msgstr ""
+
+#. module: marketing_campaign
+#: model:ir.model,name:marketing_campaign.model_marketing_campaign_activity
+msgid "Campaign Activity"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign.activity,report_directory_id:0
+msgid "This folder is used to store the generated reports"
+msgstr ""
+
+#. module: marketing_campaign
+#: code:addons/marketing_campaign/marketing_campaign.py:125
+#: code:addons/marketing_campaign/marketing_campaign.py:139
+#: code:addons/marketing_campaign/marketing_campaign.py:141
+#: code:addons/marketing_campaign/marketing_campaign.py:144
+#: code:addons/marketing_campaign/marketing_campaign.py:154
+#, python-format
+msgid "Error"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.activity:0
+#: field:marketing.campaign.activity,server_action_id:0
+msgid "Action"
+msgstr ""
+
+#. module: marketing_campaign
+#: code:addons/marketing_campaign/marketing_campaign.py:488
+#, python-format
+msgid "Automatic transition"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.segment:0
+#: view:res.partner:0
+msgid "History"
+msgstr ""
+
+#. module: marketing_campaign
+#: model:ir.module.module,shortdesc:marketing_campaign.module_meta_information
+msgid "marketing_campaign"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.workitem:0
+msgid "Process"
+msgstr ""
+
+#. module: marketing_campaign
+#: code:addons/marketing_campaign/marketing_campaign.py:490
+#: selection:marketing.campaign.transition,trigger:0
+#, python-format
+msgid "Cosmetic"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign.transition,trigger:0
+msgid "How is the destination workitem triggered"
+msgstr ""
+
+#. module: marketing_campaign
+#: model:ir.actions.act_window,help:marketing_campaign.action_marketing_campaign_form
+msgid ""
+"A marketing campaign is an event or activity that will help you manage and "
+"reach your partners with specific messages. A campaign can have many "
+"activities that will be triggered from a specific situation. One action "
+"could be sending an email template that has previously been created in the "
+"system."
+msgstr ""
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+#: selection:campaign.analysis,state:0
+#: selection:marketing.campaign,state:0
+#: selection:marketing.campaign.segment,state:0
+#: selection:marketing.campaign.workitem,state:0
+msgid "Done"
+msgstr ""
+
+#. module: marketing_campaign
+#: code:addons/marketing_campaign/marketing_campaign.py:209
+#, python-format
+msgid "Operation not supported"
+msgstr ""
+
+#. module: marketing_campaign
+#: model:ir.model,name:marketing_campaign.model_email_template
+msgid "Email Templates for Models"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign:0
+#: view:marketing.campaign.segment:0
+msgid "Close"
+msgstr ""
+
+#. module: marketing_campaign
+#: constraint:marketing.campaign.segment:0
+msgid "Model of filter must be same as resource model of Campaign "
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.segment:0
+msgid "Synchronize Manually"
+msgstr ""
+
+#. module: marketing_campaign
+#: code:addons/marketing_campaign/marketing_campaign.py:154
+#, python-format
+msgid "The campaign cannot be marked as done before all segments are done"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.workitem:0
+#: field:marketing.campaign.workitem,res_id:0
+msgid "Resource ID"
+msgstr ""
+
+#. module: marketing_campaign
+#: model:ir.model,name:marketing_campaign.model_marketing_campaign_transition
+msgid "Campaign Transition"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+#: selection:campaign.analysis,state:0
+#: view:marketing.campaign.workitem:0
+#: selection:marketing.campaign.workitem,state:0
+msgid "To Do"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.workitem:0
+msgid "Campaign Step"
+msgstr ""
+
+#. module: marketing_campaign
+#: model:ir.actions.act_window,name:marketing_campaign.action_marketing_campaign_segment_form
+#: model:ir.ui.menu,name:marketing_campaign.menu_marketing_campaign_segment_form
+#: view:marketing.campaign.segment:0
+msgid "Segments"
+msgstr ""
+
+#. module: marketing_campaign
+#: model:ir.actions.act_window,name:marketing_campaign.act_marketing_campaing_segment_opened
+msgid "All Segments"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.activity:0
+msgid "Incoming Transitions"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:marketing.campaign.activity,type:0
+msgid "E-mail"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:marketing.campaign.transition,interval_type:0
+msgid "Day(s)"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign,activity_ids:0
+#: view:marketing.campaign.activity:0
+msgid "Activities"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:campaign.analysis,month:0
+msgid "May"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign:0
+#: selection:marketing.campaign,state:0
+#: view:marketing.campaign.segment:0
+#: selection:marketing.campaign.segment,state:0
+msgid "Running"
+msgstr ""
+
+#. module: marketing_campaign
+#: code:addons/marketing_campaign/marketing_campaign.py:489
+#, python-format
+msgid "After %(interval_nbr)d %(interval_type)s"
+msgstr ""
+
+#. module: marketing_campaign
+#: model:ir.model,name:marketing_campaign.model_marketing_campaign
+msgid "Marketing Campaign"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.segment,date_done:0
+msgid "End Date"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:campaign.analysis,month:0
+msgid "February"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+#: field:campaign.analysis,res_id:0
+#: view:marketing.campaign:0
+#: field:marketing.campaign,object_id:0
+#: field:marketing.campaign.segment,object_id:0
+#: view:marketing.campaign.workitem:0
+#: field:marketing.campaign.workitem,object_id:0
+msgid "Resource"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign,fixed_cost:0
+msgid ""
+"Fixed cost for running this campaign. You may also specify variable cost and "
+"revenue on each campaign activity. Cost and Revenue statistics are included "
+"in Campaign Reporting."
+msgstr ""
+
+#. module: marketing_campaign
+#: code:addons/marketing_campaign/marketing_campaign.py:746
+#, python-format
+msgid "Email Preview"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.activity,signal:0
+msgid "Signal"
+msgstr ""
+
+#. module: marketing_campaign
+#: code:addons/marketing_campaign/marketing_campaign.py:125
+#, python-format
+msgid "The campaign cannot be started: there are no activities in it"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign.workitem,date:0
+msgid "If date is not set, this workitem has to be run manually"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:campaign.analysis,month:0
+msgid "April"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign:0
+#: field:marketing.campaign,mode:0
+msgid "Mode"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+#: field:campaign.analysis,activity_id:0
+#: view:marketing.campaign.activity:0
+#: view:marketing.campaign.workitem:0
+#: field:marketing.campaign.workitem,activity_id:0
+msgid "Activity"
+msgstr ""
+
+#. module: marketing_campaign
+#: help:marketing.campaign.segment,ir_filter_id:0
+msgid ""
+"Filter to select the matching resource records that belong to this segment. "
+"New filters can be created and saved using the advanced search on the list "
+"view of the Resource. If no filter is set, all records are selected without "
+"filtering. The synchronization mode may also add a criterion to the filter."
+msgstr ""
+
+#. module: marketing_campaign
+#: model:ir.actions.act_window,name:marketing_campaign.action_marketing_campaign_workitem
+#: model:ir.ui.menu,name:marketing_campaign.menu_action_marketing_campaign_workitem
+msgid "Campaign Followup"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.segment,date_next_sync:0
+msgid "Next Synchronization"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.segment:0
+#: field:marketing.campaign.segment,ir_filter_id:0
+msgid "Filter"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:marketing.campaign.segment:0
+msgid "All"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:marketing.campaign.segment,sync_mode:0
+msgid "Only records created after last sync"
+msgstr ""
+
+#. module: marketing_campaign
+#: field:marketing.campaign.activity,variable_cost:0
+msgid "Variable Cost"
+msgstr ""
+
+#. module: marketing_campaign
+#: selection:marketing.campaign,mode:0
+msgid "With Manual Confirmation"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+#: field:campaign.analysis,total_cost:0
+#: view:marketing.campaign:0
+msgid "Cost"
+msgstr ""
+
+#. module: marketing_campaign
+#: view:campaign.analysis:0
+#: field:campaign.analysis,year:0
+msgid "Year"
+msgstr ""
diff --git a/addons/marketing_campaign/marketing_campaign.py b/addons/marketing_campaign/marketing_campaign.py
index 15c86f5298e..ae1ab2309e2 100644
--- a/addons/marketing_campaign/marketing_campaign.py
+++ b/addons/marketing_campaign/marketing_campaign.py
@@ -281,7 +281,7 @@ class marketing_campaign_segment(osv.osv):
'State',),
'date_run': fields.datetime('Launch Date', help="Initial start date of this segment."),
'date_done': fields.datetime('End Date', help="Date this segment was last closed or cancelled."),
- 'date_next_sync': fields.function(_get_next_sync, method=True, string='Next Synchronization', type='datetime', help="Next time the synchronization job is scheduled to run automatically"),
+ 'date_next_sync': fields.function(_get_next_sync, string='Next Synchronization', type='datetime', help="Next time the synchronization job is scheduled to run automatically"),
}
_defaults = {
@@ -548,7 +548,7 @@ class marketing_campaign_transition(osv.osv):
_columns = {
- 'name': fields.function(_get_name, method=True, string='Name',
+ 'name': fields.function(_get_name, string='Name',
type='char', size=128),
'activity_from_id': fields.many2one('marketing.campaign.activity',
'Previous Activity', select=1,
@@ -649,7 +649,7 @@ class marketing_campaign_workitem(osv.osv):
'object_id': fields.related('activity_id', 'campaign_id', 'object_id',
type='many2one', relation='ir.model', string='Resource', select=1, readonly=True, store=True),
'res_id': fields.integer('Resource ID', select=1, readonly=True),
- 'res_name': fields.function(_res_name_get, method=True, string='Resource Name', fnct_search=_resource_search, type="char", size=64),
+ 'res_name': fields.function(_res_name_get, string='Resource Name', fnct_search=_resource_search, type="char", size=64),
'date': fields.datetime('Execution Date', help='If date is not set, this workitem has to be run manually', readonly=True),
'partner_id': fields.many2one('res.partner', 'Partner', select=1, readonly=True),
'state': fields.selection([('todo', 'To Do'),
diff --git a/addons/marketing_campaign/report/campaign_analysis.py b/addons/marketing_campaign/report/campaign_analysis.py
index 0b245aee785..af04a7e6dff 100644
--- a/addons/marketing_campaign/report/campaign_analysis.py
+++ b/addons/marketing_campaign/report/campaign_analysis.py
@@ -62,7 +62,7 @@ class campaign_analysis(osv.osv):
'partner_id': fields.many2one('res.partner', 'Partner', readonly=True),
'country_id': fields.related('partner_id','address', 'country_id',
type='many2one', relation='res.country',string='Country'),
- 'total_cost' : fields.function(_total_cost, string='Cost', method=True,
+ 'total_cost' : fields.function(_total_cost, string='Cost',
type="float", digits_compute=dp.get_precision('Purchase Price')),
'revenue': fields.float('Revenue', readonly=True, digits_compute=dp.get_precision('Sale Price')),
'count' : fields.integer('# of Actions', readonly=True),
diff --git a/addons/membership/membership.py b/addons/membership/membership.py
index 48fd8dc2d41..6384a255ac3 100644
--- a/addons/membership/membership.py
+++ b/addons/membership/membership.py
@@ -149,7 +149,7 @@ class membership_line(osv.osv):
'member_price': fields.float('Member Price', digits_compute= dp.get_precision('Sale Price'), required=True, help='Amount for the membership'),
'account_invoice_line': fields.many2one('account.invoice.line', 'Account Invoice line', readonly=True),
'account_invoice_id': fields.related('account_invoice_line', 'invoice_id', type='many2one', relation='account.invoice', string='Invoice', readonly=True),
- 'state': fields.function(_state, method=True,
+ 'state': fields.function(_state,
string='Membership State', type='selection',
selection=STATE, store = {
'account.invoice': (_get_membership_lines, ['state'], 10),
@@ -322,7 +322,7 @@ class Partner(osv.osv):
'Membership amount', digits=(16, 2),
help = 'The price negotiated by the partner'),
'membership_state': fields.function(
- __get_membership_state, method=True,
+ __get_membership_state,
string = 'Current Membership State', type = 'selection',
selection = STATE,
store = {
@@ -337,7 +337,7 @@ class Partner(osv.osv):
-Invoiced Member: A member whose invoice has been created.
-Paid Member: A member who has paid the membership amount."""),
'membership_start': fields.function(
- _membership_date, method=True, multi = 'membeship_start',
+ _membership_date, multi = 'membeship_start',
string = 'Start membership date', type = 'date',
store = {
'account.invoice': (_get_invoice_partner, ['state'], 10),
@@ -345,7 +345,7 @@ class Partner(osv.osv):
'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['free_member'], 10)
}, help="Date from which membership becomes active."),
'membership_stop': fields.function(
- _membership_date, method=True,
+ _membership_date,
string = 'Stop membership date', type='date', multi='membership_stop',
store = {
'account.invoice': (_get_invoice_partner, ['state'], 10),
@@ -353,7 +353,7 @@ class Partner(osv.osv):
'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['free_member'], 10)
}, help="Date until which membership remains active."),
'membership_cancel': fields.function(
- _membership_date, method=True,
+ _membership_date,
string = 'Cancel membership date', type='date', multi='membership_cancel',
store = {
'account.invoice': (_get_invoice_partner, ['state'], 11),
diff --git a/addons/mrp/i18n/zh_CN.po b/addons/mrp/i18n/zh_CN.po
index c9b0a72865f..0a8750fa20b 100644
--- a/addons/mrp/i18n/zh_CN.po
+++ b/addons/mrp/i18n/zh_CN.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-28 05:53+0000\n"
+"PO-Revision-Date: 2011-07-02 15:27+0000\n"
"Last-Translator: Wei \"oldrev\" Li \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-04-29 04:51+0000\n"
-"X-Generator: Launchpad (build 12758)\n"
+"X-Launchpad-Export-Date: 2011-07-03 04:45+0000\n"
+"X-Generator: Launchpad (build 13168)\n"
#. module: mrp
#: field:mrp.production,move_created_ids:0
@@ -35,7 +35,7 @@ msgstr ""
#. module: mrp
#: help:mrp.production,location_src_id:0
msgid "Location where the system will look for components."
-msgstr ""
+msgstr "系统用于查找部件的位置。"
#. module: mrp
#: field:mrp.production,workcenter_lines:0
@@ -107,7 +107,7 @@ msgstr "工艺路线"
#. module: mrp
#: field:mrp.workcenter,product_id:0
msgid "Work Center Product"
-msgstr ""
+msgstr "工作中心产品"
#. module: mrp
#: view:mrp.bom:0
@@ -165,7 +165,7 @@ msgstr ""
#. module: mrp
#: model:process.transition,note:mrp.process_transition_purchaseprocure0
msgid "The system launches automatically a RFQ to the preferred supplier."
-msgstr ""
+msgstr "系统将自动向首选供应商发起询价单。"
#. module: mrp
#: view:mrp.production:0
@@ -227,7 +227,7 @@ msgstr ""
#. module: mrp
#: model:process.node,note:mrp.process_node_purchaseprocure0
msgid "For purchased material"
-msgstr ""
+msgstr "用于采购原料"
#. module: mrp
#: field:mrp.bom.revision,indice:0
@@ -273,7 +273,7 @@ msgstr "目标库位"
#. module: mrp
#: view:mrp.installer:0
msgid "title"
-msgstr ""
+msgstr "标题"
#. module: mrp
#: model:ir.ui.menu,name:mrp.menu_mrp_bom
@@ -320,7 +320,7 @@ msgstr "八月"
#. module: mrp
#: constraint:stock.move:0
msgid "You try to assign a lot which is not from the same product"
-msgstr ""
+msgstr "您尝试为另外的产品赋予批次"
#. module: mrp
#: model:ir.model,name:mrp.model_mrp_production_order
@@ -335,7 +335,7 @@ msgstr "六月"
#. module: mrp
#: model:ir.model,name:mrp.model_mrp_product_produce
msgid "Product Produce"
-msgstr ""
+msgstr "产品生产"
#. module: mrp
#: selection:mrp.production.order,month:0
@@ -370,7 +370,7 @@ msgstr "数量"
#. module: mrp
#: field:mrp.production.workcenter.line,hour:0
msgid "Nbr of hours"
-msgstr ""
+msgstr "小时数"
#. module: mrp
#: view:mrp.production:0
@@ -399,7 +399,7 @@ msgstr "维修"
#. module: mrp
#: field:mrp.installer,stock_location:0
msgid "Advanced Routes"
-msgstr ""
+msgstr "高级路线"
#. module: mrp
#: model:ir.ui.menu,name:mrp.menu_view_resource_calendar_search_mrp
@@ -468,7 +468,7 @@ msgstr ""
#. module: mrp
#: model:process.node,note:mrp.process_node_serviceproduct1
msgid "For Services."
-msgstr ""
+msgstr "用于服务。"
#. module: mrp
#: field:mrp.bom.revision,date:0
@@ -486,13 +486,13 @@ msgstr "如果你需要生产单的自动辅助核算项目凭证只有完成这
#. module: mrp
#: field:mrp.production.workcenter.line,cycle:0
msgid "Nbr of cycles"
-msgstr ""
+msgstr "周期数"
#. module: mrp
#: model:process.node,note:mrp.process_node_orderrfq0
#: model:process.node,note:mrp.process_node_rfq0
msgid "Request for Quotation."
-msgstr ""
+msgstr "询价单"
#. module: mrp
#: model:process.transition,note:mrp.process_transition_billofmaterialrouting0
@@ -540,7 +540,7 @@ msgstr "物料清单结构"
#. module: mrp
#: view:mrp.production:0
msgid "Search Production"
-msgstr ""
+msgstr "搜索产品"
#. module: mrp
#: code:addons/mrp/report/price.py:130
@@ -575,7 +575,7 @@ msgstr ""
#: view:mrp.production.order:0
#: selection:mrp.production.order,state:0
msgid "Picking Exception"
-msgstr ""
+msgstr "领料异常"
#. module: mrp
#: field:mrp.bom,bom_lines:0
@@ -617,7 +617,7 @@ msgstr "错误!你不能创建递归的物料清单"
#: model:ir.model,name:mrp.model_mrp_workcenter_load
#: model:ir.model,name:mrp.model_report_workcenter_load
msgid "Work Center Load"
-msgstr ""
+msgstr "工作中心负载"
#. module: mrp
#: code:addons/mrp/procurement.py:45
@@ -663,7 +663,7 @@ msgstr "一个周期的工作小时数"
#. module: mrp
#: report:bom.structure:0
msgid "BOM Ref"
-msgstr ""
+msgstr "物料表编号"
#. module: mrp
#: view:mrp.production:0
@@ -676,7 +676,7 @@ msgstr "生产中"
#. module: mrp
#: model:ir.ui.menu,name:mrp.menu_mrp_property
msgid "Master Bill of Materials"
-msgstr ""
+msgstr "主物料表"
#. module: mrp
#: help:mrp.bom,product_uos:0
@@ -702,12 +702,12 @@ msgstr "类型"
#: code:addons/mrp/report/price.py:201
#, python-format
msgid "Total Cost of "
-msgstr ""
+msgstr "总成本 "
#. module: mrp
#: model:process.node,note:mrp.process_node_minimumstockrule0
msgid "Linked to the 'Minimum stock rule' supplying method."
-msgstr ""
+msgstr "链接到“最小库存规则”供货方式"
#. module: mrp
#: selection:mrp.workcenter.load,time_unit:0
@@ -715,7 +715,7 @@ msgid "Per month"
msgstr "每月"
#. module: mrp
-#: code:addons/mrp/mrp.py:591
+#: code:addons/mrp/mrp.py:595
#: code:addons/mrp/wizard/change_production_qty.py:77
#: code:addons/mrp/wizard/change_production_qty.py:82
#, python-format
@@ -728,7 +728,7 @@ msgid "Product Name"
msgstr "产品名称"
#. module: mrp
-#: code:addons/mrp/mrp.py:491
+#: code:addons/mrp/mrp.py:495
#, python-format
msgid "Invalid action !"
msgstr "无效动作"
@@ -798,7 +798,7 @@ msgstr "紧急"
#. module: mrp
#: model:ir.model,name:mrp.model_mrp_routing_workcenter
msgid "Work Center Usage"
-msgstr ""
+msgstr "工作中心使用情况"
#. module: mrp
#: model:ir.model,name:mrp.model_mrp_production
@@ -879,7 +879,7 @@ msgstr "公司"
#: model:process.node,name:mrp.process_node_minimumstockrule0
#: model:process.node,name:mrp.process_node_productminimumstockrule0
msgid "Minimum Stock"
-msgstr ""
+msgstr "最小库存"
#. module: mrp
#: model:ir.ui.menu,name:mrp.menus_dash_mrp
@@ -889,7 +889,7 @@ msgstr "仪表盘"
#. module: mrp
#: view:board.board:0
msgid "Work Center Future Load"
-msgstr ""
+msgstr "工作中心未来负载"
#. module: mrp
#: model:process.node,name:mrp.process_node_stockproduct0
@@ -902,7 +902,7 @@ msgstr "可库存产品"
#: code:addons/mrp/report/price.py:121
#, python-format
msgid "Work Center name"
-msgstr ""
+msgstr "工作中心名称"
#. module: mrp
#: field:mrp.routing,code:0
@@ -917,7 +917,7 @@ msgstr "小时编号"
#. module: mrp
#: field:mrp.installer,mrp_jit:0
msgid "Just In Time Scheduling"
-msgstr ""
+msgstr "及时生产计划"
#. module: mrp
#: view:mrp.property:0
@@ -1000,7 +1000,7 @@ msgstr ""
#. module: mrp
#: report:bom.structure:0
msgid "BOM Name"
-msgstr ""
+msgstr "物料表名称"
#. module: mrp
#: view:mrp.production:0
@@ -1011,17 +1011,17 @@ msgstr "启动生产"
#: model:ir.actions.act_window,name:mrp.open_board_manufacturing
#: model:ir.ui.menu,name:mrp.menu_board_manufacturing
msgid "Production Dashboard"
-msgstr ""
+msgstr "生产仪表盘"
#. module: mrp
#: view:mrp.production:0
msgid "Source Loc."
-msgstr ""
+msgstr "来源位置"
#. module: mrp
#: field:mrp.bom,position:0
msgid "Internal Reference"
-msgstr ""
+msgstr "内部单号"
#. module: mrp
#: help:mrp.installer,stock_location:0
@@ -1033,7 +1033,7 @@ msgstr ""
#. module: mrp
#: model:process.node,note:mrp.process_node_billofmaterial0
msgid "Product's structure"
-msgstr ""
+msgstr "产品结构"
#. module: mrp
#: field:mrp.bom,name:0
@@ -1294,7 +1294,7 @@ msgid "Month -1"
msgstr ""
#. module: mrp
-#: code:addons/mrp/mrp.py:914
+#: code:addons/mrp/mrp.py:924
#, python-format
msgid "Manufacturing order '%s' is scheduled for the %s."
msgstr ""
@@ -1305,7 +1305,7 @@ msgid "Production Order N° :"
msgstr "生产单号:"
#. module: mrp
-#: code:addons/mrp/mrp.py:630
+#: code:addons/mrp/mrp.py:640
#, python-format
msgid "Manufacturing order '%s' is ready to produce."
msgstr ""
@@ -1534,7 +1534,7 @@ msgid "Manufacturing Orders To Start"
msgstr ""
#. module: mrp
-#: code:addons/mrp/mrp.py:491
+#: code:addons/mrp/mrp.py:495
#, python-format
msgid "Cannot delete Production Order(s) which are in %s State!"
msgstr ""
@@ -1624,7 +1624,7 @@ msgid "Production Analysis"
msgstr ""
#. module: mrp
-#: code:addons/mrp/mrp.py:345
+#: code:addons/mrp/mrp.py:349
#, python-format
msgid "Copy"
msgstr ""
@@ -2113,7 +2113,7 @@ msgid "Product type is Stockable or Consumable."
msgstr ""
#. module: mrp
-#: code:addons/mrp/mrp.py:591
+#: code:addons/mrp/mrp.py:595
#: code:addons/mrp/wizard/change_production_qty.py:77
#: code:addons/mrp/wizard/change_production_qty.py:82
#, python-format
diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py
index 5603327290d..ec429488914 100644
--- a/addons/mrp/mrp.py
+++ b/addons/mrp/mrp.py
@@ -197,7 +197,7 @@ class mrp_bom(osv.osv):
help= "If a sub-product is used in several products, it can be useful to create its own BoM. "\
"Though if you don't want separated production orders for this sub-product, select Set/Phantom as BoM type. "\
"If a Phantom BoM is used for a root product, it will be sold and shipped as a set of components, instead of being produced."),
- 'method': fields.function(_compute_type, string='Method', method=True, type='selection', selection=[('',''),('stock','On Stock'),('order','On Order'),('set','Set / Pack')]),
+ 'method': fields.function(_compute_type, string='Method', type='selection', selection=[('',''),('stock','On Stock'),('order','On Order'),('set','Set / Pack')]),
'date_start': fields.date('Valid From', help="Validity of this BoM or component. Keep empty if it's always valid."),
'date_stop': fields.date('Valid Until', help="Validity of this BoM or component. Keep empty if it's always valid."),
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of bills of material."),
@@ -214,7 +214,7 @@ class mrp_bom(osv.osv):
'routing_id': fields.many2one('mrp.routing', 'Routing', help="The list of operations (list of work centers) to produce the finished product. The routing is mainly used to compute work center costs during operations and to plan future loads on work centers based on production planning."),
'property_ids': fields.many2many('mrp.property', 'mrp_bom_property_rel', 'bom_id','property_id', 'Properties'),
'revision_ids': fields.one2many('mrp.bom.revision', 'bom_id', 'BoM Revisions'),
- 'child_complete_ids': fields.function(_child_compute, relation='mrp.bom', method=True, string="BoM Hierarchy", type='many2many'),
+ 'child_complete_ids': fields.function(_child_compute, relation='mrp.bom', string="BoM Hierarchy", type='many2many'),
'company_id': fields.many2one('res.company','Company',required=True),
}
_defaults = {
@@ -457,8 +457,8 @@ class mrp_production(osv.osv):
'location_dest_id': fields.many2one('stock.location', 'Finished Products Location', required=True,
readonly=True, states={'draft':[('readonly',False)]}, help="Location where the system will stock the finished products."),
- 'date_planned_end': fields.function(_production_date_end, method=True, type='date', string='Scheduled End Date'),
- 'date_planned_date': fields.function(_production_date, method=True, type='date', string='Scheduled Date'),
+ 'date_planned_end': fields.function(_production_date_end, type='date', string='Scheduled End Date'),
+ 'date_planned_date': fields.function(_production_date, type='date', string='Scheduled Date'),
'date_planned': fields.datetime('Scheduled date', required=True, select=1),
'date_start': fields.datetime('Start Date', select=True),
'date_finished': fields.datetime('End Date', select=True),
@@ -478,8 +478,8 @@ class mrp_production(osv.osv):
'state': fields.selection([('draft','Draft'),('picking_except', 'Picking Exception'),('confirmed','Waiting Goods'),('ready','Ready to Produce'),('in_production','In Production'),('cancel','Cancelled'),('done','Done')],'State', readonly=True,
help='When the production order is created the state is set to \'Draft\'.\n If the order is confirmed the state is set to \'Waiting Goods\'.\n If any exceptions are there, the state is set to \'Picking Exception\'.\
\nIf the stock is available then the state is set to \'Ready to Produce\'.\n When the production gets started then the state is set to \'In Production\'.\n When the production is over, the state is set to \'Done\'.'),
- 'hour_total': fields.function(_production_calc, method=True, type='float', string='Total Hours', multi='workorder', store=True),
- 'cycle_total': fields.function(_production_calc, method=True, type='float', string='Total Cycles', multi='workorder', store=True),
+ 'hour_total': fields.function(_production_calc, type='float', string='Total Hours', multi='workorder', store=True),
+ 'cycle_total': fields.function(_production_calc, type='float', string='Total Cycles', multi='workorder', store=True),
'company_id': fields.many2one('res.company','Company',required=True),
}
_defaults = {
diff --git a/addons/mrp_operations/mrp_operations.py b/addons/mrp_operations/mrp_operations.py
index 589d3c27031..fe926d30ac1 100644
--- a/addons/mrp_operations/mrp_operations.py
+++ b/addons/mrp_operations/mrp_operations.py
@@ -92,9 +92,9 @@ class mrp_production_workcenter_line(osv.osv):
"* When work order is in running mode, during that time if user wants to stop or to make changes in order then can set in 'Pause' state.\n" \
"* When the user cancels the work order it will be set in 'Canceled' state.\n" \
"* When order is completely processed that time it is set in 'Finished' state."),
- 'date_start_date': fields.function(_get_date_date, method=True, string='Start Date', type='date'),
+ 'date_start_date': fields.function(_get_date_date, string='Start Date', type='date'),
'date_planned': fields.datetime('Scheduled Date'),
- 'date_planned_end': fields.function(_get_date_end, method=True, string='End Date', type='datetime'),
+ 'date_planned_end': fields.function(_get_date_end, string='End Date', type='datetime'),
'date_start': fields.datetime('Start Date'),
'date_finished': fields.datetime('End Date'),
'delay': fields.float('Working Hours',help="This is lead time between operation start and stop in this Work Center",readonly=True),
@@ -554,7 +554,7 @@ class mrp_operations_operation(osv.osv):
'code_id':fields.many2one('mrp_operations.operation.code','Code',required=True),
'date_start': fields.datetime('Start Date'),
'date_finished': fields.datetime('End Date'),
- 'order_date': fields.function(_get_order_date,method=True,string='Order Date',type='date',store={'mrp.production':(_order_date_search_production,['date_planned'], 10)}),
+ 'order_date': fields.function(_get_order_date,string='Order Date',type='date',store={'mrp.production':(_order_date_search_production,['date_planned'], 10)}),
}
_defaults={
'date_start': lambda *a:datetime.now().strftime('%Y-%m-%d %H:%M:%S')
diff --git a/addons/mrp_repair/mrp_repair.py b/addons/mrp_repair/mrp_repair.py
index e95e3fb6058..caacb2e3247 100644
--- a/addons/mrp_repair/mrp_repair.py
+++ b/addons/mrp_repair/mrp_repair.py
@@ -117,7 +117,7 @@ class mrp_repair(osv.osv):
'product_id': fields.many2one('product.product', string='Product to Repair', required=True, readonly=True, states={'draft':[('readonly',False)]}),
'partner_id' : fields.many2one('res.partner', 'Partner', select=True, help='This field allow you to choose the parner that will be invoiced and delivered'),
'address_id': fields.many2one('res.partner.address', 'Delivery Address', domain="[('partner_id','=',partner_id)]"),
- 'default_address_id': fields.function(_get_default_address, method=True, type="many2one", relation="res.partner.address"),
+ 'default_address_id': fields.function(_get_default_address, type="many2one", relation="res.partner.address"),
'prodlot_id': fields.many2one('stock.production.lot', 'Lot Number', select=True, domain="[('product_id','=',product_id)]"),
'state': fields.selection([
('draft','Quotation'),
@@ -156,17 +156,17 @@ class mrp_repair(osv.osv):
'deliver_bool': fields.boolean('Deliver', help="Check this box if you want to manage the delivery once the product is repaired. If cheked, it will create a picking with selected product. Note that you can select the locations in the Info tab, if you have the extended view."),
'invoiced': fields.boolean('Invoiced', readonly=True),
'repaired': fields.boolean('Repaired', readonly=True),
- 'amount_untaxed': fields.function(_amount_untaxed, method=True, string='Untaxed Amount',
+ 'amount_untaxed': fields.function(_amount_untaxed, string='Untaxed Amount',
store={
'mrp.repair': (lambda self, cr, uid, ids, c={}: ids, ['operations'], 10),
'mrp.repair.line': (_get_lines, ['price_unit', 'price_subtotal', 'product_id', 'tax_id', 'product_uom_qty', 'product_uom'], 10),
}),
- 'amount_tax': fields.function(_amount_tax, method=True, string='Taxes',
+ 'amount_tax': fields.function(_amount_tax, string='Taxes',
store={
'mrp.repair': (lambda self, cr, uid, ids, c={}: ids, ['operations'], 10),
'mrp.repair.line': (_get_lines, ['price_unit', 'price_subtotal', 'product_id', 'tax_id', 'product_uom_qty', 'product_uom'], 10),
}),
- 'amount_total': fields.function(_amount_total, method=True, string='Total',
+ 'amount_total': fields.function(_amount_total, string='Total',
store={
'mrp.repair': (lambda self, cr, uid, ids, c={}: ids, ['operations'], 10),
'mrp.repair.line': (_get_lines, ['price_unit', 'price_subtotal', 'product_id', 'tax_id', 'product_uom_qty', 'product_uom'], 10),
@@ -661,7 +661,7 @@ class mrp_repair_line(osv.osv, ProductChangeMixin):
'product_id': fields.many2one('product.product', 'Product', domain=[('sale_ok','=',True)], required=True),
'invoiced': fields.boolean('Invoiced',readonly=True),
'price_unit': fields.float('Unit Price', required=True, digits_compute= dp.get_precision('Sale Price')),
- 'price_subtotal': fields.function(_amount_line, method=True, string='Subtotal',digits_compute= dp.get_precision('Sale Price')),
+ 'price_subtotal': fields.function(_amount_line, string='Subtotal',digits_compute= dp.get_precision('Sale Price')),
'tax_id': fields.many2many('account.tax', 'repair_operation_line_tax', 'repair_operation_line_id', 'tax_id', 'Taxes'),
'product_uom_qty': fields.float('Quantity (UoM)', digits=(16,2), required=True),
'product_uom': fields.many2one('product.uom', 'Product UoM', required=True),
@@ -750,7 +750,7 @@ class mrp_repair_fee(osv.osv, ProductChangeMixin):
'product_uom_qty': fields.float('Quantity', digits=(16,2), required=True),
'price_unit': fields.float('Unit Price', required=True),
'product_uom': fields.many2one('product.uom', 'Product UoM', required=True),
- 'price_subtotal': fields.function(_amount_line, method=True, string='Subtotal',digits_compute= dp.get_precision('Sale Price')),
+ 'price_subtotal': fields.function(_amount_line, string='Subtotal',digits_compute= dp.get_precision('Sale Price')),
'tax_id': fields.many2many('account.tax', 'repair_fee_line_tax', 'repair_fee_line_id', 'tax_id', 'Taxes'),
'invoice_line_id': fields.many2one('account.invoice.line', 'Invoice Line', readonly=True),
'to_invoice': fields.boolean('To Invoice'),
diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py
index 4eeb7b2dd9f..90bfa975a76 100644
--- a/addons/point_of_sale/point_of_sale.py
+++ b/addons/point_of_sale/point_of_sale.py
@@ -250,20 +250,19 @@ class pos_order(osv.osv):
states={'draft': [('readonly', False)]}, readonly=True),
'date_order': fields.datetime('Date Ordered', readonly=True, select=True),
'date_validation': fields.function(_get_date_payment,
- method=True,
string='Validation Date',
type='date', select=True, store=True),
- 'date_payment': fields.function(_get_date_payment2, method=True,
+ 'date_payment': fields.function(_get_date_payment2,
string='Payment Date',
type='date', select=True, store=True),
'date_validity': fields.date('Validity Date', required=True),
'user_id': fields.many2one('res.users', 'Connected Salesman', help="Person who uses the the cash register. It could be a reliever, a student or an interim employee."),
'user_salesman_id': fields.many2one('res.users', 'Cashier', required=True, help="User who is logged into the system."),
'sale_manager': fields.many2one('res.users', 'Salesman Manager'),
- 'amount_tax': fields.function(_amount_all, method=True, string='Taxes', digits_compute=dp.get_precision('Point Of Sale'), multi='all'),
- 'amount_total': fields.function(_amount_all, method=True, string='Total', multi='all'),
- 'amount_paid': fields.function(_amount_all, string='Paid', states={'draft': [('readonly', False)]}, readonly=True, method=True, digits_compute=dp.get_precision('Point Of Sale'), multi='all'),
- 'amount_return': fields.function(_amount_all, 'Returned', method=True, digits_compute=dp.get_precision('Point Of Sale'), multi='all'),
+ 'amount_tax': fields.function(_amount_all, string='Taxes', digits_compute=dp.get_precision('Point Of Sale'), multi='all'),
+ 'amount_total': fields.function(_amount_all, string='Total', multi='all'),
+ 'amount_paid': fields.function(_amount_all, string='Paid', states={'draft': [('readonly', False)]}, readonly=True, digits_compute=dp.get_precision('Point Of Sale'), multi='all'),
+ 'amount_return': fields.function(_amount_all, 'Returned', digits_compute=dp.get_precision('Point Of Sale'), multi='all'),
'lines': fields.one2many('pos.order.line', 'order_id', 'Order Lines', states={'draft': [('readonly', False)]}, readonly=True),
'price_type': fields.selection([
('tax_excluded','Tax excluded')],
@@ -955,7 +954,7 @@ class account_bank_statement_line(osv.osv):
res[line.id] = line.statement_id and line.statement_id.journal_id and line.statement_id.journal_id.name or None
return res
_columns= {
- 'journal_id': fields.function(_get_statement_journal, method=True,store=True, string='Journal', type='char', size=64),
+ 'journal_id': fields.function(_get_statement_journal,store=True, string='Journal', type='char', size=64),
'am_out': fields.boolean("To count"),
'is_acc': fields.boolean("Is accompte"),
'pos_statement_id': fields.many2one('pos.order', ondelete='cascade'),
@@ -1141,12 +1140,12 @@ class pos_order_line(osv.osv):
'notice': fields.char('Discount Notice', size=128, required=True),
'serial_number': fields.char('Serial Number', size=128),
'product_id': fields.many2one('product.product', 'Product', domain=[('sale_ok', '=', True)], required=True, change_default=True),
- 'price_unit': fields.function(_get_amount, method=True, string='Unit Price', store=True),
+ 'price_unit': fields.function(_get_amount, string='Unit Price', store=True),
'price_ded': fields.float('Discount(Amount)', digits_compute=dp.get_precision('Point Of Sale')),
'qty': fields.float('Quantity'),
'qty_rfd': fields.float('Refunded Quantity'),
- 'price_subtotal': fields.function(_amount_line_all, method=True, multi='pos_order_line_amount', string='Subtotal w/o Tax'),
- 'price_subtotal_incl': fields.function(_amount_line_all, method=True, multi='pos_order_line_amount', string='Subtotal'),
+ 'price_subtotal': fields.function(_amount_line_all, multi='pos_order_line_amount', string='Subtotal w/o Tax'),
+ 'price_subtotal_incl': fields.function(_amount_line_all, multi='pos_order_line_amount', string='Subtotal'),
'discount': fields.float('Discount (%)', digits=(16, 2)),
'order_id': fields.many2one('pos.order', 'Order Ref', ondelete='cascade'),
'create_date': fields.datetime('Creation Date', readonly=True),
diff --git a/addons/portal/__init__.py b/addons/portal/__init__.py
index 47a320e7234..89397d2eab5 100644
--- a/addons/portal/__init__.py
+++ b/addons/portal/__init__.py
@@ -21,4 +21,6 @@
import portal
import wizard
-import ir_ui_menu
\ No newline at end of file
+import res_user
+import ir_ui_menu
+
diff --git a/addons/portal/__openerp__.py b/addons/portal/__openerp__.py
index 365ce3f66d5..6bb69cd91c9 100644
--- a/addons/portal/__openerp__.py
+++ b/addons/portal/__openerp__.py
@@ -19,14 +19,13 @@
#
##############################################################################
-
{
- "name" : "Portal",
- "version" : "0.3",
- "depends" : ["base", "share"],
- "author" : "OpenERP SA",
- "category": 'Tools',
- "description": """
+ 'name' : "Portal",
+ 'version' : "1.0",
+ 'depends' : ["base", "share"],
+ 'author' : "OpenERP SA",
+ 'category': 'Tools',
+ 'description': """
This module defines 'portals' to customize the access to your OpenERP database
for external users.
@@ -37,12 +36,14 @@ users, etc). That feature is very handy when used in combination with the
module 'share'.
""",
'website': 'http://www.openerp.com',
- 'data': ['security/portal_security.xml',
- 'security/ir.model.access.csv',
- 'portal_view.xml',
- 'wizard_view.xml',
- 'wizard/share_wizard_view.xml',
- ],
+ 'data': [
+ 'security/portal_security.xml',
+ 'security/ir.model.access.csv',
+ 'portal_view.xml',
+ 'res_user_view.xml',
+ 'wizard/portal_wizard_view.xml',
+ 'wizard/share_wizard_view.xml',
+ ],
'installable': True,
'certificate' : '',
}
diff --git a/addons/portal/i18n/en_US.po b/addons/portal/i18n/en_US.po
new file mode 100644
index 00000000000..ffc18da1f14
--- /dev/null
+++ b/addons/portal/i18n/en_US.po
@@ -0,0 +1,393 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * portal
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 6.1-dev\n"
+"Report-Msgid-Bugs-To: support@openerp.com\n"
+"POT-Creation-Date: 2011-07-04 14:16+0000\n"
+"PO-Revision-Date: 2011-07-04 14:16+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: portal
+#: code:addons/portal/wizard/share_wizard.py:55
+#, python-format
+msgid "Please select at least one user to share with"
+msgstr ""
+
+#. module: portal
+#: code:addons/portal/wizard/share_wizard.py:59
+#, python-format
+msgid "Please select at least one group to share with"
+msgstr ""
+
+#. module: portal
+#: field:res.portal,group_id:0
+msgid "Group"
+msgstr ""
+
+#. module: portal
+#: help:res.portal,other_group_ids:0
+msgid "Those groups are assigned to the portal's users"
+msgstr ""
+
+#. module: portal
+#: view:share.wizard:0
+#: field:share.wizard,group_ids:0
+msgid "Existing groups"
+msgstr ""
+
+#. module: portal
+#: model:ir.model,name:portal.model_res_portal_wizard_user
+msgid "Portal User Config"
+msgstr ""
+
+#. module: portal
+#: view:res.portal.wizard.user:0
+msgid "Portal User"
+msgstr ""
+
+#. module: portal
+#: help:res.portal,override_menu:0
+msgid "Enable this option to override the Menu Action of portal users"
+msgstr ""
+
+#. module: portal
+#: field:res.portal.wizard.user,user_email:0
+msgid "E-mail"
+msgstr ""
+
+#. module: portal
+#: view:res.portal:0
+msgid "Other Groups assigned to Users"
+msgstr ""
+
+#. module: portal
+#: constraint:res.users:0
+msgid "The chosen company is not in the allowed companies for this user"
+msgstr ""
+
+#. module: portal
+#: view:res.portal:0
+#: field:res.portal,widget_ids:0
+msgid "Widgets"
+msgstr ""
+
+#. module: portal
+#: model:ir.module.module,description:portal.module_meta_information
+msgid "\n"
+"This module defines 'portals' to customize the access to your OpenERP database\n"
+"for external users.\n"
+"\n"
+"A portal defines customized user menu and access rights for a group of users\n"
+"(the ones associated to that portal). It also associates user groups to the\n"
+"portal users (adding a group in the portal automatically adds it to the portal\n"
+"users, etc). That feature is very handy when used in combination with the\n"
+"module 'share'.\n"
+" "
+msgstr ""
+
+#. module: portal
+#: view:share.wizard:0
+msgid "Who do you want to share with?"
+msgstr ""
+
+#. module: portal
+#: view:res.portal.wizard:0
+msgid "Send Invitations"
+msgstr ""
+
+#. module: portal
+#: help:res.portal,url:0
+msgid "The url where portal users can connect to the server"
+msgstr ""
+
+#. module: portal
+#: field:res.portal.widget,widget_id:0
+msgid "Widget"
+msgstr ""
+
+#. module: portal
+#: help:res.portal.wizard,message:0
+msgid "This text is included in the welcome email sent to the users"
+msgstr ""
+
+#. module: portal
+#: help:res.portal,menu_action_id:0
+msgid "If set, replaces the standard menu for the portal's users"
+msgstr ""
+
+#. module: portal
+#: field:res.portal,parent_menu_id:0
+msgid "Parent Menu"
+msgstr ""
+
+#. module: portal
+#: view:res.portal:0
+msgid "Portal Name"
+msgstr ""
+
+#. module: portal
+#: view:res.portal.wizard.user:0
+msgid "Portal Users"
+msgstr ""
+
+#. module: portal
+#: field:res.portal,override_menu:0
+msgid "Override Menu Action of Users"
+msgstr ""
+
+#. module: portal
+#: field:res.portal,menu_action_id:0
+msgid "Menu Action"
+msgstr ""
+
+#. module: portal
+#: field:res.portal.wizard.user,name:0
+msgid "User Name"
+msgstr ""
+
+#. module: portal
+#: model:ir.model,name:portal.model_res_portal_widget
+msgid "Portal Widgets"
+msgstr ""
+
+#. module: portal
+#: model:ir.model,name:portal.model_res_portal
+#: model:ir.module.module,shortdesc:portal.module_meta_information
+#: view:res.portal:0
+#: field:res.portal.widget,portal_id:0
+#: field:res.portal.wizard,portal_id:0
+msgid "Portal"
+msgstr ""
+
+#. module: portal
+#: code:addons/portal/wizard/portal_wizard.py:35
+#, python-format
+msgid "Your OpenERP account at %(company)s"
+msgstr ""
+
+#. module: portal
+#: code:addons/portal/portal.py:110
+#: code:addons/portal/portal.py:184
+#, python-format
+msgid "%s Menu"
+msgstr ""
+
+#. module: portal
+#: help:res.portal.wizard,portal_id:0
+msgid "The portal in which new users must be added"
+msgstr ""
+
+#. module: portal
+#: help:res.portal,widget_ids:0
+msgid "Widgets assigned to portal users"
+msgstr ""
+
+#. module: portal
+#: code:addons/portal/wizard/portal_wizard.py:163
+#, python-format
+msgid "(missing url)"
+msgstr ""
+
+#. module: portal
+#: view:share.wizard:0
+#: field:share.wizard,user_ids:0
+msgid "Existing users"
+msgstr ""
+
+#. module: portal
+#: field:res.portal.wizard.user,wizard_id:0
+msgid "Wizard"
+msgstr ""
+
+#. module: portal
+#: help:res.portal.wizard.user,user_email:0
+msgid "Will be used as user login. Also necessary to send the account information to new users"
+msgstr ""
+
+#. module: portal
+#: field:res.portal.wizard.user,lang:0
+msgid "Language"
+msgstr ""
+
+#. module: portal
+#: field:res.portal,url:0
+msgid "URL"
+msgstr ""
+
+#. module: portal
+#: view:res.portal:0
+msgid "Widgets assigned to Users"
+msgstr ""
+
+#. module: portal
+#: help:res.portal.wizard.user,lang:0
+msgid "The language for the user's user interface"
+msgstr ""
+
+#. module: portal
+#: view:res.portal.wizard:0
+msgid "Cancel"
+msgstr ""
+
+#. module: portal
+#: view:res.portal:0
+msgid "Website"
+msgstr ""
+
+#. module: portal
+#: view:res.portal:0
+msgid "Create Parent Menu"
+msgstr ""
+
+#. module: portal
+#: view:res.portal.wizard:0
+msgid "The following text will be included in the welcome email sent to users."
+msgstr ""
+
+#. module: portal
+#: code:addons/portal/wizard/portal_wizard.py:135
+#, python-format
+msgid "Email required"
+msgstr ""
+
+#. module: portal
+#: model:ir.model,name:portal.model_res_users
+msgid "res.users"
+msgstr ""
+
+#. module: portal
+#: constraint:res.portal.wizard.user:0
+msgid "Invalid email address"
+msgstr ""
+
+#. module: portal
+#: code:addons/portal/wizard/portal_wizard.py:136
+#, python-format
+msgid "You must have an email address in your User Preferences to send emails."
+msgstr ""
+
+#. module: portal
+#: model:ir.model,name:portal.model_ir_ui_menu
+msgid "ir.ui.menu"
+msgstr ""
+
+#. module: portal
+#: help:res.portal,group_id:0
+msgid "The group extended by this portal"
+msgstr ""
+
+#. module: portal
+#: view:res.portal:0
+#: view:res.portal.wizard:0
+#: field:res.portal.wizard,user_ids:0
+msgid "Users"
+msgstr ""
+
+#. module: portal
+#: field:res.portal,other_group_ids:0
+msgid "Other User Groups"
+msgstr ""
+
+#. module: portal
+#: model:ir.actions.act_window,name:portal.portal_list_action
+#: model:ir.ui.menu,name:portal.portal_list_menu
+#: model:ir.ui.menu,name:portal.portal_menu
+#: view:res.portal:0
+msgid "Portals"
+msgstr ""
+
+#. module: portal
+#: help:res.portal,parent_menu_id:0
+msgid "The menu action opens the submenus of this menu item"
+msgstr ""
+
+#. module: portal
+#: field:res.portal.widget,sequence:0
+msgid "Sequence"
+msgstr ""
+
+#. module: portal
+#: field:res.users,partner_id:0
+msgid "Related Partner"
+msgstr ""
+
+#. module: portal
+#: view:res.portal:0
+msgid "Portal Menu"
+msgstr ""
+
+#. module: portal
+#: sql_constraint:res.users:0
+msgid "You can not have two users with the same login !"
+msgstr ""
+
+#. module: portal
+#: view:res.portal.wizard:0
+#: field:res.portal.wizard,message:0
+msgid "Invitation message"
+msgstr ""
+
+#. module: portal
+#: code:addons/portal/wizard/portal_wizard.py:36
+#, python-format
+msgid "Dear %(name)s,\n"
+"\n"
+"You have been created an OpenERP account at %(url)s.\n"
+"\n"
+"Your login account data is:\n"
+"Database: %(db)s\n"
+"User: %(login)s\n"
+"Password: %(password)s\n"
+"\n"
+"%(message)s\n"
+"\n"
+"--\n"
+"OpenERP - Open Source Business Applications\n"
+"http://www.openerp.com\n"
+""
+msgstr ""
+
+#. module: portal
+#: model:ir.model,name:portal.model_res_portal_wizard
+msgid "Portal Wizard"
+msgstr ""
+
+#. module: portal
+#: help:res.portal.wizard.user,name:0
+msgid "The user's real name"
+msgstr ""
+
+#. module: portal
+#: model:ir.actions.act_window,name:portal.address_wizard_action
+#: model:ir.actions.act_window,name:portal.partner_wizard_action
+#: view:res.portal.wizard:0
+msgid "Add Portal Access"
+msgstr ""
+
+#. module: portal
+#: field:res.portal.wizard.user,partner_id:0
+msgid "Partner"
+msgstr ""
+
+#. module: portal
+#: model:ir.actions.act_window,help:portal.portal_list_action
+msgid "\n"
+"A portal helps defining specific views and rules for a group of users (the\n"
+"portal group). A portal menu, widgets and specific groups may be assigned to\n"
+"the portal's users.\n"
+" "
+msgstr ""
+
+#. module: portal
+#: model:ir.model,name:portal.model_share_wizard
+msgid "Share Wizard"
+msgstr ""
+
diff --git a/addons/portal/i18n/portal.pot b/addons/portal/i18n/portal.pot
new file mode 100644
index 00000000000..ffc18da1f14
--- /dev/null
+++ b/addons/portal/i18n/portal.pot
@@ -0,0 +1,393 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * portal
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 6.1-dev\n"
+"Report-Msgid-Bugs-To: support@openerp.com\n"
+"POT-Creation-Date: 2011-07-04 14:16+0000\n"
+"PO-Revision-Date: 2011-07-04 14:16+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: portal
+#: code:addons/portal/wizard/share_wizard.py:55
+#, python-format
+msgid "Please select at least one user to share with"
+msgstr ""
+
+#. module: portal
+#: code:addons/portal/wizard/share_wizard.py:59
+#, python-format
+msgid "Please select at least one group to share with"
+msgstr ""
+
+#. module: portal
+#: field:res.portal,group_id:0
+msgid "Group"
+msgstr ""
+
+#. module: portal
+#: help:res.portal,other_group_ids:0
+msgid "Those groups are assigned to the portal's users"
+msgstr ""
+
+#. module: portal
+#: view:share.wizard:0
+#: field:share.wizard,group_ids:0
+msgid "Existing groups"
+msgstr ""
+
+#. module: portal
+#: model:ir.model,name:portal.model_res_portal_wizard_user
+msgid "Portal User Config"
+msgstr ""
+
+#. module: portal
+#: view:res.portal.wizard.user:0
+msgid "Portal User"
+msgstr ""
+
+#. module: portal
+#: help:res.portal,override_menu:0
+msgid "Enable this option to override the Menu Action of portal users"
+msgstr ""
+
+#. module: portal
+#: field:res.portal.wizard.user,user_email:0
+msgid "E-mail"
+msgstr ""
+
+#. module: portal
+#: view:res.portal:0
+msgid "Other Groups assigned to Users"
+msgstr ""
+
+#. module: portal
+#: constraint:res.users:0
+msgid "The chosen company is not in the allowed companies for this user"
+msgstr ""
+
+#. module: portal
+#: view:res.portal:0
+#: field:res.portal,widget_ids:0
+msgid "Widgets"
+msgstr ""
+
+#. module: portal
+#: model:ir.module.module,description:portal.module_meta_information
+msgid "\n"
+"This module defines 'portals' to customize the access to your OpenERP database\n"
+"for external users.\n"
+"\n"
+"A portal defines customized user menu and access rights for a group of users\n"
+"(the ones associated to that portal). It also associates user groups to the\n"
+"portal users (adding a group in the portal automatically adds it to the portal\n"
+"users, etc). That feature is very handy when used in combination with the\n"
+"module 'share'.\n"
+" "
+msgstr ""
+
+#. module: portal
+#: view:share.wizard:0
+msgid "Who do you want to share with?"
+msgstr ""
+
+#. module: portal
+#: view:res.portal.wizard:0
+msgid "Send Invitations"
+msgstr ""
+
+#. module: portal
+#: help:res.portal,url:0
+msgid "The url where portal users can connect to the server"
+msgstr ""
+
+#. module: portal
+#: field:res.portal.widget,widget_id:0
+msgid "Widget"
+msgstr ""
+
+#. module: portal
+#: help:res.portal.wizard,message:0
+msgid "This text is included in the welcome email sent to the users"
+msgstr ""
+
+#. module: portal
+#: help:res.portal,menu_action_id:0
+msgid "If set, replaces the standard menu for the portal's users"
+msgstr ""
+
+#. module: portal
+#: field:res.portal,parent_menu_id:0
+msgid "Parent Menu"
+msgstr ""
+
+#. module: portal
+#: view:res.portal:0
+msgid "Portal Name"
+msgstr ""
+
+#. module: portal
+#: view:res.portal.wizard.user:0
+msgid "Portal Users"
+msgstr ""
+
+#. module: portal
+#: field:res.portal,override_menu:0
+msgid "Override Menu Action of Users"
+msgstr ""
+
+#. module: portal
+#: field:res.portal,menu_action_id:0
+msgid "Menu Action"
+msgstr ""
+
+#. module: portal
+#: field:res.portal.wizard.user,name:0
+msgid "User Name"
+msgstr ""
+
+#. module: portal
+#: model:ir.model,name:portal.model_res_portal_widget
+msgid "Portal Widgets"
+msgstr ""
+
+#. module: portal
+#: model:ir.model,name:portal.model_res_portal
+#: model:ir.module.module,shortdesc:portal.module_meta_information
+#: view:res.portal:0
+#: field:res.portal.widget,portal_id:0
+#: field:res.portal.wizard,portal_id:0
+msgid "Portal"
+msgstr ""
+
+#. module: portal
+#: code:addons/portal/wizard/portal_wizard.py:35
+#, python-format
+msgid "Your OpenERP account at %(company)s"
+msgstr ""
+
+#. module: portal
+#: code:addons/portal/portal.py:110
+#: code:addons/portal/portal.py:184
+#, python-format
+msgid "%s Menu"
+msgstr ""
+
+#. module: portal
+#: help:res.portal.wizard,portal_id:0
+msgid "The portal in which new users must be added"
+msgstr ""
+
+#. module: portal
+#: help:res.portal,widget_ids:0
+msgid "Widgets assigned to portal users"
+msgstr ""
+
+#. module: portal
+#: code:addons/portal/wizard/portal_wizard.py:163
+#, python-format
+msgid "(missing url)"
+msgstr ""
+
+#. module: portal
+#: view:share.wizard:0
+#: field:share.wizard,user_ids:0
+msgid "Existing users"
+msgstr ""
+
+#. module: portal
+#: field:res.portal.wizard.user,wizard_id:0
+msgid "Wizard"
+msgstr ""
+
+#. module: portal
+#: help:res.portal.wizard.user,user_email:0
+msgid "Will be used as user login. Also necessary to send the account information to new users"
+msgstr ""
+
+#. module: portal
+#: field:res.portal.wizard.user,lang:0
+msgid "Language"
+msgstr ""
+
+#. module: portal
+#: field:res.portal,url:0
+msgid "URL"
+msgstr ""
+
+#. module: portal
+#: view:res.portal:0
+msgid "Widgets assigned to Users"
+msgstr ""
+
+#. module: portal
+#: help:res.portal.wizard.user,lang:0
+msgid "The language for the user's user interface"
+msgstr ""
+
+#. module: portal
+#: view:res.portal.wizard:0
+msgid "Cancel"
+msgstr ""
+
+#. module: portal
+#: view:res.portal:0
+msgid "Website"
+msgstr ""
+
+#. module: portal
+#: view:res.portal:0
+msgid "Create Parent Menu"
+msgstr ""
+
+#. module: portal
+#: view:res.portal.wizard:0
+msgid "The following text will be included in the welcome email sent to users."
+msgstr ""
+
+#. module: portal
+#: code:addons/portal/wizard/portal_wizard.py:135
+#, python-format
+msgid "Email required"
+msgstr ""
+
+#. module: portal
+#: model:ir.model,name:portal.model_res_users
+msgid "res.users"
+msgstr ""
+
+#. module: portal
+#: constraint:res.portal.wizard.user:0
+msgid "Invalid email address"
+msgstr ""
+
+#. module: portal
+#: code:addons/portal/wizard/portal_wizard.py:136
+#, python-format
+msgid "You must have an email address in your User Preferences to send emails."
+msgstr ""
+
+#. module: portal
+#: model:ir.model,name:portal.model_ir_ui_menu
+msgid "ir.ui.menu"
+msgstr ""
+
+#. module: portal
+#: help:res.portal,group_id:0
+msgid "The group extended by this portal"
+msgstr ""
+
+#. module: portal
+#: view:res.portal:0
+#: view:res.portal.wizard:0
+#: field:res.portal.wizard,user_ids:0
+msgid "Users"
+msgstr ""
+
+#. module: portal
+#: field:res.portal,other_group_ids:0
+msgid "Other User Groups"
+msgstr ""
+
+#. module: portal
+#: model:ir.actions.act_window,name:portal.portal_list_action
+#: model:ir.ui.menu,name:portal.portal_list_menu
+#: model:ir.ui.menu,name:portal.portal_menu
+#: view:res.portal:0
+msgid "Portals"
+msgstr ""
+
+#. module: portal
+#: help:res.portal,parent_menu_id:0
+msgid "The menu action opens the submenus of this menu item"
+msgstr ""
+
+#. module: portal
+#: field:res.portal.widget,sequence:0
+msgid "Sequence"
+msgstr ""
+
+#. module: portal
+#: field:res.users,partner_id:0
+msgid "Related Partner"
+msgstr ""
+
+#. module: portal
+#: view:res.portal:0
+msgid "Portal Menu"
+msgstr ""
+
+#. module: portal
+#: sql_constraint:res.users:0
+msgid "You can not have two users with the same login !"
+msgstr ""
+
+#. module: portal
+#: view:res.portal.wizard:0
+#: field:res.portal.wizard,message:0
+msgid "Invitation message"
+msgstr ""
+
+#. module: portal
+#: code:addons/portal/wizard/portal_wizard.py:36
+#, python-format
+msgid "Dear %(name)s,\n"
+"\n"
+"You have been created an OpenERP account at %(url)s.\n"
+"\n"
+"Your login account data is:\n"
+"Database: %(db)s\n"
+"User: %(login)s\n"
+"Password: %(password)s\n"
+"\n"
+"%(message)s\n"
+"\n"
+"--\n"
+"OpenERP - Open Source Business Applications\n"
+"http://www.openerp.com\n"
+""
+msgstr ""
+
+#. module: portal
+#: model:ir.model,name:portal.model_res_portal_wizard
+msgid "Portal Wizard"
+msgstr ""
+
+#. module: portal
+#: help:res.portal.wizard.user,name:0
+msgid "The user's real name"
+msgstr ""
+
+#. module: portal
+#: model:ir.actions.act_window,name:portal.address_wizard_action
+#: model:ir.actions.act_window,name:portal.partner_wizard_action
+#: view:res.portal.wizard:0
+msgid "Add Portal Access"
+msgstr ""
+
+#. module: portal
+#: field:res.portal.wizard.user,partner_id:0
+msgid "Partner"
+msgstr ""
+
+#. module: portal
+#: model:ir.actions.act_window,help:portal.portal_list_action
+msgid "\n"
+"A portal helps defining specific views and rules for a group of users (the\n"
+"portal group). A portal menu, widgets and specific groups may be assigned to\n"
+"the portal's users.\n"
+" "
+msgstr ""
+
+#. module: portal
+#: model:ir.model,name:portal.model_share_wizard
+msgid "Share Wizard"
+msgstr ""
+
diff --git a/addons/portal/ir_ui_menu.py b/addons/portal/ir_ui_menu.py
index 7326a12122b..a4fe364a4fd 100644
--- a/addons/portal/ir_ui_menu.py
+++ b/addons/portal/ir_ui_menu.py
@@ -19,35 +19,40 @@
#
##############################################################################
+import logging
+
from osv import osv, fields
+from tools.safe_eval import safe_eval
class portal_menu(osv.osv):
- """Inherited menu class to customized the login search for menus,
- as web client 6.0 does not support the menu action properly yet"""
-
+ """
+ Fix menu class to customize the login search for menus,
+ as web client 6.0 does not support the menu action properly yet
+ """
+ _name = 'ir.ui.menu'
_inherit = 'ir.ui.menu'
def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False):
if context is None:
context = {}
- # if the current user belongs to a portal, we have to
- # rewrite any search on the top menus to be under the
- # portal's root menu:
+
+ # if the user belongs to a portal, we have to rewrite any search on the
+ # top menus to be under the portal's parent menu
if not context.get('ir.ui.menu.full_list') and uid != 1 and \
- args and len(args) == 1 and \
- len(args[0]) == 3 and \
- (args[0][0] == 'parent_id' \
- and args[0][1] == '=' \
- and args[0][2] == False):
- Portals = self.pool.get('res.portal')
- portal_id = Portals.search(cr, uid, [('group_id.users', 'in', uid)])
- if portal_id:
- assert len(portal_id) == 1, "Users may only belong to one portal at a time!"
- portal_data = Portals.read(cr, uid, portal_id[0], ['parent_menu_id'])
- menu_id_pair = portal_data.get('parent_menu_id') # (ID, Name)
- if menu_id_pair:
- args = [('parent_id', '=', menu_id_pair[0])]
- ids = super(portal_menu, self).search(cr, uid, args, offset=0,
- limit=None, order=order, context=context, count=False)
- return len(ids) if count else ids
-portal_menu()
\ No newline at end of file
+ args == [('parent_id', '=', False)]:
+ portal_obj = self.pool.get('res.portal')
+ portal_ids = portal_obj.search(cr, uid, [('users', 'in', uid)])
+ if portal_ids:
+ if len(portal_ids) > 1:
+ log = logging.getLogger('ir.ui.menu')
+ log.warning('User %s belongs to several portals', str(uid))
+ p = portal_obj.browse(cr, uid, portal_ids[0])
+ # if the portal overrides the menu, use its domain
+ if p.menu_action_id:
+ args = safe_eval(p.menu_action_id.domain)
+
+ return super(portal_menu, self).search(cr, uid, args, offset=offset,
+ limit=limit, order=order, context=context, count=count)
+
+portal_menu()
+
diff --git a/addons/portal/portal.py b/addons/portal/portal.py
index 5f0dce3eaf6..78483d6a1f1 100644
--- a/addons/portal/portal.py
+++ b/addons/portal/portal.py
@@ -22,116 +22,83 @@
from osv import osv, fields
from tools.translate import _
+
+
class portal(osv.osv):
+ """
+ A portal is a group of users with specific menu, widgets, and typically
+ restricted access rights.
+ """
_name = 'res.portal'
_description = 'Portal'
- _rec_name = 'group_id'
+ _inherits = {'res.groups': 'group_id'}
+
_columns = {
- 'group_id': fields.many2one('res.groups', required=True,
- string='Portal Group',
- help=_('This group defines the users associated to this portal')),
- 'user_ids': fields.related('group_id', 'users',
- type='many2many', relation='res.users', store=False,
- string='Portal Users'),
- 'menu_action_id': fields.many2one('ir.actions.actions', readonly=True,
+ 'group_id': fields.many2one('res.groups', required=True, ondelete='cascade',
+ string='Group',
+ help='The group extended by this portal'),
+ 'other_group_ids': fields.many2many('res.groups',
+ 'portal_group_rel', 'portal_id', 'group_id',
+ string='Other User Groups',
+ help="Those groups are assigned to the portal's users"),
+ 'url': fields.char('URL', size=64,
+ help="The url where portal users can connect to the server"),
+ 'menu_action_id': fields.many2one('ir.actions.act_window', readonly=True,
+ # ISSUE: 'ondelete' constraints do not seem effective on this field...
string='Menu Action',
- help=_("What replaces the standard menu for the portal's users")),
- 'parent_menu_id': fields.many2one('ir.ui.menu',
+ help="If set, replaces the standard menu for the portal's users"),
+ 'parent_menu_id': fields.many2one('ir.ui.menu', ondelete='restrict',
string='Parent Menu',
- help=_('The menu action opens the submenus of this menu item')),
+ help='The menu action opens the submenus of this menu item'),
'widget_ids': fields.one2many('res.portal.widget', 'portal_id',
string='Widgets',
- help=_('Widgets assigned to portal users')),
+ help='Widgets assigned to portal users'),
}
- _sql_constraints = [
- ('unique_group', 'UNIQUE(group_id)', _('Portals must have distinct groups.'))
- ]
- def copy(self, cr, uid, id, default={}, context=None):
- """ override copy(): group_id and menu_action_id must be different """
- # copy the former group_id
- groups_obj = self.pool.get('res.groups')
- group_id = self.browse(cr, uid, id, context).group_id.id
- default['group_id'] = groups_obj.copy(cr, uid, group_id, {}, context)
- default['menu_action_id'] = None
- return super(portal, self).copy(cr, uid, id, default, context)
+ def copy(self, cr, uid, id, values, context=None):
+ """ override copy(): menu_action_id must be different """
+ values['menu_action_id'] = None
+ return super(portal, self).copy(cr, uid, id, values, context)
def create(self, cr, uid, values, context=None):
- """ extend create() to assign the portal group and menu to users """
- # first create the 'menu_action_id'
- assert not values.get('menu_action_id')
- values['menu_action_id'] = self._create_menu_action(cr, uid, values, context)
+ """ extend create() to assign the portal menu to users """
+ if context is None:
+ context = {}
- if 'user_ids' in values:
- # set menu action of users
- user_values = {'menu_id': values['menu_action_id']}
- # values['user_ids'] should match [(6, 0, IDs)]
- for id in get_many2many(values['user_ids']):
- values['user_ids'].append((1, id, user_values))
-
- # create portal
+ # create portal (admin should not be included)
+ context['noadmin'] = True
portal_id = super(portal, self).create(cr, uid, values, context)
- # assign widgets to users
- if 'user_ids' in values:
- self._assign_widgets_to_users(cr, uid, [portal_id], context)
-
+ # assign menu action and widgets to users
+ if values.get('users') or values.get('other_group_ids') or values.get('menu_action_id'):
+ self._assign_menu_and_groups(cr, uid, [portal_id], context)
+ if values.get('users') or values.get('widget_ids'):
+ self._assign_widgets(cr, uid, [portal_id], context)
+
return portal_id
- def name_get(self, cr, uid, ids, context=None):
- portals = self.browse(cr, uid, ids, context)
- return [(p.id, p.group_id.name) for p in portals]
-
- def name_search(self, cr, uid, name='', args=None, operator='ilike', context=None, limit=100):
- # first search for group names that match
- groups_obj = self.pool.get('res.groups')
- group_names = groups_obj.name_search(cr, uid, name, args, operator, context, limit)
- # then search for portals that match the groups found so far
- domain = [('group_id', 'in', [gn[0] for gn in group_names])]
- ids = self.search(cr, uid, domain, context=context)
- return self.name_get(cr, uid, ids, context)
-
def write(self, cr, uid, ids, values, context=None):
- """ extend write() to reflect menu and groups changes on users """
+ """ extend write() to reflect changes on users """
# first apply portal changes
super(portal, self).write(cr, uid, ids, values, context)
- portals = self.browse(cr, uid, ids, context)
- # if 'menu_action_id' has changed, set menu_id on users
- if 'menu_action_id' in values:
- user_values = {'menu_id': values['menu_action_id']}
- user_ids = [u.id for p in portals for u in p.user_ids if u.id != 1]
- self.pool.get('res.users').write(cr, uid, user_ids, user_values, context)
+ # assign menu action and widgets to users
+ if values.get('users') or values.get('other_group_ids') or values.get('menu_action_id'):
+ self._assign_menu_and_groups(cr, uid, ids, context)
+ if values.get('users') or values.get('widget_ids'):
+ self._assign_widgets(cr, uid, ids, context)
# if parent_menu_id has changed, apply the change on menu_action_id
if 'parent_menu_id' in values:
act_window_obj = self.pool.get('ir.actions.act_window')
- action_ids = [p.menu_action_id.id for p in portals]
- action_values = {'domain': [('parent_id', '=', values['parent_menu_id'])]}
- act_window_obj.write(cr, uid, action_ids, action_values, context)
-
- # assign portal widgets to users, if widgets or users changed
- if ('user_ids' in values) or ('widget_ids' in values):
- self._assign_widgets_to_users(cr, uid, ids, context)
+ portals = self.browse(cr, uid, ids, context)
+ action_ids = [p.menu_action_id.id for p in portals if p.menu_action_id]
+ if action_ids:
+ action_values = {'domain': [('parent_id', '=', values['parent_menu_id'])]}
+ act_window_obj.write(cr, uid, action_ids, action_values, context)
return True
- def _create_menu_action(self, cr, uid, values, context=None):
- # create a menu action that opens the menu items below parent_menu_id
- groups_obj = self.pool.get('res.groups')
- group_name = groups_obj.browse(cr, uid, values['group_id'], context).name
- actions_obj = self.pool.get('ir.actions.act_window')
- action_values = {
- 'name': group_name + ' Menu',
- 'type': 'ir.actions.act_window',
- 'usage': 'menu',
- 'res_model': 'ir.ui.menu',
- 'view_type': 'tree',
- 'view_id': self._res_xml_id(cr, uid, 'base', 'view_menu'),
- 'domain': [('parent_id', '=', values.get('parent_menu_id', False))],
- }
- return actions_obj.create(cr, uid, action_values, context)
-
def do_create_menu(self, cr, uid, ids, context=None):
""" create a parent menu for the given portals """
menu_obj = self.pool.get('ir.ui.menu')
@@ -140,7 +107,7 @@ class portal(osv.osv):
for p in self.browse(cr, uid, ids, context):
# create a menuitem under 'portal.portal_menu'
menu_values = {
- 'name': p.group_id.name + ' Menu',
+ 'name': _('%s Menu') % p.name,
'parent_id': menu_root,
'groups_id': [(6, 0, [p.group_id.id])],
}
@@ -150,28 +117,30 @@ class portal(osv.osv):
return True
- def _assign_widgets_to_users(self, cr, uid, ids, context=None):
- """ assign portal widgets to users for the given portal ids """
+ def _assign_menu_and_groups(self, cr, uid, ids, context=None):
+ """ assign portal menu and other groups to users of portals (ids) """
+ user_obj = self.pool.get('res.users')
+ for p in self.browse(cr, uid, ids, context):
+ # user groups = portal group + other groups
+ group_ids = [p.group_id.id] + [g.id for g in p.other_group_ids]
+ user_values = {'groups_id': [(6, 0, group_ids)]}
+ # user menu action = portal menu action if set in portal
+ if p.menu_action_id:
+ user_values['menu_id'] = p.menu_action_id.id
+ user_ids = [u.id for u in p.users if u.id != 1]
+ user_obj.write(cr, uid, user_ids, user_values, context)
+
+ def _assign_widgets(self, cr, uid, ids, context=None):
+ """ assign portal widgets to users of portals (ids) """
widget_user_obj = self.pool.get('res.widget.user')
- portals = self.browse(cr, uid, ids, context)
- for p in portals:
+ for p in self.browse(cr, uid, ids, context):
for w in p.widget_ids:
values = {'sequence': w.sequence, 'widget_id': w.widget_id.id}
- for u in p.user_ids:
+ for u in p.users:
if u.id == 1: continue
values['user_id'] = u.id
widget_user_obj.create(cr, uid, values, context)
- def onchange_group(self, cr, uid, ids, group_id, context=None):
- """ update the users list when the group changes """
- user_ids = False
- if group_id:
- group = self.pool.get('res.groups').browse(cr, uid, group_id, context)
- user_ids = [u.id for u in group.users]
- return {
- 'value': {'user_ids': user_ids}
- }
-
def _res_xml_id(self, cr, uid, module, xml_id):
""" return the resource id associated to the given xml_id """
data_obj = self.pool.get('ir.model.data')
@@ -182,21 +151,55 @@ portal()
-class users(osv.osv):
- _name = 'res.users'
- _inherit = 'res.users'
+class portal_override_menu(osv.osv):
+ """
+ extend res.portal with a boolean field 'Override Users Menu', that
+ triggers the creation or removal of menu_action_id
+ """
+ _name = 'res.portal'
+ _inherit = 'res.portal'
- def default_get(self, cr, uid, fields, context=None):
- """ override default value of menu_id for portal users """
- defs = super(users, self).default_get(cr, uid, fields, context)
-
- # the value of 'menu_id' is passed in context by the portal form view
- if ('menu_id' in context) and ('menu_id' in fields):
- defs['menu_id'] = context['menu_id']
-
- return defs
+ def _get_override_menu(self, cr, uid, ids, field_name, arg, context=None):
+ assert field_name == 'override_menu'
+ result = {}
+ for p in self.browse(cr, uid, ids, context):
+ result[p.id] = bool(p.menu_action_id)
+ return result
+
+ def _set_override_menu(self, cr, uid, id, field_name, field_value, arg, context=None):
+ assert field_name == 'override_menu'
+ if field_value:
+ self.create_menu_action(cr, uid, id, context)
+ else:
+ self.write(cr, uid, [id], {'menu_action_id': False}, context)
+
+ def create_menu_action(self, cr, uid, id, context=None):
+ """ create, if necessary, a menu action that opens the menu items below
+ parent_menu_id """
+ p = self.browse(cr, uid, id, context)
+ if not p.menu_action_id:
+ actions_obj = self.pool.get('ir.actions.act_window')
+ parent_id = p.parent_menu_id.id if p.parent_menu_id else False
+ action_values = {
+ 'name': _('%s Menu') % p.name,
+ 'type': 'ir.actions.act_window',
+ 'usage': 'menu',
+ 'res_model': 'ir.ui.menu',
+ 'view_type': 'tree',
+ 'view_id': self._res_xml_id(cr, uid, 'base', 'view_menu'),
+ 'domain': [('parent_id', '=', parent_id)],
+ }
+ action_id = actions_obj.create(cr, uid, action_values, context)
+ self.write(cr, uid, [id], {'menu_action_id': action_id}, context)
+
+ _columns = {
+ 'override_menu': fields.function(
+ _get_override_menu, fnct_inv=_set_override_menu,
+ type='boolean', string='Override Menu Action of Users',
+ help='Enable this option to override the Menu Action of portal users'),
+ }
-users()
+portal_override_menu()
@@ -210,7 +213,7 @@ class portal_widget(osv.osv):
_order = 'sequence'
_columns = {
'sequence': fields.integer('Sequence'),
- 'portal_id': fields.many2one('res.portal', select=1,
+ 'portal_id': fields.many2one('res.portal', select=1, ondelete='cascade',
string='Portal'),
'widget_id': fields.many2one('res.widget', required=True, ondelete='cascade',
string='Widget'),
@@ -230,17 +233,3 @@ portal_widget()
-# utils
-def get_browse_id(obj):
- """ return the id of a browse() object, or None """
- return (obj and obj.id or None)
-
-def get_browse_ids(objs):
- """ return the ids of a list of browse() objects """
- return map(get_browse_id, objs)
-
-def get_many2many(arg):
- """ get the list of ids from a many2many 'values' field """
- assert len(arg) == 1 and arg[0][0] == 6 # arg = [(6, _, IDs)]
- return arg[0][2]
-
diff --git a/addons/portal/portal_view.xml b/addons/portal/portal_view.xml
index b218f84f745..d43c6115ad6 100644
--- a/addons/portal/portal_view.xml
+++ b/addons/portal/portal_view.xml
@@ -2,7 +2,8 @@
-
+
@@ -10,83 +11,65 @@
res.portal
form
tree,form
+
+ {'form_view_ref': 'portal.portal_form_view'}
A portal helps defining specific views and rules for a group of users (the
-portal group). A portal is associated with a menu; when changed, the portal menu
-is assigned to the portal's users. Groups can be added to or removed from the
-portal's users.
+portal group). A portal menu, widgets and specific groups may be assigned to
+the portal's users.
-
-
-
+
+
Portal List
res.portal
tree
-
-
-
+
+
-
-
- Portal Search
- res.portal
- search
-
-
-
-
-
-
-
-
-
-
-
+
Portal Form
res.portal
form
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/portal/res_user.py b/addons/portal/res_user.py
new file mode 100644
index 00000000000..2f32a65b761
--- /dev/null
+++ b/addons/portal/res_user.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-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 .
+#
+##############################################################################
+
+from osv import osv, fields
+
+
+
+class res_users(osv.osv):
+ _inherit = 'res.users'
+ _columns = {
+ 'partner_id': fields.many2one('res.partner',
+ string='Related Partner'),
+ }
+
+res_users()
+
diff --git a/addons/portal/res_user_view.xml b/addons/portal/res_user_view.xml
new file mode 100644
index 00000000000..716493f2787
--- /dev/null
+++ b/addons/portal/res_user_view.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+ res.portal.users.form
+ res.users
+ form
+
+
+
+
+
+
+
+
+
diff --git a/addons/portal/security/ir.model.access.csv b/addons/portal/security/ir.model.access.csv
index 627df380b8e..db83f9ae77e 100644
--- a/addons/portal/security/ir.model.access.csv
+++ b/addons/portal/security/ir.model.access.csv
@@ -1,5 +1,5 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_portal_manager","access.portal.manager","model_res_portal","group_portal_manager",1,1,1,1
-"access_portal_all","access.portal.all","model_res_portal",,1,0,0,0
-"access_portal_widget_all","access.portal.widget.all","model_res_portal_widget",,1,0,0,0
-"access_portal_widget_manager","access.portal.widget.manager","model_res_portal_widget",group_portal_manager,1,1,1,1
\ No newline at end of file
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_all,access.portal.all,model_res_portal,,1,0,0,0
+access_widget_all,access.portal.widget.all,model_res_portal_widget,,1,0,0,0
+access_manager,access.portal.manager,model_res_portal,group_portal_manager,1,1,1,1
+access_widget_manager,access.portal.widget.manager,model_res_portal_widget,group_portal_manager,1,1,1,1
diff --git a/addons/portal/security/portal_security.xml b/addons/portal/security/portal_security.xml
index 3e9f1634597..015a390cdae 100644
--- a/addons/portal/security/portal_security.xml
+++ b/addons/portal/security/portal_security.xml
@@ -3,14 +3,11 @@
Portal / Manager
-
-Members of this groups have access to the portal definitions, and can easily manage the users, access right and menus of portal users.
-Members of this group who are also members of the Sharing/User group get additional options in the sharing wizard:
- - they may select a list of existing users to share with, without having to give a list of emails
- - they may choose to share with a Portal group instead of sharing with users, effectively extending the Portal content
-These features are useful for setting up Portals, but this could result in an alteration of the system's security policy.
-Therefore this should be granted only to trustworthy users who know the security policy very well.
-This group must not be deleted.
+ Portal managers have access to the portal definitions, and can easily configure the users, access rights and menus of portal users.
+
+
+ Portal / Officer
+ Portal officers can create new portal users with the portal wizard.
-
\ No newline at end of file
+
diff --git a/addons/portal/wizard/__init__.py b/addons/portal/wizard/__init__.py
index 7bfb1d92c34..90b71a62c30 100644
--- a/addons/portal/wizard/__init__.py
+++ b/addons/portal/wizard/__init__.py
@@ -19,5 +19,6 @@
#
##############################################################################
+import portal_wizard
import share_wizard
-import groups_wizard
+
diff --git a/addons/portal/wizard/groups_wizard.py b/addons/portal/wizard/groups_wizard.py
deleted file mode 100644
index 1c383eb7be4..00000000000
--- a/addons/portal/wizard/groups_wizard.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-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 .
-#
-##############################################################################
-
-from osv import osv, fields
-from tools.translate import _
-
-class groups_wizard(osv.osv_memory):
- _name = 'res.portal.groups'
- _description = 'Portal Groups Wizard'
- _columns = {
- 'portal_id': fields.many2one('res.portal', required=True, readonly=True,
- string='Portal'),
- 'add_group_ids': fields.many2many('res.groups',
- 'portal_groups_add', 'portal_groups_id', 'group_ids',
- string='Add Groups'),
- 'remove_group_ids': fields.many2many('res.groups',
- 'portal_groups_remove', 'portal_groups_id', 'group_ids',
- string='Remove Groups'),
- }
- _defaults = {
- 'portal_id': (lambda self,cr,uid,context: context and context.get('active_id'))
- }
-
- def do_apply(self, cr, uid, ids, context=None, *args):
- assert len(ids) == 1
- wizard = self.browse(cr, uid, ids[0], context)
-
- # select all portal users except admin
- user_ids = [u.id for u in wizard.portal_id.user_ids if u.id != 1]
-
- # apply group adds and removals to portal users
- add_gids = [(4, g.id) for g in wizard.add_group_ids]
- rem_gids = [(3, g.id) for g in wizard.remove_group_ids]
- user_values = {'groups_id': add_gids + rem_gids}
- self.pool.get('res.users').write(cr, uid, user_ids, user_values, context)
-
- # return an empty dictionary to close the wizard window
- return {}
-
-groups_wizard()
-
diff --git a/addons/portal/wizard/portal_wizard.py b/addons/portal/wizard/portal_wizard.py
new file mode 100644
index 00000000000..152a2bb7b38
--- /dev/null
+++ b/addons/portal/wizard/portal_wizard.py
@@ -0,0 +1,226 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-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 logging
+import random
+
+from osv import osv, fields
+from tools.misc import email_re, email_send
+from tools.translate import _
+
+from base.res.res_user import _lang_get
+
+
+
+# welcome email sent to new portal users (note that calling tools.translate._
+# has no effect except exporting those strings for translation)
+WELCOME_EMAIL_SUBJECT = _("Your OpenERP account at %(company)s")
+WELCOME_EMAIL_BODY = _("""Dear %(name)s,
+
+You have been created an OpenERP account at %(url)s.
+
+Your login account data is:
+Database: %(db)s
+User: %(login)s
+Password: %(password)s
+
+%(message)s
+
+--
+OpenERP - Open Source Business Applications
+http://www.openerp.com
+""")
+
+ROOT_UID = 1
+
+# character sets for passwords, excluding 0, O, o, 1, I, l
+_PASSU = 'ABCDEFGHIJKLMNPQRSTUVWXYZ'
+_PASSL = 'abcdefghijkmnpqrstuvwxyz'
+_PASSD = '23456789'
+
+def random_password():
+ # get 3 uppercase letters, 3 lowercase letters, 2 digits, and shuffle them
+ chars = map(random.choice, [_PASSU] * 3 + [_PASSL] * 3 + [_PASSD] * 2)
+ random.shuffle(chars)
+ return ''.join(chars)
+
+def extract_email(user_email):
+ """ extract the email address from a user-friendly email address """
+ m = email_re.search(user_email or "")
+ return m and m.group(0) or ""
+
+
+
+class wizard(osv.osv_memory):
+ """
+ A wizard to create portal users from instances of either 'res.partner'
+ or 'res.partner.address'. The purpose is to provide an OpenERP database
+ access to customers or suppliers.
+ """
+ _name = 'res.portal.wizard'
+ _description = 'Portal Wizard'
+
+ _columns = {
+ 'portal_id': fields.many2one('res.portal', required=True,
+ string='Portal',
+ help="The portal in which new users must be added"),
+ 'user_ids': fields.one2many('res.portal.wizard.user', 'wizard_id',
+ string='Users'),
+ 'message': fields.text(string='Invitation message',
+ help="This text is included in the welcome email sent to the users"),
+ }
+
+ def _default_user_ids(self, cr, uid, context):
+ """ determine default user_ids from the active records """
+ def create_user_from_address(address):
+ return { # a user config based on a contact (address)
+ 'name': address.name,
+ 'user_email': extract_email(address.email),
+ 'lang': address.partner_id and address.partner_id.lang or 'en_US',
+ 'partner_id': address.partner_id and address.partner_id.id,
+ }
+
+ user_ids = []
+ if context.get('active_model') == 'res.partner.address':
+ address_obj = self.pool.get('res.partner.address')
+ address_ids = context.get('active_ids', [])
+ addresses = address_obj.browse(cr, uid, address_ids, context)
+ user_ids = map(create_user_from_address, addresses)
+
+ elif context.get('active_model') == 'res.partner':
+ partner_obj = self.pool.get('res.partner')
+ partner_ids = context.get('active_ids', [])
+ partners = partner_obj.browse(cr, uid, partner_ids, context)
+ for p in partners:
+ # add one user per contact, or one user if no contact
+ if p.address:
+ user_ids.extend(map(create_user_from_address, p.address))
+ else:
+ user_ids.append({'lang': p.lang or 'en_US', 'partner_id': p.id})
+
+ return user_ids
+
+ _defaults = {
+ 'user_ids': _default_user_ids
+ }
+
+ def action_create(self, cr, uid, ids, context=None):
+ """ create new users in portal(s), and notify them by email """
+ # we copy the context to change the language for translating emails
+ context0 = context or {}
+ context0['noshortcut'] = True # prevent shortcut creation
+ context = context0.copy()
+
+ user_obj = self.pool.get('res.users')
+ user = user_obj.browse(cr, ROOT_UID, uid, context0)
+ if not user.user_email:
+ raise osv.except_osv(_('Email required'),
+ _('You must have an email address in your User Preferences'
+ ' to send emails.'))
+
+ portal_obj = self.pool.get('res.portal')
+ for wiz in self.browse(cr, uid, ids, context):
+ # determine existing users
+ login_cond = [('login', 'in', [u.user_email for u in wiz.user_ids])]
+ user_ids = user_obj.search(cr, ROOT_UID, login_cond)
+ users = user_obj.browse(cr, ROOT_UID, user_ids)
+ logins = [u.login for u in users]
+
+ # create new users in portal (skip existing logins)
+ new_users_data = [ {
+ 'name': u.name,
+ 'login': u.user_email,
+ 'password': random_password(),
+ 'user_email': u.user_email,
+ 'context_lang': u.lang,
+ 'partner_id': u.partner_id and u.partner_id.id,
+ } for u in wiz.user_ids if u.user_email not in logins ]
+ portal_obj.write(cr, ROOT_UID, [wiz.portal_id.id],
+ {'users': [(0, 0, data) for data in new_users_data]}, context0)
+
+ # send email to all users (translated in their language)
+ data = {
+ 'company': user.company_id.name,
+ 'message': wiz.message or "",
+ 'url': wiz.portal_id.url or _("(missing url)"),
+ 'db': cr.dbname,
+ }
+ dest_uids = user_obj.search(cr, ROOT_UID, login_cond)
+ dest_users = user_obj.browse(cr, ROOT_UID, user_ids)
+ for dest_user in dest_users:
+ context['lang'] = dest_user.context_lang
+ data['login'] = dest_user.login
+ data['password'] = dest_user.password
+ data['name'] = dest_user.name
+
+ email_from = user.user_email
+ email_to = dest_user.user_email
+ subject = _(WELCOME_EMAIL_SUBJECT) % data
+ body = _(WELCOME_EMAIL_BODY) % data
+ res = email_send(email_from, [email_to], subject, body)
+ if not res:
+ logging.getLogger('res.portal.wizard').warning(
+ 'Failed to send email from %s to %s', email_from, email_to)
+
+ return {'type': 'ir.actions.act_window_close'}
+
+wizard()
+
+
+
+class wizard_user(osv.osv_memory):
+ """
+ A model to configure users in the portal wizard.
+ """
+ _name = 'res.portal.wizard.user'
+ _description = 'Portal User Config'
+
+ _columns = {
+ 'wizard_id': fields.many2one('res.portal.wizard', required=True,
+ string='Wizard'),
+ 'name': fields.char(size=64, required=True,
+ string='User Name',
+ help="The user's real name"),
+ 'user_email': fields.char(size=64, required=True,
+ string='E-mail',
+ help="Will be used as user login. "
+ "Also necessary to send the account information to new users"),
+ 'lang': fields.selection(_lang_get, required=True,
+ string='Language',
+ help="The language for the user's user interface"),
+ 'partner_id': fields.many2one('res.partner',
+ string='Partner'),
+ }
+
+ def _check_email(self, cr, uid, ids):
+ """ check syntax of email address """
+ for wuser in self.browse(cr, uid, ids):
+ if not email_re.match(wuser.user_email): return False
+ return True
+
+ _constraints = [
+ (_check_email, 'Invalid email address', ['email']),
+ ]
+
+wizard_user()
+
+
+
diff --git a/addons/portal/wizard/portal_wizard_view.xml b/addons/portal/wizard/portal_wizard_view.xml
new file mode 100644
index 00000000000..537055e5fb2
--- /dev/null
+++ b/addons/portal/wizard/portal_wizard_view.xml
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+ Add Portal Access
+ res.portal.wizard
+ form
+
+
+
+
+
+
+
+ Portal Users
+ res.portal.wizard.user
+ tree
+
+
+
+
+
+
+
+
+
+
+
+
+ Portal User
+ res.portal.wizard.user
+ form
+
+
+
+
+
+
diff --git a/addons/portal/wizard/share_wizard.py b/addons/portal/wizard/share_wizard.py
index 7f1222fa2e2..c1366b5dbf0 100644
--- a/addons/portal/wizard/share_wizard.py
+++ b/addons/portal/wizard/share_wizard.py
@@ -186,4 +186,5 @@ class share_wizard_portal(osv.osv_memory):
super(share_wizard_portal,self)._finish_result_lines(cr, uid, wizard_data, share_group_id, context=context)
self.copy_share_group_access_and_delete(cr, wizard_data, share_group_id, context=context)
-share_wizard_portal()
\ No newline at end of file
+share_wizard_portal()
+
diff --git a/addons/portal/wizard_view.xml b/addons/portal/wizard_view.xml
deleted file mode 100644
index f748292ede6..00000000000
--- a/addons/portal/wizard_view.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
- Add/Remove Groups
- res.portal.groups
- form
- form
- new
-
-
-
-
- Portal Groups Wizard
- res.portal.groups
- form
-
-
-
-
-
-
-
-
- Portal Form
- res.portal
-
-
-
-
-
-
-
-
-
diff --git a/addons/procurement/procurement.py b/addons/procurement/procurement.py
index 743ef85a9ea..f05ca64144d 100644
--- a/addons/procurement/procurement.py
+++ b/addons/procurement/procurement.py
@@ -527,7 +527,7 @@ class stock_warehouse_orderpoint(osv.osv):
help="The procurement quantity will be rounded up to this multiple."),
'procurement_id': fields.many2one('procurement.order', 'Latest procurement', ondelete="set null"),
'company_id': fields.many2one('res.company','Company',required=True),
- 'procurement_draft_ids': fields.function(_get_draft_procurements, method=True, type='many2many', relation="procurement.order", \
+ 'procurement_draft_ids': fields.function(_get_draft_procurements, type='many2many', relation="procurement.order", \
string="Related Procurement Orders",help="Draft procurement of the product and location of that orderpoint"),
}
_defaults = {
diff --git a/addons/product/partner.py b/addons/product/partner.py
index 7aa9b3bc426..f779f3dcd4d 100644
--- a/addons/product/partner.py
+++ b/addons/product/partner.py
@@ -32,7 +32,6 @@ class res_partner(osv.osv):
relation='product.pricelist',
domain=[('type','=','sale')],
string="Sale Pricelist",
- method=True,
view_load=True,
help="This pricelist will be used, instead of the default one, for sales to the current partner"),
}
diff --git a/addons/product/product.py b/addons/product/product.py
index fa6796b3953..9deaf3398b1 100644
--- a/addons/product/product.py
+++ b/addons/product/product.py
@@ -102,7 +102,7 @@ class product_uom(osv.osv):
'1 * (reference unit) = ratio * (this unit)'),
'factor_inv': fields.function(_factor_inv, digits_compute=dp.get_precision('Product UoM'),
fnct_inv=_factor_inv_write,
- method=True, string='Ratio',
+ string='Ratio',
help='How many times this UoM is bigger than the reference UoM in this category:\n'\
'1 * (this unit) = ratio * (reference unit)', required=True),
'rounding': fields.float('Rounding Precision', digits_compute=dp.get_precision('Product UoM'), required=True,
@@ -206,7 +206,7 @@ class product_category(osv.osv):
_description = "Product Category"
_columns = {
'name': fields.char('Name', size=64, required=True, translate=True),
- 'complete_name': fields.function(_name_get_fnc, method=True, type="char", string='Name'),
+ 'complete_name': fields.function(_name_get_fnc, type="char", string='Name'),
'parent_id': fields.many2one('product.category','Parent Category', select=True),
'child_id': fields.one2many('product.category', 'parent_id', string='Child Categories'),
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of product categories."),
@@ -296,9 +296,9 @@ class product_template(osv.osv):
help='Coefficient to convert UOM to UOS\n'
' uos = uom * coeff'),
'mes_type': fields.selection((('fixed', 'Fixed'), ('variable', 'Variable')), 'Measure Type', required=True),
- 'seller_delay': fields.function(_calc_seller, method=True, type='integer', string='Supplier Lead Time', multi="seller_delay", help="This is the average delay in days between the purchase order confirmation and the reception of goods for this product and for the default supplier. It is used by the scheduler to order requests based on reordering delays."),
- 'seller_qty': fields.function(_calc_seller, method=True, type='float', string='Supplier Quantity', multi="seller_qty", help="This is minimum quantity to purchase from Main Supplier."),
- 'seller_id': fields.function(_calc_seller, method=True, type='many2one', relation="res.partner", string='Main Supplier', help="Main Supplier who has highest priority in Supplier List.", multi="seller_id"),
+ 'seller_delay': fields.function(_calc_seller, type='integer', string='Supplier Lead Time', multi="seller_delay", help="This is the average delay in days between the purchase order confirmation and the reception of goods for this product and for the default supplier. It is used by the scheduler to order requests based on reordering delays."),
+ 'seller_qty': fields.function(_calc_seller, type='float', string='Supplier Quantity', multi="seller_qty", help="This is minimum quantity to purchase from Main Supplier."),
+ 'seller_id': fields.function(_calc_seller, type='many2one', relation="res.partner", string='Main Supplier', help="Main Supplier who has highest priority in Supplier List.", multi="seller_id"),
'seller_ids': fields.one2many('product.supplierinfo', 'product_id', 'Partners'),
'loc_rack': fields.char('Rack', size=16),
'loc_row': fields.char('Row', size=16),
@@ -469,14 +469,14 @@ class product_product(osv.osv):
_inherits = {'product.template': 'product_tmpl_id'}
_order = 'default_code,name_template'
_columns = {
- 'qty_available': fields.function(_product_qty_available, method=True, type='float', string='Real Stock'),
- 'virtual_available': fields.function(_product_virtual_available, method=True, type='float', string='Virtual Stock'),
- 'incoming_qty': fields.function(_product_incoming_qty, method=True, type='float', string='Incoming'),
- 'outgoing_qty': fields.function(_product_outgoing_qty, method=True, type='float', string='Outgoing'),
- 'price': fields.function(_product_price, method=True, type='float', string='Pricelist', digits_compute=dp.get_precision('Sale Price')),
- 'lst_price' : fields.function(_product_lst_price, method=True, type='float', string='Public Price', digits_compute=dp.get_precision('Sale Price')),
- 'code': fields.function(_product_code, method=True, type='char', string='Reference'),
- 'partner_ref' : fields.function(_product_partner_ref, method=True, type='char', string='Customer ref'),
+ 'qty_available': fields.function(_product_qty_available, type='float', string='Real Stock'),
+ 'virtual_available': fields.function(_product_virtual_available, type='float', string='Virtual Stock'),
+ 'incoming_qty': fields.function(_product_incoming_qty, type='float', string='Incoming'),
+ 'outgoing_qty': fields.function(_product_outgoing_qty, type='float', string='Outgoing'),
+ 'price': fields.function(_product_price, type='float', string='Pricelist', digits_compute=dp.get_precision('Sale Price')),
+ 'lst_price' : fields.function(_product_lst_price, type='float', string='Public Price', digits_compute=dp.get_precision('Sale Price')),
+ 'code': fields.function(_product_code, type='char', string='Reference'),
+ 'partner_ref' : fields.function(_product_partner_ref, type='char', string='Customer ref'),
'default_code' : fields.char('Reference', size=64),
'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the product without removing it."),
'variants': fields.char('Variants', size=64),
@@ -733,7 +733,7 @@ class product_supplierinfo(osv.osv):
'sequence' : fields.integer('Sequence', help="Assigns the priority to the list of product supplier."),
'product_uom': fields.many2one('product.uom', string="Supplier UoM", help="Choose here the Unit of Measure in which the prices and quantities are expressed below."),
'min_qty': fields.float('Minimal Quantity', required=True, help="The minimal quantity to purchase to this supplier, expressed in the supplier Product UoM if not empty, in the default unit of measure of the product otherwise."),
- 'qty': fields.function(_calc_qty, method=True, store=True, type='float', string='Quantity', multi="qty", help="This is a quantity which is converted into Default Uom."),
+ 'qty': fields.function(_calc_qty, store=True, type='float', string='Quantity', multi="qty", help="This is a quantity which is converted into Default Uom."),
'product_id' : fields.many2one('product.template', 'Product', required=True, ondelete='cascade', select=True),
'delay' : fields.integer('Delivery Lead Time', required=True, help="Lead time in days between the confirmation of the purchase order and the reception of the products in your warehouse. Used by the scheduler for automatic computation of the purchase order planning."),
'pricelist_ids': fields.one2many('pricelist.partnerinfo', 'suppinfo_id', 'Supplier Pricelist'),
diff --git a/addons/product_margin/product_margin.py b/addons/product_margin/product_margin.py
index 37639c3b223..5895feedf3f 100644
--- a/addons/product_margin/product_margin.py
+++ b/addons/product_margin/product_margin.py
@@ -92,38 +92,38 @@ class product_product(osv.osv):
return res
_columns = {
- 'date_from': fields.function(_product_margin, method=True, type='date', string='From Date', multi='product_margin'),
- 'date_to': fields.function(_product_margin, method=True, type='date', string='To Date', multi='product_margin'),
- 'invoice_state': fields.function(_product_margin, method=True, type='selection', selection=[
+ 'date_from': fields.function(_product_margin, type='date', string='From Date', multi='product_margin'),
+ 'date_to': fields.function(_product_margin, type='date', string='To Date', multi='product_margin'),
+ 'invoice_state': fields.function(_product_margin, type='selection', selection=[
('paid','Paid'),('open_paid','Open and Paid'),('draft_open_paid','Draft, Open and Paid')
], string='Invoice State',multi='product_margin', readonly=True),
- 'sale_avg_price' : fields.function(_product_margin, method=True, type='float', string='Avg. Unit Price', multi='product_margin',
+ 'sale_avg_price' : fields.function(_product_margin, type='float', string='Avg. Unit Price', multi='product_margin',
help="Avg. Price in Customer Invoices)"),
- 'purchase_avg_price' : fields.function(_product_margin, method=True, type='float', string='Avg. Unit Price', multi='product_margin',
+ 'purchase_avg_price' : fields.function(_product_margin, type='float', string='Avg. Unit Price', multi='product_margin',
help="Avg. Price in Supplier Invoices "),
- 'sale_num_invoiced' : fields.function(_product_margin, method=True, type='float', string='# Invoiced', multi='product_margin',
+ 'sale_num_invoiced' : fields.function(_product_margin, type='float', string='# Invoiced', multi='product_margin',
help="Sum of Quantity in Customer Invoices"),
- 'purchase_num_invoiced' : fields.function(_product_margin, method=True, type='float', string='# Invoiced', multi='product_margin',
+ 'purchase_num_invoiced' : fields.function(_product_margin, type='float', string='# Invoiced', multi='product_margin',
help="Sum of Quantity in Supplier Invoices"),
- 'sales_gap' : fields.function(_product_margin, method=True, type='float', string='Sales Gap', multi='product_margin',
+ 'sales_gap' : fields.function(_product_margin, type='float', string='Sales Gap', multi='product_margin',
help="Expected Sale - Turn Over"),
- 'purchase_gap' : fields.function(_product_margin, method=True, type='float', string='Purchase Gap', multi='product_margin',
+ 'purchase_gap' : fields.function(_product_margin, type='float', string='Purchase Gap', multi='product_margin',
help="Normal Cost - Total Cost"),
- 'turnover' : fields.function(_product_margin, method=True, type='float', string='Turnover' ,multi='product_margin',
+ 'turnover' : fields.function(_product_margin, type='float', string='Turnover' ,multi='product_margin',
help="Sum of Multification of Invoice price and quantity of Customer Invoices"),
- 'total_cost' : fields.function(_product_margin, method=True, type='float', string='Total Cost', multi='product_margin',
+ 'total_cost' : fields.function(_product_margin, type='float', string='Total Cost', multi='product_margin',
help="Sum of Multification of Invoice price and quantity of Supplier Invoices "),
- 'sale_expected' : fields.function(_product_margin, method=True, type='float', string='Expected Sale', multi='product_margin',
+ 'sale_expected' : fields.function(_product_margin, type='float', string='Expected Sale', multi='product_margin',
help="Sum of Multification of Sale Catalog price and quantity of Customer Invoices"),
- 'normal_cost' : fields.function(_product_margin, method=True, type='float', string='Normal Cost', multi='product_margin',
+ 'normal_cost' : fields.function(_product_margin, type='float', string='Normal Cost', multi='product_margin',
help="Sum of Multification of Cost price and quantity of Supplier Invoices"),
- 'total_margin' : fields.function(_product_margin, method=True, type='float', string='Total Margin', multi='product_margin',
+ 'total_margin' : fields.function(_product_margin, type='float', string='Total Margin', multi='product_margin',
help="Turnorder - Standard price"),
- 'expected_margin' : fields.function(_product_margin, method=True, type='float', string='Expected Margin', multi='product_margin',
+ 'expected_margin' : fields.function(_product_margin, type='float', string='Expected Margin', multi='product_margin',
help="Expected Sale - Normal Cost"),
- 'total_margin_rate' : fields.function(_product_margin, method=True, type='float', string='Total Margin (%)', multi='product_margin',
+ 'total_margin_rate' : fields.function(_product_margin, type='float', string='Total Margin (%)', multi='product_margin',
help="Total margin * 100 / Turnover"),
- 'expected_margin_rate' : fields.function(_product_margin, method=True, type='float', string='Expected Margin (%)', multi='product_margin',
+ 'expected_margin_rate' : fields.function(_product_margin, type='float', string='Expected Margin (%)', multi='product_margin',
help="Expected margin * 100 / Expected Sale"),
}
diff --git a/addons/project/project.py b/addons/project/project.py
index c2d029d7284..b1461da424c 100644
--- a/addons/project/project.py
+++ b/addons/project/project.py
@@ -123,7 +123,7 @@ class project(osv.osv):
return super(project, self).unlink(cr, uid, ids, *args, **kwargs)
_columns = {
- 'complete_name': fields.function(_complete_name, method=True, string="Project Name", type='char', size=250),
+ 'complete_name': fields.function(_complete_name, string="Project Name", type='char', size=250),
'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the project without removing it."),
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of Projects."),
'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account', help="Link this project to an analytic account if you need financial management on projects. It enables you to connect projects with budgets, planning, cost and revenue analysis, timesheets on projects, etc.", ondelete="cascade", required=True),
@@ -133,18 +133,18 @@ class project(osv.osv):
'members': fields.many2many('res.users', 'project_user_rel', 'project_id', 'uid', 'Project Members',
help="Project's members are users who can have an access to the tasks related to this project.", states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}),
'tasks': fields.one2many('project.task', 'project_id', "Project tasks"),
- 'planned_hours': fields.function(_progress_rate, multi="progress", method=True, string='Planned Time', help="Sum of planned hours of all tasks related to this project and its child projects.",
+ 'planned_hours': fields.function(_progress_rate, multi="progress", string='Planned Time', help="Sum of planned hours of all tasks related to this project and its child projects.",
store = {
'project.project': (lambda self, cr, uid, ids, c={}: ids, ['tasks'], 10),
'project.task': (_get_project_task, ['planned_hours', 'effective_hours', 'remaining_hours', 'total_hours', 'progress', 'delay_hours','state'], 10),
}),
- 'effective_hours': fields.function(_progress_rate, multi="progress", method=True, string='Time Spent', help="Sum of spent hours of all tasks related to this project and its child projects."),
- 'total_hours': fields.function(_progress_rate, multi="progress", method=True, string='Total Time', help="Sum of total hours of all tasks related to this project and its child projects.",
+ 'effective_hours': fields.function(_progress_rate, multi="progress", string='Time Spent', help="Sum of spent hours of all tasks related to this project and its child projects."),
+ 'total_hours': fields.function(_progress_rate, multi="progress", string='Total Time', help="Sum of total hours of all tasks related to this project and its child projects.",
store = {
'project.project': (lambda self, cr, uid, ids, c={}: ids, ['tasks'], 10),
'project.task': (_get_project_task, ['planned_hours', 'effective_hours', 'remaining_hours', 'total_hours', 'progress', 'delay_hours','state'], 10),
}),
- 'progress_rate': fields.function(_progress_rate, multi="progress", method=True, string='Progress', type='float', group_operator="avg", help="Percent of tasks closed according to the total of tasks todo."),
+ 'progress_rate': fields.function(_progress_rate, multi="progress", string='Progress', type='float', group_operator="avg", help="Percent of tasks closed according to the total of tasks todo."),
'warn_customer': fields.boolean('Warn Partner', help="If you check this, the user will have a popup when closing a task that propose a message to send by email to the customer.", states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}),
'warn_header': fields.text('Mail Header', help="Header added at the beginning of the email for the warning message sent to the customer when a task is closed.", states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}),
'warn_footer': fields.text('Mail Footer', help="Footer added at the beginning of the email for the warning message sent to the customer when a task is closed.", states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}),
@@ -420,7 +420,7 @@ class task(osv.osv):
return result.keys()
_columns = {
- 'active': fields.function(_is_template, method=True, store=True, string='Not a Template Task', type='boolean', help="This field is computed automatically and have the same behavior than the boolean 'active' field: if the task is linked to a template or unactivated project, it will be hidden unless specifically asked."),
+ 'active': fields.function(_is_template, store=True, string='Not a Template Task', type='boolean', help="This field is computed automatically and have the same behavior than the boolean 'active' field: if the task is linked to a template or unactivated project, it will be hidden unless specifically asked."),
'name': fields.char('Task Summary', size=128, required=True),
'description': fields.text('Description'),
'priority': fields.selection([('4','Very Low'), ('3','Low'), ('2','Medium'), ('1','Important'), ('0','Very important')], 'Priority'),
@@ -438,23 +438,23 @@ class task(osv.osv):
'child_ids': fields.many2many('project.task', 'project_task_parent_rel', 'parent_id', 'task_id', 'Delegated Tasks'),
'notes': fields.text('Notes'),
'planned_hours': fields.float('Planned Hours', help='Estimated time to do the task, usually set by the project manager when the task is in draft state.'),
- 'effective_hours': fields.function(_hours_get, method=True, string='Hours Spent', multi='hours', help="Computed using the sum of the task work done.",
+ 'effective_hours': fields.function(_hours_get, string='Hours Spent', multi='hours', help="Computed using the sum of the task work done.",
store = {
'project.task': (lambda self, cr, uid, ids, c={}: ids, ['work_ids', 'remaining_hours', 'planned_hours'], 10),
'project.task.work': (_get_task, ['hours'], 10),
}),
'remaining_hours': fields.float('Remaining Hours', digits=(16,2), help="Total remaining time, can be re-estimated periodically by the assignee of the task."),
- 'total_hours': fields.function(_hours_get, method=True, string='Total Hours', multi='hours', help="Computed as: Time Spent + Remaining Time.",
+ 'total_hours': fields.function(_hours_get, string='Total Hours', multi='hours', help="Computed as: Time Spent + Remaining Time.",
store = {
'project.task': (lambda self, cr, uid, ids, c={}: ids, ['work_ids', 'remaining_hours', 'planned_hours'], 10),
'project.task.work': (_get_task, ['hours'], 10),
}),
- 'progress': fields.function(_hours_get, method=True, string='Progress (%)', multi='hours', group_operator="avg", help="If the task has a progress of 99.99% you should close the task if it's finished or reevaluate the time",
+ 'progress': fields.function(_hours_get, string='Progress (%)', multi='hours', group_operator="avg", help="If the task has a progress of 99.99% you should close the task if it's finished or reevaluate the time",
store = {
'project.task': (lambda self, cr, uid, ids, c={}: ids, ['work_ids', 'remaining_hours', 'planned_hours','state'], 10),
'project.task.work': (_get_task, ['hours'], 10),
}),
- 'delay_hours': fields.function(_hours_get, method=True, string='Delay Hours', multi='hours', help="Computed as difference of the time estimated by the project manager and the real time to close the task.",
+ 'delay_hours': fields.function(_hours_get, string='Delay Hours', multi='hours', help="Computed as difference of the time estimated by the project manager and the real time to close the task.",
store = {
'project.task': (lambda self, cr, uid, ids, c={}: ids, ['work_ids', 'remaining_hours', 'planned_hours'], 10),
'project.task.work': (_get_task, ['hours'], 10),
@@ -529,8 +529,6 @@ class task(osv.osv):
#
# Override view according to the company definition
#
-
-
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
users_obj = self.pool.get('res.users')
@@ -562,13 +560,27 @@ class task(osv.osv):
res['fields'][f]['string'] = res['fields'][f]['string'].replace('Hours',tm)
return res
+ def _check_child_task(self, cr, uid, ids, context=None):
+ if context == None:
+ context = {}
+ tasks = self.browse(cr, uid, ids, context=context)
+ for task in tasks:
+ if task.child_ids:
+ for child in task.child_ids:
+ if child.state in ['draft', 'open', 'pending']:
+ raise osv.except_osv(_("Warning !"), _("Child task still open.\nPlease cancel or complete child task first."))
+ return True
+
def action_close(self, cr, uid, ids, context=None):
# This action open wizard to send email to partner or project manager after close task.
- project_id = len(ids) and ids[0] or False
- if not project_id: return False
- task = self.browse(cr, uid, project_id, context=context)
+ if context == None:
+ context = {}
+ task_id = len(ids) and ids[0] or False
+ self._check_child_task(cr, uid, ids, context=context)
+ if not task_id: return False
+ task = self.browse(cr, uid, task_id, context=context)
project = task.project_id
- res = self.do_close(cr, uid, [project_id], context=context)
+ res = self.do_close(cr, uid, [task_id], context=context)
if project.warn_manager or project.warn_customer:
return {
'name': _('Send Email after close task'),
@@ -642,6 +654,7 @@ class task(osv.osv):
def do_cancel(self, cr, uid, ids, context={}):
request = self.pool.get('res.request')
tasks = self.browse(cr, uid, ids, context=context)
+ self._check_child_task(cr, uid, ids, context=context)
for task in tasks:
project = task.project_id
if project.warn_manager and project.user_id and (project.user_id.id != uid):
@@ -735,13 +748,19 @@ class task(osv.osv):
index = sorted_types.index(typeid)
self.write(cr, uid, task.id, {'type_id': sorted_types[index+1]})
return True
-
+
def next_type(self, cr, uid, ids, *args):
return self._change_type(cr, uid, ids, True, *args)
def prev_type(self, cr, uid, ids, *args):
return self._change_type(cr, uid, ids, False, *args)
-
+
+ def unlink(self, cr, uid, ids, context=None):
+ if context == None:
+ context = {}
+ self._check_child_task(cr, uid, ids, context=context)
+ res = super(task, self).unlink(cr, uid, ids, context)
+ return res
task()
diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml
index 5faa0090a15..0f53aff7ed4 100644
--- a/addons/project/project_view.xml
+++ b/addons/project/project_view.xml
@@ -369,7 +369,7 @@
gantt
-
+
diff --git a/addons/project/wizard/project_task_close.py b/addons/project/wizard/project_task_close.py
index 97e8e4730c2..010bba9e52b 100644
--- a/addons/project/wizard/project_task_close.py
+++ b/addons/project/wizard/project_task_close.py
@@ -115,7 +115,7 @@ class project_task_close(osv.osv_memory):
mail_id = tools.email_send(from_adr, to_adr, subject, tools.ustr(body), email_bcc=[from_adr])
if not mail_id:
raise osv.except_osv(_('Error'), _("Couldn't send mail! Check the email ids and smtp configuration settings"))
- return {}
+ return {'type': 'ir.actions.act_window_close'}
project_task_close()
diff --git a/addons/project/wizard/project_task_delegate.py b/addons/project/wizard/project_task_delegate.py
index cffdf2f9ef9..eaf5dea3084 100644
--- a/addons/project/wizard/project_task_delegate.py
+++ b/addons/project/wizard/project_task_delegate.py
@@ -108,6 +108,6 @@ class project_task_delegate(osv.osv_memory):
delegate_data['user_id'] = delegate_data['user_id'][0]
delegate_data['name'] = tools.ustr(delegate_data['name'])
task_pool.do_delegate(cr, uid, task_id, delegate_data, context=context)
- return {}
+ return {'type': 'ir.actions.act_window_close'}
project_task_delegate()
diff --git a/addons/project/wizard/project_task_reevaluate.py b/addons/project/wizard/project_task_reevaluate.py
index e4e2fab66e3..d627ffa4408 100644
--- a/addons/project/wizard/project_task_reevaluate.py
+++ b/addons/project/wizard/project_task_reevaluate.py
@@ -79,5 +79,5 @@ class project_task_reevaluate(osv.osv_memory):
task_pool.write(cr, uid, task_id, {'remaining_hours': data.remaining_hours})
if context.get('button_reactivate', False):
task_pool.do_reopen(cr, uid, [task_id], context=context)
- return {}
+ return {'type': 'ir.actions.act_window_close'}
project_task_reevaluate()
diff --git a/addons/project_issue/i18n/zh_CN.po b/addons/project_issue/i18n/zh_CN.po
new file mode 100644
index 00000000000..1c41a92d2f9
--- /dev/null
+++ b/addons/project_issue/i18n/zh_CN.po
@@ -0,0 +1,972 @@
+# Chinese (Simplified) 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-06-30 11:51+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Chinese (Simplified) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-07-01 04:54+0000\n"
+"X-Generator: Launchpad (build 13168)\n"
+
+#. module: project_issue
+#: field:project.issue.report,delay_open:0
+msgid "Avg. Delay to Open"
+msgstr "距开始处理"
+
+#. module: project_issue
+#: view:project.issue:0
+#: view:project.issue.report:0
+msgid "Group By..."
+msgstr "分组..."
+
+#. module: project_issue
+#: field:project.issue,working_hours_open:0
+msgid "Working Hours to Open the Issue"
+msgstr "据开始处理小时数"
+
+#. module: project_issue
+#: constraint:project.project:0
+msgid "Error! project start-date must be lower then project end-date."
+msgstr "错误!项目的开始日期必须小于项目的结束日期"
+
+#. module: project_issue
+#: field:project.issue,date_open:0
+msgid "Opened"
+msgstr "已开启"
+
+#. module: project_issue
+#: field:project.issue.report,opening_date:0
+msgid "Date of Opening"
+msgstr "距开始日期天数"
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "March"
+msgstr "三月"
+
+#. module: project_issue
+#: field:project.issue,progress:0
+msgid "Progress (%)"
+msgstr "进度(%)"
+
+#. module: project_issue
+#: field:project.issue,company_id:0
+#: view:project.issue.report:0
+#: field:project.issue.report,company_id:0
+msgid "Company"
+msgstr "公司"
+
+#. module: project_issue
+#: field:project.issue,email_cc:0
+msgid "Watchers Emails"
+msgstr "关注者的电子邮件"
+
+#. module: project_issue
+#: view:project.issue.report:0
+msgid "Close Working hours"
+msgstr "距处理结束小时数"
+
+#. module: project_issue
+#: model:ir.model,name:project_issue.model_project_issue_version
+msgid "project.issue.version"
+msgstr "project.issue.version"
+
+#. module: project_issue
+#: field:project.issue,day_open:0
+msgid "Days to Open"
+msgstr "距开始日期"
+
+#. module: project_issue
+#: code:addons/project_issue/project_issue.py:360
+#, python-format
+msgid ""
+"You cannot escalate this issue.\n"
+"The relevant Project has not configured the Escalation Project!"
+msgstr ""
+"不能升级此缺陷。\n"
+"所属项目没有配置相关项目。"
+
+#. module: project_issue
+#: constraint:project.project:0
+msgid "Error! You cannot assign escalation to the same project!"
+msgstr "不能升级到相同的项目"
+
+#. module: project_issue
+#: view:project.issue.report:0
+msgid "Date Closed"
+msgstr "结束日期"
+
+#. module: project_issue
+#: view:project.issue.report:0
+#: field:project.issue.report,day:0
+msgid "Day"
+msgstr "天"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Add Internal Note"
+msgstr "添加内部备注"
+
+#. module: project_issue
+#: field:project.issue,task_id:0
+#: view:project.issue.report:0
+#: field:project.issue.report,task_id:0
+msgid "Task"
+msgstr "任务"
+
+#. module: project_issue
+#: view:board.board:0
+msgid "Issues By Stage"
+msgstr "按状态查看缺陷"
+
+#. module: project_issue
+#: field:project.issue,partner_mobile:0
+msgid "Mobile"
+msgstr "手机"
+
+#. module: project_issue
+#: field:project.issue,message_ids:0
+msgid "Messages"
+msgstr "消息"
+
+#. module: project_issue
+#: model:ir.model,name:project_issue.model_project_project
+#: view:project.issue:0
+#: field:project.issue,project_id:0
+#: view:project.issue.report:0
+#: field:project.issue.report,project_id:0
+msgid "Project"
+msgstr "项目"
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.action_view_my_open_project_issue_tree
+msgid "My Open Project issues"
+msgstr "我的未处理缺陷"
+
+#. module: project_issue
+#: selection:project.issue,state:0
+#: selection:project.issue.report,state:0
+msgid "Cancelled"
+msgstr "已取消"
+
+#. module: project_issue
+#: code:addons/project_issue/project_issue.py:360
+#, python-format
+msgid "Warning !"
+msgstr "警告!"
+
+#. module: project_issue
+#: field:project.issue.report,date_closed:0
+msgid "Date of Closing"
+msgstr "结束日期"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Issue Tracker Search"
+msgstr "缺陷列表"
+
+#. module: project_issue
+#: field:project.issue.report,working_hours_open:0
+msgid "Avg. Working Hours to Open"
+msgstr "距开始日期小时数"
+
+#. module: project_issue
+#: field:project.issue,date_action_next:0
+msgid "Next Action"
+msgstr "下一动作"
+
+#. module: project_issue
+#: help:project.project,project_escalation_id:0
+msgid ""
+"If any issue is escalated from the current Project, it will be listed under "
+"the project selected here."
+msgstr "如果当前项目的缺陷被提升,则这个缺陷会归属于这里输入的项目"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Extra Info"
+msgstr "附加信息"
+
+#. module: project_issue
+#: model:ir.actions.act_window,help:project_issue.action_project_issue_report
+msgid ""
+"This report on the project issues allows you to analyse the quality of your "
+"support or after-sales services. You can track the issues per age. You can "
+"analyse the time required to open or close an issue, the number of email to "
+"exchange and the time spent on average by issues."
+msgstr "缺陷报表用于分析你的支持或售后服务的数量。报表自动分页。可以分析开始处理或关闭一个缺陷需要的时间,邮件的数量和处理缺陷的平均时间。"
+
+#. module: project_issue
+#: view:project.issue:0
+#: field:project.issue,partner_id:0
+#: view:project.issue.report:0
+#: field:project.issue.report,partner_id:0
+msgid "Partner"
+msgstr "业务伙伴"
+
+#. module: project_issue
+#: code:addons/project_issue/project_issue.py:473
+#, python-format
+msgid " (copy)"
+msgstr " (copy)"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Previous"
+msgstr "上一个"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Statistics"
+msgstr "统计信息"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Convert To Task"
+msgstr "转为任务"
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.action_project_issue_report
+#: model:ir.ui.menu,name:project_issue.menu_project_issue_report_tree
+#: view:project.issue.report:0
+msgid "Issues Analysis"
+msgstr "缺陷分析"
+
+#. module: project_issue
+#: field:project.issue.version,name:0
+msgid "Version Number"
+msgstr "版本号"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Next"
+msgstr "下一个"
+
+#. module: project_issue
+#: view:project.issue:0
+#: field:project.issue,priority:0
+#: view:project.issue.report:0
+#: field:project.issue.report,priority:0
+msgid "Priority"
+msgstr "优先级"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Send New Email"
+msgstr "发送新电子邮件"
+
+#. module: project_issue
+#: view:project.issue:0
+#: field:project.issue,version_id:0
+#: view:project.issue.report:0
+#: field:project.issue.report,version_id:0
+msgid "Version"
+msgstr "版本"
+
+#. module: project_issue
+#: model:ir.module.module,shortdesc:project_issue.module_meta_information
+msgid "Issue Management in Project Management"
+msgstr "项目管理中的缺陷管理"
+
+#. module: project_issue
+#: view:board.board:0
+msgid "Pending Issues"
+msgstr "暂停的缺陷"
+
+#. module: project_issue
+#: view:project.issue.report:0
+msgid "Open Working Hours"
+msgstr "距开始处理小时数"
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.project_issue_categ_action
+msgid "Issue Categories"
+msgstr "缺陷类别"
+
+#. module: project_issue
+#: field:project.issue,email_from:0
+msgid "Email"
+msgstr "电子邮件"
+
+#. module: project_issue
+#: field:project.issue,canal_id:0
+#: field:project.issue.report,canal_id:0
+msgid "Channel"
+msgstr "渠道"
+
+#. module: project_issue
+#: selection:project.issue,priority:0
+#: selection:project.issue.report,priority:0
+msgid "Lowest"
+msgstr "最低"
+
+#. module: project_issue
+#: field:project.issue,create_date:0
+#: field:project.issue.report,creation_date:0
+msgid "Creation Date"
+msgstr "创建日期"
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.project_issue_version_action
+#: model:ir.ui.menu,name:project_issue.menu_project_issue_version_act
+msgid "Versions"
+msgstr "版本"
+
+#. module: project_issue
+#: field:project.issue,partner_phone:0
+msgid "Phone"
+msgstr "电话"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Reset to Draft"
+msgstr "重置为草稿"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Today"
+msgstr "今天"
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.open_board_project_issue
+#: model:ir.ui.menu,name:project_issue.menu_deshboard_project_issue
+msgid "Project Issue Dashboard"
+msgstr "缺陷控制台"
+
+#. module: project_issue
+#: view:project.issue:0
+#: view:project.issue.report:0
+msgid "Done"
+msgstr "已完成"
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "July"
+msgstr "七月"
+
+#. module: project_issue
+#: model:ir.ui.menu,name:project_issue.menu_project_issue_category_act
+msgid "Categories"
+msgstr "类别"
+
+#. module: project_issue
+#: view:project.issue:0
+#: view:project.issue.report:0
+#: field:project.issue.report,type_id:0
+msgid "Stage"
+msgstr "阶段"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "History Information"
+msgstr "历史信息"
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.action_view_current_project_issue_tree
+#: model:ir.actions.act_window,name:project_issue.action_view_pending_project_issue_tree
+msgid "Project issues"
+msgstr "缺陷"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Communication & History"
+msgstr "沟通&日志"
+
+#. module: project_issue
+#: view:project.issue.report:0
+msgid "My Open Project Issue"
+msgstr "我未处理的缺陷"
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.action_view_my_project_issue_tree
+msgid "My Project Issues"
+msgstr "我的缺陷清单"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Contact"
+msgstr "联系方式"
+
+#. module: project_issue
+#: view:board.board:0
+msgid "My Board"
+msgstr "我的控制台"
+
+#. module: project_issue
+#: view:board.board:0
+msgid "My Issues"
+msgstr "我的缺陷清单"
+
+#. module: project_issue
+#: help:project.issue,canal_id:0
+msgid ""
+"The channels represent the different communication modes available with the "
+"customer. With each commercial opportunity, you can indicate the canall "
+"which is this opportunity source."
+msgstr "渠道是不同的接触客户的方式。每个商机都要指定来源的渠道。"
+
+#. module: project_issue
+#: model:ir.actions.act_window,help:project_issue.project_issue_version_action
+msgid ""
+"You can use the issues tracker in OpenERP to handle bugs in the software "
+"development project, to handle claims in after-sales services, etc. Define "
+"here the different versions of your products on which you can work on issues."
+msgstr "可以用缺陷跟踪来管理软件开发中的Bug或售后的产品缺陷等。这里输入您管理缺陷的产品的不同版本。"
+
+#. module: project_issue
+#: code:addons/project_issue/project_issue.py:283
+#, python-format
+msgid "Tasks"
+msgstr "任务"
+
+#. module: project_issue
+#: field:project.issue.report,nbr:0
+msgid "# of Issues"
+msgstr "缺陷编号"
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "September"
+msgstr "九月"
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "December"
+msgstr "十二月"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Issue Tracker Tree"
+msgstr "缺陷列表"
+
+#. module: project_issue
+#: help:project.issue,assigned_to:0
+msgid "This is the current user to whom the related task have been assigned"
+msgstr "这是这个任务现在的负责人"
+
+#. module: project_issue
+#: view:project.issue:0
+#: view:project.issue.report:0
+#: field:project.issue.report,month:0
+msgid "Month"
+msgstr "月份"
+
+#. module: project_issue
+#: model:ir.model,name:project_issue.model_project_issue_report
+msgid "project.issue.report"
+msgstr "project.issue.report"
+
+#. module: project_issue
+#: code:addons/project_issue/project_issue.py:362
+#: view:project.issue:0
+#, python-format
+msgid "Escalate"
+msgstr "提升"
+
+#. module: project_issue
+#: model:crm.case.categ,name:project_issue.feature_request_categ
+msgid "Feature Requests"
+msgstr "功能请求"
+
+#. module: project_issue
+#: field:project.issue,write_date:0
+msgid "Update Date"
+msgstr "更新日期"
+
+#. module: project_issue
+#: model:ir.module.module,description:project_issue.module_meta_information
+msgid ""
+"\n"
+" This module provide Issues/Bugs Management in Project\n"
+" "
+msgstr ""
+"\n"
+" 这个模块在项目管理中增加了缺陷管理\n"
+" "
+
+#. module: project_issue
+#: view:project.issue:0
+#: field:project.issue,categ_id:0
+#: view:project.issue.report:0
+#: field:project.issue.report,categ_id:0
+msgid "Category"
+msgstr "类别"
+
+#. module: project_issue
+#: view:project.issue.report:0
+msgid "#Number of Project Issues"
+msgstr "缺陷编号"
+
+#. module: project_issue
+#: help:project.issue,email_cc:0
+msgid ""
+"These email addresses will be added to the CC field of all inbound and "
+"outbound emails for this record before being sent. Separate multiple email "
+"addresses with a comma"
+msgstr "这些邮箱地址将添加到所有接收的发送邮件的抄送字段,用逗号分隔多个邮件地址。"
+
+#. module: project_issue
+#: selection:project.issue,state:0
+#: selection:project.issue.report,state:0
+msgid "Draft"
+msgstr "草稿"
+
+#. module: project_issue
+#: selection:project.issue,priority:0
+#: selection:project.issue.report,priority:0
+msgid "Low"
+msgstr "最低"
+
+#. module: project_issue
+#: field:project.issue,date_closed:0
+#: selection:project.issue,state:0
+#: selection:project.issue.report,state:0
+msgid "Closed"
+msgstr "已结束"
+
+#. module: project_issue
+#: field:project.issue.report,delay_close:0
+msgid "Avg. Delay to Close"
+msgstr "平均耗用天数"
+
+#. module: project_issue
+#: view:project.issue:0
+#: selection:project.issue,state:0
+#: view:project.issue.report:0
+#: selection:project.issue.report,state:0
+msgid "Pending"
+msgstr "等待中"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Status"
+msgstr "状态"
+
+#. module: project_issue
+#: view:project.issue.report:0
+msgid "#Project Issues"
+msgstr "缺陷编号"
+
+#. module: project_issue
+#: view:board.board:0
+msgid "Current Issues"
+msgstr "当前缺陷"
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "August"
+msgstr "八月"
+
+#. module: project_issue
+#: selection:project.issue,priority:0
+#: selection:project.issue.report,priority:0
+msgid "Normal"
+msgstr "一般"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Global CC"
+msgstr "完整抄送"
+
+#. module: project_issue
+#: view:project.issue:0
+#: selection:project.issue,state:0
+msgid "To Do"
+msgstr "待办"
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "June"
+msgstr "六月"
+
+#. module: project_issue
+#: field:project.issue,day_close:0
+msgid "Days to Close"
+msgstr "剩余天数"
+
+#. module: project_issue
+#: field:project.issue,active:0
+#: field:project.issue.version,active:0
+msgid "Active"
+msgstr "生效"
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "November"
+msgstr "十一月"
+
+#. module: project_issue
+#: view:project.issue:0
+#: view:project.issue.report:0
+msgid "Extended Filters..."
+msgstr "增加筛选条件"
+
+#. module: project_issue
+#: view:project.issue.report:0
+msgid "Search"
+msgstr "搜索"
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "October"
+msgstr "十月"
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "January"
+msgstr "一月"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Feature Tracker Tree"
+msgstr "缺陷列表"
+
+#. module: project_issue
+#: model:crm.case.categ,name:project_issue.bug_categ
+msgid "Bugs"
+msgstr ""
+
+#. module: project_issue
+#: view:board.board:0
+msgid "Issues By State"
+msgstr "按状态列出缺陷"
+
+#. module: project_issue
+#: view:project.issue:0
+#: field:project.issue,date:0
+msgid "Date"
+msgstr "日期"
+
+#. module: project_issue
+#: field:project.issue,partner_address_id:0
+msgid "Partner Contact"
+msgstr "业务伙伴联系人"
+
+#. module: project_issue
+#: field:project.issue,type_id:0
+msgid "Resolution"
+msgstr "解决方案"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "History"
+msgstr "历史记录"
+
+#. module: project_issue
+#: field:project.issue,assigned_to:0
+#: view:project.issue.report:0
+#: field:project.issue.report,assigned_to:0
+msgid "Assigned to"
+msgstr "指派到"
+
+#. module: project_issue
+#: field:project.project,reply_to:0
+msgid "Reply-To Email Address"
+msgstr "回复给邮件地址"
+
+#. module: project_issue
+#: selection:project.issue,priority:0
+#: selection:project.issue.report,priority:0
+msgid "Highest"
+msgstr "最高"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Attachments"
+msgstr "附件"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Issue Tracker Form"
+msgstr "缺陷"
+
+#. module: project_issue
+#: view:project.issue:0
+#: field:project.issue,state:0
+#: view:project.issue.report:0
+#: field:project.issue.report,state:0
+msgid "State"
+msgstr "状态"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "General"
+msgstr "一般"
+
+#. module: project_issue
+#: view:project.issue.version:0
+msgid "Issue Version"
+msgstr "缺陷版本"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Communication"
+msgstr "沟通"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Cancel"
+msgstr "取消(&C)"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Close"
+msgstr "结束"
+
+#. module: project_issue
+#: view:project.issue:0
+#: selection:project.issue.report,state:0
+msgid "Open"
+msgstr "待办"
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.act_project_project_2_project_issue_all
+#: model:ir.actions.act_window,name:project_issue.project_issue_categ_act0
+#: model:ir.ui.menu,name:project_issue.menu_project_issue_track
+#: view:project.issue:0
+msgid "Issues"
+msgstr "缺陷"
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.action_project_issue_graph_stage
+#: model:ir.actions.act_window,name:project_issue.action_project_issue_graph_state
+#: model:ir.model,name:project_issue.model_project_issue
+#: model:ir.ui.menu,name:project_issue.menu_project_confi
+#: view:project.issue.report:0
+msgid "Project Issue"
+msgstr "缺陷"
+
+#. module: project_issue
+#: view:project.issue:0
+#: field:project.issue,user_id:0
+#: view:project.issue.report:0
+#: field:project.issue.report,user_id:0
+msgid "Responsible"
+msgstr "负责人"
+
+#. module: project_issue
+#: help:project.issue,progress:0
+msgid "Computed as: Time Spent / Total Time."
+msgstr "计算方式:花费时间 / 总时间"
+
+#. module: project_issue
+#: view:project.issue:0
+#: view:project.issue.report:0
+msgid "Current"
+msgstr "当前的"
+
+#. module: project_issue
+#: model:ir.actions.act_window,help:project_issue.project_issue_categ_act0
+msgid ""
+"Issues such as system bugs, customer complaints, and material breakdowns are "
+"collected here. You can define the stages assigned when solving the project "
+"issue (analysis, development, done). With the mailgateway module, issues can "
+"be integrated through an email address (example: support@mycompany.com)"
+msgstr ""
+"缺陷(如系统故障、客户投诉、材料破损)在这里搜集。可以输入缺陷处理的阶段(分析原因、正在处理、已完成)。安装了mailgateway模块后,缺陷管理可以与"
+"特定邮件集成(如:support@mycompany.com)"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Details"
+msgstr "详细信息"
+
+#. module: project_issue
+#: help:project.issue,email_from:0
+msgid "These people will receive email."
+msgstr "这些人将收到电子邮件。"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Reply"
+msgstr "回复"
+
+#. module: project_issue
+#: field:project.issue,name:0
+msgid "Issue"
+msgstr "缺陷"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Feature Tracker Search"
+msgstr "缺陷列表"
+
+#. module: project_issue
+#: view:project.issue:0
+#: field:project.issue,description:0
+msgid "Description"
+msgstr "描述"
+
+#. module: project_issue
+#: field:project.issue,section_id:0
+msgid "Sales Team"
+msgstr "销售团队"
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "May"
+msgstr "五月"
+
+#. module: project_issue
+#: model:ir.actions.act_window,name:project_issue.action_project_issue_report
+#: model:ir.ui.menu,name:project_issue.menu_project_issue_report_tree
+msgid "Issue Analysis"
+msgstr ""
+
+#. module: project_issue
+#: view:project.issue.report:0
+msgid "Sale Team "
+msgstr "销售团队 "
+
+#. module: project_issue
+#: view:project.issue.report:0
+#: field:project.issue.report,email:0
+msgid "# Emails"
+msgstr "电子邮件"
+
+#. module: project_issue
+#: field:project.issue,partner_name:0
+msgid "Employee's Name"
+msgstr "员工姓名"
+
+#. module: project_issue
+#: help:project.issue,state:0
+msgid ""
+"The state is set to 'Draft', when a case is created. "
+" \n"
+"If the case is in progress the state is set to 'Open'. "
+" \n"
+"When the case is over, the state is set to 'Done'. "
+" \n"
+"If the case needs to be reviewed then the state is set to 'Pending'."
+msgstr ""
+"当一个业务创建时状态设为'草稿'\n"
+"如果业务正在处理状态设为'开启'\n"
+"当业务结束状态设为'完成'\n"
+"如果业务需要审查状态设为'待定'"
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "February"
+msgstr "二月"
+
+#. module: project_issue
+#: code:addons/project_issue/project_issue.py:61
+#, python-format
+msgid "Issue '%s' has been opened."
+msgstr "缺陷 ‘%s' 已新建"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "Feature description"
+msgstr "功能描述"
+
+#. module: project_issue
+#: field:project.project,project_escalation_id:0
+msgid "Project Escalation"
+msgstr "提升"
+
+#. module: project_issue
+#: help:project.issue,section_id:0
+msgid ""
+"Sales team to which Case belongs to. Define "
+"Responsible user and Email account for mail gateway."
+msgstr "这个业务所属的销售团队。输入团队负责人和邮箱。"
+
+#. module: project_issue
+#: view:project.issue.report:0
+msgid "Month-1"
+msgstr "上月"
+
+#. module: project_issue
+#: code:addons/project_issue/project_issue.py:76
+#, python-format
+msgid "Issue '%s' has been closed."
+msgstr "缺陷 '%s' 已处理"
+
+#. module: project_issue
+#: selection:project.issue.report,month:0
+msgid "April"
+msgstr "四月"
+
+#. module: project_issue
+#: view:project.issue:0
+msgid "References"
+msgstr "参考资料"
+
+#. module: project_issue
+#: field:project.issue,working_hours_close:0
+msgid "Working Hours to Close the Issue"
+msgstr "剩余工时"
+
+#. module: project_issue
+#: field:project.issue,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: project_issue
+#: code:addons/project_issue/project_issue.py:377
+#, python-format
+msgid "No Title"
+msgstr "无标题"
+
+#. module: project_issue
+#: help:project.issue.report,delay_close:0
+#: help:project.issue.report,delay_open:0
+msgid "Number of Days to close the project issue"
+msgstr "剩余天数"
+
+#. module: project_issue
+#: view:project.issue.report:0
+#: field:project.issue.report,section_id:0
+msgid "Sale Team"
+msgstr "销售团队"
+
+#. module: project_issue
+#: field:project.issue.report,working_hours_close:0
+msgid "Avg. Working Hours to Close"
+msgstr "平均剩余工时"
+
+#. module: project_issue
+#: selection:project.issue,priority:0
+#: selection:project.issue.report,priority:0
+msgid "High"
+msgstr "高"
+
+#. module: project_issue
+#: field:project.issue,date_deadline:0
+msgid "Deadline"
+msgstr "截止日期"
+
+#. module: project_issue
+#: field:project.issue,date_action_last:0
+msgid "Last Action"
+msgstr "最近动作"
+
+#. module: project_issue
+#: view:project.issue.report:0
+#: field:project.issue.report,name:0
+msgid "Year"
+msgstr "年"
+
+#. module: project_issue
+#: field:project.issue,duration:0
+msgid "Duration"
+msgstr "时长"
+
+#. module: project_issue
+#: view:board.board:0
+msgid "My Open Issues by Creation Date"
+msgstr "未处理的缺陷(按创建日期)"
+
+#~ msgid "Maintenance"
+#~ msgstr "维护"
diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py
index a8a32847243..b6032241a8e 100644
--- a/addons/project_issue/project_issue.py
+++ b/addons/project_issue/project_issue.py
@@ -205,18 +205,18 @@ class project_issue(crm.crm_case, osv.osv):
'duration': fields.float('Duration'),
'task_id': fields.many2one('project.task', 'Task', domain="[('project_id','=',project_id)]"),
'day_open': fields.function(_compute_day, string='Days to Open', \
- method=True, multi='compute_day', type="float", store=True),
+ multi='compute_day', type="float", store=True),
'day_close': fields.function(_compute_day, string='Days to Close', \
- method=True, multi='compute_day', type="float", store=True),
+ multi='compute_day', type="float", store=True),
'assigned_to': fields.many2one('res.users', 'Assigned to', required=False, select=1),
'working_hours_open': fields.function(_compute_day, string='Working Hours to Open the Issue', \
- method=True, multi='compute_day', type="float", store=True),
+ multi='compute_day', type="float", store=True),
'working_hours_close': fields.function(_compute_day, string='Working Hours to Close the Issue', \
- method=True, multi='compute_day', type="float", store=True),
+ multi='compute_day', type="float", store=True),
'message_ids': fields.one2many('mailgate.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
'date_action_last': fields.datetime('Last Action', readonly=1),
'date_action_next': fields.datetime('Next Action', readonly=1),
- 'progress': fields.function(_hours_get, method=True, string='Progress (%)', multi='hours', group_operator="avg", help="Computed as: Time Spent / Total Time.",
+ 'progress': fields.function(_hours_get, string='Progress (%)', multi='hours', group_operator="avg", help="Computed as: Time Spent / Total Time.",
store = {
'project.issue': (lambda self, cr, uid, ids, c={}: ids, ['task_id'], 10),
'project.task': (_get_issue_task, ['progress'], 10),
diff --git a/addons/project_issue_sheet/i18n/zh_CN.po b/addons/project_issue_sheet/i18n/zh_CN.po
new file mode 100644
index 00000000000..eda41afa445
--- /dev/null
+++ b/addons/project_issue_sheet/i18n/zh_CN.po
@@ -0,0 +1,80 @@
+# Chinese (Simplified) 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-07-02 03:48+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Chinese (Simplified) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-07-03 04:47+0000\n"
+"X-Generator: Launchpad (build 13168)\n"
+
+#. module: project_issue_sheet
+#: model:ir.module.module,description:project_issue_sheet.module_meta_information
+msgid ""
+"\n"
+" This module adds the Timesheet support for the "
+"Issues/Bugs Management in Project\n"
+" "
+msgstr ""
+"\n"
+" 此模块把缺陷管理和计工单集成在一起了\n"
+" "
+
+#. module: project_issue_sheet
+#: model:ir.model,name:project_issue_sheet.model_account_analytic_line
+msgid "Analytic Line"
+msgstr "辅助核算明细"
+
+#. module: project_issue_sheet
+#: model:ir.model,name:project_issue_sheet.model_project_issue
+msgid "Project Issue"
+msgstr "缺陷"
+
+#. module: project_issue_sheet
+#: model:ir.model,name:project_issue_sheet.model_hr_analytic_timesheet
+msgid "Timesheet Line"
+msgstr "计工单明细"
+
+#. module: project_issue_sheet
+#: view:project.issue:0
+msgid "Timesheet"
+msgstr "计工单"
+
+#. module: project_issue_sheet
+#: field:project.issue,analytic_account_id:0
+msgid "Analytic Account"
+msgstr "辅助核算项目"
+
+#. module: project_issue_sheet
+#: view:project.issue:0
+msgid "Worklogs"
+msgstr "工作记录"
+
+#. module: project_issue_sheet
+#: field:account.analytic.line,create_date:0
+msgid "Create Date"
+msgstr "创建日期"
+
+#. module: project_issue_sheet
+#: field:project.issue,timesheet_ids:0
+msgid "Timesheets"
+msgstr "计工单"
+
+#. module: project_issue_sheet
+#: model:ir.module.module,shortdesc:project_issue_sheet.module_meta_information
+msgid "Add the Timesheet support for Issue Management in Project Management"
+msgstr "对缺陷管理增加了计工单支持"
+
+#. module: project_issue_sheet
+#: field:hr.analytic.timesheet,issue_id:0
+msgid "Issue"
+msgstr "缺陷"
diff --git a/addons/project_long_term/i18n/zh_CN.po b/addons/project_long_term/i18n/zh_CN.po
new file mode 100644
index 00000000000..65ebffc73c9
--- /dev/null
+++ b/addons/project_long_term/i18n/zh_CN.po
@@ -0,0 +1,599 @@
+# Chinese (Simplified) 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-06-30 06:07+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Chinese (Simplified) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2011-07-01 04:54+0000\n"
+"X-Generator: Launchpad (build 13168)\n"
+
+#. module: project_long_term
+#: model:ir.module.module,shortdesc:project_long_term.module_meta_information
+msgid "Long Term Project Management"
+msgstr "长期项目管理"
+
+#. module: project_long_term
+#: view:project.compute.phases:0
+msgid "Compute Scheduling of Phases"
+msgstr "项目周期计算"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: field:project.phase,next_phase_ids:0
+msgid "Next Phases"
+msgstr "下一阶段"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Project's Tasks"
+msgstr "项目任务"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.act_project_phases
+msgid "Phases"
+msgstr "阶段"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: view:project.resource.allocation:0
+msgid "Group By..."
+msgstr "分组..."
+
+#. module: project_long_term
+#: constraint:project.project:0
+msgid "Error! project start-date must be lower then project end-date."
+msgstr "错误!项目的开始日期必须小于项目的结束日期"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.act_resouce_allocation
+#: view:project.resource.allocation:0
+msgid "Resources Allocation"
+msgstr "资源分配"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Displaying settings"
+msgstr "显示设置"
+
+#. module: project_long_term
+#: field:project.compute.phases,target_project:0
+msgid "Schedule"
+msgstr "日程"
+
+#. module: project_long_term
+#: model:ir.module.module,description:project_long_term.module_meta_information
+msgid ""
+"\n"
+"\n"
+" Long Term Project management module that tracks planning, "
+"scheduling, resources allocation.\n"
+" Mainly used with Big project management.\n"
+" - Project Phases will be maintained by Manager of the project\n"
+" - Compute Phase Scheduling: Compute start date and end date of "
+"the phases which are in draft,open and pending state of the project given.\n"
+" If no project given then all the "
+"draft,open and pending state phases will be taken\n"
+" - Compute Task Scheduling: This works same as the scheduler "
+"button on project.phase. It takes the project as argument and computes all "
+"the open,draft and pending tasks\n"
+" - Schedule Tasks: All the tasks which are in draft,pending and "
+"open state are scheduled with taking the phase's start date\n"
+"\n"
+" "
+msgstr ""
+
+#. module: project_long_term
+#: constraint:project.task:0
+msgid "Error ! You cannot create recursive tasks."
+msgstr "错误!不能创建循环引用的任务"
+
+#. module: project_long_term
+#: model:ir.ui.menu,name:project_long_term.menu_resouce_allocation
+msgid "Resource Allocations"
+msgstr "资源分配"
+
+#. module: project_long_term
+#: constraint:project.project:0
+msgid "Error! You cannot assign escalation to the same project!"
+msgstr "不能升级到相同的项目"
+
+#. module: project_long_term
+#: code:addons/project_long_term/project_long_term.py:128
+#, python-format
+msgid "Day"
+msgstr "天"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_task
+msgid "Task"
+msgstr "任务"
+
+#. module: project_long_term
+#: selection:project.compute.phases,target_project:0
+msgid "Compute a Single Project"
+msgstr "计算单个项目"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: field:project.phase,previous_phase_ids:0
+msgid "Previous Phases"
+msgstr "上一阶段"
+
+#. module: project_long_term
+#: help:project.phase,product_uom:0
+msgid "UoM (Unit of Measure) is the unit of measurement for Duration"
+msgstr "某个周期的计量单位"
+
+#. module: project_long_term
+#: help:project.phase,date_end:0
+msgid ""
+" It's computed by the scheduler according to the start date and the duration."
+msgstr " 这个日期是由开始日期和计划日数根据日历计算出来的。"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_project
+#: field:project.compute.phases,project_id:0
+#: field:project.compute.tasks,project_id:0
+#: view:project.phase:0
+#: field:project.phase,project_id:0
+#: view:project.resource.allocation:0
+#: field:project.resource.allocation,project_id:0
+#: view:project.task:0
+msgid "Project"
+msgstr "项目"
+
+#. module: project_long_term
+#: code:addons/project_long_term/wizard/project_compute_phases.py:50
+#, python-format
+msgid "Error!"
+msgstr "错误!"
+
+#. module: project_long_term
+#: selection:project.phase,state:0
+msgid "Cancelled"
+msgstr "已取消"
+
+#. module: project_long_term
+#: help:project.resource.allocation,date_end:0
+msgid "Ending Date"
+msgstr "结束日期"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Planning"
+msgstr "计划"
+
+#. module: project_long_term
+#: field:project.phase,constraint_date_end:0
+msgid "Deadline"
+msgstr "截止日期"
+
+#. module: project_long_term
+#: view:project.compute.phases:0
+#: view:project.compute.tasks:0
+msgid "_Cancel"
+msgstr "取消(_C)"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.action_project_compute_phases
+#: model:ir.ui.menu,name:project_long_term.menu_compute_phase
+msgid "Compute Phase Scheduling"
+msgstr "计算阶段日程"
+
+#. module: project_long_term
+#: code:addons/project_long_term/project_long_term.py:190
+#, python-format
+msgid " (copy)"
+msgstr " (copy)"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: view:project.resource.allocation:0
+#: field:project.resource.allocation,useability:0
+msgid "Availability"
+msgstr "可用"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: field:project.phase,state:0
+msgid "State"
+msgstr "状态"
+
+#. module: project_long_term
+#: view:project.compute.phases:0
+#: view:project.compute.tasks:0
+msgid "C_ompute"
+msgstr "计算(_O)"
+
+#. module: project_long_term
+#: view:project.compute.phases:0
+msgid "Compute Scheduling of phases for all or specified project"
+msgstr "针对所有或特定的一个项目计算阶段周期"
+
+#. module: project_long_term
+#: field:project.phase,product_uom:0
+msgid "Duration UoM"
+msgstr "时间段计量单位"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.action_project_compute_tasks
+#: model:ir.ui.menu,name:project_long_term.menu_compute_tasks
+msgid "Compute Task Scheduling"
+msgstr "计算项目日程"
+
+#. module: project_long_term
+#: field:project.phase,constraint_date_start:0
+msgid "Minimum Start Date"
+msgstr "最早开始时间"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_resource_allocation
+#: view:project.phase:0
+#: view:project.resource.allocation:0
+msgid "Project Resource Allocation"
+msgstr "项目资源分配"
+
+#. module: project_long_term
+#: view:project.compute.tasks:0
+msgid "Compute Scheduling of Task"
+msgstr "计算任务日程"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.act_project_resource
+#: model:ir.ui.menu,name:project_long_term.menu_pm_resources_project1
+#: model:ir.ui.menu,name:project_long_term.menu_view_resource
+#: view:project.resource.allocation:0
+msgid "Resources"
+msgstr "资源"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,help:project_long_term.action_project_compute_phases
+msgid ""
+"To schedule phases of all or a specified project. It then open a gantt "
+"view.\n"
+"\t "
+msgstr ""
+"某个或所有项目的阶段日程。会显示一个甘特图。\n"
+"\t "
+
+#. module: project_long_term
+#: help:project.resource.allocation,date_start:0
+msgid "Starting Date"
+msgstr "开始日期"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.project_phase_task_list
+msgid "Related Tasks"
+msgstr "相关任务"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Dates"
+msgstr "日期"
+
+#. module: project_long_term
+#: help:project.resource.allocation,useability:0
+msgid ""
+"Availability of this resource for this project phase in percentage (=50%)"
+msgstr "这个资源在此项目阶段的可用性,用百分数表示"
+
+#. module: project_long_term
+#: help:project.phase,constraint_date_start:0
+msgid "force the phase to start after this date"
+msgstr "强制项目在此日期之后开始"
+
+#. module: project_long_term
+#: field:project.phase,task_ids:0
+msgid "Project Tasks"
+msgstr "项目任务列表"
+
+#. module: project_long_term
+#: field:project.phase,resource_ids:0
+msgid "Project Resources"
+msgstr "项目资源"
+
+#. module: project_long_term
+#: view:project.schedule.tasks:0
+msgid "_Ok"
+msgstr "确定(_O)"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Schedule and Display info"
+msgstr "日程和显示信息"
+
+#. module: project_long_term
+#: help:project.phase,date_start:0
+msgid ""
+"It's computed by the scheduler according the project date or the end date of "
+"the previous phase."
+msgstr "这个日期根据项目的开始日期或前一个阶段的结束日期结算而来"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Month"
+msgstr "月份"
+
+#. module: project_long_term
+#: constraint:project.phase:0
+msgid "Phase start-date must be lower than phase end-date."
+msgstr "阶段的开始日期必须早于项目的结束日期"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_schedule_tasks
+msgid "project.schedule.tasks"
+msgstr "project.schedule.tasks"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,help:project_long_term.act_project_phase
+msgid ""
+"A project can be split into the different phases. For each phase, you can "
+"define your resources allocation, describe different tasks and link your "
+"phase to previous and next phases, add date constraints for the automated "
+"scheduling. Use the long term planning in order to planify your available "
+"human resources, convert your phases into a series of tasks when you start "
+"working on the project."
+msgstr ""
+"项目能分成不同的阶段。可以为每个阶段分配资源,定义不同的任务并可以把各个阶段连起来,按日历自动计算计划日期。使用长期计划可以在项目的开始阶段管理人员可用性"
+"、划分每阶段的任务。"
+
+#. module: project_long_term
+#: field:project.phase,date_start:0
+#: field:project.resource.allocation,date_start:0
+msgid "Start Date"
+msgstr "开始日期"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Resource Allocation"
+msgstr "资源分配"
+
+#. module: project_long_term
+#: help:project.phase,constraint_date_end:0
+msgid "force the phase to finish before this date"
+msgstr "强制该阶段在此日期前完成"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: selection:project.phase,state:0
+msgid "Draft"
+msgstr "草稿"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: selection:project.phase,state:0
+msgid "Pending"
+msgstr "等待中"
+
+#. module: project_long_term
+#: field:project.resource.allocation,name:0
+msgid "unknown"
+msgstr "未知的"
+
+#. module: project_long_term
+#: field:project.resource.allocation,user_id:0
+msgid "User"
+msgstr "用户"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Task Detail"
+msgstr "任务细节"
+
+#. module: project_long_term
+#: help:project.project,resource_calendar_id:0
+msgid "Timetable working hours to adjust the gantt diagram report"
+msgstr "从时间表的工作时间来调整甘特图报表"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_compute_tasks
+msgid "Project Compute Tasks"
+msgstr "计算任务计划"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Constraints"
+msgstr "限制"
+
+#. module: project_long_term
+#: help:project.phase,sequence:0
+msgid "Gives the sequence order when displaying a list of phases."
+msgstr "输入序号用于阶段列表排序"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.act_project_phase
+#: model:ir.actions.act_window,name:project_long_term.act_project_phase_list
+#: model:ir.ui.menu,name:project_long_term.menu_project_phase
+#: model:ir.ui.menu,name:project_long_term.menu_project_phase_list
+#: view:project.phase:0
+#: field:project.project,phase_ids:0
+msgid "Project Phases"
+msgstr "项目阶段"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: selection:project.phase,state:0
+msgid "Done"
+msgstr "已完成"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Cancel"
+msgstr "取消(&C)"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: selection:project.phase,state:0
+msgid "In Progress"
+msgstr "进行中"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Remaining Hours"
+msgstr "剩余小时数"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: field:project.phase,responsible_id:0
+msgid "Responsible"
+msgstr "负责人"
+
+#. module: project_long_term
+#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar
+#: field:project.project,resource_calendar_id:0
+msgid "Working Time"
+msgstr "工作的时间"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Current"
+msgstr "当前的"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Start Phase"
+msgstr "阶段开始"
+
+#. module: project_long_term
+#: code:addons/project_long_term/wizard/project_compute_phases.py:50
+#, python-format
+msgid "Please Specify Project to be schedule"
+msgstr "请输入要排计划的项目"
+
+#. module: project_long_term
+#: view:project.phase:0
+#: field:project.phase,total_hours:0
+msgid "Total Hours"
+msgstr "总小时数"
+
+#. module: project_long_term
+#: view:project.schedule.tasks:0
+msgid "Task Scheduling completed successfully."
+msgstr "任务日程排列完毕"
+
+#. module: project_long_term
+#: view:project.compute.tasks:0
+msgid "Compute Scheduling of Task for specified project."
+msgstr "为某个特定的项目计算日程"
+
+#. module: project_long_term
+#: view:project.resource.allocation:0
+msgid "Phase"
+msgstr "阶段"
+
+#. module: project_long_term
+#: help:project.phase,state:0
+msgid ""
+"If the phase is created the state 'Draft'.\n"
+" If the phase is started, the state becomes 'In Progress'.\n"
+" If review is needed the phase is in 'Pending' state. "
+" \n"
+" If the phase is over, the states is set to 'Done'."
+msgstr ""
+"新建的阶段状态是草稿\n"
+"开始后的阶段状态是正在进行中\n"
+"如果需要复核则状态为等待中\n"
+"已结束的阶段状态是完成"
+
+#. module: project_long_term
+#: field:project.phase,date_end:0
+#: field:project.resource.allocation,date_end:0
+msgid "End Date"
+msgstr "结束日期"
+
+#. module: project_long_term
+#: view:project.resource.allocation:0
+#: field:project.resource.allocation,resource_id:0
+msgid "Resource"
+msgstr "资源"
+
+#. module: project_long_term
+#: field:project.phase,name:0
+msgid "Name"
+msgstr "名称"
+
+#. module: project_long_term
+#: view:project.phase:0
+msgid "Tasks Details"
+msgstr "任务详情"
+
+#. module: project_long_term
+#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar
+msgid "Working Period"
+msgstr ""
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_resource_resource
+msgid "Resource Detail"
+msgstr "资源明细"
+
+#. module: project_long_term
+#: model:ir.ui.menu,name:project_long_term.menu_phase_schedule
+msgid "Scheduling"
+msgstr "调度"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_phase
+#: view:project.phase:0
+#: field:project.resource.allocation,phase_id:0
+#: view:project.task:0
+#: field:project.task,phase_id:0
+msgid "Project Phase"
+msgstr "项目阶段"
+
+#. module: project_long_term
+#: model:ir.model,name:project_long_term.model_project_compute_phases
+msgid "Project Compute Phases"
+msgstr "计算项目阶段"
+
+#. module: project_long_term
+#: field:project.schedule.tasks,msg:0
+msgid "Message"
+msgstr "消息"
+
+#. module: project_long_term
+#: constraint:project.phase:0
+msgid "Loops in phases not allowed"
+msgstr "阶段间不能递归引用"
+
+#. module: project_long_term
+#: field:project.phase,sequence:0
+msgid "Sequence"
+msgstr "序号"
+
+#. module: project_long_term
+#: selection:project.compute.phases,target_project:0
+msgid "Compute All Projects"
+msgstr "计算所有项目"
+
+#. module: project_long_term
+#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar_leaves
+msgid "Resource Leaves"
+msgstr "成员请假"
+
+#. module: project_long_term
+#: model:ir.actions.act_window,name:project_long_term.action_project_schedule_tasks
+#: view:project.phase:0
+#: view:project.schedule.tasks:0
+msgid "Schedule Tasks"
+msgstr "任务日程"
+
+#. module: project_long_term
+#: help:project.phase,duration:0
+msgid "By default in days"
+msgstr "默认按天"
+
+#. module: project_long_term
+#: field:project.phase,duration:0
+msgid "Duration"
+msgstr "时长"
diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py
index 779c7f6d062..6c5ef7890bf 100644
--- a/addons/project_long_term/project_long_term.py
+++ b/addons/project_long_term/project_long_term.py
@@ -23,6 +23,7 @@ from datetime import datetime
from tools.translate import _
from osv import fields, osv
from resource.faces import task as Task
+from operator import itemgetter
class project_phase(osv.osv):
_name = "project.phase"
@@ -119,7 +120,7 @@ class project_phase(osv.osv):
'state': fields.selection([('draft', 'Draft'), ('open', 'In Progress'), ('pending', 'Pending'), ('cancelled', 'Cancelled'), ('done', 'Done')], 'State', readonly=True, required=True,
help='If the phase is created the state \'Draft\'.\n If the phase is started, the state becomes \'In Progress\'.\n If review is needed the phase is in \'Pending\' state.\
\n If the phase is over, the states is set to \'Done\'.'),
- 'total_hours': fields.function(_compute, method=True, string='Total Hours'),
+ 'total_hours': fields.function(_compute, string='Total Hours'),
}
_defaults = {
'responsible_id': lambda obj,cr,uid,context: uid,
@@ -398,7 +399,7 @@ class project_resource_allocation(osv.osv):
res[allocation.id] = name
return res
_columns = {
- 'name': fields.function(get_name, method=True, type='char', size=256),
+ 'name': fields.function(get_name, type='char', size=256),
'resource_id': fields.many2one('resource.resource', 'Resource', required=True),
'phase_id': fields.many2one('project.phase', 'Project Phase', ondelete='cascade', required=True),
'project_id': fields.related('phase_id', 'project_id', type='many2one', relation="project.project", string='Project', store=True),
@@ -729,7 +730,7 @@ class project_task(osv.osv):
if context is None:
context = {}
task = self.browse(cr, uid, task_id, context=context)
- duration = str(task.planned_hours )+ 'H'
+ duration = str(task.planned_hours)+ 'H'
str_resource = False
parent = task.parent_ids
if task.phase_id.resource_ids:
@@ -743,10 +744,12 @@ class project_task(osv.osv):
effort = \'%s\'
resource = %s
'''%(task.id, task.name, duration, str_resource)
- if parent:
+ if task.child_ids:
+ seq = [[child.planned_hours, child.id] for child in task.child_ids]
+ seq.sort(key=itemgetter(0))
s +='''
start = up.Task_%s.end
-'''%(parent[0].id)
+ '''%(seq[-1][1])
else:
s = '''
def Task_%s():
@@ -754,10 +757,12 @@ class project_task(osv.osv):
effort = \'%s\'
resource = %s
'''%(task.id, task.name, duration, str_resource)
- if parent:
+ if task.child_ids:
+ seq = [[child.planned_hours, child.id] for child in task.child_ids]
+ seq.sort(key=itemgetter(0))
s +='''
start = up.Task_%s.end
-'''%(parent[0].id)
+'''%(seq[-1][1])
s += '\n'
return s
project_task()
diff --git a/addons/project_messages/i18n/zh_CN.po b/addons/project_messages/i18n/zh_CN.po
index 46e3abbe785..51983dae2b3 100644
--- a/addons/project_messages/i18n/zh_CN.po
+++ b/addons/project_messages/i18n/zh_CN.po
@@ -8,13 +8,13 @@ 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-06-28 16:43+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2011-07-02 15:15+0000\n"
+"Last-Translator: Wei \"oldrev\" Li \n"
"Language-Team: Chinese (Simplified) \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-06-29 04:43+0000\n"
+"X-Launchpad-Export-Date: 2011-07-03 04:47+0000\n"
"X-Generator: Launchpad (build 13168)\n"
#. module: project_messages
@@ -36,7 +36,7 @@ msgstr "发件人"
#: model:ir.actions.act_window,name:project_messages.messages_form
#: model:ir.ui.menu,name:project_messages.menu_messages_form
msgid "Communication Messages"
-msgstr ""
+msgstr "通信消息管理"
#. module: project_messages
#: view:project.messages:0
diff --git a/addons/project_messages/project_messages_view.xml b/addons/project_messages/project_messages_view.xml
index 4f74e7ebfbf..027403b84f3 100644
--- a/addons/project_messages/project_messages_view.xml
+++ b/addons/project_messages/project_messages_view.xml
@@ -11,12 +11,12 @@
-
+
-
+