簡體   English   中英

如何在 pos odoo13 中覆蓋 models.js 中的模型

[英]How to override the models in models.js in pos odoo13

如何將域添加到以下 model 並在銷售點啟動時加載。

 { model: 'res.partner', label: 'load_partners', fields: ['name','street','city','state_id','country_id','vat', 'phone','zip','mobile','email','barcode','write_date', 'property_account_position_id','property_product_pricelist'], loaded: function(self,partners){ self.partners = partners; self.db.add_partners(partners); }, }

使用point_of_sale.models的 load_models point_of_sale.models加載res.partner model,(在原始模型文件中可以找到很多使用 domain 的模型):

odoo.define('my_module.partners', function (require) {
"use strict";

    var models = require('point_of_sale.models');

    models.load_models([{
        model:  'res.partner',
        fields: ['name','street','city','state_id','country_id','vat', 'phone','zip','mobile','email','barcode','write_date', 'property_account_position_id','property_product_pricelist'],
        domain: function(self){ return [['company_id', '=', self.config.company_id[0]]]; },
        loaded: function(self, partner) {}
    }]);
});

domain : [domain|function]確定需要加載哪些模型的域。 Null加載一切

編輯:

您可以使用models.PosModel.prototype.models訪問models ,您還需要覆蓋prepare_new_partners_domain方法。

試試下面的例子:

var _super_pos_model = models.PosModel.prototype;
var _models = models.PosModel.prototype.models;

var _domain = [['id', '<=', 3]];
// partner model is the fifth element in models (index==4)
_models[4]['domain']  = function(self){ return _domain; };

models.PosModel = models.PosModel.extend({
     prepare_new_partners_domain: function(){
        var domain = _super_pos_model.prepare_new_partners_domain.apply(this, arguments);
        domain.push(..._domain);
        console.log("domain", domain);
        return domain;
    },
});

console.log("models", models.PosModel.prototype.models);

您可以使用它來覆蓋 POS 上的加載模型

var pos_models = require('point_of_sale.models');

var _pos_super = pos_models.PosModel.prototype;
pos_models.PosModel = pos_models.PosModel.extend({
    initialize: function(session, attributes) {
        for (var i = 0 ; i < this.models.length; i++){
            if (this.models[i].model == 'res.partner') {
                this.models[i].fields = ['your_fields'];
                this.models[i].domain = [['sample_column', '=', true]];
            }
        }
        return _pos_super.initialize.apply(this, arguments);
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM