// Verifica que la cuenta exista en Plan y la elimina.
        public static void QuitarCuenta()
        {
            int codigo = Validadores.Codigo("Ingrese el codigo de la cuenta a eliminar");

            if (!PlanDeCuentas.TryGetValue(codigo, out var cuentaEliminada))
            {
                Console.WriteLine($"No existe una cuenta con el codigo '{codigo}'. Intente nuevamente...");
                Console.ReadKey();
            }
            else
            {
                PlanDeCuentas.Remove(codigo);
                Console.WriteLine($"Se ha eliminado la cuenta '{cuentaEliminada.Nombre}' con el codigo {cuentaEliminada.Codigo}");
                Console.ReadKey();
                GrabarPlan();
            }
        }
        // Agrega una cuenta a Plan verificando que el codigo para identificarla este disponible.
        public static void AgregarCuenta()
        {
            int    codigo = Validadores.Codigo("Ingrese el codigo de la cuenta nueva");
            string nombre = Validadores.Texto("Ingrese el nombre de la cuenta nueva");
            string tipo   = Validadores.TipoCuenta("Es (A)ctivo, (P)asivo o Patrimonio (N)eto?");
            Cuenta nueva  = new Cuenta(codigo, nombre, tipo);

            if (PlanDeCuentas.ContainsKey(codigo))
            {
                Console.WriteLine($"Error: El codigo '{codigo}' ya esta siendo utilizado por otra cuenta. Intente con otro codigo...");
                Console.ReadKey();
            }
            else
            {
                PlanDeCuentas.Add(nueva.Codigo, nueva);
                Console.WriteLine($"Se ha agregado la cuenta '{nueva.Nombre}' con el codigo {nueva.Codigo}");
                Console.ReadKey();
                GrabarPlan();
            }
        }
Beispiel #3
0
        public Dictionary <int, double> Haber = new Dictionary <int, double>(); // KEY: Nº de Cuenta || VALUE: Monto

        // Constructor para crear Asientos manualmente dentro de la aplicación.
        // Se puede invocar desde el menu principal.
        public Asiento(int numero)
        {
            Numero = numero;
            Fecha  = DateTime.Now;

            bool   salir = false;
            int    codigo;
            double debe       = 0;
            double haber      = 0;
            double debeTotal  = 0;
            double haberTotal = 0;
            Dictionary <int, double> DebeTemporal  = new Dictionary <int, double>(); // KEY: Nº de Cuenta || VALUE: Monto
            Dictionary <int, double> HaberTemporal = new Dictionary <int, double>(); // KEY: Nº de Cuenta || VALUE: Monto

            do
            {
                bool   continuar = true;
                string deseaContinuar;
                Console.WriteLine("Codigos de cuentas disponibles:\n");
                LibroDiario.ImprimirPlanDeCuentas();

                do
                {
                    debe  = 0;         // Reset de variables para evitar acarreo de errores.
                    haber = 0;

                    codigo = Validadores.Codigo($"\nIngrese el codigo de cuenta del DEBE:");

                    if (!LibroDiario.PlanDeCuentas.ContainsKey(codigo))
                    {
                        Console.WriteLine($"El codigo '{codigo}' no está asociado a ninguna cuenta dentro del Plan de cuentas. Intente nuevamente...");
                        Console.ReadKey();
                    }
                    else
                    {
                        debe           = Validadores.NumeroPositivo($"Ingrese el monto de '{LibroDiario.PlanDeCuentas[codigo].Nombre}':");
                        deseaContinuar = Validadores.SoN("Desea agregar mas cuentas dentro del DEBE? (S)i o (N)o");

                        if (deseaContinuar == "N")
                        {
                            continuar = false;
                        }

                        DebeTemporal.Add(codigo, debe);
                        debeTotal += debe;
                    }
                } while (continuar == true);

                continuar = true;

                do
                {
                    debe  = 0;      // Reset de variables para evitar acarreo de errores.
                    haber = 0;

                    codigo = Validadores.Codigo($"\nIngrese el codigo de cuenta del HABER:");

                    if (!LibroDiario.PlanDeCuentas.ContainsKey(codigo))
                    {
                        Console.WriteLine($"El codigo '{codigo}' no está asociado a ninguna cuenta dentro del Plan de cuentas. Intente nuevamente...");
                        Console.ReadKey();
                    }
                    else
                    {
                        haber          = Validadores.NumeroPositivo($"Ingrese el monto de '{LibroDiario.PlanDeCuentas[codigo].Nombre}':");
                        deseaContinuar = Validadores.SoN("Desea agregar mas cuentas dentro del HABER? (S)i o (N)o");

                        if (deseaContinuar == "N")
                        {
                            continuar = false;
                        }

                        HaberTemporal.Add(codigo, haber);
                        haberTotal += haber;
                    }
                } while (continuar == true);

                if (debeTotal != haberTotal)
                {
                    Console.WriteLine($"ERROR: El DEBE ({debeTotal}) no es IGUAL al HABER ({haberTotal}). Intente nuevamente...");
                    Console.ReadKey();
                    DebeTemporal.Clear();
                    HaberTemporal.Clear();
                    debeTotal  = 0;             // Reset de variables para eliminar acarreo de errores.
                    haberTotal = 0;             // Reset de variables para eliminar acarreo de errores.
                }
                else
                {
                    salir = true;
                    Debe  = DebeTemporal;
                    Haber = HaberTemporal;
                }
            } while (salir == false);

            Console.WriteLine($"Se ha creado el asiento Nº{Numero} con exito!");
            Console.ReadKey();
            Console.Clear();
        }