internal int GenerarProyecto(Models.ProyectoEconomico oPE)
        {
            //try
            //{
            SqlParameter[] dbparams = new SqlParameter[13] {
                Param(enumDBFields.nom_proyecto, oPE.nom_proyecto),
                Param(enumDBFields.den_proyecto, oPE.nom_proyecto),
                Param(enumDBFields.cod_cliente, oPE.cod_cliente),
                Param(enumDBFields.cod_contrato, oPE.cod_contrato),
                Param(enumDBFields.cod_naturaleza, oPE.cod_naturaleza),
                Param(enumDBFields.modalidad, oPE.modalidad),
                Param(enumDBFields.inicio_previsto, oPE.fini_prevista),
                Param(enumDBFields.fin_previsto, oPE.ffin_prevista),
                Param(enumDBFields.categoria, oPE.categoria),
                Param(enumDBFields.modelo_costes, oPE.modelo_coste),
                Param(enumDBFields.modelo_tarifas, oPE.modelo_tarifa),
                Param(enumDBFields.automatico, oPE.automatico),
                Param(enumDBFields.fecha_sap, oPE.fecha_sap)
            };

            //return (int)cDblib.ExecuteScalar("ITZ_CREARPROYECTO", dbparams);
            int idPE = (int)cDblib.ExecuteScalar("SUP_CREARPROYECTO", dbparams);

            return(idPE);
            //}
            //catch (Exception ex)
            //{
            //    throw ex;
            //}
        }
Exemple #2
0
        /// <summary>
        /// Obtiene un NodoPT a partir del id
        /// </summary>
        internal Models.ProyectoEconomico Select(int t301_idproyecto)
        {
            Models.ProyectoEconomico oEstadoPE = null;
            IDataReader dr = null;

            try
            {
                SqlParameter[] dbparams = new SqlParameter[1] {
                    Param(enumDBFields.t301_idproyecto, t301_idproyecto)
                };

                dr = cDblib.DataReader("SUP_PROYECTO_ESTADO", dbparams);
                if (dr.Read())
                {
                    oEstadoPE             = new Models.ProyectoEconomico();
                    oEstadoPE.t301_estado = Convert.ToString(dr["t301_estado"]);
                }
                return(oEstadoPE);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (dr != null)
                {
                    if (!dr.IsClosed)
                    {
                        dr.Close();
                    }
                    dr.Dispose();
                }
            }
        }
        internal int GenerarProyectoSubnodo(Models.ProyectoEconomico oPE)
        {
            SqlParameter[] dbparams = new SqlParameter[5] {
                Param(enumDBFields.cod_proyecto, oPE.cod_proyecto),
                Param(enumDBFields.cod_subnodo, oPE.cod_subnodo),
                Param(enumDBFields.cualidad, oPE.cualidad),
                Param(enumDBFields.cod_usuario_responsable, oPE.cod_usuario_responsable),
                Param(enumDBFields.seudonimo, oPE.seudonimo)
            };

            //return (int)cDblib.ExecuteScalar("ITZ_CREARPROYECTOSUBNODO", dbparams);
            int idPSN = (int)cDblib.ExecuteScalar("SUP_CREARPROYECTOSUBNODO", dbparams);

            return(idPSN);
        }
Exemple #4
0
        public int Insert(Models.ProyectoEconomico oPE)
        {
            Guid methodOwnerID = new Guid("C2397722-CAD0-404A-B255-2D5D98F80347");

            OpenDbConn();

            if (cDblib.Transaction.ownerID.Equals(new Guid()))
            {
                cDblib.beginTransaction(methodOwnerID);
            }

            try
            {
                DAL.ProyectoEconomico cPE = new DAL.ProyectoEconomico(cDblib);

                int idPE = cPE.GenerarProyecto(oPE);

                //Finalizar transacción
                if (cDblib.Transaction.ownerID.Equals(methodOwnerID))
                {
                    cDblib.commitTransaction(methodOwnerID);
                }

                return(idPE);
            }
            catch (Exception ex)
            {
                //rollback
                //if (cDblib.Transaction.ownerID.Equals(new Guid())) cDblib.rollbackTransaction(methodOwnerID);
                if (cDblib.Transaction.ownerID.Equals(methodOwnerID))
                {
                    cDblib.rollbackTransaction(methodOwnerID);
                }
                throw ex;
            }
        }
Exemple #5
0
        /// <summary>
        /// Obtiene los proyectos económicos para el administrador
        /// </summary>
        internal List <Models.ProyectoEconomico> CatalogoAdmin(Nullable <int> idNodo, string sEstado, string sCategoria,
                                                               Nullable <int> idCliente, Nullable <int> idResponsable, Nullable <int> numPE, string sDesPE,
                                                               string sTipoBusqueda, string sCualidad, Nullable <int> nContrato, Nullable <int> nHorizontal,
                                                               Nullable <int> nCNP, Nullable <int> nCSN1P, Nullable <int> nCSN2P, Nullable <int> nCSN3P,
                                                               Nullable <int> nCSN4P, bool bMostrarJ, bool bSoloFacturables, Nullable <int> nNaturaleza,
                                                               Nullable <int> nModeloContratacion)
        {
            Models.ProyectoEconomico        oProyectoEconomico = null;
            List <Models.ProyectoEconomico> lst = new List <Models.ProyectoEconomico>();
            IDataReader dr = null;

            try
            {
                SqlParameter[] dbparams = new SqlParameter[20] {
                    Param(enumDBFields.idnodo, idNodo),
                    Param(enumDBFields.sEstado, sEstado),
                    Param(enumDBFields.sCategoria, sCategoria),
                    Param(enumDBFields.idcliente, idCliente),
                    Param(enumDBFields.idResponsable, idResponsable),
                    Param(enumDBFields.numPE, numPE),
                    Param(enumDBFields.sDesPE, sDesPE),
                    Param(enumDBFields.sTipoBusqueda, sTipoBusqueda),
                    Param(enumDBFields.sCualidad, sCualidad),
                    Param(enumDBFields.nContrato, nContrato),
                    Param(enumDBFields.nHorizontal, nHorizontal),
                    Param(enumDBFields.nCNP, nCNP),
                    Param(enumDBFields.nCSN1P, nCSN1P),
                    Param(enumDBFields.nCSN2P, nCSN2P),
                    Param(enumDBFields.nCSN3P, nCSN3P),
                    Param(enumDBFields.nCSN4P, nCSN4P),
                    Param(enumDBFields.bMostrarJ, bMostrarJ),
                    Param(enumDBFields.bSoloFacturables, bSoloFacturables),
                    Param(enumDBFields.nNaturaleza, nNaturaleza),
                    Param(enumDBFields.nModeloContratacion, nModeloContratacion)
                };

                dr = cDblib.DataReader("SUP_GETPROYECTOS_ADMIN", dbparams);
                while (dr.Read())
                {
                    oProyectoEconomico = new Models.ProyectoEconomico();
                    oProyectoEconomico.t305_idproyectosubnodo  = Convert.ToInt32(dr["t305_idproyectosubnodo"]);
                    oProyectoEconomico.t301_idproyecto         = Convert.ToInt32(dr["t301_idproyecto"]);
                    oProyectoEconomico.t301_denominacion       = Convert.ToString(dr["t301_denominacion"]);
                    oProyectoEconomico.t301_estado             = Convert.ToString(dr["t301_estado"]);
                    oProyectoEconomico.t302_idcliente_proyecto = Convert.ToInt32(dr["t302_idcliente_proyecto"]);
                    oProyectoEconomico.t302_denominacion       = Convert.ToString(dr["t302_denominacion"]);
                    oProyectoEconomico.t301_categoria          = Convert.ToString(dr["t301_categoria"]);
                    oProyectoEconomico.t305_cualidad           = Convert.ToString(dr["t305_cualidad"]);
                    oProyectoEconomico.t303_idnodo             = Convert.ToInt32(dr["t303_idnodo"]);
                    oProyectoEconomico.t303_denominacion       = Convert.ToString(dr["t303_denominacion"]);
                    oProyectoEconomico.t303_ultcierreeco       = Convert.ToInt32(dr["t303_ultcierreeco"]);
                    oProyectoEconomico.modo_lectura            = Convert.ToInt32(dr["modo_lectura"]);
                    oProyectoEconomico.rtpt      = Convert.ToInt32(dr["rtpt"]);
                    oProyectoEconomico.desmotivo = Convert.ToString(dr["desmotivo"]);
                    if (!Convert.IsDBNull(dr["Responsable"]))
                    {
                        oProyectoEconomico.responsable = Convert.ToString(dr["Responsable"]);
                    }
                    oProyectoEconomico.t422_idmoneda_proyecto = Convert.ToString(dr["t422_idmoneda_proyecto"]);

                    lst.Add(oProyectoEconomico);
                }
                return(lst);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (dr != null)
                {
                    if (!dr.IsClosed)
                    {
                        dr.Close();
                    }
                    dr.Dispose();
                }
            }
        }
Exemple #6
0
        public List <Models.ProyectoEconomico> generarContratos(List <IB.SUPER.APP.Models.OportunidadNegocio> Oportunidades)
        {
            int  iNumProys = 0, idPE = -1, idPSN = -1;
            bool bConTransaccion = false;
            Guid methodOwnerID   = new Guid("2558CB99-C43F-4930-A56C-D6F5CDE51980");
            //IB.SUPER.APP.BLL.ProyectoEconomico ProyBLL = new IB.SUPER.APP.BLL.ProyectoEconomico();
            List <Models.ProyectoEconomico> lstGenerados = new List <Models.ProyectoEconomico>();

            OpenDbConn();
            if (cDblib.Transaction.ownerID.Equals(new Guid()))
            {
                bConTransaccion = true;
            }
            if (bConTransaccion)
            {
                cDblib.beginTransaction(methodOwnerID);
            }

            BLL.Contrato oContrato            = new Contrato(cDblib);
            BLL.FIGURAPROYECTOSUBNODO oFigura = new FIGURAPROYECTOSUBNODO(cDblib);
            IB.SUPER.IAP30.BLL.Nodo   oNodo   = new IAP30.BLL.Nodo();

            try
            {
                foreach (IB.SUPER.APP.Models.OportunidadNegocio oport in Oportunidades)
                {
                    DAL.OportunidadNegocio oON = new DAL.OportunidadNegocio(cDblib);
                    #region Contrato y Extensión
                    //Si la extension==0 -> grabarcontrato
                    if (oport.t377_idextension == 0)
                    {
                        oON.GenerarContrato(oport);
                    }
                    else
                    {
                        //Compruebo que existe contrato. Si no existe, hay que darlo de alta
                        //oContrato = new Contrato(cDblib);
                        if (!oContrato.Existe(oport.t306_icontrato))
                        {
                            oON.GenerarContrato(oport.t306_icontrato, oport.t314_idusuario_responsable);
                        }
                    }
                    //La extensión se graba siempre
                    oON.GenerarExtension(oport);
                    //Si no existe proyecto asociado al contrato-> Generarlo (según parametrización puede crear 1 o 2 proyectos)
                    iNumProys = oON.GetNumProyectos(oport.t306_icontrato);


                    //PARA PRUEBAS
                    //if (bConTransaccion) cDblib.commitTransaction(methodOwnerID);

                    #endregion

                    #region Proyecto Económico
                    if (iNumProys == 0)
                    {
                        //PARA PRUEBAS
                        //if (cDblib.Transaction.ownerID.Equals(new Guid())) cDblib.beginTransaction(methodOwnerID);

                        //Obtengo el subnodo al que asociar el proyecto
                        int t304_idsubnodo = SUBNODO.GetSubNodoDefecto(oport.t303_idnodo);

                        //Obtengo datos del nodo para la creación del proyecto
                        //oNodo = new IAP30.BLL.Nodo();
                        IB.SUPER.IAP30.Models.Nodo mNodo = oNodo.Select(oport.t303_idnodo);

                        #region Cargo los datos para la generación del proyecto
                        Models.ProyectoEconomico mPE = new IB.SUPER.APP.Models.ProyectoEconomico();
                        mPE.automatico = true;
                        if (oport.t377_importeser >= oport.t377_importepro)
                        {
                            mPE.categoria = "S";
                        }
                        else
                        {
                            mPE.categoria = "P";
                        }
                        mPE.cod_cliente    = oport.t302_idcliente_contrato;
                        mPE.cod_contrato   = oport.t306_icontrato;
                        mPE.cod_naturaleza = 1;
                        mPE.fecha_sap      = DateTime.Now;

                        mPE.fini_prevista = Fechas.getSigDiaUltMesCerrado(mNodo.t303_ultcierreECO);
                        mPE.ffin_prevista = GetFechaFin(mPE.fini_prevista, oport.duracion);
                        mPE.modalidad     = GetModalidad(oport.tipocontrato.ToUpper());

                        if (mNodo.t303_modelocostes == "X")
                        {
                            mPE.modelo_coste = "J";
                        }
                        else
                        {
                            mPE.modelo_coste = mNodo.t303_modelocostes;
                        }
                        if (mNodo.t303_modelotarifas == "X")
                        {
                            mPE.modelo_tarifa = "J";
                        }
                        else
                        {
                            mPE.modelo_tarifa = mNodo.t303_modelotarifas;
                        }
                        mPE.nom_proyecto = oport.t377_denominacion;
                        #endregion
                        #region genero proyecto
                        if (mNodo.t303_desglose)
                        {
                            #region  Crea 2 proyectos
                            if (oport.t377_importepro != 0)
                            {
                                if (oport.t377_importeser != 0)
                                {
                                    mPE.nom_proyecto = "P/" + oport.t377_denominacion;
                                }
                                #region Crea un proyecto de categoria PRODUCTO
                                //idPE = ProyBLL.Insert(mPE);
                                //DAL.ProyectoEconomico cPE = new DAL.ProyectoEconomico(cDblib);
                                //idPE = cPE.GenerarProyecto(mPE);
                                idPE = oON.GenerarProyecto(mPE);

                                //Creo el proyecto subnodo
                                mPE.cod_proyecto            = idPE;
                                mPE.cod_subnodo             = t304_idsubnodo;
                                mPE.cualidad                = "P";
                                mPE.cod_usuario_responsable = mNodo.t314_idusuario_responsable;
                                mPE.seudonimo               = mPE.nom_proyecto;

                                //idPSN = cPE.GenerarProyectoSubnodo(mPE);
                                idPSN = oON.GenerarProyectoSubnodo(mPE);

                                //Asigno la figura de RTPE
                                Models.FIGURAPROYECTOSUBNODO mFigura = new Models.FIGURAPROYECTOSUBNODO();
                                mFigura.t305_idproyectosubnodo = idPSN;
                                mFigura.t310_figura            = "M";
                                mFigura.t314_idusuario         = oport.t314_idusuario_gestorprod;

                                //oFigura = new FIGURAPROYECTOSUBNODO(cDblib);
                                oFigura.Insert(mFigura);
                                #region Cargo la lista de vuelta para mostrar al usuario los proyectos generados
                                Models.ProyectoEconomico oProyectoEconomico = new Models.ProyectoEconomico();
                                oProyectoEconomico.cod_proyecto           = idPE;
                                oProyectoEconomico.nom_proyecto           = mPE.nom_proyecto;
                                oProyectoEconomico.cod_contrato           = oport.t306_icontrato;
                                oProyectoEconomico.cod_extension          = oport.t377_idextension;
                                oProyectoEconomico.t305_idproyectosubnodo = idPSN;
                                oProyectoEconomico.t301_estado            = "A";
                                oProyectoEconomico.t302_denominacion      = oport.cliente;
                                oProyectoEconomico.t301_categoria         = mPE.categoria;
                                oProyectoEconomico.t305_cualidad          = "C";
                                oProyectoEconomico.proy_responsable       = oport.responsable;

                                lstGenerados.Add(oProyectoEconomico);
                                #endregion
                                #endregion
                            }
                            if (oport.t377_importeser != 0)
                            {
                                if (oport.t377_importepro != 0)
                                {
                                    mPE.nom_proyecto = "S/" + oport.t377_denominacion;
                                }
                                #region Crea un proyecto de categoria SERVICIO
                                //DAL.ProyectoEconomico cPE = new DAL.ProyectoEconomico(cDblib);
                                //idPE = cPE.GenerarProyecto(mPE);
                                idPE = oON.GenerarProyecto(mPE);

                                //Creo el proyecto subnodo
                                mPE.cod_proyecto            = idPE;
                                mPE.cod_subnodo             = t304_idsubnodo;
                                mPE.cualidad                = "C";
                                mPE.cod_usuario_responsable = mNodo.t314_idusuario_responsable;
                                mPE.seudonimo               = mPE.nom_proyecto;

                                //idPSN = cPE.GenerarProyectoSubnodo(mPE);
                                idPSN = oON.GenerarProyectoSubnodo(mPE);

                                //Asigno la figura de RTPE
                                Models.FIGURAPROYECTOSUBNODO mFigura = new Models.FIGURAPROYECTOSUBNODO();
                                mFigura.t305_idproyectosubnodo = idPSN;
                                mFigura.t310_figura            = "M";
                                mFigura.t314_idusuario         = oport.t314_idusuario_gestorprod;

                                oFigura = new FIGURAPROYECTOSUBNODO(cDblib);
                                oFigura.Insert(mFigura);

                                #region Cargo la lista de vuelta para mostrar al usuario los proyectos generados
                                Models.ProyectoEconomico oProyectoEconomico = new Models.ProyectoEconomico();
                                oProyectoEconomico.cod_proyecto           = idPE;
                                oProyectoEconomico.nom_proyecto           = mPE.nom_proyecto;
                                oProyectoEconomico.cod_contrato           = oport.t306_icontrato;
                                oProyectoEconomico.cod_extension          = oport.t377_idextension;
                                oProyectoEconomico.t305_idproyectosubnodo = idPSN;
                                oProyectoEconomico.t301_estado            = "A";
                                oProyectoEconomico.t302_denominacion      = oport.cliente;
                                oProyectoEconomico.t301_categoria         = mPE.categoria;
                                oProyectoEconomico.t305_cualidad          = "C";
                                oProyectoEconomico.proy_responsable       = oport.responsable;
                                #endregion
                                #endregion
                            }

                            #endregion
                        }
                        else
                        {
                            #region Crea un proyecto
                            //DAL.ProyectoEconomico cPE = new DAL.ProyectoEconomico(cDblib);
                            //idPE = cPE.GenerarProyecto(mPE);
                            idPE = oON.GenerarProyecto(mPE);
                            //Creo el proyecto subnodo
                            mPE.cod_proyecto            = idPE;
                            mPE.cod_subnodo             = t304_idsubnodo;
                            mPE.cualidad                = "C";
                            mPE.cod_usuario_responsable = mNodo.t314_idusuario_responsable;
                            mPE.seudonimo               = mPE.nom_proyecto;

                            //idPSN = cPE.GenerarProyectoSubnodo(mPE);
                            idPSN = oON.GenerarProyectoSubnodo(mPE);

                            //Asigno la figura de RTPE
                            Models.FIGURAPROYECTOSUBNODO mFigura = new Models.FIGURAPROYECTOSUBNODO();
                            mFigura.t305_idproyectosubnodo = idPSN;
                            mFigura.t310_figura            = "M";
                            mFigura.t314_idusuario         = oport.t314_idusuario_gestorprod;

                            oFigura = new FIGURAPROYECTOSUBNODO(cDblib);
                            oFigura.Insert(mFigura);

                            #region Cargo la lista de vuelta para mostrar al usuario los proyectos generados
                            Models.ProyectoEconomico oProyectoEconomico = new Models.ProyectoEconomico();
                            oProyectoEconomico.cod_proyecto             = idPE;
                            oProyectoEconomico.nom_proyecto             = mPE.nom_proyecto;
                            oProyectoEconomico.cod_contrato             = oport.t306_icontrato;
                            oProyectoEconomico.cod_extension            = oport.t377_idextension;
                            oProyectoEconomico.t305_idproyectosubnodo   = idPSN;
                            oProyectoEconomico.t301_estado              = "A";
                            oProyectoEconomico.t302_denominacion        = oport.cliente;
                            oProyectoEconomico.t301_categoria           = mPE.categoria;
                            oProyectoEconomico.t305_cualidad            = "C";
                            oProyectoEconomico.proy_responsable         = oport.responsable;
                            oProyectoEconomico.codred_gestor_produccion = oport.codred_gestor_produccion;

                            lstGenerados.Add(oProyectoEconomico);
                            #endregion
                            #endregion
                        }
                        #endregion
                        //PARA PRUEBAS
                        //cDblib.commitTransaction(methodOwnerID);
                    }
                    #endregion
                }
                //PARA PRUEBAS
                if (bConTransaccion)
                {
                    cDblib.commitTransaction(methodOwnerID);
                }

                #region Correo
                //Con la lista de proyectos generados agrupo para cada gestor de producción concernido la lista de sus nuevos proyectos
                StringBuilder      sb          = new StringBuilder();
                List <Models.Mail> lstGestores = new List <Models.Mail>();
                try
                {
                    foreach (Models.ProyectoEconomico oPE in lstGenerados)
                    {
                        sb.Length = 0;
                        Models.Mail oProf = BuscarCodRed(lstGestores, oPE.codred_gestor_produccion);
                        if (oProf == null)
                        {
                            oProf        = new Models.Mail();
                            oProf.codred = oPE.codred_gestor_produccion;
                            sb.Append(ponerCabecera());
                            sb.Append(@"<tr style='height:16px'><td style='width:80px;padding-left:3px;'>" + oPE.cod_proyecto.ToString("#,###") + "</td>");
                            sb.Append(@"<td style='width:460px;text-overflow:ellipsis;overflow:hidden;'>" + oPE.nom_proyecto + "</td>");
                            sb.Append(@"<td style='width:80px;'>" + oPE.cod_contrato.ToString("#,###") + "</td>");
                            sb.Append(@"<td style='width:80px;'>" + oPE.cod_extension.ToString("#,###") + "</td></tr>");

                            oProf.mensaje = sb.ToString();

                            lstGestores.Add(oProf);
                        }
                        else
                        {
                            sb.Append(@"<tr style='height:16px'><td style='width:80px;padding-left:3px;'>" + oPE.cod_proyecto.ToString("#,###") + "</td>");
                            sb.Append(@"<td style='width:460px;text-overflow:ellipsis;overflow:hidden;'>" + oPE.nom_proyecto + "</td>");
                            sb.Append(@"<td style='width:80px;'>" + oPE.cod_contrato.ToString("#,###") + "</td>");
                            sb.Append(@"<td style='width:80px;'>" + oPE.cod_extension.ToString("#,###") + "</td></tr>");

                            oProf.mensaje += sb.ToString();
                        }
                    }
                    //Con la lista de proyectos agrupada envío a cada gestor de producción concernido la lista de sus nuevos proyectos
                    string    sAsunto     = "SUPER: Proyectos generados";
                    ArrayList aListCorreo = new ArrayList();
                    string    sMensaje    = "";
                    foreach (Models.Mail oGestor in lstGestores)
                    {
                        sMensaje = oGestor.mensaje + ponerPie();
                        string[] aMail = { sAsunto, sMensaje, oGestor.codred };
                        aListCorreo.Add(aMail);
                    }
                    Correo.EnviarCorreos(aListCorreo);
                }
                catch (Exception e1) {
                    SUPDAL.Log.Insertar("App_Code/Negocio/APP/OportunidadNegocio.generarContratos. Error al enviar correos. " + e1.Message);
                }
                #endregion
                return(lstGenerados);
            }
            catch (Exception ex)
            {
                //rollback
                if (cDblib.Transaction.ownerID.Equals(new Guid()))
                {
                    cDblib.rollbackTransaction(methodOwnerID);
                }
                throw new Exception(ex.Message);
            }
            finally
            {
                //nota.Dispose();
                //ProyBLL.Dispose();
                oContrato.Dispose();
                oNodo.Dispose();
                oFigura.Dispose();
            }
        }