2017-08-24 1 views
0

J'ai essayé Odoo 9 et je veux remplacer le champ "Total" = amount_total par un nouveau champ qui est le résultat d'un ajout de contenu de champ (sum_of_total) avec l'expression XPath mais il échoue et ne retourne aucun résultat.
Voici mon code XML:champ remplacer sur odoo en utilisant xpath

<openerp> 
    <data> 
     <record id="purchase_order_form_training1" model="ir.ui.view"> 
      <field name="name">purchase.order.form1</field> 
      <field name="model">purchase.order</field> 
      <field name="inherit_id" ref="purchase.purchase_order_form"/> 
      <field name="arch" type="xml"> 
       <field name="amount_tax" position="after"> 
        <field name="down_payment" widget="monetary" options="{'currency_field':'currency_id'}"/> 
       </field> 
       <xpath expr="form1/sheet/page/group/field[@name='amount_total']" position="replace"> 
        <field name="sum_of_total"/> 
       </xpath> 
      </field> 
     </record> 
    </data> 
</openerp> 

Le journal des Odoo ne m'a pas montré aucune erreur de syntaxe. Quelqu'un peut-il m'aider à identifier la cause première?

ci-dessous pour comprendre Référez comment sum_of_total est initialisé se

from openerp import models, fields, api, _ 

class purchase_order(models.Model): 
    _inherit = "purchase.order" 

    @api.one 
    @api.depends('down_payment', 'amount_total') 
    def get_total_after_dp(self): 
     dp = self.down_payment 
     tot = selt.amount_total 
     tota = tot + dp 
     self.sum_of_total = tota 

    sum_of_total = fields.Float('Total Amount', 
            compute='get_total_after_dp') 

    down_payment = fields.Float('Down Payment') 
+0

Que dit exactement le message d'erreur? Essayez

+0

Je pense que l'erreur provient de 'form1' dans l'expression expr. Essayez comme Manu a suggéré. Utilisez '// field [@name = ...]' à la place – thangtn

Répondre

1

Il n'y a pas form1 dans l'achat vue formulaire de commande. Essayez ceci:

<xpath expr="form/sheet/notebook/page/group/field[@name='amount_total']" position="replace"> 
    <field name="sum_of_total"/> 
</xpath> 
+0

Vous pourriez aussi court-circuiter ceci: '// field [@ name = 'amount_total']'. Vous recherchez un champ directement à l'aide de son nom, vous n'avez donc pas besoin de fournir un chemin d'accès complet. –

+0

oui, vous pouvez également le faire. –