Hello world. Today i am gonna share about little trick in Odoo, this is a how to make field name sequence. Actually its basic from Odoo, but i just know when i got task like that. Lol. So just follow my step by step.
1. Declaration code for sequence
For declaration sequence i create xml file like this. the code is test.dedy.yuristiawan, prefix DY, padding is 5, and it would be like this 'DY00001'. Prefix is for first char (DY) and padding is for long number (00001). You can call this sequence with test.dedy.yuristiawan. See this code
<?xml version="1.0" encoding="utf-8"?> <openerp> <data noupdate="1"> <record id="seq_test_dedy_yuristiawan" model="ir.sequence"> <field name="name">Test Dedy Yuristiawan</field> <field name="code">test.dedy.yuristiawan</field> <field name="prefix">DY</field> <field name="padding">5</field> <field eval="1" name="number_increment"/> </record> </data> </openerp>
and then i put this code in test_dedy_yuristiawan.xml
2. Override Function set Field Name, before Create.
Yap, now i override create function like this. This code i set field name readonly=True (anybody can't change) and call self.env['ir.sequence'].next_by_code('test.input.machine') that i create in xml file. If you don't know about override function i will create specially post for How to Override Function in Odoo in the next post.
name = fields.Char('Code Dedy', readonly=True) @api.model def create(self, vals): print "+++++++++++++++++++++++++++++++++++++++++++++++++" print "prepare inherit create function" print "change the name TI with sequence" vals['name'] = self.env['ir.sequence'].next_by_code('test.input.machine') print "Inherit complete" print "+++++++++++++++++++++++++++++++++++++++++++++++++" return super(test_input_machine, self).create(vals)
3. Declaration xml file into __openerp__.py
Last step don't forget to declaration xml file to __openerp__.py
'data' : [ 'data/test_dedy_yuristiawan.xml',
That it, i hope this is can help you little bit, so if you still confuse about my code, you fill comment bellow and i will try to help you later. Thanks.
Hi, can you help me a bit with this? i'm trying to create a sequencer for the pos.order model, i need to put a sequence number in a field whenever the order is not in the 'invoiced' state. hope you can give me some light about it. Thanks!
ReplyDeleteHi Othawan, maybe you can add condition in function create, you can set sequencer in this condition if self.state != 'invoiced' : . So when state in invoiced, function create will fill default base Odoo. Maybe this can help you.
DeleteThanks for your reply i'm just starting developing modules in odoo, so i will need to figure out how to do it.
Deleteyour welcome Othawan, take it easy man, if you know just little bit process and syntax Odoo, you will realise 'develop Odoo its easy'
DeleteHello All, In V10, How can I put control on generation of Automatic sequence numbers ? For example, If we take Manufacturing Order. When we create Manufacturing Order, a sequence like MO/0001 is generated. Suppose we discarded it without Saving. Next time when we create a new order the sequence we are getting is MO/0002. How to prevent this?
ReplyDeleteplease tell me in odoo10
hai.. then how to reset the sequence yearly?
ReplyDeletehi, thats great question, sorry now i am not working on Odoo environment, that possible to reset the sequence yearly, you can create file xml preparing for next year, and make condition on prython code for next year too, but this is not best practice, i think. Perhaps you can ask to your senior on Port Cities, He is AFK (Akhmad Firstyan Kresna), I know him, i think he is more genius about Odoo. I am actually ex PortCities engineer.
DeleteNo, he doesn't know.. :D dia g ngerti mas gmn caranya.. dia paling jago js.. kemarin aku udh nyoba2 di pythonnya, tp blm bisa juga..
Deletekalau gitu makasih ya mas,
ReplyDeleteHi' Dedy. May you help me please? I need to change the ticket numbers sequence in POS. I'm using Odoo 8. Thanks in advanced!
ReplyDeleteThis comment has been removed by the author.
ReplyDeletehi sir. How can i use this test_dedy_yuristiawan.xml sequence? i have my own xml, did i need to put any line codes to my xml to link to your test_dedy_yuristiawan.xml? Hope you can help and answer me. Many thanks
ReplyDeletegot it. thanks
Delete"test.input.machine" is this class in our models ? or something else ?
ReplyDeletei want to create a sequence and that model in tree and linked with form with one2many...but i want is boolean is true then generate sequence and if boolean false then dont generate sequence..my code is this..
ReplyDelete@api.model
def create(self, vals):
new_record = super(BundlesCuttingTree, self).create(vals)
print "check1"
if new_record.barcode_boolean == True:
print "check2"
print new_record.barcode
new_record.barcode = self.env['ir.sequence'].next_by_code('bundles.cutting.tree')
print type(new_record.barcode)
print new_record.barcode
return new_record