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); }
/// <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); } }
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); } }
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; } }
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); } }
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); } }
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); } }
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); } }
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); } }
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; } } }
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); } }
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); } } }
/// <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); } } }