簡體   English   中英

XML-RPC Odoo - C# 多個搜索條件

[英]XML-RPC Odoo - C# multiple search conditions

當使用 CookComputing (XML-RPC.net) 嘗試在一個條件下搜索 mail.notification 模型時,它相當簡單,因為您只需要調用:

object[] args = new object[1];
object[] subargs = new object[3];
subargs[0] = "partner_id";
subargs[1] = "=";
subargs[2] = partner_id.ToString();
int[] message_count = odooNewProxy.Search(database, userId, odoo_password, "mail.notification", "search", args);

其中搜索定義如下:

[XmlRpcMethod("execute")]
int[] Search(string dbName, int userId, string pwd, string model, string method, object[] filters);

你會馬上得到結果。 當您想要調用兩個或多個條件搜索時,真正的問題就出現了 - 例如[('partner_id', '=', 3), ('is_read', '=', False)] 有沒有人對此有任何線索? 我試過傳遞一個包含兩個對象的單個對象(一個帶有partner_id,一個帶有is_read) - 這會起作用,但Odoo也將其作為3對象域,在[]中添加partner_id。 嘗試使用字符串,嘗試使用一個帶有 6 個子參數的對象 - 似乎沒有任何效果。 任何幫助將不勝感激。

試試這個方法:

object[] args= new object[] {
    new object[] { "move_lines", "!=", null },
    new object[] { "state", "!=", "done"}
};
OdooAPI api = GetApiObject();
        object[] filter = new object[3];
        int id = 0;
        filter[0] = new object[3] { "supplier", "=", true };
        filter[1] = new object[3] { "active", "=", true };
        filter[2] = new object[3] { "ref", "=", internal_reference };

嘗試PortaCapena.OdooJsonRpcClient ,您可以使用存儲庫使用查詢構建器創建高級過濾查詢。 這個庫將模型從 odoo 映射到 C# 中的模型

https://github.com/patricoos/PortaCapena.OdooJsonRpcClient

var products = await repository.Query()
.Where(x => x.WriteDate, OdooOperator.GreaterThanOrEqualTo, new DateTime(2020, 12, 2))
.Where(x => x.Name, OdooOperator.EqualsTo, "Bioboxen 610l")
.Select(x => new
{
      x.Name,
      x.Description,
      x.WriteDate
})
.OrderByDescending(x => x.Id)
.Take(10)
.FirstOrDefaultAsync();

或使用 OdooFilter 查詢

await repository
.Query()
.Where(OdooFilter.Create()
     .GreaterThanOrEqual("write_date", new DateTime(2020, 12, 2))
     .And()
     .EqualTo("name", "Bioboxen 610l"))
.ToListAsync()

暫無
暫無

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

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