This question has been flagged
1 Reply
10595 Views

hey all,

I have a new problem for you.

I was sure of my code this time, but I finally still have a problem.

Our goal is to set the category expense account with XML only. In the picture, it is set to 51100, but we want to change it.


Example 1 : WORKING

     <?xml version="1.0" encoding="utf-8"?>

             <openerp>

              <data noupdate="0">

              <record id="product_lapagept.achats" model="product.category">

              <field name="name">Achats - PT</field>

               </record>

          </data>

         </openerp>


Example 2 : not WORKING

  • (account_lapagept.stock_en_transit is a valid external ID)

  • (we depend of product and account_lapagept in the __openerp__.py file)

         <?xml version="1.0" encoding="utf-8"?>

             <openerp>

                  <data noupdate="0">

                      <record id="product_lapagept.achats" model="product.category">

                          <field name="name">Achats - PT</field>

                          <field name="property_account_expense_categ" eval="[(6, 0, [ref('account_lapagept.stock_en_transit')])]" />

                      </record>

                  </data>

             </openerp>


What is the problem with our line 

<field name="property_account_expense_categ" eval="[(6, 0, [ref('account_lapagept.stock_en_transit')])]" />

????


Thanks

Avatar
Discard
Best Answer

Hi,

for a many2one field, just use ref like :

<field name="property_account_expense_categ" ref="account_lapagept.stock_en_transit" />


corresponding number to use for type field at end of this page :

 
https://doc.odoo.com/6.0/developer/2_5_Objects_Fields_Methods/methods/

For a many2many field, a list of tuples is expected. Here is the list of tuple that are accepted, with the corresponding semantics

(0, 0, { values }) link to a new record that needs to be created with the given values dictionary

(1, ID, { values }) update the linked record with id = ID (write *values* on it)

(2, ID) remove and delete the linked record with id = ID (calls unlink on ID, that will delete the object completely, and the link to it as well)

(3, ID) cut the link to the linked record with id = ID (delete the relationship between the two objects but does not delete the target object itself)

(4, ID) link to existing record with id = ID (adds a relationship)

(5) unlink all (like using (3,ID) for all linked records)

(6, 0, [IDs]) replace the list of linked IDs (like using (5) then (4,ID) for each ID in the list of IDs)

Example:

[(6, 0, [8, 5, 6, 4])] sets the many2many to ids [8, 5, 6, 4]



For a one2many field, a lits of tuples is expected. Here is the list of tuple that are accepted, with the corresponding semantics

(0, 0, { values }) link to a new record that needs to be created with the given values dictionary

(1, ID, { values }) update the linked record with id = ID (write *values* on it)

(2, ID) remove and delete the linked record with id = ID (calls unlink on ID, that will delete the object completely, and the link to it as well)

Example:

[(0, 0, {'field_name':field_value_record1, ...}), (0, 0, {'field_name':field_value_record2, ...})]

For a many2one field, simply use the ID of target record, which must already exist, or False to remove the link.

For a reference field, use a string with the model name, a comma, and the target object id (example: 'product.product, 5')

bye

Avatar
Discard
Author

I used only « ref » and it works well! Thanks a lot.