public static void Main(string[] args) { // Datos de conexión String Url = "http://localhost:8069"; String Dbname = "test_db"; String Login = "******"; String Password = "******"; // Login OpenERPConnect connection = new OpenERPConnect(Url, Dbname, Login, Password); connection.Login(); Console.WriteLine(connection.UserId); // Nos devuelve todos los ids de empresas ArrayList filters = new ArrayList(); long[] partner_ids = connection.Search("res.partner", filters.ToArray()); ArrayList fields = new ArrayList(); fields.Add("name"); // Leemos para todos los ids de empresas obtenidos arriba el campo nombre. Read siempre nos devuelve el id y los campos pedidos. var partner_data = connection.Read("res.partner", partner_ids, (string[])fields.ToArray(typeof(string))); foreach (var partner in partner_data) { Console.WriteLine("Partner {0} with Id {1}", partner["name"], partner["id"]); } //Comprobarmos que no existe un partner con nombre Prueba Object[] domain = new Object[1]; domain[0] = new Object[3] { "name", "=like", "Prueba%" }; long[] prueba_partner_ids = connection.Search("res.partner", domain); if (prueba_partner_ids.Length > 0) { // El partner ya existe lo borramos Console.WriteLine("Partnes exists"); bool deleted = connection.Unlink("res.partner", prueba_partner_ids); Console.WriteLine("Deleted: {0}", deleted); } else { // El partner no existe lo creamos Console.WriteLine("Partnes not exists"); XmlRpcStruct vals = new XmlRpcStruct(); vals.Add("name", "Prueba"); vals.Add("is_company", true); vals.Add("vat", "ES33552390J"); long new_partner_id = connection.Create("res.partner", vals); Console.WriteLine("New Partner created {0}", new_partner_id); // Le cambiamos el nombre XmlRpcStruct vals2 = new XmlRpcStruct(); vals2.Add("name", "Prueba2"); long[] ids_to_update = new long[1]; ids_to_update[0] = new_partner_id; bool updated = connection.Write("res.partner", ids_to_update, vals2); Console.WriteLine("Updated: {0}", updated); //Mostramos el nuevo nombre var new_partner_data = connection.Read("res.partner", ids_to_update, new string[] { "name" }); foreach (var partner in new_partner_data) { Console.WriteLine("Partner {0} with Id {1}", partner["name"], partner["id"]); } // Como ejemplo del método execute comprobamos si el cif es válido var result = connection.Execute("res.partner", "button_check_vat", ids_to_update); Console.WriteLine("VAT valid: {0}", Convert.ToBoolean(result)); } Console.ReadLine(); }