Ejemplo n.º 1
0
        //Obtener el agente que se ajusta de a partir del monto del documento
        public DET_AGENTECA detAgenteLimite(List <DET_AGENTECA> lag, decimal monto, int step, FLUJO flujo)//MGC 19-10-2018 Cambio a detonador
        {
            List <DET_AGENTECA> lr = new List <DET_AGENTECA>();

            //MGC 19-10-2018 Cambio a detonador
            if (lag.Count == 0 & step == 0)
            {
                WFARTHAEntities db = new WFARTHAEntities();
                //Obtener el usuario al que se le creo la orden
                DET_AGENTECC dc = new DET_AGENTECC();

                dc = db.DET_AGENTECC.Where(dtc => dtc.VERSION == flujo.RUTA_VERSION && dtc.USUARIOC_ID == flujo.USUARIOA_ID && dtc.ID_RUTA_AGENTE == flujo.ID_RUTA_A).FirstOrDefault();

                DET_AGENTECA dt = new DET_AGENTECA();

                dt.ID_RUTA_AGENTE = flujo.ID_RUTA_A;
                dt.VERSION        = Convert.ToInt32(flujo.RUTA_VERSION);
                dt.STEP_FASE      = 0;
                dt.STEP_ACCION    = 0;
                dt.LIM_SUP        = Convert.ToDecimal(99999999999.00);
                dt.AGENTE_SIG     = dc.USUARIOA_ID;

                lr.Add(dt);
            }
            //MGC 19-10-2018 Cambio a detonador
            else
            {
                //Funcionamiento en cadena
                foreach (DET_AGENTECA ag in lag)
                {
                    if (monto < ag.LIM_SUP)
                    {
                        lr.Add(ag);
                    }
                }
            }

            //Se obtuvieron los registros que pueden validar el monto
            DET_AGENTECA rv = new DET_AGENTECA();

            rv = lr.OrderBy(ll => ll.LIM_SUP).FirstOrDefault();
            return(rv);
        }
Ejemplo n.º 2
0
        public string getURLPortal()
        {
            WFARTHAEntities db  = new WFARTHAEntities();
            string          url = "";

            try
            {
                url = db.APPSETTINGs.Where(app => app.NOMBRE == "urlPortal" && app.ACTIVO == true).FirstOrDefault().VALUE.ToString();
            }
            catch (Exception e)
            {
            }

            if (url == null | url == "")
            {
                url = "http://localhost:60621/Correos/Index/";
            }

            return(url);
        }
Ejemplo n.º 3
0
        public UsuarioC1()
        {
            WFARTHAEntities data = new WFARTHAEntities();

            usersLista    = new List <SelectListItem>();
            sociedadLista = new List <SelectListItem>();
            var qUsuario     = from u in data.USUARIOs where (u.ACTIVO == true) select u;
            var qSociedad    = from s in data.SOCIEDADs where (s.ACTIVO == true) select s;
            var listData     = qUsuario.ToList();
            var SociedadData = qSociedad.ToList();

            foreach (var Data in listData)
            {
                string nombre = string.Format("{0} - {1} {2} {3}",
                                              Data.ID,
                                              Data.NOMBRE,
                                              Data.APELLIDO_P,
                                              Data.APELLIDO_M);


                usersLista.Add(new SelectListItem()
                {
                    Value = Data.ID.ToString(),
                    Text  = nombre,
                });
            }

            foreach (var Data in SociedadData)
            {
                string sociedad = string.Format("{0} - {1}",
                                                Data.BUKRS,
                                                Data.BUTXT);

                sociedadLista.Add(new SelectListItem()
                {
                    Value = Data.BUKRS.ToString(),
                    Text  = sociedad,
                });
            }
        }
Ejemplo n.º 4
0
        public ProyectoSociedad()
        {
            WFARTHAEntities data = new WFARTHAEntities();

            proyectoLista = new List <SelectListItem>();
            sociedadLista = new List <SelectListItem>();
            var qProyecto    = from u in data.PROYECTOes select u;
            var qSociedad    = from s in data.SOCIEDADs where (s.ACTIVO == true) select s;
            var listData     = qProyecto.ToList();
            var SociedadData = qSociedad.ToList();

            foreach (var Data in listData)
            {
                string proyecto = string.Format("{0} - {1}",
                                                Data.ID_PSPNR,
                                                Data.NOMBRE);
                proyectoLista.Add(new SelectListItem()
                {
                    Value = Data.ID_PSPNR.ToString(),
                    Text  = proyecto,
                });
            }

            foreach (var Data in SociedadData)
            {
                string sociedad = string.Format("{0} - {1}",
                                                Data.BUKRS,
                                                Data.BUTXT);

                sociedadLista.Add(new SelectListItem()
                {
                    Value = Data.BUKRS.ToString(),
                    Text  = sociedad,
                });
            }
        }
Ejemplo n.º 5
0
        public static void ObtenerTextos(WFARTHAEntities db, int pagina_id_textos, string user_id, ControllerBase controller)
        {
            var user = ObtenerUsuario(db, user_id);

            controller.ViewBag.textos = db.TEXTOes.Where(a => (a.PAGINA_ID.Equals(pagina_id_textos) || a.PAGINA_ID.Equals(0)) && a.SPRAS_ID.Equals(user.SPRAS_ID)).ToList();
        }
Ejemplo n.º 6
0
 public static string ObtenerSprasId(WFARTHAEntities db, string user_id)
 {
     return(db.USUARIOs.Where(a => a.ID.Equals(user_id)).FirstOrDefault().SPRAS_ID);
 }
Ejemplo n.º 7
0
 public static USUARIO ObtenerUsuario(WFARTHAEntities db, string user_id)
 {
     return(db.USUARIOs.Where(a => a.ID.Equals(user_id)).FirstOrDefault());
 }
Ejemplo n.º 8
0
        public ActionResult Index(string id)
        {
            using (WFARTHAEntities db = new WFARTHAEntities())
            {
                int    pagina = 101; //ID EN BASE DE DATOS
                string u      = User.Identity.Name;
                ////if (pais != null)
                ////    Session["pais"] = pais;
                //string u = "admin";
                var user = db.USUARIOs.Where(a => a.ID.Equals(u)).FirstOrDefault();
                ViewBag.permisos  = db.PAGINAVs.Where(a => a.ID.Equals(user.ID)).ToList();
                ViewBag.carpetas  = db.CARPETAVs.Where(a => a.USUARIO_ID.Equals(user.ID)).ToList();
                ViewBag.usuario   = user;
                ViewBag.returnUrl = Request.Url.PathAndQuery;;
                ViewBag.rol       = user.PUESTO.PUESTOTs.Where(a => a.SPRAS_ID.Equals(user.SPRAS_ID)).FirstOrDefault().TXT50;
                ViewBag.Title     = db.PAGINAs.Where(a => a.ID.Equals(pagina)).FirstOrDefault().PAGINATs.Where(b => b.SPRAS_ID.Equals(user.SPRAS_ID)).FirstOrDefault().TXT50;
                ViewBag.warnings  = db.WARNINGVs.Where(a => (a.PAGINA_ID.Equals(pagina) || a.PAGINA_ID.Equals(0)) && a.SPRAS_ID.Equals(user.SPRAS_ID)).ToList();
                ViewBag.textos    = db.TEXTOes.Where(a => (a.PAGINA_ID.Equals(pagina) || a.PAGINA_ID.Equals(0)) && a.SPRAS_ID.Equals(user.SPRAS_ID)).ToList();
                try
                {
                    string p = Session["pr"].ToString();
                    ViewBag.PrSl = p;
                }
                catch
                {
                    //ViewBag.pais = "mx.png";
                    //return RedirectToAction("Proyectos", "Home", new { returnUrl = Request.Url.AbsolutePath });
                }
                Session["spras"] = user.SPRAS_ID;
                Session["pr"]    = null; //FRT06112018  Se agrega esta linea para poder ingresar nuevamente a la pantalla de proyectos

                Session["Edit"]   = 0;   //FRT08112018  Se agrega esta linea para poder ingresar nuevamente a la pantalla de proyectos
                Session["create"] = 0;   //FRT14112018  Se agrega esta linea para poder ingresar nuevamente a la pantalla de proyectos

                try                      //Mensaje de documento creado
                {
                    string p = Session["NUM_DOC"].ToString();
                    ViewBag.NUM_DOC    = p;
                    Session["NUM_DOC"] = null;
                }
                catch
                {
                    ViewBag.NUM_DOC = "";
                }

                try//Mensaje de documento creado
                {
                    string error_files = Session["ERROR_FILES"].ToString();
                    ViewBag.ERROR_FILES    = error_files;
                    Session["ERROR_FILES"] = null;
                }
                catch
                {
                    ViewBag.ERROR_FILES = "";
                }
            }

            string   us    = "";
            DateTime fecha = DateTime.Now.Date;
            List <WFARTHA.Entities.DELEGAR> del = db.DELEGARs.Where(a => a.USUARIOD_ID.Equals(User.Identity.Name) & a.FECHAI <= fecha & a.FECHAF >= fecha & a.ACTIVO == true).ToList();

            if (del.Count > 0)
            {
                List <USUARIO> users = new List <USUARIO>();
                foreach (DELEGAR de in del)
                {
                    users.Add(de.USUARIO);
                }
                users.Add(ViewBag.usuario);
                ViewBag.delegados = users.ToList();

                if (id != null)
                {
                    us = id;
                }
                else
                {
                    us = User.Identity.Name;
                }
                ViewBag.usuariod = us;
            }
            else
            {
                us = User.Identity.Name;
            }

            //MGC Cancelar preliminar
            //MGC 26-10-2018 Modificación a borrador obtener todas las solicitudes, excepto el borrador a.ESTATUS != "B"
            //var dOCUMENTOes = db.DOCUMENTOes.Where(a => a.USUARIOC_ID.Equals(us) | a.USUARIOD_ID.Equals(us)).Include(d => d.TSOL).Include(d => d.USUARIO).Include(d => d.SOCIEDAD).Include(d => d.DOCUMENTOPREs).ToList();
            //var dOCUMENTOes = db.DOCUMENTOes.Where(a => (a.USUARIOC_ID.Equals(us) | a.USUARIOD_ID.Equals(us)) & a.ESTATUS != "B").Include(d => d.TSOL).Include(d => d.USUARIO).Include(d => d.SOCIEDAD).Include(d => d.DOCUMENTOPREs).ToList();
            //MGC 26-10-2018 Modificación a borrador obtener todas las solicitudes, excepto las solicitudes canceladas a.estatus_c != "C"  o contabilizadas a.ESTATUS != "A"
            var dOCUMENTOes = db.DOCUMENTOes.Where(a => (a.USUARIOC_ID.Equals(us) | a.USUARIOD_ID.Equals(us)) & (a.ESTATUS != "A" & a.ESTATUS_C != "C")).Include(d => d.TSOL).Include(d => d.USUARIO).Include(d => d.SOCIEDAD).Include(d => d.DOCUMENTOPREs).ToList();
            //var dOCUMENTOVs = db.DOCUMENTOVs.Where(a => a.USUARIOA_ID.Equals(us)).ToList();
            var dOCUMENTOVs = db.DOCUMENTOVs.Where(a => a.USUARIOA_ID.Equals(us)).ToList();
            var tsol        = db.TSOLs.ToList();

            foreach (DOCUMENTOV v in dOCUMENTOVs)
            {
                DOCUMENTO d   = new DOCUMENTO();
                var       ppd = d.GetType().GetProperties();
                var       ppv = v.GetType().GetProperties();
                foreach (var pv in ppv)
                {
                    foreach (var pd in ppd)
                    {
                        if (pd.Name == pv.Name)
                        {
                            pd.SetValue(d, pv.GetValue(v));
                            break;
                        }
                    }
                }
                d.TSOL = tsol.Where(a => a.ID.Equals(d.TSOL_ID)).FirstOrDefault();
                //d.ESTADO = db.STATES.Where(a => a.ID.Equals(v.ESTADO)).FirstOrDefault().NAME;
                //d.CIUDAD = db.CITIES.Where(a => a.ID.Equals(v.CIUDAD)).FirstOrDefault().NAME;
                //dOCUMENTOes.Add(d);
                d.FLUJOes       = db.FLUJOes.Where(a => a.NUM_DOC.Equals(d.NUM_DOC)).ToList();
                d.DOCUMENTOPREs = db.DOCUMENTOPREs.Where(docpr => docpr.NUM_DOC.Equals(d.NUM_DOC)).ToList();
                dOCUMENTOes.Add(d);
            }
            dOCUMENTOes         = dOCUMENTOes.Distinct(new DocumentoComparer()).ToList();
            dOCUMENTOes         = dOCUMENTOes.OrderByDescending(a => a.FECHAC).OrderByDescending(a => a.NUM_DOC).ToList();
            ViewBag.Proveedores = db.PROVEEDORs.ToList();
            //ViewBag.Cuentas = db.CUENTAs.ToList();//MGC 12092018
            //ViewBag.DOCF = db.DOCUMENTOFs.ToList();//MGC 12092018
            //jemo inicio 4/07/2018
            //ViewBag.imgnoticia = db.NOTICIAs.Where(x => x.FECHAI <= DateTime.Now && x.FECHAF >= DateTime.Now && x.ACTIVO == true).Select(x => x.PATH).FirstOrDefault();//MGC 12092018


            return(View(dOCUMENTOes));
        }
Ejemplo n.º 9
0
        //[OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")]
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            //if (!ModelState.IsValid)
            //{
            //    return View(model);
            //}

            //// No cuenta los errores de inicio de sesión para el bloqueo de la cuenta
            //// Para permitir que los errores de contraseña desencadenen el bloqueo de la cuenta, cambie a shouldLockout: true
            //var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
            ////CookieAuthenticationProvider
            //switch (result)
            //{
            //    case SignInStatus.Success:
            //        return RedirectToLocal(returnUrl);
            //    case SignInStatus.LockedOut:
            //        return View("Lockout");
            //    case SignInStatus.RequiresVerification:
            //        return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
            //    case SignInStatus.Failure:
            //    default:
            //        ModelState.AddModelError("", "Intento de inicio de sesión no válido.");
            //        return View(model);
            //}
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            USUARIO user = new USUARIO();

            user.ID   = model.ID;
            user.PASS = model.Password;

            Cryptography c    = new Cryptography();
            string       pass = c.Encrypt(user.PASS);

            using (WFARTHAEntities db = new WFARTHAEntities())
            {
                user = db.USUARIOs.Where(a => a.ID.Equals(user.ID) && a.PASS.Equals(pass)).FirstOrDefault();
            }

            //El usuario se enontro en la bade de datos
            if (user != null)
            {
                FormsAuthentication.SetAuthCookie(model.ID, false);

                //var authTicket = new FormsAuthenticationTicket(1, user.ID, DateTime.Now, DateTime.Now.AddMinutes(20), false, user.MIEMBROS.FirstOrDefault().ROL.NOMBRE);
                var    authTicket      = new FormsAuthenticationTicket(1, user.ID, DateTime.Now, DateTime.Now.AddDays(1), false, "Administrador");
                string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
                var    authCookie      = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
                HttpContext.Response.Cookies.Add(authCookie);
                if (returnUrl != null)
                {
                    return(Redirect(returnUrl));
                }
                return(RedirectToAction("Index", "Home"));
            }

            else
            {
                ModelState.AddModelError("", "Usuario/contraseña incorrecta.");
                return(View(model));
            }
        }
Ejemplo n.º 10
0
        //LEJGG 12-12-2018
        public string procesacoc(decimal num_doc) //MGC 29-10-2018 Configuración de estatus
        {
            bool            nextSol    = false;   ////MGC 21-11-2018 Validar si el creador y el solicitante es el mismo usuario
            string          correcto   = String.Empty;
            WFARTHAEntities db         = new WFARTHAEntities();
            FLUJO           actual     = new FLUJO();
            string          recurrente = "";
            bool            emails     = false; //MGC 08-10-2018 Obtener los datos para el correo
            string          emailsto   = "";    //MGC 09-10-2018 Envío de correos

            if (true)                           //---------------------------NUEVO REGISTRO
            {
                DOCUMENTO d = db.DOCUMENTOes.Find(num_doc);

                //actual = db.FLUJOes.Where(fl => fl.NUM_DOC == num_doc).FirstOrDefault();//MGC 05-10-2018 Modificación para work flow al ser editada
                actual = db.FLUJOes.Where(a => a.NUM_DOC.Equals(d.NUM_DOC)).OrderByDescending(x => x.POS).FirstOrDefault();//MGC 05-10-2018 Modificación para work flow al ser editada


                //MGC 08-10-2018 Obtener los datos para el correo
                WORKFV wf = db.WORKFHs.Where(a => a.ID == actual.WORKF_ID).FirstOrDefault().WORKFVs.OrderByDescending(a => a.VERSION).FirstOrDefault();

                WORKFP wp    = wf.WORKFPs.Where(a => a.ID.Equals(actual.WORKF_ID) & a.VERSION.Equals(actual.WF_VERSION) & a.POS.Equals(actual.WF_POS)).OrderBy(a => a.POS).FirstOrDefault();
                string email = ""; //MGC 08-10-2018 Obtener el nombre del cliente
                email = wp.EMAIL;  //MGC 08-10-2018 Obtener el nombre del cliente

                if (email == "X")
                {
                    emails = true;
                }

                int step = 0;
                if (actual.STEP_AUTO == 0)
                {
                    //step = Convert.ToInt32(actual.STEP_AUTO) + 1;
                    step = Convert.ToInt32(actual.STEP_AUTO);//MGC 19-10-2018 Cambio a detonador
                }

                List <DET_AGENTECA> dap = db.DET_AGENTECA.Where(a => a.VERSION == actual.RUTA_VERSION && a.ID_RUTA_AGENTE == actual.ID_RUTA_A && a.STEP_FASE == step).OrderByDescending(a => a.VERSION).ToList();
                DET_AGENTECA        dah = new DET_AGENTECA();
                dah = detAgenteLimite(dap, Convert.ToDecimal(d.MONTO_DOC_MD), step, actual);//MGC 19-10-2018 Cambio a detonador


                WORKFP paso_a      = db.WORKFPs.Where(a => a.ID.Equals(actual.WORKF_ID) & a.VERSION.Equals(actual.WF_VERSION) & a.POS.Equals(actual.WF_POS)).FirstOrDefault();
                int    next_step_a = 0;
                if (paso_a.NEXT_STEP != null)
                {
                    next_step_a = (int)paso_a.NEXT_STEP;
                }

                WORKFP next = new WORKFP();
                if (recurrente != "X")
                {
                    next = db.WORKFPs.Where(a => a.ID.Equals(actual.WORKF_ID) & a.VERSION.Equals(actual.WF_VERSION) & a.POS == next_step_a).FirstOrDefault();
                }
                if (next.NEXT_STEP.Equals(99))//--------FIN DEL WORKFLOW
                {
                    d.ESTATUS_WF = "A";
                    if (paso_a.EMAIL != null)
                    {
                        if (paso_a.EMAIL.Equals("X"))
                        {
                            correcto = "2";
                        }
                    }
                }
                else
                {
                    //DOCUMENTO d = db.DOCUMENTOes.Find(actual.NUM_DOC);
                    FLUJO nuevo = new FLUJO();
                    nuevo.WORKF_ID   = next.ID;
                    nuevo.WF_VERSION = next.VERSION;
                    nuevo.WF_POS     = next.POS;
                    nuevo.NUM_DOC    = actual.NUM_DOC;
                    nuevo.POS        = actual.POS + 1;

                    //Agregar autorización MGC
                    nuevo.ID_RUTA_A    = actual.ID_RUTA_A;
                    nuevo.RUTA_VERSION = actual.RUTA_VERSION;

                    //MGC 11-12-2018 Agregar Contabilizador 0----------------->
                    nuevo.VERSIONC1 = actual.VERSIONC1;
                    nuevo.VERSIONC2 = actual.VERSIONC2;
                    //MGC 11-12-2018 Agregar Contabilizador 0-----------------<

                    if (next.ACCION.TIPO == "E")
                    {
                        nuevo.USUARIOA_ID = null;
                        nuevo.DETPOS      = 0;
                        nuevo.DETVER      = 0;
                    }
                    else
                    {
                        if (recurrente != "X")
                        {
                            //MGC 12-11-2018 Se guarda con normalidad
                            FLUJO detA = determinaAgenteI(d, actual.USUARIOA_ID, actual.USUARIOD_ID, 0, dah, step, actual);//MGC 19-10-2018 Cambio a detonador
                            nuevo.USUARIOA_ID = detA.USUARIOA_ID;
                            nuevo.USUARIOD_ID = nuevo.USUARIOA_ID;
                            nuevo.STEP_AUTO   = detA.STEP_AUTO;

                            //MGC 12-11-2018 Se obtiene el back up
                            DateTime fecha = DateTime.Now.Date;
                            DELEGAR  del   = db.DELEGARs.Where(a => a.USUARIO_ID.Equals(nuevo.USUARIOD_ID) & a.FECHAI <= fecha & a.FECHAF >= fecha & a.ACTIVO == true).FirstOrDefault();
                            if (del != null)
                            {
                                nuevo.USUARIOA_ID = del.USUARIOD_ID;
                            }
                            else
                            {
                                nuevo.USUARIOA_ID = nuevo.USUARIOD_ID;
                            }

                            nuevo.DETPOS = detA.DETPOS;
                            nuevo.DETVER = dah.VERSION;

                            //MGC 09-10-2018 Envío de correos
                            if (emails)
                            {
                                emails = true;

                                //MGC 09-10-2018 Envío de correos
                                //Obtener el email del creador
                                string emailc = "";
                                emailc   = db.USUARIOs.Where(us => us.ID == d.USUARIOC_ID).FirstOrDefault().EMAIL;
                                emailsto = emailc;
                                emailc   = "";

                                //Obtener el usuario aprobador
                                emailc    = db.USUARIOs.Where(us => us.ID == nuevo.USUARIOA_ID).FirstOrDefault().EMAIL;
                                emailsto += "," + emailc;

                                //Obtener el usuario del siguiente aprobador
                            }
                        }
                        else
                        {
                            nuevo.USUARIOA_ID = null;
                            nuevo.DETPOS      = 0;
                            nuevo.DETVER      = 0;
                        }
                    }
                    nuevo.ESTATUS = "P";
                    nuevo.FECHAC  = DateTime.Now;
                    nuevo.FECHAM  = DateTime.Now;
                    db.FLUJOes.Add(nuevo);
                    db.SaveChanges();//MGC 03-12-2018 Loop para firmas y obtener el más actual

                    if (paso_a.EMAIL != null)
                    {
                        if (paso_a.EMAIL.Equals("X"))
                        {
                            correcto = "1";
                        }
                    }

                    d.ESTATUS_WF      = "P";
                    d.ESTATUS         = "F";
                    db.Entry(d).State = EntityState.Modified;
                    db.SaveChanges();//MGC 03-12-2018 Loop para firmas y obtener el más actual

                    DOCUMENTO dmod = db.DOCUMENTOes.Find(num_doc);
                    dmod.ESTATUS_WF      = "P";
                    dmod.ESTATUS         = "F";
                    dmod.ESTATUS_SAP     = null;
                    dmod.ESTATUS_PRE     = "G";
                    db.Entry(dmod).State = EntityState.Modified;
                    db.SaveChanges();

                    //MGC 03-12-2018 Loop para firmas y obtener el más actual
                    //Actualizar el actual
                    actual.FECHAM          = DateTime.Now;
                    db.Entry(actual).State = EntityState.Modified;
                    db.SaveChanges();

                    //MGC 21-11-2018 Validar si el creador y el solicitante es el mismo usuario-------------------------------------------------->
                    if (d.USUARIOC_ID == d.USUARIOD_ID)
                    {
                        nextSol = true;
                    }
                    //MGC 21-11-2018 Validar si el creador y el solicitante es el mismo usuario--------------------------------------------------<

                    //MGC 30-10-2018 Agregar mensaje a log de modificación
                    try
                    {
                        DOCUMENTOLOG dl = new DOCUMENTOLOG();

                        dl.NUM_DOC   = d.NUM_DOC;
                        dl.TYPE_LINE = "M";
                        dl.TYPE      = "S";
                        dl.MESSAGE   = "Comienza el Proceso de Aprobación";
                        dl.FECHA     = DateTime.Now;

                        //db.DOCUMENTOLOGs.Add(dl);//MGC 21-11-2018 Validar si el creador y el solicitante es el mismo usuario
                        //db.SaveChanges();//MGC 21-11-2018 Validar si el creador y el solicitante es el mismo usuario
                    }
                    catch (Exception e)
                    {
                    }
                    //MGC 30-10-2018 Agregar mensaje a log de modificación

                    //MGC 16-10-2018 Eliminar msg
                    deleteMesg(d.NUM_DOC);
                }
            }

            //MGC 08-10-2018 Obtener los datos para el correo
            if (emails)
            {
                //Obtener el directorio desde la configuración


                //MGC 08-10-2018 Obtener los datos para el correo comentar provisional
                Email  em           = new Email();
                string UrlDirectory = getURLPortal();
                //string image = Server.MapPath("~/images/artha_logo.jpg");
                string image = System.Reflection.Assembly.GetExecutingAssembly().Location;
                string page  = "Index";
                try
                {
                    //MGC 11-10-2018 No enviar correos
                    em.enviaMailC(num_doc, true, "ES", UrlDirectory, page, image, emailsto);
                }
                catch (Exception)
                {
                }
            }

            //MGC 21-11-2018 Validar si el creador y el solicitante es el mismo usuario-------------------------------------------------->
            //MGC 21-11-2018 correr el siguiente flujo cuando el creador y solicitante son el mismo usuario
            if (nextSol)
            {
                //Obtener el documento
                DOCUMENTO _doc = db.DOCUMENTOes.Find(num_doc);


                //Obtener el último flujo registrado
                FLUJO fa = new FLUJO();
                fa = db.FLUJOes.Where(a => a.NUM_DOC.Equals(_doc.NUM_DOC)).OrderByDescending(a => a.POS).FirstOrDefault();

                //Obtener las acciones
                FLUJO f = db.FLUJOes.Where(a => a.NUM_DOC.Equals(_doc.NUM_DOC) & a.ESTATUS.Equals("P")).FirstOrDefault();

                //Hacer las modificaciones necesarias el flujo para auto-aprobar
                if (_doc.ESTATUS_C != "C")
                {
                    if (f != null)
                    {
                        string accion = "";
                        accion = db.WORKFPs.Where(a => a.ID.Equals(f.WORKF_ID) & a.POS.Equals(f.WF_POS) & a.VERSION.Equals(f.WF_VERSION)).FirstOrDefault().ACCION.TIPO;

                        if (accion == "A")
                        {
                            //Modificación del flujo, simular
                            fa.ESTATUS    = "A";
                            fa.COMENTARIO = "Auto Aprobado";

                            Flujosprocesa(fa, _doc.USUARIOC_ID);
                        }
                    }
                }
            }
            //MGC 21-11-2018 Validar si el creador y el solicitante es el mismo usuario--------------------------------------------------<

            return(correcto);
        }
        public ActionResult Procesa(FLUJO f)
        {
            ProcesaFlujo pf     = new ProcesaFlujo();
            DOCUMENTO    d      = db.DOCUMENTOes.Find(f.NUM_DOC);
            FLUJO        actual = db.FLUJOes.Where(a => a.NUM_DOC.Equals(f.NUM_DOC)).OrderByDescending(a => a.POS).FirstOrDefault();



            //MGC 12092018
            //List<TS_FORM> tts = db.TS_FORM.Where(a => a.BUKRS_ID.Equals(d.SOCIEDAD_ID) & a.LAND_ID.Equals(d.PAIS_ID)).ToList();

            //bool c = false;
            //if (actual.WORKFP.ACCION.TIPO == "R")
            //{
            //    List<DOCUMENTOT> ddt = new List<DOCUMENTOT>();
            //    foreach (TS_FORM ts in tts)
            //    {
            //        DOCUMENTOT dts = new DOCUMENTOT();
            //        dts.NUM_DOC = f.NUM_DOC;
            //        dts.TSFORM_ID = ts.POS;
            //        try
            //        {
            //            string temp = Request.Form["chk-" + ts.POS].ToString();
            //            if (temp == "on")
            //                dts.CHECKS = true;
            //            c = true;
            //        }
            //        catch
            //        {
            //            dts.CHECKS = false;
            //        }
            //        int tt = db.DOCUMENTOTS.Where(a => a.NUM_DOC.Equals(f.NUM_DOC) & a.TSFORM_ID == ts.POS).Count();
            //        if (tt == 0)
            //            ddt.Add(dts);
            //        else
            //            db.Entry(dts).State = EntityState.Modified;
            //    }
            //    if (ddt.Count > 0)
            //        db.DOCUMENTOTS.AddRange(ddt);
            //    db.SaveChanges();

            //    db.Dispose();
            //}

            FLUJO flujo = actual;

            flujo.ESTATUS     = f.ESTATUS;
            flujo.FECHAM      = DateTime.Now;
            flujo.COMENTARIO  = f.COMENTARIO;
            flujo.USUARIOA_ID = User.Identity.Name;

            flujo.ID_RUTA_A    = f.ID_RUTA_A;
            flujo.RUTA_VERSION = f.RUTA_VERSION;
            flujo.STEP_AUTO    = f.STEP_AUTO;

            //MGC 11-12-2018 Agregar Contabilizador 0----------------->
            flujo.VERSIONC1 = actual.VERSIONC1;
            flujo.VERSIONC2 = actual.VERSIONC2;
            //MGC 11-12-2018 Agregar Contabilizador 0-----------------<

            flujo.FECHACON = f.FECHACON; //MGC-14-12-2018 Modificación fechacon



            //Agregar funcionalidad, para checar si el próximo es contabilización, y si es contabilización
            //checar que el usuario contabilizador esté asignado a la sociedad
            ContabilizarRes resc = new ContabilizarRes();

            if (d.ESTATUS == "F" && (d.ESTATUS_WF.Equals("P") | d.ESTATUS_WF.Equals("S")))
            {
                //MGC 30-10-2018 Modificación estatus, Pendiente por aprobadores  *@
                if (d.ESTATUS_PRE == "G")
                {
                    //Pendiente verificar quién es el dueño del flujo si C o A
                    if (User.Identity.Name == actual.USUARIOA_ID)
                    {
                        //Simular el pf.procesa
                        //ContabilizarRes res = new ContabilizarRes();
                        resc = pf.procesaConta(flujo);
                    }
                }
            }

            //Validar la respuesta
            //Hay respuesta
            if (resc.contabilizar != null && resc.res != null)
            {
                if (resc.contabilizar == true && resc.res == false)
                {
                    TempData["error"] = "Se necesita asignar usuario contabilizador a la sociedad: " + d.SOCIEDAD_ID;
                    return(RedirectToAction("Details", "Solicitudes", new { id = flujo.NUM_DOC }));
                }
                else
                {
                    if (ModelState.IsValid)
                    {
                        string res = pf.procesa(flujo, "", false, "", "");
                        if (res.Equals("0"))//Aprobado
                        {
                            //FRT 13-12-2018 para realizar la actualización del tipo de cambio segun la fecha en el modal
                            if (d.MONEDA_ID != "MXN")
                            {
                                var moneda  = d.MONEDA_ID;
                                var restipo = TipoCambio(actual, moneda, f);
                            }

                            //ENDFRT 13-12-2018 para realizar la actualización del tipo de cambio segun la fecha en el modal
                            return(RedirectToAction("Details", "Solicitudes", new { id = flujo.NUM_DOC }));
                        }
                        else if (res.Equals("1") | res.Equals("2") | res.Equals("3"))//CORREO
                        {
                            //FRT 13-12-2018 para realizar la actualización del tipo de cambio segun la fecha en el modal
                            if (d.MONEDA_ID != "MXN")
                            {
                                var moneda  = d.MONEDA_ID;
                                var restipo = TipoCambio(actual, moneda, f);
                            }

                            //ENDFRT 13-12-2018 para realizar la actualización del tipo de cambio segun la fecha en el modal

                            //return RedirectToAction("Enviar", "Mails", new { id = flujo.NUM_DOC, index = false, tipo = "A" });
                            //MGC 12092018
                            //Email em = new Email();
                            //string UrlDirectory = Request.Url.GetLeftPart(UriPartial.Path);
                            //string image = Server.MapPath("~/images/logo_kellogg.png");
                            //if (res.Equals("1") | res.Equals("2"))//CORREO
                            //{
                            //    em.enviaMailC(f.NUM_DOC, true, Session["spras"].ToString(), UrlDirectory, "Index", image);
                            //}
                            //else
                            //{
                            //    em.enviaMailC(f.NUM_DOC, true, Session["spras"].ToString(), UrlDirectory, "Details", image);
                            //}
                            return(RedirectToAction("Details", "Solicitudes", new { id = flujo.NUM_DOC }));
                        }
                        else
                        {
                            TempData["error"] = res;
                            return(RedirectToAction("Details", "Solicitudes", new { id = flujo.NUM_DOC }));
                        }
                    }
                }
            }

            int pagina = 103; //ID EN BASE DE DATOS

            using (WFARTHAEntities db = new WFARTHAEntities())
            {
                string u    = User.Identity.Name;
                var    user = db.USUARIOs.Where(a => a.ID.Equals(u)).FirstOrDefault();
                ViewBag.permisos = db.PAGINAVs.Where(a => a.ID.Equals(user.ID)).ToList();
                ViewBag.carpetas = db.CARPETAVs.Where(a => a.USUARIO_ID.Equals(user.ID)).ToList();
                ViewBag.usuario  = user; ViewBag.returnUrl = Request.Url.PathAndQuery;;
                ViewBag.rol      = user.PUESTO.PUESTOTs.Where(a => a.SPRAS_ID.Equals(user.SPRAS_ID)).FirstOrDefault().TXT50;
                ViewBag.Title    = db.PAGINAs.Where(a => a.ID.Equals(pagina)).FirstOrDefault().PAGINATs.Where(b => b.SPRAS_ID.Equals(user.SPRAS_ID)).FirstOrDefault().TXT50;
                ViewBag.warnings = db.WARNINGVs.Where(a => (a.PAGINA_ID.Equals(pagina) || a.PAGINA_ID.Equals(0)) && a.SPRAS_ID.Equals(user.SPRAS_ID)).ToList();
                ViewBag.textos   = db.TEXTOes.Where(a => (a.PAGINA_ID.Equals(pagina) || a.PAGINA_ID.Equals(0)) && a.SPRAS_ID.Equals(user.SPRAS_ID)).ToList();

                try
                {
                    string p = Session["pais"].ToString();
                    ViewBag.pais = p + ".png";
                }
                catch
                {
                    //ViewBag.pais = "mx.png";
                    //return RedirectToAction("Pais", "Home");
                }
                Session["spras"] = user.SPRAS_ID;
            }
            return(View(f));
        }
Ejemplo n.º 12
0
        public string crearPDF(List <ReportSols> RS)
        {
            var fncolor = new BaseColor(255, 255, 255);

            iTextSharp.text.Font letraTabNegrita = FontFactory.GetFont(FontFactory.HELVETICA_BOLD, 7, fncolor);
            iTextSharp.text.Font letraTab        = FontFactory.GetFont(FontFactory.HELVETICA, 7);
            iTextSharp.text.Font negritaPeque    = FontFactory.GetFont(FontFactory.HELVETICA_BOLD, 11);
            iTextSharp.text.Font normalPeque     = FontFactory.GetFont(FontFactory.HELVETICA, 11);
            iTextSharp.text.Font normalMasPeque  = FontFactory.GetFont(FontFactory.HELVETICA, 8);
            iTextSharp.text.Font titulo          = FontFactory.GetFont(FontFactory.HELVETICA_BOLD, 16);
            PdfPTable            tabCabecera     = new PdfPTable(1);
            PdfPTable            tablaDatos      = new PdfPTable(1);
            PdfPTable            tablaDatos1     = new PdfPTable(2);
            PdfPTable            tablaDatos2     = new PdfPTable(15);
            PdfPTable            tablaDatos3     = new PdfPTable(1);
            PdfPTable            tablaDatos4     = new PdfPTable(6);

            string ruta = "";

            using (WFARTHAEntities db = new WFARTHAEntities())
            {
                DateTime   fechaCreacion = DateTime.Now;
                string     nombreArchivo = string.Format("{0}.pdf", fechaCreacion.ToString(@"yyyyMMdd") + "_" + fechaCreacion.ToString(@"HHmmss"));
                string     rutaCompleta  = HttpContext.Current.Server.MapPath("~/PdfTemp/" + nombreArchivo);
                FileStream fsDocumento   = new FileStream(rutaCompleta, FileMode.Create);
                //PASO UNO DEMINIMOS EL TIPO DOCUMENTO CON LOS RESPECTIVOS MARGENES (A4,IZQ,DER,TOP,BOT)
                Document  pdfDoc    = new Document(PageSize.A4.Rotate(), 30f, 30f, 60f, 30f);
                PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDoc, fsDocumento);

                try
                {
                    pdfDoc.Open();

                    iTextSharp.text.Image imagen2 = iTextSharp.text.Image.GetInstance(HttpContext.Current.Server.MapPath("~/images/artha.png"));
                    PdfPCell celLineaCabecera     = new PdfPCell {
                        Image = imagen2, Border = 0, Padding = 3, FixedHeight = 60f, HorizontalAlignment = PdfPCell.ALIGN_LEFT
                    };
                    tabCabecera.AddCell(celLineaCabecera);
                    tabCabecera.TotalWidth = pdfDoc.PageSize.Width;
                    tabCabecera.WriteSelectedRows(0, -1, 0, pdfDoc.PageSize.Top, pdfWriter.DirectContent);

                    //Tabla
                    tablaDatos2.SetWidthPercentage(new float[] { 55, 50, 55, 55, 55, 55, 40, 80, 80, 55, 40, 60, 75, 40, 40 }, PageSize.A4.Rotate());
                    PdfPCell Cabecera1 = new PdfPCell(new Paragraph("Tipo de Solicitud", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera1);
                    PdfPCell Cabecera2 = new PdfPCell(new Paragraph("Fecha", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera2);
                    PdfPCell Cabecera3 = new PdfPCell(new Paragraph("No. Portal", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera3);
                    PdfPCell Cabecera4 = new PdfPCell(new Paragraph("No. SAP", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera4);
                    PdfPCell Cabecera5 = new PdfPCell(new Paragraph("Proyecto", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera5);
                    PdfPCell Cabecera6 = new PdfPCell(new Paragraph("Sociedad", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera6);
                    PdfPCell Cabecera7 = new PdfPCell(new Paragraph("Moneda", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera7);
                    PdfPCell Cabecera8 = new PdfPCell(new Paragraph("Monto", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera8);
                    PdfPCell Cabecera9 = new PdfPCell(new Paragraph("Explicacion", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera9);
                    PdfPCell Cabecera10 = new PdfPCell(new Paragraph("Solicitante", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera10);
                    PdfPCell Cabecera11 = new PdfPCell(new Paragraph("Usuario", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera11);
                    PdfPCell Cabecera12 = new PdfPCell(new Paragraph("WorkFlow", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera12);
                    PdfPCell Cabecera13 = new PdfPCell(new Paragraph("Estatus Solicitud", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera13);
                    PdfPCell Cabecera14 = new PdfPCell(new Paragraph("Total de Dias", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera14);
                    PdfPCell Cabecera15 = new PdfPCell(new Paragraph("Estatus Pago", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera15);
                    bool      col = true;
                    BaseColor fondo;
                    foreach (ReportSols sol in RS)
                    {
                        if (col == true)
                        {
                            fondo = new BaseColor(220, 220, 220);
                            col   = false;
                        }
                        else
                        {
                            fondo = new BaseColor(255, 255, 255);
                            col   = true;
                        }
                        PdfPCell Cuerpo1 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(sol.Tsol) ? sol.Tsol : ""), letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo1);
                        PdfPCell Cuerpo2 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(sol.Fecha) ? sol.Fecha : ""), letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo2);
                        PdfPCell Cuerpo3 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(sol.Num_doc.ToString()) ? sol.Num_doc.ToString() : ""), letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo3);
                        PdfPCell Cuerpo4 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(sol.Num_pre) ? sol.Num_pre : ""), letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo4);
                        PdfPCell Cuerpo5 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(sol.Pspnr) ? sol.Pspnr : ""), letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo5);
                        PdfPCell Cuerpo6 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(sol.Bukrsn) ? sol.Bukrsn : ""), letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo6);
                        PdfPCell Cuerpo7 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(sol.Moneda) ? sol.Moneda : ""), letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo7);
                        PdfPCell Cuerpo8 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(sol.Montol) ? sol.Montol : ""), letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo8);
                        PdfPCell Cuerpo9 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(sol.Explicacion) ? sol.Explicacion : ""), letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo9);
                        PdfPCell Cuerpo10 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(sol.Usuarion) ? sol.Usuarion : ""), letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo10);
                        PdfPCell Cuerpo11 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(sol.Usuario) ? sol.Usuario : ""), letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo11);
                        PdfPCell Cuerpo12 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(sol.Wf) ? sol.Wf : ""), letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo12);
                        PdfPCell Cuerpo13 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(sol.Estatus) ? sol.Estatus : ""), letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo13);
                        PdfPCell Cuerpo14 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(sol.Totald) ? sol.Totald : ""), letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo14);
                        PdfPCell Cuerpo15 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(sol.EstPago) ? sol.EstPago : ""), letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo15);
                    }
                    pdfDoc.Add(tablaDatos2);
                    pdfDoc.Add(new Chunk("\n"));

                    pdfDoc.Close();

                    ruta = "/PdfTemp/" + nombreArchivo;
                }
                catch (Exception ex)
                {
                    ex.Message.ToString();
                }
                return(ruta);
            }
        }
Ejemplo n.º 13
0
        public ActionResult ReportTemplate2([Bind(Include = "Tsol,Bukrs,Fecha,Payer,Num_pre,User,Num_doc,Monto,Moneda,Estatus,Pagado")] Models.REPORT_MOD rep)
        {
            int pagina = 1101; //ID EN BASE DE DATOS

            using (WFARTHAEntities db = new WFARTHAEntities())
            {
                FnCommon.ObtenerConfPage(db, pagina, User.Identity.Name, this.ControllerContext.Controller);
                string uz         = User.Identity.Name;
                var    sociedades = (from tp in db.DET_TIPOPRESUPUESTO
                                     join soc in db.SOCIEDADs
                                     on tp.BUKRS equals soc.BUKRS
                                     where tp.ID_USER == uz
                                     select new { Value = soc.BUKRS, TEXT = soc.BUKRS + " - " + soc.BUTXT }).ToList();
                List <DOCUMENTO> docs = new List <DOCUMENTO>();
                for (int i = 0; i < sociedades.Count(); i++)
                {
                    string           buk = sociedades[i].Value;
                    List <DOCUMENTO> doc = db.DOCUMENTOes.Where(x => x.SOCIEDAD_ID == buk).OrderBy(x => x.NUM_DOC).ToList();
                    foreach (DOCUMENTO d in doc)
                    {
                        docs.Add(d);
                    }
                }
                List <DOCUMENTO> docs1 = new List <DOCUMENTO>();
                // filtrado por Tipo de solicitud
                if (rep.Tsol != null)
                {
                    for (int i = 0; i < rep.Tsol.Count(); i++)
                    {
                        string           com = rep.Tsol[i];
                        List <DOCUMENTO> doc = docs.Where(x => x.TSOL_ID == com).ToList();
                        foreach (DOCUMENTO d in doc)
                        {
                            docs1.Add(d);
                        }
                    }
                    docs  = docs1;
                    docs1 = new List <DOCUMENTO>();
                }
                // filtrado por sociedad
                if (rep.Bukrs != null)
                {
                    for (int i = 0; i < rep.Bukrs.Count(); i++)
                    {
                        string           com = rep.Bukrs[i];
                        List <DOCUMENTO> doc = docs.Where(x => x.SOCIEDAD_ID == com).ToList();
                        foreach (DOCUMENTO d in doc)
                        {
                            docs1.Add(d);
                        }
                    }
                    docs  = docs1;
                    docs1 = new List <DOCUMENTO>();
                }
                // filtrado por fecha
                if (rep.Fecha != null)
                {
                    for (int i = 0; i < rep.Fecha.Count(); i++)
                    {
                        DateTime         com = DateTime.Parse(rep.Fecha[i]);
                        List <DOCUMENTO> doc = docs.Where(x => x.FECHAC_USER == com).ToList();
                        foreach (DOCUMENTO d in doc)
                        {
                            docs1.Add(d);
                        }
                    }
                    docs  = docs1;
                    docs1 = new List <DOCUMENTO>();
                }
                // filtrado por proveedor
                if (rep.Payer != null)
                {
                    for (int i = 0; i < rep.Payer.Count(); i++)
                    {
                        string           com = rep.Payer[i];
                        List <DOCUMENTO> doc = docs.Where(x => x.PAYER_ID == com).ToList();
                        foreach (DOCUMENTO d in doc)
                        {
                            docs1.Add(d);
                        }
                    }
                    docs  = docs1;
                    docs1 = new List <DOCUMENTO>();
                }
                // filtrado por numero sap
                if (rep.Num_pre != null)
                {
                    for (int i = 0; i < rep.Num_pre.Count(); i++)
                    {
                        string           com = rep.Num_pre[i];
                        List <DOCUMENTO> doc = docs.Where(x => x.PAYER_ID == com).ToList();
                        foreach (DOCUMENTO d in doc)
                        {
                            docs1.Add(d);
                        }
                    }
                    docs  = docs1;
                    docs1 = new List <DOCUMENTO>();
                }
                // filtrado por solicitante
                if (rep.User != null)
                {
                    for (int i = 0; i < rep.User.Count(); i++)
                    {
                        string           com = rep.User[i];
                        List <DOCUMENTO> doc = docs.Where(x => x.USUARIOD_ID == com).ToList();
                        foreach (DOCUMENTO d in doc)
                        {
                            docs1.Add(d);
                        }
                    }
                    docs  = docs1;
                    docs1 = new List <DOCUMENTO>();
                }
                // filtrado por numero de documento
                if (rep.Num_doc != null)
                {
                    for (int i = 0; i < rep.Num_doc.Count(); i++)
                    {
                        decimal          com = decimal.Parse(rep.Num_doc[i]);
                        List <DOCUMENTO> doc = docs.Where(x => x.NUM_DOC == com).ToList();
                        foreach (DOCUMENTO d in doc)
                        {
                            docs1.Add(d);
                        }
                    }
                    docs  = docs1;
                    docs1 = new List <DOCUMENTO>();
                }
                // filtrado por monto
                if (rep.Monto != null)
                {
                    for (int i = 0; i < rep.Monto.Count(); i++)
                    {
                        decimal          com = decimal.Parse(rep.Monto[i]);
                        List <DOCUMENTO> doc = docs.Where(x => x.MONTO_DOC_MD == com).ToList();
                        foreach (DOCUMENTO d in doc)
                        {
                            docs1.Add(d);
                        }
                    }
                    docs  = docs1;
                    docs1 = new List <DOCUMENTO>();
                }
                // filtrado por moneda
                if (rep.Moneda != null)
                {
                    for (int i = 0; i < rep.Moneda.Count(); i++)
                    {
                        string           com = rep.Moneda[i];
                        List <DOCUMENTO> doc = docs.Where(x => x.MONEDA_ID == com).ToList();
                        foreach (DOCUMENTO d in doc)
                        {
                            docs1.Add(d);
                        }
                    }
                    docs  = docs1;
                    docs1 = new List <DOCUMENTO>();
                }
                // filtrado por estatus
                if (rep.Estatus != null)
                {
                    for (int i = 0; i < rep.Estatus.Count(); i++)
                    {
                        var stats            = rep.Estatus[i].Split(',');
                        var statswf          = stats[3].Split('/');
                        List <DOCUMENTO> doc = new List <DOCUMENTO>();
                        if (statswf.Length == 1)
                        {
                            doc = docs.Where(x => x.ESTATUS == stats[0] && x.ESTATUS_C == stats[1] && x.ESTATUS_SAP == stats[2] && x.ESTATUS_WF == stats[3] && x.ESTATUS_PRE == stats[4]).ToList();
                        }
                        else
                        {
                            doc = docs.Where(x => x.ESTATUS == stats[0] && x.ESTATUS_C == stats[1] && x.ESTATUS_SAP == stats[2] && (x.ESTATUS_WF == statswf[0] || x.ESTATUS_WF == statswf[1]) && x.ESTATUS_PRE == stats[4]).ToList();
                        }
                        foreach (DOCUMENTO d in doc)
                        {
                            docs1.Add(d);
                        }
                    }
                    docs  = docs1;
                    docs1 = new List <DOCUMENTO>();
                }
                // filtrado por estatus de pago
                if (rep.Pagado != null)
                {
                    for (int i = 0; i < rep.Pagado.Count(); i++)
                    {
                        string           com  = rep.Pagado[i];
                        List <string>    pago = db.ESTATUS_PAGO.Where(x => x.TIPO == com).Select(x => x.BELNR_P).ToList();
                        List <DOCUMENTO> doc  = docs.Where(x => x.MONEDA_ID == com).ToList();
                        foreach (DOCUMENTO d in doc)
                        {
                            if (pago.Contains(d.NUM_DOC.ToString()))
                            {
                                docs1.Add(d);
                            }
                        }
                    }
                    docs  = docs1;
                    docs1 = new List <DOCUMENTO>();
                }

                List <ReportSols> solicitudes = new List <ReportSols>();
                foreach (DOCUMENTO d in docs)
                {
                    string firmas = "";
                    string pag    = "";
                    List <ReportFirmasResult> f   = db.Database.SqlQuery <ReportFirmasResult>("SP_FIRMAS @NUM_DOC", new SqlParameter("@NUM_DOC", d.NUM_DOC)).ToList();
                    ReportFirmasResult        fir = f.OrderByDescending(x => x.fecham).FirstOrDefault();
                    if (fir.estatus == "A")
                    {
                        firmas = fir.usuariocadena + "\n(Aprobado)";
                    }
                    else if (fir.estatus == "R")
                    {
                        firmas = fir.usuariocadena + "\n(Rechazado)";
                    }
                    else if (fir.estatus == "P")
                    {
                        firmas = fir.usuariocadena + "\n(Pendiente)";
                    }
                    //foreach (ReportFirmasResult ff in f)
                    //{
                    //    firmas += ff.usuariocadena + "\n" + ff.faseletrero;
                    //}
                    string flu     = db.FLUJOes.Where(x => x.NUM_DOC == d.NUM_DOC).OrderByDescending(x => x.POS).Select(x => x.USUARIOA_ID).FirstOrDefault();
                    string estatus = "";
                    if (d.ESTATUS_C != null)
                    {
                        if (d.ESTATUS_C.Equals("A") || d.ESTATUS_C.Equals("B") || d.ESTATUS_C.Equals("C"))
                        {
                            if (d.ESTATUS_C.Equals("A"))
                            {
                                estatus = "Eliminando Solicitud";
                            }
                            else if (d.ESTATUS_C.Equals("B"))
                            {
                                estatus = "Error Eliminar";
                            }
                            else if (d.ESTATUS_C.Equals("C"))
                            {
                                estatus = "Solicitud Eliminada";
                            }
                        }
                    }
                    else if (d.ESTATUS.Equals("B"))
                    {
                        estatus = "Borrador";
                    }
                    else if (d.ESTATUS.Equals("A"))
                    {
                        estatus = "Contabilizado SAP";
                    }
                    else if (d.ESTATUS.Equals("N") && d.ESTATUS_C == null && d.ESTATUS_SAP == null && (d.ESTATUS_WF == null | d.ESTATUS_WF == "P"))
                    {
                        if (d.ESTATUS_PRE == "G")
                        {
                            estatus = "Procesando Preliminar";
                        }
                        else if (d.ESTATUS_PRE == "E")
                        {
                            estatus = "Error Preliminar Portal";
                        }
                    }
                    else if (d.ESTATUS.Equals("N") && d.ESTATUS_C == null && d.ESTATUS_SAP != null && d.ESTATUS_WF == null)
                    {
                        if (d.ESTATUS_PRE == "E" && d.ESTATUS_SAP == "E")
                        {
                            estatus = "Error Preliminar SAP";
                        }
                        if (d.ESTATUS_PRE == "G" && d.ESTATUS_SAP == "P")
                        {
                            estatus = "Se Generó Preliminar SAP";
                        }
                    }
                    else if (d.ESTATUS == "F" && (d.ESTATUS_WF.Equals("P") | d.ESTATUS_WF.Equals("S")))
                    {
                        if (d.ESTATUS_PRE == "G")
                        {
                            if (d.FLUJOes.Count > 0)
                            {
                                if (ViewBag.usuario.ID == flu)
                                {
                                    estatus = "Pendiente Aprobador";
                                }
                            }
                        }
                    }
                    else if (d.ESTATUS == "C" && (d.ESTATUS_WF.Equals("P") | d.ESTATUS_WF.Equals("A")))
                    {
                        if (d.ESTATUS_WF.Equals("P") && d.ESTATUS_PRE == "G")
                        {
                            if (d.FLUJOes.Count > 0)
                            {
                                if (ViewBag.usuario.ID == flu)
                                {
                                    estatus = "Pendiente Contabilizar";
                                }
                            }
                        }
                        else if (d.ESTATUS_WF.Equals("A") && d.ESTATUS_PRE == "E")
                        {
                            if (d.FLUJOes.Count > 0)
                            {
                                if (ViewBag.usuario.ID == flu)
                                {
                                    estatus = "Error Contabilizar Portal";
                                }
                            }
                        }
                        else if (d.ESTATUS_WF.Equals("A") && d.ESTATUS_PRE == "G" && d.ESTATUS_SAP != "E")
                        {
                            estatus = "Procesando Contabilizar SAP";
                        }
                        else if (d.ESTATUS_WF.Equals("A") && d.ESTATUS_SAP == "E")
                        {
                            if (d.FLUJOes.Count > 0)
                            {
                                if (ViewBag.usuario.ID == flu)
                                {
                                    estatus = "Error Contabilizar SAP";
                                }
                            }
                        }
                        else if (d.ESTATUS_WF != null && d.ESTATUS_WF.Equals("A"))
                        {
                            if (d.ESTATUS.Equals("C"))
                            {
                                estatus = "Por Contabilizar";
                            }
                            else if (d.ESTATUS.Equals("P"))
                            {
                                estatus = "Contabilizar SAP";
                            }
                            else
                            {
                                estatus = "Aprobada";
                            }
                        }
                        else if (d.ESTATUS.Equals("F") && d.ESTATUS_WF != null && d.ESTATUS_WF.Equals("R") && d.ESTATUS_PRE != null && d.ESTATUS_PRE.Equals("G"))
                        {
                            estatus = "Pendiente Corrección";
                        }
                        else if (d.ESTATUS_WF != null && d.ESTATUS_WF.Equals("T"))
                        {
                            estatus = "Pendiente Tax";
                        }
                        else
                        {
                            estatus = "Estatus desconocido";
                        }
                    }
                    DateTime fecha2 = DateTime.Parse(f.OrderByDescending(x => x.fecham).Select(x => x.fecham).FirstOrDefault().ToString());
                    DateTime fecha1 = DateTime.Parse(d.FECHAC.ToString());
                    int      horas  = 0;
                    if (fecha2 > fecha1)
                    {
                        horas = Convert.ToInt32((fecha2 - fecha1).TotalDays);
                    }
                    List <ESTATUS_PAGO> ep = db.ESTATUS_PAGO.Where(x => x.BELNR_P == d.NUM_DOC.ToString()).ToList();
                    foreach (ESTATUS_PAGO p in ep)
                    {
                        pag += p.TIPO;
                        if (ep.Count > 1)
                        {
                            pag += "/";
                        }
                    }
                    ReportSols s = new ReportSols
                    {
                        Tsol        = (from x in db.TSOLTs where x.TSOL_ID == d.TSOL_ID select x.TXT50).FirstOrDefault(),
                        Fecha       = string.Format(DateTime.Parse(d.FECHAC.ToString()).ToString(@"yyyy/MM/dd")),
                        Num_doc     = d.NUM_DOC,
                        Num_pre     = d.NUM_PRE,
                        Pspnr       = (from x in db.PROYECTOes where x.ID_PSPNR == d.ID_PSPNR select x.NOMBRE).FirstOrDefault(),
                        Bukrsn      = (from x in db.SOCIEDADs where x.BUKRS == d.SOCIEDAD_ID select x.BUTXT).FirstOrDefault(),
                        Moneda      = d.MONEDA_ID,
                        Montol      = Monedas(d.MONTO_DOC_MD, d.MONEDA_ID),
                        Explicacion = d.CONCEPTO,
                        Usuarion    = (from x in db.USUARIOs where x.ID == d.USUARIOD_ID select x.NOMBRE + " " + x.APELLIDO_P + " " + x.APELLIDO_M).FirstOrDefault(),
                        Usuario     = d.USUARIOD_ID,
                        Wf          = firmas,
                        Estatus     = estatus,
                        Totald      = horas.ToString(),
                        EstPago     = pag
                    };
                    solicitudes.Add(s);
                }
                ReportEsqueleto2 re         = new ReportEsqueleto2();
                string           recibeRuta = re.crearPDF(solicitudes);
                ViewBag.url   = Request.Url.OriginalString.Replace(Request.Url.PathAndQuery, "") + HostingEnvironment.ApplicationVirtualPath + "/" + recibeRuta;
                ViewBag.miNum = uz;

                return(View());
            }
        }
Ejemplo n.º 14
0
        // GET: Report
        public ActionResult Reporte()
        {
            int        pagina = 1101;
            var        spras  = "ES";
            REPORT_MOD rm     = new REPORT_MOD();

            using (WFARTHAEntities db = new WFARTHAEntities())
            {
                FnCommon.ObtenerConfPage(db, pagina, User.Identity.Name, this.ControllerContext.Controller);
                string uz          = User.Identity.Name;
                var    puesto_user = db.USUARIOs.Where(x => x.ID == uz).Select(x => x.PUESTO_ID).FirstOrDefault();
                var    tsoll       = (from ts in db.TSOLs
                                      join tt in db.TSOLTs
                                      on ts.ID equals tt.TSOL_ID
                                      into jj
                                      from tt in jj.DefaultIfEmpty()
                                      where ts.ESTATUS == "X" && tt.SPRAS_ID.Equals(spras) && ts.ID.Equals("SRE")
                                      select new
                {
                    Value = ts.ID,
                    Text = ts.ID + " - " + tt.TXT50
                }).ToList();
                if (puesto_user != 4)
                {
                    tsoll = (from ts in db.TSOLs
                             join tt in db.TSOLTs
                             on ts.ID equals tt.TSOL_ID
                             into jj
                             from tt in jj.DefaultIfEmpty()
                             where ts.ESTATUS == "X" && tt.SPRAS_ID.Equals(spras)
                             select new
                    {
                        Value = ts.ID,
                        Text = ts.ID + " - " + tt.TXT50
                    }).ToList();
                }
                var sociedades = (from tp in db.DET_TIPOPRESUPUESTO
                                  join soc in db.SOCIEDADs
                                  on tp.BUKRS equals soc.BUKRS
                                  where tp.ID_USER == uz
                                  select new { Value = soc.BUKRS, Text = soc.BUKRS + " - " + soc.BUTXT }).ToList();
                List <DOCUMENTO> docs = new List <DOCUMENTO>();
                for (int i = 0; i < sociedades.Count(); i++)
                {
                    string           buk = sociedades[i].Value;
                    List <DOCUMENTO> doc = db.DOCUMENTOes.Where(x => x.SOCIEDAD_ID == buk).OrderBy(x => x.NUM_DOC).ToList();
                    foreach (DOCUMENTO d in doc)
                    {
                        docs.Add(d);
                    }
                }
                List <string>         fechas1 = new List <string>();
                List <string>         prov1   = new List <string>();
                List <string>         nsap1   = new List <string>();
                List <string>         user1   = new List <string>();
                List <string>         ndoc1   = new List <string>();
                List <string>         mont1   = new List <string>();
                List <SelectListItem> fechas  = new List <SelectListItem>();
                List <SelectListItem> prov    = new List <SelectListItem>();
                List <SelectListItem> nsap    = new List <SelectListItem>();
                List <SelectListItem> user    = new List <SelectListItem>();
                List <SelectListItem> ndoc    = new List <SelectListItem>();
                List <SelectListItem> mont    = new List <SelectListItem>();
                foreach (DOCUMENTO dd in docs)
                {
                    string prob = (!string.IsNullOrEmpty(dd.PAYER_ID) ? dd.PAYER_ID : "").Trim();
                    prob = Completa(prob, 10);
                    var u = db.USUARIOs.Where(x => x.ID == dd.USUARIOD_ID).FirstOrDefault();
                    var p = db.PROVEEDORs.Where(x => x.LIFNR == prob).FirstOrDefault();

                    if (dd.FECHAC_USER != null && !fechas1.Contains(dd.FECHAC_USER.ToString()))
                    {
                        fechas1.Add(dd.FECHAC_USER.ToString());
                        string fech = string.Format(DateTime.Parse(dd.FECHAC_USER.ToString()).ToString(@"dd/MM/yyyy"));
                        fechas.Add(new SelectListItem()
                        {
                            Text = fech, Value = dd.FECHAC_USER.ToString()
                        });
                    }
                    if (p != null && !prov1.Contains(p.LIFNR))
                    {
                        prov1.Add(p.LIFNR);
                        prov.Add(new SelectListItem()
                        {
                            Text = p.LIFNR + " - " + p.NAME1, Value = dd.PAYER_ID
                        });
                    }
                    if (dd.NUM_PRE != null && !nsap1.Contains(dd.NUM_PRE))
                    {
                        nsap1.Add(dd.NUM_PRE);
                        nsap.Add(new SelectListItem()
                        {
                            Text = dd.NUM_PRE, Value = dd.NUM_PRE
                        });
                    }
                    if (dd.USUARIOD_ID != null && !user1.Contains(dd.USUARIOD_ID))
                    {
                        user1.Add(dd.USUARIOD_ID);
                        user.Add(new SelectListItem()
                        {
                            Text = u.ID + " - " + u.NOMBRE + " " + u.APELLIDO_P + " " + u.APELLIDO_M, Value = u.ID
                        });
                    }
                    if (dd.NUM_DOC.ToString() != null && !ndoc1.Contains(dd.NUM_DOC.ToString()))
                    {
                        ndoc1.Add(dd.NUM_DOC.ToString());
                        ndoc.Add(new SelectListItem()
                        {
                            Text = dd.NUM_DOC.ToString(), Value = dd.NUM_DOC.ToString()
                        });
                    }
                    if (dd.MONTO_DOC_MD != null && !mont1.Contains(dd.MONTO_DOC_MD.ToString()))
                    {
                        mont1.Add(dd.MONTO_DOC_MD.ToString());
                        mont.Add(new SelectListItem()
                        {
                            Text = Monedas(dd.MONTO_DOC_MD, dd.MONEDA_ID), Value = dd.MONTO_DOC_MD.ToString()
                        });
                    }
                }
                var moneda = db.MONEDAs.Where(m => m.ACTIVO == true).Select(m => new { Value = m.WAERS, Text = m.WAERS + " - " + m.LTEXT }).ToList();
                //var stat = db.DOCUMENTOes.Select(x => new { Value = x.ESTATUS, Text = x.ESTATUS }).Distinct().ToList();

                List <SelectListItem> stat = new List <SelectListItem>
                {
                    new SelectListItem()
                    {
                        Text = "Eliminando Solicitud", Value = ",A,,,,"
                    },
                    new SelectListItem()
                    {
                        Text = "Error Eliminar", Value = ",B,,,,"
                    },
                    new SelectListItem()
                    {
                        Text = "Solicitud Eliminada", Value = ",C,,,,"
                    },
                    new SelectListItem()
                    {
                        Text = "Borrador", Value = "B,,,,,"
                    },
                    new SelectListItem()
                    {
                        Text = "Contabilizado SAP", Value = "A,,,,,"
                    },
                    new SelectListItem()
                    {
                        Text = "Procesando Preliminar", Value = "N,,,null/P,G,"
                    },
                    new SelectListItem()
                    {
                        Text = "Error Preliminar Portal", Value = "N,,,null/P,E,"
                    },
                    new SelectListItem()
                    {
                        Text = "Error Preliminar SAP", Value = "N,,E,,E,"
                    },
                    new SelectListItem()
                    {
                        Text = "Se Generó Preliminar SAP", Value = "N,,P,,G,"
                    },
                    new SelectListItem()
                    {
                        Text = "Pendiente Aprobador", Value = "F,,,P/S,G,P"
                    },
                    new SelectListItem()
                    {
                        Text = "Pendiente Contabilizar", Value = "C,,,P,G,P"
                    },
                    new SelectListItem()
                    {
                        Text = "Error Contabilizar Portal", Value = "C,,,A,E,P"
                    },
                    new SelectListItem()
                    {
                        Text = "Procesando Contabilizar SAP", Value = "C,,!E,A,G,"
                    },
                    new SelectListItem()
                    {
                        Text = "Error Contabilizar SAP", Value = "C,,E,A,,P"
                    },
                    new SelectListItem()
                    {
                        Text = "Por Contabilizar", Value = "C,,,A,,"
                    },
                    new SelectListItem()
                    {
                        Text = "Contabilizar SAP", Value = "P,,,A,,"
                    },
                    new SelectListItem()
                    {
                        Text = "Aprobada", Value = ",,,A,,"
                    },
                    new SelectListItem()
                    {
                        Text = "Pendiente Corrección", Value = "F,,,R,G,P"
                    },
                    //new SelectListItem() { Text = "Pendiente Tax", Value = ",,,T,," },
                    new SelectListItem()
                    {
                        Text = "Estatus desconocido", Value = ",,,,,"
                    }
                };
                List <SelectListItem> lst = new List <SelectListItem>
                {
                    new SelectListItem()
                    {
                        Text = "Pagado", Value = "P"
                    },
                    new SelectListItem()
                    {
                        Text = "Efectivamente Pagado", Value = "EP"
                    }
                };

                ViewBag.tsol    = new SelectList(tsoll, "Value", "Text");
                ViewBag.bukrs   = new SelectList(sociedades, "Value", "Text");
                ViewBag.fecha   = new SelectList(fechas, "Value", "Text");
                ViewBag.payer   = new SelectList(prov, "Value", "Text");
                ViewBag.num_pre = new SelectList(nsap, "Value", "Text");
                ViewBag.user    = new SelectList(user, "Value", "Text");
                ViewBag.num_doc = new SelectList(ndoc, "Value", "Text");
                ViewBag.monto   = new SelectList(mont, "Value", "Text");
                ViewBag.moneda  = new SelectList(moneda, "Value", "Text");
                ViewBag.estatus = new SelectList(stat, "Value", "Text");
                ViewBag.pagado  = new SelectList(lst, "Value", "Text");
            }
            return(View());
        }
Ejemplo n.º 15
0
        public ActionResult ReportTemplate(decimal id)
        {
            int pagina = 1101; //ID EN BASE DE DATOS

            using (WFARTHAEntities db = new WFARTHAEntities())
            {
                FnCommon.ObtenerConfPage(db, pagina, User.Identity.Name, this.ControllerContext.Controller);

                SP_CABECERA_Result       c = db.SP_CABECERA(id).Single();
                List <SP_DETALLE_Result> d = db.SP_DETALLE(id).ToList();
                //List<SP_FIRMAS_Result> f = db.SP_FIRMAS(id).ToList();
                List <ReportFirmasResult> f = db.Database.SqlQuery <ReportFirmasResult>("SP_FIRMAS @NUM_DOC", new SqlParameter("@NUM_DOC", id)).ToList();

                ReportCabecera cab = new ReportCabecera
                {
                    NUM_DOC          = c.NUM_DOC.ToString(),
                    NUM_PRE          = c.NUM_PRE,
                    SOCIEDAD_ID      = c.SOCIEDAD_ID,
                    SOCIEDAD_TEXT    = c.SOCIEDAD_TEXT,
                    PAYER_ID         = (!string.IsNullOrEmpty(c.PAYER_ID) ? c.PAYER_ID : "").Trim(),
                    PAYER_NAME1      = c.PAYER_NAME1,
                    MONTO_DOC_MD     = Monedas(c.MONTO_DOC_MD, c.MONEDA_ID),
                    CONDICIONES_ID   = c.CONDICIONES_ID,
                    CONDICIONES_TEXT = c.CONDICIONES_TEXT,
                    CONCEPTO         = (c.CONCEPTO ?? "")
                };
                List <ReportDetalle> det = new List <ReportDetalle>();
                foreach (SP_DETALLE_Result dd in d)
                {
                    ReportDetalle rd = new ReportDetalle
                    {
                        CONCEPTO    = dd.CONCEPTO,
                        DESCRIPCION = dd.DESCRIPCION,
                        FACTURA     = dd.FACTURA,
                        IMPORTE     = Monedas(dd.IMPORTE, c.MONEDA_ID),
                        TEXTO       = (dd.TEXTO ?? "")
                    };
                    det.Add(rd);
                }
                List <ReportFirmas> fir = new List <ReportFirmas>();
                var          cont       = 1;
                var          cont2      = f.Count();
                ReportFirmas rf         = new ReportFirmas();
                for (int i = 0; i < f.Count(); i++)
                {
                    if (cont == 1)
                    {
                        rf = new ReportFirmas();
                    }
                    switch (cont)
                    {
                    case 1:
                        rf.fasen1         = f[i].fasen.ToString();
                        rf.faseletrero1   = f[i].faseletrero;
                        rf.usuariocadena1 = f[i].usuariocadena;
                        rf.fecham1        = string.Format(DateTime.Parse(f[i].fecham.ToString()).ToString(@"dd/MM/yyyy"));
                        cont++;
                        cont2--;
                        break;

                    case 2:
                        rf.fasen2         = (f[i].fasen.ToString() ?? "");
                        rf.faseletrero2   = (f[i].faseletrero ?? "");
                        rf.usuariocadena2 = (f[i].usuariocadena ?? "");
                        rf.fecham2        = (string.Format(DateTime.Parse(f[i].fecham.ToString()).ToString(@"dd/MM/yyyy")) ?? "");
                        cont++;
                        cont2--;
                        break;

                    case 3:
                        rf.fasen3         = (f[i].fasen.ToString() ?? "");
                        rf.faseletrero3   = (f[i].faseletrero ?? "");
                        rf.usuariocadena3 = (f[i].usuariocadena ?? "");
                        rf.fecham3        = (string.Format(DateTime.Parse(f[i].fecham.ToString()).ToString(@"dd/MM/yyyy")) ?? "");
                        cont++;
                        cont2--;
                        break;

                    case 4:
                        rf.fasen4         = (f[i].fasen.ToString() ?? "");
                        rf.faseletrero4   = (f[i].faseletrero ?? "");
                        rf.usuariocadena4 = (f[i].usuariocadena ?? "");
                        rf.fecham4        = (string.Format(DateTime.Parse(f[i].fecham.ToString()).ToString(@"dd/MM/yyyy")) ?? "");
                        cont++;
                        cont2--;
                        break;

                    case 5:
                        rf.fasen5         = (f[i].fasen.ToString() ?? "");
                        rf.faseletrero5   = (f[i].faseletrero ?? "");
                        rf.usuariocadena5 = (f[i].usuariocadena ?? "");
                        rf.fecham5        = (string.Format(DateTime.Parse(f[i].fecham.ToString()).ToString(@"dd/MM/yyyy")) ?? "");
                        cont = 1;
                        cont2--;
                        break;
                    }
                    if (cont == 1 || cont2 == 0)
                    {
                        fir.Add(rf);
                    }
                }

                ReportEsqueleto re         = new ReportEsqueleto();
                string          recibeRuta = re.crearPDF(cab, det, fir);
                ViewBag.url   = Request.Url.OriginalString.Replace(Request.Url.PathAndQuery, "") + HostingEnvironment.ApplicationVirtualPath + "/" + recibeRuta;
                ViewBag.miNum = c.NUM_DOC;

                return(View());
            }
        }
        public string crearPDF(ReportCabecera RC, List <ReportDetalle> RD, List <ReportFirmas> RF)
        {
            var fncolor = new BaseColor(255, 255, 255);

            iTextSharp.text.Font letraTabNegrita = FontFactory.GetFont(FontFactory.HELVETICA_BOLD, 7, fncolor);
            iTextSharp.text.Font letraTab        = FontFactory.GetFont(FontFactory.HELVETICA, 7);
            iTextSharp.text.Font negritaPeque    = FontFactory.GetFont(FontFactory.HELVETICA_BOLD, 11);
            iTextSharp.text.Font normalPeque     = FontFactory.GetFont(FontFactory.HELVETICA, 11);
            iTextSharp.text.Font normalMasPeque  = FontFactory.GetFont(FontFactory.HELVETICA, 8);
            iTextSharp.text.Font titulo          = FontFactory.GetFont(FontFactory.HELVETICA_BOLD, 16);
            PdfPTable            tabCabecera     = new PdfPTable(1);
            PdfPTable            tablaDatos      = new PdfPTable(1);
            PdfPTable            tablaDatos1     = new PdfPTable(2);
            PdfPTable            tablaDatos2     = new PdfPTable(4);
            PdfPTable            tablaDatos3     = new PdfPTable(1);
            PdfPTable            tablaDatos4     = new PdfPTable(6);

            string ruta = "";

            using (WFARTHAEntities db = new WFARTHAEntities())
            {
                DateTime   fechaCreacion = DateTime.Now;
                string     nombreArchivo = string.Format("{0}.pdf", RC.NUM_DOC + "-" + fechaCreacion.ToString(@"yyyyMMdd"));
                string     rutaCompleta  = HttpContext.Current.Server.MapPath("~/PdfTemp/" + nombreArchivo);
                FileStream fsDocumento   = new FileStream(rutaCompleta, FileMode.Create);
                //PASO UNO DEMINIMOS EL TIPO DOCUMENTO CON LOS RESPECTIVOS MARGENES (A4,IZQ,DER,TOP,BOT)
                Document  pdfDoc    = new Document(PageSize.A4, 30f, 30f, 60f, 30f);
                PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDoc, fsDocumento);

                try
                {
                    pdfDoc.Open();

                    iTextSharp.text.Image imagen2 = iTextSharp.text.Image.GetInstance(HttpContext.Current.Server.MapPath("~/images/artha.png"));
                    PdfPCell celLineaCabecera     = new PdfPCell {
                        Image = imagen2, Border = 0, Padding = 3, FixedHeight = 60f, HorizontalAlignment = PdfPCell.ALIGN_RIGHT
                    };
                    tabCabecera.AddCell(celLineaCabecera);
                    tabCabecera.TotalWidth = pdfDoc.PageSize.Width;
                    tabCabecera.WriteSelectedRows(0, -1, 0, pdfDoc.PageSize.Top, pdfWriter.DirectContent);

                    Paragraph frase1;

                    frase1 = new Paragraph("Solicitud de Cheques", titulo)
                    {
                        Alignment = Element.ALIGN_LEFT
                    }; pdfDoc.Add(frase1);
                    pdfDoc.Add(new Chunk(""));

                    //Cabecera
                    pdfDoc.Add(new Chunk(""));
                    tablaDatos1.HorizontalAlignment = Element.ALIGN_LEFT;
                    tablaDatos1.SetWidthPercentage(new float[] { 100, 500 }, PageSize.A4);
                    PdfPCell celda1  = new PdfPCell(new Paragraph("Folio Portal: ", negritaPeque)); celda1.Border = 0; tablaDatos1.AddCell(celda1);
                    PdfPCell celda2  = new PdfPCell(new Paragraph(RC.NUM_DOC, normalPeque)); celda2.Border = 0; tablaDatos1.AddCell(celda2);
                    PdfPCell celda3  = new PdfPCell(new Paragraph("Folio SAP: ", negritaPeque)); celda3.Border = 0; tablaDatos1.AddCell(celda3);
                    PdfPCell celda4  = new PdfPCell(new Paragraph(RC.NUM_PRE, normalPeque)); celda4.Border = 0; tablaDatos1.AddCell(celda4);
                    PdfPCell celda5  = new PdfPCell(new Paragraph("Compañia: ", negritaPeque)); celda5.Border = 0; tablaDatos1.AddCell(celda5);
                    PdfPCell celda6  = new PdfPCell(new Paragraph(RC.SOCIEDAD_ID + " " + RC.SOCIEDAD_TEXT, normalPeque)); celda6.Border = 0; tablaDatos1.AddCell(celda6);
                    PdfPCell celda7  = new PdfPCell(new Paragraph("Nominar a: ", negritaPeque)); celda7.Border = 0; tablaDatos1.AddCell(celda7);
                    PdfPCell celda8  = new PdfPCell(new Paragraph(RC.PAYER_ID + " " + RC.PAYER_NAME1, normalPeque)); celda8.Border = 0; tablaDatos1.AddCell(celda8);
                    PdfPCell celda9  = new PdfPCell(new Paragraph("Pagar en: ", negritaPeque)); celda9.Border = 0; tablaDatos1.AddCell(celda9);
                    PdfPCell celda10 = new PdfPCell(new Paragraph("", normalPeque)); celda10.Border = 0; tablaDatos1.AddCell(celda10);
                    PdfPCell celda11 = new PdfPCell(new Paragraph("Importe: ", negritaPeque)); celda11.Border = 0; tablaDatos1.AddCell(celda11);
                    PdfPCell celda12 = new PdfPCell(new Paragraph(RC.MONTO_DOC_MD, normalPeque)); celda12.Border = 0; tablaDatos1.AddCell(celda12);
                    PdfPCell celda13 = new PdfPCell(new Paragraph("Fecha de Contabilización:", negritaPeque)); celda13.Border = 0; tablaDatos1.AddCell(celda13);
                    PdfPCell celda14 = new PdfPCell(new Paragraph("", normalPeque)); celda14.Border = 0; tablaDatos1.AddCell(celda14);
                    PdfPCell celda15 = new PdfPCell(new Paragraph("Prioridad de Pago:", negritaPeque)); celda15.Border = 0; tablaDatos1.AddCell(celda15);
                    PdfPCell celda16 = new PdfPCell(new Paragraph(RC.CONDICIONES_ID + " " + RC.CONDICIONES_TEXT, normalPeque)); celda16.Border = 0; tablaDatos1.AddCell(celda16);
                    pdfDoc.Add(tablaDatos1);
                    pdfDoc.Add(new Chunk("\n"));

                    //Tabla de detalle
                    tablaDatos2.SetWidthPercentage(new float[] { 250, 250, 50, 50 }, PageSize.A4);
                    PdfPCell Titulo1 = new PdfPCell(new Paragraph(" ", letraTabNegrita))
                    {
                        Border = 0, Colspan = 4, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Titulo1);
                    PdfPCell Cabecera1 = new PdfPCell(new Paragraph("Concepto Afectado", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera1);
                    PdfPCell Cabecera2 = new PdfPCell(new Paragraph("Descripción", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera2);
                    PdfPCell Cabecera3 = new PdfPCell(new Paragraph("Factura", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera3);
                    PdfPCell Cabecera4 = new PdfPCell(new Paragraph("Importe", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Cabecera4);
                    bool      col = true;
                    BaseColor fondo;
                    foreach (ReportDetalle det in RD)
                    {
                        if (col == true)
                        {
                            fondo = new BaseColor(230, 230, 230);
                            col   = false;
                        }
                        else
                        {
                            fondo = new BaseColor(255, 255, 255);
                            col   = true;
                        }
                        PdfPCell Cuerpo1 = new PdfPCell(new Paragraph(det.CONCEPTO + "\n" + (!string.IsNullOrEmpty(det.TEXTO) ? det.TEXTO : null), letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo1);
                        PdfPCell Cuerpo2 = new PdfPCell(new Paragraph(det.DESCRIPCION, letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo2);
                        PdfPCell Cuerpo3 = new PdfPCell(new Paragraph(det.FACTURA, letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo3);
                        PdfPCell Cuerpo4 = new PdfPCell(new Paragraph(det.IMPORTE, letraTab))
                        {
                            Border = 1, BackgroundColor = fondo, HorizontalAlignment = Element.ALIGN_RIGHT, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos2.AddCell(Cuerpo4);
                    }
                    PdfPCell Total1 = new PdfPCell(new Paragraph("", letraTabNegrita))
                    {
                        Border = 1, BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Total1);
                    PdfPCell Total2 = new PdfPCell(new Paragraph("", letraTabNegrita))
                    {
                        Border = 1, BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Total2);
                    PdfPCell Total3 = new PdfPCell(new Paragraph("Total", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Total3);
                    PdfPCell Total4 = new PdfPCell(new Paragraph(RC.MONTO_DOC_MD, letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), HorizontalAlignment = Element.ALIGN_RIGHT, BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos2.AddCell(Total4);
                    pdfDoc.Add(tablaDatos2);
                    pdfDoc.Add(new Chunk("\n"));

                    //Tabla Observaciones
                    tablaDatos3.SetWidthPercentage(new float[] { 600 }, PageSize.A4);
                    PdfPCell Cabecera5 = new PdfPCell(new Paragraph("Observaciones de la Solicitud", letraTabNegrita))
                    {
                        Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos3.AddCell(Cabecera5);
                    PdfPCell Observacion = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(RC.CONCEPTO) ? RC.CONCEPTO : null), letraTab))
                    {
                        Border = 1, BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos3.AddCell(Observacion);
                    //PdfPCell Espacio1 = new PdfPCell(new Paragraph(" ", letraTab)) { Border = 1, BorderColor = new BaseColor(240, 240, 240) }; tablaDatos3.AddCell(Espacio1);
                    //PdfPCell Solicitante = new PdfPCell(new Paragraph("Solicitante: " + "", letraTab)) { Border = 1, BorderColor = new BaseColor(240, 240, 240) }; tablaDatos3.AddCell(Solicitante);
                    //PdfPCell Soporte = new PdfPCell(new Paragraph("Soporte: " + "", letraTab)) { Border = 1, BorderColor = new BaseColor(240, 240, 240) }; tablaDatos3.AddCell(Soporte);
                    //PdfPCell Gerencia = new PdfPCell(new Paragraph("Gerencia: " + "", letraTab)) { Border = 1, BorderColor = new BaseColor(240, 240, 240) }; tablaDatos3.AddCell(Gerencia);
                    //PdfPCell Sub = new PdfPCell(new Paragraph("Sub Dirección: " + "", letraTab)) { Border = 1, BorderColor = new BaseColor(240, 240, 240) }; tablaDatos3.AddCell(Sub);
                    //PdfPCell Cuentas = new PdfPCell(new Paragraph("Cuentas por Pagar: " + "", letraTab)) { Border = 1, BorderColor = new BaseColor(240, 240, 240) }; tablaDatos3.AddCell(Cuentas);
                    //PdfPCell Espacio2 = new PdfPCell(new Paragraph(" ", letraTab)) { Border = 1, BorderColor = new BaseColor(240, 240, 240) }; tablaDatos3.AddCell(Espacio2);
                    PdfPCell Tesoreria = new PdfPCell(new Paragraph("Tesorería: " + "", letraTab))
                    {
                        Border = 1, BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos3.AddCell(Tesoreria);
                    //PdfPCell Espacio3 = new PdfPCell(new Paragraph(" ", letraTab)) { Border = 1, BorderColor = new BaseColor(240, 240, 240) }; tablaDatos3.AddCell(Espacio3);
                    pdfDoc.Add(tablaDatos3);
                    pdfDoc.Add(new Chunk("\n"));

                    //Tabla Firmas
                    tablaDatos4.SetWidthPercentage(new float[] { 50, 110, 110, 110, 110, 110 }, PageSize.A4);
                    PdfPCell Titulo = new PdfPCell(new Paragraph("Firmas Electrónicas", letraTabNegrita))
                    {
                        Border = 0, Colspan = 6, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                    }; tablaDatos4.AddCell(Titulo);
                    foreach (ReportFirmas fir in RF)
                    {
                        PdfPCell Cabecera6 = new PdfPCell(new Paragraph("Sección", letraTabNegrita))
                        {
                            Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Cabecera6);
                        PdfPCell Cabecera7 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.faseletrero1) ? fir.faseletrero1 : ""), letraTabNegrita))
                        {
                            Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Cabecera7);
                        PdfPCell Cabecera8 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.faseletrero2) ? fir.faseletrero2 : ""), letraTabNegrita))
                        {
                            Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Cabecera8);
                        PdfPCell Cabecera9 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.faseletrero3) ? fir.faseletrero3 : ""), letraTabNegrita))
                        {
                            Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Cabecera9);
                        PdfPCell Cabecera10 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.faseletrero4) ? fir.faseletrero4 : ""), letraTabNegrita))
                        {
                            Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Cabecera10);
                        PdfPCell Cabecera11 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.faseletrero5) ? fir.faseletrero5 : ""), letraTabNegrita))
                        {
                            Border = 1, BackgroundColor = new BaseColor(0, 53, 100), BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Cabecera11);
                        PdfPCell Co1 = new PdfPCell(new Paragraph("Co./Fi.", letraTab))
                        {
                            Border = 1, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Co1);
                        PdfPCell Co2 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.usuariocadena1) ? fir.usuariocadena1 : ""), letraTab))
                        {
                            Border = 1, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Co2);
                        PdfPCell Co3 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.usuariocadena2) ? fir.usuariocadena2 : ""), letraTab))
                        {
                            Border = 1, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Co3);
                        PdfPCell Co4 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.usuariocadena3) ? fir.usuariocadena3 : ""), letraTab))
                        {
                            Border = 1, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Co4);
                        PdfPCell Co5 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.usuariocadena4) ? fir.usuariocadena4 : ""), letraTab))
                        {
                            Border = 1, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Co5);
                        PdfPCell Co6 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.usuariocadena5) ? fir.usuariocadena5 : ""), letraTab))
                        {
                            Border = 1, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Co6);
                        PdfPCell Fecha1 = new PdfPCell(new Paragraph("Fecha", letraTab))
                        {
                            Border = 1, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Fecha1);
                        PdfPCell Fecha2 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.fecham1) ? fir.fecham1 : ""), letraTab))
                        {
                            Border = 1, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Fecha2);
                        PdfPCell Fecha3 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.fecham2) ? fir.fecham2 : ""), letraTab))
                        {
                            Border = 1, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Fecha3);
                        PdfPCell Fecha4 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.fecham3) ? fir.fecham3 : ""), letraTab))
                        {
                            Border = 1, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Fecha4);
                        PdfPCell Fecha5 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.fecham4) ? fir.fecham4 : ""), letraTab))
                        {
                            Border = 1, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Fecha5);
                        PdfPCell Fecha6 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.fecham5) ? fir.fecham5 : ""), letraTab))
                        {
                            Border = 1, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Fecha6);
                        PdfPCell Valida1 = new PdfPCell(new Paragraph("Valida", letraTab))
                        {
                            Border = 1, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Valida1);
                        PdfPCell Valida2 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.valida1) ? fir.valida1 : ""), letraTab))
                        {
                            Border = 1, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Valida2);
                        PdfPCell Valida3 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.valida2) ? fir.valida2 : ""), letraTab))
                        {
                            Border = 1, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Valida3);
                        PdfPCell Valida4 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.valida3) ? fir.valida3 : ""), letraTab))
                        {
                            Border = 1, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Valida4);
                        PdfPCell Valida5 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.valida4) ? fir.valida4 : ""), letraTab))
                        {
                            Border = 1, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Valida5);
                        PdfPCell Valida6 = new PdfPCell(new Paragraph((!string.IsNullOrEmpty(fir.valida5) ? fir.valida5 : ""), letraTab))
                        {
                            Border = 1, BorderColor = new BaseColor(240, 240, 240)
                        }; tablaDatos4.AddCell(Valida6);
                    }
                    pdfDoc.Add(tablaDatos4);
                    pdfDoc.Close();

                    ruta = "/PdfTemp/" + nombreArchivo;
                }
                catch (Exception ex)
                {
                    ex.Message.ToString();
                }
                return(ruta);
            }
        }