public static void CambiarEstructuraAProyecto(SqlTransaction tr, int t305_idproyectosubnodo, int t303_idnodo_origen, int t303_idnodo_destino, bool bMantenerResponsables) { string sTipoReplicaDestino = ""; int idPSNReplicaDestino = 0; SqlDataReader dr = CAMBIOESTRUCTURAPSN.Paso00(tr, t305_idproyectosubnodo, t303_idnodo_destino); if (dr.Read()) { idPSNReplicaDestino = (int)dr["t305_idproyectosubnodo"]; sTipoReplicaDestino = dr["t305_cualidad"].ToString(); } dr.Close(); dr.Dispose(); switch (sTipoReplicaDestino) { case "": //CASO A. 3.1.- Instancia contratante se mueve a destino sin instancia replicada CAMBIOESTRUCTURAPSN.CambioEstructuraCasoA(tr, t305_idproyectosubnodo, t303_idnodo_origen, t303_idnodo_destino, bMantenerResponsables); break; case "J": //CASO B. 3.2.- Instancia contratante se mueve a destino con instancia replicada sin gestión CAMBIOESTRUCTURAPSN.CambioEstructuraCasoB(tr, t305_idproyectosubnodo, t303_idnodo_destino, idPSNReplicaDestino); CAMBIOESTRUCTURAPSN.CambioEstructuraCasoA(tr, t305_idproyectosubnodo, t303_idnodo_origen, t303_idnodo_destino, bMantenerResponsables); break; case "P": //CASO C. 3.3.- Instancia contratante se mueve a destino con instancia replicada con gestión CAMBIOESTRUCTURAPSN.CambioEstructuraCasoC(tr, t305_idproyectosubnodo, t303_idnodo_destino, idPSNReplicaDestino); CAMBIOESTRUCTURAPSN.CambioEstructuraCasoA(tr, t305_idproyectosubnodo, t303_idnodo_origen, t303_idnodo_destino, bMantenerResponsables); break; } }
public static void CambioEstructuraCasoB(SqlTransaction tr, int t305_idproyectosubnodo_contratante, int t303_idnodo_destino, int t305_idproyectosubnodo_replicaSG) { int nSMPSN_contratante = 0; string sEstadoMes = ""; DataSet dsDatoEco = CAMBIOESTRUCTURAPSN.Paso08(tr, t305_idproyectosubnodo_replicaSG); foreach (DataRow oDE in dsDatoEco.Tables[0].Rows) { //2ºComprobar si existe mes para el nodo destino nSMPSN_contratante = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, t305_idproyectosubnodo_contratante, (int)oDE["t325_anomes"]); if (nSMPSN_contratante == 0) { sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, t305_idproyectosubnodo_contratante, (int)oDE["t325_anomes"]); nSMPSN_contratante = SEGMESPROYECTOSUBNODO.Insert(tr, t305_idproyectosubnodo_contratante, (int)oDE["t325_anomes"], sEstadoMes, 0, 0, false, 0, 0); } CAMBIOESTRUCTURAPSN.Paso09(tr, (int)oDE["t376_iddatoeco"], nSMPSN_contratante, (decimal)oDE["t376_importe_mb"]); //CAMBIOESTRUCTURAPSN.Paso10(tr, t305_idproyectosubnodo_contratante, t303_idnodo_destino); } dsDatoEco.Dispose(); CAMBIOESTRUCTURAPSN.Paso10(tr, t305_idproyectosubnodo_contratante, t303_idnodo_destino); PROYECTOSUBNODO.Delete(tr, t305_idproyectosubnodo_replicaSG); }
public static void CambioEstructuraCasoC(SqlTransaction tr, int t305_idproyectosubnodo_contratante, int t303_idnodo_destino, int t305_idproyectosubnodo_replicaCG) { int nSMPSN_contratante = 0; string sEstadoMes = ""; // Aplica la moneda del contratante al presupuesto de la estructura técnica. Aplica el PSN del contratante a los proyectos técnicos CAMBIOESTRUCTURAPSN.Paso11(tr, t305_idproyectosubnodo_contratante, t305_idproyectosubnodo_replicaCG); //Coge los consumos de la replica DataSet dsDatoEco = CAMBIOESTRUCTURAPSN.Paso08(tr, t305_idproyectosubnodo_replicaCG); foreach (DataRow oDE in dsDatoEco.Tables[0].Rows) { //2ºComprobar si existe mes para el nodo destino nSMPSN_contratante = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, t305_idproyectosubnodo_contratante, (int)oDE["t325_anomes"]); if (nSMPSN_contratante == 0) { sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, t305_idproyectosubnodo_contratante, (int)oDE["t325_anomes"]); nSMPSN_contratante = SEGMESPROYECTOSUBNODO.Insert(tr, t305_idproyectosubnodo_contratante, (int)oDE["t325_anomes"], sEstadoMes, 0, 0, false, 0, 0); } //Actualiza el importe por si ha habido cambio de moneda CAMBIOESTRUCTURAPSN.Paso09(tr, (int)oDE["t376_iddatoeco"], nSMPSN_contratante, (decimal)oDE["t376_importe_mb"]); //CAMBIOESTRUCTURAPSN.Paso10(tr, t305_idproyectosubnodo_contratante, t303_idnodo_destino); } dsDatoEco.Dispose(); //Borra los consumos de la contratante en el CR de destino CAMBIOESTRUCTURAPSN.Paso10(tr, t305_idproyectosubnodo_contratante, t303_idnodo_destino); //Reasigno las notas GASVI CAMBIOESTRUCTURAPSN.Paso17(tr, t305_idproyectosubnodo_contratante, t305_idproyectosubnodo_replicaCG); //Guardamos en una lista los usuarios asignados a la replica con gestion List <USUARIOPROYECTOSUBNODO> lUsusariosReplica = CAMBIOESTRUCTURAPSN.Paso12(tr, t305_idproyectosubnodo_contratante, t305_idproyectosubnodo_replicaCG); //Guardo en un dataset los consumos de la replicada DataSet dsCPMCE = CAMBIOESTRUCTURAPSN.Paso13(tr, t305_idproyectosubnodo_replicaCG); //Borro rl proyecto replicado PROYECTOSUBNODO.Delete(tr, t305_idproyectosubnodo_replicaCG); //Recojo los usuarios del proyecto replicado con gestión que he almacenado previamente y los inserto en la contratante //Es necesario hacerlo así porque mientras exista la instancia replicada no permite insertar usuarios en la contratante CAMBIOESTRUCTURAPSN.Paso16(tr, t305_idproyectosubnodo_contratante, lUsusariosReplica); //Una vez que tengo asignados los usuarios a la contratante ya puedo pasar los consumos int?t303_idnodo_usuariomes = null; int?t313_idempresa_nodomes = null; foreach (DataRow oCPM in dsCPMCE.Tables[0].Rows) { nSMPSN_contratante = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, t305_idproyectosubnodo_contratante, (int)oCPM["t325_anomes"]); if (nSMPSN_contratante == 0) { sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, t305_idproyectosubnodo_contratante, (int)oCPM["t325_anomes"]); nSMPSN_contratante = SEGMESPROYECTOSUBNODO.Insert(tr, t305_idproyectosubnodo_contratante, (int)oCPM["t325_anomes"], sEstadoMes, 0, 0, false, 0, 0); } decimal dAux = decimal.Parse(oCPM["t378_costeunitariorep_mb"].ToString()); if (oCPM["t303_idnodo_usuariomes"].ToString() != "") { t303_idnodo_usuariomes = (int)oCPM["t303_idnodo_usuariomes"]; } else { t303_idnodo_usuariomes = null; } if (oCPM["t313_idempresa_nodomes"].ToString() != "") { t313_idempresa_nodomes = (int)oCPM["t313_idempresa_nodomes"]; } else { t313_idempresa_nodomes = null; } //CAMBIOESTRUCTURAPSN.Paso15(tr, (int)oCPM["t325_idsegmesproy"], (int)oCPM["t314_idusuario"], nSMPSN_contratante, dAux, dAux, // float.Parse(oCPM["t378_unidades"].ToString()), (int)oCPM["t303_idnodo_usuariomes"], (int)oCPM["t313_idempresa_nodomes"]); CAMBIOESTRUCTURAPSN.Paso15(tr, (int)oCPM["t314_idusuario"], nSMPSN_contratante, dAux, dAux, float.Parse(oCPM["t378_unidades"].ToString()), t303_idnodo_usuariomes, t313_idempresa_nodomes); } dsCPMCE.Dispose(); }
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); }