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);
        }
Esempio n. 2
0
        // İş 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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        //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);
        }
Esempio n. 7
0
        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();
        }
Esempio n. 8
0
        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();
        }
Esempio n. 9
0
        //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);
        }