private static int pedirCodigoContrapartida(CuentasContables contrapartida)
        {
            int CodigoRetorno = 0;

            if (contrapartida.Tipo == "Activo")
            {
                int  CodigoIngresado;
                bool ciclo = false;
                do
                {
                    CodigoIngresado = Helper.ValidarNumero();
                    bool existeRegistro = LibroContable.registro.ContainsKey(CodigoIngresado);
                    if (existeRegistro && LibroContable.registro[CodigoIngresado].Tipo == "Pasivo" || LibroContable.registro[CodigoIngresado].Tipo == "PatrimonioNeto")
                    {
                        Console.WriteLine("Codigo ingresado correctamente");
                        CodigoRetorno = CodigoIngresado;
                        ciclo         = true;
                    }
                    else
                    {
                        Console.WriteLine("Error al ingresar codigo");
                    }
                } while (!ciclo);
            }
            else
            {
                bool ciclo = false;
                int  CodigoIngresado;
                do
                {
                    CodigoIngresado = Helper.ValidarNumero();
                    bool existeRegistro = LibroContable.registro.ContainsKey(CodigoIngresado);

                    if (existeRegistro && LibroContable.registro[CodigoIngresado].Tipo == "Activo")
                    {
                        Console.WriteLine("Codigo ingresado correctamente");
                        ciclo         = true;
                        CodigoRetorno = CodigoIngresado;
                    }
                    else
                    {
                        Console.WriteLine("Codigo no valido");
                    }
                } while (!ciclo);
            }

            return(CodigoRetorno);
        }
 public static CuentasContables seleccionar(CuentasContables contrapartida)
 {
     if (contrapartida.Tipo == "Activo") //Si es activo, suma en el debe. Entonces la contrapartida son de tipo Pasivo / PatrimonioNeto
     {
         Console.Clear();
         Console.WriteLine("Favor de seleccionar una cuenta en concepto de contrapartida. Ingrese su codigo");
         foreach (var asiento in LibroContable.registro)
         {
             if (asiento.Value.Tipo == "Pasivo" || asiento.Value.Tipo == "PatrimonioNeto")
             {
                 Console.WriteLine($"Codigo: {asiento.Value.CodigoCuenta} - Nombre: {asiento.Value.Nombre} - Tipo: {asiento.Value.Tipo}");
             }
             else
             {
                 continue;
             }
         }
         int codigo = pedirCodigoContrapartida(contrapartida);
         return(LibroContable.registro[codigo]);
     }
     else
     {
         if (contrapartida.Tipo == "Pasivo" || contrapartida.Tipo == "PatrimonioNeto")
         {
             Console.Clear();
             Console.WriteLine("Favor de seleccionar una cuenta en concepto de contrapartida. Ingrese su codigo");
             foreach (var asiento in LibroContable.registro)
             {
                 if (asiento.Value.Tipo == "Activo")
                 {
                     Console.WriteLine($"Codigo: {asiento.Value.CodigoCuenta} - Nombre: {asiento.Value.Nombre} - Tipo: {asiento.Value.Tipo}");
                 }
                 else
                 {
                     continue;
                 }
             }
         }
         int codigo = pedirCodigoContrapartida(contrapartida);
         return(LibroContable.registro[codigo]);
     }
 }
        static LibroContable()
        {
            //Formato
            //Codigo|Nombre|tipo
            string ruta = @"C:\Users\mateo\source\repos\CAI\A896633.Actividad03\Actividad 03 - Plan de cuentas.txt";

            if (File.Exists(ruta))
            {
                StreamReader reader = new StreamReader(ruta);
                while (!reader.EndOfStream)
                {
                    var linea   = reader.ReadLine();             //A partir de cada linea, tengo que construir un diccionario, que me permita validar que existe.
                    var asiento = new CuentasContables(linea);   //Constructor con un parametro, es leyendo el archivo
                    registro.Add(asiento.CodigoCuenta, asiento); //Lo Agrego a la entrada.
                }
            }
            else
            {
                Console.WriteLine("No se encontro archivo para leer");
            }
        }
        public static bool validar(CuentasContables cuenta, CuentasContables contrapartida)
        {
            bool validacion;

            if (LibroContable.TotalDebe == LibroContable.TotalHaber)
            {
                validacion = true;
                Console.Clear();
                Console.WriteLine($"La operacion ha sido completada.");
                Console.ReadKey();
            }
            else
            {
                Console.Clear();
                Console.WriteLine("Los montos del debe y haber no coinciden. Favor de revisar");
                Console.WriteLine($"Operacion 1--> Codigo:{cuenta.CodigoCuenta} - Nombre: {cuenta.Nombre} - Tipo {cuenta.Tipo} - Debe: {cuenta.Debe} - Haber: {cuenta.Haber}");
                Console.WriteLine($"Operacion 2--> Codigo:{contrapartida.CodigoCuenta} - Nombre: {contrapartida.Nombre} - Tipo: {contrapartida.Tipo} - Debe: {contrapartida.Debe} - Haber: {contrapartida.Haber}");
                Console.WriteLine("Pulse para continuar");
                Console.ReadKey();
                validacion = false;
            }
            return(validacion);
        }
        public static CuentasContables GestionarDiferenciaDebeHaber(CuentasContables cuenta, CuentasContables contrapartida)
        {
            Console.Clear();
            if (LibroContable.TotalDebe < LibroContable.TotalHaber)
            {
                Console.WriteLine("Favor de seleccionar una cuenta. Ingrese su codigo");
                foreach (var asiento in LibroContable.registro)
                {
                    if (asiento.Value.Tipo == "Activo")
                    {
                        Console.WriteLine($"Codigo: {asiento.Value.CodigoCuenta} - Nombre: {asiento.Value.Nombre} - Tipo: {asiento.Value.Tipo}");
                    }
                    else
                    {
                        continue;
                    }
                }
                bool ciclo = false;
                int  codigo;
                do
                {
                    codigo = Helper.ValidarNumero();
                    if (LibroContable.registro[codigo].Tipo == "Activo")
                    {
                        ciclo = true;
                    }
                    else
                    {
                        Console.WriteLine("Codigo incorrecto");
                    }
                } while (!ciclo);

                return(LibroContable.registro[codigo]);
            }
            else
            {
                Console.Clear();
                Console.WriteLine("Favor de seleccionar una cuenta. Ingrese su codigo");
                foreach (var asiento in LibroContable.registro)
                {
                    if (asiento.Value.Tipo == "Pasivo" || asiento.Value.Tipo == "PatrimonioNeto")
                    {
                        Console.WriteLine($"Codigo: {asiento.Value.CodigoCuenta} - Nombre: {asiento.Value.Nombre} - Tipo: {asiento.Value.Tipo}");
                    }
                    else
                    {
                        continue;
                    }
                }
                bool ciclo = false;
                int  codigo;
                do
                {
                    codigo = Helper.ValidarNumero();
                    if (LibroContable.registro[codigo].Tipo == "Pasivo" || LibroContable.registro[codigo].Tipo == "PatrimonioNeto")
                    {
                        ciclo = true;
                    }
                    else
                    {
                        Console.WriteLine("Codigo incorrecto");
                    }
                } while (!ciclo);

                return(LibroContable.registro[codigo]);
            }
        }