private void _dgvSerieHidrologica_SelectionChanged(object sender, EventArgs e)
 {
     _serieHidrologica = null;
     _idx = -1;
     if (_dgvSerieHidrologica.SelectedCells.Count > 0)
     {
         _idx = _dgvSerieHidrologica.SelectedCells[0].RowIndex;
     }
 }
        private void _tsbGuardar_Click(object sender, EventArgs e)
        {
            if (!_dgvSerieHidrologica.EndEdit())
            {
                return;
            }
            if (DatosValidos())
            {
                if (_dgvSerieHidrologica.Rows.Count - 4 > 0)
                {
                    for (int i = 0; i < _dgvSerieHidrologica.Rows.Count - 4; i++)
                    {
                        DataRow row = ((DataRowView)_dgvSerieHidrologica.Rows[i].DataBoundItem).Row;
                        _serieHidrologica = new SerieHidrologica();

                        _serieHidrologica.FkProyecto = _proyecto.PkProyecto;
                        if (row[0] is DBNull || row[0] == null)
                        {
                            _serieHidrologica.EsNuevo = true;
                        }
                        else
                        {
                            _serieHidrologica.EsNuevo            = false;
                            _serieHidrologica.PkSerieHidrologica = (long)row[0];
                        }
                        _serieHidrologica.Anio                = row[1].ToString();
                        _serieHidrologica.CapacidadEnero      = (decimal)row[2];
                        _serieHidrologica.CapacidadFebrero    = (decimal)row[3];
                        _serieHidrologica.CapacidadMarzo      = (decimal)row[4];
                        _serieHidrologica.CapacidadAbril      = (decimal)row[5];
                        _serieHidrologica.CapacidadMayo       = (decimal)row[6];
                        _serieHidrologica.CapacidadJunio      = (decimal)row[7];
                        _serieHidrologica.CapacidadJulio      = (decimal)row[8];
                        _serieHidrologica.CapacidadAgosto     = (decimal)row[9];
                        _serieHidrologica.CapacidadSeptiembre = (decimal)row[10];
                        _serieHidrologica.CapacidadOctubre    = (decimal)row[11];
                        _serieHidrologica.CapacidadNoviembre  = (decimal)row[12];
                        _serieHidrologica.CapacidadDiciembre  = (decimal)row[13];

                        OraDalSerieHidrologicaMgr.Instancia.Guardar(_serieHidrologica);
                    }
                }
                OraDalSerieHidrologicaMgr.Instancia.SetTablaSeriesDePkProyecto(_proyecto.PkProyecto, _tabla);
                _dgvSerieHidrologica.DataSource        = _tabla;
                _dgvSerieHidrologica.Columns[1].Frozen = true;
                CargarFilasCalculables();
                DeshabilitarControles();
                _seGuardo = true;
            }
        }
        public DataTable CrearSeriesHidrologicas(long pkProyecto, DataTable tablaSeries)
        {
            for (int i = 1979; i <= DateTime.Now.Year; i++)
            {
                SerieHidrologica serie = new SerieHidrologica();
                serie.EsNuevo             = true;
                serie.FechaRegistro       = DateTime.Now;
                serie.FkProyecto          = pkProyecto;
                serie.Anio                = i.ToString();
                serie.CapacidadAbril      = 0;
                serie.CapacidadAgosto     = 0;
                serie.CapacidadDiciembre  = 0;
                serie.CapacidadEnero      = 0;
                serie.CapacidadFebrero    = 0;
                serie.CapacidadJulio      = 0;
                serie.CapacidadJunio      = 0;
                serie.CapacidadMarzo      = 0;
                serie.CapacidadMayo       = 0;
                serie.CapacidadNoviembre  = 0;
                serie.CapacidadOctubre    = 0;
                serie.CapacidadSeptiembre = 0;
                Guardar(serie);
            }
            DataTable tabla = tablaSeries;
            List <SerieHidrologica> listaSeries = GetSeriesDePkProyecto(pkProyecto);

            foreach (SerieHidrologica serie in listaSeries)
            {
                DataRow row = tabla.NewRow();
                row["PK_SERIE_HIDROLOGICA"] = serie.PkSerieHidrologica;
                row["Año"]        = serie.Anio;
                row["Enero"]      = serie.CapacidadEnero;
                row["Febrero"]    = serie.CapacidadFebrero;
                row["Marzo"]      = serie.CapacidadMarzo;
                row["Abril"]      = serie.CapacidadAbril;
                row["Mayo"]       = serie.CapacidadMayo;
                row["Junio"]      = serie.CapacidadJunio;
                row["Julio"]      = serie.CapacidadJulio;
                row["Agosto"]     = serie.CapacidadAgosto;
                row["Septiembre"] = serie.CapacidadSeptiembre;
                row["Octubre"]    = serie.CapacidadOctubre;
                row["Noviembre"]  = serie.CapacidadNoviembre;
                row["Diciembre"]  = serie.CapacidadDiciembre;
                tabla.Rows.Add(row);
            }

            return(tabla);
        }
        public List <SerieHidrologica> GetSeriesDePkProyecto(long pkProyecto)
        {
            string sql = "SELECT * FROM {0} WHERE {1}={2}";

            sql = string.Format(sql, SerieHidrologica.NOMBRE_TABLA, SerieHidrologica.C_FK_PROYECTO, pkProyecto);
            List <SerieHidrologica> lista = new List <SerieHidrologica>();
            DataTable        tabla        = EjecutarSql(sql);
            SerieHidrologica serie;

            if (tabla.Rows.Count > 0)
            {
                foreach (DataRow row in tabla.Rows)
                {
                    serie = new SerieHidrologica(row);
                    lista.Add(serie);
                }
            }
            return(lista);
        }
        private void EliminarRow(DataRow row)
        {
            if (row["Pk_Serie"] is DBNull || row["Pk_Serie"] == null)
            {
            }
            else
            {
                long pkSerie = long.Parse(row["Pk_Serie"].ToString());
                _serieHidrologica = OraDalSerieHidrologicaMgr.Instancia.GetPorId <SerieHidrologica>(pkSerie, SerieHidrologica.C_PK_SERIE_HIDROLOGICA);
                OraDalSerieHidrologicaMgr.Instancia.EliminarSeriePorPkSerie(_proyecto.PkProyecto, _serieHidrologica.PkSerieHidrologica);
                //DeshabilitarControles();
            }

            _tabla.Rows.Remove(row);

            if (_tabla.Rows.Count == 4)
            {
                _tabla.Rows.Clear();
            }
            else
            {
                ActualizarCamposCalculables();
            }
        }
        public void Guardar(SerieHidrologica serieHidrologica)
        {
            OracleCommand cmd = null;
            string        sql = string.Empty;

            if (serieHidrologica.EsNuevo)
            {
                Pista p = PistaMgr.Instance.Info("DALProyectos", serieHidrologica.GetEstadoString());
                serieHidrologica.SecLog             = (long)p.PK_SecLog;
                serieHidrologica.PkSerieHidrologica = GetIdAutoNum("SQ_F_PR_SERIE_HIDROLOGICA");
                sql = "INSERT INTO {0} ({1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16},{17})" +
                      "VALUES(:{1},:{2},:{3},:{4},:{5},:{6},:{7},:{8},:{9},:{10},:{11},:{12},:{13},:{14},:{15},:{16},:{17})";
            }
            else
            {
                sql = "UPDATE {0} SET " +
                      "{2}=:{2} ," +
                      "{3}=:{3} ," +
                      "{4}=:{4} ," +
                      "{5}=:{5} ," +
                      "{6}=:{6} ," +
                      "{7}=:{7} ," +
                      "{8}=:{8} ," +
                      "{9}=:{9} ," +
                      "{10}=:{10} ," +
                      "{11}=:{11} ," +
                      "{12}=:{12} ," +
                      "{13}=:{13} ," +
                      "{14}=:{14} ," +
                      "{15}=:{15} ," +
                      "{16}=:{16} ," +
                      "{17}=:{17}  WHERE {1}=:{1} ";
            }

            sql = string.Format(sql, SerieHidrologica.NOMBRE_TABLA, SerieHidrologica.C_PK_SERIE_HIDROLOGICA,
                                SerieHidrologica.C_FK_PROYECTO,
                                SerieHidrologica.C_ANIO,
                                SerieHidrologica.C_CAPACIDAD_ENERO,
                                SerieHidrologica.C_CAPACIDAD_FEBRERO,
                                SerieHidrologica.C_CAPACIDAD_MARZO,
                                SerieHidrologica.C_CAPACIDAD_ABRIL,
                                SerieHidrologica.C_CAPACIDAD_MAYO,
                                SerieHidrologica.C_CAPACIDAD_JUNIO,
                                SerieHidrologica.C_CAPACIDAD_JULIO,
                                SerieHidrologica.C_CAPACIDAD_AGOSTO,
                                SerieHidrologica.C_CAPACIDAD_SEPTIEMBRE,
                                SerieHidrologica.C_CAPACIDAD_OCTUBRE,
                                SerieHidrologica.C_CAPACIDAD_NOVIEMBRE,
                                SerieHidrologica.C_CAPACIDAD_DICIEMBRE,
                                SerieHidrologica.C_FECHA_REGISTRO,
                                SerieHidrologica.C_SEC_LOG);
            cmd             = CrearCommand();
            cmd.CommandText = sql;
            cmd.BindByName  = true;
            cmd.Parameters.Add(SerieHidrologica.C_PK_SERIE_HIDROLOGICA, OracleDbType.Int64, serieHidrologica.PkSerieHidrologica, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(SerieHidrologica.C_FK_PROYECTO, OracleDbType.Int64, serieHidrologica.FkProyecto, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(SerieHidrologica.C_ANIO, OracleDbType.Varchar2, serieHidrologica.Anio, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(SerieHidrologica.C_CAPACIDAD_ENERO, OracleDbType.Decimal, serieHidrologica.CapacidadEnero, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(SerieHidrologica.C_CAPACIDAD_FEBRERO, OracleDbType.Decimal, serieHidrologica.CapacidadFebrero, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(SerieHidrologica.C_CAPACIDAD_MARZO, OracleDbType.Decimal, serieHidrologica.CapacidadMarzo, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(SerieHidrologica.C_CAPACIDAD_ABRIL, OracleDbType.Decimal, serieHidrologica.CapacidadAbril, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(SerieHidrologica.C_CAPACIDAD_MAYO, OracleDbType.Decimal, serieHidrologica.CapacidadMayo, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(SerieHidrologica.C_CAPACIDAD_JUNIO, OracleDbType.Decimal, serieHidrologica.CapacidadJunio, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(SerieHidrologica.C_CAPACIDAD_JULIO, OracleDbType.Decimal, serieHidrologica.CapacidadJulio, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(SerieHidrologica.C_CAPACIDAD_AGOSTO, OracleDbType.Decimal, serieHidrologica.CapacidadAgosto, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(SerieHidrologica.C_CAPACIDAD_SEPTIEMBRE, OracleDbType.Decimal, serieHidrologica.CapacidadSeptiembre, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(SerieHidrologica.C_CAPACIDAD_OCTUBRE, OracleDbType.Decimal, serieHidrologica.CapacidadOctubre, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(SerieHidrologica.C_CAPACIDAD_NOVIEMBRE, OracleDbType.Decimal, serieHidrologica.CapacidadNoviembre, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(SerieHidrologica.C_CAPACIDAD_DICIEMBRE, OracleDbType.Decimal, serieHidrologica.CapacidadDiciembre, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(SerieHidrologica.C_FECHA_REGISTRO, OracleDbType.Date, serieHidrologica.FechaRegistro, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(SerieHidrologica.C_SEC_LOG, OracleDbType.Int64, serieHidrologica.SecLog, System.Data.ParameterDirection.Input);

            if (Actualizar(cmd))
            {
                serieHidrologica.EsNuevo = false;
            }
        }