예제 #1
0
        //1 tipo cuenta 2 guia ,3 cuenta padre
        public void GenerarCuentasDefault(Compañia c, Usuario user)
        {
            var sql = "INSERT INTO accounts (account_name_id,father_account,company_id,account_type,account_guide,editable,updated_by) VALUES" +
                      "(@account_name_id,@father_account,@company_id,@account_type,@account_guide,0,@updated_by);SELECT LAST_INSERT_ID();";

            using var connect      = new MySqlConnection(Manejador.GetConnectionString());
            using MySqlCommand cmd = new MySqlCommand(sql, connect);

            var gestor = new Double[60];

            for (int j = 1; j <= 57; j++)
            {
                MySqlDataAdapter da = new MySqlDataAdapter {
                    SelectCommand = cmd
                };

                var r = EstablecerHijos(gestor, j);
                if (r.Item3 == 0.0)
                {
                    cmd.Parameters.AddWithValue("@father_account", null);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@father_account", r.Item3);
                }

                cmd.Parameters.AddWithValue("@account_name_id", r.Item4);
                cmd.Parameters.AddWithValue("@company_id", c.Codigo);
                cmd.Parameters.AddWithValue("@account_type", r.Item1);
                cmd.Parameters.AddWithValue("@account_guide", r.Item2);
                cmd.Parameters.AddWithValue("@updated_by", 1);
                gestor[j] = Convert.ToDouble(cmd.ExecuteScalar());
                cmd.Parameters.Clear();
            }
        }
예제 #2
0
        public Cuenta Insert(string companyId, Cuenta cuenta, Cuenta cuentaPadre, int userId)
        {
            InsertName(cuenta.Nombre);
            using var connection      = new MySqlConnection(Manejador.GetConnectionString());
            using MySqlTransaction tr = manejador.GetConnection().BeginTransaction(IsolationLevel.Serializable);

            using MySqlCommand cmd = new MySqlCommand(SqlStringInsertAccount, tr.Connection, tr);
            cmd.CommandType        = CommandType.Text;
            cmd.Parameters.AddWithValue("@name", cuenta.Nombre);
            cmd.Parameters.AddWithValue("@father_account", cuenta.Padre);
            cmd.Parameters.AddWithValue("@previous_balance_c", cuenta.SaldoAnteriorColones);
            cmd.Parameters.AddWithValue("@previous_balance_d", cuenta.SaldoAnteriorDolares);
            cmd.Parameters.AddWithValue("@company_id", companyId);
            cmd.Parameters.AddWithValue("@account_type", cuenta.TipoCuenta.TipoCuenta.ToString().Replace('_', ' ').ToUpper());
            cmd.Parameters.AddWithValue("@editable", cuenta.Editable);
            cmd.Parameters.AddWithValue("@detail", cuenta.Detalle);
            cmd.Parameters.AddWithValue("@updated_by", userId);

            var newAccId = cmd.ExecuteScalar().ToString();

            if (cuentaPadre.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

                var sqlForUpdateTransactions = SqlStringReplaceIdIntransactions + SqlStringUpdateAccountGuide;

                cmd.CommandText = sqlForUpdateTransactions;

                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@account_id", newAccId);
                cmd.Parameters.AddWithValue("@account_id_old", cuenta.Padre);
                cuentaPadre.Indicador = IndicadorCuenta.Cuenta_De_Mayor;

                cmd.ExecuteNonQuery();
            }
            cuenta.Id = Convert.ToInt32(newAccId);
            tr.Commit();
            return(cuenta);
        }