示例#1
0
        public Boolean Deleted(Cuenta cuenta, Usuario usuario, out String mensaje)
        {
            if (!Guachi.Consultar(usuario, VentanaInfo.FormMaestroCuenta, CRUDName.Eliminar))
            {
                mensaje = "Acceso denegado!!!";
                return(false);
            }
            var sql = "UPDATE accounts T01 " +
                      "SET T01.active = 0, T01.updated_by = @updated_by " +
                      "WHERE T01.account_id = @account_id AND T01.account_guide + 0 = 3 " +
                      "AND(SELECT COUNT(*) " +
                      "FROM transactions_accounting T0 " +
                      "LEFT JOIN accounting_entries T1 USING(accounting_entry_id) " +
                      "LEFT JOIN accounting_months T2 USING(accounting_months_id) " +
                      "WHERE T2.active = 1 AND T2.closed = 0 AND T1.active = 1 AND T0.active = 1 " +
                      "AND T0.account_id = @account_id) = 0 LIMIT 1";
            var parametros = new List <Parametro>();

            parametros.Add(new Parametro("@account_id", cuenta.Id));
            parametros.Add(new Parametro("@updated_by", usuario.UsuarioId));

            var result = manejador.Ejecutar(sql, parametros, CommandType.Text);

            mensaje = (result == 1) ? "Cuenta eliminada correctamente" : "No se pudo eliminar la cuenta porque tiene movimientos";
            return((result == 1) ? true : false);
        }
示例#2
0
        /// <summary>
        /// Se actualiza
        /// </summary>
        /// <param name="t"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public bool Update(Asiento t, Usuario user, out String mensaje)
        {
            if (!Guachi.Consultar(user, VentanaInfo.FormAsientos, CRUDName.Actualizar))
            {
                mensaje = "Acceso denegado!!!";
                return(false);
            }

            var sqlAsiento       = "UPDATE accounting_entries SET updated_by = @updated_by, status = @status WHERE accounting_entry_id = @accounting_entry_id LIMIT 1; ";
            List <Parametro> par = new List <Parametro>();

            par.Add(new Parametro("@updated_by", user.UsuarioId));
            par.Add(new Parametro("@status", Convert.ToInt32(t.Estado)));
            par.Add(new Parametro("@accounting_entry_id", t.Id));


            try
            {
                if (manejador.Ejecutar(sqlAsiento, par, CommandType.Text) > 0)
                {
                    mensaje = "asiento actualizado correctamente";
                    return(true);
                }
                else
                {
                    mensaje = $"El asiento {t.NumeroAsiento} no pudo ser actualizado";
                    return(false);
                }
            }
            catch (Exception ex)
            {
                mensaje = ex.Message;
                return(false);
            }
        }
示例#3
0
        public bool Delete(Asiento t, Usuario user, out String mensaje)
        {
            try
            {
                if (!Guachi.Consultar(user, VentanaInfo.FormAsientos, CRUDName.Eliminar))
                {
                    mensaje = "Acceso denegado!!!";
                    return(false);
                }

                var sql = "UPDATE accounting_entries SET active = FALSE " +
                          "WHERE accounting_entry_id = @accounting_entry_id LIMIT 1";

                //int totalActulizados;
                var cnt = manejador.Ejecutar(sql, new List <Parametro> {
                    new Parametro("@accounting_entry_id", t.Id)
                }, CommandType.Text);

                mensaje = $"Se actualizaron {cnt} asientos";
                return(true);
            }
            catch (Exception ex)
            {
                mensaje = ex.Message;
                return(false);
            }
        }
示例#4
0
        public Boolean Insert(Compañia compania, Usuario user, Compañia copiarMAestroCuenta, out String mensaje)
        {
            if (!Guachi.Consultar(user, VentanaInfo.FormMaestroCompanias, CRUDName.Insertar))
            {
                mensaje = "Acceso denegado!!!";
                return(false);
            }

            var sql = "INSERT INTO companies(company_id,type_id,number_id,name,money_type,op1,op2,address,website,mail,phone_number1,phone_number2,notes,user_id)" +
                      "VALUES(@company_id,@type_id,@number_id,@name,@money_type,@op1,@op2,@address,@website,@mail,@phone_number1,@phone_number2,@notes,@user_id);";

            try
            {
                List <Parametro> lst = new List <Parametro>();
                compania.Codigo = NuevoCodigo();

                lst.Add(new Parametro("@company_id", compania.Codigo));
                lst.Add(new Parametro("@type_id", (int)compania.TipoId));
                lst.Add(new Parametro("@number_id", compania.NumeroCedula));
                lst.Add(new Parametro("@name", compania.Nombre));
                lst.Add(new Parametro("@money_type", (int)compania.TipoMoneda));
                lst.Add(new Parametro("@address", compania.Direccion));
                lst.Add(new Parametro("@website", compania.Web));
                lst.Add(new Parametro("@mail", compania.Correo));
                lst.Add(new Parametro("@phone_number1", compania.Telefono[0]));
                lst.Add(new Parametro("@phone_number2", compania.Telefono[1]));
                lst.Add(new Parametro("@notes", compania.Observaciones));
                lst.Add(new Parametro("@user_id", user.UsuarioId));
                lst.Add(new Parametro("@op1", ((compania is PersonaJuridica) ? ((PersonaJuridica)compania).MyIDRepresentanteLegal : ((PersonaFisica)compania).MyApellidoPaterno)));
                lst.Add(new Parametro("@op2", ((compania is PersonaJuridica) ? ((PersonaJuridica)compania).MyRepresentanteLegal : ((PersonaFisica)compania).MyApellidoMaterno)));

                if (manejador.Ejecutar(sql, lst, CommandType.Text) != 0)
                {
                    if (copiarMAestroCuenta.Codigo == "POR DEFECTO")
                    {
                        GenerarCuentasDefault(compania, user);
                    }
                    else
                    {
                        if (!CopiarMaestroDeCuenta(copiarMAestroCuenta, user, compania))
                        {
                            mensaje = "No se pudo clonar el maestro de cuentas";
                            return(false);
                        }
                    }
                    mensaje = "Se registro la compañia correctamente";
                    return(true);
                }
                else
                {
                    mensaje = "No se pudo ingresar la compañia";
                    return(false);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#5
0
        public bool Update(Transaccion tr, Usuario usuario, out String mensaje)
        {
            if (!Guachi.Consultar(usuario, VentanaInfo.FormAsientos, CRUDName.Actualizar))
            {
                mensaje = "Acceso denegado!!!";
                return(false);
            }
            try
            {
                var sql = "UPDATE transactions_accounting " +
                          "SET account_id = @account_id, " +
                          "reference = @reference, " +
                          "detail = @detail, " +
                          "balance = @balance," +
                          "balance_type = @balance_type, " +
                          "money_type = @money_type, " +
                          "money_chance = @money_chance, " +
                          "bill_date = @bill_date," +
                          "updated_by = @updated_by " +
                          "WHERE transaction_accounting_id = @transaction_accounting_id";

                List <Parametro> lst = new List <Parametro>
                {
                    new Parametro("@account_id", tr.CuentaDeAsiento.Id),
                    new Parametro("@reference", tr.Referencia),
                    new Parametro("@detail", tr.Detalle),
                    new Parametro("@balance", tr.Monto),
                    new Parametro("@balance_type", (int)tr.ComportamientoCuenta),
                    new Parametro("@money_type", (int)tr.TipoCambio),
                    new Parametro("@money_chance", tr.MontoTipoCambio),
                    new Parametro("@bill_date", tr.FechaFactura),
                    new Parametro("@updated_by", usuario.UsuarioId),
                    new Parametro("@transaction_accounting_id", tr.Id)
                };

                if (manejador.Ejecutar(sql, lst, CommandType.Text) == 0)
                {
                    mensaje = "No se pudo actualizar ningun registro";
                    return(false);
                }
                else
                {
                    mensaje = "Se actualizaron datos correctamente";
                    return(true);
                }
            }
            catch (Exception ex)
            {
                mensaje = ex.Message;
                return(false);
            }
        }
示例#6
0
        public Boolean Update(Compañia compania, Usuario user, out String mensaje)
        {
            if (!Guachi.Consultar(user, VentanaInfo.FormMaestroCompanias, CRUDName.Actualizar))
            {
                mensaje = "Acceso denegado!!!";
                return(false);
            }


            var message = compania.Nombre + " ACTUAIZADA CORRECTAMENTE";
            var sql     = "UPDATE companies SET " +
                          "name=@name,money_type=@money_type,op1=@op1,op2=@op2,address=@address,website=@website,mail=@mail,phone_number1=@phone_number1," +
                          "phone_number2=@phone_number2,notes=@notes,user_id=@user_id,active=@active WHERE company_id=@company_id";

            try
            {
                List <Parametro> lst = new List <Parametro>();

                lst.Add(new Parametro("@company_id", compania.Codigo));
                lst.Add(new Parametro("@name", compania.Nombre));
                lst.Add(new Parametro("@money_type", compania.TipoMoneda));
                lst.Add(new Parametro("address", compania.Direccion));
                lst.Add(new Parametro("@website", compania.Web));
                lst.Add(new Parametro("@mail", compania.Correo));
                lst.Add(new Parametro("@phone_number1", compania.Telefono[0]));
                lst.Add(new Parametro("@phone_number2", compania.Telefono[1]));
                lst.Add(new Parametro("@notes", compania.Observaciones));
                lst.Add(new Parametro("@user_id", user.UsuarioId));
                lst.Add(new Parametro("@active", compania.Activo));
                lst.Add(new Parametro("@op1", ((compania is PersonaJuridica) ? ((PersonaJuridica)compania).MyRepresentanteLegal : ((PersonaFisica)compania).MyApellidoPaterno)));
                lst.Add(new Parametro("@op2", ((compania is PersonaJuridica) ? ((PersonaJuridica)compania).MyIDRepresentanteLegal : ((PersonaFisica)compania).MyApellidoMaterno)));

                if (manejador.Ejecutar(sql, lst, CommandType.Text) == 0)
                {
                    mensaje = "No se pudo actualizar la compañia";
                    return(false);
                }
                else
                {
                    mensaje = "Se actualizo la compañia";
                    return(true);
                }
            }
            catch (Exception ex)
            {
                mensaje = ex.Message;
                return(false);
            }
        }
示例#7
0
        public Boolean UpdateNameInfo(Cuenta t, Usuario user, out String mensaje)
        {
            if (!Guachi.Consultar(user, VentanaInfo.FormMaestroCuenta, CRUDName.Actualizar))
            {
                mensaje = "Acceso denegado!!!";
                return(false);
            }

            try
            {
                manejador.Ejecutar("INSERT IGNORE INTO accounts_names(name) VALUES(@name);",
                                   new List <Parametro> {
                    new Parametro("@name", t.Nombre)
                }, CommandType.Text);

                var sql = "UPDATE accounts " +
                          "SET account_name_id = (SELECT account_name_id FROM accounts_names where name = @name LIMIT 1), " +
                          "detail = @detail," +
                          "updated_by = @updated_by " +
                          "WHERE account_id = @account_id and company_id = @company_id;";

                var retorno = manejador.Ejecutar(sql, new List <Parametro> {
                    new Parametro("@name", t.Nombre),
                    new Parametro("@detail", t.Detalle),
                    new Parametro("@updated_by", user.UsuarioId),
                    new Parametro("@account_id", t.Id),
                    new Parametro("@company_id", t.MyCompania.Codigo)
                },
                                                 CommandType.Text);
                if (retorno > 0)
                {
                    mensaje = "Cuenta actualizada correctamente";
                    return(true);
                }
                else
                {
                    mensaje = "No se pudo actualizar la cuenta";
                    return(false);
                }
            }
            catch (Exception ex)
            {
                mensaje = ex.Message;
                return(false);
            }
        }
示例#8
0
        public Boolean Update(Usuario t, Usuario user, out String mensaje)
        {
            if (!Guachi.Consultar(user, VentanaInfo.FormMaestroUsuario, CRUDName.Actualizar))
            {
                mensaje = "Acceso denegado!!!";
                return(false);
            }

            try
            {
                var sql = "UPDATE users SET number_id = @number_id,name=@name,user_name=@user_name,user_type=@user_type,lastname_p=@lastname_p,lastname_m=@lastname_m,phone_number=@phone_number," +
                          "mail=@mail,notes=@notes,password=@password,updated_by=@updated_by,active=@active WHERE user_id = @user_id;";
                List <Parametro> lst = new List <Parametro>();

                lst.Add(new Parametro("@user_id", t.UsuarioId));
                lst.Add(new Parametro("@number_id", t.MyCedula));
                lst.Add(new Parametro("@name", t.MyNombre));
                lst.Add(new Parametro("@user_name", t.UserName));
                lst.Add(new Parametro("@user_type", (int)t.TipoUsuario));
                lst.Add(new Parametro("@lastname_p", t.MyApellidoPaterno));
                lst.Add(new Parametro("@lastname_m", t.MyApellidoMaterno));
                lst.Add(new Parametro("@phone_number", t.MyTelefono));
                lst.Add(new Parametro("@mail", t.MyMail));
                lst.Add(new Parametro("@notes", t.MyNotas));
                lst.Add(new Parametro("@password", t.MyClave));
                lst.Add(new Parametro("@updated_by", user.UsuarioId));
                lst.Add(new Parametro("@active", Convert.ToInt16(t.MyActivo)));

                if (manejador.Ejecutar(sql, lst, CommandType.Text) == 0)
                {
                    mensaje = "No se actualizaron datos";
                    return(false);
                }
                else
                {
                    mensaje = "Datos actualizados correctamente";
                    return(true);
                }
            }
            catch (Exception ex)
            {
                mensaje = ex.Message;
                return(false);
            }
        }
示例#9
0
        public Boolean Insert(Usuario t, Usuario user, out String mensaje)
        {
            if (!Guachi.Consultar(user, VentanaInfo.FormMaestroUsuario, CRUDName.Insertar))
            {
                mensaje = "Acceso denegado!!!";
                return(false);
            }

            var sql = "INSERT INTO users(number_id,  name,  user_name , user_type , lastname_p , lastname_m,  phone_number , mail , notes,  password,  updated_by,  active) " +
                      "VALUES(@number_id, @name, @user_name, @user_type, @lastname_p, @lastname_m, @phone_number, @mail, @notes, @password, @updated_by, @active);";
            List <Parametro> lst = new List <Parametro>();

            try
            {
                lst.Add(new Parametro("@number_id", t.MyCedula));
                lst.Add(new Parametro("@name", t.MyNombre));
                lst.Add(new Parametro("@user_name", t.UserName));
                lst.Add(new Parametro("@user_type", (int)t.TipoUsuario));
                lst.Add(new Parametro("@lastname_p", t.MyApellidoPaterno));
                lst.Add(new Parametro("@lastname_m", t.MyApellidoMaterno));
                lst.Add(new Parametro("@phone_number", t.MyTelefono));
                lst.Add(new Parametro("@mail", t.MyMail));
                lst.Add(new Parametro("@notes", t.MyNotas));
                lst.Add(new Parametro("@password", t.MyClave));
                lst.Add(new Parametro("@updated_by", user.UsuarioId));
                lst.Add(new Parametro("@active", Convert.ToInt16(t.MyActivo)));

                if (manejador.Ejecutar(sql, lst, CommandType.Text) == 0)
                {
                    mensaje = "No se guardaron datos";
                    return(false);
                }
                else
                {
                    mensaje = "Datos guardados correctamente";
                    return(true);
                }
            }
            catch (Exception ex)
            {
                mensaje = ex.Message;
                return(false);
            }
        }
示例#10
0
        public Asiento Insert(Asiento t, Usuario user, out String mensaje)
        {
            if (!Guachi.Consultar(user, VentanaInfo.FormAsientos, CRUDName.Insertar))
            {
                mensaje = "Acceso denegado!!!";
                return(t);
            }

            var numeroAsiento = GetConsecutivo(t.Compania, t.FechaAsiento.Fecha);

            using (MySqlTransaction tr = manejador.GetConnection().BeginTransaction(IsolationLevel.Serializable))
            {
                try
                {
                    //si el consecutivo generado no es igual al que tenemos entonces ya alguien mas genero uno
                    //se lanza un excepcion para que el usuario refresque la ventana
                    if (t.NumeroAsiento != numeroAsiento)
                    {
                        throw new Exception("¡Este asiento ya fue asignado por otro usuario, refresque esta ventana!");
                    }

                    var sqlAsiento = "INSERT INTO accounting_entries(entry_id,accounting_months_id,updated_by) " +
                                     "VALUES(@entry_id,@accounting_months_id,@updated_by); SELECT LAST_INSERT_ID();";
                    using (MySqlCommand cmd = new MySqlCommand(sqlAsiento, tr.Connection, tr))
                    {
                        cmd.Parameters.AddWithValue("@entry_id", t.NumeroAsiento);
                        cmd.Parameters.AddWithValue("@accounting_months_id", t.FechaAsiento.Id);
                        cmd.Parameters.AddWithValue("@updated_by", user.UsuarioId);
                        var numeroId = cmd.ExecuteScalar();
                        t.Id = Convert.ToInt32(numeroId);
                    }

                    tr.Commit();
                    mensaje = "El asiento se guardó correctamente"; ///TODO
                    return(t);
                }
                catch (Exception)
                {
                    tr.Rollback();
                    throw;
                }
            }
        }
示例#11
0
        public Boolean Insert(FechaTransaccion t, Compañia compañia, Usuario user, out String mensaje)
        {
            if (!Guachi.Consultar(user, VentanaInfo.FormAdminMeses, CRUDName.Insertar))
            {
                mensaje = "Acceso denegado!!!";
                return(false);
            }

            try
            {
                var sql = "INSERT INTO accounting_months(month_report,company_id,updated_by) VALUES(@month_report,@company_id,@updated_by);";

                var parametros = new List <Parametro>()
                {
                    new Parametro("@month_report", t.Fecha),
                    new Parametro("@company_id", compañia.Codigo),
                    new Parametro("@updated_by", user.UsuarioId)
                };

                if (manejador.Ejecutar(sql, parametros, CommandType.Text) == 0)
                {
                    mensaje = "No se guardaron datos";
                    return(false);
                }
                else
                {
                    mensaje = "Datos guardados correctamente";
                    return(true);
                }
            }
            catch (Exception ex)
            {
                mensaje = ex.Message;
                return(false);
            }
        }
示例#12
0
        public Boolean Insert(ref Cuenta t, Cuenta padre, Usuario user, out String mensaje)
        {
            if (!Guachi.Consultar(user, VentanaInfo.FormMaestroCuenta, CRUDName.Insertar))
            {
                mensaje = "Acceso denegado!!!";
                return(false);
            }
            using (MySqlTransaction tr = manejador.GetConnection().BeginTransaction(IsolationLevel.Serializable))
            {
                try
                {
                    ///Agregamos el nombre a la base de datos
                    ///Si el nombre no exite no se crea
                    var sql1 = "INSERT IGNORE INTO accounts_names(name) VALUES(@name);";
                    using (MySqlCommand cmd = new MySqlCommand(sql1, tr.Connection, tr))
                    {
                        MySqlDataAdapter da = new MySqlDataAdapter
                        {
                            SelectCommand = cmd
                        };

                        cmd.Parameters.AddWithValue("@name", t.Nombre);
                        cmd.ExecuteNonQuery();
                    }


                    ///Insertamos la cuenta en  la base de datos
                    ///este query nos devuelve el id de la nueva cuenta
                    var sql2 = "INSERT INTO accounts (account_name_id,previous_balance_c,previous_balance_d,father_account,company_id,account_type,detail,editable,updated_by) " +
                               "VALUES((SELECT account_name_id FROM accounts_names WHERE name = @name LIMIT 1)," +
                               "@previous_balance_c," +
                               "@previous_balance_d," +
                               "@father_account," +
                               "@company_id," +
                               "@account_type," +
                               "@detail," +
                               "@editable," +
                               "@updated_by);" +
                               "SELECT LAST_INSERT_ID();";
                    using (MySqlCommand cmd = new MySqlCommand(sql2, tr.Connection, tr))
                    {
                        cmd.CommandType = CommandType.Text;
                        cmd.Parameters.AddWithValue("@name", t.Nombre);
                        cmd.Parameters.AddWithValue("@father_account", padre.Id);
                        cmd.Parameters.AddWithValue("@previous_balance_c", t.SaldoAnteriorColones);
                        cmd.Parameters.AddWithValue("@previous_balance_d", t.SaldoAnteriorDolares);
                        cmd.Parameters.AddWithValue("@company_id", t.MyCompania.Codigo);
                        cmd.Parameters.AddWithValue("@account_type", t.TipoCuenta.TipoCuenta.ToString().Replace('_', ' ').ToUpper());
                        cmd.Parameters.AddWithValue("@detail", t.Detalle);
                        cmd.Parameters.AddWithValue("@editable", t.Editable);
                        cmd.Parameters.AddWithValue("@updated_by", user.UsuarioId);
                        MySqlDataAdapter da = new MySqlDataAdapter
                        {
                            SelectCommand = cmd
                        };
                        var rer = cmd.ExecuteScalar().ToString();


                        if (padre.Indicador == IndicadorCuenta.Cuenta_Auxiliar)
                        {
                            ///Actualizamos todas las transacciones que se hayan hecho con esa cuenta
                            ///pero solo en caso de la cuenta ser un auxiliar
                            ///si la cuenta no es un auxiliar no tiene sentido
                            ///las cuentas de mayor pueden heredar cuentas cuentas quieras
                            ///sin tener que pasar el saldo
                            cmd.CommandText = "UPDATE transactions_accounting SET account_id = @account_id WHERE account_id = @account_id_old;" +
                                              "UPDATE accounts SET account_guide = 2 WHERE account_id = @account_id_old LIMIT 1";
                            cmd.Parameters.Clear();

                            cmd.Parameters.AddWithValue("@account_id", rer);
                            cmd.Parameters.AddWithValue("@account_id_old", t.Padre);

                            padre.Indicador = IndicadorCuenta.Cuenta_De_Mayor;
                            cmd.ExecuteNonQuery();
                        }

                        t.Id = Convert.ToInt32(rer);
                        tr.Commit();
                        mensaje = "Asiento guardado correctamente";
                        return(true);
                    }
                }
                catch (Exception ex)
                {
                    tr.Rollback();
                    mensaje = ex.Message;
                    return(false);
                }
            }
        }
示例#13
0
        /// <summary>
        /// Se hace todo en un metodo porque debemos de asegurarnos que el mes quede cerrado y los datos quedeb tambien guardados
        /// primero se intenta cerrar el mes
        ///
        /// </summary>
        /// <param name="t"></param>
        /// <param name="compañia"></param>
        /// <param name="user"></param>
        /// <param name="lstCuentas"></param>
        /// <param name="mensaje"></param>
        /// <returns></returns>
        public Boolean CerrarMes(FechaTransaccion t, Compañia compañia, Usuario user, List <Cuenta> lstCuentas, out String mensaje)
        {
            /**
             * Primero se consulta si el usuario tiene permisos para hacer la accción
             *
             */

            if (!Guachi.Consultar(user, VentanaInfo.FormAsientos, CRUDName.Actualizar))
            {
                mensaje = "Acceso denegado!!!";
                return(false);
            }


            /**
             * Se abre una transacción que sera la encargada de insertar los datos
             *
             * primero cerramos el mes y nos aseguramos que de verdad se haya cerrado
             */

            using (MySqlTransaction tr = manejador.GetConnection().BeginTransaction(IsolationLevel.Serializable))
            {
                try
                {
                    var sql = "UPDATE accounting_months SET closed = @closed, updated_by = @updated_by " +
                              "WHERE company_id = @company_id AND accounting_months_id = @accounting_months_id ";

                    using (MySqlCommand cmd = new MySqlCommand(sql, tr.Connection, tr))
                    {
                        //primero se actualiza el mes y se pone como cerrado.

                        cmd.Parameters.AddWithValue("@closed", Convert.ToByte(t.Cerrada));
                        cmd.Parameters.AddWithValue("@updated_by", user.UsuarioId);
                        cmd.Parameters.AddWithValue("@company_id", compañia.Codigo);
                        cmd.Parameters.AddWithValue("@accounting_months_id", t.Id);

                        if (cmd.ExecuteNonQuery() == 0)
                        {
                            mensaje = "No se pudo cerrar el mes";
                            return(false);
                        }
                    }

                    var sql2 = "UPDATE accounts SET previous_balance_c = @previous_balance_c," +
                               "previous_balance_d = @previous_balance_d, updated_by = @updated_by " +
                               "WHERE account_id = @account_id AND company_id = @company_id;";

                    using (MySqlCommand cmd = new MySqlCommand(sql2, tr.Connection, tr))
                    {
                        /**
                         * usamos la lista de cuentas pasadas por parametro, estas cuentas son
                         * todas las que tienen que ser actualizadas
                         */

                        foreach (var item in lstCuentas)
                        {
                            cmd.Parameters.Clear();

                            cmd.Parameters.AddWithValue("@previous_balance_c", item.SaldoActualColones);
                            cmd.Parameters.AddWithValue("@previous_balance_d", item.SaldoActualDolares);
                            cmd.Parameters.AddWithValue("@updated_by", user.UsuarioId);
                            cmd.Parameters.AddWithValue("@account_id", item.Id);
                            cmd.Parameters.AddWithValue("@company_id", compañia.Codigo);
                            cmd.ExecuteNonQuery();
                        }
                    }

                    tr.Commit();
                    mensaje = "Datos actualizados correctamente";
                    return(true);
                }
                catch (Exception ex)
                {
                    tr.Rollback();

                    mensaje = ex.Message;
                    return(false);
                }
            }
        }