[MERGE]with parent

bzr revid: dusan@ubuntu-20121201233429-rbar3myou3kladd8
This commit is contained in:
dusan 2012-12-02 00:34:29 +01:00
commit 23297c411f
69 changed files with 9362 additions and 1346 deletions

View File

@ -524,11 +524,11 @@ class account_invoice(osv.osv):
return result
def onchange_payment_term_date_invoice(self, cr, uid, ids, payment_term_id, date_invoice):
res = {}
if not payment_term_id:
return res
res = {}
if not date_invoice:
date_invoice = time.strftime('%Y-%m-%d')
if not payment_term_id:
return {'value':{'date_due': date_invoice}} #To make sure the invoice has a due date when no payment term
pterm_list = self.pool.get('account.payment.term').compute(cr, uid, payment_term_id, value=1, date_ref=date_invoice)
if pterm_list:
pterm_list = [line[0] for line in pterm_list]

View File

@ -475,7 +475,8 @@ class account_move_line(osv.osv):
type='many2one', relation='account.invoice', fnct_search=_invoice_search),
'account_tax_id':fields.many2one('account.tax', 'Tax'),
'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account'),
'company_id': fields.related('account_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True)
'company_id': fields.related('account_id', 'company_id', type='many2one', relation='res.company',
string='Company', store=True, readonly=True)
}
def _get_date(self, cr, uid, context=None):

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-10-12 23:18+0000\n"
"Last-Translator: Ferdinand @ Camptocamp <Unknown>\n"
"PO-Revision-Date: 2012-11-30 10:05+0000\n"
"Last-Translator: Felix Schubert <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 05:54+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@ -2755,7 +2755,7 @@ msgid ""
"In order to delete a bank statement, you must first cancel it to delete "
"related journal items."
msgstr ""
"Um einen Bankauszug zu löschen müssen Sie diesen zuerst Stornieren um die "
"Um einen Bankauszug zu löschen müssen Sie diesen zuerst Stornieren, um die "
"dazugehörigen Buchungen zu löschen."
#. module: account
@ -3834,7 +3834,7 @@ msgstr "Zeige Details"
#. module: account
#: report:account.overdue:0
msgid "VAT:"
msgstr "UID:"
msgstr "USt-IdNr."
#. module: account
#: constraint:account.invoice:0
@ -8437,7 +8437,7 @@ msgstr "Errechneter Saldo"
#: code:addons/account/static/src/js/account_move_reconciliation.js:88
#, python-format
msgid "You must choose at least one record."
msgstr ""
msgstr "Sie müssen mindestens einen Datensatz auswählen"
#. module: account
#: field:account.account,parent_id:0

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-29 15:44+0000\n"
"PO-Revision-Date: 2012-11-30 08:25+0000\n"
"Last-Translator: Numérigraphe <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-30 05:07+0000\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account
@ -108,7 +108,7 @@ msgstr ""
#. module: account
#: view:account.move.reconcile:0
msgid "Journal Entry Reconcile"
msgstr "Lettrage des écritures comptables"
msgstr "Lettrage d'écritures comptables"
#. module: account
#: view:account.account:0
@ -1914,7 +1914,7 @@ msgstr "Facture"
#. module: account
#: field:account.move,balance:0
msgid "balance"
msgstr ""
msgstr "solde"
#. module: account
#: model:process.node,note:account.process_node_analytic0
@ -2411,7 +2411,7 @@ msgstr "Merci de vérifier le compte défini dans le journal"
#. module: account
#: selection:account.entries.report,move_line_state:0
msgid "Valid"
msgstr "Valide"
msgstr "Equilibrée"
#. module: account
#: field:account.bank.statement,message_follower_ids:0
@ -2702,7 +2702,7 @@ msgstr "Le numéro du RIB et/ou IBAN n'est pas correct."
#. module: account
#: help:account.config.settings,default_sale_tax:0
msgid "This sale tax will be assigned by default on new products."
msgstr ""
msgstr "Cette taxe de vente sera attribuée par défaut aux nouveaux articles"
#. module: account
#: report:account.general.ledger_landscape:0
@ -3381,7 +3381,7 @@ msgstr "Août"
#. module: account
#: field:accounting.report,debit_credit:0
msgid "Display Debit/Credit Columns"
msgstr ""
msgstr "Afficher les colonnes de débit/crédit"
#. module: account
#: selection:account.entries.report,month:0
@ -4419,7 +4419,7 @@ msgstr "Nom"
#: code:addons/account/installer.py:94
#, python-format
msgid "No unconfigured company !"
msgstr ""
msgstr "Pas de société non configurée !"
#. module: account
#: field:res.company,expects_chart_of_accounts:0
@ -5255,7 +5255,7 @@ msgstr "Facture "
#. module: account
#: field:account.chart.template,property_account_income:0
msgid "Income Account on Product Template"
msgstr "Modèle d'imputation des charges"
msgstr "Compte de revenu sur les modèles d'articles"
#. module: account
#: help:account.journal.period,state:0
@ -6853,7 +6853,7 @@ msgstr "Exercice comptable"
#. module: account
#: view:account.move.reconcile:0
msgid "Partial Reconcile Entries"
msgstr "Lettrage partiel d'écritures"
msgstr "Lettrage partiel d'écriture"
#. module: account
#: view:account.aged.trial.balance:0
@ -7275,7 +7275,7 @@ msgstr "Catégorie de compte de dépenses"
#. module: account
#: sql_constraint:account.tax:0
msgid "Tax Name must be unique per company!"
msgstr ""
msgstr "Le nom d'une taxe doit être unique par société !"
#. module: account
#: view:account.bank.statement:0
@ -7761,6 +7761,7 @@ msgstr "Document d'origine"
#, python-format
msgid "There is no expense account defined for this product: \"%s\" (id:%d)."
msgstr ""
"Aucun compte de dépense n'a été défini pour cet article : \"%s\" ( id. : %d)."
#. module: account
#: constraint:account.account:0
@ -11120,6 +11121,8 @@ msgstr "Manuellement"
msgid ""
"This is a field only used for internal purpose and shouldn't be displayed"
msgstr ""
"Ceci est un champ uniquement utilisé pour un usage interne et ne devrait pas "
"être affiché"
#. module: account
#: selection:account.entries.report,month:0
@ -11140,6 +11143,7 @@ msgstr "Grouper les factures par mois"
#, python-format
msgid "There is no income account defined for this product: \"%s\" (id:%d)."
msgstr ""
"Aucun compte de revenu n'a été défini pour cet article : \"%s\" ( id. : %d)."
#. module: account
#: model:ir.actions.act_window,name:account.action_aged_receivable_graph
@ -11202,6 +11206,8 @@ msgid ""
"The selected unit of measure is not compatible with the unit of measure of "
"the product."
msgstr ""
"L'unité de mesure choisie n'est pas compatible avec l'unité de mesure de "
"l'article."
#. module: account
#: view:account.fiscal.position:0

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-29 23:20+0000\n"
"PO-Revision-Date: 2012-11-30 23:45+0000\n"
"Last-Translator: Sergio Corato <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-30 05:07+0000\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account
@ -152,6 +152,22 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Premere per selezionare la lista di colonne da visualizzare "
"per questo tipo di sezionale.\n"
" </p><p>\n"
" La Vista Sezionale determina il modo con cui puoi registrare "
"voci\n"
" nel sezionale. Selezionare i campi che devono apparire nel "
"sezionale\n"
" e determinale la sequenza con la quale devono apparire.\n"
" </p><p>\n"
" Nel form di definizione del sezionale, è possibile "
"selezionalre la vista\n"
" da usare per visualizzare le voci correlate con questo "
"sezionale.\n"
" </p>\n"
" "
#. module: account
#: help:account.payment.term,active:0
@ -560,7 +576,7 @@ msgstr "L'importo espresso in un'altra valuta opzionale"
#. module: account
#: view:account.journal:0
msgid "Available Coins"
msgstr ""
msgstr "Monete Disponibili"
#. module: account
#: field:accounting.report,enable_filter:0
@ -615,7 +631,7 @@ msgstr "Riferimento gerarchico superiore"
#. module: account
#: help:account.invoice.line,sequence:0
msgid "Gives the sequence of this line when displaying the invoice."
msgstr ""
msgstr "Assegna la sequenza di questa linea quando visualizza la fattura."
#. module: account
#: field:account.bank.statement,account_id:0
@ -753,12 +769,12 @@ msgstr "La sequenza principale deve essere diversa dalla attuale!"
#: code:addons/account/wizard/account_change_currency.py:70
#, python-format
msgid "Current currency is not configured properly."
msgstr ""
msgstr "La valuta corrente non è configurata correttamente."
#. module: account
#: field:account.journal,profit_account_id:0
msgid "Profit Account"
msgstr ""
msgstr "Conto Profitti"
#. module: account
#: code:addons/account/account_move_line.py:1249
@ -770,7 +786,7 @@ msgstr ""
#. module: account
#: model:account.journal.view,name:account.account_journal_bank_view_multi
msgid "Bank/Cash Journal (Multi-Currency) View"
msgstr ""
msgstr "Vista Sezionale Banca/Cassa (Multi-Valuta)"
#. module: account
#: model:ir.model,name:account.model_report_account_type_sales
@ -785,12 +801,16 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p>\n"
" Nessuna voce sezionale trovata.\n"
" </p>\n"
" "
#. module: account
#: code:addons/account/account.py:1606
#, python-format
msgid "Cannot create move with currency different from .."
msgstr ""
msgstr "Non è possibile creare movimenti con valute differenti da .."
#. module: account
#: model:email.template,report_name:account.email_template_edi_invoice
@ -798,6 +818,8 @@ msgid ""
"Invoice_${(object.number or '').replace('/','_')}_${object.state == 'draft' "
"and 'draft' or ''}"
msgstr ""
"Fattura_${(object.number or '').replace('/','_')}_${object.state == 'draft' "
"and 'draft' or ''}"
#. module: account
#: view:account.period:0
@ -825,6 +847,8 @@ msgstr "Periodo del Sezionale"
msgid ""
"You cannot create more than one move per period on a centralized journal."
msgstr ""
"Non è possibile creare più di una riga per periodo in un sezionale "
"centralizzato."
#. module: account
#: help:account.tax,account_analytic_paid_id:0
@ -833,6 +857,9 @@ msgid ""
"lines for refunds. Leave empty if you don't want to use an analytic account "
"on the invoice tax lines by default."
msgstr ""
"Imposta il conto analitico che sarà usato di default sulle righe imposta "
"della fattura per note di credito. Lasciare vuoto per non usare un conto "
"analitico di default sulle righe imposta della fattura."
#. module: account
#: view:account.account:0
@ -848,7 +875,7 @@ msgstr "Conti di Credito"
#. module: account
#: view:account.config.settings:0
msgid "Configure your company bank accounts"
msgstr ""
msgstr "Configura i conti bancari per la tua azienda"
#. module: account
#: constraint:account.move.line:0
@ -886,6 +913,9 @@ msgid ""
"Cannot %s invoice which is already reconciled, invoice should be "
"unreconciled first. You can only refund this invoice."
msgstr ""
"Non è possibile %s fattura che è già riconciliata, la fattura dovrebbe "
"essere prima riconciliata. E' possibile solo emettere nota di credito per "
"questa fattura."
#. module: account
#: selection:account.financial.report,display_detail:0
@ -963,7 +993,7 @@ msgstr "Fatture e Note di Credito Fornitori"
#: code:addons/account/account_move_line.py:833
#, python-format
msgid "Entry is already reconciled."
msgstr ""
msgstr "La registrazione è già riconciliata"
#. module: account
#: view:account.move.line.unreconcile.select:0
@ -986,7 +1016,7 @@ msgstr "Giornale conti analitici"
#. module: account
#: view:account.invoice:0
msgid "Send by Email"
msgstr ""
msgstr "Invia per Email"
#. module: account
#: help:account.central.journal,amount_currency:0
@ -997,6 +1027,8 @@ msgid ""
"Print Report with the currency column if the currency differs from the "
"company currency."
msgstr ""
"Stampa il Report con la colonna della valuta se la valuta è diversa da "
"quella aziendale."
#. module: account
#: report:account.analytic.account.quantity_cost_ledger:0
@ -1006,12 +1038,12 @@ msgstr "Nome G.C/Movimento"
#. module: account
#: view:account.account:0
msgid "Account Code and Name"
msgstr ""
msgstr "Codice e Nome Conto"
#. module: account
#: model:mail.message.subtype,name:account.mt_invoice_new
msgid "created"
msgstr ""
msgstr "creato"
#. module: account
#: selection:account.entries.report,month:0
@ -1075,7 +1107,7 @@ msgstr "Dovuto"
#. module: account
#: field:account.config.settings,purchase_journal_id:0
msgid "Purchase journal"
msgstr ""
msgstr "Sezionale Acquisti"
#. module: account
#: code:addons/account/account.py:1374
@ -1084,6 +1116,8 @@ msgid ""
"You cannot validate this journal entry because account \"%s\" does not "
"belong to chart of accounts \"%s\"."
msgstr ""
"Non è possibile validate questa registrazione perchè il conto \"%s\" non "
"appartiene al piano dei conti \"%s\"."
#. module: account
#: view:validate.account.move:0
@ -1101,7 +1135,7 @@ msgstr "Importo Totale"
#. module: account
#: help:account.invoice,supplier_invoice_number:0
msgid "The reference of this invoice as provided by the supplier."
msgstr ""
msgstr "Il numero della fattura come assegnato dal fornitore."
#. module: account
#: selection:account.account,type:0
@ -1190,7 +1224,7 @@ msgstr "Codice"
#. module: account
#: view:account.config.settings:0
msgid "Features"
msgstr ""
msgstr "Caratteristiche"
#. module: account
#: code:addons/account/account.py:2323
@ -1235,7 +1269,7 @@ msgstr "Nome del conto"
#. module: account
#: field:account.journal,with_last_closing_balance:0
msgid "Opening With Last Closing Balance"
msgstr ""
msgstr "Apertura Con Ultimo Bilancio di Chiusura"
#. module: account
#: view:account.state.open:0
@ -1279,12 +1313,12 @@ msgstr ""
#. module: account
#: view:account.invoice:0
msgid "Refund "
msgstr ""
msgstr "Rimborso "
#. module: account
#: help:account.config.settings,company_footer:0
msgid "Bank accounts as printed in the footer of each printed document"
msgstr ""
msgstr "Conti bancari come stampati nel piede di ogni documento stampato"
#. module: account
#: view:account.tax:0
@ -1306,7 +1340,7 @@ msgstr "Movimenti Registratore di Cassa"
#. module: account
#: field:account.config.settings,sale_refund_journal_id:0
msgid "Sale refund journal"
msgstr ""
msgstr "Sezionale Note di Credito"
#. module: account
#: model:ir.actions.act_window,help:account.action_view_bank_statement_tree
@ -1342,7 +1376,7 @@ msgstr "Inizio del periodo"
#. module: account
#: view:account.tax:0
msgid "Refunds"
msgstr ""
msgstr "Note di Credito"
#. module: account
#: model:process.transition,name:account.process_transition_confirmstatementfromdraft0
@ -1412,7 +1446,7 @@ msgstr "Tasso di cambio in uscita"
#. module: account
#: field:account.config.settings,chart_template_id:0
msgid "Template"
msgstr ""
msgstr "Modello"
#. module: account
#: selection:account.analytic.journal,type:0
@ -1425,6 +1459,8 @@ msgid ""
"Set the account that will be set by default on invoice tax lines for "
"refunds. Leave empty to use the expense account."
msgstr ""
"Imposta il conto che sarà usato di default sulle righe imposta della fattura "
"per note di credito. Lasciare vuoto per usare il conto di costo."
#. module: account
#: field:account.move.line.reconcile,trans_nbr:0
@ -1511,7 +1547,7 @@ msgstr "Livello"
#: code:addons/account/wizard/account_change_currency.py:38
#, python-format
msgid "You can only change currency for Draft Invoice."
msgstr ""
msgstr "E' possibile cambiare solo la vauta per le Fatture in stato Bozza"
#. module: account
#: report:account.invoice:0
@ -1537,7 +1573,7 @@ msgstr "Seleziona un periodo di inizio e fine"
#: 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 "Utili e Perdite"
msgstr "Conto Economico"
#. module: account
#: model:ir.model,name:account.model_account_account_template
@ -1582,12 +1618,12 @@ msgstr "Opzioni Report"
#. module: account
#: field:account.fiscalyear.close.state,fy_id:0
msgid "Fiscal Year to Close"
msgstr ""
msgstr "Anno Fiscale da Chiudere"
#. module: account
#: field:account.config.settings,sale_sequence_prefix:0
msgid "Invoice sequence"
msgstr ""
msgstr "Sequenza fattura"
#. module: account
#: model:ir.model,name:account.model_account_entries_report
@ -1606,11 +1642,13 @@ msgid ""
"And after getting confirmation from the bank it will be in 'Confirmed' "
"status."
msgstr ""
"Quando sono create le nuove registrazioni sono in stato 'Bozza'.\n"
"Dopo la conferma sono nello stato 'Confermato'."
#. module: account
#: field:account.invoice.report,state:0
msgid "Invoice Status"
msgstr ""
msgstr "Stato Fattura"
#. module: account
#: view:account.invoice.report:0
@ -1643,6 +1681,8 @@ msgid ""
"There is no default debit account defined \n"
"on journal \"%s\"."
msgstr ""
"Non c'è un conto di debito di default definito \n"
"nel sezionale \"%s\"."
#. module: account
#: view:account.tax:0
@ -1698,7 +1738,7 @@ msgstr "Salta lo stato 'Bozza' per le registrazioni manuali"
#: code:addons/account/wizard/account_report_common.py:159
#, python-format
msgid "Not implemented."
msgstr ""
msgstr "Non implementato."
#. module: account
#: view:account.invoice.refund:0
@ -1708,7 +1748,7 @@ msgstr "Nota di credito"
#. module: account
#: view:account.config.settings:0
msgid "eInvoicing & Payments"
msgstr ""
msgstr "e-fatturazione & Pagamenti"
#. module: account
#: view:account.analytic.cost.ledger.journal.report:0
@ -1743,7 +1783,7 @@ msgstr "Note di Credito"
#. module: account
#: field:account.config.settings,company_footer:0
msgid "Bank accounts footer preview"
msgstr ""
msgstr "Anteprima pie' di pagina conti bancari"
#. module: account
#: selection:account.account,type:0
@ -1790,7 +1830,7 @@ msgstr "Imponibile"
#. module: account
#: view:account.journal:0
msgid "Advanced Settings"
msgstr ""
msgstr "Impostazioni avanzate"
#. module: account
#: view:account.bank.statement:0
@ -1889,7 +1929,7 @@ msgstr "Sequenza per anni fiscali"
#. module: account
#: field:account.config.settings,group_analytic_accounting:0
msgid "Analytic accounting"
msgstr ""
msgstr "Contabilità analitica"
#. module: account
#: report:account.overdue:0
@ -1933,12 +1973,14 @@ msgid ""
"The journal must have centralized counterpart without the Skipping draft "
"state option checked."
msgstr ""
"Il sezionale deve avere contropartite centralizzate senza l'opzione Salta lo "
"stato bozza attivata."
#. module: account
#: code:addons/account/account_move_line.py:836
#, python-format
msgid "Some entries are already reconciled."
msgstr ""
msgstr "Alcune registrazioni sono già riconciliate."
#. module: account
#: model:email.template,body_html:account.email_template_edi_invoice
@ -2069,12 +2111,12 @@ msgstr "Conti in sospeso"
#. module: account
#: view:account.open.closed.fiscalyear:0
msgid "Cancel Fiscal Year Opening Entries"
msgstr ""
msgstr "Annulla Registrazioni Apertura Anno Fiscale"
#. module: account
#: model:account.journal.view,name:account.account_journal_bank_view
msgid "Bank/Cash Journal View"
msgstr ""
msgstr "Vista Sezionale Banca/Cassa"
#. module: account
#: report:account.journal.period.print.sale.purchase:0
@ -2104,12 +2146,12 @@ msgstr "Incassi & Pagamenti"
#. module: account
#: field:account.config.settings,module_account_payment:0
msgid "Manage payment orders"
msgstr ""
msgstr "Gestione ordini di pagamento"
#. module: account
#: view:account.period:0
msgid "Duration"
msgstr ""
msgstr "Durata"
#. module: account
#: view:account.bank.statement:0
@ -2153,7 +2195,7 @@ msgstr "Rif. cliente:"
#: help:account.tax.template,ref_tax_code_id:0
#: help:account.tax.template,tax_code_id:0
msgid "Use this code for the tax declaration."
msgstr ""
msgstr "Usa questo codice per la dichiarazione imposte"
#. module: account
#: help:account.period,special:0
@ -2179,7 +2221,7 @@ msgstr "Importo credito"
#: field:account.bank.statement,message_ids:0
#: field:account.invoice,message_ids:0
msgid "Messages"
msgstr ""
msgstr "Messaggi"
#. module: account
#: view:account.vat.declaration:0
@ -3434,7 +3476,7 @@ msgstr "Contabilità Generale"
#. module: account
#: model:ir.ui.menu,name:account.menu_account_report_pl
msgid "Profit And Loss"
msgstr "Profitto e perdita"
msgstr "Conto Economico"
#. module: account
#: view:account.fiscal.position:0
@ -5198,7 +5240,7 @@ msgstr "Fattura "
#. module: account
#: field:account.chart.template,property_account_income:0
msgid "Income Account on Product Template"
msgstr "Conto entrate per il prodotto"
msgstr "Conto ricavi per il prodotto"
#. module: account
#: help:account.journal.period,state:0
@ -6509,7 +6551,7 @@ msgstr ""
#. module: account
#: field:account.journal,loss_account_id:0
msgid "Loss Account"
msgstr ""
msgstr "Conto Perdite"
#. module: account
#: field:account.tax,account_collected_id:0
@ -7347,7 +7389,7 @@ msgstr "Crea registrazione"
#: code:addons/account/account.py:188
#, python-format
msgid "Profit & Loss (Expense account)"
msgstr "Utili & Perdite (Conti Attivi)"
msgstr "Conto Economico"
#. module: account
#: field:account.bank.statement,total_entry_encoding:0
@ -8281,8 +8323,8 @@ msgstr "Cancella lefatture scelte"
msgid ""
"This field is used to generate legal reports: profit and loss, balance sheet."
msgstr ""
"Questo campo è utilizzato per la generazione di scritture legali: Utili e "
"Perdite, Bilancio."
"Questo campo è utilizzato per la generazione di scritture legali: Conto "
"economico, Stato patrimoniale."
#. module: account
#: selection:account.entries.report,month:0
@ -8466,7 +8508,7 @@ msgstr "Mastro"
#: code:addons/account/account_cash_statement.py:292
#, python-format
msgid "Profit"
msgstr ""
msgstr "Utile"
#. module: account
#: help:account.payment.term.line,days2:0
@ -10335,7 +10377,7 @@ msgstr "Dalla contabilità analitica"
#. module: account
#: view:account.installer:0
msgid "Configure your Fiscal Year"
msgstr ""
msgstr "Configura l'Anno Fiscale"
#. module: account
#: field:account.period,name:0
@ -10349,6 +10391,8 @@ msgid ""
"Selected invoice(s) cannot be cancelled as they are already in 'Cancelled' "
"or 'Done' state."
msgstr ""
"La/e fattura/e selezionate non possono essere eliminate perché sono già in "
"stato 'Annullato' o 'Completato'."
#. module: account
#: report:account.analytic.account.quantity_cost_ledger:0
@ -10457,7 +10501,7 @@ msgstr "Avere"
#. module: account
#: view:account.invoice:0
msgid "Draft Invoice "
msgstr ""
msgstr "Bozza Fattura "
#. module: account
#: selection:account.invoice.refund,filter_refund:0
@ -10747,6 +10791,8 @@ msgstr "Stato"
#: help:product.template,property_account_income:0
msgid "This account will be used to value outgoing stock using sale price."
msgstr ""
"Questo conto sarà utilizzato per valutare gli stock in uscita usando il "
"prezzo di vendita."
#. module: account
#: field:account.invoice,check_total:0
@ -11043,7 +11089,7 @@ msgstr "Conti di credito"
#: code:addons/account/account_move_line.py:762
#, python-format
msgid "Already reconciled."
msgstr ""
msgstr "Già riconciliato."
#. module: account
#: selection:account.model.line,date_maturity:0
@ -11184,6 +11230,8 @@ msgid ""
"The selected unit of measure is not compatible with the unit of measure of "
"the product."
msgstr ""
"L'unità di misura selezionata non è compatibile con l'unita di misura del "
"prodotto."
#. module: account
#: view:account.fiscal.position:0
@ -11225,7 +11273,7 @@ msgstr "Il conto di ricavo o di costo riguardante il prodotto selezionato."
#. module: account
#: view:account.config.settings:0
msgid "Install more chart templates"
msgstr ""
msgstr "Installa altri piani dei conti"
#. module: account
#: report:account.general.journal:0
@ -11274,6 +11322,8 @@ msgid ""
"You cannot remove/deactivate an account which is set on a customer or "
"supplier."
msgstr ""
"Non è possibile eliminare/disattivare un conto che è impostato in un cliente "
"o un fornitore."
#. module: account
#: model:ir.model,name:account.model_validate_account_move_lines
@ -11285,6 +11335,7 @@ msgstr "Conferma Movimenti Contabili"
msgid ""
"The fiscal position will determine taxes and accounts used for the partner."
msgstr ""
"La posizione fiscale determina le imposte e i conti usati per il partner."
#. module: account
#: model:process.node,note:account.process_node_supplierpaidinvoice0
@ -11300,7 +11351,7 @@ msgstr ""
#. module: account
#: model:account.journal.view,name:account.account_sp_journal_view
msgid "Sale/Purchase Journal View"
msgstr ""
msgstr "Vista Sezionale Vendite/Acquisti"
#. module: account
#: view:account.account.template:0
@ -11317,6 +11368,8 @@ msgstr "Imposte fattura manuali"
#, python-format
msgid "The payment term of supplier does not have a payment term line."
msgstr ""
"La condizione di pagamento del fornitore è senza righe con termini di "
"pagamento."
#. module: account
#: field:account.account,parent_right:0
@ -11329,7 +11382,7 @@ msgstr "Conto Padre a destra"
#: code:addons/account/static/src/js/account_move_reconciliation.js:79
#, python-format
msgid "Never"
msgstr ""
msgstr "Mai"
#. module: account
#: model:ir.model,name:account.model_account_addtmpl_wizard
@ -11350,7 +11403,7 @@ msgstr "Del partner"
#. module: account
#: field:account.account,note:0
msgid "Internal Notes"
msgstr ""
msgstr "Note Interne"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_fiscalyear_form
@ -11383,7 +11436,7 @@ msgstr "Modello di conto"
#: code:addons/account/account_cash_statement.py:292
#, python-format
msgid "Loss"
msgstr ""
msgstr "Perdita"
#. module: account
#: selection:account.entries.report,month:0
@ -11477,7 +11530,7 @@ msgstr ""
#. module: account
#: selection:account.config.settings,tax_calculation_rounding_method:0
msgid "Round per line"
msgstr ""
msgstr "Arrotonda per riga"
#. module: account
#: help:account.move.line,amount_residual_currency:0

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-28 07:22+0000\n"
"PO-Revision-Date: 2012-11-30 17:32+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-29 05:14+0000\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account
@ -83,7 +83,7 @@ msgstr "从发票或付款单导入"
#: code:addons/account/account_move_line.py:1303
#, python-format
msgid "Bad Account!"
msgstr ""
msgstr "坏账"
#. module: account
#: view:account.move:0
@ -246,7 +246,7 @@ msgid ""
"Set the analytic account that will be used by default on the invoice tax "
"lines for invoices. Leave empty if you don't want to use an analytic account "
"on the invoice tax lines by default."
msgstr ""
msgstr "设置辅助核算项,用于退款时发票上默认项目。如果默认不要在发票的税上 使用辅助核算项,留空。"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_tax_template_form
@ -282,7 +282,7 @@ msgstr "比利时报表"
#. module: account
#: model:account.account.type,name:account.account_type_income_view1
msgid "Income View"
msgstr ""
msgstr "收入视图"
#. module: account
#: help:account.account,user_type:0
@ -363,7 +363,7 @@ msgstr "科目反核销"
#. module: account
#: field:account.config.settings,module_account_budget:0
msgid "Budget management"
msgstr ""
msgstr "预算管理"
#. module: account
#: view:product.template:0
@ -381,7 +381,7 @@ msgstr "这里可以设置你想要记录显示格式.如果保留自动,它将
#. module: account
#: field:account.config.settings,group_multi_currency:0
msgid "Allow multi currencies"
msgstr ""
msgstr "允许多种货币"
#. module: account
#: code:addons/account/account_invoice.py:73
@ -402,12 +402,12 @@ msgstr "6"
#: code:addons/account/wizard/account_automatic_reconcile.py:148
#, python-format
msgid "You must select accounts to reconcile."
msgstr ""
msgstr "你必须选择要核销的账簿 。"
#. module: account
#: help:account.config.settings,group_analytic_accounting:0
msgid "Allows you to use the analytic accounting."
msgstr ""
msgstr "允许使用辅助核算"
#. module: account
#: model:ir.actions.act_window,help:account.action_account_moves_bank
@ -423,7 +423,7 @@ msgstr "本视图供财务人员在系统中录入单据。如果您在系统里
#: view:account.invoice.report:0
#: field:account.invoice.report,user_id:0
msgid "Salesperson"
msgstr ""
msgstr "销售员"
#. module: account
#: model:ir.model,name:account.model_account_tax_template
@ -517,7 +517,7 @@ msgstr "备选币种所示金额"
#. module: account
#: view:account.journal:0
msgid "Available Coins"
msgstr ""
msgstr "有效的硬币"
#. module: account
#: field:accounting.report,enable_filter:0
@ -646,7 +646,7 @@ msgstr "财务人员确认的报表"
#: code:addons/account/static/src/xml/account_move_reconciliation.xml:31
#, python-format
msgid "Nothing to reconcile"
msgstr ""
msgstr "没有什么被核销"
#. module: account
#: field:account.config.settings,decimal_precision:0
@ -683,7 +683,7 @@ msgstr "报表数值"
msgid ""
"Specified journal does not have any account move entries in draft state for "
"this period."
msgstr ""
msgstr "这个期间内,指定的分类账没有任何会计凭证分录在草稿状态。"
#. module: account
#: view:account.fiscal.position:0
@ -706,12 +706,12 @@ msgstr "序列号必须唯一"
#: code:addons/account/wizard/account_change_currency.py:70
#, python-format
msgid "Current currency is not configured properly."
msgstr ""
msgstr "当前的币种配置不正确。"
#. module: account
#: field:account.journal,profit_account_id:0
msgid "Profit Account"
msgstr ""
msgstr "利润科目"
#. module: account
#: code:addons/account/account_move_line.py:1249
@ -722,7 +722,7 @@ msgstr "根据输入的凭证日期没有找到期间或找到了多个期间"
#. module: account
#: model:account.journal.view,name:account.account_journal_bank_view_multi
msgid "Bank/Cash Journal (Multi-Currency) View"
msgstr ""
msgstr "银行/现金分类账(多币种)视图"
#. module: account
#: model:ir.model,name:account.model_report_account_type_sales
@ -742,7 +742,7 @@ msgstr ""
#: code:addons/account/account.py:1606
#, python-format
msgid "Cannot create move with currency different from .."
msgstr ""
msgstr "不能不同币种的凭证"
#. module: account
#: model:email.template,report_name:account.email_template_edi_invoice
@ -750,6 +750,8 @@ msgid ""
"Invoice_${(object.number or '').replace('/','_')}_${object.state == 'draft' "
"and 'draft' or ''}"
msgstr ""
"Invoice_${(object.number or '').replace('/','_')}_${object.state == 'draft' "
"and '草稿' or ''}"
#. module: account
#: view:account.period:0
@ -776,7 +778,7 @@ msgstr "账簿的会计期间"
#: constraint:account.move:0
msgid ""
"You cannot create more than one move per period on a centralized journal."
msgstr "在每个会计期间你不可以创建1个以上的总分类凭证"
msgstr ""
#. module: account
#: help:account.tax,account_analytic_paid_id:0
@ -800,7 +802,7 @@ msgstr "应收款科目"
#. module: account
#: view:account.config.settings:0
msgid "Configure your company bank accounts"
msgstr ""
msgstr "配置你公司银行账户"
#. module: account
#: constraint:account.move.line:0
@ -835,7 +837,7 @@ msgstr "打印发票"
msgid ""
"Cannot %s invoice which is already reconciled, invoice should be "
"unreconciled first. You can only refund this invoice."
msgstr ""
msgstr "不能 %s 已经核销的发票, 发票必须被首先反核销.。只能退还这张发票。"
#. module: account
#: selection:account.financial.report,display_detail:0
@ -911,7 +913,7 @@ msgstr "供应商发票和退款"
#: code:addons/account/account_move_line.py:833
#, python-format
msgid "Entry is already reconciled."
msgstr ""
msgstr "分录已经核销。"
#. module: account
#: view:account.move.line.unreconcile.select:0
@ -934,7 +936,7 @@ msgstr "辅助核算账簿"
#. module: account
#: view:account.invoice:0
msgid "Send by Email"
msgstr ""
msgstr "以邮件发送"
#. module: account
#: help:account.central.journal,amount_currency:0
@ -944,7 +946,7 @@ msgstr ""
msgid ""
"Print Report with the currency column if the currency differs from the "
"company currency."
msgstr ""
msgstr "如果币种跟公司本位币不同,带币种打印报表。"
#. module: account
#: report:account.analytic.account.quantity_cost_ledger:0
@ -954,12 +956,12 @@ msgstr "J.C.(成本)凭证名称"
#. module: account
#: view:account.account:0
msgid "Account Code and Name"
msgstr ""
msgstr "科目代码和名称"
#. module: account
#: model:mail.message.subtype,name:account.mt_invoice_new
msgid "created"
msgstr ""
msgstr "已创建"
#. module: account
#: selection:account.entries.report,month:0
@ -1022,7 +1024,7 @@ msgstr "到期"
#. module: account
#: field:account.config.settings,purchase_journal_id:0
msgid "Purchase journal"
msgstr ""
msgstr "采购分类账"
#. module: account
#: code:addons/account/account.py:1374
@ -1030,7 +1032,7 @@ msgstr ""
msgid ""
"You cannot validate this journal entry because account \"%s\" does not "
"belong to chart of accounts \"%s\"."
msgstr ""
msgstr "你不能核准这个分类账分录,因为科目 \"%s\" 不属于科目表 \"%s\"."
#. module: account
#: view:validate.account.move:0
@ -1048,7 +1050,7 @@ msgstr "总金额"
#. module: account
#: help:account.invoice,supplier_invoice_number:0
msgid "The reference of this invoice as provided by the supplier."
msgstr ""
msgstr "这个发票的编号由供应商提供。"
#. module: account
#: selection:account.account,type:0
@ -1133,7 +1135,7 @@ msgstr "编码"
#. module: account
#: view:account.config.settings:0
msgid "Features"
msgstr ""
msgstr "特性"
#. module: account
#: code:addons/account/account.py:2323
@ -1178,7 +1180,7 @@ msgstr "科目名称"
#. module: account
#: field:account.journal,with_last_closing_balance:0
msgid "Opening With Last Closing Balance"
msgstr ""
msgstr "用末期的期终余额打开"
#. module: account
#: view:account.state.open:0
@ -1218,12 +1220,12 @@ msgstr "根据您国家定义这些类型,该类型包含有关科目及其具
#. module: account
#: view:account.invoice:0
msgid "Refund "
msgstr ""
msgstr "退款 "
#. module: account
#: help:account.config.settings,company_footer:0
msgid "Bank accounts as printed in the footer of each printed document"
msgstr ""
msgstr "银行帐号被打印在每个输出单据的页脚。"
#. module: account
#: view:account.tax:0
@ -1245,7 +1247,7 @@ msgstr "现金记录"
#. module: account
#: field:account.config.settings,sale_refund_journal_id:0
msgid "Sale refund journal"
msgstr ""
msgstr "销售退货分类账"
#. module: account
#: model:ir.actions.act_window,help:account.action_view_bank_statement_tree
@ -1281,7 +1283,7 @@ msgstr "会计期间开始于"
#. module: account
#: view:account.tax:0
msgid "Refunds"
msgstr ""
msgstr "退款"
#. module: account
#: model:process.transition,name:account.process_transition_confirmstatementfromdraft0
@ -1349,7 +1351,7 @@ msgstr "兑出汇率"
#. module: account
#: field:account.config.settings,chart_template_id:0
msgid "Template"
msgstr ""
msgstr "模版"
#. module: account
#: selection:account.analytic.journal,type:0
@ -1361,7 +1363,7 @@ msgstr "状况"
msgid ""
"Set the account that will be set by default on invoice tax lines for "
"refunds. Leave empty to use the expense account."
msgstr ""
msgstr "设置科目,用于退款时发票上默认税科目。留空使用费用科目。"
#. module: account
#: field:account.move.line.reconcile,trans_nbr:0
@ -1519,12 +1521,12 @@ msgstr "报表选项"
#. module: account
#: field:account.fiscalyear.close.state,fy_id:0
msgid "Fiscal Year to Close"
msgstr ""
msgstr "财政年度结束"
#. module: account
#: field:account.config.settings,sale_sequence_prefix:0
msgid "Invoice sequence"
msgstr ""
msgstr "发票序列"
#. module: account
#: model:ir.model,name:account.model_account_entries_report
@ -1543,11 +1545,13 @@ msgid ""
"And after getting confirmation from the bank it will be in 'Confirmed' "
"status."
msgstr ""
"当新的对账单被创建,状态是“草稿”。\n"
"从银行确认后,是“已经确认状态”。"
#. module: account
#: field:account.invoice.report,state:0
msgid "Invoice Status"
msgstr ""
msgstr "发票状态"
#. module: account
#: view:account.invoice.report:0
@ -1579,7 +1583,7 @@ msgstr "余额不为0"
msgid ""
"There is no default debit account defined \n"
"on journal \"%s\"."
msgstr ""
msgstr "在分类账 \"%s\" 没有默认借方科目定义。"
#. module: account
#: view:account.tax:0
@ -1614,6 +1618,8 @@ msgid ""
"There is nothing to reconcile. All invoices and payments\n"
" have been reconciled, your partner balance is clean."
msgstr ""
"没有需要核销的。\n"
"所有发票和付款已经被核销,合作伙伴余额已经结清。"
#. module: account
#: field:account.chart.template,code_digits:0
@ -1632,7 +1638,7 @@ msgstr "如果是手工分录的话就跳过“草稿”状态"
#: code:addons/account/wizard/account_report_common.py:159
#, python-format
msgid "Not implemented."
msgstr ""
msgstr "未执行。"
#. module: account
#: view:account.invoice.refund:0
@ -1642,7 +1648,7 @@ msgstr "冲销发票"
#. module: account
#: view:account.config.settings:0
msgid "eInvoicing & Payments"
msgstr ""
msgstr "电子发票和支付"
#. module: account
#: view:account.analytic.cost.ledger.journal.report:0
@ -1675,7 +1681,7 @@ msgstr "供应商红字发票"
#. module: account
#: field:account.config.settings,company_footer:0
msgid "Bank accounts footer preview"
msgstr ""
msgstr "银行帐号页脚预览"
#. module: account
#: selection:account.account,type:0
@ -1722,7 +1728,7 @@ msgstr "未完税"
#. module: account
#: view:account.journal:0
msgid "Advanced Settings"
msgstr ""
msgstr "高级选项"
#. module: account
#: view:account.bank.statement:0
@ -1821,7 +1827,7 @@ msgstr "会计年度序列"
#. module: account
#: field:account.config.settings,group_analytic_accounting:0
msgid "Analytic accounting"
msgstr ""
msgstr "辅助核算"
#. module: account
#: report:account.overdue:0
@ -1864,13 +1870,13 @@ msgstr "未确定业务伙伴"
msgid ""
"The journal must have centralized counterpart without the Skipping draft "
"state option checked."
msgstr ""
msgstr "这个分类账簿的“合并对方科目”必须被选中,“跳过草稿状态”不能选中。"
#. module: account
#: code:addons/account/account_move_line.py:836
#, python-format
msgid "Some entries are already reconciled."
msgstr ""
msgstr "有些分录已经被核销。"
#. module: account
#: model:email.template,body_html:account.email_template_edi_invoice
@ -1991,7 +1997,7 @@ msgstr "该向导将改变发票的币种"
msgid ""
"Select a configuration package to setup automatically your\n"
" taxes and chart of accounts."
msgstr ""
msgstr "选择一个配置包来自动化安装你的税和科目表"
#. module: account
#: view:account.analytic.account:0
@ -2006,7 +2012,7 @@ msgstr ""
#. module: account
#: model:account.journal.view,name:account.account_journal_bank_view
msgid "Bank/Cash Journal View"
msgstr ""
msgstr "银行/现金 分类账视图"
#. module: account
#: report:account.journal.period.print.sale.purchase:0
@ -2034,18 +2040,18 @@ msgstr "应收&应付"
#. module: account
#: field:account.config.settings,module_account_payment:0
msgid "Manage payment orders"
msgstr ""
msgstr "管理付款单"
#. module: account
#: view:account.period:0
msgid "Duration"
msgstr ""
msgstr "持续时间"
#. module: account
#: view:account.bank.statement:0
#: field:account.bank.statement,last_closing_balance:0
msgid "Last Closing Balance"
msgstr ""
msgstr "期终余额"
#. module: account
#: model:ir.model,name:account.model_account_common_journal_report
@ -2083,7 +2089,7 @@ msgstr "客户关联:"
#: help:account.tax.template,ref_tax_code_id:0
#: help:account.tax.template,tax_code_id:0
msgid "Use this code for the tax declaration."
msgstr ""
msgstr "用这个代码做纳税申报"
#. module: account
#: help:account.period,special:0
@ -2098,7 +2104,7 @@ msgstr "银行单据草稿"
#. module: account
#: field:account.config.settings,module_account_check_writing:0
msgid "Pay your suppliers by check"
msgstr ""
msgstr "用支票支付你的供应商"
#. module: account
#: field:account.move.line.reconcile,credit:0
@ -2109,7 +2115,7 @@ msgstr "贷方金额"
#: field:account.bank.statement,message_ids:0
#: field:account.invoice,message_ids:0
msgid "Messages"
msgstr ""
msgstr "消息"
#. module: account
#: view:account.vat.declaration:0
@ -2121,6 +2127,9 @@ msgid ""
"useful because it enables you to preview at any time the tax that you owe at "
"the start and end of the month or quarter."
msgstr ""
"这个菜单基于发票或者支付打印一个纳税申报。选择财务年度的一个或几个会计期间。\r\n"
"纳税申报需要的信息由Openerp自动从发票或者在有些国家是付款单生成。数据是实时更新的。\r\n"
"这非常有用,他使你任何时间可预览 在月份(或季度)的开始和结束欠了多少税。"
#. module: account
#: code:addons/account/account.py:408
@ -2207,7 +2216,7 @@ msgstr "发票分析"
#. module: account
#: model:ir.model,name:account.model_mail_compose_message
msgid "Email composition wizard"
msgstr ""
msgstr "Email撰写向导"
#. module: account
#: model:ir.model,name:account.model_account_period_close
@ -2253,7 +2262,7 @@ msgstr ""
#. module: account
#: field:account.config.settings,currency_id:0
msgid "Default company currency"
msgstr ""
msgstr "公司本位币"
#. module: account
#: field:account.invoice,move_id:0
@ -2306,7 +2315,7 @@ msgstr "生效"
#: field:account.bank.statement,message_follower_ids:0
#: field:account.invoice,message_follower_ids:0
msgid "Followers"
msgstr ""
msgstr "关注者"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_print_journal
@ -2327,7 +2336,7 @@ msgstr "过期的试算表"
#. module: account
#: view:account.fiscalyear.close.state:0
msgid "Close Fiscal Year"
msgstr ""
msgstr "关闭财政年度"
#. module: account
#: model:process.node,note:account.process_node_reconciliation0
@ -2338,7 +2347,7 @@ msgstr "比较会计和支付项"
#. module: account
#: sql_constraint:account.fiscal.position.tax:0
msgid "A tax fiscal position could be defined only once time on same taxes."
msgstr ""
msgstr "同样的税 上面一次只能定义一个财务结构。"
#. module: account
#: view:account.tax:0
@ -2350,12 +2359,12 @@ msgstr "税定义"
#: view:account.config.settings:0
#: model:ir.actions.act_window,name:account.action_account_config
msgid "Configure Accounting"
msgstr ""
msgstr "设置会计模块"
#. module: account
#: field:account.invoice.report,uom_name:0
msgid "Reference Unit of Measure"
msgstr ""
msgstr "参考计量单位"
#. module: account
#: help:account.journal,allow_date:0
@ -2369,12 +2378,12 @@ msgstr "如果设为True当分录的日期不在会计周期内将不接受
#: code:addons/account/static/src/xml/account_move_reconciliation.xml:8
#, python-format
msgid "Good job!"
msgstr ""
msgstr "做得好!"
#. module: account
#: field:account.config.settings,module_account_asset:0
msgid "Assets management"
msgstr ""
msgstr "固定资产管理"
#. module: account
#: view:account.account:0
@ -2424,7 +2433,7 @@ msgstr "斜体(小一些)"
msgid ""
"If you want the journal should be control at opening/closing, check this "
"option"
msgstr ""
msgstr "如果你要这个分类账在开启和结账时被控制,选中此项。"
#. module: account
#: view:account.bank.statement:0
@ -2459,7 +2468,7 @@ msgstr "打开分录"
#. module: account
#: field:account.config.settings,purchase_refund_sequence_next:0
msgid "Next supplier credit note number"
msgstr ""
msgstr "下个供应商信用记录编号"
#. module: account
#: field:account.automatic.reconcile,account_ids:0
@ -2499,12 +2508,12 @@ msgstr "纳税明细表"
#: code:addons/account/account_cash_statement.py:256
#, python-format
msgid "You do not have rights to open this %s journal !"
msgstr ""
msgstr "你没有权限打开 %s 分类账。"
#. module: account
#: model:res.groups,name:account.group_supplier_inv_check_total
msgid "Check Total on supplier invoices"
msgstr ""
msgstr "检查供应商发票合计"
#. module: account
#: selection:account.invoice,state:0
@ -2579,7 +2588,7 @@ msgstr "RIB/IBAN 无效"
#. module: account
#: help:account.config.settings,default_sale_tax:0
msgid "This sale tax will be assigned by default on new products."
msgstr ""
msgstr "在新产品上,销项税将被指定为默认值"
#. module: account
#: report:account.general.ledger_landscape:0
@ -2718,7 +2727,7 @@ msgstr "财务结构"
#: code:addons/account/account_move_line.py:592
#, python-format
msgid "You cannot create journal items on a closed account %s %s."
msgstr ""
msgstr "你不能在关闭的科目%s %s 上面创建分类账分录。"
#. module: account
#: field:account.period.close,sure:0
@ -2753,7 +2762,7 @@ msgstr "草稿状态的发票"
#. module: account
#: view:product.category:0
msgid "Account Properties"
msgstr ""
msgstr "科目属性"
#. module: account
#: view:account.partner.reconcile.process:0
@ -2840,7 +2849,7 @@ msgstr "EXJ"
#. module: account
#: view:account.invoice.refund:0
msgid "Create Credit Note"
msgstr ""
msgstr "产生一张红字发票"
#. module: account
#: field:product.template,supplier_taxes_id:0
@ -2888,7 +2897,7 @@ msgstr ""
#: code:addons/account/wizard/account_state_open.py:37
#, python-format
msgid "Invoice is already reconciled."
msgstr ""
msgstr "发票已经被核销"
#. module: account
#: view:account.analytic.cost.ledger.journal.report:0
@ -2936,7 +2945,7 @@ msgstr "辅助核算项"
#: field:account.config.settings,default_purchase_tax:0
#: field:account.config.settings,purchase_tax:0
msgid "Default purchase tax"
msgstr ""
msgstr "默认进项税"
#. module: account
#: view:account.account:0
@ -3153,13 +3162,13 @@ msgstr ""
msgid ""
"Selected invoice(s) cannot be confirmed as they are not in 'Draft' or 'Pro-"
"Forma' state."
msgstr ""
msgstr "选择的发票不能被确认,因为它们不是“草稿”或者“形式发票”状态"
#. module: account
#: code:addons/account/account.py:1114
#, python-format
msgid "You should choose the periods that belong to the same company."
msgstr ""
msgstr "你要选择属于同一个公司的会计区间"
#. module: account
#: model:ir.actions.act_window,name:account.action_report_account_sales_tree_all
@ -3172,17 +3181,17 @@ msgstr "销售科目"
#: code:addons/account/account.py:1471
#, python-format
msgid "You cannot delete a posted journal entry \"%s\"."
msgstr ""
msgstr "你不能删除已经登帐的分类账分录\"%s\"."
#. module: account
#: view:account.invoice:0
msgid "Accounting Period"
msgstr ""
msgstr "会计期间"
#. module: account
#: field:account.config.settings,sale_journal_id:0
msgid "Sale journal"
msgstr ""
msgstr "销售分类帐"
#. module: account
#: code:addons/account/account.py:2323
@ -3198,7 +3207,7 @@ msgstr "您必须定义这 '%s' 的辅助核算账簿!"
msgid ""
"This journal already contains items, therefore you cannot modify its company "
"field."
msgstr ""
msgstr "这个分类账已经包含了分录,因此不能修改他的公司字段"
#. module: account
#: code:addons/account/account.py:408
@ -3206,7 +3215,7 @@ msgstr ""
msgid ""
"You need an Opening journal with centralisation checked to set the initial "
"balance."
msgstr ""
msgstr "你需要一个打开的分类账,集中设置初始余额。"
#. module: account
#: model:ir.actions.act_window,name:account.action_tax_code_list
@ -3275,7 +3284,7 @@ msgstr "必需的"
#. module: account
#: field:wizard.multi.charts.accounts,only_one_chart_template:0
msgid "Only One Chart Template Available"
msgstr ""
msgstr "只有一个图表模版可用。"
#. module: account
#: view:account.chart.template:0
@ -3288,7 +3297,7 @@ msgstr "费用科目"
#: field:account.bank.statement,message_summary:0
#: field:account.invoice,message_summary:0
msgid "Summary"
msgstr ""
msgstr "摘要"
#. module: account
#: help:account.invoice,period_id:0
@ -3387,7 +3396,7 @@ msgstr "试算平衡"
#: code:addons/account/account.py:430
#, python-format
msgid "Unable to adapt the initial balance (negative value)."
msgstr ""
msgstr "不能适应初始余额(负数)"
#. module: account
#: selection:account.invoice,type:0
@ -3406,7 +3415,7 @@ msgstr "选择会计年度"
#: view:account.config.settings:0
#: view:account.installer:0
msgid "Date Range"
msgstr ""
msgstr "日期范围"
#. module: account
#: view:account.period:0
@ -3454,7 +3463,7 @@ msgstr ""
#: code:addons/account/account.py:2650
#, python-format
msgid "There is no parent code for the template account."
msgstr ""
msgstr "模版科目没有上级代码"
#. module: account
#: help:account.chart.template,code_digits:0
@ -3481,7 +3490,7 @@ msgstr "总是"
#: field:account.config.settings,module_account_accountant:0
msgid ""
"Full accounting features: journals, legal statements, chart of accounts, etc."
msgstr ""
msgstr "全部会计特性:分类账,税务报表,会计科目表 等等"
#. module: account
#: view:account.analytic.line:0
@ -3538,12 +3547,12 @@ msgstr "电子文件"
#. module: account
#: constraint:res.partner:0
msgid "Error: Invalid ean code"
msgstr ""
msgstr "错误:无效的(EAN)条码"
#. module: account
#: field:account.config.settings,has_chart_of_accounts:0
msgid "Company has a chart of accounts"
msgstr ""
msgstr "公司有一个会计科目表"
#. module: account
#: view:account.payment.term.line:0
@ -3559,7 +3568,7 @@ msgstr "业务伙伴会计帐本(往来帐)"
#: code:addons/account/account_invoice.py:1321
#, python-format
msgid "%s <b>created</b>."
msgstr ""
msgstr "%s <b>被创建</b>."
#. module: account
#: help:account.journal.column,sequence:0
@ -3569,7 +3578,7 @@ msgstr "指定账簿栏目的序列"
#. module: account
#: view:account.period:0
msgid "Account Period"
msgstr ""
msgstr "会计期间"
#. module: account
#: help:account.account,currency_id:0
@ -3594,7 +3603,7 @@ msgstr "科目一览表模板"
#. module: account
#: view:account.bank.statement:0
msgid "Transactions"
msgstr ""
msgstr "交易"
#. module: account
#: model:ir.model,name:account.model_account_unreconcile_reconcile
@ -3691,7 +3700,7 @@ msgstr "会计应用程序设置"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_vat_declaration
msgid "Account Tax Declaration"
msgstr ""
msgstr "会计税务申报"
#. module: account
#: view:account.payment.term.line:0
@ -3705,7 +3714,7 @@ msgid ""
"You cannot create an invoice on a centralized journal. Uncheck the "
"centralized counterpart box in the related journal from the configuration "
"menu."
msgstr ""
msgstr "你不能在汇总账簿上面创建发票。在配置菜单中 相关的 分类账簿表单里不要选中“合并对方科目”。"
#. module: account
#: field:account.bank.statement,balance_start:0
@ -3730,7 +3739,7 @@ msgstr "关闭一个会计期间"
#: view:account.bank.statement:0
#: field:account.cashbox.line,subtotal_opening:0
msgid "Opening Subtotal"
msgstr ""
msgstr "期初小计"
#. module: account
#: field:account.financial.report,display_detail:0
@ -4381,7 +4390,9 @@ msgid ""
"entries of all fiscal years. Note that you should define it with default "
"debit/credit accounts, of type 'situation' and with a centralized "
"counterpart."
msgstr "最好使用一个专用的账簿去控制所有会计年度的开账分录。注意您应该设定默认的借方/贷方科目,“状态”的类型和能汇总账簿对应。"
msgstr ""
"最好使用一个专用的账簿去控制所有会计年度的开账分录。\r\n"
"注意您应该设定默认的借方/贷方科目,类型是 “期初/期末状态”,并且选中“合并对方科目”。"
#. module: account
#: view:account.installer:0
@ -5229,7 +5240,7 @@ msgstr "发票草稿已生效。 "
msgid ""
"Set the account that will be set by default on invoice tax lines for "
"invoices. Leave empty to use the expense account."
msgstr ""
msgstr "设置科目,用于退款时发票上默认税科目。留空使用费用科目。"
#. module: account
#: code:addons/account/account.py:947
@ -5577,6 +5588,14 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" 单击以注册一个新的账簿\n"
" </p><p>\n"
" 这个视图给会计人员使用为了在Openerp中快速登记分录。\n"
" 如果要登记供应商发票从记录费用科目行开始。Openerp将\n"
" 建议你自动处理科目相关的税,以及对方科目 \"应付帐款\"。\n"
" </p>\n"
" "
#. module: account
#: view:account.move.line:0
@ -7686,7 +7705,7 @@ msgid ""
"Check this box to determine that each entry of this journal won't create a "
"new counterpart but will share the same counterpart. This is used in fiscal "
"year closing."
msgstr "勾选此项,在会计年度关闭时, 确定每个账簿的分录不会产生新副本, 而是共享同一副本。"
msgstr "选中此项,在年终结转时,确定每个分类账簿的分录不会产生新的对方科目, 而是共享同一对方科目。"
#. module: account
#: field:account.bank.statement,closing_date:0

View File

@ -211,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') &gt; formatLang((line['date_maturity'])) and formatLang(line['debit'] - line['credit'], currency_obj = company.currency_id) ]]</para>
<para style="terp_default_Right_9">[[ (time.strftime('%Y-%m-%d') &gt; 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>

View File

@ -14,7 +14,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-30 05:08+0000\n"
"X-Launchpad-Export-Date: 2012-12-01 05:09+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_asset

View File

@ -20,7 +20,7 @@
##############################################################################
{
'name': 'Follow-up Management',
'name': 'Payment Follow-up Management',
'version': '1.0',
'category': 'Accounting & Finance',
'description': """
@ -29,19 +29,18 @@ Module to automate letters for unpaid invoices, with multi-level recalls.
You can define your multiple levels of recall through the menu:
---------------------------------------------------------------
**Invoicing** / **Configuration** / **Miscellaneous** / **Follow-ups**
Configuration / Follow-Up Levels
Once it is defined, you can automatically print recalls every day through simply clicking on the menu:
------------------------------------------------------------------------------------------------------
**Invoicing** / **Periodical Processing** / **Billing** / **Send follow-ups**
Payment Follow-Up / Send Email and letters
It will generate a PDF with all the letters according to the the different levels
of recall defined. You can define different policies for different companies. You
can also send mail to the customer.
It will generate a PDF / send emails / set manual actions according to the the different levels
of recall defined. You can define different policies for different companies.
Note that if you want to check the follow-up level for a given partner/account entry, you can do from in the menu:
------------------------------------------------------------------------------------------------------------------
**Invoicing** / **Reporting** / **Generic Reporting** / **Partners** / **Follow-ups Sent**
Reporting / Accounting / **Follow-ups Analysis
""",
'author': 'OpenERP SA',
@ -51,16 +50,16 @@ Note that if you want to check the follow-up level for a given partner/account e
'data': [
'security/account_followup_security.xml',
'security/ir.model.access.csv',
'wizard/account_followup_print_view.xml',
'report/account_followup_report.xml',
'account_followup_demo.xml', # Defined by default
'account_followup_view.xml',
'account_followup_data.xml',
'account_followup_view.xml',
'account_followup_customers.xml',
'wizard/account_followup_print_view.xml',
],
'demo': [],
'demo': ['account_followup_demo.xml'],
'test': [
'test/account_followup.yml',
'test/account_followup_report.yml',
#TODO 'test/account_followup_report.yml', --> Need to wait for second step in order to check report (expects after first)
],
'installable': True,
'auto_install': False,

View File

@ -20,37 +20,66 @@
##############################################################################
from osv import fields, osv
from lxml import etree
from tools.translate import _
class followup(osv.osv):
_name = 'account_followup.followup'
_description = 'Account Follow-up'
_rec_name = 'name'
_columns = {
'name': fields.char('Name', size=64, required=True),
'description': fields.text('Description'),
'followup_line': fields.one2many('account_followup.followup.line', 'followup_id', 'Follow-up'),
'company_id': fields.many2one('res.company', 'Company', required=True),
'name': fields.related('company_id', 'name', string = "Name"),
}
_defaults = {
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'account_followup.followup', context=c),
}
followup()
_sql_constraints = [('company_uniq', 'unique(company_id)', 'Only one follow-up per company is allowed')]
class followup_line(osv.osv):
def _get_default_template(self, cr, uid, ids, context=None):
dummy, templ = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account_followup', 'email_template_account_followup_default')
return templ
_name = 'account_followup.followup.line'
_description = 'Follow-up Criteria'
_columns = {
'name': fields.char('Name', size=64, required=True),
'name': fields.char('Follow-Up Action', size=64, required=True),
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of follow-up lines."),
'delay': fields.integer('Days of delay'),
'start': fields.selection([('days','Net Days'),('end_of_month','End of Month')], 'Type of Term', size=64, required=True),
'delay': fields.integer('Due Days', help="The number of days after the due date of the invoice to wait before sending the reminder. Could be negative if you want to send a polite alert beforehand.", required=True),
'followup_id': fields.many2one('account_followup.followup', 'Follow Ups', required=True, ondelete="cascade"),
'description': fields.text('Printed Message', translate=True),
'send_email':fields.boolean('Send an Email', help="When processing, it will send an email"),
'send_letter':fields.boolean('Send a Letter', help="When processing, it will print a letter"),
'manual_action':fields.boolean('Manual Action', help="When processing, it will set the manual action to be taken for that customer. "),
'manual_action_note':fields.text('Action To Do', placeholder="e.g. Give a phone call, check with others , ..."),
'manual_action_responsible_id':fields.many2one('res.users', 'Assign a Responsible', ondelete='set null'),
'email_template_id':fields.many2one('email.template', 'Email Template', ondelete='set null'),
}
_order = 'delay'
_sql_constraints = [('days_uniq', 'unique(followup_id, delay)', 'Days of the follow-up levels must be different')]
_defaults = {
'start': 'days',
'send_email': True,
'send_letter': True,
'manual_action':False,
'description': """
Dear %(partner_name)s,
Exception made if there was a mistake of ours, it seems that the following amount stays unpaid. Please, take appropriate measures in order to carry out this payment in the next 8 days.
Would your payment have been carried out after this mail was sent, please ignore this message. Do not hesitate to contact our accounting department at (+32).10.68.94.39.
Best Regards,
""",
'email_template_id': _get_default_template,
}
def _check_description(self, cr, uid, ids, context=None):
for line in self.browse(cr, uid, ids, context=context):
if line.description:
@ -64,40 +93,193 @@ class followup_line(osv.osv):
(_check_description, 'Your description is invalid, use the right legend or %% if you want to use the percent character.', ['description']),
]
followup_line()
class account_move_line(osv.osv):
def _get_result(self, cr, uid, ids, name, arg, context=None):
res = {}
for aml in self.browse(cr, uid, ids, context=context):
res[aml.id] = aml.debit - aml.credit
return res
_inherit = 'account.move.line'
_columns = {
'followup_line_id': fields.many2one('account_followup.followup.line', 'Follow-up Level'),
'followup_line_id': fields.many2one('account_followup.followup.line', 'Follow-up Level',
ondelete='restrict'), #restrict deletion of the followup line
'followup_date': fields.date('Latest Follow-up', select=True),
'result':fields.function(_get_result, type='float', method=True,
string="Balance") #'balance' field is not the same
}
account_move_line()
class res_company(osv.osv):
_inherit = "res.company"
class email_template(osv.osv):
_inherit = 'email.template'
# Adds current_date to the context. That way it can be used to put
# the account move lines in bold that are overdue in the email
def render_template(self, cr, uid, template, model, res_id, context=None):
context['current_date'] = fields.date.context_today(cr, uid, context)
return super(email_template, self).render_template(cr, uid, template, model, res_id, context=context)
class res_partner(osv.osv):
def fields_view_get(self, cr, uid, view_id=None, view_type=None, context=None, toolbar=False, submenu=False):
res = super(res_partner, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context,
toolbar=toolbar, submenu=submenu)
context = context or {}
if view_type == 'form' and context.get('Followupfirst'):
doc = etree.XML(res['arch'], parser=None, base_url=None)
first_node = doc.xpath("//page[@name='followup_tab']")
root = first_node[0].getparent()
root.insert(0, first_node[0])
res['arch'] = etree.tostring(doc, encoding="utf-8")
return res
def _get_latest(self, cr, uid, ids, names, arg, context=None, company_id=None):
res={}
if company_id == None:
company = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id
else:
company = self.pool.get('res.company').browse(cr, uid, company_id, context=context)
for partner in self.browse(cr, uid, ids, context=context):
amls = partner.unreconciled_aml_ids
latest_date = False
latest_level = False
latest_days = False
latest_level_without_lit = False
latest_days_without_lit = False
for aml in amls:
if (aml.company_id == company) and (aml.followup_line_id != False) and (not latest_days or latest_days < aml.followup_line_id.delay):
latest_days = aml.followup_line_id.delay
latest_level = aml.followup_line_id.id
if (aml.company_id == company) and (not latest_date or latest_date < aml.followup_date):
latest_date = aml.followup_date
if (aml.company_id == company) and (aml.blocked == False) and (aml.followup_line_id != False and
(not latest_days_without_lit or latest_days_without_lit < aml.followup_line_id.delay)):
latest_days_without_lit = aml.followup_line_id.delay
latest_level_without_lit = aml.followup_line_id.id
res[partner.id] = {'latest_followup_date': latest_date,
'latest_followup_level_id': latest_level,
'latest_followup_level_id_without_lit': latest_level_without_lit}
return res
def do_partner_manual_action(self, cr, uid, partner_ids, context=None):
#partner_ids -> res.partner
for partner in self.browse(cr, uid, partner_ids, context=context):
#Check action: check if the action was not empty, if not add
action_text= ""
if partner.payment_next_action:
action_text = (partner.payment_next_action or '') + "\n" + (partner.latest_followup_level_id_without_lit.manual_action_note or '')
else:
action_text = partner.latest_followup_level_id_without_lit.manual_action_note or ''
#Check date: put the minimum date if it existed already
action_date = (partner.payment_next_action_date and min(partner.payment_next_action_date, fields.date.context_today(cr, uid, context))
) or fields.date.context_today(cr, uid, context)
# Check responsible: if partner has not got a responsible already, take from follow-up
responsible_id = False
if partner.payment_responsible_id:
responsible_id = partner.payment_responsible_id.id
else:
p = partner.latest_followup_level_id_without_lit.manual_action_responsible_id
responsible_id = p and p.id or False
self.write(cr, uid, [partner.id], {'payment_next_action_date': action_date,
'payment_next_action': action_text,
'payment_responsible_id': responsible_id})
def do_partner_print(self, cr, uid, wizard_partner_ids, data, context=None):
#wizard_partner_ids are ids from special view, not from res.partner
if not wizard_partner_ids:
return {}
data['partner_ids'] = wizard_partner_ids
datas = {
'ids': [],
'model': 'account_followup.followup',
'form': data
}
return {
'type': 'ir.actions.report.xml',
'report_name': 'account_followup.followup.print',
'datas': datas,
}
def do_partner_mail(self, cr, uid, partner_ids, context=None):
#partner_ids are res.partner ids
# If not defined by latest follow-up level, it will be the default template if it can find it
mtp = self.pool.get('email.template')
unknown_mails = 0
for partner in self.browse(cr, uid, partner_ids, context=context):
if partner.email and partner.email.strip():
level = partner.latest_followup_level_id_without_lit
if level and level.send_email and level.email_template_id and level.email_template_id.id:
mtp.send_mail(cr, uid, level.email_template_id.id, partner.id, context=context)
else:
mail_template_id = self.pool.get('ir.model.data').get_object_reference(cr, uid,
'account_followup', 'email_template_account_followup_default')
mtp.send_mail(cr, uid, mail_template_id[1], partner.id, context=context)
else:
unknown_mails = unknown_mails + 1
action_text = _("Email not sent because of email address of partner not filled in")
if partner.payment_next_action_date:
payment_action_date = min(fields.date.context_today(cr, uid, context), partner.payment_next_action_date)
else:
payment_action_date = fields.date.context_today(cr, uid, context)
if partner.payment_next_action:
payment_next_action = partner.payment_next_action + " + " + action_text
else:
payment_next_action = action_text
self.write(cr, uid, [partner.id], {'payment_next_action_date': payment_action_date,
'payment_next_action': payment_next_action}, context=context)
return unknown_mails
def action_done(self, cr, uid, ids, context=None):
return self.write(cr, uid, ids, {'payment_next_action_date': False, 'payment_next_action':'', 'payment_responsible_id': False}, context=context)
def do_button_print(self, cr, uid, ids, context=None):
assert(len(ids) == 1)
self.message_post(cr, uid, [ids[0]], body=_('Printed overdue payments report'), context=context)
datas = {
'ids': ids,
'model': 'res.partner',
'form': self.read(cr, uid, ids[0], context=context)
}
return {
'type': 'ir.actions.report.xml',
'report_name': 'account.overdue',
'datas': datas,
'nodestroy' : True
}
_inherit = "res.partner"
_columns = {
'follow_up_msg': fields.text('Follow-up Message', translate=True),
}
_defaults = {
'follow_up_msg': '''
Date: %(date)s
Dear %(partner_name)s,
Please find in attachment a reminder of all your unpaid invoices, for a total amount due of:
%(followup_amount).2f %(company_currency)s
Thanks,
--
%(user_signature)s
%(company_name)s
'''
}
res_company()
'payment_responsible_id':fields.many2one('res.users', ondelete='set null', string='Follow-up Responsible',
help="Responsible for making sure the action happens."),
'payment_note':fields.text('Customer Payment Promise', help="Payment Note"),
'payment_next_action':fields.text('Next Action',
help="This is the next action to be taken by the user. It will automatically be set when the action fields are empty and the partner gets a follow-up level that requires a manual action. "),
'payment_next_action_date':fields.date('Next Action Date',
help="This is when further follow-up is needed. The date will have been set to the current date if the action fields are empty and the partner gets a follow-up level that requires a manual action. "),
'unreconciled_aml_ids':fields.one2many('account.move.line', 'partner_id', domain=['&', ('reconcile_id', '=', False), '&',
('account_id.active','=', True), '&', ('account_id.type', '=', 'receivable'), ('state', '!=', 'draft')]),
'latest_followup_date':fields.function(_get_latest, method=True, type='date', string="Latest Follow-up Date",
help="Latest date that the follow-up level of the partner was changed",
store=False,
multi="latest"),
'latest_followup_level_id':fields.function(_get_latest, method=True,
type='many2one', relation='account_followup.followup.line', string="Latest Follow-up Level",
help="The maximum follow-up level",
store=False,
multi="latest"),
'latest_followup_level_id_without_lit':fields.function(_get_latest, method=True,
type='many2one', relation='account_followup.followup.line', string="Latest Follow-up Level without litigation",
help="The maximum follow-up level without taking into account the account move lines with litigation",
store=False,
multi="latest"),
'payment_amount_due':fields.related('credit', type='float', string="Total amount due", readonly=True),
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,157 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- followup of customers views -->
<record id="customer_followup_tree" model="ir.ui.view">
<field name="name">res.partner.followup.inherit.tree</field>
<field name="model">res.partner</field>
<field name="priority" eval="20"/>
<field name="arch" type="xml">
<tree string="Customer Followup">
<field name="name"/>
<field name="payment_next_action_date"/>
<field name="payment_next_action"/>
<field name="user_id" invisible="1"/>
<field name="parent_id" invisible="1"/>
<field name="payment_responsible_id"/>
<field name="credit"/>
</tree>
</field>
</record>
<record id="customer_followup_search_view" model="ir.ui.view">
<field name="name">Search</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_res_partner_filter"/>
<field name="arch" type="xml">
<search string="Search Partner" position="inside">
<group string="Follow-up">
<filter string="Partners with Credits" domain="[('credit', '>', 0.0)]" name="credits"/>
<separator/>
<filter string="Follow-ups To Do" domain="[('payment_next_action_date', '&lt;=', time.strftime('%%Y-%%m-%%d')), ('credit', '>', 0.0)]" name="todo"/>
<filter string="Future Follow-ups" domain="[('payment_next_action_date', '&gt;', time.strftime('%%Y-%%m-%%d')), ('credit', '>', 0.0)]"/>
<separator/>
<filter string="No Responsible" domain="[('payment_responsible_id', '=', False)]"/>
<filter string="My Follow-ups" domain="[('payment_responsible_id','=', uid)]"/>
</group>
<group expand="1" string="Group By...">
<filter string="Responsible" context="{'group_by':'payment_responsible_id'}"/>
</group>
</search>
</field>
</record>
<record id="customer_followup_search_view2" model="ir.ui.view">
<field name="name">Search</field>
<field name="model">res.partner</field>
<field name="arch" type="xml">
<search string="Search view">
<field name="name"/>
<field name="payment_next_action"/>
<!--<filter string="Actions to be taken with overdue amount" domain="['&amp;', ('payment_amount_outstanding', '>', 0.0), ('payment_next_action_date', '&lt;=', time.strftime('%%Y-%%m-%%d'))]"/>
<separator/>-->
<filter string="Overdue amount" domain="[('credit', '>', 0.0)]"/>
<separator/>
<filter string="Follow-ups to do" domain="[('payment_next_action_date', '&lt;=', time.strftime('%%Y-%%m-%%d'))]"/>
<separator/>
<!--filter string="Future follow-ups" domain="['&', ('payment_next_action', '!=', ''), ('payment_next_action_date', '>', time.strftime('%%Y-%%m-%%d'))]"/>-->
<separator/>
<filter string="Without responsible" domain="[('payment_responsible_id', '=', False)]"/>
<filter string="I am responsible" domain="[('payment_responsible_id','=', uid)]"/>
<group expand="1" string="Group by">
<filter string="Responsible" context="{'group_by':'payment_responsible_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_customer_followup" model="ir.actions.act_window">
<field name="name">Manual Follow-Ups</field>
<field name="view_id" ref="customer_followup_tree"/>
<field name="res_model">res.partner</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{} </field>
<field name="context">{'Followupfirst':True, 'search_default_todo': True} </field>
<field name="search_view_id" ref="customer_followup_search_view"/>
</record>
<!--Inherited view -->
<record id="view_partner_inherit_followup_form" model="ir.ui.view">
<field name="name">res.partner.followup.form.inherit</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="model">res.partner</field>
<field name="arch" type="xml" >
<page string="Accounting" position="before" version="7.0">
<page string="Payment Follow-up" groups="account.group_account_invoice" name="followup_tab">
<div class="oe_right oe_button_box" name="followup_button">
<button name="do_button_print" type="object" string="Print Overdue Payments" groups="account.group_account_user"
help="Print overdue payments report independent of follow-up line" attrs="{'invisible':[('credit', '&lt;=', 0.0)]}" />
<button name="do_partner_mail" type="object" string="Send Overdue Email" groups="account.group_account_user"
help="If not specified by the latest follow-up level, it will send from the default follow-up of overdue invoices template" attrs="{'invisible':[('credit', '&lt;=', 0.0)]}"/>
</div>
<p attrs="{'invisible':[('latest_followup_date','=', False)]}">
The <field name="latest_followup_date" class = "oe_inline"/>, the latest payment follow-up
was: <field name="latest_followup_level_id" class="oe_inline"/>
</p>
<group>
<field name="payment_responsible_id" placeholder="Responsible of credit collection" class="oe_inline"/>
<label for="payment_next_action"/>
<div>
<field name="payment_next_action_date" class="oe_inline"/>
<button name="action_done" type="object" string="⇾ Mark as Done"
help="Click to mark the action as done." class="oe_link"
attrs="{'invisible':[('payment_next_action_date','=', False)]}"
groups="base.group_partner_manager"/>
<field name="payment_next_action" placeholder="e.g. Give a phonecall, Check if it's paid, ..."/>
</div>
</group>
<label for="payment_note" class="oe_edit_only"/>
<field name="payment_note" placeholder="e.g. 50%% before 15th of May, balance before 1st of July."/>
<p class="oe_grey">
Below is the history of the transactions of this
customer. You can set an invoice in litigation in
order to not include it in the next payment
follow-ups.
</p>
<field name="unreconciled_aml_ids">
<tree string="Account Move line" editable="bottom" create="false" delete="false" colors="red:(not date_maturity or date_maturity&lt;=current_date) and result&gt;0">
<field name="date" readonly="True"/>
<field name="move_id" readonly="True"/>
<field name="blocked" string="Litigation"/>
<field name="date_maturity" readonly="True"/>
<field name="reconcile_partial_id" readonly="True"/>
<field name="result" readonly="True"/>
<field name="followup_line_id" invisible='1'/>
</tree>
</field>
<group class="oe_subtotal_footer oe_right">
<field name="payment_amount_due"/>
</group>
<div class="oe_clear"/>
</page>
</page>
</field>
</record>
<record id="action_view_customer_followup_form" model="ir.actions.act_window.view">
<field name="sequence" eval="2"/>
<field name="view_mode">form</field>
<field name="view_id" ref="view_partner_inherit_followup_form"/>
<field name="act_window_id" ref="action_customer_followup"/>
</record>
<record id="action_view_customer_followup_tree" model="ir.actions.act_window.view">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="customer_followup_tree"/>
<field name="act_window_id" ref="action_customer_followup"/>
</record>
<!-- Menus about followup of customers -->
<menuitem id="account_followup_s" action="action_customer_followup"
parent="menu_finance_followup" name="Do Manual Follow-Ups" sequence="3"/>
</data>
</openerp>

View File

@ -1,19 +1,378 @@
<?xml version="1.0"?>
<openerp>
<data>
<record model="res.company" id="base.main_company">
<field name="follow_up_msg">Date : %(date)s
<!-- Mail template is done in a NOUPDATE block
so users can freely customize/delete them -->
<data noupdate="1">
<!--Mail template level 0-->
<record id="email_template_account_followup_level0" model="email.template">
<field name="name">Follow-up of overdue invoices level 0</field>
<field name="email_from">${user.email or ''}</field>
<field name="subject">${user.company_id.name} Payment Follow-up</field>
<field name="email_to">${object.email}</field>
<field name="lang">${object.lang}</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); ">
<p>Dear ${object.name},</p>
<p>
Exception made if there was a mistake of ours, it seems that the following amount stays unpaid. Please, take
appropriate measures in order to carry out this payment in the next 8 days.
Would your payment have been carried out after this mail was sent, please ignore this message. Do not hesitate to
contact our accounting department at (+32).10.68.94.39.
</p>
<br/>
Best Regards,
<br/>
${user.name}
<br/>
<br/>
<%
from openerp.addons.account_followup.report import account_followup_print
rml_parse = account_followup_print.report_rappel(object._cr, user.id, "followup_rml_parser")
final_res = rml_parse._lines_get_with_partner(object, user.company_id.id)
followup_table = ''
for currency_dict in final_res:
currency_symbol = currency_dict.get('line', [{'currency_id': user.company_id.currency_id}])[0]['currency_id'].symbol
followup_table += '''
<table border="2" width=100%%>
<tr>
<td>Invoice date</td>
<td>Reference</td>
<td>Due date</td>
<td>Amount (%s)</td>
<td>Lit.</td>
</tr>
''' % (currency_symbol)
total = 0
for aml in currency_dict['line']:
block = aml['blocked'] and 'X' or ' '
total += aml['balance']
strbegin = "<TD> "
strend = "</TD> "
date = aml['date_maturity'] or aml['date']
if date <= ctx['current_date'] and aml['balance'] > 0:
strbegin = "<TD><B>"
strend = "</B></TD>"
followup_table +="<TR>" + strbegin + str(aml['date']) + strend + strbegin + aml['ref'] + strend + strbegin + str(date) + strend + strbegin + str(aml['balance']) + strend + strbegin + block + strend + "</TR>"
total = rml_parse.formatLang(total, dp='Account', currency_obj=object.company_id.currency_id)
followup_table += '''<tr> </tr>
</table>
<center>Amount due: %s </center>''' % (total)
%>
${followup_table}
<br/>
</div>
]]></field>
</record>
<!--Mail template level 1 -->
<record id="email_template_account_followup_level1" model="email.template">
<field name="name">Follow-up of overdue invoices level 1</field>
<field name="email_from">${user.email or ''}</field>
<field name="subject">${user.company_id.name} Payment Follow-up</field>
<field name="email_to">${object.email}</field>
<field name="lang">${object.lang}</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); ">
<p>Dear ${object.name},</p>
<p>
We are disappointed to see that despite sending a reminder, that your account is now seriously overdue.
It is essential that immediate payment is made, otherwise we will have to consider placing a stop on your account
which means that we will no longer be able to supply your company with (goods/services).
Please, take appropriate measures in order to carry out this payment in the next 8 days.
If there is a problem with paying invoice that we are not aware of, do not hesitate to contact our accounting
department at (+32).10.68.94.39. so that we can resolve the matter quickly.
Details of due payments is printed below.
</p>
<br/>
Best Regards,
<br/>
${user.name}
<br/>
<br/>
<%
from openerp.addons.account_followup.report import account_followup_print
rml_parse = account_followup_print.report_rappel(object._cr, user.id, "followup_rml_parser")
final_res = rml_parse._lines_get_with_partner(object, user.company_id.id)
followup_table = ''
for currency_dict in final_res:
currency_symbol = currency_dict.get('line', [{'currency_id': user.company_id.currency_id}])[0]['currency_id'].symbol
followup_table += '''
<table border="2" width=100%%>
<tr>
<td>Invoice date</td>
<td>Reference</td>
<td>Due date</td>
<td>Amount (%s)</td>
<td>Lit.</td>
</tr>
''' % (currency_symbol)
total = 0
for aml in currency_dict['line']:
block = aml['blocked'] and 'X' or ' '
total += aml['balance']
strbegin = "<TD> "
strend = "</TD> "
date = aml['date_maturity'] or aml['date']
if date <= ctx['current_date'] and aml['balance'] > 0:
strbegin = "<TD><B>"
strend = "</B></TD>"
followup_table +="<TR>" + strbegin + str(aml['date']) + strend + strbegin + aml['ref'] + strend + strbegin + str(date) + strend + strbegin + str(aml['balance']) + strend + strbegin + block + strend + "</TR>"
total = rml_parse.formatLang(total, dp='Account', currency_obj=object.company_id.currency_id)
followup_table += '''<tr> </tr>
</table>
<center>Amount due: %s </center>''' % (total)
%>
${followup_table}
<br/>
</div>
]]></field>
</record>
<!--Email template -->
<record id="email_template_account_followup_level2" model="email.template">
<field name="name">Follow-up of overdue invoices level 2</field>
<field name="email_from">${user.email or ''}</field>
<field name="subject">${user.company_id.name} Payment Follow-up</field>
<field name="email_to">${object.email}</field>
<field name="lang">${object.lang}</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); ">
<p>Dear ${object.name},</p>
<p>
Despite several reminders, your account is still not settled.
Unless full payment is made in next 8 days, legal action for the recovery of the debt will be taken without
further notice.
I trust that this action will prove unnecessary and details of due payments is printed below.
In case of any queries concerning this matter, do not hesitate to contact our accounting department at (+32).10.68.94.39.
</p>
<br/>
Best Regards,
<br/>
${user.name}
<br/>
<br/>
<%
from openerp.addons.account_followup.report import account_followup_print
rml_parse = account_followup_print.report_rappel(object._cr, user.id, "followup_rml_parser")
final_res = rml_parse._lines_get_with_partner(object, user.company_id.id)
followup_table = ''
for currency_dict in final_res:
currency_symbol = currency_dict.get('line', [{'currency_id': user.company_id.currency_id}])[0]['currency_id'].symbol
followup_table += '''
<table border="2" width=100%%>
<tr>
<td>Invoice date</td>
<td>Reference</td>
<td>Due date</td>
<td>Amount (%s)</td>
<td>Lit.</td>
</tr>
''' % (currency_symbol)
total = 0
for aml in currency_dict['line']:
block = aml['blocked'] and 'X' or ' '
total += aml['balance']
strbegin = "<TD> "
strend = "</TD> "
date = aml['date_maturity'] or aml['date']
if date <= ctx['current_date'] and aml['balance'] > 0:
strbegin = "<TD><B>"
strend = "</B></TD>"
followup_table +="<TR>" + strbegin + str(aml['date']) + strend + strbegin + aml['ref'] + strend + strbegin + str(date) + strend + strbegin + str(aml['balance']) + strend + strbegin + block + strend + "</TR>"
total = rml_parse.formatLang(total, dp='Account', currency_obj=object.company_id.currency_id)
followup_table += '''<tr> </tr>
</table>
<center>Amount due: %s </center>''' % (total)
%>
${followup_table}
<br/>
</div>
]]></field>
</record>
<!-- Default follow up message -->
<record id="email_template_account_followup_default" model="email.template">
<field name="name">Default follow-up of overdue invoices</field>
<field name="email_from">${user.email or ''}</field>
<field name="subject">${user.company_id.name} Payment Follow-up</field>
<field name="email_to">${object.email}</field>
<field name="lang">${object.lang}</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); ">
<p>Dear ${object.name},</p>
<p>
Exception made if there was a mistake of ours, it seems that the following amount stays unpaid. Please, take
appropriate measures in order to carry out this payment in the next 8 days.
Would your payment have been carried out after this mail was sent, please ignore this message. Do not hesitate to
contact our accounting department at (+32).10.68.94.39.
</p>
<br/>
Best Regards,
</br>
</br>
<br/>
${user.name}
<br/>
<br/>
<%
from openerp.addons.account_followup.report import account_followup_print
rml_parse = account_followup_print.report_rappel(object._cr, user.id, "followup_rml_parser")
final_res = rml_parse._lines_get_with_partner(object, user.company_id.id)
followup_table = ''
for currency_dict in final_res:
currency_symbol = currency_dict.get('line', [{'currency_id': user.company_id.currency_id}])[0]['currency_id'].symbol
followup_table += '''
<table border="2" width=100%%>
<tr>
<td>Invoice date</td>
<td>Reference</td>
<td>Due date</td>
<td>Amount (%s)</td>
<td>Lit.</td>
</tr>
''' % (currency_symbol)
total = 0
for aml in currency_dict['line']:
block = aml['blocked'] and 'X' or ' '
total += aml['balance']
strbegin = "<TD> "
strend = "</TD> "
date = aml['date_maturity'] or aml['date']
if date <= ctx['current_date'] and aml['balance'] > 0:
strbegin = "<TD><B>"
strend = "</B></TD>"
followup_table +="<TR>" + strbegin + str(aml['date']) + strend + strbegin + aml['ref'] + strend + strbegin + str(date) + strend + strbegin + str(aml['balance']) + strend + strbegin + block + strend + "</TR>"
total = rml_parse.formatLang(total, dp='Account', currency_obj=object.company_id.currency_id)
followup_table += '''<tr> </tr>
</table>
<center>Amount due: %s </center>''' % (total)
%>
${followup_table}
<br/>
</div>
]]></field>
</record>
<record id="demo_followup1" model="account_followup.followup">
<field name="company_id" ref="base.main_company"/>
</record>
<record id="demo_followup_line1" model="account_followup.followup.line">
<field name="name">Send first reminder email</field>
<field name="sequence">0</field>
<field name="delay">15</field>
<field name="followup_id" ref="demo_followup1"/>
<field name="send-email">True</field>
<field name="description">
Dear %(partner_name)s,
Please find in attachment a reminder of all your unpaid invoices, for a total amount due of:
Exception made if there was a mistake of ours, it seems that the following amount stays unpaid. Please, take appropriate measures in order to carry out this payment in the next 8 days.
%(followup_amount).2f %(company_currency)s
Would your payment have been carried out after this mail was sent, please ignore this message. Do not hesitate to contact our accounting department at (+32).10.68.94.39.
Thanks,
--
%(user_signature)s
%(company_name)s</field>
Best Regards,
</field>
<field name="email_template_id" ref="email_template_account_followup_level0"/>
</record>
<record id="demo_followup_line2" model="account_followup.followup.line">
<field name="name">Send reminder letter and email</field>
<field name="sequence">1</field>
<field name="delay">30</field>
<field name="followup_id" ref="demo_followup1"/>
<field name="email_template_id" ref="email_template_account_followup_level1"/>
<field name="send_email">True</field>
<field name="send_letter">True</field>
<field name="description">
Dear %(partner_name)s,
We are disappointed to see that despite sending a reminder, that your account is now seriously overdue.
It is essential that immediate payment is made, otherwise we will have to consider placing a stop on your account which means that we will no longer be able to supply your company with (goods/services).
Please, take appropriate measures in order to carry out this payment in the next 8 days.
If there is a problem with paying invoice that we are not aware of, do not hesitate to contact our accounting department at (+32).10.68.94.39. so that we can resolve the matter quickly.
Details of due payments is printed below.
Best Regards,
</field>
</record>
<record id="demo_followup_line3" model="account_followup.followup.line">
<field name="name">Call the customer on the phone</field>
<field name="sequence">3</field>
<field name="delay">40</field>
<field name="followup_id" ref="demo_followup1"/>
<field name="email_template_id" ref="email_template_account_followup_level2"/>
<field eval="False" name="send_email"/>
<field name="manual_action">True</field>
<field name="manual_action_note">Call the customer on the phone! </field>
<field name="description">
Dear %(partner_name)s,
Despite several reminders, your account is still not settled.
Unless full payment is made in next 8 days, then legal action for the recovery of the debt will be taken without further notice.
I trust that this action will prove unnecessary and details of due payments is printed below.
In case of any queries concerning this matter, do not hesitate to contact our accounting department at (+32).10.68.94.39.
Best Regards,
</field>
</record>
</data>
</openerp>

View File

@ -1,58 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<record id="demo_followup1" model="account_followup.followup">
<field name="name">Default Follow-up</field>
<field name="company_id" ref="base.main_company"/>
<field name="description">First letter after 15 net days, 30 net days and 45 days end of month levels.</field>
</record>
<record id="demo_followup_line1" model="account_followup.followup.line">
<field name="name">Level 0 : 15 net days</field>
<field name="sequence">0</field>
<field name="start">days</field>
<field name="delay">15</field>
<field name="followup_id" ref="demo_followup1"/>
<field name="description">
Dear %(partner_name)s,
Exception made if there was a mistake of ours, it seems that the following amount stays unpaid. Please, take appropriate measures in order to carry out this payment in the next 8 days.
Would your payment have been carried out after this mail was sent, please ignore this message. Do not hesitate to contact our accounting department at (+32).10.68.94.39.
Best Regards,
</field>
</record>
<record id="demo_followup_line2" model="account_followup.followup.line">
<field name="name">Level 1 : 30 net days</field>
<field name="sequence">1</field>
<field name="start">days</field>
<field name="delay">30</field>
<field name="followup_id" ref="demo_followup1"/>
<field name="description">
Dear %(partner_name)s,
We are disappointed to see that despite sending a reminder, that your account is now seriously overdue.
It is essential that immediate payment is made, otherwise we will have to consider placing a stop on your account which means that we will no longer be able to supply your company with (goods/services).
Please, take appropriate measures in order to carry out this payment in the next 8 days.
If there is a problem with paying invoice that we are not aware of, do not hesitate to contact our accounting department at (+32).10.68.94.39. so that we can resolve the matter quickly.
Details of due payments is printed below.
Best Regards,
</field>
</record>
<record id="demo_followup_line3" model="account_followup.followup.line">
<field name="name">Level 2 : 45 days end of month</field>
<field name="sequence">2</field>
<field name="start">end_of_month</field>
<field name="delay">45</field>
<data noupdate="1">
<record id="demo_followup_line4" model="account_followup.followup.line">
<field name="name">Urging reminder email</field>
<field name="sequence">4</field>
<field name="delay">50</field>
<field name="followup_id" ref="demo_followup1"/>
<field name="send_email">True</field>
<field name="email_template_id" ref="email_template_account_followup_level2"/>
<field name="description">
Dear %(partner_name)s,
@ -65,8 +20,29 @@ I trust that this action will prove unnecessary and details of due payments is p
In case of any queries concerning this matter, do not hesitate to contact our accounting department at (+32).10.68.94.39.
Best Regards,
</field>
</field>
</record>
<record id="demo_followup_line5" model="account_followup.followup.line">
<field name="name">Urging reminder letter</field>
<field name="sequence">5</field>
<field name="delay">60</field>
<field name="followup_id" ref="demo_followup1"/>
<field eval="False" name="send_email"/>
<field name="send_letter">True</field>
<field name="email_template_id" ref="email_template_account_followup_level2"/>
<field name="description">
Dear %(partner_name)s,
Despite several reminders, your account is still not settled.
Unless full payment is made in next 8 days, then legal action for the recovery of the debt will be taken without further notice.
I trust that this action will prove unnecessary and details of due payments is printed below.
In case of any queries concerning this matter, do not hesitate to contact our accounting department at (+32).10.68.94.39.
Best Regards,
</field>
</record>
</data>
</openerp>

View File

@ -1,14 +1,16 @@
<openerp>
<data>
<record id="view_account_followup_followup_line_tree" model="ir.ui.view">
<field name="name">account_followup.followup.line.tree</field>
<field name="model">account_followup.followup.line</field>
<field name="arch" type="xml">
<tree string="Follow-up Steps">
<tree string="Follow-up Steps" >
<field name="name"/>
<field name="delay"/>
<field name="start"/>
<field name="send_email"/>
<field name="send_letter"/>
<field name="manual_action"/>
</tree>
</field>
</record>
@ -18,19 +20,47 @@
<field name="model">account_followup.followup.line</field>
<field name="arch" type="xml">
<form string="Follow-up Steps" version="7.0">
<group col="4">
<field name="name"/>
<field name="delay"/>
<field name="start"/>
<label for="name" class="oe_edit_only"/>
<h1><field name="name"/></h1>
<div class="oe_inline">
After <field name="delay" class="oe_inline"/> days overdue, do the following actions:
</div>
<div>
<field name="manual_action" class="oe_inline"/>
<label for="manual_action"/>
</div><div>
<field name="send_email" class="oe_inline"/>
<label for="send_email"/>
</div><div>
<field name="send_letter" class="oe_inline"/>
<label for="send_letter"/>
</div>
<group string="Manual Action" attrs="{'invisible': [('manual_action', '=', False)]}">
<field name="manual_action_responsible_id"/>
<field name="manual_action_note" attrs="{'required': [('manual_action', '&lt;&gt;', False)]}"
placeholder="e.g. Call the customer, check if it's paid, ..."/>
</group>
<separator string="Message"/>
<field name="description"/>
<separator string="Legend"/>
<group>
<label string="%%(partner_name)s: Partner Name"/>
<label string="%%(date)s: Current Date"/>
<label string="%%(user_signature)s: User Name"/>
<label string="%%(company_name)s: User's Company Name"/>
<group string="Send an Email" attrs="{'invisible': [('send_email', '=', False)]}">
<field name="email_template_id" attrs="{'required': [('send_email', '&lt;&gt;', False)]}"/>
</group>
<group string="Send a Letter" attrs="{'invisible': [('send_letter', '=', False)]}">
<p colspan="2" class="oe_grey">
Write here the introduction in the letter,
according to the level of the follow-up. You can
use the following keywords in the text. Don't
forget to translate in all languages you installed
using to top right icon.
<group class="oe_grey">
<b>%%(partner_name)s</b>: Partner Name
<b>%%(date)s</b>: Current Date
<b>%%(user_signature)s</b>: User Name
<b>%%(company_name)s</b>: User's Company Name
</group>
</p>
<field name="description" nolabel="1" colspan="2"/>
</group>
</form>
</field>
@ -39,12 +69,18 @@
<record id="view_account_followup_followup_form" model="ir.ui.view">
<field name="name">account_followup.followup.form</field>
<field name="model">account_followup.followup</field>
<!-- <field name="group_ids" groups="base.group_multi_company"/>-->
<field name="arch" type="xml">
<form string="Follow-up" version="7.0">
<group col="4">
<field name="name"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
</group>
<h1><field name="company_id" widget="selection" class="oe_inline"/></h1>
<p class="oe_grey">
To remind customers of paying their invoices, you can
define different actions depending on how severely
overdue the customer is. These actions are bundled
into folow-up levels that are triggered when the due
date of the most overdue invoice has passed a certain
amount of days.
</p>
<field name="followup_line"/>
</form>
</field>
@ -55,8 +91,7 @@
<field name="model">account_followup.followup</field>
<field name="arch" type="xml">
<tree string="Follow-up">
<field name="name"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="company_id" /> <!--groups="base.group_multi_company"-->
</tree>
</field>
</record>
@ -66,31 +101,50 @@
<field name="model">account_followup.followup</field>
<field name="arch" type="xml">
<search string="Search Follow-up">
<field name="name" string="Follow-up"/>
<field name="company_id" groups="base.group_multi_company"/>
</search>
</field>
</record>
<record id="action_account_followup_definition_form" model="ir.actions.act_window">
<field name="name">Follow-ups</field>
<field name="name">Payment Follow-ups</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">account_followup.followup</field>
<field name="search_view_id" ref="view_account_followup_filter"/>
<field name="view_type">form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to define follow-up levels and their related messages.
Click to define follow-up levels and their related actions.
</p><p>
For each step, specify the message and the day of delay. Use
the legend to know the using code to adapt the email content to
the good context (good name, good date) and you can manage the
multi language of messages.
For each step, specify the actions to be taken and delay in days. It is
possible to use print and e-mail templates to send specific messages to
the customer.
</p>
</field>
</record>
<record id="action_account_manual_reconcile_receivable" model="ir.actions.act_window">
<field name="name">Reconcile Invoices &amp; Payments</field>
<field name="search_view_id" ref="view_account_followup_filter"/>
<field name="context">{'search_default_unreconciled': 1,'view_mode':True}</field>
<field name="domain">[('account_id.type', '=', 'receivable')]</field>
<field name="res_model">account.move.line</field>
<field name="view_id" ref="account.view_move_line_tree_reconcile"/>
<field name="view_mode">tree_account_reconciliation</field>
<field name="help" type="html">
<p>
No journal items found.
</p>
</field>
</record>
<menuitem action="action_account_followup_definition_form" id="account_followup_menu" parent="account.menu_configuration_misc"/>
<menuitem
name="Reconcile Invoices &amp; Payments"
action="action_account_manual_reconcile_receivable"
parent="menu_finance_followup"
sequence="0"
id="menu_manual_reconcile_followup"/>
<menuitem action="action_account_followup_definition_form" id="account_followup_menu" parent="account.menu_finance_configuration" name="Follow-up Levels"/>
<report auto="False" id="account_followup_followup_report" menu="False" model="account_followup.followup" name="account_followup.followup.print" rml="account_followup/report/account_followup_print.rml" string="Follow-up Report"/>
<record id="account_move_line_partner_tree" model="ir.ui.view">
@ -139,25 +193,5 @@
</field>
</record> -->
<act_window domain="[('reconcile_id', '=', False),('account_id.type','=','receivable')]" id="act_account_partner_account_move_all" name="Receivable Items" res_model="account.move.line" src_model="" view_id="account_move_line_partner_tree"/>
<!--<menuitem action="act_account_partner_account_move_all" id="menu_account_move_open_unreconcile" parent="account_followup.menu_action_followup_stat"/> -->
<act_window domain="[('reconcile_id', '=', False), ('account_id.type','=','payable')]" id="act_account_partner_account_move_payable_all" name="Payable Items" res_model="account.move.line" src_model="" view_id="account_move_line_partner_tree"/>
<!-- <menuitem action="act_account_partner_account_move_payable_all" id="menu_account_move_open_unreconcile_payable" parent="account_followup.menu_action_followup_stat"/> -->
<record model="ir.ui.view" id="view_company_inherit_followup_form">
<field name="name">res.company.followup.form.inherit</field>
<field name="inherit_id" ref="account.view_company_inherit_form"/>
<field name="model">res.company</field>
<field name="arch" type="xml">
<field name="overdue_msg" nolabel="1" colspan="4" position="after">
<separator string="Follow-up Message" colspan="4"/>
<field name="follow_up_msg" nolabel="1" colspan="4"/>
</field>
</field>
</record>
</data>
</openerp>

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-29 14:16+0000\n"
"Last-Translator: dquo <Unknown>\n"
"PO-Revision-Date: 2012-11-30 12:07+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-30 05:06+0000\n"
"X-Launchpad-Export-Date: 2012-12-01 05:07+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: account_followup
@ -540,6 +540,13 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" 单击定义催款级别和他们相关的信息\n"
" </p><p>\n"
" 每个步骤可指定消息和延时天数。\n"
" 能管理多种语言的消息。\n"
" </p>\n"
" "
#. module: account_followup
#: field:account_followup.stat,date_move_last:0

View File

@ -25,7 +25,7 @@ import pooler
from report import report_sxw
class report_rappel(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
def __init__(self, cr, uid, name, context=None):
super(report_rappel, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
'time': time,
@ -43,14 +43,17 @@ class report_rappel(report_sxw.rml_parse):
return all_lines
def _lines_get(self, stat_by_partner_line):
return self._lines_get_with_partner(stat_by_partner_line.partner_id, stat_by_partner_line.company_id.id)
def _lines_get_with_partner(self, partner, company_id):
pool = pooler.get_pool(self.cr.dbname)
moveline_obj = pool.get('account.move.line')
company_obj = pool.get('res.company')
obj_currency = pool.get('res.currency')
movelines = moveline_obj.search(self.cr, self.uid,
[('partner_id', '=', stat_by_partner_line.partner_id.id),
[('partner_id', '=', partner.id),
('account_id.type', '=', 'receivable'),
('reconcile_id', '=', False), ('state', '<>', 'draft'),('company_id','=', stat_by_partner_line.company_id.id)])
('reconcile_id', '=', False), ('state', '<>', 'draft'),('company_id','=', company_id)])
movelines = moveline_obj.browse(self.cr, self.uid, movelines)
base_currency = movelines[0].company_id.currency_id
final_res = []
@ -67,7 +70,7 @@ class report_rappel(report_sxw.rml_parse):
'date_maturity': line.date_maturity,
'balance': currency.id <> line.company_id.currency_id.id and line.amount_currency or (line.debit - line.credit),
'blocked': line.blocked,
'currency_id': currency.symbol or currency.name,
'currency_id': currency,
}
line_cur[currency.id]['line'].append(line_data)
@ -88,7 +91,7 @@ class report_rappel(report_sxw.rml_parse):
li_delay.sort(reverse=True)
text = ""
a = {}
partner_line_ids = pooler.get_pool(self.cr.dbname).get('account.move.line').search(self.cr, self.uid, [('partner_id','=',stat_line.partner_id.id),('reconcile_id','=',False),('company_id','=',stat_line.company_id.id)])
partner_line_ids = pooler.get_pool(self.cr.dbname).get('account.move.line').search(self.cr, self.uid, [('partner_id','=',stat_line.partner_id.id),('reconcile_id','=',False),('company_id','=',stat_line.company_id.id),('blocked','=',False)])
partner_delay = []
context.update({'lang': stat_line.partner_id.lang})
for i in pooler.get_pool(self.cr.dbname).get('account.move.line').browse(self.cr, self.uid, partner_line_ids, context):

View File

@ -194,7 +194,7 @@
<para style="terp_default_Centre_9">[[ line['date_maturity'] and formatLang(line['date_maturity'], date=True) ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ formatLang(line['balance']) ]] [[ line['currency_id'] ]]</para>
<para style="terp_default_Right_9">[[ formatLang(line['balance'], currency_obj=line['currency_id']) ]]</para>
</td>
<td>
<para style="terp_default_Centre_9">[[ line['blocked'] and 'X' or '' ]]</para>
@ -212,7 +212,7 @@
<para style="terp_tblheader_Details_Centre">Total: </para>
</td>
<td>
<para style="terp_default_Right_9">[[formatLang(reduce(lambda x,y: x+y['balance'], cur_lines['line'], 0.00)) ]] [[ line['currency_id'] ]] </para>
<para style="terp_default_Right_9">[[formatLang(reduce(lambda x,y: x+y['balance'], cur_lines['line'], 0.00), currency_obj=line['currency_id']) ]] </para>
</td>
<td>
<para style="terp_default_Right_9">

View File

@ -64,8 +64,8 @@
<field name="context">{'search_default_followup_level':1}</field>
<field name="search_view_id" ref="view_account_followup_stat_search"/>
</record>
<menuitem action="action_followup_stat" id="menu_action_followup_stat_follow" parent="account.next_id_22" groups="account.group_account_user"/>
<menuitem id="menu_finance_followup" parent="account.menu_finance" name="Payment Follow-up" groups="account.group_account_invoice"/>
<menuitem action="action_followup_stat" id="menu_action_followup_stat_follow" parent="account.menu_finance_reporting" groups="account.group_account_invoice" name="Follow-Ups Analysis" sequence="10"/>
</data>
</openerp>

View File

@ -1,7 +1,7 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_account_followup_followup_line,account_followup.followup.line,model_account_followup_followup_line,account.group_account_user,1,0,0,0
access_account_followup_followup_line_manager,account_followup.followup.line.manager,model_account_followup_followup_line,account.group_account_manager,1,1,1,1
access_account_followup_followup_accountant,account_followup.followup user,model_account_followup_followup,account.group_account_user,1,0,0,0
access_account_followup_followup_manager,account_followup.followup.manager,model_account_followup_followup,account.group_account_manager,1,1,1,1
access_account_followup_stat_invoice,account_followup.stat.invoice,model_account_followup_stat,account.group_account_invoice,1,1,1,1
access_account_followup_stat_by_partner_manager,account_followup.stat.by.partner,model_account_followup_stat_by_partner,account.group_account_manager,1,1,1,1
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_account_followup_followup_line,account_followup.followup.line,model_account_followup_followup_line,account.group_account_invoice,1,0,0,0
access_account_followup_followup_line_manager,account_followup.followup.line.manager,model_account_followup_followup_line,account.group_account_manager,1,1,1,1
access_account_followup_followup_accountant,account_followup.followup user,model_account_followup_followup,account.group_account_invoice,1,0,0,0
access_account_followup_followup_manager,account_followup.followup.manager,model_account_followup_followup,account.group_account_manager,1,1,1,1
access_account_followup_stat_invoice,account_followup.stat.invoice,model_account_followup_stat,account.group_account_invoice,1,1,1,1
access_account_followup_stat_by_partner_manager,account_followup.stat.by.partner,model_account_followup_stat_by_partner,account.group_account_user,1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_account_followup_followup_line account_followup.followup.line model_account_followup_followup_line account.group_account_user account.group_account_invoice 1 0 0 0
3 access_account_followup_followup_line_manager account_followup.followup.line.manager model_account_followup_followup_line account.group_account_manager 1 1 1 1
4 access_account_followup_followup_accountant account_followup.followup user model_account_followup_followup account.group_account_user account.group_account_invoice 1 0 0 0
5 access_account_followup_followup_manager account_followup.followup.manager model_account_followup_followup account.group_account_manager 1 1 1 1
6 access_account_followup_stat_invoice account_followup.stat.invoice model_account_followup_stat account.group_account_invoice 1 1 1 1
7 access_account_followup_stat_by_partner_manager account_followup.stat.by.partner model_account_followup_stat_by_partner account.group_account_manager account.group_account_user 1 1 1 1

View File

@ -3,34 +3,23 @@
-
!record {model: account.invoice, id: account.demo_invoice_0}:
check_total: 14.0
-
date_invoice: 2012-06-2
invoice_line:
- account_id : account.a_sale
name: 'Test PC'
quantity: 1.0
journal_id: account.bank_journal
partner_id: base.res_partner_12
reference_type: none
-
!workflow {model: account.invoice, action: invoice_open, ref: account.demo_invoice_0}
-
I create a follow-up.
-
!record {model: account.followup.print, id: account_followup_print_0}:
!record {model: account_followup.print, id: account_followup_print_0}:
{}
-
I select the follow-up to send it to the partner.
-
!python {model: account.followup.print}: |
self.do_continue(cr, uid, [ref("account_followup_print_0")], {"active_ids": [ref("account_followup.account_followup_print_menu")], "active_id": ref("account_followup.account_followup_print_menu"),
})
-
I select partners whom I want to send follow-ups.
-
!record {model: account.followup.print.all, id: account_followup_print_all_0}:
email_body: 'Date : %(date)s\n\nDear %(partner_name)s,\n\nPlease find in attachment
a reminder of all your unpaid invoices, for a total amount due of:\n\n%(followup_amount).2f
%(company_currency)s\n\nThanks,\n--\n%(user_signature)s\n%(company_name)s'
email_subject: Invoices Reminder
partner_ids:
- base.res_partner_12
partner_lang: 1
-
I send a follow-up mail to partner.
-
!python {model: account.followup.print.all}: |
import time
self.do_mail(cr, uid, [ref("account_followup_print_all_0")], {"active_ids": [ref("account_followup.account_followup_print_menu")], "date": time.strftime('%Y-%m-%d'), "followup_id": ref("account_followup.demo_followup1"), "active_id": ref("account_followup.account_followup_print_menu"),
})
-
I will process follow-ups
-
!python {model: account_followup.print}: |
self.do_process(cr, uid, [ref("account_followup_print_0")], {"active_ids": [ref("account_followup.account_followup_print_menu")], "active_id": ref("account_followup.account_followup_print_menu"),})

View File

@ -1,10 +0,0 @@
-
In order to test the report I print follow-up report.
-
!python {model: account.followup.print.all}: |
import time
ctx = {'form_view_ref':'account_followup.view_account_followup_print_all', 'followup_id': ref('account_followup.demo_followup1'),'date': time.strftime('%Y-%m-%d'),'model': 'account_followup.followup','active_ids':[ref('account_followup_print_all_0')], 'company_id':ref('base.main_company')}
data_dict = {'email_conf': 1}
from tools import test_reports
test_reports.try_report_action(cr, uid, 'action_account_followup_print_all', context=ctx, wiz_data=data_dict,wiz_buttons=["Print Follow-ups"], our_module='account_followup')

View File

@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Business Applications
# Copyright (c) 2012-TODAY OpenERP S.A. <http://openerp.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import test_account_followup
checks = [
test_account_followup,
]
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,159 @@
import datetime
import tools
from openerp.tests.common import TransactionCase
import netsvc
class TestAccountFollowup(TransactionCase):
def setUp(self):
""" setUp ***"""
super(TestAccountFollowup, self).setUp()
cr, uid = self.cr, self.uid
self.user = self.registry('res.users')
self.user_id = self.user.browse(cr, uid, uid)
self.partner = self.registry('res.partner')
self.invoice = self.registry('account.invoice')
self.invoice_line = self.registry('account.invoice.line')
self.wizard = self.registry('account_followup.print')
self.followup_id = self.registry('account_followup.followup')
self.partner_id = self.partner.create(cr, uid, {'name':'Test Company',
'email':'test@localhost',
'is_company': True,
},
context=None)
self.followup_id = self.registry("ir.model.data").get_object_reference(cr, uid, "account_followup", "demo_followup1")[1]
self.account_id = self.registry("ir.model.data").get_object_reference(cr, uid, "account", "a_recv")[1]
self.journal_id = self.registry("ir.model.data").get_object_reference(cr, uid, "account", "bank_journal")[1]
self.pay_account_id = self.registry("ir.model.data").get_object_reference(cr, uid, "account", "cash")[1]
self.period_id = self.registry("ir.model.data").get_object_reference(cr, uid, "account", "period_10")[1]
self.first_followup_line_id = self.registry("ir.model.data").get_object_reference(cr, uid, "account_followup", "demo_followup_line1")[1]
self.last_followup_line_id = self.registry("ir.model.data").get_object_reference(cr, uid, "account_followup", "demo_followup_line3")[1]
self.product_id = self.registry("ir.model.data").get_object_reference(cr, uid, "product", "product_product_6")[1]
self.invoice_id = self.invoice.create(cr, uid, {'partner_id': self.partner_id,
'account_id': self.account_id,
'journal_id': self.journal_id,
'invoice_line': [(0, 0, {
'name': "LCD Screen",
'product_id': self.product_id,
'quantity': 5,
'price_unit':200
})]})
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'account.invoice', self.invoice_id, 'invoice_open', cr)
self.voucher = self.registry("account.voucher")
def test_00_send_followup_after_3_days(self):
""" Send follow up after 3 days and check nothing is done (as first follow-up level is only after 15 days)"""
cr, uid = self.cr, self.uid
current_date = datetime.datetime.now()
delta = datetime.timedelta(days=3)
result = current_date + delta
self.wizard_id = self.wizard.create(cr, uid, {'date':result.strftime("%Y-%m-%d"),
'followup_id': self.followup_id
}, context={"followup_id": self.followup_id})
self.wizard.do_process(cr, uid, [self.wizard_id], context={"followup_id": self.followup_id})
self.assertFalse(self.partner.browse(cr, uid, self.partner_id).latest_followup_level_id)
def run_wizard_three_times(self):
cr, uid = self.cr, self.uid
current_date = datetime.datetime.now()
delta = datetime.timedelta(days=40)
result = current_date + delta
self.wizard_id = self.wizard.create(cr, uid, {'date':result.strftime("%Y-%m-%d"),
'followup_id': self.followup_id
}, context={"followup_id": self.followup_id})
self.wizard.do_process(cr, uid, [self.wizard_id], context={"followup_id": self.followup_id})
self.wizard_id = self.wizard.create(cr, uid, {'date':result.strftime("%Y-%m-%d"),
'followup_id': self.followup_id
}, context={"followup_id": self.followup_id})
self.wizard.do_process(cr, uid, [self.wizard_id], context={"followup_id": self.followup_id})
self.wizard_id = self.wizard.create(cr, uid, {'date':result.strftime("%Y-%m-%d"),
'followup_id': self.followup_id
}, context={"followup_id": self.followup_id})
self.wizard.do_process(cr, uid, [self.wizard_id], context={"followup_id": self.followup_id})
def test_01_send_followup_later_for_upgrade(self):
""" Send one follow-up after 15 days to check it upgrades to level 1"""
cr, uid = self.cr, self.uid
current_date = datetime.datetime.now()
delta = datetime.timedelta(days=15)
result = current_date + delta
self.wizard_id = self.wizard.create(cr, uid, {
'date':result.strftime("%Y-%m-%d"),
'followup_id': self.followup_id
}, context={"followup_id": self.followup_id})
self.wizard.do_process(cr, uid, [self.wizard_id], context={"followup_id": self.followup_id})
self.assertEqual(self.partner.browse(cr, uid, self.partner_id).latest_followup_level_id.id, self.first_followup_line_id,
"Not updated to the correct follow-up level")
def test_02_check_manual_action(self):
""" Check that when running the wizard three times that the manual action is set"""
cr, uid = self.cr, self.uid
self.run_wizard_three_times()
self.assertEqual(self.partner.browse(cr, uid, self.partner_id).payment_next_action,
"Call the customer on the phone! ", "Manual action not set")
self.assertEqual(self.partner.browse(cr, uid, self.partner_id).payment_next_action_date,
datetime.datetime.now().strftime("%Y-%m-%d"))
def test_03_filter_on_credit(self):
""" Check the partners can be filtered on having credits """
cr, uid = self.cr, self.uid
ids = self.partner.search(cr, uid, [('credit', '>=', 0.0)])
self.assertIn(self.partner_id, ids)
def test_04_action_done(self):
""" Run the wizard 3 times, mark it as done, check the action fields are empty"""
cr, uid = self.cr, self.uid
partner_rec = self.partner.browse(cr, uid, self.partner_id)
self.run_wizard_three_times()
self.partner.action_done(cr, uid, self.partner_id)
self.assertEqual(partner_rec.payment_next_action,
"", "Manual action not emptied")
self.assertFalse(partner_rec.payment_responsible_id)
self.assertFalse(partner_rec.payment_next_action_date)
def test_05_litigation(self):
""" Set the account move line as litigation, run the wizard 3 times and check nothing happened.
Turn litigation off. Run the wizard 3 times and check it is in the right follow-up level.
"""
cr, uid = self.cr, self.uid
aml_id = self.partner.browse(cr, uid, self.partner_id).unreconciled_aml_ids[0].id
self.registry('account.move.line').write(cr, uid, aml_id, {'blocked': True})
self.run_wizard_three_times()
self.assertFalse(self.partner.browse(cr, uid, self.partner_id).latest_followup_level_id, "Litigation does not work")
self.registry('account.move.line').write(cr, uid, aml_id, {'blocked': False})
self.run_wizard_three_times()
self.assertEqual(self.partner.browse(cr, uid, self.partner_id).latest_followup_level_id.id,
self.last_followup_line_id, "Lines are not equal")
def test_06_pay_the_invoice(self):
"""Run wizard until manual action, pay the invoice and check that partner has no follow-up level anymore and after running the wizard the action is empty"""
cr, uid = self.cr, self.uid
self.test_02_check_manual_action()
current_date = datetime.datetime.now()
delta = datetime.timedelta(days=1)
result = current_date + delta
self.invoice.pay_and_reconcile(cr, uid, [self.invoice_id], 1000.0, self.pay_account_id,
self.period_id, self.journal_id, self.pay_account_id,
self.period_id, self.journal_id,
name = "Payment for test customer invoice follow-up")
self.assertFalse(self.partner.browse(cr, uid, self.partner_id).latest_followup_level_id, "Level not empty")
self.wizard_id = self.wizard.create(cr, uid, {'date':result.strftime("%Y-%m-%d"),
'followup_id': self.followup_id
}, context={"followup_id": self.followup_id})
self.wizard.do_process(cr, uid, [self.wizard_id], context={"followup_id": self.followup_id})
partner_ref = self.partner.browse(cr, uid, self.partner_id)
print partner_ref.credit, partner_ref.payment_next_action_date, partner_ref.payment_responsible_id
self.assertEqual(0, self.partner.browse(cr, uid, self.partner_id).credit, "Credit != 0")
self.assertFalse(self.partner.browse(cr, uid, self.partner_id).payment_next_action_date, "Next action date not cleared")

View File

@ -26,49 +26,6 @@ import tools
from osv import fields, osv
from tools.translate import _
class account_followup_print(osv.osv_memory):
_name = 'account.followup.print'
_description = 'Print Follow-up & Send Mail to Customers'
_columns = {
'date': fields.date('Follow-up Sending Date', required=True, help="This field allow you to select a forecast date to plan your follow-ups"),
'followup_id': fields.many2one('account_followup.followup', 'Follow-Up', required=True),
}
def _get_followup(self, cr, uid, context=None):
if context is None:
context = {}
if context.get('active_model', 'ir.ui.menu') == 'account_followup.followup':
return context.get('active_id', False)
company_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id
followp_id = self.pool.get('account_followup.followup').search(cr, uid, [('company_id', '=', company_id)], context=context)
return followp_id and followp_id[0] or False
def do_continue(self, cr, uid, ids, context=None):
mod_obj = self.pool.get('ir.model.data')
if context is None:
context = {}
data = self.browse(cr, uid, ids, context=context)[0]
model_data_ids = mod_obj.search(cr, uid, [('model','=','ir.ui.view'),('name','=','view_account_followup_print_all')], context=context)
resource_id = mod_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id']
context.update({'followup_id': data.followup_id.id, 'date': data.date, 'company_id': data.followup_id.company_id.id})
return {
'name': _('Select Partners'),
'view_type': 'form',
'context': context,
'view_mode': 'tree,form',
'res_model': 'account.followup.print.all',
'views': [(resource_id,'form')],
'type': 'ir.actions.act_window',
'target': 'new',
}
_defaults = {
'date': lambda *a: time.strftime('%Y-%m-%d'),
'followup_id': _get_followup,
}
account_followup_print()
class account_followup_stat_by_partner(osv.osv):
_name = "account_followup.stat.by.partner"
_description = "Follow-up Statistics by Partner"
@ -110,50 +67,201 @@ class account_followup_stat_by_partner(osv.osv):
a.active AND
a.type = 'receivable' AND
l.reconcile_id is NULL AND
l.partner_id IS NOT NULL
l.partner_id IS NOT NULL AND
(l.blocked = False)
GROUP BY
l.partner_id, l.company_id
)""")
)""") #Blocked is to take into account litigation
account_followup_stat_by_partner()
class account_followup_print_all(osv.osv_memory):
_name = 'account.followup.print.all'
_description = 'Print Follow-up & Send Mail to Customers'
_columns = {
'partner_ids': fields.many2many('account_followup.stat.by.partner', 'partner_stat_rel', 'osv_memory_id', 'partner_id', 'Partners', required=True),
'email_conf': fields.boolean('Send Email Confirmation'),
'email_subject': fields.char('Email Subject', size=64),
'partner_lang': fields.boolean('Send Email in Partner Language', help='Do not change message text, if you want to send email in partner language, or configure from company'),
'email_body': fields.text('Email Body'),
'summary': fields.text('Summary', required=True, readonly=True),
'test_print': fields.boolean('Test Print', help='Check if you want to print follow-ups without changing follow-ups level.')
}
def _get_summary(self, cr, uid, context=None):
class account_followup_sending_results(osv.osv_memory):
def do_report(self, cr, uid, ids, context=None):
if context is None:
context = {}
return context.get('summary', '')
return context.get('report_data')
def _get_partners(self, cr, uid, context=None):
return self._get_partners_followp(cr, uid, [], context=context)['partner_ids']
def do_done(self, cr, uid, ids, context=None):
return {}
def _get_description(self, cr, uid, context=None):
if context is None:
context = {}
return context.get('description')
def _get_need_printing(self, cr, uid, context=None):
if context is None:
context = {}
return context.get('needprinting')
_name = 'account_followup.sending.results'
_description = 'Results from the sending of the different letters and emails'
_columns = {
'description': fields.text("Description", readonly=True),
'needprinting': fields.boolean("Needs Printing")
}
_defaults = {
'needprinting':_get_need_printing,
'description':_get_description,
}
account_followup_sending_results()
class account_followup_print(osv.osv_memory):
_name = 'account_followup.print'
_description = 'Print Follow-up & Send Mail to Customers'
_columns = {
'date': fields.date('Follow-up Sending Date', required=True,
help="This field allow you to select a forecast date to plan your follow-ups"),
'followup_id': fields.many2one('account_followup.followup', 'Follow-Up', required=True, readonly = True),
'partner_ids': fields.many2many('account_followup.stat.by.partner', 'partner_stat_rel',
'osv_memory_id', 'partner_id', 'Partners', required=True),
'company_id':fields.related('followup_id', 'company_id', type='many2one',
relation='res.company', store=True, readonly=True),
'email_conf': fields.boolean('Send Email Confirmation'),
'email_subject': fields.char('Email Subject', size=64),
'partner_lang': fields.boolean('Send Email in Partner Language',
help='Do not change message text, if you want to send email in partner language, or configure from company'),
'email_body': fields.text('Email Body'),
'summary': fields.text('Summary', readonly=True),
'test_print': fields.boolean('Test Print',
help='Check if you want to print follow-ups without changing follow-ups level.'),
}
def _get_followup(self, cr, uid, context=None):
if context is None:
context = {}
if context.get('active_model', 'ir.ui.menu') == 'account_followup.followup':
return context.get('active_id', False)
company_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id
followp_id = self.pool.get('account_followup.followup').search(cr, uid, [('company_id', '=', company_id)], context=context)
return followp_id and followp_id[0] or False
def process_partners(self, cr, uid, partner_ids, data, context=None):
partner_obj = self.pool.get('res.partner')
partner_ids_to_print = []
nbmanuals = 0
manuals = {}
nbmails = 0
nbunknownmails = 0
nbprints = 0
resulttext = " "
for partner in self.pool.get('account_followup.stat.by.partner').browse(cr, uid, partner_ids, context=context):
if partner.max_followup_id.manual_action:
partner_obj.do_partner_manual_action(cr, uid, [partner.partner_id.id], context=context)
nbmanuals = nbmanuals + 1
key = partner.partner_id.payment_responsible_id.name or _("Nobody")
if not key in manuals.keys():
manuals[key]= 1
else:
manuals[key] = manuals[key] + 1
if partner.max_followup_id.send_email:
nbunknownmails += partner_obj.do_partner_mail(cr, uid, [partner.partner_id.id], context=context)
nbmails += 1
if partner.max_followup_id.send_letter:
partner_ids_to_print.append(partner.id)
nbprints += 1
message = _("Follow-up letter of ") + "<I> " + partner.partner_id.latest_followup_level_id_without_lit.name + "</I>" + _(" will be sent")
partner_obj.message_post(cr, uid, [partner.partner_id.id], body=message, context=context)
if nbunknownmails == 0:
resulttext += str(nbmails) + _(" email(s) sent")
else:
resulttext += str(nbmails) + _(" email(s) should have been sent, but ") + str(nbunknownmails) + _(" had unknown email address(es)") + "\n <BR/> "
resulttext += "<BR/>" + str(nbprints) + _(" letter(s) in report") + " \n <BR/>" + str(nbmanuals) + _(" manual action(s) assigned:")
needprinting = False
if nbprints > 0:
needprinting = True
resulttext += "<p align=\"center\">"
for item in manuals:
resulttext = resulttext + "<li>" + item + ":" + str(manuals[item]) + "\n </li>"
resulttext += "</p>"
result = {}
action = partner_obj.do_partner_print(cr, uid, partner_ids_to_print, data, context=context)
result['needprinting'] = needprinting
result['resulttext'] = resulttext
result['action'] = action or {}
return result
def do_update_followup_level(self, cr, uid, to_update, partner_list, date, context=None):
#update the follow-up level on account.move.line
for id in to_update.keys():
if to_update[id]['partner_id'] in partner_list:
self.pool.get('account.move.line').write(cr, uid, [int(id)], {'followup_line_id': to_update[id]['level'],
'followup_date': date})
def clear_manual_actions(self, cr, uid, partner_list, context=None):
# Partnerlist is list to exclude
# Will clear the actions of partners that have no due payments anymore
partner_list_ids = [partner.partner_id.id for partner in self.pool.get('account_followup.stat.by.partner').browse(cr, uid, partner_list, context=context)]
ids = self.pool.get('res.partner').search(cr, uid, ['&', ('id', 'not in', partner_list_ids), '|',
('payment_responsible_id', '!=', False),
('payment_next_action_date', '!=', False)], context=context)
partners = self.pool.get('res.partner').browse(cr, uid, ids, context=context)
newids = []
for part in partners:
credit = 0
for aml in part.unreconciled_aml_ids:
credit +=aml.result
if credit <= 0:
newids.append(part.id)
self.pool.get('res.partner').action_done(cr, uid, newids, context=context)
return len(ids)
def do_process(self, cr, uid, ids, context=None):
if context is None:
context = {}
#Get partners
tmp = self._get_partners_followp(cr, uid, ids, context=context)
partner_list = tmp['partner_ids']
to_update = tmp['to_update']
date = self.browse(cr, uid, ids, context=context)[0].date
data = self.read(cr, uid, ids, [], context=context)[0]
data['followup_id'] = data['followup_id'][0]
#Update partners
self.do_update_followup_level(cr, uid, to_update, partner_list, date, context=context)
#process the partners (send mails...)
restot = self.process_partners(cr, uid, partner_list, data, context=context)
#clear the manual actions if nothing is due anymore
nbactionscleared = self.clear_manual_actions(cr, uid, partner_list, context=context)
if nbactionscleared > 0:
restot['resulttext'] = restot['resulttext'] + "<li>" + _("%s partners have no credits and as such the action is cleared") %(str(nbactionscleared)) + "</li>"
res = restot['action']
#return the next action
mod_obj = self.pool.get('ir.model.data')
model_data_ids = mod_obj.search(cr, uid, [('model','=','ir.ui.view'),('name','=','view_account_followup_sending_results')], context=context)
resource_id = mod_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id']
context.update({'description': restot['resulttext'], 'needprinting': restot['needprinting'], 'report_data': res})
return {
'name': _('Send Letters and Emails: Actions Summary'),
'view_type': 'form',
'context': context,
'view_mode': 'tree,form',
'res_model': 'account_followup.sending.results',
'views': [(resource_id,'form')],
'type': 'ir.actions.act_window',
'target': 'new',
}
def _get_msg(self, cr, uid, context=None):
return self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.follow_up_msg
_defaults = {
'email_body': _get_msg,
'email_subject': _('Invoices Reminder'),
'partner_lang': True,
'partner_ids': _get_partners,
'summary': _get_summary,
'date': lambda *a: time.strftime('%Y-%m-%d'),
'followup_id': _get_followup,
'email_body': "",
'email_subject': _('Invoices Reminder'),
'partner_lang': True,
}
def _get_partners_followp(self, cr, uid, ids, context=None):
data = {}
if context is None:
context = {}
if ids:
data = self.browse(cr, uid, ids, context=context)[0]
company_id = 'company_id' in context and context['company_id'] or data.company_id.id
data = self.browse(cr, uid, ids, context=context)[0]
company_id = data.company_id.id
cr.execute(
"SELECT l.partner_id, l.followup_line_id,l.date_maturity, l.date, l.id "\
@ -166,8 +274,9 @@ class account_followup_print_all(osv.osv_memory):
"AND (l.partner_id is NOT NULL) "\
"AND (a.active) "\
"AND (l.debit > 0) "\
"AND (l.company_id = %s) "\
"ORDER BY l.date", (company_id,))
"AND (l.company_id = %s) " \
"AND (l.blocked = False)" \
"ORDER BY l.date", (company_id,)) #l.blocked added to take litigation into account and it is not necessary to change follow-up level of account move lines without debit
move_lines = cr.fetchall()
old = None
fups = {}
@ -181,17 +290,17 @@ class account_followup_print_all(osv.osv_memory):
"FROM account_followup_followup_line "\
"WHERE followup_id=%s "\
"ORDER BY delay", (fup_id,))
#Create dictionary of tuples where first element is the date to compare with the due date and second element is the id of the next level
for result in cr.dictfetchall():
delay = datetime.timedelta(days=result['delay'])
fups[old] = (current_date - delay, result['id'])
if result['start'] == 'end_of_month':
fups[old][0].replace(day=1)
old = result['id']
fups[old] = (datetime.date(datetime.MAXYEAR, 12, 31), old)
partner_list = []
to_update = {}
#Fill dictionary of accountmovelines to_update with the partners that need to be updated
for partner_id, followup_line_id, date_maturity,date, id in move_lines:
if not partner_id:
continue
@ -209,134 +318,6 @@ class account_followup_print_all(osv.osv_memory):
to_update[str(id)]= {'level': fups[followup_line_id][1], 'partner_id': stat_line_id}
return {'partner_ids': partner_list, 'to_update': to_update}
def do_mail(self, cr, uid, ids, context=None):
mod_obj = self.pool.get('ir.model.data')
move_obj = self.pool.get('account.move.line')
user_obj = self.pool.get('res.users')
if context is None:
context = {}
data = self.browse(cr, uid, ids, context=context)[0]
stat_by_partner_line_ids = [partner_id.id for partner_id in data.partner_ids]
partners = [stat_by_partner_line / 10000 for stat_by_partner_line in stat_by_partner_line_ids]
model_data_ids = mod_obj.search(cr, uid, [('model','=','ir.ui.view'),('name','=','view_account_followup_print_all_msg')], context=context)
resource_id = mod_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id']
if data.email_conf:
msg_sent = ''
msg_unsent = ''
data_user = user_obj.browse(cr, uid, uid, context=context)
for partner in self.pool.get('res.partner').browse(cr, uid, partners, context=context):
ids_lines = move_obj.search(cr,uid,[('partner_id','=',partner.id),('reconcile_id','=',False),('account_id.type','in',['receivable']),('company_id','=',context.get('company_id', False))])
data_lines = move_obj.browse(cr, uid, ids_lines, context=context)
total_amt = 0.0
for line in data_lines:
total_amt += line.debit - line.credit
dest = False
if partner:
dest = [partner.email]
if not data.partner_lang:
body = data.email_body
else:
cxt = context.copy()
cxt['lang'] = partner.lang
body = user_obj.browse(cr, uid, uid, context=cxt).company_id.follow_up_msg
move_line = ''
subtotal_due = 0.0
subtotal_paid = 0.0
subtotal_maturity = 0.0
balance = 0.0
l = '--------------------------------------------------------------------------------------------------------------------------'
head = l+ '\n' + 'Date'.rjust(10) + '\t' + 'Description'.rjust(10) + '\t' + 'Ref'.rjust(10) + '\t' + 'Due date'.rjust(10) + '\t' + 'Due'.rjust(10) + '\t' + 'Paid'.rjust(10) + '\t' + 'Maturity'.rjust(10) + '\t' + 'Litigation'.rjust(10) + '\n' + l
for i in data_lines:
maturity = 0.00
if i.date_maturity < time.strftime('%Y-%m-%d') and (i.debit - i.credit):
maturity = i.debit - i.credit
subtotal_due = subtotal_due + i.debit
subtotal_paid = subtotal_paid + i.credit
subtotal_maturity = subtotal_maturity + int(maturity)
balance = balance + (i.debit - i.credit)
move_line = move_line + (i.date).rjust(10) + '\t'+ (i.name).rjust(10) + '\t'+ (i.ref or '').rjust(10) + '\t' + (i.date_maturity or '').rjust(10) + '\t' + str(i.debit).rjust(10) + '\t' + str(i.credit).rjust(10) + '\t' + str(maturity).rjust(10) + '\t' + str(i.blocked).rjust(10) + '\n'
move_line = move_line + l + '\n'+ '\t\t\t' + 'Sub total'.rjust(35) + '\t' + (str(subtotal_due) or '').rjust(10) + '\t' + (str(subtotal_paid) or '').rjust(10) + '\t' + (str(subtotal_maturity) or '').rjust(10)+ '\n'
move_line = move_line + '\t\t\t' + 'Balance'.rjust(33) + '\t' + str(balance).rjust(10) + '\n' + l
val = {
'partner_name':partner.name,
'followup_amount':total_amt,
'user_signature':data_user.name,
'company_name':data_user.company_id.name,
'company_currency':data_user.company_id.currency_id.name,
'line':move_line,
'heading': head,
'date':time.strftime('%Y-%m-%d'),
}
body = body%val
sub = tools.ustr(data.email_subject)
msg = ''
if dest:
try:
vals = {'state': 'outgoing',
'subject': sub,
'body_html': '<pre>%s</pre>' % body,
'email_to': dest,
'email_from': data_user.email or tools.config.options['email_from']}
self.pool.get('mail.mail').create(cr, uid, vals, context=context)
msg_sent += partner.name + '\n'
except Exception, e:
raise osv.except_osv('Error !', e )
else:
msg += partner.name + '\n'
msg_unsent += msg
if not msg_unsent:
summary = _("All Emails have been successfully sent to Partners:.\n\n%s") % msg_sent
else:
msg_unsent = _("Email not sent to following Partners, Email not available !\n\n%s") % msg_unsent
msg_sent = msg_sent and _("\n\nEmail sent to following Partners successfully. !\n\n%s") % msg_sent
line = '=========================================================================='
summary = msg_unsent + line + msg_sent
context.update({'summary': summary})
else:
context.update({'summary': '\n\n\nEmail has not been sent to any partner. If you want to send it, please tick send email confirmation on wizard.'})
return {
'name': _('Followup Summary'),
'view_type': 'form',
'context': context,
'view_mode': 'tree,form',
'res_model': 'account.followup.print.all',
'views': [(resource_id,'form')],
'type': 'ir.actions.act_window',
'target': 'new',
'nodestroy': True
}
def do_print(self, cr, uid, ids, context=None):
if context is None:
context = {}
data = self.read(cr, uid, ids, [], context=context)[0]
res = self._get_partners_followp(cr, uid, ids, context)['to_update']
to_update = res
data['followup_id'] = 'followup_id' in context and context['followup_id'] or False
date = 'date' in context and context['date'] or data['date']
if not data['test_print']:
for id in to_update.keys():
if to_update[id]['partner_id'] in data['partner_ids']:
cr.execute(
"UPDATE account_move_line "\
"SET followup_line_id=%s, followup_date=%s "\
"WHERE id=%s",
(to_update[id]['level'],
date, int(id),))
data.update({'date': context['date']})
datas = {
'ids': [],
'model': 'account_followup.followup',
'form': data
}
return {
'type': 'ir.actions.report.xml',
'report_name': 'account_followup.followup.print',
'datas': datas,
}
account_followup_print_all()
account_followup_print()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -4,25 +4,29 @@
<record id="view_account_followup_print" model="ir.ui.view">
<field name="name">account.followup.print.form</field>
<field name="model">account.followup.print</field>
<field name="model">account_followup.print</field>
<field name="arch" type="xml">
<form string="Send follow-ups" version="7.0">
<group col="4">
<field name="followup_id"/>
<field name="date"/>
<field name="followup_id" groups="base.group_multi_company"/>
<field name="date" groups="base.group_no_one"/>
</group>
<footer>
<button name="do_continue" string="Continue" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
<p class ="oe_grey">
This action will send follow-up emails, print the letters and
set the manual actions per customers.
</p>
<footer>
<button name="do_process" string="Send emails and generate letters" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</field>
</record>
<record id="action_account_followup_print" model="ir.actions.act_window">
<field name="name">Send Follow-Ups</field>
<field name="res_model">account.followup.print</field>
<field name="res_model">account_followup.print</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
@ -30,8 +34,10 @@
<menuitem action="action_account_followup_print"
id="account_followup_print_menu"
parent="account.menu_finance_periodical_processing_billing"
sequence="10"/>
parent="menu_finance_followup"
name = "Send Letters and Emails"
groups = "account.group_account_user"
sequence="2"/>
<record id="account_followup_stat_by_partner_search" model="ir.ui.view">
<field name="name">account_followup.stat.by.partner.search</field>
@ -47,7 +53,6 @@
</field>
</record>
<!-- Screen2 -->
<record id="account_followup_stat_by_partner_tree" model="ir.ui.view">
<field name="name">account_followup.stat.by.partner.tree</field>
<field name="model">account_followup.stat.by.partner</field>
@ -63,63 +68,25 @@
</field>
</record>
<record id="view_account_followup_print_all" model="ir.ui.view">
<field name="name">account.followup.print.all.form</field>
<field name="model">account.followup.print.all</field>
<record id="view_account_followup_sending_results" model="ir.ui.view">
<field name="name">account_followup.sending.results.form</field>
<field name="model">account_followup.sending.results</field>
<field name="arch" type="xml">
<form string="Send Follow-Ups" version="7.0">
<form string="Summary of actions" version="7.0">
<header>
<button name="do_mail" string="Send Mails" type="object" class="oe_highlight"/>
<button name="do_print" string="Print Follow Ups" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel"/>
<field name="description" widget="html" class="oe_view_only"/>
</header>
<notebook>
<page string="Partner Selection">
<field name="partner_ids" context="{'search_default_balance_positive': 1}" domain="[('company_id','=',context.get('company_id',False))]"/>
</page>
<page string="Email Settings">
<group col="4">
<field name="email_conf" colspan="4"/>
<field name="partner_lang" colspan="4"/>
<field name="test_print" colspan="4"/>
<field name="email_subject" colspan="4"/>
<field name="email_body" colspan="4" nolabel="1"/>
</group>
<group string="Legend">
<label string="%%(partner_name)s: Partner name"/>
<label string="%%(user_signature)s: User name"/>
<label string="%%(followup_amount)s: Total Amount Due"/>
<label string="%%(date)s: Current Date"/>
<label string="%%(company_name)s: User's Company name"/>
<label string="%%(company_currency)s: User's Company Currency"/>
<label string="%%(heading)s: Move line header"/>
<label string="%%(line)s: Ledger Posting lines"/>
</group>
</page>
</notebook>
<footer>
<field name="needprinting" invisible="1"/>
<div attrs="{'invisible':[('needprinting','=', False)]}">
<button name="do_report" string="Download Letters" type="object" class="oe_highlight"/>
</div>
<div attrs="{'invisible':[('needprinting','!=', False)]}">
<button name="do_done" string="Close" type="object" class="oe_highlight"/>
</div>
</footer>
</form>
</field>
</record>
<record id="view_account_followup_print_all_msg" model="ir.ui.view">
<field name="name">account.followup.print.all.msg.form</field>
<field name="model">account.followup.print.all</field>
<field name="arch" type="xml">
<form string="Summary" version="7.0">
<separator string="Summary"/>
<field name="summary"/>
</form>
</field>
</record>
<record id="action_account_followup_print_all" model="ir.actions.act_window">
<field name="name">Send Follow-Ups</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.followup.print.all</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</openerp>

View File

@ -8,39 +8,39 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-02-09 15:18+0000\n"
"Last-Translator: 开阖软件 Jeff Wang <jeff@osbzr.com>\n"
"PO-Revision-Date: 2012-11-30 07:45+0000\n"
"Last-Translator: mrshelly <Unknown>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:22+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: analytic
#: field:account.analytic.account,child_ids:0
msgid "Child Accounts"
msgstr "子"
msgstr "子科目"
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "In Progress"
msgstr ""
msgstr "进行中"
#. module: analytic
#: model:mail.message.subtype,name:analytic.mt_account_status
msgid "Status Change"
msgstr ""
msgstr "状态更改"
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "Template"
msgstr "模"
msgstr "模"
#. module: analytic
#: view:account.analytic.account:0
msgid "End Date"
msgstr ""
msgstr "截止日期"
#. module: analytic
#: help:account.analytic.line,unit_amount:0
@ -70,12 +70,12 @@ msgstr ""
#. module: analytic
#: field:account.analytic.account,manager_id:0
msgid "Account Manager"
msgstr "项管理"
msgstr "科目管理员"
#. module: analytic
#: field:account.analytic.account,message_follower_ids:0
msgid "Followers"
msgstr ""
msgstr "关注者"
#. module: analytic
#: code:addons/analytic/analytic.py:312
@ -96,23 +96,23 @@ msgstr "借方"
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "New"
msgstr "新"
msgstr "新"
#. module: analytic
#: field:account.analytic.account,user_id:0
msgid "Project Manager"
msgstr ""
msgstr "项目主管"
#. module: analytic
#: field:account.analytic.account,state:0
msgid "Status"
msgstr ""
msgstr "状态"
#. module: analytic
#: code:addons/analytic/analytic.py:254
#, python-format
msgid "%s (copy)"
msgstr ""
msgstr "%s (副本)"
#. module: analytic
#: model:ir.model,name:analytic.model_account_analytic_line
@ -123,7 +123,7 @@ msgstr "辅助核算明细"
#: field:account.analytic.account,description:0
#: field:account.analytic.line,name:0
msgid "Description"
msgstr "说明"
msgstr "描述"
#. module: analytic
#: field:account.analytic.account,name:0
@ -133,12 +133,12 @@ msgstr ""
#. module: analytic
#: field:account.analytic.account,message_unread:0
msgid "Unread Messages"
msgstr ""
msgstr "未读消息"
#. module: analytic
#: constraint:account.analytic.account:0
msgid "Error! You cannot create recursive analytic accounts."
msgstr ""
msgstr "错误!你不能循环创建辅助核算项"
#. module: analytic
#: field:account.analytic.account,company_id:0
@ -180,7 +180,7 @@ msgstr ""
#. module: analytic
#: field:account.analytic.account,message_is_follower:0
msgid "Is a Follower"
msgstr ""
msgstr "是一个关注者"
#. module: analytic
#: field:account.analytic.line,user_id:0

View File

@ -0,0 +1,77 @@
# Chinese (Simplified) translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-30 17:47+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-01 05:09+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "or view"
msgstr "或 视图"
#. module: analytic_contract_hr_expense
#: constraint:account.analytic.account:0
msgid "Error! You cannot create recursive analytic accounts."
msgstr "错误!你不能循环创建辅助核算项"
#. module: analytic_contract_hr_expense
#: field:account.analytic.account,expense_invoiced:0
#: field:account.analytic.account,expense_to_invoice:0
#: field:account.analytic.account,remaining_expense:0
msgid "unknown"
msgstr "未知"
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "expenses"
msgstr "费用"
#. module: analytic_contract_hr_expense
#: model:ir.model,name:analytic_contract_hr_expense.model_account_analytic_account
msgid "Analytic Account"
msgstr "辅助核算项"
#. module: analytic_contract_hr_expense
#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:147
#, python-format
msgid "Expenses to Invoice of %s"
msgstr "%s的费用到发票"
#. module: analytic_contract_hr_expense
#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:133
#, python-format
msgid "Expenses of %s"
msgstr "%s的费用"
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "Nothing to invoice, create"
msgstr "尚未开票,创建"
#. module: analytic_contract_hr_expense
#: field:account.analytic.account,est_expenses:0
msgid "Estimation of Expenses to Invoice"
msgstr "预估费用到发票"
#. module: analytic_contract_hr_expense
#: field:account.analytic.account,charge_expenses:0
msgid "Charge Expenses"
msgstr ""
#. module: analytic_contract_hr_expense
#: view:account.analytic.account:0
msgid "⇒ Invoice"
msgstr "=> 开票"

View File

@ -14,7 +14,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-30 05:08+0000\n"
"X-Launchpad-Export-Date: 2012-12-01 05:09+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: auth_anonymous

View File

@ -0,0 +1,150 @@
# Dutch translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-30 19:36+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-01 05:09+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: auth_oauth
#: field:auth.oauth.provider,validation_endpoint:0
msgid "Validation URL"
msgstr "Validatie URL"
#. module: auth_oauth
#: sql_constraint:res.users:0
msgid "You can not have two users with the same login !"
msgstr "U kunt niet twee gebruikers hebben met dezelfde gebruikersnaam !"
#. module: auth_oauth
#: field:auth.oauth.provider,auth_endpoint:0
msgid "Authentication URL"
msgstr "Authenticatie URL"
#. module: auth_oauth
#: model:ir.model,name:auth_oauth.model_base_config_settings
msgid "base.config.settings"
msgstr "base.config.settings"
#. module: auth_oauth
#: constraint:res.users:0
msgid "The chosen company is not in the allowed companies for this user"
msgstr "Het gekozen bedrijf is geen toegestaan bedrijf voor deze gebruiker"
#. module: auth_oauth
#: field:auth.oauth.provider,scope:0
msgid "Scope"
msgstr "Beriek"
#. module: auth_oauth
#: field:res.users,oauth_provider_id:0
msgid "OAuth Provider"
msgstr "OAuth Provider"
#. module: auth_oauth
#: field:auth.oauth.provider,css_class:0
msgid "CSS class"
msgstr "CSS klasse"
#. module: auth_oauth
#: field:auth.oauth.provider,body:0
msgid "Body"
msgstr "Body"
#. module: auth_oauth
#: model:ir.model,name:auth_oauth.model_res_users
msgid "Users"
msgstr "Gebruikers"
#. module: auth_oauth
#: field:auth.oauth.provider,sequence:0
msgid "unknown"
msgstr "onbekend"
#. module: auth_oauth
#: field:res.users,oauth_access_token:0
msgid "OAuth Access Token"
msgstr "OAuth Access Token"
#. module: auth_oauth
#: field:auth.oauth.provider,client_id:0
#: field:base.config.settings,auth_oauth_facebook_client_id:0
#: field:base.config.settings,auth_oauth_google_client_id:0
msgid "Client ID"
msgstr "Client ID"
#. module: auth_oauth
#: model:ir.ui.menu,name:auth_oauth.menu_oauth_providers
msgid "OAuth Providers"
msgstr "OAuth Providers"
#. module: auth_oauth
#: model:ir.model,name:auth_oauth.model_auth_oauth_provider
msgid "OAuth2 provider"
msgstr "OAuth2 provider"
#. module: auth_oauth
#: field:res.users,oauth_uid:0
msgid "OAuth User ID"
msgstr "OAuth User ID"
#. module: auth_oauth
#: field:base.config.settings,auth_oauth_facebook_enabled:0
msgid "Allow users to sign in with Facebook"
msgstr "Gestaan dat gebruikers inloggen ia Facebook."
#. module: auth_oauth
#: sql_constraint:res.users:0
msgid "OAuth UID must be unique per provider"
msgstr "OAuth UID moet uniek zijn per provider"
#. module: auth_oauth
#: help:res.users,oauth_uid:0
msgid "Oauth Provider user_id"
msgstr "Oauth Provider user_id"
#. module: auth_oauth
#: field:auth.oauth.provider,data_endpoint:0
msgid "Data URL"
msgstr "Data URL"
#. module: auth_oauth
#: view:auth.oauth.provider:0
msgid "arch"
msgstr "arch"
#. module: auth_oauth
#: field:auth.oauth.provider,name:0
msgid "Provider name"
msgstr "Provider name"
#. module: auth_oauth
#: model:ir.actions.act_window,name:auth_oauth.action_oauth_provider
msgid "Providers"
msgstr "Providers"
#. module: auth_oauth
#: field:base.config.settings,auth_oauth_google_enabled:0
msgid "Allow users to sign in with Google"
msgstr "Toestaan da gebruikers inloggen via Google."
#. module: auth_oauth
#: constraint:res.users:0
msgid "Error: Invalid ean code"
msgstr "Fout: Ongeldige EAN-code"
#. module: auth_oauth
#: field:auth.oauth.provider,enabled:0
msgid "Allowed"
msgstr "Toegestaan"

View File

@ -0,0 +1,74 @@
# Russian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-30 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Russian <ru@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-01 05:09+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: auth_reset_password
#: model:email.template,body_html:auth_reset_password.reset_password_email
msgid ""
"\n"
"<p>A password reset was requested for the OpenERP account linked to this "
"email.</p>\n"
"\n"
"<p>You may change your password following <a "
"href=\"${object.signup_url}\">this link</a>.</p>\n"
"\n"
"<p>Note: If you did not ask for a password reset, you can safely ignore this "
"email.</p>"
msgstr ""
#. module: auth_reset_password
#: sql_constraint:res.users:0
msgid "You can not have two users with the same login !"
msgstr ""
#. module: auth_reset_password
#: model:ir.model,name:auth_reset_password.model_res_users
msgid "Users"
msgstr ""
#. module: auth_reset_password
#: sql_constraint:res.users:0
msgid "OAuth UID must be unique per provider"
msgstr ""
#. module: auth_reset_password
#: view:res.users:0
msgid "Reset Password"
msgstr ""
#. module: auth_reset_password
#: model:email.template,subject:auth_reset_password.reset_password_email
msgid "Password reset"
msgstr ""
#. module: auth_reset_password
#: constraint:res.users:0
msgid "Error: Invalid ean code"
msgstr ""
#. module: auth_reset_password
#: constraint:res.users:0
msgid "The chosen company is not in the allowed companies for this user"
msgstr ""
#. module: auth_reset_password
#. openerp-web
#: code:addons/auth_reset_password/static/src/xml/reset_password.xml:7
#, python-format
msgid "Reset password"
msgstr ""

View File

@ -14,7 +14,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-30 05:08+0000\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: base_action_rule

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,88 @@
# Dutch translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-30 19:38+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-01 05:09+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: base_status
#: code:addons/base_status/base_state.py:107
#, python-format
msgid "Error !"
msgstr "Fout!"
#. module: base_status
#: code:addons/base_status/base_stage.py:333
#: code:addons/base_status/base_state.py:187
#, python-format
msgid "%s has been <b>opened</b>."
msgstr "%s is <b>geopend</b>."
#. module: base_status
#: code:addons/base_status/base_stage.py:357
#: code:addons/base_status/base_state.py:220
#, python-format
msgid "%s has been <b>renewed</b>."
msgstr "%s is <b>vernieuw</b>."
#. module: base_status
#: code:addons/base_status/base_stage.py:215
#, python-format
msgid "Error!"
msgstr "Fout!"
#. module: base_status
#: code:addons/base_status/base_state.py:107
#, python-format
msgid ""
"You can not escalate, you are already at the top level regarding your sales-"
"team category."
msgstr ""
"Het is niet mogelijk om verder te escaleren. U bent al op het hoogste niveau "
"van uw verkoopteam categorieën."
#. module: base_status
#: code:addons/base_status/base_stage.py:351
#: code:addons/base_status/base_state.py:214
#, python-format
msgid "%s is now <b>pending</b>."
msgstr ""
#. module: base_status
#: code:addons/base_status/base_stage.py:345
#, python-format
msgid "%s has been <b>cancelled</b>."
msgstr "%s is <b>geannuleerd</b>."
#. module: base_status
#: code:addons/base_status/base_state.py:208
#, python-format
msgid "%s has been <b>canceled</b>."
msgstr "%s is <b>geannuleerd</b>."
#. module: base_status
#: code:addons/base_status/base_stage.py:215
#, python-format
msgid ""
"You are already at the top level of your sales-team category.\n"
"Therefore you cannot escalate furthermore."
msgstr ""
#. module: base_status
#: code:addons/base_status/base_stage.py:339
#: code:addons/base_status/base_state.py:202
#, python-format
msgid "%s has been <b>closed</b>."
msgstr "%s is <b>gesloten</b>."

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-01-13 19:12+0000\n"
"Last-Translator: Ferdinand @ Camptocamp <Unknown>\n"
"PO-Revision-Date: 2012-11-30 10:07+0000\n"
"Last-Translator: Felix Schubert <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 05:51+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-01 05:07+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: base_vat
#: view:res.partner:0
@ -34,7 +34,7 @@ msgstr ""
#. module: base_vat
#: 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: base_vat
#: constraint:res.partner:0
@ -65,7 +65,7 @@ msgstr ""
#. module: base_vat
#: constraint:res.partner:0
msgid "Error: Invalid ean code"
msgstr ""
msgstr "Fehler: Falscher EAN code"
#. module: base_vat
#: help:res.partner,vat_subjected:0

View File

@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-02-10 03:41+0000\n"
"Last-Translator: 开阖软件 Jeff Wang <jeff@osbzr.com>\n"
"PO-Revision-Date: 2012-11-30 17:41+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 05:51+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-01 05:07+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: base_vat
#: view:res.partner:0
msgid "Check Validity"
msgstr ""
msgstr "检查有效性"
#. module: base_vat
#: code:addons/base_vat/base_vat.py:147
@ -52,18 +52,18 @@ msgstr "公司"
#. module: base_vat
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
msgstr "错误!您不能创建递归公司."
msgstr "错误!您不能创建循环的公司。"
#. module: base_vat
#: code:addons/base_vat/base_vat.py:111
#, python-format
msgid "Error!"
msgstr ""
msgstr "错误!"
#. module: base_vat
#: constraint:res.partner:0
msgid "Error: Invalid ean code"
msgstr ""
msgstr "错误:无效的(EAN)条码"
#. module: base_vat
#: help:res.partner,vat_subjected:0

View File

@ -7,94 +7,94 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-01-23 10:14+0000\n"
"Last-Translator: Wei \"oldrev\" Li <oldrev@gmail.com>\n"
"PO-Revision-Date: 2012-11-30 17:42+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:12+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: board
#: model:ir.actions.act_window,name:board.action_board_create
#: model:ir.ui.menu,name:board.menu_board_create
msgid "Create Board"
msgstr ""
msgstr "创建仪表板"
#. module: board
#: view:board.create:0
msgid "Create"
msgstr ""
msgstr "创建"
#. module: board
#. openerp-web
#: code:addons/board/static/src/xml/board.xml:4
#, python-format
msgid "Reset Layout.."
msgstr ""
msgstr "重置布局..."
#. module: board
#: view:board.create:0
msgid "Create New Dashboard"
msgstr ""
msgstr "创建新的仪表板"
#. module: board
#. openerp-web
#: code:addons/board/static/src/xml/board.xml:40
#, python-format
msgid "Choose dashboard layout"
msgstr ""
msgstr "选择仪表板布局"
#. module: board
#. openerp-web
#: code:addons/board/static/src/xml/board.xml:70
#, python-format
msgid "Add"
msgstr ""
msgstr "新增"
#. module: board
#. openerp-web
#: code:addons/board/static/src/js/dashboard.js:139
#, python-format
msgid "Are you sure you want to remove this item ?"
msgstr ""
msgstr "您确定要移除此条目吗?"
#. module: board
#: model:ir.model,name:board.model_board_board
msgid "Board"
msgstr "控制台"
msgstr "仪表板"
#. module: board
#: view:board.board:0
#: model:ir.actions.act_window,name:board.open_board_my_dash_action
#: model:ir.ui.menu,name:board.menu_board_my_dash
msgid "My Dashboard"
msgstr ""
msgstr "我的仪表板"
#. module: board
#: field:board.create,name:0
msgid "Board Name"
msgstr ""
msgstr "仪表板名称"
#. module: board
#: model:ir.model,name:board.model_board_create
msgid "Board Creation"
msgstr ""
msgstr "仪表板创建"
#. module: board
#. openerp-web
#: code:addons/board/static/src/xml/board.xml:67
#, python-format
msgid "Add to Dashboard"
msgstr ""
msgstr "添加到仪表板"
#. module: board
#. openerp-web
#: code:addons/board/static/src/xml/board.xml:28
#, python-format
msgid "&nbsp;"
msgstr ""
msgstr "不能有空格"
#. module: board
#: model:ir.actions.act_window,help:board.open_board_my_dash_action
@ -114,13 +114,26 @@ msgid ""
" </div>\n"
" "
msgstr ""
"<div class=\"oe_empty_custom_dashboard\">\n"
" <p>\n"
" <b>你的仪表板是空的.</b>\n"
" </p><p>\n"
" 你要添加你第一个报表到仪表板,进入任意菜单,\n"
" 切换到列表或者图片视图,从扩展搜索选项里单击\n"
" “添加到仪表板”\n"
" </p><p>\n"
" 在使用搜索选项插入到仪表板之前,你能过滤并分\n"
" 组数据。\n"
" </p>\n"
" </div>\n"
" "
#. module: board
#. openerp-web
#: code:addons/board/static/src/xml/board.xml:6
#, python-format
msgid "Reset"
msgstr ""
msgstr "清空"
#. module: board
#: field:board.create,menu_parent_id:0
@ -132,21 +145,21 @@ msgstr "上级菜单"
#: code:addons/board/static/src/xml/board.xml:8
#, python-format
msgid "Change Layout.."
msgstr ""
msgstr "更改布局..."
#. module: board
#. openerp-web
#: code:addons/board/static/src/js/dashboard.js:93
#, python-format
msgid "Edit Layout"
msgstr ""
msgstr "编辑布局"
#. module: board
#. openerp-web
#: code:addons/board/static/src/xml/board.xml:10
#, python-format
msgid "Change Layout"
msgstr ""
msgstr "更改布局"
#. module: board
#: view:board.create:0
@ -156,14 +169,14 @@ msgstr "取消"
#. module: board
#: view:board.create:0
msgid "or"
msgstr ""
msgstr "or"
#. module: board
#. openerp-web
#: code:addons/board/static/src/xml/board.xml:69
#, python-format
msgid "Title of new dashboard item"
msgstr ""
msgstr "新的仪表板项目标题"
#~ msgid "Author"
#~ msgstr "作者"

View File

@ -14,7 +14,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-30 05:08+0000\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: claim_from_delivery

View File

@ -0,0 +1,37 @@
# Dutch translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-30 19:40+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-01 05:09+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: contacts
#: model:ir.actions.act_window,help:contacts.action_contacts
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to add a contact in your address book.\n"
" </p><p>\n"
" OpenERP helps you easily track all activities related to\n"
" a customer; discussions, history of business opportunities,\n"
" documents, etc.\n"
" </p>\n"
" "
msgstr ""
#. module: contacts
#: model:ir.actions.act_window,name:contacts.action_contacts
#: model:ir.ui.menu,name:contacts.menu_contacts
msgid "Contacts"
msgstr "Contactpersonen"

View File

@ -0,0 +1,37 @@
# Russian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-30 18:01+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Russian <ru@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-01 05:09+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: contacts
#: model:ir.actions.act_window,help:contacts.action_contacts
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to add a contact in your address book.\n"
" </p><p>\n"
" OpenERP helps you easily track all activities related to\n"
" a customer; discussions, history of business opportunities,\n"
" documents, etc.\n"
" </p>\n"
" "
msgstr ""
#. module: contacts
#: model:ir.actions.act_window,name:contacts.action_contacts
#: model:ir.ui.menu,name:contacts.menu_contacts
msgid "Contacts"
msgstr ""

View File

@ -0,0 +1,190 @@
# Dutch translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-30 20:02+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-01 05:09+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid "Connection with username and password"
msgstr ""
#. module: event_moodle
#: model:ir.model,name:event_moodle.model_event_moodle_config_wiz
msgid "event.moodle.config.wiz"
msgstr "event.moodle.config.wiz"
#. module: event_moodle
#: help:event.moodle.config.wiz,server_moodle:0
msgid ""
"URL where you have your moodle server. For exemple: 'http://127.0.0.1' or "
"'http://localhost'"
msgstr ""
#. module: event_moodle
#: field:event.registration,moodle_user_password:0
msgid "Password for Moodle User"
msgstr "Wachtwoord voor Moodle gebruiker"
#. module: event_moodle
#: field:event.moodle.config.wiz,moodle_password:0
msgid "Moodle Password"
msgstr "Moodle wachtwoord"
#. module: event_moodle
#: code:addons/event_moodle/event_moodle.py:137
#, python-format
msgid "Your email '%s' is wrong."
msgstr "Uwr email '%s' is fout."
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid "Connection with a Token"
msgstr ""
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid ""
"The easiest way to connect OpenERP with a moodle server is to create a "
"'token' in Moodle. It will be used to authenticate OpenERP as a trustable "
"application."
msgstr ""
#. module: event_moodle
#: field:event.moodle.config.wiz,url:0
msgid "URL to Moodle Server"
msgstr ""
#. module: event_moodle
#: help:event.moodle.config.wiz,url:0
msgid "The url that will be used for the connection with moodle in xml-rpc"
msgstr ""
#. module: event_moodle
#: model:ir.model,name:event_moodle.model_event_registration
msgid "Event Registration"
msgstr "Evenementregistratie"
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid ""
"Another approach is to create a user for OpenERP in Moodle. If you do so, "
"make sure that this user has appropriate access rights."
msgstr ""
#. module: event_moodle
#: field:event.registration,moodle_uid:0
msgid "Moodle User ID"
msgstr ""
#. module: event_moodle
#: field:event.moodle.config.wiz,server_moodle:0
msgid "Moodle Server"
msgstr "Moodle Server"
#. module: event_moodle
#: field:event.event,moodle_id:0
msgid "Moodle ID"
msgstr "Moodle ID"
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid "Server"
msgstr "Server"
#. module: event_moodle
#: code:addons/event_moodle/event_moodle.py:57
#: code:addons/event_moodle/event_moodle.py:105
#: code:addons/event_moodle/event_moodle.py:137
#, python-format
msgid "Error!"
msgstr "Fout!"
#. module: event_moodle
#: code:addons/event_moodle/event_moodle.py:105
#, python-format
msgid "You must configure your moodle connection."
msgstr ""
#. module: event_moodle
#: field:event.moodle.config.wiz,moodle_username:0
#: field:event.registration,moodle_username:0
msgid "Moodle Username"
msgstr "Moodle gebruikersnaam"
#. module: event_moodle
#: view:event.moodle.config.wiz:0
#: model:ir.actions.act_window,name:event_moodle.configure_moodle
msgid "Configure Moodle"
msgstr "Monocle instellen"
#. module: event_moodle
#: field:event.moodle.config.wiz,moodle_token:0
msgid "Moodle Token"
msgstr ""
#. module: event_moodle
#: help:event.moodle.config.wiz,moodle_username:0
msgid ""
"You can also connect with your username that you define when you create a "
"token"
msgstr ""
#. module: event_moodle
#: help:event.event,moodle_id:0
msgid "The identifier of this event in Moodle"
msgstr ""
#. module: event_moodle
#: help:event.moodle.config.wiz,moodle_token:0
msgid "Put your token that you created in your moodle server"
msgstr ""
#. module: event_moodle
#: model:ir.ui.menu,name:event_moodle.wizard_moodle
msgid "Moodle Configuration"
msgstr ""
#. module: event_moodle
#: constraint:event.event:0
msgid "Error ! Closing Date cannot be set before Beginning Date."
msgstr "Fout ! Sluitingsdatum kan niet voor startdatum liggen."
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid "or"
msgstr "of"
#. module: event_moodle
#: code:addons/event_moodle/event_moodle.py:57
#, python-format
msgid "First configure your moodle connection."
msgstr ""
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid "Apply"
msgstr "Toepassen"
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid "Cancel"
msgstr "Annuleren"
#. module: event_moodle
#: model:ir.model,name:event_moodle.model_event_event
msgid "Event"
msgstr ""

View File

@ -0,0 +1,103 @@
# Dutch translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-30 20:07+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-01 05:09+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: event_sale
#: model:ir.model,name:event_sale.model_product_product
msgid "Product"
msgstr "Product"
#. module: event_sale
#: help:product.product,event_ok:0
msgid ""
"Determine if a product needs to create automatically an event registration "
"at the confirmation of a sale order line."
msgstr ""
#. module: event_sale
#: help:sale.order.line,event_id:0
msgid ""
"Choose an event and it will automatically create a registration for this "
"event."
msgstr ""
#. module: event_sale
#: sql_constraint:product.product:0
msgid "Error ! Ending Date cannot be set before Beginning Date."
msgstr "Fout! Einddatum kan niet voor de begindatum liggen."
#. module: event_sale
#: model:event.event,name:event_sale.event_technical_training
msgid "Technical training in Grand-Rosiere"
msgstr ""
#. module: event_sale
#: help:product.product,event_type_id:0
msgid ""
"Filter the list of event on this category only, in the sale order lines"
msgstr ""
#. module: event_sale
#: constraint:product.product:0
msgid ""
"You provided an invalid \"EAN13 Barcode\" reference. You may use the "
"\"Internal Reference\" field instead."
msgstr ""
"U gebruikte een verkeerde \"EAN13 Barcode\" referentie. Hiervoor in de "
"plaats kunt u de interne referentie gebruiken."
#. module: event_sale
#: code:addons/event_sale/event_sale.py:88
#, python-format
msgid "The registration %s has been created from the Sale Order %s."
msgstr ""
#. module: event_sale
#: field:sale.order.line,event_ok:0
msgid "event_ok"
msgstr "event_ok"
#. module: event_sale
#: field:product.product,event_ok:0
msgid "Event Subscription"
msgstr "Evenement omschrijving"
#. module: event_sale
#: field:product.product,event_type_id:0
msgid "Type of Event"
msgstr "Soort evenement"
#. module: event_sale
#: field:sale.order.line,event_type_id:0
msgid "Event Type"
msgstr "Soort evenement"
#. module: event_sale
#: model:product.template,name:event_sale.event_product_product_template
msgid "Technical Training"
msgstr "Technisch training"
#. module: event_sale
#: field:sale.order.line,event_id:0
msgid "Event"
msgstr "Evenement"
#. module: event_sale
#: model:ir.model,name:event_sale.model_sale_order_line
msgid "Sales Order Line"
msgstr "Verkooporderregel"

1895
addons/fleet/i18n/nl.po Normal file

File diff suppressed because it is too large Load Diff

1895
addons/fleet/i18n/ru.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2012-11-30 00:11+0000\n"
"Last-Translator: Fabio Graziosi <Unknown>\n"
"PO-Revision-Date: 2012-11-30 22:46+0000\n"
"Last-Translator: Davide Corio - agilebg.com <davide.corio@agilebg.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-30 05:07+0000\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: hr
@ -24,7 +24,7 @@ msgstr "Utente Openerp"
#. module: hr
#: field:hr.config.settings,module_hr_timesheet_sheet:0
msgid "Allow timesheets validation by managers"
msgstr ""
msgstr "Consenti la validazione timesheet ai manager"
#. module: hr
#: field:hr.job,requirements:0
@ -63,7 +63,7 @@ msgstr ""
#. module: hr
#: view:hr.config.settings:0
msgid "Time Tracking"
msgstr ""
msgstr "Tracciamento Temporale"
#. module: hr
#: view:hr.employee:0
@ -74,17 +74,17 @@ msgstr "Raggruppato per..."
#. module: hr
#: model:ir.actions.act_window,name:hr.view_department_form_installer
msgid "Create Your Departments"
msgstr ""
msgstr "Crea i tuoi dipartimenti"
#. module: hr
#: help:hr.job,no_of_employee:0
msgid "Number of employees currently occupying this job position."
msgstr ""
msgstr "Numero di dipendenti attualmente occupanti questa posizione."
#. module: hr
#: field:hr.config.settings,module_hr_evaluation:0
msgid "Organize employees periodic evaluation"
msgstr ""
msgstr "Organizza la valutazione periodica dei dipendenti"
#. module: hr
#: view:hr.department:0
@ -106,11 +106,13 @@ msgid ""
"This field holds the image used as photo for the employee, limited to "
"1024x1024px."
msgstr ""
"Questo campo gestisce l'immagine usata come foto dell'impiegato, limitata a "
"1024x1024px."
#. module: hr
#: help:hr.config.settings,module_hr_holidays:0
msgid "This installs the module hr_holidays."
msgstr ""
msgstr "Installa il modul hr_holidays."
#. module: hr
#: view:hr.job:0
@ -125,7 +127,7 @@ msgstr "In assunzione"
#. module: hr
#: field:hr.job,message_unread:0
msgid "Unread Messages"
msgstr ""
msgstr "Messaggi non letti"
#. module: hr
#: field:hr.department,company_id:0
@ -143,17 +145,17 @@ msgstr "Assunti previsti"
#. module: hr
#: field:res.users,employee_ids:0
msgid "Related employees"
msgstr ""
msgstr "Dipendenti correlati"
#. module: hr
#: constraint:hr.employee.category:0
msgid "Error! You cannot create recursive Categories."
msgstr ""
msgstr "Errore! Non puoi creare categorie ricorsive."
#. module: hr
#: help:hr.config.settings,module_hr_recruitment:0
msgid "This installs the module hr_recruitment."
msgstr ""
msgstr "Installa il modulo hr_recruitment."
#. module: hr
#: view:hr.employee:0
@ -163,12 +165,12 @@ msgstr ""
#. module: hr
#: field:hr.employee,last_login:0
msgid "Latest Connection"
msgstr ""
msgstr "Ultima Connessione"
#. module: hr
#: view:hr.job:0
msgid "Launch Recruitement"
msgstr ""
msgstr "Lancia Assunzione"
#. module: hr
#: model:process.transition,name:hr.process_transition_employeeuser0
@ -183,7 +185,7 @@ msgstr "Dipartimento Superiore"
#. module: hr
#: model:ir.ui.menu,name:hr.menu_open_view_attendance_reason_config
msgid "Leaves"
msgstr ""
msgstr "Permessi"
#. module: hr
#: selection:hr.employee,marital:0
@ -193,22 +195,22 @@ msgstr "Sposato/a"
#. module: hr
#: field:hr.job,message_ids:0
msgid "Messages"
msgstr ""
msgstr "Messaggi"
#. module: hr
#: view:hr.config.settings:0
msgid "Talent Management"
msgstr ""
msgstr "Talent Management"
#. module: hr
#: help:hr.config.settings,module_hr_timesheet_sheet:0
msgid "This installs the module hr_timesheet_sheet."
msgstr ""
msgstr "Installa il modulo hr_timesheet_sheet."
#. module: hr
#: view:hr.employee:0
msgid "Mobile:"
msgstr ""
msgstr "Cellulare:"
#. module: hr
#: view:hr.employee:0
@ -253,12 +255,12 @@ msgstr "Femmina"
#: model:ir.actions.act_window,name:hr.open_view_categ_form
#: model:ir.ui.menu,name:hr.menu_view_employee_category_form
msgid "Categories of Employees"
msgstr ""
msgstr "Categorie dei Dipendenti"
#. module: hr
#: model:ir.ui.menu,name:hr.menu_open_view_attendance_reason_new_config
msgid "Attendance"
msgstr ""
msgstr "Presenza"
#. module: hr
#: field:hr.employee,work_phone:0
@ -284,7 +286,7 @@ msgstr "Posizione Ufficio"
#. module: hr
#: field:hr.job,message_follower_ids:0
msgid "Followers"
msgstr ""
msgstr "Followers"
#. module: hr
#: view:hr.employee:0
@ -319,7 +321,7 @@ msgstr ""
#. module: hr
#: model:ir.actions.client,name:hr.action_client_hr_menu
msgid "Open HR Menu"
msgstr ""
msgstr "Apre Menù HR"
#. module: hr
#: help:hr.job,message_summary:0
@ -376,7 +378,7 @@ msgstr ""
#. module: hr
#: view:hr.employee:0
msgid "Tel:"
msgstr ""
msgstr "Tel:"
#. module: hr
#: selection:hr.employee,marital:0

View File

@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:52+0000\n"
"PO-Revision-Date: 2012-11-28 15:27+0000\n"
"PO-Revision-Date: 2012-11-30 14:35+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-29 05:15+0000\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: hr_evaluation
@ -641,6 +641,13 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" 单击创建一个新的跟个人评估关联的面谈要求。\n"
" </p><p>\n"
" 面谈要求通常是根据员工的评估计划自动生成的。\n"
" 每个用户会自动定期收到要求评估他们的同事的Email。\n"
" </p>\n"
" "
#. module: hr_evaluation
#: field:hr_evaluation.plan.phase,action:0
@ -694,12 +701,12 @@ msgstr "截止日期"
#. module: hr_evaluation
#: help:hr_evaluation.evaluation,rating:0
msgid "This is the appreciation on which the evaluation is summarized."
msgstr ""
msgstr "这是评估总结的评价"
#. module: hr_evaluation
#: selection:hr_evaluation.plan.phase,action:0
msgid "Top-Down Appraisal Requests"
msgstr "自上而下的评申请"
msgstr "自上而下的评申请"
#. module: hr_evaluation
#: view:hr_evaluation.plan.phase:0
@ -795,13 +802,13 @@ msgstr "这个月份数字描述了计划中每次考评的间距(首次之后
#. module: hr_evaluation
#: selection:hr_evaluation.plan.phase,action:0
msgid "Self Appraisal Requests"
msgstr "自我评申请"
msgstr "自我评申请"
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
#: field:hr_evaluation.evaluation,survey_request_ids:0
msgid "Appraisal Forms"
msgstr "评表"
msgstr "评表"
#. module: hr_evaluation
#: selection:hr.evaluation.report,month:0
@ -825,6 +832,15 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" 单击创建一个新的评估\n"
" </p><p>\n"
" 每个员工被指派了一个评估计划。这样的计划定义你\n"
" 的周期性的人才测评个人的频率和方法。\n"
" 你能定义步骤和每一步伴随的面试:自底向上的、自\n"
" 上而下的、自我评价以及管理人员的最终评估。\n"
" </p>\n"
" "
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0

View File

@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2012-10-17 00:25+0000\n"
"Last-Translator: Syllas F. de O. Neto <syllasneto@gmail.com>\n"
"PO-Revision-Date: 2012-11-30 20:18+0000\n"
"Last-Translator: Cristiano Korndörfer <codigo.aberto@dorfer.com.br>\n"
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:30+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: mail
#: field:res.partner,notification_email_send:0
msgid "Receive Feeds by Email"
msgstr ""
msgstr "Receber Feeds por Email"
#. module: mail
#: view:mail.followers:0
@ -36,7 +36,7 @@ msgstr ""
#: field:mail.compose.message,author_id:0
#: field:mail.message,author_id:0
msgid "Author"
msgstr ""
msgstr "Autor"
#. module: mail
#: view:mail.mail:0
@ -51,7 +51,7 @@ msgstr "Destinatários da mensagem"
#. module: mail
#: view:mail.message:0
msgid "Comments"
msgstr ""
msgstr "Comentários"
#. module: mail
#: view:mail.alias:0
@ -70,7 +70,7 @@ msgstr ""
#: code:addons/mail/static/src/xml/mail.xml:43
#, python-format
msgid "Write an internal note..."
msgstr ""
msgstr "Escrever uma nota interna..."
#. module: mail
#: help:mail.alias,alias_name:0
@ -91,16 +91,18 @@ msgid ""
"Invalid expression, it must be a literal python dictionary definition e.g. "
"\"{'field': 'value'}\""
msgstr ""
"Expressão inválida, deve ser uma definição literal de dicionário estilo "
"python como \"{'field': 'value'}\""
#. module: mail
#: view:mail.group:0
msgid "Group Name"
msgstr ""
msgstr "Nome do Grupo"
#. module: mail
#: selection:mail.group,public:0
msgid "Public"
msgstr ""
msgstr "Público"
#. module: mail
#: view:mail.mail:0
@ -110,7 +112,7 @@ msgstr "Corpo"
#. module: mail
#: view:mail.message:0
msgid "Show messages to read"
msgstr ""
msgstr "Mostrar mensagens não lidas"
#. module: mail
#: help:mail.compose.message,email_from:0
@ -131,14 +133,14 @@ msgstr ""
#: field:mail.thread,message_unread:0
#: field:res.partner,message_unread:0
msgid "Unread Messages"
msgstr ""
msgstr "Mensagens não lidas"
#. module: mail
#. openerp-web
#: code:addons/mail/static/src/xml/mail.xml:237
#, python-format
msgid "show"
msgstr ""
msgstr "mostrar"
#. module: mail
#: help:mail.message.subtype,default:0
@ -155,20 +157,20 @@ msgstr ""
#. module: mail
#: model:ir.ui.menu,name:mail.group_all_employees_ir_ui_menu
msgid "Whole Company"
msgstr ""
msgstr "Toda a Empresa"
#. module: mail
#. openerp-web
#: code:addons/mail/static/src/js/mail.js:786
#, python-format
msgid "Do you really want to delete this message?"
msgstr ""
msgstr "Deseja realmente excluir esta mensagem?"
#. module: mail
#: view:mail.message:0
#: field:mail.notification,read:0
msgid "Read"
msgstr ""
msgstr "Lida"
#. module: mail
#: view:mail.group:0
@ -180,13 +182,13 @@ msgstr ""
#: code:addons/mail/static/src/js/mail_followers.js:134
#, python-format
msgid "followers"
msgstr ""
msgstr "Seguidores"
#. module: mail
#: code:addons/mail/mail_message.py:638
#, python-format
msgid "Access Denied"
msgstr ""
msgstr "Acesso Negado"
#. module: mail
#: help:mail.group,image_medium:0
@ -239,12 +241,12 @@ msgstr "Referências"
#: code:addons/mail/static/src/xml/mail.xml:171
#, python-format
msgid "No messages."
msgstr ""
msgstr "Sem mensagens."
#. module: mail
#: model:ir.model,name:mail.model_mail_group
msgid "Discussion group"
msgstr ""
msgstr "Grupo de discussão"
#. module: mail
#. openerp-web
@ -252,14 +254,14 @@ msgstr ""
#: code:addons/mail/static/src/xml/mail.xml:91
#, python-format
msgid "uploading"
msgstr ""
msgstr "enviando"
#. module: mail
#. openerp-web
#: code:addons/mail/static/src/xml/mail.xml:202
#, python-format
msgid "Set back to Inbox"
msgstr ""
msgstr "Devolva para a Caixa de Entrada"
#. module: mail
#: help:mail.compose.message,type:0
@ -301,7 +303,7 @@ msgstr "Assistente para compor Email"
#: help:mail.thread,message_unread:0
#: help:res.partner,message_unread:0
msgid "If checked new messages require your attention."
msgstr ""
msgstr "Se marcado novas mensagens requerem sua atenção"
#. module: mail
#: field:mail.group,image_medium:0
@ -312,7 +314,7 @@ msgstr ""
#: model:ir.actions.client,name:mail.action_mail_to_me_feeds
#: model:ir.ui.menu,name:mail.mail_tomefeeds
msgid "To: me"
msgstr ""
msgstr "Para: mim"
#. module: mail
#: field:mail.message.subtype,name:0
@ -322,7 +324,7 @@ msgstr "Tipo de Mensagem"
#. module: mail
#: field:mail.mail,auto_delete:0
msgid "Auto Delete"
msgstr "Excluir automaticamente"
msgstr "Excluir Automaticamente"
#. module: mail
#. openerp-web
@ -330,28 +332,28 @@ msgstr "Excluir automaticamente"
#: view:mail.group:0
#, python-format
msgid "Unfollow"
msgstr ""
msgstr "Não seguir"
#. module: mail
#. openerp-web
#: code:addons/mail/static/src/xml/mail.xml:236
#, python-format
msgid "show one more message"
msgstr ""
msgstr "Mostrar mais uma mensagem"
#. module: mail
#: code:addons/mail/mail_mail.py:71
#: code:addons/mail/res_users.py:76
#, python-format
msgid "Invalid Action!"
msgstr ""
msgstr "Ação Inválida!"
#. module: mail
#. openerp-web
#: code:addons/mail/static/src/xml/mail.xml:25
#, python-format
msgid "User img"
msgstr ""
msgstr "Imagem do usuário"
#. module: mail
#: model:ir.actions.act_window,name:mail.action_view_mail_mail
@ -364,7 +366,7 @@ msgstr "Emails"
#. module: mail
#: field:mail.followers,partner_id:0
msgid "Related Partner"
msgstr ""
msgstr "Parceiro Relacionado"
#. module: mail
#: help:mail.group,message_summary:0
@ -387,7 +389,7 @@ msgstr ""
#: selection:mail.compose.message,type:0
#: selection:mail.message,type:0
msgid "System notification"
msgstr ""
msgstr "Notificação do sistema"
#. module: mail
#: model:ir.model,name:mail.model_res_partner
@ -398,7 +400,7 @@ msgstr "Parceiro"
#. module: mail
#: model:ir.ui.menu,name:mail.mail_my_stuff
msgid "Organizer"
msgstr ""
msgstr "Organizador"
#. module: mail
#: field:mail.compose.message,subject:0
@ -409,7 +411,7 @@ msgstr "Assunto"
#. module: mail
#: field:mail.wizard.invite,partner_ids:0
msgid "Partners"
msgstr ""
msgstr "Parceiros"
#. module: mail
#: view:mail.mail:0
@ -456,7 +458,7 @@ msgstr "Enviar"
#: code:addons/mail/static/src/js/mail_followers.js:130
#, python-format
msgid "No followers"
msgstr ""
msgstr "Sem seguidores"
#. module: mail
#: view:mail.mail:0
@ -466,7 +468,7 @@ msgstr "Falhou"
#. module: mail
#: model:mail.message.subtype,name:mail.mt_crm_won
msgid "Won"
msgstr ""
msgstr "Venceu"
#. module: mail
#. openerp-web
@ -479,20 +481,20 @@ msgstr ""
#: field:res.partner,message_follower_ids:0
#, python-format
msgid "Followers"
msgstr ""
msgstr "Seguidores"
#. module: mail
#: model:ir.actions.client,name:mail.action_mail_archives_feeds
#: model:ir.ui.menu,name:mail.mail_archivesfeeds
msgid "Archives"
msgstr ""
msgstr "Arquivos"
#. module: mail
#. openerp-web
#: code:addons/mail/static/src/xml/mail.xml:79
#, python-format
msgid "Delete this attachment"
msgstr ""
msgstr "Excluir este anexo"
#. module: mail
#: field:mail.compose.message,message_id:0
@ -505,13 +507,13 @@ msgstr "Cód da Mensagem"
#: code:addons/mail/static/src/js/mail_followers.js:132
#, python-format
msgid "One follower"
msgstr ""
msgstr "Um seguidor"
#. module: mail
#: field:mail.compose.message,type:0
#: field:mail.message,type:0
msgid "Type"
msgstr ""
msgstr "Tipo"
#. module: mail
#: selection:mail.compose.message,type:0
@ -523,22 +525,22 @@ msgstr ""
#. module: mail
#: field:ir.ui.menu,mail_group_id:0
msgid "Mail Group"
msgstr ""
msgstr "Grupo de Email"
#. module: mail
#: selection:res.partner,notification_email_send:0
msgid "Comments and Emails"
msgstr ""
msgstr "Comentários e Emails"
#. module: mail
#: model:ir.model,name:mail.model_mail_favorite
msgid "Favorite messages"
msgstr ""
msgstr "Mensagens favoritas"
#. module: mail
#: view:mail.mail:0
msgid "by"
msgstr ""
msgstr "por"
#. module: mail
#: code:addons/mail/res_users.py:97
@ -570,17 +572,17 @@ msgstr ""
#. module: mail
#: field:mail.group,group_public_id:0
msgid "Authorized Group"
msgstr ""
msgstr "Grupo Autorizado"
#. module: mail
#: view:mail.group:0
msgid "Join Group"
msgstr ""
msgstr "Participar do Grupo"
#. module: mail
#: help:mail.mail,email_from:0
msgid "Message sender, taken from user preferences."
msgstr ""
msgstr "Remetente da mensagem, baseado nas preferências do usuário."
#. module: mail
#: code:addons/mail/wizard/invite.py:39

View File

@ -295,7 +295,7 @@ class mail_message(osv.Model):
return {'id': message.id,
'type': message.type,
'body': html_email_clean(message.body),
'body': html_email_clean(message.body or ''),
'model': message.model,
'res_id': message.res_id,
'record_name': message.record_name,

View File

@ -0,0 +1,28 @@
# Dutch translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:53+0000\n"
"PO-Revision-Date: 2012-11-30 19:41+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-01 05:09+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: note_pad
#: model:ir.model,name:note_pad.model_note_note
msgid "Note"
msgstr "Opmerking"
#. module: note_pad
#: field:note.note,note_pad_url:0
msgid "Pad Url"
msgstr "Pad Url"

View File

@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:53+0000\n"
"PO-Revision-Date: 2012-11-29 15:52+0000\n"
"PO-Revision-Date: 2012-11-30 11:49+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-30 05:08+0000\n"
"X-Launchpad-Export-Date: 2012-12-01 05:09+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: portal
@ -226,7 +226,7 @@ msgstr ""
#. module: portal
#: field:portal.payment.acquirer,name:0
msgid "Name"
msgstr "名"
msgstr "名"
#. module: portal
#: model:ir.model,name:portal.model_res_groups

View File

@ -0,0 +1,36 @@
# Dutch translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:53+0000\n"
"PO-Revision-Date: 2012-11-30 19:42+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-01 05:09+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: portal_claim
#: model:ir.actions.act_window,help:portal_claim.crm_case_categ_claim0
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to register a new claim. \n"
" </p><p>\n"
" You can track your claims from this menu and the action we\n"
" will take.\n"
" </p>\n"
" "
msgstr ""
#. module: portal_claim
#: model:ir.actions.act_window,name:portal_claim.crm_case_categ_claim0
#: model:ir.ui.menu,name:portal_claim.portal_after_sales_claims
msgid "Claims"
msgstr "Klachtenregistratie"

View File

@ -0,0 +1,23 @@
# Dutch translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:53+0000\n"
"PO-Revision-Date: 2012-11-30 19:42+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-01 05:09+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: portal_project
#: model:ir.ui.menu,name:portal_project.portal_services_tasks
msgid "Tasks"
msgstr "Taken"

View File

@ -0,0 +1,42 @@
# Dutch translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:53+0000\n"
"PO-Revision-Date: 2012-11-30 19:43+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-01 05:09+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: portal_project_issue
#: view:project.issue:0
msgid "Creation:"
msgstr "Aangemakt:"
#. module: portal_project_issue
#: model:ir.actions.act_window,name:portal_project_issue.project_issue_categ_act0
#: model:ir.ui.menu,name:portal_project_issue.portal_after_sales_issues
msgid "Issues"
msgstr "Issues"
#. module: portal_project_issue
#: model:ir.actions.act_window,help:portal_project_issue.project_issue_categ_act0
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create an issue.\n"
" </p><p>\n"
" OpenERP's kanban view will help you track easily your "
"current \n"
" pipeline of issues to fix.\n"
" </p>\n"
" "
msgstr ""

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:54+0000\n"
"PO-Revision-Date: 2012-11-29 22:56+0000\n"
"PO-Revision-Date: 2012-11-30 13:11+0000\n"
"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-30 05:07+0000\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#~ msgid "Second UoM"
@ -485,12 +485,12 @@ msgstr "Hauteur"
#. module: product
#: view:product.product:0
msgid "Procurements"
msgstr ""
msgstr "Approvisionnements"
#. module: product
#: model:res.groups,name:product.group_mrp_properties
msgid "Manage Properties of Product"
msgstr ""
msgstr "Gérer les propriétés d'article"
#. module: product
#: help:product.uom,factor:0
@ -543,7 +543,7 @@ msgstr "Temps de travail"
#. module: product
#: model:product.template,name:product.product_product_42_product_template
msgid "Office Suite"
msgstr ""
msgstr "Suite Bureautique"
#. module: product
#: field:product.template,mes_type:0
@ -568,6 +568,16 @@ msgid ""
"Otherwise, this includes goods arriving to any Stock Location with "
"'internal' type."
msgstr ""
"Quantité de cet article dont l'arrivée est prévue.\n"
"Dans le contexte d'un emplacement de stock, cela tient compte des articles "
"arrivant à cet emplacement où à ses enfants.\n"
"Dans le contexte d'un entrepôt, cela tient compte des articles arrivant à "
"l'emplacement de stock de cet entrepôt ou à l'un de ses enfants.\n"
"Dans le contexte d'une boutique, cela tient compte des articles arrivant à "
"l'emplacement de stock de l'entrepôt de cette boutique, ou à l'un de ses "
"enfants.\n"
"Dans les autres cas, cela tient compte de tous les articles arrivant à des "
"emplacements de type \"interne\"."
#. module: product
#: constraint:product.template:0
@ -589,7 +599,7 @@ msgstr "Boîte 20x20x40"
#. module: product
#: field:product.template,warranty:0
msgid "Warranty"
msgstr ""
msgstr "Garantie"
#. module: product
#: view:product.pricelist.item:0
@ -606,7 +616,7 @@ msgstr ""
#. module: product
#: model:res.groups,name:product.group_purchase_pricelist
msgid "Purchase Pricelists"
msgstr ""
msgstr "Liste de prix d'achat"
#. module: product
#: model:product.template,name:product.product_product_5_product_template
@ -636,7 +646,7 @@ msgstr ""
#. module: product
#: model:product.template,name:product.product_product_36_product_template
msgid "Blank DVD-RW"
msgstr ""
msgstr "DVD-RW vierge"
#. module: product
#: selection:product.category,type:0

View File

@ -14,7 +14,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-30 05:08+0000\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: product_expiry

View File

@ -7,15 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2012-02-15 22:57+0000\n"
"Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-"
"consulting.net>\n"
"PO-Revision-Date: 2012-11-30 10:24+0000\n"
"Last-Translator: Felix Schubert <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 05:35+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-01 05:07+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: project
#: view:project.project:0
@ -174,7 +173,7 @@ msgstr "Prozent erledigte Aufgaben zu Gesamtsumme der offenen Aufgaben."
#. module: project
#: model:ir.actions.client,name:project.action_client_project_menu
msgid "Open Project Menu"
msgstr ""
msgstr "Projekt Menu öffnen"
#. module: project
#: model:ir.actions.act_window,help:project.action_project_task_user_tree
@ -261,7 +260,7 @@ msgstr ""
#. module: project
#: view:project.config.settings:0
msgid "Project Management"
msgstr "Projekte"
msgstr "Projekt-Management"
#. module: project
#: model:ir.actions.act_window,name:project.action_project_task_delegate
@ -273,7 +272,7 @@ msgstr "Delegation Projektaufgabe"
#: code:addons/project/project.py:551
#, python-format
msgid "Project has been <b>created</b>."
msgstr ""
msgstr "Projekt wurde <b>erzeugt</b>."
#. module: project
#: view:project.config.settings:0
@ -408,7 +407,7 @@ msgstr "Der beuaftragte Benutzer muss definiert werden."
#. module: project
#: view:project.project:0
msgid "Project(s) Manager"
msgstr ""
msgstr "Projekt Manager"
#. module: project
#: selection:project.project,state:0
@ -506,7 +505,7 @@ msgstr ""
#. module: project
#: view:project.project:0
msgid "Project Settings"
msgstr ""
msgstr "Projekt-Einstellungen"
#. module: project
#: view:report.project.task.user:0
@ -630,6 +629,7 @@ msgstr "Keine Aufgabenvorlage"
msgid ""
"Follow this project to automatically follow all related tasks and issues."
msgstr ""
"Folge diesem Projekt, um alle relevanten Aufgaben und Probleme zu verfolgen."
#. module: project
#: field:project.task,planned_hours:0
@ -820,7 +820,7 @@ msgstr "PRÜFUNG: %s"
#. module: project
#: view:project.project:0
msgid "Close Project"
msgstr ""
msgstr "Projekt abschließen"
#. module: project
#: field:project.project,tasks:0
@ -913,7 +913,7 @@ msgstr ""
#: code:addons/project/project.py:560
#, python-format
msgid "Project has been <b>canceled</b>."
msgstr ""
msgstr "Projekt wurde <b>abgebrochen</b>."
#. module: project
#: help:project.project,analytic_account_id:0
@ -940,7 +940,7 @@ msgstr "Abbrechen"
#: code:addons/project/project.py:563
#, python-format
msgid "Project has been <b>closed</b>."
msgstr ""
msgstr "Projekt wurde <b>abgeschlossen</b>."
#. module: project
#: view:project.project:0
@ -2041,7 +2041,7 @@ msgstr ""
#: model:ir.actions.act_window,name:project.action_config_settings
#: view:project.config.settings:0
msgid "Configure Project"
msgstr ""
msgstr "Projekt konfigurieren"
#. module: project
#: field:project.project,message_comment_ids:0
@ -2087,7 +2087,7 @@ msgstr "Nicht zugewiesenen Aufgaben"
#. module: project
#: view:project.project:0
msgid "Projects in which I am a manager"
msgstr "Projekte, die ich manage"
msgstr "Projekte, die ich verantworte"
#. module: project
#: view:project.task:0

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2012-02-14 10:06+0000\n"
"Last-Translator: 开阖软件 Jeff Wang <jeff@osbzr.com>\n"
"PO-Revision-Date: 2012-11-30 08:57+0000\n"
"Last-Translator: mrshelly <Unknown>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:26+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: project_issue
#: model:project.category,name:project_issue.project_issue_category_03
@ -27,7 +27,7 @@ msgstr ""
msgid ""
"Allows you to configure your incoming mail server, and create issues from "
"incoming emails."
msgstr ""
msgstr "允许直接从邮件收件服务器收到的邮件创建相关问题."
#. module: project_issue
#: field:project.issue.report,delay_open:0
@ -74,7 +74,7 @@ msgstr "进度(%)"
#: view:project.issue:0
#: field:project.issue,message_unread:0
msgid "Unread Messages"
msgstr ""
msgstr "未读消息"
#. module: project_issue
#: code:addons/project_issue/project_issue.py:562
@ -90,7 +90,7 @@ msgstr "关注者的电子邮件"
#. module: project_issue
#: help:project.issue,message_unread:0
msgid "If checked new messages require your attention."
msgstr ""
msgstr "如果要求你关注新消息,勾选此项"
#. module: project_issue
#: help:account.analytic.account,use_issues:0
@ -213,7 +213,7 @@ msgstr "距开始日期小时数"
#. module: project_issue
#: model:ir.model,name:project_issue.model_account_analytic_account
msgid "Analytic Account"
msgstr ""
msgstr "辅助核算项"
#. module: project_issue
#: help:project.issue,message_summary:0
@ -288,7 +288,7 @@ msgstr "版本"
#. module: project_issue
#: field:project.issue,message_follower_ids:0
msgid "Followers"
msgstr ""
msgstr "关注者"
#. module: project_issue
#: view:project.issue:0
@ -305,7 +305,7 @@ msgstr "问题分类"
#. module: project_issue
#: field:project.issue,email_from:0
msgid "Email"
msgstr "电子邮件"
msgstr "Email"
#. module: project_issue
#: field:project.issue,channel_id:0
@ -323,12 +323,12 @@ msgstr "最低"
#: code:addons/project_issue/project_issue.py:358
#, python-format
msgid "%s (copy)"
msgstr ""
msgstr "%s (副本)"
#. module: project_issue
#: model:ir.actions.server,name:project_issue.actions_server_project_issue_read
msgid "Mark read"
msgstr ""
msgstr "标记为已读"
#. module: project_issue
#: view:project.issue:0
@ -383,7 +383,7 @@ msgstr "七月"
#. module: project_issue
#: model:ir.ui.menu,name:project_issue.menu_project_issue_category_act
msgid "Categories"
msgstr "类"
msgstr "类"
#. module: project_issue
#: view:project.issue:0
@ -454,7 +454,7 @@ msgstr "十二月"
#. module: project_issue
#: field:project.issue,categ_ids:0
msgid "Tags"
msgstr ""
msgstr "标签"
#. module: project_issue
#: view:project.issue:0
@ -464,7 +464,7 @@ msgstr "缺陷列表"
#. module: project_issue
#: model:project.category,name:project_issue.project_issue_category_01
msgid "Little problem"
msgstr ""
msgstr "小问题"
#. module: project_issue
#: view:project.project:0
@ -484,7 +484,7 @@ msgstr "更新日期"
#. module: project_issue
#: view:project.issue:0
msgid "Project:"
msgstr ""
msgstr "项目:"
#. module: project_issue
#: view:project.issue:0
@ -540,7 +540,7 @@ msgstr "草稿"
#: selection:project.issue,priority:0
#: selection:project.issue.report,priority:0
msgid "Low"
msgstr "低"
msgstr "低"
#. module: project_issue
#: field:project.issue,date_closed:0
@ -558,7 +558,7 @@ msgstr "平均耗用天数"
#: view:project.issue.report:0
#: selection:project.issue.report,state:0
msgid "Pending"
msgstr "等待中"
msgstr "待处理"
#. module: project_issue
#: view:project.issue:0
@ -581,7 +581,7 @@ msgstr "八月"
#: selection:project.issue,priority:0
#: selection:project.issue.report,priority:0
msgid "Normal"
msgstr "一般"
msgstr "普通"
#. module: project_issue
#: view:project.issue:0
@ -596,7 +596,7 @@ msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Category:"
msgstr ""
msgstr "分类:"
#. module: project_issue
#: selection:project.issue.report,month:0
@ -621,7 +621,7 @@ msgstr "剩余天数"
#. module: project_issue
#: field:project.issue,message_is_follower:0
msgid "Is a Follower"
msgstr ""
msgstr "是一个关注者"
#. module: project_issue
#: help:project.issue,state:0
@ -648,13 +648,13 @@ msgstr "十一月"
#: code:addons/project_issue/project_issue.py:474
#, python-format
msgid "Warning!"
msgstr ""
msgstr "警告!"
#. module: project_issue
#: field:project.issue,message_comment_ids:0
#: help:project.issue,message_comment_ids:0
msgid "Comments and emails"
msgstr ""
msgstr "评论和电子邮件"
#. module: project_issue
#: view:project.issue.report:0
@ -689,7 +689,7 @@ msgstr "这些人将收到电子邮件。"
#. module: project_issue
#: field:project.issue,message_summary:0
msgid "Summary"
msgstr ""
msgstr "摘要"
#. module: project_issue
#: field:project.issue,date:0
@ -706,7 +706,7 @@ msgstr "指派到"
#. module: project_issue
#: view:project.config.settings:0
msgid "Configure"
msgstr ""
msgstr "设置"
#. module: project_issue
#: view:project.issue:0
@ -726,7 +726,7 @@ msgstr "版本号"
#. module: project_issue
#: view:project.issue:0
msgid "Cancel"
msgstr "取消(&C)"
msgstr "取消"
#. module: project_issue
#: selection:project.issue.report,state:0
@ -796,7 +796,7 @@ msgstr "问题"
#: code:addons/project_issue/project_issue.py:542
#, python-format
msgid "Stage changed to <b>%s</b>."
msgstr ""
msgstr "阶段已改为<b>%s</b>"
#. module: project_issue
#: model:project.category,name:project_issue.project_issue_category_02

View File

@ -7,24 +7,24 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2012-06-01 08:41+0000\n"
"PO-Revision-Date: 2012-11-30 19:55+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 05:42+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-01 05:07+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: purchase
#: model:res.groups,name:purchase.group_analytic_accounting
msgid "Analytic Accounting for Purchases"
msgstr ""
msgstr "Kostenplaatsen voor inkopen"
#. module: purchase
#: model:ir.model,name:purchase.model_account_config_settings
msgid "account.config.settings"
msgstr ""
msgstr "account.config.settings"
#. module: purchase
#: view:board.board:0
@ -156,7 +156,7 @@ msgstr "Order van dag"
#. module: purchase
#: help:purchase.order,message_unread:0
msgid "If checked new messages require your attention."
msgstr ""
msgstr "Indien aangevinkt zullen nieuwe berichten uw aandacht vragen."
#. module: purchase
#: model:ir.ui.menu,name:purchase.menu_procurement_management_inventory
@ -181,6 +181,9 @@ msgid ""
"Holds the Chatter summary (number of messages, ...). This summary is "
"directly in html format in order to be inserted in kanban views."
msgstr ""
"Bevat de samenvatting van de chatter (aantal berichten,...). Deze "
"samenvatting is direct in html formaat om zo in de kanban weergave te worden "
"ingevoegd."
#. module: purchase
#: code:addons/purchase/purchase.py:956
@ -189,7 +192,7 @@ msgstr ""
#: code:addons/purchase/wizard/purchase_order_group.py:47
#, python-format
msgid "Warning!"
msgstr ""
msgstr "Waarschuwing!"
#. module: purchase
#: code:addons/purchase/purchase.py:556
@ -240,7 +243,7 @@ msgstr "Gemiddelde prijs"
#: code:addons/purchase/purchase.py:813
#, python-format
msgid "Invoice <b>paid</b>."
msgstr ""
msgstr "Factuur <b>betaald</b>."
#. module: purchase
#: view:purchase.order:0
@ -274,7 +277,7 @@ msgstr "Afleveradres :"
#. module: purchase
#: view:purchase.order:0
msgid "Confirm Order"
msgstr ""
msgstr "Bevestig Order"
#. module: purchase
#: field:purchase.config.settings,module_warning:0
@ -291,7 +294,7 @@ msgstr "Order referentie"
#. module: purchase
#: view:purchase.config.settings:0
msgid "Invoicing Process"
msgstr ""
msgstr "Factureer proces"
#. module: purchase
#: model:process.transition,name:purchase.process_transition_approvingpurchaseorder0
@ -341,7 +344,7 @@ msgstr "Totaalbedrag excl. belastingen"
#. module: purchase
#: model:ir.ui.menu,name:purchase.menu_purchase_uom_categ_form_action
msgid "Unit of Measure Categories"
msgstr ""
msgstr "Maateenheid categorieën"
#. module: purchase
#: view:purchase.report:0
@ -352,7 +355,7 @@ msgstr "Categorie"
#. module: purchase
#: view:purchase.order:0
msgid "Quotation "
msgstr ""
msgstr "Offerte "
#. module: purchase
#: code:addons/purchase/purchase.py:793
@ -379,7 +382,7 @@ msgstr ""
#: field:purchase.order.line,state:0
#: view:purchase.report:0
msgid "Status"
msgstr ""
msgstr "Status"
#. module: purchase
#: selection:purchase.report,month:0
@ -389,7 +392,7 @@ msgstr "Augustus"
#. module: purchase
#: view:product.product:0
msgid "to"
msgstr ""
msgstr "t/m"
#. module: purchase
#: selection:purchase.report,month:0
@ -426,7 +429,7 @@ msgstr ""
#. module: purchase
#: constraint:stock.move:0
msgid "You must assign a serial number for this product."
msgstr ""
msgstr "U dient een productie partij toe te wijzen voor dit product."
#. module: purchase
#: selection:purchase.report,month:0
@ -442,7 +445,7 @@ msgstr ""
#. module: purchase
#: field:purchase.order,message_summary:0
msgid "Summary"
msgstr ""
msgstr "Samenvatting"
#. module: purchase
#: model:process.transition,note:purchase.process_transition_createpackinglist0
@ -575,6 +578,8 @@ msgid ""
"Error: The default Unit of Measure and the purchase Unit of Measure must be "
"in the same category."
msgstr ""
"Foutmelding: de standaard maateenheid moet in dezelfde categorie vallen als "
"de inkoop maateenheid."
#. module: purchase
#: view:board.board:0
@ -601,19 +606,19 @@ msgstr "De naam van het bedrijf moet uniek zijn!"
#: view:product.product:0
#: field:product.template,purchase_ok:0
msgid "Can be Purchased"
msgstr ""
msgstr "Inkoop product"
#. module: purchase
#: model:ir.ui.menu,name:purchase.menu_action_picking_tree_in_move
msgid "Incoming Products"
msgstr ""
msgstr "Inkomende producten"
#. module: purchase
#: view:purchase.config.settings:0
#: view:purchase.order.group:0
#: view:purchase.order.line_invoice:0
msgid "or"
msgstr ""
msgstr "of"
#. module: purchase
#: field:res.company,po_lead:0
@ -623,7 +628,7 @@ msgstr "Voorbereidingstijd inkoop"
#. module: purchase
#: constraint:res.partner:0
msgid "Error: Invalid ean code"
msgstr ""
msgstr "Fout: Ongeldige EAN-code"
#. module: purchase
#: model:process.transition,note:purchase.process_transition_invoicefrompurchase0
@ -639,7 +644,7 @@ msgstr ""
#. module: purchase
#: view:purchase.config.settings:0
msgid "Apply"
msgstr ""
msgstr "Toepassen"
#. module: purchase
#: field:purchase.order,amount_untaxed:0
@ -659,12 +664,12 @@ msgstr ""
#. module: purchase
#: view:purchase.order:0
msgid "Customer Address"
msgstr ""
msgstr "Klant adres"
#. module: purchase
#: selection:purchase.order,state:0
msgid "RFQ Sent"
msgstr ""
msgstr "Offerte verzonden"
#. module: purchase
#: view:purchase.order:0
@ -717,12 +722,12 @@ msgstr "Inkooporders welke zich de concept fase bevinden"
#. module: purchase
#: view:product.product:0
msgid "Suppliers"
msgstr ""
msgstr "Leveranciers"
#. module: purchase
#: view:product.product:0
msgid "To Purchase"
msgstr ""
msgstr "Inkoop product"
#. module: purchase
#: model:ir.actions.act_window,help:purchase.purchase_form_action
@ -761,7 +766,7 @@ msgstr ""
#. module: purchase
#: view:purchase.order:0
msgid "(update)"
msgstr ""
msgstr "(update)"
#. module: purchase
#: view:purchase.order:0
@ -838,7 +843,7 @@ msgstr "Prijslijst"
#. module: purchase
#: selection:purchase.order,state:0
msgid "Draft PO"
msgstr ""
msgstr "Concept inkoopporder"
#. module: purchase
#: model:process.node,name:purchase.process_node_draftpurchaseorder0
@ -858,7 +863,7 @@ msgstr "Orderdatum"
#. module: purchase
#: field:purchase.config.settings,group_uom:0
msgid "Manage different units of measure for products"
msgstr ""
msgstr "Beheer verschillende maateenheden voor een product."
#. module: purchase
#: model:process.node,name:purchase.process_node_invoiceafterpacking0
@ -906,7 +911,7 @@ msgstr "Goederenstromen"
#: code:addons/purchase/purchase.py:1141
#, python-format
msgid "Draft Purchase Order created"
msgstr ""
msgstr "Concept inkoopporderBeheer aangemaakt."
#. module: purchase
#: model:ir.ui.menu,name:purchase.menu_product_category_config_purchase
@ -916,7 +921,7 @@ msgstr "Productcategorieën"
#. module: purchase
#: view:purchase.order:0
msgid "Send Request for Quotation"
msgstr ""
msgstr "Verstuur inkooporder"
#. module: purchase
#: help:purchase.order,invoiced:0
@ -926,12 +931,12 @@ msgstr "Dit geeft aan dat de factuur is betaald."
#. module: purchase
#: field:purchase.order,notes:0
msgid "Terms and Conditions"
msgstr ""
msgstr "Voorwaarden"
#. module: purchase
#: field:purchase.order,currency_id:0
msgid "unknown"
msgstr ""
msgstr "onbekend"
#. module: purchase
#: help:purchase.order,date_order:0
@ -941,7 +946,7 @@ msgstr "Datum waarop dit document gemaakt is."
#. module: purchase
#: field:purchase.order,message_is_follower:0
msgid "Is a Follower"
msgstr ""
msgstr "Is een volger"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.action_purchase_order_report_graph
@ -1008,7 +1013,7 @@ msgstr "Dagen tot goedkeuring"
#. module: purchase
#: view:purchase.config.settings:0
msgid "Supplier Features"
msgstr ""
msgstr "Leveranciersopties"
#. module: purchase
#: report:purchase.order:0
@ -1019,7 +1024,7 @@ msgstr "Hvhd"
#. module: purchase
#: model:res.groups,name:purchase.group_delivery_invoice_address
msgid "Addresses in Purchase Orders"
msgstr ""
msgstr "Adressen in inkooporders"
#. module: purchase
#: model:process.transition.action,name:purchase.process_transition_action_approvingcancelpurchaseorder0
@ -1035,7 +1040,7 @@ msgstr "Annuleren"
#: field:purchase.order,message_comment_ids:0
#: help:purchase.order,message_comment_ids:0
msgid "Comments and emails"
msgstr ""
msgstr "Opmerkingen en e-mails."
#. module: purchase
#: sql_constraint:purchase.order:0
@ -1079,12 +1084,13 @@ msgstr ""
#. module: purchase
#: view:product.product:0
msgid "a draft purchase order"
msgstr ""
msgstr "een concept inkooporder"
#. module: purchase
#: constraint:stock.move:0
msgid "You try to assign a lot which is not from the same product."
msgstr ""
"U probeert een partij toe te wijzen wat niet van hetzelfde product is."
#. module: purchase
#: view:purchase.report:0
@ -1094,13 +1100,13 @@ msgstr "Order van jaar"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.act_res_partner_2_purchase_order
msgid "RFQs and Purchases"
msgstr ""
msgstr "Offertes en inkopen"
#. module: purchase
#: field:account.config.settings,group_analytic_account_for_purchases:0
#: field:purchase.config.settings,group_analytic_account_for_purchases:0
msgid "Analytic accounting for purchases"
msgstr ""
msgstr "Kostenplaatsen voor inkopen"
#. module: purchase
#: model:process.transition,note:purchase.process_transition_confirmingpurchaseorder1
@ -1123,7 +1129,7 @@ msgstr ""
#. module: purchase
#: model:ir.model,name:purchase.model_mail_mail
msgid "Outgoing Mails"
msgstr ""
msgstr "Uitgaande E-mails"
#. module: purchase
#: code:addons/purchase/purchase.py:420
@ -1134,13 +1140,13 @@ msgstr ""
#. module: purchase
#: help:purchase.order,message_ids:0
msgid "Messages and communication history"
msgstr ""
msgstr "Berichten en communicatie historie"
#. module: purchase
#: field:purchase.order,warehouse_id:0
#: field:stock.picking.in,warehouse_id:0
msgid "Destination Warehouse"
msgstr ""
msgstr "Bestemmings magazijn"
#. module: purchase
#: code:addons/purchase/purchase.py:956
@ -1159,7 +1165,7 @@ msgstr "Maateenheden"
#. module: purchase
#: field:purchase.config.settings,group_purchase_pricelist:0
msgid "Manage pricelist per supplier"
msgstr ""
msgstr "Beheer prijslijsten per leverancier"
#. module: purchase
#: code:addons/purchase/purchase.py:816
@ -1181,7 +1187,7 @@ msgstr ""
#. module: purchase
#: view:purchase.order:0
msgid "Approve Order"
msgstr ""
msgstr "Order goedkeuren"
#. module: purchase
#: help:purchase.report,date:0
@ -1209,7 +1215,7 @@ msgstr "Inkooporder statistieken"
#: view:purchase.order:0
#: field:purchase.order,message_unread:0
msgid "Unread Messages"
msgstr ""
msgstr "Ongelezen berichten"
#. module: purchase
#: view:purchase.order.line_invoice:0
@ -1259,7 +1265,7 @@ msgstr "Voorraadmutatie"
#: code:addons/purchase/purchase.py:252
#, python-format
msgid "Invalid Action!"
msgstr ""
msgstr "Ongeldige actie!"
#. module: purchase
#: field:purchase.order,validator:0
@ -1287,7 +1293,7 @@ msgstr "Offerteaanvraag"
#. module: purchase
#: view:purchase.order:0
msgid "Source"
msgstr ""
msgstr "Bron"
#. module: purchase
#: model:ir.model,name:purchase.model_stock_picking
@ -1382,7 +1388,7 @@ msgstr "Maart"
#. module: purchase
#: view:purchase.order:0
msgid "Receive Invoice"
msgstr ""
msgstr "Ontvang factuur"
#. module: purchase
#: view:purchase.order:0
@ -1409,7 +1415,7 @@ msgstr "Te controleren door de boekhouder."
#. module: purchase
#: model:ir.model,name:purchase.model_purchase_config_settings
msgid "purchase.config.settings"
msgstr ""
msgstr "purchase.config.settings"
#. module: purchase
#: model:process.node,note:purchase.process_node_approvepurchaseorder0
@ -1420,7 +1426,7 @@ msgstr "Status van de inkooporder."
#. module: purchase
#: field:purchase.order.line,product_uom:0
msgid "Product Unit of Measure"
msgstr ""
msgstr "Maateenheid product"
#. module: purchase
#: model:ir.actions.act_window,help:purchase.purchase_pricelist_version_action
@ -1467,7 +1473,7 @@ msgstr ""
#. module: purchase
#: view:purchase.order:0
msgid "Purchase Order "
msgstr ""
msgstr "InkoopporderBeheer "
#. module: purchase
#: view:purchase.order.line:0
@ -1478,12 +1484,12 @@ msgstr "Handmatige facturen"
#: model:ir.actions.act_window,name:purchase.action_purchase_configuration
#: view:purchase.config.settings:0
msgid "Configure Purchases"
msgstr ""
msgstr "Inkopen instellen"
#. module: purchase
#: view:purchase.order:0
msgid "Untaxed"
msgstr ""
msgstr "Onbelast"
#. module: purchase
#: model:process.transition,name:purchase.process_transition_createpackinglist0
@ -1494,7 +1500,7 @@ msgstr "Pakbon gegenereerd"
#: model:ir.actions.act_window,name:purchase.purchase_line_form_action2
#: model:ir.ui.menu,name:purchase.menu_purchase_line_order_draft
msgid "On Purchase Order Lines"
msgstr ""
msgstr "Op inkooporderregels"
#. module: purchase
#: report:purchase.quotation:0
@ -1516,7 +1522,7 @@ msgstr ""
#. module: purchase
#: model:ir.ui.menu,name:purchase.menu_product_pricelist_action2_purchase_type
msgid "Price Types"
msgstr ""
msgstr "Prijs types"
#. module: purchase
#: help:purchase.order,date_approve:0
@ -1675,12 +1681,12 @@ msgstr ""
#. module: purchase
#: field:purchase.order,invoiced:0
msgid "Invoice Received"
msgstr ""
msgstr "Factuur ontvangen"
#. module: purchase
#: model:ir.actions.server,name:purchase.actions_server_purchase_order_unread
msgid "Mark unread"
msgstr ""
msgstr "Markeer als ongelezen"
#. module: purchase
#: field:purchase.order,invoice_method:0
@ -1741,7 +1747,7 @@ msgstr ""
#. module: purchase
#: model:ir.actions.client,name:purchase.action_client_purchase_menu
msgid "Open Purchase Menu"
msgstr ""
msgstr "Inkoop menu openen"
#. module: purchase
#: field:purchase.order,company_id:0
@ -1795,7 +1801,7 @@ msgstr "Ontvangsten analyse"
#. module: purchase
#: field:purchase.order,message_ids:0
msgid "Messages"
msgstr ""
msgstr "Berichten"
#. module: purchase
#: model:ir.actions.report.xml,name:purchase.report_purchase_order
@ -1820,7 +1826,7 @@ msgstr "Inkooporder"
#: code:addons/purchase/wizard/purchase_line_invoice.py:109
#, python-format
msgid "Error!"
msgstr ""
msgstr "Fout!"
#. module: purchase
#: report:purchase.order:0
@ -1858,13 +1864,13 @@ msgstr "Geannuleerd"
#. module: purchase
#: field:res.partner,purchase_order_count:0
msgid "# of Purchase Order"
msgstr ""
msgstr "# inkoopporderBeheer"
#. module: purchase
#: code:addons/purchase/purchase.py:810
#, python-format
msgid "Shipment <b>received</b>."
msgstr ""
msgstr "Inkomende levering <b>ontvangen</>"
#. module: purchase
#: report:purchase.quotation:0
@ -1874,7 +1880,7 @@ msgstr "Tel.:"
#. module: purchase
#: view:purchase.order:0
msgid "Resend Purchase Order"
msgstr ""
msgstr "InkoopporderBeheer opnieuw verzenden"
#. module: purchase
#: help:purchase.config.settings,group_purchase_delivery_address:0
@ -1930,7 +1936,7 @@ msgstr ""
#. module: purchase
#: field:purchase.order,message_follower_ids:0
msgid "Followers"
msgstr ""
msgstr "Volgers"
#. module: purchase
#: help:purchase.config.settings,module_purchase_requisition:0
@ -1951,7 +1957,7 @@ msgstr "Factuurregels"
#. module: purchase
#: model:ir.actions.server,name:purchase.actions_server_purchase_order_read
msgid "Mark read"
msgstr ""
msgstr "Markeer als gelezen"
#. module: purchase
#: model:ir.actions.act_window,help:purchase.action_purchase_order_report_all
@ -1967,7 +1973,7 @@ msgstr ""
#. module: purchase
#: model:email.template,report_name:purchase.email_template_edi_purchase
msgid "RFQ_${(object.name or '').replace('/','_')}"
msgstr ""
msgstr "Offerte_${(object.name or '').replace('/','_')}"
#. module: purchase
#: code:addons/purchase/purchase.py:971
@ -2008,7 +2014,7 @@ msgstr "EDI Prijslijst (%s)"
#: view:purchase.report:0
#: field:purchase.report,product_uom:0
msgid "Reference Unit of Measure"
msgstr ""
msgstr "Maateenheid referentie"
#. module: purchase
#: view:purchase.report:0
@ -2118,6 +2124,8 @@ msgstr "Januari"
#: constraint:stock.move:0
msgid "You cannot move products from or to a location of the type view."
msgstr ""
"Het is niet mogelijk om producten te verplaatsen naar een locatie van het "
"type 'weergave'"
#. module: purchase
#: help:purchase.order,invoice_method:0
@ -2231,7 +2239,7 @@ msgstr "Totaalbedrag"
#. module: purchase
#: model:ir.model,name:purchase.model_product_template
msgid "Product Template"
msgstr ""
msgstr "Productsjabloon"
#. module: purchase
#: view:purchase.order.group:0

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:54+0000\n"
"PO-Revision-Date: 2012-02-13 07:36+0000\n"
"PO-Revision-Date: 2012-11-30 19:58+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:30+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: purchase_requisition
#: view:purchase.requisition:0
@ -50,7 +50,7 @@ msgstr ""
#. module: purchase_requisition
#: field:purchase.requisition,message_unread:0
msgid "Unread Messages"
msgstr ""
msgstr "Ongelezen berichten"
#. module: purchase_requisition
#: field:purchase.requisition,company_id:0
@ -61,7 +61,7 @@ msgstr "Bedrijf"
#. module: purchase_requisition
#: help:purchase.requisition,message_unread:0
msgid "If checked new messages require your attention."
msgstr ""
msgstr "Indien aangevinkt zullen nieuwe berichten uw aandacht vragen."
#. module: purchase_requisition
#: code:addons/purchase_requisition/purchase_requisition.py:153
@ -81,7 +81,7 @@ msgstr "Aantal"
#. module: purchase_requisition
#: field:purchase.requisition,message_ids:0
msgid "Messages"
msgstr ""
msgstr "Berichten"
#. module: purchase_requisition
#: model:ir.model,name:purchase_requisition.model_purchase_order
@ -126,6 +126,8 @@ msgid ""
"You provided an invalid \"EAN13 Barcode\" reference. You may use the "
"\"Internal Reference\" field instead."
msgstr ""
"U gebruikte een verkeerde \"EAN13 Barcode\" referentie. Hiervoor in de "
"plaats kunt u de interne referentie gebruiken."
#. module: purchase_requisition
#: selection:purchase.requisition,exclusive:0
@ -141,7 +143,7 @@ msgstr "Terugzetten naar Concept"
#: code:addons/purchase_requisition/purchase_requisition.py:153
#, python-format
msgid "Warning!"
msgstr ""
msgstr "Waarschuwing!"
#. module: purchase_requisition
#: model:ir.actions.act_window,help:purchase_requisition.action_purchase_requisition
@ -165,12 +167,12 @@ msgstr ""
#: report:purchase.requisition:0
#: view:purchase.requisition:0
msgid "Source"
msgstr ""
msgstr "Bron"
#. module: purchase_requisition
#: field:purchase.requisition,message_follower_ids:0
msgid "Followers"
msgstr ""
msgstr "Volgers"
#. module: purchase_requisition
#: field:purchase.requisition,warehouse_id:0
@ -205,7 +207,7 @@ msgstr "Inkoopaanvraag"
#: view:purchase.requisition:0
#: selection:purchase.requisition,state:0
msgid "Sent to Suppliers"
msgstr ""
msgstr "Stuur naar leveranciers"
#. module: purchase_requisition
#: help:purchase.requisition,message_summary:0
@ -213,6 +215,9 @@ msgid ""
"Holds the Chatter summary (number of messages, ...). This summary is "
"directly in html format in order to be inserted in kanban views."
msgstr ""
"Bevat de samenvatting van de chatter (aantal berichten,...). Deze "
"samenvatting is direct in html formaat om zo in de kanban weergave te worden "
"ingevoegd."
#. module: purchase_requisition
#: view:purchase.requisition:0
@ -222,7 +227,7 @@ msgstr "Goedgekeurd door leverancier"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Send to Suppliers"
msgstr ""
msgstr "Stuur naar leveranciers"
#. module: purchase_requisition
#: report:purchase.requisition:0
@ -278,28 +283,28 @@ msgstr "Startdatum"
#. module: purchase_requisition
#: view:purchase.requisition.partner:0
msgid "or"
msgstr ""
msgstr "of"
#. module: purchase_requisition
#: field:purchase.requisition.line,product_uom_id:0
msgid "Product Unit of Measure"
msgstr ""
msgstr "Maateenheid product"
#. module: purchase_requisition
#: view:purchase.requisition:0
#: field:purchase.requisition,state:0
msgid "Status"
msgstr ""
msgstr "Status"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Terms and Conditions"
msgstr ""
msgstr "Voorwaarden"
#. module: purchase_requisition
#: sql_constraint:product.product:0
msgid "Error ! Ending Date cannot be set before Beginning Date."
msgstr ""
msgstr "Fout! Einddatum kan niet voor de begindatum liggen."
#. module: purchase_requisition
#: view:purchase.order:0
@ -319,13 +324,13 @@ msgstr "Gebruiker"
#. module: purchase_requisition
#: field:purchase.requisition,message_is_follower:0
msgid "Is a Follower"
msgstr ""
msgstr "Is een volger"
#. module: purchase_requisition
#: field:purchase.requisition,message_comment_ids:0
#: help:purchase.requisition,message_comment_ids:0
msgid "Comments and emails"
msgstr ""
msgstr "Opmerkingen en e-mails."
#. module: purchase_requisition
#: view:purchase.requisition:0
@ -336,7 +341,7 @@ msgstr "Inkoopaanvragen zoeken"
#: code:addons/purchase_requisition/wizard/purchase_requisition_partner.py:41
#, python-format
msgid "No Product in Tender."
msgstr ""
msgstr "Geen product in aanvraag"
#. module: purchase_requisition
#: view:purchase.requisition:0
@ -346,7 +351,7 @@ msgstr "Verwijder Inkooporder"
#. module: purchase_requisition
#: field:purchase.requisition,message_summary:0
msgid "Summary"
msgstr ""
msgstr "Samenvatting"
#. module: purchase_requisition
#: view:purchase.requisition:0
@ -421,7 +426,7 @@ msgstr "Orderreferentie moet uniek zijn per bedrijf!"
#. module: purchase_requisition
#: field:purchase.requisition,origin:0
msgid "Source Document"
msgstr ""
msgstr "Bron document"
#. module: purchase_requisition
#: view:purchase.requisition:0
@ -509,7 +514,7 @@ msgstr "Aanvraagdatum"
#. module: purchase_requisition
#: help:purchase.requisition,message_ids:0
msgid "Messages and communication history"
msgstr ""
msgstr "Berichten en communicatie historie"
#. module: purchase_requisition
#: report:purchase.requisition:0

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:54+0000\n"
"PO-Revision-Date: 2011-01-26 18:40+0000\n"
"Last-Translator: Douwe Wullink (Dypalio) <Unknown>\n"
"PO-Revision-Date: 2012-11-30 19:55+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:02+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: report_intrastat
#: report:account.invoice.intrastat:0
@ -107,6 +107,8 @@ msgid ""
"Error: The default Unit of Measure and the purchase Unit of Measure must be "
"in the same category."
msgstr ""
"Foutmelding: de standaard maateenheid moet in dezelfde categorie vallen als "
"de inkoop maateenheid."
#. module: report_intrastat
#: report:account.invoice.intrastat:0

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-11-24 02:54+0000\n"
"PO-Revision-Date: 2012-05-10 18:23+0000\n"
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
"PO-Revision-Date: 2012-11-30 19:56+0000\n"
"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-25 06:22+0000\n"
"X-Generator: Launchpad (build 16293)\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: resource
#: help:resource.calendar.leaves,resource_id:0
@ -100,7 +100,7 @@ msgstr ""
#: code:addons/resource/resource.py:310
#, python-format
msgid "%s (copy)"
msgstr ""
msgstr "%s (kopie)"
#. module: resource
#: view:resource.calendar:0
@ -134,7 +134,7 @@ msgstr "Vrijdag"
#. module: resource
#: view:resource.calendar.attendance:0
msgid "Hours"
msgstr ""
msgstr "Uren"
#. module: resource
#: view:resource.calendar.leaves:0
@ -160,7 +160,7 @@ msgstr "Zoek afwezigheid werkperiode"
#. module: resource
#: field:resource.calendar.attendance,date_from:0
msgid "Starting Date"
msgstr ""
msgstr "Startdatum"
#. module: resource
#: field:resource.calendar,manager:0
@ -206,7 +206,7 @@ msgstr "Werktijd"
#. module: resource
#: help:resource.calendar.attendance,hour_from:0
msgid "Start and End time of working."
msgstr ""
msgstr "Begin en eind werktijd"
#. module: resource
#: view:resource.calendar.leaves:0
@ -349,7 +349,7 @@ msgstr "Persoon"
#. module: resource
#: view:resource.calendar.leaves:0
msgid "Duration"
msgstr ""
msgstr "Tijdsduur"
#. module: resource
#: field:resource.calendar.leaves,date_from:0

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-11-24 02:51+0000\n"
"PO-Revision-Date: 2012-11-28 17:01+0000\n"
"PO-Revision-Date: 2012-11-30 17:53+0000\n"
"Last-Translator: ccdos <ccdos@163.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-29 05:14+0000\n"
"X-Launchpad-Export-Date: 2012-12-01 05:08+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: sale
@ -1625,6 +1625,13 @@ msgid ""
"invoice automatically.\n"
" It installs the account_analytic_analysis module."
msgstr ""
"允许定义你的客户合同条款:\n"
"开票方法(固定价格,根据计工单,预付款发票),\n"
"准确价格每天每个开发人员650欧元\n"
"期间(一年的支持合同)\n"
"你能跟踪合同的进程和自动开票。\n"
"\n"
"为此要安装模块 account_analytic_analysis module 。"
#. module: sale
#: model:email.template,report_name:sale.email_template_edi_sale
@ -1724,6 +1731,8 @@ msgid ""
"replenishment.\n"
"On order: When needed, the product is purchased or produced."
msgstr ""
"从库存: 当需要时,产品从库存取得或者我们等待补充。\n"
"根据订单: 需要时,产品被采购或者生产。"
#. module: sale
#: selection:sale.order,state:0
@ -2115,7 +2124,7 @@ msgstr "销售订单"
#. module: sale
#: field:sale.config.settings,module_account_analytic_analysis:0
msgid "Use contracts management"
msgstr ""
msgstr "使用合同管理"
#. module: sale
#: help:sale.order,invoiced:0
@ -2173,7 +2182,7 @@ msgid ""
" multiple invoicing as part of the same contract "
"with\n"
" your customer."
msgstr ""
msgstr "使用合同 管理 多次开票的服务作为你的客户的相同合同的一部分。"
#. module: sale
#: view:sale.order:0
@ -2184,12 +2193,12 @@ msgstr "查找销售订单"
#. module: sale
#: field:sale.advance.payment.inv,advance_payment_method:0
msgid "What do you want to invoice?"
msgstr ""
msgstr "你要开什么发票?"
#. module: sale
#: constraint:res.partner:0
msgid "Error ! You cannot create recursive associated members."
msgstr ""
msgstr "错误,您不能创建循环引用的会员用户"
#. module: sale
#: field:sale.order.line,sequence:0
@ -2205,7 +2214,7 @@ msgstr "付款条款"
#. module: sale
#: help:account.config.settings,module_sale_analytic_plans:0
msgid "This allows install module sale_analytic_plans."
msgstr ""
msgstr "允许安装模块sale_analytic_plans."
#. module: sale
#: model:ir.actions.act_window,help:sale.action_order_report_all

View File

@ -530,55 +530,17 @@ class sale_order(osv.osv):
return res
def action_invoice_cancel(self, cr, uid, ids, context=None):
if context is None:
context = {}
for sale in self.browse(cr, uid, ids, context=context):
for line in sale.order_line:
#
# Check if the line is invoiced (has asociated invoice
# lines from non-cancelled invoices).
#
invoiced = False
for iline in line.invoice_lines:
if iline.invoice_id and iline.invoice_id.state != 'cancel':
invoiced = True
break
# Update the line (only when needed)
if line.invoiced != invoiced:
self.pool.get('sale.order.line').write(cr, uid, [line.id], {'invoiced': invoiced}, context=context)
self.write(cr, uid, ids, {'state': 'invoice_except', 'invoice_ids': False}, context=context)
self.write(cr, uid, ids, {'state': 'invoice_except'}, context=context)
return True
def action_invoice_end(self, cr, uid, ids, context=None):
for order in self.browse(cr, uid, ids, context=context):
#
# Update the sale order lines state (and invoiced flag).
#
for line in order.order_line:
vals = {}
#
# Check if the line is invoiced (has asociated invoice
# lines from non-cancelled invoices).
#
invoiced = False
for iline in line.invoice_lines:
if iline.invoice_id and iline.invoice_id.state != 'cancel':
invoiced = True
break
if line.invoiced != invoiced:
vals['invoiced'] = invoiced
# If the line was in exception state, now it gets confirmed.
for this in self.browse(cr, uid, ids, context=context):
for line in this.order_line:
if line.state == 'exception':
vals['state'] = 'confirmed'
# Update the line (only when needed).
if vals:
self.pool.get('sale.order.line').write(cr, uid, [line.id], vals, context=context)
#
# Update the sales order state.
#
if order.state == 'invoice_except':
self.write(cr, uid, [order.id], {'state': 'progress'}, context=context)
self.invoice_paid_send_note(cr, uid, [order.id], context=context)
line.write({'state': 'confirmed'})
if this.state == 'invoice_except':
this.write({'state': 'progress'})
this.invoice_paid_send_note()
return True
def action_cancel(self, cr, uid, ids, context=None):
@ -732,6 +694,20 @@ class sale_order_line(osv.osv):
except Exception, ex:
return False
def _fnct_line_invoiced(self, cr, uid, ids, field_name, args, context=None):
res = dict.fromkeys(ids, False)
for this in self.browse(cr, uid, ids, context=context):
res[this.id] = this.invoice_lines and \
all(iline.invoice_id.state != 'cancel' for iline in this.invoice_lines)
return res
def _order_lines_from_invoice(self, cr, uid, ids, context=None):
# direct access to the m2m table is the less convoluted way to achieve this (and is ok ACL-wise)
cr.execute("""SELECT DISTINCT sol.id FROM sale_order_invoice_rel rel JOIN
sale_order_line sol ON (sol.order_id = rel.order_id)
WHERE rel.invoice_id = ANY(%s)""", (list(ids),))
return [i[0] for i in cr.fetchall()]
_name = 'sale.order.line'
_description = 'Sales Order Line'
_columns = {
@ -740,7 +716,8 @@ class sale_order_line(osv.osv):
'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),
'invoiced': fields.boolean('Invoiced', readonly=True),
'invoiced': fields.function(_fnct_line_invoiced, string='Invoiced', type='boolean',
store={'account.invoice': (_order_lines_from_invoice, ['state'], 10)}),
'price_unit': fields.float('Unit Price', required=True, digits_compute= dp.get_precision('Product Price'), readonly=True, states={'draft': [('readonly', False)]}),
'type': fields.selection([('make_to_stock', 'from stock'), ('make_to_order', 'on order')], 'Procurement Method', required=True, readonly=True, states={'draft': [('readonly', False)]},
help="From stock: When needed, the product is taken from the stock or we wait for replenishment.\nOn order: When needed, the product is purchased or produced."),
@ -770,7 +747,6 @@ class sale_order_line(osv.osv):
'product_uom_qty': 1,
'product_uos_qty': 1,
'sequence': 10,
'invoiced': 0,
'state': 'draft',
'type': 'make_to_stock',
'price_unit': 0.0,
@ -853,7 +829,6 @@ class sale_order_line(osv.osv):
if vals:
inv_id = self.pool.get('account.invoice.line').create(cr, uid, vals, context=context)
cr.execute('insert into sale_order_line_invoice_rel (order_line_id,invoice_id) values (%s,%s)', (line.id, inv_id))
self.write(cr, uid, [line.id], {'invoiced': True})
sales.add(line.order_id.id)
create_ids.append(inv_id)
# Trigger workflow events
@ -901,7 +876,7 @@ class sale_order_line(osv.osv):
def copy_data(self, cr, uid, id, default=None, context=None):
if not default:
default = {}
default.update({'state': 'draft', 'invoiced': False, 'invoice_lines': []})
default.update({'state': 'draft', 'invoice_lines': []})
return super(sale_order_line, self).copy_data(cr, uid, id, default, context=context)
def product_id_change(self, cr, uid, ids, pricelist, product, qty=0,

View File

@ -75,5 +75,5 @@
for invoice in sale_order.invoice_ids:
if invoice.state != 'cancel':
total_order_line += len(invoice.invoice_line)
assert total_order_line == 2, "wrong number of invoice lines"
assert total_order_line == 2, "wrong number of invoice lines, got %s" % total_order_line

View File

@ -88,8 +88,6 @@ class sale_order_line_make_invoice(osv.osv_memory):
[line.id])
for lid in line_id:
invoices[line.order_id.id].append((line, lid))
sales_order_line_obj.write(cr, uid, [line.id],
{'invoiced': True})
for result in invoices.values():
order = result[0][0].order_id
il = map(lambda x: x[1], result)

View File

@ -100,14 +100,8 @@ class stock_picking(osv.osv):
return super(stock_picking, self)._get_account_analytic_invoice(cursor, user, picking, move_line)
def _invoice_line_hook(self, cursor, user, move_line, invoice_line_id):
sale_line_obj = self.pool.get('sale.order.line')
invoice_line_obj = self.pool.get('account.invoice.line')
if move_line.sale_line_id:
sale_line_obj.write(cursor, user, [move_line.sale_line_id.id],
{
'invoiced': True,
'invoice_lines': [(4, invoice_line_id)],
})
move_line.sale_line_id.write({'invoice_lines': [(4, invoice_line_id)]})
return super(stock_picking, self)._invoice_line_hook(cursor, user, move_line, invoice_line_id)
def _invoice_hook(self, cursor, user, picking, invoice_id):
@ -180,10 +174,7 @@ class stock_picking(osv.osv):
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])],
})
sale_line.write({'invoice_lines': [(4, invoice_line_id)]})
return result
# Redefinition of the new field in order to update the model stock.picking.out in the orm

View File

@ -14,7 +14,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-30 05:08+0000\n"
"X-Launchpad-Export-Date: 2012-12-01 05:09+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: web_linkedin

View File

@ -14,7 +14,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-11-30 05:08+0000\n"
"X-Launchpad-Export-Date: 2012-12-01 05:09+0000\n"
"X-Generator: Launchpad (build 16319)\n"
#. module: web_shortcuts