0

POS Odoo でオーダーラインの価格を上書きしようとしています

私の価格.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'];
            });

}

価格.xml

    <t t-jquery=".price" t-operation="append">      
        <t t-esc="widget.format_currency(line.get_unit_display_price)"/>
    </t>

モデル (price.py) から値total_priceを取得していますが、xml ファイルの get_unit_display_price で戻り値が定義されていません。

新しいモデル関数 (モデルからの js 値) の実行後に js から xml に値を設定する方法?.

4

2 に答える 2

0

コードには多くの問題があります。いくつかリストできます。

  1. Orderlineモデルを拡張するprice.jsで、バックエンドから関数「caculate_price」を呼び出しました=>非同期関数なので、すぐに値を返すことができません=>undefined呼び出しが成功する前に関数が戻ります
  2. 必要はありません。必要なexport_as_JSON()値 (フィールド: product_id、uom、qty、price_unit) を Orderline オブジェクトから直接取得できます。
  3. "price.xml" で、モデルから関数を呼び出したい場合、括弧がありません。このようにする必要がありますline.get_unit_display_price()

新しいモデル関数 (モデルからの js 値) の実行後に js から xml に値を設定する方法?.

2 つのオプションがあります。

  • オプション 1: を介してサーバー上の py ファイルのメソッドを呼び出しrpc、応答結果を待ちます (この方法はお勧めしません)。したがって、呼び出しが完了したら、値が HTML で表示される DOM を取得し、それに値を更新する必要があります。
  • オプション 2: モデル内のサーバーと同じロジックを実行するメソッド「calculate_price」を実装することをお勧めします。これOrderlineにより、インターネットなしで POS を動作させることができます (セミオフライン モード)。その後、xml ファイルから簡単に呼び出すことができます。これは、関数を記述してから呼び出すことを意味calculate_priceprice.jsますget_unit_display_price

お役に立てば幸いです。オプション 2 を実行していただければ幸いです。

于 2017-02-04T12:13:42.987 に答える