private void GuardarTablaCronograma(long anioAntiguo)
        {
            _dgvCronograma.EndEdit();
            if (OraDalCronogramaDeInversionMgr.Instancia.ExisteCronogramaConAnioRef(_datoEconomico.AnioRefInformacion.ToString(), _datoEconomico.PkDatoEconomico))
            {
                OraDalCronogramaDeInversionMgr.Instancia.EliminarCronogramaInv(_datoEconomico.AnioRefInformacion.ToString(), _datoEconomico.PkDatoEconomico);
                OraDalCronogramaDeInversionMgr.Instancia.CambiarRegistrosAEstadoAHistorico(_datoEconomico.PkDatoEconomico);
            }
            else
            {
                OraDalCronogramaDeInversionMgr.Instancia.CambiarEstadoAHistorico(_datoEconomico.PkDatoEconomico, anioAntiguo);
            }

            if (_dgvCronograma.Rows.Count - 1 > 0)
            {
                for (int i = 0; i < _dgvCronograma.Rows.Count - 1; i++)
                {
                    DataRow row = ((DataRowView)_dgvCronograma.Rows[i].DataBoundItem).Row;
                    _cronogramaInv                 = new CronogramaDeInversion();
                    _cronogramaInv.EsNuevo         = true;
                    _cronogramaInv.Anio            = row[1].ToString();
                    _cronogramaInv.Monto           = double.Parse(row[2].ToString());
                    _cronogramaInv.FkDatoEconomico = _datoEconomico.PkDatoEconomico;
                    _cronogramaInv.AnioRef         = _datoEconomico.AnioRefInformacion;
                    OraDalCronogramaDeInversionMgr.Instancia.Guardar(_cronogramaInv);
                }
                CargarHistoricoCronograma();
            }
            SumarMontosCronograma();
        }
 private void _dgvCronograma_SelectionChanged(object sender, EventArgs e)
 {
     _cronogramaInv = null;
     _idxCronograma = -1;
     if (_dgvCronograma.SelectedCells.Count > 0)
     {
         _idxCronograma = _dgvCronograma.SelectedCells[0].RowIndex;
     }
 }
        private void GuardarPrivado(CronogramaDeInversion cronogramaInv)
        {
            OracleCommand cmd = null;
            string        sql = string.Empty;

            if (cronogramaInv.EsNuevo)
            {
                Pista p = PistaMgr.Instance.Info("DALProyectos", cronogramaInv.GetEstadoString());
                cronogramaInv.SecLog = (long)p.PK_SecLog;
                cronogramaInv.PkCronogramaInversion = GetIdAutoNum("SQ_F_PR_CRONOGRAMA_INVERSION");
                sql = "INSERT INTO {0} ({1},{2},{3},{4},{5},{6},{7})" +
                      "VALUES(:{1},:{2},:{3},:{4},:{5},:{6},:{7})";
            }
            else
            {
                sql = "UPDATE {0} SET " +
                      "{2}=:{2} ," +
                      "{3}=:{3} ," +
                      "{4}=:{4} ," +
                      "{5}=:{5} ," +
                      "{6}=:{6} ," +
                      "{7}=:{7}  WHERE {1}=:{1}";
            }

            sql = string.Format(sql, CronogramaDeInversion.NOMBRE_TABLA,
                                CronogramaDeInversion.C_PK_CRONOGRAMA_INVERSION,
                                CronogramaDeInversion.C_FK_DATO_ECONOMICO,
                                CronogramaDeInversion.C_ANIO,
                                CronogramaDeInversion.C_MONTO,
                                CronogramaDeInversion.C_SEC_LOG,
                                CronogramaDeInversion.C_ANIO_REF,
                                CronogramaDeInversion.C_HISTORICO);
            cmd             = CrearCommand();
            cmd.CommandText = sql;
            cmd.BindByName  = true;

            cmd.Parameters.Add(CronogramaDeInversion.C_PK_CRONOGRAMA_INVERSION, OracleDbType.Int64, cronogramaInv.PkCronogramaInversion, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(CronogramaDeInversion.C_FK_DATO_ECONOMICO, OracleDbType.Int64, cronogramaInv.FkDatoEconomico, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(CronogramaDeInversion.C_ANIO, OracleDbType.Varchar2, cronogramaInv.Anio, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(CronogramaDeInversion.C_MONTO, OracleDbType.Double, cronogramaInv.Monto, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(CronogramaDeInversion.C_SEC_LOG, OracleDbType.Int64, cronogramaInv.SecLog, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(CronogramaDeInversion.C_ANIO_REF, OracleDbType.Int64, cronogramaInv.AnioRef, System.Data.ParameterDirection.Input);
            cmd.Parameters.Add(CronogramaDeInversion.C_HISTORICO, OracleDbType.Int16, cronogramaInv.Historico, System.Data.ParameterDirection.Input);

            if (Actualizar(cmd))
            {
                cronogramaInv.EsNuevo = false;
            }
        }
        public void Guardar(CronogramaDeInversion cronogramaInv)
        {
//            if (!cronogramaInv.EsNuevo)
//            {
//                string sql =
//                @"UPDATE F_PR_CRONOGRAMA_INVERSION
//                SET historico=1
//                WHERE PK_CRONOGRAMA_INVERSION=" + cronogramaInv.PkCronogramaInversion;
//                OracleCommand cmd = CrearCommand();
//                cmd.CommandText = sql;
//                Actualizar(cmd);
//                cronogramaInv.EsNuevo = true;
//            }

            GuardarPrivado(cronogramaInv);
        }
        public List <CronogramaDeInversion> GetTodoElCronogramaPorPkDatoEconomico(long pkDatoEconomico)
        {
            string sql = "SELECT * FROM {0} WHERE {1}={2} order by {3}";

            sql = string.Format(sql, CronogramaDeInversion.NOMBRE_TABLA,
                                CronogramaDeInversion.C_FK_DATO_ECONOMICO, pkDatoEconomico, CronogramaDeInversion.C_PK_CRONOGRAMA_INVERSION);
            DataTable tabla = EjecutarSql(sql);
            List <CronogramaDeInversion> resultado = new List <CronogramaDeInversion>();
            CronogramaDeInversion        vol;

            if (tabla.Rows.Count > 0)
            {
                foreach (DataRow row in tabla.Rows)
                {
                    vol = new CronogramaDeInversion(row);
                    resultado.Add(vol);
                }
            }

            return(resultado);
        }