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(); }
static void Main(string[] args) { const string menuPrincipal = "\t-MENU PRINCIPAL-\n\n" + "I - Ingresar nuevo asiento\n" + "V - Ver Libro Diario\n" + "P - Ver plan de cuentas\n" + "M - Modificar plan de cuentas\n" + "S - Guardar y salir\n"; const string menuModificarPlan = "\t-MODIFICAR PLAN DE CUENTAS-\nA - Agregar nueva cuenta\n" + "E - Eliminar cuenta\n" + "V - Volver al menu principal\n"; string opcionElegida; Console.WriteLine($"\tBienvenido {Environment.UserName} a su gestor de libro diario!\n"); LibroDiario.IniciarPlanDeCuentas(); LibroDiario.IniciarDiario(); Console.ReadKey(); Console.Clear(); do { Console.WriteLine(menuPrincipal); opcionElegida = Console.ReadLine().ToUpper(); switch (opcionElegida) { case "I": LibroDiario.AgregarAsiento(); break; case "V": Console.WriteLine("\tLibro Diario Actual:\n"); LibroDiario.ImprimirDiario(); Console.WriteLine("----Presione una tecla para continuar----\n"); Console.ReadKey(); break; case "P": Console.WriteLine("\tPlan de Cuentas Actual:\n"); LibroDiario.ImprimirPlanDeCuentas(); Console.WriteLine("----Presione una tecla para continuar----\n"); Console.ReadKey(); break; case "M": do { Console.WriteLine(menuModificarPlan); opcionElegida = Console.ReadLine().ToUpper(); if (opcionElegida == "A") { LibroDiario.AgregarCuenta(); } else if (opcionElegida == "E") { LibroDiario.QuitarCuenta(); } else if (opcionElegida != "A" && opcionElegida != "E" && opcionElegida != "V") { Console.WriteLine($"'{opcionElegida}' no es una opcion valida\n"); Console.ReadKey(); } } while (opcionElegida != "V"); break; } if (opcionElegida != "I" && opcionElegida != "V" && opcionElegida != "P" && opcionElegida != "M" && opcionElegida != "S") { Console.WriteLine($"'{opcionElegida}' no es una opcion valida\n"); Console.ReadKey(); } } while (opcionElegida != "S"); Console.WriteLine("Saliendo al escritorio..."); Console.ReadKey(); }