首页 > 解决方案 > 如何向POS Receipt添加新字段/如何继承js文件

问题描述

我想向 POS Receipt 添加新字段。我想通过在我的自定义模块中继承 js 文件来做到这一点。我不知道 js,所以我不知道如何继承它。在 odoo 的文件中point of sale > static > src > js > pos.js

model:  'res.company',
fields: [ 'currency_id', 'email', 'website', 'company_registry', 'vat', 'name', 'phone', 'partner_id' , 'country_id', 'tax_calculation_rounding_method'],
ids:    function(self){ return [self.user.company_id[0]]; },
loaded: function(self,companies){ self.company = companies[0]; },

我编辑了字段并添加了我的必填字段说它street2正在进来Pos Receipt 我尝试继承 js 文件但它不起作用。这是我的代码

var _super = module.PosModel.prototype;
module.PosModel = module.PosModel.extend({
 initialize: function (session, attributes) {
    _super.initialize.apply(this, arguments);
    this.models.push({
        model:  'res.company',
        fields: ['street2'],
    })
    return this;
 },

});

我还创建了一个 xml 文件来显示 js 文件的路径。

xml

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data>
        <template id="assets" inherit_id="point_of_sale.assets">
            <xpath expr="." position="inside">
                <script type="text/javascript" src="/xn_pos_vat_enhancement_v11/static/src/js/pos_receipt_fields.js"></script>
            </xpath>
        </template>
    </data>
</odoo>

Odoo 版本:11(社区)

标签: javascriptodooodoo-11

解决方案


我通过以下方式做到了这一点:

odoo.define('xn_pos_vat_enhancement_v11.pos_receipt_fields', function (require) {
    var models = require('point_of_sale.models');    
    var core = require('web.core');    
    var _t = core._t;    
    var session = require('web.session');
    var rpc = require('web.rpc');

    var _super_PosModel = models.PosModel.prototype;
    models.PosModel = models.PosModel.extend({
        get_model: function (_name) {
            var _index = this.models.map(function (e) {
                return e.model;
            }).indexOf(_name);
            if (_index > -1) {
                return this.models[_index];
            }
            return false;
        },
        initialize: function (session, attributes) {
            var self = this;            
            var company_model = this.get_model('res.company');
            company_model.fields.push('street','street2','state_id');            

            _super_PosModel.initialize.apply(this, arguments);          

        },        
        get_config: function () {
            return this.config;
        },        

    });

});

xn_pos_vat_enhancement_v11我的模块名称和pos_receipt_fields文件名在哪里。我不知道解释整个代码,如果有人可以,我会接受他们的回答。


推荐阅读