コード例 #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            var settings       = JsonConvert.DeserializeObject <JObject>(File.ReadAllText("appsettings.json"));
            var odooConnection = settings["OdooConnection"].ToObject <OdooConnectionInfo>();

            try
            {
                var odooRpcClient = new OdooRpcClient(odooConnection);
                odooRpcClient.Authenticate().Wait();
                var odooVersion = odooRpcClient.GetOdooVersion().Result;

                Console.WriteLine("Odoo Version: {0} - {1}", odooVersion.ServerVersion, odooVersion.ProtocolVersion);



                if (odooRpcClient.SessionInfo.IsLoggedIn)
                {
                    Console.WriteLine("Login successful => User Id: {0}", odooRpcClient.SessionInfo.UserId);
                }
                else
                {
                    Console.WriteLine("Login failed");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error connecting to Odoo: {0}", ex.Message);
            }
        }
コード例 #2
0
ファイル: RPCClient.cs プロジェクト: dtorresxp/odoonet
        public static IOdoo Connect(string host, int port, bool isSsl, string database, string username, string password)
        {
            OdooConnectionInfo odooConnectionInfo = new OdooConnectionInfo()
            {
                Host     = host,
                Port     = port,
                IsSSL    = isSsl,
                Database = database,
                Username = username,
                Password = password
            };

            OdooRpcClient odooRpcClient = new OdooRpcClient(odooConnectionInfo);



            Task task = odooRpcClient.Authenticate();

            task.Wait();

            Task <OdooVersionInfo> getVersionTask = odooRpcClient.GetOdooVersion();

            task.Wait();

            string serverVersion = getVersionTask.Result.ServerVersion;

            return(new Odoo(odooRpcClient)
            {
                Version = serverVersion
            });
        }
コード例 #3
0
        public static IProduct[] GetProducts(this OdooRpcClient odooRpcClient, long?companyId = null, DateTime?createdAfter = null)
        {
            OdooDomainFilter filter = new OdooDomainFilter();

            if (companyId.HasValue)
            {
                filter = filter.Filter("company_id", "=", companyId.Value);
            }

            if (createdAfter.HasValue)
            {
                filter = filter.Filter("create_date", ">", createdAfter.Value);
            }

            Task <JObject[]> task1 = odooRpcClient.Get <JObject[]>(new OdooSearchParameters(Product.MODEL));

            task1.Wait();

            Task <Product[]> task = odooRpcClient.Get <Product[]>(
                new OdooSearchParameters(
                    Product.MODEL,
                    filter
                    )
                );

            task.Wait();

            List <Product> products = task.Result.ToList();

            products.ForEach(product => product.OdooRpcClient = odooRpcClient);

            return(products.ToArray());
        }
コード例 #4
0
        public static Company[] GetCompanies(this OdooRpcClient odooRpcClient)
        {
            Task <Company[]> task = odooRpcClient.Get <Company[]>(new OdooSearchParameters(model: Company.MODEL));

            task.Wait();

            List <Company> companies = task.Result.ToList();

            companies.ForEach(company => company.OdooRpcClient = odooRpcClient);

            return(companies.ToArray());
        }
コード例 #5
0
        public static Terminal[] GetTerminals(this OdooRpcClient odooRpcClient, long companyId)
        {
            OdooDomainFilter filter = new OdooDomainFilter().Filter("company_id", "=", companyId);

            Task <Terminal[]> task = odooRpcClient.Get <Terminal[]>(new OdooSearchParameters(Terminal.MODEL, filter));

            task.Wait();

            List <Terminal> terminals = task.Result.ToList();

            terminals.ForEach(terminal => terminal.OdooRpcClient = odooRpcClient);

            return(terminals.ToArray());
        }
コード例 #6
0
        public static Company GetCompany(this OdooRpcClient odooRpcClient, string name)
        {
            Task <Company[]> task = odooRpcClient.Get <Company[]>(
                new OdooSearchParameters(
                    model: Company.MODEL,
                    domainFilter: new OdooDomainFilter().Filter("name", "=", name)
                    )
                );

            task.Wait();

            List <Company> companies = task.Result.ToList();

            companies.ForEach(company => company.OdooRpcClient = odooRpcClient);

            return(task.Result.FirstOrDefault());
        }
コード例 #7
0
        public static Terminal GetTerminal(this OdooRpcClient odooRpcClient, long companyId, string terminalName)
        {
            OdooDomainFilter filter = new OdooDomainFilter()
                                      .Filter("company_id", "=", companyId)
                                      .Filter("display_name", "=", terminalName);


            Task <Terminal[]> task = odooRpcClient.Get <Terminal[]>(new OdooSearchParameters(Terminal.MODEL, filter));

            task.Wait();

            Terminal terminal = task.Result.FirstOrDefault();

            if (terminal != null)
            {
                terminal.OdooRpcClient = odooRpcClient;
            }

            return(terminal);
        }
コード例 #8
0
        public static Session[] GetSessions(this OdooRpcClient odooRpcClient, long terminalId, DateTime?createdAfter = null, DateTime?createdBefore = null, DateTime?openedAfter = null, DateTime?openedBefore = null, DateTime?closedAfter = null, DateTime?closedBefore = null)
        {
            OdooDomainFilter filter = new OdooDomainFilter().Filter("config_id", "=", terminalId);

            if (createdAfter.HasValue)
            {
                filter = filter.Filter("create_date", ">", createdAfter.Value);
            }
            if (createdBefore.HasValue)
            {
                filter = filter.Filter("create_date", "<", createdBefore.Value);
            }
            if (openedAfter.HasValue)
            {
                filter = filter.Filter("start_at", ">", openedAfter.Value);
            }
            if (openedBefore.HasValue)
            {
                filter = filter.Filter("start_at", "<", openedBefore.Value);
            }
            if (closedAfter.HasValue)
            {
                filter = filter.Filter("stop_at", ">", closedAfter.Value);
            }
            if (closedBefore.HasValue)
            {
                filter = filter.Filter("stop_at", "<", closedBefore.Value);
            }


            Task <Session[]> task = odooRpcClient.Get <Session[]>(new OdooSearchParameters(Session.MODEL, filter));

            task.Wait();

            List <Session> sessions = task.Result.ToList();

            sessions.ForEach(session => session.OdooRpcClient = odooRpcClient);


            return(sessions.ToArray());
        }
コード例 #9
0
ファイル: RpcHelperOrders.cs プロジェクト: dtorresxp/odoonet
        public static OrderLine[] GetPosOrderLines(this OdooRpcClient odooRpcClient, long orderId)
        {
            OdooDomainFilter filter = new OdooDomainFilter().Filter("order_id", "=", orderId);

            Task <JObject[]> task1 = odooRpcClient.Get <JObject[]>(new OdooSearchParameters(OrderLine.MODEL, filter));

            task1.Wait();

            Task <OrderLine[]> task = odooRpcClient.Get <OrderLine[]>(new OdooSearchParameters(OrderLine.MODEL, filter));

            task.Wait();

            List <OrderLine> posOrderLines = task.Result.ToList();

            posOrderLines.ForEach(posOrderLine =>
            {
                posOrderLine.OdooRpcClient = odooRpcClient;
            });

            return(posOrderLines.ToArray());
        }
コード例 #10
0
ファイル: RpcHelperOrders.cs プロジェクト: dtorresxp/odoonet
        public static Order[] GetPosOrders(this OdooRpcClient odooRpcClient, long?companyId = null, long?terminalId = null, long?sessionId = null, DateTime?createdAfter = null, DateTime?createdBefore = null)
        {
            OdooDomainFilter filter = new OdooDomainFilter();

            if (companyId.HasValue)
            {
                filter = filter.Filter("company_id", "=", companyId.Value);
            }
            if (terminalId.HasValue)
            {
                filter = filter.Filter("config_id", "=", terminalId.Value);
            }
            if (sessionId.HasValue)
            {
                filter = filter.Filter("session_id", "=", sessionId.Value);
            }
            if (createdAfter.HasValue)
            {
                filter = filter.Filter("create_date", ">", createdAfter.Value);
            }
            if (createdBefore.HasValue)
            {
                filter = filter.Filter("create_date", "<", createdBefore.Value);
            }

            Task <JObject[]> task1 = odooRpcClient.Get <JObject[]>(new OdooSearchParameters(model: Order.MODEL, domainFilter: filter));

            task1.Wait();

            Task <Order[]> task = odooRpcClient.Get <Order[]>(new OdooSearchParameters(model: Order.MODEL, domainFilter: filter));

            task.Wait();

            List <Order> posOrders = task.Result.ToList();

            posOrders.ForEach(posOrders => posOrders.OdooRpcClient = odooRpcClient);


            return(posOrders.ToArray());
        }
コード例 #11
0
ファイル: Program.cs プロジェクト: aleluis79/odoo_client
        static async System.Threading.Tasks.Task Main(string[] args)
        {
            Console.WriteLine("Iniciando...");

            //Creo objeto OdooConnectionInfo con información de conección
            OdooConnectionInfo ConnectionInfo = new OdooConnectionInfo()
            {
                IsSSL    = false,
                Host     = "localhost",
                Port     = 8069,
                Database = "db",
                Username = "******",
                Password = "******"
            };

            //Me conecto a Odoo
            IOdooRpcClient RpcClient = new OdooRpcClient(ConnectionInfo);

            //Obtengo la versión de Odoo y la muestro por consola
            var odooVersion = await RpcClient.GetOdooVersion();

            Console.WriteLine("Odoo Version: {0} - {1}", odooVersion.ServerVersion, odooVersion.ProtocolVersion);

            //Login
            await RpcClient.Authenticate();

            if (RpcClient.SessionInfo.IsLoggedIn)
            {
                Console.WriteLine("Login correcto => Usuario Id: {0}", RpcClient.SessionInfo.UserId);
            }
            else
            {
                Console.WriteLine("Login incorrecto");
            }

            //Actualizo los conductores de un vehículo - many2many campo custom
            Object[] obj = new Object[] { new Object[] { 6, 0, new Object[] { 2, 7 } } };
            try
            {
                await RpcClient.Update <dynamic>("fleet.vehicle", 4, new
                {
                    x_conductor = obj
                });

                Console.WriteLine("OK - Actualizado");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error getting partners from Odoo: {0}", ex.Message);
            }



            //Obtengo datos de los autos
            try
            {
                var fieldParams = new OdooFieldParameters();
                fieldParams.Add("model_id");
                fieldParams.Add("display_name");
                fieldParams.Add("x_conductor");

                var autos = await RpcClient.GetAll <JObject[]>("fleet.vehicle", fieldParams, new OdooPaginationParameters().OrderByDescending("name"));

                foreach (var auto in autos)
                {
                    Console.WriteLine(auto);
                }
                //Console.WriteLine(autos.FirstOrDefault());
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error recuperando los autos desde Odoo: {0}", ex.Message);
            }
        }
コード例 #12
0
ファイル: Odoo.cs プロジェクト: dtorresxp/odoonet
 public Odoo(OdooRpcClient odooRpcClient)
 {
     OdooRpcClient = odooRpcClient;
 }