[MERGE] Merged with main addons.
bzr revid: tde@openerp.com-20120308101143-4ze073zzovkqlqyd
This commit is contained in:
@@ -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 ""
|
||||
@@ -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 ""
|
||||
@@ -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 "રદ કરો"
|
||||
@@ -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"
|
||||
@@ -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 ""
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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 ""
|
||||
@@ -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 ""
|
||||
@@ -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 "જન્મ તારીખ"
|
||||
@@ -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"
|
||||
" "
|
||||
@@ -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 ""
|
||||
@@ -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"
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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<=register_current">
|
||||
<tree string="Events" colors="red:(register_min and register_min>register_current) or (register_max and register_max<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','<=', time.strftime('%%Y-%%m-%%d')),('date','>=',time.strftime('%%Y-01-01'))]"
|
||||
help="Events created in current year"/>
|
||||
domain="[('event_date','<=', time.strftime('%%Y-%%m-%%d')),('event_date','>=',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','<=',(datetime.date.today()+relativedelta(day=31)).strftime('%%Y-%%m-%%d')),('date','>=',(datetime.date.today()-relativedelta(day=1)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="Events created in current month"/>
|
||||
domain="[('event_date','<=',(datetime.date.today()+relativedelta(day=31)).strftime('%%Y-%%m-%%d')),('event_date','>=',(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','<=', (datetime.date.today() - relativedelta(day=31, months=1)).strftime('%%Y-%%m-%%d')),('date','>=',(datetime.date.today() - relativedelta(day=1,months=1)).strftime('%%Y-%%m-%%d'))]"
|
||||
help="Events created in last month"/>
|
||||
domain="[('event_date','<=', (datetime.date.today() - relativedelta(day=31, months=1)).strftime('%%Y-%%m-%%d')),('event_date','>=',(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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
@@ -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
|
||||
|
||||
|
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"
|
||||
@@ -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.
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
@@ -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()
|
||||
@@ -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
|
||||
|
@@ -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>
|
||||
@@ -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
|
||||
@@ -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:
|
||||
@@ -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)
|
||||
|
||||
@@ -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>
|
||||
@@ -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 ""
|
||||
@@ -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 ""
|
||||
@@ -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
@@ -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 "ગણતરી"
|
||||
@@ -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 ""
|
||||
@@ -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 ""
|
||||
@@ -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
@@ -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"
|
||||
@@ -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"
|
||||
#~ " "
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user