bzr revid: hmo@tinyerp.com-20100302090613-bklsbvjqye14xytd
This commit is contained in:
Harry (Open ERP)
2010-03-02 14:36:13 +05:30
361 changed files with 13380 additions and 22933 deletions
+1
View File
@@ -0,0 +1 @@
.*
+4 -1
View File
@@ -283,7 +283,10 @@ class account_move_line(osv.osv):
result.append((line.id, line.name))
return result
def _balance_search(self, cursor, user, obj, name, args):
def _balance_search(self, cursor, user, obj, name, args, domain=None, context=None):
if context is None:
context = {}
if not len(args):
return []
where = ' and '.join(map(lambda x: '(abs(sum(debit-credit))'+x[1]+str(x[2])+')',args))
+3 -3
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-12-20 12:49+0000\n"
"Last-Translator: Hend Awad <Unknown>\n"
"PO-Revision-Date: 2010-02-22 08:34+0000\n"
"Last-Translator: some one <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: 2009-12-21 04:43+0000\n"
"X-Launchpad-Export-Date: 2010-02-25 04:51+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account
+5 -5
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-20 14:43+0000\n"
"Last-Translator: Henning Eggers <henning.eggers@canonical.com>\n"
"PO-Revision-Date: 2010-02-28 09:03+0000\n"
"Last-Translator: Ferdinand @ ChriCar <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: 2009-12-16 05:11+0000\n"
"X-Launchpad-Export-Date: 2010-03-01 05:01+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account
@@ -763,7 +763,7 @@ msgstr "Jahresende Buchungsjournal"
#: view:product.product:0
#: view:product.template:0
msgid "Purchase Properties"
msgstr "EInkaufs Eingenschaften"
msgstr "Einkauf Eigenschaften"
#. module: account
#: model:process.node,note:account.process_node_paymententries0
@@ -1566,7 +1566,7 @@ msgstr "Kontenplan Vorlagen"
#. module: account
#: field:account.invoice,move_id:0
msgid "Invoice Movement"
msgstr "Workflow der Rechnung"
msgstr "Rechnungsbuchung"
#. module: account
#: model:ir.actions.act_window,name:account.action_wizard_multi_chart
+4 -4
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.1\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-01-14 09:09+0000\n"
"PO-Revision-Date: 2010-02-18 09:24+0000\n"
"Last-Translator: Olivier Dony (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: 2010-01-15 04:34+0000\n"
"X-Launchpad-Export-Date: 2010-02-20 04:42+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account
@@ -1599,7 +1599,7 @@ msgstr "Devise société"
#. module: account
#: model:ir.model,name:account.model_account_fiscal_position_account_template
msgid "Fiscal Position Template Account Mapping"
msgstr "Mapping du Compte Modèle de la Position Fiscale"
msgstr "Affectation des comptes suivant le modèle de régime fiscal"
#. module: account
#: field:account.analytic.account,parent_id:0
@@ -1657,7 +1657,7 @@ msgstr "Transaction non-lettrée"
#: field:account.fiscal.position,tax_ids:0
#: field:account.fiscal.position.template,tax_ids:0
msgid "Tax Mapping"
msgstr "Mapping des taxes"
msgstr "Affectation des taxes"
#. module: account
#: view:account.config.wizard:0
+3 -3
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-01-30 16:38+0000\n"
"PO-Revision-Date: 2010-02-23 13:20+0000\n"
"Last-Translator: Dukai Gábor <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: 2010-01-31 04:51+0000\n"
"X-Launchpad-Export-Date: 2010-02-25 04:51+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account
@@ -1789,7 +1789,7 @@ msgstr "Értékesítés"
#: wizard_button:account.account.balance.report,account_selection,checktype:0
#: wizard_button:account.general.ledger.report,account_selection,checktype:0
msgid "Next"
msgstr ""
msgstr "Tovább"
#. module: account
#: help:res.partner,property_account_position:0
+62 -59
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-01-16 18:36+0000\n"
"Last-Translator: Andrzej MoST (Marcin Ostajewski) <Unknown>\n"
"PO-Revision-Date: 2010-02-20 16:07+0000\n"
"Last-Translator: Grzegorz Grzelak (Cirrus) <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: 2010-01-17 04:46+0000\n"
"X-Launchpad-Export-Date: 2010-02-25 04:51+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account
@@ -45,7 +45,7 @@ msgstr "Podaj wiadomość dla raportu o przeterminowanych należnościach."
#. module: account
#: model:process.transition,name:account.process_transition_confirmstatementfromdraft0
msgid "Confirm statement from draft"
msgstr "Zatwierdź projekt zestawienia"
msgstr "Zatwierdź projekt wyciągu"
#. module: account
#: model:account.account.type,name:account.account_type_asset
@@ -60,7 +60,7 @@ msgstr "Nieprawidłowa nazwa modelu w definicji akcji."
#. module: account
#: help:account.journal,currency:0
msgid "The currency used to enter statement"
msgstr "Waluta zastosowana do wprowadzenia zestawienia"
msgstr "Waluta zastosowana do wprowadzenia wyciągu"
#. module: account
#: wizard_view:account_use_models,init_form:0
@@ -334,7 +334,7 @@ msgstr "Odnośnik"
#. module: account
#: wizard_view:account.subscription.generate,init:0
msgid "Subscription Compute"
msgstr ""
msgstr "Oblicz subskrypcję"
#. module: account
#: rml:account.central.journal:0
@@ -344,7 +344,7 @@ msgstr "Nr konta"
#. module: account
#: rml:account.analytic.account.analytic.check:0
msgid "Delta Debit"
msgstr ""
msgstr "Przyrost Winien"
#. module: account
#: rml:account.invoice:0
@@ -466,7 +466,7 @@ msgstr "Specjalne Obliczenie"
#. module: account
#: model:process.transition,note:account.process_transition_confirmstatementfromdraft0
msgid "Confirm statement with/without reconciliation from draft statement"
msgstr "Potwierdź projekt zestawienia z lub bez uzgodnienia"
msgstr "Potwierdź projekt wyciągu z lub bez uzgodnienia"
#. module: account
#: wizard_view:account.move.bank.reconcile,init:0
@@ -910,7 +910,7 @@ msgstr "Dziennik odpisów"
#: field:account.model.line,amount_currency:0
#: field:account.move.line,amount_currency:0
msgid "Amount Currency"
msgstr "Waluta kwoty"
msgstr "Kwota w walucie"
#. module: account
#: field:account.chart.template,property_account_expense_categ:0
@@ -981,7 +981,7 @@ msgstr "Domyślne konto Winien"
#: model:ir.actions.act_window,name:account.action_bank_statement_tree
#: model:ir.ui.menu,name:account.menu_bank_statement_tree
msgid "Entries by Statements"
msgstr "Zapisy wg zestawień"
msgstr "Zapisy wg wyciągów"
#. module: account
#: model:process.transition,name:account.process_transition_analyticinvoice0
@@ -1471,7 +1471,7 @@ msgstr "Wyświetl konta "
#. module: account
#: model:ir.model,name:account.model_account_bank_statement_reconcile_line
msgid "Statement reconcile line"
msgstr "Pozycja uzgodnienia zestawienia"
msgstr "Pozycja uzgodnienia wyciągu"
#. module: account
#: view:account.tax:0
@@ -1631,7 +1631,7 @@ msgstr "Konta należności i zobowiązań"
#: view:account.subscription:0
#: field:account.subscription,lines_id:0
msgid "Subscription Lines"
msgstr ""
msgstr "Pozycje subskrypcji"
#. module: account
#: selection:account.analytic.journal,type:0
@@ -1750,13 +1750,13 @@ msgstr "Włącz do kwoty bazowej"
#. module: account
#: rml:account.analytic.account.analytic.check:0
msgid "Delta Credit"
msgstr ""
msgstr "Przyrost Ma"
#. module: account
#: model:ir.actions.wizard,name:account.wizard_reconcile_unreconcile
#: model:ir.actions.wizard,name:account.wizard_unreconcile
msgid "Unreconcile Entries"
msgstr ""
msgstr "Skasuj uzgodnienie zapisów"
#. module: account
#: model:process.node,note:account.process_node_supplierdraftinvoices0
@@ -1772,7 +1772,7 @@ msgstr "Rejestr kosztów dla okresu"
#: model:ir.actions.act_window,name:account.action_bank_statement_tree2
#: model:ir.ui.menu,name:account.menu_bank_statement_tree2
msgid "New Statement"
msgstr "Nowe zestawienie"
msgstr "Nowy wyciąg"
#. module: account
#: wizard_field:account.analytic.account.chart,init,from_date:0
@@ -1936,7 +1936,7 @@ msgstr "Projekty faktur dla klienta"
#. module: account
#: model:ir.model,name:account.model_account_subscription_line
msgid "Account Subscription Line"
msgstr ""
msgstr "Pozycja konta subskrypcji"
#. module: account
#: selection:account.account.balance.report,checktype,state:0
@@ -2154,7 +2154,7 @@ msgstr "Uzgodnienie płatności"
#: model:ir.actions.act_window,name:account.action_bank_statement_reconciliation_form
#: model:ir.ui.menu,name:account.menu_action_account_bank_reconcile_tree
msgid "Statements reconciliation"
msgstr "Uzgodnienie zestawienia"
msgstr "Uzgodnienie wyciagów"
#. module: account
#: model:ir.actions.act_window,name:account.action_subscription_form_new
@@ -2187,7 +2187,7 @@ msgstr "Schemat podatków"
#. module: account
#: field:account.payment.term.line,value_amount:0
msgid "Value Amount"
msgstr ""
msgstr "Kwota"
#. module: account
#: model:ir.actions.act_window,name:account.act_account_acount_move_line_reconcile_open
@@ -2270,7 +2270,7 @@ msgstr ""
#: model:ir.actions.wizard,name:account.wizard_generate_subscription
#: model:ir.ui.menu,name:account.menu_generate_subscription
msgid "Create subscription entries"
msgstr ""
msgstr "Utwórz zapisy subskrypcji"
#. module: account
#: wizard_field:account.fiscalyear.close,init,journal_id:0
@@ -2321,7 +2321,7 @@ msgstr ""
#. module: account
#: help:account.invoice.tax,base_code_id:0
msgid "The account basis of the tax declaration."
msgstr ""
msgstr "Konto podstawy do deklaracji podatkowej"
#. module: account
#: rml:account.analytic.account.journal:0
@@ -2352,7 +2352,7 @@ msgstr "Typ odnośnika"
#: wizard_button:account.move.line.unreconcile,init,unrec:0
#: wizard_button:account.reconcile.unreconcile,init,unrec:0
msgid "Unreconcile"
msgstr ""
msgstr "Skasuj uzgodnienie"
#. module: account
#: field:account.tax,type:0
@@ -2363,7 +2363,7 @@ msgstr "Typ podatku"
#. module: account
#: model:process.transition,name:account.process_transition_statemententries0
msgid "Statement Entries"
msgstr "Zapisy zestawienia"
msgstr "Zapisy wyciągu"
#. module: account
#: field:account.analytic.line,user_id:0
@@ -2627,7 +2627,7 @@ msgstr "Konto zobowiązań"
#. module: account
#: wizard_view:populate_statement_from_inv,init:0
msgid "Import Invoices in Statement"
msgstr "Importuj faktury do zestawienia"
msgstr "Importuj faktury do wyciągu"
#. module: account
#: view:account.invoice:0
@@ -2673,7 +2673,7 @@ msgstr "Kapitał własny"
#. module: account
#: field:wizard.company.setup,overdue_msg:0
msgid "Overdue Payment Message"
msgstr ""
msgstr "Komunikat przeterminowanej płatności"
#. module: account
#: model:ir.model,name:account.model_account_tax_code_template
@@ -2703,7 +2703,7 @@ msgstr "Zamykanie roku"
#. module: account
#: model:ir.ui.menu,name:account.menu_generic_report
msgid "Generic Reports"
msgstr ""
msgstr "Ogólne raporty"
#. module: account
#: wizard_field:account.automatic.reconcile,init,power:0
@@ -2808,12 +2808,12 @@ msgstr "Nazwa"
#: wizard_view:account.move.line.reconcile,init_full:0
#: wizard_view:account.move.line.reconcile,init_partial:0
msgid "Reconciliation transactions"
msgstr ""
msgstr "Transakcje uzgodnień"
#. module: account
#: wizard_field:account.aged.trial.balance,init,direction_selection:0
msgid "Analysis Direction"
msgstr ""
msgstr "Kierunek analizy"
#. module: account
#: wizard_button:populate_statement_from_inv,init,go:0
@@ -2928,7 +2928,7 @@ msgstr "Konto Podatkowe"
#. module: account
#: model:process.transition,note:account.process_transition_statemententries0
msgid "From statement, create entries"
msgstr "Z zestawienia, utwórz zapisy"
msgstr "Z wyciągu, utwórz zapisy"
#. module: account
#: field:account.analytic.account,complete_name:0
@@ -2981,7 +2981,7 @@ msgstr "Mapowanie podatków"
#: wizard_view:account.move.line.unreconcile,init:0
#: wizard_view:account.reconcile.unreconcile,init:0
msgid "Unreconciliation transactions"
msgstr ""
msgstr "Transakcje kasowania uzgodnień"
#. module: account
#: model:process.transition,note:account.process_transition_paymentorderbank0
@@ -3029,7 +3029,7 @@ msgstr "Dziennik analityczny -"
#. module: account
#: rml:account.analytic.account.analytic.check:0
msgid "Analytic Debit"
msgstr ""
msgstr "Winien - analityka"
#. module: account
#: field:account.account,currency_mode:0
@@ -3268,7 +3268,7 @@ msgstr "Kurs średni"
#: model:process.node,note:account.process_node_bankstatement0
#: model:process.node,note:account.process_node_supplierbankstatement0
msgid "Statement encoding produces payment entries"
msgstr ""
msgstr "Wprowadzenie wyciągu generuje zapisy płatności"
#. module: account
#: field:account.account,code:0
@@ -3342,7 +3342,7 @@ msgstr "30 dni od końca miesiąca"
#. module: account
#: field:account.chart.template,tax_code_root_id:0
msgid "Root Tax Code"
msgstr ""
msgstr "Główny kod podatkowy"
#. module: account
#: constraint:account.invoice:0
@@ -3543,7 +3543,7 @@ msgstr "Zapłać i uzgodnij"
#: rml:account.central.journal:0
#: model:ir.actions.report.xml,name:account.account_central_journal
msgid "Central Journal"
msgstr ""
msgstr "Dziennik główny"
#. module: account
#: rml:account.third_party_ledger:0
@@ -3709,7 +3709,7 @@ msgstr "Wprowadzanie zapisów"
#: wizard_view:account.invoice.refund,init:0
#: model:ir.actions.wizard,name:account.wizard_invoice_refund
msgid "Credit Note"
msgstr ""
msgstr "Nota kredytowa"
#. module: account
#: model:ir.actions.todo,note:account.config_fiscalyear
@@ -3754,7 +3754,7 @@ msgstr "Miesiąc"
#. module: account
#: model:ir.model,name:account.model_account_subscription
msgid "Account Subscription"
msgstr ""
msgstr "Konto subskrypcji"
#. module: account
#: field:account.model.line,date_maturity:0
@@ -3766,7 +3766,7 @@ msgstr "Data zapłaty"
#. module: account
#: view:account.subscription:0
msgid "Entry Subscription"
msgstr ""
msgstr "Zapis subskrypcji"
#. module: account
#: selection:account.print.journal.report,init,sort_selection:0
@@ -3815,7 +3815,7 @@ msgstr "Data faktury"
#. module: account
#: selection:account.account.type,close_method:0
msgid "Unreconciled"
msgstr ""
msgstr "Skasowano uzgodnienie"
#. module: account
#: field:account.account,note:0
@@ -3880,7 +3880,7 @@ msgstr ""
#: model:ir.actions.act_window,name:account.action_wizard_company_setup_form
#: view:wizard.company.setup:0
msgid "Overdue Payment Report Message"
msgstr ""
msgstr "Komunikat raportu przeterminowanych płatności"
#. module: account
#: selection:account.tax,tax_group:0
@@ -3966,6 +3966,9 @@ msgid ""
"needs to create analytic entries, Open ERP will look for a matching journal "
"of the same type."
msgstr ""
"Podaje typ dziennika analitycznego. Kiedy dokument (np. faktura) ma utworzyć "
"zapisy analityczne, to OpenERP będzie szukał odpowiedniego dziennika tego "
"samego typu."
#. module: account
#: field:account.journal,groups_id:0
@@ -3975,7 +3978,7 @@ msgstr "Grupy"
#. module: account
#: rml:account.analytic.account.quantity_cost_ledger:0
msgid "Code/Date"
msgstr ""
msgstr "Kod/Data"
#. module: account
#: field:account.account,active:0
@@ -4084,7 +4087,7 @@ msgstr "Zmiana stanu konta"
#: view:account.bank.statement:0
#: field:account.bank.statement,line_ids:0
msgid "Statement lines"
msgstr "Pozycje zestawienia"
msgstr "Pozycje wyciągu"
#. module: account
#: field:account.move.line,amount_taxed:0
@@ -4160,7 +4163,7 @@ msgstr "Ogólne"
#. module: account
#: rml:account.general.journal:0
msgid "Credit Trans."
msgstr ""
msgstr "Trans. Ma"
#. module: account
#: field:wizard.multi.charts.accounts,seq_journal:0
@@ -4228,7 +4231,7 @@ msgstr "Szukaj zapisów"
#: model:process.node,note:account.process_node_analytic0
#: model:process.node,note:account.process_node_analyticcost0
msgid "Analytic costs to reinvoice purchases, timesheets, ..."
msgstr ""
msgstr "Koszt analityczny do refakturowania zakupów, kart pracy, ..."
#. module: account
#: field:account.account,tax_ids:0
@@ -4276,7 +4279,7 @@ msgstr ""
#. module: account
#: field:account.account,parent_left:0
msgid "Parent Left"
msgstr ""
msgstr "Lewy nadrzędny"
#. module: account
#: help:account.journal,sequence_id:0
@@ -4397,7 +4400,7 @@ msgstr ""
#: model:ir.actions.act_window,name:account.action_subscription_form_running
#: model:ir.ui.menu,name:account.menu_action_subscription_form_running
msgid "Running Subscriptions"
msgstr ""
msgstr "Działające subskrypcje"
#. module: account
#: selection:account.move,type:0
@@ -4413,7 +4416,7 @@ msgstr "Zaksięgowano"
#: view:account.tax:0
#: view:account.tax.template:0
msgid "Credit Notes"
msgstr ""
msgstr "Nota kredytowa"
#. module: account
#: field:account.config.wizard,date2:0
@@ -4587,7 +4590,7 @@ msgstr "Ważna zapisy"
#: model:ir.actions.wizard,name:account.wizard_line_account_use_model
#: model:ir.ui.menu,name:account.menu_account_use_model
msgid "Create Entries From Models"
msgstr "Utwórz zapisu z modeli"
msgstr "Utwórz zapisy z modeli"
#. module: account
#: field:account.account.template,reconcile:0
@@ -4642,7 +4645,7 @@ msgstr ""
#: field:account.bank.statement.line,statement_id:0
#: field:account.move.line,statement_id:0
msgid "Statement"
msgstr "Zestawienie"
msgstr "Wyciąg"
#. module: account
#: model:ir.actions.act_window,name:account.action_move_line_form_encode_by_move
@@ -4719,7 +4722,7 @@ msgstr ""
#. module: account
#: model:process.node,name:account.process_node_draftstatement0
msgid "Draft statement"
msgstr "Projekt zestawienia"
msgstr "Projekt wyciągu"
#. module: account
#: field:account.analytic.journal,name:0
@@ -4729,7 +4732,7 @@ msgstr "Nazwa dziennika"
#. module: account
#: model:process.transition,note:account.process_transition_invoiceimport0
msgid "Import invoice from statement"
msgstr "Importuj fakturę z zestawienia"
msgstr "Importuj fakturę z wyciągu"
#. module: account
#: selection:account.automatic.reconcile,init,power:0
@@ -4825,7 +4828,7 @@ msgstr "Anulowano"
#: model:ir.actions.act_window,name:account.action_bank_statement_draft_tree
#: model:ir.ui.menu,name:account.menu_bank_statement_draft_tree
msgid "Draft statements"
msgstr "Projekty zestawień"
msgstr "Projekty wyciągów"
#. module: account
#: wizard_field:populate_statement_from_inv,init,date:0
@@ -4852,7 +4855,7 @@ msgstr "Konta należności"
#. module: account
#: wizard_button:account.move.line.unreconcile.select,init,open:0
msgid "Open for unreconciliation"
msgstr ""
msgstr "Otwórz do kasowania uzgodnień"
#. module: account
#: field:account.bank.statement.reconcile,statement_line:0
@@ -5082,7 +5085,7 @@ msgstr "Grupuj pozycje faktury"
#. module: account
#: model:ir.ui.menu,name:account.menu_finance_configuration
msgid "Configuration"
msgstr "Ustawienia"
msgstr "Konfiguracja"
#. module: account
#: view:account.analytic.line:0
@@ -5098,7 +5101,7 @@ msgstr "Dziennik kont"
#. module: account
#: view:account.subscription.line:0
msgid "Subscription lines"
msgstr ""
msgstr "pozycje subskrypcji"
#. module: account
#: field:account.chart.template,property_account_income:0
@@ -5204,7 +5207,7 @@ msgstr "Szablon kodu konta podatkowego"
#. module: account
#: view:account.subscription:0
msgid "Subscription Periods"
msgstr ""
msgstr "Okresy subskrypcji"
#. module: account
#: model:process.node,name:account.process_node_manually0
@@ -5265,7 +5268,7 @@ msgstr "Podatek zamienny"
#. module: account
#: model:process.transition,note:account.process_transition_invoicemanually0
msgid "Encode manually statement comes into the draft statement"
msgstr "Ręcznie wprowadzone zestawienie jest projektem"
msgstr "Ręcznie wprowadzony wyciąg jest projektem wyciągu"
#. module: account
#: model:ir.ui.menu,name:account.next_id_43
@@ -5292,7 +5295,7 @@ msgstr "Płatności"
#. module: account
#: model:process.node,note:account.process_node_accountingstatemententries0
msgid "Accounting entries at statement's confirmation"
msgstr "Zapisy księgowe przy potwierdzeniu zestawienia"
msgstr "Zapisy księgowe przy potwierdzeniu wyciągu"
#. module: account
#: wizard_view:account_use_models,create:0
@@ -5474,7 +5477,7 @@ msgstr "Zastosowanie podatku"
#: model:ir.actions.act_window,name:account.action_subscription_form
#: model:ir.ui.menu,name:account.menu_action_subscription_form
msgid "Subscription Entries"
msgstr ""
msgstr "Zapisy subskrypcji"
#. module: account
#: model:ir.actions.act_window,name:account.action_invoice_tree6
@@ -5995,12 +5998,12 @@ msgstr "Obszary podatkowe"
#. module: account
#: model:process.process,name:account.process_process_statementprocess0
msgid "Statement Process"
msgstr ""
msgstr "Proces wyciągu"
#. module: account
#: model:ir.model,name:account.model_account_bank_statement_reconcile
msgid "Statement reconcile"
msgstr ""
msgstr "Uzgodnienia wyciągu"
#. module: account
#: wizard_field:account.fiscalyear.close,init,sure:0
+11 -10
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-01-14 10:44+0000\n"
"Last-Translator: Carlos Paiva <Unknown>\n"
"PO-Revision-Date: 2010-02-22 21:38+0000\n"
"Last-Translator: sbrianti <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: 2010-01-15 04:34+0000\n"
"X-Launchpad-Export-Date: 2010-02-25 04:51+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account
@@ -313,7 +313,7 @@ msgstr "Pagamentos atrasados"
#: wizard_view:account.analytic.account.quantity_cost_ledger.report,init:0
#: wizard_view:account.vat.declaration,init:0
msgid "Select period"
msgstr "Periodo selecionado"
msgstr "Selecione o período"
#. module: account
#: field:account.invoice,origin:0
@@ -1011,7 +1011,7 @@ msgstr "Período"
#. module: account
#: rml:account.partner.balance:0
msgid "Grand total"
msgstr "Grande total"
msgstr "Total geral"
#. module: account
#: model:ir.ui.menu,name:account.menu_finance_accounting
@@ -1340,7 +1340,7 @@ msgstr "Modelo"
#: model:ir.actions.wizard,name:account.wizard_fiscalyear_close_state
#: model:ir.ui.menu,name:account.menu_wizard_fy_close_state
msgid "Close a Fiscal Year"
msgstr "Fechar ano fiscal"
msgstr "Fechar um ano fiscal"
#. module: account
#: field:account.journal,centralisation:0
@@ -1355,7 +1355,7 @@ msgstr "Mensagem:"
#. module: account
#: model:process.node,note:account.process_node_supplierpaymentorder0
msgid "Select invoices you want to pay and manages advances"
msgstr "Selecionar faturaa s pagar e administrar vantagens"
msgstr "Selecionar as faturas que você quer pagar e adiantamentos a fazer"
#. module: account
#: selection:account.account,type:0
@@ -1389,7 +1389,7 @@ msgstr "O método de calculo para o valor do imposto."
#: model:process.node,note:account.process_node_accountingentries0
#: model:process.node,note:account.process_node_supplieraccountingentries0
msgid "Validated accounting entries."
msgstr "Lançamentos de conta validado"
msgstr "Lançamentos contábeis validados"
#. module: account
#: wizard_view:account.move.line.unreconcile,init:0
@@ -1398,8 +1398,9 @@ msgid ""
"If you unreconciliate transactions, you must also verify all the actions "
"that are linked to those transactions because they will not be disable"
msgstr ""
"Se você não concilia transações, você também deve verificar todas as ações "
"que estão ligadas a essas operações, porque não será desativaadas"
"Se você desfazer a reconciliação de transações, você deve também verificar "
"todas as ações que estão ligadas a essas operações, porque elas não serão "
"desfeitas pelo sistema"
#. module: account
#: model:process.node,name:account.process_node_electronicfile0
+37 -35
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-02-16 11:32+0000\n"
"Last-Translator: Treecko <Unknown>\n"
"PO-Revision-Date: 2010-02-24 18:59+0000\n"
"Last-Translator: Anders Eriksson <ae@mobilasystem.se>\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: 2010-02-17 04:55+0000\n"
"X-Launchpad-Export-Date: 2010-02-25 04:51+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account
@@ -73,6 +73,8 @@ msgid ""
"This account will be used to value incoming stock for the current product "
"category"
msgstr ""
"Detta konto kommer att användas användas för inleveranser till lagret för "
"den aktuella produktkategorin"
#. module: account
#: help:account.invoice,period_id:0
@@ -105,7 +107,7 @@ msgstr ""
#: model:ir.actions.wizard,name:account.wizard_vat_declaration
#: model:ir.ui.menu,name:account.menu_wizard_vat_declaration
msgid "Print Taxes Report"
msgstr ""
msgstr "Skriv ut momsrapport"
#. module: account
#: field:account.account,parent_id:0
@@ -115,7 +117,7 @@ msgstr ""
#. module: account
#: selection:account.move,type:0
msgid "Journal Voucher"
msgstr ""
msgstr "Journalverifikat"
#. module: account
#: field:account.invoice,residual:0
@@ -159,7 +161,7 @@ msgstr ""
#. module: account
#: model:ir.actions.wizard,name:account.wizard_invoice_state_confirm
msgid "Confirm draft invoices"
msgstr ""
msgstr "Godkänn preliminära fakturor"
#. module: account
#: help:account.payment.term.line,days2:0
@@ -172,12 +174,12 @@ msgstr ""
#. module: account
#: view:account.move:0
msgid "Total Credit"
msgstr ""
msgstr "Total kredit"
#. module: account
#: field:account.config.wizard,charts:0
msgid "Charts of Account"
msgstr ""
msgstr "Kontoplan"
#. module: account
#: model:ir.actions.wizard,name:account.wizard_move_line_select
@@ -200,7 +202,7 @@ msgstr ""
#. module: account
#: field:account.tax.code,sum_period:0
msgid "Period Sum"
msgstr ""
msgstr "Periodtotal"
#. module: account
#: view:account.tax:0
@@ -235,19 +237,19 @@ msgstr ""
#: field:account.tax.template,amount:0
#: xsl:account.transfer:0
msgid "Amount"
msgstr ""
msgstr "Belopp"
#. module: account
#: model:ir.actions.report.xml,name:account.account_3rdparty_ledger
#: model:ir.actions.wizard,name:account.wizard_third_party_ledger
#: model:ir.ui.menu,name:account.menu_third_party_ledger
msgid "Partner Ledger"
msgstr ""
msgstr "Partnerreskontra"
#. module: account
#: field:product.template,supplier_taxes_id:0
msgid "Supplier Taxes"
msgstr ""
msgstr "Leverantörsskatter"
#. module: account
#: view:account.move:0
@@ -282,13 +284,13 @@ msgstr ""
#: selection:account.tax,type:0
#: selection:account.tax.template,type:0
msgid "Fixed"
msgstr ""
msgstr "Fast"
#. module: account
#: model:ir.actions.report.xml,name:account.account_overdue
#: view:res.company:0
msgid "Overdue Payments"
msgstr ""
msgstr "Försenade betalningar"
#. module: account
#: wizard_view:account.account.balance.report,checktype:0
@@ -299,7 +301,7 @@ msgstr ""
#: wizard_view:account.analytic.account.quantity_cost_ledger.report,init:0
#: wizard_view:account.vat.declaration,init:0
msgid "Select period"
msgstr ""
msgstr "Välj period"
#. module: account
#: field:account.invoice,origin:0
@@ -350,7 +352,7 @@ msgstr ""
#: field:account.move.line,analytic_account_id:0
#: field:report.hr.timesheet.invoice.journal,account_id:0
msgid "Analytic Account"
msgstr ""
msgstr "Objekt"
#. module: account
#: field:account.tax,child_depend:0
@@ -363,12 +365,12 @@ msgstr ""
#: rml:account.general.journal:0
#: field:account.journal,name:0
msgid "Journal Name"
msgstr ""
msgstr "Journalnamn"
#. module: account
#: view:account.payment.term:0
msgid "Description on invoices"
msgstr ""
msgstr "Fakturabeskrivning"
#. module: account
#: constraint:account.analytic.account:0
@@ -410,17 +412,17 @@ msgstr ""
#. module: account
#: rml:account.overdue:0
msgid "Date:"
msgstr ""
msgstr "Datum:"
#. module: account
#: selection:account.account.type,sign:0
msgid "Negative"
msgstr ""
msgstr "Negativ"
#. module: account
#: rml:account.partner.balance:0
msgid "(Account/Partner) Name"
msgstr ""
msgstr "(Konto/Partner) namn"
#. module: account
#: selection:account.move,type:0
@@ -464,7 +466,7 @@ msgstr ""
#. module: account
#: rml:account.invoice:0
msgid "Disc.(%)"
msgstr ""
msgstr "Rabatt (%)"
#. module: account
#: rml:account.general.ledger:0
@@ -473,12 +475,12 @@ msgstr ""
#: rml:account.overdue:0
#: field:account.subscription,ref:0
msgid "Ref"
msgstr ""
msgstr "Ref"
#. module: account
#: field:account.tax.template,type_tax_use:0
msgid "Tax Use In"
msgstr ""
msgstr "Aktuell moms"
#. module: account
#: help:account.tax.template,include_base_amount:0
@@ -501,12 +503,12 @@ msgstr ""
#: model:ir.actions.act_window,name:account.action_account_tax_code_template_form
#: model:ir.ui.menu,name:account.menu_action_account_tax_code_template_form
msgid "Tax Code Templates"
msgstr ""
msgstr "Momsmallar"
#. module: account
#: view:account.invoice:0
msgid "Supplier invoice"
msgstr ""
msgstr "Leverantörsfaktura"
#. module: account
#: model:process.transition,name:account.process_transition_reconcilepaid0
@@ -523,7 +525,7 @@ msgstr ""
#: model:ir.actions.act_window,name:account.action_account_tax_template_form
#: model:ir.ui.menu,name:account.menu_action_account_tax_template_form
msgid "Tax Templates"
msgstr ""
msgstr "Momsmallar"
#. module: account
#: field:account.invoice,reconciled:0
@@ -549,7 +551,7 @@ msgstr ""
#. module: account
#: view:account.invoice.line:0
msgid "Line"
msgstr ""
msgstr "Rad"
#. module: account
#: rml:account.analytic.account.cost_ledger:0
@@ -560,7 +562,7 @@ msgstr ""
#: selection:account.tax,applicable_type:0
#: selection:account.tax.template,applicable_type:0
msgid "True"
msgstr ""
msgstr "Sant"
#. module: account
#: help:account.payment.term.line,days:0
@@ -577,7 +579,7 @@ msgstr ""
#. module: account
#: rml:account.central.journal:0
msgid "Printing Date"
msgstr ""
msgstr "Utskriftsdatum"
#. module: account
#: rml:account.general.ledger:0
@@ -616,7 +618,7 @@ msgstr ""
#. module: account
#: field:account.analytic.account,contact_id:0
msgid "Contact"
msgstr ""
msgstr "Kontakt"
#. module: account
#: selection:account.model.line,date:0
@@ -637,7 +639,7 @@ msgstr ""
#. module: account
#: field:account.invoice.line,discount:0
msgid "Discount (%)"
msgstr ""
msgstr "Rabatt (%)"
#. module: account
#: wizard_field:account.move.line.reconcile,init_full,writeoff:0
@@ -653,12 +655,12 @@ msgstr ""
#. module: account
#: model:ir.ui.menu,name:account.menu_analytic_accounting
msgid "Analytic Accounting"
msgstr ""
msgstr "Objektsredovisning"
#. module: account
#: rml:account.overdue:0
msgid "Sub-Total :"
msgstr ""
msgstr "Subtotal :"
#. module: account
#: field:account.analytic.account,line_ids:0
@@ -671,7 +673,7 @@ msgstr ""
#. module: account
#: selection:account.subscription,period_type:0
msgid "month"
msgstr ""
msgstr "månad"
#. module: account
#: field:account.analytic.account,partner_id:0
+84 -73
View File
@@ -29,18 +29,6 @@ from mx.DateTime import RelativeDateTime
from tools import config
from tools.translate import _
#class fiscalyear_seq(osv.osv):
# _name = "fiscalyear.seq"
# _description = "Maintains Invoice sequences with Fiscal Year"
# _rec_name = 'fiscalyear_id'
# _columns = {
# 'journal_id': fields.many2one('account.journal', 'Journal'),
# 'fiscalyear_id': fields.many2one('account.fiscalyear', 'Fiscal Year',required=True),
# 'sequence_id':fields.many2one('ir.sequence', 'Sequence',required=True),
# }
#
#fiscalyear_seq()
class account_invoice(osv.osv):
def _amount_all(self, cr, uid, ids, name, args, context=None):
res = {}
@@ -505,21 +493,21 @@ class account_invoice(osv.osv):
else:
journal_ids=self.pool.get('account.journal').search(cr,uid,[])
dom={'journal_id': [('id','in',journal_ids)]}
if currency_id and company_id:
currency = self.pool.get('res.currency').browse(cr, uid, currency_id)
if currency.company_id.id != company_id:
val['currency_id'] = False
else:
val['currency_id'] = currency.id
if company_id:
company = self.pool.get('res.company').browse(cr, uid, company_id)
if company.currency_id.company_id.id != company_id:
val['currency_id'] = False
val['currency_id'] = False
else:
val['currency_id'] = company.currency_id.id
return {'value' : val, 'domain': dom }
# go from canceled state to draft state
@@ -631,7 +619,84 @@ class account_invoice(osv.osv):
self.write(cr, uid, [inv.id], res['value'])
return True
def check_tax_lines(self, cr, uid, inv, compute_taxes, ait_obj):
if not inv.tax_line:
for tax in compute_taxes.values():
ait_obj.create(cr, uid, tax)
else:
tax_key = []
for tax in inv.tax_line:
if tax.manual:
continue
key = (tax.tax_code_id.id, tax.base_code_id.id, tax.account_id.id)
tax_key.append(key)
if not key in compute_taxes:
raise osv.except_osv(_('Warning !'), _('Global taxes defined, but are not in invoice lines !'))
base = compute_taxes[key]['base']
if abs(base - tax.base) > inv.company_id.currency_id.rounding:
raise osv.except_osv(_('Warning !'), _('Tax base different !\nClick on compute to update tax base'))
for key in compute_taxes:
if not key in tax_key:
raise osv.except_osv(_('Warning !'), _('Taxes missing !'))
def compute_invoice_totals(self, cr, uid, inv, company_currency, ref, invoice_move_lines):
total = 0
total_currency = 0
for i in invoice_move_lines:
if inv.currency_id.id != company_currency:
i['currency_id'] = inv.currency_id.id
i['amount_currency'] = i['price']
i['price'] = cur_obj.compute(cr, uid, inv.currency_id.id,
company_currency, i['price'],
context={'date': inv.date_invoice or time.strftime('%Y-%m-%d')})
else:
i['amount_currency'] = False
i['currency_id'] = False
i['ref'] = ref
if inv.type in ('out_invoice','in_refund'):
total += i['price']
total_currency += i['amount_currency'] or i['price']
i['price'] = - i['price']
else:
total -= i['price']
total_currency -= i['amount_currency'] or i['price']
return total, total_currency, invoice_move_lines
def inv_line_characteristic_hashcode(self, invoice, invoice_line):
"""Overridable hashcode generation for invoice lines. Lines having the same hashcode
will be grouped together if the journal has the 'group line' option. Of course a module
can add fields to invoice lines that would need to be tested too before merging lines
or not."""
return "%s-%s-%s-%s-%s"%(
invoice_line['account_id'],
invoice_line.get('tax_code_id',"False"),
invoice_line.get('product_id',"False"),
invoice_line.get('analytic_account_id',"False"),
invoice_line.get('date_maturity',"False"))
def group_lines(self, cr, uid, iml, line, inv):
"""Merge account move lines (and hence analytic lines) if invoice line hashcodes are equals"""
if inv.journal_id.group_invoice_lines:
line2 = {}
for x, y, l in line:
tmp = self.inv_line_characteristic_hashcode(inv, l)
if tmp in line2:
am = line2[tmp]['debit'] - line2[tmp]['credit'] + (l['debit'] - l['credit'])
line2[tmp]['debit'] = (am > 0) and am or 0.0
line2[tmp]['credit'] = (am < 0) and -am or 0.0
line2[tmp]['tax_amount'] += l['tax_amount']
line2[tmp]['analytic_lines'] += l['analytic_lines']
else:
line2[tmp] = l
line = []
for key, val in line2.items():
line.append((0,0,val))
return line
def action_move_create(self, cr, uid, ids, *args):
"""Creates invoice related analytics and financial move lines"""
ait_obj = self.pool.get('account.invoice.tax')
cur_obj = self.pool.get('res.currency')
context = {}
@@ -650,24 +715,7 @@ class account_invoice(osv.osv):
context.update({'lang': inv.partner_id.lang})
compute_taxes = ait_obj.compute(cr, uid, inv.id, context=context)
if not inv.tax_line:
for tax in compute_taxes.values():
ait_obj.create(cr, uid, tax)
else:
tax_key = []
for tax in inv.tax_line:
if tax.manual:
continue
key = (tax.tax_code_id.id, tax.base_code_id.id, tax.account_id.id)
tax_key.append(key)
if not key in compute_taxes:
raise osv.except_osv(_('Warning !'), _('Global taxes defined, but are not in invoice lines !'))
base = compute_taxes[key]['base']
if abs(base - tax.base) > inv.company_id.currency_id.rounding:
raise osv.except_osv(_('Warning !'), _('Tax base different !\nClick on compute to update tax base'))
for key in compute_taxes:
if not key in tax_key:
raise osv.except_osv(_('Warning !'), _('Taxes missing !'))
self.check_tax_lines(cr, uid, inv, compute_taxes, ait_obj)
if inv.type in ('in_invoice', 'in_refund') and abs(inv.check_total - inv.amount_total) >= (inv.currency_id.rounding/2.0):
raise osv.except_osv(_('Bad total !'), _('Please verify the price of the invoice !\nThe real total does not match the computed total.'))
@@ -684,24 +732,7 @@ class account_invoice(osv.osv):
# create one move line for the total and possibly adjust the other lines amount
total = 0
total_currency = 0
for i in iml:
if inv.currency_id.id != company_currency:
i['currency_id'] = inv.currency_id.id
i['amount_currency'] = i['price']
i['price'] = cur_obj.compute(cr, uid, inv.currency_id.id,
company_currency, i['price'],
context={'date': inv.date_invoice or time.strftime('%Y-%m-%d')})
else:
i['amount_currency'] = False
i['currency_id'] = False
i['ref'] = ref
if inv.type in ('out_invoice','in_refund'):
total += i['price']
total_currency += i['amount_currency'] or i['price']
i['price'] = - i['price']
else:
total -= i['price']
total_currency -= i['amount_currency'] or i['price']
total, total_currency, iml = self.compute_invoice_totals(cr, uid, inv, company_currency, ref, iml)
acc_id = inv.account_id.id
name = inv['name'] or '/'
@@ -756,26 +787,7 @@ class account_invoice(osv.osv):
line = map(lambda x:(0,0,self.line_get_convert(cr, uid, x, part, date, context={})) ,iml)
if inv.journal_id.group_invoice_lines:
line2 = {}
for x, y, l in line:
tmp = str(l['account_id'])
tmp += '-'+str(l.get('tax_code_id',"False"))
tmp += '-'+str(l.get('product_id',"False"))
tmp += '-'+str(l.get('analytic_account_id',"False"))
tmp += '-'+str(l.get('date_maturity',"False"))
if tmp in line2:
am = line2[tmp]['debit'] - line2[tmp]['credit'] + (l['debit'] - l['credit'])
line2[tmp]['debit'] = (am > 0) and am or 0.0
line2[tmp]['credit'] = (am < 0) and -am or 0.0
line2[tmp]['tax_amount'] += l['tax_amount']
line2[tmp]['analytic_lines'] += l['analytic_lines']
else:
line2[tmp] = l
line = []
for key, val in line2.items():
line.append((0,0,val))
line = self.group_lines(cr, uid, iml, line, inv)
journal_id = inv.journal_id.id #self._get_journal(cr, uid, {'type': inv['type']})
journal = self.pool.get('account.journal').browse(cr, uid, journal_id)
@@ -1449,4 +1461,3 @@ class account_invoice_tax(osv.osv):
account_invoice_tax()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
###############################################################################
#
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
@@ -15,7 +15,7 @@
# 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/>.
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
@@ -70,51 +70,51 @@ account_analytic_default()
class account_invoice_line(osv.osv):
_inherit = 'account.invoice.line'
_description = 'account invoice line'
def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', type='out_invoice', partner_id=False, fposition=False, price_unit=False, address_invoice_id=False, context={}):
res_prod = super(account_invoice_line,self).product_id_change(cr, uid, ids, product, uom, qty, name, type, partner_id, fposition, price_unit, address_invoice_id, context)
def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', type='out_invoice', partner_id=False, fposition=False, price_unit=False, address_invoice_id=False, currency_id=False, context={}):
res_prod = super(account_invoice_line,self).product_id_change(cr, uid, ids, product, uom, qty, name, type, partner_id, fposition, price_unit, address_invoice_id, currency_id=currency_id, context=context)
rec = self.pool.get('account.analytic.default').account_get(cr, uid, product, partner_id, uid, time.strftime('%Y-%m-%d'), context)
if rec:
res_prod['value'].update({'account_analytic_id':rec.analytic_id.id})
else:
res_prod['value'].update({'account_analytic_id':False})
res_prod['value'].update({'account_analytic_id':False})
return res_prod
account_invoice_line()
class stock_picking(osv.osv):
_inherit = "stock.picking"
def _get_account_analytic_invoice(self, cursor, user, picking, move_line):
partner_id = picking.address_id and picking.address_id.partner_id or False
rec = self.pool.get('account.analytic.default').account_get(cursor, user, move_line.product_id.id, partner_id and partner_id.id, user, time.strftime('%Y-%m-%d'), context={})
if rec:
return rec.analytic_id.id
return super(stock_picking, self)._get_account_analytic_invoice(cursor,
user, picking, move_line)
stock_picking()
class sale_order_line(osv.osv):
_inherit = 'sale.order.line'
# Method overridden to set the analytic account by default on criterion match
def invoice_line_create(self, cr, uid, ids, context={}):
create_ids = super(sale_order_line,self).invoice_line_create(cr, uid, ids, context)
sale_line_obj = self.browse(cr, uid, ids[0], context)
pool_inv_line = self.pool.get('account.invoice.line')
for line in pool_inv_line.browse(cr, uid, create_ids, context):
rec = self.pool.get('account.analytic.default').account_get(cr, uid, line.product_id.id, sale_line_obj.order_id.partner_id.id, uid, time.strftime('%Y-%m-%d'), context)
if rec:
pool_inv_line.write(cr, uid, [line.id], {'account_analytic_id':rec.analytic_id.id}, context=context)
return create_ids
sale_order_line()
sale_order_line()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+7 -7
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-17 09:38+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2010-02-20 15:28+0000\n"
"Last-Translator: Grzegorz Grzelak (Cirrus) <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: 2009-12-16 05:18+0000\n"
"X-Launchpad-Export-Date: 2010-02-25 04:51+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_analytic_default
@@ -21,12 +21,12 @@ msgstr ""
#: model:ir.actions.act_window,name:account_analytic_default.action_analytic_default_form
#: model:ir.ui.menu,name:account_analytic_default.menu_analytic_defaul_form
msgid "Analytic Defaults"
msgstr ""
msgstr "Domyślne ustawienia analityczne"
#. module: account_analytic_default
#: model:ir.module.module,shortdesc:account_analytic_default.module_meta_information
msgid "Account Analytic Default"
msgstr ""
msgstr "Domyślne ustawienia konta analitycznego"
#. module: account_analytic_default
#: constraint:ir.ui.view:0
@@ -84,7 +84,7 @@ msgstr "Użytkownik"
#. module: account_analytic_default
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr ""
msgstr "Nieprawidłowa nazwa modelu w definicji akcji."
#. module: account_analytic_default
#: model:ir.actions.act_window,name:account_analytic_default.act_account_acount_move_line_open
@@ -111,4 +111,4 @@ msgstr "Warunki"
#: model:ir.actions.act_window,name:account_analytic_default.analytic_rule_action_product
#: model:ir.actions.act_window,name:account_analytic_default.analytic_rule_action_user
msgid "Analytic Rules"
msgstr ""
msgstr "Reguły analityczne"
+8 -8
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-09-16 12:18+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2010-02-25 08:30+0000\n"
"Last-Translator: Nikolay Chesnokov <chesnokov_n@msn.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-12-16 05:18+0000\n"
"X-Launchpad-Export-Date: 2010-02-27 04:48+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_analytic_default
@@ -26,12 +26,12 @@ msgstr "Аналитика по умолчанию"
#. module: account_analytic_default
#: model:ir.module.module,shortdesc:account_analytic_default.module_meta_information
msgid "Account Analytic Default"
msgstr ""
msgstr "Счет аналитики по умолчанию"
#. module: account_analytic_default
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Неправильный XML для просмотра архитектуры!"
msgstr "Некорректный формат XML для структуры вида!"
#. module: account_analytic_default
#: constraint:ir.model:0
@@ -69,12 +69,12 @@ msgstr "Продукция"
#. module: account_analytic_default
#: field:account.analytic.default,analytic_id:0
msgid "Analytic Account"
msgstr ""
msgstr "Счет аналитического учета"
#. module: account_analytic_default
#: model:ir.model,name:account_analytic_default.model_account_analytic_default
msgid "Analytic Distributions"
msgstr ""
msgstr "Аналитическое распределение"
#. module: account_analytic_default
#: field:account.analytic.default,user_id:0
@@ -84,7 +84,7 @@ msgstr "Пользователь"
#. module: account_analytic_default
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr ""
msgstr "Недопустимое имя модели в определении действия"
#. module: account_analytic_default
#: model:ir.actions.act_window,name:account_analytic_default.act_account_acount_move_line_open
+4 -4
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-22 18:43+0000\n"
"PO-Revision-Date: 2010-02-28 09:02+0000\n"
"Last-Translator: Ferdinand @ ChriCar <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: 2009-12-16 05:16+0000\n"
"X-Launchpad-Export-Date: 2010-03-01 05:01+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_analytic_plans
@@ -143,7 +143,7 @@ msgstr "Konto3 ID"
#: field:account.analytic.plan.instance,journal_id:0
#: wizard_field:wizard.crossovered.analytic,init,journal_ids:0
msgid "Analytic Journal"
msgstr "Analyse Journal"
msgstr "Analytisches Journal"
#. module: account_analytic_plans
#: rml:account.analytic.account.crossovered.analytic:0
@@ -300,7 +300,7 @@ msgstr "Analyt. Planpositionen"
#. module: account_analytic_plans
#: rml:account.analytic.account.crossovered.analytic:0
msgid "Crossovered Analytic -"
msgstr ""
msgstr "Matrix Analyse"
#. module: account_analytic_plans
#: field:account.analytic.plan.instance,plan_id:0
+64
View File
@@ -0,0 +1,64 @@
# Italian translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-11-24 12:50+0000\n"
"PO-Revision-Date: 2010-02-27 18:15+0000\n"
"Last-Translator: phede92 <phede92@yahoo.it>\n"
"Language-Team: Italian <it@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: 2010-03-01 05:01+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_anglo_saxon
#: view:product.category:0
msgid " Accounting Property"
msgstr " Contabili di proprietà"
#. module: account_anglo_saxon
#: model:ir.module.module,description:account_anglo_saxon.module_meta_information
msgid ""
"This module will support the Anglo-Saxons accounting methodology by \n"
" changing the accounting logic with stock transactions. The difference "
"between the Anglo-Saxon accounting countries \n"
" and the Rhine or also called Continental accounting countries is the "
"moment of taking the Cost of Goods Sold versus Cost of Sales. \n"
" Anglo-Saxons accounting does take the cost when sales invoice is "
"created, Continental accounting will take the cost at he moment the goods "
"are shipped.\n"
" This module will add this functionality by using a interim account, to "
"store the value of shipped goods and will contra book this interim account \n"
" when the invoice is created to transfer this amount to the debtor or "
"creditor account."
msgstr ""
#. module: account_anglo_saxon
#: model:ir.module.module,shortdesc:account_anglo_saxon.module_meta_information
msgid "Stock Account"
msgstr ""
#. module: account_anglo_saxon
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. 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 ""
#. 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 ""
+41 -34
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-02-16 14:07+0000\n"
"PO-Revision-Date: 2010-02-22 12:42+0000\n"
"Last-Translator: adnan <adnankraljic@yahoo.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-02-17 04:56+0000\n"
"X-Launchpad-Export-Date: 2010-02-25 04:51+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_balance
@@ -73,27 +73,27 @@ msgstr "Odaberite razdoblja"
#. module: account_balance
#: selection:account.balance.account.balance.report,init,compare_pattern:0
msgid "Percentage"
msgstr ""
msgstr "Procenat"
#. module: account_balance
#: wizard_field:account.balance.account.balance.report,init,compare_pattern:0
msgid "Compare Selected Years In Terms Of"
msgstr ""
msgstr "Usporedi odabrane godine pod uvjetima"
#. module: account_balance
#: wizard_view:account.balance.account.balance.report,init:0
msgid "Select Fiscal Year(s)(Maximum Three Years)"
msgstr ""
msgstr "Odaberite fiskalne godine (Maksimalno 3 godine)"
#. module: account_balance
#: wizard_field:account.balance.account.balance.report,init,select_account:0
msgid "Select Reference Account(for % comparision)"
msgstr ""
msgstr "Izaberi odgovarajuća konta (za poređenje u %)"
#. module: account_balance
#: model:ir.actions.wizard,name:account_balance.wizard_account_balance_report
msgid "Account balance-Compare Years"
msgstr ""
msgstr "Saldo konta - poredi godine"
#. module: account_balance
#: model:ir.module.module,description:account_balance.module_meta_information
@@ -120,108 +120,108 @@ msgstr ""
#. module: account_balance
#: wizard_view:account.balance.account.balance.report,backtoinit:0
msgid "You have to select 'Landscape' option. Please Check it."
msgstr ""
msgstr "Morate odabrati opciju 'Položeno'. Molimo označite je."
#. module: account_balance
#: wizard_field:account.balance.account.balance.report,init,landscape:0
msgid "Show Report in Landscape Form"
msgstr ""
msgstr "Prikaži izvješće u položenoj formi"
#. module: account_balance
#: help:account.balance.account.balance.report,init,periods:0
msgid "All periods if empty"
msgstr ""
msgstr "Ako je prazno, sva razdoblja"
#. module: account_balance
#: selection:account.balance.account.balance.report,init,account_choice:0
msgid "With balance is not equal to 0"
msgstr ""
msgstr "Sa saldom različit od 0"
#. module: account_balance
#: rml:account.account.balance.landscape:0
#: rml:account.balance.account.balance:0
msgid "Total :"
msgstr ""
msgstr "Ukupno :"
#. module: account_balance
#: rml:account.account.balance.landscape:0
#: rml:account.balance.account.balance:0
msgid "Account Balance -"
msgstr ""
msgstr "Saldo računa -"
#. module: account_balance
#: wizard_field:account.balance.account.balance.report,init,format_perc:0
msgid "Show Comparision in %"
msgstr ""
msgstr "Prikaži usporedbu u %"
#. module: account_balance
#: wizard_view:account.balance.account.balance.report,init:0
msgid "Select Period"
msgstr ""
msgstr "Odaberite razdoblje"
#. module: account_balance
#: wizard_view:account.balance.account.balance.report,init:0
msgid "Report Options"
msgstr ""
msgstr "Postavke izvješća"
#. module: account_balance
#: selection:account.balance.account.balance.report,init,account_choice:0
msgid "With movements"
msgstr ""
msgstr "Sa kretanjima"
#. module: account_balance
#: wizard_button:account.balance.account.balance.report,backtoinit,end:0
#: wizard_button:account.balance.account.balance.report,zero_years,end:0
msgid "Ok"
msgstr ""
msgstr "Uredu"
#. module: account_balance
#: selection:account.balance.account.balance.report,init,compare_pattern:0
msgid "Cash"
msgstr ""
msgstr "Gotovina"
#. module: account_balance
#: selection:account.balance.account.balance.report,init,compare_pattern:0
msgid "Don't Compare"
msgstr ""
msgstr "Ne uspoređuj"
#. module: account_balance
#: wizard_field:account.balance.account.balance.report,init,account_choice:0
msgid "Show Accounts"
msgstr ""
msgstr "Prikaži račune"
#. module: account_balance
#: rml:account.account.balance.landscape:0
#: rml:account.balance.account.balance:0
msgid "Credit"
msgstr ""
msgstr "Potražuje"
#. module: account_balance
#: wizard_view:account.balance.account.balance.report,backtoinit:0
msgid "1. You have selected more than 3 years in any case."
msgstr ""
msgstr "1. Odabrali ste više od 3 godine u svakom slučaju."
#. module: account_balance
#: model:ir.module.module,shortdesc:account_balance.module_meta_information
msgid "Accounting and financial management-Compare Accounts"
msgstr ""
msgstr "Upravljanje računovodstvom i finansijama - Usporedi konta"
#. module: account_balance
#: rml:account.account.balance.landscape:0
#: rml:account.balance.account.balance:0
msgid "Year :"
msgstr ""
msgstr "Godina:"
#. module: account_balance
#: wizard_view:account.balance.account.balance.report,backtoinit:0
msgid "You can select maximum 3 years. Please check again."
msgstr ""
msgstr "Možete odabrati maksimalno 3 godine. Molimo pokušajte ponovno."
#. module: account_balance
#: rml:account.account.balance.landscape:0
#: rml:account.balance.account.balance:0
msgid "Balance"
msgstr ""
msgstr "Saldo"
#. module: account_balance
#: wizard_view:account.balance.account.balance.report,backtoinit:0
@@ -229,27 +229,30 @@ msgid ""
"3. You have selected 'Percentage' option with more than 2 years, but you "
"have not selected landscape format."
msgstr ""
"Izabrali ste \"Postotak\" opciju sa više od dvije godine, ali niste odabrali "
"\"Položeni\" format."
#. module: account_balance
#: wizard_view:account.balance.account.balance.report,backtoinit:0
msgid ""
"You might have done following mistakes. Please correct them and try again."
msgstr ""
"Možda ste napravili sljedeće pogreške. Ispravite ih i pokušajte ponovno."
#. module: account_balance
#: help:account.balance.account.balance.report,init,select_account:0
msgid "Keep empty for comparision to its parent"
msgstr ""
msgstr "Ostavite prazno za usporedbu sa roditeljem"
#. module: account_balance
#: selection:account.balance.account.balance.report,init,period_manner:0
msgid "Creation Date"
msgstr ""
msgstr "Datum kreiranja"
#. module: account_balance
#: wizard_field:account.balance.account.balance.report,init,fiscalyear:0
msgid "Fiscal year"
msgstr ""
msgstr "Fiskalna godina"
#. module: account_balance
#: wizard_view:account.balance.account.balance.report,backtoinit:0
@@ -257,11 +260,12 @@ msgid ""
"2. You have not selected 'Percentage' option, but you have selected more "
"than 2 years."
msgstr ""
"2. Niste odabrali opciju 'Postotak', ali ste odabrali više od 2 godine."
#. module: account_balance
#: wizard_field:account.balance.account.balance.report,init,periods:0
msgid "Periods"
msgstr ""
msgstr "Razdoblja"
#. module: account_balance
#: wizard_view:account.balance.account.balance.report,zero_years:0
@@ -270,18 +274,21 @@ msgid ""
"credit/debit columns and % option.This can lead contents to be printed out "
"of the paper.Please try again."
msgstr ""
"Postoji mogućnost da ste odabrali postavke usporedbe sa više od 1 godine sa "
"stupcima duguje/potražuje i % opcijom. Ovo može biti uzrok ispisa van "
"papira. Molimo pokušajte ponovno."
#. module: account_balance
#: wizard_button:account.balance.account.balance.report,init,end:0
msgid "Cancel"
msgstr ""
msgstr "Odustani"
#. module: account_balance
#: wizard_view:account.balance.account.balance.report,zero_years:0
msgid "You have to select at least 1 Fiscal Year. Try again."
msgstr ""
msgstr "Morate odabrati bar 1 fiskalnu godinu. Pokušajte ponovno."
#. module: account_balance
#: wizard_view:account.balance.account.balance.report,init:0
msgid "Customize Report"
msgstr ""
msgstr "Prilagodite izvješće"
+4 -4
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-02-14 21:29+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2010-02-27 08:20+0000\n"
"Last-Translator: Oktay Altunergil <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: 2010-02-17 04:56+0000\n"
"X-Launchpad-Export-Date: 2010-03-01 05:01+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_budget
@@ -35,7 +35,7 @@ msgstr "Bütçe Durumları"
#. module: account_budget
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr ""
msgstr "İşlem tanımlamasında geçersiz model adı."
#. module: account_budget
#: rml:account.analytic.account.budget:0
+23
View File
@@ -0,0 +1,23 @@
# Norwegian Bokmal translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-02-21 07:35+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Norwegian Bokmal <nb@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: 2010-02-25 04:51+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_chart
#: model:ir.module.module,description:account_chart.module_meta_information
msgid "Remove minimal account chart"
msgstr "Fjern minimal konto diagram"
+4 -4
View File
@@ -7,16 +7,16 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-09-18 15:24+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2010-02-21 07:34+0000\n"
"Last-Translator: Kristian <kimocoder> Bremvaag <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: 2009-12-16 05:27+0000\n"
"X-Launchpad-Export-Date: 2010-02-25 04:51+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_chart
#: model:ir.module.module,description:account_chart.module_meta_information
msgid "Remove minimal account chart"
msgstr ""
msgstr "Ta bort minimal konto diagram"
-17
View File
@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>account_invoice_layout</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.python.pydev.PyDevBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.python.pydev.pythonNature</nature>
</natures>
</projectDescription>
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse-pydev version="1.0"?>
<pydev_project>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.4</pydev_property>
</pydev_project>
+53
View File
@@ -0,0 +1,53 @@
# English (Australia) translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-02-26 06:55+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: 2010-02-27 04:48+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_tax_include
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: account_tax_include
#: field:account.invoice,price_type:0
msgid "Price method"
msgstr ""
#. module: account_tax_include
#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information
msgid "Invoices and prices with taxes included"
msgstr ""
#. module: account_tax_include
#: selection:account.invoice,price_type:0
msgid "Tax included"
msgstr ""
#. module: account_tax_include
#: selection:account.invoice,price_type:0
msgid "Tax excluded"
msgstr ""
#. module: account_tax_include
#: view:account.tax:0
msgid "Compute Code for Taxes included prices"
msgstr ""
#. module: account_tax_include
#: field:account.invoice.line,price_subtotal_incl:0
msgid "Subtotal"
msgstr ""
+53
View File
@@ -0,0 +1,53 @@
# Slovak translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-02-23 08:12+0000\n"
"Last-Translator: Radoslav Sloboda <rado.sloboda@gmail.com>\n"
"Language-Team: Slovak <sk@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: 2010-02-25 04:50+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_tax_include
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Neplatný súbor XML pre zobrazenie architektúry!"
#. module: account_tax_include
#: field:account.invoice,price_type:0
msgid "Price method"
msgstr ""
#. module: account_tax_include
#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information
msgid "Invoices and prices with taxes included"
msgstr "Faktúry a ceny zahrnuté s DPH"
#. module: account_tax_include
#: selection:account.invoice,price_type:0
msgid "Tax included"
msgstr ""
#. module: account_tax_include
#: selection:account.invoice,price_type:0
msgid "Tax excluded"
msgstr ""
#. module: account_tax_include
#: view:account.tax:0
msgid "Compute Code for Taxes included prices"
msgstr ""
#. module: account_tax_include
#: field:account.invoice.line,price_subtotal_incl:0
msgid "Subtotal"
msgstr "Medzisúčet"
+10 -10
View File
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
#
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
@@ -15,7 +15,7 @@
# 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/>.
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
@@ -36,7 +36,7 @@ class account_invoice(osv.osv):
_defaults = {
'price_type': lambda *a: 'tax_excluded',
}
def refund(self, cr, uid, ids, date=None, period_id=None, description=None):
map_old_new = {}
refund_ids = []
@@ -44,12 +44,12 @@ class account_invoice(osv.osv):
new_id = super(account_invoice,self).refund(cr, uid, ids, date=date, period_id=period_id, description=description)
refund_ids += new_id
map_old_new[old_inv_id] = new_id[0]
for old_inv_id in map_old_new.keys():
old_inv_record = self.read(cr, uid, [old_inv_id], ['price_type'])[0]['price_type']
self.write(cr, uid, [map_old_new[old_inv_id]], {'price_type' : old_inv_record})
return refund_ids
account_invoice()
class account_invoice_line(osv.osv):
@@ -156,16 +156,16 @@ class account_invoice_line(osv.osv):
else:
return super(account_invoice_line, self).product_id_change_unit_price_inv(cr, uid, tax_id, price_unit, qty, address_invoice_id, product, partner_id, context=context)
def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', type='out_invoice', partner_id=False, fposition_id=False, price_unit=False, address_invoice_id=False, context=None):
def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', type='out_invoice', partner_id=False, fposition_id=False, price_unit=False, address_invoice_id=False, currency_id=False, context=None):
# note: will call product_id_change_unit_price_inv with context...
# Temporary trap, for bad context that came from koo:
# Temporary trap, for bad context that came from koo:
# if isinstance(context, str):
# print "str context:", context
ctx = (context and context.copy()) or {}
ctx.update({'price_type': ctx.get('price_type','tax_excluded')})
return super(account_invoice_line, self).product_id_change(cr, uid, ids, product, uom, qty, name, type, partner_id, fposition_id, price_unit, address_invoice_id, context=ctx)
return super(account_invoice_line, self).product_id_change(cr, uid, ids, product, uom, qty, name, type, partner_id, fposition_id, price_unit, address_invoice_id, currency_id=currency_id, context=ctx)
account_invoice_line()
class account_invoice_tax(osv.osv):
@@ -180,7 +180,7 @@ class account_invoice_tax(osv.osv):
cur_obj = self.pool.get('res.currency')
cur = inv.currency_id
company_currency = inv.company_id.currency_id.id
for line in inv.invoice_line:
data = self.pool.get('account.invoice.line')._amount_line2(cr, uid, [line.id], [], [], context)[line.id]
for tax in data['data']:
@@ -218,7 +218,7 @@ class account_invoice_tax(osv.osv):
t['amount'] = cur_obj.round(cr, uid, cur, t['amount'])
t['base_amount'] = cur_obj.round(cr, uid, cur, t['base_amount'])
t['tax_amount'] = cur_obj.round(cr, uid, cur, t['tax_amount'])
return tax_grouped
account_invoice_tax()
+66
View File
@@ -0,0 +1,66 @@
# Slovak translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-02-23 08:09+0000\n"
"Last-Translator: Radoslav Sloboda <rado.sloboda@gmail.com>\n"
"Language-Team: Slovak <sk@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: 2010-02-25 04:51+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: analytic_user_function
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Neplatný súbor XML pre zobrazenie architektúry!"
#. module: analytic_user_function
#: model:ir.model,name:analytic_user_function.model_analytic_user_funct_grid
msgid "Relation table between users and products on a analytic account"
msgstr ""
#. module: analytic_user_function
#: field:analytic_user_funct_grid,product_id:0
msgid "Product"
msgstr "Produkt"
#. module: analytic_user_function
#: field:analytic_user_funct_grid,account_id:0
msgid "Analytic Account"
msgstr "Analytický účet"
#. module: analytic_user_function
#: view:account.analytic.account:0
#: field:account.analytic.account,user_product_ids:0
msgid "Users/Products Rel."
msgstr ""
#. module: analytic_user_function
#: field:analytic_user_funct_grid,user_id:0
msgid "User"
msgstr "Užívateľ"
#. module: analytic_user_function
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
"Názov objektu musí začínať x_ a nesmie obsahovať žiadne špeciálne znaky!"
#. module: analytic_user_function
#: model:ir.module.module,shortdesc:analytic_user_function.module_meta_information
msgid "Analytic User Function"
msgstr ""
#. module: analytic_user_function
#: view:analytic_user_funct_grid:0
msgid "User's Product for this Analytic Account"
msgstr ""
+4 -1
View File
@@ -37,6 +37,9 @@ months = {
10:"October", 11:"November", 12:"December"}
def get_recurrent_dates(rrulestring, exdate, startdate=None):
def todate(date):
val = parser.parse(''.join((re.compile('\d')).findall(date)) + 'Z')
return val
if not startdate:
startdate = datetime.now()
rset1 = rrule.rrulestr(rrulestring, dtstart=startdate, forceset=True)
@@ -394,7 +397,7 @@ request was delegated to"),
'language': fields.function(_compute_data, method=True, string='Language', type="selection", selection=_lang_get, multi='language', store=True, help="To specify the language for text values in a property or property parameter."),
'user_id': fields.many2one('res.users', 'User'),
'partner_address_id': fields.many2one('res.partner.address', 'Contact'),
'partner_id': fields.related('partner_address_id', 'partner_id', type='many2one', relation='res.partner', string='Partner'),
'partner_id': fields.related('partner_address_id', 'partner_id', type='many2one', relation='res.partner', string='Partner', help="Partner related to contact"),
'email': fields.char('Email', size=124, required=True, help="Email of Invited Person"),
'event_date': fields.function(_compute_data, method=True, string='Event Date', type="datetime", multi='event_date'),
'event_end_date': fields.function(_compute_data, method=True, string='Event End Date', type="datetime", multi='event_end_date'),
+2 -2
View File
@@ -71,8 +71,8 @@
<group colspan="4" col="4">
<field name="user_id" string="Invited User"/>
<newline/>
<field name="partner_id" string="Partner"/>
<field name="partner_address_id" string="Contact"/>
<field name="partner_address_id" string="Partner Contact"/>
<field name="partner_id" string="Partner" readonly="1"/>
<field name="role" string="Role" />
<field name="cutype" string="Invitation type" />
<field name="rsvp" />
+3 -3
View File
@@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-22 18:58+0000\n"
"PO-Revision-Date: 2010-02-28 09:01+0000\n"
"Last-Translator: Ferdinand @ ChriCar <Unknown>\n"
"Language-Team: German <de@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: 2009-12-16 05:26+0000\n"
"X-Launchpad-Export-Date: 2010-03-01 05:01+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base_module_quality
#: field:module.quality.check,final_score:0
msgid "Final Score (%)"
msgstr "Final Score (%)"
msgstr "Endergebnis"
#. module: base_module_quality
#: constraint:ir.model:0
+4 -4
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0_rc3\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-02-02 17:45+0000\n"
"PO-Revision-Date: 2010-02-25 08:34+0000\n"
"Last-Translator: Nikolay Chesnokov <chesnokov_n@msn.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-02-04 04:47+0000\n"
"X-Launchpad-Export-Date: 2010-02-27 04:48+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base_module_quality
@@ -98,7 +98,7 @@ msgstr "Неправильный XML для просмотра архитект
#. module: base_module_quality
#: model:ir.model,name:base_module_quality.model_module_quality_check
msgid "module.quality.check"
msgstr ""
msgstr "Проверка качества"
#. module: base_module_quality
#: field:module.quality.detail,name:0
@@ -154,7 +154,7 @@ msgstr "Проверка качества"
#. module: base_module_quality
#: model:ir.model,name:base_module_quality.model_module_quality_detail
msgid "module.quality.detail"
msgstr ""
msgstr "Детальный отчет от качестве модуля"
#. module: base_module_quality
#: selection:module.quality.detail,state:0
+45 -45
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-02-03 12:16+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2010-02-26 20:18+0000\n"
"Last-Translator: Grzegorz Grzelak (Cirrus) <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: 2009-12-16 05:21+0000\n"
"X-Launchpad-Export-Date: 2010-02-27 04:48+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base_report_creator
@@ -27,7 +27,7 @@ msgstr ""
#. module: base_report_creator
#: field:base_report_creator.report,view_graph_type:0
msgid "Graph Type"
msgstr ""
msgstr "Typ wykresu"
#. module: base_report_creator
#: view:base_report_creator.report:0
@@ -57,7 +57,7 @@ msgstr ""
#. module: base_report_creator
#: field:base_report_creator.report.filter,expression:0
msgid "Value"
msgstr ""
msgstr "Wartość"
#. module: base_report_creator
#: model:ir.actions.wizard,name:base_report_creator.wizard_set_filter_fields
@@ -67,7 +67,7 @@ msgstr ""
#. module: base_report_creator
#: selection:base_report_creator.report.fields,calendar_mode:0
msgid "Ending Date"
msgstr ""
msgstr "Data końcowa"
#. module: base_report_creator
#: model:ir.model,name:base_report_creator.model_base_report_creator_report_filter
@@ -84,17 +84,17 @@ msgstr ""
#: view:base_report_creator.report:0
#: wizard_button:base_report_creator.report.menu.create,init,create_menu:0
msgid "Create Menu"
msgstr ""
msgstr "Utwórz menu"
#. module: base_report_creator
#: selection:base_report_creator.report.fields,group_method:0
msgid "Minimum"
msgstr ""
msgstr "Minimum"
#. module: base_report_creator
#: wizard_field:base_report_creator.report_filter.fields,set_value_select_field,operator:0
msgid "Operator"
msgstr ""
msgstr "Operator"
#. module: base_report_creator
#: selection:base_report_creator.report.filter,condition:0
@@ -131,7 +131,7 @@ msgstr ""
#. module: base_report_creator
#: field:base_report_creator.report,type:0
msgid "Report Type"
msgstr ""
msgstr "Typ raportu"
#. module: base_report_creator
#: view:base_report_creator.report:0
@@ -141,7 +141,7 @@ msgstr "Stan"
#. module: base_report_creator
#: selection:base_report_creator.report,state:0
msgid "Valid"
msgstr "Prawidłowy"
msgstr "Skończony"
#. module: base_report_creator
#: view:base_report_creator.report:0
@@ -158,7 +158,7 @@ msgstr ""
#: selection:base_report_creator.report,view_type2:0
#: selection:base_report_creator.report,view_type3:0
msgid "Form"
msgstr ""
msgstr "Formularz"
#. module: base_report_creator
#: selection:base_report_creator.report,view_type3:0
@@ -172,12 +172,12 @@ msgstr ""
#: field:base_report_creator.report.filter,report_id:0
#: model:ir.model,name:base_report_creator.model_base_report_creator_report
msgid "Report"
msgstr ""
msgstr "Raport"
#. module: base_report_creator
#: selection:base_report_creator.report.fields,calendar_mode:0
msgid "Starting Date"
msgstr ""
msgstr "Data rozpoczęcia"
#. module: base_report_creator
#: constraint:ir.ui.view:0
@@ -189,7 +189,7 @@ msgstr "XML niewłaściwy dla tej architektury wyświetlania!"
#: selection:base_report_creator.report,view_type2:0
#: selection:base_report_creator.report,view_type3:0
msgid "Tree"
msgstr ""
msgstr "Drzewo"
#. module: base_report_creator
#: field:base_report_creator.report,group_ids:0
@@ -209,12 +209,12 @@ msgstr ""
#. module: base_report_creator
#: view:base_report_creator.report:0
msgid "Security"
msgstr "Zabezpieczenia"
msgstr "Uprawnienia"
#. module: base_report_creator
#: wizard_field:base_report_creator.report.menu.create,init,menu_name:0
msgid "Menu Name"
msgstr ""
msgstr "Nazwa Menu"
#. module: base_report_creator
#: selection:base_report_creator.report.filter,condition:0
@@ -235,21 +235,21 @@ msgstr ""
#. module: base_report_creator
#: selection:base_report_creator.report.fields,graph_mode:0
msgid "Y Axis"
msgstr ""
msgstr "Oś Y"
#. module: base_report_creator
#: selection:base_report_creator.report,view_type1:0
#: selection:base_report_creator.report,view_type2:0
#: selection:base_report_creator.report,view_type3:0
msgid "Calendar"
msgstr ""
msgstr "Kalendarz"
#. module: base_report_creator
#: selection:base_report_creator.report,view_type1:0
#: selection:base_report_creator.report,view_type2:0
#: selection:base_report_creator.report,view_type3:0
msgid "Graph"
msgstr ""
msgstr "Wykres"
#. module: base_report_creator
#: wizard_field:base_report_creator.report_filter.fields,set_value_select_field,field_id:0
@@ -259,7 +259,7 @@ msgstr "Nazwa pola"
#. module: base_report_creator
#: selection:base_report_creator.report,state:0
msgid "Draft"
msgstr "Roboczy"
msgstr "Projekt"
#. module: base_report_creator
#: wizard_view:base_report_creator.report_filter.fields,set_value_select_field:0
@@ -269,12 +269,12 @@ msgstr ""
#. module: base_report_creator
#: field:base_report_creator.report,state:0
msgid "Status"
msgstr ""
msgstr "Stan"
#. module: base_report_creator
#: selection:base_report_creator.report,view_graph_orientation:0
msgid "Vertical"
msgstr ""
msgstr "Pionowo"
#. module: base_report_creator
#: selection:base_report_creator.report,type:0
@@ -284,7 +284,7 @@ msgstr ""
#. module: base_report_creator
#: view:base_report_creator.report:0
msgid "General Configuration"
msgstr ""
msgstr "Konfiguracja ogólna"
#. module: base_report_creator
#: wizard_view:base_report_creator.report_filter.fields,init:0
@@ -294,38 +294,38 @@ msgstr ""
#. module: base_report_creator
#: field:base_report_creator.report,active:0
msgid "Active"
msgstr ""
msgstr "Aktywne"
#. module: base_report_creator
#: selection:base_report_creator.report,view_graph_orientation:0
msgid "Horizontal"
msgstr ""
msgstr "Poziomo"
#. module: base_report_creator
#: field:base_report_creator.report.fields,group_method:0
msgid "Grouping Method"
msgstr ""
msgstr "Metoda grupowania"
#. module: base_report_creator
#: field:base_report_creator.report.filter,condition:0
#: wizard_field:base_report_creator.report_filter.fields,set_value_select_field,condition:0
msgid "Condition"
msgstr ""
msgstr "Warunek"
#. module: base_report_creator
#: selection:base_report_creator.report.fields,group_method:0
msgid "Count"
msgstr ""
msgstr "Licznik"
#. module: base_report_creator
#: selection:base_report_creator.report.fields,graph_mode:0
msgid "X Axis"
msgstr ""
msgstr "Oś X"
#. module: base_report_creator
#: wizard_field:base_report_creator.report.menu.create,init,menu_parent_id:0
msgid "Parent Menu"
msgstr ""
msgstr "Menu nadrzędne"
#. module: base_report_creator
#: wizard_button:base_report_creator.report_filter.fields,set_value_select_field,set_value:0
@@ -340,12 +340,12 @@ msgstr ""
#. module: base_report_creator
#: model:ir.actions.wizard,name:base_report_creator.wizard_report_open
msgid "Open Report"
msgstr ""
msgstr "Otwórz raport"
#. module: base_report_creator
#: selection:base_report_creator.report.fields,group_method:0
msgid "Grouped"
msgstr ""
msgstr "Zgrupowane"
#. module: base_report_creator
#: view:base_report_creator.report:0
@@ -358,7 +358,7 @@ msgstr ""
#: wizard_button:base_report_creator.report_filter.fields,init,end:0
#: wizard_button:base_report_creator.report_filter.fields,set_value_select_field,end:0
msgid "Cancel"
msgstr ""
msgstr "Anuluj"
#. module: base_report_creator
#: constraint:ir.model:0
@@ -391,7 +391,7 @@ msgstr ""
#. module: base_report_creator
#: selection:base_report_creator.report,view_graph_type:0
msgid "Pie Chart"
msgstr ""
msgstr "Wykres kołowy"
#. module: base_report_creator
#: field:base_report_creator.report,view_type3:0
@@ -417,42 +417,42 @@ msgstr ""
#. module: base_report_creator
#: field:base_report_creator.report,name:0
msgid "Report Name"
msgstr ""
msgstr "Nazwa raportu"
#. module: base_report_creator
#: view:base_report_creator.report:0
msgid "Fields"
msgstr ""
msgstr "Pola"
#. module: base_report_creator
#: selection:base_report_creator.report.fields,group_method:0
msgid "Average"
msgstr ""
msgstr "Średnia"
#. module: base_report_creator
#: view:base_report_creator.report:0
msgid "Reports"
msgstr ""
msgstr "Raporty"
#. module: base_report_creator
#: selection:base_report_creator.report.fields,group_method:0
msgid "Maximum"
msgstr ""
msgstr "Maksimum"
#. module: base_report_creator
#: wizard_button:base_report_creator.report_filter.fields,init,set_value_select_field:0
msgid "Continue"
msgstr ""
msgstr "Kontynuuj"
#. module: base_report_creator
#: wizard_field:base_report_creator.report_filter.fields,set_value_select_field,value:0
msgid "Values"
msgstr ""
msgstr "Wartości"
#. module: base_report_creator
#: selection:base_report_creator.report,view_graph_type:0
msgid "Bar Chart"
msgstr ""
msgstr "Wykres słupkowy"
#. module: base_report_creator
#: field:base_report_creator.report,view_type2:0
@@ -472,12 +472,12 @@ msgstr ""
#. module: base_report_creator
#: field:base_report_creator.report.fields,sequence:0
msgid "Sequence"
msgstr ""
msgstr "Numeracja"
#. module: base_report_creator
#: wizard_field:base_report_creator.report_filter.fields,init,field_id:0
msgid "Filter Field"
msgstr ""
msgstr "Pole filtrowania"
#. module: base_report_creator
#: view:base_report_creator.report:0
+39
View File
@@ -0,0 +1,39 @@
# English (Australia) translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-02-26 07:31+0000\n"
"Last-Translator: brentos <Unknown>\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: 2010-02-27 04:48+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base_vat
#: model:ir.module.module,description:base_vat.module_meta_information
msgid ""
"Enable the VAT Number for the partner. Check the validity of that VAT Number."
msgstr "Enable the ABN for the partner. Check the validity of at ABN."
#. module: base_vat
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Invalid XML for View Architecture!"
#. module: base_vat
#: field:res.partner,vat_subjected:0
msgid "VAT Legal Statement"
msgstr "GST Legal Statement"
#. module: base_vat
#: model:ir.module.module,shortdesc:base_vat.module_meta_information
msgid "VAT"
msgstr "GST"
+10 -10
View File
@@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-12-15 11:05+0000\n"
"PO-Revision-Date: 2010-02-23 08:20+0000\n"
"Last-Translator: Radoslav Sloboda <rado.sloboda@gmail.com>\n"
"Language-Team: Slovak <sk@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: 2009-12-16 05:21+0000\n"
"X-Launchpad-Export-Date: 2010-02-25 04:51+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: board_account
#: view:board.board:0
msgid "Analytic accounts to close"
msgstr ""
msgstr "Zatvoriť analytické účty"
#. module: board_account
#: view:board.board:0
@@ -36,24 +36,24 @@ msgstr "Neplatný súbor XML pre zobrazenie architektúry!"
#: model:ir.actions.act_window,name:board_account.open_board_account
#: model:ir.ui.menu,name:board_account.menu_board_account
msgid "Accounting Dashboard"
msgstr ""
msgstr "Nástenka účtovníctva"
#. module: board_account
#: model:ir.actions.act_window,name:board_account.action_aged_receivable
msgid "Receivable Accounts"
msgstr ""
msgstr "Účty pohľadávok"
#. module: board_account
#: view:board.board:0
#: model:ir.actions.act_window,name:board_account.act_my_account
msgid "Accounts to invoice"
msgstr ""
msgstr "Účty na faktúre"
#. module: board_account
#: view:board.board:0
#: model:ir.actions.act_window,name:board_account.action_account_analytic_line_to_invoice
msgid "Costs to invoice"
msgstr ""
msgstr "Náklady na faktúru"
#. module: board_account
#: view:board.board:0
@@ -73,17 +73,17 @@ msgstr ""
#. module: board_account
#: view:board.board:0
msgid "My indicators"
msgstr ""
msgstr "Moja ukazovatele"
#. module: board_account
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr ""
msgstr "Neplatný názov modelu v akcii definície."
#. module: board_account
#: model:ir.ui.menu,name:board_account.next_id_68
msgid "Accounting"
msgstr ""
msgstr "Účtovníctvo"
#. module: board_account
#: view:board.board:0
+1 -1
View File
@@ -24,9 +24,9 @@ import crm_mailgate
import crm_action_rule
import crm_segmentation
import crm_meeting
import crm_opportunity
import crm_lead
import crm_phonecall
import crm_opportunity
import crm_claim
import crm_fundraising
import crm_helpdesk
+24 -28
View File
@@ -62,15 +62,15 @@ icon_lst = {
class crm_case_section(osv.osv):
_name = "crm.case.section"
_description = "Case Section"
_description = "Sales Teams"
_order = "name"
_columns = {
'name': fields.char('Case Section',size=64, required=True, translate=True),
'code': fields.char('Section Code',size=8),
'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the case section without removing it."),
'name': fields.char('Sales Team',size=64, required=True, translate=True),
'code': fields.char('Code',size=8),
'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the sales team without removing it."),
'allow_unlink': fields.boolean('Allow Delete', help="Allows to delete non draft cases"),
'user_id': fields.many2one('res.users', 'Responsible User'),
'reply_to': fields.char('Reply-To', size=64, help="The email address put in the 'Reply-To' of all emails sent by Open ERP about cases in this section"),
'reply_to': fields.char('Reply-To', size=64, help="The email address put in the 'Reply-To' of all emails sent by Open ERP about cases in this sales team"),
'parent_id': fields.many2one('crm.case.section', 'Parent Section'),
'child_ids': fields.one2many('crm.case.section', 'parent_id', 'Child Sections'),
}
@@ -111,17 +111,15 @@ class crm_case_categ(osv.osv):
_description = "Category of case"
_columns = {
'name': fields.char('Case Category Name', size=64, required=True, translate=True),
'probability': fields.float('Probability (%)', required=True),
'section_id': fields.many2one('crm.case.section', 'Case Section'),
'name': fields.char('Case Category Name', size=64, required=True, translate=True),
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
'object_id': fields.many2one('ir.model','Object Name'),
}
def _find_object_id(self, cr, uid, context=None):
object_id = context and context.get('object_id', False) or False
ids =self.pool.get('ir.model').search(cr, uid, [('model', '=', object_id)])
return ids and ids[0]
_defaults = {
'probability': lambda *args: 0.0,
_defaults = {
'object_id' : _find_object_id
}
#
@@ -133,7 +131,7 @@ class crm_case_resource_type(osv.osv):
_rec_name = "name"
_columns = {
'name': fields.char('Case Resource Type', size=64, required=True, translate=True),
'section_id': fields.many2one('crm.case.section', 'Case Section'),
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
'object_id': fields.many2one('ir.model','Object Name'),
}
def _find_object_id(self, cr, uid, context=None):
@@ -153,9 +151,11 @@ class crm_case_stage(osv.osv):
_order = "sequence"
_columns = {
'name': fields.char('Stage Name', size=64, required=True, translate=True),
'section_id': fields.many2one('crm.case.section', 'Case Section'),
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of case stages."),
'object_id': fields.many2one('ir.model','Object Name'),
'probability': fields.float('Probability (%)', required=True),
'on_change': fields.boolean('Set Onchange'),
}
def _find_object_id(self, cr, uid, context=None):
object_id = context and context.get('object_id', False) or False
@@ -163,6 +163,7 @@ class crm_case_stage(osv.osv):
return ids and ids[0]
_defaults = {
'sequence': lambda *args: 1,
'probability': lambda *args: 0.0,
'object_id' : _find_object_id
}
@@ -218,21 +219,22 @@ class crm_case(osv.osv):
'id': fields.integer('ID', readonly=True),
'name': fields.char('Description', size=1024, required=True),
'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the case without removing it."),
'description': fields.text('Your action'),
'section_id': fields.many2one('crm.case.section', 'Section', select=True, help='Section to which Case belongs to. Define Responsible user and Email account for mail gateway.'),
'email_from': fields.char('Partner Email', size=128, help="These people will receive email."),
'email_cc': fields.char('Watchers Emails', size=252 , help="These people will receive a copy of the future" \
'description': fields.text('Description'),
'section_id': fields.many2one('crm.case.section', 'Sales Team', select=True, help='Sales team to which Case belongs to. Define Responsible user and Email account for mail gateway.'),
'email_from': fields.char('Email', size=128, help="These people will receive email."),
'email_cc': fields.text('Watchers Emails', size=252 , help="These people will receive a copy of the future" \
" communication between partner and users by email"),
'email_last': fields.function(_email_last, method=True,
string='Latest E-Mail', type='text'),
'partner_id': fields.many2one('res.partner', 'Partner'),
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', domain="[('partner_id','=',partner_id)]"),
'date': fields.datetime('Date'),
'create_date': fields.datetime('Created' ,readonly=True),
'date_deadline': fields.datetime('Deadline'),
'create_date': fields.datetime('Creation Date' ,readonly=True),
'write_date': fields.datetime('Update Date' ,readonly=True),
'date_deadline': fields.date('Deadline'),
'user_id': fields.many2one('res.users', 'Responsible'),
'history_line': fields.function(_get_log_ids, method=True, type='one2many', multi="history_line", relation="crm.case.history", string="Communication"),
'log_ids': fields.function(_get_log_ids, method=True, type='one2many', multi="log_ids", relation="crm.case.log", string="Logs History"),
'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]"),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True,
help='The state is set to \'Draft\', when a case is created.\
\nIf the case is in progress the state is set to \'Open\'.\
@@ -274,9 +276,9 @@ class crm_case(osv.osv):
'partner_address_id': _get_default_partner_address,
'email_from': _get_default_email,
'state': lambda *a: 'draft',
'date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
'date_deadline': lambda *a:(datetime.today() + timedelta(days=3)).strftime('%Y-%m-%d %H:%M:%S'),
'section_id': _get_section,
'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.case', context=c),
}
_order = 'date_deadline desc, date desc,id desc'
@@ -318,13 +320,8 @@ class crm_case(osv.osv):
s[section] = dict([(v, k) for (k, v) in s[section].iteritems()])
if st in s[section]:
self.write(cr, uid, [case.id], {'stage_id': s[section][st]})
return True
return True
def onchange_categ_id(self, cr, uid, ids, categ, context={}):
if not categ:
return {'value':{}}
cat = self.pool.get('crm.case.categ').browse(cr, uid, categ, context).probability
return {'value':{'probability':cat}}
def onchange_case_id(self, cr, uid, ids, case_id, name, partner_id, context={}):
if not case_id:
@@ -430,7 +427,7 @@ class crm_case(osv.osv):
if not part:
return {'value':{'partner_address_id': False,
'email_from': False,
'partner_name2': False}}
}}
addr = self.pool.get('res.partner').address_get(cr, uid, [part], ['contact'])
data = {'partner_address_id': addr['contact']}
data.update(self.onchange_partner_address_id(cr, uid, ids, addr['contact'])['value'])
@@ -442,7 +439,6 @@ class crm_case(osv.osv):
return {'value': {'email_from': False, 'partner_name2': False}}
address= self.pool.get('res.partner.address').browse(cr, uid, add)
data['email_from'] = address.email
data['partner_name2'] = address.name or ''
return {'value': data}
def case_close(self, cr, uid, ids, *args):
+1
View File
@@ -29,6 +29,7 @@ class crm_claim(osv.osv):
_inherit = 'crm.case'
_columns = {
'date_closed': fields.datetime('Closed', readonly=True),
'date': fields.datetime('Date'),
'ref' : fields.reference('Reference', selection=crm._links_get, size=128),
'ref2' : fields.reference('Reference 2', selection=crm._links_get, size=128),
'canal_id': fields.many2one('res.partner.canal', 'Channel',help="The channels represent the different communication modes available with the customer." \
+70 -74
View File
@@ -8,25 +8,25 @@
<field name="name">Claim Categories</field>
<field name="res_model">crm.case.categ</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_categ_tree-view"/>
<field name="domain">[('object_id.model', '=', 'crm.claim')]</field>
<field name="context">{'object_id':'crm.claim'}</field>
<field name="view_id" ref="crm.crm_case_categ_tree-view"/>
<field name="domain">[('object_id.model', '=', 'crm.claim')]</field>
<field name="context">{'object_id':'crm.claim'}</field>
</record>
<menuitem action="crm_claim_categ_action" id="menu_crm_case_claim-act" parent="crm.menu_crm_case_categ"/>
# ------------------------------------------------------
# Stages
# ------------------------------------------------------
<record id="crm_claim_stage_act" model="ir.actions.act_window">
<field name="name">Claim Stages</field>
<field name="res_model">crm.case.stage</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_stage_tree"/>
<field name="domain">[('object_id.model', '=', 'crm.claim')]</field>
<field name="context">{'object_id':'crm.claim'}</field>
</record>
<menuitem action="crm_claim_stage_act" id="menu_crm_claim_stage_act" parent="crm.menu_crm_case_stage"/>
<record id="crm_claim_stage_act" model="ir.actions.act_window">
<field name="name">Claim Stages</field>
<field name="res_model">crm.case.stage</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_stage_tree"/>
<field name="domain">[('object_id.model', '=', 'crm.claim')]</field>
<field name="context">{'object_id':'crm.claim'}</field>
</record>
<menuitem action="crm_claim_stage_act" id="menu_crm_claim_stage_act" parent="crm.menu_crm_case_stage"/>
<!-- Claims -->
<!-- Claims -->
<record model="ir.ui.view" id="crm_case_claims_tree_view">
<field name="name">CRM - Claims Tree</field>
<field name="model">crm.claim</field>
@@ -59,36 +59,35 @@
<group colspan="4" col="4">
<notebook>
<page string="Claim Info">
<separator colspan="4" string="Communication"/>
<group colspan="4" col="4">
<field name="partner_id" string="Partner"
on_change="onchange_partner_id(partner_id)" />
<field name="partner_address_id" string="Contact"
on_change="onchange_partner_address_id(partner_address_id, email_from)" />
<field name="partner_phone"/>
<field name="partner_mobile"/>
<field name="email_from"/>
</group>
<separator colspan="4" string="Communication"/>
<group colspan="4" col="4">
<field name="partner_id" string="Partner"
on_change="onchange_partner_id(partner_id)" />
<field name="partner_address_id" string="Contact"
on_change="onchange_partner_address_id(partner_address_id, email_from)" />
<field name="partner_phone"/>
<field name="partner_mobile"/>
<field name="email_from"/>
</group>
<separator colspan="4" string="Status and Categorization"/>
<group colspan="4" col="6">
<field name="user_id" string="Responsible" select="2"/>
<field name="section_id" widget="selection"/>
<label string="Stage: " align="1.0"/>
<group colspan="1" col="2">
<field name="stage_id" select="1" nolabel="1"/>
<button icon="gtk-go-forward" string="" name="stage_next" type="object"/>
</group>
<field name="categ_id" select="1" widget="selection"
on_change="onchange_categ_id(categ_id)"
domain="[('object_id.model', '=', 'crm.claim')]" />
<field name="type_id" string="Type of Action" select="1"
domain="[('object_id.model', '=', 'crm.claim')]" />
<field name="priority"/>
<field name="user_id" string="Responsible" select="2"/>
<field name="section_id" widget="selection"/>
<label string="Stage: " align="1.0"/>
<group colspan="1" col="2">
<field name="stage_id" select="1" nolabel="1"/>
<button icon="gtk-go-forward" string="" name="stage_next" type="object"/>
</group>
<field name="categ_id" select="1" widget="selection"
domain="[('object_id.model', '=', 'crm.claim')]" />
<field name="type_id" string="Type of Action" select="1"
domain="[('object_id.model', '=', 'crm.claim')]" />
<field name="priority"/>
</group>
<separator colspan="4" string="References"/>
<group colspan="4" col="4">
<field name="ref"/>
<field name="ref2"/>
<field name="ref"/>
<field name="ref2"/>
</group>
<separator colspan="4" string="Claim/Action Description"/>
<field name="description" colspan="4" nolabel="1"/>
@@ -132,9 +131,9 @@
<field name="email"/>
<field name="canal_id"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
icon="gtk-add" type="action"/>
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
icon="gtk-add" type="action"/>
</group>
<newline/>
<field name="description" colspan="4" nolabel="1"/>
@@ -168,17 +167,17 @@
</field>
</record>
<record model="ir.ui.view" id="crm_case_graph_view_stage_cost">
<field name="name">CRM -Graph</field>
<field name="model">crm.claim</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Cases By Stage and Estimates" type="bar" orientation="vertical">
<field name="stage_id"/>
<field name="planned_cost" operator="+"/>
<field name="planned_revenue" operator="+"/>
</graph>
</field>
<record model="ir.ui.view" id="crm_case_graph_view_stage_cost">
<field name="name">CRM -Graph</field>
<field name="model">crm.claim</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Cases By Stage and Estimates" type="bar" orientation="vertical">
<field name="stage_id"/>
<field name="planned_cost" operator="+"/>
<field name="planned_revenue" operator="+"/>
</graph>
</field>
</record>
<record id="view_crm_case_claims_filter" model="ir.ui.view">
@@ -187,35 +186,32 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Claims">
<group col="4" colspan="1">
<filter icon="gtk-new" string="Current Claims"
domain="[('state','in',('draft', 'open'))]"
separator="1" help="Current Claims" default="1"
/>
<filter icon="gtk-execute"
string="In Progress Claims"
domain="[('state','=','open')]"
separator="1" help="In Progress Claims"
/>
<filter icon="gtk-media-pause"
string="Pending Claims"
domain="[('state','=','pending')]"
separator="1" help="All pending Claims"
/>
</group>
<filter icon="gtk-new" string="Current Claims"
domain="[('state','in',('draft', 'open'))]"
separator="1" help="Current Claims" default="1"
/>
<filter icon="gtk-execute"
string="In Progress Claims"
domain="[('state','=','open')]"
separator="1" help="In Progress Claims"
/>
<filter icon="gtk-media-pause"
string="Pending Claims"
domain="[('state','=','pending')]"
separator="1" help="All pending Claims"
/>
<separator orientation="vertical"/>
<group col="4" colspan="2">
<field name="name" select='1'/>
<field name="partner_id" select="1"/>
<field name="user_id" select="1" widget="selection"/>
</group>
<field name="name" select='1'/>
<field name="partner_id" select="1"/>
<field name="user_id" select="1" widget="selection"/>
<field name="section_id" select="1" widget="selection" string="Section" default="context.get('section_id', False)">
<filter icon="terp-crm"
domain="[('section_id','=',context.get('section_id',False))]"
help="My section"
/>
</field>
<group expand="1" string="Group By..." colspan="4" col="20">
<newline/>
<group expand="1" string="Group By..." colspan="10" col="20">
<filter string="Deadline" icon="terp-crm" domain="[]" context="{'group_by':'date_deadline'}"/>
<filter string="Closure" icon="terp-crm" domain="[]" context="{'group_by':'date_closed'}"/>
</group>
+1 -1
View File
@@ -81,7 +81,7 @@
<field name="user_id" select="2" string="Responsible"/>
<field name="section_id" colspan="1" widget="selection"/>
<field name="categ_id" select="1"
on_change="onchange_categ_id(categ_id)" widget="selection"
widget="selection"
domain="[('object_id.model', '=', 'crm.fundraising')]" />
<field name="date"/>
<field name="duration"/>
+1
View File
@@ -29,6 +29,7 @@ class crm_fundraising(osv.osv):
_inherit ='crm.case'
_columns = {
'date_closed': fields.datetime('Closed', readonly=True),
'date': fields.datetime('Date'),
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),
'categ_id': fields.many2one('crm.case.categ','Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.fundraising')]"),
'planned_revenue': fields.float('Planned Revenue'),
+1
View File
@@ -29,6 +29,7 @@ class crm_helpdesk(osv.osv):
_inherit = 'crm.case'
_columns = {
'date_closed': fields.datetime('Closed', readonly=True),
'date': fields.datetime('Date'),
'ref' : fields.reference('Reference', selection=crm._links_get, size=128),
'ref2' : fields.reference('Reference 2', selection=crm._links_get, size=128),
'canal_id': fields.many2one('res.partner.canal', 'Channel',help="The channels represent the different communication modes available with the customer." \
+25 -28
View File
@@ -65,7 +65,7 @@
<page string="History" groups="base.group_extended">
<field name="id" select="1"/>
<field name="active" select="2"/>
<field name="categ_id" on_change="onchange_categ_id(categ_id)" select="2"/>
<field name="categ_id" select="2"/>
<field name="som" select="2"/>
<separator colspan="4" string="Dates"/>
<field name="create_date"/>
@@ -160,34 +160,31 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Helpdesk">
<group col="6" colspan="1">
<filter icon="gtk-home" string="Today"
separator="1"
domain="[('date::date','=',time.strftime('%%Y-%%m-%%d'))]"
help="Todays's Helpdesk Requests"
/>
<filter icon="gtk-media-rewind"
string="7 Days" separator="1"
help="Helpdesk requests during last 7 days"
domain="[('date','&lt;', time.strftime('%%Y-%%m-%%d')), ('date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
/>
</group>
<filter icon="gtk-home" string="Today"
separator="1"
domain="[('date::date','=',time.strftime('%%Y-%%m-%%d'))]"
help="Todays's Helpdesk Requests"
/>
<filter icon="gtk-media-rewind"
string="7 Days" separator="1"
help="Helpdesk requests during last 7 days"
domain="[('date','&lt;', time.strftime('%%Y-%%m-%%d')), ('date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
/>
<separator orientation="vertical"/>
<group col="6" colspan="2">
<field name="name" select='1' string="Query"/>
<field name="user_id" select="1" widget="selection">
<filter icon="terp-partner" domain="[('user_id','=',uid)]" help="My Helpdesk Requests" default="1"/>
</field>
<field name="state" select="1">
<filter icon="gtk-index" domain="[('state','in',('open','draft' ))]" help="Current " default="1"/>
</field>
<field name="section_id" default="context.get('section_id', False)" select="1" widget="selection" string="Section">
<filter icon="terp-crm"
domain="[('section_id','=',context.get('section_id',False))]"
help="My section"/>
</field>
</group>
<group expand="1" string="Group By..." colspan="4" col="20">
<field name="name" select='1' string="Query"/>
<field name="user_id" select="1" widget="selection">
<filter icon="terp-partner" domain="[('user_id','=',uid)]" help="My Helpdesk Requests" default="1"/>
</field>
<field name="state" select="1">
<filter icon="gtk-index" domain="[('state','in',('open','draft' ))]" help="Current " default="1"/>
</field>
<field name="section_id" default="context.get('section_id', False)" select="1" widget="selection" string="Section">
<filter icon="terp-crm"
domain="[('section_id','=',context.get('section_id',False))]"
help="My section"/>
</field>
<newline/>
<group expand="1" string="Group By..." colspan="12" col="20">
<filter string="Customer" icon="terp-crm" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="State" icon="terp-crm" domain="[]" context="{'group_by':'state'}"/>
<filter string="Priority" icon="terp-crm" domain="[]" context="{'group_by':'priority'}"/>
+16 -29
View File
@@ -22,38 +22,25 @@
from osv import fields,osv,orm
import crm
class crm_opportunity(osv.osv):
_name = "crm.opportunity"
_description = "Opportunity Cases"
crm_opportunity()
class crm_lead(osv.osv):
_name = "crm.lead"
_description = "Leads Cases"
_order = "id desc"
_inherit = 'crm.case'
_order = "priority desc, id desc"
_inherit = ['res.partner.address','crm.case']
_columns = {
'name': fields.char('Lead Subject', size=64),
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]"),
'type_id': fields.many2one('crm.case.resource.type', 'Lead Type Name', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]"),
'partner_name': fields.char("Lead Name", size=64),
'partner_name2': fields.char('Email', size=64),
'partner_phone': fields.char('Phone', size=32),
'partner_mobile': fields.char('Mobile', size=32),
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),
'probability': fields.float('Probability (%)'),
'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),
'canal_id': fields.many2one('res.partner.canal', 'Channel',help="The channels represent the different communication modes available with the customer." \
" With each commercial opportunity, you can indicate the canall which is this opportunity source."),
'planned_revenue': fields.float('Planned Revenue'),
'planned_cost': fields.float('Planned Costs'),
'stage_id': fields.many2one('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]"),
'som': fields.many2one('res.partner.som', 'State of Mind', help="The minds states allow to define a value scale which represents" \
"the partner mentality in relation to our services.The scale has" \
"to be created with a factor for each level from 0 (Very dissatisfied) to 10 (Extremely satisfied)."),
'opportunity_id': fields.many2one('crm.opportunity', 'Opportunity'),
}
'categ_id': fields.many2one('crm.case.categ', 'Lead Source', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]"),
'type_id': fields.many2one('crm.case.resource.type', 'Lead Type', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]"),
'partner_name': fields.char("Lead Name", size=64),
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),
'date_closed': fields.datetime('Closed', readonly=True),
'stage_id': fields.many2one('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.lead')]"),
'opportunity_id': fields.many2one('crm.opportunity', 'Opportunity'),
'user_id': fields.many2one('res.users', 'Salesman'),
'referred': fields.char('Referred By', size=32),
}
_defaults = {
'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.lead', context=c),
}
crm_lead()
+50 -50
View File
@@ -8,111 +8,111 @@
<!--For Leads-->
<record id="crm_case_itisatelesalescampaign0" model="crm.lead">
<field name="type_id" ref="crm.type_lead1"/>
<field eval="&quot;3&quot;" name="priority"/>
<field eval="'3'" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Exhibition ERP 2009&quot;" name="name"/>
<field eval="&quot;open&quot;" name="state"/>
<field eval="'Luc Latour'" name="name"/>
<field eval="'open'" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="&quot;Michel Lafont&quot;" name="partner_name2"/>
<field eval="&quot;(726) 782-0636&quot;" name="partner_mobile"/>
<field eval="'Michel Lafont'" name="partner_name2"/>
<field eval="'(726) 782-0636'" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_oppor6"/>
<field name="stage_id" ref="crm.stage_lead1"/>
<field eval="&quot;The Oil Company&quot;" name="partner_name"/>
<field eval="&quot;(769) 703-274&quot;" name="partner_phone"/>
<field eval="'The Oil Company'" name="partner_name"/>
<field eval="'(769) 703-274'" name="partner_phone"/>
</record>
<record id="crm_case_electonicgoodsdealer0" model="crm.lead">
<field name="type_id" ref="crm.type_lead7"/>
<field eval="&quot;4&quot;" name="priority"/>
<field eval="'4'" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Exhibition ERP 2009&quot;" name="name"/>
<field eval="&quot;open&quot;" name="state"/>
<field eval="'Marc Dufour'" name="name"/>
<field eval="'open'" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="&quot;Luc Latour&quot;" name="partner_name2"/>
<field eval="&quot;(392) 895-7917&quot;" name="partner_mobile"/>
<field eval="'Luc Latour'" name="partner_name2"/>
<field eval="'(392) 895-7917'" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_oppor2"/>
<field name="stage_id" ref="crm.stage_lead2"/>
<field eval="&quot;Le Club SARL&quot;" name="partner_name"/>
<field eval="&quot;(956) 293-2595&quot;" name="partner_phone"/>
<field eval="'Le Club SARL'" name="partner_name"/>
<field eval="'(956) 293-2595'" name="partner_phone"/>
</record>
<record id="crm_case_developingwebapplications0" model="crm.lead">
<field name="type_id" ref="crm.type_lead5"/>
<field eval="&quot;2&quot;" name="priority"/>
<field eval="'2'" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field eval="&quot;Exhibition ERP 2009&quot;" name="name"/>
<field eval="&quot;done&quot;" name="state"/>
<field eval="'Fabien Pinckaers'" name="name"/>
<field eval="'done'" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="&quot;Mike Gardner&quot;" name="partner_name2"/>
<field eval="&quot;(820) 167-3208&quot;" name="partner_mobile"/>
<field eval="'Mike Gardner'" name="partner_name2"/>
<field eval="'(820) 167-3208'" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_oppor4"/>
<field name="stage_id" ref="crm.stage_lead4"/>
<field eval="&quot;TheKompany&quot;" name="partner_name"/>
<field eval="&quot;(079) 681-2139&quot;" name="partner_phone"/>
<field eval="&quot;contact@tecsas.fr&quot;" name="email_from"/>
<field eval="'TheKompany'" name="partner_name"/>
<field eval="'(079) 681-2139'" name="partner_phone"/>
<field eval="'contact@tecsas.fr'" name="email_from"/>
</record>
<record id="crm_case_qrecorp0" model="crm.lead">
<field name="type_id" ref="crm.type_lead8"/>
<field eval="&quot;3&quot;" name="priority"/>
<field eval="'3'" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Exhibition ERP 2009&quot;" name="name"/>
<field eval="&quot;draft&quot;" name="state"/>
<field eval="'Henry Mc Coy'" name="name"/>
<field eval="'draft'" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="&quot;(077) 582-4035&quot;" name="partner_mobile"/>
<field eval="'(077) 582-4035'" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_oppor1"/>
<field name="stage_id" ref="crm.stage_lead1"/>
<field eval="&quot;The Gas Company&quot;" name="partner_name"/>
<field eval="&quot;(514) 698-4118&quot;" name="partner_phone"/>
<field eval="'The Gas Company'" name="partner_name"/>
<field eval="'(514) 698-4118'" name="partner_phone"/>
</record>
<record id="crm_case_itdeveloper0" model="crm.lead">
<field name="type_id" ref="crm.type_lead4"/>
<field eval="&quot;3&quot;" name="priority"/>
<field eval="'3'" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Carrie Helle&quot;" name="name"/>
<field eval="&quot;pending&quot;" name="state"/>
<field eval="'Carrie Helle'" name="name"/>
<field eval="'pending'" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="&quot;Sam Stone&quot;" name="partner_name2"/>
<field eval="&quot;(333) 715-1450&quot;" name="partner_mobile"/>
<field eval="'Sam Stone'" name="partner_name2"/>
<field eval="'(333) 715-1450'" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm.categ_oppor6"/>
<field name="stage_id" ref="crm.stage_lead3"/>
<field eval="&quot;Stonage IT&quot;" name="partner_name"/>
<field eval="&quot;(855) 924-4364&quot;" name="partner_phone"/>
<field eval="'Stonage IT'" name="partner_name"/>
<field eval="'(855) 924-4364'" name="partner_phone"/>
</record>
<record id="crm_case_mgroperations0" model="crm.lead">
<field name="partner_address_id" ref="base.res_partner_address_1"/>
<field eval="1" name="active"/>
<field name="type_id" ref="crm.type_lead3"/>
<field name="partner_id" ref="base.res_partner_9"/>
<field eval="&quot;3&quot;" name="priority"/>
<field eval="'3'" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Tina Pinero&quot;" name="name"/>
<field eval="&quot;cancel&quot;" name="state"/>
<field eval="'Tina Pinero'" name="name"/>
<field eval="'cancel'" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="&quot;Benoit Mortier&quot;" name="partner_name2"/>
<field eval="&quot;(468) 017-2684&quot;" name="partner_mobile"/>
<field eval="'Benoit Mortier'" name="partner_name2"/>
<field eval="'(468) 017-2684'" name="partner_mobile"/>
<field name="categ_id" ref="crm.categ_oppor8"/>
<field name="stage_id" ref="crm.stage_lead6"/>
<field eval="&quot;Opensides SPRL&quot;" name="partner_name"/>
<field eval="&quot;(373) 907-1009&quot;" name="partner_phone"/>
<field eval="&quot;info@opensides.be&quot;" name="email_from"/>
<field eval="'Opensides SPRL'" name="partner_name"/>
<field eval="'(373) 907-1009'" name="partner_phone"/>
<field eval="'info@opensides.be'" name="email_from"/>
</record>
<record id="crm_case_vpoperations0" model="crm.lead">
<field eval="1" name="active"/>
<field name="type_id" ref="crm.type_lead8"/>
<field eval="&quot;3&quot;" name="priority"/>
<field eval="'3'" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Wendi Baltz&quot;" name="name"/>
<field eval="&quot;done&quot;" name="state"/>
<field eval="'Wendi Baltz'" name="name"/>
<field eval="'done'" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="&quot;Will Smith&quot;" name="partner_name2"/>
<field eval="&quot;(463) 014-1208&quot;" name="partner_mobile"/>
<field eval="'Will Smith'" name="partner_name2"/>
<field eval="'(463) 014-1208'" name="partner_mobile"/>
<field name="categ_id" ref="crm.categ_oppor4"/>
<field name="stage_id" ref="crm.stage_lead4"/>
<field eval="&quot;Gardner Group&quot;" name="partner_name"/>
<field eval="&quot;(282) 603-7489&quot;" name="partner_phone"/>
<field eval="'Gardner Group'" name="partner_name"/>
<field eval="'(282) 603-7489'" name="partner_phone"/>
</record>
</data>
</openerp>
+194 -135
View File
@@ -4,18 +4,19 @@
# ------------------------------------------------------
# Stage
# ------------------------------------------------------
<record id="crm_lead_stage_act" model="ir.actions.act_window">
<field name="name">Lead Stages</field>
<field name="res_model">crm.case.stage</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_stage_tree"/>
<field name="domain">[('object_id.model', '=', 'crm.lead')]</field>
<field name="context">{'object_id':'crm.lead'}</field>
</record>
<menuitem action="crm_lead_stage_act" id="menu_crm_lead_stage_act" parent="crm.menu_crm_case_stage"/>
# ------------------------------------------------------
# Stage
# ------------------------------------------------------
<record id="crm_lead_stage_act" model="ir.actions.act_window">
<field name="name">Lead Stages</field>
<field name="res_model">crm.case.stage</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_stage_tree"/>
<field name="domain">[('object_id.model', '=', 'crm.lead')]</field>
<field name="context">{'object_id':'crm.lead'}</field>
</record>
<menuitem action="crm_lead_stage_act" id="menu_crm_lead_stage_act" parent="crm.menu_crm_case_stage"/>
# ------------------------------------------------------
# Leads
# ------------------------------------------------------
@@ -26,102 +27,147 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Leads Form">
<group colspan="4" col="6">
<field name="partner_name" string="Lead Name" required="1"/>
<field name="name" string="Lead Subject"/>
<button string="Create Opportunity" name="%(wizard_crm_lead_opportunity_set)d" icon="gtk-index" type="action"/>
<field name="partner_name2" string="Contact Name"/>
<field name="email_from" string="Email"/>
<button string="Convert to Partner"
icon="terp-partner" name="%(wizard_crm_lead_partner_create)d"
type="action" attrs="{'invisible':[('partner_id','!=',False)]}"
/>
<group colspan="4" col="6">
<field name="partner_name" required="1"/>
<field name="priority" required="1"/>
<field name="date_deadline"/>
<newline/>
<field name="section_id" colspan="1" widget="selection"/>
<field name="user_id"/>
<field name="stage_id" widget="selection" domain="[('object_id.model', '=', 'crm.lead')]"/>
</group>
<notebook colspan="4">
<page string="Lead">
<group colspan="2" col="4">
<separator string="Contact" colspan="4" col="4"/>
<field name="name" string="Contact Name" colspan="4"/>
<newline/>
<field domain="[('domain', '=', 'contact')]" name="title"/>
<field name="function"/>
<field name="street" colspan="4"/>
<field name="street2" colspan="4"/>
<field name="zip"/>
<field name="city"/>
<field name="country_id"/>
<field name="state_id"/>
</group>
<notebook colspan="4">
<page string="Leads">
<separator colspan="4" string="Communication"/>
<field name="partner_id" string="Partner"
on_change="onchange_partner_id(partner_id)" />
<field name="partner_address_id"
string="Contact"
on_change="onchange_partner_address_id(partner_address_id, email_from)" />
<field name="partner_phone"/>
<field name="partner_mobile"/>
<separator colspan="4" string="Status and Categorization"/>
<group colspan="4" col="6">
<field name="user_id" select="2"/>
<field name="stage_id" select="1" string="Status" widget="selection" domain="[('object_id.model', '=', 'crm.lead')]"/>
<field name="categ_id" select="1"
on_change="onchange_categ_id(categ_id)"
string="Lead Source" widget="selection"
domain="[('object_id.model', '=', 'crm.opportunity')]" />
<field name="type_id" string="Campaign" select="1"/>
<field name="section_id" colspan="1" widget="selection"/>
<field name="priority" string="Priority"/>
<field name="date" string="Create Date"/>
</group>
<separator colspan="4" string="Details"/>
<field name="description" nolabel="1" colspan="4"/>
<separator colspan="4"/>
<group col="8" colspan="4">
<field name="state" select="2"/>
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
<button name="case_reset" string="Reset to Draft" states="done,cancel" 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"/>
</group>
<field name="history_line" colspan="4" nolabel="1" mode="form,tree">
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
<field name="email"/>
<field name="canal_id"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
icon="gtk-add" type="action"/>
</group>
<newline/>
<field name="description" colspan="4" nolabel="1"/>
<button colspan="4" string="Reply to Last Email" name="%(crm.wizard_crm_send_mail)d" context="{'mail':'reply'}" icon="gtk-go-forward" type="action"/>
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<group colspan="2" col="3">
<separator string="Communication" colspan="4" col="3"/>
<field name="phone"/>
<newline/>
<field name="fax"/>
<newline/>
<field name="mobile"/>
<newline/>
<field name="email_from" widget="email"/>
<newline/>
<separator string="Links" colspan="4" col="3"/>
<field name="partner_id"/>
<button
name="%(wizard_crm_lead_partner_create)d"
icon="gtk-index" type="action"
string="Create"
attrs="{'invisible':[('partner_id','!=',False)]}"/>
<field name="opportunity_id"/>
<button
name="%(wizard_crm_lead_opportunity_set)d"
string="Convert"
icon="gtk-index"
type="action"
attrs="{'invisible':[('opportunity_id','!=',False)]}"/>
</group>
<separator colspan="4" string="Notes"/>
<field name="description" nolabel="1" colspan="4"/>
<separator colspan="4"/>
<group col="8" colspan="4">
<field name="state" select="2"/>
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
<button name="case_reset" string="Reset to Draft" states="done,cancel" 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"/>
</group>
<field name="history_line" colspan="4" nolabel="1" mode="form,tree">
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
</tree>
</field>
<button colspan="4" string="Send New Email"
name="%(crm.wizard_crm_new_send_mail)d"
context="{'mail':'new'}" icon="gtk-go-forward"
type="action" />
</page>
</notebook>
<field name="email"/>
<field name="canal_id"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
icon="gtk-add" type="action"/>
</group>
<newline/>
<field name="description" colspan="4" nolabel="1"/>
<button colspan="4" string="Reply to Last Email" name="%(crm.wizard_crm_send_mail)d" context="{'mail':'reply'}" icon="gtk-go-forward" type="action"/>
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<field name="date"/>
</tree>
</field>
<button colspan="4" string="Send New Email"
name="%(crm.wizard_crm_new_send_mail)d"
context="{'mail':'new'}" icon="gtk-go-forward"
type="action" />
</page>
<page string="Extra Info" groups="base.group_extended">
<group colspan="2" col="2">
<separator string="Categories" colspan="2" col="2"/>
<field name="company_id" groups="base.group_multi_company" widget="selection" colspan="2"/>
<field name="categ_id"
widget="selection"
domain="[('object_id.model', '=', 'crm.opportunity')]" />
<field name="type_id" string="Campaign" select="1"/>
<field name="referred"/>
</group>
<group colspan="2" col="2">
<separator string="Dates" colspan="2" col="2"/>
<field name="create_date"/>
<field name="write_date"/>
<field name="date_closed"/>
</group>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.ui.view" id="crm_case_tree_view_leads">
<field name="name">CRM - Leads Tree</field>
<field name="model">crm.lead</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Leads Tree" colors="red:state=='open';black:state in ('draft', 'pending');grey: state in ('cancel','done')">
<field name="partner_name" string="Lead Name"/>
<field name="stage_id" string="Status"/>
<field name="date" string="Create Date"/>
<field name="categ_id" string="Lead Source"/>
<field name="email_from" string="Email"/>
<tree string="Leads Tree" colors="blue:state=='pending';grey:state in ('cancel', 'done')">
<field name="create_date"/>
<field name="partner_name"/>
<field name="name"/>
<field name="email_from"/>
<field name="phone"/>
<field name="categ_id" invisible="1"/>
<field name="type_id" invisible="1"/>
<field name="referred" invisible="1"/>
<field name="stage_id"/>
<button name="stage_previous" string="Previous" states="open,pending" type="object" icon="gtk-go-back"/>
<button name="stage_next" string="Next" states="open,pending" type="object" icon="gtk-go-forward"/>
<field name="section_id" invisible="context.get('invisible_section', True)"/>
<field name="user_id"/>
<field name="state"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
<button string="Convert to Opportunity" name="%(wizard_crm_lead_opportunity_set)d" states="draft,open,pending" icon="gtk-index" type="action"/>
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
</tree>
@@ -133,10 +179,10 @@
<field name="type">calendar</field>
<field name="priority" eval="2"/>
<field name="arch" type="xml">
<calendar string="Meeting For Leads Generation" date_start="date" color="user_id" date_delay="duration">
<calendar string="Meeting For Leads Generation" date_start="create_date" color="user_id" date_delay="duration">
<field name="name"/>
<field name="partner_name"/>
<field name="partner_name2"/>
<field name="partner_contact"/>
</calendar>
</field>
</record>
@@ -148,46 +194,59 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Leads">
<group colspan="4">
<group col="3" colspan="1">
<filter icon="gtk-home" string=" Today "
separator="1"
domain="[('date::date','=',time.strftime('%%Y-%%m-%%d'))]"
help="Todays's Leads"
<filter icon="terp-project"
string="Current"
default="1"
domain="[('state','in',('draft','open'))]"/>
<filter icon="terp-project"
string="Open"
domain="[('state','=','open')]"/>
<filter icon="terp-project"
string="Pending"
domain="[('state','=','pending')]"/>
<separator orientation="vertical"/>
<filter icon="gtk-home" string="Today"
domain="[('create_date','&lt;', time.strftime('%%Y-%%m-%%d 23:59:59')), ('create_date','&gt;=', time.strftime('%%Y-%%m-%%d 23:59:59'))]"
help="Todays' Opportunities"
/>
<filter icon="gtk-media-rewind" string="7 Days"
help="Opportunities during last 7 days"
domain="[('create_date','&lt;', time.strftime('%%Y-%%m-%%d')), ('create_date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
/>
<separator orientation="vertical"/>
<field name="partner_name"/>
<field name="email_from"/>
<field name="user_id" widget="selection">
<filter icon="terp-partner"
domain="[('user_id','=',uid)]"
help="My Leads" default="1"
/>
<filter icon="gtk-media-rewind" string=" 7 Days "
separator="1" help="Leads during last 7 days"
domain="[('date','&lt;', time.strftime('%%Y-%%m-%%d')), ('date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
/>
</group>
<separator orientation="vertical"/>
<group col="6" colspan="2">
<field name="name" select="1"/>
<field name="user_id" select="1" widget="selection">
<filter icon="terp-partner"
domain="[('user_id','=',uid)]" help="My Leads"
default="1"
/>
</field>
<field name="state" select="1">
<filter icon="gtk-new" domain="[('state','in',('draft', 'open'))]" help="Current Leads" default="1"/>
<filter icon="gtk-yes" domain="[('state','=','open')]" help="Open Leads"/>
</field>
<field name="section_id" select="1" default="context.get('section_id', False)" widget="selection" string="Section">
<filter icon="terp-crm"
domain="[('section_id','=',context.get('section_id',False))]"
help="My section"
/>
</field>
</group>
</group>
</field>
<field name="section_id" default="context.get('section_id', False)" widget="selection"
context="{'invisible_section': False}">
<filter icon="terp-crm"
context="{'invisible_section': False}"
domain="[('section_id.user_id','=',uid)]"
help="My section"/>
<filter icon="terp-crm"
context="{'invisible_section': False}"
domain="[]"
help="Show Sections"/>
</field>
<newline/>
<group expand="1" string="Group By..." colspan="4" col="20">
<filter string="Status" icon="terp-crm" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="Lead Source" icon="terp-crm" domain="[]" context="{'group_by':'categ_id'}"/>
<filter string="Responsible" icon="terp-crm" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Create Date" icon="terp-crm" domain="[]" context="{'group_by':'date'}"/>
</group>
<group expand="1" string="Group By..." colspan="14">
<filter string="Stage" icon="terp-crm" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="State" icon="terp-crm" domain="[]" context="{'group_by':'state'}"/>
<filter string="Source" icon="terp-crm" domain="[]" context="{'group_by':'categ_id'}"/>
<filter string="Type" icon="terp-crm" domain="[]" context="{'group_by':'type'}"/>
<separator orientation="vertical"/>
<filter string="Team" icon="terp-crm" domain="[]" context="{'group_by':'section_id'}"/>
<filter string="Salesman" icon="terp-crm" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Referrer" icon="terp-crm" domain="[]" context="{'group_by':'referred'}"/>
<separator orientation="vertical"/>
<filter string="Creation" icon="terp-project" domain="[]" context="{'group_by':'create_date'}"/>
</group>
</search>
</field>
</record>
+7 -2
View File
@@ -27,9 +27,13 @@ from datetime import datetime, timedelta
class crm_opportunity(osv.osv):
_name = 'crm.opportunity'
crm_opportunity()
class crm_phonecall(osv.osv):
_name = 'crm.phonecall'
crm_phonecall()
crm_phonecall()
class crm_meeting(osv.osv):
_name = 'crm.meeting'
_description = "Meeting Cases"
@@ -44,7 +48,8 @@ class crm_meeting(osv.osv):
'phonecall_id':fields.many2one ('crm.phonecall', 'Phonecall'),
'opportunity_id':fields.many2one ('crm.opportunity', 'Opportunity'),
'attendee_ids': fields.many2many('calendar.attendee', 'event_attendee_rel', 'event_id', 'attendee_id', 'Attendees'),
'date_closed': fields.datetime('Closed', readonly=True),
'date_closed': fields.datetime('Closed', readonly=True),
'date_deadline': fields.datetime('Deadline'),
}
crm_meeting()
+29 -11
View File
@@ -22,29 +22,47 @@
from osv import fields,osv,orm
import crm
AVAILABLE_STATES = [
('draft','New'),
('open','Open'),
('cancel', 'Lost'),
('done', 'Won'),
('pending','Pending')
]
class crm_opportunity(osv.osv):
_name = "crm.opportunity"
_description = "Opportunity Cases"
_order = "id desc"
_inherit = 'crm.case'
_columns = {
_inherit = 'crm.case'
_columns = {
'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]"),
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]"),
'type_id': fields.many2one('crm.case.resource.type', 'Resource Type', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.opportunity')]"),
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),
'probability': fields.float('Probability (%)'),
'planned_revenue': fields.float('Planned Revenue'),
'planned_cost': fields.float('Planned Costs'),
'canal_id': fields.many2one('res.partner.canal', 'Channel',help="The channels represent the different communication modes available with the customer." \
" With each commercial opportunity, you can indicate the canall which is this opportunity source."),
'som': fields.many2one('res.partner.som', 'State of Mind', help="The minds states allow to define a value scale which represents" \
"the partner mentality in relation to our services.The scale has" \
"to be created with a factor for each level from 0 (Very dissatisfied) to 10 (Extremely satisfied)."),
'planned_revenue': fields.float('Expected Revenue'),
'ref' : fields.reference('Reference', selection=crm._links_get, size=128),
'ref2' : fields.reference('Reference 2', selection=crm._links_get, size=128),
'date_closed': fields.datetime('Closed', readonly=True),
'phonecall_id':fields.many2one ('crm.phonecall', 'Phonecall'),
'partner_phone': fields.char('Phone', size=32),
'user_id': fields.many2one('res.users', 'Salesman'),
'phone': fields.char("Phone", size=64),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True,
help='The state is set to \'Draft\', when a case is created.\
\nIf the case is in progress the state is set to \'Open\'.\
\nWhen the case is over, the state is set to \'Done\'.\
\nIf the case needs to be reviewed then the state is set to \'Pending\'.'),
}
def onchange_stage_id(self, cr, uid, ids, stage_id, context={}):
if not stage_id:
return {'value':{}}
stage = self.pool.get('crm.case.stage').browse(cr, uid, stage_id, context)
if not stage.on_change:
return {'value':{}}
return {'value':{'probability':stage.probability}}
_defaults = {
'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.opportunity', context=c),
}
crm_opportunity()
+1 -1
View File
@@ -5,7 +5,7 @@
<act_window
id="act_crm_opportunity_crm_meeting_new"
name="Meeting Cases"
name="Meetings"
res_model="crm.meeting"
src_model="crm.opportunity"
view_mode="calendar,graph"
+105 -110
View File
@@ -2,7 +2,7 @@
<openerp>
<data>
# ------------------------------------------------------
# ------------------------------------------------------
# Opportunity Categories
# ------------------------------------------------------
@@ -11,22 +11,22 @@
<field name="res_model">crm.case.categ</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_categ_tree-view"/>
<field name="domain">[('object_id.model', '=', 'crm.opportunity')]</field>
<field name="context">{'object_id':'crm.opportunity'}</field>
<field name="domain">[('object_id.model', '=', 'crm.opportunity')]</field>
<field name="context">{'object_id':'crm.opportunity'}</field>
</record>
<menuitem action="crm_opportunity_categ_action" id="menu_crm_case_opportunity-act" parent="crm.menu_crm_case_categ"/>
# ------------------------------------------------------
# Stage
# ------------------------------------------------------
<record id="crm_opportunity_stage_act" model="ir.actions.act_window">
<field name="name">Opportunity Stages</field>
<field name="res_model">crm.case.stage</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_stage_tree"/>
<field name="domain">[('object_id.model', '=', 'crm.opportunity')]</field>
<field name="context">{'object_id':'crm.opportunity'}</field>
</record>
<menuitem action="crm_opportunity_stage_act" id="menu_crm_opportunity_stage_act" parent="crm.menu_crm_case_stage"/>
# ------------------------------------------------------
# Stage
# ------------------------------------------------------
<record id="crm_opportunity_stage_act" model="ir.actions.act_window">
<field name="name">Opportunity Stages</field>
<field name="res_model">crm.case.stage</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_stage_tree"/>
<field name="domain">[('object_id.model', '=', 'crm.opportunity')]</field>
<field name="context">{'object_id':'crm.opportunity'}</field>
</record>
<menuitem action="crm_opportunity_stage_act" id="menu_crm_opportunity_stage_act" parent="crm.menu_crm_case_stage"/>
# ------------------------------------------------------
# Opportunities
# ------------------------------------------------------
@@ -34,75 +34,69 @@
<record model="ir.ui.view" id="crm_case_form_view_oppor">
<field name="name">CRM - Opportunities Form</field>
<field name="name">Opportunities</field>
<field name="model">crm.opportunity</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Opportunities">
<group colspan="4" col="4">
<field name="name" select="1" string="Opportunity" colspan="4"/>
<field name="planned_revenue" required="1"/>
<field name="planned_cost"/>
<field name="probability"/>
<field name="date_deadline" string="Expected Close Date" required="1"/>
<group colspan="4" col="5">
<label string="" colspan="2"/>
<group colspan="4" col="7">
<field name="name" string="Opportunity"/>
<field name="stage_id" on_change="onchange_stage_id(stage_id)" widget="selection" domain="[('object_id.model', '=', 'crm.opportunity')]"/>
<field name="user_id"/>
<button string="Schedule Meeting"
name="%(wizard_crm_opportunity_meeting_set)d" icon="gtk-redo" type="action" />
<field name="planned_revenue"/>
<field name="probability"/>
<field name="date_deadline" string="Expected Closing"/>
<button string="Schedule Call"
name="%(wizard_crm_opportunity_reschedule_phone_call)d" icon="gtk-redo" type="action" />
</group>
</group>
<group colspan="4" col="4">
<notebook>
<notebook colspan="4">
<page string="Opportunity">
<separator colspan="4" string="Communication"/>
<field name="partner_id" required="1" select="1" on_change="onchange_partner_id(partner_id, email_from)" colspan="2"/>
<field name="partner_address_id" string="Contact" on_change="onchange_partner_address_id(partner_address_id, email_from)" colspan="1"/>
<field name="email_from" colspan="2" string="Email"/>
<field name="partner_phone" colspan="2"/>
<separator colspan="4" string="Status and Categorization"/>
<group colspan="4" col="6">
<field name="user_id" select="2" string="Responsible"/>
<field name="stage_id" select="1" string="Sales Stage" required="1" widget="selection" domain="[('object_id.model', '=', 'crm.opportunity')]"/>
<field name="categ_id" select="1" on_change="onchange_categ_id(categ_id)" string="Lead Source" widget="selection" domain="[('object_id.model', '=', 'crm.opportunity')]"/>
<group col="2" colspan="2">
<separator colspan="2" string="Contacts"/>
<field name="partner_id" select="1" on_change="onchange_partner_id(partner_id, email_from)" colspan="2"/>
<field name="partner_address_id" string="Contact" on_change="onchange_partner_address_id(partner_address_id, email_from)" colspan="1"/>
<field name="email_from" string="Email"/>
<field name="phone"/>
</group>
<group col="2" colspan="2">
<separator colspan="2" string="Categorization"/>
<field name="type_id" select="1" string="Campaign"/>
<field name="section_id" colspan="1" widget="selection"/>
<field name="priority" string="Priority"/>
<field name="date" string="Create Date"/>
<field name="categ_id" select="1" string="Category" widget="selection" domain="[('object_id.model', '=', 'crm.opportunity')]"/>
</group>
<separator colspan="4" string="Details"/>
<field name="description" nolabel="1" colspan="4"/>
<separator colspan="4"/>
<group col="8" colspan="4">
<field name="state" select="2"/>
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-close"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
<button name="case_close" string="Mark Won" states="open,draft,pending" type="object" icon="gtk-close"/>
<button name="case_cancel" string="Mark Lost" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_reset" string="Reset to New" states="done,cancel" type="object" icon="gtk-convert"/>
</group>
</page>
<page string="History" groups="base.group_extended">
<field name="active"/>
<field name="canal_id"/>
<field name="som"/>
<separator colspan="4" string="Dates"/>
<field name="create_date"/>
<field name="date_closed"/>
<group col="2" colspan="2">
<separator string="Dates" colspan="2"/>
<field name="create_date"/>
<field name="write_date"/>
<field name="date_closed"/>
</group>
<group col="2" colspan="2">
<separator string="Misc" colspan="2"/>
<field name="active"/>
</group>
<separator colspan="4" string="References"/>
<field name="ref" colspan="4"/>
<field name="ref2" colspan="4"/>
<field name="ref"/>
<field name="ref2"/>
<field name="log_ids" nolabel="1" colspan="4">
<form string="Actions">
<separator string="Action Information" colspan="4"/>
@@ -125,9 +119,9 @@
<field name="email"/>
<field name="canal_id"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
icon="gtk-add" type="action"/>
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
icon="gtk-add" type="action"/>
</group>
<newline/>
<field name="description" colspan="4" nolabel="1"/>
@@ -142,30 +136,31 @@
<button colspan="4" string="Send New Email" name="%(crm.wizard_crm_new_send_mail)d" context="{'mail':'new'}" icon="gtk-go-forward" type="action"/>
</page>
</notebook>
</group>
</form>
</field>
</record>
<record model="ir.ui.view" id="crm_case_tree_view_oppor">
<field name="name">CRM - Opportunities Tree</field>
<field name="name">Opportunities Tree</field>
<field name="model">crm.opportunity</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Opportunities Tree" colors="red:state=='open';black:state in ('draft', 'cancel','done','pending')">
<field name="id"/>
<field name="name" string="Opportunities"/>
<field name="stage_id" string="Sales Stage"/>
<field name="partner_id" string="Partner"/>
<tree string="Opportunities" colors="blue:state=='pending';grey:state in ('cancel','done')">
<field name="create_date"/>
<field name="name" string="Opportunity"/>
<field name="partner_id"/>
<field name="stage_id"/>
<button name="stage_previous" string="Previous" states="open,pending" type="object" icon="gtk-go-back"/>
<button name="stage_next" string="Next" states="open,pending" type="object" icon="gtk-go-forward"/>
<field name="planned_revenue" sum="Total of Planned Revenue"/>
<field name="probability" avg="Avg. of Probability"/>
<field name="date" string="Create Date"/>
<field name="date_deadline" string="Excepted Close Date"/>
<field name="probability" widget="progressbar" avg="Avg. of Probability"/>
<field name="date_deadline" string="Excepted Closing"/>
<field name="section_id"/>
<field name="user_id"/>
<field name="state"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-close"/>
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_close" string="Won" states="open,draft,pending" type="object" icon="gtk-close"/>
<button name="case_pending" string="Pending" states="open,draft" type="object" icon="gtk-media-pause"/>
<button name="case_cancel" string="Lost" states="draft,open,pending" type="object" icon="gtk-cancel"/>
</tree>
</field>
</record>
@@ -188,45 +183,45 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Opportunities">
<group colspan="4">
<group col="3" colspan="1">
<filter icon="gtk-home" string=" Today "
separator="1"
domain="[('date::date','=',time.strftime('%%Y-%%m-%%d'))]"
help="Todays's Opportunities"
/>
<filter icon="gtk-media-rewind" string=" 7 Days "
separator="1" help="Opportunities during last 7 days"
domain="[('date','&lt;', time.strftime('%%Y-%%m-%%d')), ('date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
/>
</group>
<separator orientation="vertical"/>
<group col="6" colspan="2">
<field name="name" select="1" string="Opportunity"/>
<field name="user_id" select="1" widget="selection">
<filter icon="terp-partner"
domain="[('user_id','=',uid)]"
help="My Opportunities" default="1"
/>
</field>
<field name="partner_id" select="1"/>
<field name="state" select="1">
<filter icon="gtk-index" domain="[('state','in',('open','draft'))]" help="Current " default="1"/>
</field>
<field name="section_id" default="context.get('section_id', False)" select="1" widget="selection" string="Section">
<filter icon="terp-crm"
domain="[('section_id','=',context.get('section_id',False))]"
help="My section"/>
</field>
</group>
</group>
<filter icon="gtk-home" string="Today"
domain="[('create_date','&lt;', time.strftime('%%Y-%%m-%%d 23:59:59')), ('create_date','&gt;=', time.strftime('%%Y-%%m-%%d 23:59:59'))]"
help="Todays' Opportunities"
/>
<filter icon="gtk-media-rewind" string="7 Days"
help="Opportunities during last 7 days"
domain="[('create_date','&lt;', time.strftime('%%Y-%%m-%%d')), ('create_date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
/>
<separator orientation="vertical"/>
<field name="name" string="Opportunity"/>
<field name="user_id" widget="selection">
<filter icon="terp-partner"
domain="[('user_id','=',uid)]"
help="My Opportunities" default="1"
/>
</field>
<field name="partner_id"/>
<field name="state">
<filter icon="gtk-media-rewind"
string="New and open opportunities"
default="1"
domain="[('state','in',('draft','open'))]"/>
</field>
<field name="section_id" default="context.get('section_id', False)" select="1" widget="selection">
<filter icon="terp-crm"
domain="[('section_id','=',context.get('section_id',False))]"
help="My section"/>
</field>
<newline/>
<group expand="1" string="Group By..." colspan="4">
<filter string="Stage" icon="terp-crm" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="Partner" icon="terp-crm" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Responsible" icon="terp-crm" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Create Date" icon="terp-crm" domain="[]" context="{'group_by':'date'}"/>
<filter string="Stage" icon="terp-crm" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="Category" icon="terp-crm" domain="[]" context="{'group_by':'categ_id'}"/>
<filter string="Campaign" icon="terp-crm" domain="[]" context="{'group_by':'type_id'}"/>
<separator orientation="vertical"/>
<filter string="Partner" icon="terp-crm" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Salesman" icon="terp-crm" domain="[]" context="{'group_by':'user_id'}"/>
<separator orientation="vertical"/>
<filter string="Creation" icon="terp-project" domain="[]" context="{'group_by':'create_date'}"/>
<filter string="Exp.Closing" icon="terp-project" domain="[]" context="{'group_by':'date_deadline'}"/>
</group>
</search>
</field>
+7 -7
View File
@@ -21,6 +21,7 @@
from osv import fields, osv
import crm
import time
class crm_phonecall(osv.osv):
_name = "crm.phonecall"
@@ -31,18 +32,17 @@ class crm_phonecall(osv.osv):
'duration': fields.float('Duration'),
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.phonecall')]"),
'partner_phone': fields.char('Phone', size=32),
'partner_contact': fields.related('partner_address_id', 'name', type="char", string="Contact", size=128),
'partner_mobile': fields.char('Mobile', size=32),
'som': fields.many2one('res.partner.som', 'State of Mind', help="The minds states allow to define a value scale which represents" \
"the partner mentality in relation to our services.The scale has" \
"to be created with a factor for each level from 0 (Very dissatisfied) to 10 (Extremely satisfied)."),
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),
'canal_id': fields.many2one('res.partner.canal', 'Channel',help="The channels represent the different communication modes available with the customer." \
" With each commercial opportunity, you can indicate the canall which is this opportunity source."),
'probability': fields.float('Probability (%)'),
'planned_revenue': fields.float('Planned Revenue'),
'date_closed': fields.datetime('Closed', readonly=True),
'opportunity_id':fields.many2one ('crm.opportunity', 'Opportunity'),
'date': fields.datetime('Date'),
'opportunity_id':fields.many2one ('crm.opportunity', 'Opportunity'),
}
_defaults = {
'date': lambda *a: time.strftime('%Y-%m-%d')
}
crm_phonecall()
+2 -1
View File
@@ -50,12 +50,13 @@
<field name="view_mode">tree,calendar</field>
<field name="view_id" ref="crm_case_phone_tree_view"/>
<field name="domain" eval="'[(\'categ_id\',\'=\','+str(ref('categ_phone1'))+')]'"/>
<field name="context">{'set_editable':True}</field>
<field name="search_view_id" ref="crm.view_crm_case_phonecalls_filter"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_phone_incoming0">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="crm_case_phone_incomming_tree_view"/>
<field name="view_id" ref="crm_case_phone_tree_view"/>
<field name="act_window_id" ref="crm_case_categ_phone_incoming0"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_calendar_phone_incoming0">
+82 -102
View File
@@ -11,23 +11,11 @@
<field name="res_model">crm.case.categ</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_categ_tree-view"/>
<field name="domain">[('object_id.model', '=', 'crm.phonecall')]</field>
<field name="context">{'object_id':'crm.phonecall'}</field>
<field name="domain">[('object_id.model', '=', 'crm.phonecall')]</field>
<field name="context">{'object_id':'crm.phonecall'}</field>
</record>
<menuitem action="crm_phonecall_categ_action" id="menu_crm_case_phonecall-act" parent="crm.menu_crm_case_categ"/>
# ------------------------------------------------------
# Phonecall Stage
# ------------------------------------------------------
<record id="crm_phonecall_stage_act" model="ir.actions.act_window">
<field name="name">Phonecall Stages</field>
<field name="res_model">crm.case.stage</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_stage_tree"/>
<field name="domain">[('object_id.model', '=', 'crm.phonecall')]</field>
<field name="context">{'object_id':'crm.phonecall'}</field>
</record>
<menuitem action="crm_phonecall_stage_act" id="menu_crm_phonecall_stage_act" parent="crm.menu_crm_case_stage"/>
# ------------------------------------------------------
# Phone Calls
@@ -39,37 +27,26 @@
<field name="model">crm.phonecall</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Phone Calls" colors="red:state=='open';black:state in ('draft', 'cancel','done','pending')">
<tree string="Phone Calls" colors="grey:state in ('cancel','done');blue:state in ('pending',)">
<field name="date" string="Date"/>
<field name="name" string="Call Summary"/>
<field name="partner_id" string="Partner"/>
<field name="partner_address_id" string="Contact"/>
<field name="opportunity_id"/>
<field name="partner_contact"/>
<field name="partner_phone"/>
<field name="partner_mobile"/>
<field name="user_id"/>
<button string="Opportunity"
name="%(wizard_crm_phonecall_opportunity_set)d" type="action" attrs="{'invisible':[('opportunity_id','!=',False)]}" />
name="%(wizard_crm_phonecall_opportunity_set)d"
states="draft,open,pending"
type="action" attrs="{'invisible':[('opportunity_id','!=',False)]}" />
<button string="Meeting"
states="draft,open,pending"
name="%(wizard_crm_phonecall_meeting_set)d" type="action" />
</tree>
</field>
</record>
<record model="ir.ui.view" id="crm_case_phone_incomming_tree_view">
<field name="name">CRM - Phone Calls Tree</field>
<field name="model">crm.phonecall</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Phone Calls" editable="bottom" colors="red:state=='open';black:state in ('draft', 'cancel','done','pending')">
<field name="date" string="Date"/>
<field name="name" string="Call Summary"/>
<field name="partner_id" string="Partner"/>
<field name="partner_address_id" string="Contact"/>
<group col="2">
<field name="opportunity_id"/>
<button string="Opportunity"
name="%(wizard_crm_phonecall_opportunity_set)d" type="action" attrs="{'invisible':[('opportunity_id','!=',False)]}" />
<button string="Meeting"
name="%(wizard_crm_phonecall_meeting_set)d" type="action" />
</group>
<field name="state"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_close" string="Held" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
<button name="case_pending" string="Not Held" states="open" type="object" icon="gtk-media-pause"/>
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
</tree>
</field>
</record>
@@ -80,46 +57,46 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Phone Call">
<group colspan="4" col="8">
<group colspan="7" col="4">
<field name="name" string="Subject" />
<field name="date" string="Planned Date" />
<field name="partner_phone" />
<field name="duration" />
</group>
<group col="1" colspan="1">
<button string="Schedule a Meeting"
name="%(wizard_crm_phonecall_meeting_set)d" icon="gtk-redo"
type="action" />
<button string="Convert to Opportunity"
name="%(wizard_crm_phonecall_opportunity_set)d"
icon="gtk-index" type="action"
attrs="{'invisible':[('opportunity_id','!=',False)]}" />
</group>
</group>
<separator colspan="4" string="Communication" />
<field name="partner_id" />
<button string="Convert to Partner"
colspan="2"
icon="terp-crm"
name="%(wizard_crm_phonecall_partner_create)d"
type="action"
attrs="{'invisible':[('partner_id','!=',False)]}" />
<newline />
<field name="partner_address_id" string="Contact" />
<field name="partner_mobile" />
<separator colspan="4" string="Status and Categorization" />
<group colspan="4" col="6">
<field name="user_id" string="Assigned to" select="2" />
<group colspan="4" col="7">
<field name="name" string="Call Summary"/>
<field name="date" string="Planned Date"/>
<field name="user_id"/>
<button string="Schedule a Meeting"
name="%(wizard_crm_phonecall_meeting_set)d"
icon="gtk-redo"
type="action" />
<newline/>
<field name="partner_phone"/>
<field name="duration"/>
<field name="section_id" colspan="1" widget="selection" />
<button string="Convert to Opportunity"
name="%(wizard_crm_phonecall_opportunity_set)d"
icon="gtk-index" type="action"
attrs="{'invisible':[('opportunity_id','!=',False)]}" />
</group>
<group col="3" colspan="2">
<separator colspan="3" string="Contacts" />
<field name="partner_id" />
<button string="Convert to Partner"
icon="terp-crm"
name="%(wizard_crm_phonecall_partner_create)d"
type="action"
attrs="{'invisible':[('partner_id','!=',False)]}" />
<newline/>
<field name="partner_address_id" string="Contact" />
<newline/>
<field name="partner_mobile" />
</group>
<group col="2" colspan="2">
<separator colspan="2" string="Categorization" />
<field name="priority"/>
<field name="opportunity_id"
on_change="onchange_case_id(case_id, name, partner_id)"
context="{'default_name':name,'default_section_id':section_id,'default_user_id':user_id,'default_duration':duration,
'default_partner_id':partner_id,'default_partner_address_id':partner_address_id,'default_partner_phone':partner_phone,
'default_partner_mobile':partner_mobile,'default_categ_id':categ_id}" />
<field name="som" />
<field name="priority" />
<field name="active" string="Reminder" />
</group>
<separator string="Description" colspan="4" />
<field name="description" nolabel="1" colspan="4" />
@@ -144,8 +121,7 @@
<field name="arch" type="xml">
<calendar string="Phone Calls" date_start="date" color="user_id" date_delay="duration">
<field name="name"/>
<field name="partner_id"/>
<field name="categ_id"/>
<field name="partner_id"/>
</calendar>
</field>
</record>
@@ -156,36 +132,40 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Phonecalls">
<group col="6" colspan="1">
<filter icon="gtk-home" string=" Today "
separator="1"
domain="[('date::date','=',time.strftime('%%Y-%%m-%%d'))]"
help="Todays's Phonecalls"
/>
<filter icon="gtk-media-rewind"
string=" 7 Days " separator="1"
help="Phonecalls during last 7 days"
domain="[('date','&lt;', time.strftime('%%Y-%%m-%%d')), ('date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
/>
</group>
<filter icon="gtk-home" string="Today"
domain="[('date','&lt;', time.strftime('%%Y-%%m-%%d 23:59:59')), ('date','&gt;=',datetime.strftime('%%Y-%%m-%%d 00:00:00'))]"
help="Todays's Phonecalls"
/>
<filter icon="gtk-media-rewind"
string="7 Days"
help="Phonecalls during last 7 days"
domain="[('date','&lt;', time.strftime('%%Y-%%m-%%d')), ('date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
/>
<separator orientation="vertical"/>
<group col="6" colspan="2">
<field name="name" select='1' string="Subject"/>
<field name="user_id" select="1" widget="selection">
<filter icon="terp-partner" domain="[('user_id','=',uid)]" help="My Phonecalls" default="1"/>
</field>
<field name="state" select="1">
<filter icon="gtk-index" domain="[('state','in',('open','draft' ))]" help="Current " default="1"/>
</field>
<field name="section_id" default="context.get('section_id', False)" select="1" widget="selection" string="Section">
<filter icon="terp-crm"
domain="[('section_id','=',context.get('section_id',False))]"
help="My section"/>
</field>
</group>
<field name="name" string="Call Summary"/>
<field name="partner_id"/>
<field name="user_id" widget="selection">
<filter icon="terp-partner" domain="[('user_id','=',uid)]" help="My Phonecalls" default="1"/>
<filter icon="terp-partner" domain="[('user_id','=',False)]" help="Unassigned Phonecalls"/>
</field>
<field name="state">
<filter icon="gtk-index" domain="[('state','in',('open','draft' ))]" help="Current" default="1"/>
</field>
<field name="section_id" default="context.get('section_id', False)" select="1" widget="selection" string="Section">
<filter icon="terp-crm"
domain="[('section_id','=',context.get('section_id',False))]"
help="My section"/>
</field>
<newline/>
<group expand="1" string="Group By..." colspan="4">
<filter string="Partner" icon="terp-crm" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Responsible" icon="terp-crm" domain="[]" context="{'group_by':'user_id'}"/>
<separator orientation="vertical"/>
<filter string="Creation" icon="terp-project" domain="[]" context="{'group_by':'create_date'}"/>
<filter string="Date" icon="terp-project" domain="[]" context="{'group_by':'date'}"/>
</group>
</search>
</field>
</record>
</data>
</openerp>
+10 -7
View File
@@ -59,7 +59,9 @@
<tree string="Stages">
<field name="sequence"/>
<field name="name"/>
<field name="probability"/>
<field name="section_id"/>
</tree>
</field>
</record>
@@ -73,6 +75,9 @@
<field name="section_id" select="1" widget="selection"/>
<field name="object_id" invisible="1" />
<field name="sequence"/>
<field name="probability"/>
<field name="on_change"/>
</form>
</field>
</record>
@@ -92,8 +97,7 @@
<form string="Case Category">
<field name="name" select="1"/>
<field name="section_id" select="1" widget="selection"/>
<field name="object_id" invisible="1" />
<field name="probability"/>
<field name="object_id" invisible="1" />
</form>
</field>
</record>
@@ -104,8 +108,7 @@
<field name="arch" type="xml">
<tree string="Case Category">
<field name="name"/>
<field name="section_id"/>
<field name="probability"/>
<field name="section_id"/>
</tree>
</field>
</record>
@@ -202,7 +205,7 @@
<field name="model">crm.case</field>
<field name="type">calendar</field>
<field name="arch" type="xml">
<calendar color="user_id" date_start="date" date_stop="date_deadline" day_length="12" string="Cases">
<calendar color="user_id" date_start="create_date" date_stop="date_deadline" day_length="12" string="Cases">
<field name="name"/>
<field name="partner_id"/>
<field name="state"/>
@@ -219,7 +222,7 @@
<tree colors="red:date_deadline&lt;current_date and state=='open';black:state in ('draft', 'cancel','done','pending')" string="Cases">
<field name="id"/>
<field name="section_id"/>
<field name="date"/>
<field name="create_date"/>
<field name="date_deadline"/>
<field name="name"/>
<field name="partner_id"/>
@@ -244,7 +247,7 @@
<form string="Cases">
<field colspan="4" name="name" select="1"/>
<field colspan="2" name="section_id" widget="selection"/>
<field name="date" select="1"/>
<field name="create_date" select="1"/>
<field name="date_deadline" select="2"/>
<newline />
<notebook colspan="4">
+3 -3
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2010-01-05 05:59+0000\n"
"PO-Revision-Date: 2010-02-02 16:15+0000\n"
"PO-Revision-Date: 2010-02-24 10:59+0000\n"
"Last-Translator: Carlo Vettore <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: 2010-02-04 04:47+0000\n"
"X-Launchpad-Export-Date: 2010-02-25 04:50+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: crm
@@ -297,7 +297,7 @@ msgstr "Sezioni"
#. module: crm
#: help:crm.menu.config_wizard,opportunity:0
msgid "Tracks identified business opportunities for your sales pipeline."
msgstr ""
msgstr "Tracce identificano le opportunità per le linee di vendita."
#. module: crm
#: view:crm.meeting:0
+418 -222
View File
File diff suppressed because it is too large Load Diff
+120 -129
View File
@@ -27,7 +27,18 @@ import ir
import pooler
from tools.translate import _
class lead2opportunity(wizard.interface):
class partner_create(wizard.interface):
case_form = """<?xml version="1.0"?>
<form string="Convert To Partner">
<label string="Are you sure you want to create a partner based on this lead ?" colspan="4"/>
<label string="You may have to verify that this partner does not exist already." colspan="4"/>
<!--field name="close"/-->
</form>"""
case_fields = {
'close': {'type':'boolean', 'string':'Close Lead'}
}
partner_form = """<?xml version="1.0"?>
<form string="Convert To Partner">
@@ -35,18 +46,116 @@ class lead2opportunity(wizard.interface):
<label string="You may have to verify that this partner does not exist already." colspan="4"/>
<newline />
<field name="action"/>
<group attrs="{'invisible':[('action','=','create')]}">
<field name="partner_id" attrs="{'required':[('action','=','exist')]}"/>
<group attrs="{'invisible':[('action','!=','exist')]}">
<field name="partner_id"/>
</group>
</form>"""
partner_fields = {
'action': {'type':'selection',
'selection':[('exist','Link to an existing partner'),('create','Create a new partner')],
'string':'Action', 'required':True, 'default': lambda *a:'create'},
'string':'Action', 'required':True, 'default': lambda *a:'exist'},
'partner_id' : {'type':'many2one', 'relation':'res.partner', 'string':'Partner'},
}
def _selectPartner(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
case_obj = pool.get('crm.lead')
partner_obj = pool.get('res.partner')
contact_obj = pool.get('res.partner.address')
for case in case_obj.browse(cr, uid, data['ids']):
if case.partner_id:
raise wizard.except_wizard(_('Warning !'),
_('A partner is already defined on this lead.'))
partner_ids = partner_obj.search(cr, uid, [('name', '=', case.partner_name or case.name)])
if not partner_ids and case.email_from:
address_ids = contact_obj.search(cr, uid, [('email', '=', case.email_from)])
if address_ids:
addresses = contact_obj.browse(cr, uid, address_ids)
partner_ids = addresses and [addresses[0].partner_id.id] or False
partner_id = partner_ids and partner_ids[0] or False
return {'partner_id': partner_id}
def _create_partner(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
case_obj = pool.get('crm.lead')
partner_obj = pool.get('res.partner')
contact_obj = pool.get('res.partner.address')
partner_ids = []
partner_id = False
contact_id = False
for case in case_obj.browse(cr, uid, data['ids']):
if data['form']['action'] == 'create':
partner_id = partner_obj.create(cr, uid, {
'name': case.partner_name or case.name,
'user_id': case.user_id.id,
'comment': case.description,
})
contact_id = contact_obj.create(cr, uid, {
'partner_id': partner_id,
'name': case.name,
'phone': case.phone,
'mobile': case.mobile,
'email': case.email_from
})
else:
if data['form']['partner_id']:
partner = partner_obj.browse(cr,uid,data['form']['partner_id'])
partner_id = partner.id
contact_id = partner.address and partner.address[0].id
partner_ids.append(partner_id)
vals = {}
if partner_id:
vals.update({'partner_id': partner_id})
if contact_id:
vals.update({'partner_address_id': contact_id})
case_obj.write(cr, uid, [case.id], vals)
return partner_ids
def _make_partner(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
partner_ids = self._create_partner(cr, uid, data, context)
mod_obj = pool.get('ir.model.data')
result = mod_obj._get_id(cr, uid, 'base', 'view_res_partner_filter')
res = mod_obj.read(cr, uid, result, ['res_id'])
value = {
'domain': "[]",
'view_type': 'form',
'view_mode': 'form,tree',
'res_model': 'res.partner',
'res_id': partner_ids and int(partner_ids[0]) or False,
'view_id': False,
'type': 'ir.actions.act_window',
'search_view_id': res['res_id']
}
return value
states = {
'init': {
'actions': [_selectPartner],
'result': {'type': 'form', 'arch': case_form, 'fields': case_fields,
'state' : [('end', 'Cancel', 'gtk-cancel'),('create_partner', 'Create Partner', 'gtk-go-forward')]}
},
'create_partner': {
'actions': [],
'result': {'type': 'form', 'arch': partner_form, 'fields': partner_fields,
'state' : [('end', 'Cancel', 'gtk-cancel'),('create', 'Continue', 'gtk-go-forward')]}
},
'create': {
'actions': [],
'result': {'type': 'action', 'action': _make_partner, 'state': 'end'}
}
}
partner_create('crm.lead.partner_create')
class lead2opportunity(partner_create):
case_form = """<?xml version="1.0"?>
<form string="Convert To Opportunity">
<field name="name"/>
@@ -75,11 +184,8 @@ class lead2opportunity(wizard.interface):
def _selectopportunity(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
case_obj = pool.get('crm.lead')
for case in case_obj.browse(cr, uid, data['ids']):
if not case.partner_id:
return 'create_partner'
return {'name': case.name, 'probability': case.probability or 20.0,
'planned_revenue':case.planned_revenue, 'partner_id':case.partner_id.id}
case = case_obj.browse(cr, uid, data['id'])
return {'name': case.name, 'partner_id':case.partner_id and case.partner_id.id or False}
def _selectChoice(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
@@ -116,10 +222,7 @@ class lead2opportunity(wizard.interface):
'date_deadline': lead.date_deadline,
'partner_address_id':lead.partner_address_id.id,
'priority': lead.priority,
'date': lead.date,
'partner_phone': lead.partner_phone,
'canal_id': lead.canal_id,
'som': lead.som,
'phone': lead.phone,
'email_from': lead.email_from
})
@@ -149,37 +252,7 @@ class lead2opportunity(wizard.interface):
return value
def _makePartner(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
lead_case_obj = pool.get('crm.lead')
partner_obj = pool.get('res.partner')
contact_obj = pool.get('res.partner.address')
if data['form']['action'] == 'create':
for case in lead_case_obj.browse(cr, uid, data['ids']):
partner_id = partner_obj.search(cr, uid, [('name', '=', case.partner_name or case.name)])
if partner_id:
raise wizard.except_wizard(_('Warning !'),_('A partner is already existing with the same name.'))
else:
partner_id = partner_obj.create(cr, uid, {
'name': case.partner_name or case.name,
'user_id': case.user_id.id,
'comment': case.description,
})
contact_id = contact_obj.create(cr, uid, {
'partner_id': partner_id,
'name': case.partner_name2,
'phone': case.partner_phone,
'mobile': case.partner_mobile,
'email': case.email_from
})
else:
partner = partner_obj.browse(cr,uid,data['form']['partner_id'])
partner_id = partner.id
contact_id = partner.address and partner.address[0].id
lead_case_obj.write(cr, uid, data['ids'], {
'partner_id': partner_id,
'partner_address_id': contact_id
})
partner_ids = self._create_partner(cr, uid, data, context)
return {}
states = {
@@ -188,9 +261,9 @@ class lead2opportunity(wizard.interface):
'result': {'type':'choice','next_state':_selectChoice}
},
'create_partner': {
'actions': [],
'result': {'type': 'form', 'arch': partner_form, 'fields': partner_fields,
'state' : [('end', 'Cancel', 'gtk-cancel'),('create', 'Continue', 'gtk-go-forward')]}
'actions': [partner_create._selectPartner],
'result': {'type': 'form', 'arch': partner_create.partner_form, 'fields': partner_create.partner_fields,
'state' : [('end', 'Cancel', 'gtk-cancel'),('opportunity', 'Skip', 'gtk-goto-last'), ('create', 'Continue', 'gtk-go-forward')]}
},
'create': {
'actions': [],
@@ -209,86 +282,4 @@ class lead2opportunity(wizard.interface):
lead2opportunity('crm.lead.opportunity_set')
class partner_create(wizard.interface):
case_form = """<?xml version="1.0"?>
<form string="Convert To Partner">
<label string="Are you sure you want to create a partner based on this lead ?" colspan="4"/>
<label string="You may have to verify that this partner does not exist already." colspan="4"/>
<!--field name="close"/-->
</form>"""
case_fields = {
'close': {'type':'boolean', 'string':'Close Lead'}
}
def _selectPartner(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
case_obj = pool.get('crm.lead')
for case in case_obj.browse(cr, uid, data['ids']):
if case.partner_id:
raise wizard.except_wizard(_('Warning !'),
_('A partner is already defined on this lead.'))
return {}
def _makeOrder(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
mod_obj = pool.get('ir.model.data')
result = mod_obj._get_id(cr, uid, 'base', 'view_res_partner_filter')
res = mod_obj.read(cr, uid, result, ['res_id'])
case_obj = pool.get('crm.lead')
partner_obj = pool.get('res.partner')
contact_obj = pool.get('res.partner.address')
for case in case_obj.browse(cr, uid, data['ids']):
partner_id = partner_obj.search(cr, uid, [('name', '=', case.partner_name or case.name)])
if partner_id:
raise wizard.except_wizard(_('Warning !'),_('A partner is already existing with the same name.'))
else:
partner_id = partner_obj.create(cr, uid, {
'name': case.partner_name or case.name,
'user_id': case.user_id.id,
'comment': case.description,
})
contact_id = contact_obj.create(cr, uid, {
'partner_id': partner_id,
'name': case.partner_name2,
'phone': case.partner_phone,
'mobile': case.partner_mobile,
'email': case.email_from
})
case_obj.write(cr, uid, data['ids'], {
'partner_id': partner_id,
'partner_address_id': contact_id
})
if data['form']['close']:
case_obj.case_close(cr, uid, data['ids'])
value = {
'domain': "[]",
'view_type': 'form',
'view_mode': 'form,tree',
'res_model': 'res.partner',
'res_id': int(partner_id),
'view_id': False,
'type': 'ir.actions.act_window',
'search_view_id': res['res_id']
}
return value
states = {
'init': {
'actions': [_selectPartner],
'result': {'type': 'form', 'arch': case_form, 'fields': case_fields,
'state' : [('end', 'Cancel', 'gtk-cancel'),('confirm', 'Create Partner', 'gtk-go-forward')]}
},
'confirm': {
'actions': [],
'result': {'type': 'action', 'action': _makeOrder, 'state': 'end'}
}
}
partner_create('crm.lead.partner_create')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+1 -15
View File
@@ -135,21 +135,7 @@ class opportunity2meeting(wizard.interface):
def _makeMeeting(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
opportunity_case_obj = pool.get('crm.opportunity')
meeting_case_obj = pool.get('crm.meeting')
for opportunity in opportunity_case_obj.browse(cr, uid, data['ids']):
new_meeting_id = meeting_case_obj.create(cr, uid, {
'name': opportunity.name,
'date': opportunity.date,
'section_id' : opportunity.section_id and opportunity.section_id.id or False,
'date_deadline': opportunity.date_deadline,
'description':opportunity.description,
'opportunity_id':opportunity.id
})
new_meeting = meeting_case_obj.browse(cr, uid, new_meeting_id)
vals = {}
opportunity_case_obj.write(cr, uid, [opportunity.id], vals)
meeting_case_obj.case_open(cr, uid, [new_meeting_id])
opportunity_case_obj = pool.get('crm.opportunity')
data_obj = pool.get('ir.model.data')
result = data_obj._get_id(cr, uid, 'crm', 'view_crm_case_meetings_filter')
id = data_obj.read(cr, uid, result, ['res_id'])
+109 -142
View File
@@ -27,26 +27,124 @@ import ir
import pooler
from tools.translate import _
class phonecall2opportunity(wizard.interface):
class partner_create(wizard.interface):
partner_form = """<?xml version="1.0"?>
case_form = """<?xml version="1.0"?>
<form string="Convert To Partner">
<label string="Are you sure you want to create a partner based on this phonecall ?" colspan="4"/>
<label string="You may have to verify that this partner does not exist already." colspan="4"/>
<!--field name="close"/-->
</form>"""
case_fields = {
'close': {'type':'boolean', 'string':'Close Phonecall'}
}
partner_form = """<?xml version="1.0"?>
<form string="Convert To Partner">
<label string="Are you sure you want to create a partner based on this lead ?" colspan="4"/>
<label string="You may have to verify that this partner does not exist already." colspan="4"/>
<newline />
<field name="action"/>
<group attrs="{'invisible':[('action','=','create')]}">
<field name="partner_id" attrs="{'required':[('action','=','exist')]}"/>
<group attrs="{'invisible':[('action','!=','exist')]}">
<field name="partner_id"/>
</group>
</form>"""
partner_fields = {
'action': {'type':'selection',
'selection':[('exist','Link to an existing partner'),('create','Create a new partner')],
'string':'Action', 'required':True, 'default': lambda *a:'create'},
'string':'Action', 'required':True, 'default': lambda *a:'exist'},
'partner_id' : {'type':'many2one', 'relation':'res.partner', 'string':'Partner'},
}
def _selectPartner(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
case_obj = pool.get('crm.phonecall')
for case in case_obj.browse(cr, uid, data['ids']):
if case.partner_id:
raise wizard.except_wizard(_('Warning !'),
_('A partner is already defined on this phonecall.'))
return {}
def _create_partner(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
case_obj = pool.get('crm.phonecall')
partner_obj = pool.get('res.partner')
contact_obj = pool.get('res.partner.address')
partner_ids = []
partner_id = False
contact_id = False
for case in case_obj.browse(cr, uid, data['ids']):
if data['form']['action'] == 'create':
partner_id = partner_obj.create(cr, uid, {
'name': case.partner_name or case.name,
'user_id': case.user_id.id,
'comment': case.description,
})
contact_id = contact_obj.create(cr, uid, {
'partner_id': partner_id,
'name': case.name,
'phone': case.phone,
'mobile': case.mobile,
'email': case.email_from
})
else:
if data['form']['partner_id']:
partner = partner_obj.browse(cr,uid,data['form']['partner_id'])
partner_id = partner.id
contact_id = partner.address and partner.address[0].id
partner_ids.append(partner_id)
vals = {}
if partner_id:
vals.update({'partner_id': partner_id})
if contact_id:
vals.update({'partner_address_id': contact_id})
case_obj.write(cr, uid, [case.id], vals)
return partner_ids
def _make_partner(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
partner_ids = self._create_partner(cr, uid, data, context)
mod_obj = pool.get('ir.model.data')
result = mod_obj._get_id(cr, uid, 'base', 'view_res_partner_filter')
res = mod_obj.read(cr, uid, result, ['res_id'])
value = {
'domain': "[]",
'view_type': 'form',
'view_mode': 'form,tree',
'res_model': 'res.partner',
'res_id': partner_ids and int(partner_ids[0]) or False,
'view_id': False,
'type': 'ir.actions.act_window',
'search_view_id': res['res_id']
}
return value
states = {
'init': {
'actions': [_selectPartner],
'result': {'type': 'form', 'arch': case_form, 'fields': case_fields,
'state' : [('end', 'Cancel', 'gtk-cancel'),('create_partner', 'Create Partner', 'gtk-go-forward')]}
},
'create_partner': {
'actions': [],
'result': {'type': 'form', 'arch': partner_form, 'fields': partner_fields,
'state' : [('end', 'Cancel', 'gtk-cancel'),('create', 'Continue', 'gtk-go-forward')]}
},
'create': {
'actions': [],
'result': {'type': 'action', 'action': _make_partner, 'state': 'end'}
}
}
partner_create('crm.phonecall.partner_create')
class phonecall2opportunity(partner_create):
case_form = """<?xml version="1.0"?>
<form string="Convert To Opportunity">
<field name="name"/>
@@ -75,11 +173,8 @@ class phonecall2opportunity(wizard.interface):
def _selectopportunity(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
case_obj = pool.get('crm.phonecall')
for case in case_obj.browse(cr, uid, data['ids']):
if not case.partner_id:
return 'create_partner'
return {'name': case.name, 'probability': case.probability or 20.0,
'planned_revenue':case.planned_revenue, 'partner_id':case.partner_id.id}
case = case_obj.browse(cr, uid, data['id'])
return {'name': case.name, 'partner_id':case.partner_id and case.partner_id.id or False}
def _selectChoice(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
@@ -115,7 +210,6 @@ class phonecall2opportunity(wizard.interface):
'section_id': phonecall.section_id.id,
'description': phonecall.description,
'phonecall_id': phonecall.id,
'date': phonecall.date,
'priority': phonecall.priority
})
new_opportunity = opportunity_case_obj.browse(cr, uid, new_opportunity_id)
@@ -140,37 +234,7 @@ class phonecall2opportunity(wizard.interface):
return value
def _makePartner(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
phonecall_case_obj = pool.get('crm.phonecall')
partner_obj = pool.get('res.partner')
contact_obj = pool.get('res.partner.address')
if data['form']['action']=='create':
for case in phonecall_case_obj.browse(cr, uid, data['ids']):
partner_id = partner_obj.search(cr, uid, [('name', '=', case.partner_name or case.name)])
if partner_id:
raise wizard.except_wizard(_('Warning !'),_('A partner is already existing with the same name.'))
else:
partner_id = partner_obj.create(cr, uid, {
'name': case.partner_name or case.name,
'user_id': case.user_id.id,
'comment': case.description,
})
contact_id = contact_obj.create(cr, uid, {
'partner_id': partner_id,
'name': case.partner_name2,
'phone': case.partner_phone,
'mobile': case.partner_mobile,
'email': case.email_from
})
else:
partner = partner_obj.browse(cr,uid,data['form']['partner_id'])
partner_id=partner.id
contact_id=partner.address and partner.address[0].id
phonecall_case_obj.write(cr, uid, data['ids'], {
'partner_id': partner_id,
'partner_address_id': contact_id
})
partner_ids = self._create_partner(cr, uid, data, context)
return {}
states = {
@@ -180,8 +244,8 @@ class phonecall2opportunity(wizard.interface):
},
'create_partner': {
'actions': [],
'result': {'type': 'form', 'arch': partner_form, 'fields': partner_fields,
'state' : [('end', 'Cancel', 'gtk-cancel'),('create', 'Continue', 'gtk-go-forward')]}
'result': {'type': 'form', 'arch': partner_create.partner_form, 'fields': partner_create.partner_fields,
'state' : [('end', 'Cancel', 'gtk-cancel'),('opportunity', 'Skip', 'gtk-goto-last'),('create', 'Continue', 'gtk-go-forward')]}
},
'create': {
'actions': [],
@@ -204,22 +268,7 @@ class phonecall2meeting(wizard.interface):
def _makeMeeting(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
phonecall_case_obj = pool.get('crm.phonecall')
meeting_case_obj = pool.get('crm.meeting')
for phonecall in phonecall_case_obj.browse(cr, uid, data['ids']):
new_meeting_id = meeting_case_obj.create(cr, uid, {
'name': phonecall.name,
'date': phonecall.date,
'section_id' : phonecall.section_id and phonecall.section_id.id or False,
'duration': phonecall.duration,
'description':phonecall.description,
'phonecall_id':phonecall.id
})
new_meeting = meeting_case_obj.browse(cr, uid, new_meeting_id)
vals = {}
phonecall_case_obj.write(cr, uid, [phonecall.id], vals)
phonecall_case_obj.case_cancel(cr, uid, [phonecall.id])
meeting_case_obj.case_open(cr, uid, [new_meeting_id])
phonecall_case_obj = pool.get('crm.phonecall')
data_obj = pool.get('ir.model.data')
result = data_obj._get_id(cr, uid, 'crm', 'view_crm_case_meetings_filter')
id = data_obj.read(cr, uid, result, ['res_id'])
@@ -256,86 +305,4 @@ class phonecall2meeting(wizard.interface):
}
phonecall2meeting('crm.phonecall.meeting_set')
class partner_create(wizard.interface):
case_form = """<?xml version="1.0"?>
<form string="Convert To Partner">
<label string="Are you sure you want to create a partner based on this phonecall ?" colspan="4"/>
<label string="You may have to verify that this partner does not exist already." colspan="4"/>
<!--field name="close"/-->
</form>"""
case_fields = {
'close': {'type':'boolean', 'string':'Close Phonecall'}
}
def _selectPartner(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
case_obj = pool.get('crm.phonecall')
for case in case_obj.browse(cr, uid, data['ids']):
if case.partner_id:
raise wizard.except_wizard(_('Warning !'),
_('A partner is already defined on this phonecall.'))
return {}
def _makeOrder(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
mod_obj = pool.get('ir.model.data')
result = mod_obj._get_id(cr, uid, 'base', 'view_res_partner_filter')
res = mod_obj.read(cr, uid, result, ['res_id'])
case_obj = pool.get('crm.phonecall')
partner_obj = pool.get('res.partner')
contact_obj = pool.get('res.partner.address')
for case in case_obj.browse(cr, uid, data['ids']):
partner_id = partner_obj.search(cr, uid, [('name', '=', case.name)])
if partner_id:
raise wizard.except_wizard(_('Warning !'),_('A partner is already existing with the same name.'))
else:
partner_id = partner_obj.create(cr, uid, {
'name': case.name,
'user_id': case.user_id.id,
'comment': case.description,
})
contact_id = contact_obj.create(cr, uid, {
'partner_id': partner_id,
'name': case.name,
'phone': case.partner_phone,
'mobile': case.partner_mobile,
'email': case.email_from
})
case_obj.write(cr, uid, data['ids'], {
'partner_id': partner_id,
'partner_address_id': contact_id
})
if data['form']['close']:
case_obj.case_close(cr, uid, data['ids'])
value = {
'domain': "[]",
'view_type': 'form',
'view_mode': 'form,tree',
'res_model': 'res.partner',
'res_id': int(partner_id),
'view_id': False,
'type': 'ir.actions.act_window',
'search_view_id': res['res_id']
}
return value
states = {
'init': {
'actions': [_selectPartner],
'result': {'type': 'form', 'arch': case_form, 'fields': case_fields,
'state' : [('end', 'Cancel', 'gtk-cancel'),('confirm', 'Create Partner', 'gtk-go-forward')]}
},
'confirm': {
'actions': [],
'result': {'type': 'action', 'action': _makeOrder, 'state': 'end'}
}
}
partner_create('crm.phonecall.partner_create')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,44 +0,0 @@
<?xml version="1.0"?>
<openerp>
<data>
<record model="ir.ui.view" id="view_crm_job_categ_graph">
<field name="name">report.crm.job.categ.graph</field>
<field name="model">report.crm.job.categ</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Jobs by Sections and Categories" type="bar" orientation="horizontal">
<field name="categ_id"/>
<field name="nbr" operator="+"/>
<field name="state" group="True"/>
</graph>
</field>
</record>
<act_window name="Jobs Requests Of The Month by Applied Job"
domain="[('month','=',time.strftime('%%m')),('state','!=','done'),('state','!=','cancel')]"
res_model="report.crm.job.categ"
view_type="form"
view_mode="graph,tree,form"
view_id="view_crm_job_categ_graph"
id="act_jobs_categ"/>
<record model="ir.ui.view" id="board_crm_hr_statistical_form">
<field name="name">CRM - Statistical Dashboard Form</field>
<field name="model">board.board</field>
<field name="inherit_id" ref="board_crm_configuration.board_crm_statistical_form"/>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Statistics Dashboard">
<hpaned>
<child2>
<action
string="Jobs Requests Of The Month by Applied Job"
name="%(act_jobs_categ)d"
colspan="4"/>
</child2>
</hpaned>
</form>
</field>
</record>
</data>
</openerp>
-55
View File
@@ -1,55 +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,orm
from crm import crm
class crm_job(osv.osv):
_name = "crm.job"
_description = "Job Cases"
_order = "id desc"
_inherit ='crm.case'
_columns = {
'date_closed': fields.datetime('Closed', readonly=True),
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.job')]"),
'planned_revenue': fields.float('Planned Revenue'),
'planned_cost': fields.float('Planned Costs'),
'probability': fields.float('Probability (%)'),
'partner_name': fields.char("Employee's Name", size=64),
'partner_name2': fields.char('Employee Email', size=64),
'partner_phone': fields.char('Phone', size=32),
'partner_mobile': fields.char('Mobile', size=32),
'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.job')]"),
'type_id': fields.many2one('crm.case.resource.type', 'Type Name', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.job')]"),
'duration': fields.float('Duration'),
'case_id': fields.many2one('crm.case', 'Related Case'),
'ref' : fields.reference('Reference', selection=crm._links_get, size=128),
'ref2' : fields.reference('Reference 2', selection=crm._links_get, size=128),
'canal_id': fields.many2one('res.partner.canal', 'Channel',help="The channels represent the different communication modes available with the customer." \
" With each commercial opportunity, you can indicate the canall which is this opportunity source."),
'som': fields.many2one('res.partner.som', 'State of Mind', help="The minds states allow to define a value scale which represents" \
"the partner mentality in relation to our services.The scale has" \
"to be created with a factor for each level from 0 (Very dissatisfied) to 10 (Extremely satisfied)."),
'phonecall_id':fields.many2one ('crm.phonecall', 'Phonecall'),
}
crm_job()
-511
View File
@@ -1,511 +0,0 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!-- CASE CATEGORY(categ_id) -->
<record model="crm.case.categ" id="categ_job1">
<field name="name">Salesman</field>
<field name="section_id" ref="crm.section_sales_department"/>
<field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/>
</record>
<record model="crm.case.categ" id="categ_job2">
<field name="name">Junior Developer</field>
<field name="section_id" ref="crm.section_sales_department"/>
<field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/>
</record>
<!-- Resource(type_id) -->
<record model="crm.case.resource.type" id="type_job1">
<field name="name">Graduate</field>
<field name="section_id" ref="crm.section_sales_department"/>
<field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/>
</record>
<record model="crm.case.resource.type" id="type_job2">
<field name="name">Licenced</field>
<field name="section_id" ref="crm.section_sales_department"/>
<field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/>
</record>
<record model="crm.case.resource.type" id="type_job3">
<field name="name"> > Bac +5</field>
<field name="section_id" ref="crm.section_sales_department"/>
<field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/>
</record>
<!-- STAGE(stage_id) -->
<record model="crm.case.stage" id="stage_job1">
<field name="name">Initial Jobs Demand</field>
<field name="section_id" ref="crm.section_sales_department"/>
<field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/>
</record>
<record model="crm.case.stage" id="stage_job2">
<field name="name">First Interview</field>
<field name="section_id" ref="crm.section_sales_department"/>
<field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/>
</record>
<record model="crm.case.stage" id="stage_job3">
<field name="name">Second Interview</field>
<field name="section_id" ref="crm.section_sales_department"/>
<field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/>
</record>
<record model="crm.case.stage" id="stage_job4">
<field name="name">Contract Proposed</field>
<field name="section_id" ref="crm.section_sales_department"/>
<field name="object_id" search="[('model','=','crm.claim')]" model="ir.model"/>
</record>
<record model="crm.case.stage" id="stage_job5">
<field name="name">Contract Signed</field>
<field name="section_id" ref="crm.section_sales_department"/>
<field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/>
</record>
<record model="crm.case.stage" id="stage_job6">
<field name="name">Refused by Employee</field>
<field name="section_id" ref="crm.section_sales_department"/>
<field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/>
</record>
<record model="crm.case.stage" id="stage_job7">
<field name="name">Refused by Company</field>
<field name="section_id" ref="crm.section_sales_department"/>
<field name="object_id" search="[('model','=','crm.job')]" model="ir.model"/>
</record>
</data>
<data>
<record id="survey_job_0" model="survey">
<field name="title">Job Survey</field>
<field name="state">draft</field>
<field name="max_response_limit">20</field>
<field eval="[(6,0,[])]" name="users"/>
</record>
</data>
<data>
<record id="survey_page_job_0" model="survey.page">
<field name="title">Default Section</field>
<field name="survey_id" ref="survey_job_0"/>
<field eval="1" name="sequence"/>
</record>
</data>
<data>
<record id="survey_page_job_1" model="survey.page">
<field name="title">Education &amp; Activities</field>
<field name="survey_id" ref="survey_job_0"/>
<field eval="2" name="sequence"/>
</record>
</data>
<data>
<record id="survey_page_job_2" model="survey.page">
<field name="title">Importance</field>
<field name="survey_id" ref="survey_job_0"/>
<field eval="3" name="sequence"/>
</record>
</data>
<data>
<record id="survey_question_job_0" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="1" name="sequence"/>
<field name="question">From which university will you graduate?</field>
<field eval="0" name="is_require_answer"/>
<field name="type">single_textbox</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="1" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_job_0"/>
<field name="comment_label">Other</field>
<field eval="1" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_job_1" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="1" name="sequence"/>
<field name="question">Rate the Importance</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="1" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_job_2"/>
<field name="comment_label">Other</field>
<field eval="1" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_job_2" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="1" name="sequence"/>
<field name="question">Education</field>
<field eval="0" name="is_require_answer"/>
<field name="type">comment</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="1" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_job_1"/>
<field name="comment_label">Other</field>
<field eval="1" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_job_3" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="2" name="sequence"/>
<field name="question">Knowledge</field>
<field eval="0" name="is_require_answer"/>
<field name="type">comment</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="1" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_job_1"/>
<field name="comment_label">Other</field>
<field eval="1" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_job_4" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="2" name="sequence"/>
<field name="question">What is your gender?</field>
<field eval="0" name="is_require_answer"/>
<field name="type">multiple_choice_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="1" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_job_0"/>
<field name="comment_label">Other</field>
<field eval="1" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
<record id="survey_answer_job_70" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Male</field>
<field name="question_id" ref="crm_hr.survey_question_job_4"/>
<field eval="1" name="sequence"/>
</record>
<record id="survey_answer_job_71" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Female</field>
<field name="question_id" ref="crm_hr.survey_question_job_4"/>
<field eval="2" name="sequence"/>
</record>
</data>
<data>
<record id="survey_question_job_5" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="3" name="sequence"/>
<field name="question">What age group do you belong to?</field>
<field eval="0" name="is_require_answer"/>
<field name="type">multiple_choice_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="1" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_job_0"/>
<field name="comment_label">Other</field>
<field eval="1" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
<record id="survey_answer_job_81" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">0 - 15</field>
<field name="question_id" ref="crm_hr.survey_question_job_5"/>
<field eval="1" name="sequence"/>
</record>
<record id="survey_answer_job_82" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">16 - 20</field>
<field name="question_id" ref="crm_hr.survey_question_job_5"/>
<field eval="2" name="sequence"/>
</record>
<record id="survey_answer_job_83" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">21 - 30</field>
<field name="question_id" ref="crm_hr.survey_question_job_5"/>
<field eval="3" name="sequence"/>
</record>
<record id="survey_answer_job_84" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">31 - 40</field>
<field name="question_id" ref="crm_hr.survey_question_job_5"/>
<field eval="4" name="sequence"/>
</record>
<record id="survey_answer_job_85" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">41 - 50</field>
<field name="question_id" ref="crm_hr.survey_question_job_5"/>
<field eval="5" name="sequence"/>
</record>
<record id="survey_answer_job_86" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">51 - 60</field>
<field name="question_id" ref="crm_hr.survey_question_job_5"/>
<field eval="6" name="sequence"/>
</record>
<record id="survey_answer_job_87" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">61 - 70</field>
<field name="question_id" ref="crm_hr.survey_question_job_5"/>
<field eval="7" name="sequence"/>
</record>
<record id="survey_answer_job_88" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">71 +</field>
<field name="question_id" ref="crm_hr.survey_question_job_5"/>
<field eval="8" name="sequence"/>
</record>
</data>
<data>
<record id="survey_question_job_6" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="3" name="sequence"/>
<field name="question">Exprience</field>
<field eval="0" name="is_require_answer"/>
<field name="type">comment</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="1" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_job_1"/>
<field name="comment_label">Other</field>
<field eval="1" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_job_7" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="4" name="sequence"/>
<field name="question">Activities</field>
<field eval="0" name="is_require_answer"/>
<field name="type">comment</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="1" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_job_1"/>
<field name="comment_label">Other</field>
<field eval="1" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_job_0" model="survey.question.column.heading">
<field eval="1" name="in_visible_menu_choice"/>
<field name="title">Not important</field>
<field eval="1" name="in_visible_rating_weight"/>
<field name="question_id" ref="survey_question_job_1"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_job_1" model="survey.question.column.heading">
<field eval="1" name="in_visible_menu_choice"/>
<field name="title">Somewhat important</field>
<field eval="1" name="in_visible_rating_weight"/>
<field name="question_id" ref="survey_question_job_1"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_job_2" model="survey.question.column.heading">
<field eval="1" name="in_visible_menu_choice"/>
<field name="title">Important</field>
<field eval="1" name="in_visible_rating_weight"/>
<field name="question_id" ref="survey_question_job_1"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_job_3" model="survey.question.column.heading">
<field eval="1" name="in_visible_menu_choice"/>
<field name="title">Very important</field>
<field eval="1" name="in_visible_rating_weight"/>
<field name="question_id" ref="survey_question_job_1"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_job_4" model="survey.question.column.heading">
<field eval="1" name="in_visible_menu_choice"/>
<field name="title">Most important</field>
<field eval="1" name="in_visible_rating_weight"/>
<field name="question_id" ref="survey_question_job_1"/>
</record>
</data>
<data>
<record id="survey_answer_job_0" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Good pay</field>
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
<field eval="1" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_1" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Getting on with colleagues</field>
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
<field eval="2" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_2" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Office environment (décor, light, space etc)</field>
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
<field eval="3" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_3" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Desk space</field>
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
<field eval="4" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_4" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">State of the art technology</field>
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
<field eval="5" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_5" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Office location (proximity to home)</field>
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
<field eval="6" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_6" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Good management/boss</field>
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
<field eval="7" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_7" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Freebies such as tea, coffee and stationery</field>
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
<field eval="8" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_8" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Perks such as free parking, gym passes etc</field>
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
<field eval="9" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_9" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">No out of hours working</field>
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
<field eval="10" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_10" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Dress code</field>
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
<field eval="11" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_11" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Regular meetings</field>
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
<field eval="12" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_12" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Good social life (office nights out, good Christmas parties etc)</field>
<field name="question_id" ref="crm_hr.survey_question_job_1"/>
<field eval="13" name="sequence"/>
</record>
</data>
</openerp>
-149
View File
@@ -1,149 +0,0 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!--
((((((((((( Demo Cases )))))))))))
-->
<!--For Jobs Requests-->
<record id="crm_case_salesman0" model="crm.job">
<field eval="time.strftime('%Y-%m-01 10:35:50')" name="date"/>
<field eval="time.strftime('%Y-%m-03')" name="date_deadline"/>
<field name="type_id" ref="crm_hr.type_job1"/>
<field name="partner_id" ref="base.res_partner_asus"/>
<field eval="&quot;2&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Enrique Jones&quot;" name="partner_name"/>
<field eval="&quot;draft&quot;" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="&quot;enrique@rediff.com&quot;" name="partner_name2"/>
<field eval="&quot;9963214587&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field eval="9.0" name="duration"/>
<field name="categ_id" ref="crm_hr.categ_job1"/>
<field name="stage_id" ref="crm_hr.stage_job1"/>
<field eval="&quot;Salesman&quot;" name="name"/>
<field eval="&quot;1236547890&quot;" name="partner_phone"/>
</record>
<record id="crm_case_traineemca0" model="crm.job">
<field model="res.partner.canal" name="canal_id" search="[('name','=','E-mail')]"/>
<field name="partner_address_id" ref="base.res_partner_address_14"/>
<field name="som" ref="base.som_fury"/>
<field eval="time.strftime('%Y-%m-10 18:15:00')" name="date"/>
<field name="type_id" ref="crm_hr.type_job3"/>
<field name="partner_id" ref="base.res_partner_15"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Marie Justine&quot;" name="partner_name"/>
<field eval="&quot;open&quot;" name="state"/>
<field eval="5.15" name="duration"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="&quot;marie@gmail.com&quot;" name="partner_name2"/>
<field eval="&quot;9988774455&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm_hr.categ_job2"/>
<field name="stage_id" ref="crm_hr.stage_job4"/>
<field eval="&quot;Trainee - MCA&quot;" name="name"/>
<field eval="time.strftime('%Y-%m-15')" name="date_deadline"/>
<field eval="&quot;6633225&quot;" name="partner_phone"/>
</record>
<record id="crm_case_fresher0" model="crm.job">
<field model="res.partner.canal" name="canal_id" search="[('name','=','direct')]"/>
<field name="som" ref="base.som_happy"/>
<field eval="time.strftime('%Y-%m-15 16:10:00')" name="date"/>
<field eval="time.strftime('%Y-%m-18')" name="date_deadline"/>
<field name="type_id" ref="crm_hr.type_job2"/>
<field name="partner_id" ref="base.res_partner_5"/>
<field eval="&quot;1&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="1.45" name="duration"/>
<field eval="&quot;Jose&quot;" name="partner_name"/>
<field eval="&quot;pending&quot;" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="&quot;jose@timesgroup.com&quot;" name="partner_name2"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm_hr.categ_job1"/>
<field name="stage_id" ref="crm_hr.stage_job3"/>
<field eval="&quot;Fresher&quot;" name="name"/>
<field eval="&quot;999666735&quot;" name="partner_phone"/>
</record>
<record id="crm_case_yrsexperienceinphp0" model="crm.job">
<field eval="time.strftime('%Y-%m-25 16:25:52')" name="date"/>
<field eval="time.strftime('%Y-%m-28')" name="date_deadline"/>
<field name="categ_id" ref="crm_hr.categ_job2"/>
<field name="type_id" ref="crm_hr.type_job3"/>
<field name="partner_id" ref="base.res_partner_10"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="1.35" name="duration"/>
<field eval="&quot;Sandra Elvis&quot;" name="partner_name"/>
<field eval="&quot;sandra@example.com&quot;" name="partner_name2"/>
<field eval="&quot;cancel&quot;" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="1" name="active"/>
<field name="stage_id" ref="crm_hr.stage_job6"/>
<field eval="&quot;More than 5 yrs Experience in PHP&quot;" name="name"/>
</record>
<record id="crm_case_marketingjob0" model="crm.job">
<field eval="time.strftime('%Y-%m-26 17:15:32')" name="date"/>
<field eval="time.strftime('%Y-%m-28')" name="date_deadline"/>
<field name="type_id" ref="crm_hr.type_job2"/>
<field name="partner_id" ref="base.res_partner_11"/>
<field eval="&quot;4&quot;" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field eval="2.0" name="duration"/>
<field eval="&quot;John Bruno&quot;" name="partner_name"/>
<field eval="&quot;done&quot;" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="&quot;john@market.edu&quot;" name="partner_name2"/>
<field eval="&quot;9966332214&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm_hr.categ_job1"/>
<field name="stage_id" ref="crm_hr.stage_job5"/>
<field eval="&quot;Marketing Job&quot;" name="name"/>
<field eval="&quot;33968745&quot;" name="partner_phone"/>
</record>
<record id="crm_case_financejob0" model="crm.job">
<field eval="time.strftime('%Y-%m-26 17:39:42')" name="date"/>
<field eval="time.strftime('%Y-%m-28')" name="date_deadline"/>
<field name="type_id" ref="crm_hr.type_job2"/>
<field name="partner_id" ref="base.res_partner_11"/>
<field eval="&quot;4&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;David Armstrong&quot;" name="partner_name"/>
<field eval="&quot;done&quot;" name="state"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="&quot;david@market.edu&quot;" name="partner_name2"/>
<field eval="&quot;9966332214&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field eval="2.20" name="duration"/>
<field name="categ_id" ref="crm_hr.categ_job1"/>
<field name="stage_id" ref="crm_hr.stage_job5"/>
<field eval="&quot;Finance Job&quot;" name="name"/>
<field eval="&quot;33968745&quot;" name="partner_phone"/>
</record>
<record id="crm_case_traineemca1" model="crm.job">
<field model="res.partner.canal" name="canal_id" search="[('name','=','E-mail')]"/>
<field name="partner_address_id" ref="base.res_partner_address_14"/>
<field name="som" ref="base.som_fury"/>
<field eval="time.strftime('%Y-%m-12 17:49:19')" name="date"/>
<field name="type_id" ref="crm_hr.type_job3"/>
<field name="partner_id" ref="base.res_partner_15"/>
<field eval="&quot;3&quot;" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="&quot;Tina Augustie&quot;" name="partner_name"/>
<field eval="&quot;open&quot;" name="state"/>
<field eval="1.15" name="duration"/>
<field name="section_id" ref="crm.section_sales_department"/>
<field eval="&quot;tina_augustie@example.com&quot;" name="partner_name2"/>
<field eval="&quot;9898745745&quot;" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="crm_hr.categ_job2"/>
<field name="stage_id" ref="crm_hr.stage_job4"/>
<field eval="&quot;Trainee - MCA&quot;" name="name"/>
<field eval="time.strftime('%Y-%m-15')" name="date_deadline"/>
<field eval="&quot;6630125&quot;" name="partner_phone"/>
</record>
</data>
</openerp>
-252
View File
@@ -1,252 +0,0 @@
<?xml version="1.0"?>
<openerp>
<data>
# ------------------------------------------------------
# Job Categories
# ------------------------------------------------------
<record id="crm_job_categ_action" model="ir.actions.act_window">
<field name="name">Job Categories</field>
<field name="res_model">crm.case.categ</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_categ_tree-view"/>
<field name="domain">[('object_id.model', '=', 'crm.claim')]</field>
<field name="context">{'object_id':'crm.job'}</field>
</record>
# ------------------------------------------------------
# Stage
# ------------------------------------------------------
<record id="crm_job_stage_act" model="ir.actions.act_window">
<field name="name">Job Stages</field>
<field name="res_model">crm.case.stage</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_stage_tree"/>
<field name="domain">[('object_id.model', '=', 'crm.claim')]</field>
<field name="context">{'object_id':'crm.job'}</field>
</record>
<menuitem action="crm_job_stage_act" id="menu_crm_job_stage_act" parent="crm.menu_crm_case_stage"/>
# ------------------------------------------------------
# Jobs
# ------------------------------------------------------
<record model="ir.ui.view" id="crm_case_tree_view_job">
<field name="name">CRM - Jobs Requests Tree</field>
<field name="model">crm.job</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Jobs - Recruitment Tree" colors="red:state=='open';black:state in ('draft', 'cancel','done','pending')">
<field name="id"/>
<field name="name" string="Description"/>
<field name="partner_name" string="Name"/>
<field name="email_from" string="Candidate Email"/>
<field name="partner_phone" string="Candidate Phone"/>
<field name="categ_id" string="Applied Job" select="1"/>
<field name="stage_id"/>
<field name="priority" string="Appreciation"/>
<field name="user_id"/>
<field name="state"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
<button name="case_close" string="Hired" states="open,draft,pending" type="object" icon="terp-partner"/>
<button name="case_cancel" string="Refused" states="draft,open,pending" type="object" icon="gtk-cancel"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="crm_case_form_view_job">
<field name="name">CRM - Jobs Requests Form</field>
<field name="model">crm.job</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Jobs - Recruitment Form">
<group colspan="4" col="7">
<field name="name" string="Description" colspan="2"/>
<field name="section_id" colspan="1" widget="selection"/>
<field name="user_id" string="Responsible" select="2"/>
<newline/>
<label string="Stage: " align="1.0"/>
<group colspan="1" col="2">
<field name="stage_id" select="1" nolabel="1"/>
<button icon="gtk-go-forward" string="" name="stage_next" type="object"/>
</group>
<field name="date" string="Next Interview"/>
<field name="duration" widget="float_time"/>
<button name="%(wizard_crm_job_meeting_set)d" string="Schedule Meeting" icon="terp-crm" type="action"/>
<field name="phonecall_id" select="1"/>
<button string="Schedule a Phone Call"
name="%(wizard_crm_job_reschedule_phone_call)d" icon="gtk-redo" type="action" attrs="{'invisible':[('phonecall_id','!=',False)]}"/>
</group>
<notebook colspan="4">
<page string="Job Info">
<field name="partner_name" string="Candidate Name"/>
<field name="partner_name2" string="Candidate Name2"/>
<newline/>
<field name="partner_phone"/>
<field name="partner_mobile"/>
<field name="email_from" string="Candidate Email"/>
<newline/>
<group colspan="2" col="3">
<field name="partner_id" on_change="onchange_partner_id(partner_id, email_from)" />
<button string="Convert to Partner"
icon="terp-partner" name="%(wizard_crm_job_partner_create)d"
type="action" attrs="{'invisible':[('partner_id','!=',False)]}"
/>
</group>
<field name="partner_address_id" string="Contact" on_change="onchange_partner_address_id(partner_address_id, email_from)" colspan="1"/>
<newline/>
<separator colspan="4" string="Contract Data"/>
<field name="probability" string="Availability (weeks)"/>
<newline/>
<field name="planned_cost" string="Expected Salary"/>
<field name="planned_revenue" string="Proposed Salary"/>
<field name="categ_id" string="Applied Job" select="1" on_change="onchange_categ_id(categ_id)"/>
<field name="type_id" string="Degree" select="1"/>
<separator colspan="4" string="Qualication"/>
<field name="priority" string="Appreciation" select="2"/>
<separator colspan="4" string="Status"/>
<group col="8" colspan="4">
<field name="state" select="1"/>
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
<button name="case_close" string="Hired" states="open,draft,pending" type="object" icon="terp-partner"/>
<button name="case_cancel" string="Refused" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
</group>
</page>
<page string="Internal Notes">
<field name="description" nolabel="1" colspan="4"/>
</page>
<page string="History">
<field name="id" select="1"/>
<field name="active"/>
<field name="canal_id"/>
<separator colspan="4" string="Dates"/>
<field name="create_date"/>
<field name="date_closed"/>
<separator colspan="4" string="References"/>
<field name="ref" colspan="4"/>
<field name="ref2" colspan="4"/>
<field name="log_ids" nolabel="1" colspan="4">
<form string="Actions">
<separator string="Action Information" colspan="4"/>
<field name="name" colspan="4"/>
<field name="date"/>
<field name="user_id"/>
<field name="som"/>
<field name="canal_id"/>
</form>
</field>
</page>
<page string="Emails" groups="base.group_extended">
<group colspan="4">
<field colspan="4" name="email_cc" string="CC"/>
</group>
<field name="history_line" colspan="4" nolabel="1" mode="form,tree">
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
<field name="email"/>
<field name="canal_id"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
icon="gtk-add" type="action"/>
</group>
<newline/>
<field name="description" colspan="4" nolabel="1"/>
<button colspan="4" string="Reply to Last Email" name="%(crm.wizard_crm_send_mail)d" context="{'mail':'reply'}" icon="gtk-undo" type="action"/>
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<field name="date"/>
</tree>
</field>
<button colspan="4" string="Send New Email" name="%(crm.wizard_crm_new_send_mail)d" context="{'mail':'new'}" icon="gtk-go-forward" type="action"/>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.ui.view" id="crm_case_calendar_view_job">
<field name="name">CRM - Jobs Requests Calendar</field>
<field name="model">crm.job</field>
<field name="type">calendar</field>
<field name="priority" eval="2"/>
<field name="arch" type="xml">
<calendar string="Meeting With Candidates" date_start="date" color="user_id" date_delay="duration">
<field name="name"/>
<field name="partner_name"/>
<field name="partner_name2"/>
</calendar>
</field>
</record>
<record model="ir.ui.view" id="crm_case_graph_view_job">
<field name="name">CRM - Jobs Requests Graph</field>
<field name="model">crm.job</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Cases By Stage and Estimates" type="bar" orientation="vertical">
<field name="categ_id"/>
<field name="planned_cost" operator="+"/>
<field name="state" group="True"/>
</graph>
</field>
</record>
<record id="view_crm_case_jobs_filter" model="ir.ui.view">
<field name="name">CRM - Jobs Requests Search</field>
<field name="model">crm.job</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Jobs">
<group col="7" colspan="1">
<filter icon="gtk-home" string=" Today "
separator="1"
domain="[('date','=',time.strftime('%%Y-%%m-%%d'))]"
help="Todays's Jobs"
/>
<filter icon="gtk-media-rewind"
string=" 7 Days " separator="1"
domain="[('date','&lt;', time.strftime('%%Y-%%m-%%d')), ('date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
help="Jobs during last 7 days"
/>
<separator orientation="vertical"/>
<filter icon="gtk-new" string="New Jobs"
domain="[('stage_id.name','=','Initial Jobs Demand')]"
separator="1" help="All Initial Jobs"
/>
<filter icon="gtk-yes" string="Open Jobs"
domain="[('state','=','open')]"
separator="1" help="Open Jobs"
/>
<filter icon="gtk-media-pause" string="Pending Jobs"
domain="[('state','=','pending')]"
separator="1" help="Pending Jobs"
/>
</group>
<separator orientation="vertical"/>
<group col="4" colspan="2">
<field name="name" select='1' string="Name"/>
<field name="email_from" select='1' string="Email"/>
<field name="user_id" select="1" widget="selection"/>
</group>
<field name="section_id" select="1" widget="selection" string="Section">
<filter icon="terp-crm"
domain="[('section_id','=',context.get('section_id',False))]"
help="My section"
/>
</field>
</search>
</field>
</record>
</data>
</openerp>
-29
View File
@@ -1,29 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<wizard
id="wizard_crm_job_reschedule_phone_call"
keyword="client_action_multi"
model="crm.job"
name="crm.job.reschedule_phone_call"
multi="True"
string="Schedule Phone Call" />
<wizard
id="wizard_crm_job_meeting_set"
keyword="client_action_multi"
model="crm.job"
name="crm.job.meeting_set"
multi="True"
string="Schedule Meeting"/>
<wizard
id="wizard_crm_job_partner_create"
keyword="client_action_multi"
model="crm.job"
name="crm.job.partner_create"
multi="True"
string="Create Partner"/>
</data>
</openerp>
-131
View File
@@ -1,131 +0,0 @@
from osv import fields,osv
import tools
class report_crm_job_user(osv.osv):
_name = "report.crm.job.user"
_description = "Job by user and section"
_auto = False
_inherit = "report.crm.case.user"
_columns = {
'probability': fields.float('Avg. Probability', readonly=True),
'amount_revenue': fields.float('Est.Revenue', readonly=True),
'amount_costs': fields.float('Est.Cost', readonly=True),
'amount_revenue_prob': fields.float('Est. Rev*Prob.', readonly=True),
'delay_close': fields.char('Delay to close', size=20, readonly=True),
}
def init(self, cr):
tools.drop_view_if_exists(cr, 'report_crm_job_user')
cr.execute("""
create or replace view report_crm_job_user as (
select
min(c.id) as id,
to_char(c.create_date, 'YYYY') as name,
to_char(c.create_date, 'MM') as month,
c.state,
c.user_id,
c.section_id,
count(*) as nbr,
sum(planned_revenue) as amount_revenue,
sum(planned_cost) as amount_costs,
sum(planned_revenue*probability)::decimal(16,2) as amount_revenue_prob,
avg(probability)::decimal(16,2) as probability,
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
from
crm_job c
group by to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.state, c.user_id,c.section_id
)""")
report_crm_job_user()
class report_crm_job_categ(osv.osv):
_name = "report.crm.job.categ"
_description = "Jobs by section and category"
_auto = False
_inherit = "report.crm.case.categ"
_columns = {
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'crm.job')]"),
'amount_revenue': fields.float('Est.Revenue', readonly=True),
'amount_costs': fields.float('Est.Cost', readonly=True),
'amount_revenue_prob': fields.float('Est. Rev*Prob.', readonly=True),
'probability': fields.float('Avg. Probability', readonly=True),
'delay_close': fields.char('Delay Close', size=20, readonly=True),
}
def init(self, cr):
tools.drop_view_if_exists(cr, 'report_crm_job_categ')
cr.execute("""
create or replace view report_crm_job_categ as (
select
min(c.id) as id,
to_char(c.create_date, 'YYYY') as name,
to_char(c.create_date, 'MM') as month,
c.categ_id,
c.state,
c.section_id,
count(*) as nbr,
sum(planned_revenue) as amount_revenue,
sum(planned_cost) as amount_costs,
sum(planned_revenue*probability)::decimal(16,2) as amount_revenue_prob,
avg(probability)::decimal(16,2) as probability,
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
from
crm_job c
group by c.categ_id,to_char(c.create_date, 'YYYY'), to_char(c.create_date, 'MM'), c.state,c.section_id
)""")
report_crm_job_categ()
class report_crm_job_section(osv.osv):
_name = "report.crm.job.section"
_description = "job by Section"
_auto = False
_inherit = "report.crm.case.section"
def _get_data(self, cr, uid, ids, field_name, arg, context={}):
res = {}
state_perc = 0.0
avg_ans = 0.0
for case in self.browse(cr, uid, ids, context):
if field_name != 'avg_answers':
state = field_name[5:]
cr.execute("select count(*) from crm_job where section_id =%s and state='%s'"%(case.section_id.id,state))
state_cases = cr.fetchone()[0]
perc_state = (state_cases / float(case.nbr_cases) ) * 100
res[case.id] = perc_state
else:
cr.execute('select count(*) from crm_case_log l where l.section_id=%s'%(case.section_id.id))
logs = cr.fetchone()[0]
avg_ans = logs / case.nbr_cases
res[case.id] = avg_ans
return res
_columns = {
'avg_answers': fields.function(_get_data,string='Avg. Answers', method=True,type="integer"),
'perc_done': fields.function(_get_data,string='%Done', method=True,type="float"),
'perc_cancel': fields.function(_get_data,string='%Cancel', method=True,type="float"),
'delay_close': fields.char('Delay to close', size=20, readonly=True),
}
_order = 'name desc, section_id'
def init(self, cr):
tools.drop_view_if_exists(cr, 'report_crm_job_section')
cr.execute("""
create or replace view report_crm_job_section as (
select
min(c.id) as id,
to_char(c.create_date, 'YYYY') as name,
to_char(c.create_date, 'MM') as month,
count(*) as nbr_cases,
c.section_id as section_id,
0 as avg_answers,
0.0 as perc_done,
0.0 as perc_cancel,
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
from
crm_job c
group by to_char(c.create_date, 'YYYY'),to_char(c.create_date, 'MM'),c.section_id
)""")
report_crm_job_section()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-197
View File
@@ -1,197 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--
jobs by user and section
-->
<record id="view_crm_job_user_tree" model="ir.ui.view">
<field name="name">report.crm.job.user.tree</field>
<field name="model">report.crm.job.user</field>
<field name="inherit_id" ref="report_crm.view_crm_case_user_tree"/>
<field name="type">tree</field>
<field name="arch" type="xml">
<field name="nbr" position="after">
<field name="delay_close"/>
<field name="amount_revenue"/>
<field name="amount_costs"/>
<field name="amount_revenue_prob"/>
<field name="probability"/>
</field>
</field>
</record>
<record id="view_crm_job_user_form" model="ir.ui.view">
<field name="name">report.crm.job.user.form</field>
<field name="model">report.crm.job.user</field>
<field name="inherit_id" ref="report_crm.view_crm_case_user_form"/>
<field name="type">form</field>
<field name="arch" type="xml">
<field name="nbr" position="after">
<field name="delay_close"/>
<field name="amount_revenue"/>
<field name="amount_costs"/>
<field name="amount_revenue_prob"/>
<field name="probability"/>
</field>
</field>
</record>
<record id="view_crm_job_user_graph" model="ir.ui.view">
<field name="name">report.crm.job.user.graph</field>
<field name="model">report.crm.job.user</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph orientation="horizontal" string="jobs by User and Section" type="bar">
<field name="state"/>
<field name="nbr" operator="+"/>
<field group="True" name="user_id"/>
</graph>
</field>
</record>
<record id="view_crm_job_user_filter" model="ir.ui.view">
<field name="name">report.crm.job.user.select</field>
<field name="model">report.crm.job.user</field>
<field name="inherit_id" ref="report_crm.view_crm_case_user_filter"/>
<field name="type">search</field>
<field name="arch" type="xml">
<field name="state" position="before">
</field>
</field>
</record>
<record id="action_report_crm_job_user_tree" model="ir.actions.act_window">
<field name="name">Jobs by User and Section</field>
<field name="res_model">report.crm.job.user</field>
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
<field name="view_id" ref="view_crm_job_user_graph"/>
<field name="search_view_id" ref="view_crm_job_user_filter"/>
</record>
<menuitem
id="hr.menu_hr_reporting"
name="Reporting"
parent="hr.menu_hr_root"
sequence="40" />
<menuitem name="Jobs" id="menu_crm_jobs_tree" parent="hr.menu_hr_reporting"/>
<menuitem action="action_report_crm_job_user_tree" id="menu_crm_job_user_tree" parent="menu_crm_jobs_tree"/>
<!-- # jobs by section and category of case -->
<record id="view_crm_job_categ_tree" model="ir.ui.view">
<field name="name">report.crm.job.categ.tree</field>
<field name="model">report.crm.job.categ</field>
<field name="inherit_id" ref="report_crm.view_crm_case_categ_tree"/>
<field name="type">tree</field>
<field name="arch" type="xml">
<field name="nbr" position="after">
<field name="delay_close"/>
<field name="amount_revenue"/>
<field name="amount_costs"/>
<field name="amount_revenue_prob"/>
<field name="probability"/>
</field>
</field>
</record>
<record id="view_crm_job_categ_form" model="ir.ui.view">
<field name="name">report.crm.job.categ.form</field>
<field name="model">report.crm.job.categ</field>
<field name="inherit_id" ref="report_crm.view_crm_case_categ_form"/>
<field name="type">form</field>
<field name="arch" type="xml">
<field name="nbr" position="after">
<field name="delay_close"/>
<field name="amount_revenue"/>
<field name="amount_costs"/>
<field name="amount_revenue_prob"/>
<field name="probability"/>
</field>
</field>
</record>
<record id="view_crm_job_categ_graph" model="ir.ui.view">
<field name="name">report.crm.job.categ.graph</field>
<field name="model">report.crm.job.categ</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph orientation="horizontal" string="jobs by Section and Categories" type="bar">
<field name="state"/>
<field name="nbr" operator="+"/>
<field group="True" name="categ_id"/>
</graph>
</field>
</record>
<record id="view_crm_job_categ_filter" model="ir.ui.view">
<field name="name">report.crm.job.categ.select</field>
<field name="model">report.crm.job.categ</field>
<field name="inherit_id" ref="report_crm.view_crm_case_categ_filter"/>
<field name="type">search</field>
<field name="arch" type="xml">
<field name="state" position="before">
</field>
</field>
</record>
<record id="action_report_crm_job_categ_tree" model="ir.actions.act_window">
<field name="name">Jobs by Categories and Section</field>
<field name="res_model">report.crm.job.categ</field>
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
<field name="view_id" ref="view_crm_job_categ_graph"/>
<field name="search_view_id" ref="view_crm_job_categ_filter"/>
</record>
<menuitem action="action_report_crm_job_categ_tree" id="menu_crm_job_categ_tree" parent="menu_crm_jobs_tree"/>
<!-- jobs by Section -->
<record id="view_report_crm_job_section_tree" model="ir.ui.view">
<field name="name">report.crm.job.section.tree</field>
<field name="model">report.crm.job.section</field>
<field name="inherit_id" ref="report_crm.view_report_crm_case_section_tree"/>
<field name="type">tree</field>
<field name="arch" type="xml">
<field name="nbr_cases" position="after">
<field name="avg_answers"/>
<field name="perc_done" select="2"/>
<field name="perc_cancel" select="2"/>
<field name="delay_close"/>
</field>
</field>
</record>
<record id="view_report_crm_job_section_graph" model="ir.ui.view">
<field name="name">report.crm.job.section.graph</field>
<field name="model">report.crm.job.section</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph orientation="horizontal" string="jobs by Section" type="bar">
<field name="name"/>
<field name="nbr_cases" operator="+"/>
</graph>
</field>
</record>
<record id="view_report_crm_job_section_filter" model="ir.ui.view">
<field name="name">report.crm.job.section.select</field>
<field name="model">report.crm.job.section</field>
<field name="inherit_id" ref="report_crm.view_report_crm_case_section_filter"/>
<field name="type">search</field>
<field name="arch" type="xml">
<field name="nbr_cases" position="before">
</field>
</field>
</record>
<record id="action_report_crm_job_section_tree" model="ir.actions.act_window">
<field name="name">Jobs by Section</field>
<field name="res_model">report.crm.job.section</field>
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
<field name="view_id" ref="view_report_crm_job_section_graph"/>
<field name="search_view_id" ref="view_report_crm_job_section_filter"/>
</record>
<menuitem action="action_report_crm_job_section_tree" id="menu_crm_job_section_tree" parent="menu_crm_jobs_tree"/>
</data>
</openerp>
@@ -1,5 +0,0 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_crm_job","crm.job","model_crm_job","crm.group_crm_manager",1,1,1,1
"access_report_crm_job_user","report.crm.job.user","model_report_crm_job_user","crm.group_crm_manager",1,0,0,0
"access_report_crm_job_categ","report.crm.job.categ","model_report_crm_job_categ","crm.group_crm_manager",1,0,0,0
"access_repor_crm_job_section","report.crm.job.section","model_report_crm_job_section","crm.group_crm_manager",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_crm_job crm.job model_crm_job crm.group_crm_manager 1 1 1 1
3 access_report_crm_job_user report.crm.job.user model_report_crm_job_user crm.group_crm_manager 1 0 0 0
4 access_report_crm_job_categ report.crm.job.categ model_report_crm_job_categ crm.group_crm_manager 1 0 0 0
5 access_repor_crm_job_section report.crm.job.section model_report_crm_job_section crm.group_crm_manager 1 0 0 0
+1
View File
@@ -42,6 +42,7 @@ class crm_project_bug(osv.osv):
_inherit = 'crm.case'
_columns = {
'date_closed': fields.datetime('Closed', readonly=True),
'date': fields.datetime('Date'),
'ref' : fields.reference('Reference', selection=crm._links_get, size=128),
'ref2' : fields.reference('Reference 2', selection=crm._links_get, size=128),
'canal_id': fields.many2one('res.partner.canal', 'Channel',help="The channels represent the different communication modes available with the customer." \
+41 -41
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-04-10 09:33+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2010-02-24 18:48+0000\n"
"Last-Translator: Anders Eriksson <ae@mobilasystem.se>\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: 2009-12-16 05:05+0000\n"
"X-Launchpad-Export-Date: 2010-02-25 04:50+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: delivery
@@ -36,7 +36,7 @@ msgstr ""
#. module: delivery
#: view:delivery.grid:0
msgid "Destination"
msgstr ""
msgstr "Destination"
#. module: delivery
#: model:product.template,name:delivery.delivery_product_product_template
@@ -71,59 +71,59 @@ msgstr ""
#. module: delivery
#: model:ir.model,name:delivery.model_delivery_grid
msgid "Delivery Grid"
msgstr ""
msgstr "Leveransmatris"
#. module: delivery
#: field:delivery.grid,zip_from:0
msgid "Start Zip"
msgstr ""
msgstr "Från postnr"
#. module: delivery
#: selection:delivery.grid.line,price_type:0
msgid "Fixed"
msgstr ""
msgstr "Fast"
#. module: delivery
#: field:delivery.grid,line_ids:0
msgid "Grid Line"
msgstr ""
msgstr "Matrisrad"
#. module: delivery
#: model:ir.actions.act_window,name:delivery.action_delivery_grid_form
#: model:ir.ui.menu,name:delivery.menu_action_delivery_grid_form
msgid "Delivery Pricelist"
msgstr ""
msgstr "Leveransprislista"
#. module: delivery
#: model:ir.actions.act_window,name:delivery.action_picking_tree5
#: model:ir.ui.menu,name:delivery.menu_action_picking_tree5
msgid "Generate Draft Invoices On Receptions"
msgstr ""
msgstr "Skapa en preliminär faktura vid leverans"
#. module: delivery
#: model:ir.model,name:delivery.model_delivery_grid_line
msgid "Delivery line of grid"
msgstr ""
msgstr "Matrisens leveransrad"
#. module: delivery
#: model:ir.ui.menu,name:delivery.menu_delivery
msgid "Delivery"
msgstr ""
msgstr "Leverans"
#. module: delivery
#: view:delivery.grid.line:0
msgid "Grid Lines"
msgstr ""
msgstr "Matrisrader"
#. module: delivery
#: field:delivery.grid.line,grid_id:0
msgid "Grid"
msgstr ""
msgstr "Matris"
#. module: delivery
#: view:res.partner:0
msgid "Deliveries Properties"
msgstr ""
msgstr "Leveransuppgifter"
#. module: delivery
#: field:delivery.carrier,active:0
@@ -134,13 +134,13 @@ msgstr "Aktiv"
#. module: delivery
#: view:delivery.grid:0
msgid "Grid definition"
msgstr ""
msgstr "Matrisdefinition"
#. module: delivery
#: selection:delivery.grid.line,type:0
#: selection:delivery.grid.line,variable_factor:0
msgid "Weight * Volume"
msgstr ""
msgstr "Vikt * Volym"
#. module: delivery
#: selection:delivery.grid.line,operator:0
@@ -150,22 +150,22 @@ msgstr ""
#. module: delivery
#: field:delivery.carrier,product_id:0
msgid "Delivery Product"
msgstr ""
msgstr "Leveransprodukt"
#. module: delivery
#: view:delivery.grid.line:0
msgid "Condition"
msgstr ""
msgstr "Villkor"
#. module: delivery
#: model:ir.model,name:delivery.model_delivery_carrier
msgid "Carrier and delivery grids"
msgstr ""
msgstr "Distributör- och leveransmatris"
#. module: delivery
#: field:delivery.grid.line,standard_price:0
msgid "Cost Price"
msgstr ""
msgstr "Kostpris"
#. module: delivery
#: field:delivery.grid.line,name:0
@@ -180,7 +180,7 @@ msgstr ""
#. module: delivery
#: field:delivery.grid,country_ids:0
msgid "Countries"
msgstr ""
msgstr "Länder"
#. module: delivery
#: constraint:product.template:0
@@ -196,18 +196,18 @@ msgstr "Anteckningar"
#. module: delivery
#: field:delivery.grid.line,variable_factor:0
msgid "Variable Factor"
msgstr ""
msgstr "Variabel faktor"
#. module: delivery
#: selection:delivery.grid.line,price_type:0
#: field:delivery.grid.line,type:0
msgid "Variable"
msgstr ""
msgstr "Variabel"
#. module: delivery
#: field:delivery.grid,name:0
msgid "Grid Name"
msgstr ""
msgstr "Matrisnamn"
#. module: delivery
#: view:delivery.carrier:0
@@ -222,17 +222,17 @@ msgstr "Bärare"
#: selection:delivery.grid.line,variable_factor:0
#: field:stock.picking,volume:0
msgid "Volume"
msgstr ""
msgstr "Volym"
#. module: delivery
#: field:delivery.grid.line,max_value:0
msgid "Maximum Value"
msgstr ""
msgstr "Maximalt värde"
#. module: delivery
#: wizard_button:delivery.sale.order,init,delivery:0
msgid "Add Delivery Costs"
msgstr ""
msgstr "Lägg till leveranskostnad"
#. module: delivery
#: wizard_field:delivery.sale.order,init,carrier_id:0
@@ -240,7 +240,7 @@ msgstr ""
#: model:ir.ui.menu,name:delivery.menu_action_delivery_carrier_form
#: field:res.partner,property_delivery_carrier:0
msgid "Delivery Method"
msgstr ""
msgstr "Leveransmetod"
#. module: delivery
#: field:sale.order,id:0
@@ -255,19 +255,19 @@ msgstr ""
#. module: delivery
#: model:ir.module.module,shortdesc:delivery.module_meta_information
msgid "Carriers and deliveries"
msgstr ""
msgstr "Distributörer och leveranser"
#. module: delivery
#: field:delivery.carrier,grids_id:0
msgid "Delivery Grids"
msgstr ""
msgstr "Leveranstabeller"
#. module: delivery
#: selection:delivery.grid.line,type:0
#: selection:delivery.grid.line,variable_factor:0
#: field:stock.picking,weight:0
msgid "Weight"
msgstr ""
msgstr "Vikt"
#. module: delivery
#: field:delivery.grid,sequence:0
@@ -277,7 +277,7 @@ msgstr "Sekvens"
#. module: delivery
#: field:delivery.carrier,partner_id:0
msgid "Carrier Partner"
msgstr ""
msgstr "Sistributörpartner"
#. module: delivery
#: model:ir.module.module,description:delivery.module_meta_information
@@ -290,7 +290,7 @@ msgstr ""
#. module: delivery
#: field:delivery.grid,zip_to:0
msgid "To Zip"
msgstr ""
msgstr "Till postnummer"
#. module: delivery
#: model:ir.actions.act_window,name:delivery.action_picking_tree4
@@ -307,12 +307,12 @@ msgstr ""
#. module: delivery
#: model:ir.actions.wizard,name:delivery.wizard_deliver_line_add
msgid "Delivery Costs"
msgstr ""
msgstr "Leveranskostnad"
#. module: delivery
#: field:delivery.grid.line,list_price:0
msgid "Sale Price"
msgstr ""
msgstr "Försäljningspris"
#. module: delivery
#: constraint:product.product:0
@@ -322,17 +322,17 @@ msgstr ""
#. module: delivery
#: view:delivery.grid:0
msgid "Delivery grids"
msgstr ""
msgstr "Leveransmatriser"
#. module: delivery
#: wizard_button:delivery.sale.order,init,end:0
msgid "Cancel"
msgstr ""
msgstr "Avbryt"
#. module: delivery
#: field:sale.order,carrier_id:0
msgid "Delivery method"
msgstr ""
msgstr "Leveransmetod"
#. module: delivery
#: field:delivery.carrier,price:0
@@ -344,9 +344,9 @@ msgstr "Pris"
#. module: delivery
#: constraint:res.partner:0
msgid "The VAT doesn't seem to be correct."
msgstr ""
msgstr "Momsen verkar vara fel"
#. module: delivery
#: field:delivery.grid.line,price_type:0
msgid "Price Type"
msgstr ""
msgstr "Pristyp"
+76 -75
View File
@@ -36,26 +36,27 @@ import tools
from tools.translate import _
import nodes
DMS_ROOT_PATH = tools.config.get('document_path', os.path.join(tools.config['root_path'], 'filestore'))
class document_file(osv.osv):
_inherit = 'ir.attachment'
_rec_name = 'datas_fname'
def _get_filestore(self, cr):
return os.path.join(tools.config['root_path'], 'filestore', cr.dbname)
return os.path.join(DMS_ROOT_PATH, cr.dbname)
def _data_get(self, cr, uid, ids, name, arg, context):
fbrl = self.browse(cr,uid,ids,context=context)
nctx = nodes.get_node_context(cr,uid,context)
fbrl = self.browse(cr, uid, ids, context=context)
nctx = nodes.get_node_context(cr, uid, context)
result = {}
bin_size = context.get('bin_size', False)
for fbro in fbrl:
fnode = nodes.node_file(None,None,nctx,fbro)
fnode = nodes.node_file(None, None, nctx, fbro)
if not bin_size:
data = fnode.get_data(cr,fbro)
data = fnode.get_data(cr, fbro)
result[fbro.id] = base64.encodestring(data or '')
else:
result[fbro.id] = fnode.get_data_len(cr,fbro)
result[fbro.id] = fnode.get_data_len(cr, fbro)
return result
#
@@ -64,10 +65,10 @@ class document_file(osv.osv):
def _data_set(self, cr, uid, id, name, value, arg, context):
if not value:
return True
fbro = self.browse(cr,uid,id,context=context)
nctx = nodes.get_node_context(cr,uid,context)
fnode = nodes.node_file(None,None,nctx,fbro)
res = fnode.set_data(cr,base64.decodestring(value),fbro)
fbro = self.browse(cr, uid, id, context=context)
nctx = nodes.get_node_context(cr, uid, context)
fnode = nodes.node_file(None, None, nctx, fbro)
res = fnode.set_data(cr, base64.decodestring(value), fbro)
return res
_columns = {
@@ -79,138 +80,138 @@ class document_file(osv.osv):
'file_type': fields.char('Content Type', size=32),
# If ir.attachment contained any data before document is installed, preserve
# the data, don't drop the column!
'db_datas': fields.binary('Data',oldname='datas'),
'db_datas': fields.binary('Data', oldname='datas'),
'index_content': fields.text('Indexed Content'),
'write_date': fields.datetime('Date Modified', readonly=True),
'write_uid': fields.many2one('res.users', 'Last Modification User', readonly=True),
'create_date': fields.datetime('Date Created', readonly=True),
'create_uid': fields.many2one('res.users', 'Creator', readonly=True),
'store_method': fields.selection([('db','Database'),('fs','Filesystem'),('link','Link')], "Storing Method"),
'datas': fields.function(_data_get,method=True,fnct_inv=_data_set,string='File Content',type="binary", nodrop=True),
'store_method': fields.selection([('db', 'Database'), ('fs', 'Filesystem'), ('link', 'Link')], "Storing Method"),
'datas': fields.function(_data_get, method=True, fnct_inv=_data_set, string='File Content', type="binary", nodrop=True),
'store_fname': fields.char('Stored Filename', size=200),
'res_model': fields.char('Attached Model', size=64), #res_model
'res_id': fields.integer('Attached ID'), #res_id
'partner_id':fields.many2one('res.partner', 'Partner', select=1),
'title': fields.char('Resource Title',size=64),
'title': fields.char('Resource Title', size=64),
}
def __get_def_directory(self,cr,uid, context = None):
def __get_def_directory(self, cr, uid, context=None):
dirobj = self.pool.get('document.directory')
return dirobj._get_root_directory(cr,uid,context)
return dirobj._get_root_directory(cr, uid, context)
_defaults = {
'user_id': lambda self,cr,uid,ctx:uid,
'file_size': lambda self,cr,uid,ctx:0,
'user_id': lambda self, cr, uid, ctx:uid,
'file_size': lambda self, cr, uid, ctx:0,
'store_method': lambda *args: 'db',
'parent_id': __get_def_directory
}
_sql_constraints = [
('filename_uniq', 'unique (name,parent_id,res_id,res_model)', 'The file name must be unique !')
]
def _check_duplication(self, cr, uid,vals,ids=[],op='create'):
name=vals.get('name',False)
parent_id=vals.get('parent_id',False)
res_model=vals.get('res_model',False)
res_id=vals.get('res_id',0)
if op=='write':
for file in self.browse(cr,uid,ids):
def _check_duplication(self, cr, uid, vals, ids=[], op='create'):
name = vals.get('name', False)
parent_id = vals.get('parent_id', False)
res_model = vals.get('res_model', False)
res_id = vals.get('res_id', 0)
if op == 'write':
for file in self.browse(cr, uid, ids):
if not name:
name=file.name
name = file.name
if not parent_id:
parent_id=file.parent_id and file.parent_id.id or False
parent_id = file.parent_id and file.parent_id.id or False
if not res_model:
res_model=file.res_model and file.res_model or False
res_model = file.res_model and file.res_model or False
if not res_id:
res_id=file.res_id and file.res_id or 0
res=self.search(cr,uid,[('id','<>',file.id),('name','=',name),('parent_id','=',parent_id),('res_model','=',res_model),('res_id','=',res_id)])
res_id = file.res_id and file.res_id or 0
res = self.search(cr, uid, [('id', '<>', file.id), ('name', '=', name), ('parent_id', '=', parent_id), ('res_model', '=', res_model), ('res_id', '=', res_id)])
if len(res):
return False
if op=='create':
res=self.search(cr,uid,[('name','=',name),('parent_id','=',parent_id),('res_id','=',res_id),('res_model','=',res_model)])
if op == 'create':
res = self.search(cr, uid, [('name', '=', name), ('parent_id', '=', parent_id), ('res_id', '=', res_id), ('res_model', '=', res_model)])
if len(res):
return False
return True
def copy(self, cr, uid, id, default=None, context=None):
if not default:
default ={}
default = {}
if 'name' not in default:
name = self.read(cr, uid, [id])[0]['name']
default.update({'name': name+ " (copy)"})
return super(document_file,self).copy(cr,uid,id,default,context)
default.update({'name': name + " (copy)"})
return super(document_file, self).copy(cr, uid, id, default, context)
def write(self, cr, uid, ids, vals, context=None):
res=self.search(cr,uid,[('id','in',ids)])
res = self.search(cr, uid, [('id', 'in', ids)])
if not len(res):
return False
if not self._check_duplication(cr,uid,vals,ids,'write'):
if not self._check_duplication(cr, uid, vals, ids, 'write'):
raise osv.except_osv(_('ValidateError'), _('File name must be unique!'))
result = super(document_file,self).write(cr,uid,ids,vals,context=context)
result = super(document_file, self).write(cr, uid, ids, vals, context=context)
cr.commit()
return result
def create(self, cr, uid, vals, context=None):
if not context:
context = {}
vals['title']=vals['name']
vals['parent_id'] = context.get('parent_id',False) or vals.get('parent_id',False)
if not vals.get('res_id', False) and context.get('default_res_id',False):
vals['res_id']=context.get('default_res_id',False)
if not vals.get('res_model', False) and context.get('default_res_model',False):
vals['res_model']=context.get('default_res_model',False)
if vals.get('res_id', False) and vals.get('res_model',False):
obj_model=self.pool.get(vals['res_model'])
vals['title'] = vals['name']
vals['parent_id'] = context.get('parent_id', False) or vals.get('parent_id', False)
if not vals.get('res_id', False) and context.get('default_res_id', False):
vals['res_id'] = context.get('default_res_id', False)
if not vals.get('res_model', False) and context.get('default_res_model', False):
vals['res_model'] = context.get('default_res_model', False)
if vals.get('res_id', False) and vals.get('res_model', False):
obj_model = self.pool.get(vals['res_model'])
result = obj_model.read(cr, uid, [vals['res_id']], context=context)
if len(result):
obj=result[0]
if obj.get('name',False):
vals['title'] = (obj.get('name',''))[:60]
if obj_model._name=='res.partner':
vals['partner_id']=obj['id']
elif obj.get('address_id',False):
if isinstance(obj['address_id'],tuple) or isinstance(obj['address_id'],list):
address_id=obj['address_id'][0]
obj = result[0]
if obj.get('name', False):
vals['title'] = (obj.get('name', ''))[:60]
if obj_model._name == 'res.partner':
vals['partner_id'] = obj['id']
elif obj.get('address_id', False):
if isinstance(obj['address_id'], tuple) or isinstance(obj['address_id'], list):
address_id = obj['address_id'][0]
else:
address_id=obj['address_id']
address=self.pool.get('res.partner.address').read(cr,uid,[address_id],context=context)
address_id = obj['address_id']
address = self.pool.get('res.partner.address').read(cr, uid, [address_id], context=context)
if len(address):
vals['partner_id']=address[0]['partner_id'][0] or False
elif obj.get('partner_id',False):
if isinstance(obj['partner_id'],tuple) or isinstance(obj['partner_id'],list):
vals['partner_id']=obj['partner_id'][0]
vals['partner_id'] = address[0]['partner_id'][0] or False
elif obj.get('partner_id', False):
if isinstance(obj['partner_id'], tuple) or isinstance(obj['partner_id'], list):
vals['partner_id'] = obj['partner_id'][0]
else:
vals['partner_id']=obj['partner_id']
vals['partner_id'] = obj['partner_id']
datas=None
if vals.get('link',False) :
datas = None
if vals.get('link', False) :
import urllib
datas=base64.encodestring(urllib.urlopen(vals['link']).read())
datas = base64.encodestring(urllib.urlopen(vals['link']).read())
else:
datas = vals.get('datas',False)
datas = vals.get('datas', False)
vals['file_size']= datas and len(datas) or 0
if not self._check_duplication(cr,uid,vals):
vals['file_size'] = datas and len(datas) or 0
if not self._check_duplication(cr, uid, vals):
raise osv.except_osv(_('ValidateError'), _('File name must be unique!'))
result = super(document_file,self).create(cr, uid, vals, context)
result = super(document_file, self).create(cr, uid, vals, context)
cr.commit()
return result
def unlink(self,cr, uid, ids, context={}):
def unlink(self, cr, uid, ids, context={}):
stor = self.pool.get('document.storage')
unres= []
unres = []
# We have to do the unlink in 2 stages: prepare a list of actual
# files to be unlinked, update the db (safer to do first, can be
# rolled back) and then unlink the files. The list wouldn't exist
# after we discard the objects
for f in self.browse(cr, uid, ids, context):
# TODO: update the node cache
r = stor.prepare_unlink(cr,uid,f.parent_id.storage_id, f)
r = stor.prepare_unlink(cr, uid, f.parent_id.storage_id, f)
if r:
unres.append(r)
res = super(document_file, self).unlink(cr, uid, ids, context)
stor.do_unlink(cr,uid,unres)
stor.do_unlink(cr, uid, unres)
return res
document_file()
+55 -54
View File
@@ -34,6 +34,8 @@ import string
import netsvc
from content_index import cntIndex
DMS_ROOT_PATH = tools.config.get('document_path', os.path.join(tools.config.get('root_path'), 'filestore'))
""" The algorithm of data storage
@@ -71,12 +73,12 @@ def random_name():
name = "".join(d)
return name
INVALID_CHARS={'*':str(hash('*')), '|':str(hash('|')) , "\\":str(hash("\\")), '/':'__', ':':str(hash(':')), '"':str(hash('"')), '<':str(hash('<')) , '>':str(hash('>')) , '?':str(hash('?'))}
INVALID_CHARS = {'*':str(hash('*')), '|':str(hash('|')) , "\\":str(hash("\\")), '/':'__', ':':str(hash(':')), '"':str(hash('"')), '<':str(hash('<')) , '>':str(hash('>')) , '?':str(hash('?'))}
def create_directory(path):
dir_name = random_name()
path = os.path.join(path,dir_name)
path = os.path.join(path, dir_name)
os.makedirs(path)
return dir_name
@@ -103,19 +105,18 @@ class document_storage(osv.osv):
'user_id': fields.many2one('res.users', 'Owner'),
'group_ids': fields.many2many('res.groups', 'document_directory_group_rel', 'item_id', 'group_id', 'Groups'),
'dir_ids': fields.one2many('document.directory', 'parent_id', 'Directories'),
'type': fields.selection([('db','Database'),('filestore','Internal File storage'),
('realstore','External file storage'), ('virtual','Virtual storage')], 'Type', required=True),
'path': fields.char('Path',size=250,select=1,help="For file storage, the root path of the storage"),
'online': fields.boolean('Online',help="If not checked, media is currently offline and its contents not available", required=True),
'type': fields.selection([('db', 'Database'), ('filestore', 'Internal File storage'),
('realstore', 'External file storage'), ('virtual', 'Virtual storage')], 'Type', required=True),
'path': fields.char('Path', size=250, select=1, help="For file storage, the root path of the storage"),
'online': fields.boolean('Online', help="If not checked, media is currently offline and its contents not available", required=True),
'readonly': fields.boolean('Read Only', help="If set, media is for reading only"),
}
def _get_rootpath(self,cr,uid,context=None):
from tools import config
return os.path.join(tools.config['root_path'], 'filestore', cr.dbname)
def _get_rootpath(self, cr, uid, context=None):
return os.path.join(DMS_ROOT_PATH, cr.dbname)
_defaults = {
'user_id': lambda self,cr,uid,ctx: uid,
'user_id': lambda self, cr, uid, ctx: uid,
'online': lambda *args: True,
'readonly': lambda *args: False,
# Note: the defaults below should only be used ONCE for the default
@@ -127,22 +128,22 @@ class document_storage(osv.osv):
# SQL note: a path = NULL doesn't have to be unique.
('path_uniq', 'UNIQUE(type,path)', "The storage path must be unique!")
]
def get_data(self, cr,uid, id, file_node,context = None, fil_obj = None):
def get_data(self, cr, uid, id, file_node, context=None, fil_obj=None):
""" retrieve the contents of some file_node having storage_id = id
optionally, fil_obj could point to the browse object of the file
(ir.attachment)
"""
if not context:
context = {}
boo = self.browse(cr,uid,id,context)
boo = self.browse(cr, uid, id, context)
if fil_obj:
ira = fil_obj
else:
ira = self.pool.get('ir.attachment').browse(cr,uid, file_node.file_id, context=context)
return self.__get_data_3(cr,uid,boo, ira, context)
def __get_data_3(self,cr,uid, boo, ira, context):
ira = self.pool.get('ir.attachment').browse(cr, uid, file_node.file_id, context=context)
return self.__get_data_3(cr, uid, boo, ira, context)
def __get_data_3(self, cr, uid, boo, ira, context):
if not boo.online:
raise RuntimeError('media offline')
if boo.type == 'filestore':
@@ -150,17 +151,17 @@ class document_storage(osv.osv):
# On a migrated db, some files may have the wrong storage type
# try to fix their directory.
if ira.file_size:
netsvc.Logger().notifyChannel('document',netsvc.LOG_WARNING,"ir.attachment #%d does not have a filename, but is at filestore, fix it!" %ira.id)
netsvc.Logger().notifyChannel('document', netsvc.LOG_WARNING, "ir.attachment #%d does not have a filename, but is at filestore, fix it!" % ira.id)
return None
fpath = os.path.join(boo.path,ira.store_fname)
print "Trying to read \"%s\".."% fpath
return file(fpath,'rb').read()
fpath = os.path.join(boo.path, ira.store_fname)
print "Trying to read \"%s\".." % fpath
return file(fpath, 'rb').read()
elif boo.type == 'db':
# TODO: we need a better api for large files
if ira.db_datas:
out=base64.decodestring(ira.db_datas)
out = base64.decodestring(ira.db_datas)
else:
out=''
out = ''
return out
elif boo.type == 'realstore':
# fpath = os.path.join(boo.path,
@@ -168,23 +169,23 @@ class document_storage(osv.osv):
else:
raise TypeError("No %s storage" % boo.type)
def set_data(self, cr,uid, id, file_node, data, context = None, fil_obj = None):
def set_data(self, cr, uid, id, file_node, data, context=None, fil_obj=None):
""" store the data.
This function MUST be used from an ir.attachment. It wouldn't make sense
to store things persistently for other types (dynamic).
"""
if not context:
context = {}
boo = self.browse(cr,uid,id,context)
boo = self.browse(cr, uid, id, context)
logger = netsvc.Logger()
if fil_obj:
ira = fil_obj
else:
ira = self.pool.get('ir.attachment').browse(cr,uid, file_node.file_id, context=context)
ira = self.pool.get('ir.attachment').browse(cr, uid, file_node.file_id, context=context)
if not boo.online:
raise RuntimeError('media offline')
logger.notifyChannel('document',netsvc.LOG_DEBUG,"Store data for ir.attachment #%d" %ira.id)
logger.notifyChannel('document', netsvc.LOG_DEBUG, "Store data for ir.attachment #%d" % ira.id)
store_fname = None
fname = None
if boo.type == 'filestore':
@@ -192,32 +193,32 @@ class document_storage(osv.osv):
try:
flag = None
# This can be improved
if os.path.isdir(path):
if os.path.isdir(path):
for dirs in os.listdir(path):
if os.path.isdir(os.path.join(path,dirs)) and len(os.listdir(os.path.join(path,dirs)))<4000:
if os.path.isdir(os.path.join(path, dirs)) and len(os.listdir(os.path.join(path, dirs))) < 4000:
flag = dirs
break
flag = flag or create_directory(path)
filename = random_name()
fname = os.path.join(path, flag, filename)
fp = file(fname,'wb')
fp = file(fname, 'wb')
fp.write(data)
fp.close()
logger.notifyChannel('document',netsvc.LOG_DEBUG,"Saved data to %s" % fname)
logger.notifyChannel('document', netsvc.LOG_DEBUG, "Saved data to %s" % fname)
filesize = len(data) # os.stat(fname).st_size
store_fname = os.path.join(flag,filename)
store_fname = os.path.join(flag, filename)
# TODO Here, an old file would be left hanging.
except Exception,e :
netsvc.Logger().notifyChannel('document',netsvc.LOG_WARNING,"Couldn't save data: %s" %str(e))
except Exception, e :
netsvc.Logger().notifyChannel('document', netsvc.LOG_WARNING, "Couldn't save data: %s" % str(e))
raise except_orm(_('Error!'), str(e))
elif boo.type == 'db':
filesize = len(data)
# will that work for huge data? TODO
out=base64.encodestring(data)
out = base64.encodestring(data)
cr.execute('UPDATE ir_attachment SET db_datas = %s WHERE id = %s',
( out, file_node.file_id ))
(out, file_node.file_id))
else:
raise TypeError("No %s storage" % boo.type)
@@ -226,9 +227,9 @@ class document_storage(osv.osv):
icont = ''
mime = ira.file_type
try:
mime,icont = cntIndex.doIndex(data, ira.datas_fname,
ira.file_type or None,fname)
except Exception,e:
mime, icont = cntIndex.doIndex(data, ira.datas_fname,
ira.file_type or None, fname)
except Exception, e:
logger.notifyChannel('document', netsvc.LOG_DEBUG, 'Cannot index file: %s' % str(e))
pass
@@ -236,46 +237,46 @@ class document_storage(osv.osv):
# to write the fname and size, and update them in the db concurrently.
# We cannot use a write() here, because we are already in one.
cr.execute('UPDATE ir_attachment SET store_fname = %s, file_size = %s, index_content = %s, file_type = %s WHERE id = %s',
(store_fname, filesize, ustr(icont), mime, file_node.file_id ))
(store_fname, filesize, ustr(icont), mime, file_node.file_id))
file_node.content_length = filesize
file_node.content_type = mime
return True
except Exception,e :
netsvc.Logger().notifyChannel('document',netsvc.LOG_WARNING,"Couldn't save data: %s" %str(e))
except Exception, e :
netsvc.Logger().notifyChannel('document', netsvc.LOG_WARNING, "Couldn't save data: %s" % str(e))
# should we really rollback once we have written the actual data?
# at the db case (only), that rollback would be safe
raise except_orm(_('Error at doc write!'), str(e))
def prepare_unlink(self,cr,uid,storage_bo, fil_bo):
def prepare_unlink(self, cr, uid, storage_bo, fil_bo):
""" Before we unlink a file (fil_boo), prepare the list of real
files that have to be removed, too. """
if not storage_bo.online:
raise RuntimeError('media offline')
if storage_bo.type == 'filestore':
fname = fil_bo.store_fname
if not fname:
return None
path = storage_bo.path
return ( storage_bo.id, 'file', os.path.join(path,fname))
return (storage_bo.id, 'file', os.path.join(path, fname))
elif storage_bo.type == 'db':
return None
else:
raise TypeError("No %s storage" % boo.type)
def do_unlink(self, cr,uid,unres):
def do_unlink(self, cr, uid, unres):
for id, ktype, fname in unres:
if ktype == 'file':
try:
os.unlink(fname)
except Exception,e:
netsvc.Logger().notifyChannel('document',netsvc.LOG_WARNING,"Could not remove file %s, please remove manually." % fname)
except Exception, e:
netsvc.Logger().notifyChannel('document', netsvc.LOG_WARNING, "Could not remove file %s, please remove manually." % fname)
else:
netsvc.Logger().notifyChannel('document',netsvc.LOG_WARNING,"Unknown unlink key %s" % ktype)
netsvc.Logger().notifyChannel('document', netsvc.LOG_WARNING, "Unknown unlink key %s" % ktype)
return True
document_storage()
+14 -9
View File
@@ -24,11 +24,15 @@ import ftpserver
import authorizer
import abstracted_fs
import netsvc
from tools import config
from tools.misc import detect_ip_addr
HOST = ''
PORT = 8021
if detect_ip_addr:
HOST = config.get('ftp_server_host', detect_ip_addr())
else:
HOST = config.get('ftp_server_host', '127.0.0.1')
PORT = int(config.get('ftp_server_port', '8021'))
PASSIVE_PORTS = None
pps = config.get('ftp_server_passive_ports', '').split(':')
if len(pps) == 2:
@@ -52,14 +56,15 @@ class ftp_server(threading.Thread):
ftpserver.logline = lambda msg: None
ftpserver.logerror = lambda msg: self.log(netsvc.LOG_ERROR, msg)
HOST = config.get('ftp_server_address', detect_ip_addr())
PORT = int(config.get('ftp_server_port', '8021'))
address = (HOST, PORT)
ftpd = ftpserver.FTPServer(address, ftpserver.FTPHandler)
ftpd = ftpserver.FTPServer((HOST, PORT), ftpserver.FTPHandler)
ftpd.serve_forever()
ds = ftp_server()
ds.start()
if HOST.lower() == 'none':
netsvc.Logger().notifyChannel("FTP", netsvc.LOG_INFO, "\n Server FTP Not Started\n")
else:
netsvc.Logger().notifyChannel("FTP", netsvc.LOG_INFO, "\n Serving FTP on %s:%s\n" % (HOST, PORT))
ds = ftp_server()
ds.start()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+13 -13
View File
@@ -7,65 +7,65 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-09 13:36+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2010-02-24 20:38+0000\n"
"Last-Translator: Bruno - www.zeekom.com <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: 2009-12-16 05:07+0000\n"
"X-Launchpad-Export-Date: 2010-02-25 04:50+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: event
#: field:event.event,date_end:0
#: field:report.event.registration,date_end:0
msgid "Ending date"
msgstr ""
msgstr "Date de Fin"
#. module: event
#: field:event.event,register_min:0
msgid "Minimum Registrations"
msgstr ""
msgstr "Inscriptions Minimum"
#. module: event
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr ""
msgstr "Nom de l'objet invalide dans l'action défini"
#. module: event
#: field:event.event,mail_registr:0
msgid "Registration Email"
msgstr ""
msgstr "Email d'inscription"
#. module: event
#: model:crm.case.section,name:event.event_0_crm_case_section
msgid "Concert of Bon Jovi"
msgstr ""
msgstr "Concert de Bon Jovi"
#. module: event
#: field:event.event,mail_confirm:0
msgid "Confirmation Email"
msgstr ""
msgstr "Confirmation par email"
#. module: event
#: constraint:crm.case.section:0
msgid "Error ! You cannot create recursive sections."
msgstr ""
msgstr "Erreur ! Vous ne pouvez pas créer de section récursive."
#. module: event
#: model:ir.model,name:event.model_event_registration
msgid "Event Registration"
msgstr ""
msgstr "Inscription de l'Évenement"
#. module: event
#: model:ir.actions.wizard,name:event.event_reg_invoice
msgid "Make Invoice"
msgstr ""
msgstr "Créer la facture"
#. module: event
#: field:report.event.type.registration,draft_state:0
msgid "Draft Registrations"
msgstr ""
msgstr "Inscriptions Brouillon"
#. module: event
#: view:report.event.registration:0
+4 -4
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-17 07:25+0000\n"
"Last-Translator: Kuvaly <kuvaly@seznam.cz>\n"
"PO-Revision-Date: 2010-02-26 21:05+0000\n"
"Last-Translator: Roman Horník <roman.hornik@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-12-16 05:03+0000\n"
"X-Launchpad-Export-Date: 2010-02-27 04:48+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: google_map
@@ -44,4 +44,4 @@ msgstr ""
#: view:res.partner:0
#: view:res.partner.address:0
msgid "Map"
msgstr "Mapka"
msgstr "Mapa"
+3 -3
View File
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
#
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
@@ -15,13 +15,13 @@
# 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/>.
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import hr_department
import hr
import installer
import hr_department
import report
import wizard
+32
View File
@@ -61,6 +61,33 @@ class hr_employee_marital_status(osv.osv):
}
hr_employee_marital_status()
class hr_job(osv.osv):
def _no_of_employee(self, cr, uid, ids, name,args,context=None):
res = {}
for emp in self.browse(cr, uid, ids):
res[emp.id] = len(emp.employee_ids or [])
return res
_name = "hr.job"
_description = "Job Description"
_columns = {
'name': fields.char('Job Name', size=128, required=True, select=True),
'expected_employees':fields.integer('Expected Employees'),
'no_of_employee': fields.function(_no_of_employee, method=True, string='No of Employees', type='integer'),
'employee_ids':fields.one2many('hr.employee', 'job_id','Employees'),
'description': fields.text('Job Description'),
'requirements':fields.text('Requirements'),
'department_id':fields.many2one('hr.department','Department'),
'company_id': fields.many2one('res.company', 'Company'),
'state': fields.selection([('open','Open'),('old','Old'),('recruit','In Recruitement')], 'State', required=True),
}
_defaults = {
'expected_employees': lambda *a: 1,
'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'hr.job', context=c),
'state': lambda *args: 'open'
}
hr_job()
class hr_employee(osv.osv):
_name = "hr.employee"
_description = "Employee"
@@ -87,6 +114,9 @@ class hr_employee(osv.osv):
'category_id' : fields.many2one('hr.employee.category', 'Category'),
'child_ids': fields.one2many('hr.employee', 'parent_id','Subordinates'),
'resource_id': fields.many2one('resource.resource','Resource',ondelete='cascade'),
'coach_id':fields.many2one('res.users','Coach'),
'job_id':fields.many2one('hr.job', 'Job'),
}
_defaults = {
'active' : lambda *a: True,
@@ -107,4 +137,6 @@ class hr_employee(osv.osv):
]
hr_employee()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+1
View File
@@ -10,6 +10,7 @@
<record id="employee1" model="hr.employee">
<field name="name">Fabien Pinckaers</field>
<field name="calendar_id" ref="timesheet_group1"/>
<!--<field name="regime">45</field>-->
<field name="user_id" ref="base.user_root"/>
<!--<field name="holiday_max">25</field>-->
+19 -1
View File
@@ -23,9 +23,27 @@ from osv import fields,osv
import tools
class hr_department(osv.osv):
def name_get(self, cr, uid, ids, context=None):
if not len(ids):
return []
reads = self.read(cr, uid, ids, ['name','parent_id'], context)
res = []
for record in reads:
name = record['name']
if record['parent_id']:
name = record['parent_id'][1]+' / '+name
res.append((record['id'], name))
return res
def _dept_name_get_fnc(self, cr, uid, ids, prop, unknow_none, context):
res = self.name_get(cr, uid, ids, context)
return dict(res)
_name = "hr.department"
_columns = {
'name': fields.char('Department Name', size=64, required=True),
'complete_name': fields.function(_dept_name_get_fnc, method=True, type="char", string='Name'),
'company_id': fields.many2one('res.company', 'Company', select=True, required=True),
'parent_id': fields.many2one('hr.department', 'Parent Department', select=True),
'child_ids': fields.one2many('hr.department', 'parent_id', 'Child Departments'),
@@ -145,7 +163,7 @@ class res_users(osv.osv):
_columns = {
'parent_id': fields.function(_parent_compute, relation='res.users',fnct_search=_parent_search, method=True, string="Managers", type='many2many'),
'child_ids': fields.function(_child_compute, relation='res.users', fnct_search=_child_search,method=True, string="Subordinates", type='many2many'),
'context_department_id': fields.many2one('hr.department', 'Departments'),
}
res_users()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+45 -2
View File
@@ -37,17 +37,31 @@
<field name="field_parent">child_ids</field>
<field name="arch" type="xml">
<tree string="Companies">
<field name="name"/>
<field name="complete_name"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="manager_id"/>
</tree>
</field>
</record>
<record id="view_department_filter" model="ir.ui.view">
<field name="name">Departments</field>
<field name="model">hr.department</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Departments">
<group col='4' colspan='2'>
<field name="name" />
<field name="manager_id" widget="selection"/>
</group>
</search>
</field>
</record>
<record id="open_module_tree_department_tree" model="ir.actions.act_window">
<field name="name">Departments</field>
<field name="res_model">hr.department</field>
<field name="view_type">tree</field>
<field name="domain">[('parent_id','=',False)]</field>
<field name="search_view_id" ref="view_department_filter"/>
</record>
<menuitem action="open_module_tree_department_tree" id="menu_department_tree" parent="base.menu_users"/>
@@ -55,10 +69,39 @@
<field name="name">Departments</field>
<field name="res_model">hr.department</field>
<field name="view_type">form</field>
<field name="search_view_id" ref="view_department_filter"/>
</record>
<menuitem action="open_module_tree_department" id="menu_department_def" parent="hr.menu_department_tree"/>
<menuitem action="open_module_tree_department" id="menu_hr_department_tree" parent="menu_hr_human_resources"/>
</data>
<record model="ir.ui.view" id="view_users_form_inherit">
<field name="name">res.users.form</field>
<field name="type">form</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="arch" type="xml">
<notebook position="inside">
<page string="Departements Informations">
<field name="context_department_id" completion="1" widget="selection" string="Department"/>
<separator string="Managers" colspan="4"/>
<field name="parent_id" nolabel="1" colspan="4"/>
<separator string="Subordinates" colspan="4"/>
<field name="child_ids" nolabel="1" colspan="4"/>
</page>
</notebook>
</field>
</record>
<record model="ir.ui.view" id="view_department_form_simple_modif_inherited1">
<field name="name">view.department.form.hr.inherited1</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form_simple_modif" />
<field name="type">form</field>
<field name="arch" type="xml">
<page string="Current Activity" position="inside">
<field name="context_department_id" widget="selection" />
</page>
</field>
</record>
</data>
</openerp>
+1 -1
View File
@@ -22,7 +22,7 @@
<separator string="Human Resources Management" colspan="4"/>
<field name="hr_holidays"/>
<field name="hr_expense"/>
<field name="crm_hr"/>
<field name="hr_recruitment"/>
<field name="hr_timesheet_sheet"/>
<field name="hr_contract"/>
<field name="hr_evaluation"/>
+117 -12
View File
@@ -62,11 +62,12 @@
<field name="work_location"/>
</group>
<group col="4" colspan="2">
<separator string="Job Information" colspan="4"/>
<field name="parent_id" select="1" colspan="4"/>
<field name="category_id" colspan="4" widget="selection"/>
<group col="2" colspan="2">
<separator string="Position" colspan="2"/>
<field name="job_id" select="1"/>
<separator string="Managers" colspan="2"/>
<field name="parent_id" select="1"/>
<field name="coach_id" select="1"/>
</group>
</page>
<page string="Notes">
@@ -92,6 +93,21 @@
</tree>
</field>
</record>
<record id="view_employee_filter" model="ir.ui.view">
<field name="name">Employees</field>
<field name="model">hr.employee</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Employees">
<group col='6' colspan='2'>
<field name="name"/>
<field name="parent_id" widget="selection">
<filter icon="terp-partner" domain="[('parent_id','child_of',uid)]" help="Employees under me"/>
</field>
</group>
</search>
</field>
</record>
<record id="open_view_employee_tree" model="ir.actions.act_window">
<field name="name">Employees Structure</field>
<field name="res_model">hr.employee</field>
@@ -99,6 +115,7 @@
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_employee_tree"/>
<field name="domain">[('parent_id','=',False)]</field>
<field name="search_view_id" ref="view_employee_filter"/>
</record>
<record id="open_view_employee_list" model="ir.actions.act_window">
@@ -107,6 +124,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" eval="False"/>
<field name="search_view_id" ref="view_employee_filter"/>
</record>
<!-- <menuitem
id="menu_open_view_employee_list"
@@ -125,13 +143,14 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[]</field>
<field name="search_view_id" ref="view_employee_filter"/>
</record>
<!--<menuitem
action="open_view_employee_list_my"
id="menu_open_view_employee_list_my"
parent="menu_open_view_employee_list"/>-->
<menuitem
name="Employees"
name="Employees"
action="open_view_employee_list_my"
id="menu_open_view_employee_list_my"
parent="menu_hr_human_resources"/>
@@ -160,11 +179,11 @@
<field name="view_mode">tree,form</field>
</record>
<menuitem
action="action_hr_marital_status"
id="hr_menu_marital_status"
<menuitem
action="action_hr_marital_status"
id="hr_menu_marital_status"
parent="hr.menu_view_employee_category_configuration_form" sequence="3"/>
<!--
=======================
Employee architecture
@@ -265,8 +284,8 @@
<field name="res_model">hr.employee</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('category_id','child_of',[active_id])]</field>
<field name="context">{'category_id':active_id}</field>
<!-- <field name="domain">[('category_id','child_of',[active_id])]</field>-->
<!-- <field name="context">{'category_id':active_id}</field>-->
</record>
<record id="hr_employee_category_open" model="ir.values">
@@ -279,5 +298,91 @@
<menuitem action="open_view_categ_tree" id="menu_view_employee_category_tree" parent="hr.menu_view_employee_category_form"/>
<record id="view_hr_job_form" model="ir.ui.view">
<field name="name">hr.job.form</field>
<field name="model">hr.job</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Job">
<group col="6" colspan="4">
<field name="name" select="1"/>
<field name="department_id" select="1"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
<field name="expected_employees"/>
<field name="no_of_employee"/>
</group>
<newline/>
<notebook colspan="4">
<page string="Description">
<separator colspan="4" string="Job Description"/>
<field name="description" colspan="4" nolabel="1"/>
<separator colspan="4" string="Requirements"/>
<field name="requirements" colspan="4" nolabel="1"/>
</page>
<page string="Employee">
<field name="employee_ids" colspan='4' nolabel="1" mode="tree,form"/>
</page>
</notebook>
<field name="state"/>
</form>
</field>
</record>
<record id="view_hr_job_tree" model="ir.ui.view">
<field name="name">hr.job.tree</field>
<field name="model">hr.job</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Job">
<field name="name" select="1"/>
<field name="department_id" />
<field name="expected_employees"/>
<field name="no_of_employee"/>
<field name="state"/>
</tree>
</field>
</record>
<record id="view_job_filter" model="ir.ui.view">
<field name="name">Job</field>
<field name="model">hr.job</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Jobs">
<filter icon="terp-crm"
domain="[('state','in',('open','recruit'))]"
string="Current"
help="Open and in recruitment positions"/>
<filter icon="terp-crm"
domain="[('state','=','recruit')]"
string="Recruitment"
help="In Recruitment"/>
<filter icon="terp-crm"
domain="[('state','=','open')]"
string="Open"
help="Open Positions"/>
<separator orientation="vertical"/>
<field name="name"/>
<field name="department_id" widget="selection">
<filter icon="terp-crm"
domain="[('department_id','=',context.get('department_id',False))]"
help="My Departments Jobs"/>
</field>
</search>
</field>
</record>
<record model="ir.actions.act_window" id="action_hr_job">
<field name="name">Job Positions</field>
<field name="res_model">hr.job</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem icon="terp-hr" id="base.menu_hr" name="Human Resources"/>
<menuitem
name="Recruitment"
id="base.menu_crm_case_job_req_main"
parent="base.menu_hr"/>
<menuitem parent="base.menu_crm_case_job_req_main" id="menu_hr_job" action="action_hr_job" sequence="2"/>
</data>
</openerp>
+1 -1
View File
@@ -35,7 +35,7 @@ class hr_installer(osv.osv_memory):
help="Tracks and manages employee expenses, and can "
"automatically re-invoice clients if the expenses are "
"project-related."),
'crm_hr':fields.boolean('Recruitment Process',
'hr_recruitment':fields.boolean('Recruitment Process',
help="Helps you manage and streamline your recruitment process."),
'hr_timesheet_sheet':fields.boolean('Timesheets',
help="Tracks and helps employees encode and validate timesheets "
+1 -1
View File
@@ -97,7 +97,7 @@
<field name="type">form</field>
<field name="inherit_id" ref="hr.view_employee_form"/>
<field name="arch" type="xml">
<field name="parent_id" position="after">
<field name="coach_id" position="after">
<field name="state"/>
<button name="attendance_action_change" states="absent" string="Sign In" type="object" icon="gtk-go-back" context="{'type':'sign_in'}"/>
<button name="attendance_action_change" states="present" string="Sign Out" type="object" icon="gtk-go-forward" context="{'type':'sign_out'}"/>
+1 -1
View File
@@ -25,7 +25,7 @@
"author" : "Tiny",
"category" : "Generic Modules/Human Resources",
"website" : "http://www.openerp.com",
"depends" : ["hr",'crm_hr','survey'],
"depends" : ["hr",'hr_recruitment','survey'],
"description": "Ability to create employees evaluation.",
"init_xml" : [],
"demo_xml" : ["hr_evaluation_demo.xml"],
File diff suppressed because it is too large Load Diff
+279
View File
@@ -0,0 +1,279 @@
# German translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-11-25 12:18+0000\n"
"PO-Revision-Date: 2010-02-28 08:59+0000\n"
"Last-Translator: Ferdinand @ ChriCar <Unknown>\n"
"Language-Team: German <de@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: 2010-03-01 05:01+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: hr_evaluation
#: view:hr_evaluation.type:0
#: field:hr_evaluation.type,info:0
msgid "Information"
msgstr "Information"
#. module: hr_evaluation
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
"Der Objekt Name muss mit einem x_ starten und darf keine Sonderzeichen "
"beinhalten"
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Schedule next evaluation"
msgstr "Nächste Evaluierung festlegen"
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
#: field:hr_evaluation.evaluation,info_bad:0
msgid "Bad Points"
msgstr "Schlechte Punkte"
#. module: hr_evaluation
#: model:ir.actions.act_window,name:hr_evaluation.open_view_employee_evaluation_next_my_list
msgid "My Next Evaluation"
msgstr "Meine nächste Evaluierung"
#. module: hr_evaluation
#: field:hr_evaluation.type,value_ids:0
msgid "Values"
msgstr "Werte"
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
#: field:hr_evaluation.evaluation,info_good:0
msgid "Good Points"
msgstr "Gute Punkte"
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,state:0
msgid "State"
msgstr "Status"
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,score:0
#: field:hr_evaluation.quote,score:0
#: field:hr_evaluation.type,score:0
#: field:hr_evaluation.type.value,score:0
msgid "Score"
msgstr "Bewertung"
#. module: hr_evaluation
#: selection:hr_evaluation.evaluation,state:0
msgid "Draft"
msgstr "Entwurf"
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Informal Data"
msgstr "Informelle Daten"
#. module: hr_evaluation
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr "Ungültiger Modellname in der Aktionsdefinition."
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,employee_id:0
msgid "Employee"
msgstr "Mitarbeiter"
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
#: field:hr_evaluation.evaluation,info_improve:0
msgid "To Improve"
msgstr "Zu verbessern"
#. module: hr_evaluation
#: field:hr_evaluation.quote,evaluation_id:0
msgid "Evaluation"
msgstr "Bewertung"
#. module: hr_evaluation
#: field:hr_evaluation.type.value,type_id:0
msgid "Evaluation Type"
msgstr "Bewertungstyp"
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Status"
msgstr "Status"
#. module: hr_evaluation
#: view:hr_evaluation.type:0
msgid "Apply to categories"
msgstr "Auf Kategorien anwenden"
#. module: hr_evaluation
#: model:ir.module.module,description:hr_evaluation.module_meta_information
msgid "Ability to create employees evaluation."
msgstr "Fähigkeit Mitarbeiter zu bewerten"
#. module: hr_evaluation
#: field:hr_evaluation.quote,name:0
msgid "Quote"
msgstr "Quote"
#. module: hr_evaluation
#: field:hr_evaluation.type,category_ids:0
msgid "Appliable Role"
msgstr "Anzuwendende Rolle"
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,user_id:0
msgid "Evaluation User"
msgstr "Bewertung Mitarbeiter"
#. module: hr_evaluation
#: view:hr_evaluation.type:0
msgid "Choices Results"
msgstr "Auswahl Resultat"
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,date:0
msgid "Date"
msgstr "Datum"
#. module: hr_evaluation
#: model:ir.ui.menu,name:hr_evaluation.menu_eval_hr
#: model:ir.ui.menu,name:hr_evaluation.menu_open_view_employee_evaluation_form
msgid "Evaluations"
msgstr "Bewertungen"
#. module: hr_evaluation
#: model:ir.ui.menu,name:hr_evaluation.menu_eval_config
msgid "Configuration"
msgstr "Einstellungen"
#. module: hr_evaluation
#: model:ir.ui.menu,name:hr_evaluation.menu_open_view_employee_evaluation_next_list
msgid "Next Evaluations"
msgstr "Nächste Bewertung"
#. module: hr_evaluation
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Fehlerhafter xml Code für diese Ansicht!"
#. module: hr_evaluation
#: model:ir.ui.menu,name:hr_evaluation.menu_open_view_evaluation_type_form
msgid "Evaluation Criterions"
msgstr "Bewertungskriterien"
#. module: hr_evaluation
#: model:ir.ui.menu,name:hr_evaluation.menu_open_view_employee_my_old_evaluation_list
msgid "My Preceeding Evaluations"
msgstr "Meine vorangegangenen Bewertungen"
#. module: hr_evaluation
#: model:ir.ui.menu,name:hr_evaluation.menu_resp_hr
msgid "HR Responsible"
msgstr "Personal Verantwortlicher"
#. module: hr_evaluation
#: field:hr_evaluation.quote,value_id:0
#: field:hr_evaluation.type.value,name:0
msgid "Value"
msgstr "Wert"
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,name:0
msgid "Summary"
msgstr "Zusammenfassung"
#. module: hr_evaluation
#: field:hr_evaluation.type,active:0
msgid "Active"
msgstr "Aktiv"
#. module: hr_evaluation
#: view:hr_evaluation.type:0
msgid "Notes"
msgstr "Anmerkungen"
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
#: model:ir.model,name:hr_evaluation.model_hr_evaluation_evaluation
msgid "Employee Evaluation"
msgstr "Mitarbeiter Bewertung"
#. module: hr_evaluation
#: model:ir.model,name:hr_evaluation.model_hr_evaluation_type
msgid "Employee Evaluation Type"
msgstr "Mitarbeiter Bewertungstyp"
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Quotations"
msgstr "Anführungen"
#. module: hr_evaluation
#: model:ir.actions.act_window,name:hr_evaluation.open_view_employee_evaluation_next_list
msgid "Next Employee Evaluation"
msgstr "Nächste Mitarbeiter Bewertung"
#. module: hr_evaluation
#: field:hr_evaluation.quote,type_id:0
msgid "Type"
msgstr "Typ"
#. module: hr_evaluation
#: view:hr_evaluation.type:0
#: field:hr_evaluation.type,name:0
msgid "Evaluation Criterion"
msgstr "Bewertungskriterien"
#. module: hr_evaluation
#: model:ir.ui.menu,name:hr_evaluation.menu_open_view_employee_evaluation_next_my_list
msgid "My Next Evaluations"
msgstr "Meine Nächste Bewertung"
#. module: hr_evaluation
#: view:hr_evaluation.quote:0
msgid "Evalution Quote"
msgstr "Bewertungs Quote"
#. module: hr_evaluation
#: model:ir.module.module,shortdesc:hr_evaluation.module_meta_information
msgid "Human Resources Evaluation"
msgstr "Personal Bewertung"
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,quote_ids:0
msgid "Quotes"
msgstr "Anführung"
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
#: selection:hr_evaluation.evaluation,state:0
msgid "Done"
msgstr "Erledigt"
#. module: hr_evaluation
#: model:ir.model,name:hr_evaluation.model_hr_evaluation_quote
msgid "Employee Evaluation Quote"
msgstr "Mitarbeiter Bewertungsquote"
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
#: field:hr_evaluation.evaluation,info_employee:0
msgid "Employee Response"
msgstr "MItarbeiter Antwort"
#. module: hr_evaluation
#: model:ir.model,name:hr_evaluation.model_hr_evaluation_type_value
msgid "Evaluation Type Value"
msgstr "Bewertungstyp Wert"
+6 -4
View File
@@ -68,7 +68,8 @@ class hr_expense_expense(osv.osv):
'amount': fields.function(_amount, method=True, string='Total Amount'),
'invoice_id': fields.many2one('account.invoice', 'Invoice'),
'currency_id': fields.many2one('res.currency', 'Currency', required=True),
'department_id':fields.many2one('hr.department','Department'),
'company_id': fields.many2one('res.company', 'Company', required=True),
'state': fields.selection([
('draft', 'Draft'),
('confirm', 'Waiting confirmation'),
@@ -85,6 +86,7 @@ class hr_expense_expense(osv.osv):
'employee_id' : _employee_get,
'user_id' : lambda cr,uid,id,c={}: id,
'currency_id': _get_currency,
'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id,
}
def expense_confirm(self, cr, uid, ids, *args):
#for exp in self.browse(cr, uid, ids):
@@ -175,7 +177,7 @@ class product_product(osv.osv):
_inherit = "product.product"
_columns = {
'hr_expense_ok': fields.boolean('Can be Expensed', help="Determines if the product can be visible in the list of product within a selection from an HR expense sheet line."),
'hr_expense_ok': fields.boolean('Can constitute an Expense', help="Determines if the product can be visible in the list of product within a selection from an HR expense sheet line."),
}
product_product()
@@ -215,12 +217,12 @@ class hr_expense_line(osv.osv):
if product_id:
product=self.pool.get('product.product').browse(cr,uid,product_id, context=context)
v['name']=product.name
# Compute based on pricetype of employee company
pricetype_id = self.pool.get('hr.employee').browse(cr,uid,employee_id).user_id.company_id.property_valuation_price_type.id
pricetype=self.pool.get('product.price.type').browse(cr,uid,pricetype_id)
amount_unit=product.price_get(pricetype.field, context)[product.id]
v['unit_amount']=amount_unit
if not uom_id:
v['uom_id']=product.uom_id.id
+14 -1
View File
@@ -29,10 +29,13 @@
<tree string="Expenses">
<field name="date"/>
<field name="employee_id"/>
<field name="department_id"/>
<field name="name"/>
<field name="ref"/>
<field name="amount"/>
<field name="state"/>
<button name="confirm" states="draft" string="Confirm" type="workflow" icon="gtk-apply"/>
<button name="refuse" states="confirm,draft,accepted" string="Refuse" type="workflow" icon="gtk-no"/>
</tree>
</field>
</record>
@@ -45,10 +48,13 @@
<tree string="Expenses" editable="top">
<field name="date"/>
<field name="employee_id"/>
<field name="department_id"/>
<field name="name"/>
<field name="ref"/>
<field name="amount"/>
<field name="state"/>
<button name="confirm" states="draft" string="Confirm" type="workflow" icon="gtk-apply"/>
<button name="refuse" states="confirm,draft,accepted" string="Refuse" type="workflow" icon="gtk-no"/>
</tree>
</field>
</record>
@@ -66,6 +72,8 @@
<field name="date" select="1"/>
<field name="amount"/>
<field name="currency_id"/>
<field name="department_id"/>
<field name="company_id"/>
</group>
<notebook colspan="4">
<page string="Expense Sheet">
@@ -92,7 +100,7 @@
<button name="cancel" states="cancel" string="Cancel" type="workflow" icon="gtk-cancel"/>
<button name="validate" states="confirm" string="Accept" type="workflow" icon="gtk-ok"/>
<button name="invoice" states="accepted" string="Invoice" type="workflow" icon="gtk-print"/>
<button name="draft" states="confirm" string="Set to Draft" type="workflow" icon="gtk-convert"/>
<button name="draft" states="confirm,cancelled" string="Set to Draft" type="workflow" icon="gtk-convert"/>
<button name="refuse" states="confirm,draft,accepted" string="Refuse" type="workflow" icon="gtk-no"/>
</group>
</page>
@@ -145,6 +153,11 @@
domain="[('user_id','=',uid)]"/>
</field>
<field name="state" select="1"/>
<field name="department_id" widget="selection">
<filter icon="terp-crm"
domain="[('department_id','=',context.get('department_id',False))]"
help="Expenses of My Department"/>
</field>
</group>
</search>
</field>
+15 -10
View File
@@ -1,25 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- Roles definition -->
<record id="HR" model="res.roles">
<field name="name">Human Resources - Expenses</field>
</record>
<record id="HR_INV" model="res.roles">
<field name="name">Human Resources - Expenses invoice</field>
</record>
<!-- Workflow definition -->
<record id="wkf_expenses" model="workflow">
<field name="name">hr.wkf.expenses</field>
<field name="osv">hr.expense.expense</field>
<field name="on_create">True</field>
</record>
<record id="act_draft" model="workflow.activity">
<field name="wkf_id" ref="wkf_expenses"/>
<field name="name">draft</field>
@@ -51,7 +51,7 @@
<field name="name">refused</field>
<field name="kind">function</field>
<field name="action">expense_canceled()</field>
<field name="flow_stop">True</field>
<!-- <field name="flow_stop">True</field>-->
</record>
<record id="act_invoice" model="workflow.activity">
<field name="wkf_id" ref="wkf_expenses"/>
@@ -60,7 +60,7 @@
<field name="subflow_id" ref="account.wkf"/>
<field name="action">action_invoice_create()</field>
</record>
<record id="t1" model="workflow.transition">
<field name="act_from" ref="act_draft"/>
<field name="act_to" ref="act_confirm"/>
@@ -89,7 +89,7 @@
<field name="act_to" ref="act_refused"/>
<field name="signal">refuse</field>
</record>
<record id="t6" model="workflow.transition">
<field name="act_from" ref="act_accepted"/>
<field name="act_to" ref="act_refused"/>
@@ -118,6 +118,11 @@
<field name="act_to" ref="act_refused"/>
<field name="signal">subflow.cancel</field>
</record>
<record id="t11" model="workflow.transition">
<field name="act_from" ref="act_refused"/>
<field name="act_to" ref="act_draft"/>
<field name="signal">draft</field>
<field name="role_id" ref="HR"/>
</record>
</data>
</openerp>
+4 -4
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-02-15 01:57+0000\n"
"Last-Translator: thunk <thunk77@gmail.com>\n"
"PO-Revision-Date: 2010-02-21 16:01+0000\n"
"Last-Translator: Μάριος Ζηντίλης <m.zindilis@dmajor.org>\n"
"Language-Team: nls@hellug.gr <nls@hellug.gr>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-02-17 04:56+0000\n"
"X-Launchpad-Export-Date: 2010-02-25 04:51+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
"X-Poedit-Country: GREECE\n"
"X-Poedit-Language: Greek\n"
@@ -312,7 +312,7 @@ msgstr "Χρήστης"
#: field:hr.expense.expense,date:0
#: field:hr.expense.line,date_value:0
msgid "Date"
msgstr "Ηεμρ/νία"
msgstr "Ημερ/νία"
#. module: hr_expense
#: rml:hr.expense:0
+17 -12
View File
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
##################################################################################
#
# Copyright (c) 2005-2006 Axelor SARL. (http://www.axelor.com)
# Copyright (c) 2005-2006 Axelor SARL. (http://www.axelor.com)
# and 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# $Id: hr.py 4656 2006-11-24 09:58:42Z Cyp $
@@ -37,13 +37,17 @@ class hr_holidays_status(osv.osv):
for record in self.browse(cr, uid, ids, context):
res[record.id] = {}
max_leaves = leaves_taken = 0
obj_ids = self.pool.get('hr.holidays.per.user').search(cr, uid, [('user_id','=',uid),('employee_id','=',employee_id),('holiday_status','=',record.id)])
if obj_ids:
br_ob=self.pool.get('hr.holidays.per.user').browse(cr, uid, obj_ids)[0]
max_leaves=br_ob.max_leaves
if not return_false:
cr.execute("""SELECT type, sum(number_of_days) FROM hr_holidays WHERE employee_id = %s AND state='validate' AND holiday_status_id = %s GROUP BY type""", (str(employee_id), str(record.id)))
for line in cr.fetchall():
if line[0] =='remove':
leaves_taken = -line[1]
leaves_taken = -line[1]
if line[0] =='add':
max_leaves = line[1]
max_leaves = line[1]
res[record.id]['max_leaves'] = max_leaves
res[record.id]['leaves_taken'] = leaves_taken
res[record.id]['remaining_leaves'] = max_leaves - leaves_taken
@@ -92,11 +96,11 @@ class hr_holidays_per_user(osv.osv):
result = {}
for holiday_user in self.browse(cr, uid, ids):
days = 0.0
ids_request = obj_holiday.search(cr, uid, [('employee_id', '=', holiday_user.employee_id.id),('state', '=', 'validate'),('holiday_status', '=', holiday_user.holiday_status.id)])
ids_request = obj_holiday.search(cr, uid, [('employee_id', '=', holiday_user.employee_id.id),('state', '=', 'validate'),('holiday_status_id', '=', holiday_user.holiday_status.id)])
if ids_request:
holidays = obj_holiday.browse(cr, uid, ids_request)
for holiday in holidays:
days += holiday.number_of_days
days -= holiday.number_of_days
days = holiday_user.max_leaves - days
result[holiday_user.id] = days
return result
@@ -153,7 +157,8 @@ class hr_holidays(osv.osv):
'allocation_type': fields.selection([('employee','Employee Request'),('company','Company Allocation')], 'Allocation Type', required=True, readonly=True, states={'draft':[('readonly',False)]}, help='This field is only for informative purposes, to depict if the leave request/allocation comes from an employee or from the company'),
'parent_id': fields.many2one('hr.holidays', 'Parent'),
'linked_request_ids': fields.one2many('hr.holidays', 'parent_id', 'Linked Requests',),
'holiday_user_id' : fields.many2one('res.users', 'User'),
'holiday_user_id' : fields.many2one('hr.holidays.per.user', 'User'),
'department_id':fields.many2one('hr.department','Department'),
}
_defaults = {
@@ -183,7 +188,7 @@ class hr_holidays(osv.osv):
def _update_user_holidays(self, cr, uid, ids):
for record in self.browse(cr, uid, ids):
if record.state=='validate':
holiday_id=self.pool.get('hr.holidays.per.user').search(cr, uid, [('employee_id','=', record.employee_id.id),('holiday_status','=',record.holiday_status.id)])
holiday_id=self.pool.get('hr.holidays.per.user').search(cr, uid, [('employee_id','=', record.employee_id.id),('holiday_status','=',record.holiday_status_id.id)])
if holiday_id:
obj_holidays_per_user=self.pool.get('hr.holidays.per.user').browse(cr, uid,holiday_id[0])
self.pool.get('hr.holidays.per.user').write(cr,uid,obj_holidays_per_user.id,{'leaves_taken':obj_holidays_per_user.leaves_taken - record.number_of_days})
@@ -193,10 +198,10 @@ class hr_holidays(osv.osv):
_('You can not cancel this holiday request. first You have to make its case in draft state.'))
else:
self.pool.get('crm.case').unlink(cr,uid,[record.case_id.id])
def _check_date(self, cr, uid, ids):
if ids:
cr.execute('select number_of_days from hr_holidays where id in ('+','.join(map(str, ids))+')')
cr.execute('select number_of_days_temp from hr_holidays where id in ('+','.join(map(str, ids))+')')
res = cr.fetchall()
if res and res[0][0] < 0:
return False
@@ -208,7 +213,7 @@ class hr_holidays(osv.osv):
id_holiday = super(hr_holidays, self).create(cr, uid, vals, *args, **kwargs)
self._create_holiday(cr, uid, [id_holiday])
return id_holiday
def unlink(self, cr, uid, ids, context={}):
self._update_user_holidays(cr, uid, ids)
return super(hr_holidays, self).unlink(cr, uid, ids, context)
@@ -217,7 +222,7 @@ class hr_holidays(osv.osv):
holidays_user_obj = self.pool.get('hr.holidays.per.user')
holidays_data = self.browse(cr, uid, ids[0])
list_holiday = []
ids_user_hdays = holidays_user_obj.search(cr, uid, [('employee_id', '=', holidays_data.employee_id.id),('holiday_status', '=', holidays_data.holiday_status.id)])
ids_user_hdays = holidays_user_obj.search(cr, uid, [('employee_id', '=', holidays_data.employee_id.id),('holiday_status', '=', holidays_data.holiday_status_id.id)])
for hdays in holidays_user_obj.browse(cr, uid, ids_user_hdays):
for req in hdays.holiday_ids:
list_holiday.append(req.id)
@@ -303,7 +308,7 @@ class hr_holidays(osv.osv):
'company_id':record.employee_id.company_id.id,
'resource_id':record.employee_id.resource_id.id
}
self.pool.get('resource.calendar.leaves').create(cr,uid,vals)
#self.pool.get('resource.calendar.leaves').create(cr,uid,vals)
return True
+6 -1
View File
@@ -6,10 +6,15 @@
name="Reporting"
parent="hr.menu_hr_root"
sequence="40" />
<menuitem
id="menu_hr_reporting_holidays"
name="Holidays"
parent="hr.menu_hr_reporting"
sequence="3" />
<wizard string="Print Summary of Holidays"
name="hr.holidays.summary"
id="holidays_summary"/>
<menuitem name="Print Summary of Holidays" parent="hr.menu_hr_reporting"
<menuitem name="Print Summary of Holidays" parent="menu_hr_reporting_holidays"
action="holidays_summary"
type="wizard"
id="menu_holidays_summary" sequence="20"/>
+54 -10
View File
@@ -14,16 +14,22 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Leave">
<group col='6' colspan='4'>
<filter icon="gtk-execute" string="My Leaves" domain="[('user_id','=',uid)]" separator="1" help="Leaves Related to Current User"/>
<filter icon="gtk-execute" string="My Departments Leaves" domain="[('user_id','child_of',[uid])]" help="Leaves Related to Department"/>
<group col='8' colspan='4'>
<filter icon="terp-hr" domain="[('state','=','draft')]" string="To Confirm"/>
<filter icon="terp-hr" domain="[('state','=','confirm')]" string="To Validate"/>
<separator orientation="vertical"/>
<field name="name" select='1'/>
<field name="state" select="1">
<filter icon="terp-hr" domain="[('state','=','confirm')]" help="Confirmed Holidays"/>
<filter icon="terp-hr" domain="[('state','=','refuse')]" help="Refused Holidays"/>
<filter icon="terp-hr" domain="[('state','=','validate')]" help="Validated Holidays"/>
</field>
<field name="user_id" select="1" widget="selection">
<filter icon="gtk-execute" help="My Leaves" domain="[('user_id','=',uid)]" />
</field>
<field name="department_id" select="1" widget="selection">
<filter icon="gtk-execute" domain="[('department_id','=',context.get('department_id',False))]"
help="My Departments Leaves"/>
</field>
<field name="name" select='1'/>
<field name="user_id" select="1" widget="selection"/>
</group>
</search>
</field>
@@ -49,6 +55,7 @@
<field name="employee_id" select="1" required="1"/>
<field name="number_of_days_temp"/>
<field name="manager_id"/>
<field name="department_id"/>
<field name="notes" colspan="4"/>
<newline/>
<field name="state" select="1" colspan="2"/>
@@ -76,6 +83,7 @@
<field name="name" select="1"/>
<field name="holiday_status_id" select="1" />
<field name="employee_id" select="1" required="1"/>
<field name="department_id"/>
<field name="number_of_days_temp"/>
<notebook colspan="4">
<page string="General">
@@ -107,6 +115,7 @@
<field name="name" select="1"/>
<field name="holiday_status_id" select="1"/>
<field name="employee_id" select="1" />
<field name="department_id"/>
<field name="type"/>
<field name="date_from" select="1" on_change="onchange_date_from(date_to, date_from)" attrs="{'readonly':[('type','=','add')], 'required':[('type','=','remove')]}"/>
<field name="date_to" select="1" on_change="onchange_date_to(date_from, date_to)" attrs="{'readonly':[('type','=','add')], 'required':[('type','=','remove')]}"/>
@@ -138,27 +147,49 @@
<tree string="Leaves">
<field name="name"/>
<field name="employee_id"/>
<field name="department_id"/>
<field name="number_of_days" string="Number of Days" sum='Remaining Days'/>
<field name="date_from"/>
<field name="date_to"/>
<field name="holiday_status_id"/>
<field name="state"/>
<field name="type"/>
<!-- <field name="type"/>-->
</tree>
</field>
</record>
<!-- My leave dashboard -->
<record model="ir.ui.view" id="view_my_leave_board_tree">
<record model="ir.ui.view" id="view_my_leave_board_form">
<field name="name">hr.holidays.per.user.form</field>
<field name="model">hr.holidays.per.user</field>
<field name="type">tree</field>
<field name="type">form</field>
<field name="arch" type="xml">
<tree string="My Leaves" editable="top">
<form string="My Leaves" >
<field name="employee_id"/>
<field name="user_id"/>
<field name="holiday_status"/>
<field name="max_leaves"/>
<field name="leaves_taken" />
<field name="remaining_leaves"/>
<field name="notes" colspan="4"/>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_my_leave_board_tree">
<field name="name">hr.holidays.per.user.tree</field>
<field name="model">hr.holidays.per.user</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="My Leaves" editable="top">
<tree string="My Leaves" />
<field name="employee_id"/>
<field name="user_id"/>
<field name="holiday_status"/>
<field name="max_leaves"/>
<field name="leaves_taken" />
<field name="remaining_leaves"/>
<field name="notes"/>
</tree>
</field>
</record>
@@ -289,5 +320,18 @@
view_id ="eval('edit_holiday_new')"
id="act_hr_employee_holiday_request"/>
<record model="ir.actions.act_window" id="action_holiday_per_user">
<field name="name">Holiday Per User</field>
<field name="res_model">hr.holidays.per.user</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_my_leave_board_tree"/>
</record>
<menuitem name="Holiday Per User"
action="action_holiday_per_user"
id="menu_holiday_per_user"
parent="hr.menu_open_view_attendance_reason_config"/>
</data>
</openerp>
+43 -43
View File
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-12-29 09:47+0000\n"
"Last-Translator: NightSpirit <Unknown>\n"
"PO-Revision-Date: 2010-02-24 11:09+0000\n"
"Last-Translator: pmjt <Unknown>\n"
"Language-Team: Finnish <fi@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: 2009-12-30 04:47+0000\n"
"X-Launchpad-Export-Date: 2010-02-25 04:51+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: hr_holidays
@@ -30,7 +30,7 @@ msgstr "Kaikki loma-anomukset"
#. module: hr_holidays
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr ""
msgstr "Virheellinen mallin nimi toimenpiteen määrittelyssä."
#. module: hr_holidays
#: field:hr.holidays.per.user,remaining_leaves:0
@@ -45,12 +45,12 @@ msgstr "Tarkistusta odottavat anomukset"
#. module: hr_holidays
#: selection:hr.holidays.status,color_name:0
msgid "Light Blue"
msgstr ""
msgstr "Vaaleansininen"
#. module: hr_holidays
#: selection:hr.holidays.status,color_name:0
msgid "Brown"
msgstr ""
msgstr "Ruskea"
#. module: hr_holidays
#: xsl:holidays.summary:0
@@ -72,7 +72,7 @@ msgstr "Työntekijän lomat"
#. module: hr_holidays
#: view:hr.holidays:0
msgid "Set to Draft"
msgstr ""
msgstr "Aseta luonnokseksi"
#. module: hr_holidays
#: view:hr.holidays.per.user:0
@@ -80,7 +80,7 @@ msgstr ""
#: model:ir.model,name:hr_holidays.model_hr_holidays
#: model:process.node,name:hr_holidays.process_node_holidays0
msgid "Holidays"
msgstr ""
msgstr "Lomat"
#. module: hr_holidays
#: xsl:holidays.summary:0
@@ -95,7 +95,7 @@ msgstr ""
#. module: hr_holidays
#: selection:hr.holidays.status,color_name:0
msgid "Light Green"
msgstr ""
msgstr "Vaaleanvihreä"
#. module: hr_holidays
#: model:process.transition,name:hr_holidays.process_transition_employeedeclaration0
@@ -107,7 +107,7 @@ msgstr "Työntekijän ilmoitus"
#: selection:hr.holidays,state:0
#: model:process.transition.action,name:hr_holidays.process_transition_action_validate0
msgid "Validate"
msgstr ""
msgstr "Vahvista"
#. module: hr_holidays
#: model:process.transition,name:hr_holidays.process_transition_refusedrequest0
@@ -117,23 +117,23 @@ msgstr "Hylätty anomus"
#. module: hr_holidays
#: model:process.node,name:hr_holidays.process_node_approved0
msgid "Approved"
msgstr ""
msgstr "Hyväksytty"
#. module: hr_holidays
#: selection:hr.holidays.summary.employee,init,holiday_type:0
msgid "Both"
msgstr ""
msgstr "Molemmat"
#. module: hr_holidays
#: view:hr.holidays:0
msgid "Refuse"
msgstr ""
msgstr "Hylkää"
#. module: hr_holidays
#: wizard_button:hr.holidays.summary,notify,end:0
#: wizard_button:hr.holidays.summary.employee,notify,end:0
msgid "Ok"
msgstr ""
msgstr "Ok"
#. module: hr_holidays
#: model:ir.ui.menu,name:hr_holidays.menu_action_my_holiday
@@ -144,7 +144,7 @@ msgstr "Omat loma-anomukset"
#: field:hr.holidays,notes:0
#: field:hr.holidays.per.user,notes:0
msgid "Notes"
msgstr ""
msgstr "Huomautukset"
#. module: hr_holidays
#: field:hr.holidays,holiday_status:0
@@ -206,7 +206,7 @@ msgstr "Oikeudellisen lausuman ilmoitus uudelle työntekijälle"
#. module: hr_holidays
#: selection:hr.holidays.status,color_name:0
msgid "Magenta"
msgstr ""
msgstr "Purppura"
#. module: hr_holidays
#: model:ir.model,name:hr_holidays.model_hr_holidays_per_user
@@ -222,7 +222,7 @@ msgstr "Määritä lomastatus"
#: selection:hr.holidays.summary,init,holiday_type:0
#: selection:hr.holidays.summary.employee,init,holiday_type:0
msgid "Confirmed"
msgstr ""
msgstr "Vahvistettu"
#. module: hr_holidays
#: wizard_field:hr.holidays.summary,init,date_from:0
@@ -234,7 +234,7 @@ msgstr ""
#: view:hr.holidays:0
#: model:process.transition.action,name:hr_holidays.process_transition_action_confirm0
msgid "Confirm"
msgstr ""
msgstr "Vahvista"
#. module: hr_holidays
#: model:ir.actions.act_window,name:hr_holidays.action_my_holiday_waiting
@@ -257,7 +257,7 @@ msgstr "Käytettävissä olevien vuosilomien koodit"
#: field:hr.holidays.log,employee_id:0
#: field:hr.holidays.per.user,employee_id:0
msgid "Employee"
msgstr ""
msgstr "Työntekijä"
#. module: hr_holidays
#: selection:hr.holidays,state:0
@@ -293,7 +293,7 @@ msgstr "Omat loma-anomukset"
#: view:hr.holidays:0
#: view:hr.holidays.per.user:0
msgid "Number of Days"
msgstr ""
msgstr "Päivien lukumäärä"
#. module: hr_holidays
#: field:hr.holidays.status,name:0
@@ -306,12 +306,12 @@ msgstr "Loma status"
#: wizard_view:hr.holidays.summary,init:0
#: wizard_view:hr.holidays.summary.employee,init:0
msgid "Report Options"
msgstr ""
msgstr "Raporttiasetukset"
#. module: hr_holidays
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
msgstr "Virheellinen XML näkymä-arkkitehtuurille!"
#. module: hr_holidays
#: model:process.node,note:hr_holidays.process_node_approved0
@@ -378,7 +378,7 @@ msgstr "Tulosta työntekijöiden lomien yhteenveto"
#. module: hr_holidays
#: model:process.node,name:hr_holidays.process_node_calendar0
msgid "Calendar"
msgstr ""
msgstr "Kalenteri"
#. module: hr_holidays
#: field:hr.holidays,date_from:0
@@ -456,7 +456,7 @@ msgstr ""
#: wizard_view:hr.holidays.summary,notify:0
#: wizard_view:hr.holidays.summary.employee,notify:0
msgid "Notification"
msgstr ""
msgstr "Huomautus"
#. module: hr_holidays
#: model:process.node,note:hr_holidays.process_node_holidaysrequest0
@@ -482,7 +482,7 @@ msgstr "Omat käytettävissä olevat lomat"
#. module: hr_holidays
#: selection:hr.holidays.status,color_name:0
msgid "Black"
msgstr ""
msgstr "Musta"
#. module: hr_holidays
#: model:ir.ui.menu,name:hr_holidays.menu_action_my_holiday_refuse
@@ -507,12 +507,12 @@ msgstr "Sallittujen lomapäivien enimmäismäärä"
#. module: hr_holidays
#: field:hr.holidays,state:0
msgid "Status"
msgstr ""
msgstr "Tila"
#. module: hr_holidays
#: selection:hr.holidays.status,color_name:0
msgid "Ivory"
msgstr ""
msgstr "Norsunluu"
#. module: hr_holidays
#: model:ir.actions.act_window,name:hr_holidays.action_my_holiday
@@ -542,12 +542,12 @@ msgstr "lomapäivät."
#. module: hr_holidays
#: selection:hr.holidays,state:0
msgid "draft"
msgstr ""
msgstr "luonnos"
#. module: hr_holidays
#: field:hr.holidays.per.user,user_id:0
msgid "User"
msgstr ""
msgstr "Käyttäjä"
#. module: hr_holidays
#: model:process.transition,note:hr_holidays.process_transition_employeedeclaration0
@@ -557,7 +557,7 @@ msgstr "Asiakirja työntekijälle"
#. module: hr_holidays
#: field:hr.holidays.log,date:0
msgid "Date"
msgstr ""
msgstr "Päivämäärä"
#. module: hr_holidays
#: model:process.transition.action,name:hr_holidays.process_transition_action_reufse0
@@ -567,7 +567,7 @@ msgstr "Hylkää"
#. module: hr_holidays
#: field:hr.holidays.status,section_id:0
msgid "Section"
msgstr ""
msgstr "Alue"
#. module: hr_holidays
#: field:hr.holidays,manager_id:0
@@ -578,7 +578,7 @@ msgstr "Lomahallinta"
#: field:hr.holidays.per.user,active:0
#: field:hr.holidays.status,active:0
msgid "Active"
msgstr ""
msgstr "Aktiivinen"
#. module: hr_holidays
#: model:ir.actions.act_window,name:hr_holidays.action_my_holiday_draft
@@ -603,12 +603,12 @@ msgstr "Tarkistusta odottavat loma-anomukset"
#. module: hr_holidays
#: view:hr.holidays:0
msgid "General"
msgstr ""
msgstr "Yleiset"
#. module: hr_holidays
#: view:hr.holidays.per.user:0
msgid "General Information"
msgstr ""
msgstr "Yleiset Tiedot"
#. module: hr_holidays
#: view:hr.holidays:0
@@ -616,7 +616,7 @@ msgstr ""
#: wizard_button:hr.holidays.summary,init,end:0
#: wizard_button:hr.holidays.summary.employee,init,end:0
msgid "Cancel"
msgstr ""
msgstr "Peruuta"
#. module: hr_holidays
#: model:process.transition,name:hr_holidays.process_transition_holidaysdefrequest0
@@ -627,7 +627,7 @@ msgstr ""
#: selection:hr.holidays.summary,init,holiday_type:0
#: selection:hr.holidays.summary.employee,init,holiday_type:0
msgid "Validated"
msgstr ""
msgstr "Vahvistettu"
#. module: hr_holidays
#: model:ir.actions.act_window,name:hr_holidays.action_my_holiday_refuse
@@ -638,13 +638,13 @@ msgstr "Omat hylätyt loma-anomukset"
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
msgstr "Objektin nimen tulee alkaa x_ ja se ei saa sisältää erikoismerkkejä!"
#. module: hr_holidays
#: wizard_button:hr.holidays.summary,init,checkdept:0
#: wizard_button:hr.holidays.summary.employee,init,checkemp:0
msgid "Print"
msgstr ""
msgstr "Tulosta"
#. module: hr_holidays
#: model:ir.actions.wizard,name:hr_holidays.holidays_summary
@@ -660,13 +660,13 @@ msgstr "Osasto(t)"
#. module: hr_holidays
#: field:hr.holidays,name:0
msgid "Description"
msgstr ""
msgstr "Kuvaus"
#. module: hr_holidays
#: selection:hr.holidays,state:0
#: model:process.node,name:hr_holidays.process_node_refused0
msgid "Refused"
msgstr ""
msgstr "Hylätty"
#. module: hr_holidays
#: model:process.transition,note:hr_holidays.process_transition_approvedrequest0
@@ -687,7 +687,7 @@ msgstr "Valitse lomantyyppi"
#. module: hr_holidays
#: field:hr.holidays,case_id:0
msgid "Case"
msgstr ""
msgstr "Tapaus"
#. module: hr_holidays
#: field:hr.holidays,holiday_user_id:0
@@ -707,12 +707,12 @@ msgstr "Sosiaalinen sihteeristö"
#. module: hr_holidays
#: selection:hr.holidays.status,color_name:0
msgid "Violet"
msgstr ""
msgstr "Violetti"
#. module: hr_holidays
#: selection:hr.holidays.status,color_name:0
msgid "Red"
msgstr ""
msgstr "Punainen"
#. module: hr_holidays
#: model:ir.module.module,shortdesc:hr_holidays.module_meta_information
@@ -21,7 +21,7 @@
##############################################################################
import crm_hr
import hr_hr
import report
import wizard
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -20,31 +20,35 @@
#
##############################################################################
{
'name': 'CRM Stuff in Job ',
'name': 'HR - Recruitement',
'version': '1.0',
'category': 'Generic Modules/CRM & SRM',
'category': 'Generic Modules/HR',
'description': """
This module provide Store the Job
Manages job positions and the recruitement process. It's integrated with the
survey module to allows you to define interview for different jobs.
This module is integrated with the mail gateway to automatically tracks email
sent to jobs@YOURCOMPANY.com. It's also integrated with the document management
system to store and search in your CV base.
""",
'author': 'Tiny',
'website': 'http://www.openerp.com',
'depends': ['crm','hr','board_crm_configuration','survey'],
'depends': ['hr','survey','crm'],
'init_xml': [
'crm_hr_data.xml'
'hr_hr_data.xml'
],
'update_xml': [
'crm_hr_wizard.xml',
'crm_hr_view.xml',
'crm_hr_menu.xml',
'report_crm_hr_view.xml',
'security/crm_hr_security.xml',
'hr_hr_wizard.xml',
'hr_hr_view.xml',
'hr_hr_menu.xml',
'report_hr_hr_view.xml',
'security/hr_hr_security.xml',
'security/ir.model.access.csv',
'board_crm_hr_statistical_view.xml',
'board_hr_hr_statistical_view.xml',
],
'demo_xml': [
'crm_hr_demo.xml'
'hr_hr_demo.xml'
],
'installable': True,
'active': False,
@@ -0,0 +1,6 @@
<?xml version="1.0"?>
<openerp>
<data>
</data>
</openerp>
+62
View File
@@ -0,0 +1,62 @@
# -*- 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,orm
AVAILABLE_STATES = [
('draft','New'),
('open','In Progress'),
('cancel', 'Refused'),
('done', 'Hired'),
('pending','Pending')
]
AVAILABLE_PRIORITIES = [
('5','Not Good'),
('4','On Average'),
('3','Good'),
('2','Very Good'),
('1','Excellent')
]
class hr_applicant(osv.osv):
_name = "hr.applicant"
_description = "Applicant Cases"
_order = "id desc"
_inherit ='crm.case'
_columns = {
'date_closed': fields.datetime('Closed', readonly=True),
'date': fields.datetime('Date'),
'priority': fields.selection(AVAILABLE_PRIORITIES, 'Appreciation'),
'job_id': fields.many2one('hr.job', 'Applied Job'),
'salary_proposed': fields.float('Proposed Salary'),
'salary_expected': fields.float('Expected Salary'),
'availability': fields.integer('Availability (Days)'),
'partner_name': fields.char("Applicant's Name", size=64),
'partner_phone': fields.char('Phone', size=32),
'partner_mobile': fields.char('Mobile', size=32),
'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_id','=',section_id),('object_id.model', '=', 'hr.applicant')]"),
'type_id': fields.many2one('crm.case.resource.type', 'Degree', domain="[('section_id','=',section_id),('object_id.model', '=', 'hr.applicant')]"),
'department_id':fields.many2one('hr.department','Department'),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
}
hr_applicant()
+499
View File
@@ -0,0 +1,499 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!-- CASE CATEGORY(categ_id) -->
<record model="crm.case.categ" id="categ_job1">
<field name="name">Salesman</field>
<field name="object_id" search="[('model','=','hr.applicant')]" model="ir.model"/>
</record>
<record model="crm.case.categ" id="categ_job2">
<field name="name">Junior Developer</field>
<field name="object_id" search="[('model','=','hr.applicant')]" model="ir.model"/>
</record>
<!-- Resource(type_id) -->
<record model="crm.case.resource.type" id="type_job1">
<field name="name">Graduate</field>
<field name="object_id" search="[('model','=','hr.applicant')]" model="ir.model"/>
</record>
<record model="crm.case.resource.type" id="type_job2">
<field name="name">Licenced</field>
<field name="object_id" search="[('model','=','hr.applicant')]" model="ir.model"/>
</record>
<record model="crm.case.resource.type" id="type_job3">
<field name="name"> > Bac +5</field>
<field name="object_id" search="[('model','=','hr.applicant')]" model="ir.model"/>
</record>
<!-- STAGE(stage_id) -->
<record model="crm.case.stage" id="stage_job1">
<field name="name">Initial Jobs Demand</field>
<field name="object_id" search="[('model','=','hr.applicant')]" model="ir.model"/>
</record>
<record model="crm.case.stage" id="stage_job2">
<field name="name">First Interview</field>
<field name="object_id" search="[('model','=','hr.applicant')]" model="ir.model"/>
</record>
<record model="crm.case.stage" id="stage_job3">
<field name="name">Second Interview</field>
<field name="object_id" search="[('model','=','hr.applicant')]" model="ir.model"/>
</record>
<record model="crm.case.stage" id="stage_job4">
<field name="name">Contract Proposed</field>
<field name="object_id" search="[('model','=','hr.claim')]" model="ir.model"/>
</record>
<record model="crm.case.stage" id="stage_job5">
<field name="name">Contract Signed</field>
<field name="object_id" search="[('model','=','hr.applicant')]" model="ir.model"/>
</record>
<record model="crm.case.stage" id="stage_job6">
<field name="name">Refused by Employee</field>
<field name="object_id" search="[('model','=','hr.applicant')]" model="ir.model"/>
</record>
<record model="crm.case.stage" id="stage_job7">
<field name="name">Refused by Company</field>
<field name="object_id" search="[('model','=','hr.applicant')]" model="ir.model"/>
</record>
</data>
<data>
<record id="survey_job_0" model="survey">
<field name="title">Job Survey</field>
<field name="state">draft</field>
<field name="max_response_limit">20</field>
<field eval="[(6,0,[])]" name="users"/>
<field name="type" ref="survey.survey_type1"/>
<field name="responsible_id" ref="base.user_root"/>
</record>
</data>
<data>
<record id="survey_page_job_0" model="survey.page">
<field name="title">Default Section</field>
<field name="survey_id" ref="survey_job_0"/>
<field eval="1" name="sequence"/>
</record>
</data>
<data>
<record id="survey_page_job_1" model="survey.page">
<field name="title">Education &amp; Activities</field>
<field name="survey_id" ref="survey_job_0"/>
<field eval="2" name="sequence"/>
</record>
</data>
<data>
<record id="survey_page_job_2" model="survey.page">
<field name="title">Importance</field>
<field name="survey_id" ref="survey_job_0"/>
<field eval="3" name="sequence"/>
</record>
</data>
<data>
<record id="survey_question_job_0" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="1" name="sequence"/>
<field name="question">From which university will you graduate?</field>
<field eval="0" name="is_require_answer"/>
<field name="type">single_textbox</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="1" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_job_0"/>
<field name="comment_label">Other</field>
<field eval="1" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_job_1" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="1" name="sequence"/>
<field name="question">Rate the Importance</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="1" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_job_2"/>
<field name="comment_label">Other</field>
<field eval="1" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_job_2" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="1" name="sequence"/>
<field name="question">Education</field>
<field eval="0" name="is_require_answer"/>
<field name="type">comment</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="1" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_job_1"/>
<field name="comment_label">Other</field>
<field eval="1" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_job_3" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="2" name="sequence"/>
<field name="question">Knowledge</field>
<field eval="0" name="is_require_answer"/>
<field name="type">comment</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="1" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_job_1"/>
<field name="comment_label">Other</field>
<field eval="1" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_job_4" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="2" name="sequence"/>
<field name="question">What is your gender?</field>
<field eval="0" name="is_require_answer"/>
<field name="type">multiple_choice_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="1" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_job_0"/>
<field name="comment_label">Other</field>
<field eval="1" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
<record id="survey_answer_job_70" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Male</field>
<field name="question_id" ref="survey_question_job_4"/>
<field eval="1" name="sequence"/>
</record>
<record id="survey_answer_job_71" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Female</field>
<field name="question_id" ref="survey_question_job_4"/>
<field eval="2" name="sequence"/>
</record>
</data>
<data>
<record id="survey_question_job_5" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="3" name="sequence"/>
<field name="question">What age group do you belong to?</field>
<field eval="0" name="is_require_answer"/>
<field name="type">multiple_choice_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="1" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_job_0"/>
<field name="comment_label">Other</field>
<field eval="1" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
<record id="survey_answer_job_81" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">0 - 15</field>
<field name="question_id" ref="survey_question_job_5"/>
<field eval="1" name="sequence"/>
</record>
<record id="survey_answer_job_82" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">16 - 20</field>
<field name="question_id" ref="survey_question_job_5"/>
<field eval="2" name="sequence"/>
</record>
<record id="survey_answer_job_83" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">21 - 30</field>
<field name="question_id" ref="survey_question_job_5"/>
<field eval="3" name="sequence"/>
</record>
<record id="survey_answer_job_84" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">31 - 40</field>
<field name="question_id" ref="survey_question_job_5"/>
<field eval="4" name="sequence"/>
</record>
<record id="survey_answer_job_85" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">41 - 50</field>
<field name="question_id" ref="survey_question_job_5"/>
<field eval="5" name="sequence"/>
</record>
<record id="survey_answer_job_86" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">51 - 60</field>
<field name="question_id" ref="survey_question_job_5"/>
<field eval="6" name="sequence"/>
</record>
<record id="survey_answer_job_87" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">61 - 70</field>
<field name="question_id" ref="survey_question_job_5"/>
<field eval="7" name="sequence"/>
</record>
<record id="survey_answer_job_88" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">71 +</field>
<field name="question_id" ref="survey_question_job_5"/>
<field eval="8" name="sequence"/>
</record>
</data>
<data>
<record id="survey_question_job_6" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="3" name="sequence"/>
<field name="question">Exprience</field>
<field eval="0" name="is_require_answer"/>
<field name="type">comment</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="1" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_job_1"/>
<field name="comment_label">Other</field>
<field eval="1" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_job_7" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="4" name="sequence"/>
<field name="question">Activities</field>
<field eval="0" name="is_require_answer"/>
<field name="type">comment</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="1" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_job_1"/>
<field name="comment_label">Other</field>
<field eval="1" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_job_0" model="survey.question.column.heading">
<field eval="1" name="in_visible_menu_choice"/>
<field name="title">Not important</field>
<field eval="1" name="in_visible_rating_weight"/>
<field name="question_id" ref="survey_question_job_1"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_job_1" model="survey.question.column.heading">
<field eval="1" name="in_visible_menu_choice"/>
<field name="title">Somewhat important</field>
<field eval="1" name="in_visible_rating_weight"/>
<field name="question_id" ref="survey_question_job_1"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_job_2" model="survey.question.column.heading">
<field eval="1" name="in_visible_menu_choice"/>
<field name="title">Important</field>
<field eval="1" name="in_visible_rating_weight"/>
<field name="question_id" ref="survey_question_job_1"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_job_3" model="survey.question.column.heading">
<field eval="1" name="in_visible_menu_choice"/>
<field name="title">Very important</field>
<field eval="1" name="in_visible_rating_weight"/>
<field name="question_id" ref="survey_question_job_1"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_job_4" model="survey.question.column.heading">
<field eval="1" name="in_visible_menu_choice"/>
<field name="title">Most important</field>
<field eval="1" name="in_visible_rating_weight"/>
<field name="question_id" ref="survey_question_job_1"/>
</record>
</data>
<data>
<record id="survey_answer_job_0" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Good pay</field>
<field name="question_id" ref="survey_question_job_1"/>
<field eval="1" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_1" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Getting on with colleagues</field>
<field name="question_id" ref="survey_question_job_1"/>
<field eval="2" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_2" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Office environment (décor, light, space etc)</field>
<field name="question_id" ref="survey_question_job_1"/>
<field eval="3" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_3" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Desk space</field>
<field name="question_id" ref="survey_question_job_1"/>
<field eval="4" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_4" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">State of the art technology</field>
<field name="question_id" ref="survey_question_job_1"/>
<field eval="5" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_5" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Office location (proximity to home)</field>
<field name="question_id" ref="survey_question_job_1"/>
<field eval="6" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_6" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Good management/boss</field>
<field name="question_id" ref="survey_question_job_1"/>
<field eval="7" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_7" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Freebies such as tea, coffee and stationery</field>
<field name="question_id" ref="survey_question_job_1"/>
<field eval="8" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_8" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Perks such as free parking, gym passes etc</field>
<field name="question_id" ref="survey_question_job_1"/>
<field eval="9" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_9" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">No out of hours working</field>
<field name="question_id" ref="survey_question_job_1"/>
<field eval="10" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_10" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Dress code</field>
<field name="question_id" ref="survey_question_job_1"/>
<field eval="11" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_11" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Regular meetings</field>
<field name="question_id" ref="survey_question_job_1"/>
<field eval="12" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_job_12" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Good social life (office nights out, good Christmas parties etc)</field>
<field name="question_id" ref="survey_question_job_1"/>
<field eval="13" name="sequence"/>
</record>
</data>
</openerp>
+142
View File
@@ -0,0 +1,142 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!--
((((((((((( Demo Cases )))))))))))
-->
<!--For Jobs Requests-->
<record id="hr_case_salesman0" model="hr.applicant">
<field eval="time.strftime('%Y-%m-01 10:35:50')" name="date"/>
<field eval="time.strftime('%Y-%m-03')" name="date_deadline"/>
<field name="type_id" ref="type_job1"/>
<field name="partner_id" ref="base.res_partner_asus"/>
<field eval="'2'" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="'Enrique Jones'" name="partner_name"/>
<field eval="'draft'" name="state"/>
<field eval="'enrique@rediff.com'" name="partner_name2"/>
<field eval="'9963214587'" name="partner_mobile"/>
<field eval="1" name="active"/>
<field eval="9.0" name="duration"/>
<field name="categ_id" ref="categ_job1"/>
<field name="stage_id" ref="stage_job1"/>
<field eval="'Salesman'" name="name"/>
<field eval="'1236547890'" name="partner_phone"/>
</record>
<record id="hr_case_traineemca0" model="hr.applicant">
<field model="res.partner.canal" name="canal_id" search="[('name','=','E-mail')]"/>
<field name="partner_address_id" ref="base.res_partner_address_14"/>
<field name="som" ref="base.som_fury"/>
<field eval="time.strftime('%Y-%m-10 18:15:00')" name="date"/>
<field name="type_id" ref="type_job3"/>
<field name="partner_id" ref="base.res_partner_15"/>
<field eval="'3'" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="'Marie Justine'" name="partner_name"/>
<field eval="'open'" name="state"/>
<field eval="5.15" name="duration"/>
<field eval="'marie@gmail.com'" name="partner_name2"/>
<field eval="'9988774455'" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="categ_job2"/>
<field name="stage_id" ref="stage_job4"/>
<field eval="'Trainee - MCA'" name="name"/>
<field eval="time.strftime('%Y-%m-15')" name="date_deadline"/>
<field eval="'6633225'" name="partner_phone"/>
</record>
<record id="hr_case_fresher0" model="hr.applicant">
<field model="res.partner.canal" name="canal_id" search="[('name','=','direct')]"/>
<field name="som" ref="base.som_happy"/>
<field eval="time.strftime('%Y-%m-15 16:10:00')" name="date"/>
<field eval="time.strftime('%Y-%m-18')" name="date_deadline"/>
<field name="type_id" ref="type_job2"/>
<field name="partner_id" ref="base.res_partner_5"/>
<field eval="'1'" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="1.45" name="duration"/>
<field eval="'Jose'" name="partner_name"/>
<field eval="'pending'" name="state"/>
<field eval="'jose@timesgroup.com'" name="partner_name2"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="categ_job1"/>
<field name="stage_id" ref="stage_job3"/>
<field eval="'Fresher'" name="name"/>
<field eval="'999666735'" name="partner_phone"/>
</record>
<record id="hr_case_yrsexperienceinphp0" model="hr.applicant">
<field eval="time.strftime('%Y-%m-25 16:25:52')" name="date"/>
<field eval="time.strftime('%Y-%m-28')" name="date_deadline"/>
<field name="categ_id" ref="categ_job2"/>
<field name="type_id" ref="type_job3"/>
<field name="partner_id" ref="base.res_partner_10"/>
<field eval="'3'" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="1.35" name="duration"/>
<field eval="'Sandra Elvis'" name="partner_name"/>
<field eval="'sandra@example.com'" name="partner_name2"/>
<field eval="'cancel'" name="state"/>
<field eval="1" name="active"/>
<field name="stage_id" ref="stage_job6"/>
<field eval="'More than 5 yrs Experience in PHP'" name="name"/>
</record>
<record id="hr_case_marketingjob0" model="hr.applicant">
<field eval="time.strftime('%Y-%m-26 17:15:32')" name="date"/>
<field eval="time.strftime('%Y-%m-28')" name="date_deadline"/>
<field name="type_id" ref="type_job2"/>
<field name="partner_id" ref="base.res_partner_11"/>
<field eval="'4'" name="priority"/>
<field name="user_id" ref="base.user_demo"/>
<field eval="2.0" name="duration"/>
<field eval="'John Bruno'" name="partner_name"/>
<field eval="'done'" name="state"/>
<field eval="'john@market.edu'" name="partner_name2"/>
<field eval="'9966332214'" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="categ_job1"/>
<field name="stage_id" ref="stage_job5"/>
<field eval="'Marketing Job'" name="name"/>
<field eval="'33968745'" name="partner_phone"/>
</record>
<record id="hr_case_financejob0" model="hr.applicant">
<field eval="time.strftime('%Y-%m-26 17:39:42')" name="date"/>
<field eval="time.strftime('%Y-%m-28')" name="date_deadline"/>
<field name="type_id" ref="type_job2"/>
<field name="partner_id" ref="base.res_partner_11"/>
<field eval="'4'" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="'David Armstrong'" name="partner_name"/>
<field eval="'done'" name="state"/>
<field eval="'david@market.edu'" name="partner_name2"/>
<field eval="'9966332214'" name="partner_mobile"/>
<field eval="1" name="active"/>
<field eval="2.20" name="duration"/>
<field name="categ_id" ref="categ_job1"/>
<field name="stage_id" ref="stage_job5"/>
<field eval="'Finance Job'" name="name"/>
<field eval="'33968745'" name="partner_phone"/>
</record>
<record id="hr_case_traineemca1" model="hr.applicant">
<field model="res.partner.canal" name="canal_id" search="[('name','=','E-mail')]"/>
<field name="partner_address_id" ref="base.res_partner_address_14"/>
<field name="som" ref="base.som_fury"/>
<field eval="time.strftime('%Y-%m-12 17:49:19')" name="date"/>
<field name="type_id" ref="type_job3"/>
<field name="partner_id" ref="base.res_partner_15"/>
<field eval="'3'" name="priority"/>
<field name="user_id" ref="base.user_root"/>
<field eval="'Tina Augustie'" name="partner_name"/>
<field eval="'open'" name="state"/>
<field eval="1.15" name="duration"/>
<field eval="'tina_augustie@example.com'" name="partner_name2"/>
<field eval="'9898745745'" name="partner_mobile"/>
<field eval="1" name="active"/>
<field name="categ_id" ref="categ_job2"/>
<field name="stage_id" ref="stage_job4"/>
<field eval="'Trainee - MCA'" name="name"/>
<field eval="time.strftime('%Y-%m-15')" name="date_deadline"/>
<field eval="'6630125'" name="partner_phone"/>
</record>
</data>
</openerp>
@@ -1,36 +1,30 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<menuitem icon="terp-hr" id="menu_hr" name="Human Resources"/>
<menuitem icon="terp-hr" id="base.menu_hr" name="Human Resources"/>
######################## JOB OPPORTUNITIES (menu) ###########################
<record model="ir.actions.act_window" id="crm_case_categ0_act_job">
<field name="name">Jobs Requests</field>
<field name="res_model">crm.job</field>
<field name="view_mode">tree,calendar,form,graph</field>
<field name="name">Applicants</field>
<field name="res_model">hr.applicant</field>
<field name="view_mode">tree,form,graph</field>
<field name="view_id" ref="crm_case_tree_view_job"/>
<field name="search_view_id" ref="view_crm_case_jobs_filter"/>
<field name="search_view_id" ref="view_crm_case_jobs_filter"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_sec_tree_view_act_job">
<record model="ir.actions.act_window.view" id="action_hr_sec_tree_view_act_job">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="crm_case_tree_view_job"/>
<field name="act_window_id" ref="crm_case_categ0_act_job"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_sec_calendar_view_act_job">
<field name="sequence" eval="2"/>
<field name="view_mode">calendar</field>
<field name="view_id" ref="crm_case_calendar_view_job"/>
<field name="act_window_id" ref="crm_case_categ0_act_job"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_sec_form_view_act_job">
<record model="ir.actions.act_window.view" id="action_hr_sec_form_view_act_job">
<field name="sequence" eval="3"/>
<field name="view_mode">form</field>
<field name="view_id" ref="crm_case_form_view_job"/>
<field name="act_window_id" ref="crm_case_categ0_act_job"/>
</record>
<record model="ir.actions.act_window.view" id="action_crm_sec_graph_view_act_job">
<record model="ir.actions.act_window.view" id="action_hr_sec_graph_view_act_job">
<field name="sequence" eval="4"/>
<field name="view_mode">graph</field>
<field name="view_id" ref="crm_case_graph_view_job"/>
@@ -39,16 +33,16 @@
<!--<menuitem
name="Jobs - Hiring Process"
id="menu_crm_case_job_req_main"
parent="menu_hr"/>-->
parent="base.menu_hr"/>-->
<menuitem
name="Recruitment"
id="menu_crm_case_job_req_main"
parent="menu_hr"/>
id="base.menu_crm_case_job_req_main"
parent="base.menu_hr"/>
<!--
ALL JOBS REQUESTS
-->
<menuitem name="Applicants" parent="menu_crm_case_job_req_main" id="menu_crm_case_categ0_act_job" action="crm_case_categ0_act_job"/>
<menuitem name="Applicants" parent="base.menu_crm_case_job_req_main" id="menu_crm_case_categ0_act_job" action="crm_case_categ0_act_job" sequence="1"/>
</data>
</openerp>
+239
View File
@@ -0,0 +1,239 @@
<?xml version="1.0"?>
<openerp>
<data>
# ------------------------------------------------------
# Job Categories
# ------------------------------------------------------
<record id="hr_job_categ_action" model="ir.actions.act_window">
<field name="name">Applicant Categories</field>
<field name="res_model">crm.case.categ</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_categ_tree-view"/>
<field name="domain">[('object_id.model', '=', 'hr.applicant')]</field>
<field name="context">{'object_id':'hr.applicant'}</field>
</record>
# ------------------------------------------------------
# Stage
# ------------------------------------------------------
<record id="hr_job_stage_act" model="ir.actions.act_window">
<field name="name">Applicant Stages</field>
<field name="res_model">crm.case.stage</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_stage_tree"/>
<field name="domain">[('object_id.model', '=', 'hr.applicant')]</field>
<field name="context">{'object_id':'hr.applicant'}</field>
</record>
<menuitem action="hr_job_stage_act" id="menu_hr_job_stage_act" parent="crm.menu_crm_case_stage"/>
# ------------------------------------------------------
# Jobs
# ------------------------------------------------------
<record model="ir.ui.view" id="crm_case_tree_view_job">
<field name="name">Applicants</field>
<field name="model">hr.applicant</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Applicants" colors="grey:state in ('cancel','done');blue:state=='pending'">
<field name="create_date"/>
<field name="partner_name"/>
<field name="email_from"/>
<field name="partner_phone"/>
<field name="job_id"/>
<field name="stage_id"/>
<button name="stage_previous" string="Previous" states="open,pending" type="object" icon="gtk-go-back"/>
<button name="stage_next" string="Next" states="open,pending" type="object" icon="gtk-go-forward"/>
<field name="priority"/>
<field name="type_id" invisible="1"/>
<field name="availability" invisible="1"/>
<field name="department_id" invisible="context.get('invisible_department', True)"/>
<field name="user_id"/>
<field name="state"/>
<button name="case_open" string="In Progress" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
<button name="case_close" string="Hired" states="open,draft,pending" type="object" icon="terp-partner"/>
<button name="case_cancel" string="Refused" states="draft,open,pending" type="object" icon="gtk-cancel"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="crm_case_form_view_job">
<field name="name">Jobs - Recruitment Form</field>
<field name="model">hr.applicant</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Jobs - Recruitment Form">
<group colspan="4" col="7">
<field name="name" string="Subject"/>
<label string="Stage: " align="1.0"/>
<group colspan="1" col="2">
<field name="stage_id" nolabel="1"/>
<button icon="gtk-go-forward" string="" name="stage_next" type="object"/>
</group>
<field name="user_id"/>
<button string="Schedule a Phone Call"
name="%(wizard_hr_job_reschedule_phone_call)d" icon="gtk-redo" type="action"/>
<newline/>
<field name="partner_name"/>
<field name="job_id"/>
<field name="department_id" widget="selection"/>
<button name="%(wizard_hr_job_meeting_set)d" string="Schedule Meeting" icon="terp-hr" type="action"/>
</group>
<notebook colspan="4">
<page string="Job Info">
<group col="2" colspan="2">
<separator colspan="2" string="Contact"/>
<field name="partner_id" on_change="onchange_partner_id(partner_id, email_from)" />
<field name="partner_address_id" on_change="onchange_partner_address_id(partner_address_id, email_from)"/>
<field name="email_from"/>
<field name="partner_phone"/>
<field name="partner_mobile"/>
</group>
<group col="2" colspan="2">
<separator colspan="2" string="Contract Data"/>
<field name="availability"/>
<field name="salary_expected"/>
<field name="salary_proposed"/>
</group>
<group col="2" colspan="2">
<separator colspan="2" string="Qualification"/>
<field name="type_id"/>
<field name="priority" string="Appreciation"/>
</group>
<group col="2" colspan="2">
<separator colspan="2" string="Dates"/>
<field name="create_date"/>
<field name="write_date"/>
<field name="date_closed"/>
</group>
<separator colspan="4" string="Status"/>
<group col="8" colspan="4">
<field name="state"/>
<button name="case_open" string="In Progress" states="draft,pending" type="object" icon="gtk-go-forward"/>
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
<button name="case_close" string="Hired" states="open,draft,pending" type="object" icon="terp-partner"/>
<button name="case_cancel" string="Refused" states="draft,open,pending" type="object" icon="gtk-cancel"/>
<button name="case_reset" string="Reset to New" states="done,cancel" type="object" icon="gtk-convert"/>
</group>
</page>
<page string="Internal Notes">
<field name="description" nolabel="1" colspan="4"/>
</page>
<page string="History" groups="base.group_extended">
<field name="id"/>
<field name="active"/>
<field name="log_ids" nolabel="1" colspan="4">
<form string="Actions">
<separator string="Action Information" colspan="4"/>
<field name="name" colspan="4"/>
<field name="date"/>
<field name="user_id"/>
</form>
</field>
</page>
<page string="Emails" groups="base.group_extended">
<group colspan="4">
<field colspan="4" name="email_cc" string="CC"/>
</group>
<field name="history_line" colspan="4" nolabel="1" mode="form,tree">
<form string="Communication history">
<group col="7" colspan="4">
<field name="date"/>
<field name="email"/>
<button
string="Add a CC"
name="%(crm.action_view_crm_email_add_cc_wizard)d"
icon="gtk-add" type="action"/>
</group>
<newline/>
<field name="description" colspan="4" nolabel="1"/>
<button colspan="4" string="Reply to Last Email" name="%(crm.wizard_crm_send_mail)d" context="{'mail':'reply'}" icon="gtk-undo" type="action"/>
</form>
<tree string="Communication history">
<field name="description"/>
<field name="email"/>
<field name="date"/>
</tree>
</field>
<button colspan="4" string="Send New Email" name="%(crm.wizard_crm_new_send_mail)d" context="{'mail':'new'}" icon="gtk-go-forward" type="action"/>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.ui.view" id="crm_case_graph_view_job">
<field name="name">Jobs - Recruitment Graph</field>
<field name="model">hr.applicant</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Cases By Stage and Estimates" type="bar" orientation="vertical">
<field name="job_id"/>
<field name="salary_expected" operator="+"/>
<field name="state" group="True"/>
</graph>
</field>
</record>
<record id="view_crm_case_jobs_filter" model="ir.ui.view">
<field name="name">Jobs - Recruitment Search</field>
<field name="model">hr.applicant</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Jobs">
<filter icon="gtk-new" string="Current"
domain="[('state','in',('draft','open'))]"
help="All new and in progress jobs"
default="1"
/>
<filter icon="gtk-new" string="New"
domain="[('state','=','draft')]"
help="All Initial Jobs"
/>
<filter icon="gtk-yes" string="In Progress"
domain="[('state','=','open')]"
help="Open Jobs"
/>
<filter icon="gtk-media-pause" string="Pending"
domain="[('state','=','pending')]"
help="Pending Jobs"
/>
<separator orientation="vertical"/>
<field name="partner_name"/>
<field name="email_from"/>
<field name="job_id" widget="selection"/>
<field name="user_id" widget="selection">
<filter domain="[('user_id','=',uid)]" help="My Recruitements" icon="gtk-execute" default="1"/>
<filter domain="[('user_id','=',False)]" help="Unassigned Recruitements" icon="gtk-execute" separator="1"/>
</field>
<field name="department_id" widget="selection" string="Department" context="{'invisible_department': False}">
<filter icon="terp-hr" context="{'invisible_department': False}"
domain="[('department_id','=',context.get('department_id',False))]"
help="My Department"/>
</field>
<newline/>
<group expand="1" string="Group By..." colspan="11" col="20">
<filter string="Department" icon="terp-project" domain="[]" context="{'group_by':'department_id'}"/>
<filter string="Responsible" icon="terp-project" domain="[]" context="{'group_by':'user_id'}"/>
<separator orientation="vertical"/>
<filter string="Job" icon="terp-project" domain="[]" context="{'group_by':'job_id'}"/>
<filter string="Stage" icon="terp-project" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="Degree" icon="terp-project" domain="[]" context="{'group_by':'type_id'}"/>
<filter string="Availability" icon="terp-project" domain="[]" context="{'group_by':'availability'}"/>
<filter string="State" icon="terp-project" domain="[]" context="{'group_by':'state'}"/>
<separator orientation="vertical"/>
<filter string="Appreciation" icon="terp-project" domain="[]" context="{'group_by':'priority'}"/>
<separator orientation="vertical"/>
<filter string="Date" icon="terp-project" domain="[]" context="{'group_by':'create_date'}"/>
</group>
</search>
</field>
</record>
</data>
</openerp>

Some files were not shown because too many files have changed in this diff Show More