public int Update(Models.AccionPreventa oAccionPreventa)
        {
            Guid methodOwnerID = new Guid("1c38edd7-67c4-4c5c-8cc2-544a064419a3");

            OpenDbConn();

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

            try
            {
                DAL.AccionPreventa cAccionPreventa = new DAL.AccionPreventa(cDblib);

                int result = cAccionPreventa.Update(oAccionPreventa, (int)HttpContext.Current.Session["IDFICEPI_PC_ACTUAL"]);

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

                return(result);
            }
            catch (Exception ex)
            {
                //rollback
                if (cDblib.Transaction.ownerID.Equals(methodOwnerID))
                {
                    cDblib.rollbackTransaction(methodOwnerID);
                }

                throw ex;
            }
        }
        public int Insert(Models.AccionPreventa oAccionPreventa, Models.SolicitudPreventa oSP, Guid guidprovisional)
        {
            Guid methodOwnerID = new Guid("c520a70a-6315-488b-a802-07b679db76e3");

            BLL.Listas            cListas            = null;
            BLL.SolicitudPreventa cSolicitudPreventa = null;
            OpenDbConn();

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

            try
            {
                DAL.AccionPreventa cAccionPreventa = new DAL.AccionPreventa(cDblib);
                cSolicitudPreventa = new BLL.SolicitudPreventa(cDblib);

                //grabar siempre la solicitud para acciones de origen CRM. Si existe devuelve el mismo id
                if (oSP.ta206_itemorigen == "O" || oSP.ta206_itemorigen == "P" || oSP.ta206_itemorigen == "E")
                {
                    oSP.ta200_idareapreventa = null;
                    oAccionPreventa.ta206_idsolicitudpreventa = cSolicitudPreventa.Insert(oSP);
                }
                else
                { //itemorigen = "S"
                    oSP.ta206_iditemorigen = oSP.ta206_idsolicitudpreventa;
                    oAccionPreventa.ta206_idsolicitudpreventa = oSP.ta206_idsolicitudpreventa;
                }



                //Validacion: Comprobación de tipo de acción no duplicable para otra acción de la misma solicitud.
                cListas = new BLL.Listas(cDblib);
                List <Models.TipoAccionPreventa> lst = cListas.GetListTipoAccionFiltrada(oSP.ta206_itemorigen, (int)oSP.ta206_iditemorigen);
                if (!lst.Contains(new Models.TipoAccionPreventa(oAccionPreventa.ta205_idtipoaccionpreventa)))
                {
                    throw new IB.SUPER.Shared.ValidationException("La acción seleccionada está considerada como única por solicitud. Al ya existir otra solicitud con la misma acción, no se permite realizar la grabación.");
                }


                oAccionPreventa.t001_idficepi_promotor = int.Parse(HttpContext.Current.Session["IDFICEPI_PC_ACTUAL"].ToString());

                if (oAccionPreventa.ta201_idsubareapreventa == 0)  //Subarea == comercial, lider es el usuario conectado (el comercial)
                {
                    oAccionPreventa.t001_idficepi_lider = oAccionPreventa.t001_idficepi_promotor;
                }

                int idAccionPreventa = cAccionPreventa.Insert(oAccionPreventa, guidprovisional, (int)HttpContext.Current.Session["IDFICEPI_PC_ACTUAL"]);

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

                return(idAccionPreventa);
            }
            catch (Exception ex)
            {
                //rollback
                if (cDblib.Transaction.ownerID.Equals(methodOwnerID))
                {
                    cDblib.rollbackTransaction(methodOwnerID);
                }

                throw ex;
            }

            finally {
                if (cListas != null)
                {
                    cListas.Dispose();
                }
                if (cSolicitudPreventa != null)
                {
                    cSolicitudPreventa.Dispose();
                }
            }
        }