首页 > 解决方案 > 尝试使用 rpc.query 将数据从 javascript 发送到 python POS odoo

问题描述

我正在尝试将列表中的数据发送到他们的字段,以便我可以将它们检索到同一模块/项目中的另一个屏幕中。

我要发送的列表:

var vals = {
                'token_number':Token,
                'partner_id':customer_name,
                'queue_line_ids':queue_lines,
            }

其中Token是在 custom_button 单击时生成的随机数,customer_name是通过“this.pos.get_order().cid”获得的客户 id,queuelines是从 orderlines 获得的产品及其信息的数组。

rpc.query我通过引用 odoo13/addon/ 中的 point_of_sale 写的:

 return rpc.query({
                model: 'pos.queue',
                method: 'create',
                args: [vals],

            }).then(function () {
                console.log("Success")
            }).catch(function (reason){
                var error = reason.message;
                console.log(error);
            });

pos.queue我的模块的 model.py 中:

class POSOrderQueue(models.Model):
    _name = 'pos.queue'

    token_number = fields.Integer(string="Token Number", store=True)
    partner_id = fields.Char(store=True)
    pos_order_id = fields.Char(store=True)
    order_progress = fields.Selection([('in_queue', 'In Queue'),
                                       ('in_progress', 'In Progress'),
                                       ('done', 'Done')], string="Order progress", default='inqueue', store=True)
    no_items = fields.Integer(string='No of Items', store=True)
    queue_line_ids = fields.One2many('pos.queue.line', 'queue_id')




 def create(self):
        val = {
            "token_number": self.token_number,
            "partner_id": self.partner_id,
            "queue_line_ids": self.queue_line_ids,
        }

        self.env['pos.queue'].create(val)
 

标签: javascriptpythonrpcodoo-13

解决方案


是的,所以我正在寻找解决方案来传递我的数据库中的订单数据以及其他数据,因为我距离通过这个问题还有很长的路要走,所以我觉得有义务分享我的发现和修改以通过token number Customer id Estimated time& status。以下是我到目前为止所做的修改列表:

val_list = {
                        'token_number':Token,
                        'partner_id':customer_name,
                        'pos_order_id':torder.name,
                        'est_time':e_time,
                        'order_progress':torder.order_progress,
                        
                   };

torder在哪里this.pos.get_order()。我的 rpc 查询变得像(感谢我的主管)

 return rpc.query({
                    model: 'pos.queue',
                    method: 'create_token',
                    args:[val_list],
                }).then(function () {
                    console.log("Success")
                }).catch(function (reason){
                    var error = reason.message;
                    console.log(error);
                });

模型变成了:

class POSOrderQueue(models.Model):
    _name = 'pos.queue'

    token_number = fields.Integer(string="Token Number", store=True)
    partner_id = fields.Char(store=True)
    pos_order_id = fields.Char(store=True)
    est_time = fields.Text(string="estimated time", store=True)
    order_progress = fields.Selection([('in_queue', 'In Queue'),
                                       ('in_progress', 'In Progress'), ('cancel', 'Cancel'),
                                       ('done', 'Done')], string="Order progress", default='in_queue', store=True)
    no_items = fields.Integer(string='No of Items', store=True)
    queue_line_ids = fields.One2many('pos.queue.line', 'queue_id')

    @api.model
    def create_token(self, val_list):
        res = super(POSOrderQueue, self).create(val_list)
        print("yes working")
        return res

class POSOrderQueueLine(models.Model):
    _name = 'pos.queue.line'

    queue_id = fields.Many2one('pos.queue')
    product_name = fields.Char(store=True)
    product_quant = fields.Integer()
    product_price = fields.Float()

    def create(self, vals):
        res = super(POSOrderQueueLine, self).create(vals)
        return res

问题已部分解决,但我无法实现我的最后一个目标,即orderline通过 rpc 查询将数据传递到我的模型pos.queue.line中,以便可以在我的 odoo13 自定义视图中查看它,就像 我的视图表的截图


推荐阅读