bzr revid: stw@openerp.com-20111003120940-e0i7cgvcxvnxxgf1
This commit is contained in:
Stephane Wirtel 2011-10-03 14:09:40 +02:00
commit 012164a0ab
128 changed files with 3436 additions and 2084 deletions

View File

@ -23,7 +23,7 @@ import account
import installer import installer
import project import project
import partner import partner
import invoice import account_invoice
import account_bank_statement import account_bank_statement
import account_bank import account_bank
import account_cash_statement import account_cash_statement
@ -32,7 +32,7 @@ import account_analytic_line
import wizard import wizard
import report import report
import product import product
import sequence import ir_sequence
import company import company
import res_currency import res_currency

View File

@ -103,8 +103,7 @@ module named account_voucher.
'account_end_fy.xml', 'account_end_fy.xml',
'account_invoice_view.xml', 'account_invoice_view.xml',
'partner_view.xml', 'partner_view.xml',
'data/account_invoice.xml', 'data/account_data.xml',
'data/account_data2.xml',
'account_invoice_workflow.xml', 'account_invoice_workflow.xml',
'project/project_view.xml', 'project/project_view.xml',
'project/project_report.xml', 'project/project_report.xml',
@ -119,7 +118,7 @@ module named account_voucher.
'process/statement_process.xml', 'process/statement_process.xml',
'process/customer_invoice_process.xml', 'process/customer_invoice_process.xml',
'process/supplier_invoice_process.xml', 'process/supplier_invoice_process.xml',
'sequence_view.xml', 'ir_sequence_view.xml',
'company_view.xml', 'company_view.xml',
'board_account_view.xml', 'board_account_view.xml',
"wizard/account_report_profit_loss_view.xml", "wizard/account_report_profit_loss_view.xml",

View File

@ -346,6 +346,52 @@ class account_account(osv.osv):
res[account.id] = level res[account.id] = level
return res return res
def _set_credit_debit(self, cr, uid, account_id, name, value, arg, context=None):
if context.get('config_invisible', True):
return True
account = self.browse(cr, uid, account_id, context=context)
diff = value - getattr(account,name)
if not diff:
return True
journal_obj = self.pool.get('account.journal')
jids = journal_obj.search(cr, uid, [('type','=','situation'),('centralisation','=',1),('company_id','=',account.company_id.id)], context=context)
if not jids:
raise osv.except_osv(_('Error!'),_("You need an Opening journal with centralisation checked to set the initial balance!"))
period_obj = self.pool.get('account.period')
pids = period_obj.search(cr, uid, [('special','=',True),('company_id','=',account.company_id.id)], context=context)
if not pids:
raise osv.except_osv(_('Error!'),_("No opening/closing period defined, please create one to set the initial balance!"))
move_obj = self.pool.get('account.move.line')
move_id = move_obj.search(cr, uid, [
('journal_id','=',jids[0]),
('period_id','=',pids[0]),
('account_id','=', account_id),
(name,'>', 0.0),
('name','=', _('Opening Balance'))
], context=context)
if move_id:
move = move_obj.browse(cr, uid, move_id[0], context=context)
move_obj.write(cr, uid, move_id[0], {
name: diff+getattr(move,name)
}, context=context)
else:
if diff<0.0:
raise osv.except_osv(_('Error!'),_("Unable to adapt the initial balance (negative value)!"))
nameinv = (name=='credit' and 'debit') or 'credit'
move_id = move_obj.create(cr, uid, {
'name': _('Opening Balance'),
'account_id': account_id,
'journal_id': jids[0],
'period_id': pids[0],
name: diff,
nameinv: 0.0
}, context=context)
return True
_columns = { _columns = {
'name': fields.char('Name', size=128, required=True, select=True), 'name': fields.char('Name', size=128, required=True, select=True),
'currency_id': fields.many2one('res.currency', 'Secondary Currency', help="Forces all moves for this account to have this secondary currency."), 'currency_id': fields.many2one('res.currency', 'Secondary Currency', help="Forces all moves for this account to have this secondary currency."),
@ -370,9 +416,9 @@ class account_account(osv.osv):
'child_consol_ids': fields.many2many('account.account', 'account_account_consol_rel', 'child_id', 'parent_id', 'Consolidated Children'), 'child_consol_ids': fields.many2many('account.account', 'account_account_consol_rel', 'child_id', 'parent_id', 'Consolidated Children'),
'child_id': fields.function(_get_child_ids, type='many2many', relation="account.account", string="Child Accounts"), 'child_id': fields.function(_get_child_ids, type='many2many', relation="account.account", string="Child Accounts"),
'balance': fields.function(__compute, digits_compute=dp.get_precision('Account'), string='Balance', multi='balance'), 'balance': fields.function(__compute, digits_compute=dp.get_precision('Account'), string='Balance', multi='balance'),
'credit': fields.function(__compute, digits_compute=dp.get_precision('Account'), string='Credit', multi='balance'), 'credit': fields.function(__compute, fnct_inv=_set_credit_debit, digits_compute=dp.get_precision('Account'), string='Credit', multi='balance'),
'debit': fields.function(__compute, digits_compute=dp.get_precision('Account'), string='Debit', multi='balance'), 'debit': fields.function(__compute, fnct_inv=_set_credit_debit, digits_compute=dp.get_precision('Account'), string='Debit', multi='balance'),
'reconcile': fields.boolean('Reconcile', help="Check this if the user is allowed to reconcile entries in this account."), 'reconcile': fields.boolean('Allow Reconciliation', help="Check this box if this account allows reconciliation of journal items."),
'shortcut': fields.char('Shortcut', size=12), 'shortcut': fields.char('Shortcut', size=12),
'tax_ids': fields.many2many('account.tax', 'account_account_tax_default_rel', 'tax_ids': fields.many2many('account.tax', 'account_account_tax_default_rel',
'account_id', 'tax_id', 'Default Taxes'), 'account_id', 'tax_id', 'Default Taxes'),
@ -672,32 +718,22 @@ class account_journal(osv.osv):
return super(account_journal, self).write(cr, uid, ids, vals, context=context) return super(account_journal, self).write(cr, uid, ids, vals, context=context)
def create_sequence(self, cr, uid, vals, context=None): def create_sequence(self, cr, uid, vals, context=None):
""" Create new no_gap entry sequence for every new Joural
""" """
Create new entry sequence for every new Joural # in account.journal code is actually the prefix of the sequence
""" # whereas ir.sequence code is a key to lookup global sequences.
seq_pool = self.pool.get('ir.sequence') prefix = vals['code'].upper()
seq_typ_pool = self.pool.get('ir.sequence.type')
name = vals['name']
code = vals['code'].lower()
types = {
'name': name,
'code': code
}
seq_typ_pool.create(cr, uid, types)
seq = { seq = {
'name': name, 'name': vals['name'],
'code': code, 'implementation':'no_gap',
'active': True, 'prefix': prefix + "/%(year)s/",
'prefix': code + "/%(year)s/",
'padding': 4, 'padding': 4,
'number_increment': 1 'number_increment': 1
} }
if 'company_id' in vals: if 'company_id' in vals:
seq['company_id'] = vals['company_id'] seq['company_id'] = vals['company_id']
return seq_pool.create(cr, uid, seq) return self.pool.get('ir.sequence').create(cr, uid, seq)
def create(self, cr, uid, vals, context=None): def create(self, cr, uid, vals, context=None):
if not 'sequence_id' in vals or not vals['sequence_id']: if not 'sequence_id' in vals or not vals['sequence_id']:
@ -1214,7 +1250,7 @@ class account_move(osv.osv):
else: else:
if journal.sequence_id: if journal.sequence_id:
c = {'fiscalyear_id': move.period_id.fiscalyear_id.id} c = {'fiscalyear_id': move.period_id.fiscalyear_id.id}
new_name = obj_sequence.get_id(cr, uid, journal.sequence_id.id, context=c) new_name = obj_sequence.next_by_id(cr, uid, journal.sequence_id.id, c)
else: else:
raise osv.except_osv(_('Error'), _('No sequence defined on the journal !')) raise osv.except_osv(_('Error'), _('No sequence defined on the journal !'))
@ -2730,7 +2766,7 @@ class wizard_multi_charts_accounts(osv.osv_memory):
_columns = { _columns = {
'company_id':fields.many2one('res.company', 'Company', required=True), 'company_id':fields.many2one('res.company', 'Company', required=True),
'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', required=True), 'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', required=True),
'bank_accounts_id': fields.one2many('account.bank.accounts.wizard', 'bank_account_id', 'Bank Accounts', required=True), 'bank_accounts_id': fields.one2many('account.bank.accounts.wizard', 'bank_account_id', 'Cash and Banks', required=True),
'code_digits':fields.integer('# of Digits', required=True, help="No. of Digits to use for account code"), 'code_digits':fields.integer('# of Digits', required=True, help="No. of Digits to use for account code"),
'seq_journal':fields.boolean('Separated Journal Sequences', help="Check this box if you want to use a different sequence for each created journal. Otherwise, all will use the same sequence."), 'seq_journal':fields.boolean('Separated Journal Sequences', help="Check this box if you want to use a different sequence for each created journal. Otherwise, all will use the same sequence."),
"sale_tax": fields.many2one("account.tax.template", "Default Sale Tax"), "sale_tax": fields.many2one("account.tax.template", "Default Sale Tax"),
@ -2778,7 +2814,6 @@ class wizard_multi_charts_accounts(osv.osv_memory):
def _get_default_accounts(self, cr, uid, context=None): def _get_default_accounts(self, cr, uid, context=None):
return [ return [
{'acc_name': _('Bank Account'),'account_type':'bank'},
{'acc_name': _('Cash'),'account_type':'cash'} {'acc_name': _('Cash'),'account_type':'cash'}
] ]

View File

@ -340,9 +340,9 @@ class account_bank_statement(osv.osv):
else: else:
if st.journal_id.sequence_id: if st.journal_id.sequence_id:
c = {'fiscalyear_id': st.period_id.fiscalyear_id.id} c = {'fiscalyear_id': st.period_id.fiscalyear_id.id}
st_number = obj_seq.get_id(cr, uid, st.journal_id.sequence_id.id, context=c) st_number = obj_seq.next_by_id(cr, uid, st.journal_id.sequence_id.id, context=c)
else: else:
st_number = obj_seq.get(cr, uid, 'account.bank.statement') st_number = obj_seq.next_by_code(cr, uid, 'account.bank.statement')
for line in st.move_line_ids: for line in st.move_line_ids:
if line.state <> 'valid': if line.state <> 'valid':

View File

@ -13,7 +13,7 @@
<field name="inherit_id" ref="base.view_partner_bank_form"/> <field name="inherit_id" ref="base.view_partner_bank_form"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<group name="bank" position="after"> <group name="bank" position="after">
<group name="accounting" col="2" colspan="2" attrs="{'invisible': [('company_id','=', False)]}"> <group name="accounting" col="2" colspan="2" attrs="{'invisible': [('company_id','=', False)]}" groups="base.group_extended">
<separator string="Accounting Information" colspan="2"/> <separator string="Accounting Information" colspan="2"/>
<field name="journal_id"/> <field name="journal_id"/>
</group> </group>
@ -23,16 +23,16 @@
<record id="action_bank_tree" model="ir.actions.act_window"> <record id="action_bank_tree" model="ir.actions.act_window">
<field name="name">Bank Accounts</field> <field name="name">Setup your Bank Accounts</field>
<field name="res_model">res.partner.bank</field> <field name="res_model">res.partner.bank</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="context" eval="{'default_partner_id':ref('base.main_partner'), 'company_hide':False, 'default_company_id':ref('base.main_company'), 'search_default_my_bank':1}"/> <field name="context" eval="{'default_partner_id':ref('base.main_partner'), 'company_hide':False, 'default_company_id':ref('base.main_company'), 'search_default_my_bank':1}"/>
<field name="help">Configure your company's bank account and select those that must appear on the report footer. You can drag &amp; drop bank in the list view to reorder bank accounts. If you use the accounting application of OpenERP, journals and accounts will be created automatically based on these data.</field> <field name="help">Configure your company's bank account and select those that must appear on the report footer. You can reorder banks in the list view. If you use the accounting application of OpenERP, journals and accounts will be created automatically based on these data.</field>
</record> </record>
<menuitem <menuitem
sequence="0" sequence="0"
parent="account.account_account_menu" parent="account.account_account_menu"
id="menu_action_bank_tree" id="menu_action_bank_tree"
action="action_bank_tree"/> action="action_bank_tree"/>

View File

@ -294,9 +294,9 @@ class account_cash_statement(osv.osv):
if statement.name and statement.name == '/': if statement.name and statement.name == '/':
if statement.journal_id.sequence_id: if statement.journal_id.sequence_id:
c = {'fiscalyear_id': statement.period_id.fiscalyear_id.id} c = {'fiscalyear_id': statement.period_id.fiscalyear_id.id}
st_number = obj_seq.get_id(cr, uid, statement.journal_id.sequence_id.id, context=c) st_number = obj_seq.next_by_id(cr, uid, statement.journal_id.sequence_id.id, context=c)
else: else:
st_number = obj_seq.get(cr, uid, 'account.cash.statement') st_number = obj_seq.next_by_code(cr, uid, 'account.cash.statement')
vals.update({ vals.update({
'name': st_number 'name': st_number
}) })

View File

@ -11,7 +11,7 @@
<attribute name="string">Accounting Application Configuration</attribute> <attribute name="string">Accounting Application Configuration</attribute>
</form> </form>
<separator string="title" position="attributes"> <separator string="title" position="attributes">
<attribute name="string">Configure Your Accounting Chart</attribute> <attribute name="string">Configure Your Chart of Accounts</attribute>
</separator> </separator>
<xpath expr="//label[@string='description']" position="attributes"> <xpath expr="//label[@string='description']" position="attributes">
<attribute name="string">The default Chart of Accounts is matching your country selection. If no certified Chart of Accounts exists for your specified country, a generic one can be installed and will be selected by default.</attribute> <attribute name="string">The default Chart of Accounts is matching your country selection. If no certified Chart of Accounts exists for your specified country, a generic one can be installed and will be selected by default.</attribute>
@ -26,7 +26,7 @@
<group colspan="8" position="inside"> <group colspan="8" position="inside">
<group colspan="4" width="600"> <group colspan="4" width="600">
<field name="charts"/> <field name="charts"/>
<group colspan="4" groups="base.group_extended"> <group colspan="4" groups="account.group_account_user">
<separator col="4" colspan="4" string="Configure Fiscal Year"/> <separator col="4" colspan="4" string="Configure Fiscal Year"/>
<field name="company_id" colspan="4" widget="selection"/><!-- we assume that this wizard will be run only by administrators and as this field may cause problem if hidden (because of the default company of the user removed from the selection because already configured), we simply choosed to remove the group "multi company" of it --> <field name="company_id" colspan="4" widget="selection"/><!-- we assume that this wizard will be run only by administrators and as this field may cause problem if hidden (because of the default company of the user removed from the selection because already configured), we simply choosed to remove the group "multi company" of it -->
<field name="date_start" on_change="on_change_start_date(date_start)"/> <field name="date_start" on_change="on_change_start_date(date_start)"/>
@ -44,7 +44,7 @@
</record> </record>
<record id="action_account_configuration_installer" model="ir.actions.act_window"> <record id="action_account_configuration_installer" model="ir.actions.act_window">
<field name="name">Accounting Chart Configuration</field> <field name="name">Install your Chart of Accounts</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">account.installer</field> <field name="res_model">account.installer</field>
<field name="view_id" ref="view_account_configuration_installer"/> <field name="view_id" ref="view_account_configuration_installer"/>
@ -65,25 +65,13 @@
<field name="type">automatic</field> <field name="type">automatic</field>
</record> </record>
<record id="action_bank_account_configuration_installer" model="ir.actions.act_window">
<field name="name">Define your Bank Account</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner.bank</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
</record>
<record id="bank_account_configuration_todo" model="ir.actions.todo">
<field name="action_id" ref="action_bank_account_configuration_installer" />
<field name="category_id" ref="category_accounting_configuration" />
</record>
<record id="action_view_financial_accounts_installer" model="ir.actions.act_window"> <record id="action_view_financial_accounts_installer" model="ir.actions.act_window">
<field name="name">Review your Financial Accounts</field> <field name="name">Review your Financial Accounts</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">account.account</field> <field name="res_model">account.account</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="context">{'config_invisible': False}</field>
</record> </record>
<record id="view_financial_accounts_todo" model="ir.actions.todo"> <record id="view_financial_accounts_todo" model="ir.actions.todo">
@ -93,11 +81,12 @@
</record> </record>
<record id="action_review_financial_journals_installer" model="ir.actions.act_window"> <record id="action_review_financial_journals_installer" model="ir.actions.act_window">
<field name="name">Review your Financial Journal</field> <field name="name">Review your Financial Journals</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">account.journal</field> <field name="res_model">account.journal</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="help">Setup your accounting journals. For bank accounts, it's better to use the 'Setup Your Bank Accounts' tool that will automatically create the accounts and journals for you.</field>
</record> </record>
<record id="review_financial_journals_todo" model="ir.actions.todo"> <record id="review_financial_journals_todo" model="ir.actions.todo">
@ -111,6 +100,7 @@
<field name="res_model">account.payment.term</field> <field name="res_model">account.payment.term</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="help">Payment terms define the conditions to pay a customer or supplier invoice in one or several payments. Customers periodic reminders will use the payment terms for each letter. Each customer or supplier can be assigned to one of these payment terms.</field>
</record> </record>
<record id="review_payment_terms_todo" model="ir.actions.todo"> <record id="review_payment_terms_todo" model="ir.actions.todo">

View File

@ -1221,7 +1221,7 @@ class account_move_line(osv.osv):
vals['move_id'] = res[0] vals['move_id'] = res[0]
if not vals.get('move_id', False): if not vals.get('move_id', False):
if journal.sequence_id: if journal.sequence_id:
#name = self.pool.get('ir.sequence').get_id(cr, uid, journal.sequence_id.id) #name = self.pool.get('ir.sequence').next_by_id(cr, uid, journal.sequence_id.id)
v = { v = {
'date': vals.get('date', time.strftime('%Y-%m-%d')), 'date': vals.get('date', time.strftime('%Y-%m-%d')),
'period_id': context['period_id'], 'period_id': context['period_id'],

View File

@ -162,17 +162,21 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Account"> <form string="Account">
<group col="6" colspan="4"> <group col="6" colspan="4">
<field name="name" select="1"/> <field name="name" select="1"/>
<field name="code" select="1"/> <field name="code" select="1"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/> <field name="company_id" widget="selection" groups="base.group_multi_company"/>
<newline/> <newline/>
<field name="parent_id"/> <field name="parent_id"/>
<field name="type" select="1"/> <field name="type" select="1"/>
<field name="user_type" select="1"/> <field name="user_type" select="1"/>
<field name="active" groups="base.group_extended" />
<newline/>
<field name="debit" invisible="context.get('config_invisible', True)"/>
<field name="credit" invisible="context.get('config_invisible', True)"/>
<field name="balance" invisible="context.get('config_invisible', True)"/>
</group> </group>
<notebook colspan="4"> <notebook colspan="4">
<page string="General Information"> <page string="General Information">
<field name="active" groups="base.group_extended" />
<newline/> <newline/>
<group col="2" colspan="2"> <group col="2" colspan="2">
<separator string="Currency" colspan="2"/> <separator string="Currency" colspan="2"/>
@ -209,7 +213,6 @@
<field name="code"/> <field name="code"/>
<field name="name"/> <field name="name"/>
<field name="user_type"/> <field name="user_type"/>
<field name="type"/>
</group> </group>
<newline/> <newline/>
<group expand="0" string="Group By..."> <group expand="0" string="Group By...">
@ -438,9 +441,9 @@
<field name="user_id" groups="base.group_extended"/> <field name="user_id" groups="base.group_extended"/>
<field name="currency"/> <field name="currency"/>
</group> </group>
<group colspan="2" col="2"> <group colspan="2" col="2" groups="base.group_extended">
<separator string="Validations" colspan="4"/> <separator string="Validations" colspan="4"/>
<field name="allow_date" groups="base.group_extended"/> <field name="allow_date"/>
</group> </group>
<group colspan="2" col="2"> <group colspan="2" col="2">
<separator string="Other Configuration" colspan="4"/> <separator string="Other Configuration" colspan="4"/>
@ -2375,8 +2378,7 @@
<attribute name="string">Accounting Application Configuration</attribute> <attribute name="string">Accounting Application Configuration</attribute>
</form> </form>
<separator string="title" position="attributes"> <separator string="title" position="attributes">
<attribute name="string" <attribute name="string">Generate Your Chart of Accounts from a Chart Template</attribute>
>Generate Your Accounting Chart from a Chart Template</attribute>
</separator> </separator>
<xpath expr="//label[@string='description']" position="attributes"> <xpath expr="//label[@string='description']" position="attributes">
<attribute name="string">This will automatically configure your chart of accounts, bank accounts, taxes and journals according to the selected template</attribute> <attribute name="string">This will automatically configure your chart of accounts, bank accounts, taxes and journals according to the selected template</attribute>
@ -2388,13 +2390,13 @@
</xpath> </xpath>
<group string="res_config_contents" position="replace"> <group string="res_config_contents" position="replace">
<field name="company_id" widget="selection"/> <!-- we assume that this wizard will be run only by administrators and as this field may cause problem if hidden (because of the default company of the user removed from the selection because already configured), we simply choosed to remove the group "multi company" of it --> <field name="company_id" widget="selection"/> <!-- we assume that this wizard will be run only by administrators and as this field may cause problem if hidden (because of the default company of the user removed from the selection because already configured), we simply choosed to remove the group "multi company" of it -->
<field name ="code_digits" groups="base.group_extended"/> <field name ="code_digits" groups="account.group_account_user"/>
<field name="chart_template_id" widget="selection" on_change="onchange_chart_template_id(chart_template_id)"/> <field name="chart_template_id" widget="selection" on_change="onchange_chart_template_id(chart_template_id)"/>
<field name ="seq_journal" groups="base.group_extended"/> <field name ="seq_journal" groups="account.group_account_user"/>
<field name="sale_tax" domain="[('chart_template_id', '=', chart_template_id),('parent_id','=',False),('type_tax_use','in',('sale','all'))]"/> <field name="sale_tax" domain="[('chart_template_id', '=', chart_template_id),('parent_id','=',False),('type_tax_use','in',('sale','all'))]"/>
<field name="purchase_tax" domain="[('chart_template_id', '=', chart_template_id),('parent_id','=',False),('type_tax_use','in',('purchase', 'all'))]"/> <field name="purchase_tax" domain="[('chart_template_id', '=', chart_template_id),('parent_id','=',False),('type_tax_use','in',('purchase', 'all'))]"/>
<newline/> <!-- extended view because the web UI is not good for one2many --> <newline/> <!-- extended view because the web UI is not good for one2many -->
<field colspan="4" mode="tree" name="bank_accounts_id" nolabel="1" widget="one2many_list" groups="base.group_extended"> <field colspan="4" mode="tree" name="bank_accounts_id" nolabel="1" widget="one2many_list" groups="account.group_account_user">
<form string="Bank Information"> <form string="Bank Information">
<field name="acc_name"/> <field name="acc_name"/>
<field name="account_type"/> <field name="account_type"/>

View File

@ -21,26 +21,26 @@
<field name="close_method">none</field> <field name="close_method">none</field>
</record> </record>
<record model="account.account.type" id="account_type_income_view1"> <record model="account.account.type" id="account_type_income_view1">
<field name="name">Income View</field> <field name="name">Income View</field>
<field name="code">view</field> <field name="code">view</field>
<field name="report_type">income</field> <field name="report_type">income</field>
</record> </record>
<record model="account.account.type" id="account_type_expense_view1"> <record model="account.account.type" id="account_type_expense_view1">
<field name="name">Expense View</field> <field name="name">Expense View</field>
<field name="code">expense</field> <field name="code">expense</field>
<field name="report_type">expense</field> <field name="report_type">expense</field>
</record> </record>
<record model="account.account.type" id="account_type_asset_view1"> <record model="account.account.type" id="account_type_asset_view1">
<field name="name">Asset View</field> <field name="name">Asset View</field>
<field name="code">asset</field> <field name="code">asset</field>
<field name="report_type">asset</field> <field name="report_type">asset</field>
</record> </record>
<record model="account.account.type" id="account_type_liability_view1"> <record model="account.account.type" id="account_type_liability_view1">
<field name="name">Liability View</field> <field name="name">Liability View</field>
<field name="code">liability</field> <field name="code">liability</field>
<field name="report_type">liability</field> <field name="report_type">liability</field>
</record> </record>
<record model="account.account.type" id="conf_account_type_income"> <record model="account.account.type" id="conf_account_type_income">
<field name="name">Income</field> <field name="name">Income</field>
@ -106,16 +106,16 @@
<!-- Account Templates--> <!-- Account Templates-->
<record id="conf_chart0" model="account.account.template"> <record id="conf_chart0" model="account.account.template">
<field name="code">0</field> <field name="code">0</field>
<field name="name">Configurable Account Chart</field> <field name="name">Configurable Account Chart</field>
<field eval="0" name="parent_id"/> <field eval="0" name="parent_id"/>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="conf_account_type_view"/> <field name="user_type" ref="conf_account_type_view"/>
</record> </record>
<!-- Balance Sheet --> <!-- Balance Sheet -->
<record id="conf_bal" model="account.account.template"> <record id="conf_bal" model="account.account.template">
<field name="code">1</field> <field name="code">1</field>
@ -125,120 +125,120 @@
<field name="user_type" ref="conf_account_type_view"/> <field name="user_type" ref="conf_account_type_view"/>
</record> </record>
<record id="conf_fas" model="account.account.template"> <record id="conf_fas" model="account.account.template">
<field name="code">10</field> <field name="code">10</field>
<field name="name">Fixed Assets</field> <field name="name">Fixed Assets</field>
<field ref="conf_bal" name="parent_id"/> <field ref="conf_bal" name="parent_id"/>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_asset_view1"/> <field name="user_type" ref="account_type_asset_view1"/>
</record> </record>
<record id="conf_xfa" model="account.account.template"> <record id="conf_xfa" model="account.account.template">
<field name="code">100</field> <field name="code">100</field>
<field name="name">Fixed Asset Account</field> <field name="name">Fixed Asset Account</field>
<field ref="conf_fas" name="parent_id"/> <field ref="conf_fas" name="parent_id"/>
<field name="type">other</field> <field name="type">other</field>
<field name="user_type" ref="account_type_asset_view1"/> <field name="user_type" ref="account_type_asset_view1"/>
</record> </record>
<record id="conf_nca" model="account.account.template"> <record id="conf_nca" model="account.account.template">
<field name="code">11</field> <field name="code">11</field>
<field name="name">Net Current Assets</field> <field name="name">Net Current Assets</field>
<field ref="conf_bal" name="parent_id"/> <field ref="conf_bal" name="parent_id"/>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_asset_view1"/> <field name="user_type" ref="account_type_asset_view1"/>
</record> </record>
<record id="conf_cas" model="account.account.template"> <record id="conf_cas" model="account.account.template">
<field name="code">110</field> <field name="code">110</field>
<field name="name">Current Assets</field> <field name="name">Current Assets</field>
<field ref="conf_nca" name="parent_id"/> <field ref="conf_nca" name="parent_id"/>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_asset_view1"/> <field name="user_type" ref="account_type_asset_view1"/>
</record> </record>
<record id="conf_stk" model="account.account.template"> <record id="conf_stk" model="account.account.template">
<field name="code">1101</field> <field name="code">1101</field>
<field name="name">Purchased Stocks</field> <field name="name">Purchased Stocks</field>
<field ref="conf_cas" name="parent_id"/> <field ref="conf_cas" name="parent_id"/>
<field name="type">other</field> <field name="type">other</field>
<field name="user_type" ref="conf_account_type_asset"/> <field name="user_type" ref="conf_account_type_asset"/>
</record> </record>
<record id="conf_a_recv" model="account.account.template"> <record id="conf_a_recv" model="account.account.template">
<field name="code">1102</field> <field name="code">1102</field>
<field name="name">Debtors</field> <field name="name">Debtors</field>
<field ref="conf_cas" name="parent_id"/> <field ref="conf_cas" name="parent_id"/>
<field name="type">receivable</field> <field name="type">receivable</field>
<field eval="True" name="reconcile"/> <field eval="True" name="reconcile"/>
<field name="user_type" ref="conf_account_type_asset"/> <field name="user_type" ref="conf_account_type_asset"/>
</record> </record>
<record id="conf_ova" model="account.account.template"> <record id="conf_ova" model="account.account.template">
<field name="code">1103</field> <field name="code">1103</field>
<field name="name">Tax Paid</field> <field name="name">Tax Paid</field>
<field ref="conf_cas" name="parent_id"/> <field ref="conf_cas" name="parent_id"/>
<field name="type">other</field> <field name="type">other</field>
<field name="user_type" ref="conf_account_type_asset"/> <field name="user_type" ref="conf_account_type_asset"/>
</record> </record>
<record id="conf_bnk" model="account.account.template"> <record id="conf_bnk" model="account.account.template">
<field name="code">1104</field> <field name="code">1104</field>
<field name="name">Bank Current Account</field> <field name="name">Bank Current Account</field>
<field ref="conf_cas" name="parent_id"/> <field ref="conf_cas" name="parent_id"/>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_asset_view1"/> <field name="user_type" ref="account_type_asset_view1"/>
</record> </record>
<record id="conf_o_income" model="account.account.template"> <record id="conf_o_income" model="account.account.template">
<field name="code">1106</field> <field name="code">1106</field>
<field name="name">Opening Income Account</field> <field name="name">Opening Income Account</field>
<field ref="conf_cas" name="parent_id"/> <field ref="conf_cas" name="parent_id"/>
<field name="type">other</field> <field name="type">other</field>
<field name="user_type" ref="conf_account_type_income"/> <field name="user_type" ref="conf_account_type_income"/>
</record> </record>
<record id="conf_cli" model="account.account.template"> <record id="conf_cli" model="account.account.template">
<field name="code">111</field> <field name="code">111</field>
<field name="name">Current Liabilities</field> <field name="name">Current Liabilities</field>
<field ref="conf_nca" name="parent_id"/> <field ref="conf_nca" name="parent_id"/>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_liability_view1"/> <field name="user_type" ref="account_type_liability_view1"/>
</record> </record>
<record id="conf_a_pay" model="account.account.template"> <record id="conf_a_pay" model="account.account.template">
<field name="code">1111</field> <field name="code">1111</field>
<field name="name">Creditors</field> <field name="name">Creditors</field>
<field ref="conf_cli" name="parent_id"/> <field ref="conf_cli" name="parent_id"/>
<field name="type">payable</field> <field name="type">payable</field>
<field eval="True" name="reconcile"/> <field eval="True" name="reconcile"/>
<field name="user_type" ref="conf_account_type_liability"/> <field name="user_type" ref="conf_account_type_liability"/>
</record> </record>
<record id="conf_iva" model="account.account.template"> <record id="conf_iva" model="account.account.template">
<field name="code">1112</field> <field name="code">1112</field>
<field name="name">Tax Received</field> <field name="name">Tax Received</field>
<field ref="conf_cli" name="parent_id"/> <field ref="conf_cli" name="parent_id"/>
<field name="type">other</field> <field name="type">other</field>
<field name="user_type" ref="conf_account_type_liability"/> <field name="user_type" ref="conf_account_type_liability"/>
</record> </record>
<record id="conf_a_reserve_and_surplus" model="account.account.template"> <record id="conf_a_reserve_and_surplus" model="account.account.template">
<field name="code">1113</field> <field name="code">1113</field>
<field name="name">Reserve and Profit/Loss Account</field> <field name="name">Reserve and Profit/Loss Account</field>
<field ref="conf_cli" name="parent_id"/> <field ref="conf_cli" name="parent_id"/>
<field name="type">other</field> <field name="type">other</field>
<field eval="True" name="reconcile"/> <field eval="True" name="reconcile"/>
<field name="user_type" ref="conf_account_type_liability"/> <field name="user_type" ref="conf_account_type_liability"/>
</record> </record>
<record id="conf_o_expense" model="account.account.template"> <record id="conf_o_expense" model="account.account.template">
<field name="code">1114</field> <field name="code">1114</field>
<field name="name">Opening Expense Account</field> <field name="name">Opening Expense Account</field>
<field ref="conf_cli" name="parent_id"/> <field ref="conf_cli" name="parent_id"/>
<field name="type">other</field> <field name="type">other</field>
<field name="user_type" ref="conf_account_type_expense"/> <field name="user_type" ref="conf_account_type_expense"/>
</record> </record>
<!-- Profit and Loss --> <!-- Profit and Loss -->
@ -250,53 +250,53 @@
<field name="user_type" ref="conf_account_type_view"/> <field name="user_type" ref="conf_account_type_view"/>
</record> </record>
<record id="conf_rev" model="account.account.template"> <record id="conf_rev" model="account.account.template">
<field name="code">20</field> <field name="code">20</field>
<field name="name">Revenue</field> <field name="name">Revenue</field>
<field ref="conf_gpf" name="parent_id"/> <field ref="conf_gpf" name="parent_id"/>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_income_view1"/> <field name="user_type" ref="account_type_income_view1"/>
</record> </record>
<record id="conf_a_sale" model="account.account.template"> <record id="conf_a_sale" model="account.account.template">
<field name="code">200</field> <field name="code">200</field>
<field name="name">Product Sales</field> <field name="name">Product Sales</field>
<field ref="conf_rev" name="parent_id"/> <field ref="conf_rev" name="parent_id"/>
<field name="type">other</field> <field name="type">other</field>
<field name="user_type" ref="conf_account_type_income"/> <field name="user_type" ref="conf_account_type_income"/>
</record> </record>
<record id="conf_cos" model="account.account.template"> <record id="conf_cos" model="account.account.template">
<field name="code">21</field> <field name="code">21</field>
<field name="name">Cost of Sales</field> <field name="name">Cost of Sales</field>
<field ref="conf_gpf" name="parent_id"/> <field ref="conf_gpf" name="parent_id"/>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_income_view1"/> <field name="user_type" ref="account_type_income_view1"/>
</record> </record>
<record id="conf_cog" model="account.account.template"> <record id="conf_cog" model="account.account.template">
<field name="code">210</field> <field name="code">210</field>
<field name="name">Cost of Goods Sold</field> <field name="name">Cost of Goods Sold</field>
<field ref="conf_cos" name="parent_id"/> <field ref="conf_cos" name="parent_id"/>
<field name="type">other</field> <field name="type">other</field>
<field name="user_type" ref="conf_account_type_expense"/> <field name="user_type" ref="conf_account_type_expense"/>
</record> </record>
<record id="conf_ovr" model="account.account.template"> <record id="conf_ovr" model="account.account.template">
<field name="code">22</field> <field name="code">22</field>
<field name="name">Overheads</field> <field name="name">Overheads</field>
<field ref="conf_gpf" name="parent_id"/> <field ref="conf_gpf" name="parent_id"/>
<field name="type">view</field> <field name="type">view</field>
<field name="user_type" ref="account_type_expense_view1"/> <field name="user_type" ref="account_type_expense_view1"/>
</record> </record>
<record id="conf_a_expense" model="account.account.template"> <record id="conf_a_expense" model="account.account.template">
<field name="code">220</field> <field name="code">220</field>
<field name="name">Expenses</field> <field name="name">Expenses</field>
<field ref="conf_ovr" name="parent_id"/> <field ref="conf_ovr" name="parent_id"/>
<field name="type">other</field> <field name="type">other</field>
<field name="user_type" ref="conf_account_type_expense"/> <field name="user_type" ref="conf_account_type_expense"/>
</record> </record>
<record id="conf_a_salary_expense" model="account.account.template"> <record id="conf_a_salary_expense" model="account.account.template">
<field name="code">221</field> <field name="code">221</field>
@ -315,126 +315,126 @@
<field name="name">Plan Fees </field> <field name="name">Plan Fees </field>
</record> </record>
<record id="tax_code_balance_net" model="account.tax.code.template"> <record id="tax_code_balance_net" model="account.tax.code.template">
<field name="name">Tax Balance to Pay</field> <field name="name">Tax Balance to Pay</field>
<field name="parent_id" ref="tax_code_chart_root"/> <field name="parent_id" ref="tax_code_chart_root"/>
</record> </record>
<!-- Input TAX --> <!-- Input TAX -->
<record id="tax_code_input" model="account.tax.code.template"> <record id="tax_code_input" model="account.tax.code.template">
<field name="name">Tax Received</field> <field name="name">Tax Received</field>
<field name="parent_id" ref="tax_code_balance_net"/> <field name="parent_id" ref="tax_code_balance_net"/>
<field eval="-1" name="sign"/> <field eval="-1" name="sign"/>
</record> </record>
<record id="tax_code_input_S" model="account.tax.code.template"> <record id="tax_code_input_S" model="account.tax.code.template">
<field name="name">Tax Received Rate S (15%)</field> <field name="name">Tax Received Rate S (15%)</field>
<field name="parent_id" ref="tax_code_input"/> <field name="parent_id" ref="tax_code_input"/>
</record> </record>
<record id="tax_code_input_R" model="account.tax.code.template"> <record id="tax_code_input_R" model="account.tax.code.template">
<field name="name">Tax Received Rate R (5%)</field> <field name="name">Tax Received Rate R (5%)</field>
<field name="parent_id" ref="tax_code_input"/> <field name="parent_id" ref="tax_code_input"/>
</record> </record>
<record id="tax_code_input_X" model="account.tax.code.template"> <record id="tax_code_input_X" model="account.tax.code.template">
<field name="name">Tax Received Rate X (Exempt)</field> <field name="name">Tax Received Rate X (Exempt)</field>
<field name="parent_id" ref="tax_code_input"/> <field name="parent_id" ref="tax_code_input"/>
</record> </record>
<record id="tax_code_input_O" model="account.tax.code.template"> <record id="tax_code_input_O" model="account.tax.code.template">
<field name="name">Tax Received Rate O (Out of scope)</field> <field name="name">Tax Received Rate O (Out of scope)</field>
<field name="parent_id" ref="tax_code_input"/> <field name="parent_id" ref="tax_code_input"/>
</record> </record>
<!-- Output TAX --> <!-- Output TAX -->
<record id="tax_code_output" model="account.tax.code.template"> <record id="tax_code_output" model="account.tax.code.template">
<field name="name">Tax Paid</field> <field name="name">Tax Paid</field>
<field name="parent_id" ref="tax_code_balance_net"/> <field name="parent_id" ref="tax_code_balance_net"/>
</record> </record>
<record id="tax_code_output_S" model="account.tax.code.template"> <record id="tax_code_output_S" model="account.tax.code.template">
<field name="name">Tax Paid Rate S (15%)</field> <field name="name">Tax Paid Rate S (15%)</field>
<field name="parent_id" ref="tax_code_output"/> <field name="parent_id" ref="tax_code_output"/>
</record> </record>
<record id="tax_code_output_R" model="account.tax.code.template"> <record id="tax_code_output_R" model="account.tax.code.template">
<field name="name">Tax Paid Rate R (5%)</field> <field name="name">Tax Paid Rate R (5%)</field>
<field name="parent_id" ref="tax_code_output"/> <field name="parent_id" ref="tax_code_output"/>
</record> </record>
<record id="tax_code_output_X" model="account.tax.code.template"> <record id="tax_code_output_X" model="account.tax.code.template">
<field name="name">Tax Paid Rate X (Exempt)</field> <field name="name">Tax Paid Rate X (Exempt)</field>
<field name="parent_id" ref="tax_code_output"/> <field name="parent_id" ref="tax_code_output"/>
</record> </record>
<record id="tax_code_output_O" model="account.tax.code.template"> <record id="tax_code_output_O" model="account.tax.code.template">
<field name="name">Tax Paid Rate O (Out of scope)</field> <field name="name">Tax Paid Rate O (Out of scope)</field>
<field name="parent_id" ref="tax_code_output"/> <field name="parent_id" ref="tax_code_output"/>
</record> </record>
<!-- Invoiced Base of TAX --> <!-- Invoiced Base of TAX -->
<!-- Purchases --> <!-- Purchases -->
<record id="tax_code_base_net" model="account.tax.code.template"> <record id="tax_code_base_net" model="account.tax.code.template">
<field name="name">Tax Bases</field> <field name="name">Tax Bases</field>
<field name="parent_id" ref="tax_code_chart_root"/> <field name="parent_id" ref="tax_code_chart_root"/>
</record> </record>
<record id="tax_code_base_purchases" model="account.tax.code.template"> <record id="tax_code_base_purchases" model="account.tax.code.template">
<field name="name">Taxable Purchases Base</field> <field name="name">Taxable Purchases Base</field>
<field name="parent_id" ref="tax_code_base_net"/> <field name="parent_id" ref="tax_code_base_net"/>
</record> </record>
<record id="tax_code_purch_S" model="account.tax.code.template"> <record id="tax_code_purch_S" model="account.tax.code.template">
<field name="name">Taxable Purchases Rated S (15%)</field> <field name="name">Taxable Purchases Rated S (15%)</field>
<field name="parent_id" ref="tax_code_base_purchases"/> <field name="parent_id" ref="tax_code_base_purchases"/>
</record> </record>
<record id="tax_code_purch_R" model="account.tax.code.template"> <record id="tax_code_purch_R" model="account.tax.code.template">
<field name="name">Taxable Purchases Rated R (5%)</field> <field name="name">Taxable Purchases Rated R (5%)</field>
<field name="parent_id" ref="tax_code_base_purchases"/> <field name="parent_id" ref="tax_code_base_purchases"/>
</record> </record>
<record id="tax_code_purch_X" model="account.tax.code.template"> <record id="tax_code_purch_X" model="account.tax.code.template">
<field name="name">Taxable Purchases Type X (Exempt)</field> <field name="name">Taxable Purchases Type X (Exempt)</field>
<field name="parent_id" ref="tax_code_base_purchases"/> <field name="parent_id" ref="tax_code_base_purchases"/>
</record> </record>
<record id="tax_code_purch_O" model="account.tax.code.template"> <record id="tax_code_purch_O" model="account.tax.code.template">
<field name="name">Taxable Purchases Type O (Out of scope)</field> <field name="name">Taxable Purchases Type O (Out of scope)</field>
<field name="parent_id" ref="tax_code_base_purchases"/> <field name="parent_id" ref="tax_code_base_purchases"/>
</record> </record>
<!-- Sales --> <!-- Sales -->
<record id="tax_code_base_sales" model="account.tax.code.template"> <record id="tax_code_base_sales" model="account.tax.code.template">
<field name="name">Base of Taxable Sales</field> <field name="name">Base of Taxable Sales</field>
<field name="parent_id" ref="tax_code_base_net"/> <field name="parent_id" ref="tax_code_base_net"/>
</record> </record>
<record id="tax_code_sales_S" model="account.tax.code.template"> <record id="tax_code_sales_S" model="account.tax.code.template">
<field name="name">Taxable Sales Rated S (15%)</field> <field name="name">Taxable Sales Rated S (15%)</field>
<field name="parent_id" ref="tax_code_base_sales"/> <field name="parent_id" ref="tax_code_base_sales"/>
</record> </record>
<record id="tax_code_sales_R" model="account.tax.code.template"> <record id="tax_code_sales_R" model="account.tax.code.template">
<field name="name">Taxable Sales Rated R (5%)</field> <field name="name">Taxable Sales Rated R (5%)</field>
<field name="parent_id" ref="tax_code_base_sales"/> <field name="parent_id" ref="tax_code_base_sales"/>
</record> </record>
<record id="tax_code_sales_X" model="account.tax.code.template"> <record id="tax_code_sales_X" model="account.tax.code.template">
<field name="name">Taxable Sales Type X (Exempt)</field> <field name="name">Taxable Sales Type X (Exempt)</field>
<field name="parent_id" ref="tax_code_base_sales"/> <field name="parent_id" ref="tax_code_base_sales"/>
</record> </record>
<record id="tax_code_sales_O" model="account.tax.code.template"> <record id="tax_code_sales_O" model="account.tax.code.template">
<field name="name">Taxable Sales Type O (Out of scope)</field> <field name="name">Taxable Sales Type O (Out of scope)</field>
<field name="parent_id" ref="tax_code_base_sales"/> <field name="parent_id" ref="tax_code_base_sales"/>
</record> </record>
<record id="configurable_chart_template" model="account.chart.template"> <record id="configurable_chart_template" model="account.chart.template">
<field name="name">Configurable Account Chart Template</field> <field name="name">Configurable Account Chart Template</field>
@ -450,7 +450,7 @@
<field name="property_reserve_and_surplus_account" ref="conf_a_reserve_and_surplus"/> <field name="property_reserve_and_surplus_account" ref="conf_a_reserve_and_surplus"/>
</record> </record>
<!-- VAT Codes --> <!-- VAT Codes -->
<!-- Purchases + Output VAT --> <!-- Purchases + Output VAT -->
<record id="otaxs" model="account.tax.template"> <record id="otaxs" model="account.tax.template">
@ -569,9 +569,9 @@
<!-- = = = = = = = = = = = = = = = --> <!-- = = = = = = = = = = = = = = = -->
<!-- Fiscal Mapping Templates --> <!-- Fiscal Mapping Templates -->
<!-- = = = = = = = = = = = = = = = --> <!-- = = = = = = = = = = = = = = = -->
<record id="fiscal_position_normal_taxes_template1" model="account.fiscal.position.template"> <record id="fiscal_position_normal_taxes_template1" model="account.fiscal.position.template">
@ -584,40 +584,40 @@
<field name="chart_template_id" ref="configurable_chart_template"/> <field name="chart_template_id" ref="configurable_chart_template"/>
</record> </record>
<!-- = = = = = = = = = = = = = = = --> <!-- = = = = = = = = = = = = = = = -->
<!-- Fiscal Position Tax Templates --> <!-- Fiscal Position Tax Templates -->
<!-- = = = = = = = = = = = = = = = --> <!-- = = = = = = = = = = = = = = = -->
<record id="fiscal_position_normal_taxes" model="account.fiscal.position.tax.template"> <record id="fiscal_position_normal_taxes" model="account.fiscal.position.tax.template">
<field name="position_id" ref="fiscal_position_normal_taxes_template1"/> <field name="position_id" ref="fiscal_position_normal_taxes_template1"/>
<field name="tax_src_id" ref="itaxs"/> <field name="tax_src_id" ref="itaxs"/>
<field name="tax_dest_id" ref="otaxs"/> <field name="tax_dest_id" ref="otaxs"/>
</record> </record>
<record id="fiscal_position_tax_exempt" model="account.fiscal.position.tax.template"> <record id="fiscal_position_tax_exempt" model="account.fiscal.position.tax.template">
<field name="position_id" ref="fiscal_position_tax_exempt_template2"/> <field name="position_id" ref="fiscal_position_tax_exempt_template2"/>
<field name="tax_src_id" ref="itaxx"/> <field name="tax_src_id" ref="itaxx"/>
<field name="tax_dest_id" ref="otaxx"/> <field name="tax_dest_id" ref="otaxx"/>
</record> </record>
<!-- Assigned Default Taxes For Different Account --> <!-- Assigned Default Taxes For Different Account -->
<record id="conf_a_sale" model="account.account.template"> <record id="conf_a_sale" model="account.account.template">
<field name="tax_ids" eval="[(6,0,[ref('itaxs')])]"/> <field name="tax_ids" eval="[(6,0,[ref('itaxs')])]"/>
</record> </record>
<record id="conf_a_expense" model="account.account.template"> <record id="conf_a_expense" model="account.account.template">
<field name="tax_ids" eval="[(6,0,[ref('otaxs')])]"/> <field name="tax_ids" eval="[(6,0,[ref('otaxs')])]"/>
</record> </record>
<record id="action_wizard_multi_chart_todo" model="ir.actions.todo"> <record id="action_wizard_multi_chart_todo" model="ir.actions.todo">
<field name="name">Generate Chart of Accounts from a Chart Template</field> <field name="name">Generate Chart of Accounts from a Chart Template</field>
<field name="action_id" ref="account.action_wizard_multi_chart"/> <field name="action_id" ref="account.action_wizard_multi_chart"/>
<field name="category_id" ref="account.category_accounting_configuration"/> <field name="category_id" ref="account.category_accounting_configuration"/>
<field name="type">automatic</field> <field name="type">automatic</field>
</record> </record>
</data> </data>

View File

@ -469,66 +469,48 @@
Account Journal Sequences Account Journal Sequences
--> -->
<record id="sequence_journal_type" model="ir.sequence.type">
<field name="name">Account Journal</field>
<field name="code">account.journal</field>
</record>
<record id="sequence_journal" model="ir.sequence">
<field name="name">Account Journal</field>
<field name="code">account.journal</field>
<field name="prefix"/>
</record>
<record id="sequence_sale_journal" model="ir.sequence"> <record id="sequence_sale_journal" model="ir.sequence">
<field name="name">Sale Journal</field> <field name="name">Account Default Sales Journal</field>
<field name="code">account.journal</field>
<field eval="3" name="padding"/> <field eval="3" name="padding"/>
<field name="prefix">SAJ/%(year)s/</field> <field name="prefix">SAJ/%(year)s/</field>
</record> </record>
<record id="sequence_refund_sales_journal" model="ir.sequence"> <record id="sequence_refund_sales_journal" model="ir.sequence">
<field name="name">Sales Credit Note Journal</field> <field name="name">Account Default Sales Credit Note Journal</field>
<field name="code">account.journal</field>
<field eval="3" name="padding"/> <field eval="3" name="padding"/>
<field name="prefix">SCNJ/%(year)s/</field> <field name="prefix">SCNJ/%(year)s/</field>
</record> </record>
<record id="sequence_purchase_journal" model="ir.sequence"> <record id="sequence_purchase_journal" model="ir.sequence">
<field name="name">Purchase Journal</field> <field name="name">Account Default Expenses Journal</field>
<field name="code">account.journal</field>
<field eval="3" name="padding"/> <field eval="3" name="padding"/>
<field name="prefix">EXJ/%(year)s/</field> <field name="prefix">EXJ/%(year)s/</field>
</record> </record>
<record id="sequence_refund_purchase_journal" model="ir.sequence"> <record id="sequence_refund_purchase_journal" model="ir.sequence">
<field name="name">Expenses Credit Notes Journal</field> <field name="name">Account Default Expenses Credit Notes Journal</field>
<field name="code">account.journal</field>
<field eval="3" name="padding"/> <field eval="3" name="padding"/>
<field name="prefix">ECNJ/%(year)s/</field> <field name="prefix">ECNJ/%(year)s/</field>
</record> </record>
<record id="sequence_bank_journal" model="ir.sequence"> <record id="sequence_bank_journal" model="ir.sequence">
<field name="name">Bank Journal</field> <field name="name">Account Default Bank Journal</field>
<field name="code">account.journal</field>
<field eval="3" name="padding"/> <field eval="3" name="padding"/>
<field name="prefix">BNK/%(year)s/</field> <field name="prefix">BNK/%(year)s/</field>
</record> </record>
<record id="sequence_check_journal" model="ir.sequence"> <record id="sequence_check_journal" model="ir.sequence">
<field name="name">Checks Journal</field> <field name="name">Account Default Checks Journal</field>
<field name="code">account.journal</field>
<field eval="3" name="padding"/> <field eval="3" name="padding"/>
<field name="prefix">CHK/%(year)s/</field> <field name="prefix">CHK/%(year)s/</field>
</record> </record>
<record id="sequence_cash_journal" model="ir.sequence"> <record id="sequence_cash_journal" model="ir.sequence">
<field name="name">Cash Journal</field> <field name="name">Account Default Cash Journal</field>
<field name="code">account.journal</field>
<field eval="3" name="padding"/> <field eval="3" name="padding"/>
<field name="prefix">CSH/%(year)s/</field> <field name="prefix">CSH/%(year)s/</field>
</record> </record>
<record id="sequence_opening_journal" model="ir.sequence"> <record id="sequence_opening_journal" model="ir.sequence">
<field name="name">Opening Entries Journal</field> <field name="name">Account Default Opening Entries Journal</field>
<field name="code">account.journal</field>
<field eval="3" name="padding"/> <field eval="3" name="padding"/>
<field name="prefix">OPEJ/%(year)s/</field> <field name="prefix">OPEJ/%(year)s/</field>
</record> </record>
<record id="sequence_miscellaneous_journal" model="ir.sequence"> <record id="sequence_miscellaneous_journal" model="ir.sequence">
<field name="name">Miscellaneous Journal</field> <field name="name">Account Default Miscellaneous Journal</field>
<field name="code">account.journal</field>
<field eval="3" name="padding"/> <field eval="3" name="padding"/>
<field name="prefix">MISJ/%(year)s/</field> <field name="prefix">MISJ/%(year)s/</field>
</record> </record>
@ -538,7 +520,7 @@
--> -->
<record id="sequence_reconcile" model="ir.sequence.type"> <record id="sequence_reconcile" model="ir.sequence.type">
<field name="name">Account reconcile sequence</field> <field name="name">Account Reconcile</field>
<field name="code">account.reconcile</field> <field name="code">account.reconcile</field>
</record> </record>
<record id="sequence_reconcile_seq" model="ir.sequence"> <record id="sequence_reconcile_seq" model="ir.sequence">
@ -550,7 +532,7 @@
</record> </record>
<record id="sequence_statement_type" model="ir.sequence.type"> <record id="sequence_statement_type" model="ir.sequence.type">
<field name="name">Bank Statement</field> <field name="name">Account Bank Statement</field>
<field name="code">account.bank.statement</field> <field name="code">account.bank.statement</field>
</record> </record>
<record id="sequence_statement" model="ir.sequence"> <record id="sequence_statement" model="ir.sequence">
@ -562,7 +544,7 @@
</record> </record>
<record id="cash_sequence_statement_type" model="ir.sequence.type"> <record id="cash_sequence_statement_type" model="ir.sequence.type">
<field name="name">Cash Statement</field> <field name="name">Account Cash Statement</field>
<field name="code">account.cash.statement</field> <field name="code">account.cash.statement</field>
</record> </record>
<record id="cash_sequence_statement" model="ir.sequence"> <record id="cash_sequence_statement" model="ir.sequence">
@ -572,5 +554,30 @@
<field eval="1" name="number_next"/> <field eval="1" name="number_next"/>
<field eval="1" name="number_increment"/> <field eval="1" name="number_increment"/>
</record> </record>
<!--
Sequence for analytic account
-->
<record id="seq_type_analytic_account" model="ir.sequence.type">
<field name="name">Analytic account</field>
<field name="code">account.analytic.account</field>
</record>
<record id="seq_analytic_account" model="ir.sequence">
<field name="name">Analytic account sequence</field>
<field name="code">account.analytic.account</field>
<field eval="3" name="padding"/>
<field eval="2708" name="number_next"/>
</record>
<!--
Invoice requests (deprecated)
-->
<record id="req_link_invoice" model="res.request.link">
<field name="name">Invoice</field>
<field name="object">account.invoice</field>
</record>
</data> </data>
</openerp> </openerp>

View File

@ -1,75 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<record id="req_link_invoice" model="res.request.link">
<field name="name">Invoice</field>
<field name="object">account.invoice</field>
</record>
<!--
Sequences types for invoices
-->
<record id="seq_type_out_invoice" model="ir.sequence.type">
<field name="name">Account Invoice Out</field>
<field name="code">account.invoice.out_invoice</field>
</record>
<record id="seq_type_in_invoice" model="ir.sequence.type">
<field name="name">Account Invoice In</field>
<field name="code">account.invoice.in_invoice</field>
</record>
<record id="seq_type_out_refund" model="ir.sequence.type">
<field name="name">Account Refund Out</field>
<field name="code">account.invoice.out_refund</field>
</record>
<record id="seq_type_in_refund" model="ir.sequence.type">
<field name="name">Account Refund In</field>
<field name="code">account.invoice.in_refund</field>
</record>
<!--
Sequences for invoices
-->
<record id="seq_out_invoice" model="ir.sequence">
<field name="name">Account Invoice Out</field>
<field name="code">account.invoice.out_invoice</field>
<field eval="3" name="padding"/>
<field name="prefix">%(year)s/</field>
</record>
<record id="seq_in_invoice" model="ir.sequence">
<field name="name">Account Invoice In</field>
<field name="code">account.invoice.in_invoice</field>
<field eval="3" name="padding"/>
<field name="prefix">%(year)s/</field>
</record>
<record id="seq_out_refund" model="ir.sequence">
<field name="name">Account Refund Out</field>
<field name="code">account.invoice.out_refund</field>
<field eval="3" name="padding"/>
<field name="prefix">%(year)s/</field>
</record>
<record id="seq_in_refund" model="ir.sequence">
<field name="name">Account Refund In</field>
<field name="code">account.invoice.in_refund</field>
<field eval="3" name="padding"/>
<field name="prefix">%(year)s/</field>
</record>
<!--
Sequences types for analytic account
-->
<record id="seq_type_analytic_account" model="ir.sequence.type">
<field name="name">Analytic account</field>
<field name="code">account.analytic.account</field>
</record>
<!--
Sequence for analytic account
-->
<record id="seq_analytic_account" model="ir.sequence">
<field name="name">Analytic account sequence</field>
<field name="code">account.analytic.account</field>
<field eval="3" name="padding"/>
<field eval="2708" name="number_next"/>
</record>
</data>
</openerp>

View File

@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n" "Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n" "Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-09-22 02:55+0000\n" "PO-Revision-Date: 2011-09-30 23:12+0000\n"
"Last-Translator: Majed Majbour <Unknown>\n" "Last-Translator: Majed Majbour <Unknown>\n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-09-23 04:38+0000\n" "X-Launchpad-Export-Date: 2011-10-02 04:51+0000\n"
"X-Generator: Launchpad (build 14012)\n" "X-Generator: Launchpad (build 14071)\n"
#. module: account #. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0 #: model:process.transition,name:account.process_transition_supplierreconcilepaid0
msgid "System payment" msgid "System payment"
msgstr "الدفع عن طريق النظام" msgstr "نظام الدفع"
#. module: account #. module: account
#: view:account.journal:0 #: view:account.journal:0
@ -124,6 +124,8 @@ msgid ""
"If you unreconciliate transactions, you must also verify all the actions " "If you unreconciliate transactions, you must also verify all the actions "
"that are linked to those transactions because they will not be disabled" "that are linked to those transactions because they will not be disabled"
msgstr "" msgstr ""
"إذا كنت توافق على المعاملات ، يجب عليك أيضا التحقق من كافة الإجراءات التي "
"ترتبط بتلك المعاملات لأنه لن يكونوا غير مفعّلين"
#. module: account #. module: account
#: report:account.tax.code.entries:0 #: report:account.tax.code.entries:0

View File

@ -7,24 +7,24 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n" "Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n" "Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2010-12-12 00:12+0000\n" "PO-Revision-Date: 2011-09-30 07:02+0000\n"
"Last-Translator: qdp (OpenERP) <qdp-launchpad@tinyerp.com>\n" "Last-Translator: Raiko Pajur <Unknown>\n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-09-17 04:56+0000\n" "X-Launchpad-Export-Date: 2011-10-01 05:08+0000\n"
"X-Generator: Launchpad (build 13955)\n" "X-Generator: Launchpad (build 14071)\n"
#. module: account #. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0 #: model:process.transition,name:account.process_transition_supplierreconcilepaid0
msgid "System payment" msgid "System payment"
msgstr "" msgstr "Süsteemi maksed"
#. module: account #. module: account
#: view:account.journal:0 #: view:account.journal:0
msgid "Other Configuration" msgid "Other Configuration"
msgstr "" msgstr "Muud konfiguratsioonid"
#. module: account #. module: account
#: code:addons/account/wizard/account_open_closed_fiscalyear.py:40 #: code:addons/account/wizard/account_open_closed_fiscalyear.py:40
@ -39,6 +39,8 @@ msgid ""
"You cannot remove/deactivate an account which is set as a property to any " "You cannot remove/deactivate an account which is set as a property to any "
"Partner." "Partner."
msgstr "" msgstr ""
"Sa ei saa kustutada / desaktiveerida kontot, mis on määratud mis tahes "
"\"Partner\" varaks."
#. module: account #. module: account
#: view:account.move.reconcile:0 #: view:account.move.reconcile:0
@ -48,7 +50,7 @@ msgstr ""
#. module: account #. module: account
#: field:account.installer.modules,account_voucher:0 #: field:account.installer.modules,account_voucher:0
msgid "Voucher Management" msgid "Voucher Management"
msgstr "" msgstr "Voucheri juhtimine"
#. module: account #. module: account
#: view:account.account:0 #: view:account.account:0
@ -133,13 +135,13 @@ msgstr "Raamatupidamise kirjed-"
#: code:addons/account/account.py:1291 #: code:addons/account/account.py:1291
#, python-format #, python-format
msgid "You can not delete posted movement: \"%s\"!" msgid "You can not delete posted movement: \"%s\"!"
msgstr "" msgstr "Sa ei saa kustutada postitatud liikumist: \"%s\"!"
#. module: account #. module: account
#: report:account.invoice:0 #: report:account.invoice:0
#: field:account.invoice.line,origin:0 #: field:account.invoice.line,origin:0
msgid "Origin" msgid "Origin"
msgstr "Päritolu" msgstr "Allikas"
#. module: account #. module: account
#: view:account.account:0 #: view:account.account:0
@ -164,7 +166,7 @@ msgstr "Viide"
#. module: account #. module: account
#: view:account.open.closed.fiscalyear:0 #: view:account.open.closed.fiscalyear:0
msgid "Choose Fiscal Year " msgid "Choose Fiscal Year "
msgstr "" msgstr "Vali eelarveaasta "
#. module: account #. module: account
#: help:account.payment.term,active:0 #: help:account.payment.term,active:0
@ -172,12 +174,14 @@ msgid ""
"If the active field is set to False, it will allow you to hide the payment " "If the active field is set to False, it will allow you to hide the payment "
"term without removing it." "term without removing it."
msgstr "" msgstr ""
"Kui aktiivne ala on väärne ( False ), siis see võimaldab teil peita/varjata "
"maksetähtaeg seda kustutamata."
#. module: account #. module: account
#: code:addons/account/invoice.py:1421 #: code:addons/account/invoice.py:1421
#, python-format #, python-format
msgid "Warning!" msgid "Warning!"
msgstr "" msgstr "Hoiatus!"
#. module: account #. module: account
#: field:account.fiscal.position.account,account_src_id:0 #: field:account.fiscal.position.account,account_src_id:0
@ -204,7 +208,7 @@ msgstr "Negatiivne"
#: code:addons/account/wizard/account_move_journal.py:95 #: code:addons/account/wizard/account_move_journal.py:95
#, python-format #, python-format
msgid "Journal: %s" msgid "Journal: %s"
msgstr "" msgstr "Päevik: %s"
#. module: account #. module: account
#: help:account.analytic.journal,type:0 #: help:account.analytic.journal,type:0
@ -231,7 +235,7 @@ msgstr "konto.maks"
msgid "" msgid ""
"No period defined for this date: %s !\n" "No period defined for this date: %s !\n"
"Please create a fiscal year." "Please create a fiscal year."
msgstr "" msgstr "Periood ei ole defineeritud sellele kuupäevale: %s"
#. module: account #. module: account
#: model:ir.model,name:account.model_account_move_line_reconcile_select #: model:ir.model,name:account.model_account_move_line_reconcile_select
@ -259,7 +263,7 @@ msgstr ""
#: code:addons/account/invoice.py:1210 #: code:addons/account/invoice.py:1210
#, python-format #, python-format
msgid "Invoice '%s' is paid partially: %s%s of %s%s (%s%s remaining)" msgid "Invoice '%s' is paid partially: %s%s of %s%s (%s%s remaining)"
msgstr "" msgstr "Arve '%s' on makstud osaliselt: %s%s on tasutud %s%s (%s%s maksmata)"
#. module: account #. module: account
#: model:process.transition,note:account.process_transition_supplierentriesreconcile0 #: model:process.transition,note:account.process_transition_supplierentriesreconcile0
@ -280,7 +284,7 @@ msgstr "Teie ei saa lisada/muuta suletud päeviku kirjeid."
#. module: account #. module: account
#: view:account.bank.statement:0 #: view:account.bank.statement:0
msgid "Calculated Balance" msgid "Calculated Balance"
msgstr "" msgstr "Välja arvutatud tasakaal (Calculated Balance)"
#. module: account #. module: account
#: model:ir.actions.act_window,name:account.action_account_use_model_create_entry #: model:ir.actions.act_window,name:account.action_account_use_model_create_entry
@ -352,7 +356,7 @@ msgstr "Ostu omadused"
#: view:account.installer:0 #: view:account.installer:0
#: view:account.installer.modules:0 #: view:account.installer.modules:0
msgid "Configure" msgid "Configure"
msgstr "" msgstr "Seadista"
#. module: account #. module: account
#: selection:account.entries.report,month:0 #: selection:account.entries.report,month:0
@ -361,7 +365,7 @@ msgstr ""
#: selection:report.account.sales,month:0 #: selection:report.account.sales,month:0
#: selection:report.account_type.sales,month:0 #: selection:report.account_type.sales,month:0
msgid "June" msgid "June"
msgstr "" msgstr "Juuni"
#. module: account #. module: account
#: model:ir.actions.act_window,help:account.action_account_moves_bank #: model:ir.actions.act_window,help:account.action_account_moves_bank
@ -395,12 +399,12 @@ msgstr ""
#. module: account #. module: account
#: selection:account.journal,type:0 #: selection:account.journal,type:0
msgid "Opening/Closing Situation" msgid "Opening/Closing Situation"
msgstr "" msgstr "Avamise/Sulgemise situatsioon"
#. module: account #. module: account
#: help:account.journal,currency:0 #: help:account.journal,currency:0
msgid "The currency used to enter statement" msgid "The currency used to enter statement"
msgstr "" msgstr "Valuuta väite sisestamiseks"
#. module: account #. module: account
#: field:account.open.closed.fiscalyear,fyear_id:0 #: field:account.open.closed.fiscalyear,fyear_id:0
@ -498,17 +502,17 @@ msgstr "Päevik"
#. module: account #. module: account
#: model:ir.model,name:account.model_account_invoice_confirm #: model:ir.model,name:account.model_account_invoice_confirm
msgid "Confirm the selected invoices" msgid "Confirm the selected invoices"
msgstr "" msgstr "Kinnita valitud arved"
#. module: account #. module: account
#: field:account.addtmpl.wizard,cparent_id:0 #: field:account.addtmpl.wizard,cparent_id:0
msgid "Parent target" msgid "Parent target"
msgstr "" msgstr "Lapsevanema sihtmärk"
#. module: account #. module: account
#: field:account.bank.statement,account_id:0 #: field:account.bank.statement,account_id:0
msgid "Account used in this journal" msgid "Account used in this journal"
msgstr "" msgstr "Konto kasutatud selles arveraamatus"
#. module: account #. module: account
#: help:account.aged.trial.balance,chart_account_id:0 #: help:account.aged.trial.balance,chart_account_id:0
@ -527,7 +531,7 @@ msgstr ""
#: help:account.report.general.ledger,chart_account_id:0 #: help:account.report.general.ledger,chart_account_id:0
#: help:account.vat.declaration,chart_account_id:0 #: help:account.vat.declaration,chart_account_id:0
msgid "Select Charts of Accounts" msgid "Select Charts of Accounts"
msgstr "" msgstr "Vali Kontode graafikud"
#. module: account #. module: account
#: view:product.product:0 #: view:product.product:0
@ -537,7 +541,7 @@ msgstr "Ostumaksud"
#. module: account #. module: account
#: model:ir.model,name:account.model_account_invoice_refund #: model:ir.model,name:account.model_account_invoice_refund
msgid "Invoice Refund" msgid "Invoice Refund"
msgstr "" msgstr "Arveraamatu tagasimakse"
#. module: account #. module: account
#: report:account.overdue:0 #: report:account.overdue:0
@ -560,7 +564,7 @@ msgstr ""
#: field:account.fiscal.position,tax_ids:0 #: field:account.fiscal.position,tax_ids:0
#: field:account.fiscal.position.template,tax_ids:0 #: field:account.fiscal.position.template,tax_ids:0
msgid "Tax Mapping" msgid "Tax Mapping"
msgstr "" msgstr "Maksude kaardistamine"
#. module: account #. module: account
#: model:ir.actions.act_window,name:account.action_account_fiscalyear_close_state #: model:ir.actions.act_window,name:account.action_account_fiscalyear_close_state
@ -571,7 +575,7 @@ msgstr "Sule majandusaasta"
#. module: account #. module: account
#: model:process.transition,note:account.process_transition_confirmstatementfromdraft0 #: model:process.transition,note:account.process_transition_confirmstatementfromdraft0
msgid "The accountant confirms the statement." msgid "The accountant confirms the statement."
msgstr "" msgstr "Raamatupidaja kinnitab selle avalduse"
#. module: account #. module: account
#: selection:account.balance.report,display_account:0 #: selection:account.balance.report,display_account:0
@ -587,12 +591,12 @@ msgstr "Kõik"
#. module: account #. module: account
#: field:account.invoice.report,address_invoice_id:0 #: field:account.invoice.report,address_invoice_id:0
msgid "Invoice Address Name" msgid "Invoice Address Name"
msgstr "" msgstr "Arveraamatu Aadressi Nimi"
#. module: account #. module: account
#: selection:account.installer,period:0 #: selection:account.installer,period:0
msgid "3 Monthly" msgid "3 Monthly"
msgstr "" msgstr "Iga 3 kuu tagant"
#. module: account #. module: account
#: view:account.unreconcile.reconcile:0 #: view:account.unreconcile.reconcile:0
@ -604,7 +608,7 @@ msgstr ""
#. module: account #. module: account
#: view:analytic.entries.report:0 #: view:analytic.entries.report:0
msgid " 30 Days " msgid " 30 Days "
msgstr "" msgstr " 30 päeva "
#. module: account #. module: account
#: field:ir.sequence,fiscal_ids:0 #: field:ir.sequence,fiscal_ids:0
@ -624,7 +628,7 @@ msgstr ""
#. module: account #. module: account
#: sql_constraint:account.sequence.fiscalyear:0 #: sql_constraint:account.sequence.fiscalyear:0
msgid "Main Sequence must be different from current !" msgid "Main Sequence must be different from current !"
msgstr "" msgstr "Pea"
#. module: account #. module: account
#: field:account.invoice.tax,tax_amount:0 #: field:account.invoice.tax,tax_amount:0
@ -652,12 +656,12 @@ msgstr "Sulge periood"
#. module: account #. module: account
#: model:ir.model,name:account.model_account_common_partner_report #: model:ir.model,name:account.model_account_common_partner_report
msgid "Account Common Partner Report" msgid "Account Common Partner Report"
msgstr "" msgstr "Konto tava \"Partner\" aruanne"
#. module: account #. module: account
#: field:account.fiscalyear.close,period_id:0 #: field:account.fiscalyear.close,period_id:0
msgid "Opening Entries Period" msgid "Opening Entries Period"
msgstr "" msgstr "Avatud sissekanete periood"
#. module: account #. module: account
#: model:ir.model,name:account.model_account_journal_period #: model:ir.model,name:account.model_account_journal_period
@ -791,7 +795,7 @@ msgstr "J.C./liiguta nime"
#: selection:report.account.sales,month:0 #: selection:report.account.sales,month:0
#: selection:report.account_type.sales,month:0 #: selection:report.account_type.sales,month:0
msgid "September" msgid "September"
msgstr "" msgstr "September"
#. module: account #. module: account
#: selection:account.subscription,period_type:0 #: selection:account.subscription,period_type:0
@ -802,7 +806,7 @@ msgstr "päevad"
#: help:account.account.template,nocreate:0 #: help:account.account.template,nocreate:0
msgid "" msgid ""
"If checked, the new chart of accounts will not contain this by default." "If checked, the new chart of accounts will not contain this by default."
msgstr "" msgstr "Kui märgitud, siis uus kontode graafik ei sisalda seda puudujääki."
#. module: account #. module: account
#: code:addons/account/wizard/account_invoice_refund.py:102 #: code:addons/account/wizard/account_invoice_refund.py:102
@ -825,7 +829,7 @@ msgstr "Arvutus"
#. module: account #. module: account
#: view:account.move.line:0 #: view:account.move.line:0
msgid "Next Partner to reconcile" msgid "Next Partner to reconcile"
msgstr "" msgstr "Kooskõlastama järgmise \"Partner\"-iga"
#. module: account #. module: account
#: code:addons/account/account_move_line.py:1191 #: code:addons/account/account_move_line.py:1191
@ -834,12 +838,14 @@ msgid ""
"You can not do this modification on a confirmed entry ! Please note that you " "You can not do this modification on a confirmed entry ! Please note that you "
"can just change some non important fields !" "can just change some non important fields !"
msgstr "" msgstr ""
"Teie ei saa teha see muudatus kinnitatud kirjel ! Teie saate muuta ainult "
"mõned vähetähtsad väljad !"
#. module: account #. module: account
#: view:account.invoice.report:0 #: view:account.invoice.report:0
#: field:account.invoice.report,delay_to_pay:0 #: field:account.invoice.report,delay_to_pay:0
msgid "Avg. Delay To Pay" msgid "Avg. Delay To Pay"
msgstr "" msgstr "Keskmine viivitus maksete tegemisel"
#. module: account #. module: account
#: model:ir.actions.act_window,name:account.action_account_tax_chart #: model:ir.actions.act_window,name:account.action_account_tax_chart
@ -862,7 +868,7 @@ msgstr "Tähtaeg"
#: view:account.invoice.report:0 #: view:account.invoice.report:0
#: field:account.invoice.report,price_total_tax:0 #: field:account.invoice.report,price_total_tax:0
msgid "Total With Tax" msgid "Total With Tax"
msgstr "" msgstr "Kokku koos maksudega"
#. module: account #. module: account
#: view:account.invoice:0 #: view:account.invoice:0
@ -870,7 +876,7 @@ msgstr ""
#: view:validate.account.move:0 #: view:validate.account.move:0
#: view:validate.account.move.lines:0 #: view:validate.account.move.lines:0
msgid "Approve" msgid "Approve"
msgstr "" msgstr "Nõustu"
#. module: account #. module: account
#: view:account.invoice:0 #: view:account.invoice:0
@ -925,7 +931,7 @@ msgstr ""
#. module: account #. module: account
#: view:account.analytic.line:0 #: view:account.analytic.line:0
msgid "Purchases" msgid "Purchases"
msgstr "" msgstr "Ostud"
#. module: account #. module: account
#: field:account.model,lines_id:0 #: field:account.model,lines_id:0
@ -972,7 +978,7 @@ msgstr "Partneri bilanss"
#. module: account #. module: account
#: field:account.bank.accounts.wizard,acc_name:0 #: field:account.bank.accounts.wizard,acc_name:0
msgid "Account Name." msgid "Account Name."
msgstr "" msgstr "Konto nimi."
#. module: account #. module: account
#: field:account.chart.template,property_reserve_and_surplus_account:0 #: field:account.chart.template,property_reserve_and_surplus_account:0
@ -983,7 +989,7 @@ msgstr ""
#. module: account #. module: account
#: field:report.account.receivable,name:0 #: field:report.account.receivable,name:0
msgid "Week of Year" msgid "Week of Year"
msgstr "" msgstr "Nädal"
#. module: account #. module: account
#: field:account.bs.report,display_type:0 #: field:account.bs.report,display_type:0
@ -995,12 +1001,12 @@ msgstr "Rõhtpaigutus"
#. module: account #. module: account
#: view:board.board:0 #: view:board.board:0
msgid "Customer Invoices to Approve" msgid "Customer Invoices to Approve"
msgstr "" msgstr "Kliendi arved kinnitamiseks"
#. module: account #. module: account
#: help:account.fiscalyear.close,fy_id:0 #: help:account.fiscalyear.close,fy_id:0
msgid "Select a Fiscal year to close" msgid "Select a Fiscal year to close"
msgstr "" msgstr "Vali eelarve aasta mida sulgeda"
#. module: account #. module: account
#: help:account.account,user_type:0 #: help:account.account,user_type:0
@ -1018,13 +1024,13 @@ msgstr ""
#. module: account #. module: account
#: report:account.partner.balance:0 #: report:account.partner.balance:0
msgid "In dispute" msgid "In dispute"
msgstr "" msgstr "Vaidlustatav"
#. module: account #. module: account
#: model:ir.actions.act_window,name:account.action_view_bank_statement_tree #: model:ir.actions.act_window,name:account.action_view_bank_statement_tree
#: model:ir.ui.menu,name:account.journal_cash_move_lines #: model:ir.ui.menu,name:account.journal_cash_move_lines
msgid "Cash Registers" msgid "Cash Registers"
msgstr "" msgstr "Raha register"
#. module: account #. module: account
#: selection:account.account.type,report_type:0 #: selection:account.account.type,report_type:0
@ -1042,7 +1048,7 @@ msgstr "-"
#. module: account #. module: account
#: view:account.analytic.account:0 #: view:account.analytic.account:0
msgid "Manager" msgid "Manager"
msgstr "" msgstr "Juhataja"
#. module: account #. module: account
#: view:account.subscription.generate:0 #: view:account.subscription.generate:0
@ -1052,7 +1058,7 @@ msgstr ""
#. module: account #. module: account
#: selection:account.bank.accounts.wizard,account_type:0 #: selection:account.bank.accounts.wizard,account_type:0
msgid "Bank" msgid "Bank"
msgstr "" msgstr "Pank"
#. module: account #. module: account
#: field:account.period,date_start:0 #: field:account.period,date_start:0
@ -1062,13 +1068,13 @@ msgstr "Perioodi algus"
#. module: account #. module: account
#: model:process.transition,name:account.process_transition_confirmstatementfromdraft0 #: model:process.transition,name:account.process_transition_confirmstatementfromdraft0
msgid "Confirm statement" msgid "Confirm statement"
msgstr "" msgstr "Kinnita avaldus"
#. module: account #. module: account
#: field:account.fiscal.position.tax,tax_dest_id:0 #: field:account.fiscal.position.tax,tax_dest_id:0
#: field:account.fiscal.position.tax.template,tax_dest_id:0 #: field:account.fiscal.position.tax.template,tax_dest_id:0
msgid "Replacement Tax" msgid "Replacement Tax"
msgstr "" msgstr "Vahetus maks"
#. module: account #. module: account
#: selection:account.move.line,centralisation:0 #: selection:account.move.line,centralisation:0
@ -1087,12 +1093,12 @@ msgstr ""
#. module: account #. module: account
#: view:account.invoice.cancel:0 #: view:account.invoice.cancel:0
msgid "Cancel Invoices" msgid "Cancel Invoices"
msgstr "" msgstr "Peata arved"
#. module: account #. module: account
#: view:account.unreconcile.reconcile:0 #: view:account.unreconcile.reconcile:0
msgid "Unreconciliation transactions" msgid "Unreconciliation transactions"
msgstr "" msgstr "Mittesobivad tehingud"
#. module: account #. module: account
#: field:account.invoice.tax,tax_code_id:0 #: field:account.invoice.tax,tax_code_id:0
@ -1110,7 +1116,7 @@ msgstr ""
#. module: account #. module: account
#: help:account.move.line,move_id:0 #: help:account.move.line,move_id:0
msgid "The move of this entry line." msgid "The move of this entry line."
msgstr "" msgstr "Selle rea liigutus."
#. module: account #. module: account
#: field:account.move.line.reconcile,trans_nbr:0 #: field:account.move.line.reconcile,trans_nbr:0
@ -1174,7 +1180,7 @@ msgstr "Konto"
#. module: account #. module: account
#: field:account.tax,include_base_amount:0 #: field:account.tax,include_base_amount:0
msgid "Included in base amount" msgid "Included in base amount"
msgstr "" msgstr "Lisa baas osa"
#. module: account #. module: account
#: view:account.entries.report:0 #: view:account.entries.report:0
@ -1186,7 +1192,7 @@ msgstr ""
#. module: account #. module: account
#: field:account.account,level:0 #: field:account.account,level:0
msgid "Level" msgid "Level"
msgstr "" msgstr "Tase"
#. module: account #. module: account
#: report:account.invoice:0 #: report:account.invoice:0
@ -1207,7 +1213,7 @@ msgstr "Maksud"
#: code:addons/account/wizard/account_report_common.py:120 #: code:addons/account/wizard/account_report_common.py:120
#, python-format #, python-format
msgid "Select a starting and an ending period" msgid "Select a starting and an ending period"
msgstr "" msgstr "Vali algus ja lõpp periood"
#. module: account #. module: account
#: model:ir.model,name:account.model_account_account_template #: model:ir.model,name:account.model_account_account_template
@ -1217,12 +1223,12 @@ msgstr "Mallid kontodele"
#. module: account #. module: account
#: view:account.tax.code.template:0 #: view:account.tax.code.template:0
msgid "Search tax template" msgid "Search tax template"
msgstr "" msgstr "Otsi maksu templati"
#. module: account #. module: account
#: report:account.invoice:0 #: report:account.invoice:0
msgid "Your Reference" msgid "Your Reference"
msgstr "" msgstr "Teie viide"
#. module: account #. module: account
#: view:account.move.reconcile:0 #: view:account.move.reconcile:0
@ -1246,7 +1252,7 @@ msgstr ""
#. module: account #. module: account
#: view:account.invoice:0 #: view:account.invoice:0
msgid "Reset to Draft" msgid "Reset to Draft"
msgstr "" msgstr "Lähtesta mustandiks"
#. module: account #. module: account
#: view:wizard.multi.charts.accounts:0 #: view:wizard.multi.charts.accounts:0
@ -1268,7 +1274,7 @@ msgstr ""
#: model:ir.actions.act_window,name:account.action_partner_all #: model:ir.actions.act_window,name:account.action_partner_all
#: model:ir.ui.menu,name:account.next_id_22 #: model:ir.ui.menu,name:account.next_id_22
msgid "Partners" msgid "Partners"
msgstr "" msgstr "Partnerid"
#. module: account #. module: account
#: view:account.bank.statement:0 #: view:account.bank.statement:0
@ -1323,7 +1329,7 @@ msgstr "Bilanss pole 0"
#. module: account #. module: account
#: view:account.tax:0 #: view:account.tax:0
msgid "Search Taxes" msgid "Search Taxes"
msgstr "" msgstr "Otsi maksu"
#. module: account #. module: account
#: model:ir.model,name:account.model_account_analytic_cost_ledger #: model:ir.model,name:account.model_account_analytic_cost_ledger
@ -1338,7 +1344,7 @@ msgstr "Loo sissekanded"
#. module: account #. module: account
#: field:account.entries.report,nbr:0 #: field:account.entries.report,nbr:0
msgid "# of Items" msgid "# of Items"
msgstr "" msgstr "# detaile"
#. module: account #. module: account
#: field:account.automatic.reconcile,max_amount:0 #: field:account.automatic.reconcile,max_amount:0
@ -1353,7 +1359,7 @@ msgstr "Arvuta maksud"
#. module: account #. module: account
#: field:wizard.multi.charts.accounts,code_digits:0 #: field:wizard.multi.charts.accounts,code_digits:0
msgid "# of Digits" msgid "# of Digits"
msgstr "" msgstr "# numbrit"
#. module: account #. module: account
#: field:account.journal,entry_posted:0 #: field:account.journal,entry_posted:0
@ -1364,7 +1370,7 @@ msgstr ""
#: view:account.invoice.report:0 #: view:account.invoice.report:0
#: field:account.invoice.report,price_total:0 #: field:account.invoice.report,price_total:0
msgid "Total Without Tax" msgid "Total Without Tax"
msgstr "" msgstr "Kokku ilma maksudeta"
#. module: account #. module: account
#: model:ir.actions.act_window,help:account.action_move_journal_line #: model:ir.actions.act_window,help:account.action_move_journal_line
@ -1378,7 +1384,7 @@ msgstr ""
#. module: account #. module: account
#: view:account.entries.report:0 #: view:account.entries.report:0
msgid "# of Entries " msgid "# of Entries "
msgstr "" msgstr "# sisestusi "
#. module: account #. module: account
#: model:ir.model,name:account.model_temp_range #: model:ir.model,name:account.model_temp_range
@ -1435,7 +1441,7 @@ msgstr "Mall finantspositsioonile"
#. module: account #. module: account
#: model:account.tax.code,name:account.account_tax_code_0 #: model:account.tax.code,name:account.account_tax_code_0
msgid "Tax Code Test" msgid "Tax Code Test"
msgstr "" msgstr "Maksu koodi test"
#. module: account #. module: account
#: field:account.automatic.reconcile,reconciled:0 #: field:account.automatic.reconcile,reconciled:0
@ -1445,22 +1451,22 @@ msgstr ""
#. module: account #. module: account
#: field:account.journal.view,columns_id:0 #: field:account.journal.view,columns_id:0
msgid "Columns" msgid "Columns"
msgstr "" msgstr "Veerud"
#. module: account #. module: account
#: report:account.overdue:0 #: report:account.overdue:0
msgid "." msgid "."
msgstr "" msgstr "."
#. module: account #. module: account
#: view:account.analytic.cost.ledger.journal.report:0 #: view:account.analytic.cost.ledger.journal.report:0
msgid "and Journals" msgid "and Journals"
msgstr "" msgstr "ja arveraamatud"
#. module: account #. module: account
#: field:account.journal,groups_id:0 #: field:account.journal,groups_id:0
msgid "Groups" msgid "Groups"
msgstr "" msgstr "Grupid"
#. module: account #. module: account
#: field:account.invoice,amount_untaxed:0 #: field:account.invoice,amount_untaxed:0
@ -1471,18 +1477,20 @@ msgstr "Maksuvaba"
#. module: account #. module: account
#: view:account.partner.reconcile.process:0 #: view:account.partner.reconcile.process:0
msgid "Go to next partner" msgid "Go to next partner"
msgstr "" msgstr "Mine järgmise \"Partner\"-ile"
#. module: account #. module: account
#: view:account.bank.statement:0 #: view:account.bank.statement:0
msgid "Search Bank Statements" msgid "Search Bank Statements"
msgstr "" msgstr "Otsi panga avaldust"
#. module: account #. module: account
#: sql_constraint:account.model.line:0 #: sql_constraint:account.model.line:0
msgid "" msgid ""
"Wrong credit or debit value in model (Credit + Debit Must Be greater \"0\")!" "Wrong credit or debit value in model (Credit + Debit Must Be greater \"0\")!"
msgstr "" msgstr ""
"Vale krediidi või deebeti arv mudelis ( Krediit + Deebet Peab olema suurem "
"kui \"0\" ) !"
#. module: account #. module: account
#: view:account.chart.template:0 #: view:account.chart.template:0
@ -1516,14 +1524,14 @@ msgstr ""
#. module: account #. module: account
#: report:account.analytic.account.cost_ledger:0 #: report:account.analytic.account.cost_ledger:0
msgid "Date/Code" msgid "Date/Code"
msgstr "" msgstr "Kuupäev/Kood"
#. module: account #. module: account
#: field:account.analytic.line,general_account_id:0 #: field:account.analytic.line,general_account_id:0
#: view:analytic.entries.report:0 #: view:analytic.entries.report:0
#: field:analytic.entries.report,general_account_id:0 #: field:analytic.entries.report,general_account_id:0
msgid "General Account" msgid "General Account"
msgstr "" msgstr "Üldine konto"
#. module: account #. module: account
#: field:res.partner,debit_limit:0 #: field:res.partner,debit_limit:0
@ -1554,13 +1562,13 @@ msgstr ""
#. module: account #. module: account
#: field:wizard.multi.charts.accounts,seq_journal:0 #: field:wizard.multi.charts.accounts,seq_journal:0
msgid "Separated Journal Sequences" msgid "Separated Journal Sequences"
msgstr "" msgstr "Eraldatud päeviku järjekorrad"
#. module: account #. module: account
#: field:account.bank.statement,user_id:0 #: field:account.bank.statement,user_id:0
#: view:account.invoice:0 #: view:account.invoice:0
msgid "Responsible" msgid "Responsible"
msgstr "" msgstr "Vastutav"
#. module: account #. module: account
#: report:account.overdue:0 #: report:account.overdue:0
@ -1570,7 +1578,7 @@ msgstr "Vahesumma:"
#. module: account #. module: account
#: model:ir.actions.act_window,name:account.action_report_account_type_sales_tree_all #: model:ir.actions.act_window,name:account.action_report_account_type_sales_tree_all
msgid "Sales by Account Type" msgid "Sales by Account Type"
msgstr "" msgstr "Müügid konto järgi"
#. module: account #. module: account
#: view:account.invoice.refund:0 #: view:account.invoice.refund:0
@ -1582,7 +1590,7 @@ msgstr ""
#. module: account #. module: account
#: model:ir.ui.menu,name:account.periodical_processing_invoicing #: model:ir.ui.menu,name:account.periodical_processing_invoicing
msgid "Invoicing" msgid "Invoicing"
msgstr "" msgstr "Arveldamine"
#. module: account #. module: account
#: field:account.chart.template,tax_code_root_id:0 #: field:account.chart.template,tax_code_root_id:0
@ -1598,17 +1606,17 @@ msgstr "Kaasa algsed"
#. module: account #. module: account
#: field:account.tax.code,sum:0 #: field:account.tax.code,sum:0
msgid "Year Sum" msgid "Year Sum"
msgstr "" msgstr "Aasta kokkuvõtte"
#. module: account #. module: account
#: model:ir.actions.report.xml,name:account.report_account_voucher_new #: model:ir.actions.report.xml,name:account.report_account_voucher_new
msgid "Print Voucher" msgid "Print Voucher"
msgstr "" msgstr "Prindi voucher"
#. module: account #. module: account
#: view:account.change.currency:0 #: view:account.change.currency:0
msgid "This wizard will change the currency of the invoice" msgid "This wizard will change the currency of the invoice"
msgstr "" msgstr "See wizard muudab valuuta arvelduses"
#. module: account #. module: account
#: model:ir.actions.act_window,help:account.action_account_chart #: model:ir.actions.act_window,help:account.action_account_chart
@ -1632,7 +1640,7 @@ msgstr ""
#. module: account #. module: account
#: field:account.cashbox.line,pieces:0 #: field:account.cashbox.line,pieces:0
msgid "Values" msgid "Values"
msgstr "" msgstr "Väärtused"
#. module: account #. module: account
#: help:account.journal.period,active:0 #: help:account.journal.period,active:0
@ -1675,7 +1683,7 @@ msgstr ""
#. module: account #. module: account
#: report:account.move.voucher:0 #: report:account.move.voucher:0
msgid "Ref. :" msgid "Ref. :"
msgstr "" msgstr "Viide:"
#. module: account #. module: account
#: view:account.analytic.chart:0 #: view:account.analytic.chart:0
@ -1685,7 +1693,7 @@ msgstr "Analüütilised kontoplaanid"
#. module: account #. module: account
#: view:account.analytic.line:0 #: view:account.analytic.line:0
msgid "My Entries" msgid "My Entries"
msgstr "" msgstr "Minu sisestused"
#. module: account #. module: account
#: report:account.overdue:0 #: report:account.overdue:0
@ -1696,7 +1704,7 @@ msgstr "Kliendi viide:"
#: code:addons/account/account_cash_statement.py:328 #: code:addons/account/account_cash_statement.py:328
#, python-format #, python-format
msgid "User %s does not have rights to access %s journal !" msgid "User %s does not have rights to access %s journal !"
msgstr "" msgstr "Kasutajal %s ei ole õigusi et siseneda %s arveraamatusse !"
#. module: account #. module: account
#: help:account.period,special:0 #: help:account.period,special:0
@ -1717,12 +1725,12 @@ msgstr ""
#: code:addons/account/account.py:499 #: code:addons/account/account.py:499
#, python-format #, python-format
msgid "You cannot deactivate an account that contains account moves." msgid "You cannot deactivate an account that contains account moves."
msgstr "" msgstr "Sa ei saa deaktiveerida kontot mis sisaldab konto liikumisi."
#. module: account #. module: account
#: field:account.move.line.reconcile,credit:0 #: field:account.move.line.reconcile,credit:0
msgid "Credit amount" msgid "Credit amount"
msgstr "" msgstr "Kreedidi kogus"
#. module: account #. module: account
#: constraint:account.move.line:0 #: constraint:account.move.line:0
@ -1745,7 +1753,7 @@ msgstr ""
#. module: account #. module: account
#: sql_constraint:account.move.line:0 #: sql_constraint:account.move.line:0
msgid "Wrong credit or debit value in accounting entry !" msgid "Wrong credit or debit value in accounting entry !"
msgstr "" msgstr "Vale kreedit või deebeti raamatupidamise sisend !"
#. module: account #. module: account
#: view:account.invoice.report:0 #: view:account.invoice.report:0
@ -1757,7 +1765,7 @@ msgstr ""
#. module: account #. module: account
#: model:ir.model,name:account.model_account_period_close #: model:ir.model,name:account.model_account_period_close
msgid "period close" msgid "period close"
msgstr "" msgstr "Periood suletud"
#. module: account #. module: account
#: view:account.installer:0 #: view:account.installer:0
@ -1767,18 +1775,18 @@ msgstr ""
#. module: account #. module: account
#: model:ir.actions.act_window,name:account.action_project_account_analytic_line_form #: model:ir.actions.act_window,name:account.action_project_account_analytic_line_form
msgid "Entries By Line" msgid "Entries By Line"
msgstr "" msgstr "SIsestused ridade kaupa"
#. module: account #. module: account
#: report:account.tax.code.entries:0 #: report:account.tax.code.entries:0
msgid "A/c Code" msgid "A/c Code"
msgstr "" msgstr "A/c kood"
#. module: account #. module: account
#: field:account.invoice,move_id:0 #: field:account.invoice,move_id:0
#: field:account.invoice,move_name:0 #: field:account.invoice,move_name:0
msgid "Journal Entry" msgid "Journal Entry"
msgstr "" msgstr "Päevaraamatu kanne"
#. module: account #. module: account
#: view:account.tax:0 #: view:account.tax:0
@ -1788,7 +1796,7 @@ msgstr ""
#. module: account #. module: account
#: field:account.cashbox.line,subtotal:0 #: field:account.cashbox.line,subtotal:0
msgid "Sub Total" msgid "Sub Total"
msgstr "" msgstr "Vahesumma"
#. module: account #. module: account
#: view:account.account:0 #: view:account.account:0
@ -1798,7 +1806,7 @@ msgstr ""
#. module: account #. module: account
#: constraint:res.company:0 #: constraint:res.company:0
msgid "Error! You can not create recursive companies." msgid "Error! You can not create recursive companies."
msgstr "" msgstr "Viga! Sa ei saa luua rekursiivseid ettevõtteid."
#. module: account #. module: account
#: view:account.analytic.account:0 #: view:account.analytic.account:0
@ -1821,12 +1829,12 @@ msgstr "Kehtiv"
#: model:ir.actions.act_window,name:account.action_account_print_journal #: model:ir.actions.act_window,name:account.action_account_print_journal
#: model:ir.model,name:account.model_account_print_journal #: model:ir.model,name:account.model_account_print_journal
msgid "Account Print Journal" msgid "Account Print Journal"
msgstr "" msgstr "Prindi konto arveraamat"
#. module: account #. module: account
#: model:ir.model,name:account.model_product_category #: model:ir.model,name:account.model_product_category
msgid "Product Category" msgid "Product Category"
msgstr "" msgstr "Toote kategooria"
#. module: account #. module: account
#: selection:account.account.type,report_type:0 #: selection:account.account.type,report_type:0
@ -1836,7 +1844,7 @@ msgstr "/"
#. module: account #. module: account
#: field:account.bs.report,reserve_account_id:0 #: field:account.bs.report,reserve_account_id:0
msgid "Reserve & Profit/Loss Account" msgid "Reserve & Profit/Loss Account"
msgstr "" msgstr "Reservi & kasumi/kahjumi konto"
#. module: account #. module: account
#: help:account.bank.statement,balance_end:0 #: help:account.bank.statement,balance_end:0
@ -1887,12 +1895,12 @@ msgstr ""
#: field:account.installer.modules,config_logo:0 #: field:account.installer.modules,config_logo:0
#: field:wizard.multi.charts.accounts,config_logo:0 #: field:wizard.multi.charts.accounts,config_logo:0
msgid "Image" msgid "Image"
msgstr "" msgstr "Pilt"
#. module: account #. module: account
#: report:account.move.voucher:0 #: report:account.move.voucher:0
msgid "Canceled" msgid "Canceled"
msgstr "" msgstr "Tühistatud"
#. module: account #. module: account
#: view:account.invoice:0 #: view:account.invoice:0

View File

@ -46,23 +46,14 @@ class ir_sequence(osv.osv):
'fiscal_ids': fields.one2many('account.sequence.fiscalyear', 'fiscal_ids': fields.one2many('account.sequence.fiscalyear',
'sequence_main_id', 'Sequences') 'sequence_main_id', 'Sequences')
} }
def get_id(self, cr, uid, sequence_id, test='id', context=None):
if context is None: def _next(self, cr, uid, seq_ids, context=None):
context = {} for seq in self.browse(cr, uid, seq_ids, context):
cr.execute('select id from ir_sequence where ' for line in seq.fiscal_ids:
+ test + '=%s and active=%s', (sequence_id, True,)) if line.fiscalyear_id.id == context.get('fiscalyear_id'):
res = cr.dictfetchone() return super(ir_sequence, self)._next(cr, uid, [line.sequence_id.id], context)
if res: return super(ir_sequence, self)._next(cr, uid, seq_ids, context)
for line in self.browse(cr, uid, res['id'],
context=context).fiscal_ids:
if line.fiscalyear_id.id == context.get('fiscalyear_id', False):
return super(ir_sequence, self).get_id(cr, uid,
line.sequence_id.id,
test="id",
context=context)
return super(ir_sequence, self).get_id(cr, uid, sequence_id, test,
context=context)
ir_sequence() ir_sequence()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -26,7 +26,6 @@
code: NEW code: NEW
type: situation type: situation
analytic_journal_id: sit analytic_journal_id: sit
sequence_id: sequence_journal
default_debit_account_id: cash default_debit_account_id: cash
default_credit_account_id: cash default_credit_account_id: cash
company_id: base.main_company company_id: base.main_company

View File

@ -7,14 +7,15 @@
<field name="res_model">account.analytic.plan</field> <field name="res_model">account.analytic.plan</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="view_id" ref="account_analytic_plans.account_analytic_plan_form"/> <field name="view_id" eval="False"/>
<field name="help">To setup a multiple analytic plans environment, you must define the root analytic accounts for each plan set. Then, you must attach a plan set to your account journals.</field>
</record>
<record id="account_analytic_plan_installer_todo" model="ir.actions.todo">
<field name="action_id" ref="account_analytic_plan_form_action_installer"/>
<field name="category_id" ref="account.category_accounting_configuration"/>
<field name="sequence">15</field>
</record> </record>
<record id="account_analytic_plan_installer_todo" model="ir.actions.todo">
<field name="action_id" ref="account_analytic_plan_form_action_installer"/>
<field name="category_id" ref="account.category_accounting_configuration"/>
<field name="sequence">15</field>
</record>
</data> </data>
</openerp> </openerp>

View File

@ -0,0 +1,529 @@
# Brazilian Portuguese translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-11-24 12:54+0000\n"
"PO-Revision-Date: 2011-09-30 14:07+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: 2011-10-01 05:08+0000\n"
"X-Generator: Launchpad (build 14071)\n"
#. module: account_asset
#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_list_normal
#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_list_normal
msgid "Open Assets"
msgstr ""
#. module: account_asset
#: field:account.asset.property,method_end:0
#: field:account.asset.property.history,method_end:0
msgid "Ending date"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Depreciation board"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
#: field:account.asset.asset,name:0
#: field:account.asset.board,asset_id:0
#: field:account.asset.property,asset_id:0
#: field:account.invoice.line,asset_id:0
#: field:account.move.line,asset_id:0
#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_form
#: model:ir.model,name:account_asset.model_account_asset_asset
#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_form
msgid "Asset"
msgstr ""
#. module: account_asset
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr ""
#. module: account_asset
#: selection:account.asset.property,method:0
msgid "Linear"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Change duration"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,child_ids:0
msgid "Child assets"
msgstr ""
#. module: account_asset
#: field:account.asset.board,value_asset:0
msgid "Asset Value"
msgstr ""
#. module: account_asset
#: wizard_field:account.asset.modify,init,name:0
msgid "Reason"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
#: field:account.asset.asset,entry_ids:0
#: wizard_field:account.asset.compute,asset_compute,move_ids:0
msgid "Entries"
msgstr ""
#. module: account_asset
#: wizard_view:account.asset.compute,asset_compute:0
msgid "Generated entries"
msgstr ""
#. module: account_asset
#: wizard_field:account.asset.modify,init,method_delay:0
#: field:account.asset.property,method_delay:0
#: field:account.asset.property.history,method_delay:0
msgid "Number of interval"
msgstr ""
#. module: account_asset
#: wizard_button:account.asset.compute,asset_compute,asset_open:0
msgid "Open entries"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_list
#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_list
#: model:ir.ui.menu,name:account_asset.menu_finance_Assets
#: model:ir.ui.menu,name:account_asset.menu_finance_config_Assets
msgid "Assets"
msgstr ""
#. module: account_asset
#: selection:account.asset.property,method:0
msgid "Progressive"
msgstr ""
#. module: account_asset
#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_list_draft
#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_list_draft
msgid "Draft Assets"
msgstr ""
#. module: account_asset
#: wizard_view:account.asset.modify,init:0
#: wizard_field:account.asset.modify,init,note:0
#: view:account.asset.property.history:0
msgid "Notes"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Change history"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Depreciation entries"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Methods"
msgstr ""
#. module: account_asset
#: wizard_view:account.asset.modify,init:0
msgid "Asset properties to modify"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,partner_id:0
msgid "Partner"
msgstr ""
#. module: account_asset
#: wizard_field:account.asset.modify,init,method_period:0
#: field:account.asset.property,method_period:0
#: field:account.asset.property.history,method_period:0
msgid "Period per interval"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Depreciation duration"
msgstr ""
#. module: account_asset
#: field:account.asset.property,account_analytic_id:0
msgid "Analytic account"
msgstr ""
#. module: account_asset
#: field:account.asset.property,state:0
msgid "State"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Depreciation methods"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Other information"
msgstr ""
#. module: account_asset
#: field:account.asset.board,value_asset_cumul:0
msgid "Cumul. value"
msgstr ""
#. module: account_asset
#: view:account.asset.property:0
msgid "Assets methods"
msgstr ""
#. module: account_asset
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_asset_property
msgid "Asset property"
msgstr ""
#. module: account_asset
#: wizard_view:account.asset.compute,asset_compute:0
#: wizard_view:account.asset.compute,init:0
#: wizard_button:account.asset.compute,init,asset_compute:0
#: model:ir.actions.wizard,name:account_asset.wizard_asset_compute
#: model:ir.ui.menu,name:account_asset.menu_wizard_asset_compute
msgid "Compute assets"
msgstr ""
#. module: account_asset
#: wizard_view:account.asset.modify,init:0
#: wizard_button:account.asset.modify,init,asset_modify:0
#: model:ir.actions.wizard,name:account_asset.wizard_asset_modify
msgid "Modify asset"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Confirm asset"
msgstr ""
#. module: account_asset
#: view:account.asset.property.history:0
#: model:ir.model,name:account_asset.model_account_asset_property_history
msgid "Asset history"
msgstr ""
#. module: account_asset
#: field:account.asset.property,date:0
msgid "Date created"
msgstr ""
#. module: account_asset
#: model:ir.module.module,description:account_asset.module_meta_information
msgid ""
"Financial and accounting asset management.\n"
" Allows to define\n"
" * Asset category. \n"
" * Assets.\n"
" *Asset usage period and property.\n"
" "
msgstr ""
#. module: account_asset
#: field:account.asset.board,value_gross:0
#: field:account.asset.property,value_total:0
msgid "Gross value"
msgstr ""
#. module: account_asset
#: selection:account.asset.property,method_time:0
msgid "Ending period"
msgstr ""
#. module: account_asset
#: field:account.asset.board,name:0
msgid "Asset name"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Accounts information"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,note:0
#: field:account.asset.category,note:0
#: field:account.asset.property.history,note:0
msgid "Note"
msgstr ""
#. module: account_asset
#: selection:account.asset.asset,state:0
#: selection:account.asset.property,state:0
msgid "Draft"
msgstr ""
#. module: account_asset
#: field:account.asset.property,type:0
msgid "Depr. method type"
msgstr ""
#. module: account_asset
#: field:account.asset.property,account_asset_id:0
msgid "Asset account"
msgstr ""
#. module: account_asset
#: field:account.asset.property.history,asset_property_id:0
msgid "Method"
msgstr ""
#. module: account_asset
#: selection:account.asset.asset,state:0
msgid "Normal"
msgstr ""
#. module: account_asset
#: field:account.asset.property,method_progress_factor:0
msgid "Progressif factor"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,localisation:0
msgid "Localisation"
msgstr ""
#. module: account_asset
#: field:account.asset.property,method:0
msgid "Computation method"
msgstr ""
#. module: account_asset
#: field:account.asset.property,method_time:0
msgid "Time method"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,active:0
msgid "Active"
msgstr ""
#. module: account_asset
#: field:account.asset.property.history,user_id:0
msgid "User"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,property_ids:0
msgid "Asset method name"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,date:0
#: field:account.asset.property.history,date:0
msgid "Date"
msgstr ""
#. module: account_asset
#: field:account.asset.board,value_net:0
msgid "Net value"
msgstr ""
#. module: account_asset
#: wizard_view:account.asset.close,init:0
#: model:ir.actions.wizard,name:account_asset.wizard_asset_close
msgid "Close asset"
msgstr ""
#. module: account_asset
#: field:account.asset.property,history_ids:0
msgid "History"
msgstr ""
#. module: account_asset
#: field:account.asset.property,account_actif_id:0
msgid "Depreciation account"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,period_id:0
#: wizard_field:account.asset.compute,init,period_id:0
msgid "Period"
msgstr ""
#. module: account_asset
#: model:ir.actions.act_window,name:account_asset.action_account_asset_category_form
#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_category_form
msgid "Asset Category"
msgstr ""
#. module: account_asset
#: wizard_button:account.asset.close,init,end:0
#: wizard_button:account.asset.compute,init,end:0
#: wizard_button:account.asset.modify,init,end:0
msgid "Cancel"
msgstr ""
#. module: account_asset
#: selection:account.asset.asset,state:0
#: wizard_button:account.asset.compute,asset_compute,end:0
#: selection:account.asset.property,state:0
msgid "Close"
msgstr ""
#. module: account_asset
#: selection:account.asset.property,state:0
msgid "Open"
msgstr ""
#. module: account_asset
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
#. module: account_asset
#: model:ir.module.module,shortdesc:account_asset.module_meta_information
msgid "Asset management"
msgstr ""
#. module: account_asset
#: view:account.asset.board:0
#: field:account.asset.property,board_ids:0
#: model:ir.model,name:account_asset.model_account_asset_board
msgid "Asset board"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,state:0
msgid "Global state"
msgstr ""
#. module: account_asset
#: selection:account.asset.property,method_time:0
msgid "Delay"
msgstr ""
#. module: account_asset
#: wizard_view:account.asset.close,init:0
msgid "General information"
msgstr ""
#. module: account_asset
#: field:account.asset.property,journal_analytic_id:0
msgid "Analytic journal"
msgstr ""
#. module: account_asset
#: field:account.asset.property,name:0
msgid "Method name"
msgstr ""
#. module: account_asset
#: field:account.asset.property,journal_id:0
msgid "Journal"
msgstr ""
#. module: account_asset
#: field:account.asset.property.history,name:0
msgid "History name"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Close method"
msgstr ""
#. module: account_asset
#: field:account.asset.property,entry_asset_ids:0
msgid "Asset Entries"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,category_id:0
#: view:account.asset.category:0
#: field:account.asset.category,name:0
#: model:ir.model,name:account_asset.model_account_asset_category
msgid "Asset category"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Depreciation"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,code:0
#: field:account.asset.category,code:0
msgid "Asset code"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,value_total:0
msgid "Total value"
msgstr ""
#. module: account_asset
#: selection:account.asset.asset,state:0
msgid "View"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "General info"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,sequence:0
msgid "Sequence"
msgstr ""
#. module: account_asset
#: field:account.asset.property,value_residual:0
msgid "Residual value"
msgstr ""
#. module: account_asset
#: wizard_button:account.asset.close,init,asset_close:0
msgid "End of asset"
msgstr ""
#. module: account_asset
#: selection:account.asset.property,type:0
msgid "Direct"
msgstr ""
#. module: account_asset
#: selection:account.asset.property,type:0
msgid "Indirect"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,parent_id:0
msgid "Parent asset"
msgstr ""
#. module: account_asset
#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_tree
#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_tree
msgid "Asset Hierarchy"
msgstr ""

View File

@ -52,10 +52,11 @@ Note that if you want to check the followup level for a given partner/account en
'security/ir.model.access.csv', 'security/ir.model.access.csv',
'wizard/account_followup_print_view.xml', 'wizard/account_followup_print_view.xml',
'report/account_followup_report.xml', 'report/account_followup_report.xml',
'account_followup_demo.xml', # Defined by default
'account_followup_view.xml', 'account_followup_view.xml',
'account_followup_data.xml' 'account_followup_data.xml',
], ],
'demo_xml': ['account_followup_demo.xml'], 'demo_xml': [],
'test': ['test/account_followup.yml'], 'test': ['test/account_followup.yml'],
'installable': True, 'installable': True,
'active': False, 'active': False,

View File

@ -3,7 +3,7 @@
<data noupdate="1"> <data noupdate="1">
<record id="demo_followup1" model="account_followup.followup"> <record id="demo_followup1" model="account_followup.followup">
<field name="name">Default follow-up</field> <field name="name">Default Follow-Up</field>
<field name="company_id" ref="base.main_company"/> <field name="company_id" ref="base.main_company"/>
<field name="description">First letter after 15 net days, 30 net days and 45 days end of month levels.</field> <field name="description">First letter after 15 net days, 30 net days and 45 days end of month levels.</field>
</record> </record>

View File

@ -6,7 +6,7 @@
<field name="model">account_followup.followup.line</field> <field name="model">account_followup.followup.line</field>
<field name="type">tree</field> <field name="type">tree</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="Follow-Up Lines"> <tree string="Follow-Up Steps">
<field name="name"/> <field name="name"/>
<field name="delay"/> <field name="delay"/>
<field name="start" groups="base.group_extended"/> <field name="start" groups="base.group_extended"/>
@ -19,7 +19,7 @@
<field name="model">account_followup.followup.line</field> <field name="model">account_followup.followup.line</field>
<field name="type">form</field> <field name="type">form</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Follow-Up Lines"> <form string="Follow-Up Steps">
<group col="6" colspan="4"> <group col="6" colspan="4">
<field name="name"/> <field name="name"/>
<field name="delay"/> <field name="delay"/>
@ -45,7 +45,7 @@
<form string="Follow-Up"> <form string="Follow-Up">
<field name="name"/> <field name="name"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/> <field name="company_id" widget="selection" groups="base.group_multi_company"/>
<separator colspan="4" string=""/> <newline/>
<field colspan="4" name="followup_line" nolabel="1"/> <field colspan="4" name="followup_line" nolabel="1"/>
</form> </form>
</field> </field>
@ -73,10 +73,6 @@
<field name="name"/> <field name="name"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/> <field name="company_id" widget="selection" groups="base.group_multi_company"/>
</group> </group>
<newline/>
<group expand="0" string="Group By...">
<filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
</group>
</search> </search>
</field> </field>
</record> </record>
@ -169,6 +165,7 @@
<field name="res_model">account_followup.followup</field> <field name="res_model">account_followup.followup</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">form,tree</field> <field name="view_mode">form,tree</field>
<field name="context" eval="'{\'res_id\': %s}' % (ref('demo_followup1'),)"/>
<field name="view_id" ref="view_account_followup_followup_form"/> <field name="view_id" ref="view_account_followup_followup_form"/>
</record> </record>

View File

@ -35,7 +35,7 @@ class account_move(osv.osv):
seq_no = False seq_no = False
for move in self.browse(cr, uid, ids, context=context): for move in self.browse(cr, uid, ids, context=context):
if move.journal_id.internal_sequence_id: if move.journal_id.internal_sequence_id:
seq_no = obj_sequence.get_id(cr, uid, move.journal_id.internal_sequence_id.id, context=context) seq_no = obj_sequence.next_by_id(cr, uid, move.journal_id.internal_sequence_id.id, context=context)
if seq_no: if seq_no:
self.write(cr, uid, [move.id], {'internal_sequence_number': seq_no}) self.write(cr, uid, [move.id], {'internal_sequence_number': seq_no})
return res return res

View File

@ -674,7 +674,7 @@ class account_voucher(osv.osv):
if inv.number: if inv.number:
name = inv.number name = inv.number
elif inv.journal_id.sequence_id: elif inv.journal_id.sequence_id:
name = seq_obj.get_id(cr, uid, inv.journal_id.sequence_id.id) name = seq_obj.next_by_id(cr, uid, inv.journal_id.sequence_id.id)
else: else:
raise osv.except_osv(_('Error !'), _('Please define a sequence on the journal !')) raise osv.except_osv(_('Error !'), _('Please define a sequence on the journal !'))
if not inv.reference: if not inv.reference:

View File

@ -280,6 +280,7 @@
<form string="Customer Payment"> <form string="Customer Payment">
<group col="6" colspan="4"> <group col="6" colspan="4">
<field name="partner_id" required="1" invisible="context.get('line_type', False)" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date)" string="Customer"/> <field name="partner_id" required="1" invisible="context.get('line_type', False)" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date)" string="Customer"/>
<field name="currency_id" invisible="1"/>
<field name="amount" <field name="amount"
invisible="context.get('line_type', False)" invisible="context.get('line_type', False)"
string="Paid Amount" string="Paid Amount"

View File

@ -123,9 +123,6 @@ class audittrail_rule(osv.osv):
#End Loop #End Loop
return True return True
audittrail_rule()
class audittrail_log(osv.osv): class audittrail_log(osv.osv):
""" """
For Audittrail Log For Audittrail Log
@ -161,9 +158,6 @@ class audittrail_log(osv.osv):
} }
_order = "timestamp desc" _order = "timestamp desc"
audittrail_log()
class audittrail_log_line(osv.osv): class audittrail_log_line(osv.osv):
""" """
Audittrail Log Line. Audittrail Log Line.
@ -181,9 +175,6 @@ class audittrail_log_line(osv.osv):
'field_description': fields.char('Field Description', size=64), 'field_description': fields.char('Field Description', size=64),
} }
audittrail_log_line()
class audittrail_objects_proxy(object_proxy): class audittrail_objects_proxy(object_proxy):
""" Uses Object proxy for auditing changes on object of subscribed Rules""" """ Uses Object proxy for auditing changes on object of subscribed Rules"""
@ -289,8 +280,7 @@ class audittrail_objects_proxy(object_proxy):
#End Loop #End Loop
return True return True
def log_fct(self, cr, uid, model, method, fct_src, *args):
def log_fct(self, db, uid, model, method, fct_src, *args):
""" """
Logging function: This function is performs logging oprations according to method Logging function: This function is performs logging oprations according to method
@param db: the current database @param db: the current database
@ -304,8 +294,7 @@ class audittrail_objects_proxy(object_proxy):
uid_orig = uid uid_orig = uid
uid = 1 uid = 1
res2 = args res2 = args
pool = pooler.get_pool(db) pool = pooler.get_pool(cr.dbname)
cr = pooler.get_db(db).cursor()
resource_pool = pool.get(model) resource_pool = pool.get(model)
log_pool = pool.get('audittrail.log') log_pool = pool.get('audittrail.log')
model_pool = pool.get('ir.model') model_pool = pool.get('ir.model')
@ -316,8 +305,7 @@ class audittrail_objects_proxy(object_proxy):
model = model_pool.browse(cr, uid, model_id) model = model_pool.browse(cr, uid, model_id)
if method in ('create'): if method in ('create'):
res_id = fct_src(db, uid_orig, model.model, method, *args) res_id = fct_src(cr, uid_orig, model.model, method, *args)
cr.commit()
resource = resource_pool.read(cr, uid, res_id, args[0].keys()) resource = resource_pool.read(cr, uid, res_id, args[0].keys())
vals = { vals = {
"method": method, "method": method,
@ -338,14 +326,12 @@ class audittrail_objects_proxy(object_proxy):
lines.append(line) lines.append(line)
self.create_log_line(cr, uid, log_id, model, lines) self.create_log_line(cr, uid, log_id, model, lines)
cr.commit()
cr.close()
return res_id return res_id
elif method in ('read'): elif method in ('read'):
res_ids = args[0] res_ids = args[0]
old_values = {} old_values = {}
res = fct_src(db, uid_orig, model.model, method, *args) res = fct_src(cr, uid_orig, model.model, method, *args)
if type(res) == list: if type(res) == list:
for v in res: for v in res:
old_values[v['id']] = v old_values[v['id']] = v
@ -370,8 +356,6 @@ class audittrail_objects_proxy(object_proxy):
lines.append(line) lines.append(line)
self.create_log_line(cr, uid, log_id, model, lines) self.create_log_line(cr, uid, log_id, model, lines)
cr.commit()
cr.close()
return res return res
elif method in ('unlink'): elif method in ('unlink'):
@ -401,9 +385,7 @@ class audittrail_objects_proxy(object_proxy):
lines.append(line) lines.append(line)
self.create_log_line(cr, uid, log_id, model, lines) self.create_log_line(cr, uid, log_id, model, lines)
res = fct_src(db, uid_orig, model.model, method, *args) res = fct_src(cr, uid_orig, model.model, method, *args)
cr.commit()
cr.close()
return res return res
else: else:
res_ids = [] res_ids = []
@ -428,8 +410,7 @@ class audittrail_objects_proxy(object_proxy):
old_values_text[field] = self.get_value_text(cr, uid, field, resource[field], model) old_values_text[field] = self.get_value_text(cr, uid, field, resource[field], model)
old_values[resource_id] = {'text':old_values_text, 'value': old_value} old_values[resource_id] = {'text':old_values_text, 'value': old_value}
res = fct_src(db, uid_orig, model.model, method, *args) res = fct_src(cr, uid_orig, model.model, method, *args)
cr.commit()
if res_ids: if res_ids:
for resource in resource_pool.read(cr, uid, res_ids): for resource in resource_pool.read(cr, uid, res_ids):
@ -457,107 +438,40 @@ class audittrail_objects_proxy(object_proxy):
lines.append(line) lines.append(line)
self.create_log_line(cr, uid, log_id, model, lines) self.create_log_line(cr, uid, log_id, model, lines)
cr.commit()
cr.close()
return res return res
return True return True
def check_rules(self, cr, uid, model, method):
pool = pooler.get_pool(cr.dbname)
def execute(self, db, uid, model, method, *args, **kw): # Check if auditrails is installed for that db and then if one rule match
""" if 'audittrail.rule' in pool.models:
Overrides Object Proxy execute method model_ids = pool.get('ir.model').search(cr, 1, [('model', '=', model)])
@param db: the current database
@param uid: the current user's ID for security checks,
@param object: Object who's values are being changed
@param method: get any method and create log
@return: Returns result as per method of Object proxy
"""
uid_orig = uid
uid = 1
pool = pooler.get_pool(db)
model_pool = pool.get('ir.model')
rule_pool = pool.get('audittrail.rule')
cr = pooler.get_db(db).cursor()
cr.autocommit(True)
logged_uids = []
fct_src = super(audittrail_objects_proxy, self).execute
def my_fct(db, uid, model, method, *args):
rule = False
model_ids = model_pool.search(cr, uid, [('model', '=', model)])
model_id = model_ids and model_ids[0] or False model_id = model_ids and model_ids[0] or False
if model_id:
rule_ids = pool.get('audittrail.rule').search(cr, 1, [('object_id', '=', model_id), ('state', '=', 'subscribed')])
for rule in pool.get('audittrail.rule').read(cr, 1, rule_ids, ['user_id','log_read','log_write','log_create','log_unlink','log_action','log_workflow']):
if len(rule['user_id'])==0 or uid in rule['user_id']:
if rule.get('log_'+method,0):
return True
elif method not in ('default_get','read','fields_view_get','fields_get','search','search_count','name_search','name_get','get','request_get', 'get_sc', 'unlink', 'write', 'create'):
if rule['log_action']:
return True
for model_name in pool.obj_list(): def execute_cr(self, cr, uid, model, method, *args, **kw):
if model_name == 'audittrail.rule': fct_src = super(audittrail_objects_proxy, self).execute_cr
rule = True if self.check_rules(cr,uid,model,method):
if not rule: res = self.log_fct(cr, uid, model, method, fct_src, *args)
return fct_src(db, uid_orig, model, method, *args) else:
if not model_id: res = fct_src(cr, uid, model, method, *args)
return fct_src(db, uid_orig, model, method, *args) return res
rule_ids = rule_pool.search(cr, uid, [('object_id', '=', model_id), ('state', '=', 'subscribed')]) def exec_workflow_cr(self, cr, uid, model, method, *args, **argv):
if not rule_ids: fct_src = super(audittrail_objects_proxy, self).exec_workflow_cr
return fct_src(db, uid_orig, model, method, *args) if self.check_rules(cr,uid,model,'workflow'):
res = self.log_fct(cr, uid, model, method, fct_src, *args)
for thisrule in rule_pool.browse(cr, uid, rule_ids): else:
for user in thisrule.user_id: res = fct_src(cr, uid, model, method, *args)
logged_uids.append(user.id) return res
if not logged_uids or uid in logged_uids:
if method in ('read', 'write', 'create', 'unlink'):
if getattr(thisrule, 'log_' + method):
return self.log_fct(db, uid_orig, model, method, fct_src, *args)
elif method not in ('default_get','read','fields_view_get','fields_get','search','search_count','name_search','name_get','get','request_get', 'get_sc', 'unlink', 'write', 'create'):
if thisrule.log_action:
return self.log_fct(db, uid_orig, model, method, fct_src, *args)
return fct_src(db, uid_orig, model, method, *args)
try:
res = my_fct(db, uid, model, method, *args)
return res
finally:
cr.close()
def exec_workflow(self, db, uid, model, method, *args, **argv):
uid_orig = uid
uid = 1
pool = pooler.get_pool(db)
logged_uids = []
fct_src = super(audittrail_objects_proxy, self).exec_workflow
field = method
rule = False
model_pool = pool.get('ir.model')
rule_pool = pool.get('audittrail.rule')
cr = pooler.get_db(db).cursor()
cr.autocommit(True)
try:
model_ids = model_pool.search(cr, uid, [('model', '=', model)])
for obj_name in pool.obj_list():
if obj_name == 'audittrail.rule':
rule = True
if not rule:
return super(audittrail_objects_proxy, self).exec_workflow(db, uid_orig, model, method, *args, **argv)
if not model_ids:
return super(audittrail_objects_proxy, self).exec_workflow(db, uid_orig, model, method, *args, **argv)
rule_ids = rule_pool.search(cr, uid, [('object_id', 'in', model_ids), ('state', '=', 'subscribed')])
if not rule_ids:
return super(audittrail_objects_proxy, self).exec_workflow(db, uid_orig, model, method, *args, **argv)
for thisrule in rule_pool.browse(cr, uid, rule_ids):
for user in thisrule.user_id:
logged_uids.append(user.id)
if not logged_uids or uid in logged_uids:
if thisrule.log_workflow:
return self.log_fct(db, uid_orig, model, method, fct_src, *args)
return super(audittrail_objects_proxy, self).exec_workflow(db, uid_orig, model, method, *args, **argv)
return True
finally:
cr.close()
audittrail_objects_proxy() audittrail_objects_proxy()

View File

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

View File

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2010-2011 OpenERP s.a. (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
'name': 'OpenID',
'version': '2.0',
'category': 'Authentification',
'description': """Allow users to login through OpenID.""",
'author': 'OpenERP s.a.',
'maintainer': 'OpenERP s.a.',
'website': 'http://www.openerp.com',
'depends': ['base'],
'data': [
'res_users.xml',
],
'js': [
'static/src/js/auth_openid.js',
],
'css': [
'static/src/css/openid.css',
],
'external_dependencies': {
'python' : ['openid'],
},
'installable': True,
'active': False,
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,20 @@
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2011 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import main

View File

@ -0,0 +1,225 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2010-2011 OpenERP s.a. (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import logging
import os
import sys
import urllib
import werkzeug.urls
import werkzeug.exceptions
from openerp.modules.registry import RegistryManager
import web.common.dispatch as openerpweb
from openid import oidutil
from openid.store import memstore
#from openid.store import filestore
from openid.consumer import consumer
from openid.cryptutil import randomString
from openid.extensions import ax, sreg
from .. import utils
_logger = logging.getLogger('web.auth_openid')
oidutil.log = logging.getLogger('openid').debug
class GoogleAppsAwareConsumer(consumer.GenericConsumer):
def complete(self, message, endpoint, return_to):
if message.getOpenIDNamespace() == consumer.OPENID2_NS:
server_url = message.getArg(consumer.OPENID2_NS, 'op_endpoint', consumer.no_default)
if server_url.startswith('https://www.google.com/a/'):
# update fields
for attr in ['claimed_id', 'identity']:
value = message.getArg(consumer.OPENID2_NS, attr)
value = 'https://www.google.com/accounts/o8/user-xrds?uri=%s' % urllib.quote_plus(value)
message.setArg(consumer.OPENID2_NS, attr, value)
# now, resign the message
assoc_handle = message.getArg(consumer.OPENID_NS, 'assoc_handle')
assoc = self.store.getAssociation(server_url, assoc_handle)
message.delArg(consumer.OPENID2_NS, 'sig')
message.delArg(consumer.OPENID2_NS, 'signed')
message = assoc.signMessage(message)
return super(GoogleAppsAwareConsumer, self).complete(message, endpoint, return_to)
class OpenIDController(openerpweb.Controller):
_cp_path = '/auth_openid/login'
_store = memstore.MemoryStore() # TODO use a filestore
_REQUIRED_ATTRIBUTES = ['email']
_OPTIONAL_ATTRIBUTES = 'nickname fullname postcode country language timezone'.split()
def _add_extensions(self, request):
"""Add extensions to the request"""
sreg_request = sreg.SRegRequest(required=self._REQUIRED_ATTRIBUTES,
optional=self._OPTIONAL_ATTRIBUTES)
request.addExtension(sreg_request)
ax_request = ax.FetchRequest()
for alias in self._REQUIRED_ATTRIBUTES:
uri = utils.SREG2AX[alias]
ax_request.add(ax.AttrInfo(uri, required=True, alias=alias))
for alias in self._OPTIONAL_ATTRIBUTES:
uri = utils.SREG2AX[alias]
ax_request.add(ax.AttrInfo(uri, required=False, alias=alias))
request.addExtension(ax_request)
def _get_attributes_from_success_response(self, success_response):
attrs = {}
all_attrs = self._REQUIRED_ATTRIBUTES + self._OPTIONAL_ATTRIBUTES
sreg_resp = sreg.SRegResponse.fromSuccessResponse(success_response)
if sreg_resp:
for attr in all_attrs:
value = sreg_resp.get(attr)
if value is not None:
attrs[attr] = value
ax_resp = ax.FetchResponse.fromSuccessResponse(success_response)
if ax_resp:
for attr in all_attrs:
value = ax_resp.getSingle(utils.SREG2AX[attr])
if value is not None:
attrs[attr] = value
return attrs
def _get_realm(self, req):
return req.httprequest.host_url
@openerpweb.jsonrequest
def verify(self, req, db, url):
redirect_to = werkzeug.urls.Href(req.httprequest.host_url + 'auth_openid/login/process')(session_id=req.session_id)
realm = self._get_realm(req)
session = dict(dbname=db, openid_url=url) # TODO add origin page ?
oidconsumer = consumer.Consumer(session, self._store)
try:
request = oidconsumer.begin(url)
except consumer.DiscoveryFailure, exc:
fetch_error_string = 'Error in discovery: %s' % (str(exc[0]),)
return {'error': fetch_error_string, 'title': 'OpenID Error'}
if request is None:
return {'error': 'No OpenID services found', 'title': 'OpenID Error'}
req.session.openid_session = session
self._add_extensions(request)
if request.shouldSendRedirect():
redirect_url = request.redirectURL(realm, redirect_to)
return {'action': 'redirect', 'value': redirect_url, 'session_id': req.session_id}
else:
form_html = request.htmlMarkup(realm, redirect_to)
return {'action': 'post', 'value': form_html, 'session_id': req.session_id}
@openerpweb.httprequest
def process(self, req, **kw):
session = getattr(req.session, 'openid_session', None)
if not session:
return werkzeug.utils.redirect('/')
oidconsumer = consumer.Consumer(session, self._store, consumer_class=GoogleAppsAwareConsumer)
query = req.httprequest.args
info = oidconsumer.complete(query, req.httprequest.base_url)
display_identifier = info.getDisplayIdentifier()
session['status'] = info.status
user_id = None
if info.status == consumer.SUCCESS:
dbname = session['dbname']
with utils.cursor(dbname) as cr:
registry = RegistryManager.get(dbname)
Modules = registry.get('ir.module.module')
installed = Modules.search_count(cr, 1, ['&', ('name', '=', 'auth_openid'), ('state', '=', 'installed')]) == 1
if installed:
Users = registry.get('res.users')
#openid_url = info.endpoint.canonicalID or display_identifier
openid_url = session['openid_url']
attrs = self._get_attributes_from_success_response(info)
attrs['openid_url'] = openid_url
session['attributes'] = attrs
openid_email = attrs.get('email', False)
domain = []
if openid_email:
domain += ['|', ('openid_email', '=', False)]
domain += [('openid_email', '=', openid_email)]
domain += [
('openid_url', '=', openid_url),
('active', '=', True),
]
ids = Users.search(cr, 1, domain)
assert len(ids) < 2
if ids:
user_id = ids[0]
login = Users.browse(cr, 1, user_id).login
key = randomString(utils.KEY_LENGTH, '0123456789abcdef')
Users.write(cr, 1, [user_id], {'openid_key': key})
# TODO fill empty fields with the ones from sreg/ax
cr.commit()
u = req.session.login(dbname, login, key)
if not user_id:
session['message'] = 'This OpenID identifier is not associated to any active users'
elif info.status == consumer.SETUP_NEEDED:
session['message'] = info.setup_url
elif info.status == consumer.FAILURE and display_identifier:
fmt = "Verification of %s failed: %s"
session['message'] = fmt % (display_identifier, info.message)
else: # FAILURE
# Either we don't understand the code or there is no
# openid_url included with the error. Give a generic
# failure message. The library should supply debug
# information in a log.
session['message'] = 'Verification failed.'
fragment = '#loginerror' if not user_id else ''
return werkzeug.utils.redirect('/web/webclient/home?debug=1'+fragment)
@openerpweb.jsonrequest
def status(self, req):
session = getattr(req.session, 'openid_session', {})
return {'status': session.get('status'), 'message': session.get('message')}

View File

@ -0,0 +1,94 @@
#!/usr/bin/env python
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2010-2011 OpenERP s.a. (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp.osv import osv, fields
import openerp.exceptions
import tools
import utils
class res_users(osv.osv):
_inherit = 'res.users'
# TODO create helper fields for autofill openid_url and openid_email -> http://pad.openerp.com/web-openid
_columns = {
'openid_url': fields.char('OpenID URL', size=1024),
'openid_email': fields.char('OpenID Email', size=256,
help="Used for disambiguation in case of a shared OpenID URL"),
'openid_key': fields.char('OpenID Key', size=utils.KEY_LENGTH,
readonly=True),
}
def _check_openid_url_email(self, cr, uid, ids, context=None):
return all(self.search_count(cr, uid, [('active', '=', True), ('openid_url', '=', u.openid_url), ('openid_email', '=', u.openid_email)]) == 1 \
for u in self.browse(cr, uid, ids, context) if u.active and u.openid_url)
def _check_openid_url_email_msg(self, cr, uid, ids, context):
return "There is already an active user with this OpenID Email for this OpenID URL"
_constraints = [
(_check_openid_url_email, lambda self, *a, **kw: self._check_openid_url_email_msg(*a, **kw), ['active', 'openid_url', 'openid_email']),
]
def copy(self, cr, uid, rid, defaults=None, context=None):
reset_fields = 'openid_url openid_email'.split()
reset_values = dict.fromkeys(reset_fields, False)
if defaults is None:
defaults = reset_values
else:
defaults = dict(reset_values, **defaults)
defaults['openid_key'] = False
return super(res_users, self).copy(cr, uid, rid, defaults, context)
def login(self, db, login, password):
result = super(res_users, self).login(db, login, password)
if result:
return result
else:
with utils.cursor(db) as cr:
cr.execute('UPDATE res_users SET date=now() WHERE login=%s AND openid_key=%s AND active=%s RETURNING id',
(tools.ustr(login), tools.ustr(password), True))
res = cr.fetchone()
cr.commit()
return res[0] if res else False
def check(self, db, uid, passwd):
try:
return super(res_users, self).check(db, uid, passwd)
except openerp.exceptions.AccessDenied:
if not passwd:
raise
with utils.cursor(db) as cr:
cr.execute('''SELECT COUNT(1)
FROM res_users
WHERE id=%s
AND openid_key=%s
AND active=%s''',
(int(uid), passwd, True))
if not cr.fetchone()[0]:
raise
self._uid_cache.setdefault(db, {})[uid] = passwd
res_users()

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_users_form" model="ir.ui.view">
<field name="name">res.users.form</field>
<field name="model">res.users</field>
<field name="type">form</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="arch" type="xml">
<notebook colspan="4" position="inside">
<page string="OpenID">
<field name="openid_url"/>
<field name="openid_email"/>
</page>
</notebook>
</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,64 @@
input[name='openid_url'] {
background: #fff url(../img/login-bg.gif) no-repeat 1px;
padding-left: 20px;
}
.auth_choice {
position: static;
display: none;
}
.openerp .login .oe_forms .oe_box2 td input[name="db"], .oe_forms .oe_box2 td select[name="db"] {
width: 50%;
float: left;
margin-top: 15px;
}
.openerp .login .oe_login_right_pane {
margin-left: 525px;
}
.openerp .login form {
width: 475px;
}
.openid_providers {
padding: 0;
list-style: none;
float: right;
}
.openid_providers li {
display: block;
float: left;
margin: 0 1px 3px 2px;
}
.openid_providers a {
display: block;
width: 24px;
height: 24px;
border: 1px solid #ddd;
background: #fff url(../img/openid_16.png) no-repeat 50%;
text-indent: -9999px;
overflow: hidden;
text-align: left;
}
.openid_providers a.selected {
border-color: #9A0404;
}
.openid_providers a[title="Password"] { background-image: url(../img/textfield_key.png); }
.openid_providers a[title="AOL"] { background-image: url(../img/aol.png); }
.openid_providers a[title="ClaimID"] { background-image: url(../img/claimid.png); }
.openid_providers a[title="Google"] { background-image: url(../img/googlefav.png); }
.openid_providers a[title="Google Apps"] { background-image: url(../img/marketplace.gif); }
.openid_providers a[title="MyOpenID"] { background-image: url(../img/myopenid.png); }
.openid_providers a[title="VeriSign"] { background-image: url(../img/verisign.png); }
.openid_providers a[title="Yahoo!"] { background-image: url(../img/yahoo.png); }
.openid_providers a[title="Launchpad"] { background-image: url(../img/launchpad.png); }
tr.auth_choice.selected {
display: table-row;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 940 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 671 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 520 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,135 @@
openerp.auth_openid = function(instance) {
var QWeb = instance.web.qweb;
QWeb.add_template('/auth_openid/static/src/xml/auth_openid.xml');
instance.web.Login = instance.web.Login.extend({
start: function() {
this._super.apply(this, arguments);
var self = this;
this.$openid_selected_button = $();
this.$openid_selected_input = $();
this.$openid_selected_provider = null;
var openIdProvider = null;
if (this.has_local_storage && this.remember_creditentials) {
openIdProvider = localStorage.getItem('openid-provider');
}
if (openIdProvider) {
$openid_selected_provider = openIdProvider;
this.do_openid_select('a[href="#' + openIdProvider + '"]', openIdProvider, true);
if (this.has_local_storage && this.remember_creditentials) {
this.$openid_selected_input.find('input').val(localStorage.getItem('openid-login'));
}
}
else {
this.do_openid_select('a[data-url=""]', 'login,password', true);
}
this.$element.find('a[data-url]').click(function (event) {
event.preventDefault();
var selected_oidh = $(this).attr('href').substr(1);
if (selected_oidh != self.$openid_selected_provider) {
self.do_openid_select(this, selected_oidh);
}
});
},
do_openid_select: function (button, provider, noautosubmit) {
var self = this;
self.$openid_selected_button.add(self.$openid_selected_input).removeClass('selected');
self.$openid_selected_button = self.$element.find(button).addClass('selected');
var input = _(provider.split(',')).map(function(p) { return 'tr[data-provider="'+p+'"]'; }).join(',');
self.$openid_selected_input = self.$element.find(input).addClass('selected');
self.$openid_selected_input.find('input:first').focus();
self.$openid_selected_provider = (self.$openid_selected_button.attr('href') || '').substr(1);
if (self.has_local_storage && self.remember_creditentials) {
localStorage.setItem('openid-provider', self.$openid_selected_provider);
}
if (!noautosubmit && self.$openid_selected_input.length == 0) {
self.$element.find('form').submit();
}
},
on_login_invalid: function() {
var self = this;
var fragment = jQuery.deparam.fragment();
if (fragment.loginerror != undefined) {
this.rpc('/auth_openid/login/status', {}, function(result) {
if (_.contains(['success', 'failure'], result.status) && result.message) {
self.notification.warn('Invalid OpenID Login', result.message);
}
if (result.status === 'setup_needed' && result.message) {
window.location.replace(result.message);
}
});
}
return this._super();
},
on_submit: function(ev) {
var dataurl = this.$openid_selected_button.attr('data-url');
if(!dataurl) {
// login-password submitted
this._super(ev);
} else {
ev.preventDefault();
var id = this.$openid_selected_input.find('input').val();
if (this.has_local_storage && this.remember_creditentials) {
localStorage.setItem('openid-login', id);
}
var db = this.$element.find("form [name=db]").val();
var openid_url = dataurl.replace('{id}', id);
this.do_openid_login(db, openid_url);
}
},
do_openid_login: function(db, openid_url) {
var self = this;
this.rpc('/auth_openid/login/verify', {'db': db, 'url': openid_url}, function(result) {
if (result.error) {
self.notification.warn(result.title, result.error);
self.on_login_invalid();
return;
}
if (result.session_id) {
self.session.session_id = result.session_id;
self.session.session_save();
}
if (result.action === 'post') {
document.open();
document.write(result.value);
document.close();
} else if (result.action === 'redirect') {
window.location.replace(result.value);
} else {
// XXX display error ?
}
});
},
});
};

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- vim:fdl=1: -->
<templates id="template" xml:space="preserve">
<t t-extend="Login">
<t t-jquery=".oe_box2 tr:first td:nth-child(2)" t-operation="append">
<ul class="openid_providers">
<li><a href="#login,password" title="Password" data-url="" id="btn_password">Password</a></li>
<li><a href="#google" title="Google" data-url="https://www.google.com/accounts/o8/id">Google</a></li>
<li><a href="#googleapps" title="Google Apps" data-url="https://www.google.com/accounts/o8/site-xrds?hd={id}">Google</a></li>
<li><a href="#launchpad" title="Launchpad" data-url="https://launchpad.net/~{id}">Launchpad</a></li>
<li><a href="#openid_url" title="OpenID" data-url="{id}">OpenID</a></li>
</ul>
</t>
</t>
<t t-extend="Login">
<t t-jquery=".oe_box2 tr:first" t-operation="after">
<tr>
<td><label for="googleapps">Google Apps Domain:</label></td>
<td><input type="text" name="googleapps" /></td>
</tr>
<tr>
<td><label for="launchpad">Username:</label></td>
<td><input type="text" name="launchpad" /></td>
</tr>
<tr>
<td><label for="openid_url">OpenID URL:</label></td>
<td><input type="text" name="openid_url" /></td>
</tr>
</t>
</t>
<t t-extend="Login">
<t t-jquery=".oe_box2 tr:has(input[name!='db'])">
//this.addClass('auth_choice'); // XXX for some reason, not all tr tags are HTMLElement's and thus, jQuery decide to not change the class...
this.attr('class', 'auth_choice');
this.each(function() {
var $i = $(this);
$i.attr('data-provider', $i.find('input').attr('name'));
});
</t>
</t>
</templates>

View File

@ -0,0 +1,46 @@
#!/usr/bin/env python
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2010-2011 OpenERP s.a. (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from contextlib import contextmanager
from openerp.modules.registry import RegistryManager
KEY_LENGTH = 16
SREG2AX = { # from http://www.axschema.org/types/#sreg
'nickname': 'http://axschema.org/namePerson/friendly',
'email': 'http://axschema.org/contact/email',
'fullname': 'http://axschema.org/namePerson',
'dob': 'http://axschema.org/birthDate',
'gender': 'http://axschema.org/person/gender',
'postcode': 'http://axschema.org/contact/postalCode/home',
'country': 'http://axschema.org/contact/country/home',
'language': 'http://axschema.org/pref/language',
'timezone': 'http://axschema.org/pref/timezone',
}
@contextmanager
def cursor(db):
cr = RegistryManager.get(db).db.cursor()
try:
yield cr
finally:
cr.close()

View File

@ -22,8 +22,8 @@
<button colspan="1" icon="gtk-close" special="cancel" string="_Close" invisible="not context.get('menu',False)"/> <button colspan="1" icon="gtk-close" special="cancel" string="_Close" invisible="not context.get('menu',False)"/>
<button name="action_next" icon="gtk-go-forward" type="object" string="Configure" colspan="1" invisible="context.get('menu',False)"/> <button name="action_next" icon="gtk-go-forward" type="object" string="Configure" colspan="1" invisible="context.get('menu',False)"/>
</xpath> </xpath>
<xpath expr="//button[@string='Skip']" position="replace"> <xpath expr="//button[@string='Cancel']" position="replace">
<button name="action_skip" icon="gtk-jump-to" special="cancel" type="object" string="Skip" colspan="1" invisible="context.get('menu',False)"/> <button name="action_skip" icon="gtk-jump-to" special="cancel" type="object" string="Cancel" colspan="1" invisible="context.get('menu',False)"/>
</xpath> </xpath>
<xpath expr="//separator[@string=&quot;vsep&quot;]" position="attributes"> <xpath expr="//separator[@string=&quot;vsep&quot;]" position="attributes">
<attribute name="string"/> <attribute name="string"/>

View File

@ -442,19 +442,19 @@ class specify_partner_terminology(osv.osv_memory):
_name = 'base.setup.terminology' _name = 'base.setup.terminology'
_inherit = 'res.config' _inherit = 'res.config'
_columns = { _columns = {
'partner': fields.selection([('Customer','Customer'), 'partner': fields.selection([
('Client','Client'), ('Customer','Customer'),
('Member','Member'), ('Client','Client'),
('Patient','Patient'), ('Member','Member'),
('Partner','Partner'), ('Patient','Patient'),
('Donor','Donor'), ('Partner','Partner'),
('Guest','Guest'), ('Donor','Donor'),
('Tenant','Tenant') ('Guest','Guest'),
], ('Tenant','Tenant')
'Choose how to call a Customer', required=True ), ], 'How do you call a Customer', required=True ),
} }
_defaults={ _defaults={
'partner' :'Partner', 'partner' :'Customer',
} }
def make_translations(self, cr, uid, ids, name, type, src, value, res_id=0, context=None): def make_translations(self, cr, uid, ids, name, type, src, value, res_id=0, context=None):

View File

@ -23,12 +23,6 @@
</record> </record>
<menuitem name="Add More Features" action="action_start_configurator" id="menu_view_base_module_configuration" parent="base.menu_config" type="server" icon="STOCK_EXECUTE" sequence="100"/> <menuitem name="Add More Features" action="action_start_configurator" id="menu_view_base_module_configuration" parent="base.menu_config" type="server" icon="STOCK_EXECUTE" sequence="100"/>
<record id="ir_ui_view_sc_configuration" model="ir.ui.view_sc">
<field name="name">Add More Features</field>
<field name="resource">ir.ui.menu</field>
<field name="user_id" ref="base.user_root"/>
<field name="res_id" ref="menu_view_base_module_configuration"/>
</record>
<!-- Import or create customers configartion view --> <!-- Import or create customers configartion view -->
<record id="action_import_create_installer" model="ir.actions.act_window"> <record id="action_import_create_installer" model="ir.actions.act_window">
@ -54,13 +48,13 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<data> <data>
<form position="attributes"> <form position="attributes">
<attribute name="string">Define default users preferences</attribute> <attribute name="string">Define Users's Preferences</attribute>
</form> </form>
<xpath expr="//separator[@string=&quot;title&quot;]" position="attributes"> <xpath expr="//separator[@string=&quot;title&quot;]" position="attributes">
<attribute name="string">Define default users preferences</attribute> <attribute name="string">Define Users's Preferences</attribute>
</xpath> </xpath>
<xpath expr="//label[@string='description']" position="attributes"> <xpath expr="//label[@string='description']" position="attributes">
<attribute name="string">Specify default values. This will set the default values for each new user, each user is free to change his own preferences.</attribute> <attribute name="string">This will set the default preferences for all users. After this, each user will be able to update his own preferences.</attribute>
</xpath> </xpath>
<xpath expr="//separator[@string=&quot;vsep&quot;]" position="attributes"> <xpath expr="//separator[@string=&quot;vsep&quot;]" position="attributes">
<attribute name="string"/> <attribute name="string"/>
@ -89,6 +83,7 @@
<record id="config_action_user_preferences_config_form" model="ir.actions.todo"> <record id="config_action_user_preferences_config_form" model="ir.actions.todo">
<field name="action_id" ref="action_user_preferences_config_form"/> <field name="action_id" ref="action_user_preferences_config_form"/>
<field name="category_id" ref="base.category_administration_config"/> <field name="category_id" ref="base.category_administration_config"/>
<field name="type">once</field>
</record> </record>
<!-- Create Additional Users --> <!-- Create Additional Users -->
@ -97,14 +92,13 @@
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">res.users</field> <field name="res_model">res.users</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">form</field> <field name="view_mode">tree,form</field>
<field name="view_id" ref="base.view_users_form"/> <field name="view_id" eval="False"/>
</record> </record>
<record id="config_wizard_action_config_user_form" model="ir.actions.todo"> <record id="config_wizard_action_config_user_form" model="ir.actions.todo">
<field name="action_id" ref="action_config_access_other_user"/> <field name="action_id" ref="action_config_access_other_user"/>
<field name="category_id" ref="base.category_administration_config"/> <field name="category_id" ref="base.category_administration_config"/>
<field name="sequence">1000</field> <field name="sequence">1000</field>
<field name="state">done</field>
</record> </record>
@ -123,7 +117,7 @@
<attribute name="string">Specify Your Terminology</attribute> <attribute name="string">Specify Your Terminology</attribute>
</xpath> </xpath>
<xpath expr="//label[@string='description']" position="attributes"> <xpath expr="//label[@string='description']" position="attributes">
<attribute name="string">Based on the industry needs you can use this wizard to change the terminologies for Partners. </attribute> <attribute name="string">You can use this wizard to change the terminologies for customers in the whole application.</attribute>
</xpath> </xpath>
<xpath expr="//separator[@string=&quot;vsep&quot;]" position="attributes"> <xpath expr="//separator[@string=&quot;vsep&quot;]" position="attributes">
<attribute name="string"/> <attribute name="string"/>
@ -149,6 +143,7 @@
<record id="config_action_partner_terminology_config_form" model="ir.actions.todo"> <record id="config_action_partner_terminology_config_form" model="ir.actions.todo">
<field name="action_id" ref="action_partner_terminology_config_form"/> <field name="action_id" ref="action_partner_terminology_config_form"/>
<field name="category_id" ref="base.category_administration_config"/> <field name="category_id" ref="base.category_administration_config"/>
<field name="type">once</field>
</record> </record>
<!-- Company config --> <!-- Company config -->
@ -166,21 +161,6 @@
<field name="category_id" ref="base.category_administration_config"/> <field name="category_id" ref="base.category_administration_config"/>
<field name="sequence">1</field> <field name="sequence">1</field>
</record> </record>
<!-- register Upload Logo configuration wizard -->
<record id="base_setup_company_logo_action" model="ir.actions.act_window">
<field name="name">Upload Your Company Logo</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.company</field>
<field name="view_id" ref="base.view_company_form"/>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="context">{'res_id': user.company_id.id}</field>
</record>
<record id="config_wizard_action_res_company_logo" model="ir.actions.todo">
<field name="action_id" ref="base_setup_company_logo_action"/>
<field name="category_id" ref="base.category_administration_config"/>
<field name="state">done</field>
</record>
</data> </data>
</openerp> </openerp>

View File

@ -139,13 +139,11 @@
<form string="Administration Dashboard"> <form string="Administration Dashboard">
<hpaned position="100"> <hpaned position="100">
<child1> <child1>
<action width="510" name="%(action_user_connection_tree)d" string="User Connections" /> <action name="%(board_config_overview)d" string="Configuration Overview"/>
<action width="510" name="%(action_latest_activities_tree)d" string="Latest Activities" /> <action name="%(action_latest_activities_tree)d" string="Latest Activities" />
</child1> </child1>
<child2> <child2>
<action name="%(board_config_overview)d" string="Configuration Overview"/> <action name="%(action_user_connection_tree)d" string="Users" />
<action name="%(board_monthly_res_log_report_action)d" string="Monthly Activity per Document"/>
<action name="%(board_weekly_res_log_report_action)d" string="Weekly Global Activity" />
</child2> </child2>
</hpaned> </hpaned>
</form> </form>

View File

@ -71,6 +71,7 @@ class crm_case_stage(osv.osv):
'on_change': fields.boolean('Change Probability Automatically', help="Setting this stage will change the probability automatically on the opportunity."), 'on_change': fields.boolean('Change Probability Automatically', help="Setting this stage will change the probability automatically on the opportunity."),
'requirements': fields.text('Requirements'), 'requirements': fields.text('Requirements'),
'section_ids':fields.many2many('crm.case.section', 'section_stage_rel', 'stage_id', 'section_id', 'Sections'), 'section_ids':fields.many2many('crm.case.section', 'section_stage_rel', 'stage_id', 'section_id', 'Sections'),
'case_default': fields.boolean('Common to All Teams', help="If you check this field, this stage will be proposed by default on each sales team. It will not assign this stage to existing teams."),
} }
_defaults = { _defaults = {
@ -106,10 +107,14 @@ class crm_case_section(osv.osv):
'working_hours': fields.float('Working Hours', digits=(16,2 )), 'working_hours': fields.float('Working Hours', digits=(16,2 )),
'stage_ids': fields.many2many('crm.case.stage', 'section_stage_rel', 'section_id', 'stage_id', 'Stages'), 'stage_ids': fields.many2many('crm.case.stage', 'section_stage_rel', 'section_id', 'stage_id', 'Stages'),
} }
def _get_stage_common(self, cr, uid, context):
ids = self.pool.get('crm.case.stage').search(cr, uid, [('case_default','=',1)], context=context)
return ids
_defaults = { _defaults = {
'active': lambda *a: 1, 'active': lambda *a: 1,
'allow_unlink': lambda *a: 1, 'allow_unlink': lambda *a: 1,
'stage_ids': _get_stage_common
} }
_sql_constraints = [ _sql_constraints = [

View File

@ -24,6 +24,7 @@
<field name="res_model">crm.case.stage</field> <field name="res_model">crm.case.stage</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="context">{'default_case_default': 1}</field>
<field name="view_id" ref="crm.crm_case_stage_tree"/> <field name="view_id" ref="crm.crm_case_stage_tree"/>
<field name="help">Stages will allow salesmen to easily track how a specific opportunity is positioned in the sales cycle. In order to efficiently manage your sales pipeline, it's important to define conditions to go to the next step. Example: to set an opportunity as 'Qualified', you must set the "Expected Revenue" and the "Expected Closing Date." You should also have a look at the tooltip of the field "Change Probability Automatically".</field> <field name="help">Stages will allow salesmen to easily track how a specific opportunity is positioned in the sales cycle. In order to efficiently manage your sales pipeline, it's important to define conditions to go to the next step. Example: to set an opportunity as 'Qualified', you must set the "Expected Revenue" and the "Expected Closing Date." You should also have a look at the tooltip of the field "Change Probability Automatically".</field>
</record> </record>
@ -32,7 +33,7 @@
<field name="action_id" ref="crm_case_stage_form_installer"/> <field name="action_id" ref="crm_case_stage_form_installer"/>
<field name="category_id" ref="base.category_sales_management_config"/> <field name="category_id" ref="base.category_sales_management_config"/>
<field name="groups_id" eval="[(6, 0, [ref('base.group_extended')])]" /> <field name="groups_id" eval="[(6, 0, [ref('base.group_extended')])]" />
<field name="sequence">10</field> <field name="sequence">9</field>
</record> </record>
</data> </data>
</openerp> </openerp>

View File

@ -5,31 +5,37 @@
<!-- Crm stages --> <!-- Crm stages -->
<record model="crm.case.stage" id="stage_lead6"> <record model="crm.case.stage" id="stage_lead6">
<field name="name">Lost</field> <field name="name">Lost</field>
<field eval="1" name="case_default"/>
<field eval="'0'" name="probability"/> <field eval="'0'" name="probability"/>
<field eval="'0'" name="sequence"/> <field eval="'0'" name="sequence"/>
</record> </record>
<record model="crm.case.stage" id="stage_lead1"> <record model="crm.case.stage" id="stage_lead1">
<field name="name">New</field> <field name="name">New</field>
<field eval="1" name="case_default"/>
<field eval="'10'" name="probability"/> <field eval="'10'" name="probability"/>
<field eval="'11'" name="sequence"/> <field eval="'11'" name="sequence"/>
</record> </record>
<record model="crm.case.stage" id="stage_lead2"> <record model="crm.case.stage" id="stage_lead2">
<field name="name">Qualification</field> <field name="name">Qualification</field>
<field eval="1" name="case_default"/>
<field eval="'20'" name="probability"/> <field eval="'20'" name="probability"/>
<field eval="'12'" name="sequence"/> <field eval="'12'" name="sequence"/>
</record> </record>
<record model="crm.case.stage" id="stage_lead3"> <record model="crm.case.stage" id="stage_lead3">
<field name="name">Proposition</field> <field name="name">Proposition</field>
<field eval="1" name="case_default"/>
<field eval="'40'" name="probability"/> <field eval="'40'" name="probability"/>
<field eval="'13'" name="sequence"/> <field eval="'13'" name="sequence"/>
</record> </record>
<record model="crm.case.stage" id="stage_lead4"> <record model="crm.case.stage" id="stage_lead4">
<field name="name">Negotiation</field> <field name="name">Negotiation</field>
<field eval="1" name="case_default"/>
<field eval="'60'" name="probability"/> <field eval="'60'" name="probability"/>
<field eval="'14'" name="sequence"/> <field eval="'14'" name="sequence"/>
</record> </record>
<record model="crm.case.stage" id="stage_lead5"> <record model="crm.case.stage" id="stage_lead5">
<field name="name">Won</field> <field name="name">Won</field>
<field eval="1" name="case_default"/>
<field eval="'100'" name="probability"/> <field eval="'100'" name="probability"/>
<field eval="'15'" name="sequence"/> <field eval="'15'" name="sequence"/>
<field eval="1" name="on_change"/> <field eval="1" name="on_change"/>

View File

@ -64,11 +64,11 @@
<form string="Sales Team"> <form string="Sales Team">
<group col="6" colspan="4"> <group col="6" colspan="4">
<field name="name" select="1" colspan="2"/> <field name="name" select="1" colspan="2"/>
<field name="parent_id" select="2" widget="selection"/> <field name="parent_id" select="2"/>
<field name="code" select="1"/> <field name="code" select="1"/>
<newline/> <newline/>
<field name="user_id" select="2"/> <field name="user_id" select="2"/>
<field name="resource_calendar_id" select="2" widget="selection"/> <field name="resource_calendar_id" select="2"/>
<field name="active" select="2"/> <field name="active" select="2"/>
</group> </group>
<notebook colspan="4"> <notebook colspan="4">
@ -154,12 +154,12 @@
<field name="priority" eval="1"/> <field name="priority" eval="1"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Stage"> <form string="Stage">
<separator string="Stage Definition" colspan="4"/> <group colspan="4" col="6">
<field name="name" select="1"/> <field name="name" select="1"/>
<field name="sequence"/> <field name="probability"/>
<field name="probability"/>
<group colspan="4" col="2" >
<field name="on_change"/> <field name="on_change"/>
<field name="case_default"/>
<field name="sequence"/>
</group> </group>
<separator string="Requirements" colspan="4"/> <separator string="Requirements" colspan="4"/>
<field name="requirements" nolabel="1" colspan="4"/> <field name="requirements" nolabel="1" colspan="4"/>
@ -230,7 +230,7 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Campaign"> <form string="Campaign">
<field name="name" select="1"/> <field name="name" select="1"/>
<field name="section_id" select="1" widget="selection"/> <field name="section_id"/>
</form> </form>
</field> </field>
</record> </record>
@ -382,7 +382,6 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<group name="default_filters" position="inside"> <group name="default_filters" position="inside">
<field name="context_section_id" completion="1" <field name="context_section_id" completion="1"
widget="selection"
readonly="0"/> readonly="0"/>
</group> </group>
</field> </field>
@ -396,7 +395,7 @@
<field eval="18" name="priority"/> <field eval="18" name="priority"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<group name="default_filters" position="inside"> <group name="default_filters" position="inside">
<field name="context_section_id" completion="1" widget="selection"/> <field name="context_section_id" completion="1"/>
</group> </group>
</field> </field>
</record> </record>

View File

@ -61,16 +61,16 @@ class delivery_carrier(osv.osv):
return res return res
_columns = { _columns = {
'name': fields.char('Carrier', size=64, required=True), 'name': fields.char('Delivery Method', size=64, required=True),
'partner_id': fields.many2one('res.partner', 'Carrier Partner', required=True), 'partner_id': fields.many2one('res.partner', 'Transport Company', required=True, help="The partner that is doing the delivery service."),
'product_id': fields.many2one('product.product', 'Delivery Product', required=True), 'product_id': fields.many2one('product.product', 'Delivery Product', required=True),
'grids_id': fields.one2many('delivery.grid', 'carrier_id', 'Delivery Grids'), 'grids_id': fields.one2many('delivery.grid', 'carrier_id', 'Delivery Grids'),
'price' : fields.function(get_price, string='Price'), 'price' : fields.function(get_price, string='Price'),
'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the delivery carrier without removing it."), 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the delivery carrier without removing it."),
'normal_price': fields.float('Normal Price'), 'normal_price': fields.float('Normal Price', help="Keep empty if the pricing depends on the advanced pricing per destination"),
'free_if_more_than': fields.boolean('Free If More Than'), 'free_if_more_than': fields.boolean('Free If More Than', help="If the order is more expensive than a certain amount, the customer can benefit from a free shipping"),
'amount': fields.float('Amount'), 'amount': fields.float('Amount', help="Amount of the order to benefit from a free shipping, expressed in the company currency"),
'use_detailed_pricelist': fields.boolean('Use Detailed Pricelist'), 'use_detailed_pricelist': fields.boolean('Advanced Pricing per Destination', help="Check this box if you want to manage delivery prices that depends on the destination, the weight, the total of the order, etc."),
'pricelist_ids': fields.one2many('delivery.grid', 'carrier_id', 'Advanced Pricing'), 'pricelist_ids': fields.one2many('delivery.grid', 'carrier_id', 'Advanced Pricing'),
} }
@ -103,25 +103,32 @@ class delivery_carrier(osv.osv):
grid_line_pool = self.pool.get('delivery.grid.line') grid_line_pool = self.pool.get('delivery.grid.line')
grid_pool = self.pool.get('delivery.grid') grid_pool = self.pool.get('delivery.grid')
for record in self.browse(cr, uid, ids, context=context): for record in self.browse(cr, uid, ids, context=context):
grid_id = grid_pool.search(cr, uid, [('carrier_id', '=', record.id)], context=context) grid_id = grid_pool.search(cr, uid, [('carrier_id', '=', record.id),('sequence','=',9999)], context=context)
if grid_id and not (record.normal_price or record.free_if_more_than):
grid_pool.unlink(cr, uid, grid_id, context=context)
if not (record.normal_price or record.free_if_more_than):
continue
if not grid_id: if not grid_id:
record_data = { record_data = {
'name': vals.get('name', False), 'name': record.name,
'carrier_id': record.id, 'carrier_id': record.id,
'seqeunce': 10, 'sequence': 9999,
} }
new_grid_id = grid_pool.create(cr, uid, record_data, context=context) new_grid_id = grid_pool.create(cr, uid, record_data, context=context)
grid_id = [new_grid_id] grid_id = [new_grid_id]
#delete all existing grid lines lines = grid_line_pool.search(cr, uid, [('grid_id','in',grid_id)], context=context)
grid_lines = [line.id for line in grid_pool.browse(cr, uid, grid_id[0]).line_ids if line.type == 'price'] if lines:
grid_line_pool.unlink(cr, uid, grid_lines, context=context) grid_line_pool.unlink(cr, uid, lines, context=context)
#create the grid lines #create the grid lines
if record.free_if_more_than: if record.free_if_more_than:
data = { data = {
'grid_id': grid_id and grid_id[0], 'grid_id': grid_id and grid_id[0],
'name': _('Free if more than %d') % record.amount, 'name': _('Free if more than %.2f') % record.amount,
'type': 'price', 'type': 'price',
'operator': '>=', 'operator': '>=',
'max_value': record.amount, 'max_value': record.amount,
@ -217,7 +224,7 @@ class delivery_grid_line(osv.osv):
_description = "Delivery Grid Line" _description = "Delivery Grid Line"
_columns = { _columns = {
'name': fields.char('Name', size=32, required=True), 'name': fields.char('Name', size=32, required=True),
'grid_id': fields.many2one('delivery.grid', 'Grid',required=True), 'grid_id': fields.many2one('delivery.grid', 'Grid',required=True, ondelete='cascade'),
'type': fields.selection([('weight','Weight'),('volume','Volume'),\ 'type': fields.selection([('weight','Weight'),('volume','Volume'),\
('wv','Weight * Volume'), ('price','Price')],\ ('wv','Weight * Volume'), ('price','Price')],\
'Variable', required=True), 'Variable', required=True),
@ -242,21 +249,19 @@ class define_delivery_steps(osv.osv_memory):
_name = 'delivery.define.delivery.steps.wizard' _name = 'delivery.define.delivery.steps.wizard'
_columns = { _columns = {
'picking_policy' : fields.selection([('direct', 'Partial Delivery'), ('one', 'Complete Delivery'),], 'picking_policy' : fields.selection([('direct', 'Deliver each product when available'), ('one', 'Deliver all products at once')], 'Picking Policy'),
'Picking Policy', required=True), }
_defaults = {
'picking_policy': lambda s,c,u,ctx: s.pool.get('sale.order').default_get(c,u,['picking_policy'],context=ctx)['picking_policy']
} }
def apply_cb(self, cr, uid, ids, context=None): def apply_cb(self, cr, uid, ids, context=None):
ir_values_obj = self.pool.get('ir.values') ir_values_obj = self.pool.get('ir.values')
wizard = self.browse(cr, uid, ids, context=context)[0] wizard = self.browse(cr, uid, ids, context=context)[0]
ir_values_obj.set(cr, uid, 'default', False, 'picking_policy', ['sale.order'], wizard.picking_policy) ir_values_obj.set(cr, uid, 'default', False, 'picking_policy', ['sale.order'], wizard.picking_policy)
return {'type' : 'ir.actions.act_window_close'} return {'type' : 'ir.actions.act_window_close'}
define_delivery_steps() define_delivery_steps()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -9,6 +9,7 @@
<field name="type">tree</field> <field name="type">tree</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="Carrier"> <tree string="Carrier">
<field name="name"/>
<field name="partner_id"/> <field name="partner_id"/>
<field name="price" invisible="'order_id' not in context"/> <field name="price" invisible="'order_id' not in context"/>
</tree> </tree>
@ -21,15 +22,16 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Carrier"> <form string="Carrier">
<group colspan="4" col="4" name="general"> <group colspan="4" col="4" name="general">
<field name="name" select="1"/>
<field name="partner_id" select="1"/> <field name="partner_id" select="1"/>
<field name="product_id" select="1"/> <field name="product_id" select="1"/>
<field name="active" select="1"/> <field name="active" select="1"/>
<separator string="Pricing Information" colspan="6"/> <separator string="Pricing Information" colspan="4"/>
<group colspan="2" col="4"> <group colspan="4" col="4">
<field name="normal_price" select="1" colspan="4"/> <field name="normal_price"/>
<newline/> <newline/>
<field name="free_if_more_than"/> <field name="free_if_more_than"/>
<field name="amount" attrs="{'invisible':[('free_if_more_than','=',False)]}"/> <field name="amount" attrs="{'required':[('free_if_more_than','&lt;&gt;',False)], 'invisible':[('free_if_more_than','=',False)]}"/>
</group> </group>
<newline/> <newline/>
<field name="use_detailed_pricelist"/> <field name="use_detailed_pricelist"/>
@ -37,7 +39,6 @@
<field name="pricelist_ids" nolabel="1" attrs="{'invisible':[('use_detailed_pricelist','=',False)]}" mode="tree,form"> <field name="pricelist_ids" nolabel="1" attrs="{'invisible':[('use_detailed_pricelist','=',False)]}" mode="tree,form">
<tree string="Delivery grids"> <tree string="Delivery grids">
<field name="sequence"/> <field name="sequence"/>
<field name="carrier_id"/>
<field name="name"/> <field name="name"/>
</tree> </tree>
<form string="Delivery grids"> <form string="Delivery grids">
@ -76,8 +77,8 @@
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">delivery.carrier</field> <field name="res_model">delivery.carrier</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">form,tree</field> <field name="view_mode">tree,form</field>
<field name="help">Define the delivery methods you are using and their pricing in order to reinvoice the delivery costs when you are doing invoicing based on delivery orders</field> <field name="help">Define your delivery methods and their pricing. The delivery costs can be added on the sale order form or in the invoice, based on the delivery orders.</field>
</record> </record>
<menuitem action="action_delivery_carrier_form" id="menu_action_delivery_carrier_form" parent="menu_delivery"/> <menuitem action="action_delivery_carrier_form" id="menu_action_delivery_carrier_form" parent="menu_delivery"/>
@ -325,7 +326,7 @@
<field name="inherit_id" ref="stock.view_picking_out_form"/> <field name="inherit_id" ref="stock.view_picking_out_form"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="/form/notebook/page[@string='Products']/group/button[@string='Create Invoice']" position="after"> <xpath expr="/form/notebook/page[@string='Products']/group/button[@string='Create Invoice']" position="after">
<button name="%(report_shipping)d" string="Delivery Order" states="done,assigned" type="action" icon="gtk-print"/> <button name="%(report_shipping)d" string="Delivery Order" states="done" type="action" icon="gtk-print"/>
</xpath> </xpath>
</field> </field>
</record> </record>
@ -341,9 +342,10 @@
<field name="model">delivery.define.delivery.steps.wizard</field> <field name="model">delivery.define.delivery.steps.wizard</field>
<field name="type">form</field> <field name="type">form</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Define Delivery Steps"> <form string="Setup Your Picking Policy">
<label string="" /> <separator string="Choose Your Default Picking Policy" colspan="4"/>
<field name="picking_policy" /> <field name="picking_policy" />
<separator string="" colspan="4"/>
<group colspan="4"> <group colspan="4">
<button string="Cancel" icon="gtk-cancel" special="cancel" /> <button string="Cancel" icon="gtk-cancel" special="cancel" />
<button string="Apply" icon="gtk-apply" name="apply_cb" type="object" /> <button string="Apply" icon="gtk-apply" name="apply_cb" type="object" />
@ -353,7 +355,7 @@
</record> </record>
<record model="ir.actions.act_window" id="action_define_delivery_steps"> <record model="ir.actions.act_window" id="action_define_delivery_steps">
<field name="name">Setup Your Delivery Steps</field> <field name="name">Setup Your Picking Policy</field>
<field name="res_model">delivery.define.delivery.steps.wizard</field> <field name="res_model">delivery.define.delivery.steps.wizard</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">form</field> <field name="view_mode">form</field>
@ -362,6 +364,8 @@
<record model="ir.actions.todo" id="todo_define_delivery_steps"> <record model="ir.actions.todo" id="todo_define_delivery_steps">
<field name="action_id" ref="action_define_delivery_steps" /> <field name="action_id" ref="action_define_delivery_steps" />
<field name="category_id" ref="base.category_sales_management_config"/>
<field name="type">once</field>
</record> </record>
</data> </data>
</openerp> </openerp>

View File

@ -22,26 +22,16 @@
from osv import osv, fields from osv import osv, fields
class document_configuration(osv.osv_memory): class document_configuration(osv.osv_memory):
_name='document.configuration' _name='document.configuration'
_description = 'Auto Directory Configuration' _description = 'Directory Configuration'
_inherit = 'res.config' _inherit = 'res.config'
_columns = {
'sale_order' : fields.boolean('Sale Orders', help="Create virtual folders for Sale Orders and Quotations. One virtual folder will appear for each, in which the latest printed PDF document can be downloaded at any time, and where you can manage (view, add, delete) other attachments."),
'product' : fields.boolean('Products', help="Create virtual folders for Products. One virtual folder will appear for each product, where you can manage (view, add, delete) the files attached to the product"),
'project': fields.boolean('Projects', help="Create virtual folders for Projects. One virtual folder will appear for each project, where you can manage (view, add, delete) the files attached to the project"),
}
def execute(self, cr, uid, ids, context=None): def execute(self, cr, uid, ids, context=None):
conf_id = ids and ids[0] or False
conf = self.browse(cr, uid, conf_id, context=context)
dir_pool = self.pool.get('document.directory') dir_pool = self.pool.get('document.directory')
data_pool = self.pool.get('ir.model.data') data_pool = self.pool.get('ir.model.data')
model_pool = self.pool.get('ir.model') model_pool = self.pool.get('ir.model')
content_pool = self.pool.get('document.directory.content') content_pool = self.pool.get('document.directory.content')
if conf.sale_order and self.pool.get('sale.order'): if self.pool.get('sale.order'):
# Sale order # Sale order
dir_data_id = data_pool._get_id(cr, uid, 'document', 'dir_sale_order_all') dir_data_id = data_pool._get_id(cr, uid, 'document', 'dir_sale_order_all')
if dir_data_id: if dir_data_id:
@ -90,7 +80,7 @@ class document_configuration(osv.osv_memory):
}) })
if conf.product and self.pool.get('product.product'): if self.pool.get('product.product'):
# Product # Product
dir_data_id = data_pool._get_id(cr, uid, 'document', 'dir_product') dir_data_id = data_pool._get_id(cr, uid, 'document', 'dir_product')
if dir_data_id: if dir_data_id:
@ -104,7 +94,7 @@ class document_configuration(osv.osv_memory):
'ressource_type_id': mid[0], 'ressource_type_id': mid[0],
}) })
if conf.project and self.pool.get('account.analytic.account'): if self.pool.get('account.analytic.account'):
# Project # Project
dir_data_id = data_pool._get_id(cr, uid, 'document', 'dir_project') dir_data_id = data_pool._get_id(cr, uid, 'document', 'dir_project')
if dir_data_id: if dir_data_id:

View File

@ -1,31 +1,27 @@
<openerp> <openerp>
<data> <data>
<record id="view_auto_config_form" model="ir.ui.view"> <record id="view_auto_config_form" model="ir.ui.view">
<field name="name">Auto Configure Directory</field> <field name="name">Auto Configure Directories</field>
<field name="model">document.configuration</field> <field name="model">document.configuration</field>
<field name="type">form</field> <field name="type">form</field>
<field name="inherit_id" ref="base.res_config_view_base"/> <field name="inherit_id" ref="base.res_config_view_base"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<data> <data>
<form position="attributes"> <form position="attributes">
<attribute name="string">Knowledge Application Configuration</attribute> <attribute name="string">Knowledge Application Configuration</attribute>
</form> </form>
<separator string="title" position="attributes"> <separator string="title" position="attributes">
<attribute name="string">Virtual Document Folders</attribute> <attribute name="string">Configure Direcories</attribute>
</separator> </separator>
<xpath expr="//label[@string='description']" position="attributes"> <xpath expr="//label[@string='description']" position="attributes">
<attribute name="string">OpenERP's Document Management System supports mapping virtual folders with documents. The virtual folder of a document can be used to manage the files attached to the document, or to print and download any document report. A few common virtual folders can be created for you automatically from this screen.</attribute> <attribute name="string">OpenERP's Document Management System supports mapping virtual folders with documents. The virtual folder of a document can be used to manage the files attached to the document, or to print and download any report. This tool will create directories automatically according to modules installed.</attribute>
</xpath> </xpath>
<xpath expr="//separator[@string=&quot;vsep&quot;]" position="attributes"> <xpath expr="//separator[@string=&quot;vsep&quot;]" position="attributes">
<attribute name="rowspan">12</attribute> <attribute name="rowspan">12</attribute>
<attribute name="string"/> <attribute name="string"/>
</xpath> </xpath>
<group string="res_config_contents" position="replace"> <group string="res_config_contents" position="replace">
<group col="6" colspan="4"> <label align="0.0" string="When executing this wizard, it will configure your directories automatically according to modules installed."/>
<field name="sale_order"/>
<field name="product"/>
<field name="project"/>
</group>
</group> </group>
<xpath expr="//button[@name='action_skip']" position="replace"/> <xpath expr="//button[@name='action_skip']" position="replace"/>
</data> </data>
@ -33,7 +29,7 @@
</record> </record>
<record id="action_config_auto_directory" model="ir.actions.act_window"> <record id="action_config_auto_directory" model="ir.actions.act_window">
<field name="name">Document Management System: Configure Virtual Folders</field> <field name="name">Configure Directories</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">document.configuration</field> <field name="res_model">document.configuration</field>
<field name="view_id" ref="view_auto_config_form"/> <field name="view_id" ref="view_auto_config_form"/>
@ -50,7 +46,6 @@
<record model="ir.actions.todo" id="config_auto_directory"> <record model="ir.actions.todo" id="config_auto_directory">
<field name="action_id" ref="action_config_auto_directory"/> <field name="action_id" ref="action_config_auto_directory"/>
<field name="category_id" ref="category_knowledge_mgmt_config"/> <field name="category_id" ref="category_knowledge_mgmt_config"/>
<field name="groups_id" eval="[(6,0,[ref('base.group_extended')])]"/>
<field name="type">automatic</field> <field name="type">automatic</field>
</record> </record>
</data> </data>

View File

@ -21,9 +21,6 @@
<attribute name="rowspan">15</attribute> <attribute name="rowspan">15</attribute>
<attribute name="string"/> <attribute name="string"/>
</xpath> </xpath>
<xpath expr="//button[@name='action_next']" position="attributes">
<attribute name="string">Configure</attribute>
</xpath>
<group string="res_config_contents" position="replace"> <group string="res_config_contents" position="replace">
<field name="meeting"/> <field name="meeting"/>
<field name="opportunity"/> <field name="opportunity"/>

View File

@ -60,10 +60,9 @@ class fetchmail_server(osv.osv):
'date': fields.datetime('Last Fetch Date', readonly=True), 'date': fields.datetime('Last Fetch Date', readonly=True),
'user' : fields.char('Username', size=256, required=True, readonly=True, states={'draft':[('readonly', False)]}), 'user' : fields.char('Username', size=256, required=True, readonly=True, states={'draft':[('readonly', False)]}),
'password' : fields.char('Password', size=1024, required=True, readonly=True, states={'draft':[('readonly', False)]}), 'password' : fields.char('Password', size=1024, required=True, readonly=True, states={'draft':[('readonly', False)]}),
'note': fields.text('Description'),
'action_id':fields.many2one('ir.actions.server', 'Server Action', help="Optional custom server action to trigger for each incoming mail, " 'action_id':fields.many2one('ir.actions.server', 'Server Action', help="Optional custom server action to trigger for each incoming mail, "
"on the record that was created or updated by this mail"), "on the record that was created or updated by this mail"),
'object_id': fields.many2one('ir.model', "Target document type", required=True, help="Process each incoming mail as part of a conversation " 'object_id': fields.many2one('ir.model', "Create a New Record", required=True, help="Process each incoming mail as part of a conversation "
"corresponding to this document type. This will create " "corresponding to this document type. This will create "
"new documents for new conversations, or attach follow-up " "new documents for new conversations, or attach follow-up "
"emails to the existing conversations (documents)."), "emails to the existing conversations (documents)."),
@ -73,6 +72,7 @@ class fetchmail_server(osv.osv):
} }
_defaults = { _defaults = {
'state': "draft", 'state': "draft",
'type': "pop",
'active': True, 'active': True,
'priority': 5, 'priority': 5,
'attach': True, 'attach': True,

View File

@ -1,18 +1,19 @@
<openerp> <openerp>
<data> <data>
<record model="ir.actions.act_window" id="view_email_server_form_installer"> <record model="ir.actions.act_window" id="view_email_server_form_installer">
<field name="name">Setup Incoming Mail Server (fetchmail)</field> <field name="name">Setup Incoming Mail Servers</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">fetchmail.server</field> <field name="res_model">fetchmail.server</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="view_id" ref="fetchmail.view_email_server_form"/> <field name="view_id" eval="False"/>
</record> <field name="help">You can connect OpenERP to your incoming mail server so that documents (leads, tasks, issues, etc) are synchronized automatically with your incoming emails.</field>
</record>
<record id="view_email_server_form_installer_todo" model="ir.actions.todo"> <record id="view_email_server_form_installer_todo" model="ir.actions.todo">
<field name="action_id" ref="view_email_server_form_installer"/> <field name="action_id" ref="view_email_server_form_installer"/>
<field name="category_id" ref="base.category_sales_management_config"/> <field name="category_id" ref="base.category_sales_management_config"/>
<field name="sequence">4</field> <field name="sequence">4</field>
</record> </record>
</data> </data>
</openerp> </openerp>

View File

@ -26,7 +26,7 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Incoming Mail Server"> <form string="Incoming Mail Server">
<group col="6" colspan="4"> <group col="6" colspan="4">
<field name="name" select="1" colspan="4"/> <field name="name" select="1"/>
<field name="type" select="1" on_change="onchange_server_type(type, is_ssl)"/> <field name="type" select="1" on_change="onchange_server_type(type, is_ssl)"/>
<field name="date" select="1"/> <field name="date" select="1"/>
</group> </group>
@ -44,17 +44,15 @@
<field name="password" password="True" /> <field name="password" password="True" />
</group> </group>
<group col="2" colspan="2"> <group col="2" colspan="2">
<separator string="Automated Processing" colspan="2"/> <separator string="Actions to Perform on Incoming Mails" colspan="2"/>
<field name="object_id"/> <field name="object_id"/>
<field name="action_id"/> <field name="action_id" groups="base.group_extended"/>
</group> </group>
<separator string="Description" colspan="4"/>
<field name="note" colspan="4" nolabel="1"/>
</page> </page>
<page string="Advanced"> <page string="Advanced" groups="base.group_extended">
<group colspan="2" col="2"> <group colspan="2" col="2">
<separator string="Advanced options" colspan="2"/> <separator string="Advanced options" colspan="2"/>
<field name="priority"/> <field name="priority" groups="base.group_extended"/>
<field name="attach"/> <field name="attach"/>
<field name="original"/> <field name="original"/>
<field name="active" select="1"/> <field name="active" select="1"/>
@ -62,7 +60,7 @@
</page> </page>
</notebook> </notebook>
<group col="6" colspan="4"> <group col="6" colspan="4">
<field name="state" select="1"/> <field name="state"/>
<button string="Reset Confirmation" type="object" name="set_draft" icon="gtk-convert" states="done"/> <button string="Reset Confirmation" type="object" name="set_draft" icon="gtk-convert" states="done"/>
<button string="Test &amp; Confirm" type="object" name="button_confirm_login" states="draft" icon="gtk-apply"/> <button string="Test &amp; Confirm" type="object" name="button_confirm_login" states="draft" icon="gtk-apply"/>
<button string="Fetch Now" type="object" name="fetch_mail" states="done" icon="gtk-network"/> <button string="Fetch Now" type="object" name="fetch_mail" states="done" icon="gtk-network"/>
@ -83,13 +81,6 @@
<filter string="SSL" icon="terp-camera_test" domain="[('is_ssl','=',True)]" help="If SSL required."/> <filter string="SSL" icon="terp-camera_test" domain="[('is_ssl','=',True)]" help="If SSL required."/>
<separator orientation="vertical"/> <separator orientation="vertical"/>
<field name="name"/> <field name="name"/>
<field name="object_id"/>
<newline/>
<group expand="0" string="Group By..." groups="base.group_extended">
<filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'type'}"/>
<separator orientation="vertical"/>
<filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
</group>
</search> </search>
</field> </field>
</record> </record>

View File

@ -38,7 +38,7 @@ You can manage:
'author': 'OpenERP SA', 'author': 'OpenERP SA',
'website': 'http://www.openerp.com', 'website': 'http://www.openerp.com',
'images': ['images/hr_department.jpeg', 'images/hr_employee.jpeg','images/hr_job_position.jpeg'], 'images': ['images/hr_department.jpeg', 'images/hr_employee.jpeg','images/hr_job_position.jpeg'],
'depends': ['base_setup', 'resource', 'board'], 'depends': ['base_setup','mail', 'resource', 'board'],
'init_xml': [], 'init_xml': [],
'update_xml': [ 'update_xml': [
'security/hr_security.xml', 'security/hr_security.xml',

View File

@ -154,7 +154,9 @@ class hr_employee(osv.osv):
'coach_id': fields.many2one('hr.employee', 'Coach'), 'coach_id': fields.many2one('hr.employee', 'Coach'),
'job_id': fields.many2one('hr.job', 'Job'), 'job_id': fields.many2one('hr.job', 'Job'),
'photo': fields.binary('Photo'), 'photo': fields.binary('Photo'),
'passport_id':fields.char('Passport No', size=64) 'passport_id':fields.char('Passport No', size=64),
'color': fields.integer('Color Index'),
'city': fields.related('address_id', 'city', type='char', string='City'),
} }
def unlink(self, cr, uid, ids, context=None): def unlink(self, cr, uid, ids, context=None):
@ -203,6 +205,7 @@ class hr_employee(osv.osv):
'active': 1, 'active': 1,
'photo': _get_photo, 'photo': _get_photo,
'marital': 'single', 'marital': 'single',
'color': 0,
} }
def _check_recursion(self, cr, uid, ids, context=None): def _check_recursion(self, cr, uid, ids, context=None):

View File

@ -9,28 +9,27 @@
<!-- employee configure action --> <!-- employee configure action -->
<record id="action_create_hr_employee_installer" model="ir.actions.act_window"> <record id="action_create_hr_employee_installer" model="ir.actions.act_window">
<field name="name">Create your employees</field> <field name="name">Create your Employees</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">hr.employee</field> <field name="res_model">hr.employee</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">form</field> <field name="view_mode">tree,form</field>
<field name="view_id" ref="view_employee_form"/> <field name="view_id" eval="False"/>
</record> </record>
<record id="config_wizard_action_create_hr_employee_installer" model="ir.actions.todo"> <record id="config_wizard_action_create_hr_employee_installer" model="ir.actions.todo">
<field name="action_id" ref="action_create_hr_employee_installer"/> <field name="action_id" ref="action_create_hr_employee_installer"/>
<field name="category_id" ref="category_hr_management_config"/> <field name="category_id" ref="category_hr_management_config"/>
</record> </record>
<record model="ir.actions.act_window" id="view_department_form_installer"> <record model="ir.actions.act_window" id="view_department_form_installer">
<field name="name">Define Your Department Structure</field> <field name="name">Create Your Departments</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">hr.department</field> <field name="res_model">hr.department</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="view_id" ref="hr.view_department_tree"/> <field name="view_id" ref="hr.view_department_tree"/>
<field name="help">Your Company's Department Structure is used to manage all documents related to employees by departments: expenses and timesheet validation, leaves management, recruitments, etc.</field> <field name="help">Your departments structure is used to manage all documents related to employees by departments: expenses and timesheet validation, leaves management, recruitments, etc.</field>
</record> </record>
<record id="view_department_form_todo" model="ir.actions.todo"> <record id="view_department_form_todo" model="ir.actions.todo">

View File

@ -33,7 +33,7 @@
<field name="parent_id" /> <field name="parent_id" />
</group> </group>
<group colspan="2" col="1"> <group colspan="2" col="1">
<field name="photo" widget='image' nolabel="1"/> <field name="photo" widget='image' nolabel="1"/>
</group> </group>
</group> </group>
<notebook colspan="6"> <notebook colspan="6">
@ -125,7 +125,70 @@
</search> </search>
</field> </field>
</record> </record>
<!-- HR Kanban View -->
<record model="ir.ui.view" id="hr_kanban_view_employees">
<field name="name">HR - Employess Kanban</field>
<field name="model">hr.employee</field>
<field name="type">kanban</field>
<field name="arch" type="xml">
<kanban default_group_by="department_id">
<templates>
<t t-name="kanban-box">
<t t-set="color" t-value="kanban_color(record.color.raw_value || record.name.raw_value)"/>
<div t-att-class="color + (record.color.raw_value == 1 ? ' oe_kanban_color_alert' : '')">
<div class="oe_kanban_box oe_kanban_color_border">
<div class="oe_kanban_box_header oe_kanban_color_bgdark oe_kanban_color_border oe_kanban_draghandle">
<table class="oe_kanban_table">
<tr>
<td class="oe_kanban_title1" align="left" valign="middle"><field name="name"/></td>
<td valign="top" width="22">
<img t-att-src="kanban_gravatar(record.user_id.value, 22)" class="oe_kanban_gravatar"/>
</td>
</tr>
</table>
</div>
<div class="oe_kanban_box_content oe_kanban_color_bglight oe_kanban_box_show_onclick_trigger oe_kanban_color_border">
<table class="oe_kanban_table">
<tr>
<td valign="top" width="22">
<t t-if="record.photo.raw_value">
<img t-att-src="'data:image/png;base64,'+record.photo.raw_value" width='48' height='48'/>
</t>
<t t-if="!record.photo.raw_value">
<img src="/web/static/src/img/employee.png"/>
</t>
</td>
<td>
<div class="oe_kanban_title2"><field name="job_id"/></div>
<div class="oe_kanban_title3">
<field name="department_id"/>
<t t-if="record.department_id.raw_value &amp;&amp; record.city.raw_value">,</t>
<field name="city"/>
</div>
<div class="oe_kanban_title3">
<i><field name="work_email"/>
<t t-if="record.work_phone.raw_value &amp;&amp; record.work_email.raw_value">,</t>
<field name="work_phone"/></i>
</div>
</td>
</tr>
</table>
</div>
<div class="oe_kanban_buttons_set oe_kanban_color_border oe_kanban_color_bglight oe_kanban_box_show_onclick">
<div class="oe_kanban_left">
<a string="Edit" icon="gtk-edit" type="edit"/>
<a string="Change Color" icon="color-picker" type="color" name="color"/>
<a string="Send New Email" name="%(mail.action_email_compose_message_wizard)d" icon="terp-mail-message-new" type="action"/>
</div>
<br class="oe_kanban_clear"/>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="open_view_employee_tree" model="ir.actions.act_window"> <record id="open_view_employee_tree" model="ir.actions.act_window">
<field name="name">Employees Structure</field> <field name="name">Employees Structure</field>
<field name="res_model">hr.employee</field> <field name="res_model">hr.employee</field>
@ -149,13 +212,27 @@
<field name="name">Employees</field> <field name="name">Employees</field>
<field name="res_model">hr.employee</field> <field name="res_model">hr.employee</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form,kanban</field>
<field name="domain">[]</field> <field name="domain">[]</field>
<field name="context">{"search_default_department_id": department_id,"search_default_active":eval('True')}</field> <field name="context">{"search_default_department_id": department_id,"search_default_active":eval('True')}</field>
<field name="view_id" ref="view_employee_tree"/> <field name="view_id" ref="view_employee_tree"/>
<field name="search_view_id" ref="view_employee_filter"/> <field name="search_view_id" ref="view_employee_filter"/>
<field name="help">Here you can manage your work force by creating employees and assigning them specific properties in the system. Maintain all employee related information and keep track of anything that needs to be recorded for them. The personal information tab will help you maintain their identity data. The Categories tab gives you the opportunity to assign them related employee categories depending on their position and activities within the company. A category can be a seniority level within the company or a department. The Timesheets tab allows to assign them a specific timesheet and analytic journal where they will be able to enter time through the system. In the note tab, you can enter text data that should be recorded for a specific employee.</field> <field name="help">Here you can manage your work force by creating employees and assigning them specific properties in the system. Maintain all employee related information and keep track of anything that needs to be recorded for them. The personal information tab will help you maintain their identity data. The Categories tab gives you the opportunity to assign them related employee categories depending on their position and activities within the company. A category can be a seniority level within the company or a department. The Timesheets tab allows to assign them a specific timesheet and analytic journal where they will be able to enter time through the system. In the note tab, you can enter text data that should be recorded for a specific employee.</field>
</record> </record>
<record id="open_view_employee_list_my_tree2" model="ir.actions.act_window.view">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="view_employee_tree"/>
<field name="act_window_id" ref="open_view_employee_list_my"/>
</record>
<record id="open_view_employee_list_my_form2" model="ir.actions.act_window.view">
<field name="sequence" eval="2"/>
<field name="view_mode">form</field>
<field name="view_id" ref="view_employee_form"/>
<field name="act_window_id" ref="open_view_employee_list_my"/>
</record>
<menuitem action="open_view_employee_list_my" id="menu_open_view_employee_list_my" sequence="3" parent="menu_hr_main"/> <menuitem action="open_view_employee_list_my" id="menu_open_view_employee_list_my" sequence="3" parent="menu_hr_main"/>

View File

@ -39,7 +39,7 @@ 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 is done by the manager.Every evaluation filled by the employees can be viewed
in the form of pdf file. Implements a dashboard for My Current Evaluations in the form of pdf file. Implements a dashboard for My Current Evaluations
""", """,
"demo": ["hr_evaluation_demo.xml", ], "demo": [],
"data": [ "data": [
"security/ir.model.access.csv", "security/ir.model.access.csv",
"security/hr_evaluation_security.xml", "security/hr_evaluation_security.xml",

View File

@ -39,6 +39,8 @@ class hr_evaluation_plan(osv.osv):
} }
_defaults = { _defaults = {
'active': True, 'active': True,
'month_first': 6,
'month_next': 12,
'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'account.account', context=c), 'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'account.account', context=c),
} }
hr_evaluation_plan() hr_evaluation_plan()

View File

@ -593,5 +593,636 @@ Once the form had been filled, the employee send it to his supervisor.
<field name="question_id" ref="survey_question_42"/> <field name="question_id" ref="survey_question_42"/>
<field eval="5" name="sequence"/> <field eval="5" name="sequence"/>
</record> </record>
<record id="survey_3" model="survey">
<field name="title">Employee Opinion</field>
<field name="max_response_limit">20</field>
<field eval="[(6,0,[])]" name="users"/>
<field name="type" ref="survey.survey_type1"/>
<field name="responsible_id" ref="base.user_root"/>
<field name="response_user">5</field>
</record>
<record id="survey_page_2" model="survey.page">
<field name="title">Process</field>
<field name="survey_id" ref="survey_3"/>
<field eval="1" name="sequence"/>
</record>
<record id="survey_page_10" model="survey.page">
<field name="title">Survey</field>
<field name="survey_id" ref="survey_3"/>
<field eval="5" name="sequence"/>
</record>
<record id="survey_question_0" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="1" name="sequence"/>
<field name="question">Employee Details</field>
<field eval="0" name="is_require_answer"/>
<field name="type">multiple_textboxes_diff_type</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="0" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_2"/>
<field name="comment_label">Other</field>
<field eval="0" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
<record id="survey_question_3" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="1" name="sequence"/>
<field name="question">Engagement</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="0" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_10"/>
<field name="comment_label">Other</field>
<field eval="0" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
<record id="survey_question_6" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="2" name="sequence"/>
<field name="question">Leadership</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field eval="0" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_10"/>
<field eval="0" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
<record id="survey_question_10" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="3" name="sequence"/>
<field name="question">Effectiveness</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="0" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_10"/>
<field name="comment_label">Other</field>
<field eval="0" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
<record id="survey_question_14" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="4" name="sequence"/>
<field name="question">Continuous Improvement</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="0" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_10"/>
<field name="comment_label">Other</field>
<field eval="0" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
<record id="survey_question_18" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="5" name="sequence"/>
<field name="question">Openness</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="0" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_10"/>
<field name="comment_label">Other</field>
<field eval="0" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
<record id="survey_question_40" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="6" name="sequence"/>
<field name="question">Miscellaneous</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="0" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_10"/>
<field name="comment_label">Other</field>
<field eval="0" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
<record id="survey_question_41" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="7" name="sequence"/>
<field name="question">Additional comments :</field>
<field eval="0" name="is_require_answer"/>
<field name="type">comment</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="0" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_10"/>
<field name="comment_label">Other</field>
<field eval="0" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
<record id="survey_question_21" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="2" name="sequence"/>
<field name="question">At the supervisor's appraisal date </field>
<field eval="0" name="is_require_answer"/>
<field name="type">descriptive_text</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field name="descriptive_text">* His direct reports will be invited through OpenERP to express a feedback on their supervisor's leadership and to give their opinion about their own engagement and effectiveness, the continuous improvement and openness in action in the company, ...
* The employees will send back their anonymous answers to OpenERP. The data will be handled by the HR manager and a brief summary of the data will be sent to the concerned supervisor, to his team and to the supervisor's supervisor.
* The appraiser should rate the employees major work accomplishments and performance according to the metric provided below :
1 - Significantly exceeds standards and expectations required of the position
2 - Exceeds standards and expectations
3 - Meet standards and expectations
4 - Did not meet standards and expectations
5 - Significantly below standards and expectations</field>
<field eval="0" name="make_comment_field"/>
<field eval="1" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_2"/>
<field name="comment_label">Other</field>
<field eval="1" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
<record id="survey_question_column_heading_14" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">1</field>
<field name="question_id" ref="survey_question_3"/>
</record>
<record id="survey_question_column_heading_15" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">2</field>
<field name="question_id" ref="survey_question_3"/>
</record>
<record id="survey_question_column_heading_16" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">3</field>
<field name="question_id" ref="survey_question_3"/>
</record>
<record id="survey_question_column_heading_17" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">4</field>
<field name="question_id" ref="survey_question_3"/>
</record>
<record id="survey_question_column_heading_18" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">5</field>
<field name="question_id" ref="survey_question_3"/>
</record>
<record id="survey_question_column_heading_19" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">1</field>
<field name="question_id" ref="survey_question_6"/>
</record>
<record id="survey_question_column_heading_20" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">2</field>
<field name="question_id" ref="survey_question_6"/>
</record>
<record id="survey_question_column_heading_21" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">3</field>
<field name="question_id" ref="survey_question_6"/>
</record>
<record id="survey_question_column_heading_22" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">4</field>
<field name="question_id" ref="survey_question_6"/>
</record>
<record id="survey_question_column_heading_23" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">5</field>
<field name="question_id" ref="survey_question_6"/>
</record>
<record id="survey_question_column_heading_24" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">1</field>
<field name="question_id" ref="survey_question_10"/>
</record>
<record id="survey_question_column_heading_25" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">2</field>
<field name="question_id" ref="survey_question_10"/>
</record>
<record id="survey_question_column_heading_26" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">3</field>
<field name="question_id" ref="survey_question_10"/>
</record>
<record id="survey_question_column_heading_27" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">4</field>
<field name="question_id" ref="survey_question_10"/>
</record>
<record id="survey_question_column_heading_28" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">5</field>
<field name="question_id" ref="survey_question_10"/>
</record>
<record id="survey_question_column_heading_29" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">1</field>
<field name="question_id" ref="survey_question_14"/>
</record>
<record id="survey_question_column_heading_30" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">2</field>
<field name="question_id" ref="survey_question_14"/>
</record>
<record id="survey_question_column_heading_31" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">3</field>
<field name="question_id" ref="survey_question_14"/>
</record>
<record id="survey_question_column_heading_32" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">4</field>
<field name="question_id" ref="survey_question_14"/>
</record>
<record id="survey_question_column_heading_33" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">5</field>
<field name="question_id" ref="survey_question_14"/>
</record>
<record id="survey_question_column_heading_34" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">1</field>
<field name="question_id" ref="survey_question_18"/>
</record>
<record id="survey_question_column_heading_35" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">2</field>
<field name="question_id" ref="survey_question_18"/>
</record>
<record id="survey_question_column_heading_36" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">3</field>
<field name="question_id" ref="survey_question_18"/>
</record>
<record id="survey_question_column_heading_37" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">4</field>
<field name="question_id" ref="survey_question_18"/>
</record>
<record id="survey_question_column_heading_38" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">5</field>
<field name="question_id" ref="survey_question_18"/>
</record>
<record id="survey_question_column_heading_39" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">1</field>
<field name="question_id" ref="survey_question_40"/>
</record>
<record id="survey_question_column_heading_40" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">2</field>
<field name="question_id" ref="survey_question_40"/>
</record>
<record id="survey_question_column_heading_41" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">3</field>
<field name="question_id" ref="survey_question_40"/>
</record>
<record id="survey_question_column_heading_42" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">4</field>
<field name="question_id" ref="survey_question_40"/>
</record>
<record id="survey_question_column_heading_43" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">5</field>
<field name="question_id" ref="survey_question_40"/>
</record>
<record id="survey_answer_0" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Demonstrates genuine concern for me as a person. </field>
<field name="question_id" ref="survey_question_6"/>
<field eval="1" name="sequence"/>
</record>
<record id="survey_answer_2" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I'm efficient at work and my achievements are successful.</field>
<field name="question_id" ref="survey_question_10"/>
<field eval="1" name="sequence"/>
</record>
<record id="survey_answer_3" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I am proud to tell others I work here. </field>
<field name="question_id" ref="survey_question_3"/>
<field eval="1" name="sequence"/>
</record>
<record id="survey_answer_4" model="survey.answer">
<field name="in_visible_answer_type">0</field>
<field name="answer">Name of your direct supervisor</field>
<field name="question_id" ref="survey_question_0"/>
<field name="type">char</field>
<field eval="1" name="sequence"/>
</record>
<record id="survey_answer_5" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Actions by Executive management show genuine interest in the well-being of employees.</field>
<field name="question_id" ref="survey_question_40"/>
<field eval="1" name="sequence"/>
</record>
<record id="survey_answer_6" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I know the company's values and live them.</field>
<field name="question_id" ref="survey_question_18"/>
<field eval="1" name="sequence"/>
</record>
<record id="survey_answer_7" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">My work contributes towards the continuous improvement of the company, our services or products. </field>
<field name="question_id" ref="survey_question_14"/>
<field eval="1" name="sequence"/>
</record>
<record id="survey_answer_8" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I have enough work.</field>
<field name="question_id" ref="survey_question_10"/>
<field eval="2" name="sequence"/>
</record>
<record id="survey_answer_9" model="survey.answer">
<field name="in_visible_answer_type">0</field>
<field name="answer">Date</field>
<field name="question_id" ref="survey_question_0"/>
<field name="type">datetime</field>
<field eval="2" name="sequence"/>
</record>
<record id="survey_answer_11" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I consistently acquire new knowledge, skills or understanding through contact with my supervisor. He helps me growing my compete</field>
<field name="question_id" ref="survey_question_6"/>
<field eval="2" name="sequence"/>
</record>
<record id="survey_answer_12" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">My job provides me with a sense of personal accomplishment.</field>
<field name="question_id" ref="survey_question_3"/>
<field eval="2" name="sequence"/>
</record>
<record id="survey_answer_13" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">What I did several months ago is still of use to the company, the services or the products today. </field>
<field name="question_id" ref="survey_question_14"/>
<field eval="2" name="sequence"/>
</record>
<record id="survey_answer_14" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">My best achievements have been communicated to the community, internally or to customers. </field>
<field name="question_id" ref="survey_question_18"/>
<field eval="2" name="sequence"/>
</record>
<record id="survey_answer_15" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I have the same opportunity to succeed as others with similar experiences, performance and educational background. </field>
<field name="question_id" ref="survey_question_40"/>
<field eval="2" name="sequence"/>
</record>
<record id="survey_answer_16" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Compared to similar jobs in other companies where I could work, my total compensation is:
(Scale: Well below others, Below othe</field>
<field name="question_id" ref="survey_question_40"/>
<field eval="3" name="sequence"/>
</record>
<record id="survey_answer_17" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Overall, I believe the quality of products and/or services my workgroup delivers is improving.</field>
<field name="question_id" ref="survey_question_14"/>
<field eval="3" name="sequence"/>
</record>
<record id="survey_answer_18" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I would prefer to remain with this company even if a comparable job were available in another company. </field>
<field name="question_id" ref="survey_question_3"/>
<field eval="3" name="sequence"/>
</record>
<record id="survey_answer_19" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Listens and takes into account all ideas and do his best to put in place the best of these. </field>
<field name="question_id" ref="survey_question_6"/>
<field eval="3" name="sequence"/>
</record>
<record id="survey_answer_21" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I mostly work on value-added tasks for the company, the products or the services. (Value-added task : significant improvement pe</field>
<field name="question_id" ref="survey_question_10"/>
<field eval="3" name="sequence"/>
</record>
<record id="survey_answer_22" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Our workgroup identifies and reduces waste of time in our activities and processes. </field>
<field name="question_id" ref="survey_question_14"/>
<field eval="4" name="sequence"/>
</record>
<record id="survey_answer_23" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Taking everything into account, how satisfied are you with your current job? </field>
<field name="question_id" ref="survey_question_3"/>
<field eval="4" name="sequence"/>
</record>
<record id="survey_answer_24" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I understand the company strategy and how my workgroup supports it. </field>
<field name="question_id" ref="survey_question_40"/>
<field eval="4" name="sequence"/>
</record>
<record id="survey_answer_51" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I am willing to put in a great deal of effort beyond what is expected to help my workgroup succeed.</field>
<field name="question_id" ref="survey_question_3"/>
<field eval="5" name="sequence"/>
</record>
<record id="survey_answer_52" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I believe the information that I get from the person I report to. </field>
<field name="question_id" ref="survey_question_6"/>
<field eval="5" name="sequence"/>
</record>
</data> </data>
<data noupdate="1">
<record id="hr_evaluation_plan_managersevaluationplan0" model="hr_evaluation.plan">
<field eval="1" name="active"/>
<field eval="6" name="month_next"/>
<field name="name">Manager's Evaluation Plan</field>
<field eval="3" name="month_first"/>
<field name="company_id" ref="base.main_company"/>
</record>
</data>
<data noupdate="1">
<record id="hr_evaluation_plan_phase_sendtosubordinates0" model="hr_evaluation.plan.phase">
<field name="plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
<field name="name">Send to Subordinates</field>
<field eval="0" name="send_anonymous_manager"/>
<field eval="1" name="sequence"/>
<field name="company_id" ref="base.main_company"/>
<field name="action">bottom-up</field>
<field eval="0" name="send_anonymous_employee"/>
<field eval="0" name="send_answer_employee"/>
<field name="survey_id" ref="hr_evaluation.survey_2"/>
<field eval="0" name="send_answer_manager"/>
<field eval="0" name="wait"/>
</record>
<record id="hr_evaluation_plan_phase_sendtomanagers0" model="hr_evaluation.plan.phase">
<field name="plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
<field name="name">Send to Managers</field>
<field eval="0" name="send_anonymous_manager"/>
<field eval="2" name="sequence"/>
<field name="company_id" ref="base.main_company"/>
<field name="action">top-down</field>
<field eval="0" name="send_anonymous_employee"/>
<field eval="0" name="send_answer_employee"/>
<field name="survey_id" ref="hr_evaluation.survey_2"/>
<field eval="0" name="send_answer_manager"/>
<field eval="0" name="wait"/>
</record>
<record id="hr_evaluation_plan_phase_sendtoemployee0" model="hr_evaluation.plan.phase">
<field name="plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
<field name="name">Send to Employee</field>
<field eval="0" name="send_anonymous_manager"/>
<field eval="3" name="sequence"/>
<field name="company_id" ref="base.main_company"/>
<field name="action">self</field>
<field eval="0" name="send_anonymous_employee"/>
<field eval="0" name="send_answer_employee"/>
<field name="survey_id" ref="hr_evaluation.survey_2"/>
<field eval="0" name="send_answer_manager"/>
<field eval="0" name="wait"/>
</record>
<record id="hr_evaluation_plan_phase_finalinterviewwithmanager0" model="hr_evaluation.plan.phase">
<field name="plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
<field name="name">Final Interview With Manager</field>
<field eval="0" name="send_anonymous_manager"/>
<field eval="4" name="sequence"/>
<field name="company_id" ref="base.main_company"/>
<field name="action">final</field>
<field eval="0" name="send_anonymous_employee"/>
<field eval="0" name="send_answer_employee"/>
<field name="survey_id" ref="hr_recruitment.survey_job_0"/>
<field eval="0" name="send_answer_manager"/>
<field eval="1" name="wait"/>
</record>
</data>
<data>
<record forcecreate="True" id="ir_cron_scheduler_evaluation" model="ir.cron">
<field name="name">Run Employee Evaluation</field>
<field eval="True" name="active" />
<field name="user_id" ref="base.user_root" />
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field eval="'hr.employee'" name="model" />
<field eval="'run_employee_evaluation'" name="function" />
<field eval="'(False,)'" name="args" />
</record>
</data>
</openerp> </openerp>

View File

@ -1,857 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="survey_3" model="survey">
<field name="title">Employee Opinion</field>
<field name="max_response_limit">20</field>
<field eval="[(6,0,[])]" name="users"/>
<field name="type" ref="survey.survey_type1"/>
<field name="responsible_id" ref="base.user_root"/>
<field name="response_user">5</field>
</record>
</data>
<data>
<record id="survey_page_2" model="survey.page">
<field name="title">Process</field>
<field name="survey_id" ref="survey_3"/>
<field eval="1" name="sequence"/>
</record>
</data>
<data>
<record id="survey_page_10" model="survey.page">
<field name="title">Survey</field>
<field name="survey_id" ref="survey_3"/>
<field eval="5" name="sequence"/>
</record>
</data>
<data>
<record id="survey_question_0" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="1" name="sequence"/>
<field name="question">Employee Details</field>
<field eval="0" name="is_require_answer"/>
<field name="type">multiple_textboxes_diff_type</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="0" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_2"/>
<field name="comment_label">Other</field>
<field eval="0" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_3" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="1" name="sequence"/>
<field name="question">Engagement</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="0" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_10"/>
<field name="comment_label">Other</field>
<field eval="0" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_6" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="2" name="sequence"/>
<field name="question">Leadership</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field eval="0" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_10"/>
<field eval="0" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
</data>
<data>
<record id="survey_question_10" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="3" name="sequence"/>
<field name="question">Effectiveness</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="0" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_10"/>
<field name="comment_label">Other</field>
<field eval="0" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_14" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="4" name="sequence"/>
<field name="question">Continuous Improvement</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="0" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_10"/>
<field name="comment_label">Other</field>
<field eval="0" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_18" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="5" name="sequence"/>
<field name="question">Openness</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="0" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_10"/>
<field name="comment_label">Other</field>
<field eval="0" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_40" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="6" name="sequence"/>
<field name="question">Miscellaneous</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="0" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_10"/>
<field name="comment_label">Other</field>
<field eval="0" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_41" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="7" name="sequence"/>
<field name="question">Additional comments :</field>
<field eval="0" name="is_require_answer"/>
<field name="type">comment</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="0" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_10"/>
<field name="comment_label">Other</field>
<field eval="0" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_21" model="survey.question">
<field name="in_visible_answer_type">1</field>
<field name="validation_type">do_not_validate</field>
<field name="comment_valid_type">do_not_validate</field>
<field name="make_comment_field_err_msg">Please enter a comment.</field>
<field name="numeric_required_sum_err_msg">The choices need to add up to [enter sum here].</field>
<field eval="0" name="comment_column"/>
<field name="validation_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="2" name="sequence"/>
<field name="question">At the supervisor's appraisal date </field>
<field eval="0" name="is_require_answer"/>
<field name="type">descriptive_text</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field name="descriptive_text">* His direct reports will be invited through OpenERP to express a feedback on their supervisor's leadership and to give their opinion about their own engagement and effectiveness, the continuous improvement and openness in action in the company, ...
* The employees will send back their anonymous answers to OpenERP. The data will be handled by the HR manager and a brief summary of the data will be sent to the concerned supervisor, to his team and to the supervisor's supervisor.
* The appraiser should rate the employees major work accomplishments and performance according to the metric provided below :
1 - Significantly exceeds standards and expectations required of the position
2 - Exceeds standards and expectations
3 - Meet standards and expectations
4 - Did not meet standards and expectations
5 - Significantly below standards and expectations</field>
<field eval="0" name="make_comment_field"/>
<field eval="1" name="in_visible_menu_choice"/>
<field name="page_id" ref="survey_page_2"/>
<field name="comment_label">Other</field>
<field eval="1" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_14" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">1</field>
<field name="question_id" ref="survey_question_3"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_15" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">2</field>
<field name="question_id" ref="survey_question_3"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_16" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">3</field>
<field name="question_id" ref="survey_question_3"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_17" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">4</field>
<field name="question_id" ref="survey_question_3"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_18" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">5</field>
<field name="question_id" ref="survey_question_3"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_19" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">1</field>
<field name="question_id" ref="survey_question_6"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_20" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">2</field>
<field name="question_id" ref="survey_question_6"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_21" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">3</field>
<field name="question_id" ref="survey_question_6"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_22" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">4</field>
<field name="question_id" ref="survey_question_6"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_23" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">5</field>
<field name="question_id" ref="survey_question_6"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_24" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">1</field>
<field name="question_id" ref="survey_question_10"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_25" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">2</field>
<field name="question_id" ref="survey_question_10"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_26" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">3</field>
<field name="question_id" ref="survey_question_10"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_27" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">4</field>
<field name="question_id" ref="survey_question_10"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_28" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">5</field>
<field name="question_id" ref="survey_question_10"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_29" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">1</field>
<field name="question_id" ref="survey_question_14"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_30" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">2</field>
<field name="question_id" ref="survey_question_14"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_31" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">3</field>
<field name="question_id" ref="survey_question_14"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_32" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">4</field>
<field name="question_id" ref="survey_question_14"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_33" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">5</field>
<field name="question_id" ref="survey_question_14"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_34" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">1</field>
<field name="question_id" ref="survey_question_18"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_35" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">2</field>
<field name="question_id" ref="survey_question_18"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_36" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">3</field>
<field name="question_id" ref="survey_question_18"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_37" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">4</field>
<field name="question_id" ref="survey_question_18"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_38" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">5</field>
<field name="question_id" ref="survey_question_18"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_39" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">1</field>
<field name="question_id" ref="survey_question_40"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_40" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">2</field>
<field name="question_id" ref="survey_question_40"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_41" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">3</field>
<field name="question_id" ref="survey_question_40"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_42" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">4</field>
<field name="question_id" ref="survey_question_40"/>
</record>
</data>
<data>
<record id="survey_question_column_heading_43" model="survey.question.column.heading">
<field name="in_visible_rating_weight">1</field>
<field name="in_visible_menu_choice">1</field>
<field name="title">5</field>
<field name="question_id" ref="survey_question_40"/>
</record>
</data>
<data>
<record id="survey_answer_0" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Demonstrates genuine concern for me as a person. </field>
<field name="question_id" ref="survey_question_6"/>
<field eval="1" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_2" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I'm efficient at work and my achievements are successful.</field>
<field name="question_id" ref="survey_question_10"/>
<field eval="1" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_3" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I am proud to tell others I work here. </field>
<field name="question_id" ref="survey_question_3"/>
<field eval="1" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_4" model="survey.answer">
<field name="in_visible_answer_type">0</field>
<field name="answer">Name of your direct supervisor</field>
<field name="question_id" ref="survey_question_0"/>
<field name="type">char</field>
<field eval="1" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_5" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Actions by Executive management show genuine interest in the well-being of employees.</field>
<field name="question_id" ref="survey_question_40"/>
<field eval="1" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_6" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I know the company's values and live them.</field>
<field name="question_id" ref="survey_question_18"/>
<field eval="1" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_7" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">My work contributes towards the continuous improvement of the company, our services or products. </field>
<field name="question_id" ref="survey_question_14"/>
<field eval="1" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_8" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I have enough work.</field>
<field name="question_id" ref="survey_question_10"/>
<field eval="2" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_9" model="survey.answer">
<field name="in_visible_answer_type">0</field>
<field name="answer">Date</field>
<field name="question_id" ref="survey_question_0"/>
<field name="type">datetime</field>
<field eval="2" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_11" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I consistently acquire new knowledge, skills or understanding through contact with my supervisor. He helps me growing my compete</field>
<field name="question_id" ref="survey_question_6"/>
<field eval="2" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_12" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">My job provides me with a sense of personal accomplishment.</field>
<field name="question_id" ref="survey_question_3"/>
<field eval="2" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_13" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">What I did several months ago is still of use to the company, the services or the products today. </field>
<field name="question_id" ref="survey_question_14"/>
<field eval="2" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_14" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">My best achievements have been communicated to the community, internally or to customers. </field>
<field name="question_id" ref="survey_question_18"/>
<field eval="2" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_15" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I have the same opportunity to succeed as others with similar experiences, performance and educational background. </field>
<field name="question_id" ref="survey_question_40"/>
<field eval="2" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_16" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Compared to similar jobs in other companies where I could work, my total compensation is:
(Scale: Well below others, Below othe</field>
<field name="question_id" ref="survey_question_40"/>
<field eval="3" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_17" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Overall, I believe the quality of products and/or services my workgroup delivers is improving.</field>
<field name="question_id" ref="survey_question_14"/>
<field eval="3" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_18" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I would prefer to remain with this company even if a comparable job were available in another company. </field>
<field name="question_id" ref="survey_question_3"/>
<field eval="3" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_19" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Listens and takes into account all ideas and do his best to put in place the best of these. </field>
<field name="question_id" ref="survey_question_6"/>
<field eval="3" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_21" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I mostly work on value-added tasks for the company, the products or the services. (Value-added task : significant improvement pe</field>
<field name="question_id" ref="survey_question_10"/>
<field eval="3" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_22" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Our workgroup identifies and reduces waste of time in our activities and processes. </field>
<field name="question_id" ref="survey_question_14"/>
<field eval="4" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_23" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">Taking everything into account, how satisfied are you with your current job? </field>
<field name="question_id" ref="survey_question_3"/>
<field eval="4" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_24" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I understand the company strategy and how my workgroup supports it. </field>
<field name="question_id" ref="survey_question_40"/>
<field eval="4" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_51" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I am willing to put in a great deal of effort beyond what is expected to help my workgroup succeed.</field>
<field name="question_id" ref="survey_question_3"/>
<field eval="5" name="sequence"/>
</record>
</data>
<data>
<record id="survey_answer_52" model="survey.answer">
<field name="in_visible_answer_type">1</field>
<field name="answer">I believe the information that I get from the person I report to. </field>
<field name="question_id" ref="survey_question_6"/>
<field eval="5" name="sequence"/>
</record>
</data>
<data noupdate="1">
<record id="hr_evaluation_plan_managersevaluationplan0" model="hr_evaluation.plan">
<field eval="1" name="active"/>
<field eval="6" name="month_next"/>
<field name="name">Manager's Evaluation Plan</field>
<field eval="3" name="month_first"/>
<field name="company_id" ref="base.main_company"/>
</record>
</data>
<data noupdate="1">
<record id="hr_evaluation_plan_phase_sendtosubordinates0" model="hr_evaluation.plan.phase">
<field name="plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
<field name="name">Send to Subordinates</field>
<field eval="0" name="send_anonymous_manager"/>
<field eval="1" name="sequence"/>
<field name="company_id" ref="base.main_company"/>
<field name="action">bottom-up</field>
<field eval="0" name="send_anonymous_employee"/>
<field eval="0" name="send_answer_employee"/>
<field name="survey_id" ref="hr_evaluation.survey_2"/>
<field eval="0" name="send_answer_manager"/>
<field eval="0" name="wait"/>
</record>
</data>
<data noupdate="1">
<record id="hr_evaluation_plan_phase_sendtomanagers0" model="hr_evaluation.plan.phase">
<field name="plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
<field name="name">Send to Managers</field>
<field eval="0" name="send_anonymous_manager"/>
<field eval="2" name="sequence"/>
<field name="company_id" ref="base.main_company"/>
<field name="action">top-down</field>
<field eval="0" name="send_anonymous_employee"/>
<field eval="0" name="send_answer_employee"/>
<field name="survey_id" ref="hr_evaluation.survey_2"/>
<field eval="0" name="send_answer_manager"/>
<field eval="0" name="wait"/>
</record>
</data>
<data noupdate="1">
<record id="hr_evaluation_plan_phase_sendtoemployee0" model="hr_evaluation.plan.phase">
<field name="plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
<field name="name">Send to Employee</field>
<field eval="0" name="send_anonymous_manager"/>
<field eval="3" name="sequence"/>
<field name="company_id" ref="base.main_company"/>
<field name="action">self</field>
<field eval="0" name="send_anonymous_employee"/>
<field eval="0" name="send_answer_employee"/>
<field name="survey_id" ref="hr_evaluation.survey_2"/>
<field eval="0" name="send_answer_manager"/>
<field eval="0" name="wait"/>
</record>
</data>
<data noupdate="1">
<record id="hr_evaluation_plan_phase_finalinterviewwithmanager0" model="hr_evaluation.plan.phase">
<field name="plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
<field name="name">Final Interview With Manager</field>
<field eval="0" name="send_anonymous_manager"/>
<field eval="4" name="sequence"/>
<field name="company_id" ref="base.main_company"/>
<field name="action">final</field>
<field eval="0" name="send_anonymous_employee"/>
<field eval="0" name="send_answer_employee"/>
<field name="survey_id" ref="hr_recruitment.survey_job_0"/>
<field eval="0" name="send_answer_manager"/>
<field eval="1" name="wait"/>
</record>
</data>
<data>
<record forcecreate="True" id="ir_cron_scheduler_evaluation" model="ir.cron">
<field name="name">Run Employee Evaluation</field>
<field eval="True" name="active" />
<field name="user_id" ref="base.user_root" />
<field name="interval_number">1</field>
<field name="interval_type">minutes</field>
<field name="numbercall">-1</field>
<field eval="'hr.employee'" name="model" />
<field eval="'run_employee_evaluation'" name="function" />
<field eval="'(False,)'" name="args" />
</record>
<record id="property_rule_evaluation" model="ir.rule">
<field name="name">Employee Evaluation</field>
<field model="ir.model" name="model_id" ref="model_hr_evaluation_evaluation"/>
<field name="domain_force">[('employee_id.user_id','=',user.id)]</field>
<field name="groups" eval="[(4,ref('base.group_hr_user'))]"/>
</record>
<record id="property_rule_evaluation_manager" model="ir.rule">
<field name="name">Manager Evaluation</field>
<field model="ir.model" name="model_id" ref="model_hr_evaluation_evaluation"/>
<field name="domain_force">['|',('employee_id.user_id','=',user.id),('employee_id.parent_id.user_id','=',user.id )]</field>
<field name="groups" eval="[(4,ref('base.group_hr_manager'))]"/>
</record>
</data>
</openerp>

View File

@ -6,7 +6,7 @@
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">hr_evaluation.plan</field> <field name="res_model">hr_evaluation.plan</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">form,tree</field> <field name="view_mode">tree,form</field>
</record> </record>
<record id="todo_evaluation_plans_installer" model="ir.actions.todo"> <record id="todo_evaluation_plans_installer" model="ir.actions.todo">

View File

@ -24,6 +24,7 @@
<field name="context" eval="'{\'default_type\':\'service\',\'default_procure_method\':\'make_to_stock\',\'default_supply_method\':\'buy\',\'default_purchase_ok\':True, \'default_sale_ok\':False, \'default_hr_expense_ok\':True,\'default_categ_id\': ' + str(ref('cat_expense')) +'}'"/> <field name="context" eval="'{\'default_type\':\'service\',\'default_procure_method\':\'make_to_stock\',\'default_supply_method\':\'buy\',\'default_purchase_ok\':True, \'default_sale_ok\':False, \'default_hr_expense_ok\':True,\'default_categ_id\': ' + str(ref('cat_expense')) +'}'"/>
<field name="domain">[('hr_expense_ok','=',True)]</field> <field name="domain">[('hr_expense_ok','=',True)]</field>
<field name="view_id" ref="product_expense_installer_tree_view"/> <field name="view_id" ref="product_expense_installer_tree_view"/>
<field name="help">Define one product for each expense type allowed for an employee (travel by car, hostel, restaurant, etc). If you reimburse the employees at a fixed rate, set a cost and a unit of measure on the product. If you reimburse based on real costs, set the cost at 0.00. The user will set the real price when recording his expense sheet.</field>
</record> </record>
<record id="product_normal_form_view_todo" model="ir.actions.todo"> <record id="product_normal_form_view_todo" model="ir.actions.todo">

View File

@ -358,12 +358,24 @@ class hr_employee(osv.osv):
leave_id = holiday_obj.create(cr, uid, {'name': _('Leave Request for %s') % employee.name, 'employee_id': employee.id, 'holiday_status_id': status_id, 'type': 'remove', 'holiday_type': 'employee', 'number_of_days_temp': abs(diff)}, context=context) leave_id = holiday_obj.create(cr, uid, {'name': _('Leave Request for %s') % employee.name, 'employee_id': employee.id, 'holiday_status_id': status_id, 'type': 'remove', 'holiday_type': 'employee', 'number_of_days_temp': abs(diff)}, context=context)
else: else:
return False return False
holiday_obj.holidays_confirm(cr, uid, [leave_id]) wf_service = netsvc.LocalService("workflow")
holiday_obj.holidays_validate2(cr, uid, [leave_id]) wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'confirm', cr)
wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'validate', cr)
wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'second_validate', cr)
return True return True
def _get_remaining_days(self, cr, uid, ids, name, args, context=None): def _get_remaining_days(self, cr, uid, ids, name, args, context=None):
cr.execute("SELECT sum(h.number_of_days_temp) as days, h.employee_id from hr_holidays h join hr_holidays_status s on (s.id=h.holiday_status_id) where h.type='add' and h.state='validate' and s.limit=False group by h.employee_id") cr.execute("""SELECT
sum(h.number_of_days) as days,
h.employee_id
from
hr_holidays h
join hr_holidays_status s on (s.id=h.holiday_status_id)
where
h.state='validate' and
s.limit=False and
h.employee_id in (%s)
group by h.employee_id"""% (','.join(map(str,ids)),) )
res = cr.dictfetchall() res = cr.dictfetchall()
remaining = {} remaining = {}
for r in res: for r in res:
@ -373,11 +385,10 @@ class hr_employee(osv.osv):
remaining[employee_id] = 0.0 remaining[employee_id] = 0.0
return remaining return remaining
_columns = { _columns = {
'remaining_leaves': fields.function(_get_remaining_days, string='Remaining Legal Leaves', fnct_inv=_set_remaining_days, type="float", help='Total number of legal leaves allocated to this employee, change this value to create allocation/leave requests.', store=True), 'remaining_leaves': fields.function(_get_remaining_days, string='Remaining Legal Leaves', fnct_inv=_set_remaining_days, type="float", help='Total number of legal leaves allocated to this employee, change this value to create allocation/leave requests.'),
} }
hr_employee() hr_employee()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -10,7 +10,7 @@
<group> <group>
<filter icon="terp-check" domain="[('state','=','draft')]" string="To Confirm"/> <filter icon="terp-check" domain="[('state','=','draft')]" string="To Confirm"/>
<filter icon="terp-camera_test" domain="[('state','=','confirm')]" string="To Approve"/> <filter icon="terp-camera_test" domain="[('state','=','confirm')]" string="To Approve"/>
<filter icon="terp-camera_test" domain="[('state','=','validate')]" string="Validated"/> <filter icon="terp-camera_test" domain="[('state','=','validate')]" string="Validated" name="validated"/>
<separator orientation="vertical"/> <separator orientation="vertical"/>
<filter string="This Month" icon="terp-go-month" name="This Month" domain="[('date_from','&lt;=',(datetime.date.today()+relativedelta(day=31)).strftime('%%Y-%%m-%%d')),('date_from','&gt;=',(datetime.date.today()-relativedelta(day=1)).strftime('%%Y-%%m-%%d'))]"/> <filter string="This Month" icon="terp-go-month" name="This Month" domain="[('date_from','&lt;=',(datetime.date.today()+relativedelta(day=31)).strftime('%%Y-%%m-%%d')),('date_from','&gt;=',(datetime.date.today()-relativedelta(day=1)).strftime('%%Y-%%m-%%d'))]"/>
<separator orientation="vertical"/> <separator orientation="vertical"/>
@ -21,8 +21,6 @@
<filter icon="terp-personal+" help="My Department Leaves" domain="[('department_id.manager_id','=',uid)]"/> <filter icon="terp-personal+" help="My Department Leaves" domain="[('department_id.manager_id','=',uid)]"/>
</field> </field>
<field name="holiday_status_id" widget="selection"/> <field name="holiday_status_id" widget="selection"/>
<field name="date_from"/>
<field name="date_to"/>
</group> </group>
<newline/> <newline/>
<group expand="0" string="Group By..."> <group expand="0" string="Group By...">
@ -145,7 +143,7 @@
<field name="model">hr.holidays</field> <field name="model">hr.holidays</field>
<field name="type">tree</field> <field name="type">tree</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree colors="red:state == 'refuse';blue:state == 'draft';black:state in ('confirm','validate','validate1')" string="Leaves"> <tree colors="red:state == 'refuse';blue:state == 'draft';black:state in ('confirm','validate','validate1')" string="Allocation Requests">
<field name="holiday_type"/> <field name="holiday_type"/>
<field name="employee_id"/> <field name="employee_id"/>
<field name="category_id"/> <field name="category_id"/>
@ -225,7 +223,7 @@
<field name="model">hr.holidays</field> <field name="model">hr.holidays</field>
<field name="type">tree</field> <field name="type">tree</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree colors="red:state == 'refuse';blue:state == ' draft';black:state in ('confirm','validate','validate1')"> <tree colors="red:state == 'refuse';blue:state == ' draft';black:state in ('confirm','validate','validate1')" string="Leave Requests">
<field name="holiday_type"/> <field name="holiday_type"/>
<field name="employee_id"/> <field name="employee_id"/>
<field name="category_id"/> <field name="category_id"/>
@ -314,7 +312,7 @@
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="view_id" eval="view_holiday_simple"/> <field name="view_id" eval="view_holiday_simple"/>
<field name="context">{'search_default_my_leaves': 1, 'search_default_group_type': 1}</field> <field name="context">{'search_default_my_leaves': 1, 'search_default_group_type': 1, 'search_default_validated': 1}</field>
<field name="domain">[('holiday_type','=','employee')]</field> <field name="domain">[('holiday_type','=','employee')]</field>
<field name="search_view_id" ref="view_hr_holidays_filter"/> <field name="search_view_id" ref="view_hr_holidays_filter"/>
</record> </record>
@ -437,7 +435,7 @@
<field name="model">hr.employee</field> <field name="model">hr.employee</field>
<field name="type">tree</field> <field name="type">tree</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="Assign Leaves" editable="top"> <tree string="Assign Leaves" editable="bottom">
<field name="name" string="Employee"/> <field name="name" string="Employee"/>
<field name="remaining_leaves" string="Remaining Legal Leaves"/> <field name="remaining_leaves" string="Remaining Legal Leaves"/>
</tree> </tree>
@ -451,13 +449,14 @@
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="view_id" ref="hr_holidays_leaves_assign_tree_view"/> <field name="view_id" ref="hr_holidays_leaves_assign_tree_view"/>
<field name="help">You can assign remaining Legal Leaves for each employee, OpenERP will automatically create and validate allocation requests.</field>
</record> </record>
<record id="hr_holidays_leaves_assign_form_view_todo" model="ir.actions.todo"> <record id="hr_holidays_leaves_assign_form_view_todo" model="ir.actions.todo">
<field name="action_id" ref="hr_holidays_leaves_assign_legal"/> <field name="action_id" ref="hr_holidays_leaves_assign_legal"/>
<field name="category_id" ref="hr.category_hr_management_config"/> <field name="category_id" ref="hr.category_hr_management_config"/>
</record> </record>
<!-- Hr employee inherit Legal Leaves --> <!-- Hr employee inherit Legal Leaves -->
<record id="view_employee_form_leave_inherit" model="ir.ui.view"> <record id="view_employee_form_leave_inherit" model="ir.ui.view">
@ -467,7 +466,7 @@
<field name="inherit_id" ref="hr.view_employee_form"/> <field name="inherit_id" ref="hr.view_employee_form"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<field name="coach_id" position="after"> <field name="coach_id" position="after">
<field name="remaining_leaves" string="Remaining Legal Leaves"/> <field name="remaining_leaves" string="Remaining Legal Leaves" readonly="1"/>
</field> </field>
</field> </field>
</record> </record>

View File

@ -180,6 +180,7 @@ class hr_applicant(crm.crm_case, osv.osv):
multi='day_open', type="float", store=True), multi='day_open', type="float", store=True),
'day_close': fields.function(_compute_day, string='Days to Close', \ 'day_close': fields.function(_compute_day, string='Days to Close', \
multi='day_close', type="float", store=True), multi='day_close', type="float", store=True),
'color': fields.integer('Color Index'),
} }
def _get_stage(self, cr, uid, context=None): def _get_stage(self, cr, uid, context=None):
@ -194,6 +195,7 @@ class hr_applicant(crm.crm_case, osv.osv):
'priority': lambda *a: '', 'priority': lambda *a: '',
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.helpdesk', context=c), 'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.helpdesk', context=c),
'priority': lambda *a: crm.AVAILABLE_PRIORITIES[2][0], 'priority': lambda *a: crm.AVAILABLE_PRIORITIES[2][0],
'color': 0,
} }
def onchange_job(self,cr, uid, ids, job, context=None): def onchange_job(self,cr, uid, ids, job, context=None):
@ -442,6 +444,21 @@ class hr_applicant(crm.crm_case, osv.osv):
res = super(hr_applicant, self).case_reset(cr, uid, ids, *args) res = super(hr_applicant, self).case_reset(cr, uid, ids, *args)
self.write(cr, uid, ids, {'date_open': False, 'date_closed': False}) self.write(cr, uid, ids, {'date_open': False, 'date_closed': False})
return res return res
def set_priority(self, cr, uid, ids, priority):
"""Set lead priority
"""
return self.write(cr, uid, ids, {'priority' : priority})
def set_high_priority(self, cr, uid, ids, *args):
"""Set lead priority to high
"""
return self.set_priority(cr, uid, ids, '1')
def set_normal_priority(self, cr, uid, ids, *args):
"""Set lead priority to normal
"""
return self.set_priority(cr, uid, ids, '3')
def write(self, cr, uid, ids, vals, context=None): def write(self, cr, uid, ids, vals, context=None):
if 'stage_id' in vals and vals['stage_id']: if 'stage_id' in vals and vals['stage_id']:

View File

@ -6,7 +6,7 @@
<record model="ir.actions.act_window" id="crm_case_categ0_act_job"> <record model="ir.actions.act_window" id="crm_case_categ0_act_job">
<field name="name">Applicants</field> <field name="name">Applicants</field>
<field name="res_model">hr.applicant</field> <field name="res_model">hr.applicant</field>
<field name="view_mode">tree,form,graph,calendar</field> <field name="view_mode">tree,form,graph,calendar,kanban</field>
<field name="view_id" ref="crm_case_tree_view_job"/> <field name="view_id" ref="crm_case_tree_view_job"/>
<field name="context">{"search_default_user_id":uid, 'search_default_current': 1,"search_default_department_id": department_id}</field> <field name="context">{"search_default_user_id":uid, 'search_default_current': 1,"search_default_department_id": department_id}</field>
<field name="search_view_id" ref="view_crm_case_jobs_filter"/> <field name="search_view_id" ref="view_crm_case_jobs_filter"/>

View File

@ -277,7 +277,81 @@
</field> </field>
</record> </record>
<!-- hr Applicant Kanban View -->
<record model="ir.ui.view" id="hr_kanban_view_applicant">
<field name="name">Hr Applicants kanban</field>
<field name="model">hr.applicant</field>
<field name="type">kanban</field>
<field name="arch" type="xml">
<kanban default_group_by="stage_id">
<templates>
<t t-name="kanban-box">
<t t-set="color" t-value="kanban_color(record.color.raw_value || record.state.raw_value)"/>
<div t-att-class="color + (record.priority.raw_value == 1 ? ' oe_kanban_color_alert' : '')">
<div class="oe_kanban_box oe_kanban_color_border">
<div class="oe_kanban_box_header oe_kanban_color_bgdark oe_kanban_color_border oe_kanban_draghandle">
<table class="oe_kanban_table">
<tr>
<td class="oe_kanban_title1" align="left" valign="middle">
<a t-if="record.priority.raw_value == 1" icon="star-on" type="object" name="set_normal_priority" />
<a t-if="record.priority.raw_value != 1" icon="star-off" type="object" name="set_high_priority" style="opacity:0.6; filter:alpha(opacity=60);"/>
<field name="partner_name"/>
</td>
<td valign="top" width="22">
<img t-att-src="kanban_gravatar(record.user_id.value, 22)" class="oe_kanban_gravatar"/>
</td>
</tr>
</table>
</div>
<div class="oe_kanban_box_content oe_kanban_color_bglight oe_kanban_box_show_onclick_trigger oe_kanban_color_border">
<table class="oe_kanban_table">
<tr>
<td>
<div class="oe_kanban_right oe_kanban_small">
<field name="user_id"/>
</div>
<div class="oe_kanban_title2">
<field name="job_id"/>
<t t-if="record.priority.raw_value == 0"></t>
<t t-if="record.priority.raw_value == 5">(Not Good)</t>
<t t-if="record.priority.raw_value == 4">(On Average)</t>
<t t-if="record.priority.raw_value == 3">(Good)</t>
<t t-if="record.priority.raw_value == 2">(Very Good)</t>
<t t-if="record.priority.raw_value == 1">(Excellent)</t>
</div>
<div class="oe_kanban_title3">
<field name="type_id"/>
</div>
<div class="oe_kanban_title3">
<i><field name="date_action"/><field name="title_action"/></i>
</div>
</td>
</tr>
</table>
</div>
<div class="oe_kanban_buttons_set oe_kanban_color_border oe_kanban_color_bglight oe_kanban_box_show_onclick">
<div class="oe_kanban_left">
<a string="Edit" icon="gtk-edit" type="edit"/>
<a string="Change Color" icon="color-picker" type="color" name="color"/>
<a string="Send New Email" name="%(mail.action_email_compose_message_wizard)d" icon="terp-mail-message-new" type="action"/>
<a string="Add Internal Note" name="%(crm.action_crm_add_note)d" context="{'model': 'crm.lead' }" icon="terp-document-new" type="action"/>
<a name="action_makeMeeting" type="object" string="Schedule Meeting" icon="gtk-redo" />
<a t-if="record.survey.raw_value" name="action_print_survey" type="object" string="Print Interview" icon="gtk-print" />
</div>
<div class="oe_kanban_right">
<a name="case_open" string="Mark Won" states="pending,draft" type="object" icon="lead-stage-won" />
<a name="case_pending" string="Mark Lost" states="draft,open" type="object" icon="lead-stage-lost" />
</div>
<br class="oe_kanban_clear"/>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
# ------------------------------------------------------ # ------------------------------------------------------
# HR Job # HR Job
# ------------------------------------------------------ # ------------------------------------------------------

View File

@ -16,7 +16,7 @@
<record id="hr.employee" model="hr.employee"> <record id="hr.employee" model="hr.employee">
<field name="product_id" ref="product_consultant"/> <field name="product_id" ref="product_consultant"/>
</record> </record>
<record id="analytic_journal" model="account.analytic.journal"> <record id="analytic_journal" model="account.analytic.journal">
<field name="code">TS</field> <field name="code">TS</field>
<field name="name">Timesheet Journal</field> <field name="name">Timesheet Journal</field>

View File

@ -7,6 +7,7 @@
<field name="res_model">account.analytic.account</field> <field name="res_model">account.analytic.account</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="help">You should create an analytic account structure depending on your needs to analyse costs and revenues. In OpenERP, analytic accounts are also used to track customer contracts.</field>
</record> </record>
<record id="todo_define_analytic_structure" model="ir.actions.todo"> <record id="todo_define_analytic_structure" model="ir.actions.todo">

View File

@ -104,8 +104,8 @@
<page string="Categories" position="after"> <page string="Categories" position="after">
<page string="Timesheets" groups="base.group_hr_user"> <page string="Timesheets" groups="base.group_hr_user">
<field name="product_id" domain="[('type','=','service')]"/> <field name="product_id" domain="[('type','=','service')]"/>
<field name="uom_id"/>
<field name="journal_id" widget="selection"/> <field name="journal_id" widget="selection"/>
<field name="uom_id" invisible="1"/>
</page> </page>
</page> </page>
</field> </field>

View File

@ -774,7 +774,8 @@ class res_company(osv.osv):
_inherit = 'res.company' _inherit = 'res.company'
_columns = { _columns = {
'timesheet_range': fields.selection( 'timesheet_range': fields.selection(
[('day','Day'),('week','Week'),('month','Month'),('year','Year')], 'Timesheet range'), [('day','Day'),('week','Week'),('month','Month')], 'Timesheet range',
help="Periodicity on which you validate your timesheets."),
'timesheet_max_difference': fields.float('Timesheet allowed difference(Hours)', 'timesheet_max_difference': fields.float('Timesheet allowed difference(Hours)',
help="Allowed difference in hours between the sign in/out and the timesheet " \ help="Allowed difference in hours between the sign in/out and the timesheet " \
"computation for one sheet. Set this to 0 if you do not want any control."), "computation for one sheet. Set this to 0 if you do not want any control."),

View File

@ -6,7 +6,6 @@
<field name="code">EXPF</field> <field name="code">EXPF</field>
<field name="type">purchase</field> <field name="type">purchase</field>
<field name="view_id" ref="account.account_journal_view"/> <field name="view_id" ref="account.account_journal_view"/>
<field name="sequence_id" ref="account.sequence_journal"/>
<field name="user_id" ref="base.user_root"/> <field name="user_id" ref="base.user_root"/>
<field name="update_posted" eval="True" /> <field name="update_posted" eval="True" />
<field name="entry_posted" eval="True" /> <field name="entry_posted" eval="True" />
@ -17,7 +16,6 @@
<field name="code">BCHF</field> <field name="code">BCHF</field>
<field name="type">cash</field> <field name="type">cash</field>
<field name="view_id" ref="account.account_journal_bank_view"/> <field name="view_id" ref="account.account_journal_bank_view"/>
<field name="sequence_id" ref="account.sequence_journal"/>
<field name="user_id" ref="base.user_root"/> <field name="user_id" ref="base.user_root"/>
<field name="update_posted" eval="True" /> <field name="update_posted" eval="True" />
<field name="entry_posted" eval="True" /> <field name="entry_posted" eval="True" />
@ -28,7 +26,6 @@
<field name="code">BEUR</field> <field name="code">BEUR</field>
<field name="type">cash</field> <field name="type">cash</field>
<field name="view_id" ref="account.account_journal_bank_view"/> <field name="view_id" ref="account.account_journal_bank_view"/>
<field name="sequence_id" ref="account.sequence_journal"/>
<field name="user_id" ref="base.user_root"/> <field name="user_id" ref="base.user_root"/>
<field name="update_posted" eval="True" /> <field name="update_posted" eval="True" />
<field name="entry_posted" eval="True" /> <field name="entry_posted" eval="True" />
@ -40,7 +37,6 @@
<field name="code">CAI</field> <field name="code">CAI</field>
<field name="type">cash</field> <field name="type">cash</field>
<field name="view_id" ref="account.account_journal_bank_view"/> <field name="view_id" ref="account.account_journal_bank_view"/>
<field name="sequence_id" ref="account.sequence_journal"/>
<field name="user_id" ref="base.user_root"/> <field name="user_id" ref="base.user_root"/>
<field name="update_posted" eval="True" /> <field name="update_posted" eval="True" />
<field name="entry_posted" eval="True" /> <field name="entry_posted" eval="True" />
@ -51,7 +47,6 @@
<field name="code">OD</field> <field name="code">OD</field>
<field name="type">general</field> <field name="type">general</field>
<field name="view_id" ref="account.account_journal_bank_view"/> <field name="view_id" ref="account.account_journal_bank_view"/>
<field name="sequence_id" ref="account.sequence_journal"/>
<field name="user_id" ref="base.user_root"/> <field name="user_id" ref="base.user_root"/>
<field name="update_posted" eval="True" /> <field name="update_posted" eval="True" />
<field name="entry_posted" eval="True" /> <field name="entry_posted" eval="True" />
@ -63,7 +58,6 @@
<field name="type">situation</field> <field name="type">situation</field>
<field name="centralisation">True</field> <field name="centralisation">True</field>
<field name="view_id" ref="account.account_journal_view"/> <field name="view_id" ref="account.account_journal_view"/>
<field name="sequence_id" ref="account.sequence_journal"/>
<field name="update_posted" eval="True" /> <field name="update_posted" eval="True" />
</record> </record>

View File

@ -6,7 +6,8 @@
<field name="res_model">lunch.product</field> <field name="res_model">lunch.product</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="view_id" ref="lunch.view_lunch_product_form"/> <field name="view_id" eval="False"/>
<field name="help">Define all products that the employees can order for the lunch time. If you order lunch at several places, you can use the product categories to split by supplier. It will be easier for the lunch manager to filter lunch orders by categories.</field>
</record> </record>
<record id="view_lunch_product_form_todo" model="ir.actions.todo"> <record id="view_lunch_product_form_todo" model="ir.actions.todo">
@ -16,11 +17,12 @@
</record> </record>
<record model="ir.actions.act_window" id="action_create_cashbox"> <record model="ir.actions.act_window" id="action_create_cashbox">
<field name="name">Create CashBox</field> <field name="name">Create Lunch Cash Boxes</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">lunch.cashbox</field> <field name="res_model">lunch.cashbox</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">form</field> <field name="view_mode">tree,form</field>
<field name="help">You can create on cashbox by employee if you want to keep track of the amount due by employee according to what have been ordered.</field>
</record> </record>
<record id="action_create_cashbox_todo" model="ir.actions.todo"> <record id="action_create_cashbox_todo" model="ir.actions.todo">

View File

@ -262,7 +262,7 @@
<form string="Products"> <form string="Products">
<group col="6"> <group col="6">
<field name="name" select="1"/> <field name="name" select="1"/>
<field name="category_id" widget="selection"/> <field name="category_id"/>
<field name="price" /> <field name="price" />
</group> </group>
<notebook colspan="4"> <notebook colspan="4">
@ -300,7 +300,7 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<search string="Products"> <search string="Products">
<field name="name" /> <field name="name" />
<field name="category_id" widget="selection"/> <field name="category_id"/>
<field name="price"/> <field name="price"/>
</search> </search>
</field> </field>

View File

@ -2,11 +2,11 @@
<openerp> <openerp>
<data> <data>
<record model="ir.actions.act_window" id="action_configure_email_server"> <record model="ir.actions.act_window" id="action_configure_email_server">
<field name="name">Configure Email Server</field> <field name="name">Configure Email Servers</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">ir.mail_server</field> <field name="res_model">ir.mail_server</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">form</field> <field name="view_mode">tree,form</field>
</record> </record>
<record model="ir.actions.todo" id="config_wizard_action_configure_email_server"> <record model="ir.actions.todo" id="config_wizard_action_configure_email_server">

View File

@ -19,16 +19,8 @@
<field name="groups_id" eval="[(6, 0, [ref('base.group_extended')])]" /> <field name="groups_id" eval="[(6, 0, [ref('base.group_extended')])]" />
</record> </record>
<record id="action_create_bill_of_materials" model="ir.actions.act_window">
<field name="name">Create Bill of Materials</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">mrp.bom</field>
<field name="view_mode">form,tree</field>
<field name="view_type">form</field>
</record>
<record id="todo_action_create_bill_of_materials" model="ir.actions.todo"> <record id="todo_action_create_bill_of_materials" model="ir.actions.todo">
<field name="action_id" ref="action_create_bill_of_materials" /> <field name="action_id" ref="mrp_bom_form_action" />
<field name="category_id" ref="category_mrp_config" /> <field name="category_id" ref="category_mrp_config" />
</record> </record>

View File

@ -8,20 +8,18 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<data> <data>
<form position="attributes"> <form position="attributes">
<attribute name="string">Load Outlook Plug-In</attribute> <attribute name="string">Install Outlook Plug-In</attribute>
</form> </form>
<separator string="title" position="attributes"> <separator string="title" position="attributes">
<attribute name="string">Load Outlook Plug-In</attribute> <attribute name="string">Install Outlook Plug-In</attribute>
</separator> </separator>
<xpath expr="//label[@string='description']" position="attributes"> <xpath expr="//label[@string='description']" position="attributes">
<attribute name="string">This plug-in allows you to link your e-mail to OpenERP's documents. You can attach it to any existing one in OpenERP or create a new one.</attribute> <attribute name="string">This plug-in allows you to link your e-mail to OpenERP's documents. You can attach it to any existing one in OpenERP or create a new one.</attribute>
</xpath> </xpath>
<xpath expr="//button[@string='Install Modules']" position="replace"> <xpath expr="//button[@string='Install Modules']" position="replace">
<button colspan="1" icon="gtk-close" special="cancel" string="_Close" invisible="not context.get('menu',False)"/> <button colspan="1" icon="gtk-close" special="cancel" string="_Close"/>
<button name="action_next" icon="gtk-go-forward" type="object" string="Configure" colspan="1" invisible="context.get('menu',False)"/>
</xpath> </xpath>
<xpath expr="//button[@string='Skip']" position="replace"> <xpath expr="//button[@string='Skip']" position="replace">
<button name="action_skip" icon="gtk-jump-to" special="cancel" type="object" string="Skip" colspan="1" invisible="context.get('menu',False)"/>
</xpath> </xpath>
<xpath expr="//separator[@string=&quot;vsep&quot;]" position="attributes"> <xpath expr="//separator[@string=&quot;vsep&quot;]" position="attributes">
<attribute name="string"/> <attribute name="string"/>
@ -46,7 +44,7 @@
</record> </record>
<record id="action_outlook_installer" model="ir.actions.act_window"> <record id="action_outlook_installer" model="ir.actions.act_window">
<field name="name">Load Outlook Plug-In</field> <field name="name">Install Outlook Plug-In</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">outlook.installer</field> <field name="res_model">outlook.installer</field>
<field name="view_id" ref="view_outlook_installer"/> <field name="view_id" ref="view_outlook_installer"/>
@ -59,10 +57,11 @@
<field name="action_id" ref="action_outlook_installer"/> <field name="action_id" ref="action_outlook_installer"/>
<field name="category_id" ref="base.category_sales_management_config"/> <field name="category_id" ref="base.category_sales_management_config"/>
<field name="sequence">4</field> <field name="sequence">4</field>
<field name="type">automatic</field>
</record> </record>
<record id="action_outlook_wizard" model="ir.actions.act_window"> <record id="action_outlook_wizard" model="ir.actions.act_window">
<field name="name">Load Outlook Plug-In</field> <field name="name">Install Outlook Plug-In</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">outlook.installer</field> <field name="res_model">outlook.installer</field>
<field name="view_id" ref="view_outlook_installer"/> <field name="view_id" ref="view_outlook_installer"/>
@ -73,10 +72,7 @@
</record> </record>
<menuitem id="base.menu_base_config_plugins" name="Plugins" parent="base.menu_base_config" sequence="10"/> <menuitem id="base.menu_base_config_plugins" name="Plugins" parent="base.menu_base_config" sequence="10"/>
<menuitem id="menu_base_config_plugins_outlook" action="action_outlook_wizard" parent="base.menu_base_config_plugins" sequence="10"/>
<menuitem id="menu_base_config_plugins_outlook" action="action_outlook_wizard" name="Load Outlook Plug-In" parent="base.menu_base_config_plugins" sequence="10"/>
<menuitem id="base.menu_sales" name="Sales" parent="base.menu_base_partner" sequence="1" />
<menuitem id="menu_base_config_plugins_outlook_sales" action="action_outlook_wizard" name="Load Outlook Plug-In" parent="base.menu_sales" />
</data> </data>
</openerp> </openerp>

View File

@ -53,9 +53,9 @@ class pos_open_statement(osv.osv_memory):
continue continue
if journal.sequence_id: if journal.sequence_id:
number = sequence_obj.get_id(cr, uid, journal.sequence_id.id) number = sequence_obj.next_by_id(cr, uid, journal.sequence_id.id)
else: else:
number = sequence_obj.get(cr, uid, 'account.cash.statement') number = sequence_obj.next_by_code(cr, uid, 'account.cash.statement')
data.update({ data.update({
'journal_id': journal.id, 'journal_id': journal.id,

View File

@ -460,6 +460,7 @@ class product_product(osv.osv):
'active': lambda *a: 1, 'active': lambda *a: 1,
'price_extra': lambda *a: 0.0, 'price_extra': lambda *a: 0.0,
'price_margin': lambda *a: 1.0, 'price_margin': lambda *a: 1.0,
'color': 0,
} }
_name = "product.product" _name = "product.product"
@ -486,8 +487,10 @@ class product_product(osv.osv):
'price_margin': fields.float('Variant Price Margin', digits_compute=dp.get_precision('Sale Price')), 'price_margin': fields.float('Variant Price Margin', digits_compute=dp.get_precision('Sale Price')),
'pricelist_id': fields.dummy(string='Pricelist', relation='product.pricelist', type='many2one'), 'pricelist_id': fields.dummy(string='Pricelist', relation='product.pricelist', type='many2one'),
'name_template': fields.related('product_tmpl_id', 'name', string="Name", type='char', size=128, store=True), 'name_template': fields.related('product_tmpl_id', 'name', string="Name", type='char', size=128, store=True),
'color': fields.integer('Color Index'),
'product_image': fields.binary('Image'),
} }
def unlink(self, cr, uid, ids, context=None): def unlink(self, cr, uid, ids, context=None):
unlink_ids = [] unlink_ids = []
unlink_product_tmpl_ids = [] unlink_product_tmpl_ids = []

View File

@ -69,7 +69,7 @@
<field eval="7" name="priority"/> <field eval="7" name="priority"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Product"> <form string="Product">
<group colspan="4" col="6"> <group colspan="4" col="8">
<group colspan="4" col="2"> <group colspan="4" col="2">
<separator string="Name" colspan="2"/> <separator string="Name" colspan="2"/>
<field name="name"/> <field name="name"/>
@ -85,6 +85,9 @@
<field name="sale_ok"/> <field name="sale_ok"/>
<field name="purchase_ok"/> <field name="purchase_ok"/>
</group> </group>
<group colspan="1" col="1">
<field name="product_image" widget='image' nolabel="1"/>
</group>
</group> </group>
<notebook colspan="4"> <notebook colspan="4">
@ -191,6 +194,68 @@
</form> </form>
</field> </field>
</record> </record>
<!-- Product Kanban View -->
<record model="ir.ui.view" id="product_kanban_view">
<field name="name">Product Kanban</field>
<field name="model">product.product</field>
<field name="type">kanban</field>
<field name="arch" type="xml">
<kanban default_group_by="type">
<templates>
<t t-name="kanban-box">
<t t-set="color" t-value="kanban_color(record.color.raw_value || record.type.raw_value)"/>
<div t-att-class="color + (record.color.raw_value == 1 ? ' oe_kanban_color_alert' : '')">
<div class="oe_kanban_box oe_kanban_color_border">
<table class="oe_kanban_table oe_kanban_box_header oe_kanban_color_bgdark oe_kanban_color_border oe_kanban_draghandle">
<tr>
<td class="oe_kanban_title1" align="left" valign="middle">
<t t-if="record.default_code.raw_value">[<field name="default_code"/>]</t>
<field name="name"/>
</td>
<td align="right" valign="top" width="22">
<img t-att-src="kanban_gravatar(record.product_manager.raw_value, 22)" class="oe_kanban_gravatar"/>
</td>
</tr>
</table>
<div class="oe_kanban_box_content oe_kanban_color_bglight oe_kanban_box_show_onclick_trigger">
<table class="oe_kanban_table">
<tr>
<td valign="top" width="22">
<t t-if="record.product_image.raw_value">
<img t-att-src="'data:image/png;base64,'+record.product_image.raw_value" width='48' height='48'/>
</t>
<t t-if="!record.product_image.raw_value">
<img src="/web/static/src/img/product_default.png"/>
</t>
</td>
<td>
<div class="oe_kanban_title2">
<t t-if="record.type.raw_value=='service'">No Stock</t>
<t t-if="record.type.raw_value!='service'">
<div><field name="qty_available"/> On Hand , <field name="virtual_available"/> Available</div>
<div><t t-if="record.list_price.raw_value!=0">Public Price : <field name="lst_price"/> ,</t> Cost : <field name="standard_price"/></div>
</t>
</div>
</td>
</tr>
</table>
</div>
<div class="oe_kanban_buttons_set oe_kanban_color_border oe_kanban_color_bglight oe_kanban_box_show_onclick">
<div class="oe_kanban_left">
<a string="Edit" icon="gtk-edit" type="edit"/>
<a string="Change Color" icon="color-picker" type="color" name="color"/>
</div>
<br class="oe_kanban_clear"/>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="product_normal_action" model="ir.actions.act_window"> <record id="product_normal_action" model="ir.actions.act_window">
<field name="name">Products</field> <field name="name">Products</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
@ -204,12 +269,27 @@
<field name="name">Products</field> <field name="name">Products</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">product.product</field> <field name="res_model">product.product</field>
<field name="view_mode">tree,form,kanban</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="context">{"search_default_filter_to_sell":1}</field> <field name="context">{"search_default_filter_to_sell":1}</field>
<field name="view_id" ref="product_product_tree_view"/> <field name="view_id" ref="product_product_tree_view"/>
<field name="search_view_id" ref="product_search_form_view"/> <field name="search_view_id" ref="product_search_form_view"/>
<field name="help">You must define a Product for everything you buy or sell. Products can be raw materials, stockable products, consumables or services. The Product form contains detailed information about your products related to procurement logistics, sales price, product category, suppliers and so on.</field> <field name="help">You must define a Product for everything you buy or sell. Products can be raw materials, stockable products, consumables or services. The Product form contains detailed information about your products related to procurement logistics, sales price, product category, suppliers and so on.</field>
</record> </record>
<record id="open_view_product_tree1" model="ir.actions.act_window.view">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="product_product_tree_view"/>
<field name="act_window_id" ref="product_normal_action_sell"/>
</record>
<record id="open_view_product_form1" model="ir.actions.act_window.view">
<field name="sequence" eval="2"/>
<field name="view_mode">form</field>
<field name="view_id" ref="product_normal_form_view"/>
<field name="act_window_id" ref="product_normal_action_sell"/>
</record>
<menuitem id="base.menu_product" name="Products" parent="base.menu_base_partner" sequence="9"/> <menuitem id="base.menu_product" name="Products" parent="base.menu_base_partner" sequence="9"/>
<menuitem action="product.product_normal_action_sell" id="product.menu_products" parent="base.menu_product" sequence="1"/> <menuitem action="product.product_normal_action_sell" id="product.menu_products" parent="base.menu_product" sequence="1"/>

View File

@ -470,6 +470,7 @@ class task(osv.osv):
'manager_id': fields.related('project_id', 'analytic_account_id', 'user_id', type='many2one', relation='res.users', string='Project Manager'), 'manager_id': fields.related('project_id', 'analytic_account_id', 'user_id', type='many2one', relation='res.users', string='Project Manager'),
'company_id': fields.many2one('res.company', 'Company'), 'company_id': fields.many2one('res.company', 'Company'),
'id': fields.integer('ID'), 'id': fields.integer('ID'),
'color': fields.integer('Color Index'),
} }
_defaults = { _defaults = {
@ -485,6 +486,21 @@ class task(osv.osv):
_order = "sequence,priority, date_start, name, id" _order = "sequence,priority, date_start, name, id"
def set_priority(self, cr, uid, ids, priority):
"""Set task priority
"""
return self.write(cr, uid, ids, {'priority' : priority})
def set_high_priority(self, cr, uid, ids, *args):
"""Set task priority to high
"""
return self.set_priority(cr, uid, ids, '1')
def set_normal_priority(self, cr, uid, ids, *args):
"""Set task priority to normal
"""
return self.set_priority(cr, uid, ids, '3')
def _check_recursion(self, cr, uid, ids, context=None): def _check_recursion(self, cr, uid, ids, context=None):
for id in ids: for id in ids:
visited_branch = set() visited_branch = set()

View File

@ -9,11 +9,11 @@
</record> </record>
<record id="action_create_initial_projects_installer" model="ir.actions.act_window"> <record id="action_create_initial_projects_installer" model="ir.actions.act_window">
<field name="name">Create your initial projects</field> <field name="name">Create your Firsts Projects</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">project.project</field> <field name="res_model">project.project</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">form</field> <field name="view_mode">tree,form</field>
</record> </record>
<record id="config_wizard_action_create_initial_projects_installer" model="ir.actions.todo"> <record id="config_wizard_action_create_initial_projects_installer" model="ir.actions.todo">
@ -22,7 +22,7 @@
</record> </record>
<record id="action_configure_default_time_unit" model="ir.actions.act_window"> <record id="action_configure_default_time_unit" model="ir.actions.act_window">
<field name="name">Configure Default Time Unit for Project</field> <field name="name">Setup your Project's Time Unit</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">res.company</field> <field name="res_model">res.company</field>
<field name="view_id" ref="base.view_company_form" /> <field name="view_id" ref="base.view_company_form" />
@ -33,6 +33,7 @@
<record id="config_wizard_action_configure_default_time_unit" model="ir.actions.todo"> <record id="config_wizard_action_configure_default_time_unit" model="ir.actions.todo">
<field name="action_id" ref="action_configure_default_time_unit" /> <field name="action_id" ref="action_configure_default_time_unit" />
<field name="category_id" ref="category_project_config" /> <field name="category_id" ref="category_project_config" />
<field name="type">once</field>
</record> </record>
<record id="action_review_task_stage" model="ir.actions.act_window"> <record id="action_review_task_stage" model="ir.actions.act_window">
@ -41,8 +42,9 @@
<field name="res_model">project.task.type</field> <field name="res_model">project.task.type</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="context">{}</field> <field name="context">{'search_default_common': 1, 'default_project_default': 1}</field>
<field name="domain">[]</field> <field name="domain">[]</field>
<field name="help">The stages can be common to all project or specific to one project. Each task will follow the different stages in order to be closed.</field>
</record> </record>
<record id="config_wizard_action_review_task_stage" model="ir.actions.todo"> <record id="config_wizard_action_review_task_stage" model="ir.actions.todo">

View File

@ -313,62 +313,71 @@
</field> </field>
</record> </record>
<!-- Project Task Kanban View -->
<record id="view_task_kanban" model="ir.ui.view"> <record model="ir.ui.view" id="view_task_kanban">
<field name="name">project.task.kanban</field> <field name="name">project.task.kanban</field>
<field name="model">project.task</field> <field name="model">project.task</field>
<field name="type">kanban</field> <field name="type">kanban</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<kanban> <kanban default_group_by="type_id" >
<field name="state"/>
<templates> <templates>
<t t-name="kanban-box"> <t t-name="kanban-box">
<t t-set="color">#fff</t> <t t-set="color" t-value="kanban_color(record.color.raw_value || record.type_id.raw_value)"/>
<t t-if="state.raw_value == 'done'" t-set="color">#dfd</t> <div t-att-class="color + (record.priority.raw_value == 1 ? ' oe_kanban_color_alert' : '')">
<t t-if="state.raw_value == 'open'" t-set="color">lightcyan</t> <div class="oe_kanban_box oe_kanban_color_border">
<t t-if="state.raw_value == 'cancel' and total_hours.raw_value gt 0" t-set="color">red</t> <table class="oe_kanban_table oe_kanban_box_header oe_kanban_color_bgdark oe_kanban_color_border oe_kanban_draghandle">
<div t-attf-style="background: #{color}"> <tr>
<table> <td class="oe_kanban_title1" align="left" valign="middle">
<tr> <a t-if="record.priority.raw_value == 1" icon="star-on" type="object" name="set_normal_priority"/>
<td>Title :</td> <a t-if="record.priority.raw_value != 1" icon="star-off" type="object" name="set_high_priority" style="opacity:0.6; filter:alpha(opacity=60);"/>
<td><field name="name"/></td> <field name="name"/>
</tr> </td>
<tr> <td valign="top" width="22">
<td>Progress :</td> <img t-att-src="kanban_gravatar(record.user_id.value, 22)" class="oe_kanban_gravatar"/>
<td><field name="progress"/></td> </td>
</tr> </tr>
<tr> </table>
<td><button data-type="action" data-name="%(action_project_task_reevaluate)d">Reevaluate</button><button data-type="edit" >Edit</button></td> <div class="oe_kanban_box_content oe_kanban_color_bglight oe_kanban_box_show_onclick_trigger">
<td><button data-type="object" data-name="prev_type">Previous phase</button></td> <div class="oe_kanban_right oe_kanban_small">
</tr> <field name="user_id"/>
<tr> </div>
<td>Project name:</td> <div class="oe_kanban_title2">
<td colspan="2"><field name="project_id"/></td> <field name="project_id"/>
</tr> </div>
<tr> <div class="oe_kanban_small">
<td>Phase</td> <a target="_blank" t-att-href="'http://pad.openerp.com/'+record.name.raw_value.toLowerCase().replace(' ','-')">
<td colspan="2"><field name="type_id"/></td> http://pad.openerp.com/<t t-esc="record.name.raw_value.toLowerCase().replace(' ','-')"/>
</tr> </a>
<tr> </div>
<td>Remain Time :</td> <div class="oe_kanban_small">
<td colspan="2"><field name="remaining_hours"/></td> <i><field name="date_deadline"/></i>
</tr> </div>
<tr> </div>
<td>Spent Time :</td> <div class="oe_kanban_buttons_set oe_kanban_color_border oe_kanban_color_bglight oe_kanban_box_show_onclick">
<td colspan="2"><field name="remaining_hours"/></td> <div class="oe_kanban_left">
</tr> <a string="Edit" icon="gtk-edit" type="edit"/>
<tr> <a string="Change Color" icon="color-picker" type="color" name="color"/>
<td>Remain Time :</td> <a string="" />
<td colspan="2"><field name="remaining_hours"/></td> <a title="OpenERP Pad" icon="pad-openerp" target="_blank" t-att-href="'http://pad.openerp.com/'+record.name.value" style="text-decoration: none;" >
</tr> <img src="/web/static/src/img/icons/pad-openerp.png" border="0" width="16" height="16"/>
</table> </a>
<a name="%(action_project_task_delegate)d" string="Delegate" states="pending,open,draft" type="action" icon="gtk-sort-descending" />
</div>
<div class="oe_kanban_right">
<a name="do_cancel" string="Mark Lost" states="draft,open,pending" type="object" icon="lead-stage-lost"/>
<a name="do_pending" string="Pending" states="open" type="object" icon="gtk-media-pause"/>
<a name="action_close" string="Mark Won" states="pending,open" type="object" icon="lead-stage-won"/>
</div>
<br class="oe_kanban_clear"/>
</div>
</div>
</div> </div>
</t> </t>
</templates> </templates>
</kanban> </kanban>
</field> </field>
</record> </record>
<record id="view_task_tree2" model="ir.ui.view"> <record id="view_task_tree2" model="ir.ui.view">
<field name="name">project.task.tree</field> <field name="name">project.task.tree</field>
@ -502,6 +511,21 @@
<field name="search_view_id" ref="view_task_search_form"/> <field name="search_view_id" ref="view_task_search_form"/>
<field name="help">A task represents a work that has to be done. Each user works in his own list of tasks where he can record his task work in hours. He can work and close the task itself or delegate it to another user. If you delegate a task to another user, you get a new task in pending state, which will be reopened when you have to review the work achieved. If you install the project_timesheet module, task work can be invoiced based on the project configuration. With the project_mrp module, sales orders can create tasks automatically when they are confirmed.</field> <field name="help">A task represents a work that has to be done. Each user works in his own list of tasks where he can record his task work in hours. He can work and close the task itself or delegate it to another user. If you delegate a task to another user, you get a new task in pending state, which will be reopened when you have to review the work achieved. If you install the project_timesheet module, task work can be invoiced based on the project configuration. With the project_mrp module, sales orders can create tasks automatically when they are confirmed.</field>
</record> </record>
<record id="action_view_task_tree" model="ir.actions.act_window.view">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="view_task_tree2"/>
<field name="act_window_id" ref="action_view_task"/>
</record>
<record id="action_view_task_form" model="ir.actions.act_window.view">
<field name="sequence" eval="2"/>
<field name="view_mode">form</field>
<field name="view_id" ref="view_task_form2"/>
<field name="act_window_id" ref="action_view_task"/>
</record>
<menuitem action="action_view_task" id="menu_action_view_task" parent="project.menu_project_management" sequence="3"/> <menuitem action="action_view_task" id="menu_action_view_task" parent="project.menu_project_management" sequence="3"/>
<record id="action_view_task_overpassed_draft" model="ir.actions.act_window"> <record id="action_view_task_overpassed_draft" model="ir.actions.act_window">
@ -533,6 +557,21 @@
</record> </record>
<!-- Task types --> <!-- Task types -->
<record id="task_type_search" model="ir.ui.view">
<field name="name">project.task.type.search</field>
<field name="model">project.task.type</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Tasks Stages">
<group>
<filter icon="terp-check" string="Common" name="common" domain="[('project_default', '=', 1)]" help="Stages common to all projects"/>
<separator orientation="vertical"/>
<field name="name"/>
</group>
</search>
</field>
</record>
<record id="task_type_edit" model="ir.ui.view"> <record id="task_type_edit" model="ir.ui.view">
<field name="name">project.task.type.form</field> <field name="name">project.task.type.form</field>
<field name="model">project.task.type</field> <field name="model">project.task.type</field>
@ -540,7 +579,7 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Task Stage"> <form string="Task Stage">
<group colspan="4" col="6"> <group colspan="4" col="6">
<field name="name" select="1"/> <field name="name"/>
<field name="project_default"/> <field name="project_default"/>
<field name="sequence"/> <field name="sequence"/>
</group> </group>
@ -624,7 +663,6 @@
</group> </group>
</field> </field>
</record> </record>
<act_window context="{'search_default_user_id': [active_id], 'default_user_id': active_id}" domain="[('state', '&lt;&gt;', 'cancelled'),('state', '&lt;&gt;', 'done')]" id="act_res_users_2_project_task_opened" name="Assigned tasks" res_model="project.task" src_model="res.users" view_mode="tree,form,gantt,calendar,graph" view_type="form"/> <act_window context="{'search_default_user_id': [active_id], 'default_user_id': active_id}" domain="[('state', '&lt;&gt;', 'cancelled'),('state', '&lt;&gt;', 'done')]" id="act_res_users_2_project_task_opened" name="Assigned Tasks" res_model="project.task" src_model="res.users" view_mode="tree,form,gantt,calendar,graph" view_type="form"/>
<act_window context="{'search_default_user_id': [active_id], 'default_user_id': active_id}" domain="[('date', '&gt;=', time.strftime('%Y-%m-01'))]" id="act_res_users_2_project_task_work_month" name="Month works" res_model="project.task.work" src_model="res.users" view_mode="tree,form" view_type="form"/>
</data> </data>
</openerp> </openerp>

View File

@ -226,6 +226,7 @@ class project_issue(crm.crm_case, osv.osv):
multi='compute_day', type="float", store=True), multi='compute_day', type="float", store=True),
'inactivity_days': fields.function(_compute_day, string='Days since last action', \ 'inactivity_days': fields.function(_compute_day, string='Days since last action', \
multi='compute_day', type="integer", help="Difference in days between last action and current date"), multi='compute_day', type="integer", help="Difference in days between last action and current date"),
'color': fields.integer('Color Index'),
'message_ids': fields.one2many('mail.message', 'res_id', 'Messages', domain=[('model','=',_name)]), 'message_ids': fields.one2many('mail.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
'date_action_last': fields.datetime('Last Action', readonly=1), 'date_action_last': fields.datetime('Last Action', readonly=1),
'date_action_next': fields.datetime('Next Action', readonly=1), 'date_action_next': fields.datetime('Next Action', readonly=1),
@ -258,7 +259,22 @@ class project_issue(crm.crm_case, osv.osv):
'priority': crm.AVAILABLE_PRIORITIES[2][0], 'priority': crm.AVAILABLE_PRIORITIES[2][0],
'project_id':_get_project, 'project_id':_get_project,
'categ_id' : lambda *a: False, 'categ_id' : lambda *a: False,
} }
def set_priority(self, cr, uid, ids, priority):
"""Set lead priority
"""
return self.write(cr, uid, ids, {'priority' : priority})
def set_high_priority(self, cr, uid, ids, *args):
"""Set lead priority to high
"""
return self.set_priority(cr, uid, ids, '1')
def set_normal_priority(self, cr, uid, ids, *args):
"""Set lead priority to normal
"""
return self.set_priority(cr, uid, ids, '3')
def convert_issue_task(self, cr, uid, ids, context=None): def convert_issue_task(self, cr, uid, ids, context=None):
case_obj = self.pool.get('project.issue') case_obj = self.pool.get('project.issue')

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