protected string Procesar(string sSegMesProy, string nPSN, string sConsPersonas, string sConsNivel, string sProdProfesional, string sProdPerfil, string sAvance, string sPeriodCons, string sPeriodProd, string sClasesAClonar, string strMeses)
    {
        string sResul = "", sw = "0";
        int    nSMPSN_destino    = 0;
        int    t325_anomes_maxC  = 0;
        int    t325_anomes_minA  = 0;
        int    t303_ultcierreeco = 0;

        #region apertura de conexión y transacción
        try
        {
            oConn = Conexion.Abrir();
            tr    = Conexion.AbrirTransaccionSerializable(oConn);
        }
        catch (Exception ex)
        {
            sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex);
            return(sResul);
        }
        #endregion

        try
        {
            DataSet ds = SEGMESPROYECTOSUBNODO.ObtenerMesesReferenciaParaClonado(tr, int.Parse(nPSN));
            foreach (DataRow oMes in ds.Tables[0].Rows)
            {
                if (oMes["t325_estado"].ToString() == "C")
                {
                    t325_anomes_maxC = (int)oMes["t325_anomes"];
                }
                if (oMes["t325_estado"].ToString() == "A")
                {
                    t325_anomes_minA = (int)oMes["t325_anomes"];
                }
            }
            foreach (DataRow oMes in ds.Tables[1].Rows)
            {
                t303_ultcierreeco = (int)oMes["t303_ultcierreeco"];
            }

            string[] aAnomes = Regex.Split(strMeses, "##");
            foreach (string oAnomes in aAnomes)
            {
                if (oAnomes == "")
                {
                    continue;
                }

                if (int.Parse(oAnomes) <= t303_ultcierreeco ||
                    int.Parse(oAnomes) <= t325_anomes_maxC)
                {
                    sw = "1";
                    continue;
                }

                nSMPSN_destino = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, int.Parse(nPSN), int.Parse(oAnomes));
                if (nSMPSN_destino != 0)
                {
                    SEGMESPROYECTOSUBNODO.Delete(tr, nSMPSN_destino);
                }

                nSMPSN_destino = SEGMESPROYECTOSUBNODO.Insert(tr, int.Parse(nPSN), int.Parse(oAnomes), "A", 0, 0, false, 0, 0);

                SEGMESPROYECTOSUBNODO.ClonarMes(tr, int.Parse(sSegMesProy),
                                                nSMPSN_destino,
                                                sClasesAClonar,
                                                (sConsPersonas == "1") ? true : false,
                                                (sConsNivel == "1") ? true : false,
                                                (sProdProfesional == "1") ? true : false,
                                                (sProdPerfil == "1") ? true : false,
                                                (sAvance == "1") ? true : false,
                                                (sPeriodCons == "1") ? true : false,
                                                (sPeriodProd == "1") ? true : false,
                                                SUPER.Capa_Negocio.Utilidades.EsAdminProduccion()
                                                );
            }
            Conexion.CommitTransaccion(tr);
            sResul = "OK@#@" + sw;
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            sResul = "Error@#@" + Errores.mostrarError("Error al clonar los datos del mes de referencia.", ex);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }

        return(sResul);
    }
    private string Procesar(string sAnno, string strNodos)
    {
        string sResul     = "";
        string sEstadoMes = "";
        int    nSMPSN     = 0;

        try
        {
            #region abrir conexión y transacción
            try
            {
                oConn = Conexion.Abrir();
                tr    = Conexion.AbrirTransaccionSerializable(oConn);
            }
            catch (Exception ex)
            {
                if (oConn.State == ConnectionState.Open)
                {
                    Conexion.Cerrar(oConn);
                }
                sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex);
                return(sResul);
            }
            #endregion

            PROYECTOSUBNODO.EliminarObraEnCurso(tr, int.Parse(sAnno), strNodos);
            DataSet ds = PROYECTOSUBNODO.ObtenerProyectosObraEnCurso(tr, int.Parse(sAnno), strNodos);

            foreach (DataRow oPSN in ds.Tables[0].Rows)
            {
                nSMPSN = (int)oPSN["t325_idsegmesproy_dic"];
                if (nSMPSN == 0)
                {
                    sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, (int)oPSN["t305_idproyectosubnodo"], int.Parse(sAnno) * 100 + 12);
                    nSMPSN     = SEGMESPROYECTOSUBNODO.Insert(tr, (int)oPSN["t305_idproyectosubnodo"], int.Parse(sAnno) * 100 + 12, sEstadoMes, 0, 0, false, 0, 0);
                }

                //Insertamos en diciembre el importe del 20% en negativo.
                DATOECO.Insert(tr, nSMPSN, Constantes.nIdClaseObraEnCurso, "20% Obra en Curso Fin de Año", decimal.Parse(oPSN["20_Obra_Curso_Anno"].ToString()) * -1, null, null, null);

                nSMPSN = (int)oPSN["t325_idsegmesproy_ene"];
                if (nSMPSN == 0)
                {
                    sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, (int)oPSN["t305_idproyectosubnodo"], (int.Parse(sAnno) + 1) * 100 + 1);
                    nSMPSN     = SEGMESPROYECTOSUBNODO.Insert(tr, (int)oPSN["t305_idproyectosubnodo"], (int.Parse(sAnno) + 1) * 100 + 1, sEstadoMes, 0, 0, false, 0, 0);
                }
                //Insertamos en diciembre el importe del 20% en positivo.
                DATOECO.Insert(tr, nSMPSN, Constantes.nIdClaseObraEnCurso, "20% Obra en Curso Fin de Año", decimal.Parse(oPSN["20_Obra_Curso_Anno"].ToString()), null, null, null);
            }
            ds.Dispose();

            Conexion.CommitTransaccion(tr);

            sResul = "OK";
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            sResul = "Error@#@" + Errores.mostrarError("Error al realizar el paso del 20% de la obra en curso.", ex, false);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }
예제 #3
0
    private string Procesar()
    {
        string sResul = "";

        try
        {
            #region Obtenión de dataset con proyectosubnodo y creación de HASTABLE
            oProyectoSubNodo = null;
            DataSet ds = CONSUCONTACORO.GetDatosParaValidacion();

            htProyectoSubNodo = new Hashtable();
            foreach (DataRow dsProyectoSubNodo in ds.Tables[0].Rows)//Recorro tabla de proyectos-subnodos
            {
                htProyectoSubNodo.Add(dsProyectoSubNodo["t301_idproyecto"].ToString() + @"/" + dsProyectoSubNodo["t303_idnodo"].ToString(),
                                      new ProyectoSubNodo((int)dsProyectoSubNodo["t301_idproyecto"],
                                                          (int)dsProyectoSubNodo["t305_idproyectosubnodo"],
                                                          (int)dsProyectoSubNodo["t303_idnodo"],
                                                          dsProyectoSubNodo["t305_cualidad"].ToString()
                                                          )
                                      );
            }

            ds.Dispose();
            #endregion

            #region Abro transaccion
            try
            {
                oConn = Conexion.Abrir();
                tr    = Conexion.AbrirTransaccion(oConn);
            }
            catch (Exception ex)
            {
                if (oConn.State == ConnectionState.Open)
                {
                    Conexion.Cerrar(oConn);
                }
                sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex);
                return(sResul);
            }
            #endregion

            string sEstadoMes  = "";
            int    nSegMesProy = 0;

            CONSUCONTA.DeleteByAnno(tr, nAnno);

            DataSet ds2 = CONSUCONTACORO.GetCatalogo(tr);
            foreach (DataRow oFila in ds2.Tables[0].Rows)
            {
                oProyectoSubNodo = (ProyectoSubNodo)htProyectoSubNodo[oFila["t301_idproyecto"].ToString() + "/" + oFila["t303_idnodo"].ToString()];
                if (oProyectoSubNodo != null)
                {
                    if (oFila["t478_descripcion"].ToString() != "" && int.Parse(oFila["t325_anomes"].ToString().Substring(0, 4)) == nAnno)
                    {
                        nSegMesProy = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, oProyectoSubNodo.t305_idproyectosubnodo, (int)oFila["t325_anomes"]);
                        if (nSegMesProy == 0)
                        {
                            sEstadoMes  = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, oProyectoSubNodo.t305_idproyectosubnodo, (int)oFila["t325_anomes"]);
                            nSegMesProy = SEGMESPROYECTOSUBNODO.Insert(tr, oProyectoSubNodo.t305_idproyectosubnodo, (int)oFila["t325_anomes"], sEstadoMes, 0, 0, false, 0, 0);
                        }
                        CONSUCONTA.Insert(tr, nSegMesProy, (int)oFila["t315_idproveedor"], (int)oFila["t478_nconsumo"], (decimal)oFila["t478_importe"], (int)oFila["t329_idclaseeco"], (int)oFila["t313_idempresa"], (int)oFila["t478_ndocumento"], oFila["t478_descripcion"].ToString());
                    }
                }
                //else
                //{
                //    string sMsg = "No existe un proyectosubnodo correspondiente al proyecto " + dr["t301_idproyecto"].ToString() + " y al " + Estructura.getDefCorta(Estructura.sTipoElem.NODO) + " " + dr["t303_idnodo"].ToString() + ".";
                //    dr.Close();
                //    dr.Dispose();
                //    throw new Exception(sMsg);
                //}
            }
            ds2.Dispose();

            sResul = "OK@#@";
            Conexion.CommitTransaccion(tr);
        }
        catch (Exception ex)
        {
            sResul = "Error@#@" + Errores.mostrarError("Error al procesar los datos", ex);
            Conexion.CerrarTransaccion(tr);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }
예제 #4
0
    private string Grabar(string sPSN, string sAnnomes, string strProfesionales, string sHayDatosProf)
    {
        string sResul = "";
        string sEstadoMes = "";
        int    nPSN = int.Parse(sPSN), nAnnomes = int.Parse(sAnnomes), nSMPSN = 0;
        bool   bErrorControlado = false;

        #region abrir conexión y transacción
        try
        {
            oConn = Conexion.Abrir();
            tr    = Conexion.AbrirTransaccionSerializable(oConn);
        }
        catch (Exception ex)
        {
            if (oConn.State == ConnectionState.Open)
            {
                Conexion.Cerrar(oConn);
            }
            sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex);
            return(sResul);
        }
        #endregion
        try
        {
            if (PROYECTOSUBNODO.ObtenerUltCierreEcoNodoPSN(tr, nPSN) >= nAnnomes)
            {
                Conexion.CerrarTransaccion(tr);
                sResul = "Error@#@" + Errores.mostrarError("No se ha realizado el traspaso, debido a que el " + Estructura.getDefLarga(Estructura.sTipoElem.NODO) + " se encuentra cerrado en el mes a traspasar.");
            }
            else
            {
                nSMPSN = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, nPSN, nAnnomes);
                if (nSMPSN == 0)
                {
                    if (sHayDatosProf == "1")
                    {
                        sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, nPSN, nAnnomes);
                        if (sEstadoMes != "C")
                        {
                            nSMPSN = SEGMESPROYECTOSUBNODO.Insert(tr, nPSN, nAnnomes, sEstadoMes, 0, 0, false, 0, 0);
                        }
                    }
                }
                else
                {
                    if (Session["ADMINISTRADOR_PC_ACTUAL"].ToString() != "SA")
                    {
                        SEGMESPROYECTOSUBNODO oSMPSN = SEGMESPROYECTOSUBNODO.Obtener(tr, nSMPSN, null);
                        if (oSMPSN.t325_estado == "C")
                        {
                            bErrorControlado = true;
                            throw (new Exception("No se permite grabar, debido a que el mes en curso está cerrado para el proyecto."));
                        }
                    }

                    CONSPERMES.DeleteByT325_idsegmesproy(tr, nSMPSN);
                }

                #region Datos Profesionales
                if (strProfesionales != "" && sEstadoMes != "C")
                {
                    string[] aProfesionales = Regex.Split(strProfesionales, "##");
                    foreach (string oProf in aProfesionales)
                    {
                        if (oProf == "")
                        {
                            continue;
                        }
                        string[] aProf = Regex.Split(oProf, "//");
                        ///aProf[0] = idUsuario
                        ///aProf[1] = costecon
                        ///aProf[2] = costerep
                        ///aProf[3] = nodo_usuario
                        ///aProf[4] = empresa_nodo
                        ///aProf[5] = unidades económicas

                        CONSPERMES.Insert(tr, nSMPSN, int.Parse(aProf[0]), double.Parse(aProf[5]), decimal.Parse(aProf[1]), decimal.Parse(aProf[2]), (aProf[3] != "") ? (int?)int.Parse(aProf[3]) : null, (aProf[4] != "") ? (int?)int.Parse(aProf[4]) : null);
                    }
                }
                #endregion

                SEGMESPROYECTOSUBNODO.UpdateTraspasoIAP(tr, nSMPSN, true);

                Conexion.CommitTransaccion(tr);
                sResul = "OK@#@";
            }
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            if (!bErrorControlado)
            {
                sResul = "Error@#@" + Errores.mostrarError("Error al grabar los consumos del proyecto.", ex);
            }
            else
            {
                sResul = "Error@#@Operación rechazada.\n\n" + ex.Message;
            }
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }
예제 #5
0
    private string Traspglobal(string sSobreescribir)
    {
        string  sResul     = "";
        string  sEstadoMes = "";
        int     nSMPSN     = 0;
        DataSet dsProf     = null;

        #region abrir conexión y transacción
        try
        {
            oConn = Conexion.Abrir();
            tr    = Conexion.AbrirTransaccionSerializable(oConn);
        }
        catch (Exception ex)
        {
            if (oConn.State == ConnectionState.Open)
            {
                Conexion.Cerrar(oConn);
            }
            sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex);
            return(sResul);
        }
        #endregion
        try
        {
            DataSet ds = CONSPERMES.ObtenerPSNaTraspasarDS((int)Session["UsuarioActual"]);
            foreach (DataRow oPSN in ds.Tables[0].Rows)
            {
                if (PROYECTOSUBNODO.ObtenerUltCierreEcoNodoPSN(tr, (int)oPSN["t305_idproyectosubnodo"]) >= (int)oPSN["annomes_traspaso"])
                {
                    Conexion.CerrarTransaccion(tr);
                    sResul = "Error@#@" + Errores.mostrarError("No se ha realizado el traspaso, debido a que el " + Estructura.getDefLarga(Estructura.sTipoElem.NODO) + " '" + oPSN["t303_denominacion"].ToString() + "' se encuentra cerrado en el mes a traspasar.");
                    break;
                }
                else
                {
                    nSMPSN = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, (int)oPSN["t305_idproyectosubnodo"], (int)oPSN["annomes_traspaso"]);
                    if (nSMPSN == 0)
                    {
                        if (oPSN["tiene_consumos"].ToString() == "1")
                        {
                            sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, (int)oPSN["t305_idproyectosubnodo"], (int)oPSN["annomes_traspaso"]);
                            if (sEstadoMes == "C")
                            {
                                continue;
                            }

                            nSMPSN = SEGMESPROYECTOSUBNODO.Insert(tr, (int)oPSN["t305_idproyectosubnodo"], (int)oPSN["annomes_traspaso"], sEstadoMes, 0, 0, false, 0, 0);
                        }
                    }
                    else
                    {
                        SEGMESPROYECTOSUBNODO oSegMes = SEGMESPROYECTOSUBNODO.Obtener(tr, nSMPSN, null);
                        if (oSegMes.t325_estado == "C")
                        {
                            continue;
                        }

                        if (sSobreescribir == "1")
                        {
                            CONSPERMES.DeleteByT325_idsegmesproy(tr, nSMPSN);
                        }
                    }

                    #region Datos Profesionales
                    if (oPSN["tiene_consumos"].ToString() == "1") //si tiene consumos técnicos (IAP)
                    {
                        dsProf = CONSPERMES.ObtenerDatosPSNaTraspasarDS(tr, (int)oPSN["t305_idproyectosubnodo"], (int)oPSN["annomes_traspaso"], oPSN["t301_modelocoste"].ToString(), true, (sSobreescribir == "1")? false:true);
                        foreach (DataRow oProf in dsProf.Tables[0].Rows)
                        {
                            double nUnidades = (oPSN["t301_modelocoste"].ToString() == "J") ? double.Parse(oProf["jornadas_adaptadas"].ToString()) : double.Parse(oProf["horas_reportadas_proy"].ToString());
                            if (nUnidades != 0)
                            {
                                CONSPERMES.Insert(tr, nSMPSN,
                                                  (int)oProf["t314_idusuario"],
                                                  (oPSN["t301_modelocoste"].ToString() == "J") ? double.Parse(oProf["jornadas_adaptadas"].ToString()) : double.Parse(oProf["horas_reportadas_proy"].ToString()),
                                                  decimal.Parse(oProf["t330_costecon"].ToString()),
                                                  decimal.Parse(oProf["t330_costerep"].ToString()),
                                                  (oProf["t303_idnodo"] != DBNull.Value)? (int?)oProf["t303_idnodo"]:null,
                                                  (oProf["t313_idempresa"] != DBNull.Value)? (int?)oProf["t313_idempresa"]:null);
                            }
                        }
                        dsProf.Dispose();
                    }

                    #endregion

                    SEGMESPROYECTOSUBNODO.UpdateTraspasoIAP(tr, nSMPSN, true);
                }
            }

            ds.Dispose();

            Conexion.CommitTransaccion(tr);
            sResul = "OK@#@";
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            sResul = "Error@#@" + Errores.mostrarError("Error al realizar el traspaso global.", ex);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }
예제 #6
0
    private string Procesar(string sMesValor, string strNodos)
    {
        string sResul     = "";
        string sEstadoMes = "";

        try
        {
            #region abrir conexión y transacción
            try
            {
                oConn = Conexion.Abrir();
                tr    = Conexion.AbrirTransaccionSerializable(oConn);
            }
            catch (Exception ex)
            {
                if (oConn.State == ConnectionState.Open)
                {
                    Conexion.Cerrar(oConn);
                }
                sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex);
                return(sResul);
            }
            #endregion

            DataSet ds = PROYECTOSUBNODO.ObtenerSegMesGastosFinancierosDS(tr, int.Parse(sMesValor), strNodos);
            foreach (DataRow oSegMes in ds.Tables[0].Rows)
            {
                try
                {
                    if (oSegMes["t325_idsegmesproy"].ToString() != "")
                    {
                        SEGMESPROYECTOSUBNODO.UpdateGastosFinancieros(tr, (int)oSegMes["t325_idsegmesproy"], decimal.Parse(oSegMes["gasto_financiero"].ToString()));
                    }
                    else
                    {
                        if (decimal.Parse(oSegMes["gasto_financiero"].ToString()) != 0)
                        {
                            sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, (int)oSegMes["t305_idproyectosubnodo"], int.Parse(sMesValor));
                            SEGMESPROYECTOSUBNODO.Insert(tr, (int)oSegMes["t305_idproyectosubnodo"], int.Parse(sMesValor), sEstadoMes, 0, decimal.Parse(oSegMes["gasto_financiero"].ToString()), false, 0, 0);
                        }
                    }
                }
                catch (Exception exup)
                {
                    if (((SqlException)exup).Number == 2601)
                    {
                        SEGMESPROYECTOSUBNODO.UpdateGastosFinancierosByPSNAnomes(tr, (int)oSegMes["t305_idproyectosubnodo"], int.Parse(sMesValor), decimal.Parse(oSegMes["gasto_financiero"].ToString()));
                    }
                    else
                    {
                        throw (new Exception("Error al registrar los gastos financieros."));
                    }
                }
            }
            ds.Dispose();

            string[] aNodos = Regex.Split(strNodos, ",");
            foreach (string oNodo in aNodos)
            {
                if (oNodo == "")
                {
                    continue;
                }
                NODO objNodoAux = NODO.Select(tr, int.Parse(oNodo));
                HISTORIALGASTOSFINANCIEROS.Insert(tr, int.Parse(oNodo), int.Parse(sMesValor), DateTime.Now, objNodoAux.t303_interesGF, int.Parse(Session["NUM_EMPLEADO_ENTRADA"].ToString()));
            }

            Conexion.CommitTransaccion(tr);

            sResul = "OK";
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            sResul = "Error@#@" + Errores.mostrarError("Error al registrar los gastos financieros de un " + Estructura.getDefLarga(Estructura.sTipoElem.NODO) + ".", ex, false);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }
예제 #7
0
    protected string Grabar(string strDatos)
    {
        string sResul           = "";
        int    sSegMesProy      = 0;
        string sEstadoMes       = "";
        bool   bErrorControlado = false;
        double dUnidades        = 0;
        double?dUnidadesBD      = 0;

        #region apertura de conexión y transacción
        try
        {
            oConn = Conexion.Abrir();
            tr    = Conexion.AbrirTransaccionSerializable(oConn);
        }
        catch (Exception ex)
        {
            sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex);
            return(sResul);
        }
        #endregion

        try
        {
            string[] aConsumo = Regex.Split(strDatos, "///");
            foreach (string oConsumo in aConsumo)
            {
                if (oConsumo == "")
                {
                    continue;
                }
                string[] aValores = Regex.Split(oConsumo, "##");

                //0. Opcion BD. "I", "U", "D"
                //1. AnnoMes
                //2. ID usuario
                //3. Coste
                //4. Unidades
                //5. Costerep
                //6. idempresa_nodomes
                //7. Nodo

                nPSN        = int.Parse(Request.QueryString["nPSN"].ToString());
                sSegMesProy = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, nPSN, int.Parse(aValores[1]));
                if (sSegMesProy == 0)
                {
                    sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, nPSN, int.Parse(aValores[1]));
                    if (sEstadoMes == "C")
                    {
                        bErrorControlado = true;
                        throw (new Exception("Durante su intervención en la pantalla, otro usuario ha eliminado el año/mes: " + aValores[1]));
                    }
                    sSegMesProy = SEGMESPROYECTOSUBNODO.Insert(tr, nPSN, int.Parse(aValores[1]), sEstadoMes, 0, 0, false, 0, 0);
                }
                else
                {
                    SEGMESPROYECTOSUBNODO oSegMes = SEGMESPROYECTOSUBNODO.Obtener(tr, nPSN, int.Parse(aValores[1]), Request.QueryString["sMoneda"].ToString());
                    if (oSegMes.t325_estado == "C")
                    {
                        bErrorControlado = true;
                        throw (new Exception("Durante su intervención en la pantalla, otro usuario ha cerrado el año/mes: " + aValores[1]));
                    }
                    else
                    {
                        sSegMesProy = oSegMes.t325_idsegmesproy;
                    }
                }
                dUnidades = double.Parse(aValores[4]);
                if (dUnidades == 0)
                {
                    CONSPERMES.Delete(tr, sSegMesProy, int.Parse(aValores[2]));
                }
                else
                {                            //Si existe en BBDD, updateo, sino, inserto
                    dUnidadesBD = CONSPERMES.GetUnidades(tr, sSegMesProy, int.Parse(aValores[2]));
                    if (dUnidadesBD == null) //No existe registro -> lo insertamos
                    {
                        int?nEmpresa = null;
                        if (aValores[6] != "")
                        {
                            nEmpresa = int.Parse(aValores[6]);
                        }
                        int?nNodo = null;
                        if (aValores[7] != "")
                        {
                            nNodo = int.Parse(aValores[7]);
                        }
                        CONSPERMES.Insert(tr, sSegMesProy, int.Parse(aValores[2]), dUnidades, decimal.Parse(aValores[3]), decimal.Parse(aValores[5]), nNodo, nEmpresa);
                    }
                    else
                    {//El registro ya existe, solo updateamos si el valor es diferente
                        if (dUnidades != dUnidadesBD)
                        {
                            CONSPERMES.UpdateUnidades(tr, sSegMesProy, int.Parse(aValores[2]), dUnidades);
                        }
                    }
                }
            }
            Conexion.CommitTransaccion(tr);
            sResul = "OK@#@";
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            if (!bErrorControlado)
            {
                sResul = "Error@#@" + Errores.mostrarError("Error al grabar los consumos de los profesionales.", ex);
            }
            else
            {
                sResul = "Error@#@Operación rechazada.\n\n" + ex.Message;
            }
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }

        return(sResul);
    }
예제 #8
0
    private string procesarCierre(string sOrigen, string sAnomesADM, string sPSN, string sCualidad, string sSegMesProy, string sIDProyecto, string sAnomes, string sIdSegMesProy)
    {
        string  sResul = "";
        string  sEstadoMes = "";
        bool    bReintentar = true, bHayQueAjustar = false;
        decimal nImporteAjuste = 0;

        #region apertura de conexión y transacción
        try
        {
            oConn = Conexion.Abrir();
            tr    = Conexion.AbrirTransaccionSerializable(oConn);
        }
        catch (Exception ex)
        {
            if (oConn.State == ConnectionState.Open)
            {
                Conexion.Cerrar(oConn);
            }
            sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex);
            return(sResul);
        }
        #endregion

        try
        {
            //comprobar que no se hayan abierto meses anteriores.
            if (sOrigen == "ADM" || int.Parse(sAnomes) == PROYECTOSUBNODO.ObtenerPrimerMesAbierto(tr, int.Parse(sPSN)))
            {
                if (sCualidad == "C")
                {
                    SEGMESPROYECTOSUBNODO.GenerarMesEnTransaccion(tr, int.Parse(sIDProyecto));

                    SqlDataReader dr = SEGMESPROYECTOSUBNODO.ObtenerAjuste(tr, int.Parse(sSegMesProy));
                    if (dr.Read())
                    {
                        bHayQueAjustar = ((int)dr["ajuste"] == 1) ? true : false;
                        nImporteAjuste = decimal.Parse(dr["Importe_Ajuste"].ToString());
                    }
                    dr.Close();
                    dr.Dispose();

                    if (bHayQueAjustar)
                    {
                        //buscar el mes máximo para ese PSN y crear uno posterior para el ajuste
                        int nUltAnomes = PROYECTOSUBNODO.ObtenerUltimoMes(tr, int.Parse(sPSN));
                        sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, int.Parse(sPSN), Fechas.AddAnnomes(nUltAnomes, 1));
                        int nNuevoSegMes = SEGMESPROYECTOSUBNODO.Insert(tr, int.Parse(sPSN), Fechas.AddAnnomes(nUltAnomes, 1), sEstadoMes, 0, 0, false, 0, 0);

                        DATOECO.Insert(tr, nNuevoSegMes, Constantes.AjusteProdCont, "Ajuste de producción y contratación", nImporteAjuste, null, null, null);
                    }
                }

                if (sOrigen == "ADM")
                {
                    SEGMESPROYECTOSUBNODO.CerrarMesADM(tr, int.Parse(sPSN), int.Parse(sAnomesADM));
                }
                else
                {
                    SEGMESPROYECTOSUBNODO.Cerrar(tr, int.Parse(sSegMesProy));
                }

                sResul = "OK@#@";
            }
            else
            {
                sResul = "OK@#@NO";
            }

            Conexion.CommitTransaccion(tr);

            if ((bool)Session["ALERTASPROY_ACTIVAS"] && sIdSegMesProy != "")
            {
                try
                {
                    sIdSegMesProyGenerarDialogos = sIdSegMesProy;
                    ThreadStart ts           = new ThreadStart(GenerarDialogos);
                    Thread      workerThread = new Thread(ts);
                    workerThread.Start();
                    //SEGMESPROYECTOSUBNODO.GenerarDialogosDeAlertas(sIdSegMesProy);
                }
                catch (Exception) { }
            }
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            sResul = "Error@#@" + Errores.mostrarError("Error al procesar el cierre.", ex, bReintentar);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }

        return(sResul);
    }
예제 #9
0
    private string procesarOF(string sAnomes, string strDatos)
    {
        string sResul     = "";
        string sEstadoMes = "";
        int    nSMP       = 0;

        #region abrir conexión y transacción
        try
        {
            oConn = Conexion.Abrir();
            tr    = Conexion.AbrirTransaccion(oConn);
        }
        catch (Exception ex)
        {
            if (oConn.State == ConnectionState.Open)
            {
                Conexion.Cerrar(oConn);
            }
            return("Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex));
        }
        #endregion

        try
        {
            string[] aOrdenes = Regex.Split(strDatos, "///");

            foreach (string oOrden in aOrdenes)
            {
                if (oOrden == "")
                {
                    continue;
                }

                //0. t376_iddatoeco
                //1. t325_idsegmesproy
                //2. t305_idproyectosubnodo
                //3. Opcion: B -> Borrado, D -> Decalaje

                string[] aValores = Regex.Split(oOrden, "##");
                if (aValores[3] == "B")
                {
                    DATOECO.Delete(tr, int.Parse(aValores[0]));
                }
                else
                {
                    //1º Obtener el siguiente idsegmesproy al actual.
                    nSMP = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, int.Parse(aValores[2]), Fechas.AddAnnomes(int.Parse(sAnomes), 1));
                    if (nSMP == 0)
                    {
                        sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, int.Parse(aValores[2]), Fechas.AddAnnomes(int.Parse(sAnomes), 1));
                        nSMP       = SEGMESPROYECTOSUBNODO.Insert(tr, int.Parse(aValores[2]), Fechas.AddAnnomes(int.Parse(sAnomes), 1), sEstadoMes, 0, 0, false, 0, 0);
                    }
                    DATOECO.UpdateDecalaje(tr, int.Parse(aValores[0]), nSMP);
                }
            }

            Conexion.CommitTransaccion(tr);

            sResul = "OK@#@";
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            sResul = "Error@#@" + Errores.mostrarError("Error al grabar los datos de avance", ex);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }
    private string Procesar()
    {
        string sResul  = "";
        int    iNumLin = 1;

        try
        {
            oProyectoSubNodo = null;
            DataSet ds = AddDATAECO.ValidarTabla();

            htProyectoSubNodo = new Hashtable();
            foreach (DataRow dsProyectoSubNodo in ds.Tables[0].Rows)            //Recorro tabla de proyectos-subnodos
            {
                htProyectoSubNodo.Add(dsProyectoSubNodo["t301_idproyecto"].ToString() + @"/" + dsProyectoSubNodo["t303_idnodo"].ToString(), new ProyectoSubNodo((int)dsProyectoSubNodo["t301_idproyecto"],
                                                                                                                                                                (int)dsProyectoSubNodo["t305_idproyectosubnodo"],
                                                                                                                                                                (int)dsProyectoSubNodo["t303_idnodo"],
                                                                                                                                                                dsProyectoSubNodo["t305_cualidad"].ToString()
                                                                                                                                                                )
                                      );
            }

            #region Abro transaccion
            try
            {
                oConn = Conexion.Abrir();
                tr    = Conexion.AbrirTransaccion(oConn);
            }
            catch (Exception ex)
            {
                if (oConn.State == ConnectionState.Open)
                {
                    Conexion.Cerrar(oConn);
                }
                sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex);
                return(sResul);
            }
            #endregion

            string sEstadoMes  = "";
            int    nSegMesProy = 0;

            SqlDataReader dr = AddDATAECO.Catalogo();
            while (dr.Read())
            {
                oProyectoSubNodo = (ProyectoSubNodo)htProyectoSubNodo[dr["t301_idproyecto"].ToString() + "/" + dr["t303_idnodo"].ToString()];
                if (oProyectoSubNodo != null)
                {
                    nSegMesProy = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, oProyectoSubNodo.t305_idproyectosubnodo, (int)dr["t325_anomes"]);
                    if (nSegMesProy == 0)
                    {
                        sEstadoMes  = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, oProyectoSubNodo.t305_idproyectosubnodo, (int)dr["t325_anomes"]);
                        nSegMesProy = SEGMESPROYECTOSUBNODO.Insert(tr, oProyectoSubNodo.t305_idproyectosubnodo, (int)dr["t325_anomes"], sEstadoMes, 0, 0, false, 0, 0);
                    }

                    int?iNodoDestino = null;
                    if (dr["t303_idnodo_destino"] != DBNull.Value)
                    {
                        iNodoDestino = (int)dr["t303_idnodo_destino"];
                    }

                    int?iProvedor = null;
                    if (dr["t315_idproveedor"] != DBNull.Value)
                    {
                        iProvedor = (int)dr["t315_idproveedor"];
                    }

                    DATOECO.Insert(tr, nSegMesProy, (int)dr["t329_idclaseeco"], dr["t376_motivo"].ToString(), (decimal)dr["t376_importe"], iNodoDestino, iProvedor, Constantes.FicheroDatos);
                }
                else
                {
                    string sMsg = "No existe un proyectosubnodo correspondiente al proyecto " + dr["t301_idproyecto"].ToString() + " y al " + Estructura.getDefCorta(Estructura.sTipoElem.NODO) + " " + dr["t303_idnodo"].ToString() + ".";
                    dr.Close();
                    dr.Dispose();
                    throw new Exception(sMsg);
                }
                iNumLin++;
            }
            dr.Close();
            dr.Dispose();

            sResul = "OK@#@";
            Conexion.CommitTransaccion(tr);
        }
        catch (Exception ex)
        {
            sResul = "Error@#@" + Errores.mostrarError("Error al procesar el fichero en la línea " + iNumLin.ToString(), ex);
            Conexion.CerrarTransaccion(tr);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }
    private string Procesar()
    {
        string sResul = "", lin = "", sLin = "";
        int    iNumLin = 1;

        try
        {
            CargarArrayHT();

            #region Apertura de conexión y transacción
            try
            {
                oConn = Conexion.Abrir();
                tr    = Conexion.AbrirTransaccion(oConn);
            }
            catch (Exception ex)
            {
                if (oConn.State == ConnectionState.Open)
                {
                    Conexion.Cerrar(oConn);
                }
                sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex);
                return(sResul);
            }
            #endregion
            //Leo el fichero de base de datos
            FICHEROSMANIOBRA oFic = FICHEROSMANIOBRA.Select(tr, Constantes.FicheroDatos);
            if (oFic.t447_fichero.Length > 0)
            {
                #region Leer fichero de BBDD
                MemoryStream mstr = new MemoryStream(oFic.t447_fichero);
                mstr.Seek(0, SeekOrigin.Begin);
                int    count     = 0;
                byte[] byteArray = new byte[mstr.Length];
                while (count < mstr.Length)
                {
                    byteArray[count++] = System.Convert.ToByte(mstr.ReadByte());
                }
                lin = FromASCIIByteArray(byteArray);
                //lin = FromUnicodeByteArray(byteArray);
                #endregion

                string[]     aArgs         = Regex.Split(lin, "\r\n");
                DesdeFichero oDesdeFichero = null;

                string sEstadoMes  = "";
                int    nSegMesProy = 0;

                for (int iLinea = 0; iLinea < aArgs.Length - 1; iLinea++)
                {
                    if (aArgs[iLinea] != "")
                    {
                        sLin    = aArgs[iLinea];
                        iNumLin = iLinea + 1;

                        oDesdeFichero = validarLinea(DesdeFichero.getFila(sLin));
                        int?iProveedor = null;
                        if (oDesdeFichero.t315_idproveedor != 0)
                        {
                            iProveedor = oDesdeFichero.t315_idproveedor;
                        }

                        int?iNodoDestino = null;
                        if (oDesdeFichero.t303_idnododestino != 0)
                        {
                            iNodoDestino = oDesdeFichero.t303_idnododestino;
                        }

                        nSegMesProy = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, oDesdeFichero.t305_idproyectosubnodo, (int)oDesdeFichero.t325_annomes);
                        if (nSegMesProy == 0)
                        {
                            sEstadoMes  = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, oDesdeFichero.t305_idproyectosubnodo, (int)oDesdeFichero.t325_annomes);
                            nSegMesProy = SEGMESPROYECTOSUBNODO.Insert(tr, oDesdeFichero.t305_idproyectosubnodo, (int)oDesdeFichero.t325_annomes, sEstadoMes, 0, 0, false, 0, 0);
                        }

                        DATOECO.Insert(tr, nSegMesProy, oDesdeFichero.t329_idclaseeco, oDesdeFichero.t376_motivo, (decimal)oDesdeFichero.t376_importe, (oDesdeFichero.t329_necesidad == "N") ? iNodoDestino : null, (oDesdeFichero.t329_necesidad == "P") ? iProveedor : null, Constantes.FicheroDatos, oDesdeFichero.t422_idmoneda);
                    }
                }
            }
            sResul = "OK@#@";
            Conexion.CommitTransaccion(tr);
        }
        catch (Exception ex)
        {
            //Errores.mostrarError("Error al tramitar el fichero", ex);
            sResul = "Error@#@" + Errores.mostrarError("Error al procesar el fichero en la línea " + iNumLin.ToString() + " : " + sLin, ex);
            Conexion.CerrarTransaccion(tr);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }
예제 #12
0
    protected string procesar(string sAnomesProceso, string sCadena)
    {
        string sResul = "OK@#@";
        string sEstadoMes = "";
        int    iNumLin = 1, iAnomes;
        int    it325_idsegmesproy, iClaseEco;

        #region abrir conexión y transacción
        try
        {
            oConn = Conexion.Abrir();
            tr    = Conexion.AbrirTransaccion(oConn);
        }
        catch (Exception ex)
        {
            if (oConn.State == ConnectionState.Open)
            {
                Conexion.Cerrar(oConn);
            }
            return("Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex));
        }
        #endregion
        try
        {
            SqlDataReader dr = INTERFACTSAP.Catalogo();
            iAnomes = int.Parse(sAnomesProceso);
            ArrayList slProyPP = new ArrayList();

            while (dr.Read())
            {
                if (sCadena.IndexOf("##" + iNumLin.ToString() + "##") == -1)
                {
                    it325_idsegmesproy = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, (int)dr["t305_idproyectosubnodo"], iAnomes);
                    if (it325_idsegmesproy == 0)
                    {
                        sEstadoMes         = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, (int)dr["t305_idproyectosubnodo"], iAnomes);
                        it325_idsegmesproy = SEGMESPROYECTOSUBNODO.Insert(tr, (int)dr["t305_idproyectosubnodo"], iAnomes, sEstadoMes, 0, 0, false, 0, 0);
                    }

                    if ((bool)dr["t445_grupo"])
                    {
                        //if ((bool)dr["t445_ute"]) iClaseEco = Constantes.IngExtServProf;
                        //else iClaseEco = Constantes.IngExtServProfGrupo;
                        iClaseEco = Constantes.IngExtServProfGrupo;
                    }
                    else
                    {
                        iClaseEco = Constantes.IngExtServProf;
                    }

                    DATOECO.InsertFactura(tr, it325_idsegmesproy, iClaseEco,
                                          dr["t445_descri"].ToString(),
                                          decimal.Parse(dr["t445_imp_fact"].ToString()),
                                          null,
                                          null,
                                          DateTime.Parse(dr["t445_fec_fact"].ToString()),
                                          dr["t445_serie"].ToString(),
                                          int.Parse(dr["t445_numero"].ToString()),
                                          int.Parse(dr["t313_idempresa"].ToString()),
                                          int.Parse(dr["t302_idcliente"].ToString()),
                                          Constantes.FicheroFacturasSAP,
                                          dr["t445_refcliente"].ToString());

                    INTERFACTSAP.Delete(tr, (int)dr["t445_id"]);
                    if (dr["t301_estado"].ToString() == "P")
                    {
                        ponerProyPP(int.Parse(dr["t301_idproyecto"].ToString()).ToString("#,###"), slProyPP);
                    }
                }
                iNumLin++;
            }
            dr.Close();
            dr.Dispose();

            Conexion.CommitTransaccion(tr);
            //sResul = "OK@#@";
            //sResul = ObtenerTiposAsunto("3", "0");
            //genero cadena con los proyectos en estado Presupuestado
            foreach (string sProy in slProyPP)
            {
                sResul += sProy + "##";
            }

            sResul += "@#@" + cabErrores() + "</table>@#@" + INTERFACTSAP.numFacturas(null).ToString("#,##0");
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            sResul = "Error@#@" + Errores.mostrarError("Error al procesar", ex);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }