public static TEntity ToEntity <TEntity>(this RpcRecord record) where TEntity : class { var entity = (TEntity)Activator.CreateInstance(typeof(TEntity)); foreach (PropertyInfo prop in entity.GetType().GetProperties()) { var propName = prop.Name.ToLowerAndSplitWithUnderscore(); var value = record.GetField(propName).Value; if (value == null) { prop.SetValue(entity, value); } else if (prop.PropertyType == typeof(DateTime) || prop.PropertyType == typeof(DateTime?)) { prop.SetValue(entity, Convert.ToDateTime(value)); } else if (value.GetType() == typeof(object[])) { var values = value as object[]; var valueId = values[0]; prop.SetValue(entity, valueId); } else { prop.SetValue(entity, value); } } return(entity); }
// İş Ortağı Oluşturma static RpcRecord CreatePartner(RpcConnection conn) { // Ref alanından kontak ara var rpcContext = new RpcContext(conn, "res.partner"); rpcContext .RpcFilter .Or() // burada tanımlı OR operatörü odoo'nun normal kullanımında olduğu gibi önündeki koşulu birbirine bağlar belirtilmez ise AND operatörü gibi çalışır .Equal("company_id", _companyId) .Equal("company_id", false) .Equal("ref", "TO9930914"); /* * Yukarıdaki koşulun açılımı * if (company_id == 1 or company_id == false) and ref= "TO9930914") */ rpcContext .AddField("id"); var data = rpcContext.Execute(true, limit: 1); var partner = data.FirstOrDefault(); if (partner != null) { return(partner); } //İl var stateId = GetCountryStateByName(conn, "İstanbul"); //res.partner - Create RpcRecord record = new RpcRecord(conn, "res.partner", -1, new List <RpcField> { new RpcField { FieldName = "name", Value = "İsmail Eski" }, new RpcField { FieldName = "street", Value = "Merkez" }, new RpcField { FieldName = "street2", Value = "Merkez Mh." }, new RpcField { FieldName = "state_id", Value = stateId }, new RpcField { FieldName = "vat", Value = "TR1234567890" } }); record.Save(); return(record); }
public static SaleOrder SaleOrder(RpcRecord saleOrderRecord) { var company = (int)saleOrderRecord.GetField("company_id").Value; var name = (string)saleOrderRecord.GetField("name").Value; var saleOrder = new SaleOrder() { CompanyId = company, Name = name }; return(saleOrder); }
public static Partner Partner(RpcRecord saleOrderRecord) { var street = (string)saleOrderRecord.GetField("street").Value; var name = (string)saleOrderRecord.GetField("name").Value; var parter = new Partner() { Street = street, Name = name }; return(parter); }
//Sale Order - Oluşturma static RpcRecord WriteSaleOrder(RpcConnection conn) { //Partner var partner = CreatePartner(conn); var rnd = new Random(); var orderLine = GetSaleOrderLine(conn); RpcRecord record = new RpcRecord(conn, "sale.order", -1, new List <RpcField> { new RpcField { FieldName = "company_id", Value = _companyId }, new RpcField { FieldName = "currency_id", Value = 31 }, new RpcField { FieldName = "date_order", Value = "2021-01-28" }, // posible new RpcField { FieldName = "name", Value = "Örnek Sipariş No:" + rnd.Next(1, 10000).ToString() }, new RpcField { FieldName = "partner_id", Value = partner.Id }, new RpcField { FieldName = "partner_invoice_id", Value = partner.Id }, new RpcField { FieldName = "partner_shipping_id", Value = partner.Id }, new RpcField { FieldName = "picking_policy", Value = "one" }, new RpcField { FieldName = "pricelist_id", Value = 1 }, new RpcField { FieldName = "warehouse_id", Value = 1 }, new RpcField { FieldName = "state", Value = "sale" }, //Onaylı Sipariş ise new RpcField { FieldName = "order_line", Value = orderLine.ToArray() } }); record.Save(); return(record); }
public static RpcRecord ToRpcRecord <TEntity>(this TEntity entity, RpcConnection rpcConnection, string model, int?id) where TEntity : class { var fields = new List <RpcField>(); foreach (var property in entity.GetType().GetProperties()) { var value = property.GetValue(entity).OdooDataFormat(); if (value != null) { var field = new RpcField() { FieldName = property.Name.ToLowerAndSplitWithUnderscore(), Value = value }; fields.Add(field); } } var record = new RpcRecord(rpcConnection, model, id, fields); return(record); }
static void Main(string[] args) { IConfiguration config = new ConfigurationBuilder() .AddJsonFile("appsettings.json", true, true) .Build(); var rpcConnnectionSettings = new RpcConnectionSetting(); config.GetSection("OdooConnection").Bind(rpcConnnectionSettings); var odooConn = new RpcConnection(rpcConnnectionSettings); var rpcContext = new RpcContext(odooConn, "res.partner"); rpcContext .AddField("id") .AddField("name"); var data = rpcContext.Execute(false); var partner_1 = new RpcModel("res.partner", odooConn); var method_response = partner_1.CallMethod("find_or_create", new object[1] { "*****@*****.**" }); //res.partner - Write var partner = new RpcContext(odooConn, "res.partner"); partner.AddFields(new[] { "name", "phone", "email" }); var results = partner.Execute(false, order: "id desc"); //var results = partner.Execute(false, offset:1, limit:2, order: "id desc"); foreach (var result in results) { result.SetFieldValue("phone", "55-66-666"); result.Save(); } //res.partner - Create RpcRecord record = new RpcRecord(odooConn, "stock.quant", -1, new List <RpcField> { new RpcField { FieldName = "product_id" }, new RpcField { FieldName = "reserved_quantity" }, new RpcField { FieldName = "location_id" } }); record.SetFieldValue("product_id", 52); record.SetFieldValue("reserved_quantity", 333); record.SetFieldValue("location_id", 8); record.Save(); }
static void Main(string[] args) { IConfiguration config = new ConfigurationBuilder() .AddJsonFile("appsettings.json", true, true) .Build(); var rpcConnnectionSettings = new RpcConnectionSetting(); config.GetSection("OdooConnection").Bind(rpcConnnectionSettings); var odooConn = new RpcConnection(rpcConnnectionSettings); var rpcContext = new RpcContext(odooConn, "res.partner"); //Query Parameter rpcContext .RpcFilter .Or() .Equal("id", 1) .Equal("id", 14383); //Returns all fields if fields are not selected rpcContext .AddField("id") .AddField("name") .AddField("mobile") .AddField("phone"); var data = rpcContext.Execute(true, limit: 5); foreach (var record in data) { var id = record.GetField("id"); var name = record.GetField("name"); var mobile = record.GetField("mobile"); var phone = record.GetField("phone"); Console.WriteLine(record.GetField("id")); Console.WriteLine(record); // Update Record record.SetFieldValue("mobile", "xxx-xxx-xx"); record.Save(); } //New Record var fields = new List <RpcField> { new RpcField { FieldName = "name", Value = 1 }, new RpcField { FieldName = "website", Value = "www.odootr.com" }, }; var newRecord = new RpcRecord(odooConn, "res.partner", null, fields); newRecord.Save(); var a = rpcContext.ToXml(); Console.ReadLine(); }
//Sale Order Satırlarını Oluştur static List <object> GetSaleOrderLine(RpcConnection conn) { var orderLine = new List <object>(); //Ürün 1 var product = GetSearchProductByDefaultCode(conn, "FURN_6741"); RpcRecord record = new RpcRecord(conn, "sale.order.line", -1, new List <RpcField> { new RpcField { FieldName = "name", Value = product.GetField("name").Value }, new RpcField { FieldName = "customer_lead", Value = 8 }, new RpcField { FieldName = "price_unit", Value = 12.45 }, new RpcField { FieldName = "product_uom_qty", Value = 5 }, new RpcField { FieldName = "product_id", Value = product.Id }, //new RpcField{FieldName = "tax_id", Value = product.GetField("taxes_id").Value}, }); orderLine.Add(new object[] { 0, 0, record.GetRecord() }); //Ürün 2 var product2 = GetSearchProductByDefaultCode(conn, "FURN_5555"); RpcRecord record2 = new RpcRecord(conn, "sale.order.line", -1, new List <RpcField> { new RpcField { FieldName = "name", Value = product2.GetField("name").Value }, new RpcField { FieldName = "customer_lead", Value = 8 }, new RpcField { FieldName = "price_unit", Value = 65.75 }, new RpcField { FieldName = "product_uom_qty", Value = 12 }, new RpcField { FieldName = "product_id", Value = product2.Id }, //new RpcField{FieldName = "tax_id", Value = product2.GetField("taxes_id").Value}, }); orderLine.Add(new object[] { 0, 0, record2.GetRecord() }); //Ürün 3 var product3 = GetSearchProductByDefaultCode(conn, "FURN_0789"); RpcRecord record3 = new RpcRecord(conn, "sale.order.line", -1, new List <RpcField> { new RpcField { FieldName = "name", Value = product3.GetField("name").Value }, new RpcField { FieldName = "customer_lead", Value = 3 }, new RpcField { FieldName = "price_unit", Value = 165.75 }, new RpcField { FieldName = "product_uom_qty", Value = 8 }, new RpcField { FieldName = "product_id", Value = product3.Id }, //new RpcField{FieldName = "tax_id", Value = product3.GetField("taxes_id").Value}, }); orderLine.Add(new object[] { 0, 0, record3.GetRecord() }); return(orderLine); }