This question has been flagged
4 Replies
8236 Views

Hello,

Im trying to create a button with method when you click on it would create a new row with default values in the tree view maybe there is any examples that i could have a look?

I already got the button just strugling with the function.

Any examples and help would be appreaciated

Thank you,

Avatar
Discard

Why not using the Add Item link? Make the tree view not readonly?

Author

I mean yes add a link is a good example, but what im trying to do is generate lots of date when you click a button with predefined default values.

Check the create_period method in odoo/odoo/addons/account/account.py. It is called from a button in view_account_fiscalyear_form view (odoo/addons/account/account_view.xml)

And if you create without passing any value, it will use all default values.

Author

Ivan thanks very good example!

Best Answer

If you simply want to create a record for any table (on API v7) you only need to call the create method and supply the required fields. For example, if you are on the view for sale orders and for some season you need to create a product, you could use following code:

product_obj = self.pool.get('product.product')

product_id = product_obj.create(cr, uid, {'name': 'My product'})

In this case, product only needs a name to be supplied in the function, but any other object needs to have a dictionary of required fields to be supplied. Of course this can also be used in a loop if you want to generate multiple entries. Something like so:

product_obj = self.pool.get('product.product')

names_list = ['item1', 'item2', 'item3']

for name in names_list:

    product_id = product_obj.create(cr, uid, {'name': name})

This is under the assumption that you use the ORM on Odoo v7. If you use the new API, creation is only slightly different.

Avatar
Discard
Author Best Answer

Thanks guys really helpful!


 

Avatar
Discard
Best Answer

If you're looking for an example, there is one at page "Accounting/Configuration/Periods/Fiscal Years" when you create new fiscal year, there is two buttons "Create Monthly Periods" and "Create 3 Months Periods" with exactly same behavior as you're truing to implement. So you can take look and you'll get idea how to continue.

Avatar
Discard
Best Answer

Try this :

You add this In py:

    _columns = {

        'id_no' : fields.char('id no', size=64),
}

    _defaults = {
        'id_no': lambda self,cr,uid,context={}: self.pool.get('ir.sequence').get(cr, uid, 'sequence_code'),
}

    def add(self, cr, uid, ids, context):
        vals = {}
        vals['id_no'] = 'Pre'+ids[0]
        self.create(cr, SUPERUSER_ID, vals, context)
        return True

 

In view:

<record>
----------
 <field name="id_no"/>
<button name="add" colspan="1" string="Add" type="object" />
</record>

<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>

Avatar
Discard