rust 如何将odoo中的现有用户与pos条目链接?

wqlqzqxt  于 2022-11-12  发布在  其他
关注(0)|答案(2)|浏览(207)

我在partner模型中有一个用户,我可以通过rust语言创建这个用户。现在,我必须将用户ID从res.partner模型链接到pos(Point of销售点)模型中的条目,其中partner ID是一个manyToOne字段。
我使用xmlrpc crate来调用odoo的XMLRPC以保存数据。

se std::collections::btree_map::IntoValues;
use std::collections::BTreeMap;
use std::error::Error;
use std::{collections::HashMap, env};
use xmlrpc::http::{build_headers, check_response};
use xmlrpc::{Request, Transport, Value};

//Somewhere in a function below
let mut body = BTreeMap::new();

    let mut partner_id_vec = BTreeMap::new();

    // trying to create that manyToMany field for saving to odoo.
    partner_id_vec.insert("3".to_string(), Value::Int(625));

    // Creating the final struct for sending to the XMLRPC call, this works
    body.insert("partner_id".to_string(), Value::Struct(partner_id_vec));
    body.insert("amount_paid".to_string(), Value::Double(2000.00));
    body.insert("amount_return".to_string(), Value::Double(0.00));
    body.insert("amount_tax".to_string(), Value::Double(0.00));
    body.insert("amount_total".to_string(), Value::Double(2000.00));
    body.insert("name".to_string(), Value::from("jane doe"));

    let order_val_str = Value::Array(vec![Value::Struct(body)]);

    println!("order_val_str: {:?}", order_val_str);

    let save_request = Request::new("execute_kw")
        .arg("db name")
        .arg(request_result.unwrap())
        .arg("My API key".to_string())
        .arg("pos.order")
        .arg("create")
        .arg(order_val_str);

    println!("save_request: {:?}", save_request);

    let result = save_request.call_url("https://my.odoo.com/xmlrpc/2/object");

任何帮助都将不胜感激!

3ks5zfa0

3ks5zfa01#

可能只是错误的操作码,“3”是删除/取消链接。要创建一个关系,它的“0”或“4”。
https://www.odoo.com/documentation/15.0/developer/reference/backend/orm.html#odoo.fields.Command

(4, id, 0)
nnsrf1az

nnsrf1az2#

partner_id字段的类型为Many2one,它需要整数而不是dict,您应该在日志中看到以下错误消息:

ERROR: can't adapt type 'dict'

session_id字段是必填字段:

/addons/point_of_sale/models/pos_order.py", line 415, in create
session = self.env['pos.session'].browse(values['session_id'])
KeyError: 'session_id'

就像partner_id一样,Odoo需要一个整数。
若要提供partner_id字段值,请使用下列程式码:

body.insert("partner_id".to_string(), Value::Int(625));

相关问题