2017-02-04 7 views
0

私はPOS Odooに値はJS Odoo POSでのモデル

マイprice.js

get_unit_display_price: function(){ 
    var self = this;     
    var line = self.export_as_JSON(); 
    var product = this.pos.db.get_product_by_id(line.product_id);   
    fields.product_id = line.product_id; 
    fields.pricelist_id = this.pos.config.pricelist_id[0]; 
    fields.uom = product.uom_id; 
    fields.line_qty = line.qty; 
    fields.price_unit = line.price_unit; 
    var model = new Model('pos.order'); 
    this.total_price = model.call('calculate_price', 
      [0, fields]).done(function(result){ 
       total_price = result['total_price']; 
       return result['total_price']; 
      }); 

} 

price.xml

<t t-jquery=".price" t-operation="append">  
     <t t-esc="widget.format_currency(line.get_unit_display_price)"/> 
    </t> 
を[注文ラインの価格を上書きしようとしているを返す定義されていません

値を取得していますtotal_priceモデル(値段) xmlファイルのget_unit_display_priceにはが未定義で返されます。

新しいモデル関数(モデルからのjs値)の実行後にjsから値を設定する方法は?あなたのコードには多くの問題があります

答えて

0

、私はいくつかを一覧表示することができます:[注文ラインのモデルを拡張し、あなたのprice.jsで

  1. 、あなたがバックエンドから機能「caculate_price」と呼ばれる=>それは非同期関数ですので、私はすることができますすぐに値を返す=>関数がundefinedを呼び出す前に返す
  2. export_as_JSON()が必要ない場合は、Orderlineオブジェクトから直接(field:product_id、uom、qty、price_unit)の値を取得できます。
  3. "price.xml"では、モデルから関数を呼び出そうとしていますが、親子が見つからなかった場合は、line.get_unit_display_price()のようになります。新モデル関数 (モデルからのJS値)の実行後のjsからXMLに値を設定する方法

?。

  • オプション1:

は、2つのオプションがあり、rpcを介してサーバ上のPYファイルのメソッドを呼び出して、あなたが行ったように、その後(私はこの方法をお勧めしません)応答結果を待ちます。したがって、呼び出しが完了したら、値をHTMLで表示してから値を更新するDOMを取得する必要があります。

  • オプション2:Orderlineモデルのサーバーと同じロジックを実行するメソッド "calculate_price"を実装することをお勧めします。そうすれば、POSはインターネットなしで動作することができます(セミオフラインモード)。その後、xmlファイルから簡単に呼び出すことができます。それはあなたが、あなたのprice.jsに機能calculate_priceを書く
  • get_unit_display_priceでそれを呼び出すこと、それは、私はあなたがオプションに行うことを願っています助けるホープ2.

    0
    get_orderline: function() { 
        var order = this.pos.get_order(); 
        var orderlines = order.orderlines.models; 
        var all_lines = []; 
        for (var i = 0; i < orderlines.length; i++) { 
         var line = orderlines[i] 
         if (line) { 
          all_lines.push({ 
           'product_id': line.product.id, 
           'qty': line.quantity, 
           'price': line.get_display_price(), 
          }) 
         } 
        } 
        return all_lines 
    }, 
    
    関連する問題