Пример #1
0
    private void ObtenerDatosTarea()
    {
        ITEMSPLANTILLA o = ITEMSPLANTILLA.Select(null, nIdTarea);

        txtIdTarea.Text      = o.t339_iditems.ToString("#,###");
        txtDesTarea.Text     = o.t339_desitem;
        this.hdnTipo.Text    = o.t339_tipoitem;
        this.hdnMargen.Text  = o.t339_margen.ToString();
        this.hdnIdPlant.Text = o.t338_idplantilla.ToString();
        if (o.t339_avanceauto)
        {
            this.chkAvance.Checked = true;
        }
        else
        {
            this.chkAvance.Checked = false;
        }
        if (o.t339_obligaest)
        {
            this.chkObliga.Checked = true;
        }
        else
        {
            this.chkObliga.Checked = false;
        }
        if (o.t339_facturable)
        {
            chkFacturable.Checked = true;
        }
        hdnOrden.Text = o.t339_orden.ToString();
        gsTipoPlant   = o.tipoPlant.ToString();
    }
Пример #2
0
    private string GrabarComo(string sDesPlant, string sAmbito, string sIdPlantOrigen, string sOrigen, string sTipo, string sNodo,
                              string sEmp, string sDep, string sPer)
    {
        string         sResul = "";
        int            iPromotor = int.Parse(Session["IDFICEPI_PC_ACTUAL"].ToString()), idPlantOrigen, idPlantDestino;
        SqlConnection  oConn = null;
        SqlTransaction tr    = null;

        try
        {
            //Cargo los datos de la plantilla actual
            idPlantOrigen = int.Parse(sIdPlantOrigen);
            PlantProy miPlant = new PlantProy();
            miPlant.Obtener(idPlantOrigen);
            //Abro transaccion serializable
            oConn = Conexion.Abrir();
            tr    = Conexion.AbrirTransaccionSerializable(oConn);

            if (sAmbito == "")
            {
                sAmbito = miPlant.ambito;
            }
            if (sAmbito != "D")
            {
                miPlant.codune = -1;
            }
            idPlantDestino = PlantProy.Insertar(tr, miPlant.tipo, Utilidades.unescape(sDesPlant), 1, sAmbito, iPromotor, miPlant.codune, miPlant.obs);

            ITEMSPLANTILLA.Duplicar(tr, idPlantOrigen, idPlantDestino);

            Conexion.CommitTransaccion(tr);
            //Recargo el desglose
            //sResul = "OK@#@" + obtenerPlantillas(inodo, sorigen, true);
            sResul = Buscar("1", "0", sTipo, sOrigen, sNodo, sEmp, sDep, sPer, true);
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            sResul = "Error@#@" + Errores.mostrarError("Error al grabar el desglose de la plantilla", ex);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }
Пример #3
0
    protected string Grabar(string strDatosItem, string strDatosAE, string strDatosApertura)
    {
        string sResul = "";

        #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);
            }
            sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex);
            return(sResul);
        }
        #endregion
        try
        {
            #region datos Item plantilla
            string[] aDatosTarea = Regex.Split(strDatosItem, "##");
            ///aDatosTarea[0] = ID item plantilla;
            ///aDatosTarea[1] = Tipo item;
            ///aDatosTarea[2] = Des. item;
            ///aDatosTarea[3] = margen;
            ///aDatosTarea[4] = orden;
            ///aDatosTarea[5] = ID plantilla;
            ///aDatosTarea[6] = Facturable o no (1 / 0);
            ///aDatosTarea[7] = Avence automatico o no (1 / 0);
            ///aDatosTarea[8] = Obliga estimación ;

            bool bFacturable = false, bAvanceAuto = false, bObligaEst = false;
            if (aDatosTarea[6] == "1")
            {
                bFacturable = true;
            }
            if (aDatosTarea[7] == "1")
            {
                bAvanceAuto = true;
            }
            if (aDatosTarea[8] == "1")
            {
                bObligaEst = true;
            }
            ITEMSPLANTILLA.Update(tr,
                                  int.Parse(aDatosTarea[0]),           //ID item plantilla;
                                  aDatosTarea[1],                      //TIPO de item
                                  Utilidades.unescape(aDatosTarea[2]), //Des. item;
                                  byte.Parse(aDatosTarea[3]),          //margen
                                  short.Parse(aDatosTarea[4]),         //orden
                                  int.Parse(aDatosTarea[5]),           //ID plantilla;
                                  bFacturable, bAvanceAuto, bObligaEst);
            #endregion

            #region datos Atributos Estadísticos

            string[] aAE = Regex.Split(strDatosAE, "///");

            foreach (string oAE in aAE)
            {
                string[] aValores = Regex.Split(oAE, "##");
                switch (aValores[0])
                {
                case "I":
                    AEITEMSPLANTILLA.Insert(tr, int.Parse(aValores[1]), int.Parse(aValores[3]));
                    break;

                case "U":
                    AEITEMSPLANTILLA.Update(tr, int.Parse(aValores[1]), int.Parse(aValores[3]));
                    break;

                case "D":
                    AEITEMSPLANTILLA.Delete(tr, int.Parse(aValores[1]), int.Parse(aValores[3]));
                    break;
                }
            }

            #endregion

            Conexion.CommitTransaccion(tr);

            sResul = "OK@#@" + DateTime.Now.ToString() + "@#@" + Session["NUM_EMPLEADO_ENTRADA"].ToString() + "@#@" + Session["DES_EMPLEADO_ENTRADA"].ToString();
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            sResul = "Error@#@" + Errores.mostrarError("Error al grabar los datos del elemento", ex);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }
    private string Grabar(string sIdPlant, string sCadena, string sHitosEspeciales)
    {/*En el parametro de entrada tenemos en primer lugar el codigo de la plantilla
      * y luego una lista de elementos del tipo sEstado@#@sTipo@#@sDes@#@sCodigo@#@sOrden@#@sMargen@#@sFacturable@#@avance@#@obligaest##
      */
        string         sCad, sTipo, sDesc, sResul = "", sEstado = "N", sCadenaBorrado = "", sTipoPlant, sAux;
        int            iPos, iTarea = -1, iAux = -1, iCodigo = -1, iHito = -1, iMargen = 0;
        short          iOrden = 0, iOrdenAnt = 0;
        bool           bFacturable, bAvance, bObliga;
        SqlConnection  oConn = null;
        SqlTransaction tr    = null;

        #region Control para comprobar que la estructura no ha variado desde que se ha leido.
        SqlConnection  oConn2 = null;
        SqlTransaction tr2    = null;
        try
        {
            oConn2 = Conexion.Abrir();
            tr2    = Conexion.AbrirTransaccion(oConn2);
        }
        catch (Exception ex)
        {
            sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex);
            return(sResul);
        }

        SqlDataReader dr2 = PlantTarea.Catalogo(int.Parse(sIdPlant));
        ArrayList     aEstrOrig = (ArrayList)Session["OrdenEstructuraPlant"];
        ArrayList     aEstrActual = new ArrayList();
        string        sTipo2, sIDItem2, sOrden2;

        while (dr2.Read())
        {
            sTipo2   = dr2["Tipo"].ToString();
            sIDItem2 = dr2["t339_iditems"].ToString();
            sOrden2  = dr2["orden"].ToString();

            string[] sEstr = new string[3] {
                sOrden2, sTipo2, sIDItem2
            };
            aEstrActual.Add(sEstr);
        }
        dr2.Close();
        dr2.Dispose();

        string sMsgError = "Error@#@PSP ha detectado que durante su edición, la estructura ha variado por modificación de otro usuario.\n\nPulse \"Aceptar\" para recuperar la estructura actualizada, teniendo en cuenta que perderá los cambios realizados.\nPulsando \"Cancelar\" permanecerá en la pantalla actual sin realizar la grabación.@#@1";
        if (aEstrOrig.Count != aEstrActual.Count)
        {
            Conexion.CerrarTransaccion(tr2);
            Conexion.Cerrar(oConn2);
            return(sMsgError);
        }
        else
        {
            for (int i = 0; i < aEstrOrig.Count; i++)
            {
                if (((string[])aEstrOrig[i])[0] != ((string[])aEstrActual[i])[0] ||
                    ((string[])aEstrOrig[i])[1] != ((string[])aEstrActual[i])[1] ||
                    ((string[])aEstrOrig[i])[2] != ((string[])aEstrActual[i])[2]
                    )
                {
                    Conexion.CerrarTransaccion(tr2);
                    Conexion.Cerrar(oConn2);
                    return(sMsgError);
                }
            }
        }

        Conexion.CommitTransaccion(tr2);
        Conexion.Cerrar(oConn2);
        Session["OrdenEstructuraPlant"] = null;
        #endregion
        try
        {
            sCadenaBorrado = sIdPlant + @"//";
            //Abro transaccion
            try
            {
                oConn = Conexion.Abrir();
                tr    = Conexion.AbrirTransaccion(oConn);
            }
            catch (Exception ex)
            {
                sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex);
                return(sResul);
            }

            if (lblTipo.Text == "Proyecto económico")
            {
                sTipoPlant = "E";
            }
            else
            {
                sTipoPlant = "T";
            }
            //Obtengo una cadena solo con la lista de filas a grabar
            //estado@#@tipo@#@descripcion@#@codPT@#@sCodigo@#@sOrden@#@sMargen@#@sFacturable  @#@avance@#@obligaest
            sCad = sCadena;
            if (sCad == "")
            {//Tenemos un desglose vacío. No hacemos nada
            }
            else
            {//Con la cadena generamos una lista y la recorremos para grabar cada elemento
                string[] aTareas = Regex.Split(sCad, @"##");

                for (int i = 0; i < aTareas.Length - 1; i++)
                {
                    sCad = aTareas[i];
                    string[] aItems = Regex.Split(sCad, @"@#@");

                    sEstado = aItems[0];
                    sTipo   = aItems[1];
                    sDesc   = Utilidades.unescape(aItems[2]);
                    sAux    = aItems[3];
                    if (sAux != "")
                    {
                        iCodigo = int.Parse(sAux);
                    }
                    else
                    {
                        iCodigo = -1;
                    }
                    sAux = aItems[4];
                    if (sAux != "")
                    {
                        iOrdenAnt = short.Parse(sAux);
                    }
                    else
                    {
                        iOrdenAnt = 1;
                    }
                    sCad = aItems[5];
                    iPos = sCad.IndexOf(@"px");
                    sAux = sCad.Substring(0, iPos);
                    if (sAux != "")
                    {
                        iMargen = int.Parse(sAux);
                    }
                    else
                    {
                        iMargen = 0;
                    }
                    sCad = aItems[6];
                    if (sCad == "T")
                    {
                        bFacturable = true;
                    }
                    else
                    {
                        bFacturable = false;
                    }
                    sCad = aItems[7];
                    if (sCad == "T")
                    {
                        bAvance = true;
                    }
                    else
                    {
                        bAvance = false;
                    }
                    sCad = aItems[8];
                    if (sCad == "T")
                    {
                        bObliga = true;
                    }
                    else
                    {
                        bObliga = false;
                    }

                    //Si no ha cambiado la linea pero el orden actual es distinto del original hay que updatear la linea para actualizar el orden
                    if (iOrden != iOrdenAnt && sEstado == "N")
                    {
                        sEstado = "U";
                    }
                    if (sEstado != "D")
                    {
                        iOrden++;
                    }

                    if (sEstado == "D")
                    {
                        sCadenaBorrado += sTipo + "##" + iCodigo + @"@#@";
                    }
                    switch (sTipo)
                    {
                    case "T":
                        iTarea = iCodigo;
                        break;

                    case "H":
                        iHito = iCodigo;
                        break;
                    }
                    //Si es una plantilla de proyecto técnico no hay que grabar linea de PT
                    if ((sTipoPlant == "T") && (sTipo == "P"))
                    {
                        sEstado = "N";
                    }
                    switch (sEstado)
                    {
                    case "U":
                        ITEMSPLANTILLA.Update(tr, iCodigo, sTipo, Utilidades.unescape(sDesc), (byte)iMargen, (short)iOrden,
                                              int.Parse(sIdPlant), bFacturable, bAvance, bObliga);
                        break;

                    case "I":
                        iAux = ITEMSPLANTILLA.Insert(tr, sTipo, Utilidades.unescape(sDesc), (byte)iMargen, (short)iOrden,
                                                     int.Parse(sIdPlant), bFacturable, bAvance, bObliga);
                        break;
                    } //switch (sEstado)
                }     //for
            }
            //Elimino las filas borradas
            BorrarDesglose(tr, sCadenaBorrado, sTipoPlant);

            //Grabo los hitos especiales
            //sEstado+"##"+Utilidades.escape(sDes)+"##"+sCodigo+"##"+sOrden+"//"
            sCad = sHitosEspeciales;
            if (sCad == "")
            {//Tenemos un desglose vacío. No hacemos nada
            }
            else
            {//Con la cadena generamos una lista y la recorremos para grabar cada elemento
                string[] aTareas = Regex.Split(sCad, @"@#@");
                iOrden = 0;
                for (int i = 0; i < aTareas.Length - 1; i++)
                {
                    sCad = aTareas[i];
                    if (sCad != "")
                    {
                        string[] aElems = Regex.Split(sCad, @"##");
                        sEstado   = aElems[0];
                        sDesc     = Utilidades.unescape(aElems[1]);
                        iHito     = int.Parse(aElems[2]);
                        iOrdenAnt = short.Parse(aElems[3]);

                        if (sEstado != "D")
                        {
                            iOrden++;
                        }
                        //Si no ha cambiado la linea pero el orden actual es distinto del original hay que updatear la linea para actualizar el orden
                        if (iOrden != iOrdenAnt && sEstado == "N")
                        {
                            sEstado = "U";
                        }
                        switch (sEstado)
                        {
                        case "N":
                            break;

                        case "D":
                            HITOE_PLANT.Delete(tr, iHito);
                            break;

                        case "U":
                            HITOE_PLANT.Update(tr, iHito, sDesc, null, null, iOrden);
                            break;

                        case "I":
                            iAux = HITOE_PLANT.Insert(tr, sDesc, "", true, iOrden, int.Parse(sIdPlant));
                            break;
                        }//switch (sEstado)
                    }
                }
            }
            //Cierro transaccion
            Conexion.CommitTransaccion(tr);

            //Recargo el desglose
            ObtenerTareas(int.Parse(sIdPlant), sTipoPlant);
            ObtenerHitos(int.Parse(sIdPlant));
            //sResul = "OK@#@" + sIdPlant;
            sResul = "OK@#@" + strTablaHTMLTarea + "@#@" + strTablaHTMLHito;
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            sResul = "Error@#@" + Errores.mostrarError("Error al grabar el desglose de la plantilla", ex);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }