[MERGE]: Merged with lp:openobject-addons
bzr revid: atp@tinyerp.com-20120917050738-i5730n5sbqvnfsnh
This commit is contained in:
commit
b4d415ff9b
|
@ -181,7 +181,7 @@ class account_account_type(osv.osv):
|
|||
'Balance' will generally be used for cash accounts.
|
||||
'Detail' will copy each existing journal item of the previous year, even the reconciled ones.
|
||||
'Unreconciled' will copy only the journal items that were unreconciled on the first day of the new fiscal year."""),
|
||||
'report_type': fields.function(_get_current_report_type, fnct_inv=_save_report_type, type='selection', string='P&L / BS Category',
|
||||
'report_type': fields.function(_get_current_report_type, fnct_inv=_save_report_type, type='selection', string='P&L / BS Category', store=True,
|
||||
selection= [('none','/'),
|
||||
('income', _('Profit & Loss (Income account)')),
|
||||
('expense', _('Profit & Loss (Expense account)')),
|
||||
|
@ -836,6 +836,8 @@ class account_journal(osv.osv):
|
|||
|
||||
@return: Returns a list of tupples containing id, name
|
||||
"""
|
||||
if isinstance(ids, (int, long)):
|
||||
ids = [ids]
|
||||
result = self.browse(cr, user, ids, context=context)
|
||||
res = []
|
||||
for rs in result:
|
||||
|
|
|
@ -51,10 +51,10 @@ class account_config_settings(osv.osv_memory):
|
|||
'code_digits': fields.integer('# of Digits', help="No. of digits to use for account code"),
|
||||
'tax_calculation_rounding_method': fields.related('company_id',
|
||||
'tax_calculation_rounding_method', type='selection', selection=[
|
||||
('round_per_line', 'Round per Line'),
|
||||
('round_globally', 'Round Globally'),
|
||||
('round_per_line', 'Round per line'),
|
||||
('round_globally', 'Round globally'),
|
||||
], string='Tax calculation rounding method',
|
||||
help="If you select 'Round per Line' : for each tax, the tax amount will first be computed and rounded for each PO/SO/invoice line and then these rounded amounts will be summed, leading to the total amount for that tax. If you select 'Round Globally': for each tax, the tax amount will be computed for each PO/SO/invoice line, then these amounts will be summed and eventually this total tax amount will be rounded. If you sell with tax included, you should choose 'Round per line' because you certainly want the sum of your tax-included line subtotals to be equal to the total amount with taxes."),
|
||||
help="If you select 'Round per line' : for each tax, the tax amount will first be computed and rounded for each PO/SO/invoice line and then these rounded amounts will be summed, leading to the total amount for that tax. If you select 'Round globally': for each tax, the tax amount will be computed for each PO/SO/invoice line, then these amounts will be summed and eventually this total tax amount will be rounded. If you sell with tax included, you should choose 'Round per line' because you certainly want the sum of your tax-included line subtotals to be equal to the total amount with taxes."),
|
||||
'sale_tax': fields.many2one("account.tax.template", "Default sale tax"),
|
||||
'purchase_tax': fields.many2one("account.tax.template", "Default purchase tax"),
|
||||
'sale_tax_rate': fields.float('Sales tax (%)'),
|
||||
|
@ -72,40 +72,40 @@ class account_config_settings(osv.osv_memory):
|
|||
'sale_refund_journal_id': fields.many2one('account.journal', 'Sale refund journal'),
|
||||
'sale_refund_sequence_prefix': fields.related('sale_refund_journal_id', 'sequence_id', 'prefix', type='char', string='Credit note sequence'),
|
||||
'sale_refund_sequence_next': fields.related('sale_refund_journal_id', 'sequence_id', 'number_next', type='integer', string='Next credit note number'),
|
||||
'purchase_journal_id': fields.many2one('account.journal', 'Purchase Journal'),
|
||||
'purchase_journal_id': fields.many2one('account.journal', 'Purchase journal'),
|
||||
'purchase_sequence_prefix': fields.related('purchase_journal_id', 'sequence_id', 'prefix', type='char', string='Supplier invoice sequence'),
|
||||
'purchase_sequence_next': fields.related('purchase_journal_id', 'sequence_id', 'number_next', type='integer', string='Next supplier invoice number'),
|
||||
'purchase_refund_journal_id': fields.many2one('account.journal', 'Purchase refund journal'),
|
||||
'purchase_refund_sequence_prefix': fields.related('purchase_refund_journal_id', 'sequence_id', 'prefix', type='char', string='Supplier credit note sequence'),
|
||||
'purchase_refund_sequence_next': fields.related('purchase_refund_journal_id', 'sequence_id', 'number_next', type='integer', string='Next supplier credit note number'),
|
||||
|
||||
'module_account_check_writing': fields.boolean('pay your suppliers by check',
|
||||
'module_account_check_writing': fields.boolean('Pay your suppliers by check',
|
||||
help="""This allows you to check writing and printing.
|
||||
This installs the module account_check_writing."""),
|
||||
'module_account_accountant': fields.boolean('full accounting features: journals, legal statements, chart of accounts, etc.',
|
||||
'module_account_accountant': fields.boolean('Full accounting features: journals, legal statements, chart of accounts, etc.',
|
||||
help="""If you do not check this box, you will be able to do invoicing & payments, but not accounting (Journal Items, Chart of Accounts, ...)"""),
|
||||
'module_account_asset': fields.boolean('assets management',
|
||||
'module_account_asset': fields.boolean('Assets management',
|
||||
help="""This allows you to manage the assets owned by a company or a person.
|
||||
It keeps track of the depreciation occurred on those assets, and creates account move for those depreciation lines.
|
||||
This installs the module account_asset. If you do not check this box, you will be able to do invoicing & payments,
|
||||
but not accounting (Journal Items, Chart of Accounts, ...)"""),
|
||||
'module_account_budget': fields.boolean('budget management',
|
||||
'module_account_budget': fields.boolean('Budget management',
|
||||
help="""This allows accountants to manage analytic and crossovered budgets.
|
||||
Once the master budgets and the budgets are defined,
|
||||
the project managers can set the planned amount on each analytic account.
|
||||
This installs the module account_budget."""),
|
||||
'module_account_payment': fields.boolean('manage payment orders',
|
||||
'module_account_payment': fields.boolean('Manage payment orders',
|
||||
help="""This allows you to create and manage your payment orders, with purposes to
|
||||
* serve as base for an easy plug-in of various automated payment mechanisms, and
|
||||
* provide a more efficient way to manage invoice payments.
|
||||
This installs the module account_payment."""),
|
||||
'module_account_voucher': fields.boolean('manage customer payments',
|
||||
'module_account_voucher': fields.boolean('Manage customer payments',
|
||||
help="""This includes all the basic requirements of voucher entries for bank, cash, sales, purchase, expense, contra, etc.
|
||||
This installs the module account_voucher."""),
|
||||
'module_account_followup': fields.boolean('manage customer payment follow-ups',
|
||||
'module_account_followup': fields.boolean('Manage customer payment follow-ups',
|
||||
help="""This allows to automate letters for unpaid invoices, with multi-level recalls.
|
||||
This installs the module account_followup."""),
|
||||
'group_proforma_invoices': fields.boolean('allow pro-forma invoices',
|
||||
'group_proforma_invoices': fields.boolean('Allow pro-forma invoices',
|
||||
implied_group='account.group_proforma_invoices',
|
||||
help="Allows you to put invoices in pro-forma state."),
|
||||
'default_sale_tax': fields.many2one('account.tax', 'Default sale tax',
|
||||
|
@ -114,7 +114,7 @@ class account_config_settings(osv.osv_memory):
|
|||
help="This purchase tax will be assigned by default on new products."),
|
||||
'decimal_precision': fields.integer('Decimal precision on journal entries',
|
||||
help="""As an example, a decimal precision of 2 will allow journal entries like: 9.99 EUR, whereas a decimal precision of 4 will allow journal entries like: 0.0231 EUR."""),
|
||||
'group_multi_currency': fields.boolean('allow multi currencies',
|
||||
'group_multi_currency': fields.boolean('Allow multi currencies',
|
||||
implied_group='base.group_multi_currency',
|
||||
help="Allows you multi currency environment"),
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<field name="name">Invoicing & Payments</field>
|
||||
<field name="category_id" ref="base.module_category_accounting_and_finance"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
|
||||
</record>
|
||||
<record id="group_account_user" model="res.groups">
|
||||
<field name="name">Accountant</field>
|
||||
|
|
|
@ -82,6 +82,7 @@ access_account_entries_report_invoice,account.entries.report,model_account_entri
|
|||
access_account_entries_report_employee,account.entries.report employee,model_account_entries_report,base.group_user,1,0,0,0
|
||||
access_analytic_entries_report_manager,analytic.entries.report,model_analytic_entries_report,account.group_account_manager,1,0,0,0
|
||||
access_account_cashbox_line,account.cashbox.line,model_account_cashbox_line,account.group_account_user,1,1,1,1
|
||||
access_account_journal_cashbox_line,account.journal.cashbox.line,model_account_journal_cashbox_line,account.group_account_user,1,1,1,0
|
||||
access_account_journal_view_invoice,account.journal.view invoice,model_account_journal_view,account.group_account_invoice,1,1,1,1
|
||||
access_account_journal_column_invoice,account.journal.column invoice,model_account_journal_column,account.group_account_invoice,1,1,1,1
|
||||
access_account_invoice_tax_accountant,account.invoice.tax accountant,model_account_invoice_tax,account.group_account_user,1,0,0,0
|
||||
|
|
|
|
@ -26,15 +26,12 @@
|
|||
'sequence': 10,
|
||||
'summary': 'Financial and Analytic Accounting',
|
||||
'description': """
|
||||
Accounting Access Rights.
|
||||
=========================
|
||||
Accounting Access Rights
|
||||
========================
|
||||
It gives the Administrator user access to all accounting features such as journal items and the chart of accounts.
|
||||
|
||||
This module gives the Admin user the access to all the accounting features
|
||||
like the journal items and the chart of accounts.
|
||||
|
||||
It assigns manager and user access rights to the Administrator and only
|
||||
user rights to Demo user.
|
||||
""",
|
||||
It assigns manager and user access rights to the Administrator and only user rights to the Demo user.
|
||||
""",
|
||||
'website': 'http://www.openerp.com',
|
||||
'depends' : ['account_voucher'],
|
||||
'data': [
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<!-- Top menu item -->
|
||||
<menuitem name="Accounting"
|
||||
id="account.menu_finance"/>
|
||||
|
||||
</data>
|
||||
|
||||
<data noupdate="1">
|
||||
|
@ -14,10 +15,9 @@
|
|||
<field name="tag">reload</field>
|
||||
<field name="params" eval="{'menu_id': ref('account.menu_finance')}"/>
|
||||
</record>
|
||||
<record id="todo_open_account_menu" model="ir.actions.todo">
|
||||
<record id="base.open_menu" model="ir.actions.todo">
|
||||
<field name="action_id" ref="action_client_account_menu"/>
|
||||
<field name="type">automatic</field>
|
||||
<field name="sequence">100</field>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
<!-- Notify all employees of module installation -->
|
||||
|
|
|
@ -465,7 +465,7 @@ class account_analytic_account(osv.osv):
|
|||
def open_sale_order_lines(self,cr,uid,ids,context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
sale_ids = self.pool.get('sale.order').search(cr,uid,[('project_id','=',context.get('search_default_project_id',False)),('partner_id','=',context.get('search_default_partner_id',False))])
|
||||
sale_ids = self.pool.get('sale.order').search(cr,uid,[('project_id','=',context.get('search_default_project_id',False)),('partner_id','in',context.get('search_default_partner_id',False))])
|
||||
names = [record.name for record in self.browse(cr, uid, ids, context=context)]
|
||||
name = _('Sale Order Lines of %s') % ','.join(names)
|
||||
return {
|
||||
|
|
|
@ -73,9 +73,18 @@
|
|||
<field name="res_model">account.analytic.account</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form,graph</field>
|
||||
<field name="context">{'default_type':'contract'}</field>
|
||||
<field name="context">{'default_type':'contract', 'search_default_open':1, 'search_default_pending':1}</field>
|
||||
<field name="domain">[('type','=','contract')]</field>
|
||||
<field name="search_view_id" ref="view_account_analytic_account_overdue_search"/>
|
||||
<field name="help" type="html">
|
||||
<p class="oe_view_nocontent_create">
|
||||
Click to create a new contract.
|
||||
</p><p>
|
||||
Use contracts to follow tasks, issues, timesheets or invoicing based on
|
||||
work done, expenses and/or sales orders. OpenERP will automatically manage
|
||||
the alerts for the renewal of the contracts to the right salesperson.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
<menuitem id="base.menu_sales" name="Sales"
|
||||
parent="base.menu_base_partner"
|
||||
|
|
|
@ -140,6 +140,16 @@
|
|||
<field name="view_mode">tree,form</field>
|
||||
<field name="domain">[('type','=','template')]</field>
|
||||
<field name="context">{'search_default_type':'template','default_type' : 'template'}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="oe_view_nocontent_create">
|
||||
Click here to create a template of contract.
|
||||
</p><p>
|
||||
Templates are used to prefigure contract/project that
|
||||
can be selected by the salespeople to quickly configure the
|
||||
terms and conditions of the contract.
|
||||
</p>
|
||||
</field>
|
||||
|
||||
</record>
|
||||
<menuitem action="template_of_contract_action" id="menu_template_of_contract_action" parent="base.menu_base_config"/>
|
||||
</data>
|
||||
|
|
|
@ -299,7 +299,7 @@
|
|||
<field name="inherit_id" ref="analytic.view_account_analytic_account_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<notebook position="inside">
|
||||
<page string="Budget Lines">
|
||||
<page string="Budget Lines" groups="account.group_account_user">
|
||||
<field name="crossovered_budget_line" widget="one2many_list" colspan="4" nolabel="1" mode="tree,graph">
|
||||
<tree string="Budget Lines" editable="top">
|
||||
<field name="crossovered_budget_id"/>
|
||||
|
|
|
@ -4,4 +4,4 @@ access_account_budget_post,account.budget.post,model_account_budget_post,account
|
|||
access_account_budget_post_accountant,account.budget.post accountant,model_account_budget_post,account.group_account_user,1,1,1,1
|
||||
access_crossovered_budget_accountant,crossovered.budget accountant,model_crossovered_budget,account.group_account_user,1,1,1,1
|
||||
access_crossovered_budget_lines_accountant,crossovered.budget.lines accountant,model_crossovered_budget_lines,account.group_account_user,1,1,1,1
|
||||
access_budget,crossovered.budget.lines manager,model_crossovered_budget_lines,base.group_user,1,0,0,0
|
||||
access_budget,crossovered.budget.lines manager,model_crossovered_budget_lines,base.group_user,1,1,1,0
|
||||
|
|
|
|
@ -0,0 +1,214 @@
|
|||
# Greek translation for openobject-addons
|
||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
|
||||
"PO-Revision-Date: 2012-09-15 17:55+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Greek <el@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-09-16 04:39+0000\n"
|
||||
"X-Generator: Launchpad (build 15944)\n"
|
||||
|
||||
#. module: account_sequence
|
||||
#: view:account.sequence.installer:0
|
||||
#: model:ir.actions.act_window,name:account_sequence.action_account_seq_installer
|
||||
msgid "Account Sequence Application Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.move:0
|
||||
msgid ""
|
||||
"You can not create more than one move per period on centralized journal"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.move.line:0
|
||||
msgid "Company must be the same for its related account and period."
|
||||
msgstr ""
|
||||
"Η εταιρία πρέπει να είναι ίδια για τους σχετικούς λογαριασμούς και περίοδο"
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.move,internal_sequence_number:0
|
||||
#: help:account.move.line,internal_sequence_number:0
|
||||
msgid "Internal Sequence Number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.sequence.installer,number_next:0
|
||||
msgid "Next number of this sequence"
|
||||
msgstr "Επόμενος αριθμός αυτής της ακολουθίας"
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,number_next:0
|
||||
msgid "Next Number"
|
||||
msgstr "Επόμενος Αριθμός"
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,number_increment:0
|
||||
msgid "Increment Number"
|
||||
msgstr "Αριθμός Προσαύξησης"
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.sequence.installer,number_increment:0
|
||||
msgid "The next number of the sequence will be incremented by this number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: view:account.sequence.installer:0
|
||||
msgid "Configure Your Account Sequence Application"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: view:account.sequence.installer:0
|
||||
msgid "Configure"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.sequence.installer,suffix:0
|
||||
msgid "Suffix value of the record for the sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,company_id:0
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.journal,internal_sequence_id:0
|
||||
msgid ""
|
||||
"This sequence will be used to maintain the internal number for the journal "
|
||||
"entries related to this journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,padding:0
|
||||
msgid "Number padding"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: model:ir.model,name:account_sequence.model_account_move_line
|
||||
msgid "Journal Items"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.move,internal_sequence_number:0
|
||||
#: field:account.move.line,internal_sequence_number:0
|
||||
msgid "Internal Number"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.move.line:0
|
||||
msgid "You can not create journal items on an account of type view."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.sequence.installer,padding:0
|
||||
msgid ""
|
||||
"OpenERP will automatically adds some '0' on the left of the 'Next Number' to "
|
||||
"get the required padding size."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,name:0
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.move.line:0
|
||||
msgid "You can not create journal items on closed account."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.journal:0
|
||||
msgid ""
|
||||
"Configuration error! The currency chosen should be shared by the default "
|
||||
"accounts too."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: sql_constraint:account.move.line:0
|
||||
msgid "Wrong credit or debit value in accounting entry !"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.journal,internal_sequence_id:0
|
||||
msgid "Internal Sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.sequence.installer,prefix:0
|
||||
msgid "Prefix value of the record for the sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: model:ir.model,name:account_sequence.model_account_move
|
||||
msgid "Account Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,suffix:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,config_logo:0
|
||||
msgid "Image"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: view:account.sequence.installer:0
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: sql_constraint:account.journal:0
|
||||
msgid "The name of the journal must be unique per company !"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.move.line:0
|
||||
msgid ""
|
||||
"The selected account of your Journal Entry forces to provide a secondary "
|
||||
"currency. You should remove the secondary currency on the account or select "
|
||||
"a multi-currency view on the journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.move.line:0
|
||||
msgid ""
|
||||
"The date of your Journal Entry is not in the defined period! You should "
|
||||
"change the date or remove this constraint from the journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,prefix:0
|
||||
msgid "Prefix"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: sql_constraint:account.journal:0
|
||||
msgid "The code of the journal must be unique per company !"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: model:ir.model,name:account_sequence.model_account_sequence_installer
|
||||
msgid "account.sequence.installer"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: model:ir.model,name:account_sequence.model_account_journal
|
||||
msgid "Journal"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: view:account.sequence.installer:0
|
||||
msgid "You can enhance the Account Sequence Application by installing ."
|
||||
msgstr ""
|
|
@ -25,13 +25,19 @@
|
|||
'author' : 'OpenERP SA',
|
||||
'summary': 'Send Invoices and Track Payments',
|
||||
'description': """
|
||||
eInvoicing & Payments module manage all Voucher Entries such as 'Reconciliation Entries', 'Adjustment Entries', 'Closing or Opening Entries' for Sales, Purchase, Bank, Cash, Expense, Contra.
|
||||
==============================================================================================================================================================================================
|
||||
Invoicing & Payments by Accounting Voucher & Receipts
|
||||
======================================================
|
||||
The specific and easy-to-use Invoicing system in OpenERP allows you to keep track of your accounting, even when you are not an accountant. It provides an easy way to follow up on your suppliers and customers.
|
||||
|
||||
* Voucher Entry
|
||||
* Voucher Receipt [Sales & Purchase]
|
||||
* Voucher Payment [Customer & Supplier]
|
||||
* Cheque Register
|
||||
You could use this simplified accounting in case you work with an (external) account to keep your books, and you still want to keep track of payments.
|
||||
|
||||
The Invoicing system includes receipts and vouchers (an easy way to keep track of sales and purchases). It also offers you an easy method of registering payments, without having to encode complete abstracts of account.
|
||||
|
||||
This module manages:
|
||||
|
||||
* Voucher Entry
|
||||
* Voucher Receipt [Sales & Purchase]
|
||||
* Voucher Payment [Customer & Supplier]
|
||||
""",
|
||||
'category': 'Accounting & Finance',
|
||||
'sequence': 4,
|
||||
|
|
|
@ -272,10 +272,9 @@
|
|||
<field name="tag">reload</field>
|
||||
<field name="params" eval="{'menu_id': ref('account.menu_finance')}"/>
|
||||
</record>
|
||||
<record id="todo_open_invoice_menu" model="ir.actions.todo">
|
||||
<record id="base.open_menu" model="ir.actions.todo">
|
||||
<field name="action_id" ref="action_client_invoice_menu"/>
|
||||
<field name="type">automatic</field>
|
||||
<field name="sequence">100</field>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
units is reached, the account manager
|
||||
is warned by email to renew the contract.
|
||||
</p>
|
||||
<field name="date_start"/>
|
||||
<label for="date" string="End Date"/>
|
||||
<div name="duration">
|
||||
<field name="date" class="oe_inline"/>
|
||||
|
|
|
@ -34,7 +34,8 @@ Allow users to login through Google OAuth2.
|
|||
'depends': ['base', 'web', 'base_setup'],
|
||||
'data': [
|
||||
'auth_oauth_data.xml',
|
||||
'auth_oauth_view.xml'
|
||||
'auth_oauth_view.xml',
|
||||
'security/ir.model.access.csv'
|
||||
],
|
||||
'js': ['static/src/js/auth_oauth.js'],
|
||||
'css': ['static/lib/zocial/css/zocial.css'],
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
<record model="ir.ui.view" id="view_oauth_provider_form">
|
||||
<field name="name">auth.oauth.provider.form</field>
|
||||
<field name="model">auth.oauth.provider</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="arch" version="7.0">
|
||||
<sheet>
|
||||
|
@ -26,7 +25,6 @@
|
|||
<record model="ir.ui.view" id="view_oauth_provider_list">
|
||||
<field name="name">auth.oauth.provider.list</field>
|
||||
<field name="model">auth.oauth.provider</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="arch" version="7.0">
|
||||
<field name="name" />
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_auth_oauth_provider,auth_oauth_provider,model_auth_oauth_provider,base.group_system,1,1,1,1
|
|
|
@ -32,10 +32,6 @@ def message_check(msg, secret):
|
|||
class res_users(osv.osv):
|
||||
_inherit = 'res.users'
|
||||
|
||||
_sql_constraints = [
|
||||
('email_uniq', 'UNIQUE (user_email)', 'You can not have two users with the same email!')
|
||||
]
|
||||
|
||||
def _auth_reset_password_secret(self, cr, uid, context=None):
|
||||
uuid = self.pool.get('ir.config_parameter').get_param(cr, uid, 'database.uuid')
|
||||
res = {
|
||||
|
@ -77,6 +73,7 @@ class res_users(osv.osv):
|
|||
MailMessage.send(cr, uid, [msg_id], context=context)
|
||||
|
||||
def send_reset_password_request(self, cr, uid, email, context=None):
|
||||
# TODO reseting a password knowing only an email is not good enough (email can be shared between multiple logins).
|
||||
ids = self.pool.get('res.users').search(cr, SUPERUSER_ID, [('user_email', '=', email)], context=context)
|
||||
if ids:
|
||||
self._auth_reset_password_send_email(cr, SUPERUSER_ID, email, 'reset_password_email', ids[0], context=context)
|
||||
|
|
|
@ -22,7 +22,6 @@ or by copy-pasting the following URL in your browser: ${object._auth_reset_passw
|
|||
<record id="reset_password_wizard_form_view" model="ir.ui.view">
|
||||
<field name="name">auth.reset_password.form</field>
|
||||
<field name="model">auth.reset_password</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Reset Password" version="7.0">
|
||||
<field name="state" invisible="1"/>
|
||||
|
|
|
@ -25,7 +25,7 @@ class base_config_settings(osv.TransientModel):
|
|||
_inherit = 'base.config.settings'
|
||||
|
||||
_columns = {
|
||||
'auth_signup_uninvited': fields.boolean('allow public users to sign up', help="If unchecked only invited users may sign up"),
|
||||
'auth_signup_uninvited': fields.boolean('Allow public users to sign up', help="If unchecked only invited users may sign up"),
|
||||
'auth_signup_template_user_id': fields.many2one('res.users', 'Template user for new users created through signup'),
|
||||
}
|
||||
|
||||
|
|
|
@ -6,9 +6,6 @@
|
|||
<record id="base.menu_res_company_global" model="ir.ui.menu">
|
||||
<field name="groups_id" eval="[(3, ref('base.group_no_one'))]"/>
|
||||
</record>
|
||||
<record id="base.menu_publisher_warranty" model="ir.ui.menu">
|
||||
<field name="groups_id" eval="[(3, ref('base.group_no_one'))]"/>
|
||||
</record>
|
||||
|
||||
<!-- Specify your terminology config wiz -->
|
||||
<record id="base_setup_terminology_form" model="ir.ui.view">
|
||||
|
|
|
@ -25,16 +25,16 @@ class base_config_settings(osv.osv_memory):
|
|||
_name = 'base.config.settings'
|
||||
_inherit = 'res.config.settings'
|
||||
_columns = {
|
||||
'module_multi_company': fields.boolean('manage multiple companies',
|
||||
'module_multi_company': fields.boolean('Manage multiple companies',
|
||||
help="""Work in multi-company environments, with appropriate security access between companies.
|
||||
This installs the module multi_company."""),
|
||||
'module_share': fields.boolean('allow documents sharing',
|
||||
'module_share': fields.boolean('Allow documents sharing',
|
||||
help="""Share or embbed any screen of openerp."""),
|
||||
'module_portal': fields.boolean('activate the customer/supplier portal',
|
||||
'module_portal': fields.boolean('Activate the customer/supplier portal',
|
||||
help="""Give access your customers and suppliers to their documents."""),
|
||||
'module_auth_anonymous': fields.boolean('activate the public portal',
|
||||
'module_auth_anonymous': fields.boolean('Activate the public portal',
|
||||
help="""Enable the public part of openerp, openerp becomes a public website."""),
|
||||
'module_auth_oauth': fields.boolean('use external authentication providers, sign in with google, facebook, ...'),
|
||||
'module_auth_oauth': fields.boolean('Use external authentication providers, sign in with google, facebook, ...'),
|
||||
'module_base_import': fields.boolean("Allow users to import data from CSV files"),
|
||||
}
|
||||
|
||||
|
@ -57,17 +57,17 @@ class sale_config_settings(osv.osv_memory):
|
|||
_name = 'sale.config.settings'
|
||||
_inherit = 'res.config.settings'
|
||||
_columns = {
|
||||
'module_web_linkedin': fields.boolean('get contacts automatically from LinkedIn',
|
||||
'module_web_linkedin': fields.boolean('Get contacts automatically from linkedIn',
|
||||
help="""When you create a new contact (person or company), you will be able to load all the data from LinkedIn (photos, address, etc)."""),
|
||||
'module_crm': fields.boolean('CRM'),
|
||||
'module_plugin_thunderbird': fields.boolean('enable Thunderbird plugin',
|
||||
'module_plugin_thunderbird': fields.boolean('Enable Thunderbird plugin',
|
||||
help="""The plugin allows you archive email and its attachments to the selected
|
||||
OpenERP objects. You can select a partner, or a lead and
|
||||
attach the selected mail as a .eml file in
|
||||
the attachment of a selected record. You can create documents for CRM Lead,
|
||||
Partner from the selected emails.
|
||||
This installs the module plugin_thunderbird."""),
|
||||
'module_plugin_outlook': fields.boolean('enable Outlook plugin',
|
||||
'module_plugin_outlook': fields.boolean('Enable Outlook plugin',
|
||||
help="""The Outlook plugin allows you to select an object that you would like to add
|
||||
to your email and its attachments from MS Outlook. You can select a partner,
|
||||
or a lead object and archive a selected
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
<div>
|
||||
<p>
|
||||
<label string="You will find more options in your company details: address for the header and footer, overdue payments texts, etc."/>
|
||||
<button type="object" name="open_company" string="Configure Your Company Data" icon="gtk-execute" class="oe_inline oe_link"/>
|
||||
<button type="object" name="open_company" string="Configure your company data" icon="gtk-execute" class="oe_inline oe_link"/>
|
||||
</p>
|
||||
</div>
|
||||
<group>
|
||||
|
|
|
@ -9,9 +9,11 @@
|
|||
<field name="inherit_id" ref="base.res_partner_kanban_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@class='oe_kanban_partner_categories']" position="inside">
|
||||
<t t-foreach="record.category_id.raw_value" t-as="category">
|
||||
<span class="oe_tag" t-att-data-category_id="category"/>
|
||||
</t>
|
||||
<span class="oe_kanban_list_many2many" data-model="res.partner.category">
|
||||
<t t-foreach="record.category_id.raw_value" t-as="category">
|
||||
<span class="oe_tag" t-att-data-list_id="category"/>
|
||||
</t>
|
||||
</span>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
openerp.base_setup = function(openerp) {
|
||||
/* extend kanban to include the names of partner categories in the kanban view of partners */
|
||||
openerp.web_kanban.KanbanView.include({
|
||||
on_groups_started: function() {
|
||||
var self = this;
|
||||
self._super.apply(this, arguments);
|
||||
if (this.dataset.model === 'res.partner') {
|
||||
/* Set names for partner categories */
|
||||
var category_ids = [];
|
||||
this.$el.find('.oe_kanban_partner_categories span').each(function() {
|
||||
category_ids.push($(this).data('category_id'));
|
||||
});
|
||||
var dataset = new openerp.web.DataSetSearch(this, 'res.partner.category', self.session.context);
|
||||
dataset.name_get(_.uniq(category_ids)).then(function(result) {
|
||||
_.each(result, function(value) {
|
||||
self.$el
|
||||
.find('.oe_kanban_partner_categories span[data-category_id=' + value[0] + ']')
|
||||
.html(value[1]);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
|
@ -109,6 +109,7 @@ class res_partner(osv.osv):
|
|||
if not self.check_vat(cr, uid, ids, context=context):
|
||||
msg = self._construct_constraint_msg(cr, uid, ids, context=context)
|
||||
raise osv.except_osv(_('Error!'), msg)
|
||||
return True
|
||||
|
||||
def check_vat(self, cr, uid, ids, context=None):
|
||||
user_company = self.pool.get('res.users').browse(cr, uid, uid).company_id
|
||||
|
|
|
@ -27,35 +27,24 @@
|
|||
'sequence': 2,
|
||||
'summary': 'Leads, Opportunities, Agenda',
|
||||
'description': """
|
||||
The generic OpenERP Customer Relationship Management.
|
||||
The generic OpenERP Customer Relationship Management
|
||||
=====================================================
|
||||
|
||||
This system enables a group of people to intelligently and efficiently manage
|
||||
leads, opportunities, meeting, phonecall.
|
||||
This application enables a group of people to intelligently and efficiently manage leads, opportunities, meetings and phone calls.
|
||||
|
||||
It manages key tasks such as communication, identification, prioritization,
|
||||
assignment, resolution and notification.
|
||||
It manages key tasks such as communication, identification, prioritization, assignment, resolution and notification.
|
||||
|
||||
OpenERP ensures that all cases are successfully tracked by users, customers and
|
||||
suppliers. It can automatically send reminders, escalate the request, trigger
|
||||
specific methods and lots of other actions based on your own enterprise rules.
|
||||
OpenERP ensures that all cases are successfully tracked by users, customers and suppliers. It can automatically send reminders, escalate the request, trigger specific methods and many other actions based on your own enterprise rules.
|
||||
|
||||
The greatest thing about this system is that users don't need to do anything
|
||||
special. They can just send email to the request tracker. OpenERP will take
|
||||
care of thanking them for their message, automatically routing it to the
|
||||
appropriate staff and make sure all future correspondence gets to the right
|
||||
place.
|
||||
The greatest thing about this system is that users don't need to do anything special. The CRM module has an email gateway for the synchronization interface between mails and OpenERP. That way, users can just send emails to the request tracker.
|
||||
|
||||
The CRM module has a email gateway for the synchronisation interface
|
||||
between mails and OpenERP.
|
||||
OpenERP will take care of thanking them for their message, automatically routing it to the appropriate staff and make sure all future correspondence gets to the right place.
|
||||
|
||||
Creates a dashboard for CRM that includes:
|
||||
------------------------------------------
|
||||
* List of New Leads
|
||||
* List of My Opportunities
|
||||
* List of My Next Meetings
|
||||
* Planned Revenue by Stage and User (graph)
|
||||
* Opportunities by Stage (graph)
|
||||
|
||||
Dashboard for CRM will include:
|
||||
-------------------------------
|
||||
* Planned Revenue by Stage and User (graph)
|
||||
* Opportunities by Stage (graph)
|
||||
""",
|
||||
'author': 'OpenERP SA',
|
||||
'website': 'http://www.openerp.com',
|
||||
|
|
|
@ -8,10 +8,9 @@
|
|||
<field name="tag">reload</field>
|
||||
<field name="params" eval="{'menu_id': ref('base.menu_base_partner')}"/>
|
||||
</record>
|
||||
<record id="todo_open_crm_menu" model="ir.actions.todo">
|
||||
<record id="base.open_menu" model="ir.actions.todo">
|
||||
<field name="action_id" ref="action_client_crm_menu"/>
|
||||
<field name="type">automatic</field>
|
||||
<field name="sequence">100</field>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
<record model="crm.case.channel" id="crm_case_channel_website">
|
||||
|
|
|
@ -26,19 +26,19 @@ class crm_configuration(osv.osv_memory):
|
|||
_inherit = ['sale.config.settings', 'fetchmail.config.settings']
|
||||
|
||||
_columns = {
|
||||
'fetchmail_lead': fields.boolean("create leads from incoming mails",
|
||||
'fetchmail_lead': fields.boolean("Create leads from incoming mails",
|
||||
fetchmail_model='crm.lead', fetchmail_name='Incoming Leads',
|
||||
help="""Allows you to configure your incoming mail server, and create leads from incoming emails."""),
|
||||
'module_crm_caldav': fields.boolean("applications with Caldav protocol",
|
||||
'module_crm_caldav': fields.boolean("Applications with Caldav protocol",
|
||||
help="""Use protocol caldav to synchronize meetings with other calendar applications (like Sunbird).
|
||||
This installs the module crm_caldav."""),
|
||||
'module_import_sugarcrm': fields.boolean("SugarCRM",
|
||||
help="""Import SugarCRM leads, opportunities, users, accounts, contacts, employees, meetings, phonecalls, emails, project and project tasks data.
|
||||
This installs the module import_sugarcrm."""),
|
||||
'module_import_google': fields.boolean("Google (Contacts and Calendar)",
|
||||
'module_import_google': fields.boolean("Google (contacts and calendar)",
|
||||
help="""Import google contact in partner address and add google calendar events details in Meeting.
|
||||
This installs the module import_google."""),
|
||||
'module_google_map': fields.boolean("add google maps on customers",
|
||||
'module_google_map': fields.boolean("Add google maps on customers",
|
||||
help="""Locate customers on Google Map.
|
||||
This installs the module google_map."""),
|
||||
'group_fund_raising': fields.boolean("Manage Fund Raising",
|
||||
|
|
|
@ -32,12 +32,6 @@
|
|||
</div>
|
||||
</group>
|
||||
</div>
|
||||
<div name="Customer Features" position="inside">
|
||||
<div>
|
||||
<field name="module_google_map" class="oe_inline"/>
|
||||
<label for="module_google_map"/>
|
||||
</div>
|
||||
</div>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
|
@ -3,18 +3,21 @@
|
|||
<data noupdate="0">
|
||||
|
||||
<record id="base.group_sale_salesman" model="res.groups">
|
||||
<field name="name">User - Own Leads Only</field>
|
||||
<field name="name">User: Own Leads Only</field>
|
||||
<field name="category_id" ref="base.module_category_sales_management"/>
|
||||
<field name="comment">the user will have access to his own data in the sales application.</field>
|
||||
</record>
|
||||
|
||||
<record id="base.group_sale_salesman_all_leads" model="res.groups">
|
||||
<field name="name">User - All Leads</field>
|
||||
<field name="name">User: All Leads</field>
|
||||
<field name="category_id" ref="base.module_category_sales_management"/>
|
||||
<field name="implied_ids" eval="[(4, ref('base.group_sale_salesman'))]"/>
|
||||
<field name="comment">the user will have access to all records of everyone in the sales application.</field>
|
||||
</record>
|
||||
|
||||
<record id="base.group_sale_manager" model="res.groups">
|
||||
<field name="name">Manager</field>
|
||||
<field name="comment">the user will have an access to the sales configuration as well as statistic reports.</field>
|
||||
<field name="category_id" ref="base.module_category_sales_management"/>
|
||||
<field name="implied_ids" eval="[(4, ref('base.group_sale_salesman_all_leads'))]"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
|
|
|
@ -18,9 +18,9 @@
|
|||
assert not lead.partner_id, "Customer should be a new"
|
||||
assert lead.name == "Fournir votre devis avec le meilleur prix.", "Subject does not match"
|
||||
-
|
||||
I reply him request with welcome message.
|
||||
I reply him request with welcome message. TODO revert mail.mail to mail.compose.message (conversion to customer should be automatic).
|
||||
-
|
||||
!python {model: mail.compose.message}: |
|
||||
!python {model: mail.mail}: |
|
||||
lead_ids = self.pool.get('crm.lead').search(cr, uid, [('email_from','=', 'Mr. John Right <info@customer.com>')])
|
||||
context.update({'active_model': 'crm.lead','active_id': lead_ids[0]})
|
||||
id = self.create(cr, uid, {'body': "Merci à l'intérêt pour notre produit.nous vous contacterons bientôt. Merci", 'email_from': 'sales@mycompany.com'}, context=context)
|
||||
|
|
|
@ -26,7 +26,7 @@ class crm_claim_settings(osv.osv_memory):
|
|||
_inherit = ['sale.config.settings', 'fetchmail.config.settings']
|
||||
|
||||
_columns = {
|
||||
'fetchmail_claim': fields.boolean("create claims from incoming mails",
|
||||
'fetchmail_claim': fields.boolean("Create claims from incoming mails",
|
||||
fetchmail_model='crm.claim', fetchmail_name='Incoming Claims',
|
||||
help="""Allows you to configure your incoming mail server, and create claims from incoming emails."""),
|
||||
}
|
||||
|
|
|
@ -8,15 +8,15 @@ msgstr ""
|
|||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||
"PO-Revision-Date: 2012-07-28 18:41+0000\n"
|
||||
"PO-Revision-Date: 2012-09-15 21:58+0000\n"
|
||||
"Last-Translator: Fábio Martinelli - http://zupy.com.br "
|
||||
"<webmaster@guaru.net>\n"
|
||||
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-09-07 04:59+0000\n"
|
||||
"X-Generator: Launchpad (build 15914)\n"
|
||||
"X-Launchpad-Export-Date: 2012-09-16 04:39+0000\n"
|
||||
"X-Generator: Launchpad (build 15944)\n"
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: field:crm.lead.forward.to.partner,send_to:0
|
||||
|
@ -36,7 +36,7 @@ msgstr "Excluir Permanentemente o email após o envio"
|
|||
#. module: crm_partner_assign
|
||||
#: field:crm.lead.report.assign,delay_close:0
|
||||
msgid "Delay to Close"
|
||||
msgstr "Espera para Fechar"
|
||||
msgstr "Adiar Fechamento"
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: help:crm.lead.forward.to.partner,email_to:0
|
||||
|
@ -92,12 +92,12 @@ msgstr "Março"
|
|||
#. module: crm_partner_assign
|
||||
#: selection:crm.lead.report.assign,type:0
|
||||
msgid "Lead"
|
||||
msgstr "Prospécto"
|
||||
msgstr "Prospecto"
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: view:crm.lead.report.assign:0
|
||||
msgid "Delay to close"
|
||||
msgstr "Atraso para fechar"
|
||||
msgstr "Adiar o fechamento"
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: view:crm.partner.report.assign:0
|
||||
|
@ -233,7 +233,7 @@ msgstr "Anterior"
|
|||
#: code:addons/crm_partner_assign/partner_geo_assign.py:36
|
||||
#, python-format
|
||||
msgid "Network error"
|
||||
msgstr "Erro de rede"
|
||||
msgstr "Erro na rede"
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: field:crm.lead.forward.to.partner,email_from:0
|
||||
|
@ -274,12 +274,12 @@ msgstr "Prioridade"
|
|||
#: view:crm.lead.report.assign:0
|
||||
#: field:crm.lead.report.assign,state:0
|
||||
msgid "State"
|
||||
msgstr "Status"
|
||||
msgstr "Situação"
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: field:crm.lead.report.assign,delay_expected:0
|
||||
msgid "Overpassed Deadline"
|
||||
msgstr "Prazo Superado"
|
||||
msgstr "Prazo Ultrapassado"
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: field:crm.lead.report.assign,type:0
|
||||
|
@ -318,12 +318,12 @@ msgstr "Analisar Prospecções"
|
|||
#. module: crm_partner_assign
|
||||
#: field:crm.lead.report.assign,creation_date:0
|
||||
msgid "Creation Date"
|
||||
msgstr "Dt. Criação"
|
||||
msgstr "Data de Criação"
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: field:crm.lead.forward.to.partner,res_id:0
|
||||
msgid "Related Document ID"
|
||||
msgstr "Documento Relacionado"
|
||||
msgstr "ID do Documento Relacionado"
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: view:crm.lead.report.assign:0
|
||||
|
@ -397,7 +397,7 @@ msgstr "Fechar"
|
|||
#. module: crm_partner_assign
|
||||
#: field:crm.lead.forward.to.partner,use_template:0
|
||||
msgid "Use Template"
|
||||
msgstr "Usar modelo"
|
||||
msgstr "Usar Modelo"
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: model:ir.actions.act_window,name:crm_partner_assign.action_report_crm_opportunity_assign
|
||||
|
@ -453,7 +453,7 @@ msgstr "Assunto"
|
|||
#: view:crm.lead.report.assign:0
|
||||
#: view:crm.partner.report.assign:0
|
||||
msgid "Salesman"
|
||||
msgstr "Vendedor"
|
||||
msgstr "Representante"
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: view:crm.lead.report.assign:0
|
||||
|
@ -580,7 +580,7 @@ msgstr "# da Oportunidade"
|
|||
#. module: crm_partner_assign
|
||||
#: view:crm.lead.report.assign:0
|
||||
msgid "Lead Assign"
|
||||
msgstr "Atribuir Prospécto"
|
||||
msgstr "Atribuir Prospecto"
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: selection:crm.lead.report.assign,month:0
|
||||
|
@ -600,7 +600,7 @@ msgstr "Janeiro"
|
|||
#. module: crm_partner_assign
|
||||
#: help:crm.lead,partner_assigned_id:0
|
||||
msgid "Partner this case has been forwarded/assigned to."
|
||||
msgstr "O Parceiro desse Caso foi Enviado/Atribuído para."
|
||||
msgstr "Parceiro para que este caso foi enviado/atribuído"
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: field:crm.lead.forward.to.partner,date:0
|
||||
|
@ -661,7 +661,7 @@ msgstr "Nome da Grade"
|
|||
#. module: crm_partner_assign
|
||||
#: help:crm.lead,date_assign:0
|
||||
msgid "Last date this case was forwarded/assigned to a partner"
|
||||
msgstr "Última data que este Caso foi Enviado/Atribuído a um parceiro"
|
||||
msgstr "Última data que este caso foi enviado/atribuído a um parceiro"
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: selection:crm.lead.report.assign,state:0
|
||||
|
@ -679,7 +679,9 @@ msgstr "Cópia oculta da mensagem para os destinatários"
|
|||
msgid ""
|
||||
"Full message headers, e.g. SMTP session headers (usually available on "
|
||||
"inbound messages only)"
|
||||
msgstr "Cabeçalho completo, Ex Cabecalhos SMTP"
|
||||
msgstr ""
|
||||
"Cabeçalho completo da mensagem, Ex. SMTP session headers (geralmente "
|
||||
"disponível somente para mensagens recebidas)"
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: field:res.partner,date_localization:0
|
||||
|
@ -808,7 +810,7 @@ msgstr "Abril"
|
|||
#: model:ir.actions.act_window,name:crm_partner_assign.action_report_crm_partner_assign
|
||||
#: model:ir.ui.menu,name:crm_partner_assign.menu_report_crm_partner_assign_tree
|
||||
msgid "Partnership Analysis"
|
||||
msgstr "Analise de Parceria"
|
||||
msgstr "Análise de Parceria"
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: model:ir.model,name:crm_partner_assign.model_crm_lead
|
||||
|
@ -839,7 +841,7 @@ msgstr ""
|
|||
#. module: crm_partner_assign
|
||||
#: constraint:res.partner:0
|
||||
msgid "Error ! You cannot create recursive associated members."
|
||||
msgstr "Erro! Você não pode criar recursivamente a membros associados."
|
||||
msgstr "Erro! Você não pode criar membros associados recursivamente."
|
||||
|
||||
#. module: crm_partner_assign
|
||||
#: selection:crm.lead.forward.to.partner,history:0
|
||||
|
|
|
@ -0,0 +1,96 @@
|
|||
# Russian translation for openobject-addons
|
||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||
"PO-Revision-Date: 2012-09-14 06:29+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Russian <ru@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-09-15 04:55+0000\n"
|
||||
"X-Generator: Launchpad (build 15944)\n"
|
||||
|
||||
#. module: crm_todo
|
||||
#: model:ir.model,name:crm_todo.model_project_task
|
||||
msgid "Task"
|
||||
msgstr "Задачи"
|
||||
|
||||
#. module: crm_todo
|
||||
#: view:crm.lead:0
|
||||
msgid "Timebox"
|
||||
msgstr "Резерв времени"
|
||||
|
||||
#. module: crm_todo
|
||||
#: view:crm.lead:0
|
||||
msgid "For cancelling the task"
|
||||
msgstr "Для отмены задачи"
|
||||
|
||||
#. module: crm_todo
|
||||
#: constraint:project.task:0
|
||||
msgid "Error ! Task end-date must be greater then task start-date"
|
||||
msgstr ""
|
||||
"Ошибка! Дата завершения задачи должна быть позднее чем дата начала задачи"
|
||||
|
||||
#. module: crm_todo
|
||||
#: model:ir.model,name:crm_todo.model_crm_lead
|
||||
msgid "crm.lead"
|
||||
msgstr "crm.lead"
|
||||
|
||||
#. module: crm_todo
|
||||
#: view:crm.lead:0
|
||||
msgid "Next"
|
||||
msgstr "Далее"
|
||||
|
||||
#. module: crm_todo
|
||||
#: model:ir.actions.act_window,name:crm_todo.crm_todo_action
|
||||
#: model:ir.ui.menu,name:crm_todo.menu_crm_todo
|
||||
msgid "My Tasks"
|
||||
msgstr "Мои задачи"
|
||||
|
||||
#. module: crm_todo
|
||||
#: view:crm.lead:0
|
||||
#: field:crm.lead,task_ids:0
|
||||
msgid "Tasks"
|
||||
msgstr "Задачи"
|
||||
|
||||
#. module: crm_todo
|
||||
#: view:crm.lead:0
|
||||
msgid "Done"
|
||||
msgstr "Сделано"
|
||||
|
||||
#. module: crm_todo
|
||||
#: constraint:project.task:0
|
||||
msgid "Error ! You cannot create recursive tasks."
|
||||
msgstr "Ошибка! Вы не можете создавать рекурсивные задачи."
|
||||
|
||||
#. module: crm_todo
|
||||
#: view:crm.lead:0
|
||||
msgid "Cancel"
|
||||
msgstr "Отмена"
|
||||
|
||||
#. module: crm_todo
|
||||
#: view:crm.lead:0
|
||||
msgid "Extra Info"
|
||||
msgstr "Доп. инфо."
|
||||
|
||||
#. module: crm_todo
|
||||
#: field:project.task,lead_id:0
|
||||
msgid "Lead / Opportunity"
|
||||
msgstr "Кандидат / предложение"
|
||||
|
||||
#. module: crm_todo
|
||||
#: view:crm.lead:0
|
||||
msgid "For changing to done state"
|
||||
msgstr "Для смены в состояние \"Сделано\""
|
||||
|
||||
#. module: crm_todo
|
||||
#: view:crm.lead:0
|
||||
msgid "Previous"
|
||||
msgstr "Назад"
|
|
@ -69,7 +69,7 @@ class document_directory(osv.osv):
|
|||
}
|
||||
|
||||
|
||||
def _get_root_directory(self, cr,uid, context=None):
|
||||
def _get_root_directory(self, cr, uid, context=None):
|
||||
objid=self.pool.get('ir.model.data')
|
||||
try:
|
||||
mid = objid._get_id(cr, uid, 'document', 'dir_root')
|
||||
|
@ -77,9 +77,7 @@ class document_directory(osv.osv):
|
|||
return False
|
||||
root_id = objid.read(cr, uid, mid, ['res_id'])['res_id']
|
||||
return root_id
|
||||
except Exception, e:
|
||||
|
||||
_logger.warning('Cannot set directory root:'+ str(e))
|
||||
except Exception:
|
||||
return False
|
||||
return objid.browse(cr, uid, mid, context=context).res_id
|
||||
|
||||
|
|
|
@ -114,7 +114,7 @@
|
|||
<field name="model">report.document.user</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Files by User" type="pie">
|
||||
<field name="user" />
|
||||
<field name="user_id" />
|
||||
<field name="nbr" operator="+"/>
|
||||
</graph>
|
||||
</field>
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
</record>
|
||||
<record id="demo_category1" model="document.page">
|
||||
<field name="name">OpenERP Features</field>
|
||||
<field name="sequence">10</field>
|
||||
<field name="type">category</field>
|
||||
<field name="content">
|
||||
Summary of the feature
|
||||
|
|
|
@ -65,7 +65,6 @@ class document_page_create_menu(osv.osv_memory):
|
|||
'view_id': False,
|
||||
'type': 'ir.actions.act_window',
|
||||
'target': 'inlineview',
|
||||
'nodestroy': True,
|
||||
}
|
||||
value['domain'] = "[('parent_id','=',%d)]" % (page.id)
|
||||
value['res_id'] = page.id
|
||||
|
|
|
@ -25,21 +25,18 @@
|
|||
'name': 'Events Organisation',
|
||||
'version': '0.1',
|
||||
'category': 'Tools',
|
||||
'summary': 'For Trainings, Conferences & Meetings',
|
||||
'summary': 'Trainings, Conferences, Meetings, Exhibitions, Registrations',
|
||||
'description': """
|
||||
Organization and management of Events.
|
||||
======================================
|
||||
|
||||
This module allows you:
|
||||
-----------------------
|
||||
* to manage your events and their registrations
|
||||
* to use emails to automatically confirm and send acknowledgements for any
|
||||
registration to an event
|
||||
The event module allows you to efficiently organise events and all related tasks: planification, registration tracking,
|
||||
attendances, etc.
|
||||
|
||||
Note that:
|
||||
----------
|
||||
- You can define new types of events in
|
||||
**Events** / **Configuration** / **Types of Events**
|
||||
Key Features
|
||||
------------
|
||||
* Manage your Events and Registrations
|
||||
* Use emails to automatically confirm and send acknowledgements for any event registration
|
||||
""",
|
||||
'author': 'OpenERP SA',
|
||||
'depends': ['base_setup', 'board', 'email_template', 'google_map'],
|
||||
|
|
|
@ -7,10 +7,9 @@
|
|||
<field name="tag">reload</field>
|
||||
<field name="params" eval="{'menu_id': ref('event.event_main_menu')}"/>
|
||||
</record>
|
||||
<record id="todo_open_event_menu" model="ir.actions.todo">
|
||||
<record id="base.open_menu" model="ir.actions.todo">
|
||||
<field name="action_id" ref="action_client_event_menu"/>
|
||||
<field name="type">automatic</field>
|
||||
<field name="sequence">100</field>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
<!-- notify all employees of module installation -->
|
||||
|
|
|
@ -39,10 +39,9 @@
|
|||
</record>
|
||||
|
||||
<!-- register configuration wizard -->
|
||||
<record id="config_wizard_config_moodle" model="ir.actions.todo">
|
||||
<record id="base.open_menu" model="ir.actions.todo">
|
||||
<field name="action_id" ref="configure_moodle"/>
|
||||
<field name="type">automatic</field>
|
||||
<field name="name">Configuration of moodle</field>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
|
||||
<menuitem name="Moodle Configuration" parent="base.menu_marketing_config_root" id="wizard_moodle" action="configure_moodle"/>
|
||||
|
|
|
@ -81,8 +81,6 @@ class sale_order_line(osv.osv):
|
|||
'nb_register': int(order_line.product_uom_qty),
|
||||
'email': order_line.order_id.partner_id.email,
|
||||
'phone': order_line.order_id.partner_id.phone,
|
||||
'street': order_line.order_id.partner_invoice_id.street,
|
||||
'city': order_line.order_id.partner_invoice_id.city,
|
||||
'origin': order_line.order_id.name,
|
||||
'event_id': order_line.event_id.id,
|
||||
}
|
||||
|
|
|
@ -38,12 +38,12 @@ class google_login(osv.osv_memory):
|
|||
|
||||
def google_login(self, user, password, type='', context=None):
|
||||
if type == 'group':
|
||||
gd_client = gdata.contacts.client.ContactsClient(source='OpenERP')
|
||||
if type == 'contact':
|
||||
gd_client = gdata.contacts.service.ContactsService()
|
||||
if type == 'calendar':
|
||||
elif type == 'contact':
|
||||
gd_client = gdata.contacts.service.ContactsService()
|
||||
elif type == 'calendar':
|
||||
gd_client = gdata.calendar.service.CalendarService()
|
||||
if type =='docs_client':
|
||||
elif type =='docs_client':
|
||||
gd_client = gdata.docs.client.DocsClient()
|
||||
else:
|
||||
gd_client = gdata.contacts.service.ContactsService()
|
||||
|
|
|
@ -26,16 +26,19 @@
|
|||
'category': 'Human Resources',
|
||||
'sequence': 12,
|
||||
'website': 'http://www.openerp.com',
|
||||
'summary': 'All Infos on Employees',
|
||||
'summary': 'Jobs, Departments, Employees Details',
|
||||
'description': """
|
||||
Module for Human Resource Management.
|
||||
=====================================
|
||||
Human Resources Management
|
||||
=========================
|
||||
|
||||
This application enables you to manage important aspects of your company's staff and other details such as their skills, contacts, working time...
|
||||
|
||||
|
||||
You can manage:
|
||||
---------------
|
||||
* Employees and hierarchies : You can define your employee with User and display hierarchies
|
||||
* HR Departments
|
||||
* HR Jobs
|
||||
* Employees and hierarchies : You can define your employee with User and display hierarchies
|
||||
* HR Departments
|
||||
* HR Jobs
|
||||
""",
|
||||
'author': 'OpenERP SA',
|
||||
'website': 'http://www.openerp.com',
|
||||
|
|
|
@ -26,23 +26,23 @@ class hr_config_settings(osv.osv_memory):
|
|||
_inherit = 'res.config.settings'
|
||||
|
||||
_columns = {
|
||||
'module_hr_timesheet_sheet': fields.boolean('allow timesheets validation by managers',
|
||||
'module_hr_timesheet_sheet': fields.boolean('Allow timesheets validation by managers',
|
||||
help ="""This installs the module hr_timesheet_sheet."""),
|
||||
'module_hr_attendance': fields.boolean('track attendances',
|
||||
'module_hr_attendance': fields.boolean('Track attendances',
|
||||
help ="""This installs the module hr_attendance."""),
|
||||
'module_hr_timesheet': fields.boolean('manage timesheets',
|
||||
'module_hr_timesheet': fields.boolean('Manage timesheets',
|
||||
help ="""This installs the module hr_timesheet."""),
|
||||
'module_hr_holidays': fields.boolean('manage holidays, leaves and allocation requests',
|
||||
'module_hr_holidays': fields.boolean('Manage holidays, leaves and allocation requests',
|
||||
help ="""This installs the module hr_holidays."""),
|
||||
'module_hr_expense': fields.boolean('manage employees expenses',
|
||||
'module_hr_expense': fields.boolean('Manage employees expenses',
|
||||
help ="""This installs the module hr_expense."""),
|
||||
'module_hr_recruitment': fields.boolean('manage the recruitment process',
|
||||
'module_hr_recruitment': fields.boolean('Manage the recruitment process',
|
||||
help ="""This installs the module hr_recruitment."""),
|
||||
'module_hr_contract': fields.boolean('record contracts per employee',
|
||||
'module_hr_contract': fields.boolean('Record contracts per employee',
|
||||
help ="""This installs the module hr_contract."""),
|
||||
'module_hr_evaluation': fields.boolean('organize employees periodic evaluation',
|
||||
'module_hr_evaluation': fields.boolean('Organize employees periodic evaluation',
|
||||
help ="""This installs the module hr_evaluation."""),
|
||||
'module_hr_payroll': fields.boolean('manage payroll',
|
||||
'module_hr_payroll': fields.boolean('Manage payroll',
|
||||
help ="""This installs the module hr_payroll."""),
|
||||
}
|
||||
|
||||
|
|
|
@ -7,10 +7,9 @@
|
|||
<field name="tag">reload</field>
|
||||
<field name="params" eval="{'menu_id': ref('menu_hr_root')}"/>
|
||||
</record>
|
||||
<record id="todo_open_hr_menu" model="ir.actions.todo">
|
||||
<record id="base.open_menu" model="ir.actions.todo">
|
||||
<field name="action_id" ref="action_client_hr_menu"/>
|
||||
<field name="type">automatic</field>
|
||||
<field name="sequence">100</field>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
</data>
|
||||
<data>
|
||||
|
|
|
@ -25,19 +25,27 @@
|
|||
'author': 'OpenERP SA',
|
||||
'category': 'Human Resources',
|
||||
'website': 'http://www.openerp.com',
|
||||
'summary': 'Periodical Evaluations, Surveys',
|
||||
'summary': 'Periodical Evaluations, Appraisals, Surveys',
|
||||
'images': ['images/hr_evaluation_analysis.jpeg','images/hr_evaluation.jpeg'],
|
||||
'depends': ['hr','base_calendar','survey'],
|
||||
'description': """
|
||||
Ability to create employees evaluation.
|
||||
=======================================
|
||||
Periodical Employees evaluation and appraisals
|
||||
==============================================
|
||||
|
||||
An evaluation can be created by employee for subordinates, juniors as well as
|
||||
his manager. The evaluation is done under a plan in which various surveys can be
|
||||
created and it can be defined which level of employee hierarchy fills what and
|
||||
final review and evaluation is done by the manager. Every evaluation filled by
|
||||
the employees can be viewed in the form of pdf file.
|
||||
""",
|
||||
By using this application you can maintain the motivational process by doing periodical evaluations of your employees' performance. The regular assessment of human resources can benefit your people as well your organization.
|
||||
|
||||
An evaluation plan can be assigned to each employee. These plans define the frequency and the way you manage your periodic personal evaluations. You will be able to define steps and attach interview forms to each step.
|
||||
|
||||
Manages several types of evaluations: bottom-up, top-down, self-evaluations and the final evaluation by the manager.
|
||||
|
||||
Key Features
|
||||
------------
|
||||
* Ability to create employees evaluations.
|
||||
* An evaluation can be created by an employee for subordinates, juniors as well as his manager.
|
||||
* The evaluation is done according to a plan in which various surveys can be created. Each survey can be answered by a particular level in the employees hierarchy. The final review and evaluation is done by the manager.
|
||||
* Every evaluation filled by employees can be viewed in a PDF form.
|
||||
* Interview Requests are generated automatically by OpenERP according to employees evaluation plans. Each user receives automatic emails and requests to perform a periodical evaluation of their colleagues.
|
||||
""",
|
||||
"demo": ["hr_evaluation_demo.xml"],
|
||||
"data": [
|
||||
'security/ir.model.access.csv',
|
||||
|
|
|
@ -1,17 +1,10 @@
|
|||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record id="hr.todo_open_hr_menu" model="ir.actions.todo">
|
||||
<field name="state">done</field>
|
||||
</record>
|
||||
</data>
|
||||
|
||||
<data noupdate="1">
|
||||
<!-- After installation of the module, open the related menu -->
|
||||
<record id="todo_open_hr_menu" model="ir.actions.todo">
|
||||
<record id="base.open_menu" model="ir.actions.todo">
|
||||
<field name="action_id" ref="hr.action_client_hr_menu"/>
|
||||
<field name="type">automatic</field>
|
||||
<field name="sequence">100</field>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
<!-- notify all employees of module installation -->
|
||||
<record model="mail.message" id="module_install_notification">
|
||||
|
|
|
@ -27,19 +27,21 @@
|
|||
'sequence': 30,
|
||||
'summary': 'Expenses Validation, Invoicing',
|
||||
'description': """
|
||||
This module aims to manage employee expenses.
|
||||
=============================================
|
||||
Manage expenses by Employees
|
||||
============================
|
||||
|
||||
The whole workflow is implemented:
|
||||
This application allows you to manage your employees' daily expenses. It gives you access to your employees’ fee notes and give you the right to complete and validate or refuse the notes. After validation it creates an invoice for the employee.
|
||||
Employee can encode their own expenses and the validation flow puts it automatically in the accounting after validation by managers.
|
||||
|
||||
|
||||
The whole flow is implemented as:
|
||||
----------------------------------
|
||||
* Draft expense
|
||||
* Confirmation of the sheet by the employee
|
||||
* Validation by his manager
|
||||
* Validation by the accountant and receipt creation
|
||||
* Draft expense
|
||||
* Confirmation of the sheet by the employee
|
||||
* Validation by his manager
|
||||
* Validation by the accountant and receipt creation
|
||||
|
||||
This module also uses the analytic accounting and is compatible with
|
||||
the invoice on timesheet module so that you will be able to automatically
|
||||
re-invoice your customer's expenses if your work by project.
|
||||
This module also uses analytic accounting and is compatible with the invoice on timesheet module so that you are able to automatically re-invoice your customers' expenses if your work by project.
|
||||
""",
|
||||
'author': 'OpenERP SA',
|
||||
'website': 'http://www.openerp.com',
|
||||
|
|
|
@ -1,15 +1,9 @@
|
|||
<openerp>
|
||||
<data>
|
||||
<record id="hr.todo_open_hr_menu" model="ir.actions.todo">
|
||||
<field name="state">done</field>
|
||||
</record>
|
||||
</data>
|
||||
<data noupdate="1">
|
||||
<!-- After installation of the module, open the related menu -->
|
||||
<record id="todo_open_hr_menu" model="ir.actions.todo">
|
||||
<record id="base.open_menu" model="ir.actions.todo">
|
||||
<field name="action_id" ref="hr.action_client_hr_menu"/>
|
||||
<field name="type">automatic</field>
|
||||
<field name="sequence">100</field>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
</data>
|
||||
<data>
|
||||
|
|
|
@ -29,33 +29,20 @@
|
|||
'summary': 'Holidays, Allocation and Leave Requests',
|
||||
'website': 'http://www.openerp.com',
|
||||
'description': """
|
||||
This module allows you to manage leaves and leave requests.
|
||||
===========================================================
|
||||
Manage leaves and allocation requests
|
||||
=====================================
|
||||
|
||||
Implements a dashboard for human resource management that includes:
|
||||
-------------------------------------------------------------------
|
||||
* Leaves
|
||||
This application controls the holiday schedule of your company. It allows employees to request holidays. Then, managers can review requests for holidays and approve or reject them. This way you can control the overall holiday planning for the company or department.
|
||||
|
||||
Note that:
|
||||
~~~~~~~~~~
|
||||
- A synchronisation with an internal agenda (use of the CRM module) is
|
||||
possible: in order to automatically create a case when an holiday request
|
||||
is accepted, you have to link the holidays status to a case section. You
|
||||
can setup this info and your colour preferences in
|
||||
|
||||
**Human Resources** / **Configuration** / **Leave Type**
|
||||
- An employee can make an ask for more off-days by making a new Allocation. It will increase his total of that leave type available (if the request is accepted).
|
||||
- There are two ways to print the employee's holidays:
|
||||
* The first will allow to choose employees by department and is used by clicking the menu item located in
|
||||
**Reporting** / **Human Resources** / **Leaves** / **Leaves by Department**
|
||||
* The second will allow you to choose the holidays report for specific employees. Go on the list
|
||||
**Human Resources** / **Human Resources** / **Employees**
|
||||
then select the ones you want to choose, click on the print icon and select the option
|
||||
'Leaves Summary'
|
||||
- The wizard allows you to choose if you want to print either the Approved & Confirmed holidays or both. These states must be set up by a user from the group 'HR'. You can define these features in the security tab from the user data in
|
||||
**Settings** / **Users** / **Users**
|
||||
|
||||
for example, you maybe will do it for the user 'admin'.
|
||||
You can configure several kinds of leaves (sickness, holidays, paid days, ...) and allocate leaves to an employee or department quickly using allocation requests. An employee can also make a request for more days off by making a new Allocation. It will increase the total of available days for that leave type (if the request is accepted).
|
||||
|
||||
You can keep track of leaves in different ways by following reports:
|
||||
|
||||
* Leaves Summary
|
||||
* Leaves by Department
|
||||
* Leaves Analysis
|
||||
|
||||
A synchronization with an internal agenda (Meetings of the CRM module) is also possible in order to automatically create a meeting when a holiday request is accepted by setting up a type of meeting in Leave Type.
|
||||
""",
|
||||
'images': ['images/hr_allocation_requests.jpeg', 'images/hr_leave_requests.jpeg', 'images/leaves_analysis.jpeg'],
|
||||
'depends': ['hr', 'base_calendar', 'process', 'resource'],
|
||||
|
|
|
@ -1,16 +1,10 @@
|
|||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record id="hr.todo_open_hr_menu" model="ir.actions.todo">
|
||||
<field name="state">done</field>
|
||||
</record>
|
||||
</data>
|
||||
<data noupdate="1">
|
||||
<!-- After installation of the module, open the related menu -->
|
||||
<record id="todo_open_hr_menu" model="ir.actions.todo">
|
||||
<record id="base.open_menu" model="ir.actions.todo">
|
||||
<field name="action_id" ref="hr.action_client_hr_menu"/>
|
||||
<field name="type">automatic</field>
|
||||
<field name="sequence">100</field>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
<!-- notify all employees of module installation -->
|
||||
<record model="mail.message" id="module_install_notification">
|
||||
|
|
|
@ -99,8 +99,8 @@
|
|||
<menuitem
|
||||
id="menu_hr_payroll_structure_view"
|
||||
action="action_view_hr_payroll_structure_list_form"
|
||||
parent="hr.menu_hr_configuration"
|
||||
sequence="20"
|
||||
parent="payroll_configure"
|
||||
sequence="2"
|
||||
/>
|
||||
<record id="action_view_hr_payroll_structure_tree" model="ir.actions.act_window">
|
||||
<field name="name">Salary Structures Hierarchy</field>
|
||||
|
|
|
@ -24,6 +24,6 @@ from osv import osv, fields
|
|||
class human_resources_configuration(osv.osv_memory):
|
||||
_inherit = 'hr.config.settings'
|
||||
_columns = {
|
||||
'module_hr_payroll_account': fields.boolean('link your payroll to accounting system',
|
||||
help ="""Create Journal Entries from Payslips"""),
|
||||
'module_hr_payroll_account': fields.boolean('Link your payroll to accounting system',
|
||||
help ="""Create journal entries from payslips"""),
|
||||
}
|
||||
|
|
|
@ -25,17 +25,16 @@
|
|||
'version': '1.0',
|
||||
'category': 'Human Resources',
|
||||
'sequence': 24,
|
||||
'summary': 'Recruitment Process, Job Descriptions',
|
||||
'summary': 'Jobs, Recruitment, Applications, Job Interviews',
|
||||
'description': """
|
||||
Manages job positions and the recruitment process.
|
||||
==================================================
|
||||
Manage job positions and the recruitment process
|
||||
=================================================
|
||||
|
||||
It's integrated with the survey module to allow you to define interview for different jobs.
|
||||
This application allows you to easily keep track of jobs, vacancies, applications, interviews...
|
||||
|
||||
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.
|
||||
""",
|
||||
It is integrated with the mail gateway to automatically fetch email sent to <jobs@yourcompany.com> in the list of applications. It's also integrated with the document management system to store and search in the CV base and find the candidate that you are looking for. Similarly, it is integrated with the survey module to allow you to define interviews for different jobs.
|
||||
You can define the different phases of interviews and easily rate the applicant from the kanban view.
|
||||
""",
|
||||
'author': 'OpenERP SA',
|
||||
'website': 'http://www.openerp.com',
|
||||
'images': ['images/hr_recruitment_analysis.jpeg','images/hr_recruitment_applicants.jpeg'],
|
||||
|
|
|
@ -194,7 +194,7 @@ class hr_applicant(base_stage, osv.Model):
|
|||
When the case is over, the state is set to \'Done\'.\
|
||||
If the case needs to be reviewed then the state is \
|
||||
set to \'Pending\'.'),
|
||||
'categ_ids': fields.many2many('hr.applicant_category', string='Categories'),
|
||||
'categ_ids': fields.many2many('hr.applicant_category', string='Tags'),
|
||||
'company_id': fields.many2one('res.company', 'Company'),
|
||||
'user_id': fields.many2one('res.users', 'Responsible'),
|
||||
# Applicant Columns
|
||||
|
@ -398,7 +398,7 @@ class hr_applicant(base_stage, osv.Model):
|
|||
for applicant in self.browse(cr, uid, ids, context=context):
|
||||
address_id = False
|
||||
if applicant.partner_id:
|
||||
address_id = applicant.partner_id.address_get(['contact'])['contact']
|
||||
address_id = self.pool.get('res.partner').address_get(cr,uid,[applicant.partner_id.id],['contact'])['contact']
|
||||
if applicant.job_id:
|
||||
applicant.job_id.write({'no_of_recruitment': applicant.job_id.no_of_recruitment - 1})
|
||||
emp_id = hr_employee.create(cr,uid,{'name': applicant.partner_name or applicant.name,
|
||||
|
|
|
@ -337,7 +337,7 @@
|
|||
<field name="no_of_recruitment" version="7.0" position="after">
|
||||
<label for="survey_id" groups="base.group_user"/>
|
||||
<div groups="base.group_user">
|
||||
<field name="survey_id" class="oe_inline"/>
|
||||
<field name="survey_id" class="oe_inline" domain="[('type','=','Human Resources')]"/>
|
||||
<button class="oe_inline"
|
||||
string="Interview"
|
||||
name="action_print_survey" type="object"
|
||||
|
|
|
@ -26,10 +26,10 @@ class hr_applicant_settings(osv.osv_memory):
|
|||
_inherit = ['hr.config.settings', 'fetchmail.config.settings']
|
||||
|
||||
_columns = {
|
||||
'module_document_ftp': fields.boolean('allow the automatic indexation of resumes',
|
||||
'module_document_ftp': fields.boolean('Allow the automatic indexation of resumes',
|
||||
help="""Manage your CV's and motivation letter related to all applicants.
|
||||
This installs the module document_ftp. This will install the knowledge management module in order to allow you to search using specific keywords through the content of all documents (PDF, .DOCx...)"""),
|
||||
'fetchmail_applicants': fields.boolean('create applicants from an incoming email account',
|
||||
'fetchmail_applicants': fields.boolean('Create applicants from an incoming email account',
|
||||
fetchmail_model='hr.applicant', fetchmail_name='Incoming HR Applications',
|
||||
help ="""Allow applicants to send their job application to an email address (jobs@mycompany.com),
|
||||
and create automatically application documents in the system."""),
|
||||
|
|
|
@ -2,17 +2,12 @@
|
|||
<openerp>
|
||||
<data noupdate="1">
|
||||
<!-- After installation of the module, open the related menu -->
|
||||
<record id="todo_open_hr_menu" model="ir.actions.todo">
|
||||
<record id="base.open_menu" model="ir.actions.todo">
|
||||
<field name="action_id" ref="hr.action_client_hr_menu"/>
|
||||
<field name="type">automatic</field>
|
||||
<field name="sequence">100</field>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
</data>
|
||||
<data>
|
||||
<record id="hr.todo_open_hr_menu" model="ir.actions.todo">
|
||||
<field name="state">done</field>
|
||||
</record>
|
||||
|
||||
<record id="view_hr_apll_config_settings" model="ir.ui.view">
|
||||
<field name="name">hr settings for recruitment</field>
|
||||
<field name="model">hr.config.settings</field>
|
||||
|
|
|
@ -137,11 +137,13 @@ class hr_analytic_timesheet(osv.osv):
|
|||
if context is None:
|
||||
context = {}
|
||||
emp_id = emp_obj.search(cr, uid, [('user_id', '=', context.get('user_id', uid))], context=context)
|
||||
if emp_id:
|
||||
emp = emp_obj.browse(cr, uid, emp_id[0], context=context)
|
||||
if emp.journal_id:
|
||||
return emp.journal_id.id
|
||||
return False
|
||||
if not emp_id :
|
||||
raise osv.except_osv(_('Warning!'), _('Please create an employee for this user, using the menu: Human Resources > Employees.'))
|
||||
emp = emp_obj.browse(cr, uid, emp_id[0], context=context)
|
||||
if emp.journal_id:
|
||||
return emp.journal_id.id
|
||||
else :
|
||||
raise osv.except_osv(_('Warning!'), _('No analytic journal defined for \'%s\'.\nYou should assign an analytic journal on the employee form.')%(emp.name))
|
||||
|
||||
|
||||
_defaults = {
|
||||
|
|
|
@ -27,27 +27,21 @@
|
|||
'sequence': 16,
|
||||
'summary': 'Timesheets, Attendances, Activities',
|
||||
'description': """
|
||||
This module helps you to easily record and validate timesheets and attendances within the same view.
|
||||
====================================================================================================
|
||||
Record and validate timesheets and attendances easily
|
||||
=====================================================
|
||||
|
||||
* It will maintain attendances and track (sign in/sign out) events.
|
||||
* Track the timesheet lines.
|
||||
This application supplies a new screen enabling you to manage both attendances (Sign in/Sign out) and your work encoding (timesheet) by period. Timesheet entries are made by employees each day. At the end of the defined period, employees validate their sheet and the manager must then approve his team's entries. Periods are defined in the company forms and you can set them to run monthly or weekly.
|
||||
|
||||
Other tabs contains statistics views to help you analyse your time or the time of your team:
|
||||
--------------------------------------------------------------------------------------------
|
||||
* Time spent by day (with attendances)
|
||||
* Time spent by project
|
||||
|
||||
This module also implements a complete timesheet validation process:
|
||||
--------------------------------------------------------------------
|
||||
* Draft sheet
|
||||
* Confirmation at the end of the period by the employee
|
||||
* Validation by the project manager
|
||||
The complete timesheet validation process is:
|
||||
---------------------------------------------
|
||||
* Draft sheet
|
||||
* Confirmation at the end of the period by the employee
|
||||
* Validation by the project manager
|
||||
|
||||
The validation can be configured in the company:
|
||||
------------------------------------------------
|
||||
* Period size (day, week, month, year)
|
||||
* Maximal difference between timesheet and attendances
|
||||
* Period size (Day, Week, Month)
|
||||
* Maximal difference between timesheet and attendances
|
||||
""",
|
||||
'author': 'OpenERP SA',
|
||||
'website': 'http://www.openerp.com',
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Timesheet" version="7.0">
|
||||
<header>
|
||||
<button name="button_confirm" states="draft" string="Submited to Manager" type="object" class="oe_highlight"/>
|
||||
<button name="button_confirm" states="draft" string="Submit to Manager" type="object" class="oe_highlight"/>
|
||||
<button name="done" states="confirm" string="Approve" type="workflow" groups="base.group_hr_user" class="oe_highlight"/>
|
||||
<button name="action_set_to_draft" states="done" string="Set to Draft" type="object" />
|
||||
<button name="cancel" states="confirm" string="Refuse" type="workflow" groups="base.group_hr_user" />
|
||||
|
|
|
@ -976,7 +976,7 @@ msgstr ""
|
|||
|
||||
#. module: hr_timesheet_sheet
|
||||
#: view:hr_timesheet_sheet.sheet:0
|
||||
msgid "Submited to Manager"
|
||||
msgid "Submit to Manager"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_timesheet_sheet
|
||||
|
|
|
@ -2,16 +2,12 @@
|
|||
<openerp>
|
||||
<data noupdate="1">
|
||||
<!-- After installation of the module, open the related menu -->
|
||||
<record id="todo_open_hr_menu" model="ir.actions.todo">
|
||||
<record id="base.open_menu" model="ir.actions.todo">
|
||||
<field name="action_id" ref="hr.action_client_hr_menu"/>
|
||||
<field name="type">automatic</field>
|
||||
<field name="sequence">100</field>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
</data>
|
||||
<data>
|
||||
<record id="hr.todo_open_hr_menu" model="ir.actions.todo">
|
||||
<field name="state">done</field>
|
||||
</record>
|
||||
<record id="view_hr_timehseet_config_settings" model="ir.ui.view">
|
||||
<field name="name">hr settings for timesheets</field>
|
||||
<field name="model">hr.config.settings</field>
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
!record {model: hr.attendance, id: hr_attendance_1}:
|
||||
action: sign_out
|
||||
employee_id: 'hr.employee_qdp'
|
||||
name: !eval (datetime.now() + timedelta(hours=8.25)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
name: !eval (datetime.now() + timedelta(minutes=1)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
-
|
||||
I create Timesheet Entry for time spend on today work.
|
||||
-
|
||||
|
@ -102,6 +102,11 @@
|
|||
product_id: product.product_product_consultant
|
||||
general_account_id: account.a_expense
|
||||
journal_id: hr_timesheet.analytic_journal
|
||||
-
|
||||
I set an allowed difference of 25 hours
|
||||
-
|
||||
!record {model: res.company, id: base.main_company}:
|
||||
timesheet_max_difference: 25.00
|
||||
-
|
||||
I tried again to confirm the timesheet after modification.
|
||||
-
|
||||
|
|
|
@ -421,11 +421,11 @@ class import_framework(Thread):
|
|||
def _send_notification_email(self, result, error):
|
||||
if not self.email:
|
||||
return False
|
||||
email_obj = self.obj.pool.get('mail.message')
|
||||
email_obj = self.obj.pool.get('mail.mail')
|
||||
email_id = email_obj.create(self.cr, self.uid, {
|
||||
'email_from' : 'import@module.openerp',
|
||||
'email_to' : self.email,
|
||||
'body' : self.get_email_body(result, error),
|
||||
'body_html' : self.get_email_body(result, error),
|
||||
'subject' : self.get_email_subject(result, error),
|
||||
'auto_delete' : True})
|
||||
email_obj.send(self.cr, self.uid, [email_id])
|
||||
|
|
|
@ -255,7 +255,7 @@ class google_import(import_framework):
|
|||
'email_from': 'Email',
|
||||
'date': 'DateStart',
|
||||
'date_deadline': 'DateEnd',
|
||||
'categ_id/id': call(self.get_event_category, value('Category')),
|
||||
'categ_ids/id': call(self.get_event_category, value('Category')),
|
||||
'recurrency': self.get_rec,
|
||||
'end_date' : 'end_date',
|
||||
'end_type' : 'end_type',
|
||||
|
|
|
@ -110,6 +110,8 @@ class synchronize_google(osv.osv_memory):
|
|||
|
||||
_defaults = {
|
||||
'group_name': 'all',
|
||||
'customer': True,
|
||||
'supplier': True,
|
||||
}
|
||||
|
||||
def import_google(self, cr, uid, ids, context=None):
|
||||
|
|
|
@ -25,16 +25,16 @@ class knowledge_config_settings(osv.osv_memory):
|
|||
_name = 'knowledge.config.settings'
|
||||
_inherit = 'res.config.settings'
|
||||
_columns = {
|
||||
'module_document_page': fields.boolean('create static web pages',
|
||||
'module_document_page': fields.boolean('Create static web pages',
|
||||
help="""This installs the module document_page."""),
|
||||
'module_document': fields.boolean('manage documents',
|
||||
'module_document': fields.boolean('Manage documents',
|
||||
help="""This is a complete document management system, with: user authentication,
|
||||
full document search (but pptx and docx are not supported), and a document dashboard.
|
||||
This installs the module document."""),
|
||||
'module_document_ftp': fields.boolean('share repositories (FTP)',
|
||||
'module_document_ftp': fields.boolean('Share repositories (FTP)',
|
||||
help="""Access your documents in OpenERP through an FTP interface.
|
||||
This installs the module document_ftp."""),
|
||||
'module_document_webdav': fields.boolean('share repositories (WebDAV)',
|
||||
'module_document_webdav': fields.boolean('Share repositories (WebDAV)',
|
||||
help="""Access your documents in OpenERP through WebDAV.
|
||||
This installs the module document_webdav."""),
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<record id="view_payment_advice_tree" model="ir.ui.view">
|
||||
<field name="name">payment.advice.report.tree</field>
|
||||
<field name="model">payment.advice.report</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree colors="blue:state == 'draft';black:state == 'confirm';gray:state == 'cancel' " string="Advices Analysis">
|
||||
<field name="nbr" sum="# Payment Lines"/>
|
||||
|
@ -31,7 +30,6 @@
|
|||
<record id="view_payment_advice_search" model="ir.ui.view">
|
||||
<field name="name">payment.advice.report.search</field>
|
||||
<field name="model">payment.advice.report</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Advices Analysis">
|
||||
<group>
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<record id="view_payslip_tree" model="ir.ui.view">
|
||||
<field name="name">payslip.report.tree</field>
|
||||
<field name="model">payslip.report</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree colors="blue:state == 'draft';black:state == 'done';gray:state == 'cancel' " string="Payslip Analysis">
|
||||
<field name="nbr" sum="# Payslip Lines"/>
|
||||
|
@ -30,7 +29,6 @@
|
|||
<record id="view_payslip_search" model="ir.ui.view">
|
||||
<field name="name">payslip.report.search</field>
|
||||
<field name="model">payslip.report</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Payslip Analysis">
|
||||
<group>
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
<record id="view_salary_employee_month" model="ir.ui.view">
|
||||
<field name="name">Hr monthly Employee Salary</field>
|
||||
<field name="model">hr.salary.employee.month</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Employee Pay Head Breakup" version="7.0">
|
||||
<label string="This wizard will print report which displays employees break-up of Net Head for a specified dates."/>
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
<record id="view_yearly_salary_detail" model="ir.ui.view">
|
||||
<field name="name">Employee Yearly Salary</field>
|
||||
<field name="model">yearly.salary.detail</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Pay Head Employee Breakup" version="7.0">
|
||||
<label string="This wizard will print report which display a pay head employee breakup for a specified dates."/>
|
||||
|
|
|
@ -0,0 +1,178 @@
|
|||
# Brazilian Portuguese translation for openobject-addons
|
||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 01:06+0000\n"
|
||||
"PO-Revision-Date: 2012-09-16 00:56+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-09-16 04:39+0000\n"
|
||||
"X-Generator: Launchpad (build 15944)\n"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_fiscal_position_template
|
||||
msgid "Template for Fiscal Position"
|
||||
msgstr "Modelo para Posição Fiscal"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: sql_constraint:account.account:0
|
||||
msgid "The code of the account must be unique per company !"
|
||||
msgstr "O código da conta deve ser único por empresa !"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: constraint:account.account.template:0
|
||||
msgid ""
|
||||
"Configuration Error!\n"
|
||||
"You can not define children to an account with internal type different of "
|
||||
"\"View\"! "
|
||||
msgstr ""
|
||||
"Erro de configuração!\n"
|
||||
"Você não pode definir um filho a uma conta com tipo interno diferente de "
|
||||
"\"Visualização\"! "
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_analytic_journal
|
||||
msgid "Analytic Journal"
|
||||
msgstr "Diário Analítico"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: constraint:account.account.template:0
|
||||
msgid "Error ! You can not create recursive account templates."
|
||||
msgstr "Erro! Você não pode criar templates recursivos para contas."
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_journal
|
||||
msgid "Journal"
|
||||
msgstr "Diário"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_chart_template
|
||||
msgid "Templates for Account Chart"
|
||||
msgstr "Modelos para Plano de Contas"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: sql_constraint:account.tax:0
|
||||
msgid "The description must be unique per company!"
|
||||
msgstr "A descrição deve ser única por empresa!"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: constraint:account.tax.code.template:0
|
||||
msgid "Error ! You can not create recursive Tax Codes."
|
||||
msgstr "Erro ! Você não pode criar Códigos de Impostos recursivos"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_tax_template
|
||||
msgid "account.tax.template"
|
||||
msgstr "account.tax.template"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_tax
|
||||
msgid "account.tax"
|
||||
msgstr "account.tax"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_account
|
||||
msgid "Account"
|
||||
msgstr "Conta Contábil"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_wizard_multi_charts_accounts
|
||||
msgid "wizard.multi.charts.accounts"
|
||||
msgstr "wizard.multi.charts.accounts"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: constraint:account.journal:0
|
||||
msgid ""
|
||||
"Configuration error! The currency chosen should be shared by the default "
|
||||
"accounts too."
|
||||
msgstr ""
|
||||
"Erro de configuração! A moeda escolhida deve ser compartilhada pelas contas "
|
||||
"padrão também."
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_account_template
|
||||
msgid "Templates for Accounts"
|
||||
msgstr "Modelos para Contas"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: help:account.chart.template,spoken_languages:0
|
||||
msgid ""
|
||||
"State here the languages for which the translations of templates could be "
|
||||
"loaded at the time of installation of this localization module and copied in "
|
||||
"the final object when generating them from templates. You must provide the "
|
||||
"language codes separated by ';'"
|
||||
msgstr ""
|
||||
"Declare aqui os idiomas para os quais as traduções de modelos poderiam ser "
|
||||
"carregados no momento da instalação deste módulo de localização e copiado no "
|
||||
"objeto final, quando gerá-los a partir de modelos. Você deve fornecer os "
|
||||
"códigos de idioma separados por ';'"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: constraint:account.account:0
|
||||
msgid "Error ! You can not create recursive accounts."
|
||||
msgstr "Erro! Você não pode criar contas recursivas"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: constraint:account.account:0
|
||||
msgid ""
|
||||
"Configuration Error! \n"
|
||||
"You can not select an account type with a deferral method different of "
|
||||
"\"Unreconciled\" for accounts with internal type \"Payable/Receivable\"! "
|
||||
msgstr ""
|
||||
"Erro de Configuração!\n"
|
||||
"Você não pode selecionar um tipo de conta com um método de deferimento "
|
||||
"diferente de \"Não conciliado\" para contas do tipo \"Pagáveis/Recebíveis\" "
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: sql_constraint:account.journal:0
|
||||
msgid "The name of the journal must be unique per company !"
|
||||
msgstr "O nome do diário deve ser único por empresa!"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_analytic_account
|
||||
msgid "Analytic Account"
|
||||
msgstr "Conta Analítica"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: sql_constraint:account.journal:0
|
||||
msgid "The code of the journal must be unique per company !"
|
||||
msgstr "O código do diário deve ser único por empresa!"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_fiscal_position
|
||||
msgid "Fiscal Position"
|
||||
msgstr "Posição Fiscal"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: constraint:account.account:0
|
||||
msgid ""
|
||||
"Configuration Error! \n"
|
||||
"You can not define children to an account with internal type different of "
|
||||
"\"View\"! "
|
||||
msgstr ""
|
||||
"Erro de configuração!\n"
|
||||
"Você não pode definir um filho a uma conta com tipo interno diferente de "
|
||||
"\"Visualização\"! "
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: constraint:account.analytic.account:0
|
||||
msgid "Error! You can not create recursive analytic accounts."
|
||||
msgstr "Erro! Você não pode criar contas analíticas recursivas."
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: model:ir.model,name:l10n_multilang.model_account_tax_code_template
|
||||
msgid "Tax Code Template"
|
||||
msgstr "Modelo do Código do Imposto"
|
||||
|
||||
#. module: l10n_multilang
|
||||
#: field:account.chart.template,spoken_languages:0
|
||||
msgid "Spoken Languages"
|
||||
msgstr "Idiomas falados"
|
|
@ -26,36 +26,22 @@
|
|||
'sequence': 2,
|
||||
'summary': 'Discussions, Mailing Lists, News',
|
||||
'description': """
|
||||
A business oriented Social Networking with a fully-integrated email and message management.
|
||||
===========================================================================================
|
||||
Business oriented Social Networking
|
||||
===================================
|
||||
The Social Networking module provides a unified social network abstraction layer allowing applications to display a complete
|
||||
communication history on documents with a fully-integrated email and message management system.
|
||||
|
||||
The Social Networking module provides an unified social network
|
||||
abstraction layer allowing applications to display a complete
|
||||
communication history on documents. It gives the users the possibility
|
||||
to read and send messages and emails in an unified way.
|
||||
It enables the users to read and send messages as well as emails. It also provides a feeds page combined to a subscription mechanism that allows to follow documents and to be constantly updated about recent news.
|
||||
|
||||
It also provides a feeds page combined to a subscription mechanism, that
|
||||
allows to follow documents, and to be constantly updated about recent
|
||||
news.
|
||||
|
||||
The main features of the module are:
|
||||
------------------------------------
|
||||
* a clean and renewed communication history for any OpenERP
|
||||
document that can act as a discussion topic,
|
||||
* a discussion mean on documents,
|
||||
* a subscription mechanism to be updated about new messages on
|
||||
interesting documents,
|
||||
* an unified feeds page to see recent messages and activity
|
||||
on followed documents,
|
||||
* user communication through the feeds page,
|
||||
* a threaded discussion design,
|
||||
* relies on the global outgoing mail server, an integrated email
|
||||
management system allowing to send emails with a configurable
|
||||
scheduler-based processing engine
|
||||
* includes an extensible generic email composition assistant, that can turn
|
||||
into a mass-mailing assistant, and is capable of interpreting
|
||||
simple *placeholder expressions* that will be replaced with
|
||||
dynamic data when each email is actually sent
|
||||
Main Features
|
||||
-------------
|
||||
* Clean and renewed communication history for any OpenERP document that can act as a discussion topic
|
||||
* Subscription mechanism to be updated about new messages on interesting documents
|
||||
* Unified feeds page to see recent messages and activity on followed documents
|
||||
* User communication through the feeds page
|
||||
* Threaded discussion design on documents
|
||||
* Relies on the global outgoing mail server - an integrated email management system - allowing to send emails with a configurable scheduler-based processing engine
|
||||
* Includes an extensible generic email composition assistant, that can turn into a mass-mailing assistant and is capable of interpreting simple *placeholder expressions* that will be replaced with dynamic data when each email is actually sent.
|
||||
""",
|
||||
'author': 'OpenERP SA',
|
||||
'website': 'http://www.openerp.com',
|
||||
|
|
|
@ -59,7 +59,7 @@ class mail_alias(osv.Model):
|
|||
|
||||
def _get_alias_domain(self, cr, uid, ids, name, args, context=None):
|
||||
ir_config_parameter = self.pool.get("ir.config_parameter")
|
||||
domain = ir_config_parameter.get_param(cr, uid, "mail.catchall.domain", context=context)
|
||||
domain = ir_config_parameter.get_param(cr, uid, "mail.catchall.domain", context=context)
|
||||
return dict.fromkeys(ids, domain or "")
|
||||
|
||||
_columns = {
|
||||
|
@ -86,7 +86,7 @@ class mail_alias(osv.Model):
|
|||
help="Optional ID of a thread (record) to which all incoming "
|
||||
"messages will be attached, even if they did not reply to it. "
|
||||
"If set, this will disable the creation of new records completely."),
|
||||
'alias_domain': fields.function(_get_alias_domain, string="Alias Domain", type='char', size=None),
|
||||
'alias_domain': fields.function(_get_alias_domain, string="Alias domain", type='char', size=None),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
|
|
|
@ -366,6 +366,7 @@ class mail_thread(osv.AbstractModel):
|
|||
context=context)
|
||||
msg = self.message_parse(cr, uid, msg_txt, save_original=save_original, context=context)
|
||||
if strip_attachments: msg.pop('attachments', None)
|
||||
thread_id = False
|
||||
for model, thread_id, custom_values, user_id in routes:
|
||||
if self._name != model:
|
||||
context.update({'thread_model': model})
|
||||
|
@ -378,7 +379,7 @@ class mail_thread(osv.AbstractModel):
|
|||
else:
|
||||
thread_id = model_pool.message_new(cr, user_id, msg, custom_values, context=context)
|
||||
self.message_post(cr, uid, [thread_id], context=context, **msg)
|
||||
return True
|
||||
return thread_id
|
||||
|
||||
def message_new(self, cr, uid, msg_dict, custom_values=None, context=None):
|
||||
"""Called by ``message_process`` when a new message is received
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_mail_global,mail.mail,model_mail_mail,base.group_system,1,1,1,1
|
||||
access_mail_message_all,mail.message.all,model_mail_message,,1,0,0,0
|
||||
access_mail_message_group_user,mail.message.group.user,model_mail_message,base.group_user,1,1,1,1
|
||||
access_mail_thread,mail.thread,model_mail_thread,base.group_user,1,1,1,0
|
||||
|
@ -7,3 +8,5 @@ access_mail_notification_all,mail.notification.all,model_mail_notification,,1,1,
|
|||
access_mail_group,mail.group,model_mail_group,base.group_user,1,1,1,1
|
||||
access_mail_alias_user,mail.alias,model_mail_alias,base.group_user,1,1,1,0
|
||||
access_mail_alias_system,mail.alias,model_mail_alias,base.group_system,1,1,1,1
|
||||
access_mail_mail_user,mail.mail,model_mail_mail,base.group_user,1,1,1,0
|
||||
access_mail_mail_manager,mail.mail,model_mail_mail,group_mail_manager,1,1,1,1
|
||||
|
|
|
|
@ -25,14 +25,14 @@ class marketing_config_settings(osv.osv_memory):
|
|||
_name = 'marketing.config.settings'
|
||||
_inherit = 'res.config.settings'
|
||||
_columns = {
|
||||
'module_marketing_campaign': fields.boolean('Marketing Campaigns',
|
||||
'module_marketing_campaign': fields.boolean('Marketing campaigns',
|
||||
help="""Provides leads automation through marketing campaigns.
|
||||
Campaigns can in fact be defined on any resource, not just CRM leads.
|
||||
This installs the module marketing_campaign."""),
|
||||
'module_marketing_campaign_crm_demo': fields.boolean('Demo Data for Marketing Campaigns',
|
||||
'module_marketing_campaign_crm_demo': fields.boolean('Demo data for marketing campaigns',
|
||||
help="""Installs demo data like leads, campaigns and segments for Marketing Campaigns.
|
||||
This installs the module marketing_campaign_crm_demo."""),
|
||||
'module_crm_profiling': fields.boolean('Track Customer Profile to Focus your Campaigns',
|
||||
'module_crm_profiling': fields.boolean('Track customer profile to focus your campaigns',
|
||||
help="""Allows users to perform segmentation within partners.
|
||||
This installs the module crm_profiling."""),
|
||||
}
|
||||
|
|
|
@ -31,41 +31,27 @@
|
|||
'images': ['images/bill_of_materials.jpeg', 'images/manufacturing_order.jpeg', 'images/planning_manufacturing_order.jpeg', 'images/production_analysis.jpeg', 'images/production_dashboard.jpeg','images/routings.jpeg','images/work_centers.jpeg'],
|
||||
'depends': ['procurement', 'stock', 'resource', 'purchase', 'product','process'],
|
||||
'description': """
|
||||
This is the base module to manage the manufacturing process in OpenERP.
|
||||
=======================================================================
|
||||
Manage the Manufacturing process in OpenERP
|
||||
===========================================
|
||||
|
||||
Features:
|
||||
---------
|
||||
* Make to Stock/Make to Order (by line)
|
||||
* Multi-level BoMs, no limit
|
||||
* Multi-level routing, no limit
|
||||
* Routing and work center integrated with analytic accounting
|
||||
* Scheduler computation periodically/Just In Time module
|
||||
* Multi-pos, multi-warehouse
|
||||
* Different reordering policies
|
||||
* Cost method by product: standard price, average price
|
||||
* Easy analysis of troubles or needs
|
||||
* Very flexible
|
||||
* Allows to browse Bill of Materials in complete structure that include child and phantom BoMs
|
||||
The manufacturing module allows you to cover planning, ordering, stocks and the manufacturing or assembly of products from raw materials and components. It handles the consumption and production of products according to a bill of materials and the necessary operations on machinery, tools or human resources according to routings.
|
||||
|
||||
It supports complete integration and planification of stockable goods,
|
||||
consumable of services. Services are completely integrated with the rest
|
||||
of the software. For instance, you can set up a sub-contracting service
|
||||
in a BoM to automatically purchase on order the assembly of your production.
|
||||
It supports complete integration and planification of stockable goods, consumables or services. Services are completely integrated with the rest of the software. For instance, you can set up a sub-contracting service in a bill of materials to automatically purchase on order the assembly of your production.
|
||||
|
||||
Reports provided by this module:
|
||||
--------------------------------
|
||||
* Bill of Material structure and components
|
||||
* Load forecast on Work Centers
|
||||
* Print a production order
|
||||
* Stock forecasts
|
||||
* Cost Structure
|
||||
Key Features
|
||||
------------
|
||||
* Make to Stock/Make to Order
|
||||
* Multi-level bill of materials, no limit
|
||||
* Multi-level routing, no limit
|
||||
* Routing and work center integrated with analytic accounting
|
||||
* Periodical scheduler computation
|
||||
* Allows to browse bills of materials in a complete structure that includes child and phantom bills of materials
|
||||
|
||||
Dashboard provided by this module:
|
||||
----------------------------------
|
||||
* List of procurements in exception
|
||||
* List of next production orders
|
||||
* Graph of stock value variation
|
||||
Dashboard / Reports for MRP will include:
|
||||
-----------------------------------------
|
||||
* Procurements in Exception (Graph)
|
||||
* Stock Value Variation (Graph)
|
||||
* Work Order Analysis
|
||||
""",
|
||||
'data': [
|
||||
'security/mrp_security.xml',
|
||||
|
|
|
@ -7,13 +7,13 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:49+0000\n"
|
||||
"PO-Revision-Date: 2011-12-06 10:16+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2012-09-14 07:17+0000\n"
|
||||
"Last-Translator: Chertykov Denis <chertykov@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: 2012-09-13 04:39+0000\n"
|
||||
"X-Launchpad-Export-Date: 2012-09-15 04:55+0000\n"
|
||||
"X-Generator: Launchpad (build 15944)\n"
|
||||
|
||||
#. module: mrp
|
||||
|
@ -308,7 +308,7 @@ msgstr "Позиция на сборочном чертеже или схеме"
|
|||
#. module: mrp
|
||||
#: constraint:stock.move:0
|
||||
msgid "You try to assign a lot which is not from the same product"
|
||||
msgstr "Вы пытаетесь назначить экземпляр продукции другого типа"
|
||||
msgstr "Вы пытаетесь назначить партию состоящую из другой продукции"
|
||||
|
||||
#. module: mrp
|
||||
#: model:product.template,name:mrp.product_cloth_product_template
|
||||
|
|
|
@ -951,7 +951,7 @@
|
|||
</data>
|
||||
</field>
|
||||
</record>
|
||||
<record id="product_normal_form_supply_view" model="ir.ui.view">
|
||||
<record id="product.product_normal_form_supply_view" model="ir.ui.view">
|
||||
<field name="name">product.normal.form.mrp.inherit</field>
|
||||
<field name="model">product.product</field>
|
||||
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
||||
|
|
|
@ -28,11 +28,11 @@ class mrp_config_settings(osv.osv_memory):
|
|||
_inherit = 'res.config.settings'
|
||||
|
||||
_columns = {
|
||||
'module_stock_planning': fields.boolean('manage master production shedule',
|
||||
'module_stock_planning': fields.boolean('Manage master production shedule',
|
||||
help ="""This allows to create a manual procurement plan apart of the normal MRP scheduling,
|
||||
which works automatically based on minimum stock rules.
|
||||
This installs the module stock_planning."""),
|
||||
'module_mrp_repair': fields.boolean("manage repairs of products ",
|
||||
'module_mrp_repair': fields.boolean("Manage repairs of products ",
|
||||
help="""Allows to manage all product repairs.
|
||||
* Add/remove products in the reparation
|
||||
* Impact for stocks
|
||||
|
@ -41,34 +41,34 @@ class mrp_config_settings(osv.osv_memory):
|
|||
* Repair quotation report
|
||||
* Notes for the technician and for the final customer.
|
||||
This installs the module mrp_repair."""),
|
||||
'module_mrp_operations': fields.boolean("allow detailed planning of work order",
|
||||
'module_mrp_operations': fields.boolean("Allow detailed planning of work order",
|
||||
help="""This allows to add state, date_start,date_stop in production order operation lines (in the "Work Centers" tab).
|
||||
This installs the module mrp_operations."""),
|
||||
'module_mrp_subproduct': fields.boolean("produce several products from one manufacturing order",
|
||||
'module_mrp_subproduct': fields.boolean("Produce several products from one manufacturing order",
|
||||
help="""You can configure sub-products in the bill of material.
|
||||
Without this module: A + B + C -> D.
|
||||
With this module: A + B + C -> D + E.
|
||||
This installs the module mrp_subproduct."""),
|
||||
'module_mrp_jit': fields.boolean("generate procurement in real time",
|
||||
'module_mrp_jit': fields.boolean("Generate procurement in real time",
|
||||
help="""This allows Just In Time computation of procurement orders.
|
||||
All procurement orders will be processed immediately, which could in some
|
||||
cases entail a small performance impact.
|
||||
This installs the module mrp_jit."""),
|
||||
'module_stock_no_autopicking': fields.boolean("manage manual picking to fulfill manufacturing orders ",
|
||||
'module_stock_no_autopicking': fields.boolean("Manage manual picking to fulfill manufacturing orders ",
|
||||
help="""This module allows an intermediate picking process to provide raw materials to production orders.
|
||||
For example to manage production made by your suppliers (sub-contracting).
|
||||
To achieve this, set the assembled product which is sub-contracted to "No Auto-Picking"
|
||||
and put the location of the supplier in the routing of the assembly operation.
|
||||
This installs the module stock_no_autopicking."""),
|
||||
'group_mrp_routings': fields.boolean("manage routings and work orders ",
|
||||
'group_mrp_routings': fields.boolean("Manage routings and work orders ",
|
||||
implied_group='mrp.group_mrp_routings',
|
||||
help="""Routings allow you to create and manage the manufacturing operations that should be followed
|
||||
within your work centers in order to produce a product. They are attached to bills of materials
|
||||
that will define the required raw materials."""),
|
||||
'group_mrp_properties': fields.boolean("allow several bill of materials per products using properties",
|
||||
'group_mrp_properties': fields.boolean("Allow several bill of materials per products using properties",
|
||||
implied_group='product.group_mrp_properties',
|
||||
help="""The selection of the right Bill of Material to use will depend on the properties specified on the sale order and the Bill of Material."""),
|
||||
'module_product_manufacturer': fields.boolean("define manufacturers on products ",
|
||||
'module_product_manufacturer': fields.boolean("Define manufacturers on products ",
|
||||
help="""This allows you to define the following for a product:
|
||||
* Manufacturer
|
||||
* Manufacturer Product Name
|
||||
|
|
|
@ -7,13 +7,9 @@
|
|||
<field name="tag">reload</field>
|
||||
<field name="params" eval="{'menu_id': ref('base.menu_mrp_root')}"/>
|
||||
</record>
|
||||
<record id="todo_open_mrp_menu" model="ir.actions.todo">
|
||||
<record id="base.open_menu" model="ir.actions.todo">
|
||||
<field name="action_id" ref="action_client_mrp_menu"/>
|
||||
<field name="type">automatic</field>
|
||||
<field name="sequence">100</field>
|
||||
</record>
|
||||
<record id="purchase.todo_open_purchase_menu" model="ir.actions.todo">
|
||||
<field name="state">done</field>
|
||||
<field name="state">open</field>
|
||||
</record>
|
||||
</data>
|
||||
<data>
|
||||
|
|
|
@ -20,31 +20,31 @@
|
|||
##############################################################################
|
||||
|
||||
{
|
||||
'name': 'Notes',
|
||||
'version': '0.1',
|
||||
'name': 'Memos',
|
||||
'version': '1.0',
|
||||
'category': 'Tools',
|
||||
'description': """
|
||||
This module allows users to create their own notes inside OpenERP
|
||||
=================================================================
|
||||
|
||||
Use notes to write meeting minutes, organize ideas, organize personnal todo
|
||||
lists, etc. Each user manages his own personnal notes. Notes are available to
|
||||
lists, etc. Each user manages his own personnal memos. Notes are available to
|
||||
their authors only, but they can share notes to others users so that several
|
||||
people can work on the same note in real time. It's very efficient to share
|
||||
meeting minutes.
|
||||
|
||||
Notes can be found in the 'Home' menu.
|
||||
Memos can be found in the 'Home' menu.
|
||||
""",
|
||||
'author': 'OpenERP SA',
|
||||
'website': 'http://openerp.com',
|
||||
'summary': 'Sticky Notes, Collaborative',
|
||||
'summary': 'Sticky notes, Collaborative, Memos',
|
||||
'depends': [
|
||||
'base_tools',
|
||||
'mail',
|
||||
'pad',
|
||||
],
|
||||
'data': [
|
||||
'security/note_security.xml',
|
||||
'security/res.groups.csv',
|
||||
'security/ir.rule.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'note_data.xml',
|
||||
'note_view.xml',
|
||||
|
@ -52,6 +52,8 @@ Notes can be found in the 'Home' menu.
|
|||
'demo': [
|
||||
'note_demo.xml',
|
||||
],
|
||||
'test': [
|
||||
],
|
||||
'css': [
|
||||
'static/src/css/note.css',
|
||||
],
|
||||
|
|
|
@ -21,16 +21,17 @@
|
|||
|
||||
from openerp.osv import osv, fields
|
||||
from tools.translate import _
|
||||
import re
|
||||
|
||||
class note_stage(osv.osv):
|
||||
""" Category of Note """
|
||||
_name = "note.stage"
|
||||
_description = "Note Stage"
|
||||
_columns = {
|
||||
'name': fields.char('Category Name', size=64, required=True),
|
||||
'name': fields.char('Stage Name', required=True),
|
||||
'sequence': fields.integer('Sequence', help="Used to order the note stages"),
|
||||
'user_id': fields.many2one('res.users', 'Owner', help="Owner of the note stage.", required=True, readonly=True),
|
||||
'fold': fields.boolean('Folded'),
|
||||
'user_id': fields.many2one('res.users', 'Owner', help="Owner of the note stage.", required=True),
|
||||
'fold': fields.boolean('Folded by Default'),
|
||||
}
|
||||
_order = 'sequence asc'
|
||||
_defaults = {
|
||||
|
@ -39,59 +40,150 @@ class note_stage(osv.osv):
|
|||
'sequence' : 1,
|
||||
}
|
||||
|
||||
class note_tag(osv.osv):
|
||||
_name = "note.tag"
|
||||
_description = "Note Tag"
|
||||
_columns = {
|
||||
'name' : fields.char('Tag Name', required=True),
|
||||
}
|
||||
|
||||
class note_note(osv.osv):
|
||||
""" Note """
|
||||
_name = 'note.note'
|
||||
_inherit = ['mail.thread','pad.common']
|
||||
_pad_fields = ['note_pad']
|
||||
_inherit = ['mail.thread']
|
||||
_description = "Note"
|
||||
|
||||
def _set_note_first_line(self, cr, uid, id, name, value, args, context=None):
|
||||
return self.write(cr, uid, [id], {'note': value}, context=context)
|
||||
#writing method (no modification of values)
|
||||
def name_create(self, cr, uid, name, context=None):
|
||||
rec_id = self.create(cr, uid, {'memo': name}, context=context)
|
||||
return self.name_get(cr, uid, [rec_id], context)[0]
|
||||
|
||||
def _get_note_first_line(self, cr, uid, ids, name, args, context=None):
|
||||
#read the first line (convert hml into text)
|
||||
def _get_note_first_line(self, cr, uid, ids, name="", args={}, context=None):
|
||||
res = {}
|
||||
for note in self.browse(cr, uid, ids, context=context):
|
||||
res[note.id] = (note.note or '').strip().split('\n')[0]
|
||||
text_note = (note.memo or '').strip().split('\n')[0]
|
||||
text_note = re.sub(r'(\S?)(<br[ /]*>|<[/]?p>|<[/]?div>|<table>)[\s\S]*',r'\1',text_note)
|
||||
text_note = re.sub(r'<[^>]+>','',text_note)
|
||||
res[note.id] = text_note
|
||||
return res
|
||||
|
||||
#unactivate a sticky note and record the date
|
||||
def onclick_note_is_done(self, cr, uid, ids, context=None):
|
||||
self.write(cr, uid, ids, { 'active' : False, 'date_done' : fields.date.today() })
|
||||
self.message_post(cr, uid, ids[0], body='Note is done.', subject=False,
|
||||
type='notification', parent_id=False, attachments=None, context=context)
|
||||
return False
|
||||
|
||||
#activate a note
|
||||
def onclick_note_not_done(self, cr, uid, ids, context=None):
|
||||
self.write(cr, uid, ids, {'active' : True})
|
||||
self.message_post(cr, uid, ids[0], body='Note has been activated.', subject=False,
|
||||
type='notification', parent_id=False, attachments=None, context=context)
|
||||
return False
|
||||
|
||||
#used for undisplay the follower if it's the current user
|
||||
def _get_my_current_partner(self, cr, uid, ids, name, args, context=None):
|
||||
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
||||
pid = user.partner_id and user.partner_id.id or False
|
||||
return dict.fromkeys(ids, pid)
|
||||
|
||||
#return the default stage for the uid user
|
||||
def _get_default_stage_id(self,cr,uid,context=None):
|
||||
ids = self.pool.get('note.stage').search(cr,uid,[('user_id','=',uid)])
|
||||
ids = self.pool.get('note.stage').search(cr,uid,[('user_id','=',uid)], context=context)
|
||||
return ids and ids[0] or False
|
||||
|
||||
def _read_group_stage_ids(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
|
||||
access_rights_uid = access_rights_uid or uid
|
||||
stage_obj = self.pool.get('note.stage')
|
||||
def _set_stage_per_user(self, cr, uid, id, name, value, args=None, context=None):
|
||||
note = self.browse(cr, uid, id, context=context)
|
||||
if not value: return False
|
||||
return self.write(cr, uid, [id], {'stage_ids': [(4, value)]}, context=context)
|
||||
|
||||
# only show stage groups not folded and owned by user
|
||||
search_domain = [('user_id', '=', uid)]
|
||||
def _get_stage_per_user(self, cr, uid, ids, name, args, context=None):
|
||||
result = dict.fromkeys(ids, False)
|
||||
for record in self.browse(cr, uid, ids, context=context):
|
||||
for stage in record.stage_ids:
|
||||
if stage.user_id.id == uid:
|
||||
result[record.id] = stage.id
|
||||
return result
|
||||
|
||||
stage_ids = stage_obj._search(cr, uid, search_domain, order=self._order, access_rights_uid=access_rights_uid, context=context)
|
||||
result = stage_obj.name_get(cr, access_rights_uid, stage_ids, context=context)
|
||||
|
||||
fold = {}
|
||||
for stage in stage_obj.browse(cr, access_rights_uid, stage_ids, context=context):
|
||||
fold[stage.id] = stage.fold or False
|
||||
return result, fold
|
||||
|
||||
_columns = {
|
||||
'name': fields.function(_get_note_first_line, fnct_inv=_set_note_first_line, string='Note Summary', type="text"),
|
||||
'note': fields.text('Pad Content'),
|
||||
'note_pad_url': fields.char('Pad Url', size=250),
|
||||
'name': fields.function(_get_note_first_line,
|
||||
string='Note Summary',
|
||||
type='text', store=True),
|
||||
'memo': fields.html('Note Content'),
|
||||
'sequence': fields.integer('Sequence'),
|
||||
'stage_id': fields.many2one('note.stage', 'Stage'),
|
||||
'stage_id': fields.function(_get_stage_per_user,
|
||||
fnct_inv=_set_stage_per_user,
|
||||
string='Stage',
|
||||
type='many2one',
|
||||
relation='note.stage'),
|
||||
'stage_ids': fields.many2many('note.stage','note_stage_rel','note_id','stage_id','Stages of Users'),
|
||||
'active': fields.boolean('Active'),
|
||||
'date_done': fields.date('Date done'),
|
||||
'color': fields.integer('Color Index'),
|
||||
# to be replaced by message_follower_ids
|
||||
'follower_ids': fields.many2many('res.users', 'mail_subscription', 'res_id', 'user_id', 'Followers')
|
||||
'tag_ids' : fields.many2many('note.tag','note_tags_rel','note_id','tag_id','Tags'),
|
||||
'current_partner_id' : fields.function(_get_my_current_partner),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'active' : 1,
|
||||
'stage_id' : _get_default_stage_id,
|
||||
'note_pad_url': lambda self, cr, uid, context: self.pad_generate_url(cr, uid, context),
|
||||
}
|
||||
_order = 'sequence asc'
|
||||
_group_by_full = {
|
||||
'stage_id' : _read_group_stage_ids,
|
||||
_order = 'sequence'
|
||||
|
||||
def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False):
|
||||
if groupby and groupby[0]=="stage_id":
|
||||
|
||||
#search all stages
|
||||
current_stage_ids = self.pool.get('note.stage').search(cr,uid,[('user_id','=',uid)], context=context)
|
||||
|
||||
if current_stage_ids: #if the user have some stages
|
||||
|
||||
#dict of stages: map les ids sur les noms
|
||||
stage_name = dict(self.pool.get('note.stage').name_get(cr, uid, current_stage_ids, context=context))
|
||||
|
||||
result = [{ #notes by stage for stages user
|
||||
'__context': {'group_by': groupby[1:]},
|
||||
'__domain': domain + [('stage_ids.id', '=', current_stage_id)],
|
||||
'stage_id': (current_stage_id, stage_name[current_stage_id]),
|
||||
'stage_id_count': self.search(cr,uid, domain+[('stage_ids', '=', current_stage_id)], context=context, count=True)
|
||||
} for current_stage_id in current_stage_ids]
|
||||
|
||||
#note without user's stage
|
||||
nb_notes_ws = self.search(cr,uid, domain+[('stage_ids', 'not in', current_stage_ids)], context=context, count=True)
|
||||
if nb_notes_ws:
|
||||
result += [{ #notes for unknown stage and if stage_ids is not empty
|
||||
'__context': {'group_by': groupby[1:]},
|
||||
'__domain': domain + [('stage_ids', 'not in', current_stage_ids)],
|
||||
'stage_id': (0, 'Unknown'),
|
||||
'stage_id_count':nb_notes_ws
|
||||
}]
|
||||
|
||||
else: # if stage_ids is empty
|
||||
|
||||
#note without user's stage
|
||||
nb_notes_ws = self.search(cr,uid, domain, context=context, count=True)
|
||||
if nb_notes_ws:
|
||||
result = [{ #notes for unknown stage
|
||||
'__context': {'group_by': groupby[1:]},
|
||||
'__domain': domain,
|
||||
'stage_id': (0, 'Unknown'),
|
||||
'stage_id_count':nb_notes_ws
|
||||
}]
|
||||
else:
|
||||
result = []
|
||||
return result
|
||||
|
||||
else:
|
||||
return super(note_note, self).read_group(self, cr, uid, domain, fields, groupby,
|
||||
offset=offset, limit=limit, context=context, orderby=orderby)
|
||||
|
||||
|
||||
#upgrade config setting page to configure pad, fancy and tags mode
|
||||
class note_base_config_settings(osv.osv_memory):
|
||||
_inherit = 'base.config.settings'
|
||||
_columns = {
|
||||
'module_note_pad': fields.boolean('Use collaborative pads (etherpad)'),
|
||||
'group_note_fancy': fields.boolean('Use fancy layouts for notes', implied_group='note.group_note_fancy'),
|
||||
'group_note_tags': fields.boolean('Allow setting tags on notes', implied_group='note.group_note_tags'),
|
||||
}
|
||||
|
|
|
@ -3,19 +3,19 @@
|
|||
<data>
|
||||
|
||||
<record model="note.stage" id="note_stage_01">
|
||||
<field name="name">Todo today</field>
|
||||
<field name="name">Today</field>
|
||||
<field name="sequence">1</field>
|
||||
<field name="user_id" eval="ref('base.user_root')"/>
|
||||
</record>
|
||||
|
||||
<record model="note.stage" id="note_stage_02">
|
||||
<field name="name">Todo later</field>
|
||||
<field name="name">Later</field>
|
||||
<field name="sequence">2</field>
|
||||
<field name="user_id" eval="ref('base.user_root')"/>
|
||||
</record>
|
||||
|
||||
<record model="note.stage" id="note_stage_03">
|
||||
<field name="name">For Info</field>
|
||||
<field name="name">Notes</field>
|
||||
<field name="sequence">3</field>
|
||||
<field name="user_id" eval="ref('base.user_root')"/>
|
||||
</record>
|
||||
|
|
|
@ -1,151 +1,150 @@
|
|||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<data noupdate="1">
|
||||
<record model="note.stage" id="demo_note_stage_01">
|
||||
<field name="name">Today</field>
|
||||
<field name="sequence">1</field>
|
||||
<field name="user_id" eval="ref('base.user_demo')"/>
|
||||
</record>
|
||||
|
||||
<record model="note.stage" id="demo_note_stage_02">
|
||||
<field name="name">Tomorrow</field>
|
||||
<field name="sequence">2</field>
|
||||
<field name="user_id" eval="ref('base.user_demo')"/>
|
||||
</record>
|
||||
|
||||
<record model="note.stage" id="demo_note_stage_03">
|
||||
<field name="name">Later</field>
|
||||
<field name="sequence">3</field>
|
||||
<field name="user_id" eval="ref('base.user_demo')"/>
|
||||
</record>
|
||||
|
||||
<record model="note.stage" id="demo_note_stage_04">
|
||||
<field name="name">Notes</field>
|
||||
<field name="sequence">4</field>
|
||||
<field name="user_id" eval="ref('base.user_demo')"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="note_1" model="note.note">
|
||||
<field name="note"><![CDATA[Buying list
|
||||
* coffee
|
||||
* fruits
|
||||
* ice cream
|
||||
* towels
|
||||
]]>
|
||||
<field name="name">Customer report #349872</field>
|
||||
<field name="memo"><![CDATA[Customer report #349872
|
||||
<br/><br/>* Calendar app in Home
|
||||
<br/>* The base_calendar module should create a menu in Home, like described above.
|
||||
<br/>* This module should become a main application (in the first screen at installation)
|
||||
<br/>* We should use the term Calendar, not Meeting.
|
||||
]]>
|
||||
</field>
|
||||
<field name="note_pad"></field>
|
||||
<field name="stage_id" ref="note_stage_01"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="color">2</field>
|
||||
</record>
|
||||
|
||||
<record id="note_2" model="note.note">
|
||||
<field name="note"><![CDATA[Buying list
|
||||
* more coffee
|
||||
* tee
|
||||
* sugar
|
||||
* towels
|
||||
<field name="memo"><![CDATA[Call Fabien
|
||||
<br/><br/>* Followed by the telephone conversation and mail about D.544.3
|
||||
]]>
|
||||
</field>
|
||||
<field name="note_pad"></field>
|
||||
<field name="stage_id" ref="note_stage_01"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
</record>
|
||||
|
||||
<record id="note_3" model="note.note">
|
||||
<field name="note"><![CDATA[Idea to develop
|
||||
* Phasellus vel eros lorem, vel tristique risus.
|
||||
* Cras elementum risus ut massa bibendum ac sollicitudin quam feugiat.
|
||||
* Phasellus ullamcorper mauris quis lectus volutpat non dignissim elit lacinia.
|
||||
|
||||
Nulla vitae metus risus, nec placerat diam.
|
||||
Proin quis nunc sodales dolor tempus eleifend.
|
||||
Praesent iaculis libero ut orci egestas a dapibus libero ornare.
|
||||
|
||||
* Proin at nisl sit amet ante feugiat euismod nec at orci.
|
||||
* Nam aliquam massa id neque tincidunt eu pellentesque neque euismod.
|
||||
* Proin eget mi sit amet erat tempus pellentesque.
|
||||
|
||||
* Phasellus congue est lectus, vitae semper arcu.
|
||||
* Suspendisse sodales tortor ut odio volutpat fringilla.
|
||||
* Vestibulum mattis est quis risus dignissim sit amet faucibus nisl mattis.
|
||||
* Pellentesque ullamcorper neque neque, vitae rhoncus massa.
|
||||
|
||||
Ut id magna massa, quis scelerisque sapien.
|
||||
|
||||
]]>
|
||||
<field name="memo"><![CDATA[Call Marc
|
||||
<br/><br/>]]>
|
||||
</field>
|
||||
<field name="note_pad"></field>
|
||||
<field name="stage_id" ref="note_stage_01"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
</record>
|
||||
|
||||
<record id="note_4" model="note.note">
|
||||
<field name="note"><![CDATA[Read some documentation about OpenERP before diving into the code
|
||||
* Open ERP: a modern approach to integrated business management
|
||||
* Open ERP for Retail and Industrial Management
|
||||
]]>
|
||||
<field name="memo"><![CDATA[Project N.947.5
|
||||
<br/><br/>]]>
|
||||
</field>
|
||||
<field name="note_pad"></field>
|
||||
<field name="stage_id" ref="note_stage_02"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
</record>
|
||||
|
||||
<record id="note_5" model="note.note">
|
||||
<field name="note"><![CDATA[New computer specs
|
||||
* Motherboard
|
||||
according to processor
|
||||
* Processor
|
||||
need to decide
|
||||
* Graphic card
|
||||
with great performance for games !
|
||||
* Hard drive
|
||||
big, for lot of internet backups
|
||||
* Tower
|
||||
silent, better when watching films
|
||||
* Blueray drive ?
|
||||
is it interesting yet ?
|
||||
* Screen
|
||||
a big one, full of pixels, of course !
|
||||
]]>
|
||||
<field name="memo"><![CDATA[Shop for family dinner
|
||||
<br/>* stuffed turkey
|
||||
<br/>* wine
|
||||
]]>
|
||||
</field>
|
||||
<field name="note_pad"></field>
|
||||
<field name="stage_id" ref="note_stage_02"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="color">3</field>
|
||||
</record>
|
||||
|
||||
<record id="note_6" model="note.note">
|
||||
<field name="note"><![CDATA[Read those books
|
||||
* Open ERP: a modern approach to integrated business management
|
||||
* Open ERP for Retail and Industrial Management
|
||||
]]>
|
||||
<field name="memo"><![CDATA[Idea to develop
|
||||
<br/><br/>* Create a module note_pad
|
||||
it transforms the html editable memo text field into widget='pad', similar to project_pad depends on 'memo' and 'pad' modules
|
||||
]]>
|
||||
</field>
|
||||
<field name="note_pad"></field>
|
||||
<field name="stage_id" ref="note_stage_02"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
</record>
|
||||
|
||||
<record id="note_7" model="note.note">
|
||||
<field name="note"><![CDATA[Read some documentation about OpenERP before diving into the code
|
||||
* Open ERP: a modern approach to integrated business management
|
||||
* Open ERP for Retail and Industrial Management
|
||||
<field name="memo"><![CDATA[Read some documentation about OpenERP before diving into the code
|
||||
<br/><br/>* Open ERP: a modern approach to integrated business management
|
||||
<br/>* Open ERP for Retail and Industrial Management
|
||||
]]>
|
||||
</field>
|
||||
<field name="note_pad"></field>
|
||||
<field name="stage_id" ref="note_stage_03"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
</record>
|
||||
|
||||
<record id="note_8" model="note.note">
|
||||
<field name="note"><![CDATA[Read those books
|
||||
* Open ERP: a modern approach to integrated business management
|
||||
* Open ERP for Retail and Industrial Management
|
||||
<field name="memo"><![CDATA[New computer specs
|
||||
<br/><br/>* Motherboard
|
||||
according to processor
|
||||
<br/>* Processor
|
||||
need to decide
|
||||
<br/>* Graphic card
|
||||
with great performance for games !
|
||||
<br/>* Hard drive
|
||||
big, for lot of internet backups
|
||||
<br/>* Tower
|
||||
silent, better when watching films
|
||||
<br/>* Blueray drive ?
|
||||
is it interesting yet ?
|
||||
<br/>* Screen
|
||||
a big one, full of pixels, of course !
|
||||
]]>
|
||||
</field>
|
||||
<field name="note_pad"></field>
|
||||
<field name="stage_id" ref="note_stage_03"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="color">5</field>
|
||||
<field name="color">3</field>
|
||||
</record>
|
||||
|
||||
<record id="note_9" model="note.note">
|
||||
<field name="note"><![CDATA[Read some documentation about OpenERP before diving into the code
|
||||
* Open ERP: a modern approach to integrated business management
|
||||
* Open ERP for Retail and Industrial Management
|
||||
<field name="memo"><![CDATA[Read those books
|
||||
<br/><br/>* Open ERP: a modern approach to integrated business management
|
||||
<br/>* Open ERP for Retail and Industrial Management
|
||||
]]>
|
||||
</field>
|
||||
<field name="note_pad"></field>
|
||||
<field name="stage_id" ref="note_stage_03"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="color">7</field>
|
||||
<field name="stage_id" ref="note_stage_02"/>
|
||||
</record>
|
||||
|
||||
<record id="note_10" model="note.note">
|
||||
<field name="note"><![CDATA[Read those books
|
||||
* Open ERP: a modern approach to integrated business management
|
||||
* Open ERP for Retail and Industrial Management
|
||||
<field name="memo"><![CDATA[Read some documentation about OpenERP before diving into the code
|
||||
<br/><br/>* Open ERP: a modern approach to integrated business management
|
||||
<br/>* Open ERP for Retail and Industrial Management
|
||||
]]>
|
||||
</field>
|
||||
<field name="stage_id" ref="note_stage_03"/>
|
||||
</record>
|
||||
|
||||
<record id="note_12" model="note.note">
|
||||
<field name="memo"><![CDATA[Read some documentation about OpenERP before diving into the code
|
||||
<br/><br/>* Open ERP: a modern approach to integrated business management
|
||||
<br/>* Open ERP for Retail and Industrial Management
|
||||
]]>
|
||||
</field>
|
||||
<field name="stage_id" ref="note_stage_03"/>
|
||||
<field name="color">7</field>
|
||||
</record>
|
||||
|
||||
<record id="note_13" model="note.note">
|
||||
<field name="memo"><![CDATA[Read those books
|
||||
<br/><br/>* Open ERP: a modern approach to integrated business management
|
||||
<br/>* Open ERP for Retail and Industrial Management
|
||||
]]>
|
||||
</field>
|
||||
<field name="note_pad"></field>
|
||||
<field name="stage_id" ref="note_stage_03"/>
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<menuitem name="Organizer" id="note_my_stuff" parent="mail.mail_feeds_main"/>
|
||||
|
||||
<!-- Note Stage Form View -->
|
||||
<!-- note Stage Form View -->
|
||||
<record model="ir.ui.view" id="view_note_stage_form">
|
||||
<field name="name">note.stage.form</field>
|
||||
<field name="model">note.stage</field>
|
||||
|
@ -17,117 +17,175 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Note Stage Tree View -->
|
||||
<!-- note Stage Tree View -->
|
||||
<record model="ir.ui.view" id="view_note_stage_tree">
|
||||
<field name="name">note.stage.tree</field>
|
||||
<field name="model">note.stage</field>
|
||||
<field name="field_parent"></field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Stages of notes" editable="bottom">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
<field name="fold"/>
|
||||
<tree string="Stages of Notes" editable="bottom">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
<field name="fold"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Note Stage Action -->
|
||||
<!-- note Stage Action -->
|
||||
<record model="ir.actions.act_window" id="action_note_stage">
|
||||
<field name="name">Stages</field>
|
||||
<field name="res_model">note.stage</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="domain">[('user_id','=',uid)]</field>
|
||||
<field name="name">Stages</field>
|
||||
<field name="res_model">note.stage</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="domain">[('user_id','=',uid)]</field>
|
||||
</record>
|
||||
|
||||
<menuitem name="Categories"
|
||||
id="menu_notes_stage" parent="note_my_stuff" action="action_note_stage" sequence="40" groups="base.group_no_one"/>
|
||||
<menuitem name="Categories" id="menu_notes_stage" parent="note_my_stuff" action="action_note_stage" sequence="40" groups="base.group_no_one"/>
|
||||
|
||||
<!-- New Note Kanban View -->
|
||||
<!-- New note Kanban View -->
|
||||
<record model="ir.ui.view" id="view_note_note_kanban">
|
||||
<field name="name">note.note.kanban</field>
|
||||
<field name="model">note.note</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban default_group_by="stage_id" class="oe_notes" version="7.0">
|
||||
<kanban default_group_by="stage_id" class="oe_notes oe_kanban_quickcreate_textarea" version="7.0">
|
||||
<field name="color"/>
|
||||
<field name="sequence"/>
|
||||
<field name="name"/>
|
||||
<field name="stage_id"/>
|
||||
<field name="active"/>
|
||||
<field name="note"/>
|
||||
<field name="follower_ids"/>
|
||||
<field name="memo"/>
|
||||
<field name="date_done"/>
|
||||
<field name="current_partner_id"/>
|
||||
<field name="message_follower_ids"/>
|
||||
<field name="tag_ids"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click oe_semantic_html_override">
|
||||
<!-- dropdown menu -->
|
||||
<div class="oe_dropdown_toggle oe_dropdown_kanban">
|
||||
<span class="oe_e">í</span>
|
||||
<ul class="oe_dropdown_menu">
|
||||
<li><a type="edit">Edit...</a></li>
|
||||
<li><a type="delete">Delete</a></li>
|
||||
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
|
||||
</ul>
|
||||
|
||||
<t t-set="record.group_fancy" t-value="1" groups="note.group_note_fancy"/>
|
||||
|
||||
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_global_click_edit oe_semantic_html_override oe_kanban_card #{record.group_fancy==1 ? 'oe_kanban_card_fancy' : ''}">
|
||||
<div class="oe_dropdown_kanban">
|
||||
<span>
|
||||
<a name="onclick_note_is_done" type="object" t-if="record.active.raw_value" class="oe_e">W</a>
|
||||
<a name="onclick_note_not_done" type="object" t-if="!record.active.raw_value" class="oe_e">è</a>
|
||||
</span>
|
||||
|
||||
<!-- dropdown menu -->
|
||||
<div class="oe_dropdown_toggle">
|
||||
<span class="oe_e">í</span>
|
||||
<ul class="oe_dropdown_menu">
|
||||
<li><a type="delete">Delete</a></li>
|
||||
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- kanban note -->
|
||||
<div class="oe_kanban_content">
|
||||
<div t-attf-class="oe_kanban_content #{record.active.raw_value ? '' : 'note_text_line_through'}">
|
||||
<!-- title -->
|
||||
<field name="name"/>
|
||||
</div>
|
||||
|
||||
<div class="oe_kanban_project_avatars">
|
||||
<t t-foreach="record.follower_ids.raw_value" t-as="follower">
|
||||
<img t-att-src="kanban_image('res.users', 'image_small', follower)" t-att-data-member_id="follower"/>
|
||||
<div widget="many2many_tags" t-att-data="record.tag_ids.raw_value" model="note.tag"/>
|
||||
<div class="oe_right">
|
||||
<t t-foreach="record.message_follower_ids.raw_value" t-as="follower">
|
||||
<img t-if="record.current_partner_id.raw_value!=follower" t-att-src="kanban_image('res.partner', 'image_small', follower)" width="24" height="24" class="oe_kanban_avatar" t-att-data-member_id="follower"/>
|
||||
</t>
|
||||
</div>
|
||||
<div class="oe_clear"></div>
|
||||
</div>
|
||||
<div class="oe_clear"></div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- New Note Form View -->
|
||||
<!-- New note Form View -->
|
||||
<record model="ir.ui.view" id="view_note_note_tree">
|
||||
<field name="name">note.note.tree</field>
|
||||
<field name="model">note.note</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Stages">
|
||||
<field name="name"/>
|
||||
<field name="active"/>
|
||||
<field name="stage_id"/>
|
||||
<field name="tag_ids" widget="many2many_tags" groups="note.group_note_tags"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- New note Form View -->
|
||||
<record model="ir.ui.view" id="view_note_note_form">
|
||||
<field name="name">note.note.form</field>
|
||||
<field name="model">note.note</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Note" version="7.0">
|
||||
<header>
|
||||
<field name="stage_id" domain="[('user_id','=',uid)]" widget="statusbar" clickable="1"/>
|
||||
<field name="stage_id" domain="[('user_id','=',uid)]" widget="statusbar" clickable="1"/>
|
||||
</header>
|
||||
<field name="note"/>
|
||||
<field name="note_pad_url" invisible="1"/>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_ids" widget="mail_thread"/>
|
||||
</div>
|
||||
<field name="memo" widget="html"/><!-- editor_width="100%%" editor_height="60%%" -->
|
||||
<group groups="note.group_note_tags" col="2">
|
||||
<field name="tag_ids" widget="many2many_tags"/>
|
||||
</group>
|
||||
<field name="message_follower_ids" widget="mail_followers"/>
|
||||
<field class="oe_chatter" name="message_ids" widget="mail_thread"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Search Note -->
|
||||
<!-- Search note -->
|
||||
<record model="ir.ui.view" id="view_note_note_filter">
|
||||
<field name="name">note.note.search</field>
|
||||
<field name="model">note.note</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Notes">
|
||||
<field name="note" string="Note"/>
|
||||
<field name="memo" string="Note"/>
|
||||
<field name="tag_ids" groups="note.group_note_tags"/>
|
||||
<field name="stage_id"/>
|
||||
<filter name="active_true" string="Active" domain="['|',('active', '=', True),('date_done','=',time.strftime('%%Y-%%m-%%d'))]"/>
|
||||
<filter name="active_false" string="Old" domain="[('active', '=', False)]"/>
|
||||
<group expand="0" string="Group By...">
|
||||
<filter icon="terp-personal" string="Creator" help="By Creators" context="{'group_by':'create_uid'}"/>
|
||||
<filter icon="terp-stock_symbol-selection" string="Stage" help="By Note Category" context="{'group_by':'stage_id'}"/>
|
||||
<filter icon="terp-stock_symbol-selection" string="Stage" help="By sticky note Category" context="{'group_by':'stage_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Note Action -->
|
||||
|
||||
<!-- general settings -->
|
||||
<record model="ir.ui.view" id="view_general_settings_note_form">
|
||||
<field name="name">note.view.general_settings.form</field>
|
||||
<field name="model">base.config.settings</field>
|
||||
<field name="inherit_id" ref="base_setup.view_general_configuration"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//label[@string='Authentication']/.." position="after">
|
||||
<group>
|
||||
<label for="id" string="Notes"/>
|
||||
<div name="note">
|
||||
<div>
|
||||
<field name="module_note_pad" class="oe_inline"/>
|
||||
<label for="module_note_pad"/>
|
||||
</div>
|
||||
<div>
|
||||
<field name="group_note_fancy" class="oe_inline"/>
|
||||
<label for="group_note_fancy"/>
|
||||
</div>
|
||||
<div>
|
||||
<field name="group_note_tags" class="oe_inline"/>
|
||||
<label for="group_note_tags"/>
|
||||
</div>
|
||||
</div>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Action -->
|
||||
<record model="ir.actions.act_window" id="action_note_note">
|
||||
<field name="name">Notes</field>
|
||||
<field name="res_model">note.note</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">kanban,tree,form</field>
|
||||
<field name="search_view_id" ref="view_note_note_filter"/>
|
||||
<field name="context">{'search_default_active_true':True}</field>
|
||||
</record>
|
||||
|
||||
<menuitem name="Notes" id="note_notes" parent="note_my_stuff" sequence="20" action="action_note_note"/>
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_note_stage_user,note.stage user,model_note_stage,base.group_user,1,1,1,1
|
||||
access_note_note_user,note.note user,model_note_note,base.group_user,1,1,1,1
|
||||
access_note_stage,note.stage,model_note_stage,base.group_user,1,1,1,1
|
||||
access_note_note,note.note,model_note_note,base.group_user,1,1,1,1
|
||||
access_note_tag,note.tag,model_note_tag,base.group_user,1,1,1,1
|
||||
|
|
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record id="note_note_rule_global" model="ir.rule">
|
||||
<field name="name">Only followers can access a sticky notes</field>
|
||||
<field model="ir.model" ref="model_note_note" name="model_id"/>
|
||||
<field name="domain_force">['|',('message_follower_ids','=',False),('message_follower_ids','=',user.partner_id.id)]</field>
|
||||
<field eval="True" name="global"/>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record id="note_note_global" model="ir.rule">
|
||||
<field name="name">My notes</field>
|
||||
<field ref="model_note_note" name="model_id"/>
|
||||
<field eval="1" name="global"/>
|
||||
<field name="domain_force">[('follower_ids','=',user.id)]</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
id,name,implied_ids/id
|
||||
group_note_tags,Memo / Display tags,
|
||||
group_note_fancy,Memo / Fancy mode,
|
|
|
@ -1,3 +1,3 @@
|
|||
note.css: note.sass
|
||||
sass -t expanded note.sass note.css
|
||||
memo.css: memo.sass
|
||||
sass -t expanded memo.sass memo.css
|
||||
|
||||
|
|
|
@ -1,78 +1,143 @@
|
|||
.openerp .oe_notes .oe_fold_column .oe_kanban_card {
|
||||
text-decoration:none;
|
||||
color:#000;
|
||||
display:block;
|
||||
padding:1em;
|
||||
margin-right: 1em;
|
||||
margin-bottom: 1em;
|
||||
|
||||
-moz-box-shadow:5px 5px 7px rgba(33,33,33,1);
|
||||
-webkit-box-shadow: 5px 5px 7px rgba(33,33,33,.7);
|
||||
box-shadow: 5px 5px 7px rgba(33,33,33,.7);
|
||||
@charset "utf-8";
|
||||
@font-face {
|
||||
font-family: "mnmliconsRegular";
|
||||
src: url("/web/static/src/font/mnmliconsv21-webfont.eot") format("eot");
|
||||
src: url("/web/static/src/font/mnmliconsv21-webfont.woff") format("woff");
|
||||
src: url("/web/static/src/font/mnmliconsv21-webfont.ttf") format("truetype");
|
||||
src: url("/web/static/src/font/mnmliconsv21-webfont.svg") format("svg") active;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.openerp .oe_notes .oe_kanban_record .oe_kanban_card {
|
||||
-webkit-transform: rotate(-2deg);
|
||||
-o-transform: rotate(-2deg);
|
||||
-moz-transform:rotate(-2deg);
|
||||
@font-face {
|
||||
font-family: "EntypoRegular";
|
||||
src: url("/web/static/src/font/entypo-webfont.eot") format("eot");
|
||||
src: url("/web/static/src/font/entypo-webfont.eot?#iefix") format("embedded-opentype");
|
||||
src: url("/web/static/src/font/entypo-webfont.woff") format("woff");
|
||||
src: url("/web/static/src/font/entypo-webfont.ttf") format("truetype");
|
||||
src: url("/web/static/src/font/entypo-webfont.svg") format("svg") active;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.openerp .oe_notes .oe_kanban_record:nth-of-type(even) .oe_kanban_card {
|
||||
-webkit-transform: rotate(1deg);
|
||||
-o-transform: rotate(1deg);
|
||||
-moz-transform:rotate(1deg);
|
||||
@-moz-keyframes bounce {
|
||||
0% {
|
||||
-moz-transform: scale(0);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
50% {
|
||||
-moz-transform: scale(1.3);
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
75% {
|
||||
-moz-transform: scale(0.9);
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
100% {
|
||||
-moz-transform: scale(1);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.openerp .oe_notes .oe_kanban_record:nth-of-type(3n) .oe_kanban_card {
|
||||
-webkit-transform: rotate(4deg);
|
||||
-o-transform: rotate(4deg);
|
||||
-moz-transform:rotate(4deg);
|
||||
@-webkit-keyframes bounce {
|
||||
0% {
|
||||
-webkit-transform: scale(0);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
50% {
|
||||
-webkit-transform: scale(1.3);
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
75% {
|
||||
-webkit-transform: scale(0.9);
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
100% {
|
||||
-webkit-transform: scale(1);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.openerp .oe_notes .oe_kanban_column:nth-of-type(even) .oe_kanban_record .oe_kanban_card {
|
||||
-webkit-transform: rotate(2deg);
|
||||
-o-transform: rotate(2deg);
|
||||
-moz-transform:rotate(2deg);
|
||||
.oe_kanban_color_2 {
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
.openerp .oe_notes .oe_kanban_column:nth-of-type(even) .oe_kanban_record:nth-of-type(even) .oe_kanban_card {
|
||||
-webkit-transform: rotate(-3deg);
|
||||
-o-transform: rotate(-3deg);
|
||||
-moz-transform:rotate(-3deg);
|
||||
.oe_kanban_column .note_text_line_through {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
.openerp .oe_notes .oe_kanban_column:nth-of-type(even) .oe_kanban_record:nth-of-type(3n) .oe_kanban_card {
|
||||
-webkit-transform: rotate(1deg);
|
||||
-o-transform: rotate(1deg);
|
||||
-moz-transform:rotate(1deg);
|
||||
.openerp .oe_fold_column .oe_kanban_card_fancy {
|
||||
text-decoration: none;
|
||||
color: black;
|
||||
display: block;
|
||||
padding: 1em;
|
||||
margin-right: 1em;
|
||||
margin-bottom: 1em;
|
||||
-moz-box-shadow: 5px 5px 7px #212121;
|
||||
-webkit-box-shadow: 5px 5px 7px rgba(33, 33, 33, 0.7);
|
||||
box-shadow: 5px 5px 7px rgba(33, 33, 33, 0.7);
|
||||
}
|
||||
|
||||
.openerp .oe_notes .oe_kanban_column:nth-of-type(3n) .oe_kanban_record .oe_kanban_card {
|
||||
-webkit-transform: rotate(-2deg);
|
||||
-o-transform: rotate(-2deg);
|
||||
-moz-transform:rotate(-2deg);
|
||||
.openerp .oe_kanban_record .oe_kanban_card_fancy {
|
||||
-webkit-transform: rotate(-2deg);
|
||||
-o-transform: rotate(-2deg);
|
||||
-moz-transform: rotate(-2deg);
|
||||
}
|
||||
.openerp .oe_kanban_record:nth-of-type(even) .oe_kanban_card_fancy {
|
||||
-webkit-transform: rotate(1deg);
|
||||
-o-transform: rotate(1deg);
|
||||
-moz-transform: rotate(1deg);
|
||||
}
|
||||
.openerp .oe_kanban_record:nth-of-type(3n) .oe_kanban_card_fancy {
|
||||
-webkit-transform: rotate(4deg);
|
||||
-o-transform: rotate(4deg);
|
||||
-moz-transform: rotate(4deg);
|
||||
}
|
||||
.openerp .oe_kanban_column:nth-of-type(even) .oe_kanban_card_fancy {
|
||||
-webkit-transform: rotate(2deg);
|
||||
-o-transform: rotate(2deg);
|
||||
-moz-transform: rotate(2deg);
|
||||
}
|
||||
.openerp .oe_kanban_column:nth-of-type(even) .oe_kanban_record:nth-of-type(even) .oe_kanban_card_fancy {
|
||||
-webkit-transform: rotate(-3deg);
|
||||
-o-transform: rotate(-3deg);
|
||||
-moz-transform: rotate(-3deg);
|
||||
}
|
||||
.openerp .oe_kanban_column:nth-of-type(even) .oe_kanban_record:nth-of-type(3n) .oe_kanban_card_fancy {
|
||||
-webkit-transform: rotate(1deg);
|
||||
-o-transform: rotate(1deg);
|
||||
-moz-transform: rotate(1deg);
|
||||
}
|
||||
.openerp .oe_kanban_column:nth-of-type(3n) .oe_kanban_card_fancy {
|
||||
-webkit-transform: rotate(-2deg);
|
||||
-o-transform: rotate(-2deg);
|
||||
-moz-transform: rotate(-2deg);
|
||||
}
|
||||
.openerp .oe_kanban_column:nth-of-type(3n) .oe_kanban_record:nth-of-type(even) .oe_kanban_card_fancy {
|
||||
-webkit-transform: rotate(1deg);
|
||||
-o-transform: rotate(1deg);
|
||||
-moz-transform: rotate(1deg);
|
||||
}
|
||||
.openerp .oe_kanban_column:nth-of-type(3n) .oe_kanban_record:nth-of-type(3n) .oe_kanban_card_fancy {
|
||||
-webkit-transform: rotate(-1deg);
|
||||
-o-transform: rotate(-1deg);
|
||||
-moz-transform: rotate(-1deg);
|
||||
}
|
||||
|
||||
.openerp .oe_notes .oe_kanban_column:nth-of-type(3n) .oe_kanban_record:nth-of-type(even) .oe_kanban_card {
|
||||
-webkit-transform: rotate(1deg);
|
||||
-o-transform: rotate(1deg);
|
||||
-moz-transform:rotate(1deg);
|
||||
}
|
||||
|
||||
.openerp .oe_notes .oe_kanban_column:nth-of-type(3n) .oe_kanban_record:nth-of-type(3n) .oe_kanban_card {
|
||||
-webkit-transform: rotate(-1deg);
|
||||
-o-transform: rotate(-1deg);
|
||||
-moz-transform:rotate(-1deg);
|
||||
}
|
||||
|
||||
.openerp .oe_notes .oe_kanban_column .oe_fold_column .oe_kanban_card:hover,
|
||||
.openerp .oe_notes .oe_kanban_column .oe_fold_column .oe_kanban_card:focus {
|
||||
box-shadow:10px 10px 7px rgba(0,0,0,.7);
|
||||
-moz-box-shadow:10px 10px 7px rgba(0,0,0,.7);
|
||||
-webkit-box-shadow: 10px 10px 7px rgba(0,0,0,.7);
|
||||
-webkit-transform: rotate(0);
|
||||
-moz-transform: rotate(0);
|
||||
-o-transform: rotate(0);
|
||||
position:relative;
|
||||
z-index:5;
|
||||
.openerp .oe_kanban_column .oe_fold_column .oe_kanban_card_fancy:hover,
|
||||
.openerp .oe_kanban_column .oe_fold_column .oe_kanban_card_fancy:focus {
|
||||
box-shadow: 10px 10px 7px rgba(0, 0, 0, 0.7);
|
||||
-moz-box-shadow: 10px 10px 7px rgba(0, 0, 0, 0.7);
|
||||
-webkit-box-shadow: 10px 10px 7px rgba(0, 0, 0, 0.7);
|
||||
position: relative;
|
||||
z-index: 5;
|
||||
-webkit-transform: rotate(0);
|
||||
-o-transform: rotate(0);
|
||||
-moz-transform: rotate(0);
|
||||
}
|
||||
|
|
|
@ -42,10 +42,10 @@ $sheet-max-width: 860px
|
|||
background-color: $startColor
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from($startColor), to($endColor)) /* Saf4+, Chrome */
|
||||
background-image: -webkit-linear-gradient(top, $startColor, $endColor) /* Chrome 10+, Saf5.1+, iOS 5+ */
|
||||
background-image: -moz-linear-gradient(top, $startColor, $endColor) /* FF3.6 */
|
||||
background-image: -ms-linear-gradient(top, $startColor, $endColor) /* IE10 */
|
||||
background-image: -o-linear-gradient(top, $startColor, $endColor) /* Opera 11.10+ */
|
||||
background-image: linear-gradient(to bottom, $startColor, $endColor)
|
||||
background-image: -moz-linear-gradient(top, $startColor, $endColor) /* FF3.6 */
|
||||
background-image: -ms-linear-gradient(top, $startColor, $endColor) /* IE10 */
|
||||
background-image: -o-linear-gradient(top, $startColor, $endColor) /* Opera 11.10+ */
|
||||
background-image: linear-gradient(to bottom, $startColor, $endColor)
|
||||
|
||||
@mixin radial-gradient($gradient)
|
||||
background-position: center center
|
||||
|
@ -93,7 +93,7 @@ $sheet-max-width: 860px
|
|||
font-size: 1px
|
||||
letter-spacing: -1px
|
||||
color: transparent
|
||||
&:before
|
||||
&: before
|
||||
font: 21px "mnmliconsRegular"
|
||||
content: $icon-name
|
||||
color: $color
|
||||
|
@ -131,7 +131,79 @@ $sheet-max-width: 860px
|
|||
|
||||
|
||||
.oe_kanban_color_2
|
||||
background-color:red
|
||||
background-color: red
|
||||
|
||||
// au BufWritePost,FileWritePost *.sass :!sass --style expanded --line-numbers <afile> > "%:p:r.css"
|
||||
// au BufWritePost,FileWritePost *.sass : !sass --style expanded --line-numbers <afile> > "%: p: r.css"
|
||||
|
||||
.oe_kanban_column
|
||||
.note_text_line_through
|
||||
text-decoration: line-through
|
||||
|
||||
|
||||
.openerp
|
||||
.oe_fold_column
|
||||
.oe_kanban_card_fancy
|
||||
text-decoration: none
|
||||
color: #000
|
||||
display: block
|
||||
padding: 1em
|
||||
margin-right: 1em
|
||||
margin-bottom: 1em
|
||||
-moz-box-shadow: 5px 5px 7px rgba(33,33,33,1)
|
||||
-webkit-box-shadow: 5px 5px 7px rgba(33,33,33,.7)
|
||||
box-shadow: 5px 5px 7px rgba(33,33,33,.7)
|
||||
|
||||
|
||||
@mixin rotate($a)
|
||||
-webkit-transform: rotate($a)
|
||||
-o-transform: rotate($a)
|
||||
-moz-transform: rotate($a)
|
||||
|
||||
.openerp
|
||||
.oe_kanban_record
|
||||
.oe_kanban_card_fancy
|
||||
@include rotate(-2deg)
|
||||
.oe_kanban_record:nth-of-type(even)
|
||||
.oe_kanban_card_fancy
|
||||
@include rotate(1deg)
|
||||
.oe_kanban_record:nth-of-type(3n)
|
||||
.oe_kanban_card_fancy
|
||||
@include rotate(4deg)
|
||||
.oe_kanban_column:nth-of-type(even)
|
||||
.oe_kanban_card_fancy
|
||||
@include rotate(2deg)
|
||||
.oe_kanban_column:nth-of-type(even)
|
||||
.oe_kanban_record:nth-of-type(even)
|
||||
.oe_kanban_card_fancy
|
||||
@include rotate(-3deg)
|
||||
.oe_kanban_column:nth-of-type(even)
|
||||
.oe_kanban_record:nth-of-type(3n)
|
||||
.oe_kanban_card_fancy
|
||||
@include rotate(1deg)
|
||||
.oe_kanban_column:nth-of-type(3n)
|
||||
.oe_kanban_card_fancy
|
||||
@include rotate(-2deg)
|
||||
.oe_kanban_column:nth-of-type(3n)
|
||||
.oe_kanban_record:nth-of-type(even)
|
||||
.oe_kanban_card_fancy
|
||||
@include rotate(1deg)
|
||||
.oe_kanban_column:nth-of-type(3n)
|
||||
.oe_kanban_record:nth-of-type(3n)
|
||||
.oe_kanban_card_fancy
|
||||
@include rotate(-1deg)
|
||||
|
||||
|
||||
@mixin oe_kanban_card_fancy
|
||||
box-shadow: 10px 10px 7px rgba(0,0,0,.7)
|
||||
-moz-box-shadow: 10px 10px 7px rgba(0,0,0,.7)
|
||||
-webkit-box-shadow: 10px 10px 7px rgba(0,0,0,.7)
|
||||
position: relative
|
||||
z-index: 5
|
||||
@include rotate(0)
|
||||
|
||||
.openerp
|
||||
.oe_kanban_column
|
||||
.oe_fold_column
|
||||
.oe_kanban_card_fancy:hover,
|
||||
.oe_kanban_card_fancy:focus
|
||||
@include oe_kanban_card_fancy
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import note_pad
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
{
|
||||
'name': 'Memos pad',
|
||||
'version': '0.1',
|
||||
'category': 'Tools',
|
||||
'description': """
|
||||
This module update memos inside OpenERP for using an external pad
|
||||
===================================================================
|
||||
|
||||
Use for update your text memo in real time with the following user that you invite.
|
||||
|
||||
""",
|
||||
'author': 'OpenERP SA',
|
||||
'website': 'http://openerp.com',
|
||||
'summary': 'Sticky memos, Collaborative',
|
||||
'depends': [
|
||||
'base_tools',
|
||||
'mail',
|
||||
'pad',
|
||||
'note',
|
||||
],
|
||||
'data': [
|
||||
'note_pad_view.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'application': False,
|
||||
'auto_install': False,
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue