2016-08-17 2 views
2

J'essaie de modifier la valeur par défaut de la liste de prix de vente d'un partenaire (champ property_product_pricelist, onglet Ventes & Achats, modèle res.partner). Il semble que cette valeur par défaut a été introduite via XML (puisque ce champ est de type propriété), ajout d'un enregistrement au modèle ir.property:Comment modifier la valeur par défaut d'un champ de propriété dans Odoo 8?

<record id="list0" model="product.pricelist"> 
    <field name="name">Public Pricelist</field> 
    <field name="type">sale</field> 
</record> 
<record id="ver0" model="product.pricelist.version"> 
    <field name="pricelist_id" ref="list0"/> 
    <field name="name">Default Public Pricelist Version</field> 
</record> 
<record id="item0" model="product.pricelist.item"> 
    <field name="price_version_id" ref="ver0"/> 
    <field name="base" ref="list_price"/> 
    <field name="sequence">1000</field> 
    <field name="name">Default Public Pricelist Line</field> 
</record> 

<!-- 
Property 
--> 
<record forcecreate="True" id="property_product_pricelist" model="ir.property"> 
    <field name="name">property_product_pricelist</field> 
    <field name="fields_id" search="[('model','=','res.partner'),('name','=','property_product_pricelist')]"/> 
    <field eval="'product.pricelist,'+str(ref('list0'))" name="value"/> 
</record> 

donc je suppose (je n'ai pas essayé) que si vous modifier cet enregistrement XML, vous modifiez la valeur par défaut, par exemple:

<record forcecreate="True" id="product.property_product_pricelist" model="ir.property"> 
    <field name="name">property_product_pricelist</field> 
    <field name="fields_id" search="[('model','=','res.partner'),('name','=','property_product_pricelist')]"/> 
    <field eval="'product.pricelist,'+str(ref('my_default_pricelist'))" name="value"/> 
</record> 

le problème est que je veux présenter différentes valeurs par défaut en fonction d'autres champs (user_id). Je veux dire, si user_id est le res.users avec ID , je veux que le public Pricelist comme la liste des prix par défaut, sinon, je veux la liste des prix créé par moi (my_default_pricelist) comme par défaut.

Quelqu'un peut-il m'aider, s'il vous plaît?

Répondre

0

Si vous voulez des valeurs par défaut conditionnelles, vous devez passer à Python.

Essayez d'étendre le modèle et de redéfinir le champ, mais cette fois-ci, utilisez l'argument fnct=compute_method. compute_method est la méthode qui s'exécutera à chaque fois pour définir la valeur par défaut du champ. La classe property utilisée par le champ property_product_pricelist est une extension de la classe function. Rendez-vous au openerp/osv/fields.py et trouvez la définition de la classe function et jetez un oeil aux paramètres.