[MERGE] Merged with main addons.

bzr revid: tde@openerp.com-20120308101143-4ze073zzovkqlqyd
This commit is contained in:
Thibault Delavallée
2012-03-08 11:11:43 +01:00
73 changed files with 10678 additions and 1623 deletions
+109
View File
@@ -0,0 +1,109 @@
# Dutch (Belgium) 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-02-08 00:35+0000\n"
"PO-Revision-Date: 2012-03-01 17:37+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Dutch (Belgium) <nl_BE@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-03-02 04:36+0000\n"
"X-Generator: Launchpad (build 14886)\n"
#. module: account_anglo_saxon
#: sql_constraint:purchase.order:0
msgid "Order Reference must be unique per Company!"
msgstr ""
#. module: account_anglo_saxon
#: view:product.category:0
msgid " Accounting Property"
msgstr " Boekhoudeigenschap"
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_product_category
msgid "Product Category"
msgstr "Productcategorie"
#. module: account_anglo_saxon
#: sql_constraint:stock.picking:0
msgid "Reference must be unique per Company!"
msgstr ""
#. module: account_anglo_saxon
#: constraint:product.category:0
msgid "Error ! You cannot create recursive categories."
msgstr ""
#. module: account_anglo_saxon
#: constraint:account.invoice:0
msgid "Invalid BBA Structured Communication !"
msgstr ""
#. module: account_anglo_saxon
#: constraint:product.template:0
msgid ""
"Error: The default UOM and the purchase UOM must be in the same category."
msgstr ""
"Fout: de standaardmeeteenheid en de aankoopmeeteenheid moeten in dezelfde "
"categorie zitten."
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_account_invoice_line
msgid "Invoice Line"
msgstr "Factuurlijn"
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_purchase_order
msgid "Purchase Order"
msgstr "Aankooporder"
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_product_template
msgid "Product Template"
msgstr "Productsjabloon"
#. module: account_anglo_saxon
#: field:product.category,property_account_creditor_price_difference_categ:0
#: field:product.template,property_account_creditor_price_difference:0
msgid "Price Difference Account"
msgstr "Prijsverschillenrekening"
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_account_invoice
msgid "Invoice"
msgstr "Factuur"
#. module: account_anglo_saxon
#: model:ir.model,name:account_anglo_saxon.model_stock_picking
msgid "Picking List"
msgstr ""
#. module: account_anglo_saxon
#: sql_constraint:account.invoice:0
msgid "Invoice Number must be unique per Company!"
msgstr ""
#. module: account_anglo_saxon
#: help:product.category,property_account_creditor_price_difference_categ:0
#: help:product.template,property_account_creditor_price_difference:0
msgid ""
"This account will be used to value price difference between purchase price "
"and cost price."
msgstr ""
#~ msgid "Order Reference must be unique !"
#~ msgstr "De orderreferentie moet uniek zijn."
#~ msgid "Error ! You can not create recursive categories."
#~ msgstr "U kunt niet dezelfde categorieën maken."
#~ msgid "Stock Accounting for Anglo Saxon countries"
#~ msgstr "Voorraadboekhouding voor Angelsaksische landen"
@@ -0,0 +1,381 @@
# Serbian Latin 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-02-08 00:35+0000\n"
"PO-Revision-Date: 2012-03-07 18:50+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian Latin <sr@latin@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-03-08 04:43+0000\n"
"X-Generator: Launchpad (build 14914)\n"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Search Bank Transactions"
msgstr "Pretraži bankovne transakcije"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
#: selection:account.bank.statement.line,state:0
msgid "Confirmed"
msgstr "Potvrđeno"
#. module: account_bank_statement_extensions
#: view:account.bank.statement:0
#: view:account.bank.statement.line:0
msgid "Glob. Id"
msgstr "Glob. Id"
#. module: account_bank_statement_extensions
#: selection:account.bank.statement.line.global,type:0
msgid "CODA"
msgstr "CODA"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,parent_id:0
msgid "Parent Code"
msgstr "Šifra nadređenog"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Debit"
msgstr "Duguje"
#. module: account_bank_statement_extensions
#: view:cancel.statement.line:0
#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_cancel_statement_line
#: model:ir.model,name:account_bank_statement_extensions.model_cancel_statement_line
msgid "Cancel selected statement lines"
msgstr "Otkaži izabrane redove izvoda"
#. module: account_bank_statement_extensions
#: constraint:res.partner.bank:0
msgid "The RIB and/or IBAN is not valid"
msgstr "RIB i / ili IBAN nije validan"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Group By..."
msgstr "Grupiši po..."
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,state:0
msgid "State"
msgstr "Stanje"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
#: selection:account.bank.statement.line,state:0
msgid "Draft"
msgstr "Nacrt"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Statement"
msgstr "Izvod"
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_confirm_statement_line
#: model:ir.model,name:account_bank_statement_extensions.model_confirm_statement_line
msgid "Confirm selected statement lines"
msgstr "Potvrdi izabrane redove izvoda"
#. module: account_bank_statement_extensions
#: report:bank.statement.balance.report:0
#: model:ir.actions.report.xml,name:account_bank_statement_extensions.bank_statement_balance_report
msgid "Bank Statement Balances Report"
msgstr "Izvod banke o izveštaju balansa"
#. module: account_bank_statement_extensions
#: view:cancel.statement.line:0
msgid "Cancel Lines"
msgstr "Otkaži linije"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line.global:0
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement_line_global
msgid "Batch Payment Info"
msgstr "Informacije o grupnom plaćanju"
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
msgid "Confirm Lines"
msgstr "Potvrdi linije"
#. module: account_bank_statement_extensions
#: code:addons/account_bank_statement_extensions/account_bank_statement.py:130
#, python-format
msgid ""
"Delete operation not allowed ! Please go to the associated bank "
"statement in order to delete and/or modify this bank statement line"
msgstr ""
"Postupak brisanja nije dozvoljen! Molimo idite do povezanog izvoda banke da "
"biste izbrisali i/ili izmenili taj red izvoda banke"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,type:0
msgid "Type"
msgstr "Tip"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
#: field:account.bank.statement.line,journal_id:0
#: report:bank.statement.balance.report:0
msgid "Journal"
msgstr "Dnevnik"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Confirmed Statement Lines."
msgstr "Potvrđeni redovi izvoda"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Credit Transactions."
msgstr "Kreditne transakcije"
#. module: account_bank_statement_extensions
#: model:ir.actions.act_window,help:account_bank_statement_extensions.action_cancel_statement_line
msgid "cancel selected statement lines."
msgstr "otkaži izabrane redoive izvode"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_number:0
msgid "Counterparty Number"
msgstr "Broj druge strane"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line.global:0
msgid "Transactions"
msgstr "Transakcije"
#. module: account_bank_statement_extensions
#: code:addons/account_bank_statement_extensions/account_bank_statement.py:130
#, python-format
msgid "Warning"
msgstr "Upozorenje"
#. module: account_bank_statement_extensions
#: report:bank.statement.balance.report:0
msgid "Closing Balance"
msgstr "Zatvaranje stanja"
#. module: account_bank_statement_extensions
#: report:bank.statement.balance.report:0
msgid "Date"
msgstr "Datum"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
#: field:account.bank.statement.line,globalisation_amount:0
msgid "Glob. Amount"
msgstr "Uk.iznos"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Debit Transactions."
msgstr "Transakcije dugovanja."
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Extended Filters..."
msgstr "Prošireni filteri..."
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
msgid "Confirmed lines cannot be changed anymore."
msgstr "Potvrđeni redovi se ne mogu više izmeniti."
#. module: account_bank_statement_extensions
#: constraint:res.partner.bank:0
msgid ""
"\n"
"Please define BIC/Swift code on bank for bank type IBAN Account to make "
"valid payments"
msgstr ""
"\n"
"Molimo definišite BIC/Swift kod banke za tip IBAN račun za izvršenje "
"validnih uplata/isplata."
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,val_date:0
msgid "Valuta Date"
msgstr "Datum valute"
#. module: account_bank_statement_extensions
#: model:ir.actions.act_window,help:account_bank_statement_extensions.action_confirm_statement_line
msgid "Confirm selected statement lines."
msgstr "Potvrdi izabrane redove izvoda"
#. module: account_bank_statement_extensions
#: view:cancel.statement.line:0
msgid "Are you sure you want to cancel the selected Bank Statement lines ?"
msgstr "Da li zaista želite da otkažete izabrane redove izvoda banke?"
#. module: account_bank_statement_extensions
#: report:bank.statement.balance.report:0
msgid "Name"
msgstr "Naziv"
#. module: account_bank_statement_extensions
#: selection:account.bank.statement.line.global,type:0
msgid "ISO 20022"
msgstr "ISO 20022"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Notes"
msgstr "Beleške"
#. module: account_bank_statement_extensions
#: selection:account.bank.statement.line.global,type:0
msgid "Manual"
msgstr "Uputstvo"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Credit"
msgstr "Kredit"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,amount:0
msgid "Amount"
msgstr "Iznos"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Fin.Account"
msgstr "Kon.račun"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_currency:0
msgid "Counterparty Currency"
msgstr "Valuta druge strane"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_bic:0
msgid "Counterparty BIC"
msgstr "BIC druge strane"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,child_ids:0
msgid "Child Codes"
msgstr "Podređeni kodovi"
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
msgid "Are you sure you want to confirm the selected Bank Statement lines ?"
msgstr "Da li zaista želite da izabrane redove izvoda banke?"
#. module: account_bank_statement_extensions
#: constraint:account.bank.statement.line:0
msgid ""
"The amount of the voucher must be the same amount as the one on the "
"statement line"
msgstr "Iznos vaučera mora biti isti kao onaj na izvodu računa"
#. module: account_bank_statement_extensions
#: help:account.bank.statement.line,globalisation_id:0
msgid ""
"Code to identify transactions belonging to the same globalisation level "
"within a batch payment"
msgstr ""
"Kod za identifikaciju transakcija koje pripadaju istom nivou globalizacije "
"unutar grupnog plaćanja"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Draft Statement Lines."
msgstr "Nacrt redova izvoda."
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Glob. Am."
msgstr ""
#. module: account_bank_statement_extensions
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,code:0
msgid "Code"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_name:0
msgid "Counterparty Name"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,name:0
msgid "Communication"
msgstr ""
#. module: account_bank_statement_extensions
#: model:ir.model,name:account_bank_statement_extensions.model_res_partner_bank
msgid "Bank Accounts"
msgstr ""
#. module: account_bank_statement_extensions
#: constraint:account.bank.statement:0
msgid "The journal and period chosen have to belong to the same company."
msgstr ""
#. module: account_bank_statement_extensions
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement
msgid "Bank Statement"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Statement Line"
msgstr ""
#. module: account_bank_statement_extensions
#: sql_constraint:account.bank.statement.line.global:0
msgid "The code must be unique !"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,bank_statement_line_ids:0
#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_bank_statement_line
#: model:ir.ui.menu,name:account_bank_statement_extensions.bank_statement_line
msgid "Bank Statement Lines"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line.global:0
msgid "Child Batch Payments"
msgstr ""
#. module: account_bank_statement_extensions
#: view:cancel.statement.line:0
#: view:confirm.statement.line:0
msgid "Cancel"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Statement Lines"
msgstr ""
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Total Amount"
msgstr ""
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,globalisation_id:0
msgid "Globalisation ID"
msgstr ""
+417
View File
@@ -0,0 +1,417 @@
# Gujarati 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-02-08 00:35+0000\n"
"PO-Revision-Date: 2012-03-07 10:28+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Gujarati <gu@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-03-08 04:43+0000\n"
"X-Generator: Launchpad (build 14914)\n"
#. module: account_budget
#: field:crossovered.budget,creating_user_id:0
msgid "Responsible User"
msgstr ""
#. module: account_budget
#: selection:crossovered.budget,state:0
msgid "Confirmed"
msgstr ""
#. module: account_budget
#: model:ir.actions.act_window,name:account_budget.open_budget_post_form
#: model:ir.ui.menu,name:account_budget.menu_budget_post_form
msgid "Budgetary Positions"
msgstr ""
#. module: account_budget
#: report:account.budget:0
msgid "Printed at:"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:0
msgid "Confirm"
msgstr "ખાતરી કરો"
#. module: account_budget
#: field:crossovered.budget,validating_user_id:0
msgid "Validate User"
msgstr ""
#. module: account_budget
#: model:ir.actions.act_window,name:account_budget.action_account_budget_crossvered_summary_report
msgid "Print Summary"
msgstr ""
#. module: account_budget
#: field:crossovered.budget.lines,paid_date:0
msgid "Paid Date"
msgstr ""
#. module: account_budget
#: field:account.budget.analytic,date_to:0
#: field:account.budget.crossvered.report,date_to:0
#: field:account.budget.crossvered.summary.report,date_to:0
#: field:account.budget.report,date_to:0
msgid "End of period"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:0
#: selection:crossovered.budget,state:0
msgid "Draft"
msgstr "ડ્રાફ્ટ"
#. module: account_budget
#: report:account.budget:0
msgid "at"
msgstr "એટ"
#. module: account_budget
#: view:account.budget.report:0
#: model:ir.actions.act_window,name:account_budget.action_account_budget_analytic
#: model:ir.actions.act_window,name:account_budget.action_account_budget_crossvered_report
msgid "Print Budgets"
msgstr ""
#. module: account_budget
#: report:account.budget:0
msgid "Currency:"
msgstr ""
#. module: account_budget
#: model:ir.model,name:account_budget.model_account_budget_crossvered_report
msgid "Account Budget crossvered report"
msgstr ""
#. module: account_budget
#: selection:crossovered.budget,state:0
msgid "Validated"
msgstr ""
#. module: account_budget
#: field:crossovered.budget.lines,percentage:0
msgid "Percentage"
msgstr "ટકાવારી"
#. module: account_budget
#: report:crossovered.budget.report:0
msgid "to"
msgstr "થી"
#. module: account_budget
#: field:crossovered.budget,state:0
msgid "Status"
msgstr "સ્થિતિ"
#. module: account_budget
#: model:ir.actions.act_window,help:account_budget.act_crossovered_budget_view
msgid ""
"A budget is a forecast of your company's income and expenses expected for a "
"period in the future. With a budget, a company is able to carefully look at "
"how much money they are taking in during a given period, and figure out the "
"best way to divide it among various categories. By keeping track of where "
"your money goes, you may be less likely to overspend, and more likely to "
"meet your financial goals. Forecast a budget by detailing the expected "
"revenue per analytic account and monitor its evolution based on the actuals "
"realised during that period."
msgstr ""
#. module: account_budget
#: code:addons/account_budget/account_budget.py:119
#, python-format
msgid "The Budget '%s' has no accounts!"
msgstr ""
#. module: account_budget
#: report:account.budget:0
#: report:crossovered.budget.report:0
msgid "%"
msgstr ""
#. module: account_budget
#: report:account.budget:0
#: report:crossovered.budget.report:0
msgid "Description"
msgstr ""
#. module: account_budget
#: report:crossovered.budget.report:0
msgid "Currency"
msgstr ""
#. module: account_budget
#: report:crossovered.budget.report:0
msgid "Total :"
msgstr ""
#. module: account_budget
#: field:account.budget.post,company_id:0
#: field:crossovered.budget,company_id:0
#: field:crossovered.budget.lines,company_id:0
msgid "Company"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:0
msgid "To Approve"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:0
msgid "Reset to Draft"
msgstr ""
#. module: account_budget
#: view:account.budget.post:0
#: view:crossovered.budget:0
#: field:crossovered.budget.lines,planned_amount:0
msgid "Planned Amount"
msgstr ""
#. module: account_budget
#: report:account.budget:0
#: report:crossovered.budget.report:0
msgid "Perc(%)"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:0
#: selection:crossovered.budget,state:0
msgid "Done"
msgstr ""
#. module: account_budget
#: report:account.budget:0
#: report:crossovered.budget.report:0
msgid "Practical Amt"
msgstr ""
#. module: account_budget
#: view:account.analytic.account:0
#: view:account.budget.post:0
#: view:crossovered.budget:0
#: field:crossovered.budget.lines,practical_amount:0
msgid "Practical Amount"
msgstr ""
#. module: account_budget
#: field:crossovered.budget,date_to:0
#: field:crossovered.budget.lines,date_to:0
msgid "End Date"
msgstr ""
#. module: account_budget
#: model:ir.model,name:account_budget.model_account_budget_analytic
#: model:ir.model,name:account_budget.model_account_budget_report
msgid "Account Budget report for analytic account"
msgstr ""
#. module: account_budget
#: view:account.analytic.account:0
msgid "Theoritical Amount"
msgstr ""
#. module: account_budget
#: field:account.budget.post,name:0
#: field:crossovered.budget,name:0
msgid "Name"
msgstr ""
#. module: account_budget
#: model:ir.model,name:account_budget.model_crossovered_budget_lines
msgid "Budget Line"
msgstr ""
#. module: account_budget
#: view:account.analytic.account:0
#: view:account.budget.post:0
msgid "Lines"
msgstr ""
#. module: account_budget
#: report:account.budget:0
#: view:crossovered.budget:0
#: field:crossovered.budget.lines,crossovered_budget_id:0
#: report:crossovered.budget.report:0
#: model:ir.actions.report.xml,name:account_budget.account_budget
#: model:ir.model,name:account_budget.model_crossovered_budget
msgid "Budget"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:0
msgid "To Approve Budgets"
msgstr ""
#. module: account_budget
#: code:addons/account_budget/account_budget.py:119
#, python-format
msgid "Error!"
msgstr ""
#. module: account_budget
#: field:account.budget.post,code:0
#: field:crossovered.budget,code:0
msgid "Code"
msgstr ""
#. module: account_budget
#: view:account.budget.analytic:0
#: view:account.budget.crossvered.report:0
msgid "This wizard is used to print budget"
msgstr ""
#. module: account_budget
#: model:ir.actions.act_window,name:account_budget.act_crossovered_budget_view
#: model:ir.actions.act_window,name:account_budget.action_account_budget_post_tree
#: model:ir.actions.act_window,name:account_budget.action_account_budget_report
#: model:ir.actions.report.xml,name:account_budget.report_crossovered_budget
#: model:ir.ui.menu,name:account_budget.menu_act_crossovered_budget_view
#: model:ir.ui.menu,name:account_budget.menu_action_account_budget_post_tree
#: model:ir.ui.menu,name:account_budget.next_id_31
#: model:ir.ui.menu,name:account_budget.next_id_pos
msgid "Budgets"
msgstr ""
#. module: account_budget
#: view:account.budget.crossvered.summary.report:0
msgid "This wizard is used to print summary of budgets"
msgstr ""
#. module: account_budget
#: selection:crossovered.budget,state:0
msgid "Cancelled"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:0
msgid "Approve"
msgstr ""
#. module: account_budget
#: field:crossovered.budget,date_from:0
#: field:crossovered.budget.lines,date_from:0
msgid "Start Date"
msgstr ""
#. module: account_budget
#: view:account.budget.post:0
#: field:crossovered.budget.lines,general_budget_id:0
#: model:ir.model,name:account_budget.model_account_budget_post
msgid "Budgetary Position"
msgstr ""
#. module: account_budget
#: field:account.budget.analytic,date_from:0
#: field:account.budget.crossvered.report,date_from:0
#: field:account.budget.crossvered.summary.report,date_from:0
#: field:account.budget.report,date_from:0
msgid "Start of period"
msgstr ""
#. module: account_budget
#: model:ir.model,name:account_budget.model_account_budget_crossvered_summary_report
msgid "Account Budget crossvered summary report"
msgstr ""
#. module: account_budget
#: report:account.budget:0
#: report:crossovered.budget.report:0
msgid "Theoretical Amt"
msgstr ""
#. module: account_budget
#: view:account.budget.analytic:0
#: view:account.budget.crossvered.report:0
#: view:account.budget.crossvered.summary.report:0
#: view:account.budget.report:0
msgid "Select Dates Period"
msgstr ""
#. module: account_budget
#: view:account.budget.analytic:0
#: view:account.budget.crossvered.report:0
#: view:account.budget.crossvered.summary.report:0
#: view:account.budget.report:0
msgid "Print"
msgstr ""
#. module: account_budget
#: view:account.budget.post:0
#: view:crossovered.budget:0
#: field:crossovered.budget.lines,theoritical_amount:0
msgid "Theoretical Amount"
msgstr ""
#. module: account_budget
#: field:crossovered.budget.lines,analytic_account_id:0
#: model:ir.model,name:account_budget.model_account_analytic_account
msgid "Analytic Account"
msgstr ""
#. module: account_budget
#: report:account.budget:0
msgid "Budget :"
msgstr ""
#. module: account_budget
#: report:account.budget:0
#: report:crossovered.budget.report:0
msgid "Planned Amt"
msgstr ""
#. module: account_budget
#: view:account.budget.post:0
#: field:account.budget.post,account_ids:0
msgid "Accounts"
msgstr ""
#. module: account_budget
#: view:account.analytic.account:0
#: field:account.analytic.account,crossovered_budget_line:0
#: view:account.budget.post:0
#: field:account.budget.post,crossovered_budget_line:0
#: view:crossovered.budget:0
#: field:crossovered.budget,crossovered_budget_line:0
#: view:crossovered.budget.lines:0
#: model:ir.actions.act_window,name:account_budget.act_account_analytic_account_cb_lines
#: model:ir.actions.act_window,name:account_budget.act_crossovered_budget_lines_view
#: model:ir.ui.menu,name:account_budget.menu_act_crossovered_budget_lines_view
msgid "Budget Lines"
msgstr ""
#. module: account_budget
#: view:account.budget.analytic:0
#: view:account.budget.crossvered.report:0
#: view:account.budget.crossvered.summary.report:0
#: view:account.budget.report:0
#: view:crossovered.budget:0
msgid "Cancel"
msgstr ""
#. module: account_budget
#: constraint:account.analytic.account:0
msgid "Error! You can not create recursive analytic accounts."
msgstr ""
#. module: account_budget
#: report:account.budget:0
#: report:crossovered.budget.report:0
msgid "Analysis from"
msgstr ""
#. module: account_budget
#: view:crossovered.budget:0
msgid "Draft Budgets"
msgstr ""
+23
View File
@@ -0,0 +1,23 @@
# Gujarati 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-02-08 00:35+0000\n"
"PO-Revision-Date: 2012-03-06 18:31+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Gujarati <gu@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-03-07 05:13+0000\n"
"X-Generator: Launchpad (build 14907)\n"
#. module: account_cancel
#: view:account.invoice:0
msgid "Cancel"
msgstr "રદ કરો"
+201
View File
@@ -0,0 +1,201 @@
# 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-02-08 00:35+0000\n"
"PO-Revision-Date: 2012-03-01 18:13+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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-03-02 04:36+0000\n"
"X-Generator: Launchpad (build 14886)\n"
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check on Top"
msgstr "Cheque boven"
#. module: account_check_writing
#: model:ir.actions.act_window,help:account_check_writing.action_write_check
msgid ""
"The check payment form allows you to track the payment you do to your "
"suppliers specially by check. When you select a supplier, the payment method "
"and an amount for the payment, OpenERP will propose to reconcile your "
"payment with the open supplier invoices or bills.You can print the check"
msgstr ""
#. module: account_check_writing
#: view:account.voucher:0
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_bottom
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_middle
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_top
msgid "Print Check"
msgstr "Cheque afdrukken"
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check in middle"
msgstr "Cheque miodden"
#. module: account_check_writing
#: help:res.company,check_layout:0
msgid ""
"Check on top is compatible with Quicken, QuickBooks and Microsoft Money. "
"Check in middle is compatible with Peachtree, ACCPAC and DacEasy. Check on "
"bottom is compatible with Peachtree, ACCPAC and DacEasy only"
msgstr ""
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check on bottom"
msgstr "Cheque beneden"
#. module: account_check_writing
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
msgstr "Fout! U kunt geen recursieve bedrijven aanmaken."
#. module: account_check_writing
#: help:account.journal,allow_check_writing:0
msgid "Check this if the journal is to be used for writing checks."
msgstr ""
#. module: account_check_writing
#: field:account.journal,allow_check_writing:0
msgid "Allow Check writing"
msgstr "Sta cheque uitschrijven toe"
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Description"
msgstr "Omschrijving"
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_account_journal
msgid "Journal"
msgstr "Dagboek"
#. module: account_check_writing
#: model:ir.actions.act_window,name:account_check_writing.action_write_check
#: model:ir.ui.menu,name:account_check_writing.menu_action_write_check
msgid "Write Checks"
msgstr "Schrijf cheque uit"
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Discount"
msgstr "Korting"
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Original Amount"
msgstr "Oorspronkelijk bedrag"
#. module: account_check_writing
#: view:res.company:0
msgid "Configuration"
msgstr "Configuratie"
#. module: account_check_writing
#: field:account.voucher,allow_check:0
msgid "Allow Check Writing"
msgstr "Sta uitschrijven cheque toe"
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Payment"
msgstr "Betaling"
#. module: account_check_writing
#: field:account.journal,use_preprint_check:0
msgid "Use Preprinted Check"
msgstr "Gebruik voorafgedrukte cheque"
#. module: account_check_writing
#: sql_constraint:res.company:0
msgid "The company name must be unique !"
msgstr "De naam van het bedrijf moet uniek zijn!"
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Due Date"
msgstr "Einddatum"
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_res_company
msgid "Companies"
msgstr "Bedrijven"
#. module: account_check_writing
#: view:res.company:0
msgid "Default Check layout"
msgstr "Standaard cheque opmaak"
#. module: account_check_writing
#: constraint:account.journal:0
msgid ""
"Configuration error! The currency chosen should be shared by the default "
"accounts too."
msgstr ""
"Configuratiefout! De gekozen valuta moet hetzelfde zijn als dat van de "
"standaard grootboekrekeningen."
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
msgid "Balance Due"
msgstr "Saldo"
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Check Amount"
msgstr "Cheque bedrag"
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_account_voucher
msgid "Accounting Voucher"
msgstr "Betalingsintentie"
#. module: account_check_writing
#: sql_constraint:account.journal:0
msgid "The name of the journal must be unique per company !"
msgstr "De naam van het dagboek moet uniek zijn per bedrijf !"
#. module: account_check_writing
#: sql_constraint:account.journal:0
msgid "The code of the journal must be unique per company !"
msgstr "De code van het dagboek moet uniek zijn per bedrijf !"
#. module: account_check_writing
#: field:account.voucher,amount_in_word:0
msgid "Amount in Word"
msgstr "Bedrag in woord"
#. module: account_check_writing
#: report:account.print.check.top:0
msgid "Open Balance"
msgstr "Open balans"
#. module: account_check_writing
#: field:res.company,check_layout:0
msgid "Choose Check layout"
msgstr "Kies cheque opmaak"
+729
View File
@@ -0,0 +1,729 @@
# Latvian 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-02-08 00:35+0000\n"
"PO-Revision-Date: 2012-03-02 13:58+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Latvian <lv@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-03-03 05:14+0000\n"
"X-Generator: Launchpad (build 14886)\n"
#. module: account_payment
#: field:payment.order,date_scheduled:0
msgid "Scheduled date if fixed"
msgstr ""
#. module: account_payment
#: field:payment.line,currency:0
msgid "Partner Currency"
msgstr ""
#. module: account_payment
#: view:payment.order:0
msgid "Set to draft"
msgstr ""
#. module: account_payment
#: help:payment.order,mode:0
msgid "Select the Payment Mode to be applied."
msgstr ""
#. module: account_payment
#: view:payment.mode:0
#: view:payment.order:0
msgid "Group By..."
msgstr ""
#. module: account_payment
#: field:payment.order,line_ids:0
msgid "Payment lines"
msgstr ""
#. module: account_payment
#: view:payment.line:0
#: field:payment.line,info_owner:0
#: view:payment.order:0
msgid "Owner Account"
msgstr ""
#. module: account_payment
#: help:payment.order,state:0
msgid ""
"When an order is placed the state is 'Draft'.\n"
" Once the bank is confirmed the state is set to 'Confirmed'.\n"
" Then the order is paid the state is 'Done'."
msgstr ""
#. module: account_payment
#: help:account.invoice,amount_to_pay:0
msgid ""
"The amount which should be paid at the current date\n"
"minus the amount which is already in payment order"
msgstr ""
#. module: account_payment
#: field:payment.line,company_id:0
#: field:payment.mode,company_id:0
#: field:payment.order,company_id:0
msgid "Company"
msgstr "Uzņēmums"
#. module: account_payment
#: field:payment.order,date_prefered:0
msgid "Preferred date"
msgstr ""
#. module: account_payment
#: model:res.groups,name:account_payment.group_account_payment
msgid "Accounting / Payments"
msgstr ""
#. module: account_payment
#: selection:payment.line,state:0
msgid "Free"
msgstr ""
#. module: account_payment
#: view:payment.order.create:0
#: field:payment.order.create,entries:0
msgid "Entries"
msgstr ""
#. module: account_payment
#: report:payment.order:0
msgid "Used Account"
msgstr ""
#. module: account_payment
#: field:payment.line,ml_maturity_date:0
#: field:payment.order.create,duedate:0
msgid "Due Date"
msgstr "Apmaksas termiņš"
#. module: account_payment
#: view:account.move.line:0
msgid "Account Entry Line"
msgstr "Konta Ieraksta Rinda"
#. module: account_payment
#: view:payment.order.create:0
msgid "_Add to payment order"
msgstr ""
#. module: account_payment
#: model:ir.actions.act_window,name:account_payment.action_account_payment_populate_statement
#: model:ir.actions.act_window,name:account_payment.action_account_populate_statement_confirm
msgid "Payment Populate statement"
msgstr ""
#. module: account_payment
#: report:payment.order:0
#: view:payment.order:0
msgid "Amount"
msgstr ""
#. module: account_payment
#: sql_constraint:account.move.line:0
msgid "Wrong credit or debit value in accounting entry !"
msgstr ""
#. module: account_payment
#: view:payment.order:0
msgid "Total in Company Currency"
msgstr ""
#. module: account_payment
#: selection:payment.order,state:0
msgid "Cancelled"
msgstr ""
#. module: account_payment
#: model:ir.actions.act_window,name:account_payment.action_payment_order_tree_new
msgid "New Payment Order"
msgstr ""
#. module: account_payment
#: report:payment.order:0
#: field:payment.order,reference:0
msgid "Reference"
msgstr ""
#. module: account_payment
#: sql_constraint:payment.line:0
msgid "The payment line name must be unique!"
msgstr ""
#. module: account_payment
#: constraint:account.invoice:0
msgid "Invalid BBA Structured Communication !"
msgstr ""
#. module: account_payment
#: model:ir.actions.act_window,name:account_payment.action_payment_order_tree
#: model:ir.ui.menu,name:account_payment.menu_action_payment_order_form
msgid "Payment Orders"
msgstr ""
#. module: account_payment
#: constraint:account.move.line:0
msgid ""
"The date of your Journal Entry is not in the defined period! You should "
"change the date or remove this constraint from the journal."
msgstr ""
#. module: account_payment
#: selection:payment.order,date_prefered:0
msgid "Directly"
msgstr ""
#. module: account_payment
#: model:ir.actions.act_window,name:account_payment.action_payment_line_form
#: model:ir.model,name:account_payment.model_payment_line
#: view:payment.line:0
#: view:payment.order:0
msgid "Payment Line"
msgstr ""
#. module: account_payment
#: view:payment.line:0
msgid "Amount Total"
msgstr ""
#. module: account_payment
#: view:payment.order:0
#: selection:payment.order,state:0
msgid "Confirmed"
msgstr ""
#. module: account_payment
#: help:payment.line,ml_date_created:0
msgid "Invoice Effective Date"
msgstr ""
#. module: account_payment
#: report:payment.order:0
msgid "Execution Type"
msgstr ""
#. module: account_payment
#: selection:payment.line,state:0
msgid "Structured"
msgstr ""
#. module: account_payment
#: view:payment.order:0
#: field:payment.order,state:0
msgid "State"
msgstr ""
#. module: account_payment
#: view:payment.line:0
#: view:payment.order:0
msgid "Transaction Information"
msgstr ""
#. module: account_payment
#: model:ir.actions.act_window,name:account_payment.action_payment_mode_form
#: model:ir.model,name:account_payment.model_payment_mode
#: model:ir.ui.menu,name:account_payment.menu_action_payment_mode_form
#: view:payment.mode:0
#: view:payment.order:0
msgid "Payment Mode"
msgstr ""
#. module: account_payment
#: field:payment.line,ml_date_created:0
msgid "Effective Date"
msgstr ""
#. module: account_payment
#: field:payment.line,ml_inv_ref:0
msgid "Invoice Ref."
msgstr ""
#. module: account_payment
#: help:payment.order,date_prefered:0
msgid ""
"Choose an option for the Payment Order:'Fixed' stands for a date specified "
"by you.'Directly' stands for the direct execution.'Due date' stands for the "
"scheduled date of execution."
msgstr ""
#. module: account_payment
#: code:addons/account_payment/account_move_line.py:110
#, python-format
msgid "Error !"
msgstr ""
#. module: account_payment
#: view:account.move.line:0
msgid "Total debit"
msgstr ""
#. module: account_payment
#: field:payment.order,date_done:0
msgid "Execution date"
msgstr ""
#. module: account_payment
#: help:payment.mode,journal:0
msgid "Bank or Cash Journal for the Payment Mode"
msgstr ""
#. module: account_payment
#: selection:payment.order,date_prefered:0
msgid "Fixed date"
msgstr ""
#. module: account_payment
#: field:payment.line,info_partner:0
#: view:payment.order:0
msgid "Destination Account"
msgstr ""
#. module: account_payment
#: view:payment.line:0
msgid "Desitination Account"
msgstr ""
#. module: account_payment
#: view:payment.order:0
msgid "Search Payment Orders"
msgstr ""
#. module: account_payment
#: field:payment.line,create_date:0
msgid "Created"
msgstr ""
#. module: account_payment
#: view:payment.order:0
msgid "Select Invoices to Pay"
msgstr ""
#. module: account_payment
#: view:payment.line:0
msgid "Currency Amount Total"
msgstr ""
#. module: account_payment
#: view:payment.order:0
msgid "Make Payments"
msgstr ""
#. module: account_payment
#: field:payment.line,state:0
msgid "Communication Type"
msgstr ""
#. module: account_payment
#: field:payment.line,partner_id:0
#: field:payment.mode,partner_id:0
#: report:payment.order:0
msgid "Partner"
msgstr ""
#. module: account_payment
#: field:payment.line,bank_statement_line_id:0
msgid "Bank statement line"
msgstr ""
#. module: account_payment
#: selection:payment.order,date_prefered:0
msgid "Due date"
msgstr ""
#. module: account_payment
#: field:account.invoice,amount_to_pay:0
msgid "Amount to be paid"
msgstr ""
#. module: account_payment
#: constraint:account.move.line:0
msgid ""
"The selected account of your Journal Entry forces to provide a secondary "
"currency. You should remove the secondary currency on the account or select "
"a multi-currency view on the journal."
msgstr ""
#. module: account_payment
#: report:payment.order:0
msgid "Currency"
msgstr ""
#. module: account_payment
#: view:account.payment.make.payment:0
msgid "Yes"
msgstr ""
#. module: account_payment
#: help:payment.line,info_owner:0
msgid "Address of the Main Partner"
msgstr ""
#. module: account_payment
#: help:payment.line,date:0
msgid ""
"If no payment date is specified, the bank will treat this payment line "
"directly"
msgstr ""
#. module: account_payment
#: model:ir.model,name:account_payment.model_account_payment_populate_statement
msgid "Account Payment Populate Statement"
msgstr ""
#. module: account_payment
#: help:payment.mode,name:0
msgid "Mode of Payment"
msgstr ""
#. module: account_payment
#: report:payment.order:0
msgid "Value Date"
msgstr ""
#. module: account_payment
#: report:payment.order:0
msgid "Payment Type"
msgstr ""
#. module: account_payment
#: help:payment.line,amount_currency:0
msgid "Payment amount in the partner currency"
msgstr ""
#. module: account_payment
#: view:payment.order:0
#: selection:payment.order,state:0
msgid "Draft"
msgstr ""
#. module: account_payment
#: help:payment.line,communication2:0
msgid "The successor message of Communication."
msgstr ""
#. module: account_payment
#: code:addons/account_payment/account_move_line.py:110
#, python-format
msgid "No partner defined on entry line"
msgstr ""
#. module: account_payment
#: help:payment.line,info_partner:0
msgid "Address of the Ordering Customer."
msgstr ""
#. module: account_payment
#: view:account.payment.populate.statement:0
msgid "Populate Statement:"
msgstr ""
#. module: account_payment
#: view:account.move.line:0
msgid "Total credit"
msgstr ""
#. module: account_payment
#: help:payment.order,date_scheduled:0
msgid "Select a date if you have chosen Preferred Date to be fixed."
msgstr ""
#. module: account_payment
#: field:payment.order,user_id:0
msgid "User"
msgstr ""
#. module: account_payment
#: field:account.payment.populate.statement,lines:0
msgid "Payment Lines"
msgstr ""
#. module: account_payment
#: model:ir.model,name:account_payment.model_account_move_line
msgid "Journal Items"
msgstr ""
#. module: account_payment
#: constraint:account.move.line:0
msgid "You can not create journal items on an account of type view."
msgstr ""
#. module: account_payment
#: help:payment.line,move_line_id:0
msgid ""
"This Entry Line will be referred for the information of the ordering "
"customer."
msgstr ""
#. module: account_payment
#: view:payment.order.create:0
msgid "Search"
msgstr ""
#. module: account_payment
#: model:ir.actions.report.xml,name:account_payment.payment_order1
#: model:ir.model,name:account_payment.model_payment_order
msgid "Payment Order"
msgstr ""
#. module: account_payment
#: field:payment.line,date:0
msgid "Payment Date"
msgstr ""
#. module: account_payment
#: report:payment.order:0
msgid "Total:"
msgstr ""
#. module: account_payment
#: field:payment.order,date_created:0
msgid "Creation date"
msgstr ""
#. module: account_payment
#: view:account.payment.populate.statement:0
msgid "ADD"
msgstr ""
#. module: account_payment
#: view:account.bank.statement:0
msgid "Import payment lines"
msgstr ""
#. module: account_payment
#: field:account.move.line,amount_to_pay:0
msgid "Amount to pay"
msgstr ""
#. module: account_payment
#: field:payment.line,amount:0
msgid "Amount in Company Currency"
msgstr ""
#. module: account_payment
#: help:payment.line,partner_id:0
msgid "The Ordering Customer"
msgstr ""
#. module: account_payment
#: model:ir.model,name:account_payment.model_account_payment_make_payment
msgid "Account make payment"
msgstr ""
#. module: account_payment
#: report:payment.order:0
msgid "Invoice Ref"
msgstr ""
#. module: account_payment
#: sql_constraint:account.invoice:0
msgid "Invoice Number must be unique per Company!"
msgstr ""
#. module: account_payment
#: field:payment.line,name:0
msgid "Your Reference"
msgstr ""
#. module: account_payment
#: view:payment.order:0
msgid "Payment order"
msgstr ""
#. module: account_payment
#: view:payment.line:0
#: view:payment.order:0
msgid "General Information"
msgstr ""
#. module: account_payment
#: view:payment.order:0
#: selection:payment.order,state:0
msgid "Done"
msgstr ""
#. module: account_payment
#: model:ir.model,name:account_payment.model_account_invoice
msgid "Invoice"
msgstr ""
#. module: account_payment
#: field:payment.line,communication:0
msgid "Communication"
msgstr ""
#. module: account_payment
#: view:account.payment.make.payment:0
#: view:account.payment.populate.statement:0
#: view:payment.order:0
#: view:payment.order.create:0
msgid "Cancel"
msgstr ""
#. module: account_payment
#: field:payment.line,bank_id:0
msgid "Destination Bank Account"
msgstr ""
#. module: account_payment
#: view:payment.line:0
#: view:payment.order:0
msgid "Information"
msgstr ""
#. module: account_payment
#: constraint:account.move.line:0
msgid "Company must be the same for its related account and period."
msgstr ""
#. module: account_payment
#: model:ir.actions.act_window,help:account_payment.action_payment_order_tree
msgid ""
"A payment order is a payment request from your company to pay a supplier "
"invoice or a customer credit note. Here you can register all payment orders "
"that should be done, keep track of all payment orders and mention the "
"invoice reference and the partner the payment should be done for."
msgstr ""
#. module: account_payment
#: help:payment.line,amount:0
msgid "Payment amount in the company currency"
msgstr ""
#. module: account_payment
#: view:payment.order.create:0
msgid "Search Payment lines"
msgstr ""
#. module: account_payment
#: field:payment.line,amount_currency:0
msgid "Amount in Partner Currency"
msgstr ""
#. module: account_payment
#: field:payment.line,communication2:0
msgid "Communication 2"
msgstr ""
#. module: account_payment
#: view:account.payment.make.payment:0
msgid "Are you sure you want to make payment?"
msgstr ""
#. module: account_payment
#: view:payment.mode:0
#: field:payment.mode,journal:0
msgid "Journal"
msgstr ""
#. module: account_payment
#: field:payment.mode,bank_id:0
msgid "Bank account"
msgstr ""
#. module: account_payment
#: view:payment.order:0
msgid "Confirm Payments"
msgstr ""
#. module: account_payment
#: field:payment.line,company_currency:0
#: report:payment.order:0
msgid "Company Currency"
msgstr ""
#. module: account_payment
#: model:ir.ui.menu,name:account_payment.menu_main_payment
#: view:payment.line:0
#: view:payment.order:0
msgid "Payment"
msgstr ""
#. module: account_payment
#: report:payment.order:0
msgid "Payment Order / Payment"
msgstr ""
#. module: account_payment
#: field:payment.line,move_line_id:0
msgid "Entry line"
msgstr ""
#. module: account_payment
#: help:payment.line,communication:0
msgid ""
"Used as the message between ordering customer and current company. Depicts "
"'What do you want to say to the recipient about this order ?'"
msgstr ""
#. module: account_payment
#: field:payment.mode,name:0
msgid "Name"
msgstr ""
#. module: account_payment
#: report:payment.order:0
msgid "Bank Account"
msgstr ""
#. module: account_payment
#: view:payment.line:0
#: view:payment.order:0
msgid "Entry Information"
msgstr ""
#. module: account_payment
#: model:ir.model,name:account_payment.model_payment_order_create
msgid "payment.order.create"
msgstr ""
#. module: account_payment
#: field:payment.line,order_id:0
msgid "Order"
msgstr ""
#. module: account_payment
#: constraint:account.move.line:0
msgid "You can not create journal items on closed account."
msgstr ""
#. module: account_payment
#: field:payment.order,total:0
msgid "Total"
msgstr ""
#. module: account_payment
#: view:account.payment.make.payment:0
#: model:ir.actions.act_window,name:account_payment.action_account_payment_make_payment
msgid "Make Payment"
msgstr ""
#. module: account_payment
#: field:payment.order,mode:0
msgid "Payment mode"
msgstr ""
#. module: account_payment
#: model:ir.actions.act_window,name:account_payment.action_create_payment_order
msgid "Populate Payment"
msgstr ""
#. module: account_payment
#: help:payment.mode,bank_id:0
msgid "Bank Account for the Payment Mode"
msgstr ""
#~ msgid "You can not create move line on closed account."
#~ msgstr "Nav iespējams veikt grāmatojumus slēgtā kontā."
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,79 @@
# Gujarati 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-02-08 00:35+0000\n"
"PO-Revision-Date: 2012-03-06 18:22+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Gujarati <gu@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-03-07 05:13+0000\n"
"X-Generator: Launchpad (build 14907)\n"
#. module: analytic_journal_billing_rate
#: sql_constraint:account.invoice:0
msgid "Invoice Number must be unique per Company!"
msgstr ""
#. module: analytic_journal_billing_rate
#: field:analytic_journal_rate_grid,journal_id:0
msgid "Analytic Journal"
msgstr ""
#. module: analytic_journal_billing_rate
#: constraint:account.invoice:0
msgid "Invalid BBA Structured Communication !"
msgstr ""
#. module: analytic_journal_billing_rate
#: view:analytic_journal_rate_grid:0
msgid "Billing Rate per Journal for this Analytic Account"
msgstr ""
#. module: analytic_journal_billing_rate
#: field:analytic_journal_rate_grid,account_id:0
#: model:ir.model,name:analytic_journal_billing_rate.model_account_analytic_account
msgid "Analytic Account"
msgstr "વિશ્લેષણાત્મક ખાતું"
#. module: analytic_journal_billing_rate
#: model:ir.model,name:analytic_journal_billing_rate.model_analytic_journal_rate_grid
msgid "Relation table between journals and billing rates"
msgstr ""
#. module: analytic_journal_billing_rate
#: field:account.analytic.account,journal_rate_ids:0
msgid "Invoicing Rate per Journal"
msgstr ""
#. module: analytic_journal_billing_rate
#: model:ir.model,name:analytic_journal_billing_rate.model_account_invoice
msgid "Invoice"
msgstr ""
#. module: analytic_journal_billing_rate
#: constraint:hr.analytic.timesheet:0
msgid "You cannot modify an entry in a Confirmed/Done timesheet !."
msgstr ""
#. module: analytic_journal_billing_rate
#: field:analytic_journal_rate_grid,rate_id:0
msgid "Invoicing Rate"
msgstr ""
#. module: analytic_journal_billing_rate
#: constraint:account.analytic.account:0
msgid "Error! You can not create recursive analytic accounts."
msgstr "ત્રુટિ! તમે અંદરોઅંદર વિશ્લેષણાત્મક ખાતાઓ ન બનાવી શકો."
#. module: analytic_journal_billing_rate
#: model:ir.model,name:analytic_journal_billing_rate.model_hr_analytic_timesheet
msgid "Timesheet Line"
msgstr ""
+10 -10
View File
@@ -240,7 +240,7 @@ class audittrail_objects_proxy(object_proxy):
line_id = log_line_pool.create(cr, uid, vals)
return True
def log_fct(self, cr, uid_orig, model, method, fct_src, *args):
def log_fct(self, cr, uid_orig, model, method, fct_src, *args, **kw):
"""
Logging function: This function is performing the logging operation
@param model: Object whose values are being changed
@@ -262,12 +262,12 @@ class audittrail_objects_proxy(object_proxy):
old_values = new_values = {}
if method == 'create':
res = fct_src(cr, uid_orig, model.model, method, *args)
res = fct_src(cr, uid_orig, model.model, method, *args, **kw)
if res:
res_ids = [res]
new_values = self.get_data(cr, uid_orig, pool, res_ids, model, method)
elif method == 'read':
res = fct_src(cr, uid_orig, model.model, method, *args)
res = fct_src(cr, uid_orig, model.model, method, *args, **kw)
# build the res_ids and the old_values dict. Here we don't use get_data() to
# avoid performing an additional read()
res_ids = []
@@ -279,7 +279,7 @@ class audittrail_objects_proxy(object_proxy):
elif method == 'unlink':
res_ids = args[0]
old_values = self.get_data(cr, uid_orig, pool, res_ids, model, method)
res = fct_src(cr, uid_orig, model.model, method, *args)
res = fct_src(cr, uid_orig, model.model, method, *args, **kw)
else: # method is write, action or workflow action
res_ids = []
if args:
@@ -290,7 +290,7 @@ class audittrail_objects_proxy(object_proxy):
# store the old values into a dictionary
old_values = self.get_data(cr, uid_orig, pool, res_ids, model, method)
# process the original function, workflow trigger...
res = fct_src(cr, uid_orig, model.model, method, *args)
res = fct_src(cr, uid_orig, model.model, method, *args, **kw)
if method == 'copy':
res_ids = [res]
if res_ids:
@@ -491,14 +491,14 @@ class audittrail_objects_proxy(object_proxy):
def execute_cr(self, cr, uid, model, method, *args, **kw):
fct_src = super(audittrail_objects_proxy, self).execute_cr
if self.check_rules(cr,uid,model,method):
return self.log_fct(cr, uid, model, method, fct_src, *args)
return fct_src(cr, uid, model, method, *args)
return self.log_fct(cr, uid, model, method, fct_src, *args, **kw)
return fct_src(cr, uid, model, method, *args, **kw)
def exec_workflow_cr(self, cr, uid, model, method, *args, **argv):
def exec_workflow_cr(self, cr, uid, model, method, *args, **kw):
fct_src = super(audittrail_objects_proxy, self).exec_workflow_cr
if self.check_rules(cr,uid,model,'workflow'):
return self.log_fct(cr, uid, model, method, fct_src, *args)
return fct_src(cr, uid, model, method, *args)
return self.log_fct(cr, uid, model, method, fct_src, *args, **kw)
return fct_src(cr, uid, model, method, *args, **kw)
audittrail_objects_proxy()
+369
View File
@@ -0,0 +1,369 @@
# Gujarati 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-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-03-06 18:11+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Gujarati <gu@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-03-07 05:13+0000\n"
"X-Generator: Launchpad (build 14907)\n"
#. module: audittrail
#: code:addons/audittrail/audittrail.py:75
#, python-format
msgid "WARNING: audittrail is not part of the pool"
msgstr ""
#. module: audittrail
#: field:audittrail.log.line,log_id:0
msgid "Log"
msgstr "લોગ"
#. module: audittrail
#: view:audittrail.rule:0
#: selection:audittrail.rule,state:0
msgid "Subscribed"
msgstr "ઉમેદવારી"
#. module: audittrail
#: sql_constraint:audittrail.rule:0
msgid ""
"There is already a rule defined on this object\n"
" You cannot define another: please edit the existing one."
msgstr ""
#. module: audittrail
#: view:audittrail.rule:0
msgid "Subscribed Rule"
msgstr ""
#. module: audittrail
#: model:ir.model,name:audittrail.model_audittrail_rule
msgid "Audittrail Rule"
msgstr ""
#. module: audittrail
#: view:audittrail.view.log:0
#: model:ir.actions.act_window,name:audittrail.action_audittrail_log_tree
#: model:ir.ui.menu,name:audittrail.menu_action_audittrail_log_tree
msgid "Audit Logs"
msgstr ""
#. module: audittrail
#: view:audittrail.log:0
#: view:audittrail.rule:0
msgid "Group By..."
msgstr "ગ્રુપ દ્વારા..."
#. module: audittrail
#: view:audittrail.rule:0
#: field:audittrail.rule,state:0
msgid "State"
msgstr "સ્થિતિ"
#. module: audittrail
#: view:audittrail.rule:0
msgid "_Subscribe"
msgstr "ઉમેદવારી કરો (_S)"
#. module: audittrail
#: view:audittrail.rule:0
#: selection:audittrail.rule,state:0
msgid "Draft"
msgstr "ડ્રાફ્ટ"
#. module: audittrail
#: field:audittrail.log.line,old_value:0
msgid "Old Value"
msgstr ""
#. module: audittrail
#: model:ir.actions.act_window,name:audittrail.action_audittrail_view_log
msgid "View log"
msgstr ""
#. module: audittrail
#: help:audittrail.rule,log_read:0
msgid ""
"Select this if you want to keep track of read/open on any record of the "
"object of this rule"
msgstr ""
#. module: audittrail
#: field:audittrail.log,method:0
msgid "Method"
msgstr "પદ્દત્તિ"
#. module: audittrail
#: field:audittrail.view.log,from:0
msgid "Log From"
msgstr ""
#. module: audittrail
#: field:audittrail.log.line,log:0
msgid "Log ID"
msgstr ""
#. module: audittrail
#: field:audittrail.log,res_id:0
msgid "Resource Id"
msgstr ""
#. module: audittrail
#: help:audittrail.rule,user_id:0
msgid "if User is not added then it will applicable for all users"
msgstr ""
#. module: audittrail
#: help:audittrail.rule,log_workflow:0
msgid ""
"Select this if you want to keep track of workflow on any record of the "
"object of this rule"
msgstr ""
#. module: audittrail
#: field:audittrail.rule,user_id:0
msgid "Users"
msgstr "વપરાશકર્તાઓ"
#. module: audittrail
#: view:audittrail.log:0
msgid "Log Lines"
msgstr ""
#. module: audittrail
#: view:audittrail.log:0
#: field:audittrail.log,object_id:0
#: field:audittrail.rule,object_id:0
msgid "Object"
msgstr "વસ્તુ"
#. module: audittrail
#: view:audittrail.rule:0
msgid "AuditTrail Rule"
msgstr ""
#. module: audittrail
#: field:audittrail.view.log,to:0
msgid "Log To"
msgstr ""
#. module: audittrail
#: view:audittrail.log:0
msgid "New Value Text: "
msgstr ""
#. module: audittrail
#: view:audittrail.rule:0
msgid "Search Audittrail Rule"
msgstr ""
#. module: audittrail
#: model:ir.actions.act_window,name:audittrail.action_audittrail_rule_tree
#: model:ir.ui.menu,name:audittrail.menu_action_audittrail_rule_tree
msgid "Audit Rules"
msgstr ""
#. module: audittrail
#: view:audittrail.log:0
msgid "Old Value : "
msgstr ""
#. module: audittrail
#: field:audittrail.log,name:0
msgid "Resource Name"
msgstr ""
#. module: audittrail
#: view:audittrail.log:0
#: field:audittrail.log,timestamp:0
msgid "Date"
msgstr "તારીખ"
#. module: audittrail
#: help:audittrail.rule,log_write:0
msgid ""
"Select this if you want to keep track of modification on any record of the "
"object of this rule"
msgstr ""
#. module: audittrail
#: field:audittrail.rule,log_create:0
msgid "Log Creates"
msgstr ""
#. module: audittrail
#: help:audittrail.rule,object_id:0
msgid "Select object for which you want to generate log."
msgstr ""
#. module: audittrail
#: view:audittrail.log:0
msgid "Old Value Text : "
msgstr ""
#. module: audittrail
#: field:audittrail.rule,log_workflow:0
msgid "Log Workflow"
msgstr ""
#. module: audittrail
#: field:audittrail.rule,log_read:0
msgid "Log Reads"
msgstr ""
#. module: audittrail
#: code:addons/audittrail/audittrail.py:76
#, python-format
msgid "Change audittrail depends -- Setting rule as DRAFT"
msgstr ""
#. module: audittrail
#: field:audittrail.log,line_ids:0
msgid "Log lines"
msgstr ""
#. module: audittrail
#: field:audittrail.log.line,field_id:0
msgid "Fields"
msgstr ""
#. module: audittrail
#: view:audittrail.rule:0
msgid "AuditTrail Rules"
msgstr ""
#. module: audittrail
#: help:audittrail.rule,log_unlink:0
msgid ""
"Select this if you want to keep track of deletion on any record of the "
"object of this rule"
msgstr ""
#. module: audittrail
#: view:audittrail.log:0
#: field:audittrail.log,user_id:0
msgid "User"
msgstr "વપરાશકર્તા"
#. module: audittrail
#: field:audittrail.rule,action_id:0
msgid "Action ID"
msgstr ""
#. module: audittrail
#: view:audittrail.rule:0
msgid "Users (if User is not added then it will applicable for all users)"
msgstr ""
#. module: audittrail
#: view:audittrail.rule:0
msgid "UnSubscribe"
msgstr ""
#. module: audittrail
#: field:audittrail.rule,log_unlink:0
msgid "Log Deletes"
msgstr ""
#. module: audittrail
#: field:audittrail.log.line,field_description:0
msgid "Field Description"
msgstr ""
#. module: audittrail
#: view:audittrail.log:0
msgid "Search Audittrail Log"
msgstr ""
#. module: audittrail
#: field:audittrail.rule,log_write:0
msgid "Log Writes"
msgstr ""
#. module: audittrail
#: view:audittrail.view.log:0
msgid "Open Logs"
msgstr ""
#. module: audittrail
#: field:audittrail.log.line,new_value_text:0
msgid "New value Text"
msgstr ""
#. module: audittrail
#: field:audittrail.rule,name:0
msgid "Rule Name"
msgstr ""
#. module: audittrail
#: field:audittrail.log.line,new_value:0
msgid "New Value"
msgstr ""
#. module: audittrail
#: view:audittrail.log:0
msgid "AuditTrail Logs"
msgstr ""
#. module: audittrail
#: view:audittrail.rule:0
msgid "Draft Rule"
msgstr ""
#. module: audittrail
#: model:ir.model,name:audittrail.model_audittrail_log
msgid "Audittrail Log"
msgstr ""
#. module: audittrail
#: help:audittrail.rule,log_action:0
msgid ""
"Select this if you want to keep track of actions on the object of this rule"
msgstr ""
#. module: audittrail
#: view:audittrail.log:0
msgid "New Value : "
msgstr ""
#. module: audittrail
#: field:audittrail.log.line,old_value_text:0
msgid "Old value Text"
msgstr ""
#. module: audittrail
#: view:audittrail.view.log:0
msgid "Cancel"
msgstr "રદ કરો"
#. module: audittrail
#: model:ir.model,name:audittrail.model_audittrail_view_log
msgid "View Log"
msgstr "લોગ જુઓ"
#. module: audittrail
#: model:ir.model,name:audittrail.model_audittrail_log_line
msgid "Log Line"
msgstr ""
#. module: audittrail
#: field:audittrail.rule,log_action:0
msgid "Log Action"
msgstr ""
#. module: audittrail
#: help:audittrail.rule,log_create:0
msgid ""
"Select this if you want to keep track of creation on any record of the "
"object of this rule"
msgstr ""
+496
View File
@@ -0,0 +1,496 @@
# Gujarati 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-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-03-06 18:15+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Gujarati <gu@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-03-07 05:13+0000\n"
"X-Generator: Launchpad (build 14907)\n"
#. module: base_action_rule
#: help:base.action.rule,act_mail_to_user:0
msgid ""
"Check this if you want the rule to send an email to the responsible person."
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_remind_partner:0
msgid "Remind Partner"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,trg_partner_categ_id:0
msgid "Partner Category"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_mail_to_watchers:0
msgid "Mail to Watchers (CC)"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,trg_state_to:0
msgid "Button Pressed"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,model_id:0
msgid "Object"
msgstr "વસ્તુ"
#. module: base_action_rule
#: field:base.action.rule,act_mail_to_email:0
msgid "Mail to these Emails"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_state:0
msgid "Set State to"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_email_from:0
msgid "Email From"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Body"
msgstr ""
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Days"
msgstr "દિવસો"
#. module: base_action_rule
#: field:base.action.rule,last_run:0
msgid "Last Run"
msgstr ""
#. module: base_action_rule
#: code:addons/base_action_rule/base_action_rule.py:328
#, python-format
msgid "Error!"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_reply_to:0
msgid "Reply-To"
msgstr "ને જવાબ આપો"
#. module: base_action_rule
#: help:base.action.rule,act_email_cc:0
msgid ""
"These people will receive a copy of the future communication between partner "
"and users by email"
msgstr ""
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Minutes"
msgstr "મિનીટો"
#. module: base_action_rule
#: field:base.action.rule,name:0
msgid "Rule Name"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,act_remind_partner:0
msgid ""
"Check this if you want the rule to send a reminder by email to the partner."
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on Model Partner"
msgstr ""
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Deadline"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,trg_partner_id:0
msgid "Partner"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_subject)s = Object subject"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Reminders"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Special Keywords to Be Used in The Body"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,trg_state_from:0
msgid "State"
msgstr "સ્થિતિ"
#. module: base_action_rule
#: model:ir.actions.act_window,help:base_action_rule.base_action_rule_act
msgid ""
"Use automated actions to automatically trigger actions for various screens. "
"Example: a lead created by a specific user may be automatically set to a "
"specific sales team, or an opportunity which still has status pending after "
"14 days might trigger an automatic reminder email."
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,act_mail_to_email:0
msgid "Email-id of the persons whom mail is to be sent"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Action Rule"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Fields to Change"
msgstr ""
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Creation Date"
msgstr ""
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Last Action Date"
msgstr ""
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Hours"
msgstr "કલાક"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_id)s = Object ID"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Delay After Trigger Date"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_remind_attach:0
msgid "Remind with Attachment"
msgstr ""
#. module: base_action_rule
#: constraint:ir.cron:0
msgid "Invalid arguments"
msgstr "અયોગ્ય દલીલો"
#. module: base_action_rule
#: field:base.action.rule,act_user_id:0
msgid "Set Responsible to"
msgstr ""
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "None"
msgstr "કંઇ નહિં"
#. module: base_action_rule
#: help:base.action.rule,act_email_to:0
msgid ""
"Use a python expression to specify the right field on which one than we will "
"use for the 'To' field of the header"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_user_phone)s = Responsible phone"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid ""
"The rule uses the AND operator. The model must match all non-empty fields so "
"that the rule executes the action described in the 'Actions' tab."
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,trg_date_range_type:0
msgid "Delay type"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,regex_name:0
msgid ""
"Regular expression for matching name of the resource\n"
"e.g.: 'urgent.*' will search for records having name starting with the "
"string 'urgent'\n"
"Note: This is case sensitive search."
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_method:0
msgid "Call Object Method"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_email_to:0
msgid "Email To"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,act_mail_to_watchers:0
msgid ""
"Check this if you want the rule to mark CC(mail to any other person defined "
"in actions)."
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(partner)s = Partner name"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Note"
msgstr "નોંધ"
#. module: base_action_rule
#: help:base.action.rule,act_email_from:0
msgid ""
"Use a python expression to specify the right field on which one than we will "
"use for the 'From' field of the header"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,trg_date_range:0
msgid "Delay after trigger date"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions"
msgstr "શરતો"
#. module: base_action_rule
#: help:base.action.rule,trg_date_range:0
msgid ""
"Delay After Trigger Date,specifies you can put a negative number. If you "
"need a delay before the trigger date, like sending a reminder 15 minutes "
"before a meeting."
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,active:0
msgid "Active"
msgstr "કાર્યશીલ"
#. module: base_action_rule
#: code:addons/base_action_rule/base_action_rule.py:329
#, python-format
msgid "No E-Mail ID Found for your Company address!"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_remind_user:0
msgid "Remind Responsible"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,sequence:0
msgid "Gives the sequence order when displaying a list of rules."
msgstr ""
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Months"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,filter_id:0
msgid "Filter"
msgstr "ફિલ્ટર"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Date"
msgstr "તારીખ"
#. module: base_action_rule
#: help:base.action.rule,server_action_id:0
msgid ""
"Describes the action name.\n"
"eg:on which object which action to be taken on basis of which condition"
msgstr ""
#. module: base_action_rule
#: model:ir.model,name:base_action_rule.model_ir_cron
msgid "ir.cron"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_description)s = Object description"
msgstr ""
#. module: base_action_rule
#: constraint:base.action.rule:0
msgid "Error: The mail is not well formated"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Actions"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Information"
msgstr ""
#. module: base_action_rule
#: model:ir.model,name:base_action_rule.model_base_action_rule
msgid "Action Rules"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,act_mail_body:0
msgid "Content of mail"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,trg_user_id:0
msgid "Responsible"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(partner_email)s = Partner Email"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_date)s = Creation date"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_user_email)s = Responsible Email"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_mail_body:0
msgid "Mail body"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,act_remind_user:0
msgid ""
"Check this if you want the rule to send a reminder by email to the user."
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Server Action to be Triggered"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_mail_to_user:0
msgid "Mail to Responsible"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_email_cc:0
msgid "Add Watchers (Cc)"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on Model Fields"
msgstr ""
#. module: base_action_rule
#: model:ir.actions.act_window,name:base_action_rule.base_action_rule_act
#: model:ir.ui.menu,name:base_action_rule.menu_base_action_rule_form
msgid "Automated Actions"
msgstr "સ્વયંચાલિતકાર્યો(એકશન્સ)"
#. module: base_action_rule
#: field:base.action.rule,server_action_id:0
msgid "Server Action"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,regex_name:0
msgid "Regex on Resource Name"
msgstr ""
#. module: base_action_rule
#: help:base.action.rule,act_remind_attach:0
msgid ""
"Check this if you want that all documents attached to the object be attached "
"to the reminder email sent."
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on Timing"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,sequence:0
msgid "Sequence"
msgstr "ક્રમ"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Actions"
msgstr "ક્રિયાઓ"
#. module: base_action_rule
#: help:base.action.rule,active:0
msgid ""
"If the active field is set to False, it will allow you to hide the rule "
"without removing it."
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_user)s = Responsible name"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,create_date:0
msgid "Create Date"
msgstr ""
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on States"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,trg_date_type:0
msgid "Trigger Date"
msgstr ""
+264
View File
@@ -0,0 +1,264 @@
# Gujarati 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-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-03-06 18:22+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Gujarati <gu@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-03-07 05:13+0000\n"
"X-Generator: Launchpad (build 14907)\n"
#. module: base_contact
#: field:res.partner.location,city:0
msgid "City"
msgstr "શહેર"
#. module: base_contact
#: view:res.partner.contact:0
msgid "First/Lastname"
msgstr ""
#. module: base_contact
#: model:ir.actions.act_window,name:base_contact.action_partner_contact_form
#: model:ir.ui.menu,name:base_contact.menu_partner_contact_form
#: model:ir.ui.menu,name:base_contact.menu_purchases_partner_contact_form
#: model:process.node,name:base_contact.process_node_contacts0
#: field:res.partner.location,job_ids:0
msgid "Contacts"
msgstr "સંપર્કો"
#. module: base_contact
#: view:res.partner.contact:0
msgid "Professional Info"
msgstr ""
#. module: base_contact
#: field:res.partner.contact,first_name:0
msgid "First Name"
msgstr "પ્રથમ નામ"
#. module: base_contact
#: field:res.partner.address,location_id:0
msgid "Location"
msgstr "સ્થળ"
#. module: base_contact
#: model:process.transition,name:base_contact.process_transition_partnertoaddress0
msgid "Partner to address"
msgstr ""
#. module: base_contact
#: help:res.partner.contact,active:0
msgid ""
"If the active field is set to False, it will allow you to "
"hide the partner contact without removing it."
msgstr ""
#. module: base_contact
#: field:res.partner.contact,website:0
msgid "Website"
msgstr "સન્ચારપ્રૌદ્યોગિક"
#. module: base_contact
#: field:res.partner.location,zip:0
msgid "Zip"
msgstr "Zip"
#. module: base_contact
#: field:res.partner.location,state_id:0
msgid "Fed. State"
msgstr ""
#. module: base_contact
#: field:res.partner.location,company_id:0
msgid "Company"
msgstr "કંપની"
#. module: base_contact
#: field:res.partner.contact,title:0
msgid "Title"
msgstr "શીર્ષક"
#. module: base_contact
#: field:res.partner.location,partner_id:0
msgid "Main Partner"
msgstr ""
#. module: base_contact
#: model:process.process,name:base_contact.process_process_basecontactprocess0
msgid "Base Contact"
msgstr ""
#. module: base_contact
#: field:res.partner.contact,email:0
msgid "E-Mail"
msgstr "ઈ-મેઇલ"
#. module: base_contact
#: field:res.partner.contact,active:0
msgid "Active"
msgstr "કાર્યશીલ"
#. module: base_contact
#: field:res.partner.contact,country_id:0
msgid "Nationality"
msgstr "નાગરિકત્વ"
#. module: base_contact
#: view:res.partner:0
#: view:res.partner.address:0
msgid "Postal Address"
msgstr "પોસ્ટલ સરનામું"
#. module: base_contact
#: field:res.partner.contact,function:0
msgid "Main Function"
msgstr ""
#. module: base_contact
#: model:process.transition,note:base_contact.process_transition_partnertoaddress0
msgid "Define partners and their addresses."
msgstr ""
#. module: base_contact
#: field:res.partner.contact,name:0
msgid "Name"
msgstr "નામ"
#. module: base_contact
#: field:res.partner.contact,lang_id:0
msgid "Language"
msgstr "ભાષા"
#. module: base_contact
#: field:res.partner.contact,mobile:0
msgid "Mobile"
msgstr "મોબાઇલ"
#. module: base_contact
#: field:res.partner.location,country_id:0
msgid "Country"
msgstr "દેશ"
#. module: base_contact
#: view:res.partner.contact:0
#: field:res.partner.contact,comment:0
msgid "Notes"
msgstr "નોંધ"
#. module: base_contact
#: model:process.node,note:base_contact.process_node_contacts0
msgid "People you work with."
msgstr ""
#. module: base_contact
#: view:res.partner.contact:0
msgid "Extra Information"
msgstr "વધુ માહિતી"
#. module: base_contact
#: view:res.partner.contact:0
#: field:res.partner.contact,job_ids:0
msgid "Functions and Addresses"
msgstr ""
#. module: base_contact
#: model:ir.model,name:base_contact.model_res_partner_contact
#: field:res.partner.address,contact_id:0
msgid "Contact"
msgstr "સંપર્ક"
#. module: base_contact
#: model:ir.model,name:base_contact.model_res_partner_location
msgid "res.partner.location"
msgstr ""
#. module: base_contact
#: model:process.node,note:base_contact.process_node_partners0
msgid "Companies you work with."
msgstr ""
#. module: base_contact
#: field:res.partner.contact,partner_id:0
msgid "Main Employer"
msgstr ""
#. module: base_contact
#: view:res.partner.contact:0
msgid "Partner Contact"
msgstr ""
#. module: base_contact
#: model:process.node,name:base_contact.process_node_addresses0
msgid "Addresses"
msgstr "સરનામાંઓ"
#. module: base_contact
#: model:process.node,note:base_contact.process_node_addresses0
msgid "Working and private addresses."
msgstr ""
#. module: base_contact
#: field:res.partner.contact,last_name:0
msgid "Last Name"
msgstr "છેલ્લું નામ"
#. module: base_contact
#: view:res.partner.contact:0
#: field:res.partner.contact,photo:0
msgid "Photo"
msgstr "ફોટો"
#. module: base_contact
#: view:res.partner.location:0
msgid "Locations"
msgstr "સ્થળો"
#. module: base_contact
#: view:res.partner.contact:0
msgid "General"
msgstr "સામાન્ય"
#. module: base_contact
#: field:res.partner.location,street:0
msgid "Street"
msgstr "શેરી"
#. module: base_contact
#: view:res.partner.contact:0
msgid "Partner"
msgstr ""
#. module: base_contact
#: model:process.node,name:base_contact.process_node_partners0
msgid "Partners"
msgstr ""
#. module: base_contact
#: model:ir.model,name:base_contact.model_res_partner_address
msgid "Partner Addresses"
msgstr ""
#. module: base_contact
#: field:res.partner.location,street2:0
msgid "Street2"
msgstr ""
#. module: base_contact
#: view:res.partner.contact:0
msgid "Personal Information"
msgstr "અંગત માહિતી"
#. module: base_contact
#: field:res.partner.contact,birthdate:0
msgid "Birth Date"
msgstr "જન્મ તારીખ"
+32
View File
@@ -0,0 +1,32 @@
# Dutch (Belgium) 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: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2012-03-01 17:18+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Dutch (Belgium) <nl_BE@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-03-02 04:36+0000\n"
"X-Generator: Launchpad (build 14886)\n"
#. module: base_tools
#: model:ir.module.module,shortdesc:base_tools.module_meta_information
msgid "Common base for tools modules"
msgstr "Gemeenschappelijke basis voor hulpmiddelen"
#. module: base_tools
#: model:ir.module.module,description:base_tools.module_meta_information
msgid ""
"\n"
" "
msgstr ""
"\n"
" "
+75
View File
@@ -0,0 +1,75 @@
# Gujarati 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-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-03-06 18:23+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Gujarati <gu@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-03-07 05:13+0000\n"
"X-Generator: Launchpad (build 14907)\n"
#. module: base_vat
#: code:addons/base_vat/base_vat.py:141
#, python-format
msgid ""
"This VAT number does not seem to be valid.\n"
"Note: the expected format is %s"
msgstr ""
#. module: base_vat
#: sql_constraint:res.company:0
msgid "The company name must be unique !"
msgstr ""
#. module: base_vat
#: constraint:res.partner:0
msgid "Error ! You cannot create recursive associated members."
msgstr ""
#. module: base_vat
#: field:res.company,vat_check_vies:0
msgid "VIES VAT Check"
msgstr ""
#. module: base_vat
#: model:ir.model,name:base_vat.model_res_company
msgid "Companies"
msgstr ""
#. module: base_vat
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
msgstr ""
#. module: base_vat
#: help:res.partner,vat_subjected:0
msgid ""
"Check this box if the partner is subjected to the VAT. It will be used for "
"the VAT legal statement."
msgstr ""
#. module: base_vat
#: model:ir.model,name:base_vat.model_res_partner
msgid "Partner"
msgstr ""
#. module: base_vat
#: help:res.company,vat_check_vies:0
msgid ""
"If checked, Partners VAT numbers will be fully validated against EU's VIES "
"service rather than via a simple format validation (checksum)."
msgstr ""
#. module: base_vat
#: field:res.partner,vat_subjected:0
msgid "VAT Legal Statement"
msgstr ""
+48
View File
@@ -0,0 +1,48 @@
# Dutch (Belgium) 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-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-03-01 17:20+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Dutch (Belgium) <nl_BE@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-03-02 04:36+0000\n"
"X-Generator: Launchpad (build 14886)\n"
#. module: crm_caldav
#: model:ir.actions.act_window,name:crm_caldav.action_caldav_browse
msgid "Caldav Browse"
msgstr "Bladeren Caldav"
#. module: crm_caldav
#: model:ir.ui.menu,name:crm_caldav.menu_caldav_browse
msgid "Synchronize This Calendar"
msgstr ""
#. module: crm_caldav
#: model:ir.model,name:crm_caldav.model_crm_meeting
msgid "Meeting"
msgstr "Afspraak"
#~ msgid "Extended Module to Add CalDav feature on Meeting"
#~ msgstr "Uitgebreide module om CalDav-functies toe te voegen aan afspraken"
#~ msgid ""
#~ "\n"
#~ " New Features in Meeting:\n"
#~ " * Share meeting with other calendar clients like sunbird\n"
#~ msgstr ""
#~ "\n"
#~ " Nieuwe functies voorafspraken:\n"
#~ " * afspraken delen met andere kalendertoepassingen, zoals sunbird\n"
#~ msgid "Synchronyze this calendar"
#~ msgstr "Deze agenda synchroniseren"
+67
View File
@@ -0,0 +1,67 @@
# Dutch (Belgium) 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-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-03-01 17:22+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Dutch (Belgium) <nl_BE@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-03-02 04:36+0000\n"
"X-Generator: Launchpad (build 14886)\n"
#. module: decimal_precision
#: field:decimal.precision,digits:0
msgid "Digits"
msgstr "Cijfers"
#. module: decimal_precision
#: model:ir.actions.act_window,name:decimal_precision.action_decimal_precision_form
#: model:ir.ui.menu,name:decimal_precision.menu_decimal_precision_form
msgid "Decimal Accuracy"
msgstr "Decimale precisie"
#. module: decimal_precision
#: field:decimal.precision,name:0
msgid "Usage"
msgstr "Gebruik"
#. module: decimal_precision
#: sql_constraint:decimal.precision:0
msgid "Only one value can be defined for each given usage!"
msgstr "Er kan slechts een waarde worden ingesteld per type"
#. module: decimal_precision
#: view:decimal.precision:0
msgid "Decimal Precision"
msgstr "Decimale precisie"
#. module: decimal_precision
#: model:ir.model,name:decimal_precision.model_decimal_precision
msgid "decimal.precision"
msgstr "decimal.precision"
#~ msgid ""
#~ "\n"
#~ "This module allows to configure the price accuracy you need for different "
#~ "kind\n"
#~ "of usage: accounting, sales, purchases, ...\n"
#~ "\n"
#~ "The decimal precision is configured per company.\n"
#~ msgstr ""
#~ "\n"
#~ "Met deze module kunt u de prij nauwkeurigheid configureren die u nodig heeft "
#~ "voor verschillend gebruik:\n"
#~ "boekhouding, verkoop, aankoop, ...\n"
#~ "\n"
#~ "De decimale precisie wordt per bedrijf ingesteld.\n"
#~ msgid "Decimal Precision Configuration"
#~ msgstr "Decimale precisie instellen"
File diff suppressed because it is too large Load Diff
+23 -15
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-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-18 23:35+0000\n"
"Last-Translator: GaCriv <Unknown>\n"
"PO-Revision-Date: 2012-03-05 14:46+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-02-19 05:43+0000\n"
"X-Generator: Launchpad (build 14814)\n"
"X-Launchpad-Export-Date: 2012-03-06 04:48+0000\n"
"X-Generator: Launchpad (build 14900)\n"
#. module: email_template
#: field:email.template,subtype:0
@@ -37,12 +37,14 @@ msgstr "SMTP Server"
#: view:email.template:0
msgid "Remove the sidebar button currently displayed on related documents"
msgstr ""
"Supprime le bouton de la barre latérale actuellement affiché sur les "
"documents associés"
#. module: email_template
#: field:email.template,ref_ir_act_window:0
#: field:email_template.preview,ref_ir_act_window:0
msgid "Sidebar action"
msgstr ""
msgstr "Action de la barre latérale"
#. module: email_template
#: view:mail.compose.message:0
@@ -72,7 +74,7 @@ msgstr "Reçu"
#: field:email.template,ref_ir_value:0
#: field:email_template.preview,ref_ir_value:0
msgid "Sidebar button"
msgstr ""
msgstr "Bouton de la barre latérale"
#. module: email_template
#: help:email.template,report_name:0
@@ -85,7 +87,7 @@ msgstr ""
#. module: email_template
#: view:email.template:0
msgid "Attach existing files"
msgstr ""
msgstr "Joindre les fichiers existants"
#. module: email_template
#: view:email.template:0
@@ -185,7 +187,7 @@ msgstr "Assistant de composition de message"
#. module: email_template
#: view:email.template:0
msgid "Dynamic Values Builder"
msgstr ""
msgstr "Constructeur de valeurs dynamiques"
#. module: email_template
#: field:email.template,res_id:0
@@ -274,7 +276,7 @@ msgstr "Options"
#: field:email.template,model_id:0
#: field:email_template.preview,model_id:0
msgid "Related document model"
msgstr ""
msgstr "Modèle de document associé"
#. module: email_template
#: help:email.template,email_from:0
@@ -343,12 +345,14 @@ msgid ""
"If checked, the user's signature will be appended to the text version of the "
"message"
msgstr ""
"Si coché, la signature de l'utilisateur sera ajoutée à la version texte du "
"message"
#. module: email_template
#: view:email.template:0
#: view:email_template.preview:0
msgid "Body (Rich/HTML)"
msgstr ""
msgstr "Corps (riche/HTML)"
#. module: email_template
#: help:email.template,sub_object:0
@@ -383,7 +387,7 @@ msgstr ""
#. module: email_template
#: view:email.template:0
msgid "Add sidebar button"
msgstr ""
msgstr "Ajouter un bouton dans la barre latérale"
#. module: email_template
#: view:email.template:0
@@ -507,6 +511,8 @@ msgid ""
"Sidebar action to make this template available on records of the related "
"document model"
msgstr ""
"Action de la barre latérale pour rendre ce modèle disponible sur les "
"enregistrements associés au modèle de document"
#. module: email_template
#: field:email.template,model_object_field:0
@@ -596,7 +602,7 @@ msgstr ""
#: field:email.template,headers:0
#: field:email_template.preview,headers:0
msgid "Message headers"
msgstr ""
msgstr "En-têtes de message"
#. module: email_template
#: field:email.template,email_bcc:0
@@ -609,17 +615,18 @@ msgstr "Copie cachée à (BCC)"
#: help:email_template.preview,reply_to:0
msgid "Preferred response address (placeholders may be used here)"
msgstr ""
"Adresse de réponse préférée (des variables peuvent être utilisées ici)"
#. module: email_template
#: view:email.template:0
msgid "Remove sidebar button"
msgstr ""
msgstr "Supprimer le bouton de la barre latérale"
#. module: email_template
#: help:email.template,null_value:0
#: help:email_template.preview,null_value:0
msgid "Optional value to use if the target field is empty"
msgstr ""
msgstr "Valeur facultative à utiliser si le champ cible est vide"
#. module: email_template
#: view:email.template:0
@@ -631,12 +638,13 @@ msgstr "Modèle"
#: help:email_template.preview,references:0
msgid "Message references, such as identifiers of previous messages"
msgstr ""
"Références du message, tel que les identifiants des messages précédents"
#. module: email_template
#: help:email.template,ref_ir_value:0
#: help:email_template.preview,ref_ir_value:0
msgid "Sidebar button to open the sidebar action"
msgstr ""
msgstr "Bouton de la barre latérale pour ouvrir l'action"
#. module: email_template
#: constraint:res.partner:0
+5 -10
View File
@@ -39,28 +39,23 @@ Note that:
Association / Configuration / Types of Events
""",
'author': 'OpenERP SA',
'depends': ['crm', 'account', 'marketing', 'mail'],
'depends': ['email_template'],
'init_xml': [],
'update_xml': [
'security/event_security.xml',
'security/ir.model.access.csv',
'wizard/event_confirm_registration_view.xml',
'wizard/event_confirm_view.xml',
'event_view.xml',
'report/report_event_registration_view.xml',
'wizard/event_make_invoice_view.xml',
'wizard/partner_event_registration_view.xml',
'board_association_view.xml',
'res_partner_view.xml',
'email_template.xml',
],
'demo_xml': ['event_demo.xml'],
'test': ['test/process/event_confirm2done.yml',
'test/process/event_draft2cancel.yml',
'test/process/partner_register2invoice.yml',
'test/ui/duplicate_event.yml',
'test/ui/demo_data.yml'],
'test': ['test/process/event_draft2done.yml'],
'installable': True,
'application': True,
'auto_install': False,
'certificate': '0083059161581',
'images': ['images/1_event_type_list.jpeg','images/2_events.jpeg','images/3_registrations.jpeg'],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+1 -4
View File
@@ -21,7 +21,7 @@
<field name="name">Events Filling Status</field>
<field name="res_model">report.event.registration</field>
<field name="view_type">form</field>
<field name="domain">[('state','not in',('cancel','done'))]</field>
<field name="domain">[('event_state','not in',('cancel','done'))]</field>
<field name="view_mode">graph,tree</field>
<field name="view_id" ref="view_report_event_reg_graph"/>
</record>
@@ -45,9 +45,6 @@
<action string="Next Events"
name="%(act_event_view)d"
domain="[('state','not in',('cancel','done'))]"/>
<action string="Unconfirmed Registrations"
name="%(event.act_event_list_register_event)d"
domain="[('state','=','draft')]"/>
</column>
<column>
<action string="Events Filling Status"
+58
View File
@@ -0,0 +1,58 @@
<?xml version="1.0"?>
<openerp>
<data>
<record id="confirmation_event" model="email.template">
<field name="name">Confirmation of the Event</field>
<field name="model_id" ref="event.model_event_registration"/>
<field name="email_from" >${object.user_id.user_email or object.company_id.email or 'noreply@' + object.company_id.name + '.com'}</field>
<field name="email_to" >${object.email}</field>
<field name="subject">Your registration at ${object.event_id.name}</field>
<field name="body_text">
hello ${object.name},
The event ${object.event_id.name} that you registered for is confirmed and will be held from ${object.event_id.date_begin} to ${object.event_id.date_end}. For any further information please contact our event department.
we thank you for your participation
best regards
</field>
</record>
</data>
<data>
<record id="confirmation_registration" model="email.template">
<field name="name">Confirmation of the Registration</field>
<field name="model_id" ref="event.model_event_registration"/>
<field name="email_from" >${object.user_id.user_email or object.company_id.email or 'noreply@' + object.company_id.name + '.com'}</field>
<field name="email_to" >${object.email}</field>
<field name="subject">Your registration at ${object.event_id.name}</field>
<field name="body_text">
hello ${object.name},
We confirm you that your registration to the event ${object.event_id.name} has been recorded. You will automatically receive an email providing you more practical information (such as the schedule, the plan...) as soon as the event will be confirmed to be held.
we thank you for your participation
best regards
</field>
</record>
<!-- Default Values -->
<record model="ir.values" id="default_value_event_mail_confirmation">
<field name="name">default_email_event</field>
<field name="key">default</field>
<field name="key2"></field>
<field eval="ref('confirmation_event')" name="value_unpickle"/>
<field name="model">event.type</field>
</record>
<record model="ir.values" id="default_value_registration_mail_confirmation">
<field name="name">default_email_registration</field>
<field name="key">default</field>
<field name="key2"></field>
<field eval="ref('confirmation_registration')" name="value_unpickle"/>
<field name="model">event.type</field>
</record>
</data>
</openerp>
+163 -524
View File
@@ -20,15 +20,9 @@
##############################################################################
import time
from crm import crm
from osv import fields, osv
from tools.translate import _
import decimal_precision as dp
from crm import wizard
wizard.mail_compose_message.SUPPORTED_MODELS.append('event.registration')
class event_type(osv.osv):
""" Event Type """
@@ -36,7 +30,16 @@ class event_type(osv.osv):
_description = __doc__
_columns = {
'name': fields.char('Event type', size=64, required=True),
'default_reply_to': fields.char('Default Reply-To', size=64,help="The email address of the organizer which is put in the 'Reply-To' of all emails sent automatically at event or registrations confirmation. You can also put your email address of your mail gateway if you use one." ),
'default_email_event': fields.many2one('email.template','Event Confirmation Email', help="It will select this default confirmation event mail value when you choose this event"),
'default_email_registration': fields.many2one('email.template','Registration Confirmation Email', help="It will select this default confirmation registration mail value when you choose this event"),
'default_registration_min': fields.integer('Default Minimum Registration', help="It will select this default minimum value when you choose this event"),
'default_registration_max': fields.integer('Default Maximum Registration', help="It will select this default maximum value when you choose this event"),
}
_defaults = {
'default_registration_min': 0,
'default_registration_max':0,
}
event_type()
@@ -46,10 +49,29 @@ class event_event(osv.osv):
_description = __doc__
_order = 'date_begin'
def name_get(self, cr, uid, ids, context=None):
if not ids:
return []
res = []
for record in self.browse(cr, uid, ids, context=context):
date = record.date_begin.split(" ")
date = date[0]
registers=''
if record.register_max !=0:
register_max = str(record.register_max)
register_tot = record.register_current+record.register_prospect
register_tot = str(register_tot)
registers = register_tot+'/'+register_max
name = record.name+' ('+date+') '+registers
res.append((record['id'], name))
return res
def _name_get_fnc(self, cr, uid, ids,prop,unknow, context=None):
res = self.name_get(cr, uid, ids, context=context)
return dict(res)
def copy(self, cr, uid, id, default=None, context=None):
""" Copy record of Given id
@param id: Id of Event record.
@param context: A standard dictionary for contextual values
""" Reset the state and the registrations while copying an event
"""
if not default:
default = {}
@@ -59,81 +81,45 @@ class event_event(osv.osv):
})
return super(event_event, self).copy(cr, uid, id, default=default, context=context)
def onchange_product(self, cr, uid, ids, product_id=False):
"""This function returns value of product's unit price based on product id.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of Event IDs
@param product_id: Product's id
"""
if not product_id:
return {'value': {'unit_price': False}}
else:
unit_price=self.pool.get('product.product').price_get(cr, uid, [product_id])[product_id]
return {'value': {'unit_price': unit_price}}
def button_draft(self, cr, uid, ids, context=None):
return self.write(cr, uid, ids, {'state': 'draft'}, context=context)
def button_cancel(self, cr, uid, ids, context=None):
registration = self.pool.get('event.registration')
reg_ids = registration.search(cr, uid, [('event_id','in',ids)], context=context)
for event_reg in registration.browse(cr,uid,reg_ids,context=context):
if event_reg.state == 'done':
raise osv.except_osv(_('Error!'),_("You have already set a registration for this event as 'Attended'. Please reset it to draft if you want to cancel this event.") )
registration.write(cr, uid, reg_ids, {'state': 'cancel'}, context=context)
return self.write(cr, uid, ids, {'state': 'cancel'}, context=context)
def button_done(self, cr, uid, ids, context=None):
if type(ids) in (int, long,):
ids = [ids]
return self.write(cr, uid, ids, {'state': 'done'}, context=context)
def do_confirm(self, cr, uid, ids, context=None):
""" Confirm Event and send confirmation email to all register peoples
"""
def check_registration_limits(self, cr, uid, ids, context=None):
register_pool = self.pool.get('event.registration')
for event in self.browse(cr, uid, ids, context=context):
if event.mail_auto_confirm:
#send reminder that will confirm the event for all the people that were already confirmed
reg_ids = register_pool.search(cr, uid, [
('event_id', '=', event.id),
('state', 'not in', ['draft', 'cancel'])], context=context)
register_pool.mail_user_confirm(cr, uid, reg_ids)
for self.event in self.browse(cr, uid, ids, context=context):
total_confirmed = self.event.register_current
if total_confirmed < self.event.register_min or total_confirmed > self.event.register_max and self.event.register_max!=0:
raise osv.except_osv(_('Error!'),_("The total of confirmed registration for the event '%s' does not meet the expected minimum/maximum. You should maybe reconsider those limits before going further") % (self.event.name))
def confirm_event(self, cr, uid, ids, context=None):
register_pool = self.pool.get('event.registration')
if self.event.email_confirmation_id:
#send reminder that will confirm the event for all the people that were already confirmed
reg_ids = register_pool.search(cr, uid, [
('event_id', '=', self.event.id),
('state', 'not in', ['draft', 'cancel'])], context=context)
register_pool.mail_user_confirm(cr, uid, reg_ids)
return self.write(cr, uid, ids, {'state': 'confirm'}, context=context)
def button_confirm(self, cr, uid, ids, context=None):
"""This Function Confirm Event.
@param ids: List of Event IDs
@param context: A standard dictionary for contextual values
@return: True
""" Confirm Event and send confirmation email to all register peoples
"""
if context is None:
context = {}
res = False
if type(ids) in (int, long,):
if isinstance(ids, (int, long)):
ids = [ids]
data_pool = self.pool.get('ir.model.data')
unconfirmed_ids = []
for event in self.browse(cr, uid, ids, context=context):
total_confirmed = event.register_current
if total_confirmed >= event.register_min or event.register_max == 0:
res = self.do_confirm(cr, uid, [event.id], context=context)
else:
unconfirmed_ids.append(event.id)
if unconfirmed_ids:
view_id = data_pool.get_object_reference(cr, uid, 'event', 'view_event_confirm')
view_id = view_id and view_id[1] or False
context['event_ids'] = unconfirmed_ids
return {
'name': _('Confirm Event'),
'context': context,
'view_type': 'form',
'view_mode': 'tree,form',
'res_model': 'event.confirm',
'views': [(view_id, 'form')],
'type': 'ir.actions.act_window',
'target': 'new',
'context': context,
'nodestroy': True
}
return res
self.check_registration_limits(cr, uid, ids, context=context)
return self.confirm_event(cr, uid, ids, context=context)
def _get_register(self, cr, uid, ids, fields, args, context=None):
"""Get Confirm or uncofirm register value.
@@ -146,77 +132,37 @@ class event_event(osv.osv):
res = {}
for event in self.browse(cr, uid, ids, context=context):
res[event.id] = {}
reg_open = reg_done = reg_draft =0
for registration in event.registration_ids:
if registration.state == 'open':
reg_open += registration.nb_register
elif registration.state == 'done':
reg_done += registration.nb_register
elif registration.state == 'draft':
reg_draft += registration.nb_register
for field in fields:
res[event.id][field] = False
state = []
if 'register_current' in fields:
state += ['open', 'done']
if 'register_prospect' in fields:
state.append('draft')
reg_ids = register_pool.search(cr, uid, [
('event_id', '=', event.id),
('state', 'in', state)], context=context)
number = 0.0
if reg_ids:
cr.execute('SELECT SUM(nb_register) FROM event_registration WHERE id IN %s', (tuple(reg_ids),))
number = cr.fetchone()
if 'register_current' in fields:
res[event.id]['register_current'] = number and number[0] or 0.0
if 'register_prospect' in fields:
res[event.id]['register_prospect'] = number and number[0] or 0.0
return res
def write(self, cr, uid, ids, vals, context=None):
"""
Writes values in one or several fields.
@param ids: List of Event registration type's IDs
@param vals: dictionary with values to update.
@return: True
"""
register_pool = self.pool.get('event.registration')
res = super(event_event, self).write(cr, uid, ids, vals, context=context)
if vals.get('date_begin', False) or vals.get('mail_auto_confirm', False) or vals.get('mail_confirm', False):
for event in self.browse(cr, uid, ids, context=context):
#change the deadlines of the registration linked to this event
register_values = {}
if vals.get('date_begin', False):
register_values['date_deadline'] = vals['date_begin']
#change the description of the registration linked to this event
if vals.get('mail_auto_confirm', False):
if vals['mail_auto_confirm']:
if 'mail_confirm' not in vals:
vals['mail_confirm'] = event.mail_confirm
else:
vals['mail_confirm'] = False
if 'mail_confirm' in vals:
register_values['description'] = vals['mail_confirm']
if register_values:
reg_ids = register_pool.search(cr, uid, [('event_id', '=', event.id)], context=context)
register_pool.write(cr, uid, reg_ids, register_values, context=context)
number = 0
if field == 'register_current':
number = reg_open
elif field == 'register_attended':
number = reg_done
elif field == 'register_prospect':
number = reg_draft
res[event.id][field] = number
return res
_columns = {
'name': fields.char('Summary', size=64, required=True, translate=True, readonly=False, states={'done': [('readonly', True)]}),
'name': fields.char('Name', size=64, required=True, translate=True, readonly=False, states={'done': [('readonly', True)]}),
'user_id': fields.many2one('res.users', 'Responsible User', readonly=False, states={'done': [('readonly', True)]}),
'parent_id': fields.many2one('event.event', 'Parent Event', readonly=False, states={'done': [('readonly', True)]}),
'section_id': fields.many2one('crm.case.section', 'Sale Team', readonly=False, states={'done': [('readonly', True)]}),
'child_ids': fields.one2many('event.event', 'parent_id', 'Child Events', readonly=False, states={'done': [('readonly', True)]}),
'reply_to': fields.char('Reply-To', size=64, readonly=False, states={'done': [('readonly', True)]}, help="The email address put in the 'Reply-To' of all emails sent by OpenERP"),
'type': fields.many2one('event.type', 'Type', help="Type of Event like Seminar, Exhibition, Conference, Training.", readonly=False, states={'done': [('readonly', True)]}),
'register_max': fields.integer('Maximum Registrations', help="Provide Maximum Number of Registrations", readonly=True, states={'draft': [('readonly', False)]}),
'register_min': fields.integer('Minimum Registrations', help="Provide Minimum Number of Registrations", readonly=True, states={'draft': [('readonly', False)]}),
'register_current': fields.function(_get_register, string='Confirmed Registrations', multi='register_current',
help="Total of Open and Done Registrations"),
'register_prospect': fields.function(_get_register, string='Unconfirmed Registrations', multi='register_prospect',
help="Total of Prospect Registrations"),
'type': fields.many2one('event.type', 'Type of Event', readonly=False, states={'done': [('readonly', True)]}),
'register_max': fields.integer('Maximum Registrations', help="You can for each event define a maximum registration level. If you have too much registrations you are not able to confirm your event. (put 0 to ignore this rule )", readonly=True, states={'draft': [('readonly', False)]}),
'register_min': fields.integer('Minimum Registrations', help="You can for each event define a minimum registration level. If you do not enough registrations you are not able to confirm your event. (put 0 to ignore this rule )", readonly=True, states={'draft': [('readonly', False)]}),
'register_current': fields.function(_get_register, string='Confirmed Registrations', multi='register_numbers'),
'register_prospect': fields.function(_get_register, string='Unconfirmed Registrations', multi='register_numbers'),
'register_attended': fields.function(_get_register, string='Attended Registrations', multi='register_numbers'),
'registration_ids': fields.one2many('event.registration', 'event_id', 'Registrations', readonly=False, states={'done': [('readonly', True)]}),
'date_begin': fields.datetime('Beginning date', required=True, help="Beginning Date of Event", readonly=True, states={'draft': [('readonly', False)]}),
'date_end': fields.datetime('Closing date', required=True, help="Closing Date of Event", readonly=True, states={'draft': [('readonly', False)]}),
'date_begin': fields.datetime('Start Date', required=True, readonly=True, states={'draft': [('readonly', False)]}),
'date_end': fields.datetime('End Date', required=True, readonly=True, states={'draft': [('readonly', False)]}),
'state': fields.selection([
('draft', 'Draft'),
('confirm', 'Confirmed'),
@@ -224,21 +170,16 @@ class event_event(osv.osv):
('cancel', 'Cancelled')],
'State', readonly=True, required=True,
help='If event is created, the state is \'Draft\'.If event is confirmed for the particular dates the state is set to \'Confirmed\'. If the event is over, the state is set to \'Done\'.If event is cancelled the state is set to \'Cancelled\'.'),
'mail_auto_registr': fields.boolean('Mail Auto Register', readonly=False, states={'done': [('readonly', True)]}, help='Check this box if you want to use automatic emailing for new registration.'),
'mail_auto_confirm': fields.boolean('Mail Auto Confirm', readonly=False, states={'done': [('readonly', True)]}, help='Check this box if you want to use automatic confirmation emailing or reminder.'),
'mail_registr': fields.text('Registration Email', readonly=False, states={'done': [('readonly', True)]}, help='This email will be sent when someone subscribes to the event.'),
'mail_confirm': fields.text('Confirmation Email', readonly=False, states={'done': [('readonly', True)]}, help="This email will be sent when the event gets confirmed or when someone subscribes to a confirmed event. This is also the email sent to remind someone about the event."),
'product_id': fields.many2one('product.product', 'Product', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="The invoices of this event registration will be created with this Product. Thus it allows you to set the default label and the accounting info you want by default on these invoices."),
'note': fields.text('Notes', help="Description or Summary of Event", readonly=False, states={'done': [('readonly', True)]}),
'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', readonly=True, states={'draft': [('readonly', False)]}, help="Pricelist version for current event."),
'unit_price': fields.related('product_id', 'list_price', type='float', string='Registration Cost', readonly=True, states={'draft':[('readonly',False)]}, help="This will be the default price used as registration cost when invoicing this event. Note that you can specify a specific amount for each registration.", digits_compute=dp.get_precision('Sale Price')),
'email_registration_id' : fields.many2one('email.template','Registration Confirmation Email', help='This field contains the template of the mail that will be automatically sent each time a registration for this event is confirmed.'),
'email_confirmation_id' : fields.many2one('email.template','Event Confirmation Email', help="If you set an email template, each participant will receive this email announcing the confirmation of the event."),
'full_name' : fields.function(_name_get_fnc, type="char", string='Name'),
'reply_to': fields.char('Reply-To Email', size=64, readonly=False, states={'done': [('readonly', True)]}, help="The email address of the organizer is likely to be put here, with the effect to be in the 'Reply-To' of the mails sent automatically at event or registrations confirmation. You can also put the email address of your mail gateway if you use one."),
'main_speaker_id': fields.many2one('res.partner','Main Speaker', readonly=False, states={'done': [('readonly', True)]}, help="Speaker who will be giving speech at the event."),
'speaker_ids': fields.many2many('res.partner', 'event_speaker_rel', 'speaker_id', 'partner_id', 'Other Speakers', readonly=False, states={'done': [('readonly', True)]}),
'address_id': fields.many2one('res.partner.address','Location Address', readonly=False, states={'done': [('readonly', True)]}),
'speaker_confirmed': fields.boolean('Speaker Confirmed', readonly=False, states={'done': [('readonly', True)]}),
'country_id': fields.related('address_id', 'country_id',
type='many2one', relation='res.country', string='Country', readonly=False, states={'done': [('readonly', True)]}),
'language': fields.char('Language',size=64, readonly=False, states={'done': [('readonly', True)]}),
'note': fields.text('Description', readonly=False, states={'done': [('readonly', True)]}),
'company_id': fields.many2one('res.company', 'Company', required=False, change_default=True, readonly=False, states={'done': [('readonly', True)]}),
}
@@ -249,9 +190,6 @@ class event_event(osv.osv):
'user_id': lambda obj, cr, uid, context: uid,
}
def _check_recursion(self, cr, uid, ids, context=None):
return super(event_event, self)._check_recursion(cr, uid, ids, context=context)
def _check_closing_date(self, cr, uid, ids, context=None):
for event in self.browse(cr, uid, ids, context=context):
if event.date_end < event.date_begin:
@@ -259,456 +197,157 @@ class event_event(osv.osv):
return True
_constraints = [
(_check_recursion, 'Error ! You cannot create recursive event.', ['parent_id']),
(_check_closing_date, 'Error ! Closing Date cannot be set before Beginning Date.', ['date_end']),
]
def do_team_change(self, cr, uid, ids, team_id, context=None):
"""
On Change Callback: when team change, this is call.
on this function, take value of reply_to from selected team.
"""
if not team_id:
return {}
team_pool = self.pool.get('crm.case.section')
res = {}
team = team_pool.browse(cr, uid, team_id, context=context)
if team.reply_to:
res = {'value': {'reply_to': team.reply_to}}
return res
def onchange_event_type(self, cr, uid, ids, type_event, context=None):
if type_event:
type_info = self.pool.get('event.type').browse(cr,uid,type_event,context)
dic ={
'reply_to': type_info.default_reply_to,
'email_registration_id': type_info.default_email_registration.id,
'email_confirmation_id': type_info.default_email_event.id,
'register_min': type_info.default_registration_min,
'register_max': type_info.default_registration_max,
}
return {'value': dic}
event_event()
class event_registration(osv.osv):
"""Event Registration"""
_name= 'event.registration'
_description = __doc__
_inherit = 'mail.thread'
def _amount_line(self, cr, uid, ids, field_name, arg, context=None):
cur_obj = self.pool.get('res.currency')
res = {}
for line in self.browse(cr, uid, ids, context=context):
price = line.unit_price * line.nb_register
pricelist = line.event_id.pricelist_id or line.partner_invoice_id.property_product_pricelist
cur = pricelist and pricelist.currency_id or False
res[line.id] = cur and cur_obj.round(cr, uid, cur, price) or price
return res
_inherit = ['mail.thread','res.partner.address']
_columns = {
'id': fields.integer('ID'),
'name': fields.char('Summary', size=124, readonly=True, states={'draft': [('readonly', False)]}),
'email_cc': fields.text('CC', size=252, readonly=False, states={'done': [('readonly', True)]}, help="These email addresses will be added to the CC field of all inbound and outbound emails for this record before being sent. Separate multiple email addresses with a comma"),
'nb_register': fields.integer('Quantity', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="Number of Registrations or Tickets"),
'origin': fields.char('Origin', size=124,readonly=True,help="Name of the sale order which create the registration"),
'nb_register': fields.integer('Number of Participants', required=True, readonly=True, states={'draft': [('readonly', False)]}),
'event_id': fields.many2one('event.event', 'Event', required=True, readonly=True, states={'draft': [('readonly', False)]}),
'partner_id': fields.many2one('res.partner', 'Partner', states={'done': [('readonly', True)]}),
"partner_invoice_id": fields.many2one('res.partner', 'Partner Invoiced', readonly=True, states={'draft': [('readonly', False)]}),
"contact_id": fields.many2one('res.partner.address', 'Partner Contact', readonly=False, states={'done': [('readonly', True)]}), #TODO: filter only the contacts that have a function into the selected partner_id
"unit_price": fields.float('Unit Price', required=True, digits_compute=dp.get_precision('Sale Price'), readonly=True, states={'draft': [('readonly', False)]}),
'price_subtotal': fields.function(_amount_line, string='Subtotal', digits_compute=dp.get_precision('Sale Price'), store=True),
"badge_ids": fields.one2many('event.registration.badge', 'registration_id', 'Badges', readonly=False, states={'done': [('readonly', True)]}),
"event_product": fields.char("Invoice Name", size=128, readonly=True, states={'draft': [('readonly', False)]}),
"tobe_invoiced": fields.boolean("To be Invoiced", readonly=True, states={'draft': [('readonly', False)]}),
"invoice_id": fields.many2one("account.invoice", "Invoice", readonly=True),
'date_closed': fields.datetime('Closed', readonly=True),
'ref': fields.reference('Reference', selection=crm._links_get, size=128),
'ref2': fields.reference('Reference 2', selection=crm._links_get, size=128),
'email_from': fields.char('Email', size=128, states={'done': [('readonly', True)]}, help="These people will receive email."),
'create_date': fields.datetime('Creation Date', readonly=True),
'write_date': fields.datetime('Write Date', readonly=True),
'description': fields.text('Description', states={'done': [('readonly', True)]}),
'message_ids': fields.one2many('mail.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
'partner_address_id': fields.many2one('res.partner.address', 'Partner', states={'done': [('readonly', True)]}),
"contact_id": fields.many2one('res.partner.address', 'Partner Contact', readonly=False, states={'done': [('readonly', True)]}),
'create_date': fields.datetime('Creation Date' , readonly=True),
'date_closed': fields.datetime('Attended Date', readonly=True),
'date_open': fields.datetime('Registration Date', readonly=True),
'reply_to': fields.related('event_id','reply_to',string='Reply-to Email', type='char', size=128, readonly=True,),
'log_ids': fields.one2many('mail.message', 'res_id', 'Logs', domain=[('email_from', '=', False),('model','=',_name)]),
'date_deadline': fields.related('event_id','date_end', type='datetime', string="End Date", readonly=True),
'date': fields.related('event_id', 'date_begin', type='datetime', string="Start Date", readonly=True),
'event_end_date': fields.related('event_id','date_end', type='datetime', string="Event End Date", readonly=True),
'event_begin_date': fields.related('event_id', 'date_begin', type='datetime', string="Event Start Date", readonly=True),
'user_id': fields.many2one('res.users', 'Responsible', states={'done': [('readonly', True)]}),
'active': fields.boolean('Active'),
'section_id': fields.related('event_id', 'section_id', type='many2one', relation='crm.case.section', string='Sale Team', store=True, readonly=True),
'company_id': fields.related('event_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True, states={'draft':[('readonly',False)]}),
'state': fields.selection([('open', 'Confirmed'),
('draft', 'Unconfirmed'),
'state': fields.selection([('draft', 'Unconfirmed'),
('open', 'Confirmed'),
('cancel', 'Cancelled'),
('done', 'Done')], 'State', \
('done', 'Attended')], 'State',
size=16, readonly=True)
}
_defaults = {
'nb_register': 1,
'tobe_invoiced': True,
'state': 'draft',
'active': 1,
'user_id': lambda self, cr, uid, ctx: uid,
}
_order = 'name, create_date desc'
def _make_invoice(self, cr, uid, reg, lines, context=None):
""" Create Invoice from Invoice lines
@param reg: Model of Event Registration
@param lines: Ids of Invoice lines
"""
if context is None:
context = {}
inv_pool = self.pool.get('account.invoice')
val_invoice = inv_pool.onchange_partner_id(cr, uid, [], 'out_invoice', reg.partner_invoice_id.id, False, False)
val_invoice['value'].update({'partner_id': reg.partner_invoice_id.id})
val_invoice['value'].update({
'origin': reg.event_product,
'reference': False,
'invoice_line': [(6, 0, lines)],
'comment': "",
'date_invoice': context.get('date_inv', False)
})
inv_id = inv_pool.create(cr, uid, val_invoice['value'], context=context)
inv_pool.button_compute(cr, uid, [inv_id])
self.message_append(cr, uid, [reg], _('Invoiced'))
return inv_id
def copy(self, cr, uid, id, default=None, context=None):
""" Copy record of Given id
@param id: Id of Registration record.
@param context: A standard dictionary for contextual values
"""
if not default:
default = {}
default.update({
'invoice_id': False,
})
return super(event_registration, self).copy(cr, uid, id, default=default, context=context)
def do_draft(self, cr, uid, ids, context=None):
return self.write(cr, uid, ids, {'state': 'draft'}, context=context)
def action_invoice_create(self, cr, uid, ids, grouped=False, date_inv = False, context=None):
""" Action of Create Invoice """
res = False
invoices = {}
tax_ids=[]
new_invoice_ids = []
inv_lines_pool = self.pool.get('account.invoice.line')
inv_pool = self.pool.get('account.invoice')
product_pool = self.pool.get('product.product')
contact_pool = self.pool.get('res.partner.address')
if context is None:
context = {}
# If date was specified, use it as date invoiced, usefull when invoices are generated this month and put the
# last day of the last month as invoice date
if date_inv:
context['date_inv'] = date_inv
def confirm_registration(self, cr, uid, ids, context=None):
self.message_append(cr, uid, ids,_('State set to open'),body_text= _('Open'))
return self.write(cr, uid, ids, {'state': 'open'}, context=context)
for reg in self.browse(cr, uid, ids, context=context):
val_invoice = inv_pool.onchange_partner_id(cr, uid, [], 'out_invoice', reg.partner_invoice_id.id, False, False)
val_invoice['value'].update({'partner_id': reg.partner_invoice_id.id})
partner_address_id = val_invoice['value']['address_invoice_id']
if not partner_address_id:
raise osv.except_osv(_('Error !'),
_("Registered partner doesn't have an address to make the invoice."))
value = inv_lines_pool.product_id_change(cr, uid, [], reg.event_id.product_id.id, uom =False, partner_id=reg.partner_invoice_id.id, fposition_id=reg.partner_invoice_id.property_account_position.id)
product = product_pool.browse(cr, uid, reg.event_id.product_id.id, context=context)
for tax in product.taxes_id:
tax_ids.append(tax.id)
vals = value['value']
c_name = reg.contact_id and ('-' + contact_pool.name_get(cr, uid, [reg.contact_id.id])[0][1]) or ''
vals.update({
'name': reg.event_product + '-' + c_name,
'price_unit': reg.unit_price,
'quantity': reg.nb_register,
'product_id':reg.event_id.product_id.id,
'invoice_line_tax_id': [(6, 0, tax_ids)],
})
inv_line_ids = self._create_invoice_lines(cr, uid, [reg.id], vals)
invoices.setdefault(reg.partner_id.id, []).append((reg, inv_line_ids))
for val in invoices.values():
res = False
if grouped:
res = self._make_invoice(cr, uid, val[0][0], [v for k, v in val], context=context)
for k, v in val:
self.do_close(cr, uid, [k.id], context={'invoice_id': res})
else:
for k, v in val:
res = self._make_invoice(cr, uid, k, [v], context=context)
self.do_close(cr, uid, [k.id], context={'invoice_id': res})
if res: new_invoice_ids.append(res)
return new_invoice_ids
def do_open(self, cr, uid, ids, context=None):
def registration_open(self, cr, uid, ids, context=None):
""" Open Registration
"""
res = self.write(cr, uid, ids, {'state': 'open'}, context=context)
self.mail_user(cr, uid, ids)
self.message_append(cr, uid, ids, _('Open'))
res = self.confirm_registration(cr, uid, ids, context=context)
self.mail_user(cr, uid, ids, context=context)
return res
def do_close(self, cr, uid, ids, context=None):
def button_reg_close(self, cr, uid, ids, context=None):
""" Close Registration
"""
if context is None:
context = {}
invoice_id = context.get('invoice_id', False)
values = {'state': 'done', 'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')}
msg = _('Done')
if invoice_id:
values['invoice_id'] = invoice_id
res = self.write(cr, uid, ids, values)
self.message_append(cr, uid, ids, msg)
return res
# event uses add_note wizard from crm, which expects case_* methods
def case_open(self, cr, uid, ids, context=None):
self.do_open(cr, uid, ids, context)
# event uses add_note wizard from crm, which expects case_* methods
def case_close(self, cr, uid, ids, context=None):
self.do_close(cr, uid, ids, context)
# event uses add_note wizard from crm, which expects case_* methods
def case_cancel(self, cr, uid, ids, context=None):
""" Cancel Registration
"""
self.message_append(cr, uid, ids, _('Cancel'))
return self.write(cr, uid, ids, {'state': 'cancel'})
# event uses add_note wizard from crm, which expects case_* methods
def case_reset(self, cr, uid, ids, context=None):
pass
# event uses add_note wizard from crm, which expects case_* methods
def case_pending(self, cr, uid, ids, context=None):
pass
def check_confirm(self, cr, uid, ids, context=None):
"""This Function Open Event Registration and send email to user.
@param ids: List of Event registration's IDs
@param context: A standard dictionary for contextual values
@return: True
"""
if type(ids) in (int, long,):
ids = [ids]
data_pool = self.pool.get('ir.model.data')
unconfirmed_ids = []
if context is None:
context = {}
today = fields.datetime.now()
for registration in self.browse(cr, uid, ids, context=context):
total_confirmed = registration.event_id.register_current + registration.nb_register
if total_confirmed <= registration.event_id.register_max or registration.event_id.register_max == 0:
self.do_open(cr, uid, [registration.id], context=context)
if today >= registration.event_id.date_begin:
values = {'state': 'done', 'date_closed': today}
self.write(cr, uid, ids, values)
self.message_append(cr, uid, ids, _('State set to Done'), body_text=_('Done'))
else:
unconfirmed_ids.append(registration.id)
if unconfirmed_ids:
view_id = data_pool.get_object_reference(cr, uid, 'event', 'view_event_confirm_registration')
view_id = view_id and view_id[1] or False
context['registration_ids'] = unconfirmed_ids
return {
'name': _('Confirm Registration'),
'context': context,
'view_type': 'form',
'view_mode': 'tree,form',
'res_model': 'event.confirm.registration',
'views': [(view_id, 'form')],
'type': 'ir.actions.act_window',
'target': 'new',
'context': context,
'nodestroy': True
}
return True
def button_reg_close(self, cr, uid, ids, context=None):
"""This Function Close Event Registration.
"""
data_pool = self.pool.get('ir.model.data')
unclosed_ids = []
for registration in self.browse(cr, uid, ids, context=context):
if registration.tobe_invoiced and not registration.invoice_id:
unclosed_ids.append(registration.id)
else:
self.do_close(cr, uid, [registration.id], context=context)
if unclosed_ids:
view_id = data_pool.get_object_reference(cr, uid, 'event', 'view_event_make_invoice')
view_id = view_id and view_id[1] or False
context['active_ids'] = unclosed_ids
return {
'name': _('Close Registration'),
'context': context,
'view_type': 'form',
'view_mode': 'tree,form',
'res_model': 'event.make.invoice',
'views': [(view_id, 'form')],
'type': 'ir.actions.act_window',
'target': 'new',
'context': context,
'nodestroy': True
}
raise osv.except_osv(_('Error!'),_("You must wait the event starting day to do this action.") )
return True
def button_reg_cancel(self, cr, uid, ids, context=None, *args):
return self.case_cancel(cr, uid, ids)
self.message_append(cr, uid, ids,_('State set to Cancel'),body_text= _('Cancel'))
return self.write(cr, uid, ids, {'state': 'cancel'})
def mail_user(self, cr, uid, ids, confirm=False, context=None):
def mail_user(self, cr, uid, ids, context=None):
"""
Send email to user
Send email to user with email_template when registration is done
"""
mail_message = self.pool.get('mail.message')
for registration in self.browse(cr, uid, ids, context=context):
src = registration.event_id.reply_to or False
email_to = []
email_cc = []
if registration.email_from:
email_to = [registration.email_from]
if registration.email_cc:
email_cc += [registration.email_cc]
if not (email_to or email_cc):
continue
subject = ""
body = ""
if confirm:
subject = _('Auto Confirmation: [%s] %s') %(registration.id, registration.name)
body = registration.event_id.mail_confirm
elif registration.event_id.mail_auto_confirm or registration.event_id.mail_auto_registr:
if registration.event_id.state in ['draft', 'fixed', 'open', 'confirm', 'running'] and registration.event_id.mail_auto_registr:
subject = _('Auto Registration: [%s] %s') %(registration.id, registration.name)
body = registration.event_id.mail_registr
if (registration.event_id.state in ['confirm', 'running']) and registration.event_id.mail_auto_confirm:
subject = _('Auto Confirmation: [%s] %s') %(registration.id, registration.name)
body = registration.event_id.mail_confirm
if subject or body:
mail_message.schedule_with_attach(cr, uid, src, email_to, subject, body, model='event.registration', email_cc=email_cc, res_id=registration.id)
if registration.event_id.state == 'confirm' and registration.event_id.email_confirmation_id.id:
self.mail_user_confirm(cr, uid, ids, context=context)
else:
template_id = registration.event_id.email_registration_id.id
if template_id:
mail_message = self.pool.get('email.template').send_mail(cr,uid,template_id,registration.id)
return True
def mail_user_confirm(self, cr, uid, ids, context=None):
"""
Send email to user
Send email to user when the event is confirmed
"""
return self.mail_user(cr, uid, ids, confirm=True, context=context)
for registration in self.browse(cr, uid, ids, context=context):
template_id = registration.event_id.email_confirmation_id.id
if template_id:
mail_message = self.pool.get('email.template').send_mail(cr,uid,template_id,registration.id)
return True
def _create_invoice_lines(self, cr, uid, ids, vals):
""" Create account Invoice line for Registration Id.
"""
return self.pool.get('account.invoice.line').create(cr, uid, vals)
def onchange_contact_id(self, cr, uid, ids, contact, partner):
"""This function returns value of Badge Name, Badge Title based on Partner contact.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of Registration IDs
@param contact: Patner Contact IDS
@param partner: Partner IDS
"""
def onchange_contact_id(self, cr, uid, ids, contact, partner, context=None):
data ={}
if not contact:
return data
addr_obj = self.pool.get('res.partner.address')
data['email_from'] = addr_obj.browse(cr, uid, contact).email
contact_id = addr_obj.browse(cr, uid, contact, context=context)
data = {
'email':contact_id.email,
'contact_id':contact_id.id,
'name':contact_id.name,
'phone':contact_id.phone,
}
return {'value': data}
def onchange_event(self, cr, uid, ids, event_id, partner_invoice_id):
def onchange_event(self, cr, uid, ids, event_id, context=None):
"""This function returns value of Product Name, Unit Price based on Event.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of Registration IDs
@param event_id: Event ID
@param partner_invoice_id: Partner Invoice ID
"""
context = {}
if context is None:
context = {}
if not event_id:
return {'value': {'unit_price': False, 'event_product': False}}
return {}
event_obj = self.pool.get('event.event')
prod_obj = self.pool.get('product.product')
data_event = event_obj.browse(cr, uid, event_id, context=context)
return {'value':
{'event_begin_date': data_event.date_begin,
'event_end_date': data_event.date_end,
'company_id': data_event.company_id and data_event.company_id.id or False,
}
}
def onchange_partner_id(self, cr, uid, ids, part, context=None):
res_obj = self.pool.get('res.partner')
data_event = event_obj.browse(cr, uid, event_id)
res = {'value': {'unit_price': False,
'event_product': False,
'user_id': False,
'date': data_event.date_begin,
'date_deadline': data_event.date_end,
'description': data_event.note,
'name': data_event.name,
'section_id': data_event.section_id and data_event.section_id.id or False,
}}
if data_event.user_id.id:
res['value'].update({'user_id': data_event.user_id.id})
if data_event.product_id:
pricelist_id = data_event.pricelist_id and data_event.pricelist_id.id or False
if partner_invoice_id:
partner = res_obj.browse(cr, uid, partner_invoice_id, context=context)
pricelist_id = pricelist_id or partner.property_product_pricelist.id
unit_price = prod_obj._product_price(cr, uid, [data_event.product_id.id], False, False, {'pricelist': pricelist_id})[data_event.product_id.id]
if not unit_price:
unit_price = data_event.unit_price
res['value'].update({'unit_price': unit_price, 'event_product': data_event.product_id.name})
return res
def onchange_partner_id(self, cr, uid, ids, part, event_id, email=False):
"""This function returns value of Patner Invoice id, Unit Price, badget title based on partner and Event.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of Registration IDs
@param event_id: Event ID
@param partner_invoice_id: Partner Invoice ID
"""
res_obj = self.pool.get('res.partner')
data = {}
data['contact_id'], data['partner_invoice_id'], data['email_from'] = (False, False, False)
if not part:
return {'value': data}
data['partner_invoice_id'] = part
# this calls onchange_partner_invoice_id
d = self.onchange_partner_invoice_id(cr, uid, ids, event_id, part)
# this updates the dictionary
data.update(d['value'])
addr = res_obj.address_get(cr, uid, [part]).get('default', False)
if addr:
d = self.onchange_contact_id(cr, uid, ids, addr, part)
d = self.onchange_contact_id(cr, uid, ids, addr, part, context)
data.update(d['value'])
return {'value': data}
def onchange_partner_invoice_id(self, cr, uid, ids, event_id, partner_invoice_id):
"""This function returns value of Product unit Price based on Invoiced partner.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of Registration IDs
@param event_id: Event ID
@param partner_invoice_id: Partner Invoice ID
"""
data = {}
context = {}
event_obj = self.pool.get('event.event')
prod_obj = self.pool.get('product.product')
res_obj = self.pool.get('res.partner')
data['unit_price']=False
if not event_id:
return {'value': data}
data_event = event_obj.browse(cr, uid, event_id, context=context)
if data_event.product_id:
data['event_product'] = data_event.product_id.name
pricelist_id = data_event.pricelist_id and data_event.pricelist_id.id or False
if partner_invoice_id:
partner = res_obj.browse(cr, uid, partner_invoice_id, context=context)
pricelist_id = pricelist_id or partner.property_product_pricelist.id
unit_price = prod_obj._product_price(cr, uid, [data_event.product_id.id], False, False, {'pricelist': pricelist_id})[data_event.product_id.id]
if not unit_price:
unit_price = data_event.unit_price
data['unit_price'] = unit_price
return {'value': data}
event_registration()
class event_registration_badge(osv.osv):
_name = 'event.registration.badge'
_description = __doc__
_columns = {
"registration_id": fields.many2one('event.registration', 'Registration', required=True),
"title": fields.char('Title', size=128),
"name": fields.char('Name', size=128, required=True),
"address_id": fields.many2one('res.partner.address', 'Address'),
}
event_registration_badge()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+51 -108
View File
@@ -1,143 +1,86 @@
<?xml version="1.0"?>
<openerp>
<data>
<data>
<record id="base.user_demo" model="res.users">
<field name="groups_id" eval="[(4, ref('marketing.group_marketing_user')),(4, ref('base.group_sale_salesman'))]"/>
<field name="groups_id" eval="[(4, ref('event.group_event_user'))]"/>
</record>
<!-- Demo Data for Product -->
<record id="event_product_0" model="product.product">
<field name="list_price">68.00</field>
<field name="standard_price">15.00</field>
<field name="uom_id" ref="product.product_uom_unit"/>
<field name="uom_po_id" ref="product.product_uom_unit"/>
<field name="name">Ticket for Concert</field>
<field name="categ_id" model="product.category" search="[]"/>
</record>
<record id="event_product_1" model="product.product">
<field name="list_price">24.00</field>
<field name="standard_price">15.00</field>
<field name="uom_id" ref="product.product_uom_unit"/>
<field name="uom_po_id" ref="product.product_uom_unit"/>
<field name="name">Ticket for Opera</field>
<field name="categ_id" model="product.category" search="[]"/>
</record>
<record id="event_product_2" model="product.product">
<field name="list_price">15.50</field>
<field name="standard_price">5.00</field>
<field name="uom_id" ref="product.product_uom_unit"/>
<field name="uom_po_id" ref="product.product_uom_unit"/>
<field name="name">Ticket for Conference</field>
<field name="categ_id" model="product.category" search="[]"/>
</record>
<!-- Demo Data for Event Type -->
<record id="event_type_0" model="event.type">
<field name="name">Seminar</field>
</record>
<record id="event_type_0" model="event.type">
<field name="name">Seminar</field>
</record>
<record id="event_type_1" model="event.type">
<field name="name">Exhibition</field>
</record>
<record id="event_type_1" model="event.type">
<field name="name">Exhibition</field>
</record>
<record id="event_type_2" model="event.type">
<field name="name">Conference</field>
</record>
<record id="event_type_2" model="event.type">
<field name="name">Conference</field>
</record>
<record id="event_type_3" model="event.type">
<field name="name">Saloon</field>
</record>
<record id="event_type_3" model="event.type">
<field name="name">Show</field>
</record>
<record id="event_type_4" model="event.type">
<field name="name">Training</field>
</record>
<record id="event_type_4" model="event.type">
<field name="name">Training</field>
</record>
<!-- Demo data for Event -->
<record id="event_0" model="event.event">
<field name="name">Concert of Bon Jovi</field>
<record id="event_0" model="event.event">
<field name="name">Concert of Bon Jovi</field>
<field eval="time.strftime('%Y-%m-01 19:05:15')" name="date_begin"/>
<field eval="time.strftime('%Y-%m-01 23:05:15')" name="date_end"/>
<field name="product_id" ref="event_product_0"/>
<field name="unit_price">68.00</field>
<field name="mail_auto_registr">True</field>
<field name="mail_auto_confirm">True</field>
<field name="user_id" ref="base.user_root"/>
<field name="register_max">500</field>
<field name="type" ref="event_type_1"/>
</record>
<field name="user_id" ref="base.user_root"/>
<field name="register_max">500</field>
<field name="type" ref="event_type_1"/>
</record>
<record id="event_1" model="event.event">
<field name="name">Opera of Verdi</field>
<record id="event_1" model="event.event">
<field name="name">Opera of Verdi</field>
<field eval="time.strftime('%Y-%m-05 18:00:00')" name="date_begin"/>
<field eval="time.strftime('%Y-%m-05 21:00:00')" name="date_end"/>
<field name="product_id" ref="event_product_1"/>
<field name="unit_price">24.00</field>
<field name="type" ref="event_type_1"/>
<field name="user_id" ref="base.user_root"/>
<field name="register_min">50</field>
<field name="register_max">350</field>
</record>
<record id="event_2" model="event.event">
<field name="name">Conference on ERP Buisness</field>
<field name="type" ref="event_type_1"/>
<field name="user_id" ref="base.user_root"/>
<field name="register_min">50</field>
<field name="register_max">350</field>
</record>
<record id="event_2" model="event.event">
<field name="name">Conference on ERP Buisness</field>
<field eval="time.strftime('%Y-%m-05 14:00:00')" name="date_begin"/>
<field eval="time.strftime('%Y-%m-05 16:30:00')" name="date_end"/>
<field name="product_id" ref="event_product_2"/>
<field name="unit_price">15.50</field>
<field name="type" ref="event_type_2"/>
<field name="register_max">200</field>
<field name="user_id" ref="base.user_root"/>
<field name="mail_auto_registr">True</field>
<field name="mail_auto_confirm">True</field>
<field name="mail_registr">Thanks for registration. We will keep you informed of the modalities.</field>
<field name="mail_confirm">Thanks for registration. The conference will begin at 2 PM and will be given by Mr. Pinckaers.</field>
</record>
<field name="type" ref="event_type_2"/>
<field name="register_max">200</field>
<field name="user_id" ref="base.user_root"/>
</record>
<function model="event.event" name="button_confirm" eval="[ref('event_2')]"/>
<function model="event.event" name="button_confirm" eval="[ref('event_2')]"/>
<!-- Demo data for Event Registration-->
<record id="reg_1_1" model="event.registration">
<field name="event_id" ref="event_1"/>
<field name="partner_id" ref="base.res_partner_asus"/>
<field name="partner_invoice_id" ref="base.res_partner_asus"/>
<field name="nb_register">5</field>
<field name="event_product">Ticket for Opera</field>
<field name="unit_price">24.00</field>
</record>
<record id="reg_1_1" model="event.registration">
<field name="event_id" ref="event_1"/>
<field name="nb_register">5</field>
</record>
<record id="reg_1_2" model="event.registration">
<field name="event_id" ref="event_1"/>
<field name="partner_id" ref="base.res_partner_agrolait"/>
<field name="partner_invoice_id" ref="base.res_partner_agrolait"/>
<field name="nb_register">10</field>
<field name="event_product">Ticket for Opera</field>
<field name="unit_price">24.00</field>
</record>
<record id="reg_1_2" model="event.registration">
<field name="event_id" ref="event_1"/>
<field name="nb_register">10</field>
</record>
<function model="event.registration" name="check_confirm" eval="[ref('reg_1_2')]"/>
<record id="reg_0_1" model="event.registration">
<field name="event_id" ref="event_0"/>
<field name="partner_id" ref="base.res_partner_c2c"/>
<field name="partner_invoice_id" ref="base.res_partner_c2c"/>
<field name="nb_register">6</field>
<field name="event_product">Ticket for Concert</field>
<field name="unit_price">15.50</field>
</record>
<record id="reg_0_1" model="event.registration">
<field name="event_id" ref="event_0"/>
<field name="nb_register">6</field>
</record>
<function model="event.registration" name="check_confirm" eval="[ref('reg_0_1')]"/>
<record id="reg_0_2" model="event.registration">
<field name="event_id" ref="event_2"/>
<field name="partner_id" ref="base.res_partner_c2c"/>
<field name="partner_invoice_id" ref="base.res_partner_c2c"/>
<field name="nb_register">5</field>
<field name="event_product">Ticket for Conference</field>
<field name="unit_price">20</field>
</record>
<function model="event.registration" name="check_confirm" eval="[ref('reg_0_2')]"/>
</data>
</data>
</openerp>
+127 -205
View File
@@ -2,11 +2,8 @@
<openerp>
<data>
<menuitem name="Association" id="base.menu_association" icon="terp-calendar" sequence="9"/>
<menuitem name="Marketing" icon="terp-crm" id="base.marketing_menu" sequence="17"/>
<menuitem name="Events Organisation" id="base.menu_event_main" parent="base.marketing_menu" />
<menuitem name="Events" id="base.menu_event_association" parent="base.menu_association" />
<menuitem name="Events" id="event_main_menu"/>
<menuitem name="Events Organisation" id="base.menu_event_main" parent="event_main_menu" />
<!-- EVENTS -->
@@ -18,6 +15,11 @@
<field name="arch" type="xml">
<form string="Event Type">
<field name="name" select="1"/>
<field name="default_reply_to"/>
<field name="default_email_event" domain="[('model_id.model','=','event.registration')]"/>
<field name="default_email_registration" domain="[('model_id.model','=','event.registration')]"/>
<field name="default_registration_min"/>
<field name="default_registration_max"/>
</form>
</field>
</record>
@@ -38,11 +40,8 @@
<field name="res_model">event.type</field>
<field name="view_type">form</field>
</record>
<menuitem name="Configuration" id="base.menu_marketing_config_root" parent="base.marketing_menu" sequence="30" groups="base.group_extended"/>
<menuitem name="Configuration" id="base.menu_marketing_config_association" parent="base.menu_association" sequence="30" groups="base.group_extended"/>
<menuitem name="Types of Events" id="menu_event_type" action="action_event_type" parent="base.menu_marketing_config_root" groups="base.group_extended"/>
<menuitem name="Events Type" id="menu_event_type_association" action="action_event_type" parent="base.menu_marketing_config_association" groups="base.group_extended"/>
<menuitem name="Configuration" id="base.menu_marketing_config_root" parent="event_main_menu" sequence="30"/>
<menuitem name="Types of Events" id="menu_event_type" action="action_event_type" parent="base.menu_marketing_config_root"/>
<!-- Events Organisation/CONFIGURATION/EVENTS -->
@@ -56,106 +55,75 @@
<field name="name"/>
<field name="date_begin"/>
<field name="date_end"/>
<field name="type" widget="selection"/>
<field name="language"/>
<field name="parent_id"/>
<field name="type" on_change="onchange_event_type(type,context)"/>
<field name="user_id"/>
<field name="address_id" />
</group>
<notebook colspan="4">
<page string="Event">
<group colspan="4" col="4">
<separator string="Invoice Information" colspan="4"/>
<field name="product_id" on_change="onchange_product(product_id)" colspan="4"/>
<field name="unit_price"/>
<field name="pricelist_id" widget="selection" domain="[('type','=','sale')]" groups="base.group_extended"/>
</group>
<group colspan="2" col="2">
<separator string="Contact" colspan="4"/>
<field name="user_id"/>
<field name="section_id" widget="selection" on_change="do_team_change(section_id)"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
</group>
<group colspan="2" col="2">
<separator string="Location" colspan="4"/>
<field name="country_id" />
<field name="address_id" domain="[('country_id','=',country_id)]"/>
</group>
<separator string="Description" colspan="4"/>
<field name="note" colspan="4" nolabel="1"/>
<field name="state" select="1"/>
<field name="registration_ids" colspan="4" nolabel="1">
<tree string="Registration" editable="top">
<field name="name" />
<field name="email" />
<field name="phone"/>
<field name="nb_register" />
<field name="state"/>
<button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
<button name="button_reg_close" string="Attented the Event" states="open" type="object" icon="gtk-jump-to"/>
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
</tree>
<form string="Registration">
<field name="partner_id" attrs="{'readonly':[('state','!=', 'draft')]}" on_change="onchange_partner_id(partner_id, context)" />
<field name="name"/>
<group colspan="4" col="4">
<field name="email"/>
<field name="phone"/>
</group>
<group colspan="4" col="4">
<field name="nb_register"/>
</group>
<group colspan="4" col="4">
</group>
<group col="8" colspan="4">
<separator string="" colspan="4"/>
<newline/>
<field name="state" select="1" colspan="2"/>
<button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
<button name="button_reg_close" string="Attended the Event" states="open" type="object" icon="gtk-jump-to"/>
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
</group>
</form>
</field>
<field name="state" select="1" widget="statusbar" statusbar_visible="draft,confirm,done"/>
<group col="4" colspan="2">
<button string="Cancel Event" name="button_cancel" states="draft,confirm" type="object" icon="gtk-cancel"/>
<button string="Confirm Event" name="button_confirm" states="draft" type="object" icon="gtk-apply"/>
<button string="Event Done" name="button_done" states="confirm" type="object" icon="gtk-jump-to"/>
<button string="Set To Draft" name="button_draft" states="cancel" type="object" icon="gtk-convert"/>
<button string="Set To Draft" name="button_draft" states="cancel,done" type="object" icon="gtk-convert"/>
</group>
</page>
<page string="Speakers">
<page string="Speakers" groups="base.group_extended">
<field name="main_speaker_id" domain="[('speaker','=',True)]"/>
<field name="speaker_confirmed"/>
<separator string="Other Speakers" colspan="4"/>
<field name="speaker_ids" domain="[('speaker','=',True)]" colspan="4" nolabel="1"/>
</page>
<page string="Registrations">
<field name="register_min"/>
<field name="register_max"/>
<field name="register_current"/>
<field name="register_prospect"/>
<field name="registration_ids" colspan="4" nolabel="1" readonly="1">
<form string="Registration">
<field name="name"/>
<field name="date" string="Date"/>
<field name="partner_id" required="1" on_change="onchange_partner_id(partner_id,event_id)"/>
<field name="partner_invoice_id" on_change="onchange_partner_invoice_id(event_id, partner_invoice_id)"/>
<group colspan="4" col="4">
<field name="event_product"/>
<field name="nb_register"/>
<field name="unit_price"/>
<field name="price_subtotal"/>
</group>
<group col="8" colspan="4">
<separator string="" colspan="4"/>
<newline/>
<field name="state" select="1" colspan="2"/>
<button name="button_reg_close" string="Close Registration" states="open" type="object" icon="gtk-close"/>
<button name="check_confirm" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
</group>
</form>
<tree string="Registration">
<field name="create_date" string="Registration Date"/>
<field name="partner_id" required="1" string="Partner" on_change="onchange_partner_id(partner_id,event_id)"/>
<field name="event_product"/>
<field name="nb_register"/>
<field name="unit_price"/>
<field name="price_subtotal"/>
<field name="state"/>
<button name="button_reg_close" string="Close Registration" states="open" type="object" icon="gtk-close"/>
<button name="check_confirm" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
</tree>
</field>
</page>
<page string="Mailing">
<field name="reply_to" />
<newline/>
<group col="4" colspan="4">
<group col="2" colspan="2">
<separator string="Auto Registration Email" colspan="4"/>
<field name="mail_auto_registr" colspan="4"/>
<group colspan="4" attrs="{'readonly':[('mail_auto_registr','=',False)]}">
<separator string="Registration Email Body" colspan="4"/>
<field name="mail_registr" colspan="4" nolabel="1" />
</group>
</group>
<group col="2" colspan="2">
<separator string="Auto Confirmation Email" colspan="4"/>
<field name="mail_auto_confirm" colspan="4"/>
<group colspan="4" attrs="{'readonly':[('mail_auto_confirm','=',False)]}">
<separator string="Confirmation Email Body" colspan="4"/>
<field name="mail_confirm" nolabel="1" colspan="4"/>
</group>
</group>
<page string="Extra Info">
<group col="2" colspan="2">
<separator string="Registrations" colspan="2"/>
<field name="register_min"/>
<field name="register_max"/>
<field name="register_prospect"/>
<field name="register_current"/>
<field name="register_attended"/>
</group>
<group col="2" colspan="2">
<separator string="Emails" colspan="2"/>
<field name="reply_to"/>
<field name="email_registration_id" domain="[('model_id.model','=','event.registration')]" groups="base.group_extended"/>
<field name="email_confirmation_id" domain="[('model_id.model','=','event.registration')]" groups="base.group_extended"/>
</group>
</page>
</notebook>
@@ -170,22 +138,21 @@
<field name="model">event.event</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Events" colors="red:register_min>register_current;black:register_min&lt;=register_current">
<tree string="Events" colors="red:(register_min and register_min&gt;register_current) or (register_max and register_max&lt;register_current);grey:state=='cancel'">
<field name="name" string="Name"/>
<field name="main_speaker_id"/>
<field name="language"/>
<field name="type"/>
<field name="date_begin"/>
<field name="date_end"/>
<field name="register_min"/>
<field name="register_current"/>
<field name="section_id" invisible="context.get('invisible_section', True)"/>
<field name="register_min"/>
<field name="register_max" invisible="1"/>
<field name="main_speaker_id" groups="base.extended"/>
<field name="user_id"/>
<field name="state"/>
<button string="Confirm Event" help="Confirm Event" name="button_confirm" states="draft" type="object" icon="gtk-apply"/>
<button string="Cancel Event" help="Cancel Event" name="button_cancel" states="draft,confirm" type="object" icon="gtk-cancel"/>
<button string="Event Done" help="Event Done" name="button_done" states="confirm" type="object" icon="gtk-jump-to"/>
<button string="Set To Draft" help="Set To Draft" name="button_draft" states="confirm,cancel,done" type="object" icon="gtk-convert"/>
<button string="Cancel Event" help="Cancel Event" name="button_cancel" states="draft,confirm" type="object" icon="gtk-cancel"/>
<button string="Set To Draft" help="Set To Draft" name="button_draft" states="cancel,done" type="object" icon="gtk-convert"/>
</tree>
</field>
</record>
@@ -198,9 +165,9 @@
<field name="type">calendar</field>
<field eval="2" name="priority"/>
<field name="arch" type="xml">
<calendar color="user_id" date_start="date_begin" string="Event Organization">
<calendar color="type" date_start="date_begin" date_stop="date_end" string="Event Organization">
<field name="name"/>
<field name="type" widget="selection"/>
<field name="type"/>
</calendar>
</field>
</record>
@@ -229,24 +196,17 @@
<field name="arch" type="xml">
<search string="Events">
<group>
<filter icon="terp-check" string="New" name="draft" domain="[('state','=','draft')]" help="Events in New state"/>
<filter icon="terp-check" string="Unconfirmed" name="draft" domain="[('state','=','draft')]" help="Events in New state"/>
<filter icon="terp-camera_test" string="Confirmed" domain="[('state','=','confirm')]" help="Confirmed events"/>
<separator orientation="vertical"/>
<field name="name"/>
<field name="type" widget="selection"/>
<field name="user_id" widget="selection">
<filter icon="terp-personal"
string="My Events"
help="My Events"
domain="[('user_id','=',uid)]"/>
</field>
<field name="date_begin"/>
<field name="section_id" widget="selection" groups="base.group_extended">
<filter icon="terp-personal+"
context="{'invisible_section': False}"
domain="[('section_id.user_id','=',uid)]"
groups="base.group_extended"
help="My Sales Team(s)"/>
</field>
</group>
<newline/>
<group expand="0" string="Group By...">
@@ -255,22 +215,21 @@
<filter string="Event Type" icon="terp-crm" context="{'group_by':'type'}"/>
<filter string="State" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/>
<separator orientation="vertical"/>
<filter string="Beginning Date" icon="terp-go-month"
<filter string="Starting Date" icon="terp-go-month"
domain="[]" context="{'group_by':'date_begin'}"/>
</group>
</search>
</field>
</record>
<!-- Events Organisation/CONFIGURATION/EVENTS -->
<!-- Events Organisation/CONFIGURATION/EVENTS -->
<record model="ir.actions.act_window" id="action_event_view">
<field name="name">Events</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">event.event</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar,graph</field>
<field name="context">{"search_default_draft": "1", "search_default_section_id": section_id}</field>
<field name="view_mode">calendar,tree,form,graph</field>
<field name="search_view_id" ref="view_event_search"/>
<field name="help">Event is the low level object used by meeting and others documents that should be synchronized with mobile devices or calendar applications through caldav. Most of the users should work in the Calendar menu, and not in the list of events.</field>
</record>
@@ -280,7 +239,7 @@
name="Registration"
res_model="event.registration"
src_model="event.event"
view_mode="tree,form,calendar,graph"
view_mode="calendar,tree,form,graph"
context="{'search_default_event_id': [active_id], 'default_event_id': active_id}"
view_type="form"/>
@@ -294,26 +253,26 @@
view_type="form"/>
<menuitem name="Events" id="menu_event_event" action="action_event_view" parent="base.menu_event_main" />
<menuitem name="Events" id="menu_event_event_assiciation" action="action_event_view" parent="base.menu_event_association" />
<!-- EVENTS/REGISTRATIONS/EVENTS -->
<!-- EVENTS/REGISTRATIONS/EVENTS -->
<record model="ir.ui.view" id="view_event_registration_tree">
<field name="name">event.registration.tree</field>
<field name="model">event.registration</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Registration">
<field name="partner_id"/>
<field name="event_id"/>
<tree string="Registration" >
<field name="create_date"/>
<field name="name"/>
<field name="email"/>
<field name="event_id" />
<field name="nb_register"/>
<field name="price_subtotal" sum="Total"/>
<field name="user_id"/>
<field name="user_id" groups="base.group_extended"/>
<field name="origin" groups="base.group_extended"/>
<field name="state"/>
<button name="button_reg_close" string="Close Registration" states="open" type="object" icon="gtk-close"/>
<button name="check_confirm" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
<button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
<button name="button_reg_close" string="Attended" states="open" type="object" icon="gtk-apply"/>
<button string="Set To Unconfirmed" name="do_draft" states="cancel,done" type="object" icon="gtk-convert"/>
</tree>
</field>
</record>
@@ -325,104 +284,70 @@
<field name="arch" type="xml">
<form string="Registration">
<group col="6" colspan="4">
<field name="event_id" on_change="onchange_event(event_id, partner_invoice_id)" domain="[('state','in',('draft','confirm'))]"/>
<field name="create_date" string="Registration Date"/>
<field name="name"/>
<field name="partner_id" attrs="{'readonly':[('state','!=', 'draft')]}" required="1" on_change="onchange_partner_id(partner_id,event_id)" />
<field name="user_id" attrs="{'readonly':[('state','!=', 'draft')]}" />
<field name="tobe_invoiced"/>
<field name="event_id" on_change="onchange_event(event_id, context)" domain="[('state','in',('draft','confirm'))]"/>
<field name="partner_id" attrs="{'readonly':[('state','!=', 'draft')]}" on_change="onchange_partner_id(partner_id, context)"/>
<field name="contact_id" attrs="{'readonly':[('state','!=', 'draft')]}" domain="[('partner_id','=',partner_id)]" on_change="onchange_contact_id(contact_id, context)"/>
<field name="nb_register"/>
<field name="user_id" attrs="{'readonly':[('state','!=', 'draft')]}"/>
<field name="origin"/>
</group>
<notebook colspan="4">
<page string="Registration">
<field name="date" />
<field name="date_deadline" />
<page string="Additional Information">
<group colspan="2" col="2">
<separator string="Registration Cost" colspan="4"/>
<field name="nb_register"/>
<field name="unit_price"/>
<field name="price_subtotal"/>
<separator string="Contact Information" colspan="2"/>
<field name="name"/>
<field name="email"/>
<field name="phone"/>
</group>
<group colspan="2" col="2" attrs="{'invisible':[('tobe_invoiced','=',False)]}">
<separator string="Invoice" colspan="4"/>
<field name="event_product" attrs="{'required':[('tobe_invoiced','=',True)]}"/>
<field name="partner_invoice_id" attrs="{'required':[('tobe_invoiced','=',True)]}" on_change="onchange_partner_invoice_id(event_id, partner_invoice_id)"/>
<field name="invoice_id"/>
</group>
<separator string="Description" colspan="4"/>
<field name="description" colspan="4" nolabel="1"/>
<group colspan="2" col="2" groups="base.group_extended">
<separator string="Dates" colspan="2"/>
<field name="create_date"/>
<field name="date_closed"/>
<field name="event_begin_date" />
<field name="event_end_date" />
</group>
<separator string="" colspan="4"/>
<group col="8" colspan="4">
<field name="state" select="1" colspan="2"/>
<field name="state" select="1" colspan="2" widget="statusbar" statusbar_visible="draft,open,done"/>
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
<button name="button_reg_close" string="Close Registration" states="open" type="object" icon="gtk-close"/>
<button name="check_confirm" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
</group>
</page>
<page string="Extra Info">
<separator string="Contact" colspan="4"/>
<field name="contact_id" on_change="onchange_contact_id(contact_id, partner_id)" />
<field name="email_from"/>
<field name="badge_ids" colspan="4" nolabel="1">
<tree string="Badges" editable="bottom">
<field name="name"/>
<field name="title"/>
<field name="address_id"/>
</tree>
<form string="Badges">
<field name="name"/>
<field name="title"/>
<field name="address_id"/>
</form>
</field>
<group col="2" colspan="2" groups="base.group_extended">
<separator string="Dates" colspan="2"/>
<field name="date_closed"/>
</group>
<group col="2" colspan="2" groups="base.group_extended">
<separator string="Misc" colspan="2"/>
<field name="id"/>
<field name="active"/>
<button name="button_reg_close" string="Attended" states="open" type="object" icon="gtk-apply"/>
<button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
<button string="Set To Unconfirmed" name="do_draft" states="cancel,done" type="object" icon="gtk-convert"/>
</group>
</page>
<page string="Emails" groups="base.group_extended">
<group colspan="4">
<field colspan="4" name="email_cc" string="CC" widget="char" size="512"/>
</group>
<field name="message_ids" colspan="4" nolabel="1" mode="tree">
<tree string="History">
<field name="display_text" string="History Information"/>
<field name="email_from" invisible="1"/>
<field name="reply_to" invisible="1"/>
<button
string="Reply" attrs="{'invisible': [('email_from', '=', False)]}"
string="Reply" attrs="{'invisible': [('reply_to', '=', False)]}"
name="%(mail.action_email_compose_message_wizard)d"
context="{'mail.compose.message.mode':'reply', 'message_id':active_id}"
icon="terp-mail-replied" type="action" />
</tree>
</field>
<button string="Add Internal Note"
name="%(crm.action_crm_add_note)d"
context="{'model': 'crm.lead' }"
icon="terp-document-new" type="action" />
<button string="Send New Email"
name="%(mail.action_email_compose_message_wizard)d"
icon="terp-mail-message-new" type="action"/>
icon="terp-mail-message-new" context= '{"default_email_to":email}' type="action"/>
</page>
</notebook>
</form>
</field>
</record>
<!-- Calendar view of event registration -->
<!-- Calendar view of event registration -->
<record id="view_event_registration_calendar" model="ir.ui.view">
<field name="name">event.registration.calendar</field>
<field name="model">event.registration</field>
<field name="type">calendar</field>
<field eval="2" name="priority"/>
<field name="arch" type="xml">
<calendar color="event_id" date_start="date" date_stop="date_closed" string="Event Registration">
<calendar color="event_id" date_start="event_begin_date" date_stop="event_end_date" string="Event Registration">
<field name="event_id"/>
<field name="partner_invoice_id"/>
<field name="name"/>
</calendar>
</field>
</record>
@@ -434,14 +359,13 @@
<field name="arch" type="xml">
<graph string="Registration" type="bar" orientation="horizontal">
<field name="event_id"/>
<field name = "nb_register" operator="+"/>
<field name= "nb_register" operator="+"/>
</graph>
</field>
</record>
<!-- Search view of event registration form-->
<!-- Search view of event registration -->
<record model="ir.ui.view" id="view_registration_search">
<field name="name">Registrations</field>
<field name="model">event.registration</field>
@@ -452,24 +376,26 @@
<filter icon="terp-check" string="New" name="draft" domain="[('state','=','draft')]" help="Registrations in unconfirmed state"/>
<filter icon="terp-camera_test" string="Confirmed" domain="[('state','=','open')]" help="Confirmed registrations"/>
<separator orientation="vertical"/>
<field name="partner_id" />
<field name="event_id" widget="selection"/>
<field name="user_id" widget="selection">
<field name="name" string="Participant"
filter_domain="['|','|','|', ('name','ilike',self), ('contact_id','ilike',self), ('partner_id','ilike',self), ('email','ilike',self)]"/>
<field name="user_id" groups="base.group_extended">
<filter icon="terp-personal"
string="My Registrations"
help="My Registrations"
domain="[('user_id','=',uid)]"/>
</field>
<field name="state"/>
<field name="origin" groups="base.group_extended"/>
</group>
<newline/>
<group expand="0" string="Group By...">
<filter string="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}" groups="base.group_extended"/>
<separator orientation="vertical"/>
<filter string="Event" icon="terp-crm" domain="[]" context="{'group_by':'event_id'}"/>
<filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
</group>
</search>
</field>
</record>
@@ -480,7 +406,7 @@
<field name="view_type">form</field>
<field name="domain"></field>
<field name="view_mode">tree,form,calendar,graph</field>
<field name="context">{"search_default_draft": "1"}</field>
<field name="context">{}</field>
<field name="search_view_id" ref="view_registration_search"/>
</record>
@@ -489,11 +415,7 @@
id="menu_action_registration" parent="base.menu_event_main"
action="action_registration"/>
<menuitem
name="Registrations"
id="menu_action_registration_association" parent="base.menu_event_association"
action="action_registration"/>
<menuitem name="Reporting" id="base.menu_report_association" parent="base.marketing_menu" sequence="20"/>
<menuitem name="Reporting" id="base.menu_report_association" parent="event_main_menu" sequence="20"/>
</data>
</openerp>
@@ -29,7 +29,7 @@ class report_event_registration(osv.osv):
_auto = False
_rec_name = 'date'
_columns = {
'date': fields.date('Event Start Date', readonly=True),
'event_date': fields.char('Event Start Date', size=64, readonly=True),
'year': fields.char('Year', size=4, readonly=True),
'month': fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
@@ -39,16 +39,16 @@ class report_event_registration(osv.osv):
'confirm_state': fields.integer(' # No of Confirmed Registrations', size=20),
'register_max': fields.integer('Maximum Registrations'),
'nbevent': fields.integer('Number Of Events'),
'type': fields.many2one('event.type', 'Event Type'),
'state': fields.selection([('draft', 'Draft'), ('confirm', 'Confirmed'), ('done', 'Done'), ('cancel', 'Cancelled')], 'State', readonly=True, required=True),
'user_id': fields.many2one('res.users', 'Responsible', readonly=True),
'event_type': fields.many2one('event.type', 'Event Type'),
'registration_state': fields.selection([('draft', 'Draft'), ('confirm', 'Confirmed'), ('done', 'Attended'), ('cancel', 'Cancelled')], 'Registration State', readonly=True, required=True),
'event_state': fields.selection([('draft', 'Draft'), ('confirm', 'Confirmed'), ('done', 'Done'), ('cancel', 'Cancelled')], 'Event State', readonly=True, required=True),
'user_id': fields.many2one('res.users', 'Event Responsible', readonly=True),
'user_id_registration': fields.many2one('res.users', 'Register', readonly=True),
'name_registration': fields.char('Participant / Contact Name',size=45, readonly=True),
'speaker_id': fields.many2one('res.partner', 'Speaker', readonly=True),
'company_id': fields.many2one('res.company', 'Company', readonly=True),
'product_id': fields.many2one('product.product', 'Product', readonly=True),
'total': fields.float('Total'),
'section_id': fields.related('event_id', 'section_id', type='many2one', relation='crm.case.section', string='Sale Team', store=True, readonly=True),
}
_order = 'date desc'
_order = 'event_date desc'
def init(self, cr):
"""
initialize the sql view for the event registration
@@ -58,75 +58,52 @@ class report_event_registration(osv.osv):
cr.execute("""
CREATE OR REPLACE view report_event_registration AS (
SELECT
id,
event_id,
date,
user_id,
section_id,
company_id,
product_id,
speaker_id,
year,
month,
nbevent,
type,
SUM(draft_state) AS draft_state,
SUM(confirm_state) AS confirm_state,
SUM(total) AS total,
register_max,
state
FROM(
SELECT
MIN(e.id) AS id,
e.id AS event_id,
e.date_begin AS date,
r.id,
e.user_id AS user_id,
e.section_id AS section_id,
r.user_id AS user_id_registration,
r.name AS name_registration,
e.company_id AS company_id,
e.product_id AS product_id,
e.main_speaker_id AS speaker_id,
to_char(e.date_begin, 'YYYY-MM-DD') AS event_date,
to_char(e.date_begin, 'YYYY') AS year,
to_char(e.date_begin, 'MM') AS month,
count(e.id) AS nbevent,
t.id AS type,
CASE WHEN c.state IN ('draft') THEN c.nb_register ELSE 0 END AS draft_state,
CASE WHEN c.state IN ('open','done') THEN c.nb_register ELSE 0 END AS confirm_state,
CASE WHEN c.state IN ('done') THEN c.price_subtotal ELSE 0 END AS total,
CASE WHEN r.state IN ('draft') THEN r.nb_register ELSE 0 END AS draft_state,
CASE WHEN r.state IN ('open','done') THEN r.nb_register ELSE 0 END AS confirm_state,
e.type AS event_type,
e.register_max AS register_max,
e.state AS state
e.state AS event_state,
r.state AS registration_state
FROM
event_event e
LEFT JOIN
event_registration c ON (e.id=c.event_id)
LEFT JOIN
event_type t ON (e.type=t.id)
WHERE c.active = 'true'
event_registration r ON (e.id=r.event_id)
WHERE r.active = 'true'
GROUP BY
to_char(e.date_begin, 'YYYY'),
to_char(e.date_begin, 'MM'),
c.state,
c.nb_register,
t.id, e.id, e.date_begin, e.main_speaker_id,
e.register_max, e.type, e.state, c.event_id, e.user_id,e.company_id,e.product_id,e.section_id,
to_char(e.date_begin, 'YYYY-MM-DD'), c.id, c.price_subtotal )AS foo
GROUP BY
id,
event_id,
date,
user_id,
section_id,
company_id,
product_id,
speaker_id,
user_id_registration,
e.id,
r.id,
registration_state,
r.nb_register,
event_type, e.id, e.date_begin, e.main_speaker_id,
e.register_max,event_id, e.user_id,e.company_id,
e.user_id,
event_state,
e.company_id,
e.main_speaker_id,
year,
month,
nbevent,
type,
register_max,
state
e.register_max,
name_registration
)
""")
report_event_registration()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -8,23 +8,23 @@
<field name="model">report.event.registration</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree colors="blue:state == 'draft';black:state == 'confirm';gray:state in('done','cancel')" string="Events Analysis">
<field name="date" invisible="1"/>
<tree colors="blue:event_state == 'draft';black:event_state == 'confirm';gray:event_state in('done','cancel')" string="Events Analysis">
<field name="event_date" invisible="1"/>
<field name="user_id" invisible="1"/>
<field name="speaker_id" invisible="1"/>
<field name="year" invisible="1"/>
<field name="month" invisible="1"/>
<field name="event_id" invisible="1"/>
<field name="state" invisible="1"/>
<field name="type" invisible="1"/>
<field name="event_state" invisible="1"/>
<field name="event_type" invisible="1"/>
<field name="nbevent"/>
<field name="draft_state" invisible="context.get('no_of_draft_invisible', False)"/>
<field name="confirm_state"/>
<field name="registration_state" invisible="1"/>
<field name="name_registration" invisible="1"/>
<field name="user_id_registration" invisible="1"/>
<field name="register_max" invisible="context.get('max_reg_event_visible', True)"/>
<field name="company_id" invisible="1"/>
<field name="product_id" invisible="1"/>
<field name="section_id" invisible="1"/>
<field name="total" invisible="context.get('total_invisible', True)" sum="Total"/>
</tree>
</field>
</record>
@@ -54,33 +54,29 @@
<search string="Event on Registration">
<group>
<filter string="Year" icon="terp-go-year" name="year"
domain="[('date','&lt;=', time.strftime('%%Y-%%m-%%d')),('date','&gt;=',time.strftime('%%Y-01-01'))]"
help="Events created in current year"/>
domain="[('event_date','&lt;=', time.strftime('%%Y-%%m-%%d')),('event_date','&gt;=',time.strftime('%%Y-01-01'))]"
help="Events happening this year"/>
<separator orientation="vertical"/>
<filter string="Month" icon="terp-go-month" name="this_month"
domain="[('date','&lt;=',(datetime.date.today()+relativedelta(day=31)).strftime('%%Y-%%m-%%d')),('date','&gt;=',(datetime.date.today()-relativedelta(day=1)).strftime('%%Y-%%m-%%d'))]"
help="Events created in current month"/>
domain="[('event_date','&lt;=',(datetime.date.today()+relativedelta(day=31)).strftime('%%Y-%%m-%%d')),('event_date','&gt;=',(datetime.date.today()-relativedelta(day=1)).strftime('%%Y-%%m-%%d'))]"
help="Events happening in current month"/>
<filter icon="terp-go-month" string=" Month-1 "
domain="[('date','&lt;=', (datetime.date.today() - relativedelta(day=31, months=1)).strftime('%%Y-%%m-%%d')),('date','&gt;=',(datetime.date.today() - relativedelta(day=1,months=1)).strftime('%%Y-%%m-%%d'))]"
help="Events created in last month"/>
domain="[('event_date','&lt;=', (datetime.date.today() - relativedelta(day=31, months=1)).strftime('%%Y-%%m-%%d')),('event_date','&gt;=',(datetime.date.today() - relativedelta(day=1,months=1)).strftime('%%Y-%%m-%%d'))]"
help="Events happened in last month"/>
<separator orientation="vertical"/>
<filter icon="terp-document-new"
string="New"
domain="[('state','=','draft')]"
domain="[('event_state','=','draft')]"
help="Events which are in New state"/>
<filter icon="terp-check"
string="Confirm"
domain="[('state','=','confirm')]"
domain="[('event_state','=','confirm')]"
help="Events which are in confirm state"/>
<separator orientation="vertical"/>
<filter icon="terp-camera_test"
string="Confirmed Registrations"
help="Registrations in confirmed or done state"
context="{'no_of_draft_invisible':1}"/>
<filter string="Invoiced"
name="invoiced"
icon="terp-dolar"
help = "Invoiced Registrations only" context="{'total_invisible':0, 'no_of_draft_invisible':1}"/>
<separator orientation="vertical"/>
<field name="event_id" string="Event"/>
<field name="user_id" widget="selection">
@@ -92,26 +88,27 @@
</group>
<newline/>
<group expand="0" string="Extended Filters..." groups="base.group_extended">
<field name="type" widget="selection"/>
<field name="date"/>
<field name="event_type" widget="selection"/>
<field name="event_date"/>
</group>
<newline/>
<group expand="1" string="Group By...">
<filter string="Responsible" name="user_id" icon="terp-personal" context="{'group_by': 'user_id'}"/>
<filter string="Speaker" name="speaker" icon="terp-personal+" context="{'group_by': 'speaker_id'}"/>
<filter string="Sale Team" icon="terp-personal" context="{'group_by': 'section_id'}"/>
<filter string="Participant / Contact" icon="terp-personal" context="{'group_by':'name_registration'}" help="Registration contact"/>
<filter string="Register" icon="terp-personal" context="{'group_by':'user_id_registration'}" help="Registration contact" groups="base.extended"/>
<filter string="Speaker" name="speaker" icon="terp-personal+" context="{'group_by': 'speaker_id'}" groups="base.extended"/>
<filter string="Event Responsible" name="user_id" icon="terp-personal" context="{'group_by': 'user_id'}"/>
<separator orientation="vertical"/>
<filter string="Event" name="event" icon="terp-crm" context="{'group_by':'event_id', 'max_reg_event_visible':0}"/>
<filter string="Product" icon="terp-accessories-archiver" context="{'group_by': 'product_id'}"/>
<filter string="Event Type" icon="terp-crm" context="{'group_by':'event_type'}"/>
<separator orientation="vertical"/>
<filter string="Event Type" icon="terp-crm" context="{'group_by':'type'}"/>
<filter string="State" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}" help="Events States"/>
<filter string="Event State" icon="terp-stock_effects-object-colorize" context="{'group_by':'event_state'}"/>
<filter string="Registration State" icon="terp-stock_effects-object-colorize" context="{'group_by':'registration_state'}"/>
<separator orientation="vertical" groups="base.group_multi_company"/>
<filter string="Company" icon="terp-go-home" domain="[]" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<separator orientation="vertical" />
<filter string="Date" icon="terp-go-month"
domain="[]" context="{'group_by':'date'}" help="Event Beginning Date"/>
<filter string="Day" icon="terp-go-month"
domain="[]" context="{'group_by':'event_date'}" help="Event Beginning Date"/>
<filter string="Month" icon="terp-go-month"
domain="[]" context="{'group_by':'month'}" help="Event Beginning Date"/>
<filter string="Year" icon="terp-go-year"
@@ -144,7 +141,7 @@
<field name="act_window_id" ref="action_report_event_registration"/>
</record>
<menuitem parent="base.menu_report_association" action="action_report_event_registration" id="menu_report_event_registration" sequence="3" groups="marketing.group_marketing_manager"/>
<menuitem parent="base.menu_report_association" action="action_report_event_registration" id="menu_report_event_registration" sequence="3" groups="event.group_event_manager"/>
</data>
</openerp>
+2 -5
View File
@@ -30,12 +30,9 @@
</field>
<field name="event_registration_ids" colspan="4" nolabel="1">
<tree string="Events Registration">
<field name="date" string="Date"/>
<field name="event_begin_date" string="Date"/>
<field name="event_id" />
<field name="partner_invoice_id"/>
<field name="nb_register"/>
<field name="unit_price"/>
<field name="price_subtotal"/>
<field name="state"/>
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
<button name="button_reg_close" string="Close Registration" states="open" type="object" icon="gtk-close"/>
@@ -47,4 +44,4 @@
</record>
</data>
</openerp>
</openerp>
+39
View File
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="0">
<record id="group_event_manager" model="res.groups">
<field name="name">Event Manager</field>
</record>
<record id="group_event_user" model="res.groups">
<field name="name">Event User</field>
</record>
<record model="res.users" id="base.user_admin">
<field eval="[(4,ref('group_event_manager'))]" name="groups_id"/>
</record>
<!-- Multi - Company Rules -->
<record model="ir.rule" id="event_event_comp_rule">
<field name="name">Event multi-company</field>
<field name="model_id" ref="model_event_event"/>
<field name="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record model="ir.rule" id="event_registration_comp_rule">
<field name="name">Event Registration multi-company</field>
<field name="model_id" ref="model_event_registration"/>
<field name="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record model="ir.rule" id="report_event_registration_comp_rule">
<field name="name">Report Event Registration multi-company</field>
<field name="model_id" ref="model_report_event_registration"/>
<field name="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>-->
</data>
</openerp>
+7 -14
View File
@@ -1,15 +1,8 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_event_type,event.type,model_event_type,marketing.group_marketing_user,1,0,0,0
access_event_type_manager,event.type manager,model_event_type,marketing.group_marketing_manager,1,1,1,1
access_event_event,event.event,model_event_event,marketing.group_marketing_user,1,1,1,0
access_event_registration,event.registration,model_event_registration,marketing.group_marketing_user,1,1,1,0
access_report_event_registration,report.event.registration,model_report_event_registration,marketing.group_marketing_user,1,1,1,1
access_event_event_manager,event.event manager,model_event_event,marketing.group_marketing_manager,1,0,0,0
access_event_registration_manager,event.registration manager,model_event_registration,marketing.group_marketing_manager,1,0,0,0
access_crm_case_section_manager,crm.case.section manager,crm.model_crm_case_section,marketing.group_marketing_manager,1,1,1,1
access_product_product,product.product.product manager,product.model_product_product,marketing.group_marketing_manager,1,1,1,1
access_event_registration_badge_manager,event.registration.badge manager,model_event_registration_badge,marketing.group_marketing_manager,1,1,1,1
access_event_event_sale_salesman,event.event.sale,model_event_event,base.group_sale_salesman,1,0,0,0
access_account_account_invoice_manager,account.account.invoice,account.model_account_invoice,marketing.group_marketing_manager,1,0,0,0
access_event_registration_badge,event.registration.badge,model_event_registration_badge,marketing.group_marketing_user,1,0,0,0
access_event_registration_sale_user,event.registration.sale.user,model_event_registration,base.group_sale_salesman,1,0,0,0
access_event_type,event.type,model_event_type,event.group_event_user,1,0,0,0
access_event_type_manager,event.type manager,model_event_type,event.group_event_manager,1,1,1,1
access_event_event,event.event,model_event_event,event.group_event_user,1,1,1,0
access_event_registration,event.registration,model_event_registration,event.group_event_user,1,1,1,0
access_report_event_registration,report.event.registration,model_report_event_registration,event.group_event_user,1,1,1,1
access_event_event_manager,event.event manager,model_event_event,event.group_event_manager,1,0,0,0
access_event_registration_manager,event.registration manager,model_event_registration,event.group_event_manager,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_event_type event.type model_event_type marketing.group_marketing_user event.group_event_user 1 0 0 0
3 access_event_type_manager event.type manager model_event_type marketing.group_marketing_manager event.group_event_manager 1 1 1 1
4 access_event_event event.event model_event_event marketing.group_marketing_user event.group_event_user 1 1 1 0
5 access_event_registration event.registration model_event_registration marketing.group_marketing_user event.group_event_user 1 1 1 0
6 access_report_event_registration report.event.registration model_report_event_registration marketing.group_marketing_user event.group_event_user 1 1 1 1
7 access_event_event_manager event.event manager model_event_event marketing.group_marketing_manager event.group_event_manager 1 0 0 0
8 access_event_registration_manager event.registration manager model_event_registration marketing.group_marketing_manager event.group_event_manager 1 0 0 0
access_crm_case_section_manager crm.case.section manager crm.model_crm_case_section marketing.group_marketing_manager 1 1 1 1
access_product_product product.product.product manager product.model_product_product marketing.group_marketing_manager 1 1 1 1
access_event_registration_badge_manager event.registration.badge manager model_event_registration_badge marketing.group_marketing_manager 1 1 1 1
access_event_event_sale_salesman event.event.sale model_event_event base.group_sale_salesman 1 0 0 0
access_account_account_invoice_manager account.account.invoice account.model_account_invoice marketing.group_marketing_manager 1 0 0 0
access_event_registration_badge event.registration.badge model_event_registration_badge marketing.group_marketing_user 1 0 0 0
access_event_registration_sale_user event.registration.sale.user model_event_registration base.group_sale_salesman 1 0 0 0
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

@@ -1,22 +0,0 @@
-
I want to organize one conference event on "OpenERP Business", Customer subscribe/join
into "Conference on OpenERP Business" with 6 tickets, first I confim this event.
-
!python {model: event.event}: |
self.button_confirm(cr, uid, [ref("event_0")])
-
I Check that Event is "confirmed", and Its automatically sending mail to registered
partner which joined to this event.
-
!assert {model: event.event, id: event_0}:
- state == 'confirm', "Event should be confirmed."
-
After completed event, I close this event.
-
!python {model: event.event}: |
self.button_done(cr, uid, [ref("event_0")])
-
Check that conference is in "close" state.
-
!assert {model: event.event, id: event_0}:
- state == 'done', "Event should be Closed."
@@ -1,22 +0,0 @@
-
I want to organize event and its need Minimum 50 Registrations to confirm/start
this Event, but Only 10 registration confirm for this event, I confirm this event.
-
!python {model: event.event}: |
self.button_confirm(cr, uid, [ref("event_1")])
-
Now I cheked for event and It should not be confirm because registrations for
this event is below limit.
-
!assert {model: event.event, id: event_1}:
- state == 'confirm', "Event should be confirm."
-
So I cancel this Event
-
!python {model: event.event}: |
self.button_cancel(cr, uid, [ref("event_1")])
-
I check event should be cancel.
-
!assert {model: event.event, id: event_1}:
- state == 'cancel', "Event should be cancel"
@@ -0,0 +1,124 @@
-
I want to organize an event,
into this conference I should create two registration.
One confirmed and attended the event and the other cancelled.
I create an event
-
!record {model: event.event, id: event_event}:
name: event
date_begin: 2012-01-01 19:05:15
date_end: 2012-01-01 20:05:15
-
I create a registration for the event
-
!record {model: event.registration, id: event_registration1}:
event_id: event_event
name: test_confirm
nb_register: 10
-
I create a second registration for the same event
-
!record {model: event.registration, id: event_registration2}:
event_id: event_event
name: test_cancel
nb_register: 5
-
I check if the number of draft registrations in the event view is correct
-
!assert {model: event.event, id: event_event ,string: 'the number of draft registration is not correct'}:
- register_prospect == 15.00
-
I confirm the registration1
-
!python {model: event.registration}: |
self.registration_open(cr, uid, [ref("event_registration1")],context=context)
-
I check that registration is "confirmed"
-
!assert {model: event.registration, id: event_registration1}:
- state == 'open', "registration should be confirmed."
-
I check if the number of confirmed registration is correct
-
!assert {model: event.event,id: event_event,string: 'the number of confirmed registration is not correct'}:
- register_current == 10.00
-
I close the registration
-
!python {model: event.registration}: |
self.button_reg_close(cr, uid, [ref("event_registration1")],context=context)
-
I check if registration is correctly finnished
-
!assert {model: event.registration, id: event_registration1}:
- state == 'done'
-
I check if attended registration is correct
-
!assert {model: event.event,id: event_event,string: 'the number of registration that attended the event is not correct'}:
- register_attended == 10.00
-
I cancel the second registration
-
!python {model: event.registration}: |
self.button_reg_cancel(cr, uid, [ref("event_registration2")],context=context)
-
I Check that registration is cancelled
-
!assert {model: event.registration, id: event_registration2}:
- state == 'cancel', "Registration should be cancelled."
-
I confirm the event
-
!python {model: event.event}: |
self.button_confirm(cr, uid, [ref("event_event")])
-
I check that event is in "confirmed" state.
-
!assert {model: event.event, id: event_event}:
- state == 'confirm', "event should be confirmed."
-
I close the event
-
!python {model: event.event}: |
self.button_done(cr, uid, [ref("event_event")])
-
Check that event is in "close" state.
-
!assert {model: event.event, id: event_event}:
- state == 'done', "Event should be Closed."
-
I reset event to draft
-
!python {model: event.event}: |
self.button_draft(cr, uid, [ref("event_event")])
-
In order to test the cancellation of the event, I create a second event
-
!record {model: event.event, id: event_event1}:
name: event_cancel
date_begin: 2012-01-01 19:05:15
date_end: 2012-01-01 20:05:15
-
I create a registration for the event
-
!record {model: event.registration, id: event_registration_cancel}:
event_id: event_event1
name: test_confirm_again
nb_register: 5
-
Now I cancel this event
-
!python {model: event.event}: |
self.button_cancel(cr, uid, [ref("event_event1")])
-
I check if the event is cancelled
-
!assert {model: event.event, id: event_event1}:
- state == 'cancel', "Event should be cancelled."
-
I check if its registrations are cancelled too
-
!assert {model: event.registration, id: event_registration_cancel}:
- state == 'cancel', "Registration should be cancelled."
@@ -1,62 +0,0 @@
-
I want to organize one conference event, First I registered partner for event
with 5 tickets.
-
!python {model: partner.event.registration}: |
context.update({'active_model': 'res.partner', 'active_ids': [ref("base.res_partner_ericdubois0")], 'active_id': ref("base.res_partner_ericdubois0")})
register = self.create(cr, uid, {'event_id': ref('event_1'),'nb_register': 5}, context=context)
self.open_registration(cr, uid, [register], context=context)
-
Now I check for registration created base on partner.
-
!python {model: event.registration}: |
ids = self.search(cr, uid, [('partner_id','=',ref("base.res_partner_ericdubois0")), ('event_id', '=', ref('event_1'))])
assert ids, "Registration should be create here."
-
I confirm registration process.
-
!python {model: event.registration}: |
self.check_confirm(cr, uid, [ref("reg_1_1")])
-
I Check that Registration is confirm.
-
!assert {model: event.registration, id: reg_1_1}:
- state == 'open', "Registration should be open here."
-
After confirmation of partner, I create invoice base on costing of event.
-
!python {model: event.registration}: |
self.action_invoice_create(cr, uid, [ref("reg_1_1")])
-
Now I Check for Invoice is created and Registration should be closed after invoice generated.
-
!python {model: event.registration}: |
record = self.browse(cr, uid, [ref("reg_1_1")])[0]
assert record.invoice_id, "Invoice should be generated"
assert record.invoice_id.state == "draft", "Invoice state should be draft"
assert record.invoice_id.partner_id == record.partner_id, "Customer is not correspond with registration"
assert record.invoice_id.type == 'out_invoice', "Invoice type is not correct"
assert record.invoice_id.origin == record.event_product, "Invoice origin is not correct"
assert record.invoice_id.amount_total == record.price_subtotal, "Invoice amount is not correct"
assert record.state == "done", "Registration should be closed after invoice generated"
-
Now I check for same partner registration for two diffrent event and I create group invoices for same partner.
-
!python {model: event.make.invoice}: |
context.update({'active_model': 'event.make.invoice', 'active_ids': [ref("reg_0_1"), ref("reg_0_2")], 'active_id': ref("reg_0_1")})
invoice = self.create(cr, uid, {'grouped': True}, context=context)
self.make_invoice(cr, uid, [invoice], context=context)
-
Now I Check for group Invoice is created with total amount of both registration
and Registration should be closed after invoice generated.
-
!python {model: event.registration}: |
reg_data_1 = self.browse(cr, uid, [ref("reg_0_1")])[0]
reg_data_2 = self.browse(cr, uid, [ref("reg_0_2")])[0]
assert reg_data_1.invoice_id, "Invoice should be generated"
assert reg_data_1.invoice_id.state == "draft", "Invoice state should be draft"
assert reg_data_1.invoice_id.partner_id == reg_data_1.partner_id, "Customer is not correspond with registration"
assert reg_data_1.invoice_id.type == 'out_invoice', "Invoice type is not correct"
assert reg_data_1.invoice_id.origin == reg_data_1.event_product, "Invoice origin is not correct"
assert reg_data_1.invoice_id.amount_total == (reg_data_1.price_subtotal + reg_data_2.price_subtotal), "Invoice total amount is not correct"
assert reg_data_1.state == "done", "Registration should be closed after invoice generated"
-1
View File
@@ -10,7 +10,6 @@
-
!record {model: event.event, id: event_2}:
product_id: event_product_2
section_id: crm.section_sales_department
name: 'Conference on ERP Buisness'
-
I call onchange event from event registration wizard.
+1 -3
View File
@@ -19,8 +19,6 @@
#
##############################################################################
import event_make_invoice
import event_confirm_registration
import event_confirm
import partner_event_registration
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,70 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# 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 osv import fields, osv
from tools.translate import _
class event_confirm_registration(osv.osv_memory):
"""
Confirm Event Registration
"""
_name = "event.confirm.registration"
_description = "Confirmation for Event Registration"
_columns = {
'msg': fields.text('Message', readonly=True),
}
_defaults = {
'msg': 'The event limit is reached. What do you want to do?'
}
def default_get(self, cr, uid, fields, context=None):
"""
This function gets default values
"""
if context is None:
context = {}
registration_pool = self.pool.get('event.registration')
registration_ids = context.get('registration_ids', [])
res = super(event_confirm_registration, self).default_get(cr, uid, fields, context=context)
msg = ""
overlimit_event_ids = []
for registration in registration_pool.browse(cr, uid, registration_ids, context=context):
register_max = registration.event_id.register_max
if registration.event_id.id not in overlimit_event_ids:
overlimit_event_ids.append(registration.event_id.id)
msg += _("Warning: The Event '%s' has reached its Maximum Limit (%s).") \
%(registration.event_id.name, register_max)
if 'msg' in fields:
res.update({'msg': msg})
return res
def confirm(self, cr, uid, ids, context=None):
if context is None:
context = {}
registration_pool = self.pool.get('event.registration')
registration_ids = context.get('registration_ids', [])
registration_pool.do_open(cr, uid, registration_ids, context=context)
return {'type': 'ir.actions.act_window_close'}
event_confirm_registration()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,32 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_event_confirm_registration" model="ir.ui.view">
<field name="name">Registration Confirmation</field>
<field name="model">event.confirm.registration</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Registration Confirmation">
<field name="msg" nolabel="1" colspan="4"/>
<separator string="" colspan="4"/>
<group colspan="4" col="6">
<button icon="gtk-close" special="cancel" string="Close"/>
<button icon="gtk-ok" name="confirm" string="Confirm Anyway" type="object"/>
</group>
</form>
</field>
</record>
<record id="action_event_confirm_registration" model="ir.actions.act_window">
<field name="name">Registrations</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">event.confirm.registration</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_event_confirm_registration"/>
<field name="target">new</field>
</record>
</data>
</openerp>
-95
View File
@@ -1,95 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# 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 osv import fields, osv
from tools.translate import _
class event_make_invoice(osv.osv_memory):
"""
Make Invoices
"""
_name = "event.make.invoice"
_description = "Event Make Invoice"
_columns = {
'grouped': fields.boolean('Group the invoices'),
'invoice_date': fields.date('Invoice Date'),
}
def view_init(self, cr, uid, fields, context=None):
"""
This function checks for precondition before wizard executes
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param fields: List of fields for default value
@param context: A standard dictionary for contextual values
"""
obj_event_reg = self.pool.get('event.registration')
data = context and context.get('active_ids', [])
for event_reg in obj_event_reg.browse(cr, uid, data, context=context):
if event_reg.state in ('draft', 'done', 'cancel'):
raise osv.except_osv(_('Warning !'),
_("Invoice cannot be created if the registration is in %s state.") % (event_reg.state))
if (not event_reg.tobe_invoiced):
raise osv.except_osv(_('Warning !'),
_("Registration is set as Cannot be invoiced"))
if not event_reg.event_id.product_id:
raise osv.except_osv(_('Warning !'),
_("Event related doesn't have any product defined"))
if not event_reg.partner_invoice_id:
raise osv.except_osv(_('Warning !'),
_("Registration doesn't have any partner to invoice."))
def default_get(self, cr, uid, fields_list, context=None):
return super(event_make_invoice, self).default_get(cr, uid, fields_list, context=context)
def make_invoice(self, cr, uid, ids, context=None):
reg_obj = self.pool.get('event.registration')
mod_obj = self.pool.get('ir.model.data')
if context is None:
context = {}
for data in self.browse(cr, uid, ids, context=context):
res = reg_obj.action_invoice_create(cr, uid, context.get(('active_ids'),[]), data.grouped, date_inv = data.invoice_date)
form_id = mod_obj.get_object_reference(cr, uid, 'account', 'invoice_form')
form_res = form_id and form_id[1] or False
tree_id = mod_obj.get_object_reference(cr, uid, 'account', 'invoice_tree')
tree_res = tree_id and tree_id[1] or False
return {
'domain': "[('id', 'in', %s)]" % res,
'name': _('Customer Invoices'),
'view_type': 'form',
'view_mode': 'tree,form',
'res_model': 'account.invoice',
'view_id': False,
'views': [(tree_res, 'tree'), (form_res, 'form')],
'context': "{'type':'out_refund'}",
'type': 'ir.actions.act_window',
}
event_make_invoice()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,40 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_event_make_invoice" model="ir.ui.view">
<field name="name">event.make.invoice</field>
<field name="model">event.make.invoice</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Create invoices">
<separator colspan="4" string="Do you really want to create the invoice(s) ?" />
<field name="grouped" />
<field name="invoice_date"/>
<group colspan="4">
<separator string="" colspan="4" />
<label string="" colspan="2"/>
<button special="cancel" string="Close" icon="gtk-close"/>
<button name="make_invoice" string="Done" type="object" icon="gtk-ok"/>
</group>
</form>
</field>
</record>
<record id="action_event_confirm_registration" model="ir.actions.act_window">
<field name="name">Make Invoices</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">event.make.invoice</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_event_make_invoice"/>
<field name="target">new</field>
</record>
<act_window id="action_make_invoices"
key2 = "client_action_multi" name="Make Invoice"
res_model="event.make.invoice" src_model="event.registration"
view_mode="form" target="new" view_type="form" />
</data>
</openerp>
@@ -1,141 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
#
# 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 osv import fields, osv
from tools.translate import _
from decimal_precision import decimal_precision as dp
class partner_event_registration(osv.osv_memory):
""" event Registration """
_name = "partner.event.registration"
_description = __doc__
_order = 'event_id'
_columns = {
'event_id': fields.many2one('event.event', 'Event'),
'event_type': fields.many2one('event.type', 'Type', readonly=True),
'unit_price': fields.float('Registration Cost', digits_compute=dp.get_precision('Sale Price')),
'start_date': fields.datetime('Start date', help="Beginning Date of Event", readonly=True),
'end_date': fields.datetime('Closing date', help="Closing Date of Event", readonly=True),
'nb_register': fields.integer('Number of Registration'),
}
_defaults = {
'nb_register': 1,
}
def open_registration(self, cr, uid, ids, context=None):
"""This Function Open Registration For Given Event id and Partner.
"""
value = {}
res_obj = self.pool.get('res.partner')
addr_obj = self.pool.get('res.partner.address')
reg_obj = self.pool.get('event.registration')
mod_obj = self.pool.get('ir.model.data')
record_ids = context and context.get('active_ids', []) or []
addr = res_obj.address_get(cr, uid, record_ids)
email = False
contact_id = addr.get('default', False)
if contact_id:
email = addr_obj.browse(cr, uid, contact_id, context=context).email
result = mod_obj.get_object_reference(cr, uid, 'event', 'view_registration_search')
res = result and result[1] or False
# Select the view
id2 = mod_obj.get_object_reference(cr, uid, 'event', 'view_event_registration_form')
id2 = id2 and id2[1] or False
id3 = mod_obj.get_object_reference(cr, uid, 'event', 'view_event_registration_tree')
id3 = id3 and id3[1] or False
for current in self.browse(cr, uid, ids, context=context):
for partner in res_obj.browse(cr, uid, record_ids, context=context):
new_case = reg_obj.create(cr, uid, {
'name': 'Registration',
'event_id': current.event_id and current.event_id.id or False,
'unit_price': current.unit_price,
'partner_id': partner.id,
'partner_invoice_id': partner.id,
'event_product': current.event_id.product_id.name,
'contact_id': contact_id,
'email_from': email,
'nb_register': current.nb_register,
}, context=context)
value = {
'name': _('Event Registration'),
'view_type': 'form',
'view_mode': 'tree,form',
'res_model': 'event.registration',
'res_id': new_case,
'views': [(id2, 'form'), (id3, 'tree'), (False, 'calendar'), (False, 'graph')],
'type': 'ir.actions.act_window',
'search_view_id': res
}
return value
def name_get(self, cr, uid, ids, context=None):
"""Overrides orm name_get method
@param ids: List of partner_event_register ids
"""
res = []
if not ids:
return res
reads = self.read(cr, uid, ids, ['event_type', 'event_id'], context=context)
for record in reads:
event_id = record['event_id'][1]
if record['event_type']:
event_id = record['event_type'][1] + ' on ' + event_id
res.append((record['id'], event_id))
return res
def onchange_event_id(self, cr, uid, ids, event_id, context=None):
res = {}
event_obj = self.pool.get('event.event')
product_obj = self.pool.get('product.product')
partner_obj = self.pool.get('res.partner')
if context is None:
context = {}
partner_id = context.get('active_id', False)
if event_id:
event = event_obj.browse(cr, uid, event_id, context=context)
pricelist_id = event.pricelist_id and event.pricelist_id.id or False
if partner_id:
partner = partner_obj.browse(cr, uid, partner_id, context=context)
pricelist_id = pricelist_id or partner.property_product_pricelist.id
unit_price = product_obj._product_price(cr, uid, [event.product_id.id], False, False, {'pricelist': pricelist_id})[event.product_id.id]
res['value'] = {
'event_type': event.type and event.type.id or False,
'start_date': event.date_begin,
'end_date': event.date_end,
'unit_price': unit_price,
}
return res
partner_event_registration()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,46 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- Partner event registration -->
<record id="view_partner_event_registration" model="ir.ui.view">
<field name="name">Partner event registration</field>
<field name="model">partner.event.registration</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Event Registration">
<separator string="Event For Registration" colspan="4"/>
<group colspan="4" col="4">
<field name="event_id" on_change="onchange_event_id(event_id, context)"/>
<field name="nb_register"/>
</group>
<separator string="Event Details" colspan="4"/>
<group colspan="4" col="4">
<field name="start_date"/>
<field name="end_date"/>
<field name="event_type"/>
<field name="unit_price"/>
</group>
<separator string="" colspan="4" />
<group colspan="4" col="6">
<label string="" colspan="2"/>
<button special="cancel" string="_Close" icon="gtk-close"/>
<button name="open_registration" string="_Subcribe" type="object" icon="gtk-go-back"/>
</group>
</form>
</field>
</record>
<act_window name="Event Registration"
res_model="partner.event.registration"
src_model="res.partner"
view_mode="form"
target="new"
key2="client_action_multi"
id="action_partner_event_registration"
/>
</data>
</openerp>
+26
View File
@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# 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/>.
#
##############################################################################
import event_moodle
import wizard
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+78
View File
@@ -0,0 +1,78 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# 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/>.
#
##############################################################################
{
'name': 'Event Moodle',
'version': '0.1',
'category': 'Tools',
'complexity': "easy",
'description': """
Configure your moodle server
With this module you are able to connect your OpenERP with a moodle plateform.
This module will create courses and students automatically in your moodle plateform to avoid wasting time.
Now you have a simple way to create training or courses with OpenERP and moodle
STEPS TO CONFIGURE
------------------
1. activate web service in moodle
----------------------------------
>site administration >plugins>web sevices >manage protocols
activate the xmlrpc web service
>site administration >plugins>web sevices >manage tokens
create a token
>site administration >plugins>web sevices >overview
activate webservice
2. Create confirmation email with login and password
----------------------------------------------------
we strongly suggest you to add those following lines at the bottom of your event confirmation email to communicate the login/password of moodle to your subscribers.
........your configuration text.......
URL: your moodle link for exemple: http://openerp.moodle.com
LOGIN: ${object.moodle_username}
PASSWORD: ${object.moodle_user_password}
""",
'author': 'OpenERP SA',
'depends': ['event'],
'init_xml': [],
'data': [
'wizard_moodle.xml',
'event_view.xml',
'security/ir.model.access.csv'
],
'demo_xml': [],
'test': [],
'installable': True,
'auto_install': False,
'images': ['images/token.png','images/enable_webservice.png','images/active_xmlrpc.png'],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+287
View File
@@ -0,0 +1,287 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2012 Tiny SPRL (<http://tiny.be>).
#
# 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 osv import fields, osv
import xmlrpclib
import string
import time
import random
from random import sample
from tools.translate import _
class event_moodle(osv.osv):
_name = 'event.moodle.config.wiz'
_columns = {
'moodle_username' : fields.char('Moodle Username', 128, help="You can also connect with your username that you define when you create a token"),
'moodle_password' : fields.char('Moodle Password', 128),
'moodle_token' : fields.char('Moodle Token', 128, help="Put your token that you created in your moodle server"),
'server_moodle': fields.char('Moodle Server', 128, required=True,help="URL where you have your moodle server. For exemple: 'http://127.0.0.1' or 'http://localhost'"),
'url': fields.char('URL to Moodle Server', size=256, help="The url that will be used for the connection with moodle in xml-rpc"),
}
_order = 'create_date desc'
_defaults = {
'server_moodle': 'http://127.0.0.1',
}
def configure_moodle(self, cr, uid, ids, context=None):
url = self.make_url(cr, uid, ids, context=context)
self.write(cr, uid, ids, {'url': url})
return {'type': 'ir.actions.act_window_close'}
def find(self, cr, uid, context=None):
"""
Find the config wizard containing the configuration and raise and error if none is available.
"""
moodle_config_wiz_ids = self.search(cr, uid, [], context=context)
if not moodle_config_wiz_ids:
raise osv.except_osv(('Error!'),("Configure your moodle connexion before"))
return moodle_config_wiz_ids[0]
def make_url(self, cr, uid, ids, context=None):
"""
create the good url with the information of the configuration
@return url for moodle connexion
"""
def _encode_password(password):
for i in range(len(password)):
x = password[i]
if x not in string.ascii_letters + string.digits:
unicode_car = (hex(ord(x)))
hex_car = '%'+str(unicode_car[2:])
password = password.replace(x,hex_car)
return password
url=""
config_moodle = self.browse(cr, uid, ids[0], context=context)
if config_moodle.moodle_username and config_moodle.moodle_password:
#connexion with password and username
password = _encode_password(config_moodle.moodle_password)
url = config_moodle.server_moodle + '/moodle/webservice/xmlrpc/simpleserver.php?wsusername=' + config_moodle.moodle_username + '&wspassword=' + password
if config_moodle.moodle_token:
#connexion with token
url = config_moodle.server_moodle + '/moodle/webservice/xmlrpc/server.php?wstoken=' + config_moodle.moodle_token
return url
def create_moodle_user(self, cr, uid, id, dic_user, context=None):
"""
create a moodle user
@param dic_user : is a list of dictonnaries with the moodle information
@return a liste of dictonaries with the create user id
"""
#connect to moodle
url = self.browse(cr, uid, id, context=context).url
sock = xmlrpclib.ServerProxy(url)
#add user in moodle and return list of id and username
return sock.core_user_create_users(dic_user)
def create_moodle_courses(self, cr, uid, id, courses, context=None):
"""
create a mmodle course
@param courses : is a list of dictionaries with the moodle course information
@return a list of dictionaries with the create course id
"""
#connect to moodle
url = self.browse(cr, uid, id, context=context).url
sock = xmlrpclib.ServerProxy(url)
return sock.core_course_create_courses(courses)
def moodle_enrolled(self, cr, uid, id, enrolled, context=None):
"""
this method is used to match a course with users
@param enrolled : list of dictonaries with the course id and the user id
"""
#connect to moodle
url = self.browse(cr, uid, id, context=context).url
sock = xmlrpclib.ServerProxy(url)
#add enrolled in moodle
sock.enrol_manual_enrol_users(enrolled)
def create_password(self):
"""
create a random password
"""
rand = string.ascii_letters + string.digits
length = 8
passwd = ''.join(sample(rand, length))
passwd = passwd + '+'
return passwd
def check_email(self,email):
"""
check if email is correct
"""
if email:
if (email.count('@') != 1 and email.count('.') < 1):
raise osv.except_osv(_('Error!'),_("Your email '%s' is wrong") % (email))
def make_username(self, username, response_courses):
"""
create a moodle username with a random number for the uniqueness
@return the moodle username
"""
if username:
#remove space in the name
username = username.replace(" ","_")
#give an user name
name_user = username + "%d" % (response_courses,) + "%d" % (random.randint(1,999999),)
else:
name_user = "moodle_" + "%d" % (response_courses,) + "%d" % (random.randint(1,999999),)
return name_user
event_moodle()
class event_event(osv.osv):
_inherit = "event.event"
_columns={
'moodle_id': fields.integer('Moodle ID', help='The identifier of this event in Moodle'),
}
def check_registration_limits(self, cr, uid, ids, context=None):
"""
create moodle courses ,users and match them when an event is confirmed
if the event_registration is not confirmed then it doesn t nothing
"""
res = super(event_event, self).check_registration_limits(cr, uid, ids, context=context)
moodle_pool = self.pool.get('event.moodle.config.wiz')
moodle_config_wiz_id = moodle_pool.find(cr, uid, context=context)
list_users=[]
userid = []
for event in self.browse(cr, uid, ids, context=context):
#moodle use time() to store the date
date = time.strptime(event.date_begin, '%Y-%m-%d %H:%M:%S')
date = int (time.mktime(date))
#create the dict of values to create the course in Moodle
dic_courses= [{
'fullname': event.name,
'shortname': '',
'startdate': date,
'summary': event.note,
'categoryid':1, #the category hardcoded is 'Miscelleanous'
}]
#create a course in moodle and keep the id
response_courses = moodle_pool.create_moodle_courses(cr, uid, moodle_config_wiz_id, dic_courses, context=context)
self.write(cr, uid, event.id, {'moodle_id': response_courses[0]['id']})
moodle_uids = []
for registration in event.registration_ids:
if registration.state == 'open':
#enroll the registration in Moodle as it is confirmed
if not registration.moodle_uid:
#create a dictionary for an user
name_user = moodle_pool.make_username(registration.name, response_courses[0]['id'])
moodle_pool.check_email(registration.email)
passwd = moodle_pool.create_password()
dic_users={
'username' : name_user,
'password' : passwd,
'city' : registration.city,
'firstname' : registration.name ,
'lastname': '',
'email': registration.email
}
#create the user in moodle
response_user = moodle_pool.create_moodle_user(cr, uid, moodle_config_wiz_id, [dic_users], context=context)
for user in response_user:
self.pool.get('event.registration').write(cr,uid,[registration.id],{'moodle_uid': user['id'], 'moodle_user_password': passwd, 'moodle_username': name_user})
moodle_uids.append(user['id'])
else:
moodle_uids.append(registration.moodle_uid)
#link the course with users
enrolled = []
for moodle_user in moodle_uids:
enrolled.append({
'roleid' :'5', #mark as 'Student'
'userid' : moodle_user,
'courseid' :response_courses[0]['id']
})
moodle_pool.moodle_enrolled(cr, uid, moodle_config_wiz_id, enrolled, context=context)
return res
event_event()
class event_registration(osv.osv):
_inherit = "event.registration"
_columns={
'moodle_user_password': fields.char('Password for Moodle User', 128),
'moodle_username': fields.char('Moodle Username', 128),
'moodle_uid': fields.integer('Moodle User ID'),
}
def confirm_registration(self, cr, uid, ids, context=None):
"""
create a user and match to a course if the event is already confirmed
"""
res = super(event_registration, self).confirm_registration(cr, uid, ids, context=context)
moodle_pool = self.pool.get('event.moodle.config.wiz')
moodle_config_wiz_id = moodle_pool.find(cr, uid, context=context)
for register in self.browse(cr, uid, ids, context=context):
if register.event_id.state == 'confirm' and register.event_id.moodle_id:
if not register.moodle_uid:
#create the user in moodle
name_user = moodle_pool.make_username(register.name, register.event_id.moodle_id)
moodle_pool.check_email(register.email)
passwd = moodle_pool.create_password()
dic_users = [{
'username': name_user,
'password': passwd,
'city': register.city,
'firstname': register.name,
'lastname': '', #we could make a split of the register.name on ' ' but it would be inaccurate, so it seems better to let it empty as it's not really useful
'email': register.email,
}]
response_user = moodle_pool.create_moodle_user(cr, uid, moodle_config_wiz_id, dic_users, context=context)
#write in database the password and the username
moodle_user_id = response_user[0]['id']
self.pool.get('event.registration').write(cr, uid, ids, {'moodle_uid': moodle_user_id, 'moodle_user_password': passwd, 'moodle_username': name_user})
else:
moodle_user_id = register.moodle_uid
enrolled=[{
'roleid': '5', #mark as student
'userid': moodle_user_id,
'courseid': register.event_id.moodle_id
}]
moodle_pool.moodle_enrolled(cr, uid, moodle_config_wiz_id, enrolled, context=context)
return res
def onchange_moodle_name(self, cr, uid, ids, moodle_username, context=None):
"""
This onchange receive as parameter a username moddle and will fill the moodle_uid and password fields if existing records with this username are found
@param moodle_username: the existing moodle username
"""
res = {}
reg_ids = self.search(cr, uid, [('moodle_username', '=', moodle_username)], order='create_date desc', context=context)
if reg_ids:
reg = self.browse(cr, uid, reg_ids[0], context=context)
res = {'value' :{
'moodle_uid': reg.moodle_uid,
'name': reg.name,
'email':reg.email,
'phone':reg.phone,
'city': reg.city,
'street': reg.street}}
return res
event_registration()
+41
View File
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="moodle_information">
<field name="name">event.moodle.registration</field>
<field name="model">event.registration</field>
<field name="type">form</field>
<field name="inherit_id" ref="event.view_event_registration_form" />
<field name="arch" type="xml">
<xpath expr="/form/notebook/page[@string='Emails']" position="after">
<page string="Moodle">
<field name="moodle_user_password" readonly='1' colspan="2"/>
<field name="moodle_uid" readonly="1"/>
</page>
</xpath>
<field name="email" position="replace">
<field name="email" required="1" />
</field>
<field name="name" position="replace">
<field name="moodle_username" colspan="2" on_change="onchange_moodle_name(moodle_user_password)"/>
<field name="name" required="1" />
</field>
</field>
</record>
<record model="ir.ui.view" id="moodle_information_event">
<field name="name">event.moodle.event</field>
<field name="model">event.event</field>
<field name="type">form</field>
<field name="inherit_id" ref="event.view_event_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='registration_ids']/tree/field[@name='name']" position="replace">
<field name="moodle_username" on_change="onchange_moodle_name(moodle_user_password)"/>
<field name="name" required="1" />
</xpath>
<field name="email" position="replace">
<field name="email" required="1" />
</field>
</field>
</record>
</data>
</openerp>
@@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_event_moodle,event.moodle.admin,model_event_moodle_config_wiz,event.group_event_manager,1,1,1,1
access_event_moodle_user,event.moodle.usr,model_event_moodle_config_wiz,event.group_event_user,0,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_event_moodle event.moodle.admin model_event_moodle_config_wiz event.group_event_manager 1 1 1 1
3 access_event_moodle_user event.moodle.usr model_event_moodle_config_wiz event.group_event_user 0 0 0 0
+55
View File
@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="create_moodle_config_view">
<field name="name">moodle.config.wizard.form</field>
<field name="model">event.moodle.config.wiz</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Configure Moodle">
<group>
<separator string="server" colspan="4"/>
<field name="server_moodle"/>
<newline/>
<separator string="Connexion with a token" colspan="4"/>
<label string="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." colspan="4"/>
<field name="moodle_token"/>
<newline/>
<separator string="Connexion with password and username" colspan="4"/>
<label string="Another approach is to create a user for OpenERP in Moodle. If you do so, make sure that this user has enough access rights" colspan="4"/>
<field name="moodle_username"/>
<field name="moodle_password"/>
</group>
<newline/>
<button type="special" special="cancel"
string="Cancel" icon="gtk-cancel"/>
<button type="object" name="configure_moodle"
string="Configure Moodle" icon="gtk-ok"/>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="configure_moodle">
<field name="name">Configure Moodle</field>
<field name="res_model">event.moodle.config.wiz</field>
<field name="view_id" ref="create_moodle_config_view"/>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<record id="marketing_cat" model="ir.actions.todo.category">
<field name="name">Marketing</field>
</record>
<!-- register configuration wizard -->
<record id="config_wizard_config_moodle" model="ir.actions.todo">
<field name="action_id" ref="configure_moodle"/>
<field name="category_id" ref="marketing_cat" />
<field name="type">automatic</field>
<field name="name">Configuration of moodle</field>
</record>
<menuitem name="Moodle Configuration" parent="base.menu_marketing_config_root" id="wizard_moodle" action="configure_moodle"/>
</data>
</openerp>
+22
View File
@@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# 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/>.
#
##############################################################################
import event_sale
+45
View File
@@ -0,0 +1,45 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# 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/>.
#
##############################################################################
{
'name': 'Events Sales',
'version': '0.1',
'category': 'Tools',
'complexity': "easy",
'description': """
Creating registration with sale orders.
=======================================
This module allows you to automatize and connect your registration creation with your main sale flow and, therefore, to enable the invoicing feature of registrations.
It defines a new kind of service products that offers you the possibility to choose an event category associated with it. When you encode a sale order for that product, you will be able to choose an existing event of that category and when you confirm your sale order it will automatically create a registration for this event.
""",
'author': 'OpenERP SA',
'depends': ['event','sale','sale_crm'],
'update_xml': [
'event_sale_view.xml',
],
'test':['test/confirm.yml'],
'installable': True,
'active': False,
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+95
View File
@@ -0,0 +1,95 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# 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 osv import fields, osv
from tools.translate import _
class product(osv.osv):
_inherit = 'product.product'
_columns = {
'event_ok': fields.boolean('Event Subscription', help='Determine if a product needs to create automatically an event registration at the confirmation of a sale order line.'),
'event_type_id': fields.many2one('event.type', 'Type of Event', help='Filter the list of event on this category only, in the sale order lines'),
}
def onchange_event_ok(self, cr, uid, ids, event_ok, context=None):
return {'value': {'type': event_ok and 'service' or False}}
product()
class sale_order_line(osv.osv):
_inherit = 'sale.order.line'
_columns = {
'event_id': fields.many2one('event.event', 'Event', help="Choose an event and it will authomaticaly create a registration for this event"),
#those 2 fields are used for dynamic domains and filled by onchange
'event_type_id': fields.related('event_type_id', type='many2one', relation="event.type", string="Event Type"),
'event_ok': fields.related('event_ok', string='event_ok', type='boolean'),
}
def product_id_change(self, cr, uid, ids,
pricelist,
product, qty=0,
uom=False,
qty_uos=0,
uos=False,
name='',
partner_id=False,
lang=False,
update_tax=True,
date_order=False,
packaging=False,
fiscal_position=False,
flag=False, context=None):
"""
check product if event type
"""
res = super(sale_order_line,self).product_id_change(cr, uid, ids, pricelist, product, qty=qty, uom=uom, qty_uos=qty_uos, uos=uos, name=name, partner_id=partner_id, lang=lang, update_tax=update_tax, date_order=date_order, packaging=packaging, fiscal_position=fiscal_position, flag=flag, context=context)
if product:
product_res = self.pool.get('product.product').browse(cr, uid, product, context=context)
if product_res.event_ok:
res['value'].update({'event_type_id': product_res.event_type_id.id, 'event_ok':product_res.event_ok})
return res
def button_confirm(self, cr, uid, ids, context=None):
'''
create registration with sale order
'''
registration_obj = self.pool.get('event.registration')
sale_obj = self.pool.get('sale.order')
for order_line in self.browse(cr, uid, ids, context=context):
if order_line.event_id.id:
dic = {
'name': order_line.order_id.partner_invoice_id.name,
'partner_id': order_line.order_id.partner_id.id,
'contact_id': order_line.order_id.partner_invoice_id.id,
'nb_register': int(order_line.product_uom_qty),
'email': order_line.order_id.partner_id.email,
'phone': order_line.order_id.partner_id.phone,
'street': order_line.order_id.partner_invoice_id.street,
'city': order_line.order_id.partner_invoice_id.city,
'origin': order_line.order_id.name,
'event_id': order_line.event_id.id,
}
registration_id = registration_obj.create(cr, uid, dic, context=context)
message = _("The registration %s has been created from the Sale Order %s.") % (registration_id, order_line.order_id.name)
registration_obj.log(cr, uid, registration_id, message)
return super(sale_order_line, self).button_confirm(cr, uid, ids, context=context)
+33
View File
@@ -0,0 +1,33 @@
<?xml version="1.0"?>
<openerp>
<data>
<record model="ir.ui.view" id="event_sale_order">
<field name="name">event.product</field>
<field name="model">product.product</field>
<field name="type">form</field>
<field name="inherit_id" ref="product.product_normal_form_view" />
<field name="arch" type="xml">
<field name="purchase_ok" position="after">
<field name="event_ok" on_change="onchange_event_ok(event_ok, context)"/>
</field>
<field name='supply_method' position='after'>
<field name="event_type_id" attrs="{'readonly': [('event_ok', '=', False)]}" groups="base.group_extended"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="event_order_line">
<field name="name">event.sale.order</field>
<field name="model">sale.order</field>
<field name="type">form</field>
<field name="inherit_id" ref="sale.view_order_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='discount']" position="after">
<field name="event_id" colspan="3" domain="[('type', 'in', list(set((event_type_id,False))))]" attrs="{'invisible': [('event_ok', '=', False)],'required': [('event_ok', '!=', False)]}"/>
<field name="event_type_id" invisible="1"/>
<field name="event_ok" invisible="1"/>
</xpath>
</field>
</record>
</data>
</openerp>
+54
View File
@@ -0,0 +1,54 @@
-
In order to test process of the Sale Order with an event product , I create sale order
-
First I create an event product
-
!record {model: product.product, id: event_product}:
name: test_formation
type: service
event_ok: True
event_type_id: 1
-
I create an event from the same type than my product
-
!record {model: event.event,id: event}:
name: test_event
type: 1
date_end: '2012-01-01 19:05:15'
date_begin: '2012-01-01 18:05:15'
-
I create a sale order
-
!record {model: sale.order, id: order}:
partner_id: base.res_partner_agrolait
note: Invoice after delivery
payment_term: account.account_payment_term
-
In the sale order I add some sale order lines. i choose event product
-
!record {model: sale.order.line, id: line}:
product_id: event_product
price_unit: 190.50
product_uom_qty: 8
order_id: order
name: sale order line
event_id: event
-
I confirm the sale order
-
!workflow {model: sale.order, ref: order, action: order_confirm}
-
I check if the sale order is confirmed
-
!assert {model: sale.order, id: order}:
- state == 'manual'
-
I check if a registration is created
-
!python {model: event.registration}: |
order_id = ref('order')
order = self.pool.get('sale.order').browse(cr, uid,order_id)
registration_ids = self.search(cr,uid,[('origin','=',order.name)])
if registration_ids == []:
raise osv.except_osv(_('Error!'),_("The registration is not created"))
@@ -0,0 +1,32 @@
# French 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-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-03-05 21:49+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: French <fr@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-03-06 04:48+0000\n"
"X-Generator: Launchpad (build 14900)\n"
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,help:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid ""
"You can synchronize the job email account (e.g. job@yourcompany.com) with "
"OpenERP so that new applicants are created automatically in OpenERP for the "
"followup of the recruitment process. Attachments are automatically stored in "
"the DMS of OpenERP so that you get an indexation of all the CVs received."
msgstr ""
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,name:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid "Create Applicants from Email Account"
msgstr ""
@@ -0,0 +1,32 @@
# Portuguese 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-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-02-29 22:48+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Portuguese <pt@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-03-02 04:36+0000\n"
"X-Generator: Launchpad (build 14886)\n"
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,help:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid ""
"You can synchronize the job email account (e.g. job@yourcompany.com) with "
"OpenERP so that new applicants are created automatically in OpenERP for the "
"followup of the recruitment process. Attachments are automatically stored in "
"the DMS of OpenERP so that you get an indexation of all the CVs received."
msgstr ""
#. module: fetchmail_hr_recruitment
#: model:ir.actions.act_window,name:fetchmail_hr_recruitment.action_link_applicant_to_email_account
msgid "Create Applicants from Email Account"
msgstr ""
+35
View File
@@ -0,0 +1,35 @@
# Gujarati 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-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-03-06 18:10+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Gujarati <gu@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-03-07 05:13+0000\n"
"X-Generator: Launchpad (build 14907)\n"
#. module: google_map
#: view:res.partner:0
#: view:res.partner.address:0
msgid "Map"
msgstr "નકશો"
#. module: google_map
#: model:ir.model,name:google_map.model_res_partner_address
msgid "Partner Addresses"
msgstr ""
#. module: google_map
#: view:res.partner:0
#: view:res.partner.address:0
msgid "Street2 : "
msgstr ""
+688
View File
@@ -0,0 +1,688 @@
# English (Australia) 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-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-03-04 11:36+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: English (Australia) <en_AU@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-03-05 04:42+0000\n"
"X-Generator: Launchpad (build 14900)\n"
#. module: hr
#: model:process.node,name:hr.process_node_openerpuser0
msgid "Openerp user"
msgstr ""
#. module: hr
#: view:hr.job:0 field:hr.job,requirements:0
msgid "Requirements"
msgstr "Requirements"
#. module: hr
#: constraint:hr.department:0
msgid "Error! You can not create recursive departments."
msgstr ""
#. module: hr
#: model:process.transition,name:hr.process_transition_contactofemployee0
msgid "Link the employee to information"
msgstr ""
#. module: hr
#: field:hr.employee,sinid:0
msgid "SIN No"
msgstr ""
#. module: hr
#: model:ir.ui.menu,name:hr.menu_hr_main
#: model:ir.ui.menu,name:hr.menu_hr_management
#: model:ir.ui.menu,name:hr.menu_hr_root
msgid "Human Resources"
msgstr ""
#. module: hr
#: view:hr.employee:0 view:hr.job:0
msgid "Group By..."
msgstr ""
#. module: hr
#: model:ir.actions.act_window,name:hr.view_department_form_installer
msgid "Create Your Departments"
msgstr ""
#. module: hr
#: model:ir.actions.act_window,help:hr.action_hr_job
msgid ""
"Job Positions are used to define jobs and their requirements. You can keep "
"track of the number of employees you have per job position and how many you "
"expect in the future. You can also attach a survey to a job position that "
"will be used in the recruitment process to evaluate the applicants for this "
"job position."
msgstr ""
#. module: hr
#: view:hr.employee:0 field:hr.employee,department_id:0 view:hr.job:0
#: field:hr.job,department_id:0 view:res.users:0
msgid "Department"
msgstr ""
#. module: hr
#: view:hr.job:0
msgid "Mark as Old"
msgstr ""
#. module: hr
#: view:hr.job:0
msgid "Jobs"
msgstr ""
#. module: hr
#: view:hr.job:0
msgid "In Recruitment"
msgstr ""
#. module: hr
#: field:hr.department,company_id:0 view:hr.employee:0 view:hr.job:0
#: field:hr.job,company_id:0
msgid "Company"
msgstr ""
#. module: hr
#: field:hr.job,no_of_recruitment:0
msgid "Expected in Recruitment"
msgstr ""
#. module: hr
#: model:ir.actions.todo.category,name:hr.category_hr_management_config
msgid "HR Management"
msgstr ""
#. module: hr
#: help:hr.employee,partner_id:0
msgid ""
"Partner that is related to the current employee. Accounting transaction will "
"be written on this partner belongs to employee."
msgstr ""
#. module: hr
#: model:process.transition,name:hr.process_transition_employeeuser0
msgid "Link a user to an employee"
msgstr ""
#. module: hr
#: field:hr.department,parent_id:0
msgid "Parent Department"
msgstr ""
#. module: hr
#: view:hr.employee:0 field:hr.employee,notes:0
msgid "Notes"
msgstr ""
#. module: hr
#: selection:hr.employee,marital:0
msgid "Married"
msgstr ""
#. module: hr
#: model:ir.actions.act_window,help:hr.action_create_hr_employee_installer
msgid ""
"Create employees form and link them to an OpenERP user if you want them to "
"access this instance. Categories can be set on employees to perform massive "
"operations on all the employees of the same category, i.e. allocating "
"holidays."
msgstr ""
#. module: hr
#: model:ir.actions.act_window,help:hr.open_module_tree_department
msgid ""
"Your Company's Department Structure is used to manage all documents related "
"to employees by departments: expenses and timesheet validation, leaves "
"management, recruitments, etc."
msgstr ""
#. module: hr
#: field:hr.employee,color:0
msgid "Color Index"
msgstr ""
#. module: hr
#: model:process.transition,note:hr.process_transition_employeeuser0
msgid ""
"The Related user field on the Employee form allows to link the OpenERP user "
"(and her rights) to the employee."
msgstr ""
#. module: hr
#: view:hr.job:0 selection:hr.job,state:0
msgid "In Recruitement"
msgstr ""
#. module: hr
#: field:hr.employee,identification_id:0
msgid "Identification No"
msgstr ""
#. module: hr
#: selection:hr.employee,gender:0
msgid "Female"
msgstr "Female"
#. module: hr
#: help:hr.job,expected_employees:0
msgid "Required number of employees in total for that job."
msgstr ""
#. module: hr
#: model:ir.ui.menu,name:hr.menu_open_view_attendance_reason_new_config
msgid "Attendance"
msgstr ""
#. module: hr
#: view:hr.employee:0
msgid "Social IDs"
msgstr ""
#. module: hr
#: field:hr.employee,work_phone:0
msgid "Work Phone"
msgstr "Work Phone"
#. module: hr
#: field:hr.employee.category,child_ids:0
msgid "Child Categories"
msgstr "Child Categories"
#. module: hr
#: view:hr.job:0 field:hr.job,description:0
#: model:ir.model,name:hr.model_hr_job
msgid "Job Description"
msgstr "Job Description"
#. module: hr
#: field:hr.employee,work_location:0
msgid "Office Location"
msgstr ""
#. module: hr
#: view:hr.employee:0
msgid "My Departments Employee"
msgstr ""
#. module: hr
#: view:hr.employee:0 model:ir.model,name:hr.model_hr_employee
#: model:process.node,name:hr.process_node_employee0
msgid "Employee"
msgstr "Employee"
#. module: hr
#: model:process.node,note:hr.process_node_employeecontact0
msgid "Other information"
msgstr ""
#. module: hr
#: field:hr.employee,work_email:0
msgid "Work E-mail"
msgstr ""
#. module: hr
#: field:hr.employee,birthday:0
msgid "Date of Birth"
msgstr ""
#. module: hr
#: model:ir.ui.menu,name:hr.menu_hr_reporting
msgid "Reporting"
msgstr ""
#. module: hr
#: model:ir.actions.act_window,name:hr.open_board_hr
#: model:ir.ui.menu,name:hr.menu_hr_dashboard_user
msgid "Human Resources Dashboard"
msgstr ""
#. module: hr
#: view:hr.employee:0 field:hr.employee,job_id:0 view:hr.job:0
msgid "Job"
msgstr ""
#. module: hr
#: field:hr.department,member_ids:0
msgid "Members"
msgstr ""
#. module: hr
#: model:ir.ui.menu,name:hr.menu_hr_configuration
msgid "Configuration"
msgstr ""
#. module: hr
#: view:hr.employee:0 field:hr.employee,category_ids:0
msgid "Categories"
msgstr ""
#. module: hr
#: field:hr.job,expected_employees:0
msgid "Expected Employees"
msgstr ""
#. module: hr
#: selection:hr.employee,marital:0
msgid "Divorced"
msgstr ""
#. module: hr
#: field:hr.employee.category,parent_id:0
msgid "Parent Category"
msgstr ""
#. module: hr
#: constraint:hr.employee.category:0
msgid "Error ! You cannot create recursive Categories."
msgstr ""
#. module: hr
#: view:hr.department:0
#: model:ir.actions.act_window,name:hr.open_module_tree_department
#: model:ir.ui.menu,name:hr.menu_hr_department_tree
#: field:res.users,context_department_id:0
msgid "Departments"
msgstr ""
#. module: hr
#: model:process.node,name:hr.process_node_employeecontact0
msgid "Employee Contact"
msgstr ""
#. module: hr
#: view:board.board:0
msgid "My Board"
msgstr ""
#. module: hr
#: selection:hr.employee,gender:0
msgid "Male"
msgstr ""
#. module: hr
#: 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 Employee"
msgstr ""
#. module: hr
#: view:hr.employee.category:0
#: model:ir.model,name:hr.model_hr_employee_category
msgid "Employee Category"
msgstr ""
#. module: hr
#: model:process.process,name:hr.process_process_employeecontractprocess0
msgid "Employee Contract"
msgstr ""
#. module: hr
#: model:ir.model,name:hr.model_hr_department
msgid "hr.department"
msgstr ""
#. module: hr
#: model:ir.actions.act_window,name:hr.action_create_hr_employee_installer
msgid "Create your Employees"
msgstr ""
#. module: hr
#: field:hr.employee.category,name:0
msgid "Category"
msgstr ""
#. module: hr
#: model:ir.actions.act_window,help:hr.open_view_employee_list_my
msgid ""
"Here you can manage your work force by creating employees and assigning them "
"specific properties in the system. Maintain all employee related information "
"and keep track of anything that needs to be recorded for them. The personal "
"information tab will help you maintain their identity data. The Categories "
"tab gives you the opportunity to assign them related employee categories "
"depending on their position and activities within the company. A category "
"can be a seniority level within the company or a department. The Timesheets "
"tab allows to assign them a specific timesheet and analytic journal where "
"they will be able to enter time through the system. In the note tab, you can "
"enter text data that should be recorded for a specific employee."
msgstr ""
#. module: hr
#: help:hr.employee,bank_account_id:0
msgid "Employee bank salary account"
msgstr ""
#. module: hr
#: field:hr.department,note:0
msgid "Note"
msgstr ""
#. module: hr
#: model:ir.actions.act_window,name:hr.open_view_employee_tree
msgid "Employees Structure"
msgstr ""
#. module: hr
#: constraint:res.users:0
msgid "The chosen company is not in the allowed companies for this user"
msgstr ""
#. module: hr
#: view:hr.employee:0
msgid "Contact Information"
msgstr ""
#. module: hr
#: field:hr.employee,address_id:0
msgid "Working Address"
msgstr ""
#. module: hr
#: model:ir.actions.act_window,name:hr.open_board_hr_manager
#: model:ir.ui.menu,name:hr.menu_hr_dashboard_manager
msgid "HR Manager Dashboard"
msgstr ""
#. module: hr
#: field:hr.department,child_ids:0
msgid "Child Departments"
msgstr ""
#. module: hr
#: view:hr.employee:0
msgid "Status"
msgstr ""
#. module: hr
#: model:ir.actions.act_window,name:hr.open_view_categ_tree
#: model:ir.ui.menu,name:hr.menu_view_employee_category_tree
msgid "Categories structure"
msgstr ""
#. module: hr
#: field:hr.employee,partner_id:0
msgid "unknown"
msgstr ""
#. module: hr
#: help:hr.job,no_of_employee:0
msgid "Number of employees with that job."
msgstr ""
#. module: hr
#: field:hr.employee,ssnid:0
msgid "SSN No"
msgstr ""
#. module: hr
#: view:hr.employee:0
msgid "Active"
msgstr ""
#. module: hr
#: constraint:hr.employee:0
msgid "Error ! You cannot create recursive Hierarchy of Employees."
msgstr ""
#. module: hr
#: model:ir.actions.act_window,name:hr.action2
msgid "Subordonate Hierarchy"
msgstr ""
#. module: hr
#: model:ir.actions.act_window,help:hr.view_department_form_installer
msgid ""
"Your departments structure is used to manage all documents related to "
"employees by departments: expenses and timesheet validation, leaves "
"management, recruitments, etc."
msgstr ""
#. module: hr
#: field:hr.employee,bank_account_id:0
msgid "Bank Account Number"
msgstr ""
#. module: hr
#: view:hr.department:0
msgid "Companies"
msgstr ""
#. module: hr
#: model:process.transition,note:hr.process_transition_contactofemployee0
msgid ""
"In the Employee form, there are different kind of information like Contact "
"information."
msgstr ""
#. module: hr
#: model:ir.ui.menu,name:hr.menu_hr_dashboard
msgid "Dashboard"
msgstr ""
#. module: hr
#: selection:hr.job,state:0
msgid "Old"
msgstr ""
#. module: hr
#: sql_constraint:res.users:0
msgid "You can not have two users with the same login !"
msgstr ""
#. module: hr
#: view:hr.job:0 field:hr.job,state:0
msgid "State"
msgstr ""
#. module: hr
#: field:hr.employee,marital:0
msgid "Marital Status"
msgstr ""
#. module: hr
#: model:ir.model,name:hr.model_ir_actions_act_window
msgid "ir.actions.act_window"
msgstr ""
#. module: hr
#: model:process.node,note:hr.process_node_employee0
msgid "Employee form and structure"
msgstr ""
#. module: hr
#: field:hr.employee,photo:0
msgid "Photo"
msgstr ""
#. module: hr
#: model:ir.model,name:hr.model_res_users
msgid "res.users"
msgstr ""
#. module: hr
#: view:hr.employee:0
msgid "Personal Information"
msgstr ""
#. module: hr
#: field:hr.employee,city:0
msgid "City"
msgstr ""
#. module: hr
#: field:hr.employee,passport_id:0
msgid "Passport No"
msgstr ""
#. module: hr
#: field:hr.employee,mobile_phone:0
msgid "Work Mobile"
msgstr ""
#. module: hr
#: view:hr.employee.category:0
msgid "Employees Categories"
msgstr ""
#. module: hr
#: field:hr.employee,address_home_id:0
msgid "Home Address"
msgstr ""
#. module: hr
#: view:hr.job:0
msgid "Description"
msgstr ""
#. module: hr
#: selection:hr.employee,marital:0
msgid "Single"
msgstr ""
#. module: hr
#: field:hr.job,name:0
msgid "Job Name"
msgstr ""
#. module: hr
#: view:hr.job:0 selection:hr.job,state:0
msgid "In Position"
msgstr ""
#. module: hr
#: view:hr.department:0
msgid "department"
msgstr ""
#. module: hr
#: field:hr.employee,country_id:0
msgid "Nationality"
msgstr ""
#. module: hr
#: model:ir.ui.menu,name:hr.menu_open_view_attendance_reason_config
msgid "Leaves"
msgstr ""
#. module: hr
#: view:board.board:0
msgid "HR Manager Board"
msgstr ""
#. module: hr
#: field:hr.employee,resource_id:0
msgid "Resource"
msgstr ""
#. module: hr
#: field:hr.department,complete_name:0
#: field:hr.employee.category,complete_name:0
msgid "Name"
msgstr ""
#. module: hr
#: field:hr.employee,gender:0
msgid "Gender"
msgstr ""
#. module: hr
#: view:hr.employee:0 view:hr.employee.category:0
#: field:hr.employee.category,employee_ids:0 view:hr.job:0
#: field:hr.job,employee_ids:0
#: model:ir.actions.act_window,name:hr.hr_employee_normal_action_tree
#: model:ir.actions.act_window,name:hr.open_view_employee_list
#: model:ir.actions.act_window,name:hr.open_view_employee_list_my
#: model:ir.ui.menu,name:hr.menu_open_view_employee_list_my
#: model:ir.ui.menu,name:hr.menu_view_employee_category_configuration_form
msgid "Employees"
msgstr ""
#. module: hr
#: help:hr.employee,sinid:0
msgid "Social Insurance Number"
msgstr ""
#. module: hr
#: field:hr.department,name:0
msgid "Department Name"
msgstr ""
#. module: hr
#: help:hr.employee,ssnid:0
msgid "Social Security Number"
msgstr ""
#. module: hr
#: model:process.node,note:hr.process_node_openerpuser0
msgid "Creation of a OpenERP user"
msgstr ""
#. module: hr
#: field:hr.employee,login:0
msgid "Login"
msgstr ""
#. module: hr
#: view:hr.employee:0
msgid "Job Information"
msgstr ""
#. module: hr
#: model:ir.actions.act_window,name:hr.action_hr_job
#: model:ir.ui.menu,name:hr.menu_hr_job
msgid "Job Positions"
msgstr ""
#. module: hr
#: field:hr.employee,otherid:0
msgid "Other Id"
msgstr ""
#. module: hr
#: view:hr.employee:0 field:hr.employee,coach_id:0
msgid "Coach"
msgstr ""
#. module: hr
#: sql_constraint:hr.job:0
msgid "The name of the job position must be unique per company!"
msgstr ""
#. module: hr
#: view:hr.job:0
msgid "My Departments Jobs"
msgstr ""
#. module: hr
#: field:hr.department,manager_id:0 view:hr.employee:0
#: field:hr.employee,parent_id:0
msgid "Manager"
msgstr ""
#. module: hr
#: selection:hr.employee,marital:0
msgid "Widower"
msgstr ""
#. module: hr
#: field:hr.employee,child_ids:0
msgid "Subordinates"
msgstr ""
#. module: hr
#: field:hr.job,no_of_employee:0
msgid "Number of Employees"
msgstr ""
File diff suppressed because it is too large Load Diff
+140
View File
@@ -0,0 +1,140 @@
# Gujarati 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-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-03-06 18:24+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Gujarati <gu@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-03-07 05:13+0000\n"
"X-Generator: Launchpad (build 14907)\n"
#. module: hr_payroll_account
#: field:hr.payslip,move_id:0
msgid "Accounting Entry"
msgstr ""
#. module: hr_payroll_account
#: field:hr.salary.rule,account_tax_id:0
msgid "Tax Code"
msgstr ""
#. module: hr_payroll_account
#: field:hr.payslip,journal_id:0
#: field:hr.payslip.run,journal_id:0
msgid "Expense Journal"
msgstr ""
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:157
#: code:addons/hr_payroll_account/hr_payroll_account.py:173
#, python-format
msgid "Adjustment Entry"
msgstr ""
#. module: hr_payroll_account
#: field:hr.contract,analytic_account_id:0
#: field:hr.salary.rule,analytic_account_id:0
msgid "Analytic Account"
msgstr "વિશ્લેષણાત્મક ખાતું"
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_salary_rule
msgid "hr.salary.rule"
msgstr ""
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_payslip_run
msgid "Payslip Batches"
msgstr ""
#. module: hr_payroll_account
#: field:hr.contract,journal_id:0
msgid "Salary Journal"
msgstr ""
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_payslip
msgid "Pay Slip"
msgstr ""
#. module: hr_payroll_account
#: constraint:hr.payslip:0
msgid "Payslip 'Date From' must be before 'Date To'."
msgstr ""
#. module: hr_payroll_account
#: help:hr.payslip,period_id:0
msgid "Keep empty to use the period of the validation(Payslip) date."
msgstr ""
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:171
#, python-format
msgid ""
"The Expense Journal \"%s\" has not properly configured the Debit Account!"
msgstr ""
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:155
#, python-format
msgid ""
"The Expense Journal \"%s\" has not properly configured the Credit Account!"
msgstr ""
#. module: hr_payroll_account
#: field:hr.salary.rule,account_debit:0
msgid "Debit Account"
msgstr ""
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:102
#, python-format
msgid "Payslip of %s"
msgstr ""
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_contract
msgid "Contract"
msgstr "કરાર"
#. module: hr_payroll_account
#: constraint:hr.contract:0
msgid "Error! contract start-date must be lower then contract end-date."
msgstr ""
#. module: hr_payroll_account
#: field:hr.payslip,period_id:0
msgid "Force Period"
msgstr ""
#. module: hr_payroll_account
#: field:hr.salary.rule,account_credit:0
msgid "Credit Account"
msgstr ""
#. module: hr_payroll_account
#: model:ir.model,name:hr_payroll_account.model_hr_payslip_employees
msgid "Generate payslips for all selected employees"
msgstr ""
#. module: hr_payroll_account
#: code:addons/hr_payroll_account/hr_payroll_account.py:155
#: code:addons/hr_payroll_account/hr_payroll_account.py:171
#, python-format
msgid "Configuration Error!"
msgstr "રેખાંકન ભૂલ"
#. module: hr_payroll_account
#: view:hr.contract:0
#: view:hr.salary.rule:0
msgid "Accounting"
msgstr "ગણતરી"
+100
View File
@@ -0,0 +1,100 @@
# French 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-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-03-05 21:56+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: French <fr@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-03-06 04:48+0000\n"
"X-Generator: Launchpad (build 14900)\n"
#. module: import_base
#: code:addons/import_base/import_framework.py:434
#, python-format
msgid "Import failed due to an unexpected error"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:461
#, python-format
msgid "started at %s and finished at %s \n"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:448
#, python-format
msgid "Import of your data finished at %s"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:463
#, python-format
msgid ""
"but failed, in consequence no data were imported to keep database "
"consistency \n"
" error : \n"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:477
#, python-format
msgid ""
"The import of data \n"
" instance name : %s \n"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:470
#, python-format
msgid "%s has been successfully imported from %s %s, %s \n"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:447
#, python-format
msgid "Data Import failed at %s due to an unexpected error"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:436
#, python-format
msgid "Import finished, notification email sended"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:190
#, python-format
msgid "%s is not a valid model name"
msgstr ""
#. module: import_base
#: model:ir.ui.menu,name:import_base.menu_import_crm
msgid "Import"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:467
#, python-format
msgid "with no warning"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:469
#, python-format
msgid "with warning : %s"
msgstr ""
#. module: import_base
#: code:addons/import_base/import_framework.py:191
#, python-format
msgid " fields imported : "
msgstr ""
+404
View File
@@ -0,0 +1,404 @@
# Arabic 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-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-03-05 11:30+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic <ar@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-03-06 04:48+0000\n"
"X-Generator: Launchpad (build 14900)\n"
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/import_sugarcrm.py:1105
#: code:addons/import_sugarcrm/import_sugarcrm.py:1131
#, python-format
msgid "Error !!"
msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid ""
"Use the SugarSoap API URL (read tooltip) and a full access SugarCRM login."
msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "(Coming Soon)"
msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,document:0
msgid "Documents"
msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Import your data from SugarCRM :"
msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid ""
"Choose data you want to import. Click 'Import' to get data manually or "
"'Schedule Reccurent Imports' to get recurrently and automatically data."
msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,contact:0
msgid "Contacts"
msgstr "جهات الاتصال"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "HR"
msgstr ""
#. module: import_sugarcrm
#: help:import.sugarcrm,bug:0
msgid "Check this box to import sugarCRM Bugs into OpenERP project issues"
msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,instance_name:0
msgid "Instance's Name"
msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,project_task:0
msgid "Project Tasks"
msgstr "مهام المشروع"
#. module: import_sugarcrm
#: field:import.sugarcrm,email_from:0
msgid "Notify End Of Import To:"
msgstr ""
#. module: import_sugarcrm
#: help:import.sugarcrm,user:0
msgid ""
"Check this box to import sugarCRM Users into OpenERP users, warning if a "
"user with the same login exist in OpenERP, user information will be erase by "
"sugarCRM user information"
msgstr ""
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/sugarsoap_services.py:23
#, python-format
msgid "Please install SOAP for python - ZSI-2.0-rc3.tar.gz - python-zci"
msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "_Schedule Recurrent Imports"
msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid ""
"Do not forget the email address to be notified of the success of the import."
msgstr ""
#. module: import_sugarcrm
#: help:import.sugarcrm,call:0
msgid "Check this box to import sugarCRM Calls into OpenERP calls"
msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid ""
"If you make recurrent or ponctual import, data already in OpenERP will be "
"updated by SugarCRM data."
msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,employee:0
msgid "Employee"
msgstr "الموظف"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Document"
msgstr "مستند"
#. module: import_sugarcrm
#: help:import.sugarcrm,document:0
msgid "Check this box to import sugarCRM Documents into OpenERP documents"
msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Import Data From SugarCRM"
msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "CRM"
msgstr ""
#. module: import_sugarcrm
#: view:import.message:0
msgid ""
"Data are importing, the process is running in the background, an email will "
"be sent to the given email address if it was defined."
msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,call:0
msgid "Calls"
msgstr "مكالمات"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Multi Instance Management"
msgstr ""
#. module: import_sugarcrm
#: view:import.message:0
msgid "_Ok"
msgstr "_موافق"
#. module: import_sugarcrm
#: help:import.sugarcrm,opportunity:0
msgid ""
"Check this box to import sugarCRM Leads and Opportunities into OpenERP Leads "
"and Opportunities"
msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,email_history:0
msgid "Email and Note"
msgstr ""
#. module: import_sugarcrm
#: help:import.sugarcrm,url:0
msgid ""
"Webservice's url where to get the data. example : "
"'http://example.com/sugarcrm/soap.php', or copy the address of your sugarcrm "
"application "
"http://trial.sugarcrm.com/qbquyj4802/index.php?module=Home&action=index"
msgstr ""
#. module: import_sugarcrm
#: model:ir.actions.act_window,name:import_sugarcrm.action_import_sugarcrm
#: model:ir.ui.menu,name:import_sugarcrm.menu_sugarcrm_import
msgid "Import SugarCRM"
msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "_Import"
msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,user:0
msgid "User"
msgstr ""
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/import_sugarcrm.py:1105
#: code:addons/import_sugarcrm/import_sugarcrm.py:1131
#, python-format
msgid "%s data required %s Module to be installed, Please install %s module"
msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,claim:0
msgid "Cases"
msgstr ""
#. module: import_sugarcrm
#: help:import.sugarcrm,meeting:0
msgid ""
"Check this box to import sugarCRM Meetings and Tasks into OpenERP meetings"
msgstr ""
#. module: import_sugarcrm
#: help:import.sugarcrm,email_history:0
msgid ""
"Check this box to import sugarCRM Emails, Notes and Attachments into OpenERP "
"Messages and Attachments"
msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,project:0
msgid "Projects"
msgstr ""
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/sugarsoap_services_types.py:14
#, python-format
msgid ""
"Please install SOAP for python - ZSI-2.0-rc3.tar.gz from "
"http://pypi.python.org/pypi/ZSI/"
msgstr ""
#. module: import_sugarcrm
#: help:import.sugarcrm,project:0
msgid "Check this box to import sugarCRM Projects into OpenERP projects"
msgstr ""
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/import_sugarcrm.py:1098
#: code:addons/import_sugarcrm/import_sugarcrm.py:1124
#, python-format
msgid "Select Module to Import."
msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,meeting:0
msgid "Meetings"
msgstr ""
#. module: import_sugarcrm
#: help:import.sugarcrm,employee:0
msgid "Check this box to import sugarCRM Employees into OpenERP employees"
msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,url:0
msgid "SugarSoap Api url:"
msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Address Book"
msgstr ""
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/sugar.py:60
#, python-format
msgid ""
"Authentication error !\n"
"Bad Username or Password bad SugarSoap Api url !"
msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,bug:0
msgid "Bugs"
msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Project"
msgstr ""
#. module: import_sugarcrm
#: help:import.sugarcrm,project_task:0
msgid "Check this box to import sugarCRM Project Tasks into OpenERP tasks"
msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,opportunity:0
msgid "Leads & Opp"
msgstr ""
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/import_sugarcrm.py:79
#, python-format
msgid ""
"Authentication error !\n"
"Bad Username or Password or bad SugarSoap Api url !"
msgstr ""
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/import_sugarcrm.py:79
#: code:addons/import_sugarcrm/sugar.py:60
#, python-format
msgid "Error !"
msgstr ""
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/import_sugarcrm.py:1098
#: code:addons/import_sugarcrm/import_sugarcrm.py:1124
#, python-format
msgid "Warning !"
msgstr ""
#. module: import_sugarcrm
#: help:import.sugarcrm,instance_name:0
msgid ""
"Prefix of SugarCRM id to differentiate xml_id of SugarCRM models datas come "
"from different server."
msgstr ""
#. module: import_sugarcrm
#: help:import.sugarcrm,contact:0
msgid "Check this box to import sugarCRM Contacts into OpenERP addresses"
msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,password:0
msgid "Password"
msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Login Information"
msgstr ""
#. module: import_sugarcrm
#: help:import.sugarcrm,claim:0
msgid "Check this box to import sugarCRM Cases into OpenERP claims"
msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Email Notification When Import is finished"
msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,username:0
msgid "User Name"
msgstr ""
#. module: import_sugarcrm
#: view:import.message:0
#: model:ir.model,name:import_sugarcrm.model_import_message
msgid "Import Message"
msgstr ""
#. module: import_sugarcrm
#: help:import.sugarcrm,account:0
msgid "Check this box to import sugarCRM Accounts into OpenERP partners"
msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Online documentation:"
msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,account:0
msgid "Accounts"
msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "_Cancel"
msgstr ""
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/sugarsoap_services.py:23
#: code:addons/import_sugarcrm/sugarsoap_services_types.py:14
#, python-format
msgid "ZSI Import Error!"
msgstr ""
#. module: import_sugarcrm
#: model:ir.model,name:import_sugarcrm.model_import_sugarcrm
msgid "Import SugarCRM DATA"
msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Email Address to Notify"
msgstr ""
+31 -33
View File
@@ -681,7 +681,7 @@ openerp.point_of_sale = function(db) {
}, this));
return (this.shop.get('selectedOrder')).addPaymentLine(cashRegister);
},
render_element: function() {
renderElement: function() {
this.$element.empty();
return (this.shop.get('cashRegisters')).each(_.bind( function(cashRegister) {
var button = new PaymentButtonWidget();
@@ -692,7 +692,7 @@ openerp.point_of_sale = function(db) {
});
var PaymentButtonWidget = db.web.OldWidget.extend({
template_fct: qweb_template('pos-payment-button-template'),
render_element: function() {
renderElement: function() {
this.$element.html(this.template_fct({
id: this.model.get('id'),
name: (this.model.get('journal_id'))[1]
@@ -735,7 +735,7 @@ openerp.point_of_sale = function(db) {
Shopping carts.
*/
var OrderlineWidget = db.web.OldWidget.extend({
tag_name: 'tr',
tagName: 'tr',
template_fct: qweb_template('pos-orderline-template'),
init: function(parent, options) {
this._super(parent);
@@ -755,12 +755,12 @@ openerp.point_of_sale = function(db) {
clickHandler: function() {
this.select();
},
render_element: function() {
renderElement: function() {
this.$element.html(this.template_fct(this.model.toJSON()));
this.select();
},
refresh: function() {
this.render_element();
this.renderElement();
var heights = _.map(this.$element.prevAll(), function(el) {return $(el).outerHeight();});
heights.push($('#current-order thead').outerHeight());
var position = _.reduce(heights, function(memo, num){ return memo + num; }, 0);
@@ -805,12 +805,12 @@ openerp.point_of_sale = function(db) {
changeSelectedOrder: function() {
this.currentOrderLines.unbind();
this.bindOrderLineEvents();
this.render_element();
this.renderElement();
},
bindOrderLineEvents: function() {
this.currentOrderLines = (this.shop.get('selectedOrder')).get('orderLines');
this.currentOrderLines.bind('add', this.addLine, this);
this.currentOrderLines.bind('remove', this.render_element, this);
this.currentOrderLines.bind('remove', this.renderElement, this);
},
addLine: function(newLine) {
var line = new OrderlineWidget(null, {
@@ -832,7 +832,7 @@ openerp.point_of_sale = function(db) {
this.numpadState.reset();
this.updateSummary();
},
render_element: function() {
renderElement: function() {
this.$element.empty();
this.currentOrderLines.each(_.bind( function(orderLine) {
var line = new OrderlineWidget(null, {
@@ -863,7 +863,7 @@ openerp.point_of_sale = function(db) {
this.$element.find(".oe-pos-categories-list a").click(_.bind(this.changeCategory, this));
},
template_fct: qweb_template('pos-category-template'),
render_element: function() {
renderElement: function() {
var self = this;
var c;
this.$element.html(this.template_fct({
@@ -894,7 +894,7 @@ openerp.point_of_sale = function(db) {
on_change_category: function(id) {},
});
var ProductWidget = db.web.OldWidget.extend({
tag_name:'li',
tagName:'li',
template_fct: qweb_template('pos-product-template'),
init: function(parent, options) {
this._super(parent);
@@ -909,7 +909,7 @@ openerp.point_of_sale = function(db) {
event.preventDefault();
return (this.shop.get('selectedOrder')).addProduct(this.model);
},
render_element: function() {
renderElement: function() {
this.$element.addClass("product");
this.$element.html(this.template_fct(this.model.toJSON()));
return this;
@@ -920,9 +920,9 @@ openerp.point_of_sale = function(db) {
this._super(parent);
this.model = options.model;
this.shop = options.shop;
this.shop.get('products').bind('reset', this.render_element, this);
this.shop.get('products').bind('reset', this.renderElement, this);
},
render_element: function() {
renderElement: function() {
this.$element.empty();
(this.shop.get('products')).each(_.bind( function(product) {
var p = new ProductWidget(null, {
@@ -938,7 +938,7 @@ openerp.point_of_sale = function(db) {
"Payment" step.
*/
var PaymentlineWidget = db.web.OldWidget.extend({
tag_name: 'tr',
tagName: 'tr',
template_fct: qweb_template('pos-paymentline-template'),
init: function(parent, options) {
this._super(parent);
@@ -958,9 +958,9 @@ openerp.point_of_sale = function(db) {
},
changedAmount: function() {
if (this.amount !== this.model.get('amount'))
this.render_element();
this.renderElement();
},
render_element: function() {
renderElement: function() {
this.amount = this.model.get('amount');
this.$element.html(this.template_fct({
name: (this.model.get('journal_id'))[1],
@@ -1004,7 +1004,7 @@ openerp.point_of_sale = function(db) {
bindPaymentLineEvents: function() {
this.currentPaymentLines = (this.shop.get('selectedOrder')).get('paymentLines');
this.currentPaymentLines.bind('add', this.addPaymentLine, this);
this.currentPaymentLines.bind('remove', this.render_element, this);
this.currentPaymentLines.bind('remove', this.renderElement, this);
this.currentPaymentLines.bind('all', this.updatePaymentSummary, this);
},
bindOrderLineEvents: function() {
@@ -1016,7 +1016,7 @@ openerp.point_of_sale = function(db) {
this.bindPaymentLineEvents();
this.currentOrderLines.unbind();
this.bindOrderLineEvents();
this.render_element();
this.renderElement();
},
addPaymentLine: function(newPaymentLine) {
var x = new PaymentlineWidget(null, {
@@ -1025,7 +1025,7 @@ openerp.point_of_sale = function(db) {
x.on_delete.add(_.bind(this.deleteLine, this, x));
x.appendTo(this.paymentLineList());
},
render_element: function() {
renderElement: function() {
this.paymentLineList().empty();
this.currentPaymentLines.each(_.bind( function(paymentLine) {
this.addPaymentLine(paymentLine);
@@ -1079,7 +1079,7 @@ openerp.point_of_sale = function(db) {
this.shop.bind('change:selectedOrder', this.changeSelectedOrder, this);
this.changeSelectedOrder();
},
render_element: function() {
renderElement: function() {
this.$element.html(qweb_template('pos-receipt-view'));
$('button#pos-finish-order', this.$element).click(_.bind(this.finishOrder, this));
$('button#print-the-ticket', this.$element).click(_.bind(this.print, this));
@@ -1109,7 +1109,7 @@ openerp.point_of_sale = function(db) {
},
});
var OrderButtonWidget = db.web.OldWidget.extend({
tag_name: 'li',
tagName: 'li',
template_fct: qweb_template('pos-order-selector-button-template'),
init: function(parent, options) {
this._super(parent);
@@ -1142,7 +1142,7 @@ openerp.point_of_sale = function(db) {
closeOrder: function(event) {
this.order.destroy();
},
render_element: function() {
renderElement: function() {
this.$element.html(this.template_fct({widget:this}));
this.$element.addClass('order-selector-button');
}
@@ -1161,13 +1161,13 @@ openerp.point_of_sale = function(db) {
shop: this.shop
});
this.productListView.$element = $("#products-screen-ol");
this.productListView.render_element();
this.productListView.renderElement();
this.productListView.start();
this.paypadView = new PaypadWidget(null, {
shop: this.shop
});
this.paypadView.$element = $('#paypad');
this.paypadView.render_element();
this.paypadView.renderElement();
this.paypadView.start();
this.numpadView = new NumpadWidget(null);
this.numpadView.$element = $('#numpad');
@@ -1181,7 +1181,7 @@ openerp.point_of_sale = function(db) {
shop: this.shop
});
this.paymentView.$element = $('#payment-screen');
this.paymentView.render_element();
this.paymentView.renderElement();
this.paymentView.start();
this.receiptView = new ReceiptWidget(null, {
shop: this.shop,
@@ -1251,7 +1251,7 @@ openerp.point_of_sale = function(db) {
c = pos.categories[id];
this.categoryView.ancestors = c.ancestors;
this.categoryView.children = c.children;
this.categoryView.render_element();
this.categoryView.renderElement();
this.categoryView.start();
products = pos.store.get('product.product').filter( function(p) {
var _ref;
@@ -1288,13 +1288,13 @@ openerp.point_of_sale = function(db) {
this._super.apply(this, arguments);
this.nbr_pending = 0;
},
render_element: function() {
renderElement: function() {
this._super.apply(this, arguments);
$('.oe_pos_synch-notification-button', this.$element).click(this.on_synch);
},
on_change_nbr_pending: function(nbr_pending) {
this.nbr_pending = nbr_pending;
this.render_element();
this.renderElement();
},
on_synch: function() {}
});
@@ -1312,7 +1312,7 @@ openerp.point_of_sale = function(db) {
start: function() {
var self = this;
return pos.ready.then(_.bind(function() {
this.render_element();
this.renderElement();
this.synch_notification = new db.point_of_sale.SynchNotification(this);
this.synch_notification.replace($('.oe_pos_synch-notification', this.$element));
this.synch_notification.on_synch.add(_.bind(pos.flush, pos));
@@ -1325,8 +1325,7 @@ openerp.point_of_sale = function(db) {
});
pos.app = new App(self.$element);
$('.oe_toggle_secondary_menu').hide();
$('.oe_footer').hide();
db.webclient.set_content_full_screen(true);
if (pos.store.get('account.bank.statement').length === 0)
return new db.web.Model("ir.model.data").get_func("search_read")([['name', '=', 'action_pos_open_statement']], ['res_id']).pipe(
@@ -1384,8 +1383,7 @@ openerp.point_of_sale = function(db) {
}, this));
},
destroy: function() {
$('.oe_footer').show();
$('.oe_toggle_secondary_menu').show();
db.webclient.set_content_full_screen(false);
pos = undefined;
this._super();
}
File diff suppressed because it is too large Load Diff
+105
View File
@@ -0,0 +1,105 @@
# Dutch (Belgium) 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-02-08 00:37+0000\n"
"PO-Revision-Date: 2012-03-01 15:19+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Dutch (Belgium) <nl_BE@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-03-02 04:36+0000\n"
"X-Generator: Launchpad (build 14886)\n"
#. module: project_mailgate
#: view:project.task:0
msgid "History Information"
msgstr "Historiekinformatie"
#. module: project_mailgate
#: model:ir.model,name:project_mailgate.model_project_task
msgid "Task"
msgstr "Taak"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr "U kunt niet dezelfde taken maken."
#. module: project_mailgate
#: field:project.task,message_ids:0
msgid "Messages"
msgstr "Berichten"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:90
#, python-format
msgid "Draft"
msgstr "Voorlopig"
#. module: project_mailgate
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
"Let op: de einddatum van de taak moet na de begindatum van de taak liggen"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:116
#, python-format
msgid "Cancel"
msgstr "Annuleren"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:110
#, python-format
msgid "Done"
msgstr "Gereed"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:96
#, python-format
msgid "Open"
msgstr "Open"
#. module: project_mailgate
#: code:addons/project_mailgate/project_mailgate.py:102
#, python-format
msgid "Pending"
msgstr "Wachtend"
#. module: project_mailgate
#: view:project.task:0
msgid "History"
msgstr "Historiek"
#~ msgid ""
#~ "This module is an interface that synchronises mails with OpenERP Project "
#~ "Task.\n"
#~ "\n"
#~ "It allows creating tasks as soon as a new mail arrives in our configured "
#~ "mail server.\n"
#~ "Moreover, it keeps track of all further communications and task states.\n"
#~ " "
#~ msgstr ""
#~ "Deze module is een interface waarmee mails met OpenERP-projecttaken worden "
#~ "gesynchroniseerd.\n"
#~ "\n"
#~ "Hiermee worden taken gemaakt zodra een nieuwe mail binnenkomt via de "
#~ "ingestelde mailserver.\n"
#~ "Bovendien worden alle communicatie en taakstatussen bijgehouden.\n"
#~ " "
#~ msgid "Attachments"
#~ msgstr "Bijlagen"
#~ msgid "Project MailGateWay"
#~ msgstr "Projectmailgateway"
#~ msgid "Details"
#~ msgstr "Details"
+77
View File
@@ -0,0 +1,77 @@
# Dutch (Belgium) 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-02-08 00:37+0000\n"
"PO-Revision-Date: 2012-03-01 12:37+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Dutch (Belgium) <nl_BE@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-03-02 04:36+0000\n"
"X-Generator: Launchpad (build 14886)\n"
#. module: sale_mrp
#: help:mrp.production,sale_ref:0
msgid "Indicate the Customer Reference from sales order."
msgstr "Toont de klantenreferentie van de verkooporder."
#. module: sale_mrp
#: field:mrp.production,sale_ref:0
msgid "Sales Reference"
msgstr "Verkoopreferentie"
#. module: sale_mrp
#: model:ir.model,name:sale_mrp.model_mrp_production
msgid "Manufacturing Order"
msgstr "Productieorder"
#. module: sale_mrp
#: field:mrp.production,sale_name:0
msgid "Sales Name"
msgstr "Verkoopnaam"
#. module: sale_mrp
#: sql_constraint:mrp.production:0
msgid "Reference must be unique per Company!"
msgstr ""
#. module: sale_mrp
#: constraint:mrp.production:0
msgid "Order quantity cannot be negative or zero!"
msgstr ""
#. module: sale_mrp
#: help:mrp.production,sale_name:0
msgid "Indicate the name of sales order."
msgstr "Toont de naam van de verkooporder"
#~ msgid "Sales and MRP Management"
#~ msgstr "Verkoop- en productiebeheer"
#~ msgid "Order quantity cannot be negative or zero !"
#~ msgstr "De bestelde hoeveelheid kan niet negatief of nul zijn."
#~ msgid ""
#~ "\n"
#~ " This module provides facility to the user to install mrp and sales "
#~ "modules\n"
#~ " at a time. It is basically used when we want to keep track of "
#~ "production\n"
#~ " orders generated from sales order.\n"
#~ " It adds sales name and sales Reference on production order\n"
#~ " "
#~ msgstr ""
#~ "\n"
#~ " Deze module geeft de mogelijkheid om productie- en verkoopmodules\n"
#~ " tegelijk te installeren. Doorgaans gebruiken we deze module om "
#~ "productieorders op basis van verkooporders op te volgen.\n"
#~ " Deze module voegt verkoopnaam en verkoopreferentie toe aan een "
#~ "productieorder.\n"
#~ " "
+8 -8
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-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-02-16 15:22+0000\n"
"Last-Translator: Numérigraphe <Unknown>\n"
"PO-Revision-Date: 2012-03-05 14:29+0000\n"
"Last-Translator: gde (OpenERP) <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-02-17 04:58+0000\n"
"X-Generator: Launchpad (build 14814)\n"
"X-Launchpad-Export-Date: 2012-03-06 04:48+0000\n"
"X-Generator: Launchpad (build 14900)\n"
#. module: stock
#: field:stock.inventory.line,product_uom:0
@@ -238,7 +238,7 @@ msgstr "Vous ne pouvez supprimer aucun enregistrement !"
#. module: stock
#: view:stock.picking:0
msgid "Delivery orders to invoice"
msgstr ""
msgstr "Bons de livraisons à facturer"
#. module: stock
#: view:stock.picking:0
@@ -392,7 +392,7 @@ msgstr "Mouvements pour ce colis"
#. module: stock
#: view:stock.picking:0
msgid "Incoming Shipments Available"
msgstr ""
msgstr "Réception disponible"
#. module: stock
#: selection:report.stock.inventory,location_type:0
@@ -1084,7 +1084,7 @@ msgstr ""
#: code:addons/stock/stock.py:1349
#, python-format
msgid "is waiting."
msgstr ""
msgstr "est en attente."
#. module: stock
#: constraint:product.product:0
@@ -1488,7 +1488,7 @@ msgstr "Fournisseurs IT Générique"
#. module: stock
#: view:stock.move:0
msgid "Stock to be receive"
msgstr ""
msgstr "Stock à recevoir"
#. module: stock
#: help:stock.location,valuation_out_account_id:0
@@ -42,10 +42,6 @@ class publisher_warranty_contract(osv.osv):
domain = [('state', '=', 'valid'), ('check_support', '=', True)]
return self.search_count(cr, uid, domain) != 0
@cache(skiparg=3)
def get_default_livechat_text(self, cr, uid):
return '<a href="#" target="_blank"><img src="/web_livechat/static/src/img/busy.png"/>Support</a>'
publisher_warranty_contract()
@@ -22,8 +22,8 @@ var __lc_buttons = [];
openerp.web_livechat = function (openerp) {
openerp.web_livechat.Livechat = openerp.web.OldWidget.extend({
template: 'Header-LiveChat',
openerp.web_livechat.Livechat = openerp.web.Widget.extend({
template: 'Systray.LiveChat',
start: function() {
this._super();
@@ -31,26 +31,25 @@ openerp.web_livechat.Livechat = openerp.web.OldWidget.extend({
return;
var self = this;
var pwc = new openerp.web.Model("publisher_warranty.contract");
return pwc.get_func('get_default_livechat_text')().then(function(text) {
self.$element.html(text);
pwc.get_func('is_livechat_enable')().then(function(res) {
if(res) {
self.$element.click(self.do_load_livechat);
} else {
self.$element.click(self.do_open_url);
}
})
pwc.get_func('is_livechat_enable')().then(function(res) {
if(res) {
self.$element.click(self.do_load_livechat);
} else {
self.$element.click(self.do_open_url);
}
});
},
do_open_url: function(evt) {
evt.preventDefault();
evt.preventDefault();
openerp.webclient.action_manager.do_action({type: 'ir.actions.act.url', url: 'http://www.openerp.com/support-or-publisher-warranty-contract', target: 'new'});
},
do_load_livechat: function(evt) {
evt.preventDefault();
var self = this;
if (evt) {
evt.preventDefault();
}
this.$element.unbind('click', this.do_load_livechat);
@@ -58,9 +57,8 @@ openerp.web_livechat.Livechat = openerp.web.OldWidget.extend({
this.$element.attr('id', lc_id);
var pwc = new openerp.web.Model("publisher_warranty.contract");
pwc.get_func('is_livechat_enable')().then(function(res) {
console.log('res', res);
if(!res) {
return;
}
@@ -74,39 +72,35 @@ openerp.web_livechat.Livechat = openerp.web.OldWidget.extend({
skill: '2',
type: 'text',
labels: {
online: '<img src="/web_livechat/static/src/img/available.png"/>Support',
offline: '<img src="/web_livechat/static/src/img/away.png"/>Support',
online: '<img src="/web_livechat/static/src/img/available.png"/>',
offline: '<img src="/web_livechat/static/src/img/away.png"/>',
}
});
});
}
});
openerp.web.Header.include({
openerp.web.UserMenu.include({
do_update: function() {
var self = this;
this._super();
this._super.apply(this, arguments);
this.update_promise.then(function() {
if (self.livechat) {
self.livechat.destroy();
}
self.livechat = new openerp.web_livechat.Livechat(self);
self.livechat.prependTo(self.$element.find('div.header_corner'));
self.livechat.appendTo(openerp.webclient.$element.find('.oe_systray'));
});
}
});
if (openerp.webclient) {
// tracking code from LiveChat
var license = '1035052',
params = '',
lang = 'en',
skill = '0';
__lc_load = function (p) {
__lc_load = function (p) {
if (typeof __lc_loaded != 'function')
if (p) {
var d = document,
@@ -2,7 +2,9 @@
<!-- vim:fdl=1:
-->
<templates id="template" xml:space="preserve">
<t t-name="Header-LiveChat">
<div class="livechat block logout"></div>
</t>
<t t-name="Systray.LiveChat">
<div class="oe_systray_livechat" title="Support">
<a href="#"><img src="/web_livechat/static/src/img/busy.png"/></a>
</div>
</t>
</templates>
-1
View File
@@ -38,7 +38,6 @@ Invite OpenERP user feedback, powered by uservoice.
'certificate': '0040452504963885',
'js': ['static/src/js/web_uservoice.js'],
'css': ['static/src/css/uservoice.css'],
'qweb' : [
"static/src/xml/*.xml",
],
@@ -1,7 +0,0 @@
div.header_corner div.feedback a {
/*color: #9a0404;*/
}
div.header_corner div.feedback img {
vertical-align: middle;
margin-right: 0.5em;
}
@@ -1,8 +1,7 @@
openerp.web_uservoice = function(instance) {
instance.web_uservoice.UserVoice = instance.web.OldWidget.extend({
template: 'Header-UserVoice',
instance.web_uservoice.UserVoice = instance.web.Widget.extend({
template: 'Systray.UserVoice',
default_forum: '77459',
init: function() {
@@ -16,7 +15,12 @@ instance.web_uservoice.UserVoice = instance.web.OldWidget.extend({
showTab: false
};
instance.webclient.menu.do_menu_click.add_first(this.do_menu_click);
instance.webclient.menu.on('menuClicked', this, function(id, $clicked_menu) {
var root = $clicked_menu.parents('div.oe_menu').length === 1;
if (id && root) {
this.uservoiceOptions.forum = this.uservoiceForums[id] || this.default_forum;
}
});
},
start: function() {
@@ -45,27 +49,16 @@ instance.web_uservoice.UserVoice = instance.web.OldWidget.extend({
self.uservoiceForums[menu.id] = forum_mapping[menu.name.toLowerCase()] || self.default_forum;
});
});
this.$element.find('a').click(function(e) {
e.preventDefault();
UserVoice.Popin.show(self.uservoiceOptions);
return false;
});
},
do_menu_click: function($clicked_menu, manual) {
var id = $clicked_menu.attr('data-menu'),
root = $clicked_menu.parents('div.menu').length === 1;
if (id && root) {
this.uservoiceOptions.forum = this.uservoiceForums[id] || this.default_forum;
}
},
}
});
instance.web.Header.include({
instance.web.UserMenu.include({
do_update: function() {
var self = this;
this._super();
@@ -74,12 +67,11 @@ instance.web.Header.include({
self.uservoice.destroy();
}
self.uservoice = new instance.web_uservoice.UserVoice(self);
self.uservoice.prependTo(self.$element.find('div.header_corner'));
self.uservoice.appendTo(instance.webclient.$element.find('.oe_systray'));
});
}
});
if (instance.webclient) {
$(function() {
var src = ("https:" == document.location.protocol ? "https://" : "http://") + "cdn.uservoice.com/javascripts/widgets/tab.js";
@@ -2,7 +2,7 @@
<!-- vim:fdl=1:
-->
<templates id="template" xml:space="preserve">
<t t-name="Header-UserVoice">
<div class="block logout feedback"><a href="#"><img src="/web_uservoice/static/src/img/uv_favicon.png" />feedback</a></div>
</t>
<t t-name="Systray.UserVoice">
<div class="oe_systray_uservoice" title="Feedback"><a href="#"><img src="/web_uservoice/static/src/img/uv_favicon.png"/></a></div>
</t>
</templates>