diff options
| author | Jiten (OpenERP) <jra@tinyerp.com> | 2012-10-15 15:27:49 +0530 |
|---|---|---|
| committer | Jiten (OpenERP) <jra@tinyerp.com> | 2012-10-15 15:27:49 +0530 |
| commit | ee077e0c7e388a0218cf60d3930fe620b261b16a (patch) | |
| tree | c89d484594b463e4a0f837cccf538f67d3ed8333 /addons | |
| parent | 9c2d7b4d6ae9b365db9de7194dbc24188fd70927 (diff) | |
| parent | 7f23ad5de563eacfcae958d0011637800b097d4a (diff) | |
[MERGE] Merged trunk.
bzr revid: jra@tinyerp.com-20121015095749-yglvi7gur28q1vqu
Diffstat (limited to 'addons')
163 files changed, 3262 insertions, 2522 deletions
diff --git a/addons/account/account.py b/addons/account/account.py index ab3d065421f..46cfaf645a8 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -300,7 +300,6 @@ class account_account(osv.osv): if aml_query.strip(): wheres.append(aml_query.strip()) filters = " AND ".join(wheres) - _logger.debug('Filters: %s',(filters)) # IN might not work ideally in case there are too many # children_and_consolidated, in that case join on a # values() e.g.: @@ -316,7 +315,6 @@ class account_account(osv.osv): " GROUP BY l.account_id") params = (tuple(children_and_consolidated),) + query_params cr.execute(request, params) - _logger.debug('Status: %s',(cr.statusmessage)) for row in cr.dictfetchall(): accounts[row['id']] = row diff --git a/addons/account/i18n/de.po b/addons/account/i18n/de.po index 38e567be40d..ee0edf06553 100644 --- a/addons/account/i18n/de.po +++ b/addons/account/i18n/de.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:35+0000\n" -"PO-Revision-Date: 2012-06-25 09:07+0000\n" +"PO-Revision-Date: 2012-10-12 23:18+0000\n" "Last-Translator: Ferdinand @ Camptocamp <Unknown>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-28 06:10+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-10-14 04:39+0000\n" +"X-Generator: Launchpad (build 16137)\n" #. module: account #: view:account.invoice.report:0 @@ -25,7 +25,7 @@ msgstr "letzten Monat" #. module: account #: model:process.transition,name:account.process_transition_supplierreconcilepaid0 msgid "System payment" -msgstr "Zahlungssystematik" +msgstr "Zahlungsmothode" #. module: account #: view:account.journal:0 @@ -39,7 +39,7 @@ msgid "" "Generic Reporting \\ Taxes \\ Taxes Report'" msgstr "" "Legen Sie die Reihenfolge der Anzeige im Report 'Finanz \\ Berichte \\ " -"generische Reports \\ Steuern \\ Steuererklärung' fest" +"Allgemeine Berichte \\ Steuern \\ Steuererklärung' fest" #. module: account #: view:account.move.reconcile:0 @@ -57,12 +57,12 @@ msgstr "Statistische Auswertungen" #. module: account #: view:account.invoice:0 msgid "Proforma/Open/Paid Invoices" -msgstr "Proforoma/Offene/Bezahlte Rechnungen" +msgstr "Proforma / offene bzw. bezahlte Rechnungen" #. module: account #: field:report.invoice.created,residual:0 msgid "Residual" -msgstr "Restwert" +msgstr "Verbleibend" #. module: account #: constraint:account.period:0 @@ -72,7 +72,7 @@ msgstr "Fehler! Die Dauer der Periode(n) ist ungültig " #. module: account #: field:account.analytic.line,currency_id:0 msgid "Account currency" -msgstr "Währung" +msgstr "Währung des Kontos" #. module: account #: view:account.tax:0 @@ -83,7 +83,7 @@ msgstr "Definition untergeordneter Steuern" #: code:addons/account/account_bank_statement.py:302 #, python-format msgid "Journal item \"%s\" is not valid." -msgstr "Journalzeile \"%s\" ist ungültig" +msgstr "Buchung \"%s\" ist ungültig" #. module: account #: model:ir.model,name:account.model_report_aged_receivable @@ -103,7 +103,7 @@ msgstr "wizard.multi.charts.accounts" #. module: account #: view:account.move:0 msgid "Total Debit" -msgstr "Summe Soll" +msgstr "Forderungsgesamtsumme" #. module: account #: view:account.unreconcile:0 @@ -111,7 +111,7 @@ msgid "" "If you unreconciliate transactions, you must also verify all the actions " "that are linked to those transactions because they will not be disabled" msgstr "" -"Wenn Sie Zahlungen stornieren, sollten Sie alle zugehörigen Belege und " +"Wenn Sie Zahlungen stornieren, müssen Sie alle zugehörigen Belege und " "Buchungen prüfen, da diese nicht automatisch mit gelöscht oder deaktiviert " "werden." @@ -122,13 +122,13 @@ msgid "" "accounts too." msgstr "" "Konfigurationsfehler! Die gewählte Währung muss auch bei den Standardkonten " -"verwendet werden" +"verwendet werden." #. module: account #: report:account.invoice:0 #: field:account.invoice.line,origin:0 msgid "Origin" -msgstr "Bezug" +msgstr "Herkunft" #. module: account #: view:account.account:0 @@ -137,7 +137,7 @@ msgstr "Bezug" #: view:account.move.line.reconcile:0 #: view:account.move.line.reconcile.writeoff:0 msgid "Reconcile" -msgstr "Ausgleich Nummer" +msgstr "Ausgleich von Offenen Posten" #. module: account #: field:account.bank.statement.line,ref:0 @@ -146,6 +146,7 @@ msgstr "Ausgleich Nummer" #: field:account.move,ref:0 #: field:account.move.line,ref:0 #: field:account.subscription,ref:0 +#: xsl:account.transfer:0 msgid "Reference" msgstr "Referenz" @@ -164,13 +165,13 @@ msgstr "" "angezeigt." #. module: account -#: code:addons/account/account_invoice.py:1428 +#: code:addons/account/account_invoice.py:1430 #, python-format msgid "Warning!" msgstr "Achtung!" #. module: account -#: code:addons/account/account.py:3112 +#: code:addons/account/account.py:3129 #, python-format msgid "Miscellaneous Journal" msgstr "\"verschiedenes\" Journal" @@ -195,7 +196,7 @@ msgstr "Spaltenbeschriftung" #: code:addons/account/wizard/account_move_journal.py:95 #, python-format msgid "Journal: %s" -msgstr "Journal: %s" +msgstr "Journal %s" #. module: account #: help:account.analytic.journal,type:0 @@ -204,16 +205,16 @@ msgid "" "invoice) to create analytic entries, OpenERP will look for a matching " "journal of the same type." msgstr "" -"Definiert Typ für das analytische Journal. Wenn ein Beleg (z.B. eine " -"Rechnung) dann zusätzlich zu den Finanzbuchungen weitere analytische " -"Buchungen erzeugen soll , prüft OpenERP inwieweit ein analytisches Journal " -"mit dem identischem Typ (z.B. Verkauf) existiert." +"Definiert die Art des analytischen Journals. Wenn ein Beleg (z. B. eine " +"Rechnung), zusätzlich zu den Finanzbuchungen, weitere analytische Buchungen " +"erzeugen soll, prüft OpenERP ob ein analytischer Bericht der gleichen Art " +"(z.B. Verkauf) vorliegt." #. module: account #: model:ir.actions.act_window,name:account.action_account_tax_template_form #: model:ir.ui.menu,name:account.menu_action_account_tax_template_form msgid "Tax Templates" -msgstr "Umsatzsteuer Vorlagen" +msgstr "-Vorlagen für Steuerkonten" #. module: account #: model:ir.model,name:account.model_account_tax @@ -232,16 +233,14 @@ msgid "" "Check this box if you don't want any VAT related to this Tax Code to appear " "on invoices" msgstr "" -"Aktivieren, wenn KEINE umsatzsteuerlich relevanten Bezeichnungen auf der " -"Rechnung erscheinen sollen" +"Aktivieren, wenn etwaige, in diesen Steuerschlüssel einbezogene, " +"Steuerbeträge auf der Rechnung nicht erscheinen sollen" #. 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 "" -"Rechnung '%s' ist teilweise bezahlt: %s%s von %s%s (%s%s verbleiben als " -"offen)" +msgstr "Rechnung '%s' ist teilweise bezahlt: %s%s von %s%s (%s%s verbleiben)" #. module: account #: model:process.transition,note:account.process_transition_supplierentriesreconcile0 @@ -254,12 +253,12 @@ msgid "Belgian Reports" msgstr "Auswertungen für Belgien" #. 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 "" "Sie können in einem abgeschlossenen Journal keine Buchung vornehmen oder " -"ändern ." +"ändern." #. module: account #: help:account.account,user_type:0 @@ -269,13 +268,13 @@ msgid "" "entries." msgstr "" "Der Kontentyp hat Informationscharakter und wird verwendet, um " -"länderspezifsche Reports zu generieren sowie um den Jahresabschluss zu " -"steuern und Eröffnungsbilanzbuchungen zu generieren" +"länderspezifsche Berichte zu generieren sowie den Jahresabschluss zu steuern " +"und Eröffnungsbilanzbuchungen zu generieren" #. module: account #: report:account.overdue:0 msgid "Sub-Total :" -msgstr "Zwischensumme" +msgstr "Zwischensumme:" #. module: account #: model:ir.actions.act_window,name:account.action_account_use_model_create_entry @@ -287,7 +286,7 @@ msgstr "Wiederkehrende Buchungen (Manuell)" #. module: account #: view:account.fiscalyear.close.state:0 msgid "Close Fiscalyear" -msgstr "Beende Geschäftsjahr" +msgstr "Geschäftsjahr abschließen" #. module: account #: field:account.automatic.reconcile,allow_write_off:0 @@ -297,7 +296,7 @@ msgstr "Erlaube Abschreibung" #. module: account #: view:account.analytic.chart:0 msgid "Select the Period for Analysis" -msgstr "Auswahl Periode" +msgstr "Periode zur Analyse auswählen" #. module: account #: view:account.move.line:0 @@ -305,16 +304,17 @@ msgid "St." msgstr "Beleg" #. 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 "" -"Unternehmen (Mandant) ist bei Rechnung und Rechnungszeile nicht identisch." +"Das Kundenkonto ist einem anderen Unternehmen (Mandant) zugewiesen als der " +"Rechnungssteller." #. module: account #: field:account.journal.column,field:0 msgid "Field Name" -msgstr "Bezeichnung Feld" +msgstr "Feldname" #. module: account #: help:account.installer,charts:0 @@ -322,8 +322,8 @@ msgid "" "Installs localized accounting charts to match as closely as possible the " "accounting needs of your company based on your country." msgstr "" -"Installiert Kontenplan für Ihr Land, um soweit wie möglich eine Vorlage für " -"Ihr Unternehmen zu bieten." +"Installiert landesspezifische Kontenpläne, um soweit wie möglich den Bedarf " +"Ihres Unternehmens abzudecken." #. module: account #: code:addons/account/wizard/account_move_journal.py:63 @@ -334,10 +334,10 @@ msgid "" "You can create one in the menu: \n" "Configuration/Financial Accounting/Accounts/Journals." msgstr "" -"Konnte kein Journal mit dem Typ %s für Unternehmen finden.\n" +"Konnte kein Journal mit dem Typ %s für dieses Unternehmen finden.\n" "\n" -"Sie können ein Journal definieren:\n" -"Konfiguration/Finanzbuchhaltung/Finanzkonten/Journale" +"Hier können Sie einen Bericht anlegen:\n" +"Finanzen / Konfiguration / Finanzen / Buchungsjournale" #. module: account #: model:ir.model,name:account.model_account_unreconcile @@ -364,7 +364,7 @@ msgstr "" #. module: account #: view:account.installer:0 msgid "Configure" -msgstr "Konfigurieren" +msgstr "Einrichten" #. module: account #: selection:account.entries.report,month:0 @@ -389,7 +389,7 @@ msgstr "" #. module: account #: constraint:account.move.line:0 msgid "You can not create journal items on an account of type view." -msgstr "You can not create journal items on an account of type view." +msgstr "Sie können keine Buchungen in einem Ansichtskonto vornehmen." #. module: account #: model:ir.model,name:account.model_account_tax_template @@ -405,7 +405,7 @@ msgstr "account.bank.accounts.wizard" #: field:account.move.line,date_created:0 #: field:account.move.reconcile,create_date:0 msgid "Creation date" -msgstr "Erzeugt am" +msgstr "Erstellungsdatum" #. module: account #: selection:account.journal,type:0 @@ -433,19 +433,19 @@ msgid "" "This field contains the informatin related to the numbering of the journal " "entries of this journal." msgstr "" -"Dieses Feld enthält die Sequenz für die Buchungen in diesem Journal. " -"Hierdurch kann dann die chronologische Reihenfolge der Buchungen " -"nachvollzogen werden." +"Dieses Feld enthält beschreibt die Nummerierung für die Buchungen in diesem " +"Journal. Hierdurch kann dann die chronologische Reihenfolge der Buchungen " +"sichergestellt werden." #. module: account #: field:account.journal,default_debit_account_id:0 msgid "Default Debit Account" -msgstr "Standard Sollkonto" +msgstr "Standard Debitorenkonto" #. module: account #: view:account.move:0 msgid "Total Credit" -msgstr "Summe Haben" +msgstr "Habensumme" #. module: account #: view:account.move.line.unreconcile.select:0 @@ -463,7 +463,7 @@ msgstr "Kontenplan Vorlage" #. module: account #: help:account.model.line,amount_currency:0 msgid "The amount expressed in an optional other currency." -msgstr "Der optionale Betrag in anderer Währung" +msgstr "In alternativer Währung dargestellter Betrag" #. module: account #: field:accounting.report,enable_filter:0 @@ -477,10 +477,10 @@ msgid "" "it comes to 'Printed' state. When all transactions are done, it comes in " "'Done' state." msgstr "" -"Bei Erstellung einer Periode für das Journal ist der Status 'Entwurf'. Wenn " -"dann ein Report für das Journal ausgedruckt wird, wechselt der Status auf " -"'Gedruckt'. Auf 'Fertig' wechselt dann der Status, wenn alle erforderlichen " -"Transaktionen hierzu erledigt sind." +"Bei Erstellung einer Periode für den Bericht ist dieser im Zustand " +"'Entwurf'. Wenn der Bericht ausgedruckt wird, wechselt der Status auf " +"\"Gedruckt\". Auf 'Fertig' wechselt dann der Status, wenn alle Transaktionen " +"hierzu abgschlossen sind." #. module: account #: model:ir.actions.act_window,help:account.action_account_tax_chart @@ -490,11 +490,11 @@ msgid "" "amount of each area of the tax declaration for your country. It’s presented " "in a hierarchical structure, which can be modified to fit your needs." msgstr "" -"Der Kontenplan Umsatzsteuer ist eine hierachische Ansicht der Steuern über " -"mehrere Dimensionen. Angezeigt wird nicht nur die Struktur der Steuern, " -"sondern auch die aktuellen Verkehrszahlen der jeweiligen Steuern für den " -"Monat und kummuliert für das Jahr. Die hierachische Struktur kann für Ihren " -"Bedarf angepasst werden." +"Der Steuer-Kontenplan ist eine hierachische Ansicht der Steuern über mehrere " +"Ebenen. Angezeigt werden nicht nur die Struktur der Steuern, sondern auch " +"die aktuellen Verkehrszahlen der jeweiligen Steuern für den Monat und " +"kummuliert für das Jahr. Die hierachische Struktur kann Ihrem Bedarf " +"angepasst werden." #. module: account #: view:account.analytic.line:0 @@ -529,7 +529,7 @@ msgstr "Journal" #. module: account #: model:ir.model,name:account.model_account_invoice_confirm msgid "Confirm the selected invoices" -msgstr "Bestätige die ausgewählten Rechnungen" +msgstr "Ausgewählte Rechnungen bestätigen" #. module: account #: field:account.addtmpl.wizard,cparent_id:0 @@ -557,12 +557,12 @@ msgstr "Finanzkonto für dieses Journal" #: help:account.vat.declaration,chart_account_id:0 #: help:accounting.report,chart_account_id:0 msgid "Select Charts of Accounts" -msgstr "Wähle Kontenplan" +msgstr "Kontenplan wählen" #. module: account #: sql_constraint:res.company:0 msgid "The company name must be unique !" -msgstr "Der Name der Firma darf nur einmal vorkommen!" +msgstr "Der Unternehmensname muss eindeutig sein!" #. module: account #: model:ir.model,name:account.model_account_invoice_refund @@ -577,7 +577,7 @@ msgstr "Limit" #. module: account #: field:account.automatic.reconcile,unreconciled:0 msgid "Not reconciled transactions" -msgstr "Nicht ausgeglichene Posten" +msgstr "Unausgeglichener Geschäftsvorgang" #. module: account #: report:account.general.ledger:0 @@ -590,13 +590,13 @@ msgstr "Gegenbuchung" #: field:account.fiscal.position,tax_ids:0 #: field:account.fiscal.position.template,tax_ids:0 msgid "Tax Mapping" -msgstr "Steuer Zuordnung" +msgstr "Steuerzuordnung" #. module: account #: model:ir.actions.act_window,name:account.action_account_fiscalyear_close_state #: model:ir.ui.menu,name:account.menu_wizard_fy_close_state msgid "Close a Fiscal Year" -msgstr "Beende Geschäftsjahr" +msgstr "Geschäftsjahr abschließen" #. module: account #: model:process.transition,note:account.process_transition_confirmstatementfromdraft0 @@ -604,8 +604,10 @@ msgid "The accountant confirms the statement." msgstr "Der Buchhalter bestätigt den Bankauszug." #. 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 @@ -646,12 +648,12 @@ msgstr "Sequenzen" #: field:account.financial.report,account_report_id:0 #: selection:account.financial.report,type:0 msgid "Report Value" -msgstr "Bericht Wert" +msgstr "Berichtswert" #. module: account #: view:account.fiscal.position.template:0 msgid "Taxes Mapping" -msgstr "Steuern Zuordnung" +msgstr "Steuerzuordnung" #. module: account #: report:account.central.journal:0 @@ -661,10 +663,11 @@ msgstr "Zentraljournal" #. module: account #: sql_constraint:account.sequence.fiscalyear:0 msgid "Main Sequence must be different from current !" -msgstr "Die Hauptsequenz sollte sich von der derzeitigen unterscheiden !" +msgstr "" +"Die übergeordnete Nummerierung muss sich von der derzeitigen unterscheiden!" #. 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 "Keine oder meherere Perioden für dieses Datum gefunden." @@ -675,7 +678,7 @@ msgid "Tax Code Amount" msgstr "Steuerbetrag" #. module: account -#: code:addons/account/account.py:3116 +#: code:addons/account/account.py:3133 #, python-format msgid "SAJ" msgstr "VK" @@ -684,26 +687,26 @@ msgstr "VK" #: view:account.period:0 #: view:account.period.close:0 msgid "Close Period" -msgstr "Periode beenden" +msgstr "Periode abschließen" #. module: account #: model:ir.model,name:account.model_account_common_partner_report msgid "Account Common Partner Report" -msgstr "Auswertung Partnerkonto" +msgstr "Auswertung Partnerkonto (Sammelkonto)" #. module: account #: field:account.fiscalyear.close,period_id:0 msgid "Opening Entries Period" -msgstr "Start Periode im neuen Geschäftsjahr" +msgstr "Startbuchungen der Periode" #. module: account #: model:ir.model,name:account.model_account_journal_period msgid "Journal Period" -msgstr "Journal Periode" +msgstr "Berichtsperiode" #. 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 "" @@ -716,18 +719,18 @@ msgid "" "The date of your Journal Entry is not in the defined period! You should " "change the date or remove this constraint from the journal." msgstr "" -"The date of your Journal Entry is not in the defined period! You should " -"change the date or remove this constraint from the journal." +"Das Datum Ihrer Buchung fällt nicht in die festgelegte Periode. Sie müssen " +"das Datum anpassen, oder diese Einschränkung vom Bericht entfernen." #. module: account #: model:ir.model,name:account.model_account_report_general_ledger msgid "General Ledger Report" -msgstr "Kontoauszug und Saldenliste" +msgstr "Umsätze nach Konten und Perioden" #. module: account #: view:account.invoice:0 msgid "Re-Open" -msgstr "Wiederöffnen" +msgstr "Wiedereröffnen" #. module: account #: view:account.use.model:0 @@ -747,16 +750,15 @@ msgstr "Heute ausgeglichene Partner" #. module: account #: view:report.hr.timesheet.invoice.journal:0 msgid "Sale journal in this year" -msgstr "Verkaufsjournal dieses Jshres" +msgstr "Verkaufsbericht dieses Jahres" #. module: account #: selection:account.financial.report,display_detail:0 msgid "Display children with hierarchy" -msgstr "Zeige Kinder abhängige in der Hierarchie" +msgstr "Zeige Hierarchie der Kinder" #. module: account #: selection:account.payment.term.line,value:0 -#: selection:account.tax.template,type:0 msgid "Percent" msgstr "Prozent" @@ -781,9 +783,10 @@ msgstr "Gutschriftmethode" #: code:addons/account/wizard/account_change_currency.py:38 #, python-format msgid "You can only change currency for Draft Invoice !" -msgstr "Sie können die Währung nur bei Rechnungen" +msgstr "Sie können die Währung nur bei Rechnungsentwürfen ändern" #. 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 "Finanzbericht" @@ -799,12 +802,13 @@ msgstr "Finanzbericht" #: 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 "Typ" #. module: account -#: code:addons/account/account_invoice.py:738 +#: code:addons/account/account_invoice.py:747 #, python-format msgid "" "Taxes are missing!\n" @@ -826,7 +830,7 @@ msgstr "Referenz des Partners für diese Rechnung." #. module: account #: view:account.invoice.report:0 msgid "Supplier Invoices And Refunds" -msgstr "Lieferanten Rechnungen und Gutschriften" +msgstr "Lieferantenrechnungen und -gutschriften" #. module: account #: view:account.move.line.unreconcile.select:0 @@ -834,7 +838,7 @@ msgstr "Lieferanten Rechnungen und Gutschriften" #: view:account.unreconcile.reconcile:0 #: model:ir.model,name:account.model_account_move_line_unreconcile_select msgid "Unreconciliation" -msgstr "Storno Ausgleich Offene Posten" +msgstr "Stornierung des OP-Ausgleichs" #. module: account #: view:account.payment.term.line:0 @@ -864,10 +868,10 @@ msgid "" "or Loss you'd realized if those transactions were ended today. Only for " "accounts having a secondary currency set." msgstr "" -"Bei Transaktionen mit mehreren Währungen fallen ggf. Währungsgewinne oder " -"Verluste an. Dieses Menü gibt Ihnen einen Überblick über Gewinne und " -"Verluste, wenn diese heute realisiert würden. Nur für Konten mit definierter " -"2.Währung." +"Bei Geschäftsvorfällen mit mehreren Währungen fallen ggf. Währungsgewinne " +"oder -verluste an. Dieses Menü gibt Ihnen einen Überblick über Gewinne und " +"Verluste, wenn diese heute realisiert würden. Betrifft nur Konten mit " +"Alternativwährung." #. module: account #: selection:account.entries.report,month:0 @@ -887,7 +891,7 @@ msgstr "Tage" #: help:account.account.template,nocreate:0 msgid "" "If checked, the new chart of accounts will not contain this by default." -msgstr "Bei Aktivierung, ist dieses nicht im neuen Kontenplan beiinhaltet." +msgstr "Bei Aktivierung, ist dieses nicht im neuen Kontenplan enthalten." #. module: account #: code:addons/account/wizard/account_invoice_refund.py:110 @@ -896,9 +900,8 @@ msgid "" "Can not %s invoice which is already reconciled, invoice should be " "unreconciled first. You can only Refund this invoice" msgstr "" -"Kann keine Rechnung %s erzeugen, die bereits ausgeglichen wurde, hierzu muss " -"die Zahlung zuerst storniert werden. Sie können lediglich diese Rechnung " -"ausgleichen." +"Kann eine bereits beglichene Rechnung nicht %s, dazu muss die Zahlung " +"zunächst storniert werden. Sie können diese Rechnung lediglich rückerstatten." #. module: account #: model:ir.actions.act_window,name:account.action_subscription_form_new @@ -924,7 +927,7 @@ msgstr "Werte" #: view:account.invoice.report:0 #: field:account.invoice.report,delay_to_pay:0 msgid "Avg. Delay To Pay" -msgstr "Durch. Zahlungsdauer" +msgstr "Mittlerer Zahlungsverzug" #. module: account #: model:ir.actions.act_window,name:account.action_account_tax_chart @@ -936,15 +939,16 @@ msgstr "Kontenplan Umsatzsteuer" #. module: account #: view:account.fiscalyear:0 msgid "Create 3 Months Periods" -msgstr "Erzeuge 3 Monats Periode" +msgstr "Lege Quartal an" #. module: account +#: report:account.aged_trial_balance:0 #: report:account.overdue:0 msgid "Due" msgstr "Fällig" #. 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 " @@ -960,8 +964,8 @@ msgid "" "This account does not allow reconciliation! You should update the account " "definition to change this." msgstr "" -"Dieses Konto kann nicht ausgeziffert werden. Sie können dies jedoch om Konto " -"einstellen." +"Dieses Konto erlaubt keinen Ausgleich. Sie können jedoch die Konto-" +"Einstellungen diesbezüglich ändern." #. module: account #: view:account.invoice:0 @@ -995,7 +999,7 @@ msgstr "Verbindlichkeit" #. module: account #: view:account.entries.report:0 msgid "Extended Filters..." -msgstr "Erweiterter Filter..." +msgstr "Erweiterte Filter..." #. module: account #: model:ir.ui.menu,name:account.menu_account_central_journal @@ -1005,12 +1009,12 @@ msgstr "Zentrales Buchungsjournal" #. module: account #: selection:account.journal,type:0 msgid "Sale Refund" -msgstr "Gutschrift Verkauf" +msgstr "Rückerstattung aus Verkauf" #. module: account #: model:process.node,note:account.process_node_accountingstatemententries0 msgid "Bank statement" -msgstr "Bank Auszug" +msgstr "Bankauszug" #. module: account #: field:account.analytic.line,move_id:0 @@ -1030,7 +1034,7 @@ msgstr "" "dann die Basis für die Steuerberechnung ist." #. 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 "Finde keinen Code für das übergeordnete Vorlagekonto" @@ -1060,17 +1064,17 @@ msgstr "Buchungsvorlage" #: report:account.partner.balance:0 #: field:account.period,code:0 msgid "Code" -msgstr "Kurzbezeichnung" +msgstr "Kurzbez." #. 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 !" -msgstr "Kein Analytisches Journal!" +msgstr "Kein Analytischer Bericht!" #. module: account #: report:account.partner.balance:0 @@ -1084,23 +1088,23 @@ msgstr "Partner Saldenliste" #. module: account #: field:account.bank.accounts.wizard,acc_name:0 msgid "Account Name." -msgstr "Konto Bezeichnung" +msgstr "Kontobezeichnung" #. module: account #: field:account.chart.template,property_reserve_and_surplus_account:0 #: field:res.company,property_reserve_and_surplus_account:0 msgid "Reserve and Profit/Loss Account" -msgstr "Konto für vorläufigen Gewinn / Verlust" +msgstr "Konto für Rücklagen und vorläufigen Gewinn / Verlust" #. module: account #: field:report.account.receivable,name:0 msgid "Week of Year" -msgstr "Woche eines Jahres" +msgstr "Kalenderwoche (KW)" #. module: account #: field:account.report.general.ledger,landscape:0 msgid "Landscape Mode" -msgstr "Überblick" +msgstr "Querformat" #. module: account #: code:addons/account/account.py:645 @@ -1109,17 +1113,18 @@ msgid "" "You cannot change the type of account from '%s' to '%s' type as it contains " "journal items!" msgstr "" -"Sie können den Typ des Kontos mit Buchungen nicht von '%s' auf '%s' ändern." +"Sie können den Typ des Kontos nicht von '%s' auf '%s' ändern, da es " +"Buchungen enthält." #. module: account #: field:account.report.general.ledger,sortby:0 msgid "Sort by" -msgstr "Sortiere nach" +msgstr "Sortieren nach" #. module: account #: help:account.fiscalyear.close,fy_id:0 msgid "Select a Fiscal year to close" -msgstr "Wähle zu beendendes Geschäftsjahr" +msgstr "Wählen Sie das abzuschließende Geschäftsjahr" #. module: account #: help:account.account.template,user_type:0 @@ -1128,11 +1133,11 @@ msgid "" "information about the account and its specificities." msgstr "" "Die Kontotypen wurden für die Abbildung von regionalen Besonderheiten " -"definiert. Hierdurch können Sie Ihre landestypischen Konto(art)typen " +"definiert. Hierdurch können Sie Ihre landestypischen Kontoarten/-typen " "definieren." #. 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 !" @@ -1147,7 +1152,7 @@ msgstr "Anwendbare Optionen" #. module: account #: report:account.partner.balance:0 msgid "In dispute" -msgstr "Nn Vollstreckung" +msgstr "In Anfechtung" #. module: account #: model:ir.actions.act_window,name:account.action_view_bank_statement_tree @@ -1171,17 +1176,17 @@ msgstr "Verantwortl. Mitarbeiter" #. module: account #: view:account.subscription.generate:0 msgid "Generate Entries before:" -msgstr "Buche alle wiederkehrenden Buchungen vor dem:" +msgstr "Anlegen der wiederkehrenden Buchungen vor dem:" #. module: account #: view:account.move.line:0 msgid "Unbalanced Journal Items" -msgstr "OP Buchungen" +msgstr "Unausgeglichene Buchungen" #. 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 "Bank" @@ -1189,7 +1194,7 @@ msgstr "Bank" #. module: account #: field:account.period,date_start:0 msgid "Start of Period" -msgstr "Beginn der Periode" +msgstr "Periodenbeginn" #. module: account #: model:process.transition,name:account.process_transition_confirmstatementfromdraft0 @@ -1202,13 +1207,14 @@ msgid "" "Total amount (in Secondary currency) for transactions held in secondary " "currency for this account." msgstr "" -"Gesamtbetrag der Buchungen dieses Kontos in der definierten 2.Währung" +"Gesamtbetrag der Buchungen in Alternativwährung in der Alternativwährung " +"dieses Kontos ausgegeben." #. module: account #: field:account.fiscal.position.tax,tax_dest_id:0 #: field:account.fiscal.position.tax.template,tax_dest_id:0 msgid "Replacement Tax" -msgstr "Steuer Zuordnung" +msgstr "Steuerzuordnung" #. module: account #: selection:account.move.line,centralisation:0 @@ -1218,7 +1224,7 @@ msgstr "Haben Zentralisierung" #. module: account #: view:report.account_type.sales:0 msgid "All Months Sales by type" -msgstr "Alle Verkäufe nach Typ" +msgstr "Alle Verkäufe des Monats nach Typ" #. module: account #: model:ir.actions.act_window,help:account.action_invoice_tree2 @@ -1230,15 +1236,15 @@ msgid "" msgstr "" "Über das Menü Eingangsrechnungen können Sie Rechnungen Ihrer Lieferanten " "eingeben und verwalten. OpenERP kann ausserdem automatisch Rechnungsentwürfe " -"aus Beschaffungsaufträgen erzeugen. Über diesen Weg können Sie nicht nur den " -"Zeitpunkt der Rechnungserstellung steuern, sondern auch ob bestellte oder " -"gelieferte Mengen beim Rechnungsentwurf berücksichtigt werden sollen." +"aus Beschaffungsaufträgen oder Lieferscheinen erzeugen. Somit können Sie die " +"Eingangsrechnung mit Ihrem Bestellauftrag und der tatsächlichen Lieferung " +"überprüfen." #. module: account #: model:ir.actions.act_window,name:account.action_account_tax_code_template_form #: model:ir.ui.menu,name:account.menu_action_account_tax_code_template_form msgid "Tax Code Templates" -msgstr "Steuerausweis Vorlagen" +msgstr "Steuerausweis-Vorlagen" #. module: account #: view:account.invoice.cancel:0 @@ -1253,7 +1259,7 @@ msgstr "Dieser Code wird auf Berichten angezeigt" #. module: account #: view:account.tax.template:0 msgid "Taxes used in Purchases" -msgstr "Steuern für Einkäufe" +msgstr "Steuern aus Einkäufen (Vorsteuern)" #. module: account #: field:account.invoice.tax,tax_code_id:0 @@ -1261,12 +1267,12 @@ msgstr "Steuern für Einkäufe" #: field:account.tax.template,tax_code_id:0 #: model:ir.model,name:account.model_account_tax_code msgid "Tax Code" -msgstr "Steuer" +msgstr "Steuerschlüssel" #. module: account #: field:account.account,currency_mode:0 msgid "Outgoing Currencies Rate" -msgstr "Wechselkurse" +msgstr "Wechselkurs (Verkauf)" #. module: account #: selection:account.analytic.journal,type:0 @@ -1276,10 +1282,10 @@ msgstr "Situation" #. module: account #: help:account.move.line,move_id:0 msgid "The move of this entry line." -msgstr "Der Buchungssatz dieser Buchungszeile." +msgstr "Der Buchungssatz dieser Buchungs." #. 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 " @@ -1291,7 +1297,7 @@ msgstr "" #. module: account #: field:account.move.line.reconcile,trans_nbr:0 msgid "# of Transaction" -msgstr "# Transaktionen" +msgstr "Transaktionsnummer" #. module: account #: report:account.general.ledger:0 @@ -1302,18 +1308,18 @@ msgid "Entry Label" msgstr "Buchungstext" #. 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 "" -"Sie können kein Journal beenden ohne Buchungseintrag für diese Peridode! (-> " -"Wirtschaftsperiode)" +"Sie können ein Journal (Buch) mit Buchungen in dieser Periode nicht " +"verändern / löschen!" #. module: account #: help:account.invoice,origin:0 #: help:account.invoice.line,origin:0 msgid "Reference of the document that produced this invoice." -msgstr "Referenz des Rechnungsdokuments" +msgstr "Referenz zum Ursprungsdokuments dieser Rechnung." #. module: account #: view:account.analytic.line:0 @@ -1324,7 +1330,7 @@ msgstr "Sonstige" #. module: account #: view:account.subscription:0 msgid "Draft Subscription" -msgstr "Entwurf Abonnement" +msgstr "Abonnement im Entwurf" #. module: account #: view:account.account:0 @@ -1358,7 +1364,7 @@ msgstr "Konto" #. module: account #: field:account.tax,include_base_amount:0 msgid "Included in base amount" -msgstr "Inbegriffen in Steuergrundlage" +msgstr "Im Grundbetrag enthalten" #. module: account #: view:account.entries.report:0 @@ -1386,42 +1392,43 @@ msgstr "Ebene" #: model:ir.ui.menu,name:account.menu_tax_report #: model:ir.ui.menu,name:account.next_id_27 msgid "Taxes" -msgstr "Umsatzsteuer" +msgstr "Steuern" #. 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 "Wähle eine Start und Ende Periode" +msgstr "Wähle eine Start- und eine End-Periode" #. 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 "GuV" +msgstr "Gewinn und Verlust" #. module: account #: model:ir.model,name:account.model_account_account_template msgid "Templates for Accounts" -msgstr "Vorlage Finanzkonten" +msgstr "Finanzkontenvorlagen" #. module: account #: view:account.tax.code.template:0 msgid "Search tax template" -msgstr "Suche Kontenplan Umsatzsteuer" +msgstr "Durchsuche Steuerkontenvorlagen" #. module: account #: view:account.move.reconcile:0 #: model:ir.actions.act_window,name:account.action_account_reconcile_select #: model:ir.actions.act_window,name:account.action_view_account_move_line_reconcile msgid "Reconcile Entries" -msgstr "Buchen OP Ausgleich" +msgstr "OP-Ausgleich buchen" #. module: account #: model:ir.actions.report.xml,name:account.account_overdue #: view:res.company:0 msgid "Overdue Payments" -msgstr "Fällige Rechnungen" +msgstr "Fällige Zahlungen" #. module: account #: report:account.third_party_ledger:0 @@ -1437,20 +1444,21 @@ msgstr "Zurücksetzen auf Entwurf" #. module: account #: view:wizard.multi.charts.accounts:0 msgid "Bank Information" -msgstr "Bank Informationen" +msgstr "Bankinformationen" #. module: account #: view:account.aged.trial.balance:0 #: view:account.common.report:0 msgid "Report Options" -msgstr "Report Optionen" +msgstr "Berichtsoptionen" #. module: account #: model:ir.model,name:account.model_account_entries_report msgid "Journal Items Analysis" -msgstr "Analyse der Journaleinträge" +msgstr "Analyse der Buchungen" #. module: account +#: report:account.aged_trial_balance:0 #: model:ir.ui.menu,name:account.next_id_22 msgid "Partners" msgstr "Partner" @@ -1475,12 +1483,14 @@ msgid "Central Journal" msgstr "Zentrales Journal" #. 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" -msgstr "Konten mit Saldo" +msgstr "Konten mit Saldo ungeleich 0" #. module: account #: view:account.tax:0 @@ -1495,17 +1505,17 @@ msgstr "Analytisches Konto f. Kosten" #. module: account #: view:account.model:0 msgid "Create entries" -msgstr "Erzeuge Buchungen" +msgstr "Buchungen anlegen" #. module: account #: field:account.entries.report,nbr:0 msgid "# of Items" -msgstr "# Buchungen" +msgstr "Buchungsanzahl" #. module: account #: field:account.automatic.reconcile,max_amount:0 msgid "Maximum write-off amount" -msgstr "Max. Abschreibung" +msgstr "Höchstbetrag f. Abschreibungen" #. module: account #: view:account.invoice:0 @@ -1516,7 +1526,7 @@ msgstr "Berechne Steuern" #: field:account.chart.template,code_digits:0 #: field:wizard.multi.charts.accounts,code_digits:0 msgid "# of Digits" -msgstr "# Stellenanzahl" +msgstr "Stellenanzahl" #. module: account #: field:account.journal,entry_posted:0 @@ -1545,7 +1555,7 @@ msgstr "" #. module: account #: view:account.entries.report:0 msgid "# of Entries " -msgstr "# Einzelposten " +msgstr "Anz. Positionen " #. module: account #: help:account.fiscal.position,active:0 @@ -1553,13 +1563,13 @@ msgid "" "By unchecking the active field, you may hide a fiscal position without " "deleting it." msgstr "" -"Durch Deaktivierung des Aktive Feldes können Sie die Finanzposition " -"deaktivieren ohne diese zu löschen.." +"Durch Deaktivierung des Feldes \"Aktiv\" können Sie die Finanzposition " +"verbergen ohne diese zu löschen." #. module: account #: model:ir.model,name:account.model_temp_range msgid "A Temporary table used for Dashboard view" -msgstr "Eine temporäre Tabelle für Pinnwand Ansichten etc." +msgstr "Eine temporäre Tabelle für Pinnwand-Ansichten" #. module: account #: model:ir.actions.act_window,name:account.action_invoice_tree4 @@ -1576,7 +1586,7 @@ msgstr "Lieferantengutschriften" #: selection:account.fiscalyear,state:0 #: selection:account.period,state:0 msgid "Closed" -msgstr "Beendet" +msgstr "Abgeschlossen" #. module: account #: model:ir.ui.menu,name:account.menu_finance_recurrent_entries @@ -1586,12 +1596,12 @@ msgstr "Wiederkehrende Buchungen" #. module: account #: model:ir.model,name:account.model_account_fiscal_position_template msgid "Template for Fiscal Position" -msgstr "Steuerzuordnung Vorlage" +msgstr "Vorlagen für die Bilanz" #. module: account #: field:account.automatic.reconcile,reconciled:0 msgid "Reconciled transactions" -msgstr "Buchungen OP Ausgleich" +msgstr "Ausgeglichene Geschäftsvorfälle" #. module: account #: field:account.journal.view,columns_id:0 @@ -1617,7 +1627,7 @@ msgstr "Gruppen" #: field:account.invoice,amount_untaxed:0 #: field:report.invoice.created,amount_untaxed:0 msgid "Untaxed" -msgstr "Nettobetrag" +msgstr "Nicht versteuert" #. module: account #: view:account.partner.reconcile.process:0 @@ -1627,7 +1637,7 @@ msgstr "Gehe zu nächstem Partner" #. module: account #: view:account.bank.statement:0 msgid "Search Bank Statements" -msgstr "Suche Bankauszug" +msgstr "Bankauszüge durchsuchen" #. module: account #: view:account.move.line:0 @@ -1644,13 +1654,13 @@ msgstr "Kreditorenkonto" #: field:account.tax,account_paid_id:0 #: field:account.tax.template,account_paid_id:0 msgid "Refund Tax Account" -msgstr "Gutschrift Steuerkonto" +msgstr "Rückvergütung vom Steuerkonto" #. module: account #: view:account.bank.statement:0 #: field:account.bank.statement,line_ids:0 msgid "Statement lines" -msgstr "Belegzeilen" +msgstr "Belegpositionen" #. module: account #: model:ir.actions.act_window,help:account.action_bank_statement_tree @@ -1662,13 +1672,14 @@ msgid "" "the Payment column of a line, you can press F1 to open the reconciliation " "form." msgstr "" -"Ein Bankauszug beinhaltet alle Zahlungsvorgänge einer bestimmten Periode auf " -"einem Bankkonto, einer Kreditkarte oder anderen Konten für finanzielle " -"Transaktionen. Der Eröffnungssaldo sowie der Endsaldo wird für jeden Auszug " -"automatisch errechnet aus dem Kontosaldo zu Beginn der Buchung eines Auszugs " -"und den gebuchten finanziellen Transaktionen. Wenn Sie sich in der Spalte " -"Zahlungsausgleich einer Position in einem Bankauszugs befinden, können Sie " -"über F1 in das Fenster für den Ausgleich von offenen Posten kommen." +"Ein Bankauszug (Kontoauszug) beinhaltet alle Zahlungsvorgänge eines " +"gegebenen Zeitraumes auf einem Bankkonto, einer Kreditkarte oder anderen " +"Konten für finanzielle Transaktionen. Der Eröffnungssaldo sowie der Endsaldo " +"wird für jeden Auszug automatisch errechnet aus dem Kontosaldo zu Beginn der " +"Buchung eines Auszugs und den gebuchten finanziellen Transaktionen. Wenn Sie " +"sich in der Spalte Zahlungsausgleich einer Position in einem Bankauszugs " +"befinden, können Sie über F1 in das Fenster für den Ausgleich von offenen " +"Posten kommen." #. module: account #: report:account.analytic.account.cost_ledger:0 @@ -1701,7 +1712,7 @@ msgstr "Rechnung" #: model:process.node,note:account.process_node_analytic0 #: model:process.node,note:account.process_node_analyticcost0 msgid "Analytic costs to invoice" -msgstr "Abrechenbare Analytische Kosten" +msgstr "Anrechenbare Analytische Kosten" #. module: account #: view:ir.sequence:0 @@ -1711,12 +1722,12 @@ msgstr "Geschäftsjahr Sequenz" #. module: account #: field:wizard.multi.charts.accounts,seq_journal:0 msgid "Separated Journal Sequences" -msgstr "Unterschiedliche Journal Sequenzen" +msgstr "Unterteilte Folge von Journalen" #. module: account #: view:account.invoice:0 msgid "Responsible" -msgstr "Mitarbeiter" +msgstr "Verantwortlicher" #. module: account #: view:account.invoice.refund:0 @@ -1724,9 +1735,9 @@ msgid "" "Cancel Invoice: Creates the refund invoice, validate and reconcile it to " "cancel the current invoice." msgstr "" -"Storno der Rechnung: Erzeugt eine Gutschrift, bestätige diese und erzeuge " -"einen Ausgleichsbuchung gegen die Ursprungsrechnung für den Ausgleich des " -"existierenden offenen Postens." +"Storno der Rechnung: Erzeugt eine Gutschrift, Sie bestätigen diese und " +"erzeugen eine Ausgleichsbuchung gegen die Ursprungsrechnung für den " +"Ausgleich des existierenden offenen Postens." #. module: account #: model:ir.ui.menu,name:account.periodical_processing_invoicing @@ -1742,10 +1753,10 @@ msgstr "Unbekannter Partner" #. module: account #: field:account.tax.code,sum:0 msgid "Year Sum" -msgstr "Summe Jahr" +msgstr "Jahressumme" #. 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." @@ -1801,7 +1812,7 @@ msgstr "Debitoren & Kreditoren" #. module: account #: model:ir.model,name:account.model_account_common_journal_report msgid "Account Common Journal Report" -msgstr "Standardauswertung von Journalen" +msgstr "Auswertung von Sammel-Journalen" #. module: account #: selection:account.partner.balance,display_partner:0 @@ -1817,7 +1828,7 @@ msgstr "Analytischer Kontenplan" #: view:account.analytic.line:0 #: view:analytic.entries.report:0 msgid "My Entries" -msgstr "Meine Buchungen" +msgstr "Eigene Buchungen" #. module: account #: report:account.overdue:0 @@ -1825,10 +1836,10 @@ msgid "Customer Ref:" msgstr "Kundenreferenz:" #. 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 "Benutzer %s hat keinen Zugriff auf das %s Journal!" +msgstr "Benutzer %s hat keinen Zugriff auf das Journal %s!" #. module: account #: help:account.period,special:0 @@ -1838,7 +1849,7 @@ msgstr "Diese Perioden können sich überschneiden" #. module: account #: model:process.node,name:account.process_node_draftstatement0 msgid "Draft statement" -msgstr "Beleg Entwurf" +msgstr "Belegentwurf" #. module: account #: view:account.tax:0 @@ -1873,7 +1884,7 @@ msgstr "Statistik Rechnungen" #. module: account #: model:ir.model,name:account.model_account_period_close msgid "period close" -msgstr "beende Periode" +msgstr "Periodenabschluss" #. module: account #: view:account.installer:0 @@ -1923,7 +1934,7 @@ msgstr "Fehler! Sie können keine rekursiven Unternehmen erzeugen." #. module: account #: model:ir.actions.report.xml,name:account.account_journal_sale_purchase msgid "Sale/Purchase Journal" -msgstr "Verkauf/Einkauf Journal" +msgstr "Verkaufs-/Einkaufsbericht" #. module: account #: view:account.analytic.account:0 @@ -1935,7 +1946,7 @@ msgstr "Analytisches Konto" #, python-format msgid "Please verify that an account is defined in the journal." msgstr "" -"Bitte stellen Sie sicher dass ein Konto für das Journal definiert und " +"Bitte stellen Sie sicher, dass ein Konto für das Journal definiert und " "hinterlegt wurde." #. module: account @@ -1953,7 +1964,7 @@ msgstr "Druck Finanzjournal" #. module: account #: model:ir.model,name:account.model_product_category msgid "Product Category" -msgstr "Produkt Kategorie" +msgstr "Produktkategorie" #. module: account #: selection:account.account.type,report_type:0 @@ -1967,20 +1978,21 @@ msgid "" "will be added, Loss : Amount will be deducted.), as calculated in Profit & " "Loss Report" msgstr "" -"Dieses Konto wird automatisch als Saldo der G&V errechnet und in der Bilanz " -"dargestellt." +"Dieses Konto wird automatisch als Saldo der GuV errechnet und in der Bilanz " +"dargestellt (Bei Gewinn wird hinzugerechnet, bei Verlust entsprechend " +"abgezogen)." #. module: account #: model:process.node,note:account.process_node_reconciliation0 #: model:process.node,note:account.process_node_supplierreconciliation0 msgid "Comparison between accounting and payment entries" -msgstr "Abgleich Fibukonten mit Zahlungseingängen" +msgstr "Vergleich zwischen Fibu-Konten und Zahlungseingängen" #. module: account #: view:account.tax:0 #: view:account.tax.template:0 msgid "Tax Definition" -msgstr "Steuer Definition" +msgstr "Steuerdefinition" #. module: account #: help:wizard.multi.charts.accounts,seq_journal:0 @@ -1988,8 +2000,9 @@ msgid "" "Check this box if you want to use a different sequence for each created " "journal. Otherwise, all will use the same sequence." msgstr "" -"Hake diese Box an falls Sie unterschiedliche Sequenzen für jedes neue " -"Journal haben möchten. Ansonsten wird immer das gleiche Journal verwendet." +"Diese Box anwählen, falls Sie unterschiedliche Sequenzen für jedes neue " +"Journal verwenden möchten. Ansonsten wird immer die gleiche Folgen-" +"Nummerierung verwendet." #. module: account #: help:account.partner.ledger,amount_currency:0 @@ -1998,8 +2011,8 @@ msgid "" "It adds the currency column if the currency is different then the company " "currency" msgstr "" -"Zusätzliche Anzeige der Währung, wenn die Währung anders ist als die " -"eingestellte Währung des Unternehmens" +"Zusätzliche Anzeige der Währung, wenn die Währung sich von der eingestellten " +"Währung des Unternehmens unterscheidet" #. module: account #: help:account.journal,allow_date:0 @@ -2014,7 +2027,7 @@ msgstr "" #: code:addons/account/account_invoice.py:73 #, python-format msgid "You must define an analytic journal of type '%s'!" -msgstr "Sie müssen eine Analyse Journal vom Typ '%s' definieren" +msgstr "Sie müssen eine Analysebericht vom Typ '%s' definieren!" #. module: account #: field:account.installer,config_logo:0 @@ -2029,9 +2042,10 @@ msgid "" "currency. You should remove the secondary currency on the account or select " "a multi-currency view on the journal." msgstr "" -"The selected account of your Journal Entry forces to provide a secondary " -"currency. You should remove the secondary currency on the account or select " -"a multi-currency view on the journal." +"Das ausgewählte Konto Ihrer Buchung erzwingt die Angabe einer " +"Alternativwährung. Sie müssen die Verwendung einer Alternativwährung in den " +"Einstellungen des Kontos ausschalten oder aber Mehrwährungsfähigkeit im " +"Bericht einschalten." #. module: account #: model:ir.actions.act_window,help:account.action_account_financial_report_tree @@ -2124,7 +2138,7 @@ msgstr "Januar" #. module: account #: view:account.journal:0 msgid "Validations" -msgstr "Prüfvorgänge" +msgstr "Prüfungen" #. module: account #: view:account.entries.report:0 @@ -2142,7 +2156,7 @@ msgid "" "Invalid period ! Some periods overlap or the date period is not in the scope " "of the fiscal year. " msgstr "" -"Ungültige Periode! Diese überlappen oder liegen außerhalb des " +"Ungültige Periode! Manche überlappen sich oder liegen außerhalb des " "Geschäftsjahres " #. module: account @@ -2157,10 +2171,10 @@ msgstr "Sie müssen ein Analyse-Journal für das Journal '%s' deinieren!" #: selection:account.invoice.report,state:0 #: selection:report.invoice.created,state:0 msgid "Pro-forma" -msgstr "Pro-Forma" +msgstr "Proforma" #. 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" @@ -2189,10 +2203,10 @@ msgstr "" #. module: account #: view:account.chart.template:0 msgid "Search Chart of Account Templates" -msgstr "Suche Kontenplan Vorlage" +msgstr "Durchsuche Kontenplan-Vorlagen" #. 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" @@ -2249,7 +2263,7 @@ msgid "Description" msgstr "Buchungstext" #. module: account -#: code:addons/account/account.py:3119 +#: code:addons/account/account.py:3136 #, python-format msgid "ECNJ" msgstr "GSE" @@ -2258,7 +2272,7 @@ msgstr "GSE" #: view:account.subscription:0 #: selection:account.subscription,state:0 msgid "Running" -msgstr "In Weiterbearbeitung" +msgstr "Laufend" #. module: account #: view:account.chart.template:0 @@ -2268,7 +2282,7 @@ msgid "Income Account" msgstr "Erlöskonto" #. 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 "" @@ -2300,16 +2314,17 @@ msgstr "Änderung zu" #. module: account #: view:account.entries.report:0 msgid "# of Products Qty " -msgstr "# Menge v. Produkt " +msgstr "Menge des Produkts Anz. " #. module: account #: model:ir.model,name:account.model_product_template msgid "Product Template" -msgstr "Vorlage f. Produkte" +msgstr "Produktvorlage" #. 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 @@ -2319,6 +2334,7 @@ msgstr "Vorlage f. Produkte" #: 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 @@ -2366,10 +2382,10 @@ msgstr "Lasse leer für alle offenen Geschäftsjahre" #. module: account #: field:account.invoice.report,account_line_id:0 msgid "Account Line" -msgstr "Buchungszeile" +msgstr "Kontobuchung" #. 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" @@ -2405,7 +2421,7 @@ msgid "Main Sequence" msgstr "Haupt Sequenz" #. 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 " @@ -2430,7 +2446,7 @@ msgstr "Zahlungsbedingung" #: model:ir.actions.act_window,name:account.action_account_fiscal_position_form #: model:ir.ui.menu,name:account.menu_action_account_fiscal_position_form msgid "Fiscal Positions" -msgstr "Steuerzuordnung" +msgstr "Bilanzpositionen" #. module: account #: constraint:account.account:0 @@ -2467,7 +2483,7 @@ msgstr "Offen" #: model:process.node,note:account.process_node_draftinvoices0 #: model:process.node,note:account.process_node_supplierdraftinvoices0 msgid "Draft state of an invoice" -msgstr "Entwurf Status bei Rechnung" +msgstr "Entwurfsstatus einer Rechnung" #. module: account #: view:account.partner.reconcile.process:0 @@ -2478,10 +2494,10 @@ msgstr "Offene Posten Ausgleich bei Partnern" #: field:account.tax,tax_code_id:0 #: view:account.tax.code:0 msgid "Account Tax Code" -msgstr "Umsatzsteuer" +msgstr "Steuerschlüssel" #. 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" @@ -2498,7 +2514,7 @@ msgstr "" #: model:account.payment.term,name:account.account_payment_term_advance #: model:account.payment.term,note:account.account_payment_term_advance msgid "30% Advance End 30 Days" -msgstr "30% Anzahlung, Rest in 30 Tagen" +msgstr "30% Anzahlung, Rest innerhalb von 30 Tagen" #. module: account #: view:account.entries.report:0 @@ -2546,13 +2562,13 @@ msgstr "" #. module: account #: selection:account.move.line,centralisation:0 msgid "Debit Centralisation" -msgstr "Zentrales Gegenkonto" +msgstr "Zentrales Soll-Gegenkonto" #. module: account #: view:account.invoice.confirm:0 #: model:ir.actions.act_window,name:account.action_account_invoice_confirm msgid "Confirm Draft Invoices" -msgstr "Bestätige Rechnung" +msgstr "Bestätige Rechnungsentwurf" #. module: account #: field:account.entries.report,day:0 @@ -2574,7 +2590,7 @@ msgid "Account Model Entries" msgstr "Buchungsvorlage" #. module: account -#: code:addons/account/account.py:3117 +#: code:addons/account/account.py:3134 #, python-format msgid "EXJ" msgstr "EK" @@ -2582,7 +2598,7 @@ msgstr "EK" #. module: account #: field:product.template,supplier_taxes_id:0 msgid "Supplier Taxes" -msgstr "Steuern Einkauf" +msgstr "Steuern des Einkaufs (Vorsteuer)" #. module: account #: view:account.entries.report:0 @@ -2611,7 +2627,7 @@ msgstr "Periode auswählen" #. module: account #: model:ir.ui.menu,name:account.menu_account_pp_statements msgid "Statements" -msgstr "Abstimmung von Konten" +msgstr "Abstimmung von Konten (Ausweis)" #. module: account #: report:account.analytic.account.journal:0 @@ -2632,13 +2648,13 @@ msgstr "" msgid "" "This report gives you an overview of the situation of a specific journal" msgstr "" -"Diese Auswertung ermöglicht einen Überblick über den Saldo das spezifizierte " +"Diese Auswertung ermöglicht einen Überblick über den Saldo des angegebenen " "Journals." #. module: account #: model:ir.model,name:account.model_account_move_line_reconcile_writeoff msgid "Account move line reconcile (writeoff)" -msgstr "OP-Ausgleich (mit Differenz)" +msgstr "OP-Ausgleich (Abschreibung)" #. module: account #: model:account.account.type,name:account.account_type_tax @@ -2673,10 +2689,10 @@ msgid "Accounts" msgstr "Finanzkonten" #. module: account -#: code:addons/account/account_invoice.py:369 +#: code:addons/account/account_invoice.py:378 #, python-format msgid "Configuration Error!" -msgstr "Konfigurationsfehler !" +msgstr "Konfigurationsfehler!" #. module: account #: field:account.invoice.report,price_average:0 @@ -2692,7 +2708,7 @@ msgstr "Datum:" #: report:account.journal.period.print:0 #: report:account.journal.period.print.sale.purchase:0 msgid "Label" -msgstr "Produktbeschriftung" +msgstr "Etikett" #. module: account #: view:account.tax:0 @@ -2746,7 +2762,7 @@ msgstr "Automatischer Kontenausgleich" #. module: account #: field:account.invoice,reconciled:0 msgid "Paid/Reconciled" -msgstr "Bezahlt / OP Ausgleich" +msgstr "Bezahlt/Beglichen" #. module: account #: field:account.tax,ref_base_code_id:0 @@ -2777,7 +2793,7 @@ msgstr "Übergeordnete Kontenplan Vorlage" #: field:account.tax,parent_id:0 #: field:account.tax.template,parent_id:0 msgid "Parent Tax Account" -msgstr "Oberkonto Steuer" +msgstr "Übergeordnetes Steuerkonto" #. module: account #: code:addons/account/wizard/account_change_currency.py:59 @@ -2796,6 +2812,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 "Saldo Partner nach Alter" @@ -2845,21 +2862,21 @@ msgstr "Konfigurieren Sie Ihren Kontenplan" #. module: account #: view:account.use.model:0 msgid "This wizard will create recurring accounting entries" -msgstr "Diese Assistent erzeugt wiederkehrende Buchungen." +msgstr "Dieser Assistent erzeugt wiederkehrende Buchungen." #. module: account -#: code:addons/account/account.py:1321 +#: code:addons/account/account.py:1329 #, python-format msgid "No sequence defined on the journal !" -msgstr "Keine Sequenz für dieses Journal definiert !" +msgstr "Keine Sequenz für dieses Journal definiert!" #. 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!" -msgstr "Sie sollten ein analytisches Journal im '%s' Journal definieren!" +msgstr "Sie müssen ein analytisches Journal im '%s' Journal definieren!" #. module: account #: code:addons/account/account.py:407 @@ -2868,7 +2885,7 @@ msgid "" "You need an Opening journal with centralisation checked to set the initial " "balance!" msgstr "" -"Für die Eröffnungsbilanz benötigen sie ein Eröffnungsjournal mit " +"Für die Eröffnungsbilanz benötigen Sie ein Eröffnungsjournal mit " "Zentralisierung." #. module: account @@ -2964,10 +2981,10 @@ msgstr "" #. module: account #: field:account.invoice.tax,base_amount:0 msgid "Base Code Amount" -msgstr "Steuergrundlage Betrag" +msgstr "Bemessungsgrundlage Betrag" #. 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 " @@ -2982,7 +2999,7 @@ msgid "Default Sale Tax" msgstr "Standard Steuer Verkauf" #. module: account -#: code:addons/account/account_invoice.py:1013 +#: code:addons/account/account_invoice.py:1025 #, python-format msgid "Invoice '%s' is validated." msgstr "Rechnung '%s' ist validiert." @@ -3001,7 +3018,7 @@ msgstr "" #. module: account #: model:ir.ui.menu,name:account.menu_finance_accounting msgid "Financial Accounting" -msgstr "Finanzen" +msgstr "Finanzbuchhaltung" #. module: account #: model:ir.ui.menu,name:account.menu_account_report_pl @@ -3020,16 +3037,16 @@ msgstr "Gewinn und Verlust" #: model:ir.model,name:account.model_account_fiscal_position #: field:res.partner,property_account_position:0 msgid "Fiscal Position" -msgstr "Steuerzuordnung" +msgstr "Bilanz" #. module: account -#: code:addons/account/account_invoice.py:735 +#: code:addons/account/account_invoice.py:744 #, python-format msgid "" "Tax base different!\n" "Click on compute to update the tax base." msgstr "" -"Die Steuerbasis stimmt nicht!\n" +"Die Steuergrundlage ist geändert!\n" "Drücken Sie Berechnen!" #. module: account @@ -3068,12 +3085,12 @@ msgstr "Verantwortlicher Mitarbeiter für dieses Journal" #. module: account #: view:account.period:0 msgid "Search Period" -msgstr "Suche Periode" +msgstr "Durchsuche Periode" #. module: account #: view:account.change.currency:0 msgid "Invoice Currency" -msgstr "Währung" +msgstr "Rechnungswährung" #. module: account #: field:accounting.report,account_report_id:0 @@ -3089,7 +3106,7 @@ msgstr "Vereinbarungen" #. module: account #: field:account.bank.statement,total_entry_encoding:0 msgid "Cash Transaction" -msgstr "Barkasse Transaktionen" +msgstr "Bar-Geschäftsvorfälle" #. module: account #: view:res.partner:0 @@ -3099,7 +3116,7 @@ msgstr "Bankkonto" #. module: account #: field:account.chart.template,tax_template_ids:0 msgid "Tax Template List" -msgstr "Umsatzsteuer Vorlagenliste" +msgstr "Steuer-Vorlagenliste" #. module: account #: model:ir.ui.menu,name:account.menu_account_print_sale_purchase_journal @@ -3119,7 +3136,7 @@ msgstr "" "wird. In den meisten Ländern ist \"Durchhschnitt\" die legale Methode, aber " "nur wenige Systeme können dies. Für Importe von anderen Systemen muss daher " "ggf. der Tageskurs verwendet werden. Eingehende Transkationen verwenden " -"jedenfalls den Tageskurs." +"grundsätzlich den Tageskurs." #. module: account #: help:account.chart.template,code_digits:0 @@ -3130,12 +3147,12 @@ msgstr "Anzahl Stellen für Konto" #. module: account #: field:account.payment.term.line,name:0 msgid "Line Name" -msgstr "Zeile Bezeichnung" +msgstr "Zeilenbezeichnung" #. module: account #: view:account.fiscalyear:0 msgid "Search Fiscalyear" -msgstr "Suche Geschäftsjahr" +msgstr "Durchsuche Geschäftsjahr" #. module: account #: selection:account.tax,applicable_type:0 @@ -3163,7 +3180,7 @@ msgstr "Abschreibungskonto" #: view:account.subscription:0 #: field:account.subscription,model_id:0 msgid "Model" -msgstr "Standard" +msgstr "Modell" #. module: account #: help:account.invoice.tax,base_code_id:0 @@ -3179,7 +3196,7 @@ msgid "View" msgstr "Ansicht" #. 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" @@ -3241,7 +3258,7 @@ msgid "" msgstr "" "Der Assistent wird alle Buchungen für eine bestimmtes Journal innerhalb " "einer bestimmten Periode buchen. Sobald die Buchungen erzeugt wurden, können " -"Sie nicht mehr vorher abgeändert werden." +"Sie nicht mehr abgeändert werden." #. module: account #: model:ir.actions.act_window,name:account.action_account_chart_template_form @@ -3388,17 +3405,17 @@ msgid "Starting Balance" msgstr "Anfangssaldo" #. module: account -#: code:addons/account/account_invoice.py:1332 +#: code:addons/account/account_invoice.py:1345 #, python-format msgid "No Partner Defined !" -msgstr "Kein Partner definiert!" +msgstr "Kein Partner festgelegt!" #. module: account #: model:ir.actions.act_window,name:account.action_account_period_close #: model:ir.actions.act_window,name:account.action_account_period_tree #: model:ir.ui.menu,name:account.menu_action_account_period_close_tree msgid "Close a Period" -msgstr "Beende Periode" +msgstr "Periode abschließen" #. module: account #: field:account.financial.report,display_detail:0 @@ -3421,15 +3438,15 @@ msgid "" "The amount expressed in the related account currency if not equal to the " "company one." msgstr "" -"Der Betrag in einer anderen Währung, insofern normalerweise die " -"Unternehmenswährung eine andere ist." +"Der Betrag in der Währung des Kontos angegeben, sofern diese sich von der " +"Unternehmenswährung unterscheidet." #. module: account #: model:ir.actions.act_window,name:account.action_account_unreconcile #: model:ir.actions.act_window,name:account.action_account_unreconcile_reconcile #: model:ir.actions.act_window,name:account.action_account_unreconcile_select msgid "Unreconcile Entries" -msgstr "Ausgleich Offene Posten zurücksetzen" +msgstr "OP-Ausgleich stornieren" #. module: account #: field:account.tax.code,notprintable:0 @@ -3444,7 +3461,7 @@ msgid "Chart of Tax" msgstr "Steuerkontenplan" #. 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 "Der Endsaldo muss mit dem errechneten übereinstimmen!" @@ -3452,7 +3469,7 @@ msgstr "Der Endsaldo muss mit dem errechneten übereinstimmen!" #. module: account #: view:account.journal:0 msgid "Search Account Journal" -msgstr "Suche Buchungsjournal" +msgstr "Durchsuche Buchungsjournal" #. module: account #: model:ir.actions.act_window,name:account.action_invoice_tree_pending_invoice @@ -3504,13 +3521,13 @@ msgstr "Suche Buchung" #: field:account.tax.code,name:0 #: field:account.tax.code.template,name:0 msgid "Tax Case Name" -msgstr "Umsatzsteuervorgang" +msgstr "Versteuerungsbezeichnung" #. module: account #: report:account.invoice:0 #: model:process.node,name:account.process_node_draftinvoices0 msgid "Draft Invoice" -msgstr "Entwurf Rechnung" +msgstr "Rechnungsentwurf" #. module: account #: code:addons/account/wizard/account_invoice_state.py:68 @@ -3519,8 +3536,8 @@ msgid "" "Selected Invoice(s) cannot be cancelled as they are already in 'Cancelled' " "or 'Done' state!" msgstr "" -"Ausgewählte Rechnung(en) kann nicht geändert, das Sie bereits im " -"'Abgebrochen' oder 'Erledigt' Status ist." +"Ausgewählte Rechnung(en) kann/können nicht geändert, das Sie bereits im " +"'Abgebrochen' oder 'Erledigt' Status ist/sind." #. module: account #: view:account.invoice.line:0 @@ -3529,8 +3546,9 @@ msgstr "Menge:" #. module: account #: field:account.aged.trial.balance,period_length:0 +#: report:account.aged_trial_balance:0 msgid "Period Length (days)" -msgstr "Perioden Länge (Tage)" +msgstr "Periodendauer (Tage)" #. module: account #: model:ir.actions.act_window,name:account.action_account_print_sale_purchase_journal @@ -3546,28 +3564,28 @@ msgstr "Rechnungsstatus" #: view:account.invoice.report:0 #: field:account.invoice.report,categ_id:0 msgid "Category of Product" -msgstr "Produktkategorien" +msgstr "Produktkategorie" #. module: account #: view:account.addtmpl.wizard:0 #: model:ir.actions.act_window,name:account.action_account_addtmpl_wizard_form msgid "Create Account" -msgstr "Erstelle Konto" +msgstr "Konto anlegen" #. module: account #: model:ir.model,name:account.model_report_account_type_sales msgid "Report of the Sales by Account Type" -msgstr "Auswertung Verkauf nach Kontentyp" +msgstr "Verkaufsauswertung nach Kontentyp" #. module: account #: view:account.move.line:0 msgid "Unreconciled Journal Items" -msgstr "Nicht ausgeglichen Buchungen" +msgstr "Nicht ausgeglichene Buchungen" #. module: account #: sql_constraint:res.currency:0 msgid "The currency code must be unique per company!" -msgstr "Der Währungscode muss je Unternehmen eindeutig sein" +msgstr "Der Währungsschlüssel muss je Unternehmen eindeutig sein" #. module: account #: selection:account.account.type,close_method:0 @@ -3575,7 +3593,7 @@ msgid "Detail" msgstr "Details" #. 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" @@ -3592,12 +3610,19 @@ msgstr "" #. module: account #: report:account.invoice:0 msgid "VAT :" -msgstr "UST:" +msgstr "USt.:" #. 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 @@ -3620,11 +3645,11 @@ msgid "Centralised counterpart" msgstr "Zentralisierung Gegenkonto" #. 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 "" -"Sie dürfen keine Buchungen vom Typ \"Sicht\" für das Konto erzeugen %s %s" +"Konten vom Typ \"Sicht\" %s %s können für Buchungen nicht verwendet werden" #. module: account #: model:ir.model,name:account.model_account_partner_reconcile_process @@ -3639,7 +3664,8 @@ msgstr "2" #. module: account #: view:account.chart:0 msgid "(If you do not select Fiscal year it will take all open fiscal years)" -msgstr "(Wenn kein Geschäftsjahr ausgewählt wird, werden alle genommen)" +msgstr "" +"(Wenn kein Geschäftsjahr ausgewählt wird, werden alle laufenden genommen)" #. module: account #: selection:account.aged.trial.balance,filter:0 @@ -3673,10 +3699,15 @@ msgstr "(Wenn kein Geschäftsjahr ausgewählt wird, werden alle genommen)" #: 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 "Datum" @@ -3707,7 +3738,7 @@ msgid "Chart of Accounts Template" msgstr "Vorlage Kontenplan" #. 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 " @@ -3719,7 +3750,7 @@ msgstr "" "Bitte ordnen Sie dem Partner eine Zahlungsbedingungen zu." #. 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 "Einige Einträge wurden bereits ausgeglichen!" @@ -3750,6 +3781,8 @@ msgstr "Finanzbudgets" #: 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 "Keine Filter" @@ -3783,12 +3816,12 @@ msgstr "Anzuwendender Typ (if type=code)" #: view:account.invoice.report:0 #: field:account.invoice.report,product_qty:0 msgid "Qty" -msgstr "Menge" +msgstr "Anz" #. module: account #: field:account.invoice.report,address_contact_id:0 msgid "Contact Address Name" -msgstr "Partner Kontakt Name" +msgstr "Partner Kontaktperson" #. module: account #: field:account.move.line,blocked:0 @@ -3798,7 +3831,7 @@ msgstr "Rechtsstreit" #. module: account #: view:account.analytic.line:0 msgid "Search Analytic Lines" -msgstr "Suche Analytische Buchungen" +msgstr "Durchsuche Analytische Buchungen" #. module: account #: field:res.partner,property_account_payable:0 @@ -3835,7 +3868,7 @@ msgid "Analytic Items" msgstr "Analytische Buchungen" #. 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 "Die Steuer kann nicht geändert werden!" @@ -3843,12 +3876,12 @@ msgstr "Die Steuer kann nicht geändert werden!" #. module: account #: field:analytic.entries.report,nbr:0 msgid "#Entries" -msgstr "# Buchungen" +msgstr "Anz. Buchungen" #. module: account #: selection:account.invoice.refund,filter_refund:0 msgid "Create a draft Refund" -msgstr "Erzeuge Gutschrift Entwurf" +msgstr "Erzeuge Gutschriftsentwurf" #. module: account #: view:account.state.open:0 @@ -3858,7 +3891,7 @@ msgstr "Offene Rechnung" #. module: account #: field:account.invoice.tax,factor_tax:0 msgid "Multipication factor Tax code" -msgstr "Faktor Steuerberechnung" +msgstr "Faktor für Steuerberechnung" #. module: account #: view:account.fiscal.position:0 @@ -3866,7 +3899,7 @@ msgid "Mapping" msgstr "Steuer Umschlüsselung" #. 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 " @@ -3882,6 +3915,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 @@ -3895,7 +3929,7 @@ msgid "Account Aged Trial balance Report" msgstr "Auswertung Altersstruktur Forderungen" #. 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 "" @@ -3943,7 +3977,7 @@ msgid "" "same company." msgstr "" "Das gewählte Geschäftsjahr, die Periode und das Konto müssen zum selben " -"UNternehmen gehören." +"Unternehmen gehören." #. module: account #: model:ir.actions.todo.category,name:account.category_accounting_configuration @@ -3959,7 +3993,7 @@ msgstr "Finanzen" #. module: account #: view:account.entries.report:0 msgid "Journal Entries with period in current year" -msgstr "Jaurnalbuchungen des laufenden Jahres" +msgstr "Journalbuchungen des laufenden Jahres" #. module: account #: help:account.central.journal,amount_currency:0 @@ -3970,7 +4004,7 @@ msgid "" "Print Report with the currency column if the currency is different then the " "company currency" msgstr "" -"Drucke Auswertung / Report mit der Spalte Währung für den Fall dass sich die " +"Drucke Auswertung/Bericht mit der Spalte Währung für den Fall, dass sich die " "Währung der Rechnung von der Standardwährung des Unternehmens unterscheidet" #. module: account @@ -3979,7 +4013,7 @@ msgid "" "Value of Loss or Gain due to changes in exchange rate when doing multi-" "currency transactions." msgstr "" -"Währungsgewinne oder Verluste im Zuge von Transaktionen mit mehreren " +"Währungsgewinne oder Verluste im Zuge von Geschäftsvorfällen mit mehreren " "Währungen" #. module: account @@ -4071,7 +4105,7 @@ msgstr "" #. module: account #: field:account.chart,period_from:0 msgid "Start period" -msgstr "Beginn der Periode" +msgstr "Periodenbeginn" #. module: account #: field:account.tax,name:0 @@ -4098,23 +4132,23 @@ msgid "" "If the active field is set to False, it will allow you to hide the account " "without removing it." msgstr "" -"Falls dieses Feld aktiviert wird, kann die Anzeige für das Finanzkonto " -"versteckt werden." +"Mit Aktivierung wird die Anzeige für das Finanzkonto verborgen werden. ohne " +"es löschen zu müssen." #. module: account #: view:account.move.line:0 msgid "Posted Journal Items" -msgstr "Verbuchte Buchungen" +msgstr "Quittierte Buchungen" #. module: account #: view:account.tax.template:0 msgid "Search Tax Templates" -msgstr "Suche Steuervorlage" +msgstr "Durchsuche Steuervorlagen" #. module: account #: model:ir.ui.menu,name:account.periodical_processing_journal_entries_validation msgid "Draft Entries" -msgstr "Buchungen im Entwurf" +msgstr "Buchungsentwürfe" #. module: account #: view:account.payment.term.line:0 @@ -4135,7 +4169,7 @@ msgstr "Tastenkombination (Shortcut)" #. module: account #: constraint:account.fiscalyear:0 msgid "Error! The start date of the fiscal year must be before his end date." -msgstr "Fehler! Der Beginn des Jahres muss vor dem Ende liegen." +msgstr "Fehler! Der Beginn des Geschäftsjahres muss vor dem Ende liegen." #. module: account #: view:account.account:0 @@ -4156,7 +4190,7 @@ msgstr "Kontoart" #. module: account #: view:res.partner:0 msgid "Bank Account Owner" -msgstr "Bankkonto Eigentümer" +msgstr "Bankkonto-Eigentümer" #. module: account #: report:account.account.balance:0 @@ -4194,8 +4228,8 @@ msgid "" "You haven't supplied enough argument to compute the initial balance, please " "select a period and journal in the context." msgstr "" -"Sie haben nicht genug Angaben für die Berrechnung des Anfangssaldos gemacht. " -"Wählen Sie bitte eine Periode und ein Journal!" +"Sie haben unzureichende Angaben für die Berechnung des Anfangssaldos " +"gemacht. Wählen Sie bitte eine Periode und ein Journal!" #. module: account #: model:process.transition,note:account.process_transition_supplieranalyticcost0 @@ -4216,12 +4250,12 @@ msgstr "Kassenabschluss" #: view:account.invoice.report:0 #: field:account.invoice.report,due_delay:0 msgid "Avg. Due Delay" -msgstr "Durch. Zahlungsverzug" +msgstr "Durchschnittl. Zahlungsverzug" #. module: account #: view:account.entries.report:0 msgid "Acc.Type" -msgstr "Kontotyp" +msgstr "Kontoart" #. module: account #: field:account.entries.report,month:0 @@ -4235,16 +4269,16 @@ msgid "Month" msgstr "Monat" #. 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 " "some non legal fields or you must unconfirm the journal entry first! \n" "%s" msgstr "" -"Sie dürfen diese Änderung nicht in verbuchten Buchungenmachen! \n" +"Sie dürfen diese Änderung nicht in quittierten Buchungen machen! \n" "Sei können nur einige buchungstechnisch nicht relevante Felder ändern oder " -"Sie müssen die Buchung vorher auf unbestätigt setzen.\n" +"Sie müssen die Buchung vorher auf unquittiert zurücksetzen.\n" "%s" #. module: account @@ -4255,7 +4289,7 @@ msgstr "PayPal Konto" #. module: account #: field:account.invoice.report,uom_name:0 msgid "Reference UoM" -msgstr "Referenz ME" +msgstr "Bezugs-ME" #. module: account #: field:account.account,note:0 @@ -4278,7 +4312,7 @@ msgstr "Fällige Analytische Konten" #: code:addons/account/account.py:184 #, python-format msgid "Balance Sheet (Liability account)" -msgstr "Bilanz (Verbindlichkeit)" +msgstr "Bilanz (Verbindlichkeiten)" #. module: account #: help:account.invoice,date_invoice:0 @@ -4293,10 +4327,10 @@ msgstr "Steuerbuchungen" #. module: account #: field:account.tax,base_code_id:0 msgid "Account Base Code" -msgstr "Steuergrundlage" +msgstr "Bemessungsgrundlage (Steuern & Gebühren)" #. 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 "" @@ -4306,7 +4340,7 @@ msgstr "" #. module: account #: view:res.partner:0 msgid "Customer Accounting Properties" -msgstr "Debitoren Eigenschaften" +msgstr "Debitoren-Eigenschaften" #. module: account #: help:res.company,paypal_account:0 @@ -4381,7 +4415,8 @@ msgstr "Periodische Buchungen" #. module: account #: constraint:account.analytic.line:0 msgid "You can not create analytic line on view account." -msgstr "Für Sichten dürfen keine Analysezeilen erzeugt werden" +msgstr "" +"Sicht-Konten dürfen (auch für) Analysebuchungen nicht bebucht werden." #. module: account #: help:account.move.line,state:0 @@ -4389,8 +4424,8 @@ msgid "" "When new move line is created the state will be 'Draft'.\n" "* When all the payments are done it will be in 'Valid' state." msgstr "" -"Wenn die Buchung erzeugt wird, ist der Status 'Entwurf'.\n" -"* Wenn alle Zahlungen erfolgt sind, wechselt der Status direkt zu 'Gebucht'." +"Wenn die Buchung angelegt wird, ist der Status 'Entwurf'.\n" +"* Wenn alle Zahlungen erfolgt sind, wechselt der Status auf 'Gebucht'." #. module: account #: field:account.journal,view_id:0 @@ -4516,7 +4551,7 @@ msgid "Allow Reconciliation" msgstr "Erlaube Ausgleich" #. 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." @@ -4532,27 +4567,27 @@ msgstr "Auswertungen Analytisches Konto" #. module: account #: report:account.vat.declaration:0 msgid "Based On" -msgstr "Basiert auf" +msgstr "Basierend auf" #. module: account #: field:account.tax,price_include:0 #: field:account.tax.template,price_include:0 msgid "Tax Included in Price" -msgstr "Steuer Inklusive" +msgstr "Preis inklusive Steuer" #. module: account #: model:ir.model,name:account.model_account_analytic_cost_ledger_journal_report msgid "Account Analytic Cost Ledger For Journal Report" -msgstr "Analytisches Journal für Kosten" +msgstr "Sammelkonto der Journale analytischer Kosten" #. module: account #: model:ir.actions.act_window,name:account.action_model_form #: model:ir.ui.menu,name:account.menu_action_model_form msgid "Recurring Models" -msgstr "Wiederkehrende Buchungen" +msgstr "Wiederkehrende Modelle" #. module: account -#: code:addons/account/account_move_line.py:1251 +#: code:addons/account/account_move_line.py:1266 #, python-format msgid "Encoding error" msgstr "Kodierungsfehler" @@ -4564,8 +4599,9 @@ msgstr "4" #. module: account #: view:account.invoice:0 +#: xsl:account.transfer:0 msgid "Change" -msgstr "Ändere Währung" +msgstr "Wechselgeld" #. module: account #: selection:account.journal,type:0 @@ -4580,7 +4616,7 @@ msgstr "Kontoarten Auswahl" #. module: account #: help:account.journal,default_credit_account_id:0 msgid "It acts as a default account for credit amount" -msgstr "Fungiert als Standard Konto für die Haben Buchung in diesem Journal" +msgstr "Fungiert als Standardkonto für die Haben Buchung in diesem Journal" #. module: account #: model:ir.actions.act_window,name:account.action_validate_account_move_line @@ -4588,7 +4624,7 @@ msgstr "Fungiert als Standard Konto für die Haben Buchung in diesem Journal" #: view:validate.account.move:0 #: view:validate.account.move.lines:0 msgid "Post Journal Entries" -msgstr "Buche Journaleinträge" +msgstr "Quittiere Buchungen" #. module: account #: selection:account.invoice,state:0 @@ -4608,14 +4644,14 @@ msgid "Example" msgstr "Beispiel" #. 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" "The real total does not match the computed total." msgstr "" -"Bitte überprüfen Sie den Rechnungspreis !\n" -"Dieser Wert entspricht nicht dem Gesamtbetrag der Rechnung." +"Bitte überprüfen Sie die Rechnungssumme!\n" +"Dieser Wert entspricht nicht dem errechneten Gesamtbetrag der Rechnung." #. module: account #: view:account.tax:0 @@ -4624,17 +4660,17 @@ msgid "Keep empty to use the income account" msgstr "Leer lassen um das Erlöskonto zu nutzen" #. module: account -#: code:addons/account/account.py:3299 +#: code:addons/account/account.py:3316 #, python-format msgid "Purchase Tax %.2f%%" -msgstr "Einkauf Steuer %.2f%%" +msgstr "Vorsteuer %.2f%%" #. module: account #: view:account.subscription.generate:0 #: model:ir.actions.act_window,name:account.action_account_subscription_generate #: model:ir.ui.menu,name:account.menu_generate_subscription msgid "Generate Entries" -msgstr "Wiederkehrende Buchungen (Automatisch)" +msgstr "Buchungen (Automatisch)" #. module: account #: help:account.vat.declaration,chart_tax_id:0 @@ -4646,13 +4682,13 @@ msgstr "Wähle Steuerkontenplan" #: field:account.fiscal.position,account_ids:0 #: field:account.fiscal.position.template,account_ids:0 msgid "Account Mapping" -msgstr "Konten Zuordnung" +msgstr "Kontenzuordnung" #. module: account #: 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 "Kunde" @@ -4668,7 +4704,7 @@ msgid "Cancelled Invoice" msgstr "Stornierte Rechnung" #. 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 " @@ -4707,7 +4743,7 @@ msgid "" "means you won't be able to modify their accounting fields anymore." msgstr "" "Alle Buchungen dieses Journals im Status 'Entwurf' werden gebucht. Hierdurch " -"können Sie dann keine Buchungen mehr vorher abändern." +"können Sie dann keine Buchungen mehr abändern." #. module: account #: model:ir.ui.menu,name:account.menu_finance_configuration @@ -4725,7 +4761,7 @@ msgid "Income Account on Product Template" msgstr "Erlöskonto für Produktvorlage" #. module: account -#: code:addons/account/account.py:3120 +#: code:addons/account/account.py:3137 #, python-format msgid "MISC" msgstr "DIV" @@ -4752,11 +4788,13 @@ msgstr "Neues Geschäftsjahr" #: 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 "Rechnung" @@ -4776,7 +4814,7 @@ msgstr "Schecks" #: view:account.invoice.report:0 #: field:account.invoice.report,user_id:0 msgid "Salesman" -msgstr "Mitarbeiter" +msgstr "Verkäufer" #. module: account #: view:account.invoice.report:0 @@ -4786,12 +4824,12 @@ msgstr "Abgerechnet" #. module: account #: view:account.move:0 msgid "Posted Journal Entries" -msgstr "Verbuchte Buchungen" +msgstr "Quittierte Buchungen" #. module: account #: view:account.use.model:0 msgid "Use Model" -msgstr "Benutze Buchungsvorlage" +msgstr "Benutze Modellvorlage" #. module: account #: help:account.invoice,partner_bank_id:0 @@ -4801,9 +4839,9 @@ msgid "" "Partner bank account number." msgstr "" "Bankkonto für die Zahlung\r\n" -"* Kundenrechnungen und Lieferantengutschriften: Ein Bankkonto des " +"* Bei Kundenrechnungen und Lieferantengutschriften ein Bankkonto des " "Unternehmens\r\n" -"* sonst: ein Bankkonto des Partners" +"* ansonsten ein Bankkonto des Partners" #. module: account #: view:account.state.open:0 @@ -4813,7 +4851,7 @@ msgstr "Nein" #. module: account #: help:account.invoice.tax,tax_code_id:0 msgid "The tax basis of the tax declaration." -msgstr "Die Steuerbasis in der Steuererklärung" +msgstr "Die Steuergrundlage in der Steuererklärung" #. module: account #: view:account.addtmpl.wizard:0 @@ -4824,7 +4862,7 @@ msgstr "Hinzufügen" #: selection:account.invoice,state:0 #: report:account.overdue:0 msgid "Paid" -msgstr "bezahlt" +msgstr "Bezahlt" #. module: account #: view:account.period.close:0 @@ -4839,7 +4877,7 @@ msgstr "Der Bankauszug für den Bankausgleich" #. module: account #: model:process.transition,note:account.process_transition_suppliercustomerinvoice0 msgid "Draft invoices are validated. " -msgstr "Rechnungen im Entwurf wurden gebucht. " +msgstr "Rechnungentwürfe wurden genehmigt. " #. module: account #: constraint:account.account.template:0 @@ -4860,7 +4898,7 @@ msgstr "Eröffnungsperiode" #. module: account #: view:account.move:0 msgid "Journal Entries to Review" -msgstr "Buchungen zu überprüfen" +msgstr "Zu prüfende Buchungen" #. module: account #: view:account.bank.statement:0 @@ -4896,29 +4934,27 @@ msgstr "Steuer Anwendung" #: model:ir.ui.menu,name:account.menu_eaction_account_moves_sale #, python-format msgid "Journal Items" -msgstr "Journal Zeilen" +msgstr "Buchungen" #. 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 "Fehler" @@ -4930,7 +4966,7 @@ msgstr "Fehler" #: field:account.analytic.inverted.balance,date2:0 #: field:account.analytic.journal.report,date2:0 msgid "End of period" -msgstr "Ende Periode" +msgstr "Periodenende" #. module: account #: view:res.partner:0 @@ -4943,8 +4979,8 @@ msgid "" "This report is analysis by partner. It is a PDF report containing one line " "per partner representing the cumulative credit balance." msgstr "" -"Der Report erzeugt Analysen nach Partner. Es handelt sich dabei um einen pdf " -"Report mit jeweils einer Zeile für den Partner" +"Der Report erzeugt Analysen nach Partner. Es handelt sich dabei um einen PDF-" +"Report mit jeweils einer Zeile pro Partner" #. module: account #: model:ir.actions.act_window,help:account.action_account_analytic_journal_tree @@ -5010,7 +5046,7 @@ msgstr "Verkaufsjournal in diesem Monat" #: model:ir.actions.act_window,name:account.action_account_vat_declaration #: model:ir.model,name:account.model_account_vat_declaration msgid "Account Vat Declaration" -msgstr "Auswertung Umsatzsteuer" +msgstr "Umsatzsteuererklärung (-voranmeldung)" #. module: account #: report:account.invoice:0 @@ -5020,15 +5056,15 @@ msgstr "Preis" #. module: account #: view:account.period:0 msgid "To Close" -msgstr "Zu Beendigen" +msgstr "Abzuschließen" #. module: account #: field:account.treasury.report,date:0 msgid "Beginning of Period Date" -msgstr "Beginn Periode" +msgstr "Datum des Periodebeginns" #. 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" @@ -5047,18 +5083,18 @@ msgstr "Vorlagen" #. module: account #: field:account.invoice.tax,name:0 msgid "Tax Description" -msgstr "Steuer Beschreibung" +msgstr "Steuerbezeichnung" #. module: account #: field:account.tax,child_ids:0 msgid "Child Tax Accounts" -msgstr "untergeordnete Steuerkonten" +msgstr "Untergeordnete Steuerkonten" #. 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 "Beginn der Periode sollte kleiner sein als Ende der Periode" +msgstr "Periodenbeginn muss vor dem Periodenende liegen" #. module: account #: help:account.tax,price_include:0 @@ -5067,7 +5103,7 @@ msgid "" "Check this if the price you use on the product and invoices includes this " "tax." msgstr "" -"Aktivieren, wenn der Preis bei Produkt und Rechnung die Steuer beinhaltet" +"Aktivieren, wenn der Preis bei Produkt und Rechnung diese Steuer beinhaltet" #. module: account #: report:account.analytic.account.balance:0 @@ -5077,6 +5113,7 @@ msgstr "Saldo (Anal.)" #. 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 @@ -5120,8 +5157,10 @@ msgstr "Periodentyp" #: 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 "Anzeige Zahlungen" +msgstr "Zahlungen" #. module: account #: view:account.tax:0 @@ -5198,7 +5237,7 @@ msgid "Line 1:" msgstr "Zeile 1:" #. module: account -#: code:addons/account/account.py:1307 +#: code:addons/account/account.py:1315 #, python-format msgid "Integrity Error !" msgstr "Integritätsfehler!" @@ -5216,7 +5255,7 @@ msgstr "Monat" #. module: account #: field:account.partner.reconcile.process,next_partner_id:0 msgid "Next Partner to Reconcile" -msgstr "Nächster Partner für Offene Posten Ausgleich" +msgstr "Nächster Partner zum Ausgleich offener Posten" #. module: account #: field:account.invoice.tax,account_id:0 @@ -5231,6 +5270,7 @@ msgstr "Ergebnis Kontoabstimmung" #. 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 "Bilanz" @@ -5295,7 +5335,7 @@ msgstr "Verkauf" #. module: account #: view:account.financial.report:0 msgid "Report" -msgstr "Report" +msgstr "Bericht" #. module: account #: view:account.analytic.line:0 @@ -5307,6 +5347,7 @@ msgstr "Report" #: 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" @@ -5320,7 +5361,7 @@ msgstr "Betrag" #: model:process.transition,name:account.process_transition_suppliervalidentries0 #: model:process.transition,name:account.process_transition_validentries0 msgid "Validation" -msgstr "Buchung" +msgstr "Prüfung" #. module: account #: field:account.tax,child_depend:0 @@ -5331,7 +5372,7 @@ msgstr "Steuer auf untergeordnete Datensätze" #. module: account #: model:ir.model,name:account.model_account_fiscal_position_tax_template msgid "Template Tax Fiscal Position" -msgstr "Steuer Zuordnung Vorlage" +msgstr "Vorlage zur Steuerzuordnung in der Bilanz" #. module: account #: field:account.journal,update_posted:0 @@ -5356,7 +5397,7 @@ msgstr "Personenkonto" #. module: account #: view:account.bank.statement:0 msgid "Transaction" -msgstr "Transaktion" +msgstr "Geschäftsvorfall" #. module: account #: help:account.tax,base_code_id:0 @@ -5368,7 +5409,7 @@ msgstr "Transaktion" #: help:account.tax.template,ref_tax_code_id:0 #: help:account.tax.template,tax_code_id:0 msgid "Use this code for the VAT declaration." -msgstr "Benutze diese ID für die Ust. - Voranmeldung" +msgstr "Benutze diese ID für die Umsatzsteuervoranmeldung" #. module: account #: field:account.partner.reconcile.process,progress:0 @@ -5383,7 +5424,7 @@ msgstr "Analyt. Buchungen Statistik" #. module: account #: field:wizard.multi.charts.accounts,bank_accounts_id:0 msgid "Cash and Banks" -msgstr "Geld und Banken" +msgstr "Bargeld und Banken" #. module: account #: model:ir.model,name:account.model_account_installer @@ -5393,7 +5434,7 @@ msgstr "account.installer" #. module: account #: field:account.tax.template,include_base_amount:0 msgid "Include in Base Amount" -msgstr "In Basis Betrag inkludieren" +msgstr "In Grundbetrag einbeziehen" #. module: account #: help:account.payment.term.line,days:0 @@ -5401,7 +5442,7 @@ msgid "" "Number of days to add before computation of the day of month.If Date=15/01, " "Number of Days=22, Day of Month=-1, then the due date is 28/02." msgstr "" -"Anzahl der Tage befor das Monatsende berechnet wird. \r\n" +"Anzahl der zu addierenden Tage bevor das Monatsende berechnet wird. \r\n" "Datum = 15.1\r\n" "Anzahl Tage = 22\r\n" "Tag des Monats = -1\r\n" @@ -5492,22 +5533,22 @@ msgid "End of Year Entries Journal" msgstr "Journal Eröffnungsbuchungen" #. 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 !" -msgstr "Fehler Konfiguration !" +msgstr "Konfigurationsfehler!" #. module: account #: field:account.payment.term.line,value_amount:0 msgid "Amount To Pay" -msgstr "Zahlungsbetrag" +msgstr "Zahlbetrag" #. module: account #: help:account.partner.reconcile.process,to_reconcile:0 @@ -5522,12 +5563,12 @@ msgstr "" #. module: account #: view:account.subscription.line:0 msgid "Subscription lines" -msgstr "Automatische Buchungen" +msgstr "Automatische Wiederholungs-Buchungen" #. module: account #: field:account.entries.report,quantity:0 msgid "Products Quantity" -msgstr "Produkt Menge" +msgstr "Produktmenge" #. module: account #: view:account.entries.report:0 @@ -5536,7 +5577,7 @@ msgstr "Produkt Menge" #: selection:account.move,state:0 #: view:account.move.line:0 msgid "Unposted" -msgstr "Nicht gebucht" +msgstr "Nicht quittiert" #. module: account #: view:account.change.currency:0 @@ -5559,7 +5600,7 @@ msgstr "Buchungen" #. module: account #: view:account.invoice:0 msgid "Payment Date" -msgstr "Datum Zahlung" +msgstr "Zahlungsdatum" #. module: account #: view:account.analytic.account:0 @@ -5588,13 +5629,13 @@ msgid "" "Specified Journal does not have any account move entries in draft state for " "this period" msgstr "" -"Spezielles Journal hat keine Buchungspositionen im Entwurfsstadium für diese " -"Periode." +"Angegebenes Journal enthält keine Buchungspositionen im Entwurfsstadium für " +"diese Periode." #. module: account #: model:ir.actions.act_window,name:account.action_view_move_line msgid "Lines to reconcile" -msgstr "Auszugleichende Buchungen" +msgstr "Zu begleichende Buchungen" #. module: account #: report:account.analytic.account.balance:0 @@ -5604,6 +5645,8 @@ msgstr "Auszugleichende Buchungen" #: 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 @@ -5637,9 +5680,9 @@ msgid "" "Number of partial amounts that can be combined to find a balance point can " "be chosen as the power of the automatic reconciliation" msgstr "" -"Anzahl der maximalen Teilbeträge die für einen gegenseitigen Ausgleich von " -"Rechnungen und Zahlungen kombiniert werden dürfen, um automatisch eine " -"Saldenausgleich für das ausgewählte Konto herbeizuführen." +"Anzahl der gleichen Teilbeträge die, in der Summe, zum Ausgleich von " +"Rechnungen aufgebracht werden müssen, um die Stärke des automatischen " +"Saldenausgleichs für das ausgewählte Konto zu nutzen." #. module: account #: help:account.payment.term.line,sequence:0 @@ -5647,14 +5690,14 @@ msgid "" "The sequence field is used to order the payment term lines from the lowest " "sequences to the higher ones" msgstr "" -"Die Sequenz Feld wird benutzt, um in diesem Fall die Zahlungsbedingungen von " -"der geringsten Sequenz zu höheren Sequenzen sukzessiv durchzuführen." +"Die Sequenz Feld wird benutzt, um die Zahlungsbedingungen von der geringsten " +"Sequenz- bzw. Folgennummer beginnend zu sortieren." #. module: account #: view:account.fiscal.position.template:0 #: field:account.fiscal.position.template,name:0 msgid "Fiscal Position Template" -msgstr "Steuerzuordnung Vorlage" +msgstr "Bilanz-Vorlage" #. module: account #: view:account.analytic.chart:0 @@ -5672,10 +5715,10 @@ msgid "" "finalize your end of year results definitive " msgstr "" "Wenn keine weiteren Buchungen für dieses Geschäftsjahr generiert werden " -"sollen können Sie das Jahr abschliessen. Hierdurch werden alle noch offenen " -"Perioden beendet, wodurch weitere Buchungen in diesem Jahr nicht mehr " -"möglich sind. Beenden Sie das Jahr erst, wenn Sie definitv keine weiteren " -"Buchungen mehr tätigen müssen. " +"sollen, können Sie das Jahr abschliessen. Hierdurch werden alle noch offenen " +"Perioden beendet. Weitere Buchungen in diesem Jahr sind nicht mehr möglich. " +"Beenden Sie das Jahr erst, wenn Sie definitv keine weiteren Buchungen mehr " +"tätigen müssen. " #. module: account #: field:account.central.journal,amount_currency:0 @@ -5704,18 +5747,19 @@ msgid "" "No fiscal year defined for this date !\n" "Please create one from the configuration of the accounting menu." msgstr "" -"Es gibt kein Geschäftsjahr für dieses Datum !\n" +"Es ist kein Geschäftsjahr für dieses Datum angelegt!\n" "Bitte legen Sie ein Geschäftsjahr im Konfigurationsmenü des Finanzbereiches " "an." #. module: account #: view:account.move.line.reconcile:0 msgid "Reconcile With Write-Off" -msgstr "Ausgleichen mit Abschreibung" +msgstr "Ausgleichen durch Abschreibung" #. module: account #: selection:account.payment.term.line,value:0 #: selection:account.tax,type:0 +#: selection:account.tax.template,type:0 msgid "Fixed Amount" msgstr "Fester Betrag" @@ -5752,13 +5796,14 @@ msgid "Generate Opening Entries" msgstr "Erstelle Vortragsbuchungen" #. module: account -#: code:addons/account/account_move_line.py:759 +#: code:addons/account/account_move_line.py:775 #, python-format msgid "Already Reconciled!" msgstr "Bereits ausgeglichen" #. module: account #: help:account.tax,type:0 +#: help:account.tax.template,type:0 msgid "The computation method for the tax amount." msgstr "Die Berechnungsmethode für die Höhe der Steuern." @@ -5785,14 +5830,14 @@ msgid "Child Accounts" msgstr "untergeordnete Konten" #. 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 "Buchungsnummer (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 "Abschreibung" @@ -5812,7 +5857,7 @@ msgstr "Erlöse" #: 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 "Lieferant" @@ -5842,7 +5887,7 @@ msgid "Account n°" msgstr "Kontonummer" #. module: account -#: code:addons/account/account_invoice.py:88 +#: code:addons/account/account_invoice.py:91 #, python-format msgid "Free Reference" msgstr "Freie Referenz" @@ -5857,7 +5902,9 @@ msgstr "Berechnungsform" #: 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 "Debitoren und Kreditoren" @@ -5876,12 +5923,12 @@ msgstr "Status Offen" #. module: account #: report:account.analytic.account.quantity_cost_ledger:0 msgid "Max Qty:" -msgstr "Max. Menge" +msgstr "Max. Menge:" #. module: account #: view:account.invoice.refund:0 msgid "Refund Invoice" -msgstr "Gutschrift Rechnung" +msgstr "Rechnungsgutschrift" #. module: account #: field:account.invoice,address_invoice_id:0 @@ -5895,10 +5942,10 @@ msgid "" "document shows your debit and credit taking in consideration some criteria " "you can choose by using the search tool." msgstr "" -"Durch diese Ansicht können Sie multidimensionale Ansichten auf Ihre " -"Finanzkonten vornehmen. Diese Perspektive zeigt Ihnen Ihre Salden und " -"Verkehrszahlen sowie diverse andere Kriterien und Werte die beim Suchdialog " -"gewählt werden können." +"Durch diese Ansicht erhalten Sie mehrdimensionale Ansichten auf Ihre " +"Finanzkonten. Diese Perspektive zeigt Ihnen Ihre Salden und Verkehrszahlen " +"sowie diverse andere Kriterien und Werte die im Auswahldialog gewählt werden " +"können." #. module: account #: model:ir.actions.act_window,help:account.action_tax_code_list @@ -5907,9 +5954,9 @@ msgid "" "OpenERP allows you to define the tax structure and manage it from this menu. " "You can define both numeric and alphanumeric tax codes." msgstr "" -"Die Definition der Umsatzsteuern richtet sich nach der im jeweiligen Land " -"gültigen Regelung für die Abgabe von Steuererklärungen OpenERP ermöglicht " -"Ihnen dabei die Struktur der Steuern zu definieren und über dieses Menü zu " +"Die Definition der Steuern richtet sich nach der im jeweiligen Land gültigen " +"Regelung für die Abgabe von Steuererklärungen. OpenERP ermöglicht Ihnen " +"dabei die Struktur der Steuern zu definieren und über dieses Menü zu " "verwalten. Sie können sowohl numerische als auch alphanumerische " "Zeichenfolgen für die Definition verwenden." @@ -5931,8 +5978,8 @@ msgid "" "that you should have your last line with the type 'Balance' to ensure that " "the whole amount will be threated." msgstr "" -"Wählen Sie hier die Berechnungsart dieser Zeile Ihrer Zahlungsbedingung. Sie " -"sollten dabei mindestens eine letzte Zeile mit der Berechnungsart " +"Wählen Sie hier die Berechnungsart dieser Position Ihrer Zahlungsbedingung. " +"Sie sollten dabei mindestens eine letzte Zeile mit der Berechnungsart " "'Saldoausgleich' definiert haben." #. module: account @@ -5947,7 +5994,7 @@ msgstr "Erzwinge Periode" #: view:account.invoice.report:0 #: field:account.invoice.report,nbr:0 msgid "# of Lines" -msgstr "# Positionen" +msgstr "Anz. Positionen" #. module: account #: field:account.aged.trial.balance,filter:0 @@ -5969,10 +6016,10 @@ msgid "Filter by" msgstr "Filter durch" #. 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 "Sie haben einen falschen Ausdruck \"%(...)s\" in Ihrem Model !" +msgstr "Sie haben einen falschen Ausdruck \"%(...)s\" in Ihrem Modell!" #. module: account #: field:account.bank.statement.line,date:0 @@ -5980,8 +6027,8 @@ msgid "Entry Date" msgstr "Buchungsdatum" #. 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 "Sie können kein inaktives Konto verwenden!" @@ -6010,7 +6057,7 @@ msgstr "Die aktuelle Währung ist nicht richtig konfiguriert!" #: field:account.tax,account_collected_id:0 #: field:account.tax.template,account_collected_id:0 msgid "Invoice Tax Account" -msgstr "Rechnung Steuerkonto" +msgstr "Konto der Rechnungssteuer" #. module: account #: model:ir.actions.act_window,name:account.action_account_general_journal @@ -6024,12 +6071,12 @@ msgid "Number of Days" msgstr "Anzahl Tage" #. 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 !" -msgstr "Fehlerhafte Aktion" +msgstr "Ungültige Aktion!" #. module: account #: code:addons/account/wizard/account_move_journal.py:102 @@ -6045,13 +6092,13 @@ msgstr "Überprüfen Sie Ihre Finanzjournale" #. module: account #: help:account.tax,name:0 msgid "This name will be displayed on reports" -msgstr "Dieser Name wird in Reports angezeigt" +msgstr "Dieser Name wird in Berichten angezeigt" #. module: account #: report:account.analytic.account.cost_ledger:0 #: report:account.analytic.account.quantity_cost_ledger:0 msgid "Printing date" -msgstr "Datum Druck" +msgstr "Druckdatum" #. module: account #: selection:account.account.type,close_method:0 @@ -6079,7 +6126,7 @@ msgstr "Fremdwährung Saldo" #. module: account #: field:account.journal.period,name:0 msgid "Journal-Period Name" -msgstr "Journal Periode Bezeichnung" +msgstr "Bezeichnung der Journal-Periode" #. module: account #: field:account.invoice.tax,factor_base:0 @@ -6087,7 +6134,7 @@ msgid "Multipication factor for Base code" msgstr "Multiplikationsfaktor für Steuergrundbetrag" #. 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 "nicht implementiert" @@ -6105,27 +6152,29 @@ msgid "" "Forma' state!" msgstr "" "Ausgewählte Rechnung kann nicht bestätigt werden bevor Sie nicht im Status " -"'Entwurf' oder 'Pro Forma' ist !" +"'Entwurf' oder 'Proforma' ist !" #. module: account #: view:account.subscription:0 msgid "Running Subscription" -msgstr "aktuelle Abonnements" +msgstr "Laufende Abonnements" #. module: account #: report:account.invoice:0 msgid "Fiscal Position Remark :" -msgstr "Hinweis Steuerzuordnung" +msgstr "Hinweis zum Finanzbericht:" #. module: account #: view:analytic.entries.report:0 #: model:ir.actions.act_window,name:account.action_analytic_entries_report #: model:ir.ui.menu,name:account.menu_action_analytic_entries_report msgid "Analytic Entries Analysis" -msgstr "Statistik Analysebuchungen" +msgstr "Statistik der Analysebuchungen" #. 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 "Vergangenheit" @@ -6137,7 +6186,7 @@ msgid "" "\"View\"! " msgstr "" "Konfigurationsfehler!\n" -"Das übergeordnete Konto muss den Typ View haben. " +"Das übergeordnete Konto muss den Typ Sicht haben. " #. module: account #: help:res.partner.bank,journal_id:0 @@ -6156,7 +6205,7 @@ msgstr "Buchung Analysekonto" #: view:res.company:0 #: field:res.company,overdue_msg:0 msgid "Overdue Payments Message" -msgstr "Text Zahlungserinnerung" +msgstr "Nachricht der Zahlungserinnerung" #. module: account #: model:ir.actions.act_window,help:account.action_account_moves_all_a @@ -6194,13 +6243,13 @@ msgid "" "(i.e. paid) in the system." msgstr "" "Sobald der Zahlungsausgleich erfolgt ist, wechselt der Status der Rechnung " -"zu 'Erledigt' ( d.h. Bezahlt)." +"zu 'Erledigt' (d. h. Bezahlt)." #. module: account #: view:account.chart.template:0 #: field:account.chart.template,account_root_id:0 msgid "Root Account" -msgstr "Oberstes Konto" +msgstr "Stammkonto" #. module: account #: field:res.partner,last_reconciliation_date:0 @@ -6215,7 +6264,7 @@ msgstr "Analytische Buchung" #. module: account #: field:product.template,taxes_id:0 msgid "Customer Taxes" -msgstr "Produkt Steuern" +msgstr "Umsatzsteuern" #. module: account #: help:account.model,name:0 @@ -6236,7 +6285,7 @@ msgstr "Erstelle ein Konto auf Basis der Vorlage" #: view:account.account.type:0 #: view:account.tax.code:0 msgid "Reporting Configuration" -msgstr "Konfiguration Auswertungen" +msgstr "Berichtseinstellungen" #. module: account #: field:account.tax,type:0 @@ -6248,7 +6297,7 @@ msgstr "Steuerart" #: model:ir.actions.act_window,name:account.action_account_template_form #: model:ir.ui.menu,name:account.menu_action_account_template_form msgid "Account Templates" -msgstr "Konto Vorlagen" +msgstr "Konto-Vorlagen" #. module: account #: help:wizard.multi.charts.accounts,complete_tax_set:0 @@ -6258,14 +6307,14 @@ msgid "" "choice assumes that the set of tax defined for the chosen template is " "complete" msgstr "" -"Diese Auswähl erlaubt Ihnen die Einkaufs und Verkaufssteuern zu definieren " +"Diese Auswähl erlaubt Ihnen die Einkaufs- und Verkaufssteuern zu definieren " "oder aus einer Liste auszuwählen. Letzteres setzt voraus, dass die Vorlage " -"komplett ist." +"vollständig ist." #. module: account #: report:account.vat.declaration:0 msgid "Tax Statement" -msgstr "Auswertung Steueranmeldung" +msgstr "Steueranmeldung" #. module: account #: model:ir.model,name:account.model_res_company @@ -6289,13 +6338,13 @@ msgid "" "You can not remove/desactivate an account which is set on a customer or " "supplier." msgstr "" -"Sie können dieses Konto nicht deaktivieren oder löschen, da es bei einem " -"Kunden oder Lieferanten verwendet wird." +"Sie können dieses Konto nicht deaktivieren oder löschen, da es einem Kunden " +"oder Lieferanten zugeordnet ist." #. module: account #: help:account.fiscalyear.close.state,fy_id:0 msgid "Select a fiscal year to close" -msgstr "Wähle Geschäftsjahr für Beendigung" +msgstr "Wähle abzuschließendes Geschäftsjahr" #. module: account #: help:account.chart.template,tax_template_ids:0 @@ -6310,7 +6359,7 @@ msgstr "IntraCom" #. module: account #: view:account.move.line.reconcile.writeoff:0 msgid "Information addendum" -msgstr "Informationsbeilage" +msgstr "Informationsanhang" #. module: account #: field:account.chart,fiscalyear:0 @@ -6320,7 +6369,7 @@ msgstr "Geschäftsjahr" #. module: account #: view:account.move.reconcile:0 msgid "Partial Reconcile Entries" -msgstr "Teilausgleich Rechnungen" +msgstr "Rechnungen mit Teilzahlungen" #. module: account #: view:account.addtmpl.wizard:0 @@ -6375,7 +6424,7 @@ msgstr "Debitor" #. module: account #: constraint:account.move.line:0 msgid "Company must be the same for its related account and period." -msgstr "Company must be the same for its related account and period." +msgstr "Das Unternehmen muss für Konto wie auch Periode das gleiche sein." #. module: account #: view:account.invoice:0 @@ -6400,15 +6449,16 @@ msgstr "Aktuell" #. module: account #: view:account.bank.statement:0 msgid "CashBox" -msgstr "Kassenbuch" +msgstr "Barkasse" #. module: account #: model:account.account.type,name:account.account_type_cash_equity msgid "Equity" -msgstr "Eigenkapital" +msgstr "Buchwert" #. module: account #: selection:account.tax,type:0 +#: selection:account.tax.template,type:0 msgid "Percentage" msgstr "Prozentsatz" @@ -6420,13 +6470,13 @@ msgstr "Journal & Partner" #. module: account #: field:account.automatic.reconcile,power:0 msgid "Power" -msgstr "Power" +msgstr "Stärke" #. module: account -#: code:addons/account/account.py:3368 +#: code:addons/account/account.py:3385 #, python-format msgid "Cannot generate an unused journal code." -msgstr "Kann keine nicht verwendeten Journal Code erzeugen." +msgstr "Kann keinen nicht verwendeten Journal Code erzeugen." #. module: account #: view:project.account.analytic.line:0 @@ -6445,8 +6495,8 @@ msgid "" "Indicates if the amount of tax must be included in the base amount for the " "computation of the next taxes" msgstr "" -"Anzeige, inwieweit diese Steuer im Steuergrundbetrag für die weitere " -"Berechnung inbegriffen ist, oder nicht." +"Anzeige, inwieweit diese Steuer im Grundbetrag für die weitere Berechnung " +"enthalten sein muß, oder nicht." #. module: account #: model:ir.actions.act_window,name:account.action_account_partner_reconcile @@ -6462,12 +6512,12 @@ msgstr "Umgekehrter Saldo (Anal.)" #. module: account #: field:account.tax.template,applicable_type:0 msgid "Applicable Type" -msgstr "Anwendb. Typ" +msgstr "Anwendbare Art" #. module: account #: field:account.invoice.line,invoice_id:0 msgid "Invoice Reference" -msgstr "Rechnungsreferenz" +msgstr "Rechnungsbezug" #. module: account #: help:account.tax.template,sequence:0 @@ -6476,16 +6526,16 @@ msgid "" "higher ones. The order is important if you have a tax that has several tax " "children. In this case, the evaluation order is important." msgstr "" -"Die Sequenz ist für die Sortierung einzelner Steuerpositionen. Die Sequenz " -"ist wichtig, wenn es mehrere untergeordnete Steuern zu einer " -"übergeordetneten Obersteuer gibt." +"Die Sequenz dient der Sortierung einzelner Steuerpositionen. Die Sequenz ist " +"wichtig, wenn mehrere untergeordnete Steuern zu einer übergeordneten Steuer " +"vorliegen." #. module: account #: selection:account.account,type:0 #: selection:account.account.template,type:0 #: view:account.journal:0 msgid "Liquidity" -msgstr "Finanzmittel" +msgstr "Liquidität" #. module: account #: model:ir.actions.act_window,name:account.action_account_analytic_journal_open_form @@ -6518,7 +6568,7 @@ msgid "" "the tool search to analyse information about analytic entries generated in " "the system." msgstr "" -"Durch dieses Ansicht können Sie ihre unterschiedlichen analytischen Konten " +"Durch diese Ansicht können Sie ihre unterschiedlichen analytischen Konten " "unter Berücksichtigung Ihres individullen Informationsbedarfs auswerten. " "Benutzen Sie dieses Werkzeug für die Auswertung, der von Ihnen gebuchten " "Beträge auf Analysekonten." @@ -6526,7 +6576,7 @@ msgstr "" #. module: account #: sql_constraint:account.journal:0 msgid "The name of the journal must be unique per company !" -msgstr "Die Journalbezeichnung sollte pro Unternehmen eindeutig sein." +msgstr "Die Journalbezeichnung muss pro Unternehmen eindeutig sein." #. module: account #: field:account.account.template,nocreate:0 @@ -6547,7 +6597,7 @@ msgstr "" #: code:addons/account/wizard/account_report_aged_partner_balance.py:58 #, python-format msgid "Enter a Start date !" -msgstr "Geben Sie ein Startdatum ein !" +msgstr "Geben Sie ein Startdatum ein!" #. module: account #: report:account.invoice:0 @@ -6555,7 +6605,7 @@ msgstr "Geben Sie ein Startdatum ein !" #: selection:account.invoice.report,type:0 #: selection:report.invoice.created,type:0 msgid "Supplier Refund" -msgstr "Lieferanten Gutschrift" +msgstr "Lieferantengutschrift" #. module: account #: field:account.bank.statement,move_line_ids:0 @@ -6603,7 +6653,7 @@ msgstr " Bewertung: Saldo" #. module: account #: field:account.invoice.line,uos_id:0 msgid "Unit of Measure" -msgstr "ME" +msgstr "Mengeneinheit" #. module: account #: constraint:account.payment.term.line:0 @@ -6612,7 +6662,7 @@ msgid "" "2% " msgstr "" "Prozentwert für eine Position der Zahlungsbedingung muss zwischen 0 und 1 " -"sein, z.B. 0.02 für 2% " +"sein, z. B. 0.02 für 2% " #. module: account #: field:account.installer,has_default_company:0 @@ -6655,7 +6705,7 @@ msgstr "Steuergrundbetrag" #. module: account #: field:account.model,name:0 msgid "Model Name" -msgstr "Buchungsvorlage Bezeichnung" +msgstr "Modell-Bezeichnung" #. module: account #: field:account.chart.template,property_account_expense_categ:0 @@ -6698,8 +6748,8 @@ msgid "You can not remove an account containing journal items." msgstr "Sie dürfen kein Konto löschen, das Buchungen beinhaltet" #. 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 "Buchungen: " @@ -6715,7 +6765,7 @@ msgid "Currency of the related account journal." msgstr "Währung des verwendten Buchungsjournals" #. 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 "Konnte keine überbetriebliche Buchung erzeugen" @@ -6731,14 +6781,14 @@ msgid "" "account. From this view, you can create and manage the account types you " "need for your company." msgstr "" -"Über Kontoarten wird gesteuert mit welcher Logik in den verschiedenen " +"Über Kontoarten wird gesteuert, mit welcher Logik in den verschiedenen " "Journalen gebucht wird. Die Methode für die Abgrenzung beim Jahreswechsel " "steuert dabei den Prozess der Buchung beim Jahresabschluss. Die GuV & Bilanz " "Positionen steuern den Ausweis für die Auswertungen Bilanz sowie Gewinn und " "Verlust. Zum Beispiel könnte eine Kontoart entweder mit einem Konto aus dem " "Anlagevermögen, einem Aufwands- oder einem Kreditorenkonto verbunden sein. " "Über diese Ansicht können Sie die in Ihrem Unternehmen benötigten Kontoarten " -"exakt definieren." +"festlegen." #. module: account #: selection:account.account.type,report_type:0 @@ -6765,16 +6815,16 @@ msgstr "Status ist Entwurf" #. 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 "Gesamt Soll" #. 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 "Eintrag \"%s\" ist ungültig !" +msgstr "Eintrag \"%s\" ist ungültig!" #. module: account #: report:account.invoice:0 @@ -6788,7 +6838,7 @@ msgid "" "taxes and journals according to the selected template" msgstr "" "Automatische Konfiguration Ihres Kontenplans, Bankkontos, Steuern und " -"Journaldefinition resultierend aus der gewählten Vorlage," +"Journaldefinition gemäß der gewählten Vorlage," #. module: account #: help:res.partner,property_account_receivable:0 @@ -6827,12 +6877,12 @@ msgstr "" #. module: account #: view:account.fiscalyear.close:0 msgid "Create" -msgstr "Erstellen" +msgstr "Anlegen" #. module: account #: model:process.transition.action,name:account.process_transition_action_createentries0 msgid "Create entry" -msgstr "Erzeuge Buchung" +msgstr "Buchung anlegen" #. module: account #: selection:account.account.type,report_type:0 @@ -6845,49 +6895,50 @@ msgstr "Gewinn & Verlust ( Aufwandskonto )" #: 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 #: code:addons/account/wizard/account_use_model.py:44 #, python-format msgid "Error !" -msgstr "Fehler !" +msgstr "Fehler!" #. module: account #: field:account.financial.report,style_overwrite:0 msgid "Financial Report Style" -msgstr "Finanz Report Stiel" +msgstr "Stil des Finanzberichts" #. module: account #: selection:account.financial.report,sign:0 msgid "Preserve balance sign" -msgstr "Erhalte Saldo Vorzeichen" +msgstr "Erhalte Saldo-Vorzeichen" #. module: account #: view:account.vat.declaration:0 #: model:ir.actions.report.xml,name:account.account_vat_declaration #: model:ir.ui.menu,name:account.menu_account_vat_declaration msgid "Taxes Report" -msgstr "Umsatzsteuer" +msgstr "Umsatzsteuer-Anmeldung" #. module: account #: selection:account.journal.period,state:0 @@ -6895,16 +6946,16 @@ msgid "Printed" msgstr "Gedruckt" #. 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 "Fehler :" +msgstr "Fehler:" #. module: account #: view:account.analytic.line:0 msgid "Project line" -msgstr "Budget Projekt" +msgstr "Projektbudget" #. module: account #: field:account.invoice.tax,manual:0 @@ -6921,11 +6972,11 @@ msgid "" "the amounts correspond." msgstr "" "Damit Ihre Rechnung als bezahlt gekennzeichnet werden kann, müssen Sie einen " -"Ausgleich durch eine Gegenbuchung herbeiführen, welches üblicherweise eine " -"Zahlung ist. Durch die Funktion des automatisierten Ausgleichs offener " -"Posten, nutzen Sie die OpenERP Automatik für die Suche und den Ausgleich von " -"zusammengehörigen Rechnungen und Zahlungen über eine Prüfung " -"zuammenpassender Beträge." +"Ausgleich durch eine Gegenbuchung herbeiführen. Üblicherweise ist dies eine " +"Zahlung. Durch die Funktion des automatisierten Ausgleichs offener Posten, " +"nutzen Sie die Automatik von OpenERP den Ausgleich von zusammengehörigen " +"Rechnungen und Zahlungen über eine Suche zuammenpassender Beträge " +"durchzuführen." #. module: account #: view:account.move:0 @@ -6941,9 +6992,9 @@ msgid "" "row to display the amount of debit/credit/balance that precedes the filter " "you've set." msgstr "" -"Wenn ein Tages oder Periodenfilter gewählt wird, können sie mit diesem " -"Kennzeichen steuern, ob eine Zeile mit Soll/Haben/Saldo ausgegeben wird, die " -"die Buchungen davor summiert." +"Wenn ein Filter nach Datum oder Periode gewählt wird, können sie mit diesem " +"Kennzeichen steuern, ob eine Zeile mit Soll/Haben/Saldo der Ausgabe " +"vorangestellt wird." #. module: account #: view:account.bank.statement:0 @@ -6952,7 +7003,7 @@ msgstr "" #: model:ir.ui.menu,name:account.menu_action_move_journal_line_form #: model:ir.ui.menu,name:account.menu_finance_entries msgid "Journal Entries" -msgstr "Buchungsbelege" +msgstr "Buchungen" #. module: account #: help:account.partner.ledger,page_split:0 @@ -6960,7 +7011,7 @@ msgid "Display Ledger Report with One partner per page" msgstr "Kontoauszug mit einem Partner pro Seite" #. 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 " @@ -6987,9 +7038,9 @@ msgid "" "This report is an analysis done by a partner. It is a PDF report containing " "one line per partner representing the cumulative credit balance" msgstr "" -"Diese Auswertung analysiert die Salden auf Partnerskonten. Der Bericht " -"beinhaltet eine PDF Auswertung mit je einer zusammenfassenden " -"Auswertungszeile je Partner" +"Diese Auswertung analysiert die Salden auf Partnerskonten. Der PDF-Bericht " +"beinhaltet eine Auswertung mit je einer zusammenfassenden Auswertungszeile " +"je Partner" #. module: account #: code:addons/account/wizard/account_validate_account_move.py:61 @@ -7027,7 +7078,7 @@ msgid "" "Error: The default UOM and the purchase UOM must be in the same category." msgstr "" "Fehler: Die Standard Mengeneinheit (ME) sowie die Mengeneinheit (ME) bei der " -"Beschaffung muss in derselben Kategorie sein." +"Beschaffung müssen derselben Kategorie angehören." #. module: account #: view:account.journal.select:0 @@ -7045,12 +7096,12 @@ msgstr "Anfangssaldo" #. module: account #: model:ir.model,name:account.model_account_move_reconcile msgid "Account Reconciliation" -msgstr "Konto OP Ausgleich" +msgstr "Konto OP-Ausgleich" #. module: account #: model:ir.model,name:account.model_account_fiscal_position_tax msgid "Taxes Fiscal Position" -msgstr "Steuern Zuordnung" +msgstr "Steuerzuordnung" #. module: account #: report:account.general.ledger:0 @@ -7066,7 +7117,7 @@ msgstr "Umsätze nach Konten und Perioden" #. module: account #: model:process.transition,note:account.process_transition_paymentorderbank0 msgid "The payment order is sent to the bank." -msgstr "Der Zahlungsauftrag wurde an Bank versendet." +msgstr "Die Zahlungsanweisung wurde der Bank zugesendet." #. module: account #: view:account.balance.report:0 @@ -7127,7 +7178,7 @@ msgid "Total:" msgstr "Summe:" #. 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 " @@ -7142,11 +7193,11 @@ msgstr "" "Sie können Jahr, Monat und Datum für die Anwendung dieser Buchungsvorlage " "als Buchungstext durch folgende Platzhalter definieren:\n" "\n" -"%(year)s: Spezifikation für das Jahr \n" -"%(month)s: Spezifikation für den Monat \n" -"%(date)s: Spezifikation für das Datum\n" +"%(year)s: Festlegung des Jahres \n" +"%(month)s: Festlegung des Monats \n" +"%(date)s: Festlegung des heutigen Datums\n" "\n" -"z.B. Meine Buchungsvorlage am %(date)s" +"z. B. Meine Buchungsvorlage am %(date)s" #. module: account #: help:report.invoice.created,origin:0 @@ -7157,7 +7208,7 @@ msgstr "Belegreferenz für diese Rechnung" #: field:account.tax.code,child_ids:0 #: field:account.tax.code.template,child_ids:0 msgid "Child Codes" -msgstr "untergeordnete Codes" +msgstr "untergeordnete Schlüssel" #. module: account #: view:account.tax.template:0 @@ -7165,7 +7216,7 @@ msgid "Taxes used in Sales" msgstr "Steuern für Verkäufe" #. 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 !" @@ -7210,15 +7261,16 @@ msgid "" "automatically based on these data." msgstr "" "Konfigurieren Sie ie Bankkonten des Unternehmens und wählen Sie diejenigen, " -"die in den Report Fußzeilen erscheinen sollen.\r\n" +"die in Fußzeilen des Berichts erscheinen sollen.\r\n" "Sie können die Bankkonten in der Liste sortieren. Wenn Sie die Buchhaltung " -"von OpenERP einsetzen werden automatisch Journale und Konten generiert." +"von OpenERP einsetzen werden aus diesen Angaben automatisch Journale und " +"Konten generiert." #. module: account #: model:process.transition,note:account.process_transition_invoicemanually0 msgid "A statement with manual entries becomes a draft statement." msgstr "" -"Ein Bankauszug mit händischen Buchungen erhält zunächst den Status Entwurf." +"Ein Bankauszug mit händischen Buchungen erhält zunächst den Status 'Entwurf'." #. module: account #: view:account.aged.trial.balance:0 @@ -7234,21 +7286,21 @@ msgstr "" "Ihrer Debitoren aufgeteilt in zeitliche Intervalle. Wenn Sie diesen Bericht " "öffnen, fragt OpenERP nach dem Unternehmen, der Periode und dem " "Zeitintervall für die Auswertung (in Tagen). OpenERP berechnet dann eine " -"Tabelle mit Kundensalden nach Perioden. Wenn Sie eine Intervalle von 30 " -"Tagen eingeben, erzeugt OpenERP eine Auswertung der Salden für den letzten " -"Monat, vorletzten Monat usw. " +"Tabelle mit Kundensalden nach Perioden. Wenn Sie ein Intervalle von 30 Tagen " +"eingeben, erzeugt OpenERP eine Auswertung der Salden für den letzten Monat, " +"vorletzten Monat usw. " #. module: account #: field:account.invoice,origin:0 #: field:report.invoice.created,origin:0 msgid "Source Document" -msgstr "Herkunftsverweis" +msgstr "Herkunftsdokument" #. 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 "Sie können keine verbuchten Buchungen löschen \"%s\"!" +msgstr "Sie können keine quittierten Buchungen löschen \"%s\"!" #. module: account #: selection:account.partner.ledger,filter:0 @@ -7266,7 +7318,7 @@ msgstr "Bankauszug Abstimmung" #. module: account #: model:ir.model,name:account.model_accounting_report msgid "Accounting Report" -msgstr "Report Finanzen" +msgstr "Finanzbericht" #. module: account #: report:account.invoice:0 @@ -7277,8 +7329,8 @@ msgstr "Steuern:" #: help:account.tax,amount:0 msgid "For taxes of type percentage, enter % ratio between 0-1." msgstr "" -"Für Steuern mit dem Typ Prozent, geben Sie einen Wert zwischen 0 - 1 ein, " -"z.B. 0.19 für 19%" +"Für Steuern mit dem Typ Prozent, geben Sie einen Wert zwischen 0 - 1 ein, z. " +"B. 0.19 für 19%" #. module: account #: model:ir.actions.act_window,help:account.action_subscription_form @@ -7289,7 +7341,7 @@ msgid "" "you can create such entries to automate the postings in the system." msgstr "" "Eine wiederkehrende Buchung ist ein Geschäftsvorfall, der in regelmässigen " -"wiederkehrenden Zeitabständen zu buchen ist, z.B. die Buchungen aus " +"wiederkehrenden Zeitabständen zu buchen ist, z. B. die Buchungen aus " "bestimmten Verträgen mit Kunden oder Lieferanten, Mietaufwendungen oder " "Erträge aus Abonnements. Durch die Definition wiederkehrender Buchungen " "können Sie dafür sorgen, dass diese Geschäftsvorfälle automatisch gebucht " @@ -7298,7 +7350,7 @@ msgstr "" #. module: account #: model:ir.actions.act_window,name:account.action_account_report_tree_hierarchy msgid "Financial Reports Hierarchy" -msgstr "Hierarchische Finanz Reports" +msgstr "Hierarchie der Finanzberichte" #. module: account #: field:account.entries.report,product_uom_id:0 @@ -7329,8 +7381,8 @@ msgid "" "This date will be used as the invoice date for Refund Invoice and Period " "will be chosen accordingly!" msgstr "" -"Dieses Datum wird genutzt als Rechnungsdatum für eine Gutschrift. Die " -"Buchungsperiode wird dabei gleichlautend eingetragen." +"Dieses Datum wird als Belegdatum für eine Gutschrift. Die Buchungsperiode " +"wird dabei passend gewählt." #. module: account #: model:ir.actions.act_window,name:account.act_account_invoice_partner_relation @@ -7352,7 +7404,7 @@ msgstr "Positionen" #. module: account #: view:account.tax.template:0 msgid "Account Tax Template" -msgstr "Umsatzsteuer Vorlage" +msgstr "Umsatzsteuer-Vorlage" #. module: account #: view:account.journal.select:0 @@ -7365,8 +7417,8 @@ msgid "Are you sure you want to open this invoice ?" msgstr "Sind Sie sicher, daß Sie diese Rechnung öffnen wollen?" #. 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 " @@ -7378,10 +7430,10 @@ msgstr "" #. module: account #: field:account.chart.template,property_account_expense_opening:0 msgid "Opening Entries Expense Account" -msgstr "Eröffnungsbilanz Buchungen Aufwandskonto" +msgstr "Eröffnungsbuchungen des Aufwandskontos" #. module: account -#: code:addons/account/account_move_line.py:999 +#: code:addons/account/account_move_line.py:1014 #, python-format msgid "Accounting Entries" msgstr "Buchungen" @@ -7389,7 +7441,7 @@ msgstr "Buchungen" #. module: account #: field:account.account.template,parent_id:0 msgid "Parent Account Template" -msgstr "Basiskonto Vorlage" +msgstr "Stammkonto Vorlage" #. module: account #: model:ir.actions.act_window,name:account.action_account_configuration_installer @@ -7421,7 +7473,7 @@ msgstr "" #. module: account #: view:account.entries.report:0 msgid "Posted entries" -msgstr "Verbuchte Buchungen" +msgstr "Quittierte Buchungen" #. module: account #: help:account.payment.term.line,value_amount:0 @@ -7444,7 +7496,7 @@ msgstr "Gruppiere nach Rechnungsjahr" #. module: account #: help:res.partner,credit:0 msgid "Total amount this customer owes you." -msgstr "Gesamtschulden eines Kunden" +msgstr "Gesamtschulden dieses Kunden" #. module: account #: model:ir.model,name:account.model_ir_sequence @@ -7465,7 +7517,7 @@ msgstr "OK" #. module: account #: field:account.chart.template,tax_code_root_id:0 msgid "Root Tax Code" -msgstr "Basis Steuerkonto" +msgstr "Basis Steuerschlüssel" #. module: account #: help:account.journal,centralisation:0 @@ -7485,17 +7537,17 @@ msgstr "Beendet am" #. module: account #: model:ir.model,name:account.model_account_bank_statement_line msgid "Bank Statement Line" -msgstr "Bankauszug Buchungen" +msgstr "Positionen auf Bankauszug" #. module: account #: field:account.automatic.reconcile,date2:0 msgid "Ending Date" -msgstr "Ende Datum" +msgstr "Enddatum" #. module: account #: field:wizard.multi.charts.accounts,purchase_tax:0 msgid "Default Purchase Tax" -msgstr "Standard Steuer Einkauf" +msgstr "Standard Erwerbssteuer" #. module: account #: field:account.chart.template,property_account_income_opening:0 @@ -7518,26 +7570,26 @@ msgstr "" "Steuerberechnung gebraucht wird." #. 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 "" -"Sie sollten Perioden wählen, die für dieses Unternehmen vorhanden sind" +"Sie sollten Perioden wählen, die dem gleichen Unternehmen zugeordnet sind" #. module: account #: model:ir.actions.act_window,name:account.action_review_payment_terms_installer msgid "Review your Payment Terms" -msgstr "Überprüfen Sie Ihre Zahlungskonditionen" +msgstr "Überprüfen Sie Ihre Zahlungsbedingungen" #. module: account #: field:account.fiscalyear.close,report_name:0 msgid "Name of new entries" -msgstr "Buchungstext" +msgstr "Text neuer Buchungen" #. module: account #: view:account.use.model:0 msgid "Create Entries" -msgstr "Erstelle Buchungen" +msgstr "Buchungen anlegen" #. module: account #: view:res.partner:0 @@ -7550,8 +7602,8 @@ msgid "Reporting" msgstr "Berichtswesen" #. 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 @@ -7575,13 +7627,13 @@ msgstr "Kassenabschluss" #: view:account.journal:0 #: field:res.partner.bank,journal_id:0 msgid "Account Journal" -msgstr "Journal Konto" +msgstr "Konto-Journal" #. module: account #: model:process.node,name:account.process_node_paidinvoice0 #: model:process.node,name:account.process_node_supplierpaidinvoice0 msgid "Paid invoice" -msgstr "Rechnung Bezahlt" +msgstr "Beglichene Rechnung" #. module: account #: help:account.partner.reconcile.process,next_partner_id:0 @@ -7590,9 +7642,9 @@ msgid "" "the system to go through the reconciliation process, based on the latest day " "it have been reconciled." msgstr "" -"Dieses Feld zeigt den nächsten Partner an, der automatisch durch das System " -"im Rahmen des Ausgleichs offener Posten auf Basis des letztmaligen " -"Ausgleichs von offenen Posten vorgeschlagen wird." +"Dieses Feld zeigt automatisch den nächsten Partner an, der im Rahmen des " +"Ausgleichs offener Posten, auf Basis des letztmaligen Ausgleichs von offenen " +"Posten, vorgeschlagen wird." #. module: account #: field:account.move.line.reconcile.writeoff,comment:0 @@ -7608,13 +7660,13 @@ msgstr "Domain" #. module: account #: model:ir.model,name:account.model_account_use_model msgid "Use model" -msgstr "Benutze Buchungsvorlage" +msgstr "Benutze Modellvorlage" #. module: account #: code:addons/account/account.py:429 #, python-format msgid "Unable to adapt the initial balance (negative value)!" -msgstr "Kann die Anfangsbilanz nicht berechnen (negativer Wert)" +msgstr "Kann die Anfangsbilanz nicht berechnen (negativer Wert)!" #. module: account #: model:ir.actions.act_window,help:account.action_account_moves_purchase @@ -7645,21 +7697,23 @@ msgstr "Kunden und Lieferanten Gutschriften" #. module: account #: field:account.financial.report,sign:0 msgid "Sign on Reports" -msgstr "Sign On Reports" +msgstr "Vorzeichen in Berichten" #. 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 "Die Perioden für die Eröffnungsbilanz konnte nicht gefunden werden." +msgstr "" +"Die Perioden zur Erstellung der Eröffnungsbilanz konntennicht gefunden " +"werden." #. module: account #: model:account.account.type,name:account.data_account_type_view msgid "Root/View" -msgstr "Wurzel/Sicht" +msgstr "Stamm/Sicht" #. module: account -#: code:addons/account/account.py:3121 +#: code:addons/account/account.py:3138 #, python-format msgid "OPEJ" msgstr "EB" @@ -7668,7 +7722,7 @@ msgstr "EB" #: report:account.invoice:0 #: view:account.invoice:0 msgid "PRO-FORMA" -msgstr "PRO-FORMA" +msgstr "PROFORMA" #. module: account #: selection:account.entries.report,move_line_state:0 @@ -7694,13 +7748,14 @@ msgid "Optional Information" msgstr "Informationen (Optional)" #. 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 "Das Journal benötigt einen Standardwert für Debitor und Kreditor" #. module: account #: report:account.general.journal:0 +#: xsl:account.transfer:0 msgid ":" msgstr ":" @@ -7727,25 +7782,25 @@ msgstr "Multi-Währung" #. module: account #: field:account.model.line,date_maturity:0 msgid "Maturity Date" -msgstr "Datum Fällig" +msgstr "Fälligkeitsdatum" #. module: account -#: code:addons/account/account_move_line.py:1302 +#: code:addons/account/account_move_line.py:1317 #, python-format msgid "Bad account !" msgstr "Falsches Konto!" #. module: account -#: code:addons/account/account.py:3108 +#: code:addons/account/account.py:3125 #, python-format msgid "Sales Journal" -msgstr "Journal Verkauf" +msgstr "Verkaufs-Journal" #. module: account #: code:addons/account/wizard/account_move_journal.py:104 #, python-format msgid "Open Journal Items !" -msgstr "Öffne Journalbuchungen" +msgstr "Öffne Journalbuchungen!" #. module: account #: model:ir.model,name:account.model_account_invoice_tax @@ -7753,7 +7808,7 @@ msgid "Invoice Tax" msgstr "Umsatzsteuer" #. 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 "Keine Stückzahl!" @@ -7762,7 +7817,7 @@ msgstr "Keine Stückzahl!" #: view:account.financial.report:0 #: model:ir.ui.menu,name:account.menu_account_report_tree_hierarchy msgid "Account Reports Hierarchy" -msgstr "Konten Report Hierarchie" +msgstr "Bericht der Konten-Hierarchie" #. module: account #: help:account.account.template,chart_template_id:0 @@ -7774,22 +7829,21 @@ msgid "" "common to both several times)." msgstr "" "Dieses wahlfreie Feld ermöglicht Ihnen eine Konten-Vorlage von einer " -"Kontenplan-Vorlage abzuleiten, wobei sich die Konten des vom Stamm-" -"Kontenplan unterscheiden können. So können Sie eine Kontenplan-Vorlage " -"festlegen, die eine Andere, ggf. auch nur geringfügig, erweitert. (Sie " -"brauchen also nicht die beiden gemeinsamen Strukturen mehrfach zu " -"definieren)." +"Kontenplan-Vorlage abzuleiten, wobei sich die Konten vom Stamm-Kontenplan " +"unterscheiden können. So können Sie eine Kontenplan-Vorlage festlegen, die " +"eine Andere, ggf. auch nur geringfügig, erweitert. (Sie brauchen also nicht " +"die beiden gemeinsamen Strukturen mehrfach zu definieren)." #. module: account #: view:account.move:0 msgid "Unposted Journal Entries" -msgstr "Nicht verbuchte Buchungen" +msgstr "Nicht Quittierte Buchungen" #. module: account #: view:product.product:0 #: view:product.template:0 msgid "Sales Properties" -msgstr "Verkauf Eigenschaften" +msgstr "Verkaufseinstellungen" #. module: account #: model:ir.ui.menu,name:account.menu_manual_reconcile @@ -7799,7 +7853,7 @@ msgstr "Manueller Kontenausgleich" #. module: account #: report:account.overdue:0 msgid "Total amount due:" -msgstr "Gesamtbetrag fällig:" +msgstr "Fälliger Gesamtbetrag:" #. module: account #: field:account.analytic.chart,to_date:0 @@ -7809,7 +7863,7 @@ msgstr "An" #. 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 "Währungsanpassung" @@ -7863,18 +7917,20 @@ 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 "Kreditorenkonten" #. 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 "" -"Allgemeine Steuern wurden definiert, aber befinden sich nicht auf " -"Rechnungszeilenebene!" +"Allgemeine Steuern wurden definiert, aber in den Rechnungspositionensind " +"keine aufgeführt!" #. module: account #: model:ir.model,name:account.model_account_chart_template @@ -7897,17 +7953,17 @@ msgstr "Steuercode Nummer" #. module: account #: view:validate.account.move:0 msgid "Post Journal Entries of a Journal" -msgstr "Erzeuge Buchungen in Journal" +msgstr "Buchungen eines Journals quittieren" #. module: account #: view:product.product:0 msgid "Sale Taxes" -msgstr "Steuern Verkauf" +msgstr "Verkaufssteuern" #. module: account #: field:account.financial.report,name:0 msgid "Report Name" -msgstr "Report Bezeichnung" +msgstr "Berichtsbezeichnung" #. module: account #: model:account.account.type,name:account.data_account_type_cash @@ -7915,38 +7971,38 @@ msgstr "Report Bezeichnung" #: 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 "Kasse" +msgstr "Barkasse" #. module: account #: field:account.fiscal.position.account,account_dest_id:0 #: field:account.fiscal.position.account.template,account_dest_id:0 msgid "Account Destination" -msgstr "Konto Zuordnung" - -#. 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 +msgstr "Kontozuordnung" + +#. module: account +#: 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 #, python-format msgid "UserError" -msgstr "BenutzerFehler" +msgstr "UserError" #. module: account #: model:process.node,note:account.process_node_supplierpaymentorder0 msgid "Payment of invoices" -msgstr "Zahlung von Eingangsrechnungen" +msgstr "Ausgleich von Eingangsrechnungen" #. module: account #: field:account.bank.statement.line,sequence:0 @@ -7976,7 +8032,7 @@ msgstr "Optionale Menge in Buchungen" #. module: account #: view:account.financial.report:0 msgid "Parent Report" -msgstr "Übergeordneter Report" +msgstr "Übergeordneter Bericht" #. module: account #: view:account.state.open:0 @@ -7991,7 +8047,7 @@ msgstr "Verkauf nach Kontotyp" #. module: account #: help:account.invoice,move_id:0 msgid "Link to the automatically generated Journal Items." -msgstr "Verlinke mit automatisch generierten Buchungen" +msgstr "Verweis auf automatisch generierte Buchungen" #. module: account #: selection:account.installer,period:0 @@ -8047,12 +8103,12 @@ msgstr "" #. module: account #: model:ir.ui.menu,name:account.menu_finance_legal_statement msgid "Legal Reports" -msgstr "Offizielle Auswertungen" +msgstr "Offizielle Finanzberichte" #. module: account #: field:account.tax.code,sum_period:0 msgid "Period Sum" -msgstr "Summe Periode" +msgstr "Periodensumme" #. module: account #: help:account.tax,sequence:0 @@ -8061,15 +8117,15 @@ msgid "" "to the higher ones. The order is important if you have a tax with several " "tax children. In this case, the evaluation order is important." msgstr "" -"Des Feld \"Reihenfolge\" wird benutzt, um die Steuerzeilen aufsteigend zu " -"sortieren. Die Reihenfolge ist dann von Bedeutung, wenn es eine Steuerart " -"mit mehreren Steuersätzen gibt. In diesem Fall ist die Reihenfolge für die " -"Auswahl entscheidend." +"Des Feld \"Reihenfolge\" (Sequenz) wird benutzt, um die Steuerzeilen " +"aufsteigend zu sortieren. Die Reihenfolge ist dann von Bedeutung, wenn es " +"eine Steuerart mit mehreren Steuersätzen gibt. In diesem Fall ist die " +"Reihenfolge für die Auswahl entscheidend." #. module: account #: model:ir.model,name:account.model_account_cashbox_line msgid "CashBox Line" -msgstr "Barkasse Buchungen" +msgstr "Barkassenbuchung" #. module: account #: view:account.partner.ledger:0 @@ -8084,7 +8140,7 @@ msgstr "Partner Kontoauszug" #. module: account #: selection:account.tax.template,type:0 msgid "Fixed" -msgstr "Fest" +msgstr "Fix" #. module: account #: code:addons/account/account.py:629 @@ -8092,32 +8148,33 @@ msgstr "Fest" #: 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 "Warnung" +msgstr "Warnung!" #. module: account #: field:account.entries.report,move_line_state:0 msgid "State of Move Line" -msgstr "Status Buchungszeile" +msgstr "Status der Buchung" #. module: account #: model:ir.model,name:account.model_account_move_line_reconcile msgid "Account move line reconcile" -msgstr "Storno Buchung" +msgstr "Ausgleich der Buchung" #. module: account #: view:account.subscription.generate:0 #: model:ir.model,name:account.model_account_subscription_generate msgid "Subscription Compute" -msgstr "Wiederkehrende Buchungen" +msgstr "Wiederkehrende Buchungen berechnen" #. module: account #: field:account.bank.statement.line,partner_id:0 @@ -8150,7 +8207,7 @@ msgid "Select a currency to apply on the invoice" msgstr "Wähle eine Währung für diese Rechnung" #. 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." @@ -8160,18 +8217,18 @@ msgstr "Das Bankkonto in der ausgewählten Vorlage hat keinen Code" #: code:addons/account/wizard/account_invoice_refund.py:108 #, python-format msgid "Can not %s draft/proforma/cancel invoice." -msgstr "Kann Entwurf/ProForma/Storno für Rechnung %s nicht durchführen" +msgstr "Kann Entwurf/Proforma/Storno für Rechnung %s nicht durchführen" #. module: account -#: code:addons/account/account_invoice.py:810 +#: code:addons/account/account_invoice.py:821 #, python-format msgid "No Invoice Lines !" -msgstr "Keine Rechnungszeilen !" +msgstr "Keine Rechnungspositionen!" #. module: account #: view:account.financial.report:0 msgid "Report Type" -msgstr "Report Type" +msgstr "Berichtsart" #. module: account #: view:account.analytic.account:0 @@ -8200,8 +8257,8 @@ msgid "" "Select Fiscal Year which you want to remove entries for its End of year " "entries journal" msgstr "" -"Wähle das abzuschliessende Geschäftsjahr für die Buchung in das definierte " -"Journal für den Jahresabschluss" +"Wähle das Geschäftsjahr aus dessen Jahres-Abschlussbericht und dessen " +"Abschluss-Salden entfernt werden sollen" #. module: account #: field:account.tax.template,type_tax_use:0 @@ -8248,10 +8305,10 @@ msgid "Deferral Method" msgstr "Abgrenzung Jahreswechsel" #. module: account -#: code:addons/account/account_invoice.py:379 +#: code:addons/account/account_invoice.py:388 #, python-format msgid "Invoice '%s' is paid." -msgstr "Rechnung '%s' wurde bezahlt." +msgstr "Rechnung '%s' wurde beglichen." #. module: account #: model:process.node,note:account.process_node_electronicfile0 @@ -8261,7 +8318,7 @@ msgstr "Automatische Buchung" #. module: account #: constraint:account.tax.code.template:0 msgid "Error ! You can not create recursive Tax Codes." -msgstr "Fehler! Sie können keine rekursiven Umsatzsteuern definieren" +msgstr "Fehler! Sie können keine rekursiven Steuern definieren" #. module: account #: help:account.journal,group_invoice_lines:0 @@ -8313,7 +8370,7 @@ msgid "Associated Partner" msgstr "Zugehöriger Partner" #. 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 "Sie müssen zuerst einen Partner wählen!" @@ -8370,13 +8427,13 @@ msgstr "" "zugeordneten Steuerschlüsseln für die Umsatzsteuererklärung in Ihrem Land." #. 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." msgstr "" "Kann keinen Kontenplan für dieses Unternehmen finden. Sie müssen einen " -"anlagen!" +"anlegen!" #. module: account #: view:account.invoice:0 @@ -8394,16 +8451,16 @@ msgid "Choose Fiscal Year" msgstr "Wähle Geschäftsjahr" #. module: account -#: code:addons/account/account.py:3111 +#: code:addons/account/account.py:3128 #, python-format msgid "Purchase Refund Journal" -msgstr "Journal Gutschriften Eingangsrechnungen" +msgstr "Journal zu Gutschriften aus Eingangsrechnungen" #. module: account #: help:account.tax.template,amount:0 msgid "For Tax Type percent enter % ratio between 0-1." msgstr "" -"Für den Typ Prozent erfassen Sie einen Wert zwischen 0 und 1, z.B. 0.19 für " +"Für den Typ Prozent erfassen Sie einen Wert zwischen 0 und 1, z. B. 0.19 für " "19%" #. module: account @@ -8414,7 +8471,7 @@ msgstr "aktuelle Konten" #. module: account #: view:account.invoice.report:0 msgid "Group by Invoice Date" -msgstr "Gruppiert je Rechnungsdatum" +msgstr "Gruppiert nach Rechnungsdatum" #. module: account #: view:account.invoice.refund:0 @@ -8456,8 +8513,8 @@ msgid "" "Total amount (in Company currency) for transactions held in secondary " "currency for this account." msgstr "" -"Gesamtbetrag in Unternehmenswährung für Buchungen in der 2.Währung des " -"Kontos" +"Gesamtbetrag in Unternehmenswährung für Buchungen in der Alternativwährung " +"des Kontos" #. module: account #: report:account.invoice:0 @@ -8488,13 +8545,13 @@ msgid "Compute Code for Taxes Included Prices" msgstr "Berechnungsgrundlage (inkl. Steuer)" #. 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 " "unreconcile related payment entries first!" msgstr "" -"Sie können eine teilbezahlte Rechnungen nicht stornieren! Sie müssen der OP-" +"Sie können eine angezahlte Rechnungen nicht stornieren! Sie müssen der OP-" "Ausgleich der Zahlung zuerst rückgängig machen." #. module: account @@ -8511,17 +8568,17 @@ msgstr "korrigierter Saldo" #: model:ir.actions.act_window,name:account.action_account_fiscal_position_template_form #: model:ir.ui.menu,name:account.menu_action_account_fiscal_position_form_template msgid "Fiscal Position Templates" -msgstr "Steuerzuordnung Vorlage" +msgstr "Vorlage zum Finanzbericht" #. module: account #: view:account.entries.report:0 msgid "Int.Type" -msgstr "Int. Typ" +msgstr "Int. Art" #. module: account #: field:account.move.line,tax_amount:0 msgid "Tax/Base Amount" -msgstr "Betrag für Steuerberechnung" +msgstr "Grundbetrag für Steuerberechnung" #. module: account #: view:account.payment.term.line:0 @@ -8568,7 +8625,7 @@ msgstr "Tel.:" #. module: account #: field:account.account,company_currency_id:0 msgid "Company Currency" -msgstr "Betriebl. Währung" +msgstr "Unternehmenswährung" #. module: account #: field:account.aged.trial.balance,chart_account_id:0 @@ -8632,7 +8689,7 @@ msgid "current month" msgstr "laufender Monat" #. 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" @@ -8681,7 +8738,7 @@ msgstr " Betrag: NV" #: model:process.node,name:account.process_node_supplierreconciliation0 #, python-format msgid "Reconciliation" -msgstr "Ausgleichen Offene Posten" +msgstr "Ausgleichen offener Posten" #. module: account #: view:account.chart.template:0 @@ -8718,6 +8775,7 @@ msgstr "Journal Gutschriften" #. 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 @@ -8761,7 +8819,7 @@ msgid "The partner account used for this invoice." msgstr "Partner Finanzkonto dieser Rechnung." #. module: account -#: code:addons/account/account.py:3296 +#: code:addons/account/account.py:3313 #, python-format msgid "Tax %.2f%%" msgstr "Steuer %.2f%%" @@ -8784,16 +8842,15 @@ msgid "Payment Term Line" msgstr "Zahlungsbedingungen" #. module: account -#: code:addons/account/account.py:3109 +#: code:addons/account/account.py:3126 #, python-format msgid "Purchase Journal" -msgstr "Journal Einkauf" +msgstr "Einkaufs-Journal" #. module: account #: view:account.invoice.refund:0 msgid "Refund Invoice: Creates the refund invoice, ready for editing." -msgstr "" -"Gutschrift Rechnung: Generiert eine Gutschrift mit Bearbeitungsmöglichkeit" +msgstr "Rechnungsgutschrift: Legt eine Gutschrift zur Weiterbearbeitung an." #. module: account #: field:account.invoice.line,price_subtotal:0 @@ -8803,7 +8860,7 @@ msgstr "Zwischensumme" #. module: account #: view:account.vat.declaration:0 msgid "Print Tax Statement" -msgstr "Drucke Auswertung Umsatzsteuer" +msgstr "Drucke Umsatzsteueranmeldung" #. module: account #: view:account.model.line:0 @@ -8828,12 +8885,12 @@ msgstr "Lieferanten" #. module: account #: view:account.journal:0 msgid "Accounts Type Allowed (empty for no control)" -msgstr "zugelassene Kontotypen (leer = alle)" +msgstr "zugelassene Kontoarten (leer = alle)" #. module: account #: view:res.partner:0 msgid "Supplier Accounting Properties" -msgstr "Kreditoren Eigenschaften" +msgstr "Kreditoren-Eigenschaften" #. module: account #: help:account.move.line,amount_residual:0 @@ -8858,7 +8915,7 @@ msgstr "Von" #. module: account #: model:ir.model,name:account.model_account_fiscalyear_close msgid "Fiscalyear Close" -msgstr "Geschäftsjahr beenden" +msgstr "Geschäftsjahr abschließen" #. module: account #: sql_constraint:account.account:0 @@ -8872,10 +8929,10 @@ msgid "Unpaid Invoices" msgstr "Offene Rechnungen" #. 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 "Die Zahlungskonditionen des Lieferanten haben keine Zeilen!" +msgstr "Die Zahlungsbedingungen des Lieferanten enthalten keine Positionen!" #. module: account #: field:account.move.line.reconcile,debit:0 @@ -8940,7 +8997,7 @@ msgstr "Journal Bezeichnung" #. module: account #: view:account.move.line:0 msgid "Next Partner Entries to reconcile" -msgstr "Op-Ausgleich des nächsten Partners" +msgstr "OP-Ausgleich des nächsten Partners" #. module: account #: selection:account.financial.report,style_overwrite:0 @@ -8958,7 +9015,7 @@ msgid "" "Unique number of the invoice, computed automatically when the invoice is " "created." msgstr "" -"Einheitliche Rechnungsnummer, automatisch ermittelt bei der Erzeugung der " +"Eindeutige Rechnungsnummer, automatisch ermittelt bei der Erzeugung der " "Rechnung." #. module: account @@ -8982,10 +9039,10 @@ msgid "Keep empty for all open fiscal years" msgstr "Frei lassen für alle offenen Geschäftsjahre" #. module: account -#: code:addons/account/account_move_line.py:1105 +#: code:addons/account/account_move_line.py:1120 #, python-format msgid "The account move (%s) for centralisation has been confirmed!" -msgstr "Die Buchungszeile (%s)" +msgstr "Die Buchung (%s) wurde zur Sammlung/Zentralisierung genehmigt!" #. module: account #: help:account.move.line,amount_currency:0 @@ -8993,11 +9050,11 @@ msgid "" "The amount expressed in an optional other currency if it is a multi-currency " "entry." msgstr "" -"Der Betrag in Fremdwährung, wenn es sich um eine Mulit-Währungsbuchung " +"Der Betrag in Fremdwährung, wenn es sich um eine Fremd-Währungsbuchung " "handelt" #. 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" @@ -9047,7 +9104,7 @@ msgstr "Erzeugt Sequenz für Anzeige der Bankdetails bei Buchungen" #. module: account #: model:process.transition,note:account.process_transition_validentries0 msgid "Accountant validates the accounting entries coming from the invoice." -msgstr "Ein Buchhalter verbucht die Buchungssätze einer Rechnung" +msgstr "Ein Buchhalter quittiert die Buchungssätze einer Rechnung" #. module: account #: model:ir.actions.act_window,help:account.action_account_fiscalyear_form @@ -9077,15 +9134,15 @@ msgstr "" #: view:account.entries.report:0 #: model:ir.actions.act_window,name:account.act_account_acount_move_line_reconcile_open msgid "Reconciled entries" -msgstr "Auszugleichende Buchungsposten" +msgstr "Auszugleichende Buchungen" #. module: account #: field:account.invoice,address_contact_id:0 msgid "Contact Address" -msgstr "Kontakt Adresse" +msgstr "Kontaktadresse" #. module: account -#: code:addons/account/account.py:2256 +#: code:addons/account/account.py:2273 #, python-format msgid "Wrong model !" msgstr "Falsches Modell!" @@ -9098,7 +9155,7 @@ msgstr "Erzwinge Periode" #. module: account #: model:ir.model,name:account.model_account_partner_balance msgid "Print Account Partner Balance" -msgstr "Drucke Partner Saldenliste" +msgstr "Drucke Partner-Saldenliste" #. module: account #: help:account.financial.report,sign:0 @@ -9109,7 +9166,7 @@ msgid "" "accounts that are typically more credited than debited and that you would " "like to print as positive amounts in your reports; e.g.: Income account." msgstr "" -"Für Salden die mit umgekehrten Vorzeichen gedruckt werden sollen. zB " +"Für Salden die mit umgekehrten Vorzeichen gedruckt werden sollen. z. B. " "Aufwandskonten negativ, Ertragskonten positiv." #. module: account @@ -9122,12 +9179,14 @@ msgstr "Verträge" #: 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 "unbekannt" #. 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 "Start Buchungsjournal" @@ -9150,10 +9209,10 @@ msgstr "" "wird durch die Auswertung Gewinn & Verlust generiert." #. 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 "BItte definieren Sie Sequenzen für das Journal dieser Rechnung." +msgstr "Bitte legen Sie Sequenzen für das Journal dieser Rechnung fest." #. module: account #: view:account.move:0 @@ -9180,8 +9239,8 @@ msgid "" "Set if the tax computation is based on the computation of child taxes rather " "than on the total amount." msgstr "" -"Aktivieren, wenn die Steuerberechnung auf die untergeordneten Steuern beruht " -"und nicht auf dem Gesamtbetrag" +"Aktivieren, wenn die Steuerberechnung auf untergeordneten Steuern beruht und " +"nicht auf dem Gesamtbetrag" #. module: account #: selection:account.tax,applicable_type:0 @@ -9241,7 +9300,7 @@ msgid "Period from" msgstr "Gültig ab" #. module: account -#: code:addons/account/account.py:3110 +#: code:addons/account/account.py:3127 #, python-format msgid "Sales Refund Journal" msgstr "Gutschriften Ausgangsrechnungen Journal" @@ -9288,10 +9347,10 @@ msgid "Purchase Tax(%)" msgstr "Steuer Einkauf (%)" #. 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 "Bitte erstellen Sie einige Rechnungspositionen" +msgstr "Bitte erstellen Sie Rechnungspositionen" #. module: account #: report:account.overdue:0 @@ -9304,7 +9363,7 @@ msgid "Display Detail" msgstr "Zeige Detail" #. module: account -#: code:addons/account/account.py:3118 +#: code:addons/account/account.py:3135 #, python-format msgid "SCNJ" msgstr "GSV" @@ -9343,8 +9402,6 @@ msgstr "Ende der Periode" #: 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 "Finanz Reports" @@ -9359,6 +9416,7 @@ msgstr "Finanz Reports" #: 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 @@ -9379,6 +9437,7 @@ msgstr "Start Periode" #. module: account #: field:account.aged.trial.balance,direction_selection:0 +#: report:account.aged_trial_balance:0 msgid "Analysis Direction" msgstr "Analysezeitraum" @@ -9398,7 +9457,7 @@ msgstr "Ansicht Journal" #. 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 "Gesamt Haben" @@ -9412,7 +9471,7 @@ msgstr "" #. module: account #: report:account.overdue:0 msgid "Best regards." -msgstr "Beste Grüsse." +msgstr "Mit freundlichen Grüssen." #. module: account #: view:account.invoice:0 @@ -9470,6 +9529,7 @@ msgstr "Bankauszüge" #: 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 @@ -9552,7 +9612,7 @@ msgstr "" "Debitorenkonto." #. 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 "Bitte Konten zum Ausgleich auswählen" @@ -9585,7 +9645,7 @@ msgstr "" #: report:account.third_party_ledger:0 #: report:account.third_party_ledger_other:0 msgid "Filters By" -msgstr "Filter nch" +msgstr "Filter nach" #. module: account #: model:process.node,note:account.process_node_manually0 @@ -9604,10 +9664,10 @@ msgid "Move" msgstr "Buchung" #. 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 "Die Steuer kann nicht verändert werden. Löschen und Neuerstellen." +msgstr "Die Steuer kann nicht verändert werden. Löschen und Neuerstellen!" #. module: account #: view:analytic.entries.report:0 @@ -9664,7 +9724,7 @@ msgid "Consolidated Children" msgstr "Konsolidierte Konten" #. 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 " @@ -9729,6 +9789,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 @@ -9750,7 +9811,7 @@ msgstr "Ende der Periode" #. module: account #: field:account.move.line,date_maturity:0 msgid "Due date" -msgstr "Datum fällig" +msgstr "Fälligkeitsdatum" #. module: account #: view:account.move.journal:0 @@ -9771,7 +9832,7 @@ msgstr "" "\"Einkauf\" für Lieferantenrechnungsjournale\r\n" "\"Kassa\" oder \"Bank\" für Kunden und Lieferantenzahlungen\r\n" "\"Allgemein\" für alles andere.\r\n" -"\"Eröffnung/Schluss Buchungen\" für Buchungen des Jahresabschlusses" +"\"Eröffnungs-/Schluss-Buchungen\" für Buchungen des Jahresabschlusses" #. module: account #: model:ir.model,name:account.model_account_subscription @@ -9781,7 +9842,7 @@ msgstr "Konto Automatische Buchung" #. module: account #: report:account.overdue:0 msgid "Maturity date" -msgstr "Datum Fällig" +msgstr "Fälligkeitsdatum" #. module: account #: view:account.subscription:0 @@ -9791,6 +9852,7 @@ msgstr "Eingabe automat. Buchung" #. 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 @@ -9798,6 +9860,7 @@ msgstr "Eingabe automat. Buchung" #: 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 @@ -9816,7 +9879,7 @@ msgstr "Eingabe automat. Buchung" #: field:accounting.report,date_from:0 #: field:accounting.report,date_from_cmp:0 msgid "Start Date" -msgstr "Start Datum" +msgstr "Anfangsdatum" #. module: account #: help:account.invoice,reconciled:0 @@ -9832,17 +9895,17 @@ msgstr "" #: view:account.invoice.report:0 #: model:process.node,name:account.process_node_supplierdraftinvoices0 msgid "Draft Invoices" -msgstr "Entwurf Rechnungen" +msgstr "Rechnungsentwürfe" #. module: account #: selection:account.account.type,close_method:0 #: view:account.entries.report:0 #: view:account.move.line:0 msgid "Unreconciled" -msgstr "Offene Posten" +msgstr "Nicht beglichen" #. module: account -#: code:addons/account/account_invoice.py:828 +#: code:addons/account/account_invoice.py:839 #, python-format msgid "Bad total !" msgstr "Falsche Summe!" @@ -9850,7 +9913,7 @@ msgstr "Falsche Summe!" #. module: account #: field:account.journal,sequence_id:0 msgid "Entry Sequence" -msgstr "Eingabe Sequenz" +msgstr "Eingabereihenfolge" #. module: account #: model:ir.actions.act_window,help:account.action_account_period_tree @@ -9910,7 +9973,7 @@ msgid "Comparison" msgstr "Vergleich" #. module: account -#: code:addons/account/account_invoice.py:372 +#: code:addons/account/account_invoice.py:381 #, python-format msgid "Unknown Error" msgstr "Unbekannter Fehler" @@ -9927,7 +9990,7 @@ msgstr "" #. module: account #: field:account.period,special:0 msgid "Opening/Closing Period" -msgstr "Eröffnungs- / Abschlussperiode" +msgstr "Eröffnungs-/Abschlussperiode" #. module: account #: field:account.account,currency_id:0 @@ -9939,7 +10002,7 @@ msgstr "Alternative Währung" #. module: account #: model:ir.model,name:account.model_validate_account_move msgid "Validate Account Move" -msgstr "Buchen" +msgstr "Buchung quittieren" #. module: account #: field:account.account,credit:0 @@ -9949,6 +10012,7 @@ msgstr "Buchen" #: 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 @@ -10056,16 +10120,18 @@ msgstr "Analytische Buchungen der letzten 30 Tage" #: 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 "Perioden" #. module: account #: field:account.invoice.report,currency_rate:0 msgid "Currency Rate" -msgstr "Wechsellkurs" +msgstr "Wechselkurs" #. module: account #: view:account.account:0 @@ -10191,14 +10257,14 @@ msgstr "Kontotyp" #. module: account #: model:ir.actions.act_window,name:account.action_subscription_form_running msgid "Running Subscriptions" -msgstr "Entwurf" +msgstr "Laufende Abbonnements" #. module: account #: view:report.account.sales:0 #: view:report.account_type.sales:0 #: view:report.hr.timesheet.invoice.journal:0 msgid "This Month" -msgstr "Dieser Monat" +msgstr "Diesen Monat" #. module: account #: view:account.analytic.balance:0 @@ -10216,7 +10282,7 @@ msgstr "Periode auswählen" #: selection:account.move,state:0 #: view:account.move.line:0 msgid "Posted" -msgstr "Gebucht" +msgstr "Quittiert" #. module: account #: report:account.account.balance:0 @@ -10228,6 +10294,7 @@ msgstr "Gebucht" #: 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 @@ -10245,13 +10312,13 @@ msgstr "Gebucht" #: field:accounting.report,date_to:0 #: field:accounting.report,date_to_cmp:0 msgid "End Date" -msgstr "Ende Datum" +msgstr "Enddatum" #. module: account #: model:ir.actions.act_window,name:account.action_account_open_closed_fiscalyear #: model:ir.ui.menu,name:account.menu_wizard_account_open_closed_fiscalyear msgid "Cancel Opening Entries" -msgstr "Abbrechen Buchen Jahreseröffnung" +msgstr "Buchen der Jahreseröffnung abbrechen" #. module: account #: field:account.payment.term.line,days2:0 @@ -10272,10 +10339,10 @@ msgstr "Geschäftsjahr Sequenz" #. module: account #: selection:account.financial.report,display_detail:0 msgid "No detail" -msgstr "Kein Detail" +msgstr "Keine Details" #. 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 "" @@ -10284,7 +10351,7 @@ msgstr "" #. module: account #: constraint:account.move.line:0 msgid "You can not create journal items on closed account." -msgstr "You can not create journal items on closed account." +msgstr "Sie können auf ein abgeschlossenes Konto nicht mehr buchen." #. module: account #: field:account.account,unrealized_gain_loss:0 @@ -10304,14 +10371,15 @@ msgstr "Status" #. module: account #: model:ir.actions.server,name:account.ir_actions_server_edi_invoice msgid "Auto-email confirmed invoices" -msgstr "automatischer EMail Versand der Rechnungen" +msgstr "automatischer E-Mail Versand der Rechnungen" #. module: account #: field:account.invoice,check_total:0 msgid "Verification Total" -msgstr "Gesamt Prüfsumme" +msgstr "Zu prüfende Gesamtsumme" #. 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 @@ -10329,7 +10397,7 @@ msgstr "Bruttobetrag" #, python-format msgid "Journal: All" msgstr "" -"Journal: AlleErstelle und manage die Finanzjournale des Unternehmens über " +"Journal: Alle Erstelle und manage die Finanzjournale des Unternehmens über " "dieses Menü. Ein Journal ist eine lückenlose und chronologische Aufzeichnung " "aller Geschäftsvorfälle in einem Unternehmen in Form der doppelten " "Buchhaltung. In Abhängigkeit des Anwendungsumfangs der Buchhaltung sowie der " @@ -10339,6 +10407,7 @@ msgstr "" #. 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 @@ -10353,7 +10422,9 @@ msgstr "" #: 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 @@ -10363,6 +10434,8 @@ msgstr "" #: 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 @@ -10380,7 +10453,7 @@ msgstr "" #: field:analytic.entries.report,company_id:0 #: field:wizard.multi.charts.accounts,company_id:0 msgid "Company" -msgstr "Firma" +msgstr "Unternehmen" #. module: account #: model:ir.ui.menu,name:account.menu_action_subscription_form @@ -10421,12 +10494,12 @@ msgstr "Vorzeichen f. überg. Steuer" #. module: account #: model:ir.model,name:account.model_account_balance_report msgid "Trial Balance Report" -msgstr "Test Auswertung Bilanz" +msgstr "Salden-Bilanz" #. module: account #: model:ir.actions.act_window,name:account.action_bank_statement_draft_tree msgid "Draft statements" -msgstr "Beleg Entwurf" +msgstr "Belegentwürfe" #. module: account #: model:process.transition,note:account.process_transition_statemententries0 @@ -10455,14 +10528,14 @@ msgstr "Rechnungspositionen" #. module: account #: field:account.chart,period_to:0 msgid "End period" -msgstr "Ende Periode" +msgstr "End-Periode" #. module: account #: sql_constraint:account.journal:0 msgid "The code of the journal must be unique per company !" msgstr "" -"Die Kurzbezeichnung des Journals sollte eindeutig sein je Unternehmen " -"(Mandant)." +"Die Kurzbezeichnung des Journals sollte je Unternehmen (Mandant)eindeutig " +"sein." #. module: account #: help:product.category,property_account_expense_categ:0 @@ -10510,7 +10583,7 @@ msgstr "Auswertung Verkauf nach Konto" #. module: account #: model:ir.model,name:account.model_account_fiscal_position_account msgid "Accounts Fiscal Position" -msgstr "Steuerzuordnung" +msgstr "Konten des Haushaltsberichts" #. module: account #: report:account.invoice:0 @@ -10530,6 +10603,7 @@ msgstr "Eingangsrechnungen" #: 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 @@ -10559,10 +10633,12 @@ msgstr "Rechnungszeilen" #. module: account #: constraint:account.account.template:0 msgid "Error ! You can not create recursive account templates." -msgstr "Fehler ! Rekursive Finanzkontenvorlagen sind nicht erlaubt" +msgstr "Fehler! Rekursive Finanzkontenvorlagen sind nicht erlaubt." #. module: account #: selection:account.print.journal,sort_selection:0 +#: code:addons/account/report/account_journal.py:197 +#, python-format msgid "Journal Entry Number" msgstr "Belegnummer" @@ -10582,7 +10658,7 @@ msgstr "" "mit Buchungen geändert werden." #. 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 "Buchung wurde bereits ausgeglichen" @@ -10624,8 +10700,10 @@ msgstr "" "geschlossen für nicht mehr verwendete" #. 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 "Konten mit Buchungen" @@ -10679,7 +10757,7 @@ msgstr "Überfällige Forderungen" #. module: account #: field:account.tax,applicable_type:0 msgid "Applicability" -msgstr "Individualberechnung" +msgstr "Anwendbarkeit" #. module: account #: code:addons/account/wizard/account_move_journal.py:165 @@ -10741,16 +10819,16 @@ msgstr "Kontenplan Analysekonten" #. module: account #: help:account.invoice,residual:0 msgid "Remaining amount due." -msgstr "verbleibender Restwert nach Zahlung" +msgstr "Verbleibender, fälliger Restbetrag" #. module: account #: model:ir.ui.menu,name:account.menu_finance_statistic_report_statement msgid "Statistic Reports" -msgstr "Statistische Auswertungen" +msgstr "Statistische Berichte" #. 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 "Falsches Konto!" @@ -10779,7 +10857,7 @@ msgid "Accounts Mapping" msgstr "Zuordnung Finanzkonten" #. 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 "Rechnung '%s' wartet auf Buchungsfreigabe." @@ -10907,16 +10985,17 @@ msgstr "" "''}${object.address_invoice_id.name or ''},\n" "\n" "Eine neue Rechnung ist verfügbar: ${object.partner_id.name}:\n" -" | Invoice number: *${object.number}*\n" -" | Invoice total: *${object.amount_total} ${object.currency_id.name}*\n" -" | Invoice date: ${object.date_invoice}\n" +" | Rechnungsnummer: *${object.number}*\n" +" | Rechnungsbetrag: *${object.amount_total} " +"${object.currency_id.name}*\n" +" | Rechnungsdatum : ${object.date_invoice}\n" " % if object.origin:\n" " | Auftrag: ${object.origin}\n" " % endif\n" -" | Ihr Kontakt: ${object.user_id.name} ${object.user_id.user_email and " -"'<%s>'%(object.user_id.user_email) or ''}\n" +" | Ihr Ansprechpartner: ${object.user_id.name} " +"${object.user_id.user_email and '<%s>'%(object.user_id.user_email) or ''}\n" "\n" -"Sie können dieses Dokument ansehen, herunterladenund Online bezahlen, wenn " +"Sie können dieses Dokument ansehen, herunterladen und Online bezahlen, wenn " "Sie den folgenden Link verwenden:\n" " ${ctx.get('edi_web_url_view') or 'n/a'}\n" "\n" @@ -10941,9 +11020,9 @@ msgstr "" " ${paypal_url}\n" "% endif\n" "\n" -"Im Falle von Fragen wollen Sie uns bitte kontaktieren.\n" +"Im Falle von Fragen können Sie uns gerne kontaktieren.\n" "\n" -"Danke, dass Sie ${object.company_id.name} gewählt haben!\n" +"Danke, dass Sie ${object.company_id.name} Ihr vertrauen schenken!\n" "\n" "\n" "--\n" @@ -10964,7 +11043,7 @@ msgstr "" "or ''} ${object.company_id.country_id.name or ''}\n" "% endif\n" "% if object.company_id.phone:\n" -"Phone: ${object.company_id.phone}\n" +"Tel.: ${object.company_id.phone}\n" "% endif\n" "% if object.company_id.website:\n" "${object.company_id.website or ''}\n" @@ -10979,7 +11058,7 @@ msgstr "Bankkonten" #. module: account #: field:res.partner,credit:0 msgid "Total Receivable" -msgstr "Gesamt Forderungen" +msgstr "Forderungsgesamtsumme" #. module: account #: view:account.account:0 @@ -11039,6 +11118,7 @@ msgstr "account.addtmpl.wizard" #. 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 @@ -11113,17 +11193,19 @@ msgstr "Zentrales Journal" #. module: account #: report:account.overdue:0 msgid "Maturity" -msgstr "überfälllig" +msgstr "Überfällig" #. 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 "Zukunft" #. module: account #: view:account.move.line:0 msgid "Search Journal Items" -msgstr "Suche Journaleinträge" +msgstr "Durchsuche Buchungen" #. module: account #: help:account.tax,base_sign:0 @@ -11862,9 +11944,6 @@ msgstr "" #~ msgid "3 Months" #~ msgstr "3 Monate" -#~ msgid "Standard entries" -#~ msgstr "Standard Buchung" - #~ msgid "" #~ "Check this box if you want to print all entries when printing the General " #~ "Ledger, otherwise it will only print its balance." @@ -12637,9 +12716,6 @@ msgstr "" #~ msgid "Calculated Balance" #~ msgstr "Berechneter Saldo" -#~ msgid "Open For Unreconciliation" -#~ msgstr "Öffne Storno Ausgleich" - #, python-format #~ msgid "CashBox Balance is not matching with Calculated Balance !" #~ msgstr "Kassenbestand passt nicht zu Kontensaldo" @@ -13204,9 +13280,6 @@ msgstr "" #~ msgid "Receivable Accounts" #~ msgstr "Debitorenkonten" -#~ msgid "Tax codes" -#~ msgstr "Umsatzsteuererklärung" - #~ msgid "" #~ "Streamlines invoice payment and creates hooks to plug automated payment " #~ "systems in." @@ -13231,9 +13304,6 @@ msgstr "" #~ msgid " day of the month= -1" #~ msgstr " Tag des Monats= -1" -#~ msgid "Reconciliation result" -#~ msgstr "Ergebnis Kontoabstimmung" - #~ msgid "" #~ "You cannot create entries on different periods/journals in the same move" #~ msgstr "" @@ -13366,3 +13436,15 @@ msgstr "" #~ msgid "Description On Invoices" #~ msgstr "Beschreibung auf Rechnungen" + +#~ msgid "Open For Unreconciliation" +#~ msgstr "Öffne zur Stornierung des OP-Ausgleichs" + +#~ msgid "Tax codes" +#~ msgstr "Steuerschlüssel" + +#~ msgid "Reconciliation result" +#~ msgstr "Ergebnis Kontoausgleich" + +#~ msgid "Standard entries" +#~ msgstr "Standard-Buchungen" diff --git a/addons/account/product_view.xml b/addons/account/product_view.xml index 5f417825032..4d64af3e154 100644 --- a/addons/account/product_view.xml +++ b/addons/account/product_view.xml @@ -14,8 +14,8 @@ <field name="taxes_id" colspan="2" attrs="{'readonly':[('sale_ok','=',0)]}" widget="many2many_tags"/> </group> <group> - <field name="property_account_expense" domain="[('type','<>','view'),('type','<>','consolidation')]" attrs="{'readonly':[('purchase_ok','=',0)]}"/> - <field name="supplier_taxes_id" colspan="2" attrs="{'readonly':[('purchase_ok','=',0)]}" widget="many2many_tags"/> + <field name="property_account_expense" domain="[('type','<>','view'),('type','<>','consolidation')]" /> + <field name="supplier_taxes_id" colspan="2" widget="many2many_tags"/> </group> </group> </page> diff --git a/addons/account/project/report/analytic_balance.rml b/addons/account/project/report/analytic_balance.rml index 0c488eac400..1754988f7d6 100644 --- a/addons/account/project/report/analytic_balance.rml +++ b/addons/account/project/report/analytic_balance.rml @@ -163,7 +163,7 @@ <para style="terp_tblheader_Details_Right">[[ formatLang(sum_all(get_objects(data['form']['empty_acc']),data['form']['date1'],data['form']['date2'],'credit')) ]] </para> </td> <td> - <para style="terp_tblheader_Details_Right">[[ formatLang(sum_balance(get_objects(data['form']['empty_acc']),data['form']['date1'],data['form']['date2'])) ]] [[ company.currency_id.symbol]]</para> + <para style="terp_tblheader_Details_Right">[[ formatLang(sum_balance(get_objects(data['form']['empty_acc']),data['form']['date1'],data['form']['date2']), currency_obj = company.currency_id)]]</para> </td> <td> <para style="terp_tblheader_Details_Right">[[ formatLang(sum_all(get_objects(data['form']['empty_acc']),data['form']['date1'],data['form']['date2'],'quantity')) ]]</para> @@ -187,7 +187,7 @@ <para style="terp_default_Right_9_Bold">[[ formatLang(move_sum(o['id'],data['form']['date1'],data['form']['date2'],'credit')) ]] </para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ formatLang(move_sum_balance(o['id'],data['form']['date1'],data['form']['date2'])) ]] [[ company.currency_id.symbol]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(move_sum_balance(o['id'],data['form']['date1'],data['form']['date2']), currency_obj = company.currency_id)]]</para> </td> <td> <para style="terp_default_Right_9_Bold">[[ formatLang(move_sum(o['id'],data['form']['date1'],data['form']['date2'],'quantity')) ]]</para> @@ -211,7 +211,7 @@ <para style="terp_default_Right_9">[[ formatLang(move_g['credit']) ]] </para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(move_g['balance'])]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9">[[ formatLang(move_g['balance'], currency_obj = company.currency_id) ]]</para> </td> <td> <para style="terp_default_Right_9">[[ formatLang(move_g['quantity']) ]]</para> diff --git a/addons/account/project/report/cost_ledger.rml b/addons/account/project/report/cost_ledger.rml index 7500b655ab3..1099a8b8b4e 100644 --- a/addons/account/project/report/cost_ledger.rml +++ b/addons/account/project/report/cost_ledger.rml @@ -224,7 +224,7 @@ <para style="terp_Default_Bold_Right_9_U">[[ formatLang (sum_credit(objects,data['form']['date1'],data['form']['date2'])) ]] </para> </td> <td> - <para style="terp_Default_Bold_Right_9_U">[[ formatLang (sum_balance(objects,data['form']['date1'],data['form']['date2'])) ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_Default_Bold_Right_9_U">[[ formatLang (sum_balance(objects,data['form']['date1'],data['form']['date2']), currency_obj = company.currency_id) ]]</para> </td> </tr> </blockTable> @@ -245,7 +245,7 @@ <para style="terp_Default_Bold_Right_9_U">[[ formatLang (account_sum_credit(account,data['form']['date1'],data['form']['date2'])) ]] </para> </td> <td> - <para style="terp_Default_Bold_Right_9_U">[[ formatLang (account_sum_balance(account,data['form']['date1'],data['form']['date2']))]] [[ company.currency_id.symbol ]]</para> + <para style="terp_Default_Bold_Right_9_U">[[ formatLang (account_sum_balance(account,data['form']['date1'],data['form']['date2']), currency_obj = company.currency_id) ]]</para> </td> </tr> </blockTable> @@ -266,7 +266,7 @@ <para style="terp_Default_Bold_Right_9_U">[[ formatLang( move_g['credit']) ]] </para> </td> <td> - <para style="terp_Default_Bold_Right_9_U">[[ formatLang( move_g['balance']) ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_Default_Bold_Right_9_U">[[ formatLang( move_g['balance'], currency_obj = company.currency_id) ]]</para> </td> </tr> </blockTable> @@ -290,7 +290,7 @@ <para style="terp_default_9_italic_Rignt">[[ formatLang( move_a['credit']) ]] </para> </td> <td> - <para style="terp_default_9_italic_Rignt">[[ formatLang( move_a['balance']) ]] [[ company.currency_id.symbol]]</para> + <para style="terp_default_9_italic_Rignt">[[ formatLang( move_a['balance'], currency_obj = company.currency_id)]]</para> </td> </tr> </blockTable> diff --git a/addons/account/project/report/inverted_analytic_balance.rml b/addons/account/project/report/inverted_analytic_balance.rml index f112ec8fbd3..54b6878c407 100644 --- a/addons/account/project/report/inverted_analytic_balance.rml +++ b/addons/account/project/report/inverted_analytic_balance.rml @@ -164,7 +164,7 @@ <para style="terp_tblheader_Details_Right">[[ formatLang(sum_credit(objects,data['form']['date1'],data['form']['date2']))]]</para> </td> <td> - <para style="terp_tblheader_Details_Right">[[ formatLang(sum_balance(objects,data['form']['date1'],data['form']['date2']))]] [[ company.currency_id.symbol]]</para> + <para style="terp_tblheader_Details_Right">[[ formatLang(sum_balance(objects,data['form']['date1'],data['form']['date2']), currency_obj = company.currency_id)]]</para> </td> <td> <para style="terp_tblheader_Details_Right">[[ formatLang(sum_quantity(objects,data['form']['date1'],data['form']['date2'])) ]]</para> @@ -188,7 +188,7 @@ <para style="terp_tblheader_Details_Right">[[formatLang(move_g['credit'])]]</para> </td> <td> - <para style="terp_tblheader_Details_Right">[[ formatLang(move_g['balance'])]] [[ company.currency_id.symbol]]</para> + <para style="terp_tblheader_Details_Right">[[ formatLang(move_g['balance'], currency_obj = company.currency_id)]]</para> </td> <td> <para style="terp_tblheader_Details_Right">[[formatLang(move_g['quantity']) ]]</para> @@ -212,7 +212,7 @@ <para style="terp_default_Right_9">[[ formatLang(move_a['credit']) ]] </para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(move_a['balance']) ]] [[ company.currency_id.symbol]]</para> + <para style="terp_default_Right_9">[[ formatLang(move_a['balance'], currency_obj = company.currency_id)]]</para> </td> <td> <para style="terp_default_Right_9">[[ formatLang(move_a['quantity']) ]]</para> diff --git a/addons/account/project/wizard/account_analytic_journal_report.py b/addons/account/project/wizard/account_analytic_journal_report.py index 8148a016927..3d6bf0f5447 100644 --- a/addons/account/project/wizard/account_analytic_journal_report.py +++ b/addons/account/project/wizard/account_analytic_journal_report.py @@ -63,8 +63,12 @@ class account_analytic_journal_report(osv.osv_memory): if context is None: context = {} res = super(account_analytic_journal_report, self).default_get(cr, uid, fields, context=context) + if not context.has_key('active_ids'): + journal_ids = self.pool.get('account.analytic.journal').search(cr, uid, [], context=context) + else: + journal_ids = context.get('active_ids') if 'analytic_account_journal_id' in fields: - res.update({'analytic_account_journal_id': context.get('active_ids',[])}) + res.update({'analytic_account_journal_id': journal_ids}) return res account_analytic_journal_report() diff --git a/addons/account/report/account_analytic_entries_report_view.xml b/addons/account/report/account_analytic_entries_report_view.xml index 8963ba97376..8a421e3cb36 100644 --- a/addons/account/report/account_analytic_entries_report_view.xml +++ b/addons/account/report/account_analytic_entries_report_view.xml @@ -5,7 +5,7 @@ <field name="name">analytic.entries.report.tree</field> <field name="model">analytic.entries.report</field> <field name="arch" type="xml"> - <tree string="Analytic Entries Analysis"> + <tree string="Analytic Entries Analysis" create="false"> <field name="date" invisible="1"/> <field name="year" invisible="1"/> <field name="day" invisible="1"/> diff --git a/addons/account/report/account_entries_report_view.xml b/addons/account/report/account_entries_report_view.xml index 667c61ab78f..551265252cc 100644 --- a/addons/account/report/account_entries_report_view.xml +++ b/addons/account/report/account_entries_report_view.xml @@ -5,7 +5,7 @@ <field name="name">account.entries.report.tree</field> <field name="model">account.entries.report</field> <field name="arch" type="xml"> - <tree colors="blue:move_state == 'draft';black:move_state == 'posted'" string="Entries Analysis"> + <tree colors="blue:move_state == 'draft';black:move_state == 'posted'" create="false" string="Entries Analysis"> <field name="date" invisible="1"/> <field name="date_created" invisible="1"/> <field name="date_maturity" invisible="1"/> diff --git a/addons/account/report/account_invoice_report_view.xml b/addons/account/report/account_invoice_report_view.xml index c22d5d55f45..13a137e53df 100644 --- a/addons/account/report/account_invoice_report_view.xml +++ b/addons/account/report/account_invoice_report_view.xml @@ -5,7 +5,7 @@ <field name="name">account.invoice.report.tree</field> <field name="model">account.invoice.report</field> <field name="arch" type="xml"> - <tree colors="blue:state == 'draft';gray:state in ('cancel','paid');black:state in ('proforma','proforma2')" string="Invoices Analysis"> + <tree colors="blue:state == 'draft';gray:state in ('cancel','paid');black:state in ('proforma','proforma2')" create="false" string="Invoices Analysis"> <field name="date" invisible="1"/> <field name="user_id" invisible="1"/> <field name="year" invisible="1"/> diff --git a/addons/account/report/account_print_overdue.py b/addons/account/report/account_print_overdue.py index 1b617e9afa4..4ddedc102f5 100644 --- a/addons/account/report/account_print_overdue.py +++ b/addons/account/report/account_print_overdue.py @@ -29,34 +29,11 @@ class Overdue(report_sxw.rml_parse): super(Overdue, self).__init__(cr, uid, name, context=context) self.localcontext.update( { 'time': time, - 'adr_get': self._adr_get, 'getLines': self._lines_get, 'tel_get': self._tel_get, 'message': self._message, }) self.context = context - def _adr_get(self, partner, type): - res = [] - res_partner = pooler.get_pool(self.cr.dbname).get('res.partner') - addresses = res_partner.address_get(self.cr, self.uid, [partner.id], [type]) - adr_id = addresses and addresses[type] or False - result = { - 'name': False, - 'street': False, - 'street2': False, - 'city': False, - 'zip': False, - 'state_id':False, - 'country_id': False, - } - if adr_id: - result = res_partner.read(self.cr, self.uid, [adr_id], context=self.context.copy()) - result[0]['country_id'] = result[0]['country_id'] and result[0]['country_id'][1] or False - result[0]['state_id'] = result[0]['state_id'] and result[0]['state_id'][1] or False - return result - - res.append(result) - return res def _tel_get(self,partner): if not partner: diff --git a/addons/account/report/account_print_overdue.rml b/addons/account/report/account_print_overdue.rml index 2d4238823da..577cb9142a2 100644 --- a/addons/account/report/account_print_overdue.rml +++ b/addons/account/report/account_print_overdue.rml @@ -126,15 +126,10 @@ <blockTable colWidths="286.0,224.0" style="Tableau2"> <tr> <td> - <para style="terp_default_9">[[ repeatIn(adr_get(o, 'invoice'),'addr') ]]</para> </td> <td> <para style="terp_default_9">[[ o.title.name or '' ]] [[ o.name ]]</para> - <para style="terp_default_9">[[ addr['street'] ]]</para> - <para style="terp_default_9">[[ addr['street2'] or removeParentNode('para') ]]</para> - <para style="terp_default_9">[[ addr['zip'] ]] [[ addr['city'] ]]</para> - <para style="terp_default_9">[[ addr['state_id'] or removeParentNode('para')]]</para> - <para style="terp_default_9">[[ addr['country_id'] ]]</para> + <para style="terp_default_9">[[ display_address(o.partner_id)] ]]</para> <para style="terp_default_9"> <font color="white"> </font> </para> @@ -216,7 +211,7 @@ <para style="terp_default_Right_9">[[ (line['account_id']['type'] == 'receivable' and formatLang(line['credit']) or 0) or (line['account_id']['type'] == 'payable' and formatLang(line['debit'] * -1) or 0) ]]</para> </td> <td> - <para style="terp_default_Right_9">[[ time.strftime('%Y-%m-%d') > formatLang((line['date_maturity'])) and formatLang(line['debit'] - line['credit']) ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9">[[ time.strftime('%Y-%m-%d') > formatLang((line['date_maturity'])) and formatLang(line['debit'] - line['credit'], currency_obj = company.currency_id) ]]</para> </td> <td> <para style="terp_default_Centre_9">[[ line['blocked'] and 'X' or '' ]]</para> @@ -241,7 +236,7 @@ <para style="terp_default_Right_9">[[ formatLang((reduce(lambda x, y: x + ((y['account_id']['type'] == 'receivable' and y['credit'] or 0) or (y['account_id']['type'] == 'payable' and y['debit'] * -1 or 0)), getLines(o), 0))) ]] </para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang((reduce(lambda x, y: x + (y['debit'] - y['credit']), filter(lambda x: x['date_maturity'] < time.strftime('%Y-%m-%d'), getLines(o)), 0))) ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9">[[ formatLang((reduce(lambda x, y: x + (y['debit'] - y['credit']), filter(lambda x: x['date_maturity'] < time.strftime('%Y-%m-%d'), getLines(o)), 0)), currency_obj=company.currency_id) ]]</para> </td> <td> <para style="terp_default_9"> @@ -261,7 +256,7 @@ <para style="terp_default_Bold_9">Balance :</para> </td> <td> - <para style="terp_tblheader_Details_Right">[[ formatLang((reduce(lambda x, y: x +(y['debit'] - y['credit']), getLines(o), 0))) ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_tblheader_Details_Right">[[ formatLang((reduce(lambda x, y: x +(y['debit'] - y['credit']), getLines(o), 0)), currency_obj = company.currency_id) ]]</para> </td> <td> <para style="terp_default_8"> diff --git a/addons/account/report/account_treasury_report_view.xml b/addons/account/report/account_treasury_report_view.xml index ee21b9e5ec6..be6ae0dfdc9 100644 --- a/addons/account/report/account_treasury_report_view.xml +++ b/addons/account/report/account_treasury_report_view.xml @@ -5,7 +5,7 @@ <field name="name">account.treasury.report.tree</field> <field name="model">account.treasury.report</field> <field name="arch" type="xml"> - <tree string="Treasury Analysis"> + <tree string="Treasury Analysis" create="false"> <field name="date" invisible="1"/> <field name="fiscalyear_id"/> <field name="period_id"/> diff --git a/addons/account_analytic_plans/i18n/de.po b/addons/account_analytic_plans/i18n/de.po index a2ecd5177dd..cff2c65a081 100644 --- a/addons/account_analytic_plans/i18n/de.po +++ b/addons/account_analytic_plans/i18n/de.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:35+0000\n" -"PO-Revision-Date: 2012-02-08 08:45+0000\n" +"PO-Revision-Date: 2012-10-12 23:19+0000\n" "Last-Translator: Ferdinand @ Camptocamp <Unknown>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-28 06:19+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-10-14 04:39+0000\n" +"X-Generator: Launchpad (build 16137)\n" #. module: account_analytic_plans #: view:analytic.plan.create.model:0 @@ -471,7 +471,7 @@ msgstr "Analyt. Verrechnungsvorlage" #. module: account_analytic_plans #: field:account.analytic.plan.instance,code:0 msgid "Distribution Code" -msgstr "Kurzbezeichnung" +msgstr "Verteilungs-Schlüssel" #. module: account_analytic_plans #: report:account.analytic.account.crossovered.analytic:0 @@ -526,6 +526,8 @@ msgid "" "analytic accounts for each plan set. Then, you must attach a plan set to " "your account journals." msgstr "" +"Für jede Kostenrechnung muss ein Stammkonto definiert werden. Dann muss ein " +"Plan definiert werden" #. module: account_analytic_plans #: constraint:account.move.line:0 diff --git a/addons/account_asset/report/account_asset_report_view.xml b/addons/account_asset/report/account_asset_report_view.xml index bc598011086..4865196c4a8 100644 --- a/addons/account_asset/report/account_asset_report_view.xml +++ b/addons/account_asset/report/account_asset_report_view.xml @@ -6,7 +6,7 @@ <field name="name">asset.asset.report.tree</field> <field name="model">asset.asset.report</field> <field name="arch" type="xml"> - <tree string="Assets"> + <tree string="Assets" create="false"> <field name="name" invisible="1"/> <field name="asset_id" invisible="1"/> <field name="asset_category_id" invisible="1"/> diff --git a/addons/account_budget/account_budget_view.xml b/addons/account_budget/account_budget_view.xml index 7868755d143..fdc358f5c98 100644 --- a/addons/account_budget/account_budget_view.xml +++ b/addons/account_budget/account_budget_view.xml @@ -1,13 +1,8 @@ <?xml version="1.0" ?> <openerp> <data> - <!-- budget form and tree view from account module *********************************** --> - <record id="action_account_budget_post_tree" model="ir.actions.act_window"> - <field name="name">Budgets</field> - <field name="res_model">account.budget.post</field> - <field name="view_type">tree</field> - </record> - <menuitem action="action_account_budget_post_tree" id="menu_action_account_budget_post_tree" parent="account.menu_finance_generic_reporting" sequence="6"/> + + <menuitem name="Budgets" id="menu_action_account_budget_post_tree" parent="account.menu_finance_generic_reporting" sequence="6"/> <!-- Budgets diff --git a/addons/account_check_writing/report/check_print.py b/addons/account_check_writing/report/check_print.py index f8e048beb2d..fd52c96b9aa 100644 --- a/addons/account_check_writing/report/check_print.py +++ b/addons/account_check_writing/report/check_print.py @@ -32,7 +32,6 @@ class report_print_check(report_sxw.rml_parse): 'time': time, 'get_lines': self.get_lines, 'fill_stars' : self.fill_stars, - 'get_zip_line': self.get_zip_line, }) def fill_stars(self, amount): amount = amount.replace('Dollars','') @@ -41,25 +40,6 @@ class report_print_check(report_sxw.rml_parse): return ' '.join([amount,'*'*stars]) else: return amount - - def get_zip_line(self, address): - ''' - Get the address line - ''' - ret = '' - if address: - if address.city: - ret += address.city - if address.state_id: - if address.state_id.name: - if ret: - ret += ', ' - ret += address.state_id.name - if address.zip: - if ret: - ret += ' ' - ret += address.zip - return ret def get_lines(self, voucher_lines): result = [] diff --git a/addons/account_check_writing/report/check_print_bottom.rml b/addons/account_check_writing/report/check_print_bottom.rml index bb499a8aac1..f9add2fe60b 100644 --- a/addons/account_check_writing/report/check_print_bottom.rml +++ b/addons/account_check_writing/report/check_print_bottom.rml @@ -281,10 +281,7 @@ </td> <td> <para style="P15">[[ voucher.partner_id.name ]]</para> - <para style="P15">[[ voucher.partner_id.street or removeParentNode('para') ]]</para> - <para style="P15">[[ voucher.partner_id.street2 or removeParentNode('para') ]]</para> - <para style="P15">[[ get_zip_line(voucher.partner_id) ]] </para> - <para style="P15">[[ voucher.partner_id.country_id.name]]</para> + <para style="P15">[[ display_address(voucher.partner_id) or removeParentNode('para') ]]</para> </td> </tr> </blockTable> diff --git a/addons/account_check_writing/report/check_print_middle.rml b/addons/account_check_writing/report/check_print_middle.rml index 5a2f83f20a2..b1fffca662d 100644 --- a/addons/account_check_writing/report/check_print_middle.rml +++ b/addons/account_check_writing/report/check_print_middle.rml @@ -237,10 +237,7 @@ </td> <td> <para style="P15">[[ voucher.partner_id.name ]]</para> - <para style="P15">[[ voucher.partner_id.street or removeParentNode('para') ]]</para> - <para style="P15">[[ voucher.partner_id.street2 or removeParentNode('para') ]]</para> - <para style="P15">[[ get_zip_line(voucher.partner_id) ]] </para> - <para style="P15">[[ voucher.partner_id.country_id.name]]</para> + <para style="P15">[[ display_address(voucher.partner_id) or removeParentNode('para') ]]</para> </td> </tr> </blockTable> diff --git a/addons/account_check_writing/report/check_print_top.rml b/addons/account_check_writing/report/check_print_top.rml index 41526605f47..9a4d633e680 100644 --- a/addons/account_check_writing/report/check_print_top.rml +++ b/addons/account_check_writing/report/check_print_top.rml @@ -153,9 +153,7 @@ </td> <td> <para style="P9">[[ voucher.partner_id.name ]] </para> - <para style="P15">[[ voucher.partner_id.street2 or removeParentNode('para') ]]</para> - <para style="P15">[[ get_zip_line(voucher.partner_id) ]] </para> - <para style="P15">[[ voucher.partner_id.country_id.name]]</para> + <para style="P15">[[ display_address(voucher.partner_id) or removeParentNode('para') ]]</para> </td> <td> <para/> diff --git a/addons/account_followup/report/account_followup_print.py b/addons/account_followup/report/account_followup_print.py index 8d64ce30f6b..593430691aa 100644 --- a/addons/account_followup/report/account_followup_print.py +++ b/addons/account_followup/report/account_followup_print.py @@ -30,7 +30,6 @@ class report_rappel(report_sxw.rml_parse): self.localcontext.update({ 'time': time, 'ids_to_objects': self._ids_to_objects, - 'adr_get': self._adr_get, 'getLines': self._lines_get, 'get_text': self._get_text }) @@ -43,11 +42,6 @@ class report_rappel(report_sxw.rml_parse): all_lines.append(line) return all_lines - def _adr_get(self, stat_line, type): - res_partner = pooler.get_pool(self.cr.dbname).get('res.partner') - adr = res_partner.address_get(self.cr, self.uid, [stat_line.partner_id.id], [type])[type] - return adr and res_partner.read(self.cr, self.uid, [adr]) or [{}] - def _lines_get(self, stat_by_partner_line): pool = pooler.get_pool(self.cr.dbname) moveline_obj = pool.get('account.move.line') diff --git a/addons/account_followup/report/account_followup_print.rml b/addons/account_followup/report/account_followup_print.rml index 3d096ecf3ac..7f2242991de 100644 --- a/addons/account_followup/report/account_followup_print.rml +++ b/addons/account_followup/report/account_followup_print.rml @@ -129,15 +129,10 @@ <blockTable colWidths="298.0,234.0" style="Tableau2"> <tr> <td> - <para style="terp_default_9">[[ repeatIn(adr_get(o,'invoice'),'a' )]]</para> </td> <td> <para style="terp_default_9">[[ o.partner_id.name or '' ]]</para> - <para style="terp_default_9">[[ a['street'] or '']]</para> - <para style="terp_default_9">[[ a['street2'] or removeParentNode('para') ]]</para> - <para style="terp_default_9">[[ a['zip'] or '' ]] [[ a['city'] or '' ]]</para> - <para style="terp_default_9">[[( a['state_id'] and a['state_id'][1]) or removeParentNode('para') ]]</para> - <para style="terp_default_9">[[( a['country_id'] and a['country_id'][1]) or '']]</para> + <para style="terp_default_9">[[ display_address(o.partner_id) or '']]</para> <para style="terp_default_9"> <font color="white"> </font> </para> diff --git a/addons/account_payment/report/order.rml b/addons/account_payment/report/order.rml index 973588e5410..7ad897890e4 100644 --- a/addons/account_payment/report/order.rml +++ b/addons/account_payment/report/order.rml @@ -256,10 +256,10 @@ <para style="terp_default_Centre_9">[[line.date=='False' and '-' or formatLang(line.date,date=True) ]]</para> </td> <td> - <para style="terp_default_Right_9">[[formatLang(line.amount) or '-' ]] [[get_company_currency_symbol()]] </para> + <para style="terp_default_Right_9">[[formatLang(line.amount, currency_obj= user.company_id.currency_id) or '-' ]] </para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(line.amount_currency) ]] [[ line.currency.symbol]] </para> + <para style="terp_default_Right_9">[[ formatLang(line.amount_currency, currency_obj= line.currency)]]</para> </td> </tr> </blockTable> @@ -275,10 +275,10 @@ <para style="terp_default_Bold_9">Total:</para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(get_amount_total(o)) or '' ]] [[get_company_currency_symbol()]] </para> + <para style="terp_default_Right_9">[[ formatLang(get_amount_total(o), currency_obj= user.company_id.currency_id) or '' ]] </para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(get_amount_total_in_currency(o)) or '' ]] [[get_company_currency_symbol()]] </para> + <para style="terp_default_Right_9">[[ formatLang(get_amount_total_in_currency(o), currency_obj= user.company_id.currency_id) or '' ]] </para> </td> </tr> </blockTable> diff --git a/addons/account_payment/report/payment_order.py b/addons/account_payment/report/payment_order.py index 6872bbe3516..5f9708f876c 100644 --- a/addons/account_payment/report/payment_order.py +++ b/addons/account_payment/report/payment_order.py @@ -32,7 +32,6 @@ class payment_order(report_sxw.rml_parse): 'time': time, 'get_invoice_name': self._get_invoice_name, 'get_company_currency': self._get_company_currency, - 'get_company_currency_symbol': self._get_company_currency_symbol, 'get_amount_total_in_currency': self._get_amount_total_in_currency, 'get_amount_total': self._get_amount_total, 'get_account_name': self._get_account_name, @@ -72,12 +71,8 @@ class payment_order(report_sxw.rml_parse): user = pool.get('res.users').browse(self.cr, self.uid, self.uid) return user.company_id and user.company_id.currency_id and user.company_id.currency_id.symbol or False - def _get_company_currency_symbol(self): - pool = pooler.get_pool(self.cr.dbname) - user = pool.get('res.users').browse(self.cr, self.uid, self.uid) - return user.company_id and user.company_id.currency_id and user.company_id.currency_id.symbol or False - def _get_account_name(self, bank_id): + def _get_account_name(self,bank_id): if bank_id: pool = pooler.get_pool(self.cr.dbname) value_name = pool.get('res.partner.bank').name_get(self.cr, self.uid, [bank_id]) diff --git a/addons/account_voucher/report/account_voucher_print.rml b/addons/account_voucher/report/account_voucher_print.rml index 923e900887a..9f0f2e1f07e 100644 --- a/addons/account_voucher/report/account_voucher_print.rml +++ b/addons/account_voucher/report/account_voucher_print.rml @@ -219,7 +219,7 @@ <para style="terp_default_9_30cm">[[ p['pname'] ]]</para> </td> <td> - <para style="terp_default_Right_9">[[ p['amount'] ]] [[ voucher.currency_id.symbol ]]</para> + <para style="terp_default_Right_9">[[ formatLang(p['amount'], currency_obj=voucher.currency_id) ]]</para> </td> </tr> <tr> @@ -323,7 +323,7 @@ </para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ voucher.amount ]] [[ voucher.currency_id.symbol ]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(voucher.amount, currency_obj=voucher.currency_id) ]]</para> </td> </tr> </blockTable> diff --git a/addons/account_voucher/report/account_voucher_sales_receipt_view.xml b/addons/account_voucher/report/account_voucher_sales_receipt_view.xml index 15b2433ec25..fbd40ee17ba 100644 --- a/addons/account_voucher/report/account_voucher_sales_receipt_view.xml +++ b/addons/account_voucher/report/account_voucher_sales_receipt_view.xml @@ -6,7 +6,7 @@ <field name="name">sale.receipt.report.tree</field> <field name="model">sale.receipt.report</field> <field name="arch" type="xml"> - <tree colors="blue:state == 'draft';gray:state in ('cancel','paid');black:state in ('proforma','proforma2')" string="Sales Receipt Analysis"> + <tree colors="blue:state == 'draft';gray:state in ('cancel','paid');black:state in ('proforma','proforma2')" create="false" string="Sales Receipt Analysis"> <field name="date" invisible="1"/> <field name="user_id" invisible="1"/> <field name="year" invisible="1"/> diff --git a/addons/audittrail/audittrail_view.xml b/addons/audittrail/audittrail_view.xml index b041329f6bd..c26e1b5b570 100644 --- a/addons/audittrail/audittrail_view.xml +++ b/addons/audittrail/audittrail_view.xml @@ -145,7 +145,7 @@ <field name="name">audittrail.log.tree</field> <field name="model">audittrail.log</field> <field name="arch" type="xml"> - <tree string="AuditTrail Logs"> + <tree string="AuditTrail Logs" create="false"> <field name="timestamp"/> <field name="name"/> <field name="object_id"/> diff --git a/addons/auth_oauth/res_users.py b/addons/auth_oauth/res_users.py index 9c1f88bd7f4..115e3136f00 100644 --- a/addons/auth_oauth/res_users.py +++ b/addons/auth_oauth/res_users.py @@ -21,7 +21,7 @@ class res_users(osv.Model): } _sql_constraints = [ - ('uniq_users_oauth_provider_oauht_uid', 'unique(auth_provider_id, auth_uid)', 'OAuth UID must be unique per provider'), + ('uniq_users_oauth_provider_oauth_uid', 'unique(oauth_provider_id, oauth_uid)', 'OAuth UID must be unique per provider'), ] def auth_oauth_rpc(self, cr, uid, endpoint, access_token, context=None): diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js index 0a60fe18ffb..33c86e88b2c 100644 --- a/addons/base_import/static/src/js/import.js +++ b/addons/base_import/static/src/js/import.js @@ -416,7 +416,7 @@ openerp.base_import = function (instance) { '</div>' ].join('') }, - })).get(0).scrollIntoView(); + })); }, }); // FSM-ize DataImport diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index 48c6491a7c3..fbe47c08dca 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -777,7 +777,6 @@ class crm_lead(base_stage, format_address, osv.osv): 'default_user_id': uid, 'default_section_id': opportunity.section_id and opportunity.section_id.id or False, 'default_email_from': opportunity.email_from, - 'default_state': 'open', 'default_name': opportunity.name, } return res diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml index 1da78e50843..ba46cc023ab 100644 --- a/addons/crm/crm_view.xml +++ b/addons/crm/crm_view.xml @@ -105,7 +105,23 @@ <field name="allow_unlink"/> </group> <separator string="Team Members"/> - <field name="member_ids"/> + <field name="member_ids" widget="many2many_kanban"> + <kanban quick_create="false" create="true"> + <field name="name"/> + <templates> + <t t-name="kanban-box"> + <div style="position: relative"> + <a t-if="! read_only_mode" type="delete" style="position: absolute; right: 0; padding: 4px; diplay: inline-block">X</a> + <div class="oe_module_vignette"> + <div class="oe_module_desc"> + <field name="name"/> + </div> + </div> + </div> + </t> + </templates> + </kanban> + </field> </page> <page string="Stages"> <separator string="Select Stages for this Sales Team"/> diff --git a/addons/crm/report/crm_lead_report_view.xml b/addons/crm/report/crm_lead_report_view.xml index 35ed9411215..a17633d0ef6 100644 --- a/addons/crm/report/crm_lead_report_view.xml +++ b/addons/crm/report/crm_lead_report_view.xml @@ -8,7 +8,7 @@ <field name="name">crm.lead.report.tree</field> <field name="model">crm.lead.report</field> <field name="arch" type="xml"> - <tree string="Leads Analysis"> + <tree string="Leads Analysis" create="false"> <field name="creation_year" invisible="1"/> <field name="creation_month" invisible="1"/> <field name="creation_day" invisible="1"/> @@ -130,7 +130,7 @@ <field name="name">crm.lead.report.tree</field> <field name="model">crm.lead.report</field> <field name="arch" type="xml"> - <tree colors="blue:state == 'draft';black:state in ('open','pending','done');gray:state == 'cancel' " string="Opportunities Analysis"> + <tree colors="blue:state == 'draft';black:state in ('open','pending','done');gray:state == 'cancel' " create="false" string="Opportunities Analysis"> <field name="creation_year" invisible="1"/> <field name="creation_month" invisible="1"/> <field name="creation_day" invisible="1"/> diff --git a/addons/crm/report/crm_phonecall_report_view.xml b/addons/crm/report/crm_phonecall_report_view.xml index ec7ea5e6bdb..a2120aef6ab 100644 --- a/addons/crm/report/crm_phonecall_report_view.xml +++ b/addons/crm/report/crm_phonecall_report_view.xml @@ -8,7 +8,7 @@ <field name="name">crm.phonecall.report.tree</field> <field name="model">crm.phonecall.report</field> <field name="arch" type="xml"> - <tree string="Phone calls"> + <tree string="Phone calls" create="false"> <field name="name" invisible="1"/> <field name="month" invisible="1"/> <field name="section_id" invisible="1"/> diff --git a/addons/crm/res_config.py b/addons/crm/res_config.py index b04853d9f6a..6f431b90cba 100644 --- a/addons/crm/res_config.py +++ b/addons/crm/res_config.py @@ -32,6 +32,13 @@ class crm_configuration(osv.osv_memory): 'group_fund_raising': fields.boolean("Manage Fund Raising", implied_group='crm.group_fund_raising', help="""Allows you to trace and manage your activities for fund raising."""), + 'module_crm_claim':fields.boolean("Manage Customer Claims", + help="""Allows you to track your customers/suppliers claims and grievances. + This installs the module crm_claim."""), + 'module_crm_helpdesk':fields.boolean("Manage Helpdesk and Support", + help="""Allows you to communicate with Customer, process Customer query, and provide better help and support. This installs the module crm_helpdesk."""), + + } # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/crm/res_config_view.xml b/addons/crm/res_config_view.xml index 6330d7a0500..9534c8620ee 100644 --- a/addons/crm/res_config_view.xml +++ b/addons/crm/res_config_view.xml @@ -7,6 +7,22 @@ <field name="model">sale.config.settings</field> <field name="inherit_id" ref="base_setup.view_sale_config_settings"/> <field name="arch" type="xml"> + <div name="config_sale" position="before"> + <separator string="After-Sale Services"/> + <group> + <label for="id" string="Features"/> + <div> + <div> + <field name="module_crm_claim" class="oe_inline"/> + <label for="module_crm_claim"/> + </div> + <div> + <field name="module_crm_helpdesk" class="oe_inline"/> + <label for="module_crm_helpdesk"/> + </div> + </div> + </group> + </div> <group name="On Mail Client" version="7.0" position="after"> <group> <label for="id" string="On Mail Server"/> diff --git a/addons/crm_claim/__openerp__.py b/addons/crm_claim/__openerp__.py index f5ab836401b..dfc549412d4 100644 --- a/addons/crm_claim/__openerp__.py +++ b/addons/crm_claim/__openerp__.py @@ -25,8 +25,10 @@ 'version': '1.0', 'category': 'Customer Relationship Management', 'description': """ -This modules allows you to track your customers/suppliers claims and grievances. + +Manage Customer Claims. ================================================================================ +This application allows you to track your customers/suppliers claims and grievances. It is fully integrated with the email gateway so that you can create automatically new claims based on incoming emails. diff --git a/addons/crm_claim/report/crm_claim_report_view.xml b/addons/crm_claim/report/crm_claim_report_view.xml index 5a3a3d92a09..a61490c6086 100644 --- a/addons/crm_claim/report/crm_claim_report_view.xml +++ b/addons/crm_claim/report/crm_claim_report_view.xml @@ -8,7 +8,7 @@ <field name="name">crm.claim.report.tree</field> <field name="model">crm.claim.report</field> <field name="arch" type="xml"> - <tree string="Claims"> + <tree string="Claims" create="false"> <field name="name" invisible="1"/> <field name="month" invisible="1"/> <field name="section_id" invisible="1"/> diff --git a/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml b/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml index 4750fa3344d..05f502656d2 100644 --- a/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml +++ b/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml @@ -8,7 +8,7 @@ <field name="name">crm.helpdesk.report.tree</field> <field name="model">crm.helpdesk.report</field> <field name="arch" type="xml"> - <tree string="Helpdesk"> + <tree string="Helpdesk" create="false"> <field name="name" invisible="1"/> <field name="month" invisible="1"/> <field name="section_id" invisible="1"/> diff --git a/addons/crm_partner_assign/report/crm_lead_report_view.xml b/addons/crm_partner_assign/report/crm_lead_report_view.xml index 662a7c3dce0..ee9266a0235 100644 --- a/addons/crm_partner_assign/report/crm_lead_report_view.xml +++ b/addons/crm_partner_assign/report/crm_lead_report_view.xml @@ -65,7 +65,7 @@ <field name="name">crm.lead.assign.report.tree</field> <field name="model">crm.lead.report.assign</field> <field name="arch" type="xml"> - <tree string="Opportunities Assignment Analysis"> + <tree string="Opportunities Assignment Analysis" create="false"> <field name="year" invisible="1"/> <field name="month" invisible="1"/> <field name="date_assign" invisible="1"/> diff --git a/addons/crm_partner_assign/report/crm_partner_report_view.xml b/addons/crm_partner_assign/report/crm_partner_report_view.xml index 107328ac4e0..eb2c86874c4 100644 --- a/addons/crm_partner_assign/report/crm_partner_report_view.xml +++ b/addons/crm_partner_assign/report/crm_partner_report_view.xml @@ -41,7 +41,7 @@ <field name="name">crm.partner.assign.report.tree</field> <field name="model">crm.partner.report.assign</field> <field name="arch" type="xml"> - <tree string="Opportunities Assignment Analysis"> + <tree string="Opportunities Assignment Analysis" create="false"> <field name="partner_id" invisible="1"/> <field name="country_id" invisible="1"/> <field name="grade_id" invisible="1"/> diff --git a/addons/document/document.py b/addons/document/document.py index 3ae783f49e7..37a0219d143 100644 --- a/addons/document/document.py +++ b/addons/document/document.py @@ -36,8 +36,7 @@ DMS_ROOT_PATH = tools.config.get('document_path', os.path.join(tools.config['roo class document_file(osv.osv): _inherit = 'ir.attachment' - _rec_name = 'datas_fname' - + _rec_name = 'name' def _attach_parent_id(self, cr, uid, ids=None, context=None): """Migrate ir.attachments to the document module. @@ -149,29 +148,12 @@ class document_file(osv.osv): _sql_constraints = [ # filename_uniq is not possible in pure SQL ] - def _check_duplication(self, cr, uid, vals, ids=None, op='create'): - name = vals.get('name', False) - parent_id = vals.get('parent_id', False) - res_model = vals.get('res_model', False) - res_id = vals.get('res_id', 0) - if op == 'write': - for file in self.browse(cr, uid, ids): # FIXME fields_only - if not name: - name = file.name - if not parent_id: - parent_id = file.parent_id and file.parent_id.id or False - if not res_model: - res_model = file.res_model and file.res_model or False - if not res_id: - res_id = file.res_id and file.res_id or 0 - res = self.search(cr, uid, [('id', '<>', file.id), ('name', '=', name), ('parent_id', '=', parent_id), ('res_model', '=', res_model), ('res_id', '=', res_id)]) - if len(res): - return False - if op == 'create': - res = self.search(cr, uid, [('name', '=', name), ('parent_id', '=', parent_id), ('res_id', '=', res_id), ('res_model', '=', res_model)]) - if len(res): - return False - return True + + def onchange_file(self, cr, uid, ids, datas_fname=False, context=None): + res = {'value':{}} + if datas_fname: + res['value'].update({'name': datas_fname}) + return res def check(self, cr, uid, ids, mode, context=None, values=None): """Check access wrt. res_model, relax the rule of ir.attachment parent @@ -219,8 +201,6 @@ class document_file(osv.osv): res = self.search(cr, uid, [('id', 'in', ids)]) if not len(res): return False - if not self._check_duplication(cr, uid, vals, ids, 'write'): - raise osv.except_osv(_('ValidateError'), _('File name must be unique!')) # if nodes call this write(), they must skip the code below from_node = context and context.get('__from_node', False) @@ -286,22 +266,8 @@ class document_file(osv.osv): else: if vals.get('file_size'): del vals['file_size'] - result = self._check_duplication(cr, uid, vals) - if not result: - domain = [ - ('res_id', '=', vals['res_id']), - ('res_model', '=', vals['res_model']), - ('datas_fname', '=', vals['datas_fname']), - ] - attach_ids = self.search(cr, uid, domain, context=context) - super(document_file, self).write(cr, uid, attach_ids, - {'datas' : vals['datas']}, - context=context) - result = attach_ids[0] - else: - #raise osv.except_osv(_('ValidateError'), _('File name must be unique!')) - result = super(document_file, self).create(cr, uid, vals, context) - return result + + return super(document_file, self).create(cr, uid, vals, context) def __get_partner_id(self, cr, uid, res_model, res_id, context=None): """ A helper to retrieve the associated partner from any res_model+id diff --git a/addons/document/document_view.xml b/addons/document/document_view.xml index b631583fb27..54776c4d36e 100644 --- a/addons/document/document_view.xml +++ b/addons/document/document_view.xml @@ -228,6 +228,9 @@ <field name="priority" eval="1"/> <field name="inherit_id" ref="base.view_attachment_form"/> <field name="arch" type="xml"> + <xpath expr="//field[@name='datas_fname']" position="replace"> + <field name="datas_fname" invisible="1" on_change="onchange_file(datas_fname)"/> + </xpath> <field name="url" position="after"> <field name="user_id"/> </field> @@ -338,15 +341,6 @@ <field name="value" eval="'ir.actions.act_window,%d'%action_document_file_directory_form"/> </record> - <record model="ir.ui.view" id="view_attachment_form_inherit"> - <field name="name">ir.attachment.view.inherit</field> - <field name="model">ir.attachment</field> - <field name="inherit_id" ref="base.view_attachment_form"/> - <field name="arch" type="xml"> - <field name="datas_fname" position = "replace" > - </field> - </field> - </record> <record model="ir.ui.view" id="view_process_node_form_inherit1"> <field name="name">process.node.form</field> diff --git a/addons/edi/controllers/main.py b/addons/edi/controllers/main.py index 71560aa9e60..c62fef19cba 100644 --- a/addons/edi/controllers/main.py +++ b/addons/edi/controllers/main.py @@ -4,14 +4,8 @@ import textwrap import simplejson import werkzeug.wrappers -try: - # embedded - import openerp.addons.web.common.http as openerpweb - import openerp.addons.web.controllers.main as webmain -except ImportError: - # standalone - import web.common.http as openerpweb - import web.controllers.main as webmain +import openerp.addons.web.http as openerpweb +import openerp.addons.web.controllers.main as webmain class EDI(openerpweb.Controller): # http://hostname:8069/edi/view?db=XXXX&token=XXXXXXXXXXX diff --git a/addons/email_template/wizard/mail_compose_message_view.xml b/addons/email_template/wizard/mail_compose_message_view.xml index 8d5bc26b213..655f5b9d0c2 100644 --- a/addons/email_template/wizard/mail_compose_message_view.xml +++ b/addons/email_template/wizard/mail_compose_message_view.xml @@ -39,7 +39,7 @@ attrs="{'invisible':[('use_template','=',False)]}" on_change="onchange_template_id(use_template, template_id, composition_mode, model, res_id, context)"/> </xpath> - <xpath expr="//button[@class='oe_mail_compose_message_attachment']" position="before"> + <xpath expr="//button[@name='dummy']" position="before"> <button icon="/email_template/static/src/img/email_template.png" type="object" name="toggle_template" string="" help="Use a message template" diff --git a/addons/event/event.py b/addons/event/event.py index d86fd92d054..b3aee2493f8 100644 --- a/addons/event/event.py +++ b/addons/event/event.py @@ -267,25 +267,18 @@ class event_event(osv.osv): return {'value': dic} def on_change_address_id(self, cr, uid, ids, address_id, context=None): - values = { - 'street' : False, - 'street2' : False, - 'city' : False, - 'zip' : False, - 'country_id' : False, - 'state_id' : False, - } - if isinstance(address_id, (long, int)): - address = self.pool.get('res.partner').browse(cr, uid, address_id, context=context) - values.update({ - 'street' : address.street, - 'street2' : address.street2, - 'city' : address.city, - 'country_id' : address.country_id and address.country_id.id, - 'state_id' : address.state_id and address.state_id.id, - 'zip' : address.zip, - }) - + values = {} + if not address_id: + return values + address = self.pool.get('res.partner').browse(cr, uid, address_id, context=context) + values.update({ + 'street' : address.street, + 'street2' : address.street2, + 'city' : address.city, + 'country_id' : address.country_id and address.country_id.id or False, + 'state_id' : address.state_id and address.state_id.id or False, + 'zip' : address.zip, + }) return {'value' : values} diff --git a/addons/event/event_view.xml b/addons/event/event_view.xml index ecd40e05531..68742754166 100644 --- a/addons/event/event_view.xml +++ b/addons/event/event_view.xml @@ -116,30 +116,28 @@ <label for="name" class="oe_edit_only"/> <h1><field name="name"/></h1> </div> - <div> + <group> <group> - <group> - <label for="address_id" string="Location"/> - <div> - <field name="address_id" on_change="on_change_address_id(address_id)" /> - <field name="street" placeholder="Street..."/> - <field name="street2"/> - <div class="address_format"> - <field name="city" placeholder="City" style="width: 40%%"/> - <field name="state_id" class="oe_no_button" placeholder="State" style="width: 37%%" options='{"no_open": True}'/> - <field name="zip" placeholder="ZIP" style="width: 20%%"/> - </div> - <field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": True}'/> - </div> - </group> - <group> - <field name="type" on_change="onchange_event_type(type,context)"/> - <field name="date_begin"/> - <field name="date_end"/> - <field name="company_id" groups="base.group_multi_company"/> - </group> + <label for="address_id" string="Location"/> + <div> + <field name="address_id" on_change="on_change_address_id(address_id)" /> + <field name="street" placeholder="Street..."/> + <field name="street2"/> + <div class="address_format"> + <field name="city" placeholder="City" style="width: 40%%"/> + <field name="state_id" class="oe_no_button" placeholder="State" style="width: 37%%" options='{"no_open": true}'/> + <field name="zip" placeholder="ZIP" style="width: 20%%"/> + </div> + <field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": true}'/> + </div> </group> - </div> + <group> + <field name="type" on_change="onchange_event_type(type,context)" /> + <field name="date_begin"/> + <field name="date_end"/> + <field name="company_id" groups="base.group_multi_company"/> + </group> + </group> <notebook> <page string="Email Configuration" groups="base.group_no_one"> <group> @@ -284,13 +282,13 @@ <t t-if="record.register_avail.raw_value != 0"> <t t-if="!record.is_subscribed.raw_value"> <input t-att-id="record.id.raw_value" type="text" name="subscribe" class="no_of_seats" value="1" onchange="document.getElementById('btn_sub' +this.id).setAttribute('data-context',JSON.stringify({'ticket':this.value}))"/> - <button t-att-id="'btn_sub'+record.id.raw_value" type="object" name="subscribe_to_event" class="oe_mail_button_follow"> + <button t-att-id="'btn_sub'+record.id.raw_value" type="object" name="subscribe_to_event" class="oe_subscribe_button"> <span >Subscribe</span> </button> </t> </t> <t t-if="record.is_subscribed.raw_value"> - <button type="object" name="unsubscribe_to_event" class="oe_mail_button_unfollow"> + <button type="object" name="unsubscribe_to_event" class="oe_unsubscribe_button "> <span>Subscribed</span> <span class="unsubscribe">Unsubscribe</span> </button> diff --git a/addons/event/report/report_event_registration.py b/addons/event/report/report_event_registration.py index 060b1ef7556..042676d0c32 100644 --- a/addons/event/report/report_event_registration.py +++ b/addons/event/report/report_event_registration.py @@ -23,16 +23,16 @@ from osv import fields, osv import tools class report_event_registration(osv.osv): - _name = "report.event.registration" _description = "Events Analysis" _auto = False _columns = { 'event_date': fields.char('Event Start Date', size=64, readonly=True), 'year': fields.char('Year', size=4, readonly=True), - 'month': fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), - ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'), - ('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True), + 'month': fields.selection([ + ('01','January'), ('02','February'), ('03','March'), ('04','April'), + ('05','May'), ('06','June'), ('07','July'), ('08','August'), + ('09','September'), ('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True), 'event_id': fields.many2one('event.event', 'Event', required=True), 'draft_state': fields.integer(' # No of Draft Registrations', size=20), 'confirm_state': fields.integer(' # No of Confirmed Registrations', size=20), @@ -48,17 +48,18 @@ class report_event_registration(osv.osv): 'company_id': fields.many2one('res.company', 'Company', readonly=True), } _order = 'event_date desc' + def init(self, cr): """ - initialize the sql view for the event registration - cr -- the cursor + Initialize the sql view for the event registration """ tools.drop_view_if_exists(cr, 'report_event_registration') - cr.execute(""" - CREATE OR REPLACE view report_event_registration AS ( - SELECT - event_id, - r.id, + + # TOFIX this request won't select events that have no registration + cr.execute(""" CREATE VIEW report_event_registration AS ( + SELECT + e.id::char || '/' || coalesce(r.id::char,'') AS id, + e.id AS event_id, e.user_id AS user_id, r.user_id AS user_id_registration, r.name AS name_registration, @@ -72,23 +73,21 @@ class report_event_registration(osv.osv): CASE WHEN r.state IN ('open','done') THEN r.nb_register ELSE 0 END AS confirm_state, e.type AS event_type, e.register_max AS register_max, - e.state AS event_state, - r.state AS registration_state - FROM + e.state AS event_state, + r.state AS registration_state + FROM event_event e + LEFT JOIN event_registration r ON (e.id=r.event_id) - LEFT JOIN - event_registration r ON (e.id=r.event_id) - - GROUP BY + GROUP BY event_id, user_id_registration, - e.id, r.id, registration_state, r.nb_register, - event_type, e.id, e.date_begin, e.main_speaker_id, - e.register_max,event_id, e.user_id,e.company_id, + event_type, + e.id, + e.date_begin, e.user_id, event_state, e.company_id, @@ -97,9 +96,8 @@ class report_event_registration(osv.osv): month, e.register_max, name_registration - - ) - """) + ) + """) report_event_registration() diff --git a/addons/event/report/report_event_registration_view.xml b/addons/event/report/report_event_registration_view.xml index f39b6aecfe7..249757efbd3 100644 --- a/addons/event/report/report_event_registration_view.xml +++ b/addons/event/report/report_event_registration_view.xml @@ -1,13 +1,13 @@ <?xml version="1.0"?> <openerp> - <data> + <data> - <!-- report , event on registration... start --> + <!-- Report, event on registration --> <record model="ir.ui.view" id="report_event_registration_tree"> <field name="name">report.event.registration.tree</field> <field name="model">report.event.registration</field> <field name="arch" type="xml"> - <tree colors="blue:event_state == 'draft';black:event_state == 'confirm';gray:event_state in('done','cancel')" string="Events Analysis"> + <tree colors="blue:event_state == 'draft';black:event_state == 'confirm';gray:event_state in('done','cancel')" create="false" string="Events Analysis"> <field name="event_date" invisible="1"/> <field name="user_id" invisible="1"/> <field name="speaker_id" invisible="1"/> @@ -28,7 +28,6 @@ </field> </record> - <record model ="ir.ui.view" id="report_event_registration_graph"> <field name="name">report.event.registration.graph</field> <field name="model">report.event.registration</field> @@ -42,8 +41,7 @@ </field> </record> - <!-- Event on Registration search view --> - + <!-- Event on Registration search view --> <record model="ir.ui.view" id="view_report_event_registration_search"> <field name="name">report.event.registration.search</field> <field name="model">report.event.registration</field> @@ -82,28 +80,28 @@ </field> </record> - <record model="ir.actions.act_window" id="action_report_event_registration"> + <record model="ir.actions.act_window" id="action_report_event_registration"> <field name="name">Events Analysis</field> <field name="res_model">report.event.registration</field> <field name="view_type">form</field> <field name="view_mode">tree,graph</field> <field name="search_view_id" ref="view_report_event_registration_search"/> - <field name="context">{"search_default_year":1,"search_default_this_month":1,"search_default_365day":1, "search_default_invoiced":1, "search_default_event":1, 'group_by_no_leaf':1, 'group_by':[]}</field> + <field name="context">{"search_default_year":1,"search_default_this_month":1,"search_default_365day":1, "search_default_invoiced":1, "search_default_event":1, "group_by_no_leaf":1, "group_by":[]}</field> </record> - <record model="ir.actions.act_window.view" id="action_report_event_registration_tree"> + <record model="ir.actions.act_window.view" id="action_report_event_registration_tree"> <field name="sequence" eval="1"/> <field name="view_mode">tree</field> <field name="view_id" ref="report_event_registration_tree"/> <field name="act_window_id" ref="action_report_event_registration"/> - </record> + </record> - <record model="ir.actions.act_window.view" id="action_report_event_registration_graph"> + <record model="ir.actions.act_window.view" id="action_report_event_registration_graph"> <field name="sequence" eval="2"/> <field name="view_mode">graph</field> <field name="view_id" ref="report_event_registration_graph"/> <field name="act_window_id" ref="action_report_event_registration"/> - </record> + </record> <menuitem parent="base.menu_reporting" id="menu_reporting_events" sequence="30" groups="event.group_event_manager" name="Events"/> <menuitem parent="menu_reporting_events" action="action_report_event_registration" id="menu_report_event_registration" sequence="3" groups="event.group_event_manager"/> diff --git a/addons/event/static/src/css/event.css b/addons/event/static/src/css/event.css index dd6cc21ffc9..f5bc83b2a96 100644 --- a/addons/event/static/src/css/event.css +++ b/addons/event/static/src/css/event.css @@ -43,4 +43,10 @@ width:256px; border: 1px solid #eeeeee; } +.oe_unsubscribe, .oe_unsubscribe_button:hover span { + display: none; + } +.oe_unsubscribe_button:hover .oe_unsubscribe { + display: inline; + } diff --git a/addons/event_sale/event_sale_view.xml b/addons/event_sale/event_sale_view.xml index 52f935a0760..ab7568d704e 100644 --- a/addons/event_sale/event_sale_view.xml +++ b/addons/event_sale/event_sale_view.xml @@ -6,10 +6,10 @@ <field name="model">product.product</field> <field name="inherit_id" ref="product.product_normal_form_view" /> <field name="arch" type="xml"> - <field name="purchase_ok" position="before"> + <div name="options" position="inside"> <field name="event_ok" on_change="onchange_event_ok(event_ok, context)"/> <label for="event_ok"/> - </field> + </div> <field name='default_code' position='before'> <field name="event_type_id" attrs="{'readonly': [('event_ok', '=', False)]}"/> </field> diff --git a/addons/google_docs/__openerp__.py b/addons/google_docs/__openerp__.py index b02f2e912fc..8b9a4123aa9 100644 --- a/addons/google_docs/__openerp__.py +++ b/addons/google_docs/__openerp__.py @@ -27,7 +27,6 @@ 'category': 'Tools', 'installable': True, 'auto_install': False, - 'web': True, 'js': ['static/src/js/gdocs.js'], 'data': [ 'security/ir.model.access.csv', diff --git a/addons/google_docs/google_docs.py b/addons/google_docs/google_docs.py index f1477f9c7f2..5ff80530c94 100644 --- a/addons/google_docs/google_docs.py +++ b/addons/google_docs/google_docs.py @@ -26,8 +26,11 @@ try: from gdata.client import RequestError from gdata.docs.service import DOCUMENT_LABEL import gdata.auth + from gdata.docs.data import Resource except ImportError: - raise osv.except_osv(_('Google Docs Error!'), _('Please install gdata-python-client from http://code.google.com/p/gdata-python-client/downloads/list.')) + import logging + _logger = logging.getLogger(__name__) + _logger.warning("Please install latest gdata-python-client from http://code.google.com/p/gdata-python-client/downloads/list") class google_docs_ir_attachment(osv.osv): _inherit = 'ir.attachment' diff --git a/addons/google_docs/res_config_user_view.xml b/addons/google_docs/res_config_user_view.xml index 4aabba3ac5a..e6c4223735f 100644 --- a/addons/google_docs/res_config_user_view.xml +++ b/addons/google_docs/res_config_user_view.xml @@ -8,9 +8,10 @@ <field name="name">google_docs.config.tree</field> <field name="model">google.docs.config</field> <field name="arch" type="xml"> - <group name="default_filters" position="inside"> + <tree string="Google Docs Configuration"> <field name="model_id"/> - </group> + <field name="name_template"/> + </tree> </field> </record> @@ -18,11 +19,25 @@ <field name="name">google_docs.config.form</field> <field name="model">google.docs.config</field> <field name="arch" type="xml"> - <group colspan='4'> - <field name="model_id"/> - <field name='gdocs_resource_id'/> - <field name='name_template'/> - </group> + <form string="Google Docs Configuration" version="7.0"> + <group> + <field name="model_id"/> + <label for='gdocs_resource_id'/> + <div> + <field name='gdocs_resource_id'/> + <p class="oe_grey"> +This is the id of the template document, on google side. You can find it thanks to its URL: +<ul> +<li>for a text document with url like `https://docs.google.com/a/openerp.com/document/d/123456789/edit`, the ID is `document:123456789`</li> +<li>for a spreadsheet document with url like `https://docs.google.com/a/openerp.com/spreadsheet/ccc?key=123456789#gid=0`, the ID is `spreadsheet:123456789`</li> +<li>for a presentation (slide show) document with url like `https://docs.google.com/a/openerp.com/presentation/d/123456789/edit#slide=id.p`, the ID is `presentation:123456789`</li> +<li>for a drawing document with url like `https://docs.google.com/a/openerp.com/drawings/d/123456789/edit`, the ID is `drawings:123456789`</li> +</ul> + </p> + </div> + <field name='name_template'/> + </group> + </form> </field> </record> diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml index b8020d0b2df..361bb581b14 100644 --- a/addons/hr/hr_view.xml +++ b/addons/hr/hr_view.xml @@ -334,13 +334,10 @@ <field name="state" widget="statusbar" statusbar_visible="recruit,open"/> </header> <sheet> - <label for="name" class="oe_edit_only"/> - <h1> - <field name="name" class="oe_inline"/> - <label class="oe_inline" string="(" attrs="{'invisible': [('department_id', '=', False)]}"/> - <field name="department_id" class="oe_inline"/> - <label class="oe_inline" string=")" attrs="{'invisible': [('department_id', '=', False)]}"/> - </h1> + <div class="oe_title"> + <label for="name" class="oe_edit_only"/> + <h1><field name="name" class="oe_inline"/></h1> + </div> <group> <group> <field name="no_of_employee" groups="base.group_user"/> @@ -349,7 +346,7 @@ </group> <group> <field name="company_id" widget="selection" groups="base.group_multi_company"/> - </group> + <field name="department_id"/> </group> </group> <div> <label for="description"/> diff --git a/addons/hr_evaluation/report/hr_evaluation_report_view.xml b/addons/hr_evaluation/report/hr_evaluation_report_view.xml index fb1186ae401..d4907c90f11 100644 --- a/addons/hr_evaluation/report/hr_evaluation_report_view.xml +++ b/addons/hr_evaluation/report/hr_evaluation_report_view.xml @@ -6,7 +6,7 @@ <field name="name">hr.evaluation.report.tree</field> <field name="model">hr.evaluation.report</field> <field name="arch" type="xml"> - <tree colors="blue:state == 'draft';black:state in ('wait','progress');gray:state in('done','cancel')" + <tree colors="blue:state == 'draft';black:state in ('wait','progress');gray:state in('done','cancel')" create="false" string="Appraisal Analysis"> <field name="create_date" invisible="1"/> <field name="employee_id" invisible="1"/> diff --git a/addons/hr_expense/hr_expense.py b/addons/hr_expense/hr_expense.py index 91dc44fed61..487e4f58782 100644 --- a/addons/hr_expense/hr_expense.py +++ b/addons/hr_expense/hr_expense.py @@ -243,7 +243,7 @@ class product_product(osv.osv): data_obj = self.pool.get('ir.model.data') cat_id = data_obj._get_id(cr, uid, 'hr_expense', 'cat_expense') categ_id = data_obj.browse(cr, uid, cat_id).res_id - res = {'value' : {'type':'service','procure_method':'make_to_stock','supply_method':'buy','purchase_ok':True,'sale_ok' :False,'categ_id':categ_id }} + res = {'value' : {'type':'service','sale_ok' :False,'categ_id':categ_id }} return res product_product() diff --git a/addons/hr_expense/hr_expense_view.xml b/addons/hr_expense/hr_expense_view.xml index 44853cee4f0..76393d9e030 100644 --- a/addons/hr_expense/hr_expense_view.xml +++ b/addons/hr_expense/hr_expense_view.xml @@ -196,10 +196,10 @@ <field name="model">product.product</field> <field name="inherit_id" ref="product.product_normal_form_view"/> <field name="arch" type="xml"> - <field name="purchase_ok" position="before"> + <div name="options" position="inside"> <field name="hr_expense_ok" on_change="on_change_hr_expense_ok(hr_expense_ok)"/> <label for="hr_expense_ok"/> - </field> + </div> </field> </record> diff --git a/addons/hr_expense/report/expense.rml b/addons/hr_expense/report/expense.rml index bf456cfc4d6..3e07516c01b 100644 --- a/addons/hr_expense/report/expense.rml +++ b/addons/hr_expense/report/expense.rml @@ -231,7 +231,7 @@ <para style="terp_default_Right_9">[[ formatLang(line.unit_quantity) ]]</para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(line.total_amount) ]] [[ o.currency_id.symbol ]] </para> + <para style="terp_default_Right_9">[[ formatLang(line.total_amount, currency_obj=o.currency_id) ]] </para> </td> </tr> <tr> @@ -277,7 +277,7 @@ <para style="terp_tblheader_Details">Total:</para> </td> <td> - <para style="terp_tblheader_Details_Right">[[ formatLang(o.amount) ]] [[ o.currency_id.symbol ]]</para> + <para style="terp_tblheader_Details_Right">[[ formatLang(o.amount, currency_obj=o.currency_id) ]]</para> </td> </tr> </blockTable> diff --git a/addons/hr_expense/report/hr_expense_report_view.xml b/addons/hr_expense/report/hr_expense_report_view.xml index 1cd1e10c5ed..9f94c264c5e 100644 --- a/addons/hr_expense/report/hr_expense_report_view.xml +++ b/addons/hr_expense/report/hr_expense_report_view.xml @@ -6,7 +6,7 @@ <field name="name">hr.expense.report.tree</field> <field name="model">hr.expense.report</field> <field name="arch" type="xml"> - <tree colors="blue:state == 'draft';black:state in ('confirm','accepted','done');gray:state == 'cancelled'" string="Expenses Analysis"> + <tree colors="blue:state == 'draft';black:state in ('confirm','accepted','done');gray:state == 'cancelled'" create="false" string="Expenses Analysis"> <field name="employee_id" invisible="1"/> <field name="user_id" invisible="1"/> <field name="year" invisible="1"/> diff --git a/addons/hr_expense/security/ir.model.access.csv b/addons/hr_expense/security/ir.model.access.csv index 0455302319e..092424ef7e6 100644 --- a/addons/hr_expense/security/ir.model.access.csv +++ b/addons/hr_expense/security/ir.model.access.csv @@ -9,6 +9,7 @@ access_product_template_hr_expense_user,product.template.hr.expense.user,product access_product_uom_hr_expense_user,product.uom.hr.expense.user,product.model_product_uom,base.group_hr_user,1,1,1,1
access_product_price_type_user,product.price.type.user,product.model_product_price_type,base.group_hr_user,1,1,1,1
access_account_journal_user,account.journal.user,account.model_account_journal,base.group_hr_user,1,1,1,1
+access_account_journal_employee,account.journal.employee,account.model_account_journal,base.group_user,1,0,0,0
access_account_invoice_user,account.invoice.user,account.model_account_invoice,base.group_hr_user,1,1,1,1
access_account_invoice_line_user,account.invoice.line.user,account.model_account_invoice_line,base.group_hr_user,1,1,1,1
access_account_analytic_journal_user,account.ianalytic.journal.user,account.model_account_analytic_journal,base.group_hr_user,1,1,1,1
diff --git a/addons/hr_holidays/hr_holidays_view.xml b/addons/hr_holidays/hr_holidays_view.xml index ae85b03fcaf..6e3c9b2d083 100644 --- a/addons/hr_holidays/hr_holidays_view.xml +++ b/addons/hr_holidays/hr_holidays_view.xml @@ -353,6 +353,32 @@ <menuitem name="My Allocation Requests" parent="menu_open_ask_holidays" id="menu_open_allocation_holidays" action="open_allocation_holidays"/> + <record model="ir.actions.act_window" id="request_approve_allocation"> + <field name="name">Allocation Requests to Approve</field> + <field name="res_model">hr.holidays</field> + <field name="view_type">form</field> + <field name="context">{'default_type': 'add', 'search_default_approve':1}</field> + <field name="domain">[('type','=','add')]</field> + <field name="view_id" ref="allocation_leave_new"/> + <field name="search_view_id" ref="view_hr_holidays_filter"/> + </record> + + <record model="ir.actions.act_window.view" id="action_request_approve_allocation_tree"> + <field name="sequence" eval="1"/> + <field name="view_mode">tree</field> + <field name="view_id" ref="view_holiday_allocation_tree"/> + <field name="act_window_id" ref="request_approve_allocation"/> + </record> + + <record model="ir.actions.act_window.view" id="action_request_approve_allocation_form"> + <field name="sequence" eval="2"/> + <field name="view_mode">form</field> + <field name="view_id" ref="allocation_leave_new"/> + <field name="act_window_id" ref="request_approve_allocation"/> + </record> + + <menuitem parent="menu_open_ask_holidays" id="menu_request_approve_allocation" action="request_approve_allocation" groups="base.group_hr_manager"/> + <record model="ir.actions.act_window" id="open_company_allocation"> <field name="name">Leaves Summary</field> <field name="res_model">hr.holidays</field> diff --git a/addons/hr_payroll/report/report_contribution_register.rml b/addons/hr_payroll/report/report_contribution_register.rml index b3a5de9753d..8a5897c6091 100644 --- a/addons/hr_payroll/report/report_contribution_register.rml +++ b/addons/hr_payroll/report/report_contribution_register.rml @@ -206,7 +206,7 @@ <para style="P2">[[ formatLang(r['amount']) ]]</para> </td> <td> - <para style="P3">[[ formatLang(r['total']) ]] [[o.company_id and o.company_id.currency_id.symbol or '']]</para> + <para style="P3">[[ formatLang(r['total'], currency_obj = o.company_id and o.company_id.currency_id)]]</para> </td> </tr> </blockTable> @@ -222,7 +222,7 @@ <para style="P15">Total:</para> </td> <td> - <para style="P11">[[ formatLang(sum_total()) ]] [[o.company_id and o.company_id.currency_id.symbol or '']]</para> + <para style="P11">[[ formatLang(sum_total(), currency_obj = o.company_id and o.company_id.currency_id)]]</para> </td> </tr> </blockTable> diff --git a/addons/hr_payroll/report/report_payslip.rml b/addons/hr_payroll/report/report_payslip.rml index 4d96e4b5ef7..990419ee5f1 100644 --- a/addons/hr_payroll/report/report_payslip.rml +++ b/addons/hr_payroll/report/report_payslip.rml @@ -197,7 +197,8 @@ </para> </td> <td> - <para style="P4">[[o.employee_id.address_home_id and o.employee_id.address_home_id.name or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.street or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.street2 or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.zip or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.city or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.state_id and o.employee_id.address_home_id.state_id.name or '' ]] [[o.employee_id.address_home_id and o.employee_id.address_home_id.country_id and o.employee_id.address_home_id.country_id.name or '' ]]</para> + <para style="P4">[[o.employee_id.address_home_id and o.employee_id.address_home_id.name or '' ]] + [[o.employee_id.address_home_id and display_address(o.employee_id.address_home_id)]]</para> </td> </tr> </blockTable> @@ -293,7 +294,7 @@ <para style="P4">[[ formatLang(p.amount) ]]</para> </td> <td> - <para style="P5">[[ formatLang(p.total) ]] [[o.company_id and o.company_id.currency_id.symbol or '']]</para> + <para style="P5">[[ formatLang(p.total, currency_obj = o.company_id and o.company_id.currency_id)]]</para> </td> </tr> </blockTable> diff --git a/addons/hr_payroll/report/report_payslip_details.rml b/addons/hr_payroll/report/report_payslip_details.rml index fe6a10dd1f5..4ace0ad2f82 100644 --- a/addons/hr_payroll/report/report_payslip_details.rml +++ b/addons/hr_payroll/report/report_payslip_details.rml @@ -234,7 +234,8 @@ </para> </td> <td> - <para style="P5">[[o.employee_id.address_home_id and o.employee_id.address_home_id.name or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.street or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.street2 or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.zip or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.city or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.state_id and o.employee_id.address_home_id.state_id.name or '' ]] [[o.employee_id.address_home_id and o.employee_id.address_home_id.country_id and o.employee_id.address_home_id.country_id.name or '' ]]</para> + <para style="P5">[[o.employee_id.address_home_id and o.employee_id.address_home_id.name or '' ]] + [[o.employee_id.address_home_id and display_address(o.employee_id.address_home_id)]]</para> </td> </tr> </blockTable> @@ -334,7 +335,7 @@ <para style="P17"><font face="Helvetica" color="white">[[ '..'*h['level'] ]]</font>[[ h['rule_category'] ]]<font face="Helvetica">[[ h['level']!=0 and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font') ]]</font></para> </td> <td> - <para style="P6">[[ formatLang(h['total']) ]] [[o.company_id and o.company_id.currency_id.symbol or '']] <font face="Helvetica" size="8.0">[[ h['level']==0 and ( setTag('para','para',{'style':'terp_default_10'})) or removeParentNode('font') ]]</font></para> + <para style="P6">[[ formatLang(h['total'], currency_obj = o.company_id and o.company_id.currency_id)]] <font face="Helvetica" size="8.0">[[ h['level']==0 and ( setTag('para','para',{'style':'terp_default_10'})) or removeParentNode('font') ]]</font></para> </td> </tr> </blockTable> @@ -391,7 +392,7 @@ <para style="P5">[[ formatLang(r['amount']) ]]</para> </td> <td> - <para style="P6">[[ formatLang(r['total']) ]] [[ o.company_id and o.company_id.currency_id.symbol or '']]<font face="Helvetica">[[ r.get('register_name', False) and ( setTag('para','para',{'style':'terp_default_10'})) or removeParentNode('font')]]</font></para> + <para style="P6">[[ formatLang(r['total'], currency_obj = o.company_id and o.company_id.currency_id)]]<font face="Helvetica">[[ r.get('register_name', False) and ( setTag('para','para',{'style':'terp_default_10'})) or removeParentNode('font')]]</font></para> </td> </tr> </blockTable> diff --git a/addons/hr_payroll_account/hr_payroll_account.py b/addons/hr_payroll_account/hr_payroll_account.py index 184f9a06867..94df47f6e44 100644 --- a/addons/hr_payroll_account/hr_payroll_account.py +++ b/addons/hr_payroll_account/hr_payroll_account.py @@ -36,7 +36,7 @@ class hr_payslip(osv.osv): _columns = { 'period_id': fields.many2one('account.period', 'Force Period',states={'draft': [('readonly', False)]}, readonly=True, domain=[('state','<>','done')], help="Keep empty to use the period of the validation(Payslip) date."), - 'journal_id': fields.many2one('account.journal', 'Expense Journal',states={'draft': [('readonly', False)]}, readonly=True, required=True), + 'journal_id': fields.many2one('account.journal', 'Salary Journal',states={'draft': [('readonly', False)]}, readonly=True, required=True), 'move_id': fields.many2one('account.move', 'Accounting Entry', readonly=True), } @@ -215,7 +215,7 @@ class hr_payslip_run(osv.osv): _inherit = 'hr.payslip.run' _description = 'Payslip Run' _columns = { - 'journal_id': fields.many2one('account.journal', 'Expense Journal', states={'draft': [('readonly', False)]}, readonly=True, required=True), + 'journal_id': fields.many2one('account.journal', 'Salary Journal', states={'draft': [('readonly', False)]}, readonly=True, required=True), } def _get_default_journal(self, cr, uid, context=None): diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py index ccfcae0d26e..56c517620e0 100644 --- a/addons/hr_recruitment/hr_recruitment.py +++ b/addons/hr_recruitment/hr_recruitment.py @@ -297,7 +297,6 @@ class hr_applicant(base_stage, osv.Model): res['context'] = { 'default_partner_ids': applicant.partner_id and [applicant.partner_id.id] or False, 'default_user_id': uid, - 'default_state': 'open', 'default_name': applicant.name, 'default_categ_ids': category and [category.id] or False, } diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml index d48086f5663..d6d04c1b969 100644 --- a/addons/hr_recruitment/hr_recruitment_view.xml +++ b/addons/hr_recruitment/hr_recruitment_view.xml @@ -289,7 +289,8 @@ </div> <div class="oe_kanban_content" tooltip="kanban-tooltip"> <div> - <b><field name="name"/></b><br/> + <t t-if="record.partner_name.raw_value"><b><field name="partner_name"/></b><br/></t> + <i><field name="name"/></i><br/> <field name="job_id"/><br/> <t t-if="record.partner_mobile.raw_value">Mobile: <field name="partner_mobile"/><br/></t> <t t-if="record.title_action.raw_value"><field name="title_action"/><br/></t> @@ -342,8 +343,8 @@ attrs="{'invisible':[('survey_id','=',False)]}"/> </div> </field> - <xpath expr="/form/sheet/h1" version="7.0" position="after"> - <div colspan="4" attrs="{'invisible': [('alias_domain', '=', False)]}"> + <xpath expr="//div[@class='oe_title']" version="7.0" position="after"> + <div attrs="{'invisible': [('alias_domain', '=', False)]}"> <field name="alias_id" invisible="1" required="0"/> <label for="alias_name" class="oe_edit_only"/> <field name="alias_name" nolabel="1" class="oe_inline" attrs="{'required': [('alias_id', '!=', False)]}"/>@<field name="alias_domain" nolabel="1" class="oe_inline"/> diff --git a/addons/hr_recruitment/report/hr_recruitment_report_view.xml b/addons/hr_recruitment/report/hr_recruitment_report_view.xml index 1b0b8bfa7c5..b33b2eaa053 100644 --- a/addons/hr_recruitment/report/hr_recruitment_report_view.xml +++ b/addons/hr_recruitment/report/hr_recruitment_report_view.xml @@ -5,7 +5,7 @@ <field name="name">hr.recruitment.report.tree</field> <field name="model">hr.recruitment.report</field> <field name="arch" type="xml"> - <tree string="Recruitment Analysis"> + <tree string="Recruitment Analysis" create="false"> <field name="date" invisible="1"/> <field name="user_id" invisible="1"/> <field name="job_id"/> diff --git a/addons/hr_timesheet_invoice/hr_timesheet_invoice.py b/addons/hr_timesheet_invoice/hr_timesheet_invoice.py index b9574b553d1..ab76f2b0f64 100644 --- a/addons/hr_timesheet_invoice/hr_timesheet_invoice.py +++ b/addons/hr_timesheet_invoice/hr_timesheet_invoice.py @@ -135,6 +135,8 @@ class account_analytic_line(osv.osv): def _default_general_account(self, cr, uid, context=None): proxy = self.pool.get('hr.employee') record_ids = proxy.search(cr, uid, [('user_id', '=', uid)], context=context) + if not record_ids: + raise osv.except_osv(_('Error!'), _('Please create an employee associated to this user.')) employee = proxy.browse(cr, uid, record_ids[0], context=context) if employee.product_id and employee.product_id.property_account_income: return employee.product_id.property_account_income.id diff --git a/addons/hr_timesheet_invoice/i18n/de.po b/addons/hr_timesheet_invoice/i18n/de.po index 66e115f78ff..676e28fbc1d 100644 --- a/addons/hr_timesheet_invoice/i18n/de.po +++ b/addons/hr_timesheet_invoice/i18n/de.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:36+0000\n" -"PO-Revision-Date: 2012-05-10 18:04+0000\n" -"Last-Translator: Ferdinand-camptocamp <Unknown>\n" +"PO-Revision-Date: 2012-10-12 23:22+0000\n" +"Last-Translator: Ferdinand @ Camptocamp <Unknown>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-28 06:20+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-10-14 04:39+0000\n" +"X-Generator: Launchpad (build 16137)\n" #. module: hr_timesheet_invoice #: view:report.timesheet.line:0 @@ -769,7 +769,7 @@ msgstr "Menge" #. module: hr_timesheet_invoice #: report:hr.timesheet.invoice.account.analytic.account.cost_ledger:0 msgid "Date/Code" -msgstr "Datum/Kurzbez." +msgstr "Dat/Kurzb." #. module: hr_timesheet_invoice #: field:report.timesheet.line,general_account_id:0 diff --git a/addons/hr_timesheet_sheet/report/hr_timesheet_report_view.xml b/addons/hr_timesheet_sheet/report/hr_timesheet_report_view.xml index 37c40f60f6d..50a99673e73 100644 --- a/addons/hr_timesheet_sheet/report/hr_timesheet_report_view.xml +++ b/addons/hr_timesheet_sheet/report/hr_timesheet_report_view.xml @@ -15,7 +15,7 @@ <field name="name">hr.timesheet.report.tree</field> <field name="model">hr.timesheet.report</field> <field name="arch" type="xml"> - <tree string="Timesheet Analysis"> + <tree string="Timesheet Analysis" create="false"> <field name="year" invisible="1"/> <field name="month" invisible="1"/> <field name="date" invisible="1"/> diff --git a/addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py b/addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py index 3bd495036d5..2af8792472e 100644 --- a/addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py +++ b/addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py @@ -35,7 +35,7 @@ class hr_timesheet_current_open(osv.osv_memory): user_ids = self.pool.get('hr.employee').search(cr, uid, [('user_id','=',uid)], context=context) if not len(user_ids): - raise osv.except_osv(_('Error!'), _('Please define employee for your user!')) + raise osv.except_osv(_('Error!'), _('Please create an employee and associate it with this user.')) ids = ts.search(cr, uid, [('user_id','=',uid),('state','=','draft'),('date_from','<=',time.strftime('%Y-%m-%d')), ('date_to','>=',time.strftime('%Y-%m-%d'))], context=context) if len(ids) > 1: diff --git a/addons/l10n_be/wizard/l10n_be_vat_intra_print.rml b/addons/l10n_be/wizard/l10n_be_vat_intra_print.rml index 415f3a08f1f..ff1a2c2064d 100644 --- a/addons/l10n_be/wizard/l10n_be_vat_intra_print.rml +++ b/addons/l10n_be/wizard/l10n_be_vat_intra_print.rml @@ -108,7 +108,7 @@ <para style="terp_default_9">[[ l['code'] (l['intra_code']) ]]</para> </td> <td> - <para style="terp_default_Right_9">[[ l['amount'] or O.OO ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9">[[ formatLang(l['amount'], currency_obj=company.currency_id) ]]</para> </td> </tr> </blockTable> @@ -129,7 +129,7 @@ <para style="terp_tblheader_General_Right">Total:</para> </td> <td> - <para style="terp_tblheader_General_Right">[[ data['form']['amountsum'] or 0.00 ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_tblheader_General_Right">[[ formatLang(data['form']['amountsum'], currency_obj=company.currency_id) ]]</para> </td> </tr> </blockTable> diff --git a/addons/l10n_fr_hr_payroll/report/fiche_paye.rml b/addons/l10n_fr_hr_payroll/report/fiche_paye.rml index 5221b00c462..76c6eb9dedf 100644 --- a/addons/l10n_fr_hr_payroll/report/fiche_paye.rml +++ b/addons/l10n_fr_hr_payroll/report/fiche_paye.rml @@ -290,9 +290,7 @@ <tr> <td> <para style="terp_default_Bold_8">[[o.employee_id.name or '_']]</para> - <para style="terp_default_Bold_8">[[o.employee_id.address_home_id.street or '_' ]]</para> - <para style="terp_default_Bold_8">[[o.employee_id.address_home_id.street2 or '' ]]</para> - <para style="terp_default_Bold_8">[[o.employee_id.address_home_id.zip or '_' ]] [[o.employee_id.address_home_id.city or '' ]]</para> + <para style="terp_default_Bold_8">[[display_address(o.employee_id.address_home_id) or '_' ]]</para> </td> </tr> </blockTable> diff --git a/addons/l10n_in_hr_payroll/report/payment_advice_report_view.xml b/addons/l10n_in_hr_payroll/report/payment_advice_report_view.xml index 4d7dbe91ee1..38f1272718b 100644 --- a/addons/l10n_in_hr_payroll/report/payment_advice_report_view.xml +++ b/addons/l10n_in_hr_payroll/report/payment_advice_report_view.xml @@ -6,7 +6,7 @@ <field name="name">payment.advice.report.tree</field> <field name="model">payment.advice.report</field> <field name="arch" type="xml"> - <tree colors="blue:state == 'draft';black:state == 'confirm';gray:state == 'cancel' " string="Advices Analysis"> + <tree colors="blue:state == 'draft';black:state == 'confirm';gray:state == 'cancel' " create="false" string="Advices Analysis"> <field name="nbr" sum="# Payment Lines"/> <field name="name" invisible="1"/> <field name="employee_id" invisible="1"/> diff --git a/addons/l10n_in_hr_payroll/report/payslip_report_view.xml b/addons/l10n_in_hr_payroll/report/payslip_report_view.xml index 92eaf3ec4a9..d71cb283336 100644 --- a/addons/l10n_in_hr_payroll/report/payslip_report_view.xml +++ b/addons/l10n_in_hr_payroll/report/payslip_report_view.xml @@ -6,7 +6,7 @@ <field name="name">payslip.report.tree</field> <field name="model">payslip.report</field> <field name="arch" type="xml"> - <tree colors="blue:state == 'draft';black:state == 'done';gray:state == 'cancel' " string="Payslip Analysis"> + <tree colors="blue:state == 'draft';black:state == 'done';gray:state == 'cancel' " create="false" string="Payslip Analysis"> <field name="nbr" sum="# Payslip Lines"/> <field name="name"/> <field name="employee_id" invisible="1"/> diff --git a/addons/l10n_in_hr_payroll/report/report_hr_salary_employee_bymonth.rml b/addons/l10n_in_hr_payroll/report/report_hr_salary_employee_bymonth.rml index 8f2a57d2018..6368a644f4b 100644 --- a/addons/l10n_in_hr_payroll/report/report_hr_salary_employee_bymonth.rml +++ b/addons/l10n_in_hr_payroll/report/report_hr_salary_employee_bymonth.rml @@ -234,7 +234,7 @@ </para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ formatLang(e[13]) ]] [[company.currency_id.symbol]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(e[13],currency_obj= company.currency_id)]] </para> </td> </tr> </blockTable> @@ -248,43 +248,43 @@ <para style="terp_tblheader_Details">Total</para> </td> <td> - <para style="terp_tblheader_General_Right">[[ formatLang(t[1]) or removeParentNode('para') ]] [[company.currency_id.symbol]]</para> + <para style="terp_tblheader_General_Right">[[ formatLang(t[1],currency_obj= company.currency_id) or removeParentNode('para') ]] </para> </td> <td> - <para style="terp_tblheader_General_Right">[[ formatLang(t[2]) or removeParentNode('para')]] [[company.currency_id.symbol]]</para> + <para style="terp_tblheader_General_Right">[[ formatLang(t[2],currency_obj= company.currency_id) or removeParentNode('para')]] </para> </td> <td> - <para style="terp_tblheader_General_Right">[[ formatLang(t[3]) or removeParentNode('para')]] [[company.currency_id.symbol]]</para> + <para style="terp_tblheader_General_Right">[[ formatLang(t[3],currency_obj= company.currency_id) or removeParentNode('para')]] </para> </td> <td> - <para style="terp_tblheader_General_Right">[[ formatLang(t[4]) or removeParentNode('para')]] [[company.currency_id.symbol]]</para> + <para style="terp_tblheader_General_Right">[[ formatLang(t[4],currency_obj= company.currency_id) or removeParentNode('para')]] </para> </td> <td> - <para style="terp_tblheader_General_Right">[[ formatLang(t[5]) or removeParentNode('para')]] [[company.currency_id.symbol]]</para> + <para style="terp_tblheader_General_Right">[[ formatLang(t[5],currency_obj= company.currency_id) or removeParentNode('para')]] </para> </td> <td> - <para style="terp_tblheader_General_Right">[[ formatLang(t[6]) or removeParentNode('para')]] [[company.currency_id.symbol]]</para> + <para style="terp_tblheader_General_Right">[[ formatLang(t[6],currency_obj= company.currency_id) or removeParentNode('para')]] </para> </td> <td> - <para style="terp_tblheader_General_Right">[[ formatLang(t[7]) or removeParentNode('para')]] [[company.currency_id.symbol]]</para> + <para style="terp_tblheader_General_Right">[[ formatLang(t[7],currency_obj= company.currency_id) or removeParentNode('para')]] ]</para> </td> <td> - <para style="terp_tblheader_General_Right">[[ formatLang(t[8]) or removeParentNode('para')]] [[company.currency_id.symbol]]</para> + <para style="terp_tblheader_General_Right">[[ formatLang(t[8],currency_obj= company.currency_id) or removeParentNode('para')]] </para> </td> <td> - <para style="terp_tblheader_General_Right">[[ formatLang(t[9]) or removeParentNode('para')]] [[company.currency_id.symbol]]</para> + <para style="terp_tblheader_General_Right">[[ formatLang(t[9],currency_obj= company.currency_id) or removeParentNode('para')]] </para> </td> <td> - <para style="terp_tblheader_General_Right">[[ formatLang(t[10]) or removeParentNode('para')]] [[company.currency_id.symbol]]</para> + <para style="terp_tblheader_General_Right">[[ formatLang(t[10],currency_obj= company.currency_id) or removeParentNode('para')]] </para> </td> <td> - <para style="terp_tblheader_General_Right">[[ formatLang(t[11]) or removeParentNode('para')]] [[company.currency_id.symbol]]</para> + <para style="terp_tblheader_General_Right">[[ formatLang(t[11],currency_obj= company.currency_id) or removeParentNode('para')]] </para> </td> <td> - <para style="terp_tblheader_General_Right">[[ formatLang(t[12]) or removeParentNode('para')]] [[company.currency_id.symbol]]</para> + <para style="terp_tblheader_General_Right">[[ formatLang(t[12],currency_obj= company.currency_id) or removeParentNode('para')]] </para> </td> <td> - <para style="terp_tblheader_General_Right">[[ formatLang(get_total()) ]] [[company.currency_id.symbol]]</para> + <para style="terp_tblheader_General_Right">[[ formatLang(get_total(), currency_obj = company.currency_id)]]</para> </td> </tr> </blockTable> diff --git a/addons/l10n_in_hr_payroll/report/report_hr_yearly_salary_detail.rml b/addons/l10n_in_hr_payroll/report/report_hr_yearly_salary_detail.rml index 7fa127b0bd3..502eaa7b0ff 100644 --- a/addons/l10n_in_hr_payroll/report/report_hr_yearly_salary_detail.rml +++ b/addons/l10n_in_hr_payroll/report/report_hr_yearly_salary_detail.rml @@ -478,7 +478,7 @@ </para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ formatLang(e1[13]) ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(e1[13],currency_obj= company.currency_id) ]] </para> </td> </tr> </blockTable> @@ -571,7 +571,7 @@ </para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ formatLang(e2[13]) ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(e2[13],currency_obj= company.currency_id) ]] </para> </td> </tr> </blockTable> diff --git a/addons/l10n_in_hr_payroll/report/report_payroll_advice.rml b/addons/l10n_in_hr_payroll/report/report_payroll_advice.rml index 8ca1bae5ba5..879314a24d9 100644 --- a/addons/l10n_in_hr_payroll/report/report_payroll_advice.rml +++ b/addons/l10n_in_hr_payroll/report/report_payroll_advice.rml @@ -247,7 +247,7 @@ <para style="P5">[[ line['acc_no'] ]]</para> </td> <td> - <para style="P8">[[formatLang(line['bysal'])]] [[ (company.currency_id and company.currency_id.symbol) or '' ]]</para> + <para style="P8">[[formatLang(line['bysal'], currency_obj = company.currency_id) ]]</para> </td> <td> <para style="P5">[[ line['debit_credit'] ]]</para> @@ -296,7 +296,7 @@ <para style="P5">[[ line['ifsc_code'] ]]</para> </td> <td> - <para style="P8">[[formatLang(line['bysal'])]] [[ (company.currency_id and company.currency_id.symbol) or '' ]]</para> + <para style="P8">[[formatLang(line['bysal'], currency_obj = company.currency_id) ]]</para> </td> <td> <para style="P5">[[ line['debit_credit'] ]]</para> @@ -321,7 +321,7 @@ <para style="P4"/> </td> <td> - <para style="P4"><font face="Helvetica" size="6.0">[[ o.line_ids==[] and removeParentNode('para') ]]</font>[[ formatLang(get_bysal_total()) ]] [[ (company.currency_id and company.currency_id.symbol) or '' ]]</para> + <para style="P4"><font face="Helvetica" size="6.0">[[ o.line_ids==[] and removeParentNode('para') ]]</font>[[ formatLang(get_bysal_total(), currency_obj = company.currency_id) ]]</para> </td> <td> <para style="P4"> @@ -347,7 +347,7 @@ <para style="P4"/> </td> <td> - <para style="P4"><font face="Helvetica" size="6.0">[[ o.line_ids==[] and removeParentNode('para') ]]</font>[[ formatLang(get_bysal_total()) ]] [[ (company.currency_id and company.currency_id.symbol) or '' ]]</para> + <para style="P4"><font face="Helvetica" size="6.0">[[ o.line_ids==[] and removeParentNode('para') ]]</font>[[ formatLang(get_bysal_total(), currency_obj = company.currency_id) ]]</para> </td> <td> <para style="P4"> diff --git a/addons/l10n_in_hr_payroll/report/report_payslip_details.rml b/addons/l10n_in_hr_payroll/report/report_payslip_details.rml index a7ab3db3185..c4ce55bfa41 100644 --- a/addons/l10n_in_hr_payroll/report/report_payslip_details.rml +++ b/addons/l10n_in_hr_payroll/report/report_payslip_details.rml @@ -234,7 +234,7 @@ </para> </td> <td> - <para style="P5">[[o.employee_id.address_home_id and o.employee_id.address_home_id.name or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.street or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.street2 or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.zip or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.city or '' ]],[[o.employee_id.address_home_id and o.employee_id.address_home_id.state_id and o.employee_id.address_home_id.state_id.name or '' ]] [[o.employee_id.address_home_id and o.employee_id.address_home_id.country_id and o.employee_id.address_home_id.country_id.name or '' ]]</para> + <para style="P5">[[o.employee_id.address_home_id and o.employee_id.address_home_id.name or '' ]],[[o.employee_id.address_home_id and display_address(o.employee_id.address_home_id)]]</para> </td> </tr> </blockTable> @@ -334,7 +334,7 @@ <para style="P17"><font face="Helvetica" color="white">[[ '..'*h['level'] ]]</font>[[ h['rule_category'] ]]<font face="Helvetica">[[ h['level']!=0 and ( setTag('para','para',{'style':'terp_default_8'})) or removeParentNode('font') ]]</font></para> </td> <td> - <para style="P6">[[ formatLang(h['total']) ]] [[o.company_id and o.company_id.currency_id.symbol or '']] <font face="Helvetica" size="8.0">[[ h['level']==0 and ( setTag('para','para',{'style':'terp_default_10'})) or removeParentNode('font') ]]</font></para> + <para style="P6">[[ formatLang(h['total'], currency_obj = o.company_id and o.company_id.currency_id)]] <font face="Helvetica" size="8.0">[[ h['level']==0 and ( setTag('para','para',{'style':'terp_default_10'})) or removeParentNode('font') ]]</font></para> </td> </tr> </blockTable> diff --git a/addons/lunch/report/order.rml b/addons/lunch/report/order.rml index b09b59bb96b..0a13beb622c 100644 --- a/addons/lunch/report/order.rml +++ b/addons/lunch/report/order.rml @@ -137,7 +137,7 @@ </para> </td> <td> - <para style="terp_default_9_right_bold"><u>[[ formatLang(get_total(o,objects)) ]] [[ (o.company_id and o.company_id.currency_id and o.company_id.currency_id.symbol) or '' ]]</u></para> + <para style="terp_default_9_right_bold"><u>[[ formatLang(get_total(o,objects), currency_obj = o.company_id and o.company_id.currency_id) ]]</u></para> </td> </tr> </blockTable> @@ -155,7 +155,7 @@ <para style="terp_default_9">[[ lines.descript]]</para> </td> <td> - <para style="terp_default_9_right">[[ lines.price ]] [[ (o.company_id and o.company_id.currency_id and o.company_id.currency_id.symbol) or '' ]]</para> + <para style="terp_default_9_right">[[ formatLang(lines.price , currency_obj = o.company_id and o.company_id.currency_id) ]]</para> </td> </tr> </blockTable> @@ -172,7 +172,7 @@ <para style="terp_tbl_detail_header">Total :</para> </td> <td> - <para style="terp_default_9_right_bold">[[ formatLang(get_nettotal()) ]] [[ (o.company_id and o.company_id.currency_id and o.company_id.currency_id.symbol) or '' ]]</para> + <para style="terp_default_9_right_bold">[[ formatLang(get_nettotal(), currency_obj = o.company_id and o.company_id.currency_id) ]]</para> </td> </tr> </blockTable> diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index 7e77b2f2e8c..9631918050a 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -134,6 +134,7 @@ class mail_message(osv.Model): '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): @@ -150,6 +151,7 @@ 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, } #------------------------------------------------------ @@ -220,70 +222,67 @@ class mail_message(osv.Model): 'unread': msg.unread and msg.unread['unread'] or False } - def message_read_tree_get_expandable(self, cr, uid, parent_message, last_message, domain=[], current_level=0, level=0, context=None): - """ . """ - base_domain = [('id', '<', last_message['id'])] - if parent_message and current_level < level: - base_domain += [('parent_id', '=', parent_message['id'])] - elif parent_message: - base_domain += [('id', 'child_of', parent_message['id']), ('id', '!=', parent_message['id'])] - if domain: - base_domain += domain - extension = { 'type': 'expandable', - 'domain': base_domain, - 'thread_level': current_level, - 'context': context, - 'id': -1, - } - return extension - - def message_read_tree_flatten(self, cr, uid, parent_message, messages, domain=[], level=0, current_level=0, context=None, limit=None, add_expandable=True): - """ Given a tree with several roots of following structure : - [ {'id': 1, 'child_ids': [ - {'id': 11, 'child_ids': [...] },], - {...} ] - Flatten it to have a maximum number of levels, 0 being flat and - sort messages in a level according to a key of the messages. - Perform the flattening at leafs if above the maximum depth, then get - back in the tree. - :param context: ``sort_key``: key for sorting (id by default) - :param context: ``sort_reverse``: reverser order for sorting (True by default) + 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 """ - def _flatten(msg_dict): - """ from {'id': x, 'child_ids': [{child1}, {child2}]} - get [{'id': x, 'child_ids': []}, {child1}, {child2}] - """ - child_ids = msg_dict.pop('child_ids', []) - msg_dict['child_ids'] = [] - return [msg_dict] + child_ids - context = context or {} - limit = limit or self._message_read_limit + tree_not = [] + # expandable for not show message + for id_msg 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) + # group childs not read + 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_max=not_loaded_id + tree_not.append(not_loaded_id) + else: + if nb>0: + result.append({ + 'domain': [['id','>=',id_min],['id','<=',id_max],['parent_id','=',id_msg]], + 'nb_messages': nb, + 'type': 'expandable', + 'parent_id': id_msg, + 'id': id_min + }) + id_min=None + id_max=None + nb=0 + if nb>0: + result.append({ + 'domain': [['id','>=',id_min],['id','<=',id_max],['parent_id','=',id_msg]], + 'nb_messages': nb, + 'type': 'expandable', + 'parent_id': id_msg, + 'id': id_min + }) - # Depth-first flattening - for message in messages: - if message.get('type') == 'expandable': - continue - message['child_ids'] = self.message_read_tree_flatten(cr, uid, message, message['child_ids'], domain, level, current_level + 1, context=context, limit=limit) - for child in message['child_ids']: - if child.get('type') == 'expandable': - continue - message['child_nbr'] += child['child_nbr'] - # Flatten if above maximum depth - if current_level < level: - return_list = messages - else: - return_list = [flat_message for message in messages for flat_message in _flatten(message)] - - # Add expandable - return_list = sorted(return_list, key=itemgetter(context.get('sort_key', 'id')), reverse=context.get('sort_reverse', True)) - if return_list and current_level == 0 and add_expandable: - expandable = self.message_read_tree_get_expandable(cr, uid, parent_message, return_list and return_list[-1] or parent_message, domain, current_level, level, context=context) - return_list.append(expandable) - elif return_list and current_level <= level and add_expandable: - expandable = self.message_read_tree_get_expandable(cr, uid, parent_message, return_list and return_list[-1] or parent_message, domain, current_level, level, context=context) - return_list.append(expandable) - return return_list + + # expandable for limit max + 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( + { + 'domain': domain, + 'nb_messages': 0, + '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): """ Read messages from mail.message, and get back a structured tree @@ -293,13 +292,11 @@ class mail_message(osv.Model): well formed threads. :param domain: optional domain for searching ids - :param level: level of threads to display, 0 being flat :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 @@ -314,7 +311,7 @@ class mail_message(osv.Model): record = None # select ids - if 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 @@ -340,60 +337,19 @@ class mail_message(osv.Model): result = sorted(result, key=lambda k: k['id']) + result = self._message_read_expandable(cr, uid, tree, result, message_loaded, domain, context, parent_id, limit) - tree_not = [] - # expandable for not show message - for id_msg 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) - # group childs not read - 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_max=not_loaded_id - tree_not.append(not_loaded_id) - else: - if nb>0: - result.append({ - 'domain': [['id','>=',id_min],['id','<=',id_max],['parent_id','=',id_msg]], - 'nb_messages': nb, - 'type': 'expandable', - 'parent_id': id_msg, - 'id': id_min - }) - nb=0 - if nb>0: - result.append({ - 'domain': [['id','>=',id_min],['parent_id','=',id_msg]], - 'nb_messages': nb, - 'type': 'expandable', - 'parent_id': id_msg, - '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) - if len(ids) > 0: - result.append( - { - 'domain': domain, - 'nb_messages': 0, - 'type': 'expandable', - 'parent_id': parent_id, - 'id': -1 - }); + return result + def user_free_attachment(self, cr, uid, context=None): + attachment_list = [] - result = sorted(result, key=lambda k: k['id']) + 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 result + return attachment_list #------------------------------------------------------ # Email api @@ -525,11 +481,9 @@ class mail_message(osv.Model): self.pool.get('ir.attachment').unlink(cr, uid, attachments_to_delete, context=context) return super(mail_message, self).unlink(cr, uid, ids, context=context) - def _notify(self, cr, uid, newid, context=None): + def _notify_followers(self, cr, uid, newid, message, context=None): """ Add the related record followers to the destination partner_ids. - Call mail_notification.notify to manage the email sending """ - message = self.browse(cr, uid, newid, context=context) partners_to_notify = set([]) # message has no subtype_id: pure log message -> no partners, no one notified if not message.subtype_id: @@ -550,6 +504,14 @@ class mail_message(osv.Model): 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): + 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)): diff --git a/addons/mail/mail_message_view.xml b/addons/mail/mail_message_view.xml index cc0419352af..0c572384bb4 100644 --- a/addons/mail/mail_message_view.xml +++ b/addons/mail/mail_message_view.xml @@ -88,21 +88,21 @@ <field name="name">Inbox</field> <field name="tag">mail.wall</field> <field name="params" eval=""{'domain': [('notification_ids.partner_id.user_ids', 'in', [uid]),('unread', '=', True)], - 'context': {'default_model': 'res.users', 'default_res_id': uid} }""/> + 'context': {'default_model': 'res.partner'} }""/> </record> <record id="action_mail_archives_feeds" model="ir.actions.client"> <field name="name">Archives</field> <field name="tag">mail.wall</field> <field name="params" eval=""{'domain': [('notification_ids.partner_id.user_ids', 'in', [uid]),('unread', '=', False)], - 'context': {'default_model': 'res.users', 'default_res_id': uid} }""/> + 'context': {'default_model': 'res.partner'} }""/> </record> <record id="action_mail_sent_feeds" model="ir.actions.client"> <field name="name">Sent</field> <field name="tag">mail.wall</field> <field name="params" eval=""{'domain': [('author_id.user_ids', 'in', [uid])], - 'context': {'default_model': 'res.users', 'default_res_id': uid} }""/> + 'context': {'default_model': 'res.partner'} }""/> </record> </data> </openerp> diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index e6150640eb3..e5b93ac4000 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -623,11 +623,10 @@ class mail_thread(osv.AbstractModel): :param str subject: optional subject :param str type: mail_message.type :param int parent_id: optional ID of parent message in this thread - :param tuple(str,str) attachments: list of attachment tuples in the form + :param tuple(str,str) attachments or list id: list of attachment tuples in the form ``(name,content)``, where content is NOT base64 encoded :return: ID of newly created mail.message """ - context = context or {} attachments = attachments or [] assert (not thread_id) or isinstance(thread_id, (int, long)) or \ @@ -635,7 +634,7 @@ class mail_thread(osv.AbstractModel): if isinstance(thread_id, (list, tuple)): thread_id = thread_id and thread_id[0] - attachment_ids = [] + attachment_ids=[] for name, content in attachments: if isinstance(content, unicode): content = content.encode('utf-8') @@ -679,6 +678,13 @@ class mail_thread(osv.AbstractModel): 'attachment_ids': attachment_ids, '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) @@ -691,10 +697,23 @@ class mail_thread(osv.AbstractModel): 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, attachments=attachments, context=context) + 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): diff --git a/addons/mail/mail_thread_view.xml b/addons/mail/mail_thread_view.xml index 3507e7c449f..696edde0e15 100644 --- a/addons/mail/mail_thread_view.xml +++ b/addons/mail/mail_thread_view.xml @@ -20,13 +20,13 @@ </record> <record id="mail_archivesfeeds" model="ir.ui.menu"> <field name="name">Archives</field> - <field name="sequence" eval="11"/> + <field name="sequence" eval="12"/> <field name="action" ref="action_mail_archives_feeds"/> <field name="parent_id" ref="mail_feeds"/> </record> <record id="mail_sentfeeds" model="ir.ui.menu"> <field name="name">Sent</field> - <field name="sequence" eval="12"/> + <field name="sequence" eval="13"/> <field name="action" ref="action_mail_sent_feeds"/> <field name="parent_id" ref="mail_feeds"/> </record> diff --git a/addons/mail/static/src/css/mail.css b/addons/mail/static/src/css/mail.css index 364ac7e3165..1592d79e18d 100644 --- a/addons/mail/static/src/css/mail.css +++ b/addons/mail/static/src/css/mail.css @@ -82,9 +82,13 @@ overflow: auto; } +.openerp .oe_mail_record_wall { + margin: auto; + width: 560px; +} + .openerp .oe_mail_record_wall > .oe_mail_wall_threads { float: left; - width: 560px; } .openerp div.oe_mail_recthread_aside { @@ -145,6 +149,10 @@ z-index: 5; } .openerp .oe_mouse_subtypes .oe_recthread_subtypes { + background: #fff; + padding: 2px; + border: 1px solid #aaaaaa; + border-top: 0px; position: absolute; z-index: 2; } @@ -160,7 +168,6 @@ /* ------------------------------------------------------------ */ .openerp div.oe_mail_thread_action { - display: none; white-space: normal; padding: 8px; z-index:5; @@ -174,16 +181,6 @@ } /* default textarea (oe_mail_compose_textarea), and body textarea for compose form view */ -.openerp .oe_mail_msg_content textarea.oe_mail_compose_textarea, -.openerp .oe_mail_msg_content div.oe_mail_compose_message_body textarea { - width: 474px; - height: 60px; - padding: 4px; - font-size: 12px; - border: 1px solid #cccccc; -} - -/* default textarea (oe_mail_compose_textarea), and body textarea for compose form view */ .openerp .oe_mail_msg_content textarea.oe_mail_compose_textarea:focus, .openerp .oe_mail_msg_content div.oe_mail_compose_message_body textarea:focus { outline: 0; @@ -206,6 +203,10 @@ margin-left: 66px; } +.openerp li.oe_mail_thread_msg { + width: 560px; +} + .openerp div.oe_thread_placeholder li.oe_mail_thread_msg:last-child { margin-bottom: 8px; } @@ -223,13 +224,18 @@ .openerp li.oe_mail_thread_msg.oe_mail_read, .openerp li.oe_mail_thread_msg.oe_mail_read div { - background-color: #F0F0F0; + border-left: #F0F0F0; } .openerp li.oe_mail_thread_msg.oe_mail_read li.oe_mail_thread_msg.oe_mail_unread, .openerp li.oe_mail_thread_msg.oe_mail_read li.oe_mail_thread_msg.oe_mail_unread div { background-color: #F6F6F6; } +.openerp li.oe_mail_thread_msg.oe_mail_unread>div>ul>li.oe_unread, +.openerp li.oe_mail_thread_msg.oe_mail_read>div>ul>li.oe_read { + display: none; +} + .openerp li.oe_mail_thread_msg > div:after { content: ""; display: block; @@ -247,7 +253,7 @@ .openerp .oe_mail_msg_email { padding: 8px; background: white; - border-top: 1px solid #ebebeb; + position: relative; } .openerp .oe_mail_msg_notification:after, @@ -259,7 +265,7 @@ } .openerp div.oe_mail_msg_content { - float: right; + float: left; position: relative; width: 486px; } @@ -310,76 +316,6 @@ } /* ------------------------------------------------------------ */ -/* mail.compose.message form view & OpenERP hacks -/* ------------------------------------------------------------ */ - -/* form_view: delete white background */ -.openerp .oe_mail_msg_content div.oe_formview { - background-color: transparent; -} - -.openerp .oe_mail_msg_content div.oe_form_nosheet { - margin: 0px; -} - -.openerp .oe_mail_msg_content table.oe_form_group { - margin: 0px; -} - -.openerp .oe_mail_msg_content table.oe_form_field, -.openerp .oe_mail_msg_content div.oe_form_field { - padding: 0px; -} - -.openerp .oe_mail_msg_content td.oe_form_group_cell { - vertical-align: bottom; -} - -/* subject: change width */ -.openerp .oe_mail_msg_content .oe_form .oe_form_field input { - width: 472px; -} - -/* body_html: cleditor */ -.openerp .oe_mail_msg_content div.cleditorMain { - border: 1px solid #cccccc; -} - -/* destination_partner_ids */ -.openerp .oe_mail_msg_content div.text-core { - height: 22px !important; - width: 472px; -} - -/* buttons */ -.openerp .oe_mail_msg_content .oe_mail_compose_message_icons button.oe_form_button { - padding: 1px; -} - -/* attachment button: override of openerp values */ -.openerp .oe_mail_msg_content .oe_mail_compose_message_icons div.oe_hidden_input_file { - display: inline-block; - width: 24px; - height: 24px; - margin: 2px; -} -.openerp .oe_mail_msg_content .oe_mail_compose_message_icons div.oe_hidden_input_file button { - margin: 0px; -} -.openerp .oe_mail_msg_content .oe_mail_compose_message_icons input.oe_form_binary_file { - bottom: 0px; - top: auto; - left: auto; - right: 28px; - height: 26px; - width: 26px; - min-width: 22px; - font-size: 0px; - margin: 0px; - padding: 0px; -} - -/* ------------------------------------------------------------ */ /* Messages layout /* ------------------------------------------------------------ */ @@ -413,39 +349,27 @@ } /* Dropdown menu */ -/*.openerp .oe_mail_msg_content .oe_dropdown_toggle { - position: absolute; - top: 0px; - right: 3px; -}*/ -.openerp .oe_mail .oe_semantic_html_override { +.openerp .oe_mail ul.oe_mail_thread_display ul.oe_mail_thread_display { position: relative; + border-left: 1px #DDD dashed; } .openerp .oe_mail ul.oe_header { position: absolute; right: 3px; top: -6px; - display: none; z-index: 10; - height: 18px; } .openerp .oe_mail ul.oe_header a { text-decoration: none; } -.openerp .oe_mail .oe_semantic_html_override:hover > ul.oe_header { - display: block; -} - .openerp .oe_mail ul.oe_header>li { display: inline-block; -} - -.openerp .oe_mail_msg_content .oe_dropdown_arrow:after { - border-top: 4px solid #404040; + height: 20px; + text-align: right; } /* Message footer */ @@ -465,16 +389,36 @@ /* Attachments list */ .openerp .oe_mail_msg_content ul.oe_mail_msg_attachments { - display: none; width: 100%; - border-top: 1px solid #CCC; margin: .5em 0 0 0; padding: .5em 0; list-style-position: inside; } +.openerp .oe_mail_msg_content ul.oe_mail_msg_attachments.oe_hidden { + display: none; +} .openerp .oe_mail_msg_content ul.oe_mail_msg_attachments li { float: none; + height: 20px; + line-height: 20px; margin: 0; padding: 0; list-style-type: square; } +.openerp .oe_mail_msg_content ul.oe_mail_msg_attachments .oe_upload_in_process { + float: right; + width: 200px; + height: 16px; +} +.openerp .oe_mail_msg_content ul.oe_mail_msg_attachments .oe_upload_in_process div { + float: left; + width: 38px; + height: 16px; + margin-right: 2px; + background: #66FF66; +} +.openerp .oe_mail_msg_content ul.oe_mail_msg_attachments .oe_upload_in_process span { + color: #aaaaaa; + position: absolute; +} + diff --git a/addons/mail/static/src/css/mail_compose_message.css b/addons/mail/static/src/css/mail_compose_message.css index ba7ed36a695..e2f136eb755 100644 --- a/addons/mail/static/src/css/mail_compose_message.css +++ b/addons/mail/static/src/css/mail_compose_message.css @@ -1,12 +1,166 @@ /* ------------------------------ */ -/* Compose Message Wizard Form */ +/* Compose Message */ /* ------------------------------ */ -.openerp .oe_mail_compose_message_icons { - text-align: right; +.openerp .oe_mail_msg_content .oe_mail_compose_message_footer { + height: 24px; } -.openerp .oe_mail_compose_message_icons img { - width: 20px; - height: 20px; +.openerp .oe_mail_msg_content .oe_mail_compose_message_footer button.oe_mail_compose_message_button_send { + float: left; } + +.openerp .oe_mail .oe_mail_compose_textarea +{ + display: none; +} + +.openerp .oe_mail .oe_mail_compose_textarea .oe_mail_post_header, +.openerp .oe_mail .oe_mail_compose_textarea .oe_mail_post_footer, +{ + position: relative; +} + +.openerp .oe_mail .oe_mail_compose_textarea a.oe_cancel { + position: absolute; + right: -8px; + top: -8px; +} +.openerp .oe_mail .oe_mail_compose_textarea a.oe_cancel:first-of-type { + display:none; +} + +.openerp .oe_mail .oe_mail_compose_textarea button.oe_full { + float: right; + position: relative; + right: -10px; +} + +/* ------------------------------------------------------------ */ +/* mail.compose.message : list_recipients +/* ------------------------------------------------------------ */ + +.openerp .oe_mail .oe_mail_list_recipients { + display: inline; +} +.openerp .oe_mail .oe_mail_list_recipients .oe_all_follower { + color: blue; +} +.openerp .oe_mail .oe_mail_list_recipients .oe_partner_follower a { + color: red; +} +.openerp .oe_mail .oe_mail_list_recipients .oe_hidden, +.openerp .oe_mail .oe_mail_list_recipients .oe_more_hidden { + display: none; +} + +/* ------------------------------------------------------------ */ +/* mail.compose.message : attachment +/* ------------------------------------------------------------ */ + +.openerp .oe_mail .oe_attachment_file { + display: inline-block; +} + +.openerp .oe_mail .oe_attachment_file .oe_add { + float: left; + width: 24px; + height: 24px; + position: relative; + z-index: 10; + left: +2px; + top: +7px; + overflow: hidden; +} + +/* attachment button: override of openerp values */ +.openerp .oe_mail .oe_attachment_file .oe_add button, +.openerp .oe_mail .oe_attachment_file .oe_add input.oe_insert_file { + position: absolute; + bottom: +0px; + left: +0px; + height: 24px; + width: 24px; + margin: 0px; + padding: 0px; +} +.openerp .oe_mail .oe_attachment_file .oe_add input.oe_insert_file { + z-index:2; + width: 300px; + left: -100px; + background: transparent; + border: 0; + color: transparent; +} +.openerp .oe_mail .oe_attachment_file .oe_add button span { + position: relative; + bottom: +4px; + font-size: 30px; +} + +.openerp .oe_mail .oe_mail_msg_attachments input { + visibility: hidden; +} + +.openerp .oe_mail .oe_mail_compose_attachment_list { + clear: both; +} + +/* ------------------------------------------------------------ */ +/* mail.compose.message +/* ------------------------------------------------------------ */ + + +/* default textarea (oe_mail_compose_textarea), and body textarea for compose form view */ +.openerp .oe_mail.oe_semantic_html_override .oe_mail_compose_textarea textarea.field_text, +.openerp .oe_mail div.oe_mail_compose_message_body textarea.field_text { + width: 100%; + min-height: 120px; + height: auto; + padding: 4px; + font-size: 12px; + border: 1px solid #cccccc; +} + +/* not top textarea */ +.openerp .oe_mail.oe_semantic_html_override .oe_semantic_html_override .oe_mail_compose_textarea textarea.field_text { + height: 60px; +} + +/* form_view: delete white background */ +.openerp .oe_mail_msg_content div.oe_formview { + background-color: transparent; +} + +.openerp .oe_mail_msg_content div.oe_form_nosheet { + margin: 0px; +} + +.openerp .oe_mail_msg_content table.oe_form_group { + margin: 0px; +} + +.openerp .oe_mail_msg_content table.oe_form_field, +.openerp .oe_mail_msg_content div.oe_form_field { + padding: 0px; +} + +.openerp .oe_mail_msg_content td.oe_form_group_cell { + vertical-align: bottom; +} + +/* subject: change width */ +.openerp .oe_mail_msg_content .oe_form .oe_form_field input[type='text'] { + width: 472px; +} + +/* body_html: cleditor */ +.openerp .oe_mail_msg_content div.cleditorMain { + border: 1px solid #cccccc; +} + +/* destination_partner_ids */ +.openerp .oe_mail_msg_content div.text-core { + height: 22px !important; + width: 472px; +}
\ No newline at end of file diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index e0c9ac9b7fc..15a81be4c54 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -18,17 +18,33 @@ openerp.mail = function(session) { session.web.FormView = session.web.FormView.extend({ do_action: function(action, on_close) { - if (action.res_model == 'mail.compose.message' && - action.context && action.context.redirect == true && - this.fields && this.fields.message_ids && this.fields.message_ids.view.get("actual_mode") != 'create') { - var thread = this.fields.message_ids.thread; + if (action.res_model == 'mail.compose.message') { + + /* hack for stop context propagation of wrong value + * delete this hack when a global method to clean context is create + */ + for(var key in action.context){ + if( key!='default_template_id' && + key!='default_use_template' && + key!='default_is_private' && + key!='default_model' && + key!='default_res_id' && + key!='default_subtype' && + key!='active_id' && + key!='lang' && + key!='bin_raw' && + key!='tz' && + key!='active_model' && + key!='edi_web_url_view' && + key!='active_ids') + action.context[key]=null; + }; + /* end hack */ + + $('.openerp .oe_mail_wall_threads .oe_mail_thread button.oe_mail_wall_button_fetch').click(); - thread.refresh(action.context); - return false; - } - else { - return this._super(action, on_close); } + return this._super(action, on_close); }, }); @@ -73,6 +89,15 @@ openerp.mail = function(session) { } return string; }, + + /* replace textarea text into html text + * (add <p>, <a>) + */ + get_text2html: function(text){ + return text + .replace(/[\n\r]/g,'<br/>') + .replace(/((?:https?|ftp):\/\/[\S]+)/g,'<a href="$1">$1</a> ') + } }; @@ -84,160 +109,301 @@ openerp.mail = function(session) { * This widget handles the display of a form to compose a new message. * This form is a mail.compose.message form_view. */ - - mail.ComposeMessage = session.web.Widget.extend({ + + mail.ThreadComposeMessage = session.web.Widget.extend({ template: 'mail.compose_message', - + /** * @param {Object} parent parent * @param {Object} [options] - * @param {Object} [options.context] context passed to the - * mail.compose.message DataSetSearch. Please refer to this model - * for more details about fields and default values. + * @param {Object} [context] context passed to the + * mail.compose.message DataSetSearch. Please refer to this model + * for more details about fields and default values. + * @param {Boolean} [show_attachment_delete] */ init: function (parent, options) { var self = this; this._super(parent); this.attachment_ids = []; - // options - this.options = options || {}; - this.options.context = options.context || {}; - this.options.form_xml_id = options.form_xml_id || 'email_compose_message_wizard_form_chatter'; - this.options.form_view_id = options.form_view_id || false; - this.show_attachment_delete = true; + + this.context = options.context || {}; + + this.id = options.parameters.id; + this.model = options.parameters.model; + this.res_id = options.parameters.res_id; + this.is_private = options.parameters.is_private; + this.partner_ids = options.parameters.partner_ids; + this.options={thread:{}}; + this.options.thread.show_header_compose = options.parameters.options.thread.show_header_compose; + this.options.thread.display_on_flat = options.parameters.options.thread.display_on_flat; + + this.attachment_ids = []; + this.options.thread.show_attachment_delete = true; + this.options.thread.show_attachment_link = true; + + this.parent_thread= parent.messages!= undefined ? parent : false; + + + this.ds_attachment = new session.web.DataSetSearch(this, 'ir.attachment'); + this.fileupload_id = _.uniqueId('oe_fileupload_temp'); + $(window).on(self.fileupload_id, self.on_attachment_loaded); }, - start: function () { - this._super.apply(this, arguments); - // customize display: add avatar, clean previous content + start: function(){ + this.display_attachments(); + this.bind_events(); + + //load avatar img var user_avatar = mail.ChatterUtils.get_image(this.session, 'res.users', 'image_small', this.session.uid); this.$('img.oe_mail_icon').attr('src', user_avatar); - this.$('div.oe_mail_msg_content').empty(); - // create a context for the dataset and default_get of the wizard - var context = _.extend({}, this.options.context); - this.ds_compose = new session.web.DataSetSearch(this, 'mail.compose.message', context); - // find the id of the view to display in the chatter form - if (this.options.form_view_id) { - return this.create_form_view(); - } - else { - var data_ds = new session.web.DataSetSearch(this, 'ir.model.data'); - return data_ds.call('get_object_reference', ['mail', this.options.form_xml_id]).pipe(this.proxy('create_form_view')); - } }, - /** Create a FormView, then append it to the to widget DOM. */ - create_form_view: function (new_form_view_id) { + /* upload the file on the server, add in the attachments list and reload display + */ + display_attachments: function(){ var self = this; - this.options.form_view_id = (new_form_view_id && new_form_view_id[1]) || this.options.form_view_id; - // destroy previous form_view if any - if (this.form_view) { this.form_view.destroy(); } - // create the FormView - this.form_view = new session.web.FormView(this, this.ds_compose, this.options.form_view_id, { - action_buttons: false, - pager: false, - initial_mode: 'edit', - disable_autofocus: true, - }); - // add the form, bind events, activate the form - var msg_node = this.$('div.oe_mail_msg_content'); - return $.when(this.form_view.appendTo(msg_node)).pipe(this.proxy('postprocess_create_form_view')); - }, + var render = $(session.web.qweb.render('mail.thread.message.attachments', {'widget': self})); + if(!this.list_attachment){ + this.$('.oe_mail_compose_attachment_list').replaceWith( render ); + } else { + this.list_attachment.replaceWith( render ); + } + this.list_attachment = this.$("ul.oe_mail_msg_attachments"); - postprocess_create_form_view: function () { - // handle attachment button - this.fileupload_id = _.uniqueId('oe_fileupload'); - var button_attach = this.$('button.oe_mail_compose_message_attachment'); - var rendered = session.web.qweb.render('mail.compose_message.add_attachment', {'widget': this}); - $(rendered).insertBefore(button_attach); - // move the button inside div.oe_hidden_input_file - var input_node = this.$('input[name=ufile]'); - button_attach.detach().insertAfter(input_node); - // set the function called when attachments are added - this.$('input.oe_form_binary_file').change(this.on_attachment_change); - this.bind_events(); - this.form_view.do_show(); + // event: delete an attachment + this.$el.on('click', '.oe_mail_attachment_delete', self.on_attachment_delete); }, - on_attachment_change: function (event) { + event.stopPropagation(); + var self = this; var $target = $(event.target); if ($target.val() !== '') { - this.$('form.oe_form_binary_form').submit(); - session.web.blockUI(); + + var filename = $target.val().replace(/.*[\\\/]/,''); + + // if the files exits for this answer, delete the file before upload + var attachments=[]; + for(var i in this.attachment_ids){ + if((this.attachment_ids[i].filename || this.attachment_ids[i].name) == filename){ + if(this.attachment_ids[i].upload){ + return false; + } + this.ds_attachment.unlink([this.attachment_ids[i].id]); + } else { + attachments.push(this.attachment_ids[i]); + } + } + this.attachment_ids = attachments; + + // submit file + //session.web.blockUI(); + self.$('form.oe_form_binary_form').submit(); + //self.submit_ajax_attachment(); + + this.$(".oe_attachment_file").hide(); + + this.attachment_ids.push({ + 'id': 0, + 'name': filename, + 'filename': filename, + 'url': '', + 'upload': true + }); + this.display_attachments(); } }, + + submit_ajax_attachment: function(){ + var self=this; + var $form = self.$('form.oe_form_binary_form'); + var filename = this.$('input.oe_form_binary_file').val().replace(/.*[\\\/]/,''); + + // create form data + var fomdata = new FormData(); + $.each($form.find('input'), function(i, field) { + var $field=$(field); + if($field.attr('type')!='file'){ + fomdata.append($field.attr('name'), $field.val()); + } else { + fomdata.append($field.attr('name'), field.files[0]); + } + }); + + var progress=function(event) { + self.$("span[name='"+filename+"'] div:lt("+Math.floor(event.loaded / event.total*5)+")").show(); + }; + + $.ajax({ + url: $form.attr("action"), + data: fomdata, + cache: false, + contentType: false, + processData: false, + type: 'POST', + enctype: 'multipart/form-data', + xhr: function() { + // custom xhr + myXhr = $.ajaxSettings.xhr(); + if(myXhr.upload){ + // for handling the progress of the upload + myXhr.upload.addEventListener('progress', progress, false); + } + myXhr.addEventListener('progress', progress, false); + return myXhr; + }, + success: function(data){ + $iframe=$('<iframe style="display:none;"/>').html(data); + $iframe.appendTo(self.$el); + $iframe.remove(); + } + }); + }, + + on_attachment_loaded: function (event, result) { + //session.web.unblockUI(); + for(var i in this.attachment_ids){ + if(this.attachment_ids[i].filename == result.filename && this.attachment_ids[i].upload){ + this.attachment_ids[i]={ + 'id': result.id, + 'name': result.name, + 'filename': result.filename, + 'url': mail.ChatterUtils.get_attachment_url(this.session, result) + }; + } + } + this.display_attachments(); + var $input = this.$('input.oe_form_binary_file'); + $input.after($input.clone(true)).remove(); + this.$(".oe_attachment_file").show(); + }, + /* unlink the file on the server and reload display + */ on_attachment_delete: function (event) { - if (event.target.dataset && event.target.dataset.id) { - var attachment_id = parseInt(event.target.dataset.id); - var idx = _.pluck(this.attachment_ids, 'id').indexOf(attachment_id); - if (idx == -1) return false; - new session.web.DataSetSearch(this, 'ir.attachment').unlink(attachment_id); - this.attachment_ids.splice(idx, 1); + event.stopPropagation(); + var attachment_id=$(event.target).data("id"); + if (attachment_id) { + var attachments=[]; + for(var i in this.attachment_ids){ + if(attachment_id!=this.attachment_ids[i].id){ + attachments.push(this.attachment_ids[i]); + } + else { + this.ds_attachment.unlink([attachment_id]); + } + } + this.attachment_ids = attachments; this.display_attachments(); } }, - display_attachments: function () { - var attach_node = this.$('div.oe_mail_compose_message_attachments'); - var rendered = session.web.qweb.render('mail.thread.message.attachments', {'record': this}); - attach_node.empty(); - $(rendered).appendTo(attach_node); - this.$('.oe_mail_msg_attachments').show(); - var composer_attachment_ids = _.pluck(this.attachment_ids, 'id'); - var onchange_like = {'value': {'attachment_ids': composer_attachment_ids}} - this.form_view.on_processed_onchange(onchange_like, []); - }, - - /** - * Reinitialize the widget field values to the default values obtained - * using default_get on mail.compose.message. This allows to reinitialize - * the widget without having to rebuild a complete form view. - * @param {Object} new_context: context of the refresh */ - refresh: function (new_context) { - if (! this.form_view) return; - var self = this; - this.attachments = []; - this.options.context = _.extend(this.options.context, new_context || {}); - this.ds_compose.context = _.extend(this.ds_compose.context, this.options.context); - return this.ds_compose.call('default_get', [ - ['subject', 'body_text', 'body', 'partner_ids', 'composition_mode', - 'use_template', 'template_id', 'model', 'res_id', 'parent_id', 'content_subtype'], - this.ds_compose.get_context(), - ]).then( function (result) { - self.form_view.on_processed_onchange({'value': result}, []); - self.attachment_ids = []; + /* to avoid having unsorted file on the server. + we will show the users files of the first message post + */ + set_free_attachments: function(){ + var self=this; + this.parent_thread.ds_message.call('user_free_attachment').then(function(attachments){ + this.attachment_ids=[]; + for(var i in attachments){ + self.attachment_ids[i]={ + 'id': attachments[i].id, + 'name': attachments[i].name, + 'filename': attachments[i].filename, + 'url': mail.ChatterUtils.get_attachment_url(self.session, attachments[i]) + }; + } self.display_attachments(); }); }, - /** - * Bind events in the widget. Each event is slightly described - * in the function. */ bind_events: function() { var self = this; - // event: add a new attachment - $(window).on(this.fileupload_id, function() { - var args = [].slice.call(arguments).slice(1); - var attachment = args[0]; - attachment['url'] = mail.ChatterUtils.get_attachment_url(self.session, attachment); - self.attachment_ids.push(attachment); - self.display_attachments(); - session.web.unblockUI(); - }); - // event: delete an attachment - this.$el.on('click', '.oe_mail_attachment_delete', self.on_attachment_delete); + + // set the function called when attachments are added + this.$el.on('change', 'input.oe_form_binary_file', self.on_attachment_change ); + this.$el.on('click', 'a.oe_cancel', self.on_cancel ); + this.$el.on('click', 'button.oe_post', function(){self.on_message_post()} ); + this.$el.on('click', 'button.oe_full', function(){self.on_compose_fullmail()} ); }, - }), - + + on_compose_fullmail: function(){ + var attachments=[]; + for(var i in this.attachment_ids){ + attachments.push(this.attachment_ids[i].id); + } + var action = { + type: 'ir.actions.act_window', + res_model: 'mail.compose.message', + view_mode: 'form', + view_type: 'form', + action_from: 'mail.ThreadComposeMessage', + views: [[false, 'form']], + target: 'new', + context: { + 'default_res_model': this.context.default_res_model, + 'default_res_id': this.context.default_res_id, + 'default_content_subtype': 'html', + 'default_is_private': true, + 'default_parent_id': this.id, + 'default_body': mail.ChatterUtils.get_text2html(this.$('textarea').val() || ''), + 'default_attachment_ids': attachments + }, + }; + this.do_action(action); + }, + + on_cancel: function(){ + event.stopPropagation(); + this.$('textarea').val(""); + this.$('input[data-id]').remove(); + //this.attachment_ids=[]; + this.display_attachments(); + if(!this.options.thread.show_header_compose || !this.options.thread.display_on_flat){ + this.$el.hide(); + } + }, + + /*post a message and fetch the message*/ + on_message_post: function (body) { + + if (! body) { + var comment_node = this.$('textarea'); + var body = comment_node.val(); + comment_node.val(''); + } + + var attachments=[]; + for(var i in this.attachment_ids){ + if(this.attachment_ids[i].upload){ + session.web.dialog($('<div>' + session.web.qweb.render('CrashManager.warning', {message: 'Please, wait while the file is uploading.'}) + '</div>')); + return false; + } + attachments.push(this.attachment_ids[i].id); + } + + if(body.match(/\S+/)) { + this.parent_thread.ds_thread.call('message_post_api', [ + this.context.default_res_id, + mail.ChatterUtils.get_text2html(body), + false, + 'comment', + false, + this.context.default_parent_id, + attachments] + ).then(this.parent_thread.proxy('switch_new_message')); + this.attachment_ids=[]; + this.on_cancel(); + return true; + } + }, + }); /** * ------------------------------------------------------------ * Thread Message Expandable Widget * ------------------------------------------------------------ * - * This widget handles the display the expandable message in a thread. The - * [thread_level] parameter sets the thread level number: + * This widget handles the display the expandable message in a thread. * - thread * - - visible message * - - expandable @@ -256,14 +422,13 @@ openerp.mail = function(session) { default_res_id: 0, default_parent_id: false }, options.context || {}); - this.id = -1; + this.id = options.parameters.id || -1; this.parent_id= options.parameters.parent_id || false; this.nb_messages = options.parameters.nb_messages || 0; - this.type = options.parameters.type || false; + this.type = 'expandable'; // record options and data this.parent_thread= parent.messages!= undefined ? parent : options.options.thread._parents[0] ; - }, @@ -285,8 +450,8 @@ openerp.mail = function(session) { * @param {object} mouse envent */ on_expandable: function (event) { - event.stopPropagation(); - this.parent_thread.message_fletch(false, this.domain, this.context); + if(event)event.stopPropagation(); + this.parent_thread.message_fetch(false, this.domain, this.context); this.destroy(); return false; }, @@ -302,7 +467,7 @@ openerp.mail = function(session) { * - record.timerelative: relative time givein by timeago lib * - record.avatar: image url * - record.attachment_ids[].url: url of each attachmentThe - * [thread_level] parameter sets the thread level number: + * thread view : * - root thread * - - sub message (parent_id = root message) * - - - sub thread @@ -322,45 +487,24 @@ openerp.mail = function(session) { * @param {Object} [options] * @param {Object} [thread] read obout mail.Thread object * @param {Object} [message] - * @param {Number} [message_ids=null] ids for message_fletch + * @param {Number} [message_ids=null] ids for message_fetch * @param {Number} [message_data=null] already formatted message data, * for subthreads getting data from their parent * @param {Number} [truncate_limit=250] number of character to * display before having a "show more" link; note that the text * will not be truncated if it does not have 110% of the parameter * @param {Boolean} [show_record_name] - * @param {Boolean} [show_reply] - * @param {Boolean} [show_reply_by_email] * @param {Boolean} [show_dd_delete] * @param {Boolean} [show_dd_hide] */ init: function(parent, options) { this._super(parent); - this.domain = options.domain || []; - this.context = _.extend({ - default_model: 'mail.thread', - default_res_id: 0, - default_parent_id: false }, options.context || {}); - // options - this.options={ - 'thread' : options.options.thread, - 'message' : { - 'message_ids': options.options.message.message_ids || null, - 'message_data': options.options.message.message_data || null, - 'show_record_name': options.options.message.show_record_name != undefined ? options.options.message.show_record_name: true, - 'show_reply': options.options.message.show_reply || false, - 'show_reply_by_email': options.options.message.show_reply_by_email || false, - 'show_dd_delete': options.options.message.show_dd_delete || false, - 'show_dd_hide': options.options.message.show_dd_hide || false, - 'truncate_limit': options.options.message.truncate_limit || 250, - } - }; - // record options and data - this.parent_thread= parent.messages!= undefined ? parent : options.options.thread._parents[0] ; - - var param = options.parameters; // record parameters + var param = options.parameters; + for(var i in param){ + this[i] = param[i]; + } this.id = param.id || -1; this.model = param.model || false; this.parent_id= param.parent_id || false; @@ -372,7 +516,7 @@ openerp.mail = function(session) { this.record_name = param.record_name || false; this.body = param.body || false; this.vote_user_ids =param.vote_user_ids || []; - this.has_voted = param.has_voted || false; + this.has_voted = param.has_voted || false; this.vote_user_ids = param.vote_user_ids || []; @@ -381,6 +525,28 @@ openerp.mail = function(session) { this.author_id = param.author_id || []; this.attachment_ids = param.attachment_ids || []; + // record domain and context + this.domain = options.domain || []; + this.context = _.extend({ + default_model: 'mail.thread', + default_res_id: 0, + default_parent_id: false }, options.context || {}); + + // record options + this.options={ + 'thread' : options.options.thread, + 'message' : { + 'message_ids': options.options.message.message_ids || null, + 'message_data': options.options.message.message_data || null, + 'show_record_name': options.options.message.show_record_name != undefined ? options.options.message.show_record_name: true, + 'show_dd_delete': options.options.message.show_dd_delete || false, + 'show_dd_hide': options.options.message.show_dd_hide || false, + 'truncate_limit': options.options.message.truncate_limit || 250, + } + }; + + // record options and data + this.parent_thread= parent.messages!= undefined ? parent : options.options.thread._parents[0]; this.thread = false; if( param.id > 0 ) { @@ -420,10 +586,10 @@ openerp.mail = function(session) { * in the function. */ bind_events: function() { var self = this; + // event: click on 'Attachment(s)' in msg - this.$el.on('click', 'a.oe_mail_msg_view_attachments', function (event) { - var act_dom = $(this).parent().parent().parent().find('.oe_mail_msg_attachments'); - act_dom.toggle(); + this.$('a.oe_mail_msg_view_attachments:first').on('click', function (event) { + self.$('.oe_mail_msg_attachments:first').toggle(); }); // event: click on icone 'Read' in header this.$el.on('click', 'a.oe_read', this.on_message_read_unread); @@ -434,21 +600,13 @@ openerp.mail = function(session) { // event: click on 'Reply' in msg this.$el.on('click', 'a.oe_reply', this.on_message_reply); - // event: click on 'Reply by email' in msg side menu - this.$el.on('click', 'a.oe_reply_by_email', this.on_message_reply_by_mail); // event: click on 'Vote' button this.$el.on('click', 'button.oe_mail_msg_vote', this.on_vote); }, on_message_reply:function(event){ event.stopPropagation(); - this.thread.on_compose_message($(event.srcElement).hasClass("oe_full_reply"), false); - return false; - }, - - on_message_reply_by_mail:function(event){ - event.stopPropagation(); - this.thread.on_compose_message(true, true); + this.thread.on_compose_message(); return false; }, @@ -468,6 +626,7 @@ openerp.mail = function(session) { if(this.thread){ return false; } + var param = _.extend(self, {'parent_id': self.id}); /*create thread*/ self.thread = new mail.Thread(self, { 'domain': self.domain, @@ -480,11 +639,7 @@ openerp.mail = function(session) { 'thread' : self.options.thread, 'message' : self.options.message }, - 'parameters':{ - 'model': self.model, - 'id': self.id, - 'parent_id': self.id - } + 'parameters': param } ); /*insert thread in parent message*/ @@ -501,9 +656,6 @@ openerp.mail = function(session) { } else { self.destroy(); } - for(var i in this.thread.messages){ - this.thread.messages[i].animated_destroy({fadeTime:0}); - } }, on_message_delete: function (event) { @@ -523,10 +675,17 @@ openerp.mail = function(session) { */ on_message_read_unread: function (event) { event.stopPropagation(); - this.animated_destroy({fadeTime:250}); + if($(event.srcElement).hasClass("oe_read")) this.animated_destroy({fadeTime:250}); // if this message is read, all childs message display is read var ids = [this.id].concat( this.get_child_ids() ); - this.ds_notification.call('set_message_read', [ids,$(event.srcElement).hasClass("oe_read")]); + + if($(event.srcElement).hasClass("oe_read")) { + this.ds_notification.call('set_message_read', [ids,true]); + this.$el.removeClass("oe_mail_unread").addClass("oe_mail_read"); + } else { + this.ds_notification.call('set_message_read', [ids,false]); + this.$el.removeClass("oe_mail_read").addClass("oe_mail_unread"); + } return false; }, @@ -598,8 +757,8 @@ openerp.mail = function(session) { display_vote: function () { var self = this; var vote_element = session.web.qweb.render('mail.thread.message.vote', {'widget': self}); - self.$(".placeholder-mail-vote").empty(); - self.$(".placeholder-mail-vote").html(vote_element); + self.$(".placeholder-mail-vote:first").empty(); + self.$(".placeholder-mail-vote:first").html(vote_element); }, }); @@ -609,11 +768,13 @@ openerp.mail = function(session) { * ------------------------------------------------------------ * * This widget handles the display of a thread of messages. The - * [thread_level] parameter sets the thread level number: - * - root message + * thread view: + * - root thread * - - sub message (parent_id = root message) - * - - - sub sub message (parent id = sub message) + * - - - sub thread + * - - - - sub sub message (parent id = sub thread) * - - sub message (parent_id = root message) + * - - - sub thread */ mail.Thread = session.web.Widget.extend({ template: 'mail.thread', @@ -627,7 +788,6 @@ openerp.mail = function(session) { * @param {Object} [options] * @param {Object} [message] read about mail.ThreadMessage object * @param {Object} [thread] - * @param {Number} [thread_level=0] number of thread levels * @param {Boolean} [use_composer] use the advanced composer, or * the default basic textarea if not set * @param {Number} [expandable_number=5] number message show @@ -637,7 +797,7 @@ openerp.mail = function(session) { * @param {Boolean} [display_on_flat] display all thread * on the wall thread level (no hierarchy) * @param {Array} [parents] liked with the parents thread - * use with browse, fletch... [O]= top parent + * use with browse, fetch... [O]= top parent */ init: function(parent, options) { this._super(parent); @@ -650,7 +810,7 @@ openerp.mail = function(session) { // options this.options={ 'thread' : { - 'thread_level': options.options.thread.thread_level || 0, + 'thread_level': (options.options.thread.thread_level+1) || 0, 'show_header_compose': (options.options.thread.show_header_compose != undefined ? options.options.thread.show_header_compose: false), 'use_composer': options.options.thread.use_composer || false, 'expandable_number': options.options.thread.expandable_number || 5, @@ -670,6 +830,14 @@ openerp.mail = function(session) { this.id= param.id || false; this.model= param.model || false; this.parent_id= param.parent_id || false; + this.is_private = param.is_private || false; + this.author_id = param.author_id || false; + this.partner_ids = []; + for(var i in param.partner_ids){ + if(param.partner_ids[i][0]!=(param.author_id ? param.author_id[0] : -1)){ + this.partner_ids.push(param.partner_ids[i]); + } + } this.messages = []; @@ -687,8 +855,7 @@ openerp.mail = function(session) { this.display_user_avatar(); var display_done = compose_done = false; - // add message composition form view - compose_done = this.instantiate_composition_form(); + this.instantiate_ComposeMessage(); this.bind_events(); @@ -699,23 +866,57 @@ openerp.mail = function(session) { return display_done && compose_done; }, - /** - * Override-hack of do_action: automatically load message on the chatter. - * Normally it should be called only when clicking on 'Post/Send' - * in the composition form. */ - do_action: function(action, on_close) { - this.instantiate_composition_form(); - this.message_fletch(false, false, false, [action.id]); - return this._super(action, on_close); + instantiate_ComposeMessage: function(){ + // add message composition form view + this.ComposeMessage = new mail.ThreadComposeMessage(this,{ + 'context': this.context, + 'parameters': this, + 'show_attachment_delete': true, + }); + this.ComposeMessage.appendTo(this.$(".oe_mail_thread_action:first")); }, /* this method is runing for first parent thread */ on_first_thread: function(){ + var self=this; // fetch and display message, using message_ids if set - display_done = this.message_fletch(true); - //show the first write message - this.$(">.oe_mail_thread_action").show(); + this.message_fetch(); + + $(document).scroll( self.on_scroll ); + window.setTimeout( self.on_scroll, 500 ); + + $(session.web.qweb.render('mail.wall_no_message', {})).appendTo(this.$('ul.oe_mail_thread_display')); + + if(this.options.thread.show_header_compose){ + this.ComposeMessage.$el.show(); + //this.ComposeMessage.set_free_attachments(); + } + + var button_fetch = $('<button style="display:none;" class="oe_mail_wall_button_fetch"/>').click(function(event){ + if(event)event.stopPropagation(); + self.message_fetch(); + }); + this.$el.prepend(button_fetch); + this.$el.addClass("oe_mail_wall_first_thread"); + }, + + /* When the expandable object is visible on screen (with scrolling) + * then the on_expandable function is launch + */ + on_scroll: function(event){ + if(event)event.stopPropagation(); + var last=this.messages[0]; + if(last && last.type=="expandable"){ + var pos = last.$el.position(); + if(pos.top){ + /* bottom of the screen */ + var bottom = $(window).scrollTop()+$(window).height()+100; + if(bottom - pos.top > 0){ + last.on_expandable(); + } + } + } }, /** @@ -723,17 +924,8 @@ openerp.mail = function(session) { * in the function. */ bind_events: function() { var self = this; - // event: writing in basic textarea of composition form (quick reply) - // event: onblur for hide 'Reply' - this.$('.oe_mail_compose_textarea:first textarea') - .keyup(function (event) { - var charCode = (event.which) ? event.which : window.event.keyCode; - if (event.shiftKey && charCode == 13) { this.value = this.value+"\n"; } - else if (charCode == 13) { return self.message_post(); } - }) - .blur(function (event) { - $(this).parents('.oe_mail_thread_action:first').hide(); - }); + self.$('.oe_mail_compose_textarea .oe_more').click(function () { var p=$(this).parent(); p.find('.oe_more_hidden, .oe_hidden').show(); p.find('.oe_more').hide(); }); + self.$('.oe_mail_compose_textarea .oe_more_hidden').click(function () { var p=$(this).parent(); p.find('.oe_more_hidden, .oe_hidden').hide(); p.find('.oe_more').show(); }); }, /* get all child message/thread id linked @@ -796,71 +988,13 @@ openerp.mail = function(session) { return this.options.thread._parents[0].messages[0].browse_message(options); }, - /** Instantiate the composition form, with every parameters in context - * or in the widget context. - * @param {object} - * @param {boolean} show_header_compose, force to instantiate form - */ - instantiate_composition_form: function(context) { - // add message composition form view - if ((!context || !context.show_header_compose) && - (!this.options.thread.show_header_compose || !this.options.thread.use_composer || - (this.options.thread.show_header_compose <= this.options.thread._parents.length && this.options.thread._parents[0]!=this))) { - this.$("textarea:first").val(""); - return false; - } - if (this.compose_message_widget) { - this.compose_message_widget.refresh(); - } else { - var context = _.extend(context || {}, this.context); - this.compose_message_widget = new mail.ComposeMessage(this, {'context': context}); - var composition_node = this.$('div.oe_mail_thread_action'); - composition_node.empty(); - return this.compose_message_widget.appendTo(composition_node); - } - }, - /* this function is launch when a user click on "Reply" button */ - on_compose_message: function(full_reply, by_mail){ - if(full_reply){ - this.instantiate_composition_form({'show_header_compose':true}); - } - if(by_mail){ - if (!this.compose_message_widget) return true; - this.compose_message_widget.refresh({ - 'default_composition_mode': 'reply', - 'default_parent_id': this.id, - 'default_content_subtype': 'html'} ); - } - this.$('div.oe_mail_thread_action:first').toggle(); + on_compose_message: function(){ + this.ComposeMessage.$el.toggle(); return false; }, - refresh: function (action_context) { - var self=this; - _(this.messages).each(function(){ self.destroy(); }); - self.message_fletch(); - }, - - /*post a message and fletch the message*/ - message_post: function (body) { - var self = this; - if (! body) { - var comment_node = this.$('textarea'); - var body = comment_node.val(); - comment_node.val(''); - } - if(body.match(/\S+/)) { - this.ds_thread.call('message_post_api', [ - [this.context.default_res_id], body, false, 'comment', false, this.context.default_parent_id, undefined]) - .then(this.proxy('switch_new_message')); - } - else { - return false; - } - }, - /** Fetch messages * @param {Bool} initial_mode: initial mode: try to use message_data or * message_ids, if nothing available perform a message_read; otherwise @@ -868,7 +1002,7 @@ openerp.mail = function(session) { * @param {Array} replace_domain: added to this.domain * @param {Object} replace_context: added to this.context */ - message_fletch: function (initial_mode, replace_domain, replace_context, ids) { + message_fetch: function (initial_mode, replace_domain, replace_context, ids) { var self = this; // initial mode: try to use message_data or message_ids @@ -879,8 +1013,8 @@ openerp.mail = function(session) { fetch_domain = replace_domain ? replace_domain : this.domain; fetch_context = replace_context ? replace_context : this.context; fetch_context.message_loaded= [this.id||0].concat( self.options.thread._parents[0].get_child_ids() ); - - return this.ds_message.call('message_read', [ids, fetch_domain, (this.options.thread.thread_level+1), fetch_context, this.context.default_parent_id || undefined] + + return this.ds_message.call('message_read', [ids, fetch_domain, fetch_context, 0, this.context.default_parent_id || undefined] ).then(this.proxy('switch_new_message')); }, @@ -906,6 +1040,8 @@ openerp.mail = function(session) { insert_message: function (message) { var self=this; + this.$("li.oe_wall_no_message").remove(); + if(message.type=='expandable'){ var message = new mail.ThreadExpandable(self, { 'domain': message.domain, @@ -930,42 +1066,46 @@ openerp.mail = function(session) { }); } - var thread = self.options.thread.display_on_flat ? self.options.thread._parents[0] : this; + var thread_messages = (self.options.thread.display_on_flat && self.options.thread.thread_level ? self.options.thread._parents[0].messages : []).concat(self.messages); + var thread = (self.options.thread.display_on_flat && self.options.thread.thread_level ? self.options.thread._parents[0] : self); // check older and newer message for insert var parent_newer = false; var parent_older = false; - for(var i in thread.messages){ - if(thread.messages[i].id > message.id){ - if(!parent_newer || parent_newer.id>thread.messages[i].id) - parent_newer = thread.messages[i]; - } else if(thread.messages[i].id>0 && thread.messages[i].id < message.id) { - if(!parent_older || parent_older.id<thread.messages[i].id) - parent_older = thread.messages[i]; + for(var i in thread_messages){ + if(thread_messages[i].id > message.id){ + if(!parent_newer || parent_newer.id>=thread_messages[i].id) + parent_newer = thread_messages[i]; + } else if(thread_messages[i].id>0 && thread_messages[i].id < message.id) { + if(!parent_older || parent_older.id<thread_messages[i].id) + parent_older = thread_messages[i]; } } - if(parent_newer) - message.insertAfter(parent_newer.$el); - else if(parent_older) - message.insertBefore(parent_older.$el); - else - message.prependTo(thread.list_ul); + var sort = self.options.thread.thread_level==0 || (self.options.thread.display_on_flat && self.options.thread.thread_level<=1); - return message - }, - - /* Hide messages if they are more message that _expandable_max - * display "show more messages" - */ - display_expandable: function(){ - if(this.messages.length>this.options._expandable_max){ - this.list_ul.find('>li:gt('+(this.options._expandable_max-1)+')').hide(); - this.more_msg.show(); - } else { - this.list_ul.find('>li').show(); - this.more_msg.hide(); + if(parent_older){ + if(sort){ + message.insertBefore(parent_older.$el); + } else { + message.insertAfter(parent_older.$el); + } + } + else if(parent_newer){ + if(sort){ + message.insertAfter(parent_newer.$el); + } else { + message.insertBefore(parent_newer.$el); + } } + else { + if(sort){ + message.prependTo(thread.list_ul); + } else { + message.appendTo(thread.list_ul); + } + } + return message }, display_user_avatar: function () { @@ -1003,7 +1143,6 @@ openerp.mail = function(session) { this._super.apply(this, arguments); this.options.domain = this.options.domain || []; this.options.context = {'default_model': 'mail.thread', 'default_res_id': false}; - this.options.thread_level = this.options.thread_level || 0; }, start: function() { @@ -1017,6 +1156,10 @@ openerp.mail = function(session) { this.$el.toggle(this.view.get("actual_mode") !== "create"); }, + /** + * Reinitialize the widget field and Display the threads + * @param {Object} new_context: context of the refresh + */ set_value: function() { var self = this; this._super.apply(this, arguments); @@ -1034,30 +1177,26 @@ openerp.mail = function(session) { var show_header_compose = this.view.is_action_enabled('edit') || (this.getParent().fields.message_is_follower && this.getParent().fields.message_is_follower.get_value()); + if(this.thread){ + this.thread.destroy(); + } this.thread = new mail.Thread(self, { 'domain': domain, 'context': this.options.context, 'options':{ 'thread':{ - 'thread_level': this.options.thread_level, 'show_header_compose': show_header_compose, 'use_composer': show_header_compose, 'display_on_flat':true }, 'message':{ - 'show_dd_delete': true, - 'show_reply_by_email': show_header_compose, + 'show_dd_delete': true } }, 'parameters': {}, } ); - - this.$('ul.oe_mail_wall_threads').empty(); - var render_res = session.web.qweb.render('mail.wall_thread_container', {}); - $(render_res).appendTo(this.$('ul.oe_mail_wall_threads')); - - return this.thread.appendTo( this.$('li.oe_mail_wall_thread:last') ); + return this.thread.appendTo( this.$('.oe_mail_wall_threads:first') ); }, }); @@ -1089,7 +1228,6 @@ openerp.mail = function(session) { this.options = options || {}; this.options.domain = options.domain || []; this.options.context = options.context || {}; - this.options.thread_level = options.thread_level || 1; this.search_results = {'domain': [], 'context': {}, 'groupby': {}} this.ds_msg = new session.web.DataSetSearch(this, 'mail.message'); }, @@ -1098,6 +1236,8 @@ openerp.mail = function(session) { this._super.apply(this, arguments); var searchview_ready = this.load_searchview({}, false); var thread_displayed = this.message_render(); + this.options.domain = this.options.domain.concat(this.search_results['domain']); + this.bind_events(); return (searchview_ready && thread_displayed); }, @@ -1135,36 +1275,36 @@ openerp.mail = function(session) { }); }, - /** Clean and display the threads */ - message_render: function (search) { - var domain = this.options.domain.concat(this.search_results['domain']); - - var domain = _.extend(this.options.domain, search&&search.domain? search.domain : {}); - var context = _.extend(this.options.context, search&&search.context ? search.context : {}); + /** + * Display the threads + */ + message_render: function (search) { this.thread = new mail.Thread(this, { - 'domain' : domain, - 'context' : context, + 'domain' : this.options.domain.concat(this.search_results['domain']), + 'context' : _.extend(this.options.context, search&&search.search_results['context'] ? search.search_results['context'] : {}), 'options': { 'thread' :{ - 'thread_level': this.options.thread_level, 'use_composer': true, - 'show_header_compose': 1, + 'show_header_compose': false, }, 'message': { - 'show_reply': this.options.thread_level > 0, + 'show_reply': true, 'show_dd_hide': true, + 'show_dd_delete': true, }, }, 'parameters': {}, } ); + return this.thread.appendTo( this.$('.oe_mail_wall_threads:first') ); - this.$('ul.oe_mail_wall_threads').empty(); - var render_res = session.web.qweb.render('mail.wall_thread_container', {}); - $(render_res).appendTo(this.$('ul.oe_mail_wall_threads')); - - return this.thread.appendTo( this.$('li.oe_mail_wall_thread:last') ); }, + + bind_events: function(){ + var self=this; + this.$("button.oe_write_full:first").click(function(){ self.thread.ComposeMessage.on_compose_fullmail(); }); + this.$("button.oe_write_onwall:first").click(function(){ self.thread.ComposeMessage.$el.toggle(); }); + } }); }; diff --git a/addons/mail/static/src/js/mail_followers.js b/addons/mail/static/src/js/mail_followers.js index 6c016c6c679..236e3081136 100644 --- a/addons/mail/static/src/js/mail_followers.js +++ b/addons/mail/static/src/js/mail_followers.js @@ -40,6 +40,7 @@ openerp_mail_followers = function(session, mail) { this._check_visibility(); this.reinit(); this.bind_events(); + this.display_subtypes(); }, _check_visibility: function() { @@ -53,31 +54,15 @@ openerp_mail_followers = function(session, mail) { bind_events: function() { var self = this; - this.$('div.oe_mouse_subtypes') - .on('mouseover', function () { - $(this).removeClass('oe_mouseout').addClass('oe_mouseover'); - self.display_subtypes(); - }) - .on('mouseleave', function () { - $(this).removeClass('oe_mouseover').addClass('oe_mouseout'); - self.display_subtypes(); - }); - this.$('button.oe_follower') .on('click', function () { if($(this).hasClass('oe_notfollow')) self.do_follow(); else self.do_unfollow(); - }) - .on('mouseover', function () { - $(this).removeClass('oe_mouseout').addClass('oe_mouseover'); - }) - .on('mouseleave', function () { - $(this).removeClass('oe_mouseover').addClass('oe_mouseout'); }); - this.$el.on('click', 'ul.oe_subtypes input', function () { self.do_update_subscription(); }) + this.$el.on('click', 'ul.oe_subtypes input', self.do_update_subscription ); this.$el.on('click', 'button.oe_invite', function(event) { action = { @@ -173,7 +158,8 @@ openerp_mail_followers = function(session, mail) { set_subtypes:function(data){ var self = this; - var records = data[this.view.datarecord.id].message_subtype_data; + var records = (data[this.view.datarecord.id] || data[null]).message_subtype_data; + _(records).each(function (record, record_name) { record.name = record_name; record.followed = record.followed || undefined; @@ -194,16 +180,10 @@ openerp_mail_followers = function(session, mail) { }, do_follow: function () { - var self =this; _(this.$('.oe_msg_subtype_check')).each(function(record){ $(record).attr('checked','checked'); }); - var context = new session.web.CompoundContext(this.build_context(), {}); - return this.ds_model.call('message_subscribe_users', [[this.view.datarecord.id], undefined, undefined, context]).pipe(function(value_){ - self.read_value(value_); - if(!self.$('.oe_recthread_subtypes').is(":visible")) - self.display_subtypes(true); - }); + this.do_update_subscription(); }, do_unfollow: function () { @@ -211,23 +191,28 @@ openerp_mail_followers = function(session, mail) { $(record).attr('checked',false); }); var context = new session.web.CompoundContext(this.build_context(), {}); - return this.ds_model.call('message_unsubscribe_users', [[this.view.datarecord.id], undefined, context]).pipe(this.proxy('read_value')); + return this.ds_model.call('message_unsubscribe_users', [[this.view.datarecord.id], [this.session.uid], context]).pipe(this.proxy('read_value')); }, - do_update_subscription: function () { - var context = new session.web.CompoundContext(this.build_context(), {}); + do_update_subscription: function (event) { var self = this; var checklist = new Array(); - _(this.$('.oe_msg_subtype_check')).each(function(record){ + _(this.$('.oe_mail_recthread_actions input[type="checkbox"]')).each(function(record){ if($(record).is(':checked')) { checklist.push(parseInt($(record).data('id')))} }); if(!checklist.length) return this.do_unfollow(); - else - return this.ds_model.call('message_subscribe_users',[[self.view.datarecord.id], undefined, checklist, context]).pipe(this.proxy('read_value')); + else{ + var context = new session.web.CompoundContext(this.build_context(), {}); + return this.ds_model.call('message_subscribe_users', [[this.view.datarecord.id], [this.session.uid], undefined, context]).pipe(function(value_){ + self.read_value(value_); + self.display_subtypes(true); + }); + } + }, }); diff --git a/addons/mail/static/src/xml/mail.xml b/addons/mail/static/src/xml/mail.xml index 07c9b406cdc..7941925415d 100644 --- a/addons/mail/static/src/xml/mail.xml +++ b/addons/mail/static/src/xml/mail.xml @@ -1,11 +1,118 @@ <?xml version="1.0" encoding="UTF-8"?> <template> + <!-- + mail.compose_message template + This template holds the composition form to write a note or send + an e-mail. It contains by default a textarea, that will be replaced + by another composition form in the main wall composition form, or + for main thread composition form in document form view. + --> + <t t-name="mail.compose_message"> + <div class="oe_mail_compose_textarea"> + <img class="oe_mail_icon oe_mail_frame oe_left" alt="User img"/> + <div class="oe_mail_msg_content"> + <!-- contains the composition form --> + <!-- default content: old basic textarea --> + <div class="oe_mail_post_header"> + <t t-call="mail.thread.list_recipients"/> + <a class="oe_cancel oe_e">X</a> + </div> + <textarea class="field_text" placeholder="Add your comment here..."/> + <div class="oe_mail_post_footer"> + <div class="oe_mail_compose_attachment_list"/> + <button class="oe_full">Full mail message</button> + <button class="oe_post">Post message</button> + <t t-call="mail.compose_message.add_attachment"/> + </div> + </div> + <div class="oe_clear"/> + </div> + </t> + + <!-- + mail.compose_message.add_attachment template + Small template to be inserted in the composition for add attachments + --> + <t t-name="mail.compose_message.add_attachment"> + <div class="oe_attachment_file"> + <div class="oe_add"> + <!-- uploader of file --> + <button><span class="oe_e">p</span></button> + <t t-call="HiddenInputFile"> + <t t-set="fileupload_id" t-value="widget.fileupload_id"/> + <t t-set="fileupload_action">/web/binary/upload_attachment</t> + <input type="hidden" name="model" value=""/> + <input type="hidden" name="id" value="0"/> + <input type="hidden" name="session_id" t-att-value="widget.session.session_id"/> + </t> + </div> + </div> + </t> + + <!-- + mail.thread.message.attachments template + Template used to display attachments in a mail.message + --> + <t t-name="mail.thread.message.attachments"> + <ul t-attf-class="oe_mail_msg_attachments #{widget.attachment_ids[0] and widget.options.thread.show_attachment_link?'':'oe_hidden'}"> + <t t-foreach="widget.attachment_ids" t-as="attachment"> + <li> + <span t-if="(attachment.upload or attachment.percent_loaded<100)" t-attf-title="{(attachment.name || attachment.filename) + (attachment.date?' \n('+attachment.date+')':'' )}" t-attf-name="{attachment.name || attachment.filename}"> + <div class="oe_upload_in_process"> + <span>Upload in progress...</span> + <div t-attf-style="{attachment.percent_loaded>0?'':'display:none;'}"/> + <div t-attf-style="{attachment.percent_loaded>20?'':'display:none;'}"/> + <div t-attf-style="{attachment.percent_loaded>40?'':'display:none;'}"/> + <div t-attf-style="{attachment.percent_loaded>60?'':'display:none;'}"/> + <div t-attf-style="{attachment.percent_loaded>80?'':'display:none;'}"/> + </div> + <t t-raw="attachment.name || attachment.filename"/> + </span> + <a t-if="(!attachment.upload or attachment.percent_loaded>=100)" t-att-href="attachment.url" t-attf-title="{(attachment.name || attachment.filename) + (attachment.date?' \n('+attachment.date+')':'' )}"> + <t t-raw="attachment.name || attachment.filename"/> + </a> + <t t-if="widget.options.thread.show_attachment_delete and (!attachment.upload or attachment.percent_loaded>=100)"> + <a class="oe_right oe_mail_attachment_delete" title="Delete this attachment" t-attf-data-id="{attachment.id}">x</a> + </t> + + </li> + </t> + </ul> + </t> + + <t t-name="mail.thread.message.private"> + <div> + <span class="oe_placeholder_checkbox_private"/> + <span class="oe_send_private">This email is private.</span> + <span class="oe_send_public">I wrote for contacts and all my followers.</span> + </div> + </t> + + <!-- + template to the recipients list + --> + <t t-name="mail.thread.list_recipients"> + <div class="oe_mail_list_recipients"> + Post to: + <span t-if="!widget.is_private" class="oe_all_follower">All Followers</span> + <t t-if="!widget.is_private and widget.partner_ids.length"> and </t> + <t t-set="inc" t-value="0"/> + <t t-if="widget.partner_ids.length" t-foreach="widget.partner_ids" t-as="partner"><span t-attf-class="oe_partner_follower #{inc>=3?'oe_hidden':''}"><t t-if="inc" t-raw="', '"/><a t-attf-href="#model=res.partner&id=#{partner[0]}"><t t-raw="partner[1]"/></a></span><t t-set="inc" t-value="inc+1"/> + </t> + <t t-if="widget.partner_ids.length>=3"> + <span class="oe_more">, <a><t t-raw="widget.partner_ids.length-3"/> others...</a></span> + <a class="oe_more_hidden"><<<</a> + </t> + </div> + </t> + <!-- wall main template Template used to display the communication history in the wall. --> - <div t-name="mail.wall" class="oe_view_manager oe_mail_wall oe_view_manager_current"> + <div t-name="mail.wall" class="oe_view_manager oe_mail_wall oe_view_manag + er_current"> <table class="oe_view_manager_header"> <colgroup> <col width="33%"/> @@ -25,21 +132,30 @@ </td> <td><div class="oe_view_manager_view_search" t-opentag="true"/></td> </tr> + <tr class="oe_header_row"> + <td colspan="2"> + <button type="button" class="oe_write_full oe_highlight"> + Compose a new message + </button> + <button type="button" class="oe_write_onwall" help="Your followers can read this message"> + Write to your followers + </button> + </td> + </tr> </tbody> </table> - <ul class="oe_mail_wall_threads"> - <!-- contains threads --> - </ul> + <!-- placeholder for the wall threads --> + <div class="oe_mail_wall_threads"/> <div class="oe_mail_wall_aside"> <!-- contains currently nothing --> </div> </div> <!-- - wall_thread_container template for the wall - Each discussion thread is contained inside this template + display message on the wall when there are no message --> - <li t-name="mail.wall_thread_container" class="oe_mail_wall_thread"> + <li t-name="mail.wall_no_message" class="oe_wall_no_message"> + You have no messages </li> <!-- @@ -55,39 +171,6 @@ </div> <!-- - mail.compose_message template - This template holds the composition form to write a note or send - an e-mail. It contains by default a textarea, that will be replaced - by another composition form in the main wall composition form, or - for main thread composition form in document form view. - --> - <t t-name="mail.compose_message"> - <div class="oe_mail_compose_textarea"> - <img class="oe_mail_icon oe_mail_frame oe_left" alt="User img"/> - <div class="oe_mail_msg_content"> - <!-- contains the composition form --> - <!-- default content: old basic textarea --> - <textarea placeholder="Add your comment here..."/> - </div> - <div class="oe_clear"/> - </div> - </t> - - <!-- - mail.compose_message.add_attachment template - Small template to be inserted in the composition form to add attachments - --> - <t t-name="mail.compose_message.add_attachment"> - <t t-call="HiddenInputFile"> - <t t-set="fileupload_id" t-value="widget.fileupload_id"/> - <t t-set="fileupload_action">/web/binary/upload_attachment</t> - <input type="hidden" name="model" t-att-value="widget.form_view.model"/> - <input type="hidden" name="id" t-att-value="widget.form_view.datarecord.id || 0"/> - <input type="hidden" name="session_id" t-att-value="widget.session.session_id"/> - </t> - </t> - - <!-- thread template This template holds a thread of comments. It begins with an actions container, holding the composition form. Then come the various @@ -96,7 +179,6 @@ <div t-name="mail.thread" class="oe_mail oe_mail_thread oe_semantic_html_override"> <div class="oe_mail_thread_action"> <!-- contains the composition box (form + image) --> - <t t-call="mail.compose_message"/> </div> <ul class="oe_mail_thread_display"> <!-- contains the threads --> @@ -104,16 +186,15 @@ </div> <!-- default layout --> - <li t-name="mail.thread.message" t-attf-class="oe_mail oe_mail_thread_msg #{widget.unread?'oe_mail_unread':'oe_mail_read'}" t-attf-data-msg_id="{widget.id}"> + <li t-name="mail.thread.message" t-attf-class="oe_mail oe_mail_thread_msg #{widget.unread?'oe_mail_unread':'oe_mail_read'}"> <div t-attf-class="oe_mail_msg_#{widget.type} oe_semantic_html_override"> <!-- message actions (read/unread, reply, delete...) --> <ul class="oe_header"> <li class="placeholder-mail-vote"><t t-call="mail.thread.message.vote"/></li> - <li t-if="!widget.options.thread.display_on_flat and widget.unread" title="Read"><a class="oe_read oe_e">W</a></li> - <li t-if="!widget.options.thread.display_on_flat and !widget.unread" title="Set back to unread"><a class="oe_unread oe_e">h</a></li> - <li t-if="!widget.options.message.show_reply_by_email" title="Reply"><a class="oe_reply oe_e">)</a></li> - <li t-if="widget.options.message.show_reply_by_email"><a class="oe_reply_by_email oe_e" title="Reply by mail">)</a></li> - <t t-if="(widget.options.message.show_reply || widget.options.message.show_reply_by_email || (widget.is_author and widget.options.message.show_dd_delete) || widget.type == 'email')"> + <li t-if="!widget.options.thread.display_on_flat" title="Read" class="oe_read"><a class="oe_read oe_e">W</a></li> + <li t-if="!widget.options.thread.display_on_flat" title="Set back to unread" class="oe_unread"><a class="oe_unread oe_e">h</a></li> + <li title="Quick reply"><a class="oe_reply oe_e">)</a></li> + <t t-if="(widget.is_author and widget.options.message.show_dd_delete) or widget.type == 'email'"> <li> <span class="oe_dropdown_toggle"> <a class="oe_e" title="More options">í</a> @@ -123,8 +204,6 @@ <li t-if="display['show_hide']"> <a href="#" class="oe_mail_msg_hide_type" t-attf-data-subtype='{widget.subtype}'>Hide '<t t-esc="widget.subtype"/>' for this document</a> </li> --> - <li t-if="widget.options.message.show_reply" title="Reply"><a class="oe_reply oe_full_reply">Full reply</a></li> - <li t-if="widget.options.message.show_reply_by_email"><a class="oe_reply_by_email oe_full_reply" title="Reply by mail">Full reply</a></li> <li t-if="widget.type == 'email'"><a class="oe_mail_msg_details" t-attf-href="#model=mail.message&id=#{widget.id}" >Details</a></li> </ul> </span> @@ -145,7 +224,6 @@ <ul class="oe_mail_msg_footer"> <li t-if="widget.author_id"><a t-attf-href="#model=res.partner&id=#{widget.author_id[0]}"><t t-raw="widget.author_id[1]"/></a></li> <li><span t-att-title="widget.date"><t t-raw="widget.timerelative"/></span></li> - <li t-if="widget.attachment_ids.length > 0"> <a class="oe_mail_msg_view_attachments"> <t t-if="widget.attachment_ids.length == 1">1 Attachment</t> @@ -155,7 +233,7 @@ </ul> <div class="oe_clear"/> <div class="oe_mail_msg_body"> - <t t-if="widget.options.message.show_record_name and widget.record_name and (!widget.subject) and widget.options.thread._parents.length<=widget.options.thread.thread_level and widget.model!='res.partner'"> + <t t-if="widget.options.message.show_record_name and widget.record_name and (!widget.subject) and !widget.options.thread.thread_level and !widget.options.thread.display_on_flat and widget.model!='res.partner'"> <a class="oe_mail_action_model" t-attf-href="#model=#{widget.model}&id=#{widget.res_id}"><t t-raw="widget.record_name"/></a> </t> <t t-raw="widget.body"/> @@ -171,7 +249,7 @@ </li> <!-- expandable message layout --> - <li t-name="mail.thread.expandable" t-attf-class="oe_mail oe_mail_thread_msg oe_mail_unread" t-attf-data-thread_id="{widget.id}"> + <li t-name="mail.thread.expandable" class="oe_mail oe_mail_thread_msg oe_mail_unread"> <div t-attf-class="oe_mail_msg_#{widget.type} oe_semantic_html_override"> <div class="oe_mail_msg_content oe_mail_msg_more_message"> <a class="oe_mail_fetch_more">Load more messages <span t-if="widget.nb_messages>0">(<t t-raw="widget.nb_messages"/> messages not display)</span>...</a> @@ -179,23 +257,6 @@ </div> </li> - <!-- - mail.thread.message.attachments template - Template used to display attachments in a mail.message - --> - <t t-name="mail.thread.message.attachments"> - <ul class="oe_mail_msg_attachments"> - <t t-foreach="record.attachment_ids" t-as="attachment"> - <li> - <a t-att-href="attachment.url"><t t-raw="attachment.name || attachment.filename"/></a> - <t t-if="record.show_attachment_delete"> - <a class="oe_right oe_mail_attachment_delete" title="Delete this attachmentt" t-attf-data-id="{attachment.id}">x</a> - </t> - </li> - </t> - </ul> - </t> - <!-- mail.thread.message.vote Template used to display Like/Unlike in a mail.message --> @@ -215,7 +276,7 @@ <button t-attf-class="oe_mail_msg_vote oe_tag"> <span> <t t-if="!widget.has_voted">Agree</t> - <t t-if="widget.has_voted">Unagree</t> + <t t-if="widget.has_voted">Undo</t> </span> </button> </span> diff --git a/addons/mail/static/src/xml/mail_followers.xml b/addons/mail/static/src/xml/mail_followers.xml index a6df1f0fe8c..f78c91c6305 100644 --- a/addons/mail/static/src/xml/mail_followers.xml +++ b/addons/mail/static/src/xml/mail_followers.xml @@ -13,9 +13,9 @@ <span class="oe_unfollow">Unfollow</span> <span class="oe_following">Following</span> </button> - <div class="oe_recthread_subtypes"> - <ul class="oe_subtypes"></ul> - </div> + </div> + <div class="oe_recthread_subtypes"> + <ul class="oe_subtypes"></ul> </div> </div> <div class="oe_grey"> diff --git a/addons/mail/tests/test_mail.py b/addons/mail/tests/test_mail.py index 1fc44ed81af..a94c4fc2c8a 100644 --- a/addons/mail/tests/test_mail.py +++ b/addons/mail/tests/test_mail.py @@ -529,109 +529,6 @@ class test_mail(TestMailMockups): self.assertEqual(message2.subject, _subject, 'mail.message subject incorrect') self.assertEqual(message2.body, group_bird.description, 'mail.message body incorrect') - # FP Note: to be reviewed to be more generic, not depending on the algorythm of - # message_read - #def test_30_message_read(self): - # """ Tests designed for message_read. """ - # # TDE NOTE: this test is not finished, as the message_read method is not fully specified. - # # It will be updated as soon as we have fixed specs ! - # cr, uid = self.cr, self.uid - # group_pigs = self.mail_group.browse(cr, uid, self.group_pigs_id) - - # def _compare_structures(struct1, struct2, n=0): - # # print '%scompare structure' % ('\t' * n) - # # self.assertEqual(len(struct1), len(struct2), 'message_read structure number of childs incorrect') - - # for x in range(len(struct1)): - # if struct1[x].get('type') == 'expandable': - # continue - # # print '%s' % ('\t' * n), struct1[x]['id'], struct1[x]['child_nbr'], struct2[x]['id'], struct2[x].get('child_nbr', 'XX'), struct1[x].get('subject') or '' - # self.assertEqual(struct1[x]['id'], struct2[x]['id'], 'message_read failure %s' % struct1[x].get('subject')) - # _compare_structures(struct1[x]['child_ids'], struct2[x]['child_ids'], n + 1) - # # print '%send compare' % ('\t' * n) - - # # ---------------------------------------- - # # CASE1: Flattening test - # # ---------------------------------------- - - # # Create dummy message structure - # import copy - # tree = [{'id': 2, 'child_nbr': 1, 'child_ids': [ - # {'id': 6, 'child_nbr': 1, 'child_ids': [ - # {'id': 8, 'child_nbr': 0, 'child_ids': []}, - # ]}, - # ]}, - # {'id': 1, 'child_nbr': 3, 'child_ids':[ - # {'id': 7, 'child_nbr': 1, 'child_ids': [ - # {'id': 9, 'child_nbr': 0, 'child_ids': []}, - # ]}, - # {'id': 4, 'child_nbr': 2, 'child_ids': [ - # {'id': 10, 'child_nbr': 0, 'child_ids': []}, - # {'id': 5, 'child_nbr': 0, 'child_ids': []}, - # ]}, - # {'id': 3, 'child_nbr': 0, 'child_ids': []}, - # ]}, - # ] - # # Test: completely flat - # new_tree = self.mail_message.message_read_tree_flatten(cr, uid, None, copy.deepcopy(tree), [('type', 'in', 'borderlands')], 0, limit=15, add_expandable=False) - # _compare_structures(new_tree, new_tree) - # self.assertEqual(len(new_tree), 10, 'message_read_tree_flatten wrong in flat') - # # Test: 1 thread level - # tree_test = [{'id': 2, 'child_ids': [ - # {'id': 8, 'child_ids': []}, {'id': 6, 'child_ids': []}, - # ]}, - # {'id': 1, 'child_ids': [ - # {'id': 10, 'child_ids': []}, {'id': 9, 'child_ids': []}, - # {'id': 7, 'child_ids': []}, {'id': 5, 'child_ids': []}, - # {'id': 4, 'child_ids': []}, {'id': 3, 'child_ids': []}, - # ]}, - # ] - # new_tree = self.mail_message.message_read_tree_flatten(cr, uid, None, copy.deepcopy(tree), [('type', 'in', 'borderlands')], 1, limit=15, add_expandable=False) - # _compare_structures(new_tree, tree_test) - # # Test: 2 thread levels - # new_tree = self.mail_message.message_read_tree_flatten(cr, uid, None, copy.deepcopy(tree), [('type', 'in', 'borderlands')], 2, limit=15, add_expandable=False) - # _compare_structures(new_tree, tree) - - # # ---------------------------------------- - # # CASE2: message_read test - # # ---------------------------------------- - - # # 1. Add a few messages to pigs group - # msgid1 = group_pigs.message_post(body='1', subject='1', parent_id=False) - # msgid2 = group_pigs.message_post(body='2', subject='1-1', parent_id=msgid1) - # msgid3 = group_pigs.message_post(body='3', subject='1-2', parent_id=msgid1) - # msgid4 = group_pigs.message_post(body='4', subject='2', parent_id=False) - # msgid5 = group_pigs.message_post(body='5', subject='1-1-1', parent_id=msgid2) - # msgid6 = group_pigs.message_post(body='6', subject='2-1', parent_id=msgid4) - - # # Test: read all messages flat - # tree_test = [{'id': msgid6, 'child_ids': []}, {'id': msgid5, 'child_ids': []}, - # {'id': msgid4, 'child_ids': []}, {'id': msgid3, 'child_ids': []}, - # {'id': msgid2, 'child_ids': []}, {'id': msgid1, 'child_ids': []}] - # tree = self.mail_message.message_read(cr, uid, ids=False, domain=[('model', '=', 'mail.group'), ('res_id', '=', self.group_pigs_id)], level=0, limit=15) - # _compare_structures(tree, tree_test) - # # Test: read with 1 level of thread - # tree_test = [{'id': msgid4, 'child_ids': [{'id': msgid6, 'child_ids': []}, ]}, - # {'id': msgid1, 'child_ids': [ - # {'id': msgid5, 'child_ids': []}, {'id': msgid3, 'child_ids': []}, - # {'id': msgid2, 'child_ids': []}, - # ]}, - # ] - # tree = self.mail_message.message_read(cr, uid, ids=False, domain=[('model', '=', 'mail.group'), ('res_id', '=', self.group_pigs_id)], level=1, limit=15) - # _compare_structures(tree, tree_test) - # # Test: read with 2 levels of thread - # tree_test = [{'id': msgid4, 'child_ids': [{'id': msgid6, 'child_ids': []}, ]}, - # {'id': msgid1, 'child_ids': [ - # {'id': msgid3, 'child_ids': []}, - # {'id': msgid2, 'child_ids': [{'id': msgid5, 'child_ids': []}, ]}, - # ]}, - # ] - # tree = self.mail_message.message_read(cr, uid, ids=False, domain=[('model', '=', 'mail.group'), ('res_id', '=', self.group_pigs_id)], level=2, limit=15) - # _compare_structures(tree, tree_test) - - # # 2. Test expandables - # # TDE FIXME: add those tests when expandables are specified and implemented - def test_40_needaction(self): """ Tests for mail.message needaction. """ cr, uid = self.cr, self.uid diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index d4dcafeb038..7d75c67b942 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -223,7 +223,6 @@ class mail_compose_message(osv.TransientModel): email(s), rendering any template patterns on the fly if needed. """ if context is None: context = {} - print '**', context active_ids = context.get('active_ids') for wizard in self.browse(cr, uid, ids, context=context): diff --git a/addons/mail/wizard/mail_compose_message_view.xml b/addons/mail/wizard/mail_compose_message_view.xml index 0f384dc5a0d..7329992f8ed 100644 --- a/addons/mail/wizard/mail_compose_message_view.xml +++ b/addons/mail/wizard/mail_compose_message_view.xml @@ -16,13 +16,11 @@ <field name="partner_ids" widget="many2many_tags" placeholder="Add contacts to notify..." context="{'force_email':True}" on_change="onchange_partner_ids(partner_ids)"/> + <field name="is_private" help="If this message is not private, this message will send to all your followers or all followers of the parented message."/> </group> <notebook> <page string="Body"> - <field name="body_text" nolabel="1" - attrs="{'invisible':[('content_subtype', '=', 'html')]}"/> - <field name="body" nolabel="1" - attrs="{'invisible':[('content_subtype', '=', 'plain')]}"/> + <field name="body" nolabel="1"/> </page> <page string="Attachments"> <field name="attachment_ids" colspan="4" nolabel="1"/> @@ -32,10 +30,10 @@ <button string="Send" name="send_mail" type="object" class="oe_highlight" /> or <button string="Cancel" class="oe_link" special="cancel" /> - <div class="oe_right"> + <!--div class="oe_right"> <button string="" name="toggle_content_subtype" type="object" icon="/mail/static/src/img/formatting.png" help="Toggle advanced formatting mode"/> - </div> + </div--> </footer> </form> </field> @@ -68,6 +66,7 @@ context="{'force_email':True}" on_change="onchange_partner_ids(partner_ids)" class="oe_mail_compose_message_partner_ids"/> + <!--field name="is_private" help="If this message is not private, this message will send to all your followers or all followers of the parented message."/--> <field name="attachment_ids" colspan="2" nolabel="1" widget="many2many_tags" placeholder="Add attachments..." invisible="1" class="oe_mail_compose_message_attachment_ids"/> diff --git a/addons/marketing_campaign/report/campaign_analysis_view.xml b/addons/marketing_campaign/report/campaign_analysis_view.xml index db79ce44132..d3693497408 100644 --- a/addons/marketing_campaign/report/campaign_analysis_view.xml +++ b/addons/marketing_campaign/report/campaign_analysis_view.xml @@ -5,7 +5,7 @@ <field name="name">campaign.analysis.tree</field> <field name="model">campaign.analysis</field> <field name="arch" type="xml"> - <tree string="Marketing Reports"> + <tree string="Marketing Reports" create="false"> <field name="year" invisible="1"/> <field name="month" invisible="1"/> <field name="day" invisible="1"/> diff --git a/addons/membership/report/report_membership_view.xml b/addons/membership/report/report_membership_view.xml index 81e1a3db97c..99dcc73ceba 100644 --- a/addons/membership/report/report_membership_view.xml +++ b/addons/membership/report/report_membership_view.xml @@ -8,7 +8,7 @@ <field name="name">report.membership.tree</field> <field name="model">report.membership</field> <field name="arch" type="xml"> - <tree colors="blue:membership_state == 'draft';black:membership_state in ('open','free');gray:membership_state in ('done','cancel') " string="Membership"> + <tree colors="blue:membership_state == 'draft';black:membership_state in ('open','free');gray:membership_state in ('done','cancel') " create="false" string="Membership"> <field name="partner_id"/> <field name="membership_state"/> <field name="associate_member_id" invisible="1"/> diff --git a/addons/mrp/__openerp__.py b/addons/mrp/__openerp__.py index 73564f2b460..66806c4f350 100644 --- a/addons/mrp/__openerp__.py +++ b/addons/mrp/__openerp__.py @@ -29,7 +29,7 @@ 'sequence': 18, 'summary': 'Manufacturing Orders, Bill of Materials, Routing', 'images': ['images/bill_of_materials.jpeg', 'images/manufacturing_order.jpeg', 'images/planning_manufacturing_order.jpeg', 'images/production_analysis.jpeg', 'images/production_dashboard.jpeg','images/routings.jpeg','images/work_centers.jpeg'], - 'depends': ['procurement', 'stock', 'resource', 'purchase', 'product','process'], + 'depends': ['product','procurement', 'stock', 'resource', 'purchase','process'], 'description': """ Manage the Manufacturing process in OpenERP =========================================== diff --git a/addons/mrp/i18n/de.po b/addons/mrp/i18n/de.po index 8c4a422fd10..aed215fe6e7 100644 --- a/addons/mrp/i18n/de.po +++ b/addons/mrp/i18n/de.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:49+0000\n" -"PO-Revision-Date: 2012-02-22 07:45+0000\n" +"PO-Revision-Date: 2012-10-12 23:20+0000\n" "Last-Translator: Ferdinand @ Camptocamp <Unknown>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-09-13 04:38+0000\n" -"X-Generator: Launchpad (build 15944)\n" +"X-Launchpad-Export-Date: 2012-10-14 04:39+0000\n" +"X-Generator: Launchpad (build 16137)\n" #. module: mrp #: view:mrp.routing.workcenter:0 @@ -956,7 +956,7 @@ msgstr "Bezeichnung Arbeitsplatz" #. module: mrp #: field:mrp.routing,code:0 msgid "Code" -msgstr "Kurzbezeichnung" +msgstr "Kurzbez." #. module: mrp #: report:mrp.production.order:0 diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml index abf0f823e5c..a144897b1b6 100644 --- a/addons/mrp/mrp_view.xml +++ b/addons/mrp/mrp_view.xml @@ -952,6 +952,7 @@ <data> <xpath expr="//field[@name='move_id']" position="before"> <field name="bom_id" domain="[('product_id','=',product_id),('bom_id','=',False)]"/> + <field name="production_id" attrs="{'invisible': [('production_id','=',False)]}"/> </xpath> <xpath expr="//field[@name='close_move']" position="after"> <group colspan="4" groups="product.group_mrp_properties"> @@ -961,21 +962,21 @@ </data> </field> </record> - <record id="product.product_normal_form_supply_view" model="ir.ui.view"> + <record id="product_product_normal_form_supply_view" model="ir.ui.view"> <field name="name">product.normal.form.mrp.inherit</field> <field name="model">product.product</field> - <field name="inherit_id" ref="product.product_normal_form_view"/> + <field name="inherit_id" ref="procurement.product_form_view_procurement_button"/> <field name="arch" type="xml"> <xpath expr="//field[@name='supply_method']" position="attributes"> <attribute name="invisible">False</attribute> </xpath> <group name="procurement_help" position="inside"> - <p attrs="{'invisible': [('type','=','service'),('procure_method','<>','make_to_order'),('supply_method','<>','produce')]}"> + <p attrs="{'invisible': ['|','|',('type','=','service'),('procure_method','<>','make_to_order'),('supply_method','<>','produce')]}"> When you sell this product, OpenERP will trigger <b>a manufacturing order</b> using the bill of materials assigned to this product. The delivery order will be ready once the production is done. </p> -</group> + </group> </field> </record> @@ -1037,6 +1038,7 @@ <record model="ir.actions.act_window" id="product_open_bom"> <field name="context">{'default_product_id': active_id, 'search_default_product_id': active_id}</field> <field name="name">Bill of Materials</field> + <field name="domain">[('bom_id','=',False)]</field> <field name="res_model">mrp.bom</field> </record> @@ -1050,7 +1052,5 @@ </xpath> </field> </record> - - </data> </openerp> diff --git a/addons/mrp/procurement.py b/addons/mrp/procurement.py index 795ac5453fb..19f8a48b6fe 100644 --- a/addons/mrp/procurement.py +++ b/addons/mrp/procurement.py @@ -31,6 +31,7 @@ class procurement_order(osv.osv): _columns = { 'bom_id': fields.many2one('mrp.bom', 'BoM', ondelete='cascade', select=True), 'property_ids': fields.many2many('mrp.property', 'procurement_property_rel', 'procurement_id','property_id', 'Properties'), + 'production_id': fields.many2one('mrp.production', 'Manufacturing Order'), } def check_produce_product(self, cr, uid, procurement, context=None): @@ -95,16 +96,22 @@ class procurement_order(osv.osv): 'move_prod_id': res_id, 'company_id': procurement.company_id.id, }) + res[procurement.id] = produce_id - self.write(cr, uid, [procurement.id], {'state': 'running'}) - self.running_send_note(cr, uid, ids, context=context) + self.write(cr, uid, [procurement.id], {'state': 'running', 'production_id': produce_id}) bom_result = production_obj.action_compute(cr, uid, [produce_id], properties=[x.id for x in procurement.property_ids]) wf_service.trg_validate(uid, 'mrp.production', produce_id, 'button_confirm', cr) if res_id: move_obj.write(cr, uid, [res_id], {'location_id': procurement.location_id.id}) + self.production_order_create_note(cr, uid, ids, context=context) return res + + def production_order_create_note(self, cr, uid, ids, context=None): + for procurement in self.browse(cr, uid, ids, context=context): + body = _("Manufacturing Order created.") + self.message_post(cr, uid, [procurement.id], body=body, context=context) procurement_order() diff --git a/addons/mrp_operations/report/mrp_workorder_analysis_view.xml b/addons/mrp_operations/report/mrp_workorder_analysis_view.xml index cca9a7e3b24..de486face78 100644 --- a/addons/mrp_operations/report/mrp_workorder_analysis_view.xml +++ b/addons/mrp_operations/report/mrp_workorder_analysis_view.xml @@ -9,7 +9,7 @@ <field name="name">mrp.workorder.tree</field> <field name="model">mrp.workorder</field> <field name="arch" type="xml"> - <tree string="Work Orders"> + <tree string="Work Orders" create="false"> <field name="date" invisible="1"/> <field name="product_id" invisible="1"/> <field name="product_qty" sum="Product Qty"/> diff --git a/addons/mrp_repair/report/order.rml b/addons/mrp_repair/report/order.rml index be5737d4b85..202ed6e4684 100644 --- a/addons/mrp_repair/report/order.rml +++ b/addons/mrp_repair/report/order.rml @@ -312,7 +312,7 @@ <para style="terp_default_Right_9">[[ formatLang(line.price_unit) ]] </para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(line.price_subtotal) ]] [[ o.pricelist_id.currency_id. symbol ]]</para> + <para style="terp_default_Right_9">[[ formatLang(line.price_subtotal, currency_obj = o.pricelist_id.currency_id) ]]</para> </td> </tr> </blockTable> @@ -337,7 +337,7 @@ <para style="terp_default_Right_9">[[ formatLang(fees.price_unit) ]]</para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(fees.price_subtotal) ]] [[ o.pricelist_id.currency_id. symbol ]]</para> + <para style="terp_default_Right_9">[[ formatLang(fees.price_subtotal, currency_obj = o.pricelist_id.currency_id) ]]</para> </td> </tr> </blockTable> @@ -353,7 +353,7 @@ <para style="terp_default_9">Net Total :</para> </td> <td> - <para style="P26">[[ formatLang(o.amount_untaxed, dp='Sale Price')]] [[ o.pricelist_id.currency_id. symbol ]]</para> + <para style="P26">[[ formatLang(o.amount_untaxed, dp='Sale Price', currency_obj=o.pricelist_id.currency_id) ]]</para> </td> </tr> @@ -367,7 +367,7 @@ <para style="terp_default_9">Taxes:</para> </td> <td> - <para style="P26">[[ formatLang(o.amount_tax, dp='Account')]] [[ o.pricelist_id.currency_id. symbol ]]</para> + <para style="P26">[[ formatLang(o.amount_tax, dp='Account', currency_obj=o.pricelist_id.currency_id) ]]</para> </td> </tr> <tr> @@ -380,7 +380,7 @@ <para style="terp_tblheader_Details">Total :</para> </td> <td> - <para style="terp_default_right_bold_9">[[ formatLang(total(o), dp='Sale Price') ]] [[ o.pricelist_id.currency_id. symbol ]]</para> + <para style="terp_default_right_bold_9">[[ formatLang(total(o), dp='Sale Price', currency_obj=o.pricelist_id.currency_id) ]]</para> </td> </tr> </blockTable> diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py index dfd0d73ad55..788c301a04f 100644 --- a/addons/point_of_sale/point_of_sale.py +++ b/addons/point_of_sale/point_of_sale.py @@ -1300,7 +1300,7 @@ class product_product(osv.osv): 'expense_pdt': fields.boolean('Point of Sale Cash Out', help="This is a product you can use to take cash from a statement for the point of sale backend, exemple: money lost, transfer to bank, etc."), 'pos_categ_id': fields.many2one('pos.category','Point of Sale Category', help="If you want to sell this product through the point of sale, select the category it belongs to."), - 'to_weight' : fields.boolean('To Weight', help="This category contains products that should be weighted, mainly used for the self-checkout interface"), + 'to_weight' : fields.boolean('To Weigh', help="This category contains products that should to be weighed, mainly used for the self-checkout interface"), } def _default_pos_categ_id(self, cr, uid, context=None): diff --git a/addons/point_of_sale/report/account_statement.rml b/addons/point_of_sale/report/account_statement.rml index dc6e6c5e64c..0b633f3f7c4 100644 --- a/addons/point_of_sale/report/account_statement.rml +++ b/addons/point_of_sale/report/account_statement.rml @@ -214,10 +214,10 @@ <para style="terp_default_Centre_8">[[ formatLang(statement.closing_date,date_time=True)]]</para> </td> <td> - <para style="terp_default_Centre_8">[[ formatLang(statement.balance_start, dp='Account') ]][[ company.currency_id.symbol ]]</para> + <para style="terp_default_Centre_8">[[ formatLang(statement.balance_start, dp='Account', currency_obj = company.currency_id) ]]</para> </td> <td> - <para style="terp_default_Centre_8">[[ formatLang(statement.balance_end_real, dp='Account') ]][[ company.currency_id.symbol ]]</para> + <para style="terp_default_Centre_8">[[ formatLang(statement.balance_end_real, dp='Account', currency_obj = company.currency_id) ]]</para> </td> </tr> </blockTable> @@ -250,7 +250,7 @@ <para style="terp_default_9">[[ line_ids.partner_id.name ]]</para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(line_ids.amount, dp='Account') ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9">[[ formatLang(line_ids.amount, dp='Account', currency_obj=company.currency_id) ]]</para> </td> </tr> </blockTable> @@ -267,7 +267,7 @@ <para style="terp_tblheader_Details">Total :</para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ formatLang(get_total(statement.line_ids), dp='Account') ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(get_total(statement.line_ids), dp='Account', currency_obj = company.currency_id) ]]</para> </td> </tr> </blockTable> diff --git a/addons/point_of_sale/report/all_closed_cashbox_of_the_day.py b/addons/point_of_sale/report/all_closed_cashbox_of_the_day.py index 0e75e7f7ae1..dc3b432728f 100644 --- a/addons/point_of_sale/report/all_closed_cashbox_of_the_day.py +++ b/addons/point_of_sale/report/all_closed_cashbox_of_the_day.py @@ -73,7 +73,7 @@ class all_closed_cashbox_of_the_day(report_sxw.rml_parse): if res: return res[0]['bal'] else: - return False + return 0 def _get_sub_total(self, user, data, date): res={} diff --git a/addons/point_of_sale/report/all_closed_cashbox_of_the_day.rml b/addons/point_of_sale/report/all_closed_cashbox_of_the_day.rml index bb58c5e823d..4f16031c8b3 100644 --- a/addons/point_of_sale/report/all_closed_cashbox_of_the_day.rml +++ b/addons/point_of_sale/report/all_closed_cashbox_of_the_day.rml @@ -183,10 +183,10 @@ </para> </td> <td> - <para style="terp_tblheader_General_Right"><u>[[ formatLang(get_net_total_starting(user)[1]) ]] [[company.currency_id.symbol]]</u></para> + <para style="terp_tblheader_General_Right"><u>[[ formatLang(get_net_total_starting(user)[1], currency_obj = company.currency_id)]]</u></para> </td> <td> - <para style="terp_tblheader_General_Right"><u>[[ formatLang(get_net_total(user)) ]] [[company.currency_id.symbol]]</u></para> + <para style="terp_tblheader_General_Right"><u>[[ formatLang(get_net_total(user), currency_obj = company.currency_id)]]</u></para> </td> </tr> </blockTable> @@ -207,10 +207,10 @@ <para style="terp_default_Bold_8">[[ statement['closing_date'] ]]</para> </td> <td> - <para style="P1"><u>[[ (get_bal(statement)) or '0.00' ]] [[company.currency_id.symbol]]</u></para> + <para style="P1"><u>[[ formatLang(get_bal(statement), currency_obj = company.currency_id)]]</u></para> </td> <td> - <para style="P1"><u>[[ formatLang(get_sub_total(user,statement['journal_id'],statement['date'])) ]] [[company.currency_id.symbol]]</u></para> + <para style="P1"><u>[[ formatLang(get_sub_total(user,statement['journal_id'],statement['date']), currency_obj = company.currency_id )]]</u></para> </td> </tr> </blockTable> @@ -236,7 +236,7 @@ </para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(line_ids['amount']) ]] [[company.currency_id.symbol]]</para> + <para style="terp_default_Right_9">[[ formatLang(line_ids['amount'], currency_obj = company.currency_id)]]</para> </td> </tr> </blockTable> diff --git a/addons/point_of_sale/report/pos_details.rml b/addons/point_of_sale/report/pos_details.rml index b0019133009..e7c4c756e64 100644 --- a/addons/point_of_sale/report/pos_details.rml +++ b/addons/point_of_sale/report/pos_details.rml @@ -252,7 +252,7 @@ <para style="terp_default_9">[ [[ line_ids['code'] ]] ] [[ line_ids['name'] ]]</para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(line_ids['price_unit'], dp='Sale Price') ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9">[[ formatLang(line_ids['price_unit'], dp='Sale Price', currency_obj = company.currency_id) ]]</para> </td> <td> <para style="terp_default_Centre_9">[[ formatLang(line_ids['qty']) ]] [[ line_ids['uom'] ]]</para> @@ -289,7 +289,7 @@ <para style="terp_default_9">[[ p['name'] or removeParentNode('para') ]]</para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ formatLang(p['amount']) or removeParentNode('tr') ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(p['amount'], currency_obj = company.currency_id) or removeParentNode('tr') ]]</para> </td> </tr> </blockTable> @@ -320,7 +320,7 @@ <para style="terp_default_9">[[ p['name'] or removeParentNode('para') ]]</para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ formatLang(p['sum'], dp='Account') or removeParentNode('tr') ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(p['sum'], dp='Account', currency_obj = company.currency_id) or removeParentNode('tr') ]]</para> </td> </tr> </blockTable> @@ -349,7 +349,7 @@ <para style="terp_default_Bold_9">Sales total(Revenue)</para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ formatLang(getsalestotal2(), dp='Sale Price') ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(getsalestotal2(), dp='Sale Price', currency_obj = company.currency_id) ]]</para> </td> </tr> <tr> @@ -365,7 +365,7 @@ <para style="terp_default_Bold_9">Total invoiced</para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ formatLang(getsuminvoice2(data['form']), dp='Sale Price') ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(getsuminvoice2(data['form']), dp='Sale Price', currency_obj = company.currency_id) ]]</para> </td> </tr> <tr> @@ -373,7 +373,7 @@ <para style="terp_default_Bold_9">Total discount</para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ formatLang(getsumdisc(), dp='Sale Price') ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(getsumdisc(), dp='Sale Price', currency_obj = company.currency_id) ]]</para> </td> </tr> <tr> @@ -381,7 +381,7 @@ <para style="terp_default_Bold_9">Total paid</para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ formatLang(getpaidtotal2(), dp='Sale Price') ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(getpaidtotal2(), dp='Sale Price', currency_obj = company.currency_id) ]]</para> </td> </tr> <tr> @@ -389,7 +389,7 @@ <para style="terp_default_Bold_9">Total of the day</para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ formatLang(gettotalofthaday(data['form']), dp='Sale Price') ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(gettotalofthaday(data['form']), dp='Sale Price', currency_obj = company.currency_id) ]]</para> </td> </tr> </blockTable> diff --git a/addons/point_of_sale/report/pos_details_summary.rml b/addons/point_of_sale/report/pos_details_summary.rml index d12cdec2598..b1c71db7d40 100644 --- a/addons/point_of_sale/report/pos_details_summary.rml +++ b/addons/point_of_sale/report/pos_details_summary.rml @@ -204,7 +204,7 @@ <para style="P1">[[ p[0] ]]</para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ p[1] ]] [[company.currency_id.symbol]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(p[1], currency_obj=company.currency_id) ]]</para> </td> </tr> </blockTable> @@ -235,7 +235,7 @@ <para style="P2">[[ t[0] ]]</para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ '%.2f' % (t[1],) ]] [[company.currency_id.symbol]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(t[1], currency_obj=company.currency_id) ]]</para> </td> </tr> </blockTable> @@ -280,7 +280,7 @@ <para style="terp_default_Bold_9">Total invoiced</para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ '%.2f' % getsuminvoice(objects) ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(getsuminvoice(objects), currency_obj=company.currency_id) ]]</para> </td> </tr> <tr> @@ -288,7 +288,7 @@ <para style="terp_default_Bold_9">Total discount</para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ '%.2f' % getsumdisc(objects) ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(getsumdisc(objects), currency_obj=company.currency_id) ]]</para> </td> </tr> <tr> @@ -296,7 +296,7 @@ <para style="terp_default_Bold_9">Total paid</para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ '%.2f' % getpaidtotal(objects) ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(getpaidtotal(objects), currency_obj=company.currency_id) ]]</para> </td> </tr> <tr> @@ -304,7 +304,7 @@ <para style="terp_default_Bold_9">Total of the day</para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ '%.2f' % gettotalofthaday(objects) ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(gettotalofthaday(objects), currency_obj=company.currency_id) ]]</para> </td> </tr> </blockTable> diff --git a/addons/point_of_sale/report/pos_lines.rml b/addons/point_of_sale/report/pos_lines.rml index be394ed4f16..1ed8e33eede 100644 --- a/addons/point_of_sale/report/pos_lines.rml +++ b/addons/point_of_sale/report/pos_lines.rml @@ -186,7 +186,7 @@ <para style="terp_default_Centre_9">[[ formatLang(l.discount) ]]</para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(l.price_subtotal) ]] [[o.pricelist_id.currency_id. symbol ]]</para> + <para style="terp_default_Right_9">[[ formatLang(l.price_subtotal, currency_obj=o.pricelist_id.currency_id) ]]</para> </td> </tr> </blockTable> @@ -202,7 +202,7 @@ <para style="terp_default_9">Net Total :</para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(o.amount_total) ]] [[o.pricelist_id.currency_id.symbol ]]</para> + <para style="terp_default_Right_9">[[ formatLang(o.amount_total, currency_obj=o.pricelist_id.currency_id) ]]</para> </td> </tr> <tr> @@ -215,7 +215,7 @@ <para style="terp_default_9">Taxes :</para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(o.amount_tax) ]] [[o.pricelist_id.currency_id. symbol ]]</para> + <para style="terp_default_Right_9">[[ formatLang(o.amount_tax, currency_obj=o.pricelist_id.currency_id) ]]</para> </td> </tr> <tr> @@ -228,7 +228,7 @@ <para style="terp_default_Bold_9">Total:</para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ formatLang(o.amount_total + o.amount_tax) ]] [[o.pricelist_id.currency_id. symbol ]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(o.amount_total + o.amount_tax, currency_obj=o.pricelist_id.currency_id) ]]</para> </td> </tr> </blockTable> diff --git a/addons/point_of_sale/report/pos_order_report_view.xml b/addons/point_of_sale/report/pos_order_report_view.xml index fee47312610..8d7bf84171a 100644 --- a/addons/point_of_sale/report/pos_order_report_view.xml +++ b/addons/point_of_sale/report/pos_order_report_view.xml @@ -5,7 +5,7 @@ <field name="name">report.pos.order.tree</field> <field name="model">report.pos.order</field> <field name="arch" type="xml"> - <tree string="Point of Sale Analysis"> + <tree string="Point of Sale Analysis" create="false"> <field name="date" invisible="1"/> <field name="user_id" invisible="1"/> <field name="year" invisible="1"/> diff --git a/addons/point_of_sale/report/pos_payment_report.rml b/addons/point_of_sale/report/pos_payment_report.rml index 757de687ee0..bcc4b9ec261 100644 --- a/addons/point_of_sale/report/pos_payment_report.rml +++ b/addons/point_of_sale/report/pos_payment_report.rml @@ -183,7 +183,7 @@ <para style="terp_default_Right_9">[[ formatLang(line_ids['price_unit']) ]]</para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(line_ids['total']) ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9">[[ formatLang(line_ids['total'], currency_obj = company.currency_id) ]]</para> </td> </tr> @@ -201,7 +201,7 @@ <para style="terp_tblheader_Details">Net Total:</para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ formatLang(pos_payment_total(o)) or removeParentNode('blockTable')]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(pos_payment_total(o), currency_obj = company.currency_id) or removeParentNode('blockTable')]]</para> </td> </tr> </blockTable> diff --git a/addons/point_of_sale/report/pos_payment_report_user.rml b/addons/point_of_sale/report/pos_payment_report_user.rml index 3105441aa0c..1d89d28c5f9 100644 --- a/addons/point_of_sale/report/pos_payment_report_user.rml +++ b/addons/point_of_sale/report/pos_payment_report_user.rml @@ -168,7 +168,7 @@ <para style="terp_default_Right_9">[[ formatLang(line_ids['price_unit']) ]]</para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(line_ids['total']) ]] [[company.currency_id.symbol]]</para> + <para style="terp_default_Right_9">[[ formatLang(line_ids['total'], currency_obj = company.currency_id)]]</para> </td> </tr> </blockTable> @@ -194,7 +194,7 @@ <para style="terp_tblheader_General_Right">Total:</para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(pos_payment_user_total(data['form'])) or removeParentNode('blockTable')]] [[company.currency_id.symbol]]</para> + <para style="terp_default_Right_9">[[ formatLang(pos_payment_user_total(data['form'], currency_obj = company.currency_id)) or removeParentNode('blockTable')]]</para> </td> </tr> </blockTable> diff --git a/addons/point_of_sale/report/pos_receipt.rml b/addons/point_of_sale/report/pos_receipt.rml index 55873887210..d7b8b08ad29 100644 --- a/addons/point_of_sale/report/pos_receipt.rml +++ b/addons/point_of_sale/report/pos_receipt.rml @@ -72,8 +72,7 @@ <story> <para style="terp_default_8">[[ repeatIn(objects,'o') ]]</para> <para style="terp_header_Centre">[[o.user_id.company_id.name]]</para> - <para style="terp_default_Centre_9">[[ address and address.street ]], [[ address and address.zip ]] [[ address and address.city ]]</para> - <para style="terp_default_Centre_9">[[ address and address.country_id.name ]]</para> + <para style="terp_default_Centre_9">[[ address and display_address(address)]]</para> <para style="terp_default_Centre_9">Tel : [[ address and address.phone ]]</para> <para style="terp_default_Centre_9">User : [[ o.user_id.name ]]</para> <para style="terp_default_Centre_9">Shop : [[ o.shop_id.name ]]</para> @@ -109,7 +108,7 @@ <para style="terp_default_Right_9">[[o.state=='cancel' and o.statement_ids and '-' or '']][['%.f' % line.qty ]]</para> </td> <td> - <para style="terp_default_Right_9">[[o.state=='cancel' and o.statement_ids and '-' or '']][[ '%.2f' % net(line.id) ]] [[company.currency_id.symbol]] <font face="Helvetica">[[ line and line.discount == 0.0 and removeParentNode('font') ]] ([[ '%.2f' % line.discount ]]%) [[company.currency_id.symbol]]</font></para> + <para style="terp_default_Right_9">[[o.state=='cancel' and o.statement_ids and '-' or '']][[ formatLang(net(line.id), currency_obj=company.currency_id) ]] <font face="Helvetica">[[ line and line.discount == 0.0 and removeParentNode('font') ]] ([[ formatLang(line.discount, currency_obj=company.currency_id) ]])</font></para> </td> </tr> </blockTable> @@ -119,7 +118,7 @@ <para style="P6a">Taxes :</para> </td> <td> - <para style="terp_default_Right_9">[[o.state=='cancel' and o.statement_ids and '-' or '']][['%.2f' % o.amount_tax]] [[company.currency_id.symbol]]</para> + <para style="terp_default_Right_9">[[o.state=='cancel' and o.statement_ids and '-' or '']][[formatLang(o.amount_tax, currency_obj=company.currency_id)]]</para> </td> </tr> </blockTable> @@ -129,7 +128,7 @@ <para style="P6">Total :</para> </td> <td> - <para style="terp_default_Bold_9_Right2">[[o.state=='cancel' and o.statement_ids and '-' or '']][['%.2f' % o.amount_total]] [[company.currency_id.symbol]]</para> + <para style="terp_default_Bold_9_Right2">[[o.state=='cancel' and o.statement_ids and '-' or '']][[formatLang(o.amount_total, currency_obj=company.currency_id)]]</para> </td> </tr> </blockTable> @@ -158,7 +157,7 @@ </para> </td> <td> - <para style="P8">[[ '%.2f' %(d['amt'] or 0) ]] [[company.currency_id.symbol]]</para> + <para style="P8">[[ formatLang(d['amt'] or 0, currency_obj=company.currency_id) ]]</para> </td> </tr> </blockTable> diff --git a/addons/point_of_sale/report/pos_users_product.rml b/addons/point_of_sale/report/pos_users_product.rml index f3a8cfd77e8..9758e924ada 100644 --- a/addons/point_of_sale/report/pos_users_product.rml +++ b/addons/point_of_sale/report/pos_users_product.rml @@ -191,7 +191,7 @@ <para style="terp_default_Right_9">[[ formatLang(line_ids['qty']) ]] [[line_ids['uom'] ]]</para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(line_ids['amt']) ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9">[[ formatLang(line_ids['amt'], currency_obj = company.currency_id) ]]</para> </td> </tr> </blockTable> @@ -208,7 +208,7 @@ <para style="terp_tblheader_General_Right">Total :</para> </td> <td> - <para style="terp_default_Right_9_Bold">[[ formatLang(get_total(statement)) ]] [[ company.currency_id.symbol ]]</para> + <para style="terp_default_Right_9_Bold">[[ formatLang(get_total(statement), currency_obj = company.currency_id) ]]</para> </td> </tr> </blockTable> diff --git a/addons/point_of_sale/res_users_view.xml b/addons/point_of_sale/res_users_view.xml index 2a510b1d575..89daeaa29a1 100644 --- a/addons/point_of_sale/res_users_view.xml +++ b/addons/point_of_sale/res_users_view.xml @@ -19,7 +19,7 @@ <field name="inherit_id" ref="base.view_users_form" /> <field name="arch" type="xml"> <notebook position="inside"> - <page string="Point Of Sale"> + <page string="Point of Sale"> <group> <field name="pos_config" /> <field name="ean13" /> diff --git a/addons/procurement/__openerp__.py b/addons/procurement/__openerp__.py index a1aed1dfba8..48569fa76c4 100644 --- a/addons/procurement/__openerp__.py +++ b/addons/procurement/__openerp__.py @@ -57,7 +57,7 @@ depending on the product's configuration. 'company_view.xml', 'board_mrp_procurement_view.xml', ], - 'demo': ['stock_orderpoint.xml'], + 'demo': ['stock_orderpoint.xml','procurement_demo.xml'], 'test': ['test/procurement.yml'], 'installable': True, 'auto_install': True, diff --git a/addons/procurement/procurement.py b/addons/procurement/procurement.py index 5d81bcbb9ba..b21cef30773 100644 --- a/addons/procurement/procurement.py +++ b/addons/procurement/procurement.py @@ -102,7 +102,6 @@ class procurement_order(osv.osv): 'procure_method': fields.selection([('make_to_stock','Make to Stock'),('make_to_order','Make to Order')], 'Procurement Method', states={'draft':[('readonly',False)], 'confirmed':[('readonly',False)]}, readonly=True, required=True, help="If you encode manually a Procurement, you probably want to use" \ " a make to order method."), - 'note': fields.text('Note'), 'message': fields.char('Latest error', size=124, help="Exception occurred while computing procurement orders."), 'state': fields.selection([ @@ -362,11 +361,10 @@ class procurement_order(osv.osv): """ Changes procurement state to Running and writes message. @return: True """ - message = _('From stock: products assigned.') + message = _('Products reserved from stock.') self.write(cr, uid, ids, {'state': 'running', 'message': message}, context=context) self.message_post(cr, uid, ids, body=message, context=context) - self.running_send_note(cr, uid, ids, context=context) return True def _check_make_to_stock_service(self, cr, uid, procurement, context=None): @@ -390,8 +388,6 @@ class procurement_order(osv.osv): order_point_id = self.pool.get('stock.warehouse.orderpoint').search(cr, uid, [('product_id', '=', procurement.product_id.id)], context=context) if not order_point_id and not ok: message = _("Not enough stock and no minimum orderpoint rule defined.") - elif not order_point_id: - message = _("No minimum orderpoint rule defined.") elif not ok: message = _("Not enough stock.") @@ -407,7 +403,6 @@ class procurement_order(osv.osv): """ for procurement in self.browse(cr, uid, ids, context=context): self.write(cr, uid, [procurement.id], {'state': 'running'}) - self.running_send_note(cr, uid, ids, context=None) return True def action_produce_assign_product(self, cr, uid, ids, context=None): @@ -469,7 +464,6 @@ class procurement_order(osv.osv): @return: True """ res = self.write(cr, uid, ids, {'state': 'ready'}) - self.ready_send_note(cr, uid, ids, context=None) return res def action_done(self, cr, uid, ids): @@ -503,12 +497,6 @@ class procurement_order(osv.osv): def confirm_send_note(self, cr, uid, ids, context=None): self.message_post(cr, uid, ids, body=_("Procurement <b>confirmed</b>."), context=context) - def running_send_note(self, cr, uid, ids, context=None): - self.message_post(cr, uid, ids, body=_("Procurement set to <b>running</b>."), context=context) - - def ready_send_note(self, cr, uid, ids, context=None): - self.message_post(cr, uid, ids, body=_("Procurement set to <b>ready</b>."), context=context) - def cancel_send_note(self, cr, uid, ids, context=None): self.message_post(cr, uid, ids, body=_("Procurement <b>cancelled</b>."), context=context) @@ -641,7 +629,18 @@ class stock_warehouse_orderpoint(osv.osv): }) return super(stock_warehouse_orderpoint, self).copy(cr, uid, id, default, context=context) -stock_warehouse_orderpoint() +class product_template(osv.osv): + _inherit="product.template" + + _columns = { + 'type': fields.selection([('product','Stockable Product'),('consu', 'Consumable'),('service','Service')], 'Product Type', required=True, help="Will change the way procurements are processed. Consumable are product where you don't manage stock, a service is a non-material product provided by a company or an individual."), + 'procure_method': fields.selection([('make_to_stock','Make to Stock'),('make_to_order','Make to Order')], 'Procurement Method', required=True, help="'Make to Stock': When needed, take from the stock or wait until re-supplying. 'Make to Order': When needed, purchase or produce for the procurement request."), + 'supply_method': fields.selection([('produce','Manufacture'),('buy','Buy')], 'Supply Method', required=True, help="Produce will generate production order or tasks, according to the product type. Buy will trigger purchase orders when requested."), + } + _defaults = { + 'procure_method': 'make_to_stock', + 'supply_method': 'buy', + } class product_product(osv.osv): _inherit="product.product" @@ -649,6 +648,6 @@ class product_product(osv.osv): 'orderpoint_ids': fields.one2many('stock.warehouse.orderpoint', 'product_id', 'Minimum Stock Rules'), } -product_product() + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/procurement/procurement_demo.xml b/addons/procurement/procurement_demo.xml new file mode 100644 index 00000000000..608eb56f3ba --- /dev/null +++ b/addons/procurement/procurement_demo.xml @@ -0,0 +1,204 @@ +<?xml version="1.0" encoding="utf-8"?> +<openerp> + <data noupdate="1"> + + <record id="product.product_product_1" model="product.product"> + <field name="procure_method">make_to_order</field> + <field name="supply_method">produce</field> + </record> + + <record id="product.product_product_2" model="product.product"> + <field name="procure_method">make_to_order</field> + <field name="supply_method">produce</field> + </record> + + <record id="product.product_product_3" model="product.product"> + <field name="type">product</field> + <field name="procure_method">make_to_order</field> + <field name="supply_method">produce</field> + </record> + + <record id="product.product_product_4" model="product.product"> + <field name="type">product</field> + <field name="procure_method">make_to_order</field> + <field name="supply_method">produce</field> + + </record> + <record id="product.product_product_5" model="product.product"> + <field name="type">product</field> + <field name="procure_method">make_to_order</field> + <field name="supply_method">produce</field> + </record> + + <record id="product.product_product_6" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_7" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_8" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_9" model="product.product"> + <field name="type">product</field> + <field name="procure_method">make_to_order</field> + </record> + + <record id="product.product_product_10" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_11" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_12" model="product.product"> + <field name="type">product</field> + <field name="procure_method">make_to_order</field> + </record> + + <record id="product.product_product_13" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_14" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_15" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_16" model="product.product"> + <field name="type">product</field> + <field name="procure_method">make_to_order</field> + <field name="supply_method">produce</field> + </record> + + <record id="product.product_product_17" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_18" model="product.product"> + <field name="type">product</field> + <field name="procure_method">make_to_order</field> + <field name="supply_method">produce</field> + </record> + + <record id="product.product_product_19" model="product.product"> + <field name="type">product</field> + <field name="procure_method">make_to_order</field> + <field name="supply_method">produce</field> + </record> + + <record id="product.product_product_20" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_21" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_22" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_23" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_24" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_25" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_26" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_27" model="product.product"> + <field name="type">product</field> + <field name="procure_method">make_to_order</field> + <field name="supply_method">produce</field> + </record> + + <record id="product.product_product_28" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_29" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_30" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_31" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_32" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_33" model="product.product"> + <field name="type">product</field> + <field name="procure_method">make_to_order</field> + </record> + + <record id="product.product_product_34" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_35" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_36" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_37" model="product.product"> + <field name="type">product</field> + <field name="procure_method">make_to_order</field> + </record> + + <record id="product.product_product_38" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_39" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_44" model="product.product"> + <field name="procure_method">make_to_order</field> + <field name="supply_method">produce</field> + </record> + + <record id="product.product_product_45" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_46" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_47" model="product.product"> + <field name="type">product</field> + </record> + + <record id="product.product_product_48" model="product.product"> + <field name="type">product</field> + </record> + + </data> +</openerp> +
\ No newline at end of file diff --git a/addons/procurement/procurement_view.xml b/addons/procurement/procurement_view.xml index bf73b383216..973a09477fc 100644 --- a/addons/procurement/procurement_view.xml +++ b/addons/procurement/procurement_view.xml @@ -294,6 +294,29 @@ <field name="res_model">stock.warehouse.orderpoint</field> </record> + <record model="ir.ui.view" id="product_template_form_view_procurement"> + <field name="name">product.template.procurement</field> + <field name="model">product.template</field> + <field name="inherit_id" ref="product.product_template_form_view"/> + <field name="arch" type="xml"> + <xpath expr="//field[@name='type']" position="after"> + <field name="procure_method"/> + <field name="supply_method"/> + </xpath> + </field> + </record> + + <record id="product_search_form_view_procurment" model="ir.ui.view"> + <field name="name">product.search.procurment.form</field> + <field name="model">product.product</field> + <field name="inherit_id" ref="product.product_search_form_view"/> + <field name="arch" type="xml"> + <filter name="consumable" position="before"> + <filter string="Products" icon="terp-accessories-archiver" domain="[('type','=','product')]" help="Stockable products"/> + </filter> + </field> + </record> + <record model="ir.ui.view" id="product_form_view_procurement_button"> <field name="name">product.product.procurement</field> <field name="model">product.product</field> @@ -303,6 +326,33 @@ <button string="Request Procurement" name="%(act_make_procurement)d" type="action"/> <button string="Orderpoints" name="%(product_open_orderpoint)d" type="action"/> </xpath> + <xpath expr="//field[@name='cost_method']" position="before"> + <field name="procure_method" groups="base.group_user"/> + <field name="supply_method" groups="base.group_user"/> + </xpath> + <xpath expr="//group[@name='general']" position="after" > + <group name="procurement_help" class="oe_grey" col="1" groups="base.group_user"> + <p attrs="{'invisible': ['|','|',('type','<>','service'),('procure_method','<>','make_to_stock')]}"> + When you sell this service, nothing special will be triggered + to deliver the customer, as you set the procurement method as + 'Make to Stock'. + </p> + <p attrs="{'invisible': ['|','|',('type','<>','product'),('procure_method','<>','make_to_stock')]}"> + When you sell this product, OpenERP will <b>use the available + inventory</b> for the delivery order. + <br/><br/> + If there are not enough quantities available, the delivery order + will wait for new products. To fulfill the inventory, you should + create others rules like orderpoints. + </p> + <p attrs="{'invisible': ['|','|',('type','<>','consu'),('procure_method','<>','make_to_stock')]}"> + When you sell this product, a delivery order will be created. + OpenERP will consider that the <b>required quantities are always + available</b> as it's a consumable (as a result of this, the quantity + on hand may become negative). + </p> + </group> + </xpath> </field> </record> diff --git a/addons/product/product.py b/addons/product/product.py index d5acee0333b..6c6c5f2650c 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -109,8 +109,8 @@ class product_uom(osv.osv): _order = "name" _columns = { - 'name': fields.char('Name', size=64, required=True, translate=True), - 'category_id': fields.many2one('product.uom.categ', 'Unit of Measure Category', required=True, ondelete='cascade', + 'name': fields.char('Unit of Measure', size=64, required=True, translate=True), + 'category_id': fields.many2one('product.uom.categ', 'Category', required=True, ondelete='cascade', help="Quantity conversions may happen automatically between Units of Measure in the same category, according to their respective ratios."), 'factor': fields.float('Ratio', required=True,digits=(12, 12), help='How many times this Unit of Measure is smaller than the reference Unit of Measure in this category:\n'\ @@ -126,7 +126,7 @@ class product_uom(osv.osv): 'active': fields.boolean('Active', help="By unchecking the active field you can disable a unit of measure without deleting it."), 'uom_type': fields.selection([('bigger','Bigger than the reference Unit of Measure'), ('reference','Reference Unit of Measure for this category'), - ('smaller','Smaller than the reference Unit of Measure')],'Unit of Measure Type', required=1), + ('smaller','Smaller than the reference Unit of Measure')],'Type', required=1), } _defaults = { @@ -280,11 +280,8 @@ class product_template(osv.osv): 'description': fields.text('Description',translate=True), 'description_purchase': fields.text('Purchase Description',translate=True), 'description_sale': fields.text('Sale Description',translate=True), - 'type': fields.selection([('product','Stockable Product'),('consu', 'Consumable'),('service','Service')], 'Product Type', required=True, help="Will change the way procurements are processed. Consumable are product where you don't manage stock."), - 'supply_method': fields.selection([('produce','Manufacture'),('buy','Buy')], 'Supply Method', required=True, help="Produce will generate production order or tasks, according to the product type. Buy will trigger purchase orders when requested."), - 'sale_delay': fields.float('Customer Lead Time', help="This is the average delay in days between the confirmation of the customer order and the delivery of the finished products. It's the time you promise to your customers."), + 'type': fields.selection([('consu', 'Consumable'),('service','Service')], 'Product Type', required=True, help="Consumable are product where you don't manage stock, a service is a non-material product provided by a company or an individual."), 'produce_delay': fields.float('Manufacturing Lead Time', help="Average delay in days to produce this product. This is only for the production order and, if it is a multi-level bill of material, it's only for the level of this product. Different lead times will be summed for all levels and purchase orders."), - 'procure_method': fields.selection([('make_to_stock','Make to Stock'),('make_to_order','Make to Order')], 'Procurement Method', required=True, help="'Make to Stock': When needed, take from the stock or wait until re-supplying. 'Make to Order': When needed, purchase or produce for the procurement request."), 'rental': fields.boolean('Can be Rent'), 'categ_id': fields.many2one('product.category','Category', required=True, change_default=True, domain="[('type','=','normal')]" ,help="Select category for the current product"), 'list_price': fields.float('Sale Price', digits_compute=dp.get_precision('Product Price'), help="Base price for computing the customer price. Sometimes called the catalog price."), @@ -296,7 +293,6 @@ class product_template(osv.osv): help="Standard Price: the cost price is fixed and recomputed periodically (usually at the end of the year), Average Price: the cost price is recomputed at each reception of products."), 'warranty': fields.float('Warranty'), 'sale_ok': fields.boolean('Can be Sold', help="Determines if the product can be visible in the list of product within a selection from a sale order line."), - 'purchase_ok': fields.boolean('Can be Purchased', help="Determine if the product is visible in the list of products within a selection from a purchase order line."), 'state': fields.selection([('',''), ('draft', 'In Development'), ('sellable','Normal'), @@ -309,11 +305,8 @@ class product_template(osv.osv): 'uos_coeff': fields.float('Unit of Measure -> UOS Coeff', digits_compute= dp.get_precision('Product UoS'), help='Coefficient to convert Unit of Measure to UOS\n' ' uos = uom * coeff'), - 'mes_type': fields.selection((('fixed', 'Fixed'), ('variable', 'Variable')), 'Measure Type', required=True), + 'mes_type': fields.selection((('fixed', 'Fixed'), ('variable', 'Variable')), 'Measure Type'), 'seller_ids': fields.one2many('product.supplierinfo', 'product_id', 'Partners'), - 'loc_rack': fields.char('Rack', size=16), - 'loc_row': fields.char('Row', size=16), - 'loc_case': fields.char('Case', size=16), 'company_id': fields.many2one('res.company', 'Company', select=1), } @@ -351,21 +344,17 @@ class product_template(osv.osv): _defaults = { 'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'product.template', context=c), - 'list_price': lambda *a: 1, - 'cost_method': lambda *a: 'standard', - 'supply_method': lambda *a: 'buy', - 'standard_price': lambda *a: 0.0, - 'sale_ok': lambda *a: 1, - 'sale_delay': lambda *a: 7, - 'produce_delay': lambda *a: 1, - 'purchase_ok': lambda *a: 1, - 'procure_method': lambda *a: 'make_to_stock', + 'list_price': 1, + 'cost_method': 'standard', + 'standard_price': 0.0, + 'sale_ok': 1, + 'produce_delay': 1, 'uom_id': _get_uom_id, 'uom_po_id': _get_uom_id, - 'uos_coeff' : lambda *a: 1.0, - 'mes_type' : lambda *a: 'fixed', + 'uos_coeff' : 1.0, + 'mes_type' : 'fixed', 'categ_id' : _default_category, - 'type' : lambda *a: 'consu', + 'type' : 'consu', } def _check_uom(self, cursor, user, ids, context=None): diff --git a/addons/product/product_data.xml b/addons/product/product_data.xml index 1974acc6df2..8e5280d036a 100644 --- a/addons/product/product_data.xml +++ b/addons/product/product_data.xml @@ -197,7 +197,6 @@ parameter) will see those record just disappear. <field name="name">Service</field> <field name="categ_id" ref="product.product_category_all"/> <field name="type">service</field> - <field eval="False" name="purchase_ok"/> </record> </data> </openerp> diff --git a/addons/product/product_demo.xml b/addons/product/product_demo.xml index 66b86fc7b63..14477d2401a 100644 --- a/addons/product/product_demo.xml +++ b/addons/product/product_demo.xml @@ -70,8 +70,6 @@ <field name="standard_price">20.5</field> <field name="list_price">30.75</field> <field name="type">service</field> - <field name="procure_method">make_to_order</field> - <field name="supply_method">produce</field> <field name="uom_id" ref="product_uom_hour"/> <field name="uom_po_id" ref="product_uom_hour"/> <field name="description">This type of service include basic monitoring of products.</field> @@ -84,8 +82,6 @@ <field name="standard_price">25.5</field> <field name="list_price">38.25</field> <field name="type">service</field> - <field name="procure_method">make_to_order</field> - <field name="supply_method">produce</field> <field name="uom_id" ref="product_uom_hour"/> <field name="uom_po_id" ref="product_uom_hour"/> <field name="description">This type of service include assistance for security questions, system configuration requirements, implementation or special needs.</field> @@ -97,9 +93,7 @@ <field name="categ_id" ref="product_category_4"/> <field name="list_price">450.0</field> <field name="standard_price">300.0</field> - <field name="type">product</field> - <field name="procure_method">make_to_order</field> - <field name="supply_method">produce</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> <field name="sale_delay">4.0</field> @@ -115,9 +109,8 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_4"/> <field name="standard_price">500.0</field> <field name="list_price">750.0</field> - <field name="type">product</field> - <field name="procure_method">make_to_order</field> - <field name="supply_method">produce</field> + <field name="type">consu</field> + <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> <field name="sale_delay">4.0</field> @@ -133,9 +126,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_4"/> <field name="standard_price">600.0</field> <field name="list_price">900.0</field> - <field name="type">product</field> - <field name="procure_method">make_to_order</field> - <field name="supply_method">produce</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> <field name="sale_delay">7.0</field> @@ -148,7 +139,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">800.0</field> <field name="list_price">1200.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -158,7 +149,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">880.0</field> <field name="list_price">1350.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -168,7 +159,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">10.0</field> <field name="list_price">13.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -178,8 +169,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">10.0</field> <field name="list_price">13.0</field> - <field name="type">product</field> - <field name="procure_method">make_to_order</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -189,7 +179,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">12.50</field> <field name="list_price">14</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -199,7 +189,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">14</field> <field name="list_price">16.50</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -209,8 +199,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">18</field> <field name="list_price">12.50</field> - <field name="type">product</field> - <field name="procure_method">make_to_order</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -220,7 +209,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">78.0</field> <field name="list_price">85.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -230,7 +219,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">87.0</field> <field name="list_price">95.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -240,7 +229,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">80.0</field> <field name="list_price">85.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -250,9 +239,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">20.0</field> <field name="list_price">25.0</field> - <field name="type">product</field> - <field name="procure_method">make_to_order</field> - <field name="supply_method">produce</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -262,7 +249,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">860.0</field> <field name="list_price">975.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -272,9 +259,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">1020.0</field> <field name="list_price">1150.0</field> - <field name="type">product</field> - <field name="procure_method">make_to_order</field> - <field name="supply_method">produce</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -284,9 +269,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">1100.0</field> <field name="list_price">1250.0</field> - <field name="type">product</field> - <field name="procure_method">make_to_order</field> - <field name="supply_method">produce</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> <field name="description">On demand hard-disk having capacity based on requirement.</field> @@ -297,7 +280,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">1700.0</field> <field name="list_price">1950.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -307,7 +290,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">1790.0</field> <field name="list_price">2000.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -317,7 +300,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">2010.0</field> <field name="list_price">2100.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -327,7 +310,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">1910.0</field> <field name="list_price">1980.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -337,7 +320,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_8"/> <field name="standard_price">876.0</field> <field name="list_price">885.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -347,7 +330,7 @@ HDD SH-1</field> <field name="categ_id" ref="product_category_4"/> <field name="standard_price">2870.0</field> <field name="list_price">2950.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> <field name="description">17" Monitor @@ -361,7 +344,7 @@ QWERTY keyboard</field> <field name="categ_id" ref="product_category_4"/> <field name="standard_price">3000.0</field> <field name="list_price">3245.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> <field name="description">17" Monitor @@ -375,9 +358,7 @@ QWERTY keyboard</field> <field name="categ_id" ref="product_category_4"/> <field name="standard_price">3300.0</field> <field name="list_price">3645.0</field> - <field name="type">product</field> - <field name="procure_method">make_to_order</field> - <field name="supply_method">produce</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> <field name="description">Custom Laptop based on customer's requirement.</field> @@ -388,7 +369,7 @@ QWERTY keyboard</field> <field name="categ_id" ref="product_category_6"/> <field name="standard_price">390.0</field> <field name="list_price">405.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -399,7 +380,7 @@ QWERTY keyboard</field> <field name="categ_id" ref="product_category_7"/> <field name="standard_price">90.0</field> <field name="list_price">100.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -410,7 +391,7 @@ QWERTY keyboard</field> <field name="categ_id" ref="product_category_7"/> <field name="standard_price">126.0</field> <field name="list_price">145.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -420,7 +401,7 @@ QWERTY keyboard</field> <field name="categ_id" ref="product_category_7"/> <field name="standard_price">134.0</field> <field name="list_price">150.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> <field name="description">.</field> @@ -431,7 +412,7 @@ QWERTY keyboard</field> <field name="categ_id" ref="product_category_7"/> <field name="standard_price">57.0</field> <field name="list_price">62.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> <field name="description">Hands free headset for laptop PC with in-line microphone and headphone plug.</field> @@ -442,8 +423,7 @@ QWERTY keyboard</field> <field name="categ_id" ref="product_category_7"/> <field name="standard_price">60.0</field> <field name="list_price">65.0</field> - <field name="type">product</field> - <field name="procure_method">make_to_order</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> <field name="description">Headset for laptop PC with USB connector.</field> @@ -455,7 +435,7 @@ QWERTY keyboard</field> <field name="categ_id" ref="product_category_7"/> <field name="standard_price">38.0</field> <field name="list_price">45.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -466,7 +446,7 @@ QWERTY keyboard</field> <field name="categ_id" ref="product_category_7"/> <field name="standard_price">18.40</field> <field name="list_price">20.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_dozen"/> <field name="uom_po_id" ref="product_uom_dozen"/> </record> @@ -477,7 +457,7 @@ QWERTY keyboard</field> <field name="categ_id" ref="product_category_7"/> <field name="standard_price">21.60</field> <field name="list_price">24.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_dozen"/> <field name="uom_po_id" ref="product_uom_dozen"/> </record> @@ -488,8 +468,7 @@ QWERTY keyboard</field> <field name="categ_id" ref="product_category_6"/> <field name="standard_price">4258.0</field> <field name="list_price">4410.0</field> - <field name="type">product</field> - <field name="procure_method">make_to_order</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> <field name="description">All in one hi-speed printer with fax and scanner.</field> @@ -501,7 +480,7 @@ QWERTY keyboard</field> <field name="categ_id" ref="product_category_6"/> <field name="standard_price">60.0</field> <field name="list_price">65.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -512,7 +491,7 @@ QWERTY keyboard</field> <field name="categ_id" ref="product_category_6"/> <field name="standard_price">66.0</field> <field name="list_price">70.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -569,8 +548,6 @@ QWERTY keyboard</field> <field name="standard_price">155.0</field> <field name="list_price">173.0</field> <field name="type">consu</field> - <field name="procure_method">make_to_order</field> - <field name="supply_method">produce</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> <field name="description_sale">Full featured image editing software.</field> @@ -582,7 +559,7 @@ QWERTY keyboard</field> <field name="categ_id" ref="product_category_6"/> <field name="standard_price">55.0</field> <field name="list_price">60.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -593,7 +570,7 @@ QWERTY keyboard</field> <field name="categ_id" ref="product_category_6"/> <field name="standard_price">35.0</field> <field name="list_price">40.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -604,7 +581,7 @@ QWERTY keyboard</field> <field name="categ_id" ref="product_category_6"/> <field name="standard_price">55.0</field> <field name="list_price">70.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> @@ -615,7 +592,7 @@ QWERTY keyboard</field> <field name="categ_id" ref="product_category_6"/> <field name="standard_price">13.0</field> <field name="list_price">18.0</field> - <field name="type">product</field> + <field name="type">consu</field> <field name="uom_id" ref="product_uom_unit"/> <field name="uom_po_id" ref="product_uom_unit"/> </record> diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml index 8c19aee026f..748d6c5d7cf 100644 --- a/addons/product/product_view.xml +++ b/addons/product/product_view.xml @@ -10,11 +10,9 @@ <search string="Product"> <field name="name" string="Product" filter_domain="['|',('name','ilike',self),('default_code','ilike',self)]"/> <filter string="Services" icon="terp-accessories-archiver" domain="[('type','=','service')]"/> - <filter string="Products" icon="terp-accessories-archiver" domain="['|',('type','=','product'),('type','=','consu')]" help="Both stockable and consumable products"/> + <filter string="Consumable" name="consumable" icon="terp-accessories-archiver" domain="[('type','=','consu')]" help="Consumable products"/> <separator/> - <filter name="filter_to_purchase" string="To Purchase" icon="terp-accessories-archiver+" domain="[('purchase_ok', '=', 1)]"/> <filter string="Can be Sold" name="filter_to_sell" icon="terp-accessories-archiver-minus" domain="[('sale_ok','=',1)]"/> - <filter name="filter_to_purchase" string="Can be Purchased" icon="terp-accessories-archiver+" domain="[('purchase_ok', '=', 1)]"/> <field name="categ_id" operator="child_of"/> <group expand="0" string="Context..."> <field name="pricelist_id" context="{'pricelist': self}" groups="product.group_sale_pricelist"/> @@ -60,7 +58,7 @@ <field name="arch" type="xml"> <form string="Product" version="7.0"> <sheet> - <field name="image_medium" widget="image" class="oe_avatar oe_right"/> + <field name="image_medium" widget="image" class="oe_avatar oe_left"/> <div class="oe_title"> <div class="oe_edit_only"> <label for="name" string="Product Name"/> @@ -73,8 +71,6 @@ <div name="options" groups="base.group_user"> <field name="sale_ok"/> <label for="sale_ok"/> - <field name="purchase_ok"/> - <label for="purchase_ok"/> </div> </div> <div class="oe_right oe_button_box" name="buttons"> @@ -104,38 +100,15 @@ </page> <page string="Procurements" groups="base.group_user"> <group name="procurement"> - <group> - <field name="procure_method" groups="base.group_user"/> - <field name="supply_method" groups="base.group_user" invisible="1"/> + <group name="general"> <field name="cost_method" groups="product.group_costing_method"/> <field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}"/> </group> - <group name="procurement_help" class="oe_grey" col="1" groups="base.group_user"> - <p attrs="{'invisible': [('type','<>','service'),('procure_method','<>','make_to_stock')]}"> - When you sell this service, nothing special will be trigered - to deliver the customer, as you set the procurement method as - 'Make to Stock'. - </p> - <p attrs="{'invisible': [('type','<>','product'),('procure_method','<>','make_to_stock')]}"> - When you sell this product, OpenERP will <b>use the available - inventory</b> for the delivery order. - <br/><br/> - If there are not enough quantities available, the delivery order - will wait for new products. To fulfill the inventory, you should - create others rules like orderpoints. - </p> - <p attrs="{'invisible': [('type','<>','consu'),('procure_method','<>','make_to_stock')]}"> - When you sell this product, a delivery order will be created. - OpenERP will consider that the <b>required quantities are always - available</b> as it's a consumable (as a result of this, the quantity - on hand may become negative). - </p> - </group> - <group groups="product.group_uom"> + <group name="procurement_uom" groups="product.group_uom" string="Purchase"> <field name="uom_po_id"/> </group> </group> - <separator string="Notes for Suppliers"/> + <separator string="Description for Suppliers"/> <field name="description_purchase" placeholder="This note will be displayed on requests for quotation..."/> </page> <page string="Inventory" groups="base.group_user"> @@ -144,13 +117,7 @@ <field name="state"/> <field name="product_manager"/> </group> - <group name="store" string="Storage Localisation"> - <field name="company_id" groups="base.group_multi_company" widget="selection"/> - <field name="loc_rack" attrs="{'invisible':[('type','=','service')]}"/> - <field name="loc_row" attrs="{'invisible':[('type','=','service')]}"/> - <field name="loc_case" attrs="{'invisible':[('type','=','service')]}"/> - </group> - <group groups="product.group_stock_packaging" string="Weights"> + <group name="Weights" groups="product.group_stock_packaging" string="Weights"> <field digits="(14, 3)" name="volume" attrs="{'readonly':[('type','=','service')]}"/> <field name="weight" attrs="{'readonly':[('type','=','service')]}"/> <field name="weight_net" attrs="{'readonly':[('type','=','service')]}"/> @@ -160,10 +127,6 @@ <page string="Sales" attrs="{'readonly':[('sale_ok','=',0)]}"> <group name="sale"> <group string="Sale Conditions"> - <label for="sale_delay"/> - <div> - <field name="sale_delay" class="oe_inline"/> days - </div> <label for="warranty"/> <div> <field name="warranty" class="oe_inline"/> months @@ -197,7 +160,7 @@ <field name="name"/> </form> </field> - <separator string="Notes on Quotations"/> + <separator string="Description for Quotations"/> <field name="description_sale" placeholder="note to be displayed on quotations..."/> </page> </notebook> @@ -449,7 +412,6 @@ <tree string="Units of Measure"> <field name="name"/> <field name="category_id"/> - <field name="factor"/> </tree> </field> </record> @@ -463,19 +425,22 @@ <group> <field name="name"/> <field name="category_id"/> - <field name="active"/> + <field name="uom_type" on_change="onchange_type(uom_type)"/> + <label for="factor"/> + <div> + <field name="factor" attrs="{'invisible':[('uom_type','!=','smaller')]}"/> + <field name="factor_inv" attrs="{'invisible':[('uom_type','!=','bigger')]}"/> + <p attrs="{'invisible':[('uom_type','!=','smaller')]}" class="oe_grey"> + e.g: 1 * (reference unit) = ratio * (this unit) + </p> + <p attrs="{'invisible':[('uom_type','!=','bigger')]}" class="oe_grey"> + e.g: 1 * (this unit) = ratio * (reference unit) + </p> + </div> </group> <group> - <field name="uom_type" on_change="onchange_type(uom_type)"/> - <p attrs="{'invisible':[('uom_type','!=','smaller')]}" colspan="2"> - e.g: 1 * (reference unit) = ratio * (this unit) - </p> - <p attrs="{'invisible':[('uom_type','!=','bigger')]}" colspan="2"> - e.g: 1 * (this unit) = ratio * (reference unit) - </p> + <field name="active"/> <field name="rounding"/> - <field name="factor" attrs="{'invisible':[('uom_type','!=','smaller')]}"/> - <field name="factor_inv" attrs="{'invisible':[('uom_type','!=','bigger')]}"/> </group> </group> </form> @@ -715,12 +680,9 @@ <group> <group string="Product Type"> <field name="sale_ok"/> - <field name="purchase_ok"/> </group> <group string="Procurement"> <field name="type"/> - <field name="procure_method"/> - <field name="supply_method"/> </group> <group string="Base Prices"> @@ -733,7 +695,7 @@ <field digits="(14, 3)" name="volume" attrs="{'readonly':[('type','=','service')]}"/> <field digits="(14, 3)" name="weight" attrs="{'readonly':[('type','=','service')]}"/> <field digits="(14, 3)" name="weight_net" attrs="{'readonly':[('type','=','service')]}"/> - </group> + </group> <group name="status" string="Status"> <field name="categ_id"/> @@ -756,18 +718,12 @@ <page string="Procurement & Locations"> <group> <group name="delay" string="Delays"> - <field name="sale_delay" attrs="{'readonly':[('sale_ok','=',0)]}"/> <label for="produce_delay"/> <div> <field name="produce_delay" class="oe_inline"/> days </div> <field name="warranty"/> </group> - <group name="store" string="Storage Localisation"> - <field name="loc_rack"/> - <field name="loc_row"/> - <field name="loc_case"/> - </group> </group> </page> diff --git a/addons/product_expiry/product_expiry_view.xml b/addons/product_expiry/product_expiry_view.xml index 88ea6f365e8..d6dfb22b317 100644 --- a/addons/product_expiry/product_expiry_view.xml +++ b/addons/product_expiry/product_expiry_view.xml @@ -19,9 +19,9 @@ <record model="ir.ui.view" id="view_product_form_expiry"> <field name="name">product.normal.form</field> <field name="model">product.product</field> - <field name="inherit_id" ref="product.product_normal_form_view" /> + <field name="inherit_id" ref="stock.view_normal_procurement_locations_form" /> <field name="arch" type="xml"> - <group name="inventory"> + <group name="Weights" position="after"> <group string="Dates"> <field name="life_time" /> <field name="use_time" /> diff --git a/addons/project/project.py b/addons/project/project.py index 4f1d2826980..9a022fffa90 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -510,8 +510,7 @@ def Project(): model_name=vals.get('alias_model', 'project.task'), context=context) vals['alias_id'] = alias_id - if vals.get('partner_id', False): - vals['type'] = 'contract' + vals['type'] = 'contract' project_id = super(project, self).create(cr, uid, vals, context) mail_alias.write(cr, uid, [vals['alias_id']], {'alias_defaults': {'project_id': project_id} }, context) self.create_send_note(cr, uid, [project_id], context=context) @@ -1426,7 +1425,9 @@ class project_task_history_cumulative(osv.osv): } def init(self, cr): - cr.execute(""" CREATE OR REPLACE VIEW project_task_history_cumulative AS ( + tools.drop_view_if_exists(cr, 'project_task_history_cumulative') + + cr.execute(""" CREATE VIEW project_task_history_cumulative AS ( SELECT history.date::varchar||'-'||history.history_id::varchar AS id, history.date AS end_date, diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 03c0ee2440b..4c6d3b6ac09 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -63,7 +63,7 @@ <field name="arch" type="xml"> <form string="Project" version="7.0"> <header> - <button name="set_done" string="Done" type="object" states="open,pending"/> + <button name="set_done" string="Close Project" type="object" states="open,pending"/> <button name="set_open" string="Re-open project" type="object" states="pending" class="oe_highlight"/> <button name="set_open" string="Re-open project" type="object" states="cancelled,close"/> <button name="set_pending" string="Pending" type="object" states="open"/> diff --git a/addons/project/report/project_report_view.xml b/addons/project/report/project_report_view.xml index 1d60479f65c..10f3f4a8c7c 100644 --- a/addons/project/report/project_report_view.xml +++ b/addons/project/report/project_report_view.xml @@ -10,7 +10,7 @@ <field name="name">report.project.task.user.tree</field> <field name="model">report.project.task.user</field> <field name="arch" type="xml"> - <tree string="Tasks Analysis"> + <tree string="Tasks Analysis" create="false"> <field name="name" invisible="1"/> <field name="project_id" invisible="1"/> <field name="user_id" invisible="1"/> diff --git a/addons/project_issue/report/project_issue_report_view.xml b/addons/project_issue/report/project_issue_report_view.xml index f90f349ea3b..6bee4e38842 100644 --- a/addons/project_issue/report/project_issue_report_view.xml +++ b/addons/project_issue/report/project_issue_report_view.xml @@ -6,7 +6,7 @@ <field name="name">project.issue.report.tree</field> <field name="model">project.issue.report</field> <field name="arch" type="xml"> - <tree string="Issues Analysis"> + <tree string="Issues Analysis" create="false"> <field name="name" invisible="1"/> <field name="month" invisible="1"/> <field name="project_id" invisible="1"/> diff --git a/addons/project_mrp/project_mrp_view.xml b/addons/project_mrp/project_mrp_view.xml index 51de9dd5cf3..be6bae8ca61 100644 --- a/addons/project_mrp/project_mrp_view.xml +++ b/addons/project_mrp/project_mrp_view.xml @@ -31,16 +31,16 @@ </field> </field> </record> - <record id="product.product_normal_form_supply_view" model="ir.ui.view"> + <record id="product_product_normal_form_supply_view" model="ir.ui.view"> <field name="name">product.normal.form.project_mrp.inherit</field> <field name="model">product.product</field> - <field name="inherit_id" ref="product.product_normal_form_view"/> + <field name="inherit_id" ref="procurement.product_form_view_procurement_button"/> <field name="arch" type="xml"> <xpath expr="//field[@name='supply_method']" position="attributes"> <attribute name="invisible">False</attribute> </xpath> <group name="procurement_help" position="inside"> - <p attrs="{'invisible': [('type','<>','service'),('procure_method','<>','make_to_order'),('supply_method','<>','produce')]}"> + <p attrs="{'invisible': ['|','|',('type','<>','service'),('procure_method','<>','make_to_order'),('supply_method','<>','produce')]}"> When you sell this service to a customer, <b>a task</b> will be created to follow up the job to do. This task will appear in the project related to the contract of the sale order. diff --git a/addons/project_mrp/project_procurement.py b/addons/project_mrp/project_procurement.py index ae5e1ccbf15..6948f54ec09 100644 --- a/addons/project_mrp/project_procurement.py +++ b/addons/project_mrp/project_procurement.py @@ -20,6 +20,7 @@ ############################################################################## from osv import fields, osv +from tools.translate import _ class procurement_order(osv.osv): _name = "procurement.order" @@ -83,10 +84,15 @@ class procurement_order(osv.osv): 'project_id': project and project.id or False, 'company_id': procurement.company_id.id, },context=context) - self.write(cr, uid, [procurement.id], {'task_id': task_id, 'state': 'running', 'message':'from project: task created.'}, context=context) - self.running_send_note(cr, uid, ids, context=None) + self.write(cr, uid, [procurement.id], {'task_id': task_id, 'state': 'running', 'message':_('Task created.')}, context=context) + self.project_task_create_note(cr, uid, ids, context=context) return task_id + def project_task_create_note(self, cr, uid, ids, context=None): + for procurement in self.browse(cr, uid, ids, context=context): + body = _("Task created") + self.message_post(cr, uid, [procurement.id], body=body, context=context) + procurement_order() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index c0516d09de3..db6ed8b80be 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -1084,9 +1084,14 @@ class procurement_order(osv.osv): } res[procurement.id] = self.create_procurement_purchase_order(cr, uid, procurement, po_vals, line_vals, context=new_context) self.write(cr, uid, [procurement.id], {'state': 'running', 'purchase_id': res[procurement.id]}) - self.running_send_note(cr, uid, [procurement.id], context=context) + self.purchase_order_create_note(cr, uid, ids, context=context) return res + def purchase_order_create_note(self, cr, uid, ids, context=None): + for procurement in self.browse(cr, uid, ids, context=context): + body = _("Draft Purchase Order created") + self.message_post(cr, uid, [procurement.id], body=body, context=context) + procurement_order() class mail_mail(osv.osv): @@ -1101,4 +1106,16 @@ class mail_mail(osv.osv): mail_mail() +class product_template(osv.osv): + _name = 'product.template' + _inherit = 'product.template' + _columns = { + 'purchase_ok': fields.boolean('Can be Purchased', help="Determine if the product is visible in the list of products within a selection from a purchase order line."), + } + _defaults = { + 'purchase_ok': 1, + } + +product_template() + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/purchase/purchase_demo.xml b/addons/purchase/purchase_demo.xml index 17f51bb1004..c68ee8775bb 100644 --- a/addons/purchase/purchase_demo.xml +++ b/addons/purchase/purchase_demo.xml @@ -14,6 +14,9 @@ <field eval="80.0" name="schedule_range"/> </record> + <record id="product.product_product_consultant" model="product.product"> + <field eval="False" name="purchase_ok"/> + </record> </data> </openerp> diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml index 446c17578cb..4d273d90b32 100644 --- a/addons/purchase/purchase_view.xml +++ b/addons/purchase/purchase_view.xml @@ -198,8 +198,9 @@ <field name="arch" type="xml"> <form string="Purchase Order" version="7.0"> <header> - <button name="purchase_confirm" states="draft,sent" string="Confirm Order" class="oe_highlight"/> - <button name="wkf_send_rfq" states="draft" string="Send RFQ" type="object" context="{'send_rfq':True}"/> + <button name="wkf_send_rfq" states="draft" string="Send RFQ" type="object" context="{'send_rfq':True}" class="oe_highlight"/> + <button name="purchase_confirm" states="draft" string="Confirm Order"/> + <button name="purchase_confirm" states="sent" string="Confirm Order" class="oe_highlight"/> <button name="wkf_send_rfq" states="confirmed" string="Resend Purchase Order" type="object" class="oe_highlight"/> <button name="action_cancel" states="except_picking,except_invoice" string="Cancel" type="object" /> <button name="picking_ok" states="except_picking" string="Manually Corrected"/> @@ -590,18 +591,30 @@ <field name="model">product.product</field> <field name="inherit_id" ref="product.product_normal_form_view"/> <field name="arch" type="xml"> + <div name="options" position="inside"> + <field name="purchase_ok"/> + <label for="purchase_ok"/> + </div> <group name="procurement" position="after"> <separator string="Suppliers"/> <field name="seller_ids" context="{'uom_id': uom_id}"/> </group> + </field> + </record> + + <record id="product_product_normal_form_procurement_help_view" model="ir.ui.view"> + <field name="name">product.normal.form.procurement.help.inherit</field> + <field name="model">product.product</field> + <field name="inherit_id" ref="procurement.product_form_view_procurement_button"/> + <field name="arch" type="xml"> <group name="procurement_help" position="inside"> - <p attrs="{'invisible': [('type','<>','service'),('procure_method','<>','make_to_order'),('supply_method','<>','buy')]}"> + <p attrs="{'invisible': ['|','|',('type','<>','service'),('procure_method','<>','make_to_order'),('supply_method','<>','buy')]}"> When you sell this service to a customer, <b>a draft purchase order</b> will be created in order to subcontract the job <i attrs="{'invisible': [('seller_id','=',False)]}">to <field name="seller_id" class="oe_inline"/></i>. </p> - <p attrs="{'invisible': [('type','=','service'),('procure_method','<>','make_to_order'),('supply_method','<>','buy')]}"> + <p attrs="{'invisible': ['|','|',('type','=','service'),('procure_method','<>','make_to_order'),('supply_method','<>','buy')]}"> When you sell this product, OpenERP will trigger <b>a draft purchase order</b> to buy the required quantities to the supplier. The delivery order will be ready after having received the @@ -610,5 +623,45 @@ </group> </field> </record> + + <record id="product_search_form_view_purchase" model="ir.ui.view"> + <field name="name">product.search.purchase.form</field> + <field name="model">product.product</field> + <field name="inherit_id" ref="product.product_search_form_view"/> + <field name="arch" type="xml"> + <filter name="filter_to_sell" position="before"> + <filter name="filter_to_purchase" string="To Purchase" icon="terp-accessories-archiver+" domain="[('purchase_ok', '=', 1)]"/> + </filter> + <filter name="filter_to_sell" position="after"> + <filter name="filter_to_purchase" string="Can be Purchased" icon="terp-accessories-archiver+" domain="[('purchase_ok', '=', 1)]"/> + </filter> + </field> + </record> + + <record id="view_template_purchase_ok_form" model="ir.ui.view"> + <field name="name">product.template.purchase.ok.form.inherit</field> + <field name="model">product.template</field> + <field name="inherit_id" ref="product.product_template_form_view"/> + <field name="arch" type="xml"> + <field name="sale_ok" position="after"> + <field name="purchase_ok"/> + </field> + </field> + </record> + + <record id="view_product_account_purchase_ok_form" model="ir.ui.view"> + <field name="name">product.account.purchase.ok.form.inherit</field> + <field name="model">product.product</field> + <field name="inherit_id" ref="account.product_normal_form_view"/> + <field name="arch" type="xml"> + <xpath expr="//field[@name='property_account_expense']" position="replace" > + <field name="property_account_expense" domain="[('type','<>','view'),('type','<>','consolidation')]" attrs="{'readonly':[('purchase_ok','=',0)]}" /> + </xpath> + <xpath expr="//field[@name='supplier_taxes_id']" position="replace" > + <field name="supplier_taxes_id" colspan="2" widget="many2many_tags" attrs="{'readonly':[('purchase_ok','=',0)]}"/> + </xpath> + </field> + </record> + </data> </openerp> diff --git a/addons/purchase/report/purchase_report_view.xml b/addons/purchase/report/purchase_report_view.xml index 80685249849..909663f43bb 100644 --- a/addons/purchase/report/purchase_report_view.xml +++ b/addons/purchase/report/purchase_report_view.xml @@ -16,7 +16,7 @@ <field name="name">purchase.order.tree</field> <field name="model">purchase.report</field> <field name="arch" type="xml"> - <tree string="Purchase Orders Statistics"> + <tree string="Purchase Orders Statistics" create="false"> <field name="date" invisible="1"/> <field name="date_approve" invisible="1"/> <field name="expected_date" invisible="1"/> diff --git a/addons/purchase_requisition/purchase_requisition_view.xml b/addons/purchase_requisition/purchase_requisition_view.xml index 80bdd9aa95b..c4c2702d99c 100644 --- a/addons/purchase_requisition/purchase_requisition_view.xml +++ b/addons/purchase_requisition/purchase_requisition_view.xml @@ -180,7 +180,7 @@ <record model="ir.ui.view" id="product_normal_form_view_inherit"> <field name="name">product.form.inherit</field> <field name="model">product.product</field> - <field name="inherit_id" ref="product.product_normal_form_view"/> + <field name="inherit_id" ref="procurement.product_form_view_procurement_button"/> <field name="arch" type="xml"> <field name="procure_method" position="before"> <field name="purchase_requisition"/> diff --git a/addons/report_intrastat/report/invoice.rml b/addons/report_intrastat/report/invoice.rml index c07bd06f402..fc410e04ce0 100644 --- a/addons/report_intrastat/report/invoice.rml +++ b/addons/report_intrastat/report/invoice.rml @@ -245,7 +245,7 @@ <para style="terp_default_Centre_9">[[ l.discount and formatLang (l.discount) or '' ]] </para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(l.price_subtotal) ]] [[ o.currency_id.symbol ]]</para> + <para style="terp_default_Right_9">[[ formatLang(l.price_subtotal, currency_obj=o.currency_id) ]]</para> </td> </tr> <tr> @@ -301,7 +301,7 @@ <para style="terp_default_9">Total (excl. taxes):</para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(o.amount_untaxed) ]] [[ o.currency_id.symbol ]]</para> + <para style="terp_default_Right_9">[[ formatLang(o.amount_untaxed, currency_obj=o.currency_id) ]]</para> </td> </tr> <tr> @@ -314,7 +314,7 @@ <para style="terp_default_9">Taxes:</para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(o.amount_tax) ]] [[ o.currency_id.symbol ]]</para> + <para style="terp_default_Right_9">[[ formatLang(o.amount_tax, currency_obj=o.currency_id) ]]</para> </td> </tr> <tr> @@ -327,7 +327,7 @@ <para style="terp_default_Bold_9">Total (inclu. taxes):</para> </td> <td> - <para style="terp_tblheader_Details_Right">[[ formatLang(o.amount_total) ]] [[ o.currency_id.symbol ]]</para> + <para style="terp_tblheader_Details_Right">[[ formatLang(o.amount_total, currency_obj=o.currency_id) ]]</para> </td> </tr> </blockTable> @@ -360,10 +360,10 @@ <para style="terp_default_8">[[ t.name ]]</para> </td> <td> - <para style="terp_default_Right_8">[[ formatLang(t.base, digits=get_digits(dp='Account')) ]] [[ o.currency_id.symbol ]]</para> + <para style="terp_default_Right_8">[[ formatLang(t.base, digits=get_digits(dp='Account'), currency_obj = o.currency_id) ]]</para> </td> <td> - <para style="terp_default_Right_8">[[ (t.tax_code_id and t.tax_code_id.notprintable) and removeParentNode('blockTable') or '' ]] [[ formatLang(t.amount, digits=get_digits(dp='Account')) ]] [[ o.currency_id.symbol ]]</para> + <para style="terp_default_Right_8">[[ (t.tax_code_id and t.tax_code_id.notprintable) and removeParentNode('blockTable') or '' ]] [[ formatLang(t.amount, digits=get_digits(dp='Account'), currency_obj=o.currency_id) ]]</para> </td> <td> <para style="terp_default_8"> diff --git a/addons/report_intrastat/report_intrastat_view.xml b/addons/report_intrastat/report_intrastat_view.xml index 8d8da4a078f..bcbd19d8bd8 100644 --- a/addons/report_intrastat/report_intrastat_view.xml +++ b/addons/report_intrastat/report_intrastat_view.xml @@ -75,7 +75,7 @@ <field name="name">report.intrastat.view</field> <field name="model">report.intrastat</field> <field name="arch" type="xml"> - <tree string="Intrastat Data"> + <tree string="Intrastat Data" create="false"> <field name="name" /> <field name="month"/> <field name="code"/> diff --git a/addons/sale/report/sale_report_view.xml b/addons/sale/report/sale_report_view.xml index a7153f57a9e..8f725a9eacb 100644 --- a/addons/sale/report/sale_report_view.xml +++ b/addons/sale/report/sale_report_view.xml @@ -7,7 +7,7 @@ <field name="name">sale.report.tree</field> <field name="model">sale.report</field> <field name="arch" type="xml"> - <tree string="Sales Analysis"> + <tree string="Sales Analysis" create="false"> <field name="date" invisible="1"/> <field name="user_id" invisible="1"/> <field name="year" invisible="1"/> diff --git a/addons/sale/res_config.py b/addons/sale/res_config.py index 843e1fd3343..4f1a7ce9083 100644 --- a/addons/sale/res_config.py +++ b/addons/sale/res_config.py @@ -48,9 +48,6 @@ class sale_configuration(osv.osv_memory): 'group_uom':fields.boolean("Allow using different units of measures", implied_group='product.group_uom', help="""Allows you to select and maintain different units of measure for products."""), - 'group_sale_delivery_address': fields.boolean("Allow a different address for delivery and invoicing ", - implied_group='sale.group_delivery_invoice_address', - help="Allows you to specify different delivery and invoice addresses on a sale order."), 'group_discount_per_so_line': fields.boolean("Allow setting a discount on the sale order lines", implied_group='sale.group_discount_per_so_line', help="Allows you to apply some discount per sale order line."), @@ -125,7 +122,7 @@ class sale_configuration(osv.osv_memory): class account_config_settings(osv.osv_memory): _inherit = 'account.config.settings' _columns = { - 'module_sale_analytic_plans': fields.boolean('Several analytic accounts on sales', + 'module_sale_analytic_plans': fields.boolean('Use multiple analytic accounts on sales', help="""This allows install module sale_analytic_plans."""), 'group_analytic_account_for_sales': fields.boolean('Analytic accounting for sales', implied_group='sale.group_analytic_accounting', diff --git a/addons/sale/res_config_view.xml b/addons/sale/res_config_view.xml index 6150d4ce1a3..daf396d302b 100644 --- a/addons/sale/res_config_view.xml +++ b/addons/sale/res_config_view.xml @@ -12,6 +12,10 @@ <group> <label for="id" string="Invoicing Process"/> <div> + <div name="group_invoice_so_lines"> + <field name="group_invoice_so_lines" class="oe_inline"/> + <label for="group_invoice_so_lines"/> + </div> <div name="timesheet"> <field name="timesheet" class="oe_inline" on_change="onchange_timesheet(timesheet)"/> <label for="timesheet"/> @@ -30,10 +34,6 @@ </div> <div name="Customer Features" position="inside"> <div> - <field name="group_sale_delivery_address" class="oe_inline"/> - <label for="group_sale_delivery_address"/> - </div> - <div> <field name="group_sale_pricelist" class="oe_inline"/> <label for="group_sale_pricelist"/> </div> diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 9ba6c43a588..a2ee88ab860 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -194,7 +194,7 @@ class sale_order(osv.osv): 'user_id': fields.many2one('res.users', 'Salesperson', states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, select=True), 'partner_id': fields.many2one('res.partner', 'Customer', readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, required=True, change_default=True, select=True), 'partner_invoice_id': fields.many2one('res.partner', 'Invoice Address', readonly=True, required=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, help="Invoice address for current sales order."), - 'partner_shipping_id': fields.many2one('res.partner', 'Shipping Address', readonly=True, required=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, help="Shipping address for current sales order."), + 'partner_shipping_id': fields.many2one('res.partner', 'Delivery Address', readonly=True, required=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, help="Delivery address for current sales order."), 'order_policy': fields.selection([ ('manual', 'On Demand'), ], 'Create Invoice', required=True, readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, @@ -710,7 +710,7 @@ class sale_order_line(osv.osv): _description = 'Sales Order Line' _columns = { 'order_id': fields.many2one('sale.order', 'Order Reference', required=True, ondelete='cascade', select=True, readonly=True, states={'draft':[('readonly',False)]}), - 'name': fields.text('Product Description', size=256, required=True, select=True, readonly=True, states={'draft': [('readonly', False)]}), + 'name': fields.text('Description', size=256, required=True, select=True, readonly=True, states={'draft': [('readonly', False)]}), 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of sales order lines."), 'product_id': fields.many2one('product.product', 'Product', domain=[('sale_ok', '=', True)], change_default=True), 'invoice_lines': fields.many2many('account.invoice.line', 'sale_order_line_invoice_rel', 'order_line_id', 'invoice_id', 'Invoice Lines', readonly=True), @@ -751,13 +751,13 @@ class sale_order_line(osv.osv): if (line.order_id.invoice_quantity=='order'): if line.product_uos: return line.product_uos_qty or 0.0 - return line.product_uom_qty + return line.product_uom_qty def _get_line_uom(self, cr, uid, line, context=None): if (line.order_id.invoice_quantity=='order'): if line.product_uos: return line.product_uos.id - return line.product_uom.id + return line.product_uom.id def _prepare_order_line_invoice_line(self, cr, uid, line, account_id=False, context=None): """Prepare the dict of values to create the new invoice line for a diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index 8b89e8047cb..2ba00a7f0ae 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -174,9 +174,9 @@ </h1> <group> <group> - <field name="partner_id" on_change="onchange_partner_id(partner_id)" domain="[('customer','=',True)]" context="{'search_default_customer':1}"/> - <field name="partner_invoice_id" groups="sale.group_delivery_invoice_address"/> - <field name="partner_shipping_id" groups="sale.group_delivery_invoice_address"/> + <field name="partner_id" on_change="onchange_partner_id(partner_id)" domain="[('customer','=',True)]" context="{'search_default_customer':1, 'show_address': 1}" options='{"always_reload": True}'/> + <field name="partner_invoice_id" groups="sale.group_delivery_invoice_address" context="{'default_type':'invoice'}"/> + <field name="partner_shipping_id" groups="sale.group_delivery_invoice_address" context="{'default_type':'delivery'}"/> <field name="project_id" context="{'partner_id':partner_id, 'pricelist_id':pricelist_id, 'default_name':name}" groups="sale.group_analytic_accounting" domain="[('type','in',['view','normal','contract'])]"/> </group> <group> diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index e54ba158b9b..665474c22c0 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -9,8 +9,8 @@ <field name="arch" type="xml"> <data> <xpath expr="/form/header/button[@name='case_mark_lost']" position="after"> - <button states="done" string="Convert to Quotation" name="%(action_crm_make_sale)d" type="action" class="oe_highlight"/> - <button states="draft,open,pending" string="Convert to Quotation" name="%(action_crm_make_sale)d" type="action"/> + <button states="done" string="Create Quotation" name="%(action_crm_make_sale)d" type="action"/> + <button states="draft,open,pending" string="Convert to Quotation" name="%(action_crm_make_sale)d" type="action" class="oe_highlight"/> </xpath> </data> </field> diff --git a/addons/sale_margin/__openerp__.py b/addons/sale_margin/__openerp__.py index 9b393b6c5ad..bb2f78f409c 100644 --- a/addons/sale_margin/__openerp__.py +++ b/addons/sale_margin/__openerp__.py @@ -32,7 +32,7 @@ Price and Cost Price. 'author':'OpenERP SA', 'images':['images/sale_margin.jpeg'], 'depends':['sale_stock'], - 'demo':[], + 'demo':['sale_margin_demo.xml'], 'test': ['test/sale_margin.yml'], 'data':['security/ir.model.access.csv','sale_margin_view.xml'], 'auto_install': False, diff --git a/addons/sale_margin/sale_margin_demo.xml b/addons/sale_margin/sale_margin_demo.xml new file mode 100644 index 00000000000..a41f05304a4 --- /dev/null +++ b/addons/sale_margin/sale_margin_demo.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<openerp> + <data noupdate="1"> + + <record id="sale.sale_order_line_1" model="sale.order.line"> + <field name="purchase_price">2870.00</field> + </record> + + <record id="sale.sale_order_line_2" model="sale.order.line"> + <field name="purchase_price">126.00</field> + </record> + + <record id="sale.sale_order_line_3" model="sale.order.line"> + <field name="purchase_price">60.00</field> + </record> + + <record id="sale.sale_order_line_12" model="sale.order.line"> + <field name="purchase_price">390.00</field> + </record> + + <record id="sale.sale_order_line_13" model="sale.order.line"> + <field name="purchase_price">21.60</field> + </record> + + <record id="sale.sale_order_line_14" model="sale.order.line"> + <field name="purchase_price">4258.00</field> + </record> + + <record id="sale.sale_order_line_16" model="sale.order.line"> + <field name="purchase_price">2870.00</field> + </record> + + <record id="sale.sale_order_line_17" model="sale.order.line"> + <field name="purchase_price">155.00</field> + </record> + + <record id="sale.sale_order_line_18" model="sale.order.line"> + <field name="purchase_price">35.00</field> + </record> + + <record id="sale.sale_order_line_19" model="sale.order.line"> + <field name="purchase_price">13.00</field> + </record> + + </data> +</openerp> diff --git a/addons/sale_stock/res_config.py b/addons/sale_stock/res_config.py index 22b47833190..43e1cfc6778 100644 --- a/addons/sale_stock/res_config.py +++ b/addons/sale_stock/res_config.py @@ -27,6 +27,9 @@ class sale_configuration(osv.osv_memory): _inherit = 'sale.config.settings' _columns = { + 'group_sale_delivery_address': fields.boolean("Allow a different address for delivery and invoicing ", + implied_group='sale.group_delivery_invoice_address', + help="Allows you to specify different delivery and invoice addresses on a sale order."), 'group_invoice_deli_orders': fields.boolean('Generate invoices after and based on delivery orders', implied_group='sale_stock.group_invoice_deli_orders', help="To allow your salesman to make invoices for Delivery Orders using the menu 'Deliveries to Invoice'."), diff --git a/addons/sale_stock/res_config_view.xml b/addons/sale_stock/res_config_view.xml index 1f5380b0f58..aa15be1d090 100644 --- a/addons/sale_stock/res_config_view.xml +++ b/addons/sale_stock/res_config_view.xml @@ -9,11 +9,19 @@ <field name="inherit_id" ref="sale.view_sales_config"/> <field name="arch" type="xml"> <data> - <xpath expr="//div[@name='timesheet']" position="before"> + <xpath expr="//div[@name='Customer Features']" position="inside"> + <div> + <field name="group_sale_delivery_address" class="oe_inline"/> + <label for="group_sale_delivery_address"/> + </div> + </xpath> + <xpath expr="//div[@name='group_invoice_so_lines']" position="replace"> <div> <field name="group_invoice_so_lines" on_change="onchange_invoice_methods(group_invoice_so_lines, group_invoice_deli_orders)" class="oe_inline"/> <label for="group_invoice_so_lines"/> </div> + </xpath> + <xpath expr="//div[@name='timesheet']" position="before"> <div> <field name="group_invoice_deli_orders" class="oe_inline" on_change="onchange_invoice_methods(group_invoice_so_lines, group_invoice_deli_orders)"/> <label for="group_invoice_deli_orders"/> diff --git a/addons/sale_stock/sale_stock_view.xml b/addons/sale_stock/sale_stock_view.xml index 8962c21dc6e..73b9d33ba90 100644 --- a/addons/sale_stock/sale_stock_view.xml +++ b/addons/sale_stock/sale_stock_view.xml @@ -56,7 +56,7 @@ <field name="product_id" context="{'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'shop':parent.shop_id, 'uom':product_uom}" groups="base.group_user" - on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, False, False, parent.date_order, product_packaging, parent.fiscal_position, True, context)"/> + on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, False, False, parent.date_order, product_packaging, parent.fiscal_position, False, context)"/> </field> <field name="product_uom_qty" position="replace"> <field context="{'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'shop':parent.shop_id, 'uom':product_uom}" diff --git a/addons/sale_stock/stock.py b/addons/sale_stock/stock.py index c4e505a80e8..6fc5c061dda 100644 --- a/addons/sale_stock/stock.py +++ b/addons/sale_stock/stock.py @@ -153,13 +153,14 @@ class stock_picking(osv.osv): inv_name = picking.sale_id.client_order_ref + " : " + invoice_created.name invoice_obj.write(cursor, user, [invoice_created.id], {'name': inv_name}, context=context) for sale_line in sale_lines: + account_id = False + if not type: + type = context.get('inv_type', False) + if group: + name = picking.name + '-' + sale_line.name + else: + name = sale_line.name if sale_line.product_id.type == 'service' and sale_line.invoiced == False: - if not type: - type = context.get('inv_type', False) - if group: - name = picking.name + '-' + sale_line.name - else: - name = sale_line.name if type in ('out_invoice', 'out_refund'): account_id = sale_line.product_id.product_tmpl_id.\ property_account_income.id @@ -173,16 +174,16 @@ class stock_picking(osv.osv): account_id = sale_line.product_id.categ_id.\ property_account_expense_categ.id - vals = order_line_obj._prepare_order_line_invoice_line(cursor, user, sale_line, account_id, context) - if vals: #note: in some cases we may not want to include all service lines as invoice lines - vals['name'] = name - vals['account_analytic_id'] = self._get_account_analytic_invoice(cursor, user, picking, sale_line) - vals['invoice_id'] = invoices[result[picking.id]].id - invoice_line_id = invoice_line_obj.create(cursor, user, vals, context=context) - order_line_obj.write(cursor, user, [sale_line.id], { - 'invoiced': True, - 'invoice_lines': [(6, 0, [invoice_line_id])], - }) + vals = order_line_obj._prepare_order_line_invoice_line(cursor, user, sale_line, account_id, context) + if vals: #note: in some cases we may not want to include all service lines as invoice lines + vals['name'] = name + vals['account_analytic_id'] = self._get_account_analytic_invoice(cursor, user, picking, sale_line) + vals['invoice_id'] = invoices[result[picking.id]].id + invoice_line_id = invoice_line_obj.create(cursor, user, vals, context=context) + order_line_obj.write(cursor, user, [sale_line.id], { + 'invoiced': True, + 'invoice_lines': [(6, 0, [invoice_line_id])], + }) return result # Redefinition of the new field in order to update the model stock.picking.out in the orm diff --git a/addons/stock/i18n/de.po b/addons/stock/i18n/de.po index dbd9bb99c67..2d034c970c9 100644 --- a/addons/stock/i18n/de.po +++ b/addons/stock/i18n/de.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 01:37+0100\n" -"PO-Revision-Date: 2012-05-24 22:20+0000\n" +"PO-Revision-Date: 2012-10-12 23:21+0000\n" "Last-Translator: Ferdinand @ Camptocamp <Unknown>\n" "Language-Team: German <kde-i18n-doc@kde.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-08-28 05:56+0000\n" -"X-Generator: Launchpad (build 15864)\n" +"X-Launchpad-Export-Date: 2012-10-14 04:39+0000\n" +"X-Generator: Launchpad (build 16137)\n" #. module: stock #: field:product.product,track_outgoing:0 @@ -48,7 +48,9 @@ msgid "Chained Location If Fixed" msgstr "Lager bei \"Fester Lagerort\"" #. module: stock -#: view:stock.inventory:0 view:stock.move:0 view:stock.picking:0 +#: view:stock.inventory:0 +#: view:stock.move:0 +#: view:stock.picking:0 msgid "Put in a new pack" msgstr "Lade in neues Paket" @@ -86,8 +88,10 @@ msgid "Orders processed Today or planned for Today" msgstr "heutige Aufträge" #. module: stock -#: view:stock.partial.move.line:0 view:stock.partial.picking:0 -#: field:stock.partial.picking,move_ids:0 view:stock.partial.picking.line:0 +#: view:stock.partial.move.line:0 +#: view:stock.partial.picking:0 +#: field:stock.partial.picking,move_ids:0 +#: view:stock.partial.picking.line:0 #: view:stock.return.picking.memory:0 msgid "Product Moves" msgstr "Produktlieferungen" @@ -143,19 +147,25 @@ msgid "Picking list" msgstr "Lieferauftrag" #. module: stock -#: report:lot.stock.overview:0 report:lot.stock.overview_all:0 +#: report:lot.stock.overview:0 +#: report:lot.stock.overview_all:0 #: field:report.stock.inventory,product_qty:0 #: field:report.stock.move,product_qty:0 #: field:stock.change.product.qty,new_quantity:0 #: field:stock.inventory.line,product_qty:0 #: field:stock.inventory.line.split,qty:0 #: field:stock.inventory.line.split.lines,quantity:0 -#: report:stock.inventory.move:0 field:stock.move,product_qty:0 -#: field:stock.move.consume,product_qty:0 field:stock.move.scrap,product_qty:0 -#: field:stock.move.split,qty:0 field:stock.move.split.lines,quantity:0 +#: report:stock.inventory.move:0 +#: field:stock.move,product_qty:0 +#: field:stock.move.consume,product_qty:0 +#: field:stock.move.scrap,product_qty:0 +#: field:stock.move.split,qty:0 +#: field:stock.move.split.lines,quantity:0 #: field:stock.partial.move.line,quantity:0 -#: field:stock.partial.picking.line,quantity:0 report:stock.picking.list:0 -#: field:stock.report.prodlots,qty:0 field:stock.report.tracklots,name:0 +#: field:stock.partial.picking.line,quantity:0 +#: report:stock.picking.list:0 +#: field:stock.report.prodlots,qty:0 +#: field:stock.report.tracklots,name:0 #: field:stock.return.picking.memory,quantity:0 #: field:stock.split.into,quantity:0 msgid "Quantity" @@ -171,13 +181,17 @@ msgstr "" "auszuführenden Lieferaufträge, die zur Bearbeitung anstehen." #. module: stock -#: view:report.stock.move:0 field:report.stock.move,day:0 +#: view:report.stock.move:0 +#: field:report.stock.move,day:0 msgid "Day" msgstr "Tag" #. module: stock -#: view:stock.inventory:0 field:stock.inventory.line.split,product_uom:0 -#: view:stock.move:0 field:stock.move.split,product_uom:0 view:stock.picking:0 +#: view:stock.inventory:0 +#: field:stock.inventory.line.split,product_uom:0 +#: view:stock.move:0 +#: field:stock.move.split,product_uom:0 +#: view:stock.picking:0 #: view:stock.production.lot:0 msgid "UoM" msgstr "ME" @@ -189,13 +203,15 @@ msgid "Physical Inventories" msgstr "Inventuraufträge" #. module: stock -#: field:product.category,property_stock_journal:0 view:report.stock.move:0 +#: field:product.category,property_stock_journal:0 +#: view:report.stock.move:0 #: field:stock.change.standard.price,stock_journal:0 msgid "Stock journal" msgstr "Lagerjournal" #. module: stock -#: view:report.stock.inventory:0 view:report.stock.move:0 +#: view:report.stock.inventory:0 +#: view:report.stock.move:0 msgid "Current month" msgstr "Aktueller Monat" @@ -206,7 +222,7 @@ msgid "Unable to assign all lots to this move!" msgstr "Kann nicht alle Lose zu dieser Buchung zuordnen" #. module: stock -#: code:addons/stock/stock.py:2516 +#: code:addons/stock/stock.py:2522 #, python-format msgid "Missing partial picking data for move #%s" msgstr "Fehlender Teillieferauftrag für die Lieferung #%s" @@ -262,7 +278,9 @@ msgid "Other reference or serial number" msgstr "Fremde Referenz oder Seriennummer" #. module: stock -#: field:stock.move,origin:0 view:stock.picking:0 field:stock.picking,origin:0 +#: field:stock.move,origin:0 +#: view:stock.picking:0 +#: field:stock.picking,origin:0 msgid "Origin" msgstr "Herkunft" @@ -285,13 +303,16 @@ msgid "Downstream Traceability" msgstr "Verfolgung Downstream" #. module: stock -#: view:stock.move:0 field:stock.move,picking_id:0 field:stock.picking,name:0 +#: view:stock.move:0 +#: field:stock.move,picking_id:0 +#: field:stock.picking,name:0 #: view:stock.production.lot:0 msgid "Reference" msgstr "Referenz" #. module: stock -#: code:addons/stock/stock.py:670 code:addons/stock/stock.py:1516 +#: code:addons/stock/stock.py:676 +#: code:addons/stock/stock.py:1525 #, python-format msgid "Products to Process" msgstr "Produkte zu Lieferauftrag" @@ -306,12 +327,13 @@ msgstr "" "gehen, dass auch eine physische Inventur durchgeführt wird." #. module: stock -#: view:stock.partial.move:0 view:stock.partial.picking:0 +#: view:stock.partial.move:0 +#: view:stock.partial.picking:0 msgid "_Validate" msgstr "_Validiere" #. module: stock -#: code:addons/stock/stock.py:1149 +#: code:addons/stock/stock.py:1158 #, python-format msgid "You cannot cancel picking because stock move is in done state !" msgstr "" @@ -319,11 +341,12 @@ msgstr "" "Lagerbewegungen gibt." #. module: stock -#: code:addons/stock/stock.py:2337 code:addons/stock/stock.py:2379 -#: code:addons/stock/stock.py:2440 +#: code:addons/stock/stock.py:2346 +#: code:addons/stock/stock.py:2388 +#: code:addons/stock/stock.py:2449 #: code:addons/stock/wizard/stock_change_product_qty.py:87 #: code:addons/stock/wizard/stock_fill_inventory.py:53 -#: code:addons/stock/wizard/stock_partial_picking.py:141 +#: code:addons/stock/wizard/stock_partial_picking.py:142 #, python-format msgid "Warning!" msgstr "Warnung !" @@ -334,16 +357,20 @@ msgid "Group by partner" msgstr "Gruppiert nach Partner" #. module: stock -#: model:ir.model,name:stock.model_res_partner view:report.stock.inventory:0 -#: field:report.stock.inventory,partner_id:0 view:report.stock.move:0 -#: field:report.stock.move,partner_id:0 view:stock.move:0 -#: field:stock.move,partner_id:0 view:stock.picking:0 +#: model:ir.model,name:stock.model_res_partner +#: view:report.stock.inventory:0 +#: field:report.stock.inventory,partner_id:0 +#: view:report.stock.move:0 +#: field:report.stock.move,partner_id:0 +#: view:stock.move:0 +#: field:stock.move,partner_id:0 +#: view:stock.picking:0 #: field:stock.picking,partner_id:0 msgid "Partner" msgstr "Partner" #. module: stock -#: code:addons/stock/stock.py:2119 +#: code:addons/stock/stock.py:2128 #, python-format msgid "" "Can not create Journal Entry, Input Account defined on this product and " @@ -402,11 +429,17 @@ msgstr "" "Ressourcen des Tages anzuzeigen." #. module: stock -#: view:report.stock.inventory:0 field:report.stock.inventory,state:0 -#: view:report.stock.move:0 field:report.stock.move,state:0 -#: view:stock.inventory:0 field:stock.inventory,state:0 -#: field:stock.inventory.line,state:0 view:stock.move:0 -#: field:stock.move,state:0 view:stock.picking:0 field:stock.picking,state:0 +#: view:report.stock.inventory:0 +#: field:report.stock.inventory,state:0 +#: view:report.stock.move:0 +#: field:report.stock.move,state:0 +#: view:stock.inventory:0 +#: field:stock.inventory,state:0 +#: field:stock.inventory.line,state:0 +#: view:stock.move:0 +#: field:stock.move,state:0 +#: view:stock.picking:0 +#: field:stock.picking,state:0 #: report:stock.picking.list:0 msgid "State" msgstr "Status" @@ -438,14 +471,19 @@ msgstr "ME" #. module: stock #: selection:report.stock.inventory,state:0 -#: selection:report.stock.move,state:0 view:stock.move:0 -#: selection:stock.move,state:0 view:stock.picking:0 -#: view:stock.production.lot:0 field:stock.production.lot,stock_available:0 +#: selection:report.stock.move,state:0 +#: view:stock.move:0 +#: selection:stock.move,state:0 +#: view:stock.picking:0 +#: report:stock.picking.list:0 +#: view:stock.production.lot:0 +#: field:stock.production.lot,stock_available:0 msgid "Available" msgstr "Verfügbar" #. module: stock -#: view:stock.picking:0 field:stock.picking,min_date:0 +#: view:stock.picking:0 +#: field:stock.picking,min_date:0 msgid "Expected Date" msgstr "Voraussichtliche Lieferung" @@ -497,12 +535,14 @@ msgstr "" "Finanzkonto den aktuellen Bestandswert des Produkts." #. module: stock -#: field:report.stock.inventory,location_type:0 field:stock.location,usage:0 +#: field:report.stock.inventory,location_type:0 +#: field:stock.location,usage:0 msgid "Location Type" msgstr "Lagerort Art" #. module: stock -#: help:report.stock.move,type:0 help:stock.picking,type:0 +#: help:report.stock.move,type:0 +#: help:stock.picking,type:0 msgid "Shipping type specify, goods coming in or going out." msgstr "Liefertyp, Wareneingang oder -ausgang" @@ -522,8 +562,10 @@ msgid "Product Lots Filter" msgstr "Fertigungslos Filter" #. module: stock -#: report:lot.stock.overview:0 report:lot.stock.overview_all:0 -#: report:stock.inventory.move:0 report:stock.picking.list:0 +#: report:lot.stock.overview:0 +#: report:lot.stock.overview_all:0 +#: report:stock.inventory.move:0 +#: report:stock.picking.list:0 msgid "[" msgstr "[" @@ -542,7 +584,7 @@ msgid "Move History (child moves)" msgstr "Buchungshistorie (unterg. Buchungen)" #. module: stock -#: code:addons/stock/stock.py:2125 +#: code:addons/stock/stock.py:2134 #, python-format msgid "" "There is no stock output account defined for this product or its category: " @@ -569,7 +611,7 @@ msgid "stock.partial.move.line" msgstr "stock.partial.move.line" #. module: stock -#: code:addons/stock/stock.py:760 +#: code:addons/stock/stock.py:766 #, python-format msgid "You can not process picking without stock moves" msgstr "Lieferscheine ohne Buchungen können nicht verarbeitet werden." @@ -586,7 +628,8 @@ msgid "Order(Origin)" msgstr "Auftragsgrundlage" #. module: stock -#: report:lot.stock.overview:0 report:lot.stock.overview_all:0 +#: report:lot.stock.overview:0 +#: report:lot.stock.overview_all:0 msgid "Grand Total:" msgstr "Gesamtsumme:" @@ -610,12 +653,14 @@ msgid "Inventory Control" msgstr "Bestandsverwaltung" #. module: stock -#: view:stock.location:0 field:stock.location,comment:0 +#: view:stock.location:0 +#: field:stock.location,comment:0 msgid "Additional Information" msgstr "Weitere Informationen" #. module: stock -#: report:lot.stock.overview:0 report:lot.stock.overview_all:0 +#: report:lot.stock.overview:0 +#: report:lot.stock.overview_all:0 msgid "Location / Product" msgstr "Lagerort / Produkt" @@ -625,7 +670,7 @@ msgid "Destination Address " msgstr "Zieladresse " #. module: stock -#: code:addons/stock/stock.py:1333 +#: code:addons/stock/stock.py:1342 #, python-format msgid "Reception" msgstr "Annahme" @@ -653,7 +698,8 @@ msgstr "" "Lagervorgängen oder zu verantwortlichen Lagermitarbeitern." #. module: stock -#: field:stock.location,complete_name:0 field:stock.location,name:0 +#: field:stock.location,complete_name:0 +#: field:stock.location,name:0 msgid "Location Name" msgstr "Lagerort Bezeichnung" @@ -700,12 +746,13 @@ msgid "Parent Wizard (for existing lines)" msgstr "Übergeordneter Assistent (für bestehende Positionen)" #. module: stock -#: view:stock.move:0 view:stock.picking:0 +#: view:stock.move:0 +#: view:stock.picking:0 msgid "Move Information" msgstr "Warenbewegung Information" #. module: stock -#: code:addons/stock/stock.py:2131 +#: code:addons/stock/stock.py:2140 #, python-format msgid "" "There is no inventory Valuation account defined on the product category: " @@ -727,7 +774,8 @@ msgstr "August" #. module: stock #: model:ir.actions.act_window,name:stock.action_tracking_form #: model:ir.model,name:stock.model_stock_tracking -#: model:ir.ui.menu,name:stock.menu_action_tracking_form view:stock.tracking:0 +#: model:ir.ui.menu,name:stock.menu_action_tracking_form +#: view:stock.tracking:0 msgid "Packs" msgstr "Pakete" @@ -758,7 +806,8 @@ msgstr "Beschaffungslager" #: model:ir.ui.menu,name:stock.menu_action_production_lot_form #: field:stock.inventory.line.split,line_exist_ids:0 #: field:stock.inventory.line.split,line_ids:0 -#: field:stock.move.split,line_exist_ids:0 field:stock.move.split,line_ids:0 +#: field:stock.move.split,line_exist_ids:0 +#: field:stock.move.split,line_ids:0 msgid "Production Lots" msgstr "Fertigungslose" @@ -806,7 +855,7 @@ msgid "Reference must be unique per Company!" msgstr "Die Referenz muss je Firma eindeutig sein" #. module: stock -#: code:addons/stock/product.py:417 +#: code:addons/stock/product.py:421 #, python-format msgid "Future Receptions" msgstr "Zukünftige Wareneingänge" @@ -838,7 +887,8 @@ msgid "Destination Move" msgstr "Ziel" #. module: stock -#: view:stock.move:0 view:stock.picking:0 +#: view:stock.move:0 +#: view:stock.picking:0 msgid "Process Now" msgstr "Vorgang Fortsetzen" @@ -911,7 +961,7 @@ msgid "Merge Inventory" msgstr "Zusammenführung von Inventuren" #. module: stock -#: code:addons/stock/product.py:433 +#: code:addons/stock/product.py:437 #, python-format msgid "Future P&L" msgstr "Zukünftige G&V" @@ -920,12 +970,15 @@ msgstr "Zukünftige G&V" #: view:board.board:0 #: model:ir.actions.act_window,name:stock.action_incoming_product_board #: model:ir.actions.act_window,name:stock.action_picking_tree4 -#: model:ir.ui.menu,name:stock.menu_action_picking_tree4 view:stock.picking:0 +#: model:ir.ui.menu,name:stock.menu_action_picking_tree4 +#: view:stock.picking:0 msgid "Incoming Shipments" msgstr "Wareneingang" #. module: stock -#: view:report.stock.inventory:0 view:stock.move:0 view:stock.picking:0 +#: view:report.stock.inventory:0 +#: view:stock.move:0 +#: view:stock.picking:0 msgid "Scrap" msgstr "Ausschuss melden" @@ -945,7 +998,8 @@ msgid "Incoming" msgstr "Eingang" #. module: stock -#: report:lot.stock.overview:0 report:lot.stock.overview_all:0 +#: report:lot.stock.overview:0 +#: report:lot.stock.overview_all:0 #: field:stock.move,price_unit:0 msgid "Unit Price" msgstr "Preis/ME" @@ -972,12 +1026,13 @@ msgid "Currency" msgstr "Währung" #. module: stock -#: view:stock.picking:0 report:stock.picking.list:0 +#: view:stock.picking:0 +#: report:stock.picking.list:0 msgid "Journal" msgstr "Journal" #. module: stock -#: code:addons/stock/stock.py:1345 +#: code:addons/stock/stock.py:1354 #, python-format msgid "is scheduled %s." msgstr "ist geplant %s." @@ -1024,7 +1079,8 @@ msgstr "" "Konsignationen verwendet wird." #. module: stock -#: view:report.stock.inventory:0 view:report.stock.move:0 +#: view:report.stock.inventory:0 +#: view:report.stock.move:0 msgid "Month-1" msgstr "Monat-1" @@ -1062,7 +1118,8 @@ msgid "View" msgstr "Ansicht" #. module: stock -#: view:report.stock.inventory:0 view:report.stock.move:0 +#: view:report.stock.inventory:0 +#: view:report.stock.move:0 msgid "Last month" msgstr "Letzter Monat" @@ -1077,7 +1134,7 @@ msgid "Stock Valuation Account" msgstr "Lagerbestandskonto" #. module: stock -#: code:addons/stock/stock.py:1349 +#: code:addons/stock/stock.py:1358 #, python-format msgid "is waiting." msgstr "ist unerledigt" @@ -1165,7 +1222,7 @@ msgid "Author" msgstr "Autor" #. module: stock -#: code:addons/stock/stock.py:1332 +#: code:addons/stock/stock.py:1341 #, python-format msgid "Delivery Order" msgstr "Lieferauftrag" @@ -1176,12 +1233,13 @@ msgid "Manual Operation" msgstr "Manuelle Durchführung" #. module: stock -#: view:stock.location:0 view:stock.move:0 +#: view:stock.location:0 +#: view:stock.move:0 msgid "Supplier" msgstr "Lieferant" #. module: stock -#: code:addons/stock/stock.py:2727 +#: code:addons/stock/stock.py:2739 #, python-format msgid "" "In order to cancel this inventory, you must first unpost related journal " @@ -1196,7 +1254,7 @@ msgid "Date Done" msgstr "Erledigt am" #. module: stock -#: code:addons/stock/wizard/stock_partial_picking.py:148 +#: code:addons/stock/wizard/stock_partial_picking.py:149 #, python-format msgid "" "The uom rounding does not allow you to ship \"%s %s\", only roundings of " @@ -1224,7 +1282,8 @@ msgstr "März" #. module: stock #: model:ir.actions.act_window,name:stock.action_view_stock_inventory_line_split #: model:ir.model,name:stock.model_stock_inventory_line_split -#: view:stock.inventory:0 view:stock.inventory.line:0 +#: view:stock.inventory:0 +#: view:stock.inventory.line:0 msgid "Split inventory lines" msgstr "Aufteilen Inventurposition" @@ -1260,7 +1319,8 @@ msgstr "Fertigungslosnummer" #. module: stock #: field:stock.inventory.line,product_uom:0 -#: field:stock.move.consume,product_uom:0 field:stock.move.scrap,product_uom:0 +#: field:stock.move.consume,product_uom:0 +#: field:stock.move.scrap,product_uom:0 msgid "Product UOM" msgstr "Produkt ME" @@ -1270,12 +1330,14 @@ msgid "Partner Locations" msgstr "Lagerort beim Partner" #. module: stock -#: view:report.stock.inventory:0 view:report.stock.move:0 +#: view:report.stock.inventory:0 +#: view:report.stock.move:0 msgid "Current year" msgstr "Aktuelles Jahr" #. module: stock -#: view:report.stock.inventory:0 view:report.stock.move:0 +#: view:report.stock.inventory:0 +#: view:report.stock.move:0 msgid "Total quantity" msgstr "Gesamtmenge" @@ -1329,6 +1391,7 @@ msgstr "Lieferauftrag:" #. module: stock #: selection:stock.move,state:0 +#: report:stock.picking.list:0 msgid "Waiting Another Move" msgstr "Erwarte eine andere Buchung" @@ -1357,7 +1420,7 @@ msgstr "" "(wenn Durschnittspreisbewertung gewählt ist)" #. module: stock -#: code:addons/stock/stock.py:1350 +#: code:addons/stock/stock.py:1359 #, python-format msgid "is in draft state." msgstr "ist im Entwurf..." @@ -1383,16 +1446,24 @@ msgid "Shop 1" msgstr "Shop 1" #. module: stock -#: view:stock.change.product.qty:0 view:stock.change.standard.price:0 -#: view:stock.fill.inventory:0 view:stock.inventory.merge:0 -#: view:stock.invoice.onshipping:0 view:stock.location.product:0 -#: view:stock.move:0 view:stock.partial.move:0 view:stock.partial.picking:0 -#: view:stock.picking:0 view:stock.return.picking:0 view:stock.split.into:0 +#: view:stock.change.product.qty:0 +#: view:stock.change.standard.price:0 +#: view:stock.fill.inventory:0 +#: view:stock.inventory.merge:0 +#: view:stock.invoice.onshipping:0 +#: view:stock.location.product:0 +#: view:stock.move:0 +#: view:stock.partial.move:0 +#: view:stock.partial.picking:0 +#: view:stock.picking:0 +#: view:stock.return.picking:0 +#: view:stock.split.into:0 msgid "_Cancel" msgstr "Abbruch" #. module: stock -#: view:stock.move:0 view:stock.picking:0 +#: view:stock.move:0 +#: view:stock.picking:0 msgid "Ready" msgstr "Verfügbar" @@ -1432,7 +1503,8 @@ msgstr "" "erstellt werden" #. module: stock -#: view:stock.picking:0 field:stock.picking,invoice_state:0 +#: view:stock.picking:0 +#: field:stock.picking,invoice_state:0 msgid "Invoice Control" msgstr "Rechnungskontrolle" @@ -1448,12 +1520,14 @@ msgstr "Interne Lieferauftragsliste" #. module: stock #: selection:report.stock.inventory,state:0 -#: selection:report.stock.move,state:0 view:stock.picking:0 +#: selection:report.stock.move,state:0 +#: view:stock.picking:0 msgid "Waiting" msgstr "Warteliste" #. module: stock -#: view:stock.move:0 view:stock.picking:0 +#: view:stock.move:0 +#: view:stock.picking:0 msgid "Split" msgstr "Aufteilen" @@ -1508,8 +1582,10 @@ msgid "Picking List:" msgstr "Packauftrag:" #. module: stock -#: field:stock.inventory,date:0 field:stock.move,create_date:0 -#: field:stock.production.lot,date:0 field:stock.tracking,date:0 +#: field:stock.inventory,date:0 +#: field:stock.move,create_date:0 +#: field:stock.production.lot,date:0 +#: field:stock.tracking,date:0 msgid "Creation Date" msgstr "Erzeugt am" @@ -1524,7 +1600,8 @@ msgid "Address of customer or supplier." msgstr "Kunden- oder Lieferantenadresse" #. module: stock -#: view:report.stock.move:0 field:report.stock.move,picking_id:0 +#: view:report.stock.move:0 +#: field:report.stock.move,picking_id:0 msgid "Packing" msgstr "Lieferauftrag" @@ -1536,7 +1613,7 @@ msgid "Customer Location" msgstr "Kundenlagerort" #. module: stock -#: code:addons/stock/stock.py:2312 +#: code:addons/stock/stock.py:2321 #, python-format msgid "You can only delete draft moves." msgstr "Sie können lediglich Warenbewegungen im Entwurf (Status) löschen." @@ -1563,7 +1640,8 @@ msgid "Analysis including future moves (similar to virtual stock)" msgstr "Analyse mit zukünftigen Buchungen" #. module: stock -#: model:ir.actions.act_window,name:stock.action3 view:stock.tracking:0 +#: model:ir.actions.act_window,name:stock.action3 +#: view:stock.tracking:0 msgid "Downstream traceability" msgstr "Auswertung Rückverfolgung" @@ -1587,7 +1665,9 @@ msgstr "" "löschen." #. module: stock -#: view:stock.move:0 view:stock.picking:0 field:stock.picking,date:0 +#: view:stock.move:0 +#: view:stock.picking:0 +#: field:stock.picking,date:0 msgid "Order Date" msgstr "Auftragsdatum" @@ -1598,7 +1678,8 @@ msgid "INV: %s" msgstr "INV: %s" #. module: stock -#: view:stock.location:0 field:stock.location,location_id:0 +#: view:stock.location:0 +#: field:stock.location,location_id:0 msgid "Parent Location" msgstr "Hauptlagerort" @@ -1630,7 +1711,7 @@ msgid "Let this field empty if this location is shared between all companies" msgstr "Leer lassen, wenn dieses Feld für alle Unternehmen Güligkeit hat." #. module: stock -#: code:addons/stock/stock.py:2337 +#: code:addons/stock/stock.py:2346 #, python-format msgid "Please provide a positive quantity to scrap!" msgstr "Geben Sie bitte eine positive Menge als Ausschuss ein" @@ -1683,7 +1764,7 @@ msgid "Supplier Location" msgstr "Lieferantenlagerort" #. module: stock -#: code:addons/stock/stock.py:2358 +#: code:addons/stock/stock.py:2367 #, python-format msgid "were scrapped" msgstr "wurde als Ausschuss gemeldet" @@ -1737,8 +1818,11 @@ msgstr "Lagerbewertungskonto (Ausgehend)" #. module: stock #: model:ir.actions.act_window,name:stock.act_product_stock_move_open #: model:ir.actions.act_window,name:stock.action_move_form2 -#: model:ir.ui.menu,name:stock.menu_action_move_form2 view:stock.inventory:0 -#: view:stock.move:0 view:stock.picking:0 view:stock.production.lot:0 +#: model:ir.ui.menu,name:stock.menu_action_move_form2 +#: view:stock.inventory:0 +#: view:stock.move:0 +#: view:stock.picking:0 +#: view:stock.production.lot:0 #: view:stock.tracking:0 msgid "Stock Moves" msgstr "Lieferaufträge" @@ -1791,7 +1875,8 @@ msgid "Back Orders" msgstr "Auftragsrückstand" #. module: stock -#: view:product.product:0 view:product.template:0 +#: view:product.product:0 +#: view:product.template:0 msgid "Counter-Part Locations Properties" msgstr "Gegenposition Lagerorte Eigenschaften" @@ -1801,14 +1886,15 @@ msgid "Localization" msgstr "Standort Lager" #. module: stock -#: code:addons/stock/product.py:429 +#: code:addons/stock/product.py:433 #, python-format msgid "Delivered Qty" msgstr "Liefermenge" #. module: stock #: model:ir.actions.act_window,name:stock.track_line -#: view:stock.inventory.line.split:0 view:stock.move.split:0 +#: view:stock.inventory.line.split:0 +#: view:stock.move.split:0 msgid "Split in lots" msgstr "Teile in Lose" @@ -1836,16 +1922,22 @@ msgid "Day Planned" msgstr "Geplantes Datum" #. module: stock -#: view:report.stock.inventory:0 field:report.stock.inventory,date:0 -#: field:report.stock.move,date:0 view:stock.inventory:0 -#: report:stock.inventory.move:0 view:stock.move:0 field:stock.move,date:0 -#: field:stock.partial.move,date:0 field:stock.partial.picking,date:0 +#: view:report.stock.inventory:0 +#: field:report.stock.inventory,date:0 +#: field:report.stock.move,date:0 +#: view:stock.inventory:0 +#: report:stock.inventory.move:0 +#: view:stock.move:0 +#: field:stock.move,date:0 +#: field:stock.partial.move,date:0 +#: field:stock.partial.picking,date:0 #: view:stock.picking:0 msgid "Date" msgstr "Datum" #. module: stock -#: view:report.stock.inventory:0 view:report.stock.move:0 +#: view:report.stock.inventory:0 +#: view:report.stock.move:0 msgid "Extended Filters..." msgstr "Erweiterter Filter..." @@ -1868,7 +1960,7 @@ msgstr "Pinnwand Lagerwirtschaft" #. module: stock #: field:stock.incoterms,code:0 msgid "Code" -msgstr "Kurzbezeichnung" +msgstr "Kurzbez." #. module: stock #: view:stock.inventory.line.split:0 @@ -1882,26 +1974,31 @@ msgid "Warehouse Dashboard" msgstr "Pinnwand Lager" #. module: stock -#: code:addons/stock/stock.py:513 +#: code:addons/stock/stock.py:519 #, python-format msgid "You can not remove a lot line !" msgstr "Sie können keine Position aus dem Los entfernen!" #. module: stock -#: model:ir.model,name:stock.model_stock_move_scrap view:stock.move:0 -#: view:stock.move.scrap:0 view:stock.picking:0 +#: model:ir.model,name:stock.model_stock_move_scrap +#: view:stock.move:0 +#: view:stock.move.scrap:0 +#: view:stock.picking:0 msgid "Scrap Products" msgstr "Ausschuss buchen" #. module: stock -#: code:addons/stock/stock.py:1157 +#: code:addons/stock/stock.py:1166 #, python-format msgid "You cannot remove the picking which is in %s state !" msgstr "Ein Lieferschein mit Status %s kann nicht entfernt werden." #. module: stock -#: view:stock.inventory.line.split:0 view:stock.move.consume:0 -#: view:stock.move.scrap:0 view:stock.move.split:0 view:stock.picking:0 +#: view:stock.inventory.line.split:0 +#: view:stock.move.consume:0 +#: view:stock.move.scrap:0 +#: view:stock.move.split:0 +#: view:stock.picking:0 msgid "Cancel" msgstr "Abbrechen" @@ -1912,22 +2009,29 @@ msgid "Return Picking" msgstr "Rücklieferschein" #. module: stock -#: view:stock.inventory:0 view:stock.move:0 view:stock.picking:0 +#: view:stock.inventory:0 +#: view:stock.move:0 +#: view:stock.picking:0 msgid "Split in production lots" msgstr "Aufteilen Fertigungsauftrag" #. module: stock #: model:ir.model,name:stock.model_stock_location -#: field:product.product,location_id:0 view:report.stock.inventory:0 +#: field:product.product,location_id:0 +#: view:report.stock.inventory:0 #: field:report.stock.inventory,location_id:0 #: field:stock.change.product.qty,location_id:0 #: field:stock.fill.inventory,location_id:0 -#: field:stock.inventory.line,location_id:0 report:stock.inventory.move:0 -#: view:stock.location:0 view:stock.move:0 -#: field:stock.move.consume,location_id:0 field:stock.move.scrap,location_id:0 +#: field:stock.inventory.line,location_id:0 +#: report:stock.inventory.move:0 +#: view:stock.location:0 +#: view:stock.move:0 +#: field:stock.move.consume,location_id:0 +#: field:stock.move.scrap,location_id:0 #: field:stock.partial.move.line,location_id:0 #: field:stock.partial.picking.line,location_id:0 -#: field:stock.picking,location_id:0 report:stock.picking.list:0 +#: field:stock.picking,location_id:0 +#: report:stock.picking.list:0 #: field:stock.report.prodlots,location_id:0 #: field:stock.report.tracklots,location_id:0 msgid "Location" @@ -1970,7 +2074,8 @@ msgid "Cost Price" msgstr "Herstellungskosten" #. module: stock -#: view:product.product:0 field:product.product,valuation:0 +#: view:product.product:0 +#: field:product.product,valuation:0 msgid "Inventory Valuation" msgstr "Inventur Bewertung" @@ -1980,7 +2085,8 @@ msgid "Orders planned for today" msgstr "Für heute geplante Aufträge" #. module: stock -#: view:stock.move:0 view:stock.picking:0 +#: view:stock.move:0 +#: view:stock.picking:0 msgid "Process Later" msgstr "Ware ist Verfügbar" @@ -2012,7 +2118,7 @@ msgstr "" "die Produktivität in Ihrem Lager analysieren wollen." #. module: stock -#: code:addons/stock/stock.py:2116 +#: code:addons/stock/stock.py:2125 #, python-format msgid "" "Can not create Journal Entry, Output Account defined on this product and " @@ -2047,7 +2153,7 @@ msgid "Stock report by tracking lots" msgstr "Bestand nach Paketnummern" #. module: stock -#: code:addons/stock/stock.py:2122 +#: code:addons/stock/stock.py:2131 #, python-format msgid "" "There is no stock input account defined for this product or its category: " @@ -2057,7 +2163,7 @@ msgstr "" "\"%s\" (id: %d)" #. module: stock -#: code:addons/stock/product.py:419 +#: code:addons/stock/product.py:423 #, python-format msgid "Received Qty" msgstr "Angenommene Menge" @@ -2082,7 +2188,8 @@ msgid "Import Inventory" msgstr "Importiere Inventur" #. module: stock -#: field:stock.incoterms,name:0 field:stock.move,name:0 +#: field:stock.incoterms,name:0 +#: field:stock.move,name:0 #: field:stock.warehouse,name:0 msgid "Name" msgstr "Bezeichnung" @@ -2133,13 +2240,16 @@ msgid "Customer Locations" msgstr "Kunden Lagerort" #. module: stock -#: view:stock.change.product.qty:0 view:stock.change.standard.price:0 +#: view:stock.change.product.qty:0 +#: view:stock.change.standard.price:0 msgid "_Apply" msgstr "_Anwenden" #. module: stock -#: report:lot.stock.overview:0 report:lot.stock.overview_all:0 -#: report:stock.inventory.move:0 report:stock.picking.list:0 +#: report:lot.stock.overview:0 +#: report:lot.stock.overview_all:0 +#: report:stock.inventory.move:0 +#: report:stock.picking.list:0 msgid "]" msgstr "]" @@ -2149,7 +2259,8 @@ msgid "Inventory Location" msgstr "Lagerort Bestandsaufnahme" #. module: stock -#: view:report.stock.inventory:0 view:report.stock.move:0 +#: view:report.stock.inventory:0 +#: view:report.stock.move:0 msgid "Total value" msgstr "Gesamt Wert" @@ -2223,8 +2334,11 @@ msgstr "" "das aktuelle Durchführungsdatum" #. module: stock -#: view:report.stock.inventory:0 view:report.stock.move:0 -#: view:stock.inventory:0 view:stock.move:0 view:stock.picking:0 +#: view:report.stock.inventory:0 +#: view:report.stock.move:0 +#: view:stock.inventory:0 +#: view:stock.move:0 +#: view:stock.picking:0 #: view:stock.production.lot:0 msgid "Group By..." msgstr "Gruppierung..." @@ -2240,7 +2354,7 @@ msgid "Inventory loss" msgstr "Bestandsaufnahme" #. module: stock -#: code:addons/stock/stock.py:1341 +#: code:addons/stock/stock.py:1350 #, python-format msgid "Document" msgstr "Dokument" @@ -2251,7 +2365,8 @@ msgid "Input Picking List" msgstr "Eingangslieferscheine" #. module: stock -#: field:stock.move,product_uom:0 field:stock.partial.move.line,product_uom:0 +#: field:stock.move,product_uom:0 +#: field:stock.partial.move.line,product_uom:0 #: field:stock.partial.picking.line,product_uom:0 msgid "Unit of Measure" msgstr "ME" @@ -2320,23 +2435,27 @@ msgid "Warehouse board" msgstr "Pinnwand Lagerwirtschaft" #. module: stock -#: code:addons/stock/product.py:439 +#: code:addons/stock/product.py:443 #, python-format msgid "Future Qty" msgstr "Zukünftige Menge" #. module: stock -#: field:stock.move,note:0 view:stock.picking:0 field:stock.picking,note:0 +#: field:stock.move,note:0 +#: view:stock.picking:0 +#: field:stock.picking,note:0 msgid "Notes" msgstr "Bemerkungen" #. module: stock -#: report:lot.stock.overview:0 report:lot.stock.overview_all:0 +#: report:lot.stock.overview:0 +#: report:lot.stock.overview_all:0 msgid "Value" msgstr "Wert" #. module: stock -#: field:report.stock.move,type:0 field:stock.location,chained_picking_type:0 +#: field:report.stock.move,type:0 +#: field:stock.location,chained_picking_type:0 #: field:stock.picking,type:0 msgid "Shipping Type" msgstr "Liefertyp" @@ -2350,8 +2469,11 @@ msgstr "Lagerbuchungen bestätigt,verfügbar, wartend" #: model:ir.actions.act_window,name:stock.act_product_location_open #: model:ir.ui.menu,name:stock.menu_product_in_config_stock #: model:ir.ui.menu,name:stock.menu_stock_product -#: model:ir.ui.menu,name:stock.menu_stock_products_menu view:stock.inventory:0 -#: view:stock.partial.move:0 view:stock.partial.picking:0 view:stock.picking:0 +#: model:ir.ui.menu,name:stock.menu_stock_products_menu +#: view:stock.inventory:0 +#: view:stock.partial.move:0 +#: view:stock.partial.picking:0 +#: view:stock.picking:0 msgid "Products" msgstr "Produkte" @@ -2372,7 +2494,8 @@ msgstr "Auslieferungsmethode" #. module: stock #: help:report.stock.move,location_dest_id:0 -#: help:stock.move,location_dest_id:0 help:stock.picking,location_dest_id:0 +#: help:stock.move,location_dest_id:0 +#: help:stock.picking,location_dest_id:0 msgid "Location where the system will stock the finished products." msgstr "Lagerort, wo das System die Fertigprodukte lagert." @@ -2415,7 +2538,7 @@ msgid "Delay(Days)" msgstr "Verzögerung(Tage)" #. module: stock -#: code:addons/stock/stock.py:1697 +#: code:addons/stock/stock.py:1706 #, python-format msgid "Operation forbidden" msgstr "Vorgang verboten" @@ -2426,7 +2549,7 @@ msgid "Expected date for the picking to be processed" msgstr "Geplantes Verarbeitungsdatum für die Lieferung" #. module: stock -#: code:addons/stock/product.py:435 +#: code:addons/stock/product.py:439 #, python-format msgid "P&L Qty" msgstr "Anzahl" @@ -2437,7 +2560,8 @@ msgid "Internal Pickings to invoice" msgstr "zu fakturierende interne Lieferungen" #. module: stock -#: view:stock.production.lot:0 field:stock.production.lot,revisions:0 +#: view:stock.production.lot:0 +#: field:stock.production.lot,revisions:0 msgid "Revisions" msgstr "Revisionen" @@ -2476,7 +2600,8 @@ msgstr "" "Kriterien, um Ihre Analyse exakt auf Ihren Bedarf auszurichten." #. module: stock -#: help:report.stock.move,location_id:0 help:stock.move,location_id:0 +#: help:report.stock.move,location_id:0 +#: help:stock.move,location_id:0 msgid "" "Sets a location if you produce at a fixed location. This can be a partner " "location if you subcontract the manufacturing operations." @@ -2515,7 +2640,8 @@ msgid "Create" msgstr "Erstellen" #. module: stock -#: view:stock.move:0 view:stock.picking:0 +#: view:stock.move:0 +#: view:stock.picking:0 msgid "Dates" msgstr "Datumsangaben" @@ -2532,7 +2658,8 @@ msgstr "Quelle" #. module: stock #: model:ir.model,name:stock.model_stock_inventory #: selection:report.stock.inventory,location_type:0 -#: field:stock.inventory.line,inventory_id:0 report:stock.inventory.move:0 +#: field:stock.inventory.line,inventory_id:0 +#: report:stock.inventory.move:0 #: selection:stock.location,usage:0 msgid "Inventory" msgstr "Lagerbestand" @@ -2547,7 +2674,7 @@ msgstr "Lieferschein" msgid "" "The combination of serial number and internal reference must be unique !" msgstr "" -"Die Kombination von Serinenummer und interner Referenz muss eindeutig sein." +"Die Kombination von Seriennummer und interner Referenz muss eindeutig sein." #. module: stock #: view:stock.inventory:0 @@ -2556,7 +2683,8 @@ msgstr "Bestandsaufnahme Abbrechen" #. module: stock #: code:addons/stock/report/report_stock.py:78 -#: code:addons/stock/report/report_stock.py:135 code:addons/stock/stock.py:760 +#: code:addons/stock/report/report_stock.py:135 +#: code:addons/stock/stock.py:766 #, python-format msgid "Error !" msgstr "Fehler !" @@ -2573,7 +2701,7 @@ msgid "Fixed Location" msgstr "Fester Lagerort" #. module: stock -#: code:addons/stock/stock.py:2486 +#: code:addons/stock/stock.py:2492 #, python-format msgid "Product '%s' is consumed with '%s' quantity." msgstr "Produkt '%s' Verbracuhsmenge '%s' ." @@ -2625,14 +2753,19 @@ msgid "opening" msgstr "Öffnen" #. module: stock +#: code:addons/stock/report/stock_graph.py:36 +#: code:addons/stock/report/stock_graph.py:104 #: model:ir.actions.report.xml,name:stock.report_product_history +#, python-format msgid "Stock Level Forecast" msgstr "Bestandsvorschau" #. module: stock #: model:ir.model,name:stock.model_stock_journal -#: field:report.stock.move,stock_journal:0 view:stock.journal:0 -#: field:stock.journal,name:0 field:stock.picking,stock_journal_id:0 +#: field:report.stock.move,stock_journal:0 +#: view:stock.journal:0 +#: field:stock.journal,name:0 +#: field:stock.picking,stock_journal_id:0 msgid "Stock Journal" msgstr "Lager Journal" @@ -2660,13 +2793,15 @@ msgid "Force Availability" msgstr "Erzwinge Verfügbarkeit" #. module: stock -#: model:ir.actions.act_window,name:stock.move_scrap view:stock.move.scrap:0 +#: model:ir.actions.act_window,name:stock.move_scrap +#: view:stock.move.scrap:0 msgid "Scrap Move" msgstr "Buchung Ausschuss" #. module: stock #: model:ir.actions.act_window,name:stock.action_reception_picking_move -#: model:ir.ui.menu,name:stock.menu_action_pdct_in view:stock.move:0 +#: model:ir.ui.menu,name:stock.menu_action_pdct_in +#: view:stock.move:0 msgid "Receive Products" msgstr "Produktzugänge" @@ -2682,7 +2817,8 @@ msgid "View Stock of Products" msgstr "Zeige Lagerorte der Produkte" #. module: stock -#: view:report.stock.inventory:0 view:report.stock.move:0 +#: view:report.stock.inventory:0 +#: view:report.stock.move:0 #: field:report.stock.move,month:0 msgid "Month" msgstr "Monat" @@ -2734,18 +2870,24 @@ msgid "Todo" msgstr "Zu erledigen" #. module: stock -#: view:report.stock.inventory:0 field:report.stock.inventory,company_id:0 -#: view:report.stock.move:0 field:report.stock.move,company_id:0 -#: field:stock.inventory,company_id:0 field:stock.inventory.line,company_id:0 -#: field:stock.location,company_id:0 field:stock.move,company_id:0 -#: field:stock.picking,company_id:0 field:stock.production.lot,company_id:0 +#: view:report.stock.inventory:0 +#: field:report.stock.inventory,company_id:0 +#: view:report.stock.move:0 +#: field:report.stock.move,company_id:0 +#: field:stock.inventory,company_id:0 +#: field:stock.inventory.line,company_id:0 +#: field:stock.location,company_id:0 +#: field:stock.move,company_id:0 +#: field:stock.picking,company_id:0 +#: field:stock.production.lot,company_id:0 #: field:stock.production.lot.revision,company_id:0 #: field:stock.warehouse,company_id:0 msgid "Company" msgstr "Unternehmen" #. module: stock -#: view:stock.move:0 view:stock.picking:0 +#: view:stock.move:0 +#: view:stock.picking:0 msgid "Unit Of Measure" msgstr "ME" @@ -2759,7 +2901,7 @@ msgstr "" "definiert: \"%s\" (id: %d)" #. module: stock -#: code:addons/stock/stock.py:2445 +#: code:addons/stock/stock.py:2454 #, python-format msgid "Can not consume a move with negative or zero quantity !" msgstr "" @@ -2790,8 +2932,10 @@ msgid "Delivery Counter" msgstr "Versand Schalter" #. module: stock -#: view:report.stock.inventory:0 field:report.stock.inventory,prodlot_id:0 -#: view:stock.move:0 report:stock.picking.list:0 +#: view:report.stock.inventory:0 +#: field:report.stock.inventory,prodlot_id:0 +#: view:stock.move:0 +#: report:stock.picking.list:0 msgid "Lot" msgstr "Fertigungslos" @@ -2801,7 +2945,7 @@ msgid "Production Lot Number" msgstr "Produktionslosnummer" #. module: stock -#: code:addons/stock/stock.py:2697 +#: code:addons/stock/stock.py:2709 #, python-format msgid "Inventory '%s' is done." msgstr "Inventur '%s' is erledigt." @@ -2812,7 +2956,7 @@ msgid "Quantity (UOS)" msgstr "Menge (VE)" #. module: stock -#: code:addons/stock/stock.py:1743 +#: code:addons/stock/stock.py:1752 #, python-format msgid "" "You are moving %.2f %s products but only %.2f %s available in this lot." @@ -2836,7 +2980,8 @@ msgid "Back Order" msgstr "Auftragsrückstand" #. module: stock -#: field:stock.incoterms,active:0 field:stock.location,active:0 +#: field:stock.incoterms,active:0 +#: field:stock.location,active:0 #: field:stock.tracking,active:0 msgid "Active" msgstr "Aktiv" @@ -2847,7 +2992,7 @@ msgid "Properties" msgstr "Eigenschaften" #. module: stock -#: code:addons/stock/stock.py:1082 +#: code:addons/stock/stock.py:1088 #, python-format msgid "Error, no partner !" msgstr "Fehler, kein Partner!" @@ -2873,7 +3018,8 @@ msgid "stock.partial.picking.line" msgstr "stock.partial.picking.line" #. module: stock -#: report:lot.stock.overview:0 report:lot.stock.overview_all:0 +#: report:lot.stock.overview:0 +#: report:lot.stock.overview_all:0 #: report:stock.inventory.move:0 msgid "Total:" msgstr "Gesamt:" @@ -2903,7 +3049,7 @@ msgid "Inventory Reference" msgstr "Inventurauftrag" #. module: stock -#: code:addons/stock/stock.py:1334 +#: code:addons/stock/stock.py:1343 #, python-format msgid "Internal picking" msgstr "Interne Buchung" @@ -2919,7 +3065,8 @@ msgid "To" msgstr "An" #. module: stock -#: view:stock.move:0 view:stock.picking:0 +#: view:stock.move:0 +#: view:stock.picking:0 msgid "Process" msgstr "Bestätigen" @@ -2931,7 +3078,8 @@ msgstr "Revisions Name" #. module: stock #: model:ir.model,name:stock.model_stock_warehouse #: model:ir.ui.menu,name:stock.menu_stock_root -#: field:product.product,warehouse_id:0 view:stock.warehouse:0 +#: field:product.product,warehouse_id:0 +#: view:stock.warehouse:0 msgid "Warehouse" msgstr "Lager" @@ -2951,10 +3099,15 @@ msgid "Customers Packings" msgstr "Kunden Lieferaufträge" #. module: stock -#: selection:report.stock.inventory,state:0 view:report.stock.move:0 -#: selection:report.stock.move,state:0 selection:stock.inventory,state:0 -#: view:stock.move:0 selection:stock.move,state:0 view:stock.picking:0 +#: selection:report.stock.inventory,state:0 +#: view:report.stock.move:0 +#: selection:report.stock.move,state:0 +#: selection:stock.inventory,state:0 +#: view:stock.move:0 +#: selection:stock.move,state:0 +#: view:stock.picking:0 #: selection:stock.picking,state:0 +#: report:stock.picking.list:0 msgid "Done" msgstr "Erledigt" @@ -2981,7 +3134,7 @@ msgid "Date done" msgstr "Datum erledigt" #. module: stock -#: code:addons/stock/stock.py:1083 +#: code:addons/stock/stock.py:1089 #, python-format msgid "" "Please put a partner on the picking list if you want to generate invoice." @@ -3025,17 +3178,23 @@ msgstr "Lager" #. module: stock #: model:ir.model,name:stock.model_product_product -#: view:report.stock.inventory:0 field:report.stock.inventory,product_id:0 -#: field:report.stock.lines.date,product_id:0 view:report.stock.move:0 +#: view:report.stock.inventory:0 +#: field:report.stock.inventory,product_id:0 +#: field:report.stock.lines.date,product_id:0 +#: view:report.stock.move:0 #: field:report.stock.move,product_id:0 #: field:stock.change.product.qty,product_id:0 #: field:stock.inventory.line,product_id:0 -#: field:stock.inventory.line.split,product_id:0 report:stock.inventory.move:0 -#: view:stock.move:0 field:stock.move,product_id:0 -#: field:stock.move.consume,product_id:0 field:stock.move.scrap,product_id:0 +#: field:stock.inventory.line.split,product_id:0 +#: report:stock.inventory.move:0 +#: view:stock.move:0 +#: field:stock.move,product_id:0 +#: field:stock.move.consume,product_id:0 +#: field:stock.move.scrap,product_id:0 #: field:stock.move.split,product_id:0 #: field:stock.partial.move.line,product_id:0 -#: field:stock.partial.picking.line,product_id:0 view:stock.production.lot:0 +#: field:stock.partial.picking.line,product_id:0 +#: view:stock.production.lot:0 #: field:stock.production.lot,product_id:0 #: field:stock.report.prodlots,product_id:0 #: field:stock.report.tracklots,product_id:0 @@ -3059,8 +3218,9 @@ msgid "Assigned Internal Moves" msgstr "Zugeordnete Interne Buchungen" #. module: stock -#: code:addons/stock/stock.py:2379 code:addons/stock/stock.py:2440 -#: code:addons/stock/wizard/stock_partial_picking.py:141 +#: code:addons/stock/stock.py:2388 +#: code:addons/stock/stock.py:2449 +#: code:addons/stock/wizard/stock_partial_picking.py:142 #, python-format msgid "Please provide Proper Quantity !" msgstr "Bitte eine richtige Menge angeben!" @@ -3082,7 +3242,7 @@ msgid "Consume Products" msgstr "Verbrauche Produkte" #. module: stock -#: code:addons/stock/stock.py:1742 +#: code:addons/stock/stock.py:1751 #, python-format msgid "Insufficient Stock in Lot !" msgstr "Fehlerhafter Bestand bei Fertigungslos !" @@ -3098,7 +3258,8 @@ msgid "Address" msgstr "Adresse" #. module: stock -#: report:lot.stock.overview:0 report:lot.stock.overview_all:0 +#: report:lot.stock.overview:0 +#: report:lot.stock.overview_all:0 msgid "Variants" msgstr "Varianten" @@ -3113,7 +3274,8 @@ msgid "Suppliers" msgstr "Lieferanten" #. module: stock -#: field:report.stock.inventory,value:0 field:report.stock.move,value:0 +#: field:report.stock.inventory,value:0 +#: field:report.stock.move,value:0 msgid "Total Value" msgstr "Gesamt Wert" @@ -3195,9 +3357,11 @@ msgid "Pack Reference" msgstr "Paket Referenz" #. module: stock -#: view:report.stock.move:0 field:report.stock.move,location_id:0 +#: view:report.stock.move:0 +#: field:report.stock.move,location_id:0 #: field:stock.inventory.line.split,location_id:0 -#: field:stock.move,location_id:0 field:stock.move.split,location_id:0 +#: field:stock.move,location_id:0 +#: field:stock.move.split,location_id:0 msgid "Source Location" msgstr "Quelle" @@ -3237,7 +3401,8 @@ msgid "Virtual Stock Value" msgstr "Wert errechneter Bestand" #. module: stock -#: view:product.product:0 view:stock.inventory.line.split:0 +#: view:product.product:0 +#: view:stock.inventory.line.split:0 #: view:stock.move.split:0 msgid "Lots" msgstr "Fertigungslose" @@ -3258,7 +3423,7 @@ msgid "All at once" msgstr "Nur Gesamtmengen liefern" #. module: stock -#: code:addons/stock/stock.py:1698 +#: code:addons/stock/stock.py:1707 #, python-format msgid "" "Quantities, UoMs, Products and Locations cannot be modified on stock moves " @@ -3268,7 +3433,7 @@ msgstr "" "modifiziert werden, die bereits durchgeführt wurden." #. module: stock -#: code:addons/stock/product.py:445 +#: code:addons/stock/product.py:449 #, python-format msgid "Future Productions" msgstr "Zukünftige Produktionen" @@ -3305,7 +3470,8 @@ msgid "Moves for this production lot" msgstr "Buchungen für diese Produktionslos" #. module: stock -#: view:stock.move:0 view:stock.picking:0 +#: view:stock.move:0 +#: view:stock.picking:0 msgid "Put in current pack" msgstr "Lade in dieses Paket" @@ -3353,7 +3519,8 @@ msgid "Icon" msgstr "Icon" #. module: stock -#: code:addons/stock/stock.py:2311 code:addons/stock/stock.py:2726 +#: code:addons/stock/stock.py:2320 +#: code:addons/stock/stock.py:2738 #, python-format msgid "UserError" msgstr "BenutzerFehler" @@ -3367,8 +3534,11 @@ msgid "Tracking" msgstr "Seriennummer" #. module: stock -#: view:stock.inventory.line.split:0 view:stock.move.consume:0 -#: view:stock.move.scrap:0 view:stock.move.split:0 view:stock.split.into:0 +#: view:stock.inventory.line.split:0 +#: view:stock.move.consume:0 +#: view:stock.move.scrap:0 +#: view:stock.move.split:0 +#: view:stock.split.into:0 msgid "Ok" msgstr "OK" @@ -3392,13 +3562,19 @@ msgid "Non European Customers" msgstr "Kunden ausserhalb Europas" #. module: stock -#: code:addons/stock/product.py:75 code:addons/stock/product.py:89 -#: code:addons/stock/product.py:92 code:addons/stock/product.py:99 -#: code:addons/stock/product.py:120 code:addons/stock/product.py:146 -#: code:addons/stock/stock.py:2116 code:addons/stock/stock.py:2119 -#: code:addons/stock/stock.py:2122 code:addons/stock/stock.py:2125 -#: code:addons/stock/stock.py:2128 code:addons/stock/stock.py:2131 -#: code:addons/stock/stock.py:2445 +#: code:addons/stock/product.py:75 +#: code:addons/stock/product.py:89 +#: code:addons/stock/product.py:92 +#: code:addons/stock/product.py:99 +#: code:addons/stock/product.py:120 +#: code:addons/stock/product.py:146 +#: code:addons/stock/stock.py:2125 +#: code:addons/stock/stock.py:2128 +#: code:addons/stock/stock.py:2131 +#: code:addons/stock/stock.py:2134 +#: code:addons/stock/stock.py:2137 +#: code:addons/stock/stock.py:2140 +#: code:addons/stock/stock.py:2454 #: code:addons/stock/wizard/stock_fill_inventory.py:47 #: code:addons/stock/wizard/stock_splitinto.py:49 #: code:addons/stock/wizard/stock_splitinto.py:53 @@ -3413,8 +3589,10 @@ msgstr "Wollen Sie diese Bestandsaufnahmen zusammenfassen?" #. module: stock #: selection:report.stock.inventory,state:0 -#: selection:report.stock.move,state:0 selection:stock.inventory,state:0 -#: selection:stock.move,state:0 selection:stock.picking,state:0 +#: selection:report.stock.move,state:0 +#: selection:stock.inventory,state:0 +#: selection:stock.move,state:0 +#: selection:stock.picking,state:0 msgid "Cancelled" msgstr "Abgebrochen" @@ -3424,7 +3602,8 @@ msgid "Confirmed Delivery Orders" msgstr "Bestätigte Auslieferungsaufträge" #. module: stock -#: view:stock.move:0 field:stock.partial.move,picking_id:0 +#: view:stock.move:0 +#: field:stock.partial.move,picking_id:0 #: field:stock.partial.picking,picking_id:0 msgid "Picking" msgstr "Lieferschein" @@ -3477,14 +3656,14 @@ msgstr "" #. module: stock #: code:addons/stock/wizard/stock_inventory_merge.py:43 #: code:addons/stock/wizard/stock_inventory_merge.py:63 -#: code:addons/stock/wizard/stock_partial_picking.py:148 -#: code:addons/stock/wizard/stock_partial_picking.py:159 +#: code:addons/stock/wizard/stock_partial_picking.py:149 +#: code:addons/stock/wizard/stock_partial_picking.py:160 #, python-format msgid "Warning" msgstr "Warnung" #. module: stock -#: code:addons/stock/stock.py:1348 +#: code:addons/stock/stock.py:1357 #, python-format msgid "is done." msgstr "ist erledigt" @@ -3498,7 +3677,8 @@ msgstr "Korrekturdatum" #: view:board.board:0 #: model:ir.actions.act_window,name:stock.action_outgoing_product_board #: model:ir.actions.act_window,name:stock.action_picking_tree -#: model:ir.ui.menu,name:stock.menu_action_picking_tree view:stock.picking:0 +#: model:ir.ui.menu,name:stock.menu_action_picking_tree +#: view:stock.picking:0 msgid "Delivery Orders" msgstr "Warenauslieferung" @@ -3518,7 +3698,8 @@ msgstr "" #. module: stock #: selection:report.stock.inventory,state:0 -#: selection:report.stock.move,state:0 selection:stock.inventory,state:0 +#: selection:report.stock.move,state:0 +#: selection:stock.inventory,state:0 #: view:stock.picking:0 msgid "Confirmed" msgstr "Bestätigt" @@ -3574,19 +3755,23 @@ msgid "Total outgoing quantity" msgstr "Gesamte Warenausgangsmenge" #. module: stock -#: selection:stock.move,state:0 selection:stock.picking,state:0 +#: selection:stock.move,state:0 +#: selection:stock.picking,state:0 +#: report:stock.picking.list:0 msgid "New" msgstr "Neu" #. module: stock -#: help:stock.partial.move.line,cost:0 help:stock.partial.picking.line,cost:0 +#: help:stock.partial.move.line,cost:0 +#: help:stock.partial.picking.line,cost:0 msgid "Unit Cost for this product line" msgstr "Stückkosten für diese Produktlinie" #. module: stock #: model:ir.model,name:stock.model_product_category #: view:report.stock.inventory:0 -#: field:report.stock.inventory,product_categ_id:0 view:report.stock.move:0 +#: field:report.stock.inventory,product_categ_id:0 +#: view:report.stock.move:0 #: field:report.stock.move,categ_id:0 msgid "Product Category" msgstr "Produktkategorie" @@ -3597,7 +3782,7 @@ msgid "Reporting" msgstr "Berichtswesen" #. module: stock -#: code:addons/stock/stock.py:1343 +#: code:addons/stock/stock.py:1352 #, python-format msgid " for the " msgstr " für diese " @@ -3667,7 +3852,7 @@ msgid "Packing list" msgstr "Packliste" #. module: stock -#: code:addons/stock/stock.py:738 +#: code:addons/stock/stock.py:744 #, python-format msgid "Not enough stock, unable to reserve the products." msgstr "" @@ -3680,12 +3865,14 @@ msgid "Customers" msgstr "Kundenlagerort" #. module: stock -#: selection:stock.move,state:0 selection:stock.picking,state:0 +#: selection:stock.move,state:0 +#: selection:stock.picking,state:0 +#: report:stock.picking.list:0 msgid "Waiting Availability" msgstr "Warten auf Verfügbarkeit" #. module: stock -#: code:addons/stock/stock.py:1347 +#: code:addons/stock/stock.py:1356 #, python-format msgid "is cancelled." msgstr "ist storniert" @@ -3701,7 +3888,7 @@ msgid "Waiting " msgstr "Wartend " #. module: stock -#: code:addons/stock/product.py:427 +#: code:addons/stock/product.py:431 #, python-format msgid "Future Deliveries" msgstr "Zukünftige Lieferungen" @@ -3712,12 +3899,14 @@ msgid "Additional info" msgstr "Zusatzinfo" #. module: stock -#: view:stock.move:0 field:stock.move,tracking_id:0 +#: view:stock.move:0 +#: field:stock.move,tracking_id:0 msgid "Pack" msgstr "Paket" #. module: stock -#: view:stock.move:0 view:stock.picking:0 +#: view:stock.move:0 +#: view:stock.picking:0 msgid "Date Expected" msgstr "Erwartetes Datum" @@ -3815,8 +4004,10 @@ msgid "Chaining Type" msgstr "Lieferkette Typ" #. module: stock -#: view:report.stock.inventory:0 view:report.stock.move:0 -#: selection:report.stock.move,type:0 view:stock.location:0 +#: view:report.stock.inventory:0 +#: view:report.stock.move:0 +#: selection:report.stock.move,type:0 +#: view:stock.location:0 #: selection:stock.location,chained_picking_type:0 #: selection:stock.picking,type:0 msgid "Internal" @@ -3824,7 +4015,8 @@ msgstr "Intern" #. module: stock #: selection:report.stock.inventory,state:0 -#: selection:report.stock.move,state:0 selection:stock.inventory,state:0 +#: selection:report.stock.move,state:0 +#: selection:stock.inventory,state:0 msgid "Draft" msgstr "Entwurf" @@ -3856,7 +4048,7 @@ msgid "Create Invoice" msgstr "Erzeuge Rechnung" #. module: stock -#: code:addons/stock/wizard/stock_return_picking.py:189 +#: code:addons/stock/wizard/stock_return_picking.py:197 #, python-format msgid "Please specify at least one non-zero quantity!" msgstr "Bitte definieren Sie mindestens eine Anzahl, die nicht '0' ist!" @@ -3871,7 +4063,7 @@ msgstr "" "Lagerorts als Quelle für Bestandsbuchungen durch die Disposition verwendet." #. module: stock -#: code:addons/stock/stock.py:1346 +#: code:addons/stock/stock.py:1355 #, python-format msgid "is ready to process." msgstr "ist bereit für Verarbeitung" @@ -3903,7 +4095,8 @@ msgid "November" msgstr "November" #. module: stock -#: code:addons/stock/product.py:100 code:addons/stock/stock.py:2128 +#: code:addons/stock/product.py:100 +#: code:addons/stock/stock.py:2137 #, python-format msgid "There is no journal defined on the product category: \"%s\" (id: %d)" msgstr "" @@ -3911,7 +4104,7 @@ msgstr "" "%d)" #. module: stock -#: code:addons/stock/product.py:441 +#: code:addons/stock/product.py:445 #, python-format msgid "Unplanned Qty" msgstr "Ungeplante Menge" @@ -3952,14 +4145,15 @@ msgid "Move History (parent moves)" msgstr "Buchungshistorie (übergeordnete Buchungen)" #. module: stock -#: code:addons/stock/product.py:423 +#: code:addons/stock/product.py:427 #, python-format msgid "Future Stock" msgstr "Zukünftiger Lagerbestand" #. module: stock -#: code:addons/stock/stock.py:513 code:addons/stock/stock.py:1149 -#: code:addons/stock/stock.py:1157 +#: code:addons/stock/stock.py:519 +#: code:addons/stock/stock.py:1158 +#: code:addons/stock/stock.py:1166 #: code:addons/stock/wizard/stock_invoice_onshipping.py:112 #, python-format msgid "Error" @@ -3988,18 +4182,23 @@ msgstr "" #: field:stock.inventory.line,prod_lot_id:0 #: field:stock.inventory.line.split.lines,name:0 #: field:stock.inventory.line.split.lines,prodlot_id:0 -#: report:stock.inventory.move:0 field:stock.move,prodlot_id:0 +#: report:stock.inventory.move:0 +#: field:stock.move,prodlot_id:0 #: field:stock.move.split.lines,name:0 #: field:stock.move.split.lines,prodlot_id:0 #: field:stock.partial.move.line,prodlot_id:0 -#: field:stock.partial.picking.line,prodlot_id:0 view:stock.production.lot:0 +#: field:stock.partial.picking.line,prodlot_id:0 +#: view:stock.production.lot:0 #: field:stock.production.lot,name:0 msgid "Production Lot" msgstr "Fertigungslos" #. module: stock -#: model:ir.ui.menu,name:stock.menu_traceability view:stock.move:0 -#: view:stock.picking:0 view:stock.production.lot:0 view:stock.tracking:0 +#: model:ir.ui.menu,name:stock.menu_traceability +#: view:stock.move:0 +#: view:stock.picking:0 +#: view:stock.production.lot:0 +#: view:stock.tracking:0 msgid "Traceability" msgstr "Lieferverfolgung" @@ -4010,7 +4209,8 @@ msgstr "Zu Berechnen" #. module: stock #: model:ir.actions.act_window,name:stock.action_location_form -#: model:ir.ui.menu,name:stock.menu_action_location_form view:stock.picking:0 +#: model:ir.ui.menu,name:stock.menu_action_location_form +#: view:stock.picking:0 msgid "Locations" msgstr "Lagerorte" @@ -4048,13 +4248,15 @@ msgstr "" "festgelegt, wird das bei der Produktkategorie festgelegte Konto verwendet." #. module: stock -#: view:stock.move:0 field:stock.partial.move,move_ids:0 +#: view:stock.move:0 +#: field:stock.partial.move,move_ids:0 #: field:stock.return.picking,product_return_moves:0 msgid "Moves" msgstr "Lieferauftragspositionen" #. module: stock -#: view:report.stock.move:0 field:report.stock.move,location_dest_id:0 +#: view:report.stock.move:0 +#: field:report.stock.move,location_dest_id:0 #: field:stock.partial.move.line,location_dest_id:0 #: field:stock.partial.picking.line,location_dest_id:0 #: field:stock.picking,location_dest_id:0 @@ -4128,7 +4330,8 @@ msgid "Real" msgstr "Bestand" #. module: stock -#: report:stock.picking.list:0 view:stock.production.lot.revision:0 +#: report:stock.picking.list:0 +#: view:stock.production.lot.revision:0 #: field:stock.production.lot.revision,description:0 msgid "Description" msgstr "Beschreibung" @@ -4140,7 +4343,8 @@ msgid "May" msgstr "Mai" #. module: stock -#: model:ir.actions.act_window,name:stock.action5 view:stock.tracking:0 +#: model:ir.actions.act_window,name:stock.action5 +#: view:stock.tracking:0 msgid "Upstream traceability" msgstr "Lieferverfolgung Upstream" @@ -4151,7 +4355,7 @@ msgid "Location Content" msgstr "Lagerinhalt" #. module: stock -#: code:addons/stock/product.py:447 +#: code:addons/stock/product.py:451 #, python-format msgid "Produced Qty" msgstr "Prod. Anzahl" @@ -4174,7 +4378,8 @@ msgid "Stock report by production lots" msgstr "Bestand je Fertigungslos" #. module: stock -#: view:stock.location:0 selection:stock.location,chained_location_type:0 +#: view:stock.location:0 +#: selection:stock.location,chained_location_type:0 #: view:stock.move:0 msgid "Customer" msgstr "Kunde" @@ -4201,7 +4406,8 @@ msgid "Convenient Store" msgstr "Gemischtwarenladen" #. module: stock -#: field:stock.location,scrap_location:0 view:stock.move.scrap:0 +#: field:stock.location,scrap_location:0 +#: view:stock.move.scrap:0 msgid "Scrap Location" msgstr "Lagerort für Ausschuss" @@ -4212,7 +4418,8 @@ msgid "April" msgstr "April" #. module: stock -#: view:report.stock.inventory:0 view:stock.move:0 +#: view:report.stock.inventory:0 +#: view:stock.move:0 msgid "Future" msgstr "Fiktiver Bestand" @@ -4222,13 +4429,13 @@ msgid "Invoiced date" msgstr "Rechnungsdatum" #. module: stock -#: code:addons/stock/stock.py:738 +#: code:addons/stock/stock.py:744 #: code:addons/stock/wizard/stock_fill_inventory.py:116 #: code:addons/stock/wizard/stock_invoice_onshipping.py:96 #: code:addons/stock/wizard/stock_invoice_onshipping.py:98 #: code:addons/stock/wizard/stock_return_picking.py:99 #: code:addons/stock/wizard/stock_return_picking.py:106 -#: code:addons/stock/wizard/stock_return_picking.py:189 +#: code:addons/stock/wizard/stock_return_picking.py:197 #, python-format msgid "Warning !" msgstr "Warnung" @@ -4253,7 +4460,7 @@ msgid "Error ! You cannot create recursive associated members." msgstr "Fehler! Sie können keine rekursive assoziierte Mitglieder anlegen." #. module: stock -#: code:addons/stock/wizard/stock_partial_picking.py:159 +#: code:addons/stock/wizard/stock_partial_picking.py:160 #, python-format msgid "" "The rounding of the initial uom does not allow you to ship \"%s %s\", as it " @@ -4283,8 +4490,10 @@ msgid "Optional: next stock move when chaining them" msgstr "Optional: Weiterer Lieferauftrag bei Lieferkette" #. module: stock -#: view:report.stock.inventory:0 field:report.stock.inventory,year:0 -#: view:report.stock.move:0 field:report.stock.move,year:0 +#: view:report.stock.inventory:0 +#: field:report.stock.inventory,year:0 +#: view:report.stock.move:0 +#: field:report.stock.move,year:0 msgid "Year" msgstr "Jahr" @@ -4294,12 +4503,14 @@ msgid "Physical Locations" msgstr "Physikalische Lagerorte" #. module: stock -#: view:stock.picking:0 selection:stock.picking,state:0 +#: view:stock.picking:0 +#: selection:stock.picking,state:0 msgid "Ready to Process" msgstr "Bereit zur Verarbeitung" #. module: stock -#: help:stock.location,posx:0 help:stock.location,posy:0 +#: help:stock.location,posx:0 +#: help:stock.location,posy:0 #: help:stock.location,posz:0 msgid "Optional localization details, for information purpose only" msgstr "Optionale Lagerort Details, nur als Information" diff --git a/addons/stock/product.py b/addons/stock/product.py index 2016e25a5f6..94252f80439 100644 --- a/addons/stock/product.py +++ b/addons/stock/product.py @@ -513,8 +513,15 @@ class product_template(osv.osv): string='Stock Output Account', view_load=True, help="When doing real-time inventory valuation, counterpart journal items for all outgoing stock moves will be posted in this account, unless " "there is a specific valuation account set on the destination location. When not set on the product, the one from the product category is used."), + 'sale_delay': fields.float('Customer Lead Time', help="This is the average delay in days between the confirmation of the customer order and the delivery of the finished products. It's the time you promise to your customers."), + 'loc_rack': fields.char('Rack', size=16), + 'loc_row': fields.char('Row', size=16), + 'loc_case': fields.char('Case', size=16), } + _defaults = { + 'sale_delay': 7, + } product_template() class product_category(osv.osv): diff --git a/addons/stock/product_view.xml b/addons/stock/product_view.xml index a7dff7fcc0d..3908fecd850 100644 --- a/addons/stock/product_view.xml +++ b/addons/stock/product_view.xml @@ -35,6 +35,16 @@ <field name="model">product.template</field> <field name="inherit_id" ref="product.product_template_form_view"/> <field name="arch" type="xml"> + <group name="delay" position="inside"> + <field name="sale_delay" attrs="{'readonly':[('sale_ok','=',False)]}"/> + </group> + <group name="delay" position="after"> + <group name="store" string="Storage Localisation"> + <field name="loc_rack"/> + <field name="loc_row"/> + <field name="loc_case"/> + </group> + </group> <page position="after" string="Information"> <page string="Properties"> <group string="Counter-Part Locations Properties" groups="stock.group_locations"> @@ -56,7 +66,7 @@ <field name="model">product.product</field> <field name="inherit_id" ref="product.product_normal_form_view"/> <field name="arch" type="xml"> - <group name="procurement_help" position="after"> + <group name="procurement_uom" position="before"> <group name="delay" string="Delays"> <label for="produce_delay" attrs="{'invisible':[('type','=','service')]}"/> <div attrs="{'invisible':[('type','=','service')]}"> @@ -65,13 +75,46 @@ <field name="active"/> </group> </group> - <group name="inventory" position="inside"> - <group name="store" groups="stock.group_locations" string="Counter-Part Locations Properties"> - <field name="property_stock_procurement" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','procurement')]"/> - <field name="property_stock_production" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','production')]"/> - <field name="property_stock_inventory" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','inventory')]"/> + <xpath expr="//group[@string='Sale Conditions']" position="inside"> + <label for="sale_delay"/> + <div> + <field name="sale_delay" class="oe_inline"/> days + </div> + </xpath> + <group name="status" position="before" version="7.0"> + <group string="Stock and Expected Variations" attrs="{'invisible': [('type', '=', 'service')]}" groups="base.group_user"> + <label for="qty_available"/> + <div> + <field name="qty_available" class="oe_inline"/> + <button name="%(action_view_change_product_quantity)d" string="update" + type="action" + class="oe_link"/> + </div> + <field name="incoming_qty" class="oe_inline"/> + <field name="outgoing_qty" class="oe_inline"/> + <field name="virtual_available" class="oe_inline"/> + </group> + <group name="lot" groups="stock.group_tracking_lot,stock.group_production_lot" string="Lots"> + <field name="track_production" groups="stock.group_production_lot"/> + <field name="track_incoming" groups="stock.group_tracking_lot"/> + <field name="track_outgoing" groups="stock.group_tracking_lot"/> </group> </group> + <group name="status" position="after" version="7.0"> + <group name="store" string="Storage Localisation"> + <field name="company_id" groups="base.group_multi_company" widget="selection"/> + <field name="loc_rack" attrs="{'invisible':[('type','=','service')]}"/> + <field name="loc_row" attrs="{'invisible':[('type','=','service')]}"/> + <field name="loc_case" attrs="{'invisible':[('type','=','service')]}"/> + </group> + </group> + <group name="Weights" position="after"> + <group name="store" groups="stock.group_locations" string="Counter-Part Locations Properties"> + <field name="property_stock_procurement" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','procurement')]"/> + <field name="property_stock_production" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','production')]"/> + <field name="property_stock_inventory" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','inventory')]"/> + </group> + </group> </field> </record> @@ -86,7 +129,7 @@ <field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}" nolabel="1"/> <button name="%(action_view_change_standard_price)d" string="- update" type="action" attrs="{'invisible':[('cost_method','<>','average')]}" - class="oe_link"/> + class="oe_link" groups="product.group_costing_method"/> </div> </field> </field> @@ -116,32 +159,6 @@ </field> </record> - <record id="view_normal_stock_property_form" model="ir.ui.view"> - <field name="name">product.normal.stock.form.inherit</field> - <field name="model">product.product</field> - <field name="inherit_id" ref="product.product_normal_form_view"/> - <field name="arch" type="xml"> - <group name="status" position="before" version="7.0"> - <group string="Stock and Expected Variations" attrs="{'invisible': [('type', '=', 'service')]}" groups="base.group_user"> - <label for="qty_available"/> - <div> - <field name="qty_available" class="oe_inline"/> - <button name="%(action_view_change_product_quantity)d" string="update" - type="action" - class="oe_link"/> - </div> - <field name="incoming_qty" class="oe_inline"/> - <field name="outgoing_qty" class="oe_inline"/> - <field name="virtual_available" class="oe_inline"/> - </group> - <group name="lot" groups="stock.group_tracking_lot,stock.group_production_lot" string="Lots"> - <field name="track_production" groups="stock.group_production_lot"/> - <field name="track_incoming" groups="stock.group_tracking_lot"/> - <field name="track_outgoing" groups="stock.group_tracking_lot"/> - </group> - </group> - </field> - </record> <record id="action_receive_move" model="ir.actions.act_window"> <field name="name">Receptions</field> diff --git a/addons/stock/report/lot_overview.rml b/addons/stock/report/lot_overview.rml index 9662eede03b..82c402a3fdf 100644 --- a/addons/stock/report/lot_overview.rml +++ b/addons/stock/report/lot_overview.rml @@ -184,7 +184,7 @@ <para style="terp_default_Right_9">[[ formatLang(p['price'], dp='Account') ]]</para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(p['price_value'], dp='Account') ]] [[ o.company_id.currency_id.symbol]]</para> + <para style="terp_default_Right_9">[[ formatLang(p['price_value'], dp='Account', currency_obj = o.company_id.currency_id)]]</para> </td> </tr> </blockTable> @@ -198,7 +198,7 @@ <para style="terp_default_Bold_9">Total:</para> </td> <td> - <para style="terp_tblheader_Details_Right">[[ formatLang(price_total(), dp='Account') ]] [[ o.company_id.currency_id.symbol ]]</para> + <para style="terp_tblheader_Details_Right">[[ formatLang(price_total(), dp='Account', currency_obj = o.company_id.currency_id) ]]</para> </td> </tr> </blockTable> @@ -215,7 +215,7 @@ </para> </td> <td> - <para style="terp_tblheader_Details_Right">[[ formatLang(grand_total_price(), dp='Account') ]] [[ o.company_id.currency_id.symbol ]]</para> + <para style="terp_tblheader_Details_Right">[[ formatLang(grand_total_price(), dp='Account', currency_obj = o.company_id.currency_id) ]]</para> </td> </tr> </blockTable> diff --git a/addons/stock/report/lot_overview_all.rml b/addons/stock/report/lot_overview_all.rml index 3b2dc5f7751..51b93c6323b 100644 --- a/addons/stock/report/lot_overview_all.rml +++ b/addons/stock/report/lot_overview_all.rml @@ -184,7 +184,7 @@ <para style="terp_default_Right_9">[[ formatLang(p['price'], dp='Account') ]]</para> </td> <td> - <para style="terp_default_Right_9">[[ formatLang(p['price_value'], dp='Account') ]] [[ o.company_id.currency_id.symbol]]</para> + <para style="terp_default_Right_9">[[ formatLang(p['price_value'], dp='Account', currency_obj = o.company_id.currency_id)]]</para> </td> </tr> </blockTable> @@ -198,7 +198,7 @@ <para style="terp_default_Bold_9">Total:</para> </td> <td> - <para style="terp_tblheader_Details_Right">[[ formatLang(price_total(), dp='Account') ]] [[ o.company_id.currency_id.symbol ]]</para> + <para style="terp_tblheader_Details_Right">[[ formatLang(price_total(), dp='Account', currency_obj = o.company_id.currency_id) ]]</para> </td> </tr> </blockTable> @@ -215,7 +215,7 @@ </para> </td> <td> - <para style="terp_tblheader_Details_Right">[[ formatLang(grand_total_price(), dp='Account') ]] [[ o.company_id.currency_id.symbol ]]</para> + <para style="terp_tblheader_Details_Right">[[ formatLang(grand_total_price(), dp='Account', currency_obj = o.company_id.currency_id) ]]</para> </td> </tr> </blockTable> diff --git a/addons/stock/report/report_stock_move_view.xml b/addons/stock/report/report_stock_move_view.xml index 9b53ffd6d58..4f3e256389c 100644 --- a/addons/stock/report/report_stock_move_view.xml +++ b/addons/stock/report/report_stock_move_view.xml @@ -13,7 +13,7 @@ <field name="name">report.stock.move.tree</field> <field name="model">report.stock.move</field> <field name="arch" type="xml"> - <tree string="Moves Analysis"> + <tree string="Moves Analysis" create="false"> <field name="date" invisible="1"/> <field name="year" invisible="1" /> <field name="month" invisible="1"/> @@ -105,7 +105,7 @@ <field name="name">report.stock.inventory.tree</field> <field name="model">report.stock.inventory</field> <field name="arch" type="xml"> - <tree string="Inventory Analysis"> + <tree string="Inventory Analysis" create="false"> <field name="date" invisible="1"/> <field name="year" invisible="1" /> <field name="month" invisible="1"/> diff --git a/addons/stock/report/report_stock_view.xml b/addons/stock/report/report_stock_view.xml index f87a212d43b..f56d738636d 100644 --- a/addons/stock/report/report_stock_view.xml +++ b/addons/stock/report/report_stock_view.xml @@ -20,7 +20,7 @@ <field name="name">report.stock.lines.date.tree</field> <field name="model">report.stock.lines.date</field> <field name="arch" type="xml"> - <tree string="Dates of Inventories"> + <tree string="Dates of Inventories" create="false"> <field name="product_id"/> <field name="date" /> </tree> diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 91e300eaa07..765599aa842 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -1767,7 +1767,7 @@ class stock_move(osv.osv): location_id = property_out and property_out.id or False else: location_xml_id = False - if picking_type == 'in': + if picking_type in ('in', 'internal'): location_xml_id = 'stock_location_stock' elif picking_type == 'out': location_xml_id = 'stock_location_customers' @@ -1798,7 +1798,7 @@ class stock_move(osv.osv): location_xml_id = False if picking_type == 'in': location_xml_id = 'stock_location_suppliers' - elif picking_type == 'out': + elif picking_type in ('out', 'internal'): location_xml_id = 'stock_location_stock' if location_xml_id: location_model, location_id = mod_obj.get_object_reference(cr, uid, 'stock', location_xml_id) @@ -2011,25 +2011,17 @@ class stock_move(osv.osv): @return: Dictionary of values """ mod_obj = self.pool.get('ir.model.data') - location_source_id = False - location_dest_id = False + location_source_id = 'stock_location_stock' + location_dest_id = 'stock_location_stock' if type == 'in': location_source_id = 'stock_location_suppliers' location_dest_id = 'stock_location_stock' elif type == 'out': location_source_id = 'stock_location_stock' location_dest_id = 'stock_location_customers' - if location_source_id: - try: - location_model, location_source_id = mod_obj.get_object_reference(cr, uid, 'stock', location_source_id) - except ValueError, e: - location_source_id = False - if location_dest_id: - try: - location_model, location_dest_id = mod_obj.get_object_reference(cr, uid, 'stock', location_dest_id) - except ValueError, e: - location_dest_id = False - return {'value':{'location_id': location_source_id, 'location_dest_id': location_dest_id}} + source_location = mod_obj.get_object_reference(cr, uid, 'stock', location_source_id) + dest_location = mod_obj.get_object_reference(cr, uid, 'stock', location_dest_id) + return {'value':{'location_id': source_location and source_location[1] or False, 'location_dest_id': dest_location and dest_location[1] or False}} def onchange_date(self, cr, uid, ids, date, date_expected, context=None): """ On change of Scheduled Date gives a Move date. diff --git a/addons/stock/stock_demo.yml b/addons/stock/stock_demo.yml index 93f488c8354..99565f0c08c 100644 --- a/addons/stock/stock_demo.yml +++ b/addons/stock/stock_demo.yml @@ -31,7 +31,6 @@ name: Ice Cream type: product categ_id: product.product_category_1 - supply_method: buy list_price: 100.0 standard_price: 70.0 uom_id: product.product_uom_kgm diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml index 1a3f8e57d5c..329425148c5 100644 --- a/addons/stock/stock_view.xml +++ b/addons/stock/stock_view.xml @@ -777,7 +777,7 @@ </group> <notebook> <page string="Products"> - <field name="move_lines" context="{'address_in_id': partner_id, 'form_view_ref':'view_move_picking_form', 'tree_view_ref':'view_move_picking_tree'}"/> + <field name="move_lines" context="{'address_in_id': partner_id, 'form_view_ref':'view_move_picking_form', 'tree_view_ref':'view_move_picking_tree', 'picking_type': 'internal'}"/> <field name="note" placeholder="Add an internal note..." class="oe_inline"/> </page> <page string="Additional Info"> @@ -1416,7 +1416,7 @@ <field name="act_window_id" ref="action_move_form2"/> </record> - <menuitem action="action_move_form2" id="menu_action_move_form2" parent="menu_traceability" sequence="3"/> + <menuitem action="action_move_form2" id="menu_action_move_form2" parent="menu_traceability" sequence="3" groups="stock.group_locations"/> <!-- Reception Picking (By Stock Move) diff --git a/addons/stock/wizard/stock_return_picking.py b/addons/stock/wizard/stock_return_picking.py index fb8e327b71f..abe1754a49e 100644 --- a/addons/stock/wizard/stock_return_picking.py +++ b/addons/stock/wizard/stock_return_picking.py @@ -72,7 +72,7 @@ class stock_return_picking(osv.osv_memory): res.update({'invoice_state': 'none'}) return_history = self.get_return_history(cr, uid, record_id, context) for line in pick.move_lines: - qty = line.product_qty - return_history[line.id] + qty = line.product_qty - return_history.get(line.id, 0) if qty > 0: result1.append({'product_id': line.product_id.id, 'quantity': qty,'move_id':line.id}) if 'product_return_moves' in fields: @@ -100,8 +100,8 @@ class stock_return_picking(osv.osv_memory): valid_lines = 0 return_history = self.get_return_history(cr, uid, record_id, context) for m in pick.move_lines: - if m.product_qty * m.product_uom.factor > return_history[m.id]: - valid_lines += 1 + if m.state == 'done' and m.product_qty * m.product_uom.factor > return_history.get(m.id, 0): + valid_lines += 1 if not valid_lines: raise osv.except_osv(_('Warning!'), _("No products to return (only lines in Done state and not fully returned yet can be returned)!")) return res diff --git a/addons/stock_location/procurement_pull.py b/addons/stock_location/procurement_pull.py index 840e6c854c7..419118cda96 100644 --- a/addons/stock_location/procurement_pull.py +++ b/addons/stock_location/procurement_pull.py @@ -115,9 +115,9 @@ class procurement_order(osv.osv): if proc.move_id: move_obj.write(cr, uid, [proc.move_id.id], {'location_id':proc.location_id.id}) - self.write(cr, uid, [proc.id], {'state':'running', 'message':_('Pulled from another location via procurement %d') % proc_id}) - self.running_send_note(cr, uid, [proc.id], context=context) - + msg = _('Pulled from another location.') + self.write(cr, uid, [proc.id], {'state':'running', 'message': msg}) + self.message_post(cr, uid, [proc.id], body=msg, context=context) # trigger direct processing (the new procurement shares the same planned date as the original one, which is already being processed) wf_service.trg_validate(uid, 'procurement.order', proc_id, 'button_check', cr) return False diff --git a/addons/stock_no_autopicking/stock_no_autopicking_view.xml b/addons/stock_no_autopicking/stock_no_autopicking_view.xml index 9fb2b703efe..a5a96efb58d 100644 --- a/addons/stock_no_autopicking/stock_no_autopicking_view.xml +++ b/addons/stock_no_autopicking/stock_no_autopicking_view.xml @@ -5,7 +5,7 @@ <record model="ir.ui.view" id="view_product_form_auto_pick"> <field name="name">product.normal.auto_pick.form</field> <field name="model">product.product</field> - <field name="inherit_id" ref="product.product_normal_form_view" /> + <field name="inherit_id" ref="procurement.product_form_view_procurement_button"/> <field name="arch" type="xml"> <field name="product_manager" position="after"> <field name="auto_pick" /> diff --git a/addons/warning/warning_view.xml b/addons/warning/warning_view.xml index fd12ce53ac9..d88dc8101a5 100644 --- a/addons/warning/warning_view.xml +++ b/addons/warning/warning_view.xml @@ -41,7 +41,7 @@ <record id="product_warning_form_view" model="ir.ui.view"> <field name="name">product.warning.form.inherit</field> <field name="model">product.product</field> - <field name="inherit_id" ref="product.product_normal_form_view"/> + <field name="inherit_id" ref="procurement.product_template_form_view_procurement"/> <field name="arch" type="xml"> <notebook position="inside"> <page string="Warnings"> |
