Пример #1
0
        public static List <PlanCuentas> CargarPlanDeCuentas()
        {
            List <PlanCuentas> PlanDeCuentas = new();
            string             direccion     = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Actividad 03 - Plan de cuentas.txt");

            FileInfo elPlan = new FileInfo(direccion);

            if (!elPlan.Exists)
            {
                Funciones.MostrarError("No se encuentra el plan de cuentas");
                Console.ReadLine();
                Environment.Exit(0);
            }

            try
            {
                StreamReader abridor = elPlan.OpenText();
                if (elPlan.Length == 0)
                {
                    Funciones.MostrarError("El archivo de plan de cuentas esta vacio!.");
                    Console.ReadLine();
                    Environment.Exit(0);
                    return(null);
                }
                while (!abridor.EndOfStream)
                {
                    string Linea = abridor.ReadLine();

                    string[] Vector = Linea.Split('|');

                    if (Vector[0] == "Codigo" && Vector[1] == "Nombre" && Vector[2] == "Tipo")
                    {
                        // Con esto nos salteamos la primera linea.
                    }

                    else
                    {
                        PlanCuentas P = new PlanCuentas();
                        P.Codigo = Int32.Parse(Vector[0]);
                        P.Nombre = Vector[1];
                        P.Tipo   = Vector[2];
                        PlanDeCuentas.Add(P);
                    }
                }

                abridor.Close();
                return(PlanDeCuentas);
            }
            catch (IOException e)
            {
                Console.WriteLine("No se pudo cargar el plan de cuentas. Vuelva a abrir el programa:  " + e.Source);
                Console.ReadLine();
                Environment.Exit(0);
                return(null);
            }
        }
Пример #2
0
        static void Main(string[] args)
        {
            // Inicializamos variables

            List <Asientos> Asiento   = new();
            string          direccion = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Diario.txt");

            #region Variables para el menu 1
            List <PlanCuentas> PlanDeCuentas = new();
            PlanDeCuentas = Funciones.CargarPlanDeCuentas();
            int      cantidadAsientos, nroCuenta;
            DateTime fecha;
            Double   montoDebe               = 0;
            Double   montoHaber              = 0;
            Double   debeIncremental         = 0;
            Double   haberIncremental        = 0;
            Double   incrementalCuentasHaber = 0;
            Double   incrementalCuentasDebe  = 0;

            //Bools de parses
            bool parseNroAsiento = false;
            bool parse1          = false;
            bool parse2          = false;
            bool parse3          = false;
            bool parse4          = false;
            bool parse5          = false;
            bool parse6          = false;
            bool parse7          = false;
            bool parse8          = false;
            //Fin de bools de parses

            bool paso1 = false;
            bool paso2 = false;
            bool paso3 = false;

            bool hayAsientos = false;
            #endregion



            // Inicio del programa
            // Variable para el menu
            bool continuamos = true;
            while (continuamos)
            {
                Funciones.MostrarMenu();
                int opcion;
                if (Int32.TryParse(Console.ReadLine(), System.Globalization.NumberStyles.None, null, out opcion))
                {
                    switch (opcion)
                    {
                    case 1:
                        Console.Clear();
                        Console.WriteLine("¿Cuantos asientos quiere ingresar?");
                        do
                        {
                            if (Int32.TryParse(Console.ReadLine(), System.Globalization.NumberStyles.None, null, out cantidadAsientos))
                            {
                                if (cantidadAsientos == 0)
                                {
                                    Funciones.MostrarError("Lo ingresado no es un numero valido. Ingrese nuevamente.");
                                }
                                else
                                {
                                    parse1 = true;
                                }
                            }
                            else
                            {
                                Funciones.MostrarError("Lo ingresado no es un numero valido. Ingrese nuevamente.");
                            }
                        } while (parse1 == false);

                        if (Funciones.ComprobarTxt() == false)
                        {
                            hayAsientos = true;
                        }
                        else
                        {
                            hayAsientos = false;
                        }

                        int nrodeAsiento = 0;
                        do
                        {
                            // Iniciamos recorrido.
                            for (int i = 0; i < cantidadAsientos; i++)
                            {
                                if (hayAsientos == true)
                                {
                                    Console.WriteLine("Ingrese el nro de asiento");
                                    do
                                    {
                                        if (Int32.TryParse(Console.ReadLine(), System.Globalization.NumberStyles.None, null, out nrodeAsiento))
                                        {
                                            if (nrodeAsiento == 0)
                                            {
                                                Funciones.MostrarError("Lo ingresado no es un numero valido. Ingrese nuevamente.");
                                            }
                                            else
                                            {
                                                parseNroAsiento = true;
                                            }
                                        }
                                        else
                                        {
                                            Funciones.MostrarError("Lo ingresado no es un numero valido. Ingrese nuevamente.");
                                        }
                                    } while (parseNroAsiento == false);
                                    Console.WriteLine("-----------Asiento {0}-----------", (nrodeAsiento));
                                    parseNroAsiento = false;
                                }
                                else
                                {
                                    Console.WriteLine("-----------Asiento {0}-----------", (i + 1));
                                }

                                Console.WriteLine("Ingrese la fecha del asiento en el siguiente formato: DD/MM/AAAA");
                                do
                                {
                                    if (DateTime.TryParseExact(Console.ReadLine(), "dd/MM/yyyy", null, System.Globalization.DateTimeStyles.None, out fecha))
                                    {
                                        if (fecha > DateTime.Today)
                                        {
                                            Funciones.MostrarError("La fecha del asiento no puede ser futura. Ingrese nuevamente.");
                                        }
                                        else
                                        {
                                            parse2 = true;
                                        }
                                    }
                                    else
                                    {
                                        Funciones.MostrarError("Lo ingresado no es una fecha valida. Ingrese nuevamente.");
                                    }
                                } while (parse2 == false);

                                parse2 = false;
                                Console.WriteLine("Ingrese la cantidad de cuentas del DEBE:");
                                // Ciclo DEBE.
                                int cantidadCuentasDebe;
                                do
                                {
                                    if (Int32.TryParse(Console.ReadLine(), System.Globalization.NumberStyles.None, null, out cantidadCuentasDebe))
                                    {
                                        if (cantidadCuentasDebe == 0)
                                        {
                                            Funciones.MostrarError("Lo ingresado no es un numero valido. Ingrese nuevamente.");
                                        }
                                        else
                                        {
                                            parse3 = true;
                                        }
                                    }
                                    else
                                    {
                                        Funciones.MostrarError("Lo ingresado no es un numero valido. Ingrese nuevamente.");
                                    }
                                } while (parse3 == false);
                                parse3 = false;

                                for (int d = 0; d < cantidadCuentasDebe; d++)
                                {
                                    paso1 = false;
                                    do
                                    {
                                        Console.WriteLine("Ingrese Nro de cuenta");
                                        do
                                        {
                                            if (Int32.TryParse(Console.ReadLine(), System.Globalization.NumberStyles.None, null, out nroCuenta))
                                            {
                                                parse4 = true;
                                            }
                                            else
                                            {
                                                Funciones.MostrarError("Lo ingresado no es un numero valido. Ingrese nuevamente.");
                                            }
                                        } while (parse4 == false);
                                        parse4 = false;
                                        PlanCuentas buscar = PlanDeCuentas.Find(x => (x.Codigo == nroCuenta));

                                        if (PlanDeCuentas.Contains(buscar))
                                        {
                                            paso1 = true;
                                        }
                                        else
                                        {
                                            Funciones.MostrarError("No existe la cuenta en el Plan de Cuentas. Intente nuevamente.");
                                        }
                                    }while (paso1 == false);
                                    paso1 = false;
                                    // Pedimos Montos
                                    Console.WriteLine("Ingrese monto");
                                    do
                                    {
                                        if (Double.TryParse(Console.ReadLine(), System.Globalization.NumberStyles.AllowDecimalPoint, null, out montoDebe))
                                        {
                                            parse5 = true;
                                        }
                                        else
                                        {
                                            Funciones.MostrarError("Lo ingresado no es un numero valido. Ingrese nuevamente.");
                                        }
                                    } while (parse5 == false);
                                    parse5                 = false;
                                    debeIncremental       += montoDebe;
                                    incrementalCuentasDebe = incrementalCuentasDebe + cantidadCuentasDebe;
                                    if (hayAsientos == true)
                                    {
                                        Asiento.Add(new Asientos()
                                        {
                                            NroAsiento = nrodeAsiento, Fecha = fecha.ToString("dd/MM/yyyy"), CodigoCuenta = nroCuenta, Debe = montoDebe, Haber = 0
                                        });
                                    }
                                    else
                                    {
                                        Asiento.Add(new Asientos()
                                        {
                                            NroAsiento = (i + 1), Fecha = fecha.ToString("dd/MM/yyyy"), CodigoCuenta = nroCuenta, Debe = montoDebe, Haber = 0
                                        });
                                    }
                                }
                                // Fin ciclo DEBE

                                // Inicio Ciclo Haber
                                Console.WriteLine("Ingrese la cantidad de cuentas del HABER:");
                                // Ciclo HABER.
                                int cantidadCuentasHaber;
                                do
                                {
                                    if (Int32.TryParse(Console.ReadLine(), System.Globalization.NumberStyles.None, null, out cantidadCuentasHaber))
                                    {
                                        if (cantidadCuentasHaber == 0)
                                        {
                                            Funciones.MostrarError("Lo ingresado no es un numero valido. Ingrese nuevamente.");
                                        }
                                        else
                                        {
                                            parse6 = true;
                                        }
                                    }
                                    else
                                    {
                                        Funciones.MostrarError("Lo ingresado no es un numero valido. Ingrese nuevamente.");
                                    }
                                } while (parse6 == false);
                                parse6 = false;
                                for (int d = 0; d < cantidadCuentasHaber; d++)
                                {
                                    paso2 = false;
                                    do
                                    {
                                        Console.WriteLine("Ingrese Nro de cuenta");
                                        do
                                        {
                                            if (Int32.TryParse(Console.ReadLine(), System.Globalization.NumberStyles.None, null, out nroCuenta))
                                            {
                                                parse7 = true;
                                            }
                                            else
                                            {
                                                Funciones.MostrarError("Lo ingresado no es un numero valido. Ingrese nuevamente.");
                                            }
                                        } while (parse7 == false);
                                        parse7 = false;
                                        PlanCuentas buscar = PlanDeCuentas.Find(x => (x.Codigo == nroCuenta));

                                        if (PlanDeCuentas.Contains(buscar))
                                        {
                                            paso2 = true;
                                        }
                                        else
                                        {
                                            Funciones.MostrarError("No existe la cuenta en el Plan de Cuentas. Intente nuevamente.");
                                        }
                                    }while (paso2 == false);
                                    paso2 = false;
                                    // Pedimos Montos
                                    Console.WriteLine("Ingrese monto");
                                    do
                                    {
                                        if (Double.TryParse(Console.ReadLine(), System.Globalization.NumberStyles.AllowDecimalPoint, null, out montoHaber))
                                        {
                                            parse8 = true;
                                        }
                                        else
                                        {
                                            Funciones.MostrarError("Lo ingresado no es un numero valido. Ingrese nuevamente.");
                                        }
                                    } while (parse8 == false);
                                    parse8                   = false;
                                    haberIncremental        += montoHaber;
                                    incrementalCuentasHaber += cantidadCuentasHaber;
                                    if (hayAsientos == true)
                                    {
                                        Asiento.Add(new Asientos()
                                        {
                                            NroAsiento = nrodeAsiento, Fecha = fecha.ToString("dd/MM/yyyy"), CodigoCuenta = nroCuenta, Debe = 0, Haber = montoHaber
                                        });
                                    }
                                    else
                                    {
                                        Asiento.Add(new Asientos()
                                        {
                                            NroAsiento = (i + 1), Fecha = fecha.ToString("dd/MM/yyyy"), CodigoCuenta = nroCuenta, Debe = 0, Haber = montoHaber
                                        });
                                    }
                                }


                                // Comprobamos que DEBE = HABER
                                if (debeIncremental == haberIncremental)
                                {
                                    paso3 = true;
                                }
                                else
                                {
                                    Funciones.MostrarError("El debe no es igual al haber. Por favor, reingrese los asientos correctamente.");
                                    montoDebe               = 0;
                                    montoHaber              = 0;
                                    debeIncremental         = 0;
                                    haberIncremental        = 0;
                                    incrementalCuentasDebe  = 0;
                                    incrementalCuentasHaber = 0;
                                    nrodeAsiento            = 0;
                                    Asiento.Clear();

                                    paso3           = false;
                                    paso1           = false;
                                    paso2           = false;
                                    parse3          = false;
                                    parse4          = false;
                                    parse5          = false;
                                    parse6          = false;
                                    parse7          = false;
                                    parse8          = false;
                                    parseNroAsiento = false;

                                    break;
                                }
                            }
                        } while (paso3 == false);
                        paso3 = false;

                        //Actualizamos el archivo.
                        foreach (var item in Asiento)
                        {
                            Funciones.ActualizarDiario(item.ToString());
                        }

                        hayAsientos = false;
                        Asiento.Clear();
                        Console.WriteLine("Asientos agregados correctamente.");
                        Console.ReadLine();
                        Console.Clear();
                        break;


                    case 2:
                        // Vamos a mostrar todo lo que hay en Diario.txt
                        Console.Clear();
                        List <Asientos> mostrarAsientos = new();
                        mostrarAsientos = Funciones.CargarAsientos();



                        for (int i = 0; i < (Funciones.ContarAsientos()); i++)
                        {
                            string tipoCuenta = "";
                            if (mostrarAsientos.FirstOrDefault(x => x.NroAsiento == (i + 1)) == null)
                            {
                                break;
                            }

                            string fechadeasiento = mostrarAsientos.FirstOrDefault(x => x.NroAsiento == (i + 1)).Fecha;



                            Console.WriteLine("{0} ---------------------------------{1}-------------------------------", fechadeasiento, (i + 1));
                            Console.WriteLine(Environment.NewLine);
                            foreach (var item in mostrarAsientos.Where(x => (x.NroAsiento == (i + 1))))
                            {
                                PlanCuentas cuentanombre = PlanDeCuentas.Find(x => (x.Codigo == item.CodigoCuenta));
                                if (item.Debe == 0)
                                {
                                    if (cuentanombre.Tipo == "Activo")
                                    {
                                        tipoCuenta = "Activo-";
                                    }
                                    else
                                    {
                                        tipoCuenta = cuentanombre.Tipo;
                                    }
                                    Console.WriteLine(String.Format("|{0,-5}|{1,-68}|{2,-14}|{3,-5}|{4,-5}|", item.CodigoCuenta, "      a  " + cuentanombre.Nombre, tipoCuenta, item.Debe, item.Haber));
                                    tipoCuenta = "";
                                }
                                else
                                {
                                    if (cuentanombre.Tipo == "Pasivo")
                                    {
                                        tipoCuenta = "Pasivo-";
                                    }
                                    else if (cuentanombre.Tipo == "PatrimonioNeto")
                                    {
                                        tipoCuenta = "PatrimonioNeto-";
                                    }
                                    else
                                    {
                                        tipoCuenta = cuentanombre.Tipo;
                                    }
                                    Console.WriteLine(String.Format("|{0,-5}|{1,-68}|{2,-14}|{3,-5}|{4,-5}|", item.CodigoCuenta, cuentanombre.Nombre, tipoCuenta, item.Debe, item.Haber));
                                    tipoCuenta = "";
                                }
                            }
                            Console.WriteLine(Environment.NewLine);
                        }


                        Console.ReadLine();
                        Console.Clear();
                        break;

                    case 3:
                        Environment.Exit(0);
                        continuamos = false;

                        break;

                    default:

                        Funciones.MostrarError("Lo ingresado no es una opcion valida.");


                        break;
                    }
                }
                else
                {
                    Console.WriteLine("Lo ingresado no es una opcion valida");
                }
            }



            Console.ReadLine();
        }