/// <summary> /// /// Obtiene una lista de los diferentes CR´s a los que puede acceder el usuario en calidad de Director de CR /// o miembro de Oficina técnica o figura desde el nivel de nodo hacia arriba. /// Si es administrador tendrá acceso a todos los CR´s /// </summary> public List <CR> ObtenerCatalogoPlant(int iNumEmpleado) { List <CR> MiLista = new List <CR>(); string sDesNodo; SqlDataReader dr = NODO.CatalogoAdministrables(iNumEmpleado, true); CR oCR; while (dr.Read()) { sDesNodo = dr["t303_idnodo"].ToString() + " - " + dr["t303_denominacion"].ToString(); oCR = new CR(int.Parse(dr["t303_idnodo"].ToString()), sDesNodo); MiLista.Add(oCR); } dr.Close(); dr.Dispose(); return(MiLista); }
public static string Procesar(string sRegistros, string strDatos) { string sResul = "", sEstadoMes = ""; int nPSN_C = 0, nPSN_J = 0, nPSN_P = 0, nSegMesProy = 0; int nIDEmpresaNodoProyecto_C = 0; int nNodoUsuario = 0, nEmpresaNodoUsuario = 0, nNodo_C = 0, nNodo_J = 0, nNodo_P = 0; decimal nTipoCambio_C = 0, nTipoCambio_J = 0, nTipoCambio_P = 0; SqlConnection oConn = null; SqlTransaction tr = null; bool bErrorControlado = false; string[] aIncentivos = Regex.Split(strDatos, "#reg#"); #region Abrir conexión y transacción try { oConn = Conexion.Abrir(); tr = Conexion.AbrirTransaccionSerializable(oConn); } catch { if (oConn.State == ConnectionState.Open) { Conexion.Cerrar(oConn); } throw (new Exception("Error al abrir la conexión.")); } #endregion try { //inserto los registros seleccionados en la T726_INCENTIVOSPRODUCTIVIDAD Capa_Datos.INCENTIVOSPRODUCTIVIDAD.Insertar(tr, sRegistros); //Trato los registros seleccionados int i = 0; foreach (string oIncentivo in aIncentivos) { i++; if (oIncentivo == "") { continue; } string[] aDatos = Regex.Split(oIncentivo, "#sep#"); #region Datos Incentivo //aDatos[0] = id incentivo //0 //aDatos[1] = idusuario //1 //aDatos[2] = idnodo_usuario //2 //aDatos[3] = importe //3 //aDatos[4] = idproyecto //4 //aDatos[5] = anomes //5 //aDatos[6] = Profesional //6 //aDatos[7] = Denominación proyecto //7 //aDatos[8] = importe SS //8 #endregion #region inicializar variables nPSN_C = 0; nPSN_J = 0; nPSN_P = 0; nSegMesProy = 0; nIDEmpresaNodoProyecto_C = 0; nNodoUsuario = 0; nEmpresaNodoUsuario = 0; nNodo_C = 0; nNodo_J = 0; nNodo_P = 0; nTipoCambio_C = 0; nTipoCambio_J = 0; nTipoCambio_P = 0; #endregion DataSet ds = Capa_Datos.INCENTIVOSPRODUCTIVIDAD.ObtenerInstanciasProyecto(tr, int.Parse(aDatos[4]), int.Parse(aDatos[1]), int.Parse(aDatos[5])); foreach (DataRow oFila in ds.Tables[0].Rows) { switch (oFila["t305_cualidad"].ToString()) { case "C": nPSN_C = (int)oFila["t305_idproyectosubnodo"]; nNodo_C = (int)oFila["t303_idnodo"]; nIDEmpresaNodoProyecto_C = (int)oFila["t313_idempresa_nodo"]; nTipoCambio_C = decimal.Parse(oFila["t699_tipocambio"].ToString()); break; case "J": nPSN_J = (int)oFila["t305_idproyectosubnodo"]; nNodo_J = (int)oFila["t303_idnodo"]; nTipoCambio_J = decimal.Parse(oFila["t699_tipocambio"].ToString()); break; case "P": nPSN_P = (int)oFila["t305_idproyectosubnodo"]; nNodo_P = (int)oFila["t303_idnodo"]; nTipoCambio_P = decimal.Parse(oFila["t699_tipocambio"].ToString()); break; } if (nNodoUsuario == 0) { nNodoUsuario = (int)oFila["t303_idnodo_usuario"]; } if (nEmpresaNodoUsuario == 0) { nEmpresaNodoUsuario = (int)oFila["t313_idempresa_nodousuario"]; } } if (nPSN_C == 0) { sResul = "Instancia contratante del proyecto económico no existente"; bErrorControlado = true; throw (new Exception(sResul)); } if (nPSN_P != 0) //Réplica con gestión { nSegMesProy = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, nPSN_P, int.Parse(aDatos[5])); if (nSegMesProy == 0) { sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, nPSN_P, int.Parse(aDatos[5])); nSegMesProy = SEGMESPROYECTOSUBNODO.Insert(tr, nPSN_P, int.Parse(aDatos[5]), sEstadoMes, 0, 0, false, 0, 0); } DATOECO.Insert(tr, nSegMesProy, Constantes.nIdClaseProductividad, Utilidades.unescape(aDatos[6]), decimal.Parse(aDatos[3]) * nTipoCambio_P, null, null, 4); DATOECO.Insert(tr, nSegMesProy, Constantes.nIdClaseProductividadSS, Utilidades.unescape(aDatos[6]), decimal.Parse(aDatos[8]) * nTipoCambio_P, null, null, 4); } else if (nNodo_C == nNodoUsuario) //El usuario pertenece a la Contratante { nSegMesProy = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, nPSN_C, int.Parse(aDatos[5])); if (nSegMesProy == 0) { sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, nPSN_C, int.Parse(aDatos[5])); nSegMesProy = SEGMESPROYECTOSUBNODO.Insert(tr, nPSN_C, int.Parse(aDatos[5]), sEstadoMes, 0, 0, false, 0, 0); } DATOECO.Insert(tr, nSegMesProy, Constantes.nIdClaseProductividad, Utilidades.unescape(aDatos[6]), decimal.Parse(aDatos[3]) * nTipoCambio_C, null, null, 4); DATOECO.Insert(tr, nSegMesProy, Constantes.nIdClaseProductividadSS, Utilidades.unescape(aDatos[6]), decimal.Parse(aDatos[8]) * nTipoCambio_C, null, null, 4); } else //Réplica sin gestión { //Para la réplica sin gestión if (nNodo_J == 0) //no existe la réplica sin gestión, por lo que hay que crearla. { #region Creación de la instancia de proyecto int nCountManiobraTipo1 = 0, idNodoAuxManiobra = 0, nCountSubnodosNoManiobra = 0, idNodoAuxDestino = 0, idSubNodoGrabar = 0; int nResponsablePSN = 0; DataSet dsSubnodos = PROYECTOSUBNODO.ObtenerSubnodosParaReplicar(tr, nNodoUsuario); foreach (DataRow oFila in dsSubnodos.Tables[0].Rows) { if ((byte)oFila["t304_maniobra"] == 1) { nCountManiobraTipo1++; idNodoAuxManiobra = (int)oFila["t304_idsubnodo"]; } else { nCountSubnodosNoManiobra++; idNodoAuxDestino = (int)oFila["t304_idsubnodo"]; } } if (nCountSubnodosNoManiobra == 1) //si solo hay un subnodo en el nodo, que la réplica se haga a ese subnodo. { idSubNodoGrabar = idNodoAuxDestino; } else { if (nCountManiobraTipo1 == 0) { NODO oNodo2 = NODO.SelectEnTransaccion(tr, nNodoUsuario); nResponsablePSN = oNodo2.t314_idusuario_responsable; //crear subnodo maniobra idSubNodoGrabar = SUBNODO.Insert(tr, "Proyectos a reasignar", nNodoUsuario, 0, true, 1, oNodo2.t314_idusuario_responsable, null); } else { if (nCountManiobraTipo1 > 1) { ds.Dispose(); throw (new Exception("El número de subnodos de maniobra es " + nCountManiobraTipo1.ToString() + " en el nodo " + nNodoUsuario.ToString() + ". Por favor avise al administrador.")); } if (ds.Tables[0].Rows.Count - 1 > 1 || ds.Tables[0].Rows.Count - 1 == 0) { idSubNodoGrabar = idNodoAuxManiobra; } else { idSubNodoGrabar = idNodoAuxDestino; } } } ds.Dispose(); if (nResponsablePSN == 0) { NODO oNodo3 = NODO.SelectEnTransaccion(tr, nNodoUsuario); nResponsablePSN = oNodo3.t314_idusuario_responsable; } if (nTipoCambio_J == 0) { //hay que obtener el tipo de cambio de la moneda por defecto del nodo en el mes del incentivo. nTipoCambio_J = NODO.getTipocambioMonedaNodoMes(tr, nNodoUsuario, int.Parse(aDatos[5])); } nPSN_J = PROYECTOSUBNODO.Insert(tr, int.Parse(aDatos[4]), idSubNodoGrabar, false, "J", false, nResponsablePSN, Utilidades.unescape(aDatos[7]), "X", "X", false, false, false, false, false, "", "", "", null, null, null, null, null, null, false, 0); #endregion } nSegMesProy = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, nPSN_J, int.Parse(aDatos[5])); if (nSegMesProy == 0) { sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, nPSN_J, int.Parse(aDatos[5])); nSegMesProy = SEGMESPROYECTOSUBNODO.Insert(tr, nPSN_J, int.Parse(aDatos[5]), sEstadoMes, 0, 0, false, 0, 0); } DATOECO.Insert(tr, nSegMesProy, Constantes.nIdClaseProductividad, Utilidades.unescape(aDatos[6]), decimal.Parse(aDatos[3]) * nTipoCambio_J, null, null, 4); DATOECO.Insert(tr, nSegMesProy, Constantes.nIdClaseProductividadSS, Utilidades.unescape(aDatos[6]), decimal.Parse(aDatos[8]) * nTipoCambio_J, null, null, 4); //Para la contratante (se añade el nodo destino) nSegMesProy = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, nPSN_C, int.Parse(aDatos[5])); if (nSegMesProy == 0) { sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, nPSN_C, int.Parse(aDatos[5])); nSegMesProy = SEGMESPROYECTOSUBNODO.Insert(tr, nPSN_C, int.Parse(aDatos[5]), sEstadoMes, 0, 0, false, 0, 0); } DATOECO.Insert(tr, nSegMesProy, (nIDEmpresaNodoProyecto_C == nEmpresaNodoUsuario) ? 4 : 6, Utilidades.unescape(aDatos[6]), (decimal.Parse(aDatos[3]) + decimal.Parse(aDatos[8])) * nTipoCambio_C, nNodoUsuario, null, 4); } Capa_Datos.INCENTIVOSPRODUCTIVIDAD.Registrar(tr, int.Parse(aDatos[0])); } Conexion.CommitTransaccion(tr); } catch (Exception ex) { Conexion.CerrarTransaccion(tr); if (bErrorControlado) { sResul = ex.Message; } else { sResul = Errores.mostrarError("Error al procesar.", ex); } } finally { Conexion.Cerrar(oConn); if (sResul != "") { if (bErrorControlado) { sResul = "ErrorControlado##EC##" + sResul; } throw (new Exception(sResul)); } } return(""); }
/// ----------------------------------------------------------------------------- /// <summary> /// Obtiene un registro de la tabla T303_NODO, /// y devuelve una instancia u objeto del tipo NODO /// </summary> /// <returns></returns> /// <history> /// Creado por [sqladmin] 25/02/2010 15:08:09 /// </history> /// ----------------------------------------------------------------------------- public static NODO Select(SqlTransaction tr, int t303_idnodo) { NODO o = new NODO(); SqlParameter[] aParam = new SqlParameter[1]; aParam[0] = new SqlParameter("@t303_idnodo", SqlDbType.Int, 4); aParam[0].Value = t303_idnodo; SqlDataReader dr; if (tr == null) { dr = SqlHelper.ExecuteSqlDataReader("SUP_NODO_S", aParam); } else { dr = SqlHelper.ExecuteSqlDataReaderTransaccion(tr, "SUP_NODO_S", aParam); } if (dr.Read()) { if (dr["t303_idnodo"] != DBNull.Value) { o.t303_idnodo = int.Parse(dr["t303_idnodo"].ToString()); } if (dr["t303_denominacion"] != DBNull.Value) { o.t303_denominacion = (string)dr["t303_denominacion"]; } if (dr["t303_denabreviada"] != DBNull.Value) { o.t303_denabreviada = (string)dr["t303_denabreviada"]; } if (dr["t303_masdeungf"] != DBNull.Value) { o.t303_masdeungf = (bool)dr["t303_masdeungf"]; } if (dr["t391_idsupernodo1"] != DBNull.Value) { o.t391_idsupernodo1 = int.Parse(dr["t391_idsupernodo1"].ToString()); } if (dr["t313_idempresa"] != DBNull.Value) { o.t313_idempresa = int.Parse(dr["t313_idempresa"].ToString()); } if (dr["t303_cierreECOestandar"] != DBNull.Value) { o.t303_cierreECOestandar = (bool)dr["t303_cierreECOestandar"]; } if (dr["t303_ultcierreeco"] != DBNull.Value) { o.t303_ultcierreeco = int.Parse(dr["t303_ultcierreeco"].ToString()); } if (dr["t303_estado"] != DBNull.Value) { o.t303_estado = (bool)dr["t303_estado"]; } if (dr["t303_modelocostes"] != DBNull.Value) { o.t303_modelocostes = (string)dr["t303_modelocostes"]; } if (dr["t303_modelotarifas"] != DBNull.Value) { o.t303_modelotarifas = (string)dr["t303_modelotarifas"]; } if (dr["t303_generareplica"] != DBNull.Value) { o.t303_generareplica = (bool)dr["t303_generareplica"]; } if (dr["t303_porctolerancia"] != DBNull.Value) { o.t303_porctolerancia = byte.Parse(dr["t303_porctolerancia"].ToString()); } if (dr["t314_idusuario_responsable"] != DBNull.Value) { o.t314_idusuario_responsable = int.Parse(dr["t314_idusuario_responsable"].ToString()); } if (dr["t303_orden"] != DBNull.Value) { o.t303_orden = int.Parse(dr["t303_orden"].ToString()); } if (dr["t303_representativo"] != DBNull.Value) { o.t303_representativo = (bool)dr["t303_representativo"]; } if (dr["t303_interfacehermes"] != DBNull.Value) { o.t303_interfacehermes = (string)dr["t303_interfacehermes"]; } if (dr["t303_defectocalcularGF"] != DBNull.Value) { o.t303_defectocalcularGF = (bool)dr["t303_defectocalcularGF"]; } if (dr["t303_defectomailiap"] != DBNull.Value) { o.t303_defectomailiap = (bool)dr["t303_defectomailiap"]; } if (dr["t303_cierreIAPestandar"] != DBNull.Value) { o.t303_cierreIAPestandar = (bool)dr["t303_cierreIAPestandar"]; } if (dr["t303_ultcierreIAP"] != DBNull.Value) { o.t303_ultcierreIAP = int.Parse(dr["t303_ultcierreIAP"].ToString()); } if (dr["t303_compcontprod"] != DBNull.Value) { o.t303_compcontprod = (bool)dr["t303_compcontprod"]; } if (dr["t303_defectoPIG"] != DBNull.Value) { o.t303_defectoPIG = (bool)dr["t303_defectoPIG"]; } if (dr["t303_margencesionprof"] != DBNull.Value) { o.t303_margencesionprof = float.Parse(dr["t303_margencesionprof"].ToString()); } if (dr["t303_interesGF"] != DBNull.Value) { o.t303_interesGF = float.Parse(dr["t303_interesGF"].ToString()); } if (dr["t303_denominacion_CNP"] != DBNull.Value) { o.t303_denominacion_CNP = (string)dr["t303_denominacion_CNP"]; } if (dr["t303_obligatorio_CNP"] != DBNull.Value) { o.t303_obligatorio_CNP = (bool)dr["t303_obligatorio_CNP"]; } if (dr["t303_asignarperfiles"] != DBNull.Value) { o.t303_asignarperfiles = (string)dr["t303_asignarperfiles"]; } if (dr["t303_desglose"] != DBNull.Value) { o.t303_desglose = (bool)dr["t303_desglose"]; } if (dr["t303_pgrcg"] != DBNull.Value) { o.t303_pgrcg = (bool)dr["t303_pgrcg"]; } if (dr["t303_controlhuecos"] != DBNull.Value) { o.t303_controlhuecos = (bool)dr["t303_controlhuecos"]; } if (dr["t303_tipolinterna"] != DBNull.Value) { o.t303_tipolinterna = (bool)dr["t303_tipolinterna"]; } if (dr["t303_tipolespecial"] != DBNull.Value) { o.t303_tipolespecial = (bool)dr["t303_tipolespecial"]; } if (dr["t303_tipolproductivaSC"] != DBNull.Value) { o.t303_tipolproductivaSC = (bool)dr["t303_tipolproductivaSC"]; } if (dr["t303_defectoadmiterecursospst"] != DBNull.Value) { o.t303_defectoadmiterecursospst = (bool)dr["t303_defectoadmiterecursospst"]; } if (dr["t621_idovsap"] != DBNull.Value) { o.t621_idovsap = (string)dr["t621_idovsap"]; } if (dr["t422_idmoneda"] != DBNull.Value) { o.t422_idmoneda = (string)dr["t422_idmoneda"]; } } else { throw (new NullReferenceException("No se ha obtenido ningun dato de NODO")); } dr.Close(); dr.Dispose(); return(o); }
public static void CambioEstructuraCasoA(SqlTransaction tr, int t305_idproyectosubnodo, int t303_idnodo_origen, int t303_idnodo_destino, bool bMantenerResponsables) { #region Obtención de subnodo para crear el proyectosubnodo int nCount = 0; int nCountManiobraTipo2 = 0; int idSubNodoAuxDestino = 0; int idSubNodoAuxManiobra = 0; int idSubNodoGrabar = 0; int nCountSubnodosNoManiobra = 0; int nResponsableSubNodo = 0; string sDenominacionNodo = ""; DataSet dsSubNodos = SUBNODO.CatalogoActivos(tr, t303_idnodo_destino, true); foreach (DataRow oSN in dsSubNodos.Tables[0].Rows) { if ((byte)oSN["t304_maniobra"] == 1) { nCount++; idSubNodoAuxManiobra = (int)oSN["t304_idsubnodo"]; nResponsableSubNodo = (int)oSN["t314_idusuario_responsable"]; sDenominacionNodo = oSN["t303_denominacion"].ToString(); } else if ((byte)oSN["t304_maniobra"] == 0) { idSubNodoAuxDestino = (int)oSN["t304_idsubnodo"]; nCountSubnodosNoManiobra++; nResponsableSubNodo = (int)oSN["t314_idusuario_responsable"]; sDenominacionNodo = oSN["t303_denominacion"].ToString(); } else { nCountManiobraTipo2++; } } if (nCountSubnodosNoManiobra == 1) //si solo hay un subnodo en el nodo, que la réplica se haga a ese subnodo. { idSubNodoGrabar = idSubNodoAuxDestino; } else { if (nCount == 0) { NODO oNodo = NODO.Select(tr, t303_idnodo_destino); //crear subnodo maniobra idSubNodoGrabar = SUBNODO.Insert(tr, "Proyectos a reasignar", t303_idnodo_destino, 0, true, 1, oNodo.t314_idusuario_responsable, null);// nResponsableSubNodo = oNodo.t314_idusuario_responsable; } else { if (nCount > 1) { dsSubNodos.Dispose(); throw (new Exception("El número de subnodos de maniobra es " + nCount.ToString() + " en el nodo " + sDenominacionNodo + ". Por favor avise al administrador.")); } if (dsSubNodos.Tables[0].Rows.Count - 1 - nCountManiobraTipo2 > 1 || dsSubNodos.Tables[0].Rows.Count - 1 - nCountManiobraTipo2 == 0) { idSubNodoGrabar = idSubNodoAuxManiobra; } else { idSubNodoGrabar = idSubNodoAuxDestino; } } } dsSubNodos.Dispose(); #endregion CAMBIOESTRUCTURAPSN.Paso01(tr, t305_idproyectosubnodo, idSubNodoGrabar, (bMantenerResponsables)? null:(int?)nResponsableSubNodo); CAMBIOESTRUCTURAPSN.Paso02(tr, t305_idproyectosubnodo, t303_idnodo_origen); CAMBIOESTRUCTURAPSN.Paso03(tr, t305_idproyectosubnodo, t303_idnodo_origen); CAMBIOESTRUCTURAPSN.Paso04(tr, t305_idproyectosubnodo, t303_idnodo_destino); CAMBIOESTRUCTURAPSN.Paso05(tr, t305_idproyectosubnodo, t303_idnodo_destino); CAMBIOESTRUCTURAPSN.Paso06(tr, t305_idproyectosubnodo, t303_idnodo_origen, t303_idnodo_destino); CAMBIOESTRUCTURAPSN.Paso07(tr, t305_idproyectosubnodo, t303_idnodo_origen, t303_idnodo_destino); }
/// <summary> /// Obtiene el subnodo por defecto de un nodo para crear un PE. /// Si no existe, crea uno de maniobra /// </summary> /// <param name="t303_idnodo"></param> /// <returns></returns> public static int GetSubNodoDefecto(int t303_idnodo) { #region Obtención de subnodo para crear el proyectosubnodo int nCount = 0; int nCountManiobraTipo2 = 0; int idSubNodoAuxDestino = 0; int idSubNodoAuxManiobra = 0; int idSubNodoGrabar = 0; int nCountSubnodosNoManiobra = 0; int nResponsableSubNodo = 0; string sDenominacionNodo = ""; DataSet dsSubNodos = null; try { dsSubNodos = SUBNODO.CatalogoActivos(null, t303_idnodo, true); foreach (DataRow oSN in dsSubNodos.Tables[0].Rows) { if ((byte)oSN["t304_maniobra"] == 1) { nCount++; idSubNodoAuxManiobra = (int)oSN["t304_idsubnodo"]; nResponsableSubNodo = (int)oSN["t314_idusuario_responsable"]; sDenominacionNodo = oSN["t303_denominacion"].ToString(); } else if ((byte)oSN["t304_maniobra"] == 0) { idSubNodoAuxDestino = (int)oSN["t304_idsubnodo"]; nCountSubnodosNoManiobra++; nResponsableSubNodo = (int)oSN["t314_idusuario_responsable"]; sDenominacionNodo = oSN["t303_denominacion"].ToString(); } else { nCountManiobraTipo2++; } } if (nCountSubnodosNoManiobra == 1) //si solo hay un subnodo en el nodo, que la réplica se haga a ese subnodo. { idSubNodoGrabar = idSubNodoAuxDestino; } else { if (nCount == 0) { NODO oNodo = NODO.Select(null, t303_idnodo); //crear subnodo maniobra idSubNodoGrabar = SUBNODO.Insert(null, "Proyectos a reasignar", t303_idnodo, 0, true, 1, oNodo.t314_idusuario_responsable, null); nResponsableSubNodo = oNodo.t314_idusuario_responsable; } else { //if (nCount > 1) //{ // dsSubNodos.Dispose(); // throw (new Exception("El número de subnodos de maniobra es " + nCount.ToString() + " en el nodo " + sDenominacionNodo + ". Por favor avise al administrador.")); //} if (dsSubNodos.Tables[0].Rows.Count - 1 - nCountManiobraTipo2 > 1 || dsSubNodos.Tables[0].Rows.Count - 1 - nCountManiobraTipo2 == 0) { idSubNodoGrabar = idSubNodoAuxManiobra; } else { idSubNodoGrabar = idSubNodoAuxDestino; } } } dsSubNodos.Dispose(); #endregion return(idSubNodoGrabar); } catch (Exception ex) { throw ex; } finally { if (dsSubNodos != null) { dsSubNodos.Dispose(); } } }