public bool isConfiguracionValida(string idVariable, string descripcionDatoNuevo)
        {
            TipoObservacionNueva on = this.getTipoObservacionNueva(descripcionDatoNuevo);

            if (idVariable.IndexOf("SubTipos") < 0 && on.KeyTipoPadre.Equals("RAIZ"))
            {
                return(true);
            }
            else if (idVariable.IndexOf("SubTipos") > 0 && !on.KeyTipoPadre.Equals("RAIZ"))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
 public void AddMovimiento(string DescripcionTipo, string KeyTipo, string KeyTipoPadre, string DescripcionTipoPadre, bool Activo, string Modo)
 {
     if (Modo == "NEW")
     {
         //Creacion de tipo de observaciones
         KeyTipo = systemframework.Util.NewStringId();
         TipoObservacionNueva on = new TipoObservacionNueva(DescripcionTipo, KeyTipo, KeyTipoPadre, DescripcionTipoPadre, Activo, Modo);
         _tiposObservacionesNuevas.Add(on);
         _tiposObservacionesNuevasCofigVariables.Add(on);
     }
     else
     {
         this.agregarTipoOservacion(DescripcionTipo, KeyTipo, KeyTipoPadre, DescripcionTipoPadre, Activo, Modo);
     }
     if (TiposObservacionesNuevasHasChanged != null)
     {
         TiposObservacionesNuevasHasChanged(this, new EventArgs());
     }
 }
        private TipoObservacionNueva getTipoObservacionNueva(string DescripcionTipo)
        {
            TipoObservacionNueva on = null;
            int  i                 = 0;
            bool exist             = false;
            TipoObservacionNueva o = null;

            while (!exist && i < _tiposObservacionesNuevasCofigVariables.Count)
            {
                on = (TipoObservacionNueva)_tiposObservacionesNuevasCofigVariables[i];
                if (on.DescripcionTipo.Equals(DescripcionTipo))
                {
                    exist = true;
                }
                else
                {
                    i++;
                }
            }
            return(on);
        }
        //Valida datos antes de guardar la informacion
        private void ValidarDatos()
        {
            _errores.Clear();
            foreach (object obs in _tiposObservacionesNuevas)
            {
                TipoObservacionNueva on = (TipoObservacionNueva)obs;

                string descripcion = on.DescripcionTipo.Trim();
                if (descripcion.Equals(string.Empty))
                {
                    _errores.Add(new ItemDatasetError("Cuentas Observaciones Tipos", "Descripcion", "El campo descripción no puede estar vacío"));
                }
                //Valida la existencia del nuevo tipo en la bd.
                string variable          = "Momentos." + this.GetTaskName() + "." + this._processParent.Process.ProcessName + "." + "ValidarTipo";
                bool   validarExisteTipo = Variables.GetValueBool(variable);
                //Si es un alta no tiene q haber otro con esa descripcion
                if (validarExisteTipo && on.Modo == "NEW")
                {
                    tsa_CuentasObservacionesTiposDataset DataSetTipos;
                    if (on.KeyTipoPadre == "RAIZ")
                    {
                        DataSetTipos = mz.erp.businessrules.tsa_CuentasObservacionesTipos.GetList("", false);
                    }
                    else
                    {
                        DataSetTipos = mz.erp.businessrules.tsa_CuentasObservacionesTipos.GetList(on.KeyTipoPadre, false);
                    }

                    if (DataSetTipos.Tables[0].Rows.Count > 0)
                    {
                        foreach (tsa_CuentasObservacionesTiposDataset.tsa_CuentasObservacionesTiposRow _row in  DataSetTipos.Tables[0].Rows)
                        {
                            if ((string)_row["Descripcion"] == descripcion)
                            {
                                _errores.Add(new ItemDatasetError("Cuentas Observaciones Tipos", "Descripcion", "Ya existe otro tipo con ese nombre"));
                            }
                        }
                    }
                }
                if (validarExisteTipo && on.Modo != "NEW")
                {
                    tsa_CuentasObservacionesTiposDataset DataSetTipos;
                    if (on.KeyTipoPadre == "RAIZ")
                    {
                        DataSetTipos = mz.erp.businessrules.tsa_CuentasObservacionesTipos.GetList("", false);
                    }
                    else
                    {
                        DataSetTipos = mz.erp.businessrules.tsa_CuentasObservacionesTipos.GetList(on.KeyTipoPadre, false);
                    }
                    if (DataSetTipos.Tables[0].Rows.Count > 0)
                    {
                        foreach (tsa_CuentasObservacionesTiposDataset.tsa_CuentasObservacionesTiposRow _row in  DataSetTipos.Tables[0].Rows)
                        {
                            if ((string)_row["IdCuentaObservacionTipo"] != on.KeyTipo && (string)_row["Descripcion"] == on.DescripcionTipo)
                            {
                                _errores.Add(new ItemDatasetError("Cuentas Observaciones Tipos", "Descripcion", "Ya existe otro tipo con ese nombre"));
                            }
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Envia el dataset e información adicional a la capa de acceso a datos para ejecutar la grabación de datos
        /// en el RDBM.
        /// </summary>
        public override void Flush(string IdTransaction)
        {
            if (OnTaskBeforeFlush != null)
            {
                OnTaskBeforeFlush(this, new EventArgs());
            }

            _replication = GenerateReplication();
            SqlTransaction trx = PoolTransaction.GetTransactionById(IdTransaction);

            dataaccess.tsa_CuentasObservacionesTipos.Update(_data.tsa_CuentasObservacionesTipos, trx);
            bool modificaPerfiles = false;

            if (this._processParent.Process.ProcessName.Equals("ProcesoAbmTiposObservacionesCuentas"))
            {            //Si es la configuracion rapida agrego en los nuevos tipos de observaciones para q las vean todos los perfiles existentes en el sistema
                //Si es personalizada (ProcesoAbmTiposObservacionesCuentasPersonalizado) se le mustra la interfaz para configurar estas variables.
                if (_modificaPerfilesSubTipos)
                {
                    int i = 0;
                    foreach (tsa_CuentasObservacionesTiposDataset.tsa_CuentasObservacionesTiposRow row in _data.tsa_CuentasObservacionesTipos.Rows)
                    {
                        TipoObservacionNueva on = (TipoObservacionNueva)_tiposObservacionesNuevas[i];
                        if (on.Modo.Equals("NEW") && !row.IsIdCuentaObservacionTipoPadreNull())
                        {
                            string IdCuentaObservacionTipo = (string)row["IdCuentaObservacionTipo"];
                            foreach (sy_PerfilesDataset.sy_PerfilesRow rowP in _tablePerfiles.Rows)
                            {
                                long IdPerf = rowP.IdPerfil;
                                int  index1 = this.getIndexOf("Cuentas.Observaciones.Add.SubTipos", IdPerf);
                                if (existeVariable("Cuentas.Observaciones.Add.SubTipos", IdPerf))
                                {
                                    string valorSA = (string)_dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"];
                                    if (!valorSA.Equals(string.Empty))
                                    {
                                        _dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"] = _dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"] + ",";
                                    }
                                }
                                else if (!((string)_dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"]).Equals(string.Empty))
                                {
                                    string valorSA = (string)_dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"];
                                    if (!valorSA.Equals(string.Empty))
                                    {
                                        _dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"] = _dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"] + ",";
                                    }
                                }
                                _dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"] = _dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"] + IdCuentaObservacionTipo;

                                int index2 = this.getIndexOf("Cuentas.Observaciones.Ver.SubTipos", IdPerf);
                                if (existeVariable("Cuentas.Observaciones.Ver.SubTipos", IdPerf))
                                {
                                    string valorSV = (string)_dataPeriles.sy_VariablesPerfiles.Rows[index2]["Valor"];
                                    if (!valorSV.Equals(string.Empty))
                                    {
                                        _dataPeriles.sy_VariablesPerfiles.Rows[index2]["Valor"] = _dataPeriles.sy_VariablesPerfiles.Rows[index2]["Valor"] + ",";
                                    }
                                }
                                else if (!((string)_dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"]).Equals(string.Empty))
                                {
                                    string valorSV = (string)_dataPeriles.sy_VariablesPerfiles.Rows[index2]["Valor"];
                                    if (!valorSV.Equals(string.Empty))
                                    {
                                        _dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"] = _dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"] + ",";
                                    }
                                }
                                _dataPeriles.sy_VariablesPerfiles.Rows[index2]["Valor"] = _dataPeriles.sy_VariablesPerfiles.Rows[index2]["Valor"] + IdCuentaObservacionTipo;
                            }
                        }
                        i++;
                    }
                    modificaPerfiles = true;
                }
                //_variablesValores.Add(on.DescripcionTipo, IdCuentaObservacionTipo);

                if (_modificaPerfilesTipos)
                {
                    int i = 0;
                    foreach (tsa_CuentasObservacionesTiposDataset.tsa_CuentasObservacionesTiposRow row in _data.tsa_CuentasObservacionesTipos.Rows)
                    {
                        TipoObservacionNueva on = (TipoObservacionNueva)_tiposObservacionesNuevas[i];
                        if (on.Modo.Equals("NEW") && row.IsIdCuentaObservacionTipoPadreNull())
                        {
                            string IdCuentaObservacionTipo = (string)row["IdCuentaObservacionTipo"];
                            foreach (sy_PerfilesDataset.sy_PerfilesRow rowP in _tablePerfiles.Rows)
                            {
                                long IdPerf = rowP.IdPerfil;
                                int  index1 = this.getIndexOf("Cuentas.Observaciones.Add.Tipos", IdPerf);
                                if (existeVariable("Cuentas.Observaciones.Add.Tipos", IdPerf))
                                {
                                    string valorTA = (string)_dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"];
                                    if (!valorTA.Equals(string.Empty))
                                    {
                                        _dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"] = _dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"] + ",";
                                    }
                                }
                                else if (!((string)_dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"]).Equals(string.Empty))
                                {
                                    string valorTA = (string)_dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"];
                                    if (!valorTA.Equals(string.Empty))
                                    {
                                        _dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"] = _dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"] + ",";
                                    }
                                }
                                _dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"] = _dataPeriles.sy_VariablesPerfiles.Rows[index1]["Valor"] + IdCuentaObservacionTipo;

                                int index2 = this.getIndexOf("Cuentas.Observaciones.Ver.Tipos", IdPerf);
                                if (existeVariable("Cuentas.Observaciones.Ver.Tipos", IdPerf))
                                {
                                    string valorTV = (string)_dataPeriles.sy_VariablesPerfiles.Rows[index2]["Valor"];
                                    if (!valorTV.Equals(string.Empty))
                                    {
                                        _dataPeriles.sy_VariablesPerfiles.Rows[index2]["Valor"] = _dataPeriles.sy_VariablesPerfiles.Rows[index2]["Valor"] + ",";
                                    }
                                }
                                else if (!((string)_dataPeriles.sy_VariablesPerfiles.Rows[index2]["Valor"]).Equals(string.Empty))
                                {
                                    string valorTV = (string)_dataPeriles.sy_VariablesPerfiles.Rows[index2]["Valor"];
                                    if (!valorTV.Equals(string.Empty))
                                    {
                                        _dataPeriles.sy_VariablesPerfiles.Rows[index2]["Valor"] = _dataPeriles.sy_VariablesPerfiles.Rows[index2]["Valor"] + ",";
                                    }
                                }

                                _dataPeriles.sy_VariablesPerfiles.Rows[index2]["Valor"] = _dataPeriles.sy_VariablesPerfiles.Rows[index2]["Valor"] + IdCuentaObservacionTipo;
                            }
                            //_variablesValores.Add(on.DescripcionTipo, IdCuentaObservacionTipo);
                        }
                        i++;
                    }
                    modificaPerfiles = true;
                }
                if (modificaPerfiles)
                {
                    dataaccess.sy_VariablesPerfiles.Update(_dataPeriles.sy_VariablesPerfiles, trx);
                }
            }
            else             //SI se va a mostrar la pantalla de configuracion de variables
            {
                int i = 0;
                foreach (tsa_CuentasObservacionesTiposDataset.tsa_CuentasObservacionesTiposRow row in _data.tsa_CuentasObservacionesTipos.Rows)
                {
                    TipoObservacionNueva on = (TipoObservacionNueva)_tiposObservacionesNuevas[i];
                    if (on.Modo.Equals("NEW"))
                    {
                        string IdCuentaObservacionTipo = (string)row["IdCuentaObservacionTipo"];
                        _variablesValores.Add(on.DescripcionTipo, IdCuentaObservacionTipo);
                    }
                    i++;
                }
            }

            if (OnTaskAfterFlush != null)
            {
                OnTaskAfterFlush(this, new EventArgs());
            }
        }
        public override void Commit()
        {
            foreach (object obs in _tiposObservacionesNuevas)
            {
                TipoObservacionNueva on = (TipoObservacionNueva)obs;
                if (on.Modo == "NEW")
                {
                    tsa_CuentasObservacionesTiposDataset.tsa_CuentasObservacionesTiposRow row = _data.tsa_CuentasObservacionesTipos.Newtsa_CuentasObservacionesTiposRow();
                    row.Descripcion             = on.DescripcionTipo;
                    row.FechaCreacion           = DateTime.Now;
                    row.Activo                  = true;
                    row.IdConexionCreacion      = Security.IdConexion;
                    row.IdCuentaObservacionTipo = on.KeyTipo;
                    if (on.KeyTipoPadre != "RAIZ")
                    {
                        row.IdCuentaObservacionTipoPadre = on.KeyTipoPadre;
                    }
                    row.IdReservado = 0;
                    row.IdEmpresa   = Security.IdEmpresa;
                    row.IdSucursal  = Security.IdSucursal;
                    _data.tsa_CuentasObservacionesTipos.Addtsa_CuentasObservacionesTiposRow(row);

                    string idVariable1 = string.Empty;
                    string idVariable2 = string.Empty;
                    long   idPerfil    = Security.IdPerfil;

                    if (on.KeyTipoPadre != "RAIZ" & !_modificaPerfilesSubTipos)
                    {
                        idVariable1 = "Cuentas.Observaciones.Add.SubTipos";
                        idVariable2 = "Cuentas.Observaciones.Ver.SubTipos";
                        foreach (sy_PerfilesDataset.sy_PerfilesRow rowP in _tablePerfiles.Rows)
                        {
                            this.agregarVariable(idVariable1, rowP.IdPerfil);
                            this.agregarVariable(idVariable2, rowP.IdPerfil);
                        }
                        _modificaPerfilesSubTipos = true;
                    }
                    else if (on.KeyTipoPadre.Equals("RAIZ") & !_modificaPerfilesTipos)
                    {
                        idVariable1 = "Cuentas.Observaciones.Add.Tipos";
                        idVariable2 = "Cuentas.Observaciones.Ver.Tipos";
                        foreach (sy_PerfilesDataset.sy_PerfilesRow rowP in _tablePerfiles.Rows)
                        {
                            this.agregarVariable(idVariable1, rowP.IdPerfil);
                            this.agregarVariable(idVariable2, rowP.IdPerfil);
                        }
                        _modificaPerfilesTipos = true;
                    }
                }
                else                 //MODIF
                {
                    DataRow rowT = mz.erp.businessrules.tsa_CuentasObservacionesTipos.GetByPk(on.KeyTipo);
                    rowT["Descripcion"] = on.DescripcionTipo;
                    rowT["Activo"]      = on.Activo;
                    if (on.KeyTipoPadre == "RAIZ")
                    {
                        rowT["IdCuentaObservacionTipoPadre"] = System.DBNull.Value;
                    }
                    _data.tsa_CuentasObservacionesTipos.ImportRow(rowT);
                }
            }
        }