Odoo Help
Odoo is the world's easiest all-in-one management software. It includes hundreds of business apps:
CRM
|
e-Commerce
|
Accounting
|
Inventory
|
PoS
|
Project management
|
MRP
|
etc.
auto incrementing on new field
How can i make a new field be auto increment? I added a new field for the res.partner and i want it to be automatically filed with a auto infringement number if the partner i category is not number 1. Any easy way to make this? Could it be done using the sequences?
You can make a record for sequence. here is example to make sequence. Create new xml file.
<openerp> <data noupdate="1">
<!-- Sequences for sale.order -->
<record id="seq_unique_id" model="ir.sequence.type">
<field name="name">my_sequence</field>
<field name="code">sequence_code</field>
</record>
<record id="seq_unique_id2" model="ir.sequence">
<field name="name">my_sequence</field>
<field name="code">sequence_code</field>
<field name="prefix">prefix</field>
<field name="padding">3</field>
</record>
</data>
</openerp>
after creating the file you need to initialise it in the __openerp__,py file.
Then in your model.py file where your field is defined in _columns. you need to set default value for that using.
_columns = {
'new_field': fields.char('New Field', size=16),
}
_defaults = {
'new_field': lambda self,cr,uid,context={}: self.pool.get('ir.sequence').get(cr, uid, 'sequence_code'),
}
update the module, Now whenever you will create a record it will get a sequence from the database.
It will help you.
In your .xml file :
<?xml version="1.0"?>
<openerp>
<data>
<record id="view_mutante_form" model="ir.ui.view">
<field name="name">res.partner.form.inherit</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="arch" type="xml">
<xpath expr="/form/sheet/group/group/label[@for='street']" position="before">
<field name="n_client" attrs="{'invisible':[('customer','!=',True)]}"/>
<field name="n_supplier" attrs="{'invisible':[('supplier','!=',True)]}"/>
</xpath>
</field>
</record>
</data>
<data noupdate="1">
<record model="ir.sequence.type" id="seq_type_res_partner">
<field name="name">number_client_sequence</field>
<field name="code">res.partner.customer</field>
</record>
<record model="ir.sequence" id="seq_res_partner">
<field name="name">number_client_sequence</field>
<field name="code">res.partner.customer</field>
<field name="prefix">C</field>
<field name="padding">6</field>
</record>
<record model="ir.sequence.type" id="seq_type_res_supplier">
<field name="name">number_supplier_sequence</field>
<field name="code">res.partner.supplier</field>
</record>
<record model="ir.sequence" id="seq_res_supplier">
<field name="name">number_supplier_sequence</field>
<field name="code">res.partner.supplier</field>
<field name="prefix">S</field>
<field name="padding">6</field>
</record>
</data>
</openerp>
In your .py file :
# -*- coding: utf-8 -*-
from openerp.osv import fields, osv
import openerp.addons.decimal_precision as dp
class res_partner(osv.osv):
_inherit = 'res.partner'
_name = 'res.partner'
_columns = {
'n_client' : fields.char('Client Number', size=64, readonly=True),
'n_supplier' : fields.char('Supplier Number', size=64, readonly=True),
}
_sql_constraints = [
('name_uniq_1', 'unique(n_client)', 'Number of client must be unique!'),
('n_supplier_uniq', 'unique(n_supplier)', 'Number of supplier must be unique!'),
]
def create(self, cr, uid, vals, context=None):
if vals.get('n_client') == None:
vals['n_client'] = self.pool.get('ir.sequence').get(cr, uid, 'res.partner.customer')
if vals.get('n_supplier') == None:
vals['n_supplier'] = self.pool.get('ir.sequence').get(cr, uid, 'res.partner.supplier')
return super(res_partner,self).create(cr, uid, vals, context)
def copy(self, cr, uid, id, default=None, context=None):
default.update({
'n_client': self.pool.get('ir.sequence').get(cr, uid, 'res.partner.customer'),
'n_supplier': self.pool.get('ir.sequence').get(cr, uid, 'res.partner.supplier')
})
return super(res_partner, self).copy(cr, uid, id, default, context)
res_partner()
About This Community
This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.
RegisterOdoo Training Center
Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.
Test it nowQuestion tools
Stats
Asked: 2/3/14, 8:44 AM |
Seen: 6256 times |
Last updated: 3/16/15, 8:10 AM |
Please take a look at http://stackoverflow.com/questions/21375392/openerp-v7-sequence-number/21377556?noredirect=1#comment32274773_21377556