为了账号安全,请及时绑定邮箱和手机立即绑定

如何向 Odoo13 的 POS 订单添加数据

如何向 Odoo13 的 POS 订单添加数据

慕尼黑8549860 2022-06-16 10:30:53
我正在尝试将数据添加到 POS 的订单中,并将该数据发送到基于站点https://odoo-development.readthedocs.io/en/latest/dev/pos/load-data的“pos.order”模型-to-pos.html。为了使我的案例更通用,我正在创建一个名为“custom.model”的新 odoo 模型,我正在创建与“pos.config”的关系,以帮助我使用 javascritp 中的模型域,后者使用以下代码:# -*- coding: utf-8 -*-from odoo import models, fieldsclass custom_model(models.Model):    _name = 'custom.model'    name = fields.Char(string='name')class myPosConfig(models.Model):    _inherit = 'pos.config'    custom_model_id = fields.Many2one('custom.model', string='My custom model')然后我使用以下 python 代码添加我对“pos.order”模型感兴趣的关系:# -*- coding: utf-8 -*-from odoo import models, fields, apiclass myPosOrder(models.Model):    _inherit = 'pos.order'    custom_model_id = fields.Many2one('custom.model', string='My model')然后我在前端添加我的自定义模型,其中包含一个带有以下代码的 javascript 文件:odoo.define('kyohei_pos_computerized_billing.billing_dosage', function (require) {    "use strict";    var models = require('point_of_sale.models');    var _super_order_model = models.Order.prototype;    models.load_models([{        model: 'custom.model',        label: 'custom_model',        fields: ['name'],        // Domain to recover the custom.model record related to my pos.config        domain: function(self){ return [['id', '=', self.config.custom_model_id[0]]];},        loaded: function(self, dosage){self.dosage = dosage[0]},    }]);});然后我将以下代码添加到同一个 javascript 文件中,因此记录存储在浏览器中,并在需要时将数据发送到后端:    models.Order = models.Order.extend({        initialize: function(){          _super_order_model.initialize.apply(this,arguments);          if (this.custom_model){              this.custom_model = this.pos.custom_model;          }        },        export_as_JSON: function () {            var data = _super_order_model.export_as_JSON.apply(this, arguments);            data.custom_model = this.custom_model;            return data        },        init_from_JSON: function (json) {            this.custom_model = json.custom_model;            _super_order_model.init_from_JSON.call(this. json);        },
查看完整描述

2 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

由于方法上的参数不匹配导致此错误,只需检查 odoo-13 此方法 _process_order


在您的代码中,您使用的是旧版本方法,并且从 odoo13 版本开始,它已更改。


您必须更新此方法中的字段,其中数据来自export_as_JSON函数。


@api.model

def _order_fields(self, ui_order):

    pos_order = super(KyoheiComputerizedPosOrder, self)._order_fields(ui_order)

    # Get the data from ui_order  

    return pos_order


查看完整回答
反对 回复 2022-06-16
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

终于让代码工作了。python 文件应如下所示:


# -*- coding: utf-8 -*-


from odoo import models, fields, api



class MyPosOrder(models.Model):

    _inherit = 'pos.order'


    test_string = fields.Char(string='test_string')


    @api.model

    def _order_fields(self, ui_order):

        order_fields = super(MyPosOrder, self)._order_fields(ui_order)


        order_fields['test_string'] = ui_order.get('test_string')


        return order_fields

可以帮助理解这个问题的文件是 pos_restaurant 的 pos_order.py


查看完整回答
反对 回复 2022-06-16
  • 2 回答
  • 0 关注
  • 92 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号