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();
        }