diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py
index b111cf2b771..f9388706e97 100644
--- a/addons/account/account_move_line.py
+++ b/addons/account/account_move_line.py
@@ -514,8 +514,7 @@ class account_move_line(osv.osv):
'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, string='Balance'),
- 'state': fields.selection([('draft','Unbalanced'), ('valid','Valid')], 'Status', 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.'),
+ 'state': fields.selection([('draft','Unbalanced'), ('valid','Balanced')], 'Status', readonly=True),
'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)."),
diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml
index c12bd98ae81..1b614a1ee85 100644
--- a/addons/account/account_view.xml
+++ b/addons/account/account_view.xml
@@ -1078,7 +1078,7 @@
-
+
@@ -1980,7 +1980,7 @@
-
+
diff --git a/addons/account/data/account_data.xml b/addons/account/data/account_data.xml
index dd27cfbab4e..e435c0243e9 100644
--- a/addons/account/data/account_data.xml
+++ b/addons/account/data/account_data.xml
@@ -127,6 +127,7 @@
Status
state
+
@@ -214,6 +215,7 @@
Status
state
+
@@ -289,6 +291,7 @@
Status
state
+
@@ -370,6 +373,7 @@
Status
state
+
@@ -456,6 +460,7 @@
Status
state
+
diff --git a/addons/account/i18n/es_EC.po b/addons/account/i18n/es_EC.po
index 2b0cf878a16..2c0dfe74a6b 100644
--- a/addons/account/i18n/es_EC.po
+++ b/addons/account/i18n/es_EC.po
@@ -16,8 +16,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-10-17 04:35+0000\n"
-"X-Generator: Launchpad (build 16152)\n"
+"X-Launchpad-Export-Date: 2012-10-18 04:40+0000\n"
+"X-Generator: Launchpad (build 16160)\n"
#. module: account
#: view:account.invoice.report:0
diff --git a/addons/account/i18n/gu.po b/addons/account/i18n/gu.po
index 9767f54729b..6bc68b0d26a 100644
--- a/addons/account/i18n/gu.po
+++ b/addons/account/i18n/gu.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-10-17 04:35+0000\n"
-"X-Generator: Launchpad (build 16152)\n"
+"X-Launchpad-Export-Date: 2012-10-18 04:40+0000\n"
+"X-Generator: Launchpad (build 16160)\n"
#. module: account
#: view:account.invoice.report:0
diff --git a/addons/account/i18n/pt_BR.po b/addons/account/i18n/pt_BR.po
index ac1764aff5c..dc633fc41a7 100644
--- a/addons/account/i18n/pt_BR.po
+++ b/addons/account/i18n/pt_BR.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-10-17 04:35+0000\n"
-"X-Generator: Launchpad (build 16152)\n"
+"X-Launchpad-Export-Date: 2012-10-18 04:40+0000\n"
+"X-Generator: Launchpad (build 16160)\n"
#. module: account
#: view:account.invoice.report:0
diff --git a/addons/account/i18n/ro.po b/addons/account/i18n/ro.po
index 58f0c523d93..0fedb0ab76d 100644
--- a/addons/account/i18n/ro.po
+++ b/addons/account/i18n/ro.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: 2012-02-08 00:35+0000\n"
-"PO-Revision-Date: 2012-05-10 18:28+0000\n"
+"PO-Revision-Date: 2012-10-17 08:24+0000\n"
"Last-Translator: filsys \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-08-28 06:12+0000\n"
-"X-Generator: Launchpad (build 15864)\n"
+"X-Launchpad-Export-Date: 2012-10-18 04:40+0000\n"
+"X-Generator: Launchpad (build 16160)\n"
#. module: account
#: view:account.invoice.report:0
@@ -146,6 +146,7 @@ msgstr "Reconciliati"
#: field:account.move,ref:0
#: field:account.move.line,ref:0
#: field:account.subscription,ref:0
+#: xsl:account.transfer:0
msgid "Reference"
msgstr "Referinta"
@@ -164,13 +165,13 @@ msgstr ""
"ascundeti termenul plata fara a-l sterge."
#. module: account
-#: code:addons/account/account_invoice.py:1428
+#: code:addons/account/account_invoice.py:1430
#, python-format
msgid "Warning!"
msgstr "Avertizare!"
#. module: account
-#: code:addons/account/account.py:3112
+#: code:addons/account/account.py:3129
#, python-format
msgid "Miscellaneous Journal"
msgstr "Jurnal Diverse"
@@ -235,7 +236,7 @@ msgstr ""
"apara pe facturi"
#. module: account
-#: code:addons/account/account_invoice.py:1241
+#: code:addons/account/account_invoice.py:1254
#, python-format
msgid "Invoice '%s' is paid partially: %s%s of %s%s (%s%s remaining)"
msgstr "Factura '%s' este platita partial: %s%s din %s%s (a mai ramas %s%s)"
@@ -251,7 +252,7 @@ msgid "Belgian Reports"
msgstr "Rapoarte belgiene"
#. module: account
-#: code:addons/account/account_move_line.py:1200
+#: code:addons/account/account_move_line.py:1215
#, python-format
msgid "You can not add/modify entries in a closed journal."
msgstr "Nu puteti adauga/modifica inregistrarile dintr-un jurnal inchis."
@@ -300,7 +301,7 @@ msgid "St."
msgstr "St."
#. module: account
-#: code:addons/account/account_invoice.py:551
+#: code:addons/account/account_invoice.py:560
#, python-format
msgid "Invoice line account company does not match with invoice company."
msgstr ""
@@ -600,8 +601,10 @@ msgid "The accountant confirms the statement."
msgstr "Contabilul confirma extrasul de cont."
#. module: account
+#: report:account.account.balance:0
#: selection:account.balance.report,display_account:0
#: selection:account.common.account.report,display_account:0
+#: report:account.general.ledger_landscape:0
#: selection:account.report.general.ledger,display_account:0
#: selection:account.tax,type_tax_use:0
#: selection:account.tax.template,type_tax_use:0
@@ -659,7 +662,7 @@ msgid "Main Sequence must be different from current !"
msgstr "Secventa Principala trebuie sa fie diferita de secventa actuala !"
#. module: account
-#: code:addons/account/account_move_line.py:1251
+#: code:addons/account/account_move_line.py:1266
#, python-format
msgid "No period found or more than one period found for the given date."
msgstr ""
@@ -672,7 +675,7 @@ msgid "Tax Code Amount"
msgstr "Valoare Cod Fiscal"
#. module: account
-#: code:addons/account/account.py:3116
+#: code:addons/account/account.py:3133
#, python-format
msgid "SAJ"
msgstr "SAJ"
@@ -699,8 +702,8 @@ msgid "Journal Period"
msgstr "Perioada Jurnal"
#. module: account
-#: code:addons/account/account_move_line.py:750
-#: code:addons/account/account_move_line.py:803
+#: code:addons/account/account_move_line.py:766
+#: code:addons/account/account_move_line.py:819
#, python-format
msgid "To reconcile the entries company should be the same for all entries"
msgstr ""
@@ -753,7 +756,6 @@ msgstr "Afisati conturi secundare ierarhic"
#. module: account
#: selection:account.payment.term.line,value:0
-#: selection:account.tax.template,type:0
msgid "Percent"
msgstr "Procent"
@@ -781,6 +783,7 @@ msgid "You can only change currency for Draft Invoice !"
msgstr "Puteti schimba moneda doar pentru Factura Ciorna!"
#. module: account
+#: model:ir.actions.report.xml,name:account.account_financial_report
#: model:ir.ui.menu,name:account.menu_account_report
msgid "Financial Report"
msgstr "Raport Financiar"
@@ -796,12 +799,13 @@ msgstr "Raport Financiar"
#: view:account.journal:0
#: field:account.journal,type:0
#: field:account.move.reconcile,type:0
+#: xsl:account.transfer:0
#: field:report.invoice.created,type:0
msgid "Type"
msgstr "Tip"
#. module: account
-#: code:addons/account/account_invoice.py:738
+#: code:addons/account/account_invoice.py:747
#, python-format
msgid ""
"Taxes are missing!\n"
@@ -938,12 +942,13 @@ msgid "Create 3 Months Periods"
msgstr "Creati Perioade de 3 luni"
#. module: account
+#: report:account.aged_trial_balance:0
#: report:account.overdue:0
msgid "Due"
msgstr "Scadent(a)"
#. module: account
-#: code:addons/account/account.py:1345
+#: code:addons/account/account.py:1353
#, python-format
msgid ""
"You cannot validate this journal entry because account \"%s\" does not "
@@ -1028,7 +1033,7 @@ msgstr ""
"contine suma de baza (fara impozit)."
#. module: account
-#: code:addons/account/account.py:2596
+#: code:addons/account/account.py:2613
#, python-format
msgid "I can not locate a parent code for the template account!"
msgstr "Nu pot localiza un cod principal pentru contul sablon!"
@@ -1061,10 +1066,10 @@ msgid "Code"
msgstr "Cod"
#. module: account
-#: code:addons/account/account.py:2268
+#: code:addons/account/account.py:2285
#: code:addons/account/account_bank_statement.py:357
#: code:addons/account/account_invoice.py:73
-#: code:addons/account/account_invoice.py:688
+#: code:addons/account/account_invoice.py:697
#: code:addons/account/account_move_line.py:173
#, python-format
msgid "No Analytic Journal !"
@@ -1130,7 +1135,7 @@ msgstr ""
"mai multe informatii despre cont si specificul acestuia."
#. module: account
-#: code:addons/account/account_move_line.py:842
+#: code:addons/account/account_move_line.py:856
#, python-format
msgid ""
"You have to provide an account for the write off/exchange difference entry !"
@@ -1180,7 +1185,7 @@ msgstr "Elemente Neechilibrate Jurnal"
#. module: account
#: model:account.account.type,name:account.data_account_type_bank
#: selection:account.bank.accounts.wizard,account_type:0
-#: code:addons/account/account.py:3003
+#: code:addons/account/account.py:3020
#, python-format
msgid "Bank"
msgstr "Banca"
@@ -1279,7 +1284,7 @@ msgid "The move of this entry line."
msgstr "Miscarea acestei linii a inregistrarii."
#. module: account
-#: code:addons/account/account_move_line.py:1302
+#: code:addons/account/account_move_line.py:1317
#, python-format
msgid ""
"You can not use this general account in this journal, check the tab 'Entry "
@@ -1302,7 +1307,7 @@ msgid "Entry Label"
msgstr "Eticheta Inregistrare"
#. module: account
-#: code:addons/account/account.py:1129
+#: code:addons/account/account.py:1136
#, python-format
msgid "You can not modify/delete a journal with entries for this period !"
msgstr ""
@@ -1388,14 +1393,15 @@ msgid "Taxes"
msgstr "Taxe"
#. module: account
-#: code:addons/account/wizard/account_financial_report.py:69
-#: code:addons/account/wizard/account_report_common.py:144
+#: code:addons/account/wizard/account_financial_report.py:70
+#: code:addons/account/wizard/account_report_common.py:145
#, python-format
msgid "Select a starting and an ending period"
msgstr "Selectati o perioada de inceput si una de sfarsit"
#. module: account
#: model:account.financial.report,name:account.account_financial_report_profitandloss0
+#: model:ir.actions.act_window,name:account.action_account_report_pl
msgid "Profit and Loss"
msgstr "Profit si Pierdere"
@@ -1450,6 +1456,7 @@ msgid "Journal Items Analysis"
msgstr "Analiza Elementelor din Jurnal"
#. module: account
+#: report:account.aged_trial_balance:0
#: model:ir.ui.menu,name:account.next_id_22
msgid "Partners"
msgstr "Parteneri"
@@ -1474,8 +1481,10 @@ msgid "Central Journal"
msgstr "Jurnal Central"
#. module: account
+#: report:account.account.balance:0
#: selection:account.balance.report,display_account:0
#: selection:account.common.account.report,display_account:0
+#: report:account.general.ledger_landscape:0
#: selection:account.partner.balance,display_partner:0
#: selection:account.report.general.ledger,display_account:0
msgid "With balance is not equal to 0"
@@ -1742,7 +1751,7 @@ msgid "Year Sum"
msgstr "Suma anuala"
#. module: account
-#: code:addons/account/account_invoice.py:1429
+#: code:addons/account/account_invoice.py:1431
#, python-format
msgid ""
"You selected an Unit of Measure which is not compatible with the product."
@@ -1821,7 +1830,7 @@ msgid "Customer Ref:"
msgstr "Referinta Client:"
#. module: account
-#: code:addons/account/account_cash_statement.py:292
+#: code:addons/account/account_cash_statement.py:293
#, python-format
msgid "User %s does not have rights to access %s journal !"
msgstr "Utilizatorul %s nu are dreptul de a accesa jurnalul %s !"
@@ -2156,7 +2165,7 @@ msgid "Pro-forma"
msgstr "Pro-forma"
#. module: account
-#: code:addons/account/account.py:1461
+#: code:addons/account/account.py:1478
#, python-format
msgid ""
"There is no default default debit account defined \n"
@@ -2187,7 +2196,7 @@ msgid "Search Chart of Account Templates"
msgstr "Cautati Sabloane Plan de Conturi"
#. module: account
-#: code:addons/account/account_move_line.py:1277
+#: code:addons/account/account_move_line.py:1292
#, python-format
msgid ""
"Can not create an automatic sequence for this piece!\n"
@@ -2244,7 +2253,7 @@ msgid "Description"
msgstr "Descriere"
#. module: account
-#: code:addons/account/account.py:3119
+#: code:addons/account/account.py:3136
#, python-format
msgid "ECNJ"
msgstr "ECNJ"
@@ -2263,7 +2272,7 @@ msgid "Income Account"
msgstr "Cont de venituri"
#. module: account
-#: code:addons/account/account_invoice.py:370
+#: code:addons/account/account_invoice.py:379
#, python-format
msgid "There is no Accounting Journal of type Sale/Purchase defined!"
msgstr "Nu exista niciun Jurnal Contabil de tipul Vanzare/Achizitie definit!"
@@ -2303,6 +2312,7 @@ msgstr "Sablon Produs"
#. module: account
#: report:account.account.balance:0
#: field:account.aged.trial.balance,fiscalyear_id:0
+#: report:account.aged_trial_balance:0
#: field:account.balance.report,fiscalyear_id:0
#: report:account.central.journal:0
#: field:account.central.journal,fiscalyear_id:0
@@ -2312,6 +2322,7 @@ msgstr "Sablon Produs"
#: field:account.common.report,fiscalyear_id:0
#: view:account.entries.report:0
#: field:account.entries.report,fiscalyear_id:0
+#: report:account.financial.report:0
#: field:account.fiscalyear,name:0
#: report:account.general.journal:0
#: field:account.general.journal,fiscalyear_id:0
@@ -2362,7 +2373,7 @@ msgid "Account Line"
msgstr "Linie Cont"
#. module: account
-#: code:addons/account/account.py:1468
+#: code:addons/account/account.py:1485
#, python-format
msgid ""
"There is no default default credit account defined \n"
@@ -2398,7 +2409,7 @@ msgid "Main Sequence"
msgstr "Secventa Principala"
#. module: account
-#: code:addons/account/account_bank_statement.py:402
+#: code:addons/account/account_bank_statement.py:403
#, python-format
msgid ""
"In order to delete a bank statement, you must first cancel it to delete "
@@ -2474,7 +2485,7 @@ msgid "Account Tax Code"
msgstr "Cont Cod Fiscal"
#. module: account
-#: code:addons/account/account_invoice.py:572
+#: code:addons/account/account_invoice.py:581
#, python-format
msgid ""
"Can't find any account journal of %s type for this company.\n"
@@ -2568,7 +2579,7 @@ msgid "Account Model Entries"
msgstr "Inregistrari Model Cont"
#. module: account
-#: code:addons/account/account.py:3117
+#: code:addons/account/account.py:3134
#, python-format
msgid "EXJ"
msgstr "EXJ"
@@ -2666,7 +2677,7 @@ msgid "Accounts"
msgstr "Conturi"
#. module: account
-#: code:addons/account/account_invoice.py:369
+#: code:addons/account/account_invoice.py:378
#, python-format
msgid "Configuration Error!"
msgstr "Eroare de configurare!"
@@ -2790,6 +2801,7 @@ msgstr ""
#. module: account
#: view:account.aged.trial.balance:0
#: model:ir.actions.act_window,name:account.action_account_aged_balance_view
+#: model:ir.actions.report.xml,name:account.account_aged_partner_balance
#: model:ir.ui.menu,name:account.menu_aged_trial_balance
msgid "Aged Partner Balance"
msgstr "Solduri restante partener"
@@ -2841,14 +2853,14 @@ msgid "This wizard will create recurring accounting entries"
msgstr "Acest wizard va crea inregistrari contabile recurente"
#. module: account
-#: code:addons/account/account.py:1321
+#: code:addons/account/account.py:1329
#, python-format
msgid "No sequence defined on the journal !"
msgstr "Nicio secventa nu a fost definita in jurnal !"
#. module: account
-#: code:addons/account/account.py:2268
-#: code:addons/account/account_invoice.py:688
+#: code:addons/account/account.py:2285
+#: code:addons/account/account_invoice.py:697
#: code:addons/account/account_move_line.py:173
#, python-format
msgid "You have to define an analytic journal on the '%s' journal!"
@@ -2959,7 +2971,7 @@ msgid "Base Code Amount"
msgstr "Cuantum Cod Baza"
#. module: account
-#: code:addons/account/account_invoice.py:392
+#: code:addons/account/account_invoice.py:401
#, python-format
msgid ""
"You can not delete an invoice which is open or paid. We suggest you to "
@@ -2974,7 +2986,7 @@ msgid "Default Sale Tax"
msgstr "Taxa de vanzare Implicita"
#. module: account
-#: code:addons/account/account_invoice.py:1013
+#: code:addons/account/account_invoice.py:1025
#, python-format
msgid "Invoice '%s' is validated."
msgstr "Factura '%s' este validata."
@@ -3015,7 +3027,7 @@ msgid "Fiscal Position"
msgstr "Pozitie fiscala"
#. module: account
-#: code:addons/account/account_invoice.py:735
+#: code:addons/account/account_invoice.py:744
#, python-format
msgid ""
"Tax base different!\n"
@@ -3172,7 +3184,7 @@ msgid "View"
msgstr "Vizualizare"
#. module: account
-#: code:addons/account/account.py:3363
+#: code:addons/account/account.py:3380
#: code:addons/account/account_bank.py:90
#, python-format
msgid "BNK"
@@ -3244,7 +3256,7 @@ msgstr "Sabloane Planuri de conturi"
#. module: account
#: model:ir.actions.act_window,name:account.action_wizard_multi_chart
msgid "Set Your Accounting Options"
-msgstr ""
+msgstr "Alegeti optiunile contabile potrivite"
#. module: account
#: view:report.account.sales:0
@@ -3375,7 +3387,7 @@ msgid "Starting Balance"
msgstr "Soldul initial"
#. module: account
-#: code:addons/account/account_invoice.py:1332
+#: code:addons/account/account_invoice.py:1345
#, python-format
msgid "No Partner Defined !"
msgstr "Nici un partener definit !"
@@ -3431,7 +3443,7 @@ msgid "Chart of Tax"
msgstr "Plan de taxe"
#. module: account
-#: code:addons/account/account_cash_statement.py:314
+#: code:addons/account/account_cash_statement.py:315
#, python-format
msgid "The closing balance should be the same than the computed balance!"
msgstr "Soldul final trebuie sa fie la fel ca si soldul calculat!"
@@ -3516,6 +3528,7 @@ msgstr "Cantitate :"
#. module: account
#: field:account.aged.trial.balance,period_length:0
+#: report:account.aged_trial_balance:0
msgid "Period Length (days)"
msgstr "Durata Perioada (zile)"
@@ -3562,7 +3575,7 @@ msgid "Detail"
msgstr "Detalii"
#. module: account
-#: code:addons/account/account_invoice.py:839
+#: code:addons/account/account_invoice.py:850
#, python-format
msgid ""
"Can not create the invoice !\n"
@@ -3582,9 +3595,16 @@ msgid "VAT :"
msgstr "TVA :"
#. module: account
+#: report:account.account.balance:0
+#: report:account.aged_trial_balance:0
#: report:account.central.journal:0
+#: report:account.financial.report:0
+#: report:account.general.journal:0
#: report:account.general.ledger:0
+#: report:account.general.ledger_landscape:0
#: field:account.installer,charts:0
+#: report:account.journal.period.print:0
+#: report:account.journal.period.print.sale.purchase:0
#: report:account.partner.balance:0
#: report:account.third_party_ledger:0
#: report:account.third_party_ledger_other:0
@@ -3607,7 +3627,7 @@ msgid "Centralised counterpart"
msgstr "Echivalent centralizat"
#. module: account
-#: code:addons/account/account_move_line.py:584
+#: code:addons/account/account_move_line.py:575
#, python-format
msgid "You can not create journal items on a \"view\" account %s %s"
msgstr ""
@@ -3662,10 +3682,15 @@ msgstr ""
#: field:account.subscription.line,date:0
#: report:account.third_party_ledger:0
#: report:account.third_party_ledger_other:0
+#: xsl:account.transfer:0
#: selection:account.vat.declaration,filter:0
#: selection:accounting.report,filter:0
#: selection:accounting.report,filter_cmp:0
+#: code:addons/account/report/account_journal.py:195
+#: code:addons/account/report/account_journal.py:198
+#: code:addons/account/report/common_report_header.py:97
#: field:analytic.entries.report,date:0
+#, python-format
msgid "Date"
msgstr "Data"
@@ -3696,7 +3721,7 @@ msgid "Chart of Accounts Template"
msgstr "Sablon Plan de Conturi"
#. module: account
-#: code:addons/account/account.py:2280
+#: code:addons/account/account.py:2297
#, python-format
msgid ""
"Maturity date of entry line generated by model line '%s' of model '%s' is "
@@ -3708,7 +3733,7 @@ msgstr ""
"Va rugam sa ii definiti un partener!"
#. module: account
-#: code:addons/account/account_move_line.py:837
+#: code:addons/account/account_move_line.py:846
#, python-format
msgid "Some entries are already reconciled !"
msgstr "Unele inregistrari sunt deja reconciliate !"
@@ -3739,6 +3764,8 @@ msgstr "Bugete"
#: selection:account.vat.declaration,filter:0
#: selection:accounting.report,filter:0
#: selection:accounting.report,filter_cmp:0
+#: code:addons/account/report/common_report_header.py:100
+#, python-format
msgid "No Filters"
msgstr "Nici un Filtru"
@@ -3824,7 +3851,7 @@ msgid "Analytic Items"
msgstr "Elemente Analitice"
#. module: account
-#: code:addons/account/account_move_line.py:1153
+#: code:addons/account/account_move_line.py:1168
#, python-format
msgid "Unable to change tax !"
msgstr "Taxa nu poate fi modificata !"
@@ -3855,7 +3882,7 @@ msgid "Mapping"
msgstr "Mapare"
#. module: account
-#: code:addons/account/account_invoice.py:921
+#: code:addons/account/account_invoice.py:932
#, python-format
msgid ""
"You cannot create an invoice on a centralised journal. Uncheck the "
@@ -3871,6 +3898,7 @@ msgstr ""
#: report:account.analytic.account.inverted.balance:0
#: field:account.bank.statement,name:0
#: field:account.chart.template,name:0
+#: report:account.financial.report:0
#: field:account.model.line,name:0
#: field:account.move.line,name:0
#: field:account.move.reconcile,name:0
@@ -3884,7 +3912,7 @@ msgid "Account Aged Trial balance Report"
msgstr "Verificare Raport sold Cont vechi"
#. module: account
-#: code:addons/account/account_move_line.py:591
+#: code:addons/account/account_move_line.py:582
#, python-format
msgid "You can not create journal items on a closed account %s %s"
msgstr "Nu puteti crea elemente ale jurnalului intr-un cont inchis %s %s"
@@ -4224,7 +4252,7 @@ msgid "Month"
msgstr "Luna"
#. module: account
-#: code:addons/account/account_move_line.py:1216
+#: code:addons/account/account_move_line.py:1231
#, python-format
msgid ""
"You can not do this modification on a confirmed entry! You can just change "
@@ -4285,7 +4313,7 @@ msgid "Account Base Code"
msgstr "Cod de baza cont"
#. module: account
-#: code:addons/account/account_analytic_line.py:93
+#: code:addons/account/account_analytic_line.py:91
#, python-format
msgid "There is no expense account defined for this product: \"%s\" (id:%d)"
msgstr ""
@@ -4501,7 +4529,7 @@ msgid "Allow Reconciliation"
msgstr "Permiteti Reconciliere"
#. module: account
-#: code:addons/account/account.py:1077
+#: code:addons/account/account.py:1082
#, python-format
msgid ""
"You can not modify company of this period as some journal items exists."
@@ -4537,7 +4565,7 @@ msgid "Recurring Models"
msgstr "Modele Recurente"
#. module: account
-#: code:addons/account/account_move_line.py:1251
+#: code:addons/account/account_move_line.py:1266
#, python-format
msgid "Encoding error"
msgstr "Inregistrare eroare"
@@ -4549,6 +4577,7 @@ msgstr "4"
#. module: account
#: view:account.invoice:0
+#: xsl:account.transfer:0
msgid "Change"
msgstr "Modificati"
@@ -4593,7 +4622,7 @@ msgid "Example"
msgstr "Exemplu"
#. module: account
-#: code:addons/account/account_invoice.py:828
+#: code:addons/account/account_invoice.py:839
#, python-format
msgid ""
"Please verify the price of the invoice !\n"
@@ -4609,7 +4638,7 @@ msgid "Keep empty to use the income account"
msgstr "Lasati necompletat pentru a utiliza contul de venituri"
#. module: account
-#: code:addons/account/account.py:3299
+#: code:addons/account/account.py:3316
#, python-format
msgid "Purchase Tax %.2f%%"
msgstr "Taxa Achizitie %.2f%%"
@@ -4637,7 +4666,7 @@ msgstr "Reprezentare Conturi"
#: selection:account.bank.statement.line,type:0
#: view:account.invoice:0
#: view:account.invoice.report:0
-#: code:addons/account/account_invoice.py:337
+#: code:addons/account/account_invoice.py:346
#, python-format
msgid "Customer"
msgstr "Client"
@@ -4653,7 +4682,7 @@ msgid "Cancelled Invoice"
msgstr "Factura anulata"
#. module: account
-#: code:addons/account/account.py:1567
+#: code:addons/account/account.py:1584
#, python-format
msgid ""
"Couldn't create move with currency different from the secondary currency of "
@@ -4711,7 +4740,7 @@ msgid "Income Account on Product Template"
msgstr "Cont venituri specificat in Sablonul Produsului"
#. module: account
-#: code:addons/account/account.py:3120
+#: code:addons/account/account.py:3137
#, python-format
msgid "MISC"
msgstr "DIVERSE"
@@ -4719,7 +4748,7 @@ msgstr "DIVERSE"
#. module: account
#: model:email.template,subject:account.email_template_edi_invoice
msgid "${object.company_id.name} Invoice (Ref ${object.number or 'n/a' })"
-msgstr "${obiect.companie_id.nume} Factura (Ref ${obiect.numar sau 'n/a'})"
+msgstr "${object.company_id.name} Factura (Ref ${object.number or 'n/a'})"
#. module: account
#: help:res.partner,last_reconciliation_date:0
@@ -4738,11 +4767,13 @@ msgstr "An fiscal nou"
#: view:account.invoice:0
#: view:account.tax.template:0
#: selection:account.vat.declaration,based_on:0
+#: code:addons/account/report/account_tax_report.py:68
#: model:ir.actions.act_window,name:account.act_res_partner_2_account_invoice_opened
#: model:ir.actions.act_window,name:account.action_invoice_tree
#: model:ir.actions.report.xml,name:account.account_invoices
#: view:report.invoice.created:0
#: field:res.partner,invoice_ids:0
+#, python-format
msgid "Invoices"
msgstr "Facturi"
@@ -4885,26 +4916,24 @@ msgid "Journal Items"
msgstr "Elementele Jurnalului"
#. module: account
-#: code:addons/account/account.py:1088
-#: code:addons/account/account.py:1090
-#: code:addons/account/account.py:1321
-#: code:addons/account/account.py:1563
-#: code:addons/account/account.py:1567
-#: code:addons/account/account.py:3368
-#: code:addons/account/account_move_line.py:807
-#: code:addons/account/account_move_line.py:830
-#: code:addons/account/account_move_line.py:832
-#: code:addons/account/account_move_line.py:835
-#: code:addons/account/account_move_line.py:837
+#: code:addons/account/account.py:1095
+#: code:addons/account/account.py:1097
+#: code:addons/account/account.py:1329
+#: code:addons/account/account.py:1580
+#: code:addons/account/account.py:1584
+#: code:addons/account/account.py:3385
+#: code:addons/account/account_move_line.py:823
+#: code:addons/account/account_move_line.py:843
+#: code:addons/account/account_move_line.py:846
#: code:addons/account/report/common_report_header.py:92
#: 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_financial_report.py:69
+#: code:addons/account/wizard/account_financial_report.py:70
#: code:addons/account/wizard/account_move_bank_reconcile.py:49
-#: code:addons/account/wizard/account_report_common.py:144
-#: code:addons/account/wizard/account_report_common.py:150
+#: code:addons/account/wizard/account_report_common.py:145
+#: code:addons/account/wizard/account_report_common.py:151
#, python-format
msgid "Error"
msgstr "Eroare"
@@ -5015,7 +5044,7 @@ msgid "Beginning of Period Date"
msgstr "Inceputul Datei perioadei"
#. module: account
-#: code:addons/account/account.py:1351
+#: code:addons/account/account.py:1361
#, python-format
msgid ""
"You can not modify a posted entry of this journal !\n"
@@ -5042,7 +5071,7 @@ msgid "Child Tax Accounts"
msgstr "Conturi taxe subordonate"
#. module: account
-#: code:addons/account/account.py:1090
+#: code:addons/account/account.py:1097
#, python-format
msgid "Start period should be smaller then End period"
msgstr ""
@@ -5066,6 +5095,7 @@ msgstr "Sold Analitic -"
#. module: account
#: report:account.account.balance:0
#: field:account.aged.trial.balance,target_move:0
+#: report:account.aged_trial_balance:0
#: field:account.balance.report,target_move:0
#: report:account.central.journal:0
#: field:account.central.journal,target_move:0
@@ -5109,6 +5139,8 @@ msgstr "Tipul Perioadei"
#: view:account.invoice:0
#: field:account.invoice,payment_ids:0
#: selection:account.vat.declaration,based_on:0
+#: code:addons/account/report/account_tax_report.py:70
+#, python-format
msgid "Payments"
msgstr "Plati"
@@ -5188,7 +5220,7 @@ msgid "Line 1:"
msgstr "Linia 1:"
#. module: account
-#: code:addons/account/account.py:1307
+#: code:addons/account/account.py:1315
#, python-format
msgid "Integrity Error !"
msgstr "Eroare de integritate!"
@@ -5221,6 +5253,7 @@ msgstr "Resultatul reconcilierii"
#. module: account
#: model:account.financial.report,name:account.account_financial_report_balancesheet0
+#: model:ir.actions.act_window,name:account.action_account_report_bs
#: model:ir.ui.menu,name:account.menu_account_report_bs
msgid "Balance Sheet"
msgstr "Bilant"
@@ -5297,6 +5330,7 @@ msgstr "Raport"
#: view:account.move.line:0
#: field:account.tax,amount:0
#: field:account.tax.template,amount:0
+#: xsl:account.transfer:0
#: view:analytic.entries.report:0
#: field:analytic.entries.report,amount:0
msgid "Amount"
@@ -5480,13 +5514,13 @@ msgid "End of Year Entries Journal"
msgstr "Jurnal Inregistrari Sfarsit de an"
#. module: account
-#: code:addons/account/account.py:3446
+#: code:addons/account/account.py:3463
#: code:addons/account/account_bank_statement.py:338
-#: code:addons/account/account_invoice.py:427
-#: code:addons/account/account_invoice.py:527
-#: code:addons/account/account_invoice.py:542
-#: code:addons/account/account_invoice.py:550
-#: code:addons/account/account_invoice.py:572
+#: code:addons/account/account_invoice.py:436
+#: code:addons/account/account_invoice.py:536
+#: code:addons/account/account_invoice.py:551
+#: code:addons/account/account_invoice.py:559
+#: code:addons/account/account_invoice.py:581
#: code:addons/account/wizard/account_move_journal.py:63
#, python-format
msgid "Configuration Error !"
@@ -5593,6 +5627,8 @@ msgstr "Linii de reconciliat"
#: field:account.invoice.line,quantity:0
#: field:account.model.line,quantity:0
#: field:account.move.line,quantity:0
+#: selection:account.tax,type:0
+#: selection:account.tax.template,type:0
#: view:analytic.entries.report:0
#: field:analytic.entries.report,unit_amount:0
#: field:report.account.sales,quantity:0
@@ -5703,6 +5739,7 @@ msgstr "Reconciliere cu Pierderea"
#. module: account
#: selection:account.payment.term.line,value:0
#: selection:account.tax,type:0
+#: selection:account.tax.template,type:0
msgid "Fixed Amount"
msgstr "Suma fixa"
@@ -5739,13 +5776,14 @@ msgid "Generate Opening Entries"
msgstr "Generati Inregistrari Deschise"
#. module: account
-#: code:addons/account/account_move_line.py:759
+#: code:addons/account/account_move_line.py:775
#, python-format
msgid "Already Reconciled!"
msgstr "Deja Reconciliat!"
#. module: account
#: help:account.tax,type:0
+#: help:account.tax.template,type:0
msgid "The computation method for the tax amount."
msgstr "Metoda de calcul pentru valoarea impozitului."
@@ -5772,14 +5810,14 @@ msgid "Child Accounts"
msgstr "Conturi subordonate"
#. module: account
-#: code:addons/account/account_move_line.py:1214
+#: code:addons/account/account_move_line.py:1229
#, python-format
msgid "Move name (id): %s (%s)"
msgstr "Nume miscare (id): %s (%s)"
#. module: account
#: view:account.move.line.reconcile:0
-#: code:addons/account/account_move_line.py:857
+#: code:addons/account/account_move_line.py:871
#, python-format
msgid "Write-Off"
msgstr "Pierdere"
@@ -5799,7 +5837,7 @@ msgstr "Venit"
#: selection:account.bank.statement.line,type:0
#: view:account.invoice:0
#: view:account.invoice.report:0
-#: code:addons/account/account_invoice.py:339
+#: code:addons/account/account_invoice.py:348
#, python-format
msgid "Supplier"
msgstr "Furnizor"
@@ -5829,7 +5867,7 @@ msgid "Account n°"
msgstr "Nr. de cont"
#. module: account
-#: code:addons/account/account_invoice.py:88
+#: code:addons/account/account_invoice.py:91
#, python-format
msgid "Free Reference"
msgstr "Referinta gratuita"
@@ -5844,7 +5882,9 @@ msgstr "Evaluare"
#: selection:account.common.partner.report,result_selection:0
#: selection:account.partner.balance,result_selection:0
#: selection:account.partner.ledger,result_selection:0
+#: code:addons/account/report/account_aged_partner_balance.py:376
#: code:addons/account/report/account_partner_balance.py:301
+#: code:addons/account/report/account_partner_ledger.py:398
#, python-format
msgid "Receivable and Payable Accounts"
msgstr "Conturi Incasari si Plati"
@@ -5954,7 +5994,7 @@ msgid "Filter by"
msgstr "Filtrati dupa"
#. module: account
-#: code:addons/account/account.py:2256
+#: code:addons/account/account.py:2273
#, python-format
msgid "You have a wrong expression \"%(...)s\" in your model !"
msgstr "Aveti o expresie \"%(...)s\" gresita in modelul dumneavoastra !"
@@ -5965,8 +6005,8 @@ msgid "Entry Date"
msgstr "Data inregistrarii"
#. module: account
-#: code:addons/account/account_move_line.py:1155
-#: code:addons/account/account_move_line.py:1238
+#: code:addons/account/account_move_line.py:1170
+#: code:addons/account/account_move_line.py:1253
#, python-format
msgid "You can not use an inactive account!"
msgstr "Nu puteti folosi un cont inactiv!"
@@ -6007,8 +6047,8 @@ msgid "Number of Days"
msgstr "Numarul de zile"
#. module: account
-#: code:addons/account/account_bank_statement.py:402
-#: code:addons/account/account_invoice.py:392
+#: code:addons/account/account_bank_statement.py:403
+#: code:addons/account/account_invoice.py:401
#: code:addons/account/wizard/account_period_close.py:51
#, python-format
msgid "Invalid action !"
@@ -6070,7 +6110,7 @@ msgid "Multipication factor for Base code"
msgstr "Factor de multiplicare pentru Codul de baza"
#. module: account
-#: code:addons/account/wizard/account_report_common.py:150
+#: code:addons/account/wizard/account_report_common.py:151
#, python-format
msgid "not implemented"
msgstr "neimplementat"
@@ -6109,6 +6149,8 @@ msgstr "Analiza Inregistrarilor Analitice"
#. module: account
#: selection:account.aged.trial.balance,direction_selection:0
+#: code:addons/account/report/account_aged_partner_balance.py:381
+#, python-format
msgid "Past"
msgstr "Trecut"
@@ -6395,6 +6437,7 @@ msgstr "Capital"
#. module: account
#: selection:account.tax,type:0
+#: selection:account.tax.template,type:0
msgid "Percentage"
msgstr "Procentaj"
@@ -6409,7 +6452,7 @@ msgid "Power"
msgstr "Putere"
#. module: account
-#: code:addons/account/account.py:3368
+#: code:addons/account/account.py:3385
#, python-format
msgid "Cannot generate an unused journal code."
msgstr "Nu se poate crea un cod de jurnal nefolosit."
@@ -6685,8 +6728,8 @@ msgid "You can not remove an account containing journal items."
msgstr "Nu puteti sa stergeti un cont care contine elemente ale jurnalului."
#. module: account
-#: code:addons/account/account_analytic_line.py:145
-#: code:addons/account/account_move_line.py:933
+#: code:addons/account/account_analytic_line.py:143
+#: code:addons/account/account_move_line.py:947
#, python-format
msgid "Entries: "
msgstr "Inregistrari: "
@@ -6702,7 +6745,7 @@ msgid "Currency of the related account journal."
msgstr "Moneda jurnalului contabil asociat."
#. module: account
-#: code:addons/account/account.py:1563
+#: code:addons/account/account.py:1580
#, python-format
msgid "Couldn't create move between different companies"
msgstr "Nu s-a putut crea miscarea intre companii diferite."
@@ -6751,13 +6794,13 @@ msgstr "Stadiul este ciorna"
#. module: account
#: view:account.move.line:0
-#: code:addons/account/account_move_line.py:1043
+#: code:addons/account/account_move_line.py:1058
#, python-format
msgid "Total debit"
msgstr "Total debit"
#. module: account
-#: code:addons/account/account_move_line.py:808
+#: code:addons/account/account_move_line.py:824
#, python-format
msgid "Entry \"%s\" is not valid !"
msgstr "Inregistrarea \"%s\" nu este valida !"
@@ -6831,25 +6874,26 @@ msgstr "Profit & Pierdere (Contul de cheltuieli)"
#: code:addons/account/account.py:622
#: code:addons/account/account.py:624
#: code:addons/account/account.py:963
-#: code:addons/account/account.py:1052
-#: code:addons/account/account.py:1129
-#: code:addons/account/account.py:1344
-#: code:addons/account/account.py:1351
-#: code:addons/account/account.py:2280
-#: code:addons/account/account.py:2596
-#: code:addons/account/account_analytic_line.py:92
-#: code:addons/account/account_analytic_line.py:101
+#: code:addons/account/account.py:1057
+#: code:addons/account/account.py:1136
+#: code:addons/account/account.py:1352
+#: code:addons/account/account.py:1359
+#: code:addons/account/account.py:1361
+#: code:addons/account/account.py:2297
+#: code:addons/account/account.py:2613
+#: code:addons/account/account_analytic_line.py:90
+#: code:addons/account/account_analytic_line.py:99
#: code:addons/account/account_bank_statement.py:301
#: code:addons/account/account_bank_statement.py:314
#: code:addons/account/account_bank_statement.py:352
-#: code:addons/account/account_cash_statement.py:292
-#: code:addons/account/account_cash_statement.py:314
-#: code:addons/account/account_invoice.py:808
-#: code:addons/account/account_invoice.py:839
-#: code:addons/account/account_invoice.py:1030
-#: code:addons/account/account_move_line.py:1200
-#: code:addons/account/account_move_line.py:1216
-#: code:addons/account/account_move_line.py:1218
+#: code:addons/account/account_cash_statement.py:293
+#: code:addons/account/account_cash_statement.py:315
+#: code:addons/account/account_invoice.py:819
+#: code:addons/account/account_invoice.py:850
+#: code:addons/account/account_invoice.py:1042
+#: code:addons/account/account_move_line.py:1215
+#: code:addons/account/account_move_line.py:1231
+#: code:addons/account/account_move_line.py:1233
#: code:addons/account/wizard/account_invoice_refund.py:108
#: code:addons/account/wizard/account_invoice_refund.py:110
#: code:addons/account/wizard/account_open_closed_fiscalyear.py:39
@@ -6881,8 +6925,8 @@ msgid "Printed"
msgstr "Tiparit"
#. module: account
-#: code:addons/account/account_move_line.py:584
-#: code:addons/account/account_move_line.py:591
+#: code:addons/account/account_move_line.py:575
+#: code:addons/account/account_move_line.py:582
#, python-format
msgid "Error :"
msgstr "Eroare :"
@@ -6945,7 +6989,7 @@ msgid "Display Ledger Report with One partner per page"
msgstr "Afisati Raport Registru cu Un partener pe pagina"
#. module: account
-#: code:addons/account/account_move_line.py:1218
+#: code:addons/account/account_move_line.py:1233
#, python-format
msgid ""
"You can not do this modification on a reconciled entry! You can just change "
@@ -7115,7 +7159,7 @@ msgid "Total:"
msgstr "Total:"
#. module: account
-#: code:addons/account/account.py:2229
+#: code:addons/account/account.py:2246
#, python-format
msgid ""
"You can specify year, month and date in the name of the model using the "
@@ -7153,7 +7197,7 @@ msgid "Taxes used in Sales"
msgstr "Taxe folosite in Vanzari"
#. module: account
-#: code:addons/account/account_invoice.py:495
+#: code:addons/account/account_invoice.py:504
#: code:addons/account/wizard/account_invoice_refund.py:145
#, python-format
msgid "Data Insufficient !"
@@ -7232,7 +7276,7 @@ msgid "Source Document"
msgstr "Document sursa"
#. module: account
-#: code:addons/account/account.py:1432
+#: code:addons/account/account.py:1449
#, python-format
msgid "You can not delete a posted journal entry \"%s\"!"
msgstr "Nu puteti sterge o inregistrare in jurnal \"%s\" afisata!"
@@ -7347,8 +7391,8 @@ msgid "Are you sure you want to open this invoice ?"
msgstr "Sunteti sigur(a) ca doriti sa deschideti aceasta factura ?"
#. module: account
-#: code:addons/account/account_invoice.py:528
-#: code:addons/account/account_invoice.py:543
+#: code:addons/account/account_invoice.py:537
+#: code:addons/account/account_invoice.py:552
#, python-format
msgid ""
"Can not find a chart of account, you should create one from the "
@@ -7363,7 +7407,7 @@ msgid "Opening Entries Expense Account"
msgstr "Inregistrari Deschise Cont de Cheltuieli"
#. module: account
-#: code:addons/account/account_move_line.py:999
+#: code:addons/account/account_move_line.py:1014
#, python-format
msgid "Accounting Entries"
msgstr "Inregistrari contabile"
@@ -7376,7 +7420,7 @@ msgstr "Sablon Cont Principal"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_configuration_installer
msgid "Configure your Chart of Accounts"
-msgstr ""
+msgstr "Configurati planul de conturi"
#. module: account
#: view:account.bank.statement:0
@@ -7502,7 +7546,7 @@ msgstr ""
"permita dezvoltatorilor sa creeze taxe specifice intr-un domeniu particular."
#. module: account
-#: code:addons/account/account.py:1088
+#: code:addons/account/account.py:1095
#, python-format
msgid "You should have chosen periods that belongs to the same company"
msgstr "Ar fi trebuit sa alegeti perioade care apartin aceleiasi companii"
@@ -7533,8 +7577,8 @@ msgid "Reporting"
msgstr "Raportare"
#. module: account
-#: code:addons/account/account_move_line.py:759
-#: code:addons/account/account_move_line.py:842
+#: code:addons/account/account_move_line.py:775
+#: code:addons/account/account_move_line.py:856
#: code:addons/account/wizard/account_invoice_state.py:44
#: code:addons/account/wizard/account_invoice_state.py:68
#: code:addons/account/wizard/account_state_open.py:37
@@ -7631,7 +7675,7 @@ msgid "Sign on Reports"
msgstr "Semnati in Rapoarte"
#. module: account
-#: code:addons/account/wizard/account_fiscalyear_close.py:73
+#: code:addons/account/wizard/account_fiscalyear_close.py:88
#, python-format
msgid "The periods to generate opening entries were not found"
msgstr ""
@@ -7643,7 +7687,7 @@ msgid "Root/View"
msgstr "Baza/Vizualizare"
#. module: account
-#: code:addons/account/account.py:3121
+#: code:addons/account/account.py:3138
#, python-format
msgid "OPEJ"
msgstr "OPEJ"
@@ -7678,13 +7722,14 @@ msgid "Optional Information"
msgstr "Informatii optionale"
#. module: account
-#: code:addons/account/wizard/account_fiscalyear_close.py:84
+#: code:addons/account/wizard/account_fiscalyear_close.py:100
#, python-format
msgid "The journal must have default credit and debit account"
msgstr "Jurnalul trebuie să aiba cont implicit de debit si de credit"
#. module: account
#: report:account.general.journal:0
+#: xsl:account.transfer:0
msgid ":"
msgstr ":"
@@ -7713,13 +7758,13 @@ msgid "Maturity Date"
msgstr "Data scadenta"
#. module: account
-#: code:addons/account/account_move_line.py:1302
+#: code:addons/account/account_move_line.py:1317
#, python-format
msgid "Bad account !"
msgstr "Cont eronat !"
#. module: account
-#: code:addons/account/account.py:3108
+#: code:addons/account/account.py:3125
#, python-format
msgid "Sales Journal"
msgstr "Jurnal Vanzari"
@@ -7736,7 +7781,7 @@ msgid "Invoice Tax"
msgstr "Factură fiscală"
#. module: account
-#: code:addons/account/account_move_line.py:1277
+#: code:addons/account/account_move_line.py:1292
#, python-format
msgid "No piece number !"
msgstr "Lipsă număr bucăţi !"
@@ -7791,7 +7836,7 @@ msgstr "Catre"
#. module: account
#: selection:account.move.line,centralisation:0
-#: code:addons/account/account.py:1518
+#: code:addons/account/account.py:1535
#, python-format
msgid "Currency Adjustment"
msgstr "Ajustare Moneda"
@@ -7846,13 +7891,15 @@ msgstr "Mai"
#: selection:account.common.partner.report,result_selection:0
#: selection:account.partner.balance,result_selection:0
#: selection:account.partner.ledger,result_selection:0
+#: code:addons/account/report/account_aged_partner_balance.py:374
#: code:addons/account/report/account_partner_balance.py:299
+#: code:addons/account/report/account_partner_ledger.py:396
#, python-format
msgid "Payable Accounts"
msgstr "Conturi Plati"
#. module: account
-#: code:addons/account/account_invoice.py:732
+#: code:addons/account/account_invoice.py:741
#, python-format
msgid "Global taxes defined, but they are not in invoice lines !"
msgstr ""
@@ -7898,7 +7945,7 @@ msgstr "Nume raport"
#: selection:account.bank.accounts.wizard,account_type:0
#: selection:account.entries.report,type:0
#: selection:account.journal,type:0
-#: code:addons/account/account.py:3003
+#: code:addons/account/account.py:3020
#, python-format
msgid "Cash"
msgstr "Numerar"
@@ -7910,15 +7957,15 @@ msgid "Account Destination"
msgstr "Destinatie Cont"
#. module: account
-#: code:addons/account/account.py:1431
-#: code:addons/account/account.py:1460
-#: code:addons/account/account.py:1467
-#: code:addons/account/account_invoice.py:920
-#: code:addons/account/account_move_line.py:1104
-#: code:addons/account/wizard/account_automatic_reconcile.py:152
-#: code:addons/account/wizard/account_fiscalyear_close.py:73
-#: code:addons/account/wizard/account_fiscalyear_close.py:83
-#: code:addons/account/wizard/account_fiscalyear_close.py:86
+#: code:addons/account/account.py:1448
+#: code:addons/account/account.py:1477
+#: code:addons/account/account.py:1484
+#: code:addons/account/account_invoice.py:931
+#: code:addons/account/account_move_line.py:1119
+#: code:addons/account/wizard/account_automatic_reconcile.py:148
+#: code:addons/account/wizard/account_fiscalyear_close.py:88
+#: code:addons/account/wizard/account_fiscalyear_close.py:99
+#: code:addons/account/wizard/account_fiscalyear_close.py:102
#: code:addons/account/wizard/account_move_journal.py:165
#: code:addons/account/wizard/account_report_aged_partner_balance.py:56
#: code:addons/account/wizard/account_report_aged_partner_balance.py:58
@@ -8076,13 +8123,14 @@ msgstr "Fix"
#: code:addons/account/account.py:645
#: code:addons/account/account.py:664
#: code:addons/account/account.py:787
-#: code:addons/account/account.py:1077
-#: code:addons/account/account_invoice.py:732
-#: code:addons/account/account_invoice.py:735
-#: code:addons/account/account_invoice.py:738
+#: code:addons/account/account.py:1082
+#: code:addons/account/account_invoice.py:741
+#: code:addons/account/account_invoice.py:744
+#: code:addons/account/account_invoice.py:747
#: code:addons/account/account_move_line.py:97
-#: code:addons/account/account_move_line.py:750
-#: code:addons/account/account_move_line.py:803
+#: code:addons/account/account_move_line.py:766
+#: code:addons/account/account_move_line.py:819
+#: code:addons/account/wizard/account_fiscalyear_close.py:62
#, python-format
msgid "Warning !"
msgstr "Avertizare !"
@@ -8134,7 +8182,7 @@ msgid "Select a currency to apply on the invoice"
msgstr "Selectati o valuta pentru a o aplica pe factura"
#. module: account
-#: code:addons/account/account.py:3446
+#: code:addons/account/account.py:3463
#, python-format
msgid ""
"The bank account defined on the selected chart of accounts hasn't a code."
@@ -8147,7 +8195,7 @@ msgid "Can not %s draft/proforma/cancel invoice."
msgstr "Imposibil de %s o factura ciorna/proforma/anulata."
#. module: account
-#: code:addons/account/account_invoice.py:810
+#: code:addons/account/account_invoice.py:821
#, python-format
msgid "No Invoice Lines !"
msgstr "Nici o Linie a Facturii !"
@@ -8231,7 +8279,7 @@ msgid "Deferral Method"
msgstr "Metoda de tergiversare"
#. module: account
-#: code:addons/account/account_invoice.py:379
+#: code:addons/account/account_invoice.py:388
#, python-format
msgid "Invoice '%s' is paid."
msgstr "Factura '%s' este platita."
@@ -8299,7 +8347,7 @@ msgid "Associated Partner"
msgstr "Partener asociat"
#. module: account
-#: code:addons/account/account_invoice.py:1332
+#: code:addons/account/account_invoice.py:1345
#, python-format
msgid "You must first select a partner !"
msgstr "Mai intai trebuie sa selectati un partener !"
@@ -8358,7 +8406,7 @@ msgstr ""
"fiscale in functie de tara dumneavoastra."
#. module: account
-#: code:addons/account/account_invoice.py:428
+#: code:addons/account/account_invoice.py:437
#, python-format
msgid ""
"Can not find a chart of accounts for this company, you should create one."
@@ -8382,7 +8430,7 @@ msgid "Choose Fiscal Year"
msgstr "Alegeti Anul Fiscal"
#. module: account
-#: code:addons/account/account.py:3111
+#: code:addons/account/account.py:3128
#, python-format
msgid "Purchase Refund Journal"
msgstr "Jurnal Rambursare Achizitii"
@@ -8475,7 +8523,7 @@ msgid "Compute Code for Taxes Included Prices"
msgstr "Cod pentru calculul preţurilor cu taxe incluse"
#. module: account
-#: code:addons/account/account_invoice.py:1030
+#: code:addons/account/account_invoice.py:1042
#, python-format
msgid ""
"You can not cancel an invoice which is partially paid! You need to "
@@ -8618,7 +8666,7 @@ msgid "current month"
msgstr "luna curenta"
#. module: account
-#: code:addons/account/account.py:1052
+#: code:addons/account/account.py:1057
#, python-format
msgid ""
"No period defined for this date: %s !\n"
@@ -8706,6 +8754,7 @@ msgstr "Jurnal Rambursari"
#. module: account
#: report:account.account.balance:0
#: report:account.central.journal:0
+#: report:account.financial.report:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
#: report:account.general.ledger_landscape:0
@@ -8749,7 +8798,7 @@ msgid "The partner account used for this invoice."
msgstr "Contul partener folosit pentru aceasta factura."
#. module: account
-#: code:addons/account/account.py:3296
+#: code:addons/account/account.py:3313
#, python-format
msgid "Tax %.2f%%"
msgstr "Taxa %.2f%%"
@@ -8772,7 +8821,7 @@ msgid "Payment Term Line"
msgstr "Linie Termeni de plata"
#. module: account
-#: code:addons/account/account.py:3109
+#: code:addons/account/account.py:3126
#, python-format
msgid "Purchase Journal"
msgstr "Jurnal Achizitii"
@@ -8859,7 +8908,7 @@ msgid "Unpaid Invoices"
msgstr "Facturi neplatite"
#. module: account
-#: code:addons/account/account_invoice.py:495
+#: code:addons/account/account_invoice.py:504
#, python-format
msgid "The payment term of supplier does not have a payment term line!"
msgstr ""
@@ -8968,7 +9017,7 @@ msgid "Keep empty for all open fiscal years"
msgstr "Lasati necompletat pentru toti anii fiscali deschisi"
#. module: account
-#: code:addons/account/account_move_line.py:1105
+#: code:addons/account/account_move_line.py:1120
#, python-format
msgid "The account move (%s) for centralisation has been confirmed!"
msgstr "Miscarea contului (%s) pentru centralizare a fost confirmata!"
@@ -8983,7 +9032,7 @@ msgstr ""
"multi-moneda."
#. module: account
-#: code:addons/account/account.py:1307
+#: code:addons/account/account.py:1315
#, python-format
msgid ""
"You can not validate a non-balanced entry !\n"
@@ -9068,7 +9117,7 @@ msgid "Contact Address"
msgstr "Adresa de contact"
#. module: account
-#: code:addons/account/account.py:2256
+#: code:addons/account/account.py:2273
#, python-format
msgid "Wrong model !"
msgstr "Model gresit !"
@@ -9109,12 +9158,14 @@ msgstr "Contracte"
#: field:account.cashbox.line,starting_id:0
#: field:account.entries.report,reconcile_id:0
#: field:account.financial.report,balance:0
+#: field:account.financial.report,credit:0
+#: field:account.financial.report,debit:0
msgid "unknown"
msgstr "necunoscut(a)"
#. module: account
#: field:account.fiscalyear.close,journal_id:0
-#: code:addons/account/account.py:3113
+#: code:addons/account/account.py:3130
#, python-format
msgid "Opening Entries Journal"
msgstr "Jurnalul Inregistrarilor de deschidere"
@@ -9136,7 +9187,7 @@ msgstr ""
"calculat din Raportul Profit & Pierdere"
#. module: account
-#: code:addons/account/account_invoice.py:808
+#: code:addons/account/account_invoice.py:819
#, python-format
msgid "Please define sequence on the journal related to this invoice."
msgstr "Va rugam sa definiti secventa din jurnalul asociat acestei facturi."
@@ -9227,7 +9278,7 @@ msgid "Period from"
msgstr "Perioada de la"
#. module: account
-#: code:addons/account/account.py:3110
+#: code:addons/account/account.py:3127
#, python-format
msgid "Sales Refund Journal"
msgstr "Jurnal Rambursare Vanzari"
@@ -9274,7 +9325,7 @@ msgid "Purchase Tax(%)"
msgstr "Taxa de cumparare(%)"
#. module: account
-#: code:addons/account/account_invoice.py:810
+#: code:addons/account/account_invoice.py:821
#, python-format
msgid "Please create some invoice lines."
msgstr "Va rugam sa creati niste linii ale facturii."
@@ -9290,7 +9341,7 @@ msgid "Display Detail"
msgstr "Afisati Detaliile"
#. module: account
-#: code:addons/account/account.py:3118
+#: code:addons/account/account.py:3135
#, python-format
msgid "SCNJ"
msgstr "SCNJ"
@@ -9329,8 +9380,6 @@ msgstr "Sfarsitul Perioadei"
#: field:account.account.template,financial_report_ids:0
#: model:ir.actions.act_window,name:account.action_account_financial_report_tree
#: model:ir.actions.act_window,name:account.action_account_report
-#: model:ir.actions.act_window,name:account.action_account_report_bs
-#: model:ir.actions.act_window,name:account.action_account_report_pl
#: model:ir.ui.menu,name:account.menu_account_reports
msgid "Financial Reports"
msgstr "Rapoarte Financiare"
@@ -9345,6 +9394,7 @@ msgstr "Rapoarte Financiare"
#: field:account.common.journal.report,period_from:0
#: field:account.common.partner.report,period_from:0
#: field:account.common.report,period_from:0
+#: report:account.financial.report:0
#: report:account.general.journal:0
#: field:account.general.journal,period_from:0
#: report:account.general.ledger:0
@@ -9365,6 +9415,7 @@ msgstr "Inceputul Perioadei"
#. module: account
#: field:account.aged.trial.balance,direction_selection:0
+#: report:account.aged_trial_balance:0
msgid "Analysis Direction"
msgstr "Directia Analizei"
@@ -9384,7 +9435,7 @@ msgstr "Vizualizare Jurnal"
#. module: account
#: view:account.move.line:0
-#: code:addons/account/account_move_line.py:1046
+#: code:addons/account/account_move_line.py:1061
#, python-format
msgid "Total credit"
msgstr "Total credit"
@@ -9454,6 +9505,7 @@ msgstr "Extrase de cont"
#: report:account.analytic.account.inverted.balance:0
#: report:account.central.journal:0
#: field:account.entries.report,balance:0
+#: report:account.financial.report:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
#: report:account.general.ledger_landscape:0
@@ -9535,7 +9587,7 @@ msgstr ""
"corespondent."
#. module: account
-#: code:addons/account/wizard/account_automatic_reconcile.py:152
+#: code:addons/account/wizard/account_automatic_reconcile.py:148
#, python-format
msgid "You must select accounts to reconcile"
msgstr "Trebuie sa selectati conturile care vor fi reconciliate"
@@ -9585,7 +9637,7 @@ msgid "Move"
msgstr "Miscare"
#. module: account
-#: code:addons/account/account_move_line.py:1153
+#: code:addons/account/account_move_line.py:1168
#, python-format
msgid "You can not change the tax, you should remove and recreate lines !"
msgstr ""
@@ -9645,7 +9697,7 @@ msgid "Consolidated Children"
msgstr "Subordonati reuniti"
#. module: account
-#: code:addons/account/wizard/account_fiscalyear_close.py:87
+#: code:addons/account/wizard/account_fiscalyear_close.py:103
#, python-format
msgid ""
"The journal must have centralised counterpart without the Skipping draft "
@@ -9710,6 +9762,7 @@ msgstr ""
#: field:account.common.journal.report,period_to:0
#: field:account.common.partner.report,period_to:0
#: field:account.common.report,period_to:0
+#: report:account.financial.report:0
#: report:account.general.journal:0
#: field:account.general.journal,period_to:0
#: report:account.general.ledger:0
@@ -9772,6 +9825,7 @@ msgstr "Inregistrare Abonament"
#. module: account
#: report:account.account.balance:0
#: field:account.aged.trial.balance,date_from:0
+#: report:account.aged_trial_balance:0
#: field:account.balance.report,date_from:0
#: report:account.central.journal:0
#: field:account.central.journal,date_from:0
@@ -9779,6 +9833,7 @@ msgstr "Inregistrare Abonament"
#: field:account.common.journal.report,date_from:0
#: field:account.common.partner.report,date_from:0
#: field:account.common.report,date_from:0
+#: report:account.financial.report:0
#: field:account.fiscalyear,date_start:0
#: report:account.general.journal:0
#: field:account.general.journal,date_from:0
@@ -9824,7 +9879,7 @@ msgid "Unreconciled"
msgstr "Nereconciliat"
#. module: account
-#: code:addons/account/account_invoice.py:828
+#: code:addons/account/account_invoice.py:839
#, python-format
msgid "Bad total !"
msgstr "Total gresit !"
@@ -9892,7 +9947,7 @@ msgid "Comparison"
msgstr "Comparatie"
#. module: account
-#: code:addons/account/account_invoice.py:372
+#: code:addons/account/account_invoice.py:381
#, python-format
msgid "Unknown Error"
msgstr "Eroare necunoscuta"
@@ -9931,6 +9986,7 @@ msgstr "Validati Miscarea Contului"
#: report:account.analytic.account.inverted.balance:0
#: report:account.central.journal:0
#: field:account.entries.report,credit:0
+#: report:account.financial.report:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
#: report:account.general.ledger_landscape:0
@@ -10038,9 +10094,11 @@ msgstr "Inregistrari Analitice in ultimele 30 de zile"
#: view:accounting.report:0
#: selection:accounting.report,filter:0
#: selection:accounting.report,filter_cmp:0
+#: code:addons/account/report/common_report_header.py:99
#: model:ir.actions.act_window,name:account.action_account_period_form
#: model:ir.ui.menu,name:account.menu_action_account_period_form
#: model:ir.ui.menu,name:account.next_id_23
+#, python-format
msgid "Periods"
msgstr "Perioade"
@@ -10212,6 +10270,7 @@ msgstr "Afisat"
#: field:account.common.journal.report,date_to:0
#: field:account.common.partner.report,date_to:0
#: field:account.common.report,date_to:0
+#: report:account.financial.report:0
#: field:account.fiscalyear,date_stop:0
#: report:account.general.journal:0
#: field:account.general.journal,date_to:0
@@ -10259,7 +10318,7 @@ msgid "No detail"
msgstr "Niciun detaliu"
#. module: account
-#: code:addons/account/account_analytic_line.py:102
+#: code:addons/account/account_analytic_line.py:100
#, python-format
msgid "There is no income account defined for this product: \"%s\" (id:%d)"
msgstr ""
@@ -10297,6 +10356,7 @@ msgid "Verification Total"
msgstr "Verificare Total"
#. module: account
+#: report:account.aged_trial_balance:0
#: report:account.analytic.account.balance:0
#: report:account.analytic.account.inverted.balance:0
#: report:account.analytic.account.quantity_cost_ledger:0
@@ -10317,6 +10377,7 @@ msgstr "Jurnal: Toate"
#. module: account
#: field:account.account,company_id:0
+#: report:account.account.balance:0
#: field:account.aged.trial.balance,company_id:0
#: field:account.analytic.journal,company_id:0
#: field:account.balance.report,company_id:0
@@ -10331,7 +10392,9 @@ msgstr "Jurnal: Toate"
#: field:account.entries.report,company_id:0
#: field:account.fiscal.position,company_id:0
#: field:account.fiscalyear,company_id:0
+#: report:account.general.journal:0
#: field:account.general.journal,company_id:0
+#: report:account.general.ledger_landscape:0
#: field:account.installer,company_id:0
#: field:account.invoice,company_id:0
#: field:account.invoice.line,company_id:0
@@ -10341,6 +10404,8 @@ msgstr "Jurnal: Toate"
#: view:account.journal:0
#: field:account.journal,company_id:0
#: field:account.journal.period,company_id:0
+#: report:account.journal.period.print:0
+#: report:account.journal.period.print.sale.purchase:0
#: field:account.model,company_id:0
#: field:account.move,company_id:0
#: field:account.move.line,company_id:0
@@ -10505,6 +10570,7 @@ msgstr "Factura furnizor"
#: report:account.analytic.account.inverted.balance:0
#: report:account.central.journal:0
#: field:account.entries.report,debit:0
+#: report:account.financial.report:0
#: report:account.general.journal:0
#: report:account.general.ledger:0
#: report:account.general.ledger_landscape:0
@@ -10538,6 +10604,8 @@ msgstr "Eroare! Nu puteti crea sabloane de cont recurente."
#. module: account
#: selection:account.print.journal,sort_selection:0
+#: code:addons/account/report/account_journal.py:197
+#, python-format
msgid "Journal Entry Number"
msgstr "Numarul Inregistrarii in Jurnal"
@@ -10557,7 +10625,7 @@ msgstr ""
"elemente ale jurnalului!"
#. module: account
-#: code:addons/account/account_move_line.py:832
+#: code:addons/account/account_move_line.py:843
#, python-format
msgid "Entry is already reconciled"
msgstr "Inregistrarea este deja reconciliata"
@@ -10599,8 +10667,10 @@ msgstr ""
"conturi devalorizate."
#. module: account
+#: report:account.account.balance:0
#: selection:account.balance.report,display_account:0
#: selection:account.common.account.report,display_account:0
+#: report:account.general.ledger_landscape:0
#: selection:account.report.general.ledger,display_account:0
msgid "With movements"
msgstr "Cu miscari"
@@ -10706,7 +10776,7 @@ msgstr ""
#. module: account
#: view:account.payment.term:0
msgid "Description on Invoices"
-msgstr ""
+msgstr "Descriere in facturi"
#. module: account
#: model:ir.model,name:account.model_account_analytic_chart
@@ -10724,8 +10794,8 @@ msgid "Statistic Reports"
msgstr "Rapoarte Statistice"
#. module: account
-#: code:addons/account/account_move_line.py:1155
-#: code:addons/account/account_move_line.py:1238
+#: code:addons/account/account_move_line.py:1170
+#: code:addons/account/account_move_line.py:1253
#, python-format
msgid "Bad account!"
msgstr "Cont gresit !"
@@ -10756,7 +10826,7 @@ msgid "Accounts Mapping"
msgstr "Reprezentare Conturi"
#. module: account
-#: code:addons/account/account_invoice.py:364
+#: code:addons/account/account_invoice.py:373
#, python-format
msgid "Invoice '%s' is waiting for validation."
msgstr "Factura '%s' asteapta validarea."
@@ -10881,74 +10951,71 @@ msgid ""
" "
msgstr ""
"\n"
-"Buna ziua${obiect.adresa_factura_id.nume si ' ' sau "
-"''}${obiect.adresa_factura_id.nume sau ''},\n"
-" \n"
-"O factura noua este disponibila pentru ${obiect.partener_id.nume}:\n"
-" | Numar factura: *${obiect.numar}*\n"
-" | Total factura: *${obiect.suma_total} ${obiect.moneda_id.nume}*\n"
-" | Data facturii: ${obiect.data_facturii}\n"
-" % daca obiect.origine:\n"
-" | Referinta comenzii: ${obiect.origine}\n"
-" % endif\n"
-" | Contactul dumneavoastra: ${obiect.utilizator_id.nume} "
-"${obiect.utilizator_id.utilizator_e-mail si "
-"'<%s>'%(obiect.utilizator_id.utilizator_e-mail) sau ''}\n"
-" \n"
-"Puteti vizualiza documentul facturii, sa il descarcati si sa o platiti "
-"online folosind link-ul urmator:\n"
-" ${ctx.get('edi_web_url_vizualizare') sau 'n/a'}\n"
-" \n"
-"% daca obiect.companie_id.cont_paypal si obiect.tip in ('iesire_factura', "
-"'intrare_rambursare'):\n"
-" <% \n"
-" nume_companie = cotare(obiect.companie_id.nume)\n"
-" inv_numar = cotare(obiect.numar)\n"
-" cont_paypal = cotare(obiect.companie_id.cont_paypal)\n"
-" inv_suma = cotare(str(obiect.suma_total))\n"
-" moneda_nume = cotare (obiect.moneda_id.nume)\n"
-" url_paypal = \"https://www.paypal.com/cgi-"
+"Buna ziua ${object.address_invoice_id.name and ' ' or "
+"''}${object.address_invoice_id.name or ''},\n"
+"\n"
+"O noua factura a fost generata pentru ${object.partner_id.name}:\n"
+"| Numar factura: *${object.number}*\n"
+"| Total factura: *${object.amount_total} ${object.currency_id.name}*\n"
+"| Data factura: ${object.date_invoice}\n"
+"% if object.origin:\n"
+"| Referinta comanda: ${object.origin}\n"
+"% endif\n"
+"| Agentul dumneavoastra: ${object.user_id.name} ${object.user_id.user_email "
+"and '<%s>'%(object.user_id.user_email) or ''}\n"
+"\n"
+"Puteti vizualiza documentul, sa il descarcati sau sa il platiti online "
+"accesand urmatorul link:\n"
+"${ctx.get('edi_web_url_view') or 'n/a'}\n"
+"\n"
+"% if object.company_id.paypal_account and object.type in ('out_invoice', "
+"'in_refund'):\n"
+"<%\n"
+"comp_name = quote(object.company_id.name)\n"
+"inv_number = quote(object.number)\n"
+"paypal_account = quote(object.company_id.paypal_account)\n"
+"inv_amount = quote(str(object.amount_total))\n"
+"cur_name = quote(object.currency_id.name)\n"
+"paypal_url = \"https://www.paypal.com/cgi-"
"bin/webscr?cmd=_xclick&business=%s&item_name=%s%%20Invoice%%20%s\"\\\n"
-" "
"\"&invoice=%s&amount=%s¤cy_code=%s&button_subtype=services&no_note=1&bn"
"=OpenERP_Invoice_PayNow_%s\" % \\\n"
-" "
"(paypal_account,comp_name,inv_number,inv_number,inv_amount,cur_name,cur_name)"
"\n"
-" %>\n"
-" De asemenea, este posibil sa platiti direct cu :\n"
-" ${paypal_url}\n"
-" % endif\n"
-" \n"
-"Daca aveti intrebari, nu ezitati sa ne contactati.\n"
-" \n"
+"%>\n"
+"Este posibil sa platiti direct cu Paypal:\n"
+"${paypal_url}\n"
+"% endif\n"
+"\n"
+"Daca aveti intrebari va rugam sa ne contactati.\n"
+"\n"
+"\n"
+"Multumim ca a-ti ales ${object.company_id.name}!\n"
"\n"
-"Va multumim ca ati ales ${obiect.companie_id.nume}!\n"
-" \n"
"\n"
"--\n"
-" ${obiect.utilizator_id.nume} ${obiect.utilizator_id.utilizator_e-mail "
-"si'<%s>'%(obiect.utilizator_id.utilizator_e-mail) sau ''}\n"
-" ${obiect.companie_id.nume}\n"
-" % daca obiect.companie_id.strada:\n"
-" ${obiect.companie_id.strada sau ''}\n"
-" % endif\n"
-" % daca obiect.companie_id.strada2:\n"
-" ${obiect.companie_id.strada2}\n"
-" % endif\n"
-" % daca obiect.companie_id.oras sau obiect.companie_id.cod postal:\n"
-" ${obiect.companie_id.cod postal sau ''} ${obiect.companie_id.oras sau ''}\n"
-" % endif\n"
-" % daca obiect.companie_id.tara_id:\n"
-" ${obiect.companie_id.stat_id si ('%s, ' % obiect.companie_id.stat_id.nume) "
-"sau ''} ${obiect.companie_id.tara_id.nume sau ''}\n"
-" % endif\n"
-" % daca obiect.companie_id.telefon:\n"
-" Telefon: ${obiect.companie_id.telefon}\n"
-" % endif\n"
-" % daca obiect.companie_id.pagina_de_internet:\n"
-" ${obiect.companie_id.pagina_de_internet sau ''}\n"
-" % endif\n"
+"${object.user_id.name} ${object.user_id.user_email and "
+"'<%s>'%(object.user_id.user_email) or ''}\n"
+"${object.company_id.name}\n"
+"% if object.company_id.street:\n"
+"${object.company_id.street or ''}\n"
+"% endif\n"
+"% if object.company_id.street2:\n"
+"${object.company_id.street2}\n"
+"% endif\n"
+"% if object.company_id.city or object.company_id.zip:\n"
+"${object.company_id.zip or ''} ${object.company_id.city or ''}\n"
+"% endif\n"
+"% if object.company_id.country_id:\n"
+"${object.company_id.state_id and ('%s, ' % object.company_id.state_id.name) "
+"or ''} ${object.company_id.country_id.name or ''}\n"
+"% endif\n"
+"% if object.company_id.phone:\n"
+"Telefon: ${object.company_id.phone}\n"
+"% endif\n"
+"% if object.company_id.website:\n"
+"${object.company_id.website or ''}\n"
+"% endif\n"
" "
#. module: account
@@ -11018,6 +11085,7 @@ msgstr "wizard.cont.addtmpl"
#. module: account
#: field:account.aged.trial.balance,result_selection:0
+#: report:account.aged_trial_balance:0
#: field:account.common.partner.report,result_selection:0
#: report:account.partner.balance:0
#: field:account.partner.balance,result_selection:0
@@ -11096,6 +11164,8 @@ msgstr "Termen"
#. module: account
#: selection:account.aged.trial.balance,direction_selection:0
+#: code:addons/account/report/account_aged_partner_balance.py:383
+#, python-format
msgid "Future"
msgstr "La termen"
diff --git a/addons/account/static/src/js/account_move_reconciliation.js b/addons/account/static/src/js/account_move_reconciliation.js
index 89ceb5be6fa..e8bf24fb27f 100644
--- a/addons/account/static/src/js/account_move_reconciliation.js
+++ b/addons/account/static/src/js/account_move_reconciliation.js
@@ -106,8 +106,10 @@ openerp.account = function (instance) {
result.context = _.extend(result.context || {}, additional_context);
result.flags = result.flags || {};
result.flags.new_window = true;
- return self.do_action(result, function () {
- self.do_search(self.last_domain, self.last_context, self.last_group_by);
+ return self.do_action(result, {
+ on_close: function () {
+ self.do_search(self.last_domain, self.last_context, self.last_group_by);
+ }
});
});
});
diff --git a/addons/account_asset/i18n/ro.po b/addons/account_asset/i18n/ro.po
index 70cbf186849..ff62213c156 100644
--- a/addons/account_asset/i18n/ro.po
+++ b/addons/account_asset/i18n/ro.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
-"PO-Revision-Date: 2012-04-18 07:47+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2012-10-17 08:25+0000\n"
+"Last-Translator: filsys \n"
"Language-Team: Romanian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-08-28 06:42+0000\n"
-"X-Generator: Launchpad (build 15864)\n"
+"X-Launchpad-Export-Date: 2012-10-18 04:41+0000\n"
+"X-Generator: Launchpad (build 16160)\n"
#. module: account_asset
#: view:account.asset.asset:0
@@ -440,12 +440,12 @@ msgstr "Metoda Timp"
#. module: account_asset
#: view:account.asset.category:0
msgid "Analytic Information"
-msgstr ""
+msgstr "Informatii analitice"
#. module: account_asset
#: view:asset.modify:0
msgid "Asset Durations to Modify"
-msgstr ""
+msgstr "Durata de modificat"
#. module: account_asset
#: constraint:account.move.line:0
@@ -622,7 +622,7 @@ msgstr "Prorata Temporis"
#. module: account_asset
#: view:account.asset.category:0
msgid "Accounting Information"
-msgstr ""
+msgstr "Informații contabile"
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_invoice
diff --git a/addons/base_import/static/src/css/import.css b/addons/base_import/static/src/css/import.css
index 21e598ff707..07b193c3dc4 100644
--- a/addons/base_import/static/src/css/import.css
+++ b/addons/base_import/static/src/css/import.css
@@ -1,3 +1,54 @@
+.oe_import{
+ display: inline-block;
+ width: 600px;
+ padding: 16px;
+}
+.oe_import > p {
+ margin-left: 8px;
+ margin-right: 8px;
+ text-align: justify
+}
+
+/* ----------- IMPORT BOX ----------- */
+
+.oe_import .oe_import_box{
+ margin: 16px;
+ padding: 16px;
+ background: #F0EEEE;
+ border-radius: 3px;
+ border: solid 1px #dddddd;
+}
+.oe_import .oe_import_toggle{
+ margin-top: 8px;
+}
+.oe_import .oe_import_options{
+ margin-top: 8px;
+}
+.oe_import .oe_import_options input{
+ width: 150px;
+}
+
+.oe_import a.oe_import_toggle {
+ display: block;
+}
+.oe_import a.oe_import_toggle:before {
+ content: '+'
+}
+
+.oe_import .oe_import_options p {
+ margin: 0;
+ padding: 0;
+}
+.oe_import .oe_import_options label {
+ display: inline-block;
+ width: 100px;
+ height:32px;
+ line-height:32px;
+ text-align: right;
+}
+
+/* ----------- INITIAL SETUP ------------ */
+
.openerp .oe_list_buttons .oe_alternative {
visibility: visible;
}
@@ -25,38 +76,85 @@
display: block;
}
-.oe_import .oe_import_error_report ul .oe_import_report_error {
- background-color: #FFD9DB;
-}
-.oe_import .oe_import_error_report ul .oe_import_report_warning {
- background-color: #FEFFD9;
-}
-.oe_import .oe_import_error_report ul .oe_import_report_info {
- background-color: #d3ffd3;
-}
-
.oe_import .oe_import_noheaders {
color: #888;
}
-.oe_import a.oe_import_toggle {
- display: block;
-}
-.oe_import a.oe_import_toggle:before {
- content: '> '
-}
-
-.oe_import .oe_import_options p {
- margin: 0;
- padding: 0;
-}
-.oe_import .oe_import_options label {
- display: inline-block;
- width: 8em;
- text-align: right;
-}
.oe_import_selector ul,
.oe_import_selector li {
margin: 0; padding: 0;
}
+
+/* ------------- ERRORS AND WARNINGS REPORT ------------ */
+
+.oe_import .oe_import_error_report ul{
+ padding-left: 16px;
+}
+.oe_import .oe_import_report {
+ margin-right: 16px;
+ padding: 4px;
+ list-style: none;
+ border-bottom: solid 1px rgba(0,0,0,0.05);
+}
+.oe_import .oe_import_report:first-child{
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+.oe_import .oe_import_report:last-child{
+ border-bottom-left-radius:3px;
+ border-bottom-right-radius:3px;
+ border-bottom: none;
+}
+.oe_import .oe_import_report_error {
+ background-color: #FFD9DB;
+ color: #AF5F5E;
+}
+.oe_import .oe_import_report_error:last-of-type{
+ border-bottom:none;
+}
+.oe_import .oe_import_report_warning {
+ background-color: #FEFFD9;
+ color: #918743;
+}
+.oe_import .oe_import_report_warning:last-of-type{
+ border-bottom:none;
+}
+.oe_import .oe_import_report_info {
+ background-color: #d3ffd3;
+}
+.oe_import .oe_import_report_info:last-of-type{
+ border-bottom:none;
+}
+
+/* ------------- THE CSV TABLE ------------ */
+
+.oe_import .oe_import_grid{
+ margin: 16px;
+ border-radius:3px;
+ border: solid 1px #909090;
+}
+.oe_import .oe_import_grid tr{
+ height:16px;
+}
+.oe_import .oe_import_grid tr.oe_import_grid-header:first-child{
+ height: 24px;
+ background: #909090;
+ color: white;
+}
+.oe_import .oe_import_grid tr:nth-child(odd){
+ background: rgba(0,0,0,0.05);
+}
+.oe_import .oe_import_grid td{
+ padding: 2px;
+ padding-left: 4px;
+}
+.oe_import .oe_import_grid tr.oe_import_grid-header td:not(:last-child){
+ border-right: 1px solid #707070;
+}
+.oe_import .oe_import_grid td:not(:last-child){
+ border-right: 1px solid #D0D0D0;
+}
+
+
+
diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js
index 33c86e88b2c..043630afc48 100644
--- a/addons/base_import/static/src/js/import.js
+++ b/addons/base_import/static/src/js/import.js
@@ -53,8 +53,10 @@ openerp.base_import = function (instance) {
params: {
model: self.dataset.model
}
- }, void 0, void 0, function () {
- self.reload();
+ }, {
+ on_reverse_breadcrumb: function () {
+ self.reload();
+ },
});
return false;
});
diff --git a/addons/base_import/static/src/xml/import.xml b/addons/base_import/static/src/xml/import.xml
index 1c57c40c9db..4f721032d1d 100644
--- a/addons/base_import/static/src/xml/import.xml
+++ b/addons/base_import/static/src/xml/import.xml
@@ -21,24 +21,26 @@
class="oe_import_csv" target="_blank">.CSV
file to import. If you need a sample importable file, you
can use the export tool to generate one.
- CSV File:
-
-
-
-
-
-
- File Format Options…
-
-
-
-
-
-
-
+
+
CSV File:
+
+
+
+
+
@@ -54,7 +56,7 @@
simpler especially when the file has many columns.
-
+
Frequently Asked Questions
diff --git a/addons/document_page/i18n/pt_BR.po b/addons/document_page/i18n/pt_BR.po
index 564a93831e1..abe8036dac8 100644
--- a/addons/document_page/i18n/pt_BR.po
+++ b/addons/document_page/i18n/pt_BR.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-10-17 04:36+0000\n"
-"X-Generator: Launchpad (build 16152)\n"
+"X-Launchpad-Export-Date: 2012-10-18 04:41+0000\n"
+"X-Generator: Launchpad (build 16160)\n"
#. module: document_page
#: field:document.page.type,template:0
diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py
index 37dca4ceddb..73337d92ab0 100644
--- a/addons/email_template/email_template.py
+++ b/addons/email_template/email_template.py
@@ -175,7 +175,7 @@ class email_template(osv.osv):
'res_model': 'mail.compose.message',
'src_model': src_obj,
'view_type': 'form',
- 'context': "{'default_composition_mode': 'mass_mail', 'default_template_id' : %d}" % (template.id),
+ 'context': "{'default_composition_mode': 'mass_mail', 'default_template_id' : %d, 'default_use_template': True}" % (template.id),
'view_mode':'form,tree',
'view_id': res_id,
'target': 'new',
diff --git a/addons/email_template/wizard/mail_compose_message.py b/addons/email_template/wizard/mail_compose_message.py
index c0cb7fc92e5..fe6f85da544 100644
--- a/addons/email_template/wizard/mail_compose_message.py
+++ b/addons/email_template/wizard/mail_compose_message.py
@@ -24,7 +24,8 @@ import tools
from osv import osv
from osv import fields
-class mail_compose_message(osv.osv_memory):
+
+class mail_compose_message(osv.TransientModel):
_inherit = 'mail.compose.message'
def _get_templates(self, cr, uid, context=None):
diff --git a/addons/email_template/wizard/mail_compose_message_view.xml b/addons/email_template/wizard/mail_compose_message_view.xml
index 655f5b9d0c2..a33135ca098 100644
--- a/addons/email_template/wizard/mail_compose_message_view.xml
+++ b/addons/email_template/wizard/mail_compose_message_view.xml
@@ -8,38 +8,15 @@
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
- mail.compose.message.form
- mail.compose.message
-
-
-
-
-
-
-
-
+
\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
-"PO-Revision-Date: 2011-06-11 13:23+0000\n"
-"Last-Translator: Christopher Ormaza - (Ecuadorenlinea.net) "
-"\n"
+"PO-Revision-Date: 2012-10-17 04:38+0000\n"
+"Last-Translator: Cristian Salamea (Gnuthink) \n"
"Language-Team: Spanish (Ecuador) \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-08-28 06:33+0000\n"
-"X-Generator: Launchpad (build 15864)\n"
+"X-Launchpad-Export-Date: 2012-10-18 04:41+0000\n"
+"X-Generator: Launchpad (build 16160)\n"
#. module: hr_payroll
#: field:hr.payslip.line,condition_select:0
@@ -170,7 +169,7 @@ msgstr "Todas las reglas hijas"
#. module: hr_payroll
#: view:hr.payslip:0 view:hr.salary.rule:0
msgid "Input Data"
-msgstr ""
+msgstr "Datos de entrada"
#. module: hr_payroll
#: constraint:hr.payslip:0
@@ -228,7 +227,7 @@ msgstr "Detalle regla salarial"
#. module: hr_payroll
#: report:paylip.details:0 report:payslip:0
msgid "Note"
-msgstr ""
+msgstr "Notas"
#. module: hr_payroll
#: field:hr.payroll.structure,code:0 field:hr.payslip,number:0
@@ -271,7 +270,7 @@ msgstr "Suma de el sueldo de todos los contratos actuales del empleado"
#. module: hr_payroll
#: view:hr.payslip:0
msgid "Total Working Days"
-msgstr ""
+msgstr "Total de días trabajado"
#. module: hr_payroll
#: help:hr.payslip.line,code:0 help:hr.salary.rule,code:0
@@ -363,7 +362,7 @@ msgstr "Semi-anualmente"
#. module: hr_payroll
#: view:hr.salary.rule:0
msgid "Children Definition"
-msgstr ""
+msgstr "Definición de Hijos"
#. module: hr_payroll
#: report:paylip.details:0 report:payslip:0
@@ -373,29 +372,29 @@ msgstr "Correo electrónico"
#. module: hr_payroll
#: view:hr.payslip.run:0
msgid "Search Payslip Batches"
-msgstr ""
+msgstr "Buscar bloque de roles"
#. module: hr_payroll
#: field:hr.payslip.line,amount_percentage_base:0
#: field:hr.salary.rule,amount_percentage_base:0
msgid "Percentage based on"
-msgstr ""
+msgstr "Porcentaje basado en"
#. module: hr_payroll
#: help:hr.payslip.line,amount_percentage:0
#: help:hr.salary.rule,amount_percentage:0
msgid "For example, enter 50.0 to apply a percentage of 50%"
-msgstr ""
+msgstr "Por ejemplo, ingrese 50.0 para aplicar el 50%"
#. module: hr_payroll
#: field:hr.payslip,paid:0
msgid "Made Payment Order ? "
-msgstr ""
+msgstr "Orden de Pago generada ? "
#. module: hr_payroll
#: report:contribution.register.lines:0
msgid "PaySlip Lines by Contribution Register"
-msgstr ""
+msgstr "Detalle de nómina por contribución registrada"
#. module: hr_payroll
#: help:hr.payslip,state:0
@@ -513,7 +512,7 @@ msgstr "Regla de salario hija"
#: field:hr.payslip.run,date_end:0 report:paylip.details:0 report:payslip:0
#: field:payslip.lines.contribution.register,date_to:0
msgid "Date To"
-msgstr ""
+msgstr "Fecha hasta"
#. module: hr_payroll
#: selection:hr.payslip.line,condition_select:0
@@ -576,7 +575,7 @@ msgstr "El contrato al cual aplica este ingreso"
#. module: hr_payroll
#: view:hr.salary.rule:0
msgid "Computation"
-msgstr ""
+msgstr "Cálculo"
#. module: hr_payroll
#: help:hr.payslip.input,amount:0
@@ -711,7 +710,7 @@ msgstr "Expresión de python"
#. module: hr_payroll
#: report:paylip.details:0 report:payslip:0
msgid "Designation"
-msgstr ""
+msgstr "Designación"
#. module: hr_payroll
#: code:addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.py:52
@@ -839,7 +838,7 @@ msgstr "Registrar Nombre"
#. module: hr_payroll
#: view:hr.salary.rule:0
msgid "General"
-msgstr ""
+msgstr "General"
#. module: hr_payroll
#: code:addons/hr_payroll/hr_payroll.py:664
@@ -913,7 +912,7 @@ msgstr "Detalle del rol"
#: model:ir.actions.act_window,name:hr_payroll.action_view_hr_payslip_form
#: model:ir.ui.menu,name:hr_payroll.menu_department_tree
msgid "Employee Payslips"
-msgstr ""
+msgstr "Roles de Empleado"
#. module: hr_payroll
#: view:hr.payslip.line:0 field:hr.payslip.line,register_id:0
@@ -1004,7 +1003,7 @@ msgstr "Lineas de roles por registro de contribuciones"
#. module: hr_payroll
#: selection:hr.payslip,state:0
msgid "Waiting"
-msgstr ""
+msgstr "Esperando"
#. module: hr_payroll
#: report:paylip.details:0 report:payslip:0
diff --git a/addons/l10n_be/i18n/pt_BR.po b/addons/l10n_be/i18n/pt_BR.po
index 401df0fe2fd..273dc6c5812 100644
--- a/addons/l10n_be/i18n/pt_BR.po
+++ b/addons/l10n_be/i18n/pt_BR.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-10-17 04:35+0000\n"
-"X-Generator: Launchpad (build 16152)\n"
+"X-Launchpad-Export-Date: 2012-10-18 04:40+0000\n"
+"X-Generator: Launchpad (build 16160)\n"
#. module: l10n_be
#: field:partner.vat.intra,test_xml:0
diff --git a/addons/l10n_be_hr_payroll/i18n/pt_BR.po b/addons/l10n_be_hr_payroll/i18n/pt_BR.po
index 2c4f688842a..842555642a5 100644
--- a/addons/l10n_be_hr_payroll/i18n/pt_BR.po
+++ b/addons/l10n_be_hr_payroll/i18n/pt_BR.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-10-17 04:36+0000\n"
-"X-Generator: Launchpad (build 16152)\n"
+"X-Launchpad-Export-Date: 2012-10-18 04:41+0000\n"
+"X-Generator: Launchpad (build 16160)\n"
#. module: l10n_be_hr_payroll
#: help:hr.employee,disabled_spouse_bool:0
diff --git a/addons/l10n_cn/i18n/pt_BR.po b/addons/l10n_cn/i18n/pt_BR.po
index 64e1f8cc066..ac78e9fd2d2 100644
--- a/addons/l10n_cn/i18n/pt_BR.po
+++ b/addons/l10n_cn/i18n/pt_BR.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-10-17 04:36+0000\n"
-"X-Generator: Launchpad (build 16152)\n"
+"X-Launchpad-Export-Date: 2012-10-18 04:41+0000\n"
+"X-Generator: Launchpad (build 16160)\n"
#. module: l10n_cn
#: model:account.account.type,name:l10n_cn.user_type_profit_and_loss
diff --git a/addons/l10n_ec/i18n/es_EC.po b/addons/l10n_ec/i18n/es_EC.po
index c631eb40b2b..15e4282f54b 100644
--- a/addons/l10n_ec/i18n/es_EC.po
+++ b/addons/l10n_ec/i18n/es_EC.po
@@ -8,24 +8,24 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-12-23 09:56+0000\n"
-"PO-Revision-Date: 2011-04-11 18:21+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2012-10-17 04:39+0000\n"
+"Last-Translator: Cristian Salamea (Gnuthink) \n"
"Language-Team: Spanish (Ecuador) \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-08-28 06:42+0000\n"
-"X-Generator: Launchpad (build 15864)\n"
+"X-Launchpad-Export-Date: 2012-10-18 04:41+0000\n"
+"X-Generator: Launchpad (build 16160)\n"
#. module: l10n_ec
#: model:account.account.type,name:l10n_ec.account_type_expense
msgid "Gasto"
-msgstr ""
+msgstr "Gasto"
#. module: l10n_ec
#: model:account.account.type,name:l10n_ec.account_type_stock
msgid "Inventario"
-msgstr ""
+msgstr "Inventario"
#. module: l10n_ec
#: model:ir.actions.todo,note:l10n_ec.config_call_account_template_ec
@@ -50,47 +50,47 @@ msgstr ""
#. module: l10n_ec
#: model:account.account.type,name:l10n_ec.account_type_receivable
msgid "Por Cobrar"
-msgstr ""
+msgstr "Por Cobrar"
#. module: l10n_ec
#: model:account.account.type,name:l10n_ec.account_type_asset
msgid "Activo"
-msgstr ""
+msgstr "Activo"
#. module: l10n_ec
#: model:account.account.type,name:l10n_ec.account_type_tax
msgid "Impuesto"
-msgstr ""
+msgstr "Impuesto"
#. module: l10n_ec
#: model:account.account.type,name:l10n_ec.account_type_liability
msgid "Pasivo"
-msgstr ""
+msgstr "Pasivo"
#. module: l10n_ec
#: model:account.account.type,name:l10n_ec.account_type_capital
msgid "Capital"
-msgstr ""
+msgstr "Capital"
#. module: l10n_ec
#: model:account.account.type,name:l10n_ec.account_type_cash
msgid "Efectivo"
-msgstr ""
+msgstr "Efectivo"
#. module: l10n_ec
#: model:account.account.type,name:l10n_ec.account_type_payable
msgid "Por Pagar"
-msgstr ""
+msgstr "Por Pagar"
#. module: l10n_ec
#: model:account.account.type,name:l10n_ec.account_type_income
msgid "Ingreso"
-msgstr ""
+msgstr "Ingreso"
#. module: l10n_ec
#: model:account.account.type,name:l10n_ec.account_type_view
msgid "View"
-msgstr ""
+msgstr "Vista"
#~ msgid ""
#~ "\n"
diff --git a/addons/l10n_ma/i18n/pt_BR.po b/addons/l10n_ma/i18n/pt_BR.po
index 1c57545404c..c76094f055d 100644
--- a/addons/l10n_ma/i18n/pt_BR.po
+++ b/addons/l10n_ma/i18n/pt_BR.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-10-17 04:36+0000\n"
-"X-Generator: Launchpad (build 16152)\n"
+"X-Launchpad-Export-Date: 2012-10-18 04:41+0000\n"
+"X-Generator: Launchpad (build 16160)\n"
#. module: l10n_ma
#: model:account.account.type,name:l10n_ma.cpt_type_imm
diff --git a/addons/l10n_us/account.account.template.csv b/addons/l10n_us/account.account.template.csv
index 46430ac37f8..c7431ce89a7 100644
--- a/addons/l10n_us/account.account.template.csv
+++ b/addons/l10n_us/account.account.template.csv
@@ -69,29 +69,29 @@
"51800_advertising","51800","Merchant Account Fees","other","l10n_us.user_type_cogs","cost_of_goods_sold","FALSE","l10n_us.account_chart_template_advertising"
"53500_advertising","53500","Subcontracted Services","other","l10n_us.user_type_cogs","cost_of_goods_sold","FALSE","l10n_us.account_chart_template_advertising"
"64200_advertising","64200","Marketing Expense","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_advertising"
-"41200_agriculture","41200","Agricultural Program Payments","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agricultar"
-"42500_agriculture","42500","Commodity Credit Loans","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agricultar"
-"42800_agriculture","42800","Cooperative Distributions","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agricultar"
-"42900_agriculture","42900","Crop Insurance Proceeds","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agricultar"
-"43000_agriculture","43000","Crop Sales","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agricultar"
-"43100_agriculture","43100","Custom Hire Income","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agricultar"
-"43600_agriculture","43600","Farmers Market Sales","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agricultar"
-"44100_agriculture","44100","Fuel Tax Credits and Other Inc.","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agricultar"
-"45500_agriculture","45500","Livestock Sales","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agricultar"
-"47400_agriculture","47400","Rental Income","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agricultar"
-"61100_agriculture","61100","Car and Truck Expenses","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agricultar"
-"61500_agriculture","61500","Chemicals Purchased","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agricultar"
-"61900_agriculture","61900","Conservation Expenses","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agricultar"
-"62300_agriculture","62300","Custom Hire and Contract Labor","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agricultar"
-"62900_agriculture","62900","Feed Purchased","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agricultar"
-"63000_agriculture","63000","Fertilizers and Lime","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agricultar"
-"63100_agriculture","63100","Freight and Trucking","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agricultar"
-"63200_agriculture","63200","Gasoline, Fuel and Oil","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agricultar"
-"67500_agriculture","67500","Seeds and Plants Purchased","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agricultar"
-"67800_agriculture","67800","Small Tools and Equipment","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agricultar"
-"67900_agriculture","67900","Storage and Warehousing","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agricultar"
-"68500_agriculture","68500","Uniforms","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agricultar"
-"68800_agriculture","68800","Veterinary, Breeding, Medicine","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agricultar"
+"41200_agriculture","41200","Agricultural Program Payments","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agriculture"
+"42500_agriculture","42500","Commodity Credit Loans","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agriculture"
+"42800_agriculture","42800","Cooperative Distributions","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agriculture"
+"42900_agriculture","42900","Crop Insurance Proceeds","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agriculture"
+"43000_agriculture","43000","Crop Sales","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agriculture"
+"43100_agriculture","43100","Custom Hire Income","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agriculture"
+"43600_agriculture","43600","Farmers Market Sales","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agriculture"
+"44100_agriculture","44100","Fuel Tax Credits and Other Inc.","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agriculture"
+"45500_agriculture","45500","Livestock Sales","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agriculture"
+"47400_agriculture","47400","Rental Income","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_agriculture"
+"61100_agriculture","61100","Car and Truck Expenses","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agriculture"
+"61500_agriculture","61500","Chemicals Purchased","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agriculture"
+"61900_agriculture","61900","Conservation Expenses","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agriculture"
+"62300_agriculture","62300","Custom Hire and Contract Labor","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agriculture"
+"62900_agriculture","62900","Feed Purchased","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agriculture"
+"63000_agriculture","63000","Fertilizers and Lime","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agriculture"
+"63100_agriculture","63100","Freight and Trucking","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agriculture"
+"63200_agriculture","63200","Gasoline, Fuel and Oil","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agriculture"
+"67500_agriculture","67500","Seeds and Plants Purchased","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agriculture"
+"67800_agriculture","67800","Small Tools and Equipment","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agriculture"
+"67900_agriculture","67900","Storage and Warehousing","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agriculture"
+"68500_agriculture","68500","Uniforms","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agriculture"
+"68800_agriculture","68800","Veterinary, Breeding, Medicine","other","l10n_us.user_type_expense","expense","FALSE","l10n_us.account_chart_template_agriculture"
"24600_construction_trades","24600","Customer Deposits Received","other","l10n_us.user_type_other_current_liability","other_current_liability","FALSE","l10n_us.account_chart_template_construction"
"45100_construction_trades","45100","Job Income","other","l10n_us.user_type_income","income","FALSE","l10n_us.account_chart_template_construction"
"50800_construction_trades","50800","Commissions Paid","other","l10n_us.user_type_cogs","cost_of_goods_sold","FALSE","l10n_us.account_chart_template_construction"
diff --git a/addons/l10n_us/account_chart_template.xml b/addons/l10n_us/account_chart_template.xml
index e0b8ed374b3..0863680981f 100644
--- a/addons/l10n_us/account_chart_template.xml
+++ b/addons/l10n_us/account_chart_template.xml
@@ -19,8 +19,8 @@
-
- Agricultar
+
+ Agriculture
diff --git a/addons/l10n_us/account_chart_template_after.xml b/addons/l10n_us/account_chart_template_after.xml
index 3c570126fcd..5ca3a169aba 100644
--- a/addons/l10n_us/account_chart_template_after.xml
+++ b/addons/l10n_us/account_chart_template_after.xml
@@ -11,7 +11,7 @@
-
+
diff --git a/addons/lunch/i18n/pt_BR.po b/addons/lunch/i18n/pt_BR.po
index 63d38215dc5..5d47de1734d 100644
--- a/addons/lunch/i18n/pt_BR.po
+++ b/addons/lunch/i18n/pt_BR.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-10-17 04:36+0000\n"
-"X-Generator: Launchpad (build 16152)\n"
+"X-Launchpad-Export-Date: 2012-10-18 04:41+0000\n"
+"X-Generator: Launchpad (build 16160)\n"
#. module: lunch
#: view:lunch.cashbox.clean:0
diff --git a/addons/mail/i18n/pt_BR.po b/addons/mail/i18n/pt_BR.po
index d3985d00a31..71febc1887b 100644
--- a/addons/mail/i18n/pt_BR.po
+++ b/addons/mail/i18n/pt_BR.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-10-17 04:36+0000\n"
-"X-Generator: Launchpad (build 16152)\n"
+"X-Launchpad-Export-Date: 2012-10-18 04:41+0000\n"
+"X-Generator: Launchpad (build 16160)\n"
#. module: mail
#: field:mail.compose.message,subtype:0 field:mail.message,subtype:0
diff --git a/addons/mail/mail_followers.py b/addons/mail/mail_followers.py
index 6f122a87ba5..35603d2d720 100644
--- a/addons/mail/mail_followers.py
+++ b/addons/mail/mail_followers.py
@@ -84,14 +84,20 @@ class mail_notification(osv.Model):
return False
def set_message_read(self, cr, uid, msg_ids, read=None, context=None):
- if msg_ids == None:
- return False
- if type(msg_ids) is not list:
- msg_ids=[msg_ids]
+ """ TDE note: add a comment, verify method calls, because js seems obfuscated. """
+ user_pid = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0]
+ notif_ids = self.search(cr, uid, [('partner_id', '=', user_pid), ('message_id', 'in', msg_ids)], context=context)
- partner_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).partner_id.id
- notif_ids = self.search(cr, uid, [('partner_id', '=', partner_id), ('message_id', 'in', msg_ids)], context=context)
+ # all message have notifications: already set them as (un)read
+ if len(notif_ids) == len(msg_ids):
+ return self.write(cr, uid, notif_ids, {'read': read}, context=context)
+ # some messages do not have notifications: find which one, create notification, update read status
+ exist_notification = dict.fromkeys(msg_ids, False)
+ for notification in self.browse(cr, uid, notif_ids, context=context):
+ exist_notification[notification.message_id] = True
+ for msg_id in exist_notification.keys():
+ self.create(cr, uid, {'partner_id': user_pid, 'read': read, 'message_id': msg_id}, context=context)
return self.write(cr, uid, notif_ids, {'read': read}, context=context)
def get_partners_to_notify(self, cr, uid, message, context=None):
diff --git a/addons/mail/mail_group.py b/addons/mail/mail_group.py
index 3febe34be51..d4c9c565bf3 100644
--- a/addons/mail/mail_group.py
+++ b/addons/mail/mail_group.py
@@ -25,12 +25,13 @@ from osv import osv
from osv import fields
from openerp import SUPERUSER_ID
+
class mail_group(osv.Model):
""" A mail_group is a collection of users sharing messages in a discussion
group. The group mechanics are based on the followers. """
_description = 'Discussion group'
_name = 'mail.group'
- _mail_autothread = False
+ _mail_flat_thread = False
_inherit = ['mail.thread']
_inherits = {'mail.alias': 'alias_id', 'ir.ui.menu': 'menu_id'}
diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py
index 9631918050a..b8c1edc8032 100644
--- a/addons/mail/mail_message.py
+++ b/addons/mail/mail_message.py
@@ -57,19 +57,19 @@ class mail_message(osv.Model):
def _get_record_name(self, cr, uid, ids, name, arg, context=None):
""" Return the related document name, using get_name. """
- result = dict.fromkeys(ids, '')
- for message in self.browse(cr, uid, ids, context=context):
- if not message.model or not message.res_id:
+ result = dict.fromkeys(ids, False)
+ for message in self.read(cr, uid, ids, ['model', 'res_id'], context=context):
+ if not message['model'] or not message['res_id']:
continue
try:
- result[message.id] = self._shorten_name(self.pool.get(message.model).name_get(cr, uid, [message.res_id], context=context)[0][1])
+ result[message['id']] = self._shorten_name(self.pool.get(message['model']).name_get(cr, uid, [message['res_id']], context=context)[0][1])
except (orm.except_orm, osv.except_osv):
pass
return result
- def _get_unread(self, cr, uid, ids, name, arg, context=None):
+ def _get_to_read(self, cr, uid, ids, name, arg, context=None):
""" Compute if the message is unread by the current user. """
- res = dict((id, {'unread': False}) for id in ids)
+ res = dict((id, {'to_read': False}) for id in ids)
partner_id = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0]
notif_obj = self.pool.get('mail.notification')
notif_ids = notif_obj.search(cr, uid, [
@@ -78,11 +78,11 @@ class mail_message(osv.Model):
('read', '=', False)
], context=context)
for notif in notif_obj.browse(cr, uid, notif_ids, context=context):
- res[notif.message_id.id]['unread'] = True
+ res[notif.message_id.id]['to_read'] = True
return res
- def _search_unread(self, cr, uid, obj, name, domain, context=None):
- """ Search for messages unread by the current user. Condition is
+ def _search_to_read(self, cr, uid, obj, name, domain, context=None):
+ """ Search for messages to read by the current user. Condition is
inversed because we search unread message on a read column. """
if domain[0][2]:
read_cond = '(read = false or read is null)'
@@ -128,18 +128,17 @@ class mail_message(osv.Model):
'date': fields.datetime('Date'),
'message_id': fields.char('Message-Id', help='Message unique identifier', select=1, readonly=1),
'body': fields.html('Contents', help='Automatically sanitized HTML contents'),
- 'unread': fields.function(_get_unread, fnct_search=_search_unread,
- type='boolean', string='Unread',
- help='Functional field to search for unread messages linked to uid'),
+ 'to_read': fields.function(_get_to_read, fnct_search=_search_to_read,
+ type='boolean', string='To read',
+ help='Functional field to search for messages the current user has to read'),
'subtype_id': fields.many2one('mail.message.subtype', 'Subtype'),
'vote_user_ids': fields.many2many('res.users', 'mail_vote', 'message_id', 'user_id', string='Votes',
help='Users that voted for this message'),
- 'is_private': fields.boolean('Private message'),
}
def _needaction_domain_get(self, cr, uid, context=None):
if self._needaction:
- return [('unread', '=', True)]
+ return [('to_read', '=', True)]
return []
def _get_default_author(self, cr, uid, context=None):
@@ -151,7 +150,6 @@ class mail_message(osv.Model):
'date': lambda *a: fields.datetime.now(),
'author_id': lambda self, cr, uid, ctx={}: self._get_default_author(cr, uid, ctx),
'body': '',
- 'is_private': True,
}
#------------------------------------------------------
@@ -176,180 +174,197 @@ class mail_message(osv.Model):
# Message loading for web interface
#------------------------------------------------------
- def _message_dict_get(self, cr, uid, msg, context=None):
- """ Return a dict representation of the message browse record. A read
- is performed to because of access rights issues (reading many2one
- fields allow to have the foreign record name without having
- to check external access rights).
+ def _message_get_dict(self, cr, uid, message, context=None):
+ """ Return a dict representation of the message.
+
+ :param dict message: read result of a mail.message
"""
- has_voted = False
- vote_ids = self.pool.get('res.users').name_get(cr, SUPERUSER_ID, [user.id for user in msg.vote_user_ids], context=context)
- for vote in vote_ids:
- if vote[0] == uid:
- has_voted = True
- break
+ if uid in message['vote_user_ids']:
+ has_voted = True
+ else:
+ has_voted = False
+
try:
- attachment_ids = [{'id': attach[0], 'name': attach[1]} for attach in self.pool.get('ir.attachment').name_get(cr, uid, [x.id for x in msg.attachment_ids], context=context)]
+ attachment_ids = [{'id': attach[0], 'name': attach[1]} for attach in self.pool.get('ir.attachment').name_get(cr, uid, message['attachment_ids'], context=context)]
except (orm.except_orm, osv.except_osv):
attachment_ids = []
+
try:
- author_id = self.pool.get('res.partner').name_get(cr, uid, [msg.author_id.id], context=context)[0]
- is_author = uid == msg.author_id.user_ids[0].id
- except Exception:
- author_id = False
- is_author = False
- try:
- partner_ids = self.pool.get('res.partner').name_get(cr, uid, [x.id for x in msg.partner_ids], context=context)
+ partner_ids = self.pool.get('res.partner').name_get(cr, uid, message['partner_ids'], context=context)
except (orm.except_orm, osv.except_osv):
partner_ids = []
return {
- 'id': msg.id,
- 'type': msg.type,
+ 'id': message['id'],
+ 'type': message['type'],
'attachment_ids': attachment_ids,
- 'body': msg.body,
- 'model': msg.model,
- 'res_id': msg.res_id,
- 'record_name': msg.record_name,
- 'subject': msg.subject,
- 'date': msg.date,
- 'author_id': author_id,
- 'is_author': is_author,
+ 'body': message['body'],
+ 'model': message['model'],
+ 'res_id': message['res_id'],
+ 'record_name': message['record_name'],
+ 'subject': message['subject'],
+ 'date': message['date'],
+ 'author_id': message['author_id'],
+ 'is_author': message['author_id'] and message['author_id'][0] == uid,
'partner_ids': partner_ids,
- 'parent_id': msg.parent_id and msg.parent_id.id or False,
- 'vote_user_ids': vote_ids,
+ 'parent_id': message['parent_id'] and message['parent_id'][0] or False,
+ # TDE note: see with CHM about votes, how they are displayed (only number, or name_get ?)
+ # 'vote_user_ids': vote_ids,
'has_voted': has_voted,
- 'unread': msg.unread and msg.unread['unread'] or False
+ 'to_read': message['to_read'],
}
def _message_read_expandable(self, cr, uid, tree, result, message_loaded, domain, context, parent_id, limit):
- """
- create the expandable message for all parent message read
- this function is used by message_read
- """
+ """ Create the expandable message for all parent message read
+ this function is used by message_read
+ TDE note: add default values for args, add some comments
- tree_not = []
+ :param dict tree: tree of message ids
+ """
+ tree_not = []
# expandable for not show message
- for id_msg in tree:
+ for msg_id in tree:
# get all childs
- not_loaded_ids = self.search(cr, SUPERUSER_ID, [['parent_id','=',id_msg],['id','not in',message_loaded]], None, limit=1000)
+ not_loaded_ids = self.search(cr, SUPERUSER_ID, [
+ ('parent_id', '=', msg_id),
+ ('id', 'not in', message_loaded)
+ ], context=context, limit=1000)
# group childs not read
- id_min=None
- id_max=None
- nb=0
+ id_min = None
+ id_max = None
+ nb = 0
for not_loaded_id in not_loaded_ids:
if not_loaded_id not in tree:
- nb+=1
- if id_min==None or id_min>not_loaded_id:
- id_min=not_loaded_id
- if id_max==None or id_max not_loaded_id:
+ id_min = not_loaded_id
+ if id_max == None or id_max < not_loaded_id:
+ id_max = not_loaded_id
tree_not.append(not_loaded_id)
else:
- if nb>0:
+ if nb > 0:
result.append({
- 'domain': [['id','>=',id_min],['id','<=',id_max],['parent_id','=',id_msg]],
+ 'domain': [('id', '>=', id_min), ('id', '<=', id_max), ('parent_id', '=', msg_id)],
'nb_messages': nb,
- 'type': 'expandable',
- 'parent_id': id_msg,
- 'id': id_min
+ 'type': 'expandable',
+ 'parent_id': msg_id,
+ 'id': id_min,
})
- id_min=None
- id_max=None
- nb=0
- if nb>0:
+ id_min = None
+ id_max = None
+ nb = 0
+ if nb > 0:
result.append({
- 'domain': [['id','>=',id_min],['id','<=',id_max],['parent_id','=',id_msg]],
+ 'domain': [('id', '>=', id_min), ('id', '<=', id_max), ('parent_id', '=', msg_id)],
'nb_messages': nb,
- 'type': 'expandable',
- 'parent_id': id_msg,
+ 'type': 'expandable',
+ 'parent_id': msg_id,
'id': id_min
})
-
# expandable for limit max
- ids = self.search(cr, SUPERUSER_ID, domain+[['id','not in',message_loaded+tree+tree_not]], context=context, limit=1)
+ ids = self.search(cr, SUPERUSER_ID, domain + [('id', 'not in', message_loaded + tree + tree_not)], context=context, limit=1)
if len(ids) > 0:
- result.append(
- {
+ result.append({
'domain': domain,
'nb_messages': 0,
- 'type': 'expandable',
- 'parent_id': parent_id,
+ 'type': 'expandable',
+ 'parent_id': parent_id,
'id': -1
- });
-
+ })
result = sorted(result, key=lambda k: k['id'])
return result
- def message_read(self, cr, uid, ids=False, domain=[], level=0, context=None, parent_id=False, limit=None):
+ _message_read_fields = ['id', 'parent_id', 'model', 'res_id', 'body', 'subject', 'date', 'to_read',
+ 'type', 'vote_user_ids', 'attachment_ids', 'author_id', 'partner_ids', 'record_name']
+
+ def _get_parent(self, cr, uid, message, context=None):
+ """ Tools method that tries to get the parent of a mail.message. If
+ no parent, or if uid has no access right on the parent, False
+ is returned.
+
+ :param dict message: read result of a mail.message
+ """
+ if not message['parent_id']:
+ return False
+ parent_id = message['parent_id'][0]
+ try:
+ return self.read(cr, uid, parent_id, self._message_read_fields, context=context)
+ except (orm.except_orm, osv.except_osv):
+ return False
+
+ def message_read(self, cr, uid, ids=False, domain=[], context=None, parent_id=False, limit=None):
""" Read messages from mail.message, and get back a structured tree
of messages to be displayed as discussion threads. If IDs is set,
fetch these records. Otherwise use the domain to fetch messages.
After having fetch messages, their parents will be added to obtain
well formed threads.
+ TDE note: update this comment after final method implementation
+
:param domain: optional domain for searching ids
:param limit: number of messages to fetch
:param parent_id: if parent_id reached, stop searching for
further parents
:return list: list of trees of messages
"""
- message_loaded = context and context.get('message_loaded') or [0]
-
# don't read the message display by .js, in context message_loaded list
- if context and context.get('message_loaded'):
- domain += [ ['id','not in',message_loaded] ];
-
+ # TDE note: use an argument, do not use context
+ if context is None:
+ context = {}
+ if context.get('message_loaded'):
+ domain += [('id', 'not in', context.get('message_loaded'))]
limit = limit or self._message_read_limit
- context = context or {}
-
- tree = []
- result = []
+ id_tree = []
+ message_list = []
record = None
# select ids
- if ids and ids!=[None]:
- for msg in self.browse(cr, uid, ids, context=context):
- result.append(self._message_dict_get(cr, uid, msg, context=context))
- return result
+ # TDE note: should not receive [None] -> investigate
+ if ids and ids != [None]:
+ for message in self.read(cr, uid, ids, self._message_read_fields, context=context):
+ message_list.append(self._message_get_dict(cr, uid, message, context=context))
+ return message_list
# key: ID, value: record
ids = self.search(cr, SUPERUSER_ID, domain, context=context, limit=limit)
- for msg in self.browse(cr, uid, ids, context=context):
+
+ for message in self.read(cr, uid, ids, self._message_read_fields, context=context):
# if not in record and not in message_loded list
- if msg.id not in tree and msg.id not in message_loaded :
- record = self._message_dict_get(cr, uid, msg, context=context)
- tree.append(msg.id)
- result.append(record)
+ if message['id'] not in id_tree and message['id'] not in context.get('message_loaded', []):
+ record = self._message_get_dict(cr, uid, message, context=context)
+ id_tree.append(message['id'])
+ message_list.append(record)
- while msg.parent_id and msg.parent_id.id != parent_id:
- parent_id = msg.parent_id.id
- if msg.parent_id.id not in tree:
- msg = msg.parent_id
- tree.append(msg.id)
+ parent = self._get_parent(cr, uid, message, context=context)
+ while parent and parent['id'] != parent_id:
+ if parent['id'] not in id_tree:
+ message = parent
+ id_tree.append(message['id'])
# if not in record and not in message_loded list
- if msg.id not in message_loaded :
- record = self._message_dict_get(cr, uid, msg, context=context)
- result.append(record)
+ if message['id'] not in context.get('message_loaded', []):
+ record = self._message_get_dict(cr, uid, message, context=context)
+ message_list.append(record)
+ parent = self._get_parent(cr, uid, parent, context=context)
- result = sorted(result, key=lambda k: k['id'])
+ message_list = sorted(message_list, key=lambda k: k['id'])
- result = self._message_read_expandable(cr, uid, tree, result, message_loaded, domain, context, parent_id, limit)
+ message_list = self._message_read_expandable(cr, uid, id_tree, message_list, context.get('message_loaded', []), domain, context, parent_id, limit)
- return result
+ return message_list
- def user_free_attachment(self, cr, uid, context=None):
- attachment_list = []
+ # TDE Note: do we need this ?
+ # def user_free_attachment(self, cr, uid, context=None):
+ # attachment_list = []
- attachment = self.pool.get('ir.attachment')
- attachment_ids = attachment.search(cr, uid, [('res_model','=',''),('create_uid','=',uid)])
- if len(attachment_ids):
- attachment_list = [{'id': attach.id, 'name': attach.name, 'date': attach.create_date} for attach in attachment.browse(cr, uid, attachment_ids, context=context)]
+ # attachment = self.pool.get('ir.attachment')
+ # attachment_ids = attachment.search(cr, uid, [('res_model','=',''),('create_uid','=',uid)])
+ # if len(attachment_ids):
+ # attachment_list = [{'id': attach.id, 'name': attach.name, 'date': attach.create_date} for attach in attachment.browse(cr, uid, attachment_ids, context=context)]
- return attachment_list
+ # return attachment_list
#------------------------------------------------------
# Email api
@@ -502,19 +517,17 @@ class mail_message(osv.Model):
missing_notified = missing_notified
if missing_notified:
self.write(cr, SUPERUSER_ID, [newid], {'partner_ids': [(4, p_id) for p_id in missing_notified]}, context=context)
- partners_to_notify |= extra_notified
def _notify(self, cr, uid, newid, context=None):
""" Add the related record followers to the destination partner_ids if is not a private message.
Call mail_notification.notify to manage the email sending
"""
message = self.browse(cr, uid, newid, context=context)
- if message and (message.is_private!=False and message.is_private!=None):
+ if message and message.model and message.res_id:
self._notify_followers(cr, uid, newid, message, context=context)
-
- # add myself if I wrote on my wall,
- # unless remove myself author
- if ((message.model=="res.partner" and message.res_id==message.author_id.id)):
+
+ # add myself if I wrote on my wall, otherwise remove myself author
+ if ((message.model == "res.partner" and message.res_id == message.author_id.id)):
self.write(cr, SUPERUSER_ID, [newid], {'partner_ids': [(4, message.author_id.id)]}, context=context)
else:
self.write(cr, SUPERUSER_ID, [newid], {'partner_ids': [(3, message.author_id.id)]}, context=context)
diff --git a/addons/mail/mail_message_view.xml b/addons/mail/mail_message_view.xml
index 0c572384bb4..59ca3333755 100644
--- a/addons/mail/mail_message_view.xml
+++ b/addons/mail/mail_message_view.xml
@@ -57,8 +57,8 @@
+ name="messages_unread" help="Show messages to read"
+ domain="[('to_read', '=', True)]"/>
@@ -78,7 +78,7 @@
form
tree,form
- {'search_default_unread_message':True}
+ {'search_default_to_read_message':True}
@@ -87,22 +87,22 @@
Inbox
mail.wall
-
+
Archives
mail.wall
-
+
Sent
mail.wall
+ 'context': {'default_model': 'res.users', 'default_res_id': uid} }""/>
diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py
index e5b93ac4000..7c92e9158e3 100644
--- a/addons/mail/mail_thread.py
+++ b/addons/mail/mail_thread.py
@@ -36,6 +36,7 @@ from tools.safe_eval import safe_eval as eval
_logger = logging.getLogger(__name__)
+
def decode_header(message, header, separator=' '):
return separator.join(map(decode, message.get_all(header, [])))
@@ -57,10 +58,16 @@ class mail_thread(osv.AbstractModel):
to override at least the ``message_new`` and ``message_update``
methods (calling ``super``) to add model-specific behavior at
creation and update of a thread when processing incoming emails.
+
+ Options:
+ - _mail_flat_thread: if set to True, all messages without parent_id
+ are automatically attached to the first message posted on the
+ ressource. If set to False, the display of Chatter is done using
+ threads, and no parent_id is automatically set.
'''
_name = 'mail.thread'
_description = 'Email Thread'
- _mail_autothread = True
+ _mail_flat_thread = True
def _get_message_data(self, cr, uid, ids, name, args, context=None):
""" Computes:
@@ -84,13 +91,12 @@ class mail_thread(osv.AbstractModel):
res[thread.id]['message_summary'] = "9 %d + %d " % (cls, len(thread.message_comment_ids), len(thread.message_follower_ids))
return res
-
+
def _get_subscription_data(self, cr, uid, ids, name, args, context=None):
""" Computes:
- - message_is_follower: is uid in the document followers
- message_subtype_data: data about document subtypes: which are
available, which are followed if any """
- res = dict((id, dict(message_subtype_data='', message_is_follower=False)) for id in ids)
+ res = dict((id, dict(message_subtype_data='')) for id in ids)
user_pid = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0]
# find current model subtypes, add them to a dictionary
@@ -109,11 +115,10 @@ class mail_thread(osv.AbstractModel):
], context=context)
for fol in fol_obj.browse(cr, uid, fol_ids, context=context):
thread_subtype_dict = res[fol.res_id]['message_subtype_data']
- res[fol.res_id]['message_is_follower'] = True
for subtype in fol.subtype_ids:
thread_subtype_dict[subtype.name]['followed'] = True
res[fol.res_id]['message_subtype_data'] = thread_subtype_dict
-
+
return res
def _search_unread(self, cr, uid, obj=None, name=None, domain=None, context=None):
@@ -132,9 +137,12 @@ class mail_thread(osv.AbstractModel):
def _get_followers(self, cr, uid, ids, name, arg, context=None):
fol_obj = self.pool.get('mail.followers')
fol_ids = fol_obj.search(cr, SUPERUSER_ID, [('res_model', '=', self._name), ('res_id', 'in', ids)])
- res = dict((res_id, []) for res_id in ids)
+ res = dict((id, dict(message_follower_ids=[], message_is_follower=False)) for id in ids)
+ user_pid = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0]
for fol in fol_obj.browse(cr, SUPERUSER_ID, fol_ids):
- res[fol.res_id].append(fol.partner_id.id)
+ res[fol.res_id]['message_follower_ids'].append(fol.partner_id.id)
+ if fol.partner_id.id == user_pid:
+ res[fol.res_id]['message_is_follower'] = True
return res
def _set_followers(self, cr, uid, id, name, value, arg, context=None):
@@ -188,15 +196,11 @@ class mail_thread(osv.AbstractModel):
return res
_columns = {
- 'message_is_follower': fields.function(_get_subscription_data,
- type='boolean', string='Is a Follower', multi='_get_subscription_data,'),
- 'message_subtype_data': fields.function(_get_subscription_data,
- type='text', string='Subscription data', multi="_get_subscription_data",
- help="Holds data about the subtypes. The content of this field "\
- "is a structure holding the current model subtypes, and the "\
- "current document followed subtypes."),
+ 'message_is_follower': fields.function(_get_followers,
+ type='boolean', string='Is a Follower', multi='_get_followers,'),
'message_follower_ids': fields.function(_get_followers, fnct_inv=_set_followers,
- fnct_search=_search_followers, type='many2many', obj='res.partner', string='Followers'),
+ fnct_search=_search_followers, type='many2many',
+ obj='res.partner', string='Followers', multi='_get_followers'),
'message_comment_ids': fields.one2many('mail.message', 'res_id',
domain=lambda self: [('model', '=', self._name), ('type', 'in', ('comment', 'email'))],
string='Comments and emails',
@@ -398,7 +402,8 @@ class mail_thread(osv.AbstractModel):
overrides the automatic detection based on the message
headers.
"""
- if context is None: context = {}
+ if context is None:
+ context = {}
# extract message bytes - we are forced to pass the message as binary because
# we don't know its encoding until we parse its headers and hence can't
@@ -414,7 +419,8 @@ class mail_thread(osv.AbstractModel):
thread_id, custom_values,
context=context)
msg = self.message_parse(cr, uid, msg_txt, save_original=save_original, context=context)
- if strip_attachments: msg.pop('attachments', None)
+ if strip_attachments:
+ msg.pop('attachments', None)
thread_id = False
for model, thread_id, custom_values, user_id in routes:
if self._name != model:
@@ -633,8 +639,10 @@ class mail_thread(osv.AbstractModel):
(isinstance(thread_id, (list, tuple)) and len(thread_id) == 1), "Invalid thread_id"
if isinstance(thread_id, (list, tuple)):
thread_id = thread_id and thread_id[0]
+ mail_message = self.pool.get('mail.message')
+ model = context.get('thread_model', self._name) if thread_id else False
- attachment_ids=[]
+ attachment_ids = []
for name, content in attachments:
if isinstance(content, unicode):
content = content.encode('utf-8')
@@ -648,24 +656,20 @@ class mail_thread(osv.AbstractModel):
}
attachment_ids.append((0, 0, data_attach))
- # get subtype
- if not subtype:
- subtype = 'mail.mt_comment'
- s = subtype.split('.')
- if len(s)==1:
- s = ('mail', s[0])
- ref = self.pool.get('ir.model.data').get_object_reference(cr, uid, s[0], s[1])
- subtype_id = ref and ref[1] or False
-
- model = context.get('thread_model', self._name) if thread_id else False
- messages = self.pool.get('mail.message')
-
- #auto link messages for same id and object
- if self._mail_autothread and thread_id:
- message_ids = messages.search(cr, uid, ['&',('res_id', '=', thread_id),('model','=',model)], context=context)
- if len(message_ids):
- parent_id = min(message_ids)
+ # fetch subtype
+ if subtype:
+ s_data = subtype.split('.')
+ if len(s_data) == 1:
+ s_data = ('mail', s_data[0])
+ ref = self.pool.get('ir.model.data').get_object_reference(cr, uid, s_data[0], s_data[1])
+ subtype_id = ref and ref[1] or False
+ else:
+ subtype_id = False
+ # _mail_flat_thread: automatically set free messages to the first posted message
+ if self._mail_flat_thread and not parent_id and thread_id:
+ message_ids = mail_message.search(cr, uid, ['&', ('res_id', '=', thread_id), ('model', '=', model)], context=context, order="id ASC", limit=1)
+ parent_id = message_ids and message_ids[0] or False
values = kwargs
values.update({
@@ -679,53 +683,47 @@ class mail_thread(osv.AbstractModel):
'subtype_id': subtype_id,
})
- # if the parent is private, the message must be private
- if parent_id:
- msg = messages.browse(cr, uid, parent_id, context=context)
- if msg.is_private:
- values["is_private"] = msg.is_private
-
# Avoid warnings about non-existing fields
for x in ('from', 'to', 'cc'):
values.pop(x, None)
- return messages.create(cr, uid, values, context=context)
+ return mail_message.create(cr, uid, values, context=context)
+
+ def message_post_api(self, cr, uid, thread_id, body='', subject=False, type='notification',
+ subtype=None, parent_id=False, attachments=None, context=None, **kwargs):
+ # TDE FIXME: body is plaintext: convert it into html
+ # when writing on res.partner, without specific thread_id -> redirect to the user's partner
+ if self._name == 'res.partner' and not thread_id:
+ thread_id = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0]
+
+ new_message_id = self.message_post(cr, uid, thread_id=thread_id, body=body, subject=subject, type=type,
+ subtype=subtype, parent_id=parent_id, context=context)
+
+ # Chatter: attachments linked to the document (not done JS-side), load the message
+ if attachments:
+ ir_attachment = self.pool.get('ir.attachment')
+ mail_message = self.pool.get('mail.message')
+ attachment_ids = ir_attachment.search(cr, SUPERUSER_ID, [('res_model', '=', False), ('res_id', '=', False), ('user_id', '=', uid), ('id', 'in', attachments)], context=context)
+ if attachment_ids:
+ ir_attachment.write(cr, SUPERUSER_ID, attachment_ids, {'res_model': self._name, 'res_id': thread_id}, context=context)
+ mail_message.write(cr, SUPERUSER_ID, [new_message_id], {'attachment_ids': [(6, 0, [pid for pid in attachment_ids])]}, context=context)
+ new_message = self.pool.get('mail.message').message_read(cr, uid, [new_message_id], context=context)
+
+ return new_message
#------------------------------------------------------
# Followers API
#------------------------------------------------------
- def message_post_api(self, cr, uid, thread_id, body='', subject=False, type='notification',
- subtype=None, parent_id=False, attachments=None, context=None, **kwargs):
- # if the user write on his wall
- if self._name=='res.partner' and not thread_id:
- user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
- thread_id = user.partner_id.id
-
- added_message_id = self.message_post(cr, uid, thread_id=thread_id, body=body, subject=subject, type=type,
- subtype=subtype, parent_id=parent_id, context=context)
-
- attachment_ids=[]
- if attachments:
- ir_attachment = self.pool.get('ir.attachment')
- attachment_ids = ir_attachment.search(cr, 1, [('res_model', '=', ""), ('res_id', '=', ""), ('user_id', '=', uid), ('id', 'in', attachments)], context=context)
- if attachment_ids:
- self.pool.get('ir.attachment').write(cr, 1, attachment_ids, { 'res_model': self._name, 'res_id': thread_id }, context=context)
- self.pool.get('mail.message').write(cr, 1, [added_message_id], {'attachment_ids': [(6, 0, [pid for pid in attachment_ids])]} )
-
- added_message = self.pool.get('mail.message').message_read(cr, uid, [added_message_id])
- return added_message
-
- def get_message_subtypes(self, cr, uid, ids, context=None):
- """ message_subtype_data: data about document subtypes: which are
- available, which are followed if any """
+ def message_get_subscription_data(self, cr, uid, ids, context=None):
+ """ Wrapper to get subtypes. """
return self._get_subscription_data(cr, uid, ids, None, None, context=context)
def message_subscribe_users(self, cr, uid, ids, user_ids=None, subtype_ids=None, context=None):
""" Wrapper on message_subscribe, using users. If user_ids is not
provided, subscribe uid instead. """
- if not user_ids:
- return False
+ if user_ids is None:
+ user_ids = [uid]
partner_ids = [user.partner_id.id for user in self.pool.get('res.users').browse(cr, uid, user_ids, context=context)]
return self.message_subscribe(cr, uid, ids, partner_ids, subtype_ids=subtype_ids, context=context)
@@ -738,14 +736,14 @@ class mail_thread(osv.AbstractModel):
subtype_ids = subtype_obj.search(cr, uid, [('default', '=', True), '|', ('res_model', '=', self._name), ('res_model', '=', False)], context=context)
# update the subscriptions
fol_obj = self.pool.get('mail.followers')
- fol_ids = fol_obj.search(cr, 1, [('res_model', '=', self._name), ('res_id', 'in', ids), ('partner_id', 'in', partner_ids)], context=context)
- fol_obj.write(cr, 1, fol_ids, {'subtype_ids': [(6, 0, subtype_ids)]}, context=context)
+ fol_ids = fol_obj.search(cr, SUPERUSER_ID, [('res_model', '=', self._name), ('res_id', 'in', ids), ('partner_id', 'in', partner_ids)], context=context)
+ fol_obj.write(cr, SUPERUSER_ID, fol_ids, {'subtype_ids': [(6, 0, subtype_ids)]}, context=context)
return True
def message_unsubscribe_users(self, cr, uid, ids, user_ids=None, context=None):
""" Wrapper on message_subscribe, using users. If user_ids is not
provided, unsubscribe uid instead. """
- if not user_ids:
+ if user_ids is None:
user_ids = [uid]
partner_ids = [user.partner_id.id for user in self.pool.get('res.users').browse(cr, uid, user_ids, context=context)]
return self.message_unsubscribe(cr, uid, ids, partner_ids, context=context)
diff --git a/addons/mail/res_partner.py b/addons/mail/res_partner.py
index 363ea74d16c..6b13fe6ad20 100644
--- a/addons/mail/res_partner.py
+++ b/addons/mail/res_partner.py
@@ -25,7 +25,7 @@ class res_partner_mail(osv.Model):
""" Update partner to add a field about notification preferences """
_name = "res.partner"
_inherit = ['res.partner', 'mail.thread']
- _mail_autothread = False
+ _mail_flat_thread = False
_columns = {
'notification_email_send': fields.selection([
diff --git a/addons/mail/res_users.py b/addons/mail/res_users.py
index f870604b03a..c318538541f 100644
--- a/addons/mail/res_users.py
+++ b/addons/mail/res_users.py
@@ -99,7 +99,8 @@ class res_users(osv.Model):
def write(self, cr, uid, ids, vals, context=None):
# User alias is sync'ed with login
- if vals.get('login'): vals['alias_name'] = vals['login']
+ if vals.get('login'):
+ vals['alias_name'] = vals['login']
return super(res_users, self).write(cr, uid, ids, vals, context=context)
def unlink(self, cr, uid, ids, context=None):
@@ -110,14 +111,20 @@ class res_users(osv.Model):
alias_pool.unlink(cr, uid, alias_ids, context=context)
return res
- def message_post(self, cr, uid, thread_id, context=None, **kwargs):
+ def message_post_api(self, cr, uid, thread_id, body='', subject=False, type='notification',
+ subtype=None, parent_id=False, attachments=None, context=None, **kwargs):
+ """ Redirect the posting of message on res.users to the related partner.
+ This is done because when giving the context of Chatter on the
+ various mailboxes, we do not have access to the current partner_id.
+ We therefore post on the user and redirect on its partner. """
assert thread_id, "res.users does not support posting global messages"
if context and 'thread_model' in context:
context['thread_model'] = 'res.partner'
if isinstance(thread_id, (list, tuple)):
thread_id = thread_id[0]
- partner_id = self.pool.get('res.users').browse(cr, uid, thread_id).partner_id.id
- return self.pool.get('res.partner').message_post(cr, uid, partner_id, context=context, **kwargs)
+ partner_id = self.pool.get('res.users').read(cr, uid, thread_id, ['partner_id'], context=context)['partner_id'][0]
+ return self.pool.get('res.partner').message_post_api(cr, uid, partner_id, body=body, subject=subject,
+ type=type, subtype=subtype, parent_id=parent_id, attachments=attachments, context=context, **kwargs)
def message_update(self, cr, uid, ids, msg_dict, update_vals=None, context=None):
partner_id = self.pool.get('res.users').browse(cr, uid, ids)[0].partner_id.id
diff --git a/addons/mail/security/ir.model.access.csv b/addons/mail/security/ir.model.access.csv
index a759934b112..3315422c268 100644
--- a/addons/mail/security/ir.model.access.csv
+++ b/addons/mail/security/ir.model.access.csv
@@ -3,7 +3,7 @@ access_mail_message_all,mail.message.all,model_mail_message,,1,0,1,0
access_mail_message_group_user,mail.message.group.user,model_mail_message,base.group_user,1,1,1,1
access_mail_mail_all,mail.mail.all,model_mail_mail,,0,0,1,0
access_mail_mail_system,mail.mail.system,model_mail_mail,base.group_system,1,1,1,1
-access_mail_followers_all,mail.followers.all,model_mail_followers,,0,0,0,0
+access_mail_followers_all,mail.followers.all,model_mail_followers,,1,0,0,0
access_mail_followers_system,mail.followers.system,model_mail_followers,base.group_system,1,1,1,1
access_mail_notification_all,mail.notification.all,model_mail_notification,,1,0,0,0
access_mail_notification_aystem,mail.notification.system,model_mail_notification,base.group_system,1,1,1,1
diff --git a/addons/mail/security/mail_security.xml b/addons/mail/security/mail_security.xml
index be3bb667628..53083a51d5a 100644
--- a/addons/mail/security/mail_security.xml
+++ b/addons/mail/security/mail_security.xml
@@ -3,16 +3,23 @@
-
+
Mail.group: access only public and joined groups
['|', '|', ('public', '=', 'public'), ('message_follower_ids', 'in', [user.partner_id.id]), '&', ('public','=','groups'), ('group_public_id','in', [g.id for g in user.groups_id])]
+
+ mail.followers: read its own entries
+
+ [('partner_id', '=', user.partner_id.id)]
+
+
+
+
-
+