예제 #1
0
    protected string Grabar(string sSegMesProy, string sAvanceProd)
    {
        string sResul           = "";
        bool   bErrorControlado = false;

        #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
        {
            if (Session["ADMINISTRADOR_PC_ACTUAL"].ToString() != "SA")
            {
                SEGMESPROYECTOSUBNODO oSMPSN = SEGMESPROYECTOSUBNODO.Obtener(tr, int.Parse(sSegMesProy), null);
                if (oSMPSN.t325_estado == "C")
                {
                    bErrorControlado = true;
                    throw (new Exception("Durante su intervención en la pantalla, otro usuario ha cerrado el mes en curso."));
                }
            }

            SEGMESPROYECTOSUBNODO.UpdateAvanceProduccion(tr, int.Parse(sSegMesProy), decimal.Parse(sAvanceProd));
            Conexion.CommitTransaccion(tr);
            sResul = "OK@#@";
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            if (!bErrorControlado)
            {
                sResul = "Error@#@" + Errores.mostrarError("Error al grabar el avance de producción.", ex);
            }
            else
            {
                sResul = "Error@#@Operación rechazada.\n\n" + ex.Message;
            }
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }

        return(sResul);
    }
    protected string Grabar(string sSegMesProy, string sAvanceProd, string strDatos)
    {
        string sResul           = "";
        bool   bErrorControlado = false;

        #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
        {
            if (Session["ADMINISTRADOR_PC_ACTUAL"].ToString() != "SA")
            {
                SEGMESPROYECTOSUBNODO oSMPSN = SEGMESPROYECTOSUBNODO.Obtener(tr, int.Parse(sSegMesProy), null);
                if (oSMPSN.t325_estado == "C")
                {
                    bErrorControlado = true;
                    throw (new Exception("Durante su intervención en la pantalla, otro usuario ha cerrado el mes en curso."));
                }
            }
            //PRODUCFACTPROF.DeleteByT325_idsegmesproy(tr, int.Parse(sSegMesProy));

            string[] aProd = Regex.Split(strDatos, "///");
            foreach (string oProd in aProd)
            {
                if (oProd == "")
                {
                    continue;
                }
                string[] aValores = Regex.Split(oProd, "##");
                //0. Opcion BD. "I", "U", "D"
                //1. ID Tarea
                //2. ID usuario
                //3. ID Perfil
                //4. Unidades

                if (aValores[0] == "D")
                {
                    PRODUCFACTPROF.Delete(tr, int.Parse(sSegMesProy), int.Parse(aValores[1]), int.Parse(aValores[2]));
                }
                else
                {
                    if (aValores[3] != "")
                    {
                        PRODUCFACTPROF.UpdateInsertSiNoExiste(tr, int.Parse(sSegMesProy), int.Parse(aValores[1]),
                                                              int.Parse(aValores[2]), int.Parse(aValores[3]), double.Parse(aValores[4]));
                    }
                }
            }

            SEGMESPROYECTOSUBNODO.UpdateAvanceProduccion(tr, int.Parse(sSegMesProy), decimal.Parse(sAvanceProd));

            Conexion.CommitTransaccion(tr);
            sResul = "OK@#@";
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            if (!bErrorControlado)
            {
                string sAux = "Error al grabar la producción de los profesionales.\nsSegMesProy=" + sSegMesProy + "\nsAvanceProd=" + sAvanceProd + "\nstrDatos=" + strDatos;
                sResul = "Error@#@" + Errores.mostrarError(sAux, ex);
            }
            else
            {
                sResul = "Error@#@Operación rechazada.\n\n" + ex.Message;
            }
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }

        return(sResul);
    }
예제 #3
0
    protected string Grabar(string sSegMesProy, string sAvanceProd, string strDatos)
    {
        string sResul           = "";
        bool   bErrorControlado = false;
        double dUnidades        = 0;
        double?dUnidadesBD      = null;

        #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
        {
            if (Session["ADMINISTRADOR_PC_ACTUAL"].ToString() != "SA")
            {
                SEGMESPROYECTOSUBNODO oSMPSN = SEGMESPROYECTOSUBNODO.Obtener(tr, int.Parse(sSegMesProy), null);
                if (oSMPSN.t325_estado == "C")
                {
                    bErrorControlado = true;
                    throw (new Exception("Durante su intervención en la pantalla, otro usuario ha cerrado el mes en curso."));
                }
            }
            //PRODUCFACTPERF.DeleteByT325_idsegmesproy(tr, int.Parse(sSegMesProy));
            string[] aProd = Regex.Split(strDatos, "///");
            foreach (string oProd in aProd)
            {
                if (oProd == "")
                {
                    continue;
                }
                string[] aValores = Regex.Split(oProd, "##");
                //0. Opcion BD. "I", "U", "D"
                //1. ID Tarifa
                //2. Unidades
                //3. Importe tarifa
                dUnidades = double.Parse(aValores[2]);
                if (dUnidades == 0)
                {
                    PRODUCFACTPERF.Delete(tr, int.Parse(sSegMesProy), int.Parse(aValores[1]));
                }
                else
                {                            //Si existe en BBDD, updateo, sino, inserto
                    dUnidadesBD = PRODUCFACTPERF.GetUnidades(tr, int.Parse(sSegMesProy), int.Parse(aValores[1]));
                    if (dUnidadesBD == null) //No existe registro -> lo insertamos
                    {
                        PRODUCFACTPERF.Insert(tr, int.Parse(sSegMesProy), int.Parse(aValores[1]), decimal.Parse(aValores[3]), dUnidades);
                    }
                    else
                    {//El registro ya existe, solo updateamos si el valor es diferente
                        if (dUnidades != dUnidadesBD)
                        {
                            PRODUCFACTPERF.UpdateUnidades(tr, int.Parse(sSegMesProy), int.Parse(aValores[1]), dUnidades);
                        }
                    }
                }
            }

            SEGMESPROYECTOSUBNODO.UpdateAvanceProduccion(tr, int.Parse(sSegMesProy), decimal.Parse(sAvanceProd));
            Conexion.CommitTransaccion(tr);
            sResul = "OK@#@";
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            if (!bErrorControlado)
            {
                sResul = "Error@#@" + Errores.mostrarError("Error al grabar la producción por perfil.", ex);
            }
            else
            {
                sResul = "Error@#@Operación rechazada.\n\n" + ex.Message;
            }
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }

        return(sResul);
    }