예제 #1
0
        public JsonResult Det_Aprob2(string bukrs, string puesto, string spras)
        {
            TAT001Entities db = new TAT001Entities();
            int            p  = Int16.Parse(puesto);
            DET_APROBH     dh = db.DET_APROBH.Where(a => a.SOCIEDAD_ID.Equals(bukrs) & a.PUESTOC_ID == p).OrderByDescending(a => a.VERSION).FirstOrDefault();

            if (dh != null)
            {
                var c = (from N in db.DET_APROBP
                         join St in db.PUESTOTs
                         on N.PUESTOA_ID equals St.PUESTO_ID
                         where N.SOCIEDAD_ID.Equals(bukrs) & N.PUESTOC_ID.Equals(p) & St.SPRAS_ID.Equals(spras) & N.VERSION.Equals(dh.VERSION)
                         //where N.BUKRS.Equals(bukrs)
                         select new { N.POS, N.PUESTOA_ID.Value, St.TXT50, N.MONTO, PRESUPUESTO = (bool)N.PRESUPUESTO.Value }).ToList();

                TAX_LAND tl = db.TAX_LAND.Where(a => a.SOCIEDAD_ID.Equals(bukrs) & a.ACTIVO == true).FirstOrDefault();
                if (tl != null)
                {
                    var col = (from St in db.PUESTOTs
                               where St.PUESTO_ID == 9 & St.SPRAS_ID.Equals(spras)
                               //where N.BUKRS.Equals(bukrs)
                               select new { POS = 98, Value = St.PUESTO_ID, St.TXT50, MONTO = (decimal?)decimal.Parse("-1"), PRESUPUESTO = false });
                    c.AddRange(col);
                }
                var        ca = c.OrderBy(a => a.POS);
                JsonResult cc = Json(ca, JsonRequestBehavior.AllowGet);
                return(cc);
            }
            else
            {
                return(null);
            }
        }
예제 #2
0
        public ActionResult DeleteConfirmed(TAX_LAND id)
        {
            TAX_LAND tAX_LAND = db.TAX_LAND.Where(t => t.SOCIEDAD_ID == id.SOCIEDAD_ID).FirstOrDefault();

            tAX_LAND.PAIS_ID         = tAX_LAND.PAI.LAND;
            tAX_LAND.ACTIVO          = false;
            db.Entry(tAX_LAND).State = EntityState.Modified;
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
예제 #3
0
 public ActionResult Edit([Bind(Include = "SOCIEDAD_ID,PAIS_ID,ACTIVO")] TAX_LAND tAX_LAND)
 {
     if (ModelState.IsValid)
     {
         db.Entry(tAX_LAND).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.PAIS_ID = new SelectList(db.PAIS, "LAND", "SPRAS", tAX_LAND.PAIS_ID);
     return(View(tAX_LAND));
 }
예제 #4
0
        // GET: Txl/Details/5
        public ActionResult Details(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            TAX_LAND tAX_LAND = db.TAX_LAND.Find(id);

            if (tAX_LAND == null)
            {
                return(HttpNotFound());
            }
            return(View(tAX_LAND));
        }
예제 #5
0
        // GET: Txl/Create
        public ActionResult Create()
        {
            int pagina = 812; //ID EN BASE DE DATOS

            using (TAT001Entities db = new TAT001Entities())
            {
                string u = User.Identity.Name;
                //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(811) || a.PAGINA_ID.Equals(0)) && a.SPRAS_ID.Equals(user.SPRAS_ID)).ToList();

                try
                {
                    string p = Session["pais"].ToString();
                    ViewBag.pais = p + ".svg";
                }
                catch
                {
                    //ViewBag.pais = "mx.svg";
                    //return RedirectToAction("Pais", "Home");
                }
                Session["spras"] = user.SPRAS_ID;
                ViewBag.lan      = user.SPRAS_ID;
            }
            //Solo añadire a una tercer lista las sociedades disponibles
            List <TAX_LAND> lstT   = db.TAX_LAND.ToList();
            List <SOCIEDAD> lstS   = db.SOCIEDADs.ToList();
            List <SOCIEDAD> lstSoc = new List <SOCIEDAD>();

            for (int y = 0; y < lstS.Count; y++)
            {
                //SOCIEDAD sc = lstT.Where(x => x.SOCIEDAD_ID == lstS[y].BUKRS).FirstOrDefault();
                TAX_LAND sc = lstT.Where(x => x.SOCIEDAD_ID == lstS[y].BUKRS).FirstOrDefault();
                if (sc == null)
                {
                    lstSoc.Add(lstS[y]);
                }
            }
            //ViewBag.Sociedad = new SelectList(lstSoc, "BUKRS", "BUKRS");
            ViewBag.SOCIEDAD_ID = new SelectList(db.SOCIEDADs, "BUKRS", "BUTXT");
            ViewBag.PAIS_ID     = new SelectList(db.PAIS, "LAND", "LANDX");
            return(View());
        }
예제 #6
0
        // GET: Txl/Edit/5
        public ActionResult Edit(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            TAX_LAND tAX_LAND = db.TAX_LAND.Find(id);

            if (tAX_LAND == null)
            {
                return(HttpNotFound());
            }
            ViewBag.PAIS_ID = new SelectList(db.PAIS, "LAND", "SPRAS", tAX_LAND.PAIS_ID);
            return(View(tAX_LAND));
        }
예제 #7
0
 public ActionResult Create([Bind(Include = "SOCIEDAD_ID,PAIS_ID,ACTIVO")] TAX_LAND tAX_LAND)
 {
     if (ModelState.IsValid)
     {
         tAX_LAND.SOCIEDAD_ID = tAX_LAND.SOCIEDAD_ID;
         tAX_LAND.PAIS_ID     = tAX_LAND.PAIS_ID;
         tAX_LAND.ACTIVO      = true;
         db.TAX_LAND.Add(tAX_LAND);
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.SOCIEDAD_ID = new SelectList(db.SOCIEDADs, "BUKRS", "BUTXT", tAX_LAND.SOCIEDAD_ID);
     ViewBag.PAIS_ID     = new SelectList(db.PAIS, "LAND", "LAND", tAX_LAND.PAIS_ID);
     return(View(tAX_LAND));
 }
예제 #8
0
        // GET: Txl/Delete/5
        public ActionResult Delete(string sid, string pid)
        {
            int pagina = 813; //ID EN BASE DE DATOS

            using (TAT001Entities db = new TAT001Entities())
            {
                string u = User.Identity.Name;
                //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(811) || a.PAGINA_ID.Equals(0)) && a.SPRAS_ID.Equals(user.SPRAS_ID)).ToList();

                try
                {
                    string p = Session["pais"].ToString();
                    ViewBag.pais = p + ".svg";
                }
                catch
                {
                    //ViewBag.pais = "mx.svg";
                    //return RedirectToAction("Pais", "Home");
                }
                Session["spras"] = user.SPRAS_ID;
                ViewBag.lan      = user.SPRAS_ID;
            }
            if (sid == null && pid == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            TAX_LAND tAX_LAND = db.TAX_LAND.Where(x => x.SOCIEDAD_ID == sid && x.PAIS_ID == pid).FirstOrDefault();

            if (tAX_LAND == null)
            {
                return(HttpNotFound());
            }
            return(View(tAX_LAND));
        }
예제 #9
0
        public string procesa(FLUJO f, string recurrente)
        {
            string         correcto = String.Empty;
            TAT001Entities db       = new TAT001Entities();
            FLUJO          actual   = new FLUJO();

            if (f.ESTATUS.Equals("I"))//---------------------------NUEVO REGISTRO
            {
                actual.NUM_DOC = f.NUM_DOC;
                DOCUMENTO d = db.DOCUMENTOes.Find(actual.NUM_DOC);
                actual.COMENTARIO = f.COMENTARIO;
                actual.ESTATUS    = f.ESTATUS;
                actual.FECHAC     = f.FECHAC;
                actual.FECHAM     = f.FECHAM;
                actual.LOOP       = f.LOOP;
                actual.NUM_DOC    = f.NUM_DOC;
                actual.POS        = f.POS;
                //DET_AGENTEC dah = db.DET_AGENTEC.Where(a => a.USUARIOC_ID.Equals(d.USUARIOD_ID) & a.PAIS_ID == d.PAIS_ID &
                //                    a.VKORG.Equals(d.VKORG) & a.VTWEG.Equals(d.VTWEG) & a.SPART.Equals(d.SPART) & a.KUNNR.Equals(d.PAYER_ID))
                //                    .OrderByDescending(a => a.VERSION).FirstOrDefault();
                CLIENTEF cf = db.CLIENTEFs.Where(a => a.VKORG.Equals(d.VKORG) & a.VTWEG.Equals(d.VTWEG) & a.SPART.Equals(d.SPART) & a.KUNNR.Equals(d.PAYER_ID)
                                                 ).OrderByDescending(a => a.VERSION).FirstOrDefault();

                actual.DETPOS      = 1;
                actual.DETVER      = cf.VERSION;
                actual.USUARIOA_ID = f.USUARIOA_ID;
                actual.USUARIOD_ID = f.USUARIOD_ID;
                actual.WF_POS      = f.WF_POS;
                actual.WF_VERSION  = f.WF_VERSION;
                actual.WORKF_ID    = f.WORKF_ID;
                f.ESTATUS          = "A";
                actual.ESTATUS     = f.ESTATUS;
                db.FLUJOes.Add(actual);

                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();
                }
                else
                {
                    WORKFP autoriza = db.WORKFPs.Where(a => a.ID.Equals(actual.WORKF_ID) & a.VERSION.Equals(actual.WF_VERSION) & a.ACCION_ID == 5).FirstOrDefault();
                    next = db.WORKFPs.Where(a => a.ID.Equals(actual.WORKF_ID) & a.VERSION.Equals(actual.WF_VERSION) & a.POS == autoriza.NS_ACCEPT).FirstOrDefault();
                }
                if (next.NEXT_STEP.Equals(99))//--------FIN DEL WORKFLOW
                {
                    d.ESTATUS_WF = "A";
                    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;
                    nuevo.LOOP       = 1;

                    if (next.ACCION.TIPO == "E")
                    {
                        nuevo.USUARIOA_ID = null;
                        nuevo.DETPOS      = 0;
                        nuevo.DETVER      = 0;
                    }
                    else
                    {
                        if (recurrente != "X")
                        {
                            FLUJO detA = determinaAgenteI(cf);
                            nuevo.USUARIOA_ID = detA.USUARIOA_ID;
                            nuevo.USUARIOD_ID = nuevo.USUARIOA_ID;

                            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 = cf.VERSION;
                        }
                        else
                        {
                            nuevo.USUARIOA_ID = null;
                            nuevo.DETPOS      = 0;
                            nuevo.DETVER      = 0;
                        }
                    }
                    nuevo.ESTATUS = "P";
                    nuevo.FECHAC  = DateTime.Now;
                    nuevo.FECHAM  = DateTime.Now;

                    if (paso_a.EMAIL.Equals("X"))
                    {
                        correcto = "1";
                    }
                    d.ESTATUS_WF = "P";

                    db.FLUJOes.Add(nuevo);
                    db.Entry(d).State = EntityState.Modified;

                    db.SaveChanges();
                }
            }
            else if (f.ESTATUS.Equals("A"))   //---------------------EN PROCESO DE APROBACIÓN
            {
                actual = db.FLUJOes.Where(a => a.NUM_DOC.Equals(f.NUM_DOC) & a.POS == f.POS).OrderByDescending(a => a.POS).FirstOrDefault();

                if (!actual.ESTATUS.Equals("P"))
                {
                    return("1");//-----------------YA FUE PROCESADA
                }
                else
                {
                    var wf = actual.WORKFP;
                    actual.ESTATUS         = f.ESTATUS;
                    actual.FECHAM          = f.FECHAM;
                    actual.COMENTARIO      = f.COMENTARIO;
                    actual.USUARIOA_ID     = f.USUARIOA_ID;
                    db.Entry(actual).State = EntityState.Modified;

                    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();
                    bool   ban    = true;
                    while (ban)         //--------------PARA LOOP
                    {
                        int next_step_a = 0;
                        int next_step_r = 0;
                        if (paso_a.NEXT_STEP != null)
                        {
                            next_step_a = (int)paso_a.NEXT_STEP;
                        }
                        if (paso_a.NS_ACCEPT != null)
                        {
                            next_step_a = (int)paso_a.NS_ACCEPT;
                        }
                        if (paso_a.NS_REJECT != null)
                        {
                            next_step_r = (int)paso_a.NS_REJECT;
                        }

                        WORKFP next = new WORKFP();
                        if (paso_a.ACCION.TIPO == "A" | paso_a.ACCION.TIPO == "N" | paso_a.ACCION.TIPO == "R" | paso_a.ACCION.TIPO == "T" | paso_a.ACCION.TIPO == "E" | paso_a.ACCION.TIPO == "B" | paso_a.ACCION.TIPO == "M") //Si está en proceso de aprobación
                        {
                            if (f.ESTATUS.Equals("A") | f.ESTATUS.Equals("N") | f.ESTATUS.Equals("M"))                                                                                                                         //APROBAR SOLICITUD
                            {
                                DOCUMENTO d = db.DOCUMENTOes.Find(actual.NUM_DOC);
                                next = db.WORKFPs.Where(a => a.ID.Equals(actual.WORKF_ID) & a.VERSION.Equals(actual.WF_VERSION) & a.POS == next_step_a).FirstOrDefault();

                                FLUJO nuevo = new FLUJO();
                                nuevo.WORKF_ID   = paso_a.ID;
                                nuevo.WF_VERSION = paso_a.VERSION;
                                nuevo.WF_POS     = next.POS;
                                nuevo.NUM_DOC    = actual.NUM_DOC;
                                nuevo.POS        = actual.POS + 1;
                                nuevo.LOOP       = 1;

                                FLUJO detA = new FLUJO();
                                if (paso_a.ACCION.TIPO == "N")
                                {
                                    actual.DETPOS = actual.DETPOS - 1;
                                }
                                int sop = 99;
                                if (next.ACCION.TIPO == "S")
                                {
                                    sop = 98;
                                }
                                //detA = determinaAgente(d, actual.USUARIOA_ID, actual.USUARIOD_ID, actual.DETPOS, next.LOOPS, sop);

                                CLIENTEF cf = db.CLIENTEFs.Where(a => a.VKORG.Equals(d.VKORG) & a.VTWEG.Equals(d.VTWEG) & a.SPART.Equals(d.SPART) & a.KUNNR.Equals(d.PAYER_ID)
                                                                 ).OrderByDescending(a => a.VERSION).FirstOrDefault();

                                detA = determinaAgenteC(d, cf, actual.DETPOS, sop, paso_a.ACCION.TIPO);
                                //nuevo.USUARIOA_ID = detA.USUARIOA_ID;



                                nuevo.USUARIOD_ID = detA.USUARIOA_ID;

                                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 = actual.DETVER;
                                if (paso_a.ACCION.TIPO == "N")
                                {
                                    nuevo.DETPOS  = nuevo.DETPOS + 1;
                                    actual.DETPOS = actual.DETPOS + 1;
                                }

                                if (d.DOCUMENTORECs.Count > 0)
                                {
                                    recurrente = "X";
                                }

                                if (nuevo.DETPOS == 0 | nuevo.DETPOS == 99)
                                {
                                    next = db.WORKFPs.Where(a => a.ID.Equals(actual.WORKF_ID) & a.VERSION.Equals(actual.WF_VERSION) & a.POS == next_step_a).FirstOrDefault();
                                    if (recurrente == "X" & next.ACCION.TIPO.Equals("P"))
                                    {
                                        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 != null)
                                        {
                                            next_step_a = (int)next.NEXT_STEP;
                                        }
                                        if (next.NS_ACCEPT != null)
                                        {
                                            next_step_a = (int)next.NS_ACCEPT;
                                        }
                                        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
                                    {
                                        //DOCUMENTO d = db.DOCUMENTOes.Find(actual.NUM_DOC);
                                        d.ESTATUS_WF = "A";
                                        if (paso_a.EMAIL.Equals("X"))
                                        {
                                            correcto = "2";
                                        }
                                        if (recurrente == "X")
                                        {
                                            FLUJO nuevos = new FLUJO();
                                            nuevos.WORKF_ID   = paso_a.ID;
                                            nuevos.WF_VERSION = paso_a.VERSION;
                                            nuevos.WF_POS     = next.POS;
                                            nuevos.NUM_DOC    = actual.NUM_DOC;
                                            nuevos.POS        = actual.POS + 1;
                                            nuevos.ESTATUS    = "A";
                                            nuevos.FECHAC     = DateTime.Now;
                                            nuevos.FECHAM     = DateTime.Now;

                                            d.ESTATUS = "A";

                                            db.FLUJOes.Add(nuevos);
                                            //db.SaveChanges();
                                            ban = false;
                                        }
                                    }
                                    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 + detA.POS;
                                        nuevo.NUM_DOC    = actual.NUM_DOC;
                                        nuevo.POS        = actual.POS + 1;
                                        nuevo.LOOP       = 1;//-----------------------------------

                                        //FLUJO detA = determinaAgente(d, actual.USUARIOA_ID, actual.USUARIOD_ID, 0);
                                        //nuevo.USUARIOA_ID = "admin";
                                        //nuevo.DETPOS = 1;
                                        bool finR = false;
                                        d.ESTATUS_WF = "P";
                                        if (next.ACCION.TIPO.Equals("T"))
                                        {
                                            TAX_LAND tl = db.TAX_LAND.Where(a => a.SOCIEDAD_ID.Equals(d.SOCIEDAD_ID) & a.PAIS_ID.Equals(d.PAIS_ID) & a.ACTIVO == true).FirstOrDefault();
                                            if (tl != null & cf.USUARIO7_ID != null)
                                            {
                                                nuevo.USUARIOA_ID = db.DET_TAXEOC.Where(a => a.USUARIOC_ID.Equals(d.USUARIOD_ID) & a.PAIS_ID.Equals(d.PAIS_ID) & a.KUNNR == d.PAYER_ID & a.ACTIVO == true).FirstOrDefault().USUARIOA_ID;
                                                nuevo.USUARIOA_ID = cf.USUARIO7_ID;
                                                d.ESTATUS_WF      = "T";
                                            }
                                            else
                                            {
                                                nuevo.WF_POS      = nuevo.WF_POS + 1;
                                                nuevo.USUARIOA_ID = null;
                                                d.ESTATUS_WF      = "A";
                                                d.ESTATUS_SAP     = "P";
                                                if (recurrente == "X")
                                                {
                                                    nuevo.WF_POS++;
                                                    d.ESTATUS_SAP = "";
                                                    finR          = true;
                                                }
                                            }
                                        }
                                        else if (paso_a.ACCION.TIPO == "E")
                                        {
                                            nuevo.USUARIOA_ID = null;
                                        }
                                        else
                                        {
                                            if (nuevo.DETPOS == 0)
                                            {
                                                nuevo.USUARIOA_ID = null;
                                                d.ESTATUS_WF      = "A";
                                                d.ESTATUS_SAP     = "P";
                                            }
                                        }
                                        nuevo.ESTATUS = "P";
                                        nuevo.FECHAC  = DateTime.Now;
                                        nuevo.FECHAM  = DateTime.Now;

                                        if (finR)
                                        {
                                            nuevo.ESTATUS = "A";
                                            d.ESTATUS     = "A";
                                        }

                                        db.FLUJOes.Add(nuevo);
                                        if (paso_a.EMAIL.Equals("X"))
                                        {
                                            correcto = "1";
                                        }
                                    }
                                }
                                //else if(nuevo.DETPOS == 99)
                                //{
                                //    next = db.WORKFPs.Where(a => a.ID.Equals(actual.WORKF_ID) & a.VERSION.Equals(actual.WF_VERSION) & a.POS == next_step_a).FirstOrDefault();
                                //}
                                else
                                {
                                    //nuevo.USUARIOD_ID
                                    nuevo.ESTATUS = "P";
                                    nuevo.FECHAC  = DateTime.Now;
                                    nuevo.FECHAM  = DateTime.Now;
                                    nuevo.WF_POS  = nuevo.WF_POS + detA.POS;

                                    db.FLUJOes.Add(nuevo);
                                    if (paso_a.EMAIL.Equals("X"))
                                    {
                                        correcto = "1";
                                    }

                                    d.ESTATUS_WF = "P";
                                }
                                if (nuevo.DETPOS.Equals(98))
                                {
                                    d.ESTATUS_WF = "S";
                                }
                                db.Entry(d).State = EntityState.Modified;

                                db.SaveChanges();
                                ban = false;
                            }
                        }
                        else if (paso_a.ACCION.TIPO == "P")
                        {
                            if (f.ESTATUS.Equals("A") | f.ESTATUS.Equals("N"))//APROBAR SOLICITUD
                            {
                                DOCUMENTO d = db.DOCUMENTOes.Find(actual.NUM_DOC);

                                ArchivoContable sa   = new ArchivoContable();
                                string          file = sa.generarArchivo(d.NUM_DOC, 0);

                                if (file == "")
                                {
                                    next = db.WORKFPs.Where(a => a.ID.Equals(actual.WORKF_ID) & a.VERSION.Equals(actual.WF_VERSION) & a.POS == next_step_a).FirstOrDefault();

                                    FLUJO nuevo = new FLUJO();
                                    nuevo.WORKF_ID   = paso_a.ID;
                                    nuevo.WF_VERSION = paso_a.VERSION;
                                    nuevo.WF_POS     = next.POS;
                                    nuevo.NUM_DOC    = actual.NUM_DOC;
                                    nuevo.POS        = actual.POS + 1;
                                    nuevo.ESTATUS    = "A";
                                    nuevo.FECHAC     = DateTime.Now;
                                    nuevo.FECHAM     = DateTime.Now;

                                    d.ESTATUS = "A";
                                    correcto  = file;

                                    db.FLUJOes.Add(nuevo);
                                    db.SaveChanges();
                                    ban = false;
                                }
                                else
                                {
                                    ban      = false;
                                    correcto = file;
                                }
                            }
                        }
                        else if (paso_a.ACCION.TIPO == "S")
                        {
                            if (f.ESTATUS.Equals("A") | f.ESTATUS.Equals("N"))//APROBAR SOLICITUD
                            {
                                DOCUMENTO d = db.DOCUMENTOes.Find(actual.NUM_DOC);
                                next = db.WORKFPs.Where(a => a.ID.Equals(actual.WORKF_ID) & a.VERSION.Equals(actual.WF_VERSION) & a.POS == next_step_a).FirstOrDefault();

                                FLUJO nuevo = new FLUJO();
                                nuevo.WORKF_ID   = paso_a.ID;
                                nuevo.WF_VERSION = paso_a.VERSION;
                                nuevo.WF_POS     = next.POS;
                                nuevo.NUM_DOC    = actual.NUM_DOC;
                                nuevo.POS        = actual.POS + 1;
                                nuevo.LOOP       = 1;//-----------------------------------cc
                                //int loop = db.FLUJOes.Where(a => a.WORKF_ID.Equals(next.ID) & a.WF_VERSION.Equals(next.VERSION) & a.WF_POS == next.POS & a.NUM_DOC.Equals(actual.NUM_DOC) & a.ESTATUS.Equals("A")).Count();
                                //if (loop >= next.LOOPS)
                                //{
                                //    paso_a = next;
                                //    continue;
                                //}
                                //if (loop != 0)
                                //    nuevo.LOOP = loop + 1;
                                //else
                                //    nuevo.LOOP = 1;
                                if (paso_a.ACCION.TIPO == "N")
                                {
                                    actual.DETPOS = actual.DETPOS - 1;
                                }

                                //FLUJO detA = determinaAgente(d, actual.USUARIOA_ID, actual.USUARIOD_ID, 98, next.LOOPS, 98);
                                CLIENTEF cf = db.CLIENTEFs.Where(a => a.VKORG.Equals(d.VKORG) & a.VTWEG.Equals(d.VTWEG) & a.SPART.Equals(d.SPART) & a.KUNNR.Equals(d.PAYER_ID)
                                                                 ).OrderByDescending(a => a.VERSION).FirstOrDefault();
                                FLUJO detA = determinaAgenteC(d, cf, 98, 98, "S");



                                nuevo.USUARIOD_ID = detA.USUARIOA_ID;

                                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 = actual.DETVER;
                                if (paso_a.ACCION.TIPO == "N")
                                {
                                    nuevo.DETPOS  = nuevo.DETPOS + 1;
                                    actual.DETPOS = actual.DETPOS + 1;
                                }


                                if (nuevo.DETPOS == 0 | nuevo.DETPOS == 99)
                                {
                                    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
                                    {
                                        //DOCUMENTO d = db.DOCUMENTOes.Find(actual.NUM_DOC);
                                        d.ESTATUS_WF = "A";
                                        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 + detA.POS;
                                        nuevo.NUM_DOC    = actual.NUM_DOC;
                                        nuevo.POS        = actual.POS + 1;
                                        nuevo.LOOP       = 1; //-----------------------------------
                                                              //int loop1 = db.FLUJOes.Where(a => a.WORKF_ID.Equals(next.ID) & a.WF_VERSION.Equals(next.VERSION) & a.WF_POS == next.POS & a.NUM_DOC.Equals(actual.NUM_DOC) & a.ESTATUS.Equals("A")).Count();
                                                              //if (loop1 >= next.LOOPS)
                                                              //{
                                                              //    paso_a = next;
                                                              //    continue;
                                                              //}
                                                              //if (loop1 != 0)
                                                              //    nuevo.LOOP = loop1 + 1;
                                                              //else
                                                              //    nuevo.LOOP = 1;

                                        //FLUJO detA = determinaAgente(d, actual.USUARIOA_ID, actual.USUARIOD_ID, 0);
                                        //nuevo.USUARIOA_ID = "admin";
                                        //nuevo.DETPOS = 1;
                                        d.ESTATUS_WF = "P";
                                        if (nuevo.DETPOS == 0)
                                        {
                                            nuevo.USUARIOA_ID = null;
                                            d.ESTATUS_WF      = "A";
                                            d.ESTATUS_SAP     = "P";
                                        }
                                        nuevo.ESTATUS = "P";
                                        nuevo.FECHAC  = DateTime.Now;
                                        nuevo.FECHAM  = DateTime.Now;

                                        db.FLUJOes.Add(nuevo);
                                        if (paso_a.EMAIL.Equals("X"))
                                        {
                                            correcto = "1";
                                        }
                                    }
                                }
                                //else if(nuevo.DETPOS == 99)
                                //{
                                //    next = db.WORKFPs.Where(a => a.ID.Equals(actual.WORKF_ID) & a.VERSION.Equals(actual.WF_VERSION) & a.POS == next_step_a).FirstOrDefault();
                                //}
                                else
                                {
                                    //nuevo.USUARIOD_ID
                                    nuevo.ESTATUS = "P";
                                    nuevo.FECHAC  = DateTime.Now;
                                    nuevo.FECHAM  = DateTime.Now;
                                    nuevo.WF_POS  = nuevo.WF_POS + detA.POS;

                                    db.FLUJOes.Add(nuevo);
                                    if (paso_a.EMAIL.Equals("X"))
                                    {
                                        correcto = "1";
                                    }

                                    d.ESTATUS_WF = "P";
                                }
                                db.Entry(d).State = EntityState.Modified;

                                db.SaveChanges();
                                ban = false;
                            }
                        }
                    }
                }
            }
            else if (f.ESTATUS.Equals("R"))//Rechazada
            {
                actual = db.FLUJOes.Where(a => a.NUM_DOC.Equals(f.NUM_DOC)).OrderByDescending(a => a.POS).FirstOrDefault();
                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;
                int next_step_r = 0;
                if (paso_a.NEXT_STEP != null)
                {
                    next_step_a = (int)paso_a.NEXT_STEP;
                }
                if (paso_a.NS_ACCEPT != null)
                {
                    next_step_a = (int)paso_a.NS_ACCEPT;
                }
                if (paso_a.NS_REJECT != null)
                {
                    next_step_r = (int)paso_a.NS_REJECT;
                }

                WORKFP next = new WORKFP();
                next = db.WORKFPs.Where(a => a.ID.Equals(actual.WORKF_ID) & a.VERSION.Equals(actual.WF_VERSION) & a.POS == next_step_r).FirstOrDefault();

                correcto          = "3";
                actual.ESTATUS    = f.ESTATUS;
                actual.FECHAM     = f.FECHAM;
                actual.COMENTARIO = f.COMENTARIO;

                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;
                nuevo.DETPOS     = 1;
                nuevo.DETVER     = actual.DETVER;
                nuevo.LOOP       = 1;//-----------------------------------
                DOCUMENTO d = db.DOCUMENTOes.Find(actual.NUM_DOC);
                nuevo.USUARIOD_ID = d.USUARIOD_ID;
                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.USUARIOD_ID
                nuevo.ESTATUS = "P";
                nuevo.FECHAC  = DateTime.Now;
                nuevo.FECHAM  = DateTime.Now;

                db.FLUJOes.Add(nuevo);
                db.Entry(actual).State = EntityState.Modified;
                d.ESTATUS_WF           = "R";
                if (next.ACCION.TIPO == "S")
                {
                    d.ESTATUS    = "R";
                    d.ESTATUS_WF = "S";
                }

                db.SaveChanges();
            }

            //-------------------------------------------------------------------------------------------------------------------------------//
            //-------------------------------------------------------------------------------------------------------------------------------//
            //-------------------------------------------------------------------------------------------------------------------------------//
            //-------------------------------------------------------------------------------------------------------------------------------//
            //-------------------------------------------------------------------------------------------------------------------------------//
            if (correcto.Equals(""))
            {
                FLUJO  conta = db.FLUJOes.Where(x => x.NUM_DOC == f.NUM_DOC).Include(x => x.WORKFP).OrderByDescending(x => x.POS).FirstOrDefault();
                string corr  = "";
                if (conta.WORKFP.ACCION.TIPO == "P")
                {
                    conta.ESTATUS = "A";
                    conta.FECHAM  = DateTime.Now;
                    corr          = procesa(conta, recurrente);
                }
                if (corr == "")
                {
                    if (f.DOCUMENTO.DOCUMENTO_REF != null)
                    {
                        f.DOCUMENTO.TSOL = db.DOCUMENTOes.Where(x => x.NUM_DOC == f.NUM_DOC).FirstOrDefault().TSOL;
                        if (f.DOCUMENTO.TSOL.REVERSO == false)
                        {
                            DOCUMENTO rel = db.DOCUMENTOes.Where(x => x.DOCUMENTO_REF == f.DOCUMENTO.DOCUMENTO_REF & x.TSOL.REVERSO == true).FirstOrDefault();
                            if (rel != null)
                            {
                                FLUJO rev = db.FLUJOes.Where(x => x.NUM_DOC == rel.NUM_DOC).Include(x => x.WORKFP).OrderByDescending(x => x.POS).FirstOrDefault();
                                rev.ESTATUS = "A";
                                rev.FECHAM  = DateTime.Now;
                                corr        = procesa(rev, recurrente);
                            }
                        }
                    }
                }
            }
            //else if (correcto.Equals("1"))
            //{
            //    FLUJO conta = db.FLUJOes.Where(x => x.NUM_DOC == f.NUM_DOC).Include(x => x.WORKFP).OrderByDescending(x => x.POS).FirstOrDefault();
            //    string corr = "";
            //    if (conta.WORKFP.ACCION.TIPO == "B")
            //    {
            //        Email em = new Email();
            //        em.enviaMailC(f.NUM_DOC, false, null, )
            //    }
            //}

            return(correcto);
        }
예제 #10
0
        public ActionResult AgregarRol(USUARIO u)
        {
            int    rol  = Int32.Parse(Request.Form["txt_rol"].ToString());
            string soc  = Request.Form["txt_soc"].ToString();
            string pais = Request.Form["txt_pai"].ToString();

            MIEMBRO m = db.MIEMBROS.Where(a => a.USUARIO_ID.Equals(u.ID) & a.ROL_ID == rol).FirstOrDefault();

            if (m == null)
            {
                m            = new MIEMBRO();
                m.ROL_ID     = rol;
                m.USUARIO_ID = u.ID;
                m.ACTIVO     = true;
                db.MIEMBROS.Add(m);
            }

            //List<DET_APROB> dd = db.DET_APROB.Where(a => a.PUESTOC_ID == u.PUESTO_ID & a.BUKRS.Equals(soc)).ToList();
            GAUTORIZACION ga = new GAUTORIZACION();

            ga.LAND   = pais;
            ga.BUKRS  = soc;
            ga.CLAVE  = pais;
            ga.NOMBRE = soc;
            //db.GAUTORIZACIONs.Add(ga);
            USUARIO user = db.USUARIOs.Find(u.ID);

            user.GAUTORIZACIONs.Add(ga);
            db.Entry(user).State = EntityState.Modified;
            db.SaveChanges();

            ////foreach (DET_APROB d in dd)
            ////{
            ////    DET_AGENTE da = new DET_AGENTE();
            ////    da.PUESTOC_ID = (int)u.PUESTO_ID;
            ////    da.USUARIOC = u.ID;
            ////    da.POS = d.POS;
            ////    da.PUESTOA_ID = d.PUESTOA_ID;
            ////    da.USUARIOA = Request.Form["txt_p-" + d.PUESTOA_ID].ToString();
            ////    da.ACTIVO = true;
            ////    da.AGROUP_ID = ga.ID;
            ////    da.MONTO = d.MONTO;
            ////    da.PRESUPUESTO = d.PRESUPUESTO;
            ////    db.DET_AGENTE.Add(da);


            ////    string us = Request.Form["txt_p-" + d.PUESTOA_ID].ToString();
            ////    USUARIO uu = db.USUARIOs.Find(us);
            ////    uu.GAUTORIZACIONs.Add(ga);
            ////    db.Entry(uu).State = EntityState.Modified;

            ////    MIEMBRO mi = db.MIEMBROS.Where(a => a.USUARIO_ID.Equals(uu.ID) & a.ROL_ID == 2).FirstOrDefault();
            ////    if (mi == null)
            ////    {
            ////        mi = new MIEMBRO();
            ////        mi.ROL_ID = 2;
            ////        mi.USUARIO_ID = uu.ID;
            ////        mi.ACTIVO = true;
            ////        db.MIEMBROS.Add(mi);
            ////    }

            ////    db.SaveChanges();
            ////}
            //string rol = Request.Form["txt_p-3"].ToString();

            DET_APROBH dh = db.DET_APROBH.Where(a => a.SOCIEDAD_ID.Equals(soc) & a.PUESTOC_ID == u.PUESTO_ID).OrderByDescending(a => a.VERSION).FirstOrDefault();

            if (dh != null)
            {
                DET_AGENTEH dah = new DET_AGENTEH();
                dah.SOCIEDAD_ID = dh.SOCIEDAD_ID;
                dah.PUESTOC_ID  = (int)u.PUESTO_ID;
                dah.VERSION     = dh.VERSION;
                dah.AGROUP_ID   = (int)ga.ID;
                dah.USUARIOC_ID = u.ID;
                dah.ACTIVO      = true;
                db.DET_AGENTEH.Add(dah);
                db.SaveChanges();

                List <DET_APROBP> ddp = db.DET_APROBP.Where(a => a.SOCIEDAD_ID.Equals(soc) & a.PUESTOC_ID == u.PUESTO_ID & a.VERSION == dh.VERSION).ToList();
                foreach (DET_APROBP dp in ddp)
                {
                    DET_AGENTEP dap = new DET_AGENTEP();
                    dap.SOCIEDAD_ID = dah.SOCIEDAD_ID;
                    dap.PUESTOC_ID  = dah.PUESTOC_ID;
                    dap.VERSION     = dah.VERSION;
                    dap.AGROUP_ID   = dah.AGROUP_ID;
                    dap.POS         = dp.POS;
                    dap.PUESTOA_ID  = dp.PUESTOA_ID;
                    dap.USUARIOA_ID = Request.Form["txt_p-" + dp.PUESTOA_ID].ToString();
                    dap.MONTO       = dp.MONTO;
                    dap.PRESUPUESTO = dp.PRESUPUESTO;
                    dap.ACTIVO      = true;
                    dah.DET_AGENTEP.Add(dap);
                    //dgp.Add(dap);

                    ////string us = dap.USUARIOA_ID;
                    ////USUARIO uu = db.USUARIOs.Find(us);
                    ////uu.GAUTORIZACIONs.Add(ga);
                    ////db.Entry(uu).State = EntityState.Modified;

                    ////MIEMBRO mi = db.MIEMBROS.Where(a => a.USUARIO_ID.Equals(uu.ID) & a.ROL_ID == 2).FirstOrDefault();
                    ////if (mi == null)
                    ////{
                    ////    mi = new MIEMBRO();
                    ////    mi.ROL_ID = 2;
                    ////    mi.USUARIO_ID = uu.ID;
                    ////    mi.ACTIVO = true;
                    ////    db.MIEMBROS.Add(mi);
                    ////}
                }

                TAX_LAND tl = db.TAX_LAND.Where(a => a.SOCIEDAD_ID.Equals(soc) & a.ACTIVO == true).FirstOrDefault();
                if (tl != null)
                {
                    DET_TAXEO dt = new DET_TAXEO();
                    dt.SOCIEDAD_ID = soc;
                    dt.PAIS_ID     = pais;
                    dt.PUESTOC_ID  = dah.PUESTOC_ID;
                    dt.USUARIOC_ID = dah.USUARIOC_ID;
                    dt.VERSION     = dah.VERSION;
                    dt.PUESTOA_ID  = 9;
                    dt.USUARIOA_ID = Request.Form["txt_p-9"].ToString();
                    dt.ACTIVO      = true;
                    db.DET_TAXEO.Add(dt);
                }

                db.SaveChanges();
            }
            return(RedirectToAction("Details", new { id = u.ID }));
        }