public string getHtml(decimal num_doc, string spras, List <ESTATU> ee) { TAT001Entities db = new TAT001Entities(); DOCUMENTO d = db.DOCUMENTOes.Find(num_doc); string estatus = getEstatus(d); string ret = ""; foreach (ESTATU e in ee) { foreach (ESTATUSR reg in e.ESTATUSRs) { if (System.Text.RegularExpressions.Regex.IsMatch(estatus, reg.REGEX)) { ESTATUST t = e.ESTATUSTs.FirstOrDefault(x => x.SPRAS_ID == spras); if (t != null) { ret = "<span class='" + e.CLASS + "' data-badge-caption=''>" + t.TXT050 + "</span>"; } else { ret = "<span class='" + e.CLASS + "' data-badge-caption=''>" + e.DESCRIPCION + "</span>"; } if (ret != "") { return(ret); } } } } return(ret); }
public FLUJO determinaAgenteI(DOCUMENTO d, string user, string delega, int pos, DET_AGENTEC dah) { if (delega != null) { user = delega; } bool fin = false; TAT001Entities db = new TAT001Entities(); DET_AGENTEC dap = new DET_AGENTEC(); USUARIO u = db.USUARIOs.Find(d.USUARIOC_ID); if (pos.Equals(0)) { //dap = db.DET_AGENTEP.Where(a => a.SOCIEDAD_ID.Equals(dah.SOCIEDAD_ID) & a.PUESTOC_ID == dah.PUESTOC_ID & // a.VERSION == dah.VERSION & a.AGROUP_ID == dah.AGROUP_ID & a.POS == 1).FirstOrDefault(); dap = db.DET_AGENTEC.Where(a => a.USUARIOC_ID.Equals(delega) & a.PAIS_ID == dah.PAIS_ID & a.VKORG.Equals(dah.VKORG) & a.VTWEG.Equals(dah.VTWEG) & a.SPART.Equals(dah.SPART) & a.KUNNR.Equals(dah.KUNNR) & a.VERSION == dah.VERSION & a.POS == 1).FirstOrDefault(); } string agente = ""; FLUJO f = new FLUJO(); f.DETPOS = 0; if (!fin) { agente = dap.USUARIOA_ID; f.DETPOS = dap.POS; } f.USUARIOA_ID = agente; return(f); }
// O nome do parâmetro id deve corresponder ao valor DataKeyNames definido no controle public void docsGridView_UpdateItem(DOCUMENTO item) { using (YourPELcs ctx = new YourPELcs()) { DOCUMENTO doc = ctx.DOCUMENTOes.Find(item.idDocumento); // Carregue o item aqui, por exemplo item = MyDataLayer.Find(id); if (doc == null) { // O item não foi encontrado ModelState.AddModelError("", String.Format("O item com id {0} não foi encontrado", item.idDocumento)); return; } TryUpdateModel(doc); if (ModelState.IsValid) { if ((doc.tema.ToString() != "Alimentação") && (doc.tema.ToString() != "Consumos Nocivos") && (doc.tema.ToString() != "Sexualidade")) { lblFeedback2.Text = "Campo 'Tema' inválido! ('Alimentação', 'Consumos Nocivos' ou 'Sexualidade')"; } else { // Salve alterações aqui, por exemplo MyDataLayer.SaveChanges(); ctx.SaveChanges(); } } } }
public void Flujosprocesa(FLUJO f, string user) { WFARTHAEntities db = new WFARTHAEntities(); 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(); FLUJO flujo = actual; flujo.ESTATUS = f.ESTATUS; flujo.FECHAM = DateTime.Now; flujo.COMENTARIO = f.COMENTARIO; flujo.USUARIOA_ID = user;// User.Identity.Name;//MGC 21-11-2018 Validar si el creador y el solicitante es el mismo usuario flujo.ID_RUTA_A = f.ID_RUTA_A; flujo.RUTA_VERSION = f.RUTA_VERSION; flujo.STEP_AUTO = f.STEP_AUTO; string res = pf.procesa(flujo, "", false, "", ""); if (res.Equals("0"))//Aprobado { // } else if (res.Equals("1") | res.Equals("2") | res.Equals("3"))//CORREO { // } else { // } }
public string getText(decimal num_doc, string spras) { string ret = ""; TAT001Entities db = new TAT001Entities(); DOCUMENTO doc = db.DOCUMENTOes.Find(num_doc); string estatus = getEstatus(doc); List <ESTATU> ee = db.ESTATUS.Where(x => x.ACTIVO).ToList(); foreach (ESTATU e in ee) { foreach (ESTATUSR reg in e.ESTATUSRs) { if (System.Text.RegularExpressions.Regex.IsMatch(estatus, reg.REGEX)) { ESTATUST t = e.ESTATUSTs.FirstOrDefault(x => x.SPRAS_ID == spras); if (t != null) { ret = t.TXT050; } else { ret = e.DESCRIPCION; } return(ret); } } } return(ret); }
public FLUJO determinaAgenteI(DOCUMENTO d, string user, string delega, int pos, DET_AGENTECA dah, int step, FLUJO actual)//MGC 19-10-2018 Cambio a detonador { if (delega != null) { user = delega; } bool fin = false; WFARTHAEntities db = new WFARTHAEntities(); DET_AGENTECA dap = new DET_AGENTECA(); USUARIO u = db.USUARIOs.Find(d.USUARIOC_ID); if (pos.Equals(0)) { List <DET_AGENTECA> dal = db.DET_AGENTECA.Where(a => a.VERSION == dah.VERSION && a.ID_RUTA_AGENTE == dah.ID_RUTA_AGENTE && a.STEP_FASE == dah.STEP_FASE).OrderByDescending(a => a.VERSION).ToList(); dap = detAgenteLimite(dal, Convert.ToDecimal(d.MONTO_DOC_MD), step, actual);//MGC 19-10-2018 Cambio a detonador } string agente = ""; FLUJO f = new FLUJO(); f.DETPOS = 0; if (!fin) { //agente = dap.USUARIOA_ID; agente = dap.AGENTE_SIG; //f.DETPOS = dap.POS; f.DETPOS = dap.STEP_FASE; f.STEP_AUTO = dap.STEP_FASE; } f.USUARIOA_ID = agente; return(f); }
public ActionResult Solicitudes(decimal id, string spras) { //int pagina = 203; //ID EN BASE DE DATOS ViewBag.Title = "Solicitud"; if (id == 0) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } DOCUMENTO dOCUMENTO = db.DOCUMENTOes.Find(id); if (dOCUMENTO == null) { return(HttpNotFound()); } dOCUMENTO.CLIENTE = db.CLIENTEs.Where(a => a.VKORG.Equals(dOCUMENTO.VKORG) & a.VTWEG.Equals(dOCUMENTO.VTWEG) & a.SPART.Equals(dOCUMENTO.SPART) & a.KUNNR.Equals(dOCUMENTO.PAYER_ID)).First(); ViewBag.workflow = db.FLUJOes.Where(a => a.NUM_DOC.Equals(id)).OrderBy(a => a.POS).ToList(); ViewBag.acciones = db.FLUJOes.Where(a => a.NUM_DOC.Equals(id) & a.ESTATUS.Equals("P") & a.USUARIOA_ID.Equals(User.Identity.Name)).FirstOrDefault(); ViewBag.url = "http://localhost:64497"; ViewBag.url = "http://192.168.1.77"; ViewBag.url = Request.Url.AbsoluteUri.Replace(Request.Url.AbsolutePath, ""); return(View(dOCUMENTO)); }
public FileResult Descargar() { var dOCUMENTOes = db.DOCUMENTOes.Where(a => a.USUARIOC_ID.Equals(User.Identity.Name)).Include(d => d.TALL).Include(d => d.TSOL).Include(d => d.USUARIO).Include(d => d.CLIENTE).Include(d => d.PAI).Include(d => d.SOCIEDAD).ToList(); var dOCUMENTOVs = db.DOCUMENTOVs.Where(a => a.USUARIOA_ID.Equals(User.Identity.Name)).ToList(); var tsol = db.TSOLs.ToList(); var tall = db.TALLs.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.TALL = tall.Where(a => a.ID.Equals(d.TALL_ID)).FirstOrDefault(); dOCUMENTOes.Add(d); } dOCUMENTOes = dOCUMENTOes.Distinct(new DocumentoComparer()).ToList(); dOCUMENTOes = dOCUMENTOes.OrderByDescending(a => a.FECHAC).OrderByDescending(a => a.NUM_DOC).ToList(); generarExcelHome(dOCUMENTOes, Server.MapPath("~/pdfTemp/")); return(File(Server.MapPath("~/pdfTemp/Doc" + DateTime.Now.ToShortDateString() + ".xlsx"), "application /vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Doc" + DateTime.Now.ToShortDateString() + ".xlsx")); }
public ActionResult DeleteConfirmed(int id) { DOCUMENTO dOCUMENTO = db.DOCUMENTOes.Find(id); db.DOCUMENTOes.Remove(dOCUMENTO); db.SaveChanges(); return(RedirectToAction("Index")); }
public ActionResult documentosDetalle( ) { if (Session["id"] == null) { return(RedirectToAction("Login")); } List <DOCUMENTO> d = DOCUMENTO.getDocumentosTipo(Convert.ToInt16(Session["tipo"])); return(View(d)); }
public ActionResult Edit([Bind(Include = "IdDocumento,Descripcion,Estado")] DOCUMENTO dOCUMENTO) { if (ModelState.IsValid) { db.Entry(dOCUMENTO).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(dOCUMENTO)); }
public ActionResult Create([Bind(Include = "IdDocumento,Descripcion,Estado")] DOCUMENTO dOCUMENTO) { if (ModelState.IsValid) { db.DOCUMENTOes.Add(dOCUMENTO); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(dOCUMENTO)); }
public ActionResult Edit([Bind(Include = "DocumentoId,VentaId,ClienteId,tipo")] DOCUMENTO dOCUMENTO) { if (ModelState.IsValid) { db.Entry(dOCUMENTO).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.ClienteId = new SelectList(db.Clientes, "ClienteId", "nom_Cliente", dOCUMENTO.ClienteId); ViewBag.VentaId = new SelectList(db.Ventas, "VentaId", "VentaId", dOCUMENTO.VentaId); return(View(dOCUMENTO)); }
//ENDFRT 13-12-2018 para realizar la actualización del tipo de cambio segun la fecha en el modal y la fechacon //MGC 20-12-2018 Archivo contable---------------------------------------------------------------------< public string TipoCambio(string moneda, decimal ndoc, DateTime?ndate) { var correcto = "0"; var _bol = false; decimal?_tipocambio = 0; var dia = 0; //DateTime fechacon = P.FECHACON.Value; //MGC 14-12-2018 Fecha contabilización if (ndate != null) { //verificar fecha null DateTime?datem = ndate; while (dia < 100) // Buscar el tipo de cambio en caso de no encontrarlo buscar el mas cercano hacia abajo { DateTime fecha = ndate.Value.AddDays(-dia); string displayName = null; var keyValue = db.TCAMBIOs.FirstOrDefault(a => a.TCURR == moneda & a.GDATU == fecha); if (keyValue != null) { var lprov = db.TCAMBIOs.Where(a => a.TCURR == moneda & a.GDATU == fecha).First().UKURS; _tipocambio = lprov; break; } dia++; } DOCUMENTO dOCUMENTO = db.DOCUMENTOes.Find(ndoc); dOCUMENTO.TIPO_CAMBIO = _tipocambio; try { db.Entry(dOCUMENTO).State = EntityState.Modified; db.SaveChanges(); } catch (Exception e) { } try { //FLUJO fLUJO = db.FLUJOes.Find(F.WORKF_ID, F.WF_VERSION, F.WF_POS, F.NUM_DOC, F.POS, F.DETPOS); FLUJO fLUJO = db.FLUJOes.Where(a => a.NUM_DOC.Equals(dOCUMENTO.NUM_DOC)).OrderBy(a => a.POS).FirstOrDefault(); fLUJO.FECHACON = ndate; db.Entry(fLUJO).State = EntityState.Modified; db.SaveChanges(); } catch (Exception e) { } } return(correcto); }
public static decimal ObtenerImpuesto(TruequeEntities db, DOCUMENTO D, ref bool esNC, string[] categorias = null) { decimal impuesto = 0.0M; string[] tsolImp = new string[] { "NC", "NCA", "NCAS", "NCAM", "NCASM", "NCS", "NCI", "NCIA", "NCIAS", "NCIS" }; string pais_id = D.PAIS_ID; if (tsolImp.Contains(D.TSOL_ID)) { decimal KBETR; esNC = true; if (categorias != null) { // Se obtiene Id de la categoria Cadena cad = new Cadena(); string[] auxCategorias = categorias; int i = 0; bool esMaterial = false; foreach (string cat in auxCategorias) { string catAux = cad.completaMaterial(cat); if (!esMaterial) { esMaterial = db.MATERIALs.Any(x => x.ID == catAux); } if (esMaterial) { categorias[i] = db.MATERIALs.First(x => x.ID == catAux).MATERIALGP_ID; } i++; } } if ((categorias != null && categorias.Any() && (categorias.Contains("605") || categorias.Contains("207"))) || db.DOCUMENTOPs.Any(x => (x.MATKL == "605" || x.MATKL == "207") && x.NUM_DOC == D.NUM_DOC)) { KBETR = db.IIMPUESTOes.First(x => x.MWSKZ == "A0").KBETR.Value; } else { try { decimal concecutivo = db.CONPOSAPHs.First(x => x.TIPO_SOL == "NC" && x.SOCIEDAD == D.SOCIEDAD_ID && (x.TIPO_DOC == "YG" || x.TIPO_DOC == "DG")).CONSECUTIVO; string tax_code = db.CONPOSAPPs.First(x => x.CONSECUTIVO == concecutivo).TAX_CODE; KBETR = db.IIMPUESTOes.Any(x => x.MWSKZ == tax_code && x.LAND == pais_id) ? db.IIMPUESTOes.First(x => x.MWSKZ == tax_code && x.LAND == pais_id).KBETR.Value : 0.0M; } catch { KBETR = 0; } } impuesto = (D.MONTO_DOC_MD.Value * KBETR); } return(impuesto); }
// GET: Negociaciones/Delete/5 public ActionResult Delete(decimal id) { //if (id == null) //{ // return new HttpStatusCodeResult(HttpStatusCode.BadRequest); //} DOCUMENTO dOCUMENTO = db.DOCUMENTOes.Find(id); if (dOCUMENTO == null) { return(HttpNotFound()); } return(View(dOCUMENTO)); }
public ActionResult ListModSolicitudes(List <DOCUMENTO> solicitudes) { try { string contacto = solicitudes[0].PAYER_NOMBRE; string emailContacto = solicitudes[0].PAYER_EMAIL; string estado = solicitudes[0].ESTADO; string ciudad = solicitudes[0].CIUDAD; string concepto = solicitudes[0].CONCEPTO; string mecanica = solicitudes[0].NOTAS; foreach (DOCUMENTO sol in solicitudes) { DOCUMENTO docActual = db.DOCUMENTOes.Find(sol.NUM_DOC); if (!string.IsNullOrEmpty(contacto)) { docActual.PAYER_NOMBRE = contacto; } if (!string.IsNullOrEmpty(emailContacto)) { docActual.PAYER_EMAIL = emailContacto; } if (!string.IsNullOrEmpty(estado)) { docActual.ESTADO = estado; } if (!string.IsNullOrEmpty(ciudad)) { docActual.CIUDAD = ciudad; } if (!string.IsNullOrEmpty(concepto)) { docActual.CONCEPTO = concepto; } if (!string.IsNullOrEmpty(mecanica)) { docActual.NOTAS = mecanica; } db.Entry(docActual).State = EntityState.Modified; } db.SaveChanges(); } catch (Exception e) { Log.ErrorLogApp(e, "ModificacionesGlobales", "ListModSolicitudes"); } return(RedirectToAction("Index")); }
public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } DOCUMENTO dOCUMENTO = db.DOCUMENTOes.Find(id); if (dOCUMENTO == null) { return(HttpNotFound()); } return(View(dOCUMENTO)); }
public bool seEnvia(DOCUMENTO d, TAT001Entities db, Log log) { bool ret = false; DOCUMENTOA dz = null; var de = d.NUM_DOC; if (d.DOCUMENTO_REF == null) { if (d.DOCUMENTOAs.Count > 0) { dz = d.DOCUMENTOAs.FirstOrDefault(x => x.NUM_DOC == de && x.CLASE == "OTR"); if (dz == null) { if (d.TSOL.NEGO)//para el ultimo filtro { Estatus es = new Estatus(); string estatus = es.getEstatus(d); List <int> ee = new List <int>(); ee.Add(20); // ee.Add(90); // ee.Add(100); // ee.Add(110); // ee.Add(120); // ee.Add(130); // ee.Add(160); // List <ESTATUSR> ess = (from e in db.ESTATUSRs.ToList() ////join n in ee ////on e.ESTATUS_ID equals n select e).ToList(); foreach (ESTATUSR e in ess) { if (System.Text.RegularExpressions.Regex.IsMatch(estatus, e.REGEX)) { if (ee.Contains(e.ESTATUS_ID)) { log.escribeLog("NUM_DOC: " + d.NUM_DOC); ret = true; } break; } } } } } } return(ret); }
public ActionResult documentosJurAdmon(int id) { if (Session["Admon"] == null) { return(RedirectToAction("LoginAdmon")); } int tipo = EMPRESA.getTipoEmpresa(id); ViewBag.empresa = id; List <DOCUMENTO> d = DOCUMENTO.getDocumentosTipo(tipo); return(PartialView(d)); }
// GET: DOCUMENTOes/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } DOCUMENTO dOCUMENTO = db.Documentos.Find(id); if (dOCUMENTO == null) { return(HttpNotFound()); } ViewBag.ClienteId = new SelectList(db.Clientes, "ClienteId", "nom_Cliente", dOCUMENTO.ClienteId); ViewBag.VentaId = new SelectList(db.Ventas, "VentaId", "VentaId", dOCUMENTO.VentaId); return(View(dOCUMENTO)); }
public ActionResult cargaDocumentos() { if (Session["id"] == null) { return(RedirectToAction("Login")); } int id = Convert.ToInt32(Session["id"]); int tipo = EMPRESA.getTipoEmpresa(id); ViewBag.empresa = id; List <DOCUMENTO> d = DOCUMENTO.getDocumentosTipo(tipo); return(View(d)); }
public DOCUMENTO getPresupuesto(string kunnr) { DOCUMENTO pm = new DOCUMENTO(); //try //{ // if (kunnr == null) // kunnr = ""; // //Obtener presupuesto // string mes = DateTime.Now.Month.ToString(); // var presupuesto = db.CSP_PRESU_CLIENT(cLIENTE: kunnr, pERIODO: mes).Select(p => new { DESC = p.DESCRIPCION.ToString(), VAL = p.VALOR.ToString() }).ToList(); // string clien = db.CLIENTEs.Where(x => x.KUNNR == kunnr).Select(x => x.BANNERG).First(); // if (presupuesto != null) // { // if (String.IsNullOrEmpty(clien)) // { // pm.P_CANAL = presupuesto[0].VAL; // pm.P_BANNER = presupuesto[1].VAL; // pm.PC_C = (float.Parse(presupuesto[4].VAL) + float.Parse(presupuesto[5].VAL) + float.Parse(presupuesto[6].VAL)).ToString(); // pm.PC_A = presupuesto[8].VAL; // pm.PC_P = presupuesto[9].VAL; // pm.PC_T = presupuesto[10].VAL; // pm.CONSU = (float.Parse(presupuesto[1].VAL) - float.Parse(presupuesto[10].VAL)).ToString(); // } // else // { // pm.P_CANAL = presupuesto[0].VAL; // pm.P_BANNER = presupuesto[0].VAL; // pm.PC_C = (float.Parse(presupuesto[4].VAL) + float.Parse(presupuesto[5].VAL) + float.Parse(presupuesto[6].VAL)).ToString(); // pm.PC_A = presupuesto[8].VAL; // pm.PC_P = presupuesto[9].VAL; // pm.PC_T = presupuesto[10].VAL; // pm.CONSU = (float.Parse(presupuesto[0].VAL) - float.Parse(presupuesto[10].VAL)).ToString(); // } // } //} //catch (Exception e) //{ //} return(pm); }
static Boolean SaveDocAsXmlFormat(DOCUMENTO obj, string fileName) { // Save object to a file named something.xml in XML format. XmlSerializer xmlFormat = new XmlSerializer(typeof(DOCUMENTO)); using (Stream fStream = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None)) { try { xmlFormat.Serialize(fStream, obj); return(true); //ficheiro xml criado com sucesso } catch { return(false); //não foi possível criar o ficheiro xml } } }
// O nome do parâmetro id deve corresponder ao valor DataKeyNames definido no controle public void docsGridView_DeleteItem(DOCUMENTO item) { using (YourPELcs ctx = new YourPELcs()) { DOCUMENTO doc = ctx.DOCUMENTOes.Find(item.idDocumento); // Carregue o item aqui, por exemplo item = MyDataLayer.Find(id); if (doc == null) { // O item não foi encontrado ModelState.AddModelError("", String.Format("O item com id {0} não foi encontrado", item.idDocumento)); return; } ctx.DOCUMENTOes.Remove(doc); TryUpdateModel(doc); if (ModelState.IsValid) { // Salve alterações aqui, por exemplo MyDataLayer.SaveChanges(); ctx.SaveChanges(); } } }
protected void Page_Load(object sender, EventArgs e) { lblFeedback.Text = ""; HttpPostedFile docAFazerUpload = FileUpload1.PostedFile; if (docAFazerUpload != null) { if ( Path.GetExtension(docAFazerUpload.FileName).ToLower() == ".pdf" || Path.GetExtension(docAFazerUpload.FileName).ToLower() == ".doc" || Path.GetExtension(docAFazerUpload.FileName).ToLower() == ".docx" ) { //Inicialização do id do documento escolhido int idDocAInserir = inserirDoc( txtNomeDocumento.Text, txtDescricaoDocumento.Text, ".", listTemaDocumento.SelectedItem.Text); //falta url porque não pode ser null //criar novo Documento DOCUMENTO novoDoc = new DOCUMENTO(); //guardar ficheiro uploaded para um determinado caminho novoDoc.idDocumento = idDocAInserir; novoDoc.nome = txtNomeDocumento.Text; novoDoc.descricao = txtDescricaoDocumento.Text; string path = Server.MapPath(".") + "\\Docs\\" + "id" + novoDoc.idDocumento + "_" + novoDoc.nome + Path.GetExtension(docAFazerUpload.FileName).ToLower(); docAFazerUpload.SaveAs(path); novoDoc.url = "id" + novoDoc.idDocumento + "_" + novoDoc.nome + Path.GetExtension(docAFazerUpload.FileName).ToLower(); UpdateDocUrl(novoDoc.idDocumento, novoDoc.url); //correção do "." deixado como placeholder na tabela DOCUMENTO } else { lblFeedback.Text = "Só é possível ler ficheiros em formato PDF e Documentos Word!"; } Response.Redirect("~/admin/Documentos.aspx"); } }
public ActionResult Create([Bind(Include = "NUM_DOC,TSOL_ID,TALL_ID,SOCIEDAD_ID,PAIS_ID,ESTADO,CIUDAD,PERIODO,EJERCICIO,TIPO_TECNICO,TIPO_RECURRENTE,CANTIDAD_EV,USUARIOC_ID,FECHAD,FECHAC,HORAC,FECHAC_PLAN,FECHAC_USER,HORAC_USER,ESTATUS,ESTATUS_C,ESTATUS_SAP,ESTATUS_WF,DOCUMENTO_REF,CONCEPTO,NOTAS,MONTO_DOC_MD,MONTO_FIJO_MD,MONTO_BASE_GS_PCT_MD,MONTO_BASE_NS_PCT_MD,MONTO_DOC_ML,MONTO_FIJO_ML,MONTO_BASE_GS_PCT_ML,MONTO_BASE_NS_PCT_ML,MONTO_DOC_ML2,MONTO_FIJO_ML2,MONTO_BASE_GS_PCT_ML2,MONTO_BASE_NS_PCT_ML2,PORC_ADICIONAL,IMPUESTO,FECHAI_VIG,FECHAF_VIG,ESTATUS_EXT,SOLD_TO_ID,PAYER_ID,PAYER_NOMBRE,PAYER_EMAIL,GRUPO_CTE_ID,CANAL_ID,MONEDA_ID,MONEDAL_ID,MONEDAL2_ID,TIPO_CAMBIO,TIPO_CAMBIOL,TIPO_CAMBIOL2,NO_FACTURA,FECHAD_SOPORTE,METODO_PAGO,NO_PROVEEDOR,PASO_ACTUAL,AGENTE_ACTUAL,FECHA_PASO_ACTUAL,VKORG,VTWEG,SPART,PUESTO_ID,GALL_ID,CONCEPTO_ID")] DOCUMENTO dOCUMENTO) { ViewData.Model = dOCUMENTO; MailMessage mail = new System.Net.Mail.MailMessage(); mail.From = new MailAddress("*****@*****.**"); mail.To.Add("*****@*****.**"); mail.Subject = "Asunto"; SmtpClient smtp = new SmtpClient(); smtp.Host = "smtp.gmail.com"; smtp.Port = 25; //465; //587 smtp.Credentials = new NetworkCredential("*****@*****.**", "24abril14"); smtp.EnableSsl = true; try { string UrlDirectory = Request.Url.GetLeftPart(UriPartial.Path); UrlDirectory = UrlDirectory.Replace("create", "Index"); UrlDirectory += "?pay=" + dOCUMENTO.PAYER_ID + "&vkorg=" + dOCUMENTO.VKORG + "&vtweg=" + dOCUMENTO.VTWEG + "&spart=" + dOCUMENTO.SPART; HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(UrlDirectory); myRequest.Method = "GET"; WebResponse myResponse = myRequest.GetResponse(); StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8); string result = sr.ReadToEnd(); sr.Close(); myResponse.Close(); mail.IsBodyHtml = true; mail.Body = result; //smtp.Send(mail); } catch (Exception ex) { throw new Exception("No se ha podido enviar el email", ex.InnerException); } return(View()); }
public void correos2() { ImapClient ic = new ImapClient(); List <AE.Net.Mail.MailMessage> mx; List <AE.Net.Mail.MailMessage> emRq17; APPSETTING lg = db.APPSETTINGs.Where(x => x.NOMBRE == "logPath" && x.ACTIVO).FirstOrDefault(); log.ruta = lg.VALUE + "LeerCorreos_"; log.escribeLog("-----------------------------------------------------------------------START"); try { List <CONMAIL> cc = db.CONMAILs.ToList(); CONMAIL conmail = cc.FirstOrDefault(x => x.ID == "LE"); if (conmail == null) { log.escribeLog("Falta configurar inbox."); return; } ic = new ImapClient(conmail.HOST, conmail.MAIL, conmail.PASS, AuthMethods.Login, (int)conmail.PORT, conmail.SSL); // Select a mailbox. Case-insensitive ic.SelectMailbox("INBOX"); //Esto traera los emails recibidos y no leidos //mx = ic.GetMessages(0, ic.GetMessageCount() - 1, true, false) long a = ic.GetMessageCount(); if (a > 100) { mx = ic.GetMessages(ic.GetMessageCount() - 100, ic.GetMessageCount() - 1, true, false) .Where(m => !m.Flags.HasFlag(Flags.Seen) && !m.Flags.HasFlag(Flags.Deleted)).ToList(); } else { mx = ic.GetMessages(0, ic.GetMessageCount() - 1, true, false) .Where(m => !m.Flags.HasFlag(Flags.Seen) && !m.Flags.HasFlag(Flags.Deleted)).ToList(); } //En esta lista ingresaremos a los mails que sean recibidos como cc emRq17 = new List <AE.Net.Mail.MailMessage>(); log.escribeLog("Leer inbox - numReg=(" + mx.Count + ")"); } catch (Exception e) { mx = new List <AE.Net.Mail.MailMessage>(); emRq17 = new List <AE.Net.Mail.MailMessage>(); log.escribeLog("Error al leer" + e.Message.ToString()); } try { //ingresamos los correos CORREO for (int i = 0; i < mx.Count; i++) { AE.Net.Mail.MailMessage mm = ic.GetMessage(mx[i].Uid, false); try { string[] arrAsunto = mm.Subject.Split(']'); int a = arrAsunto.Length - 1; //Recupero el asunto y lo separo del numdoc y pos string[] arrAprNum = arrAsunto[a].Split('-');//RSG cambiar 0 a 1 string[] arrClaves = arrAprNum[1].Split('.'); //Valido que tenga los datos necesarios para el req 17 if (arrClaves.Length > 1) { arrClaves[1] = Decimal.Parse(arrClaves[1]).ToString(); } ////var xy = arrAprNum[0].Trim(); if (arrAprNum[0].Trim() == "De Acuerdo" || arrAprNum[0].Trim() == "DeAcuerdo") { emRq17.Add(mm); log.escribeLog("NEGO A - " + arrClaves[1]); } else if (arrAprNum[0].Trim() == "Tengo Observaciones" || arrAprNum[0].Trim() == "TengoObservaciones") { emRq17.Add(mm); log.escribeLog("NEGO O - " + arrClaves[1]); } } catch { ic.AddFlags(Flags.Seen, mm); log.escribeLog("ERROR - " + mm.Subject); } } //Correos de FLUJO DE APROBACIÓN y RECURRENTE-----------------------------------------------------2 y 3 if (true) { for (int i = 0; i < mx.Count; i++) { AE.Net.Mail.MailMessage mm = ic.GetMessage(mx[i].Uid, false); try { string[] arrAsunto = mm.Subject.Split(']'); int a = arrAsunto.Length - 1; //Recupero el asunto y lo separo del numdoc y pos string[] arrAprNum = arrAsunto[a].Split('-');//RSG cambiar 0 a 1 string[] arrClaves = arrAprNum[1].Split('.'); decimal numdoc = Decimal.Parse(arrClaves[0]); //Si el Texto es Aprobado, Rechazado o Recurrente string[] arrApr = arrAprNum[0].Split(':'); if (arrApr.Length > 1) { ProcesaFlujo pF = new ProcesaFlujo(); if (arrApr[1] == "Approved" || arrApr[1] == "Rejected") { log.escribeLog("APPR AR - " + arrClaves[0]); int pos = Convert.ToInt32(arrAprNum[2]); FLUJO fl = db.FLUJOes.Where(x => x.NUM_DOC == numdoc && x.POS == pos).FirstOrDefault(); if (fl != null) { Console.WriteLine(mm.From.Address.Trim()); Console.WriteLine(fl.USUARIO.EMAIL); log.escribeLog("APPR mails - " + mm.From.Address.Trim() + " == " + fl.USUARIO.EMAIL); if (mm.From.Address.Trim().ToLower() == fl.USUARIO.EMAIL.Trim().ToLower() || mm.From.Address.Trim().ToLower() == fl.USUARIO1.EMAIL.Trim().ToLower()) { Console.WriteLine("true"); fl.ESTATUS = arrApr[1].Substring(0, 1); fl.FECHAM = DateTime.Now; Comentario com = new Comentario(); fl.COMENTARIO = com.getComment(mm.Body, mm.ContentType); ////fl.COMENTARIO = mm.Body; ////if (fl.COMENTARIO.Length > 255) //// fl.COMENTARIO = fl.COMENTARIO.Substring(0, 252) + "..."; var res = pF.procesa(fl, ""); log.escribeLog("APPR PROCESA - Res = " + res); Email email = new Email(); if (res == "1") { email.enviarCorreo(fl.NUM_DOC, 1, pos); } else if (res == "3") { email.enviarCorreo(fl.NUM_DOC, 3, pos); } using (TAT001Entities db1 = new TAT001Entities()) { FLUJO ff = db1.FLUJOes.Where(x => x.NUM_DOC == fl.NUM_DOC).OrderByDescending(x => x.POS).FirstOrDefault(); Estatus es = new Estatus();//RSG 18.09.2018 DOCUMENTO ddoc = db1.DOCUMENTOes.Find(fl.NUM_DOC); ff.STATUS = es.getEstatus(ddoc); db1.Entry(ff).State = System.Data.Entity.EntityState.Modified; db1.SaveChanges(); } Console.WriteLine(res); } } ic.AddFlags(Flags.Seen, mm); } ////else if (arrApr[1] == "Rejected") ////{ //// int pos = Convert.ToInt32(arrAprNum[2]); //// FLUJO fl = db.FLUJOes.Where(x => x.NUM_DOC == numdoc && x.POS == pos).FirstOrDefault(); //// fl.ESTATUS = "R"; //// fl.FECHAM = DateTime.Now; //// fl.COMENTARIO = mm.Body; //// var res = pF.procesa(fl, ""); //// if (res == "0") //// { //// // //// } //// else if (res == "1") //// { //// enviarCorreo(fl.NUM_DOC, 1); //// } //// else if (res == "3") //// { //// enviarCorreo(fl.NUM_DOC, 3); //// } //// //para marcar el mensaje como leido //// ic.AddFlags(Flags.Seen, mm); ////} else if (arrApr[1] == "Recurrent") { ////Reversa r = new Reversa(); ////string ts = db.DOCUMENTOes.Find(numdoc).TSOL.TSOLR; ////int ret = 0; ////if (ts != null) //// ret = r.creaReversa(numdoc.ToString(), ts); //////para marcar el mensaje como leido ////if (ret != 0) //// ic.AddFlags(Flags.Seen, mm); } } } catch (Exception ee) { ic.AddFlags(Flags.Seen, mm); log.escribeLog("ERROR - " + ee.Message.ToString()); } } } //req17 ////FLUJNEGO fn = new FLUJNEGO(); for (int i = 0; i < emRq17.Count; i++) { ////AE.Net.Mail.MailMessage mm = emRq17[i]; AE.Net.Mail.MailMessage mm = ic.GetMessage(emRq17[i].Uid, false); if (true) { string[] arrAsunto = mm.Subject.Split(']'); int isa = arrAsunto.Length - 1; //Recupero el asunto y lo separo del numdoc y pos string[] arrAprNum = arrAsunto[isa].Split('-'); string[] arrPiNN = arrAprNum[1].Split('.'); var _id = int.Parse(arrPiNN[1]); var vkorg = arrPiNN[2]; var _correo = arrPiNN[4].Replace('*', '.').Replace('+', '-').Replace('/', '@').Replace('#', '-'); //recupero las fechas de envio var _xres = db.NEGOCIACIONs.Where(x => x.ID == _id).FirstOrDefault(); var pid = arrPiNN[0]; //// var fs = db.DOCUMENTOes.Where(f => f.PAYER_ID == pid && f.FECHAC.Value.Month == DateTime.Now.Month && f.FECHAC.Value.Year == DateTime.Now.Year && f.DOCUMENTO_REF == null).ToList(); var _xff = _xres.FECHAF.AddDays(1); var fs = db.DOCUMENTOes.Where(f => f.PAYER_ID == pid && f.VKORG == vkorg && f.PAYER_EMAIL == _correo && f.FECHAC >= _xres.FECHAI && f.FECHAC < _xff && f.DOCUMENTO_REF == null).ToList(); //LEJ 20.07.2018----- var dOCUMENTOes = fs; var lstD = new List <DOCUMENTO>();//--- ////DOCUMENTOA dz = null;//--- for (int y = 0; y < dOCUMENTOes.Count; y++) { PorEnviar pe = new PorEnviar(); if (pe.seEnvia(dOCUMENTOes[y], db, log)) { lstD.Add(dOCUMENTOes[y]); } //////recupero el numdoc ////var de = fs[i].NUM_DOC; //////sino ecuentra una coincidencia con el criterio discriminatorio se agregan o no a la lista ////dz = db.DOCUMENTOAs.Where(x => x.NUM_DOC == de && x.CLASE != "OTR").FirstOrDefault(); ////if (dz == null || dz != null) ////{ //// if (dOCUMENTOes[y].TSOL.NEGO == true)//para el ultimo filtro //// { //// string estatus = ""; //// if (dOCUMENTOes[y].ESTATUS != null) { estatus += dOCUMENTOes[y].ESTATUS; } else { estatus += " "; } //// if (dOCUMENTOes[y].ESTATUS_C != null) { estatus += dOCUMENTOes[y].ESTATUS_C; } else { estatus += " "; } //// if (dOCUMENTOes[y].ESTATUS_SAP != null) { estatus += dOCUMENTOes[y].ESTATUS_SAP; } else { estatus += " "; } //// if (dOCUMENTOes[y].ESTATUS_WF != null) { estatus += dOCUMENTOes[y].ESTATUS_WF; } else { estatus += " "; } //// if (dOCUMENTOes[y].FLUJOes.Count > 0) //// { //// estatus += dOCUMENTOes[y].FLUJOes.OrderByDescending(a => a.POS).FirstOrDefault().WORKFP.ACCION.TIPO; //// } //// else //// { //// estatus += " "; //// } //// if (dOCUMENTOes[y].TSOL.PADRE) { estatus += "P"; } else { estatus += " "; } //// if (dOCUMENTOes[y].FLUJOes.Where(x => x.ESTATUS == "R").ToList().Count > 0) //// { //// estatus += dOCUMENTOes[y].FLUJOes.Where(x => x.ESTATUS == "R").OrderByDescending(a => a.POS).FirstOrDefault().USUARIO.PUESTO_ID; //// } //// else //// { //// estatus += " "; //// } //// if (System.Text.RegularExpressions.Regex.IsMatch(estatus, "...[P][R]..")) //// lstD.Add(dOCUMENTOes[y]); //// else if (System.Text.RegularExpressions.Regex.IsMatch(estatus, "...[R]..[8]")) //// lstD.Add(dOCUMENTOes[y]); //// else if (System.Text.RegularExpressions.Regex.IsMatch(estatus, "[P]..[A]...")) //// lstD.Add(dOCUMENTOes[y]); //// else if (System.Text.RegularExpressions.Regex.IsMatch(estatus, "..[P][A]...")) //// lstD.Add(dOCUMENTOes[y]); //// else if (System.Text.RegularExpressions.Regex.IsMatch(estatus, "..[E][A]...")) //// lstD.Add(dOCUMENTOes[y]); //// else if (System.Text.RegularExpressions.Regex.IsMatch(estatus, "...[A].[P].")) //// lstD.Add(dOCUMENTOes[y]); //// else if (System.Text.RegularExpressions.Regex.IsMatch(estatus, "...[A]...")) //// lstD.Add(dOCUMENTOes[y]); //// else if (System.Text.RegularExpressions.Regex.IsMatch(estatus, "...[T]...")) //// lstD.Add(dOCUMENTOes[y]); //// //if (dOCUMENTOes[y].ESTATUS_WF == "P")//LEJ 20.07.2018---------------------------I //// //{ //// // if (dOCUMENTOes[y].FLUJOes.Count > 0) //// // { //// // if (dOCUMENTOes[y].FLUJOes.OrderByDescending(a => a.POS).FirstOrDefault().USUARIO != null) //// // { //// // //(Pendiente Validación TS) //// // if (dOCUMENTOes[y].FLUJOes.OrderByDescending(a => a.POS).FirstOrDefault().USUARIO.PUESTO_ID == 8) //// // { //// // lstD.Add(dOCUMENTOes[y]); //// // } //// // } //// // } //// //} //// //else if (dOCUMENTOes[y].ESTATUS_WF == "R")//(Pendiente Corrección) //// //{ //// // if (dOCUMENTOes[y].FLUJOes.Count > 0) //// // { //// // lstD.Add(dOCUMENTOes[y]); //// // } //// //} //// //else if (dOCUMENTOes[y].ESTATUS_WF == "T")//(Pendiente Taxeo) //// //{ //// // if (dOCUMENTOes[y].TSOL_ID == "NCIA") //// // { //// // if (dOCUMENTOes[y].PAIS_ID == "CO")//(sólo Colombia) //// // { //// // lstD.Add(dOCUMENTOes[y]); //// // } //// // } //// //} //// //else if (dOCUMENTOes[y].ESTATUS_WF == "A")//(Por Contabilizar) //// //{ //// // if (dOCUMENTOes[y].ESTATUS == "P") //// // { //// // lstD.Add(dOCUMENTOes[y]); //// // } //// //} //// //else if (dOCUMENTOes[y].ESTATUS_SAP == "E")//Error en SAP //// //{ //// // lstD.Add(dOCUMENTOes[y]); //// //} //// //else if (dOCUMENTOes[y].ESTATUS_SAP == "X")//Succes en SAP //// //{ //// // lstD.Add(dOCUMENTOes[y]); //// //} //// } //// //LEJ 20.07.2018----------------------------------------------------------------T ////} } //---- if (arrAprNum[0].Trim() == "DeAcuerdo" || arrAprNum[0].Trim() == "De Acuerdo") { for (int x = 0; x < lstD.Count; x++) { FLUJNEGO fn = new FLUJNEGO(); fn.NUM_DOC = lstD[x].NUM_DOC; DateTime fecham = mm.Date; fn.FECHAM = fecham; fn.FECHAC = lstD[x].FECHAC; fn.KUNNR = arrPiNN[0]; var cm = arrAprNum[0].ToString(); Comentario com = new Comentario(); cm += com.getComment(mm.Body, mm.ContentType); ////cm += " - " + mm.Body; var cpos = db.FLUJNEGOes.Where(h => h.NUM_DOC.Equals(fn.NUM_DOC)).ToList().Count; fn.POS = cpos + 1; fn.COMENTARIO = cm; db.FLUJNEGOes.Add(fn); db.SaveChanges(); } } else if (arrAprNum[0].Trim() == "TengoObservaciones" || arrAprNum[0].Trim() == "Tengo Observaciones") { for (int x = 0; x < lstD.Count; x++) { FLUJNEGO fn = new FLUJNEGO(); fn.NUM_DOC = lstD[x].NUM_DOC; fn.FECHAC = lstD[x].FECHAC; DateTime fecham = mm.Date; fn.FECHAM = fecham; fn.KUNNR = arrPiNN[0]; var cm = arrAprNum[0] + " "; Comentario com = new Comentario(); cm += com.getComment(mm.Body, mm.ContentType); ////cm += " - " + mm.Body; var cpos = db.FLUJNEGOes.Where(h => h.NUM_DOC.Equals(fn.NUM_DOC)).ToList().Count; fn.POS = cpos + 1; fn.COMENTARIO = cm; db.FLUJNEGOes.Add(fn); db.SaveChanges(); } } else { //Hubo algun error break; } } //para marcar el mensaje como leido ic.AddFlags(Flags.Seen, mm); } } catch (Exception ex) { log.escribeLog("ERROR - " + ex.InnerException.ToString()); ////throw new Exception(ex.InnerException.ToString()); } finally { ic.Dispose(); } }
public FLUJO determinaAgenteC(DOCUMENTO d, CLIENTEF cf, int pos, int sop, string tipo)//, string next) { FLUJO f = new FLUJO(); List <DET_APROBP> ddp = new List <DET_APROBP>(); using (TAT001Entities db = new TAT001Entities()) { DET_APROBH dh = db.DET_APROBH.Where(a => a.SOCIEDAD_ID.Equals(d.SOCIEDAD_ID) & a.ACTIVO).OrderByDescending(a => a.VERSION).FirstOrDefault();// OBTIENE ENCABEZADO FLUJO DE SOCIEDAD if (dh != null) { ddp = db.DET_APROBP.Where(a => a.SOCIEDAD_ID.Equals(dh.SOCIEDAD_ID) & a.PUESTOC_ID == dh.PUESTOC_ID & a.VERSION == dh.VERSION & a.ACTIVO).ToList(); //oBTIENE TABLA DE FLUJO } if (tipo == "N") //------Si es modificación por rechazo de manager { FLUJO ffl = db.FLUJOes.Where(a => a.NUM_DOC.Equals(d.NUM_DOC) & a.ESTATUS.Equals("R")).OrderByDescending(a => a.POS).FirstOrDefault(); f = ffl; } } int ppos = 0; DET_APROBP dp = ddp.Where(a => a.POS == pos).FirstOrDefault(); //Obtiene nivel de autorización if (dp != null) //----Si existe posición { int detp = 0; if (tipo != "B" & tipo != "M")//---Si no es notificación ni modificación por rechazo de TS { if (dp.MONTO != null) { if (d.MONTO_DOC_MD > dp.MONTO) { ppos--; detp = dp.N_MONTO == null ? (pos + 1) : (int)dp.N_MONTO; } } if (ppos == 0) { if (dp.PRESUPUESTO != null & d.EXCEDE_PRES != null) { if (d.EXCEDE_PRES == "X" & dp.PRESUPUESTO == true) { ppos--; detp = dp.N_PRESUP == null ? (pos + 1) : (int)dp.N_PRESUP; } } } } else { pos = 98; } if (pos == 99) { f.USUARIOA_ID = null; } else if (ppos == 0 & sop == 98)//Cuando va a soporte(Termina autorización) { f.USUARIOA_ID = d.USUARIOD_ID; f.DETPOS = sop; } else if (ppos == 0 & sop == 99)//Cuando va a TS(Termina autorización) { f.USUARIOA_ID = cf.USUARIO6_ID; f.DETPOS = sop; } else { if ((detp - 1) == 1) { f.USUARIOA_ID = cf.USUARIO2_ID; if (cf.USUARIO2_ID != null) { f.DETPOS = detp; } else { ppos++; f.DETPOS = sop; if (sop == 99) { f.USUARIOA_ID = cf.USUARIO6_ID; } else { f.USUARIOA_ID = d.USUARIOD_ID; } } } if ((detp - 1) == 2) { f.USUARIOA_ID = cf.USUARIO3_ID; if (cf.USUARIO3_ID != null) { f.DETPOS = detp; } else { ppos++; f.DETPOS = sop; if (sop == 99) { f.USUARIOA_ID = cf.USUARIO6_ID; } else { f.USUARIOA_ID = d.USUARIOD_ID; } } } if ((detp - 1) == 3) { f.USUARIOA_ID = cf.USUARIO4_ID; if (cf.USUARIO4_ID != null) { f.DETPOS = detp; } else { ppos++; f.DETPOS = sop; if (sop == 99) { f.USUARIOA_ID = cf.USUARIO6_ID; } else { f.USUARIOA_ID = d.USUARIOD_ID; } } } if ((detp - 1) == 4) { f.USUARIOA_ID = cf.USUARIO5_ID; if (cf.USUARIO5_ID != null) { f.DETPOS = detp; } else { ppos++; f.DETPOS = sop; if (sop == 99) { f.USUARIOA_ID = cf.USUARIO6_ID; } else { f.USUARIOA_ID = d.USUARIOD_ID; } } } if (pos == 98)//Despues de rechazo de TS para PRA - regresa a TS { f.USUARIOA_ID = cf.USUARIO6_ID; f.DETPOS = 99; } } } else if (pos == 98) { f.USUARIOA_ID = cf.USUARIO6_ID; f.DETPOS = 99; } else if (pos == 0)//Despues de rechazo de TS para PR - regresa a TS { if (f.DETPOS == 99) { ppos = 1; } f.DETPOS--; f.POS = ppos; } f.POS = ppos; return(f); }
public FLUJO determinaAgente1(DOCUMENTO d, string user, string delega, int pos, int?loop, int sop) { if (delega != null) { user = delega; } bool fin = false; TAT001Entities db = new TAT001Entities(); DET_AGENTEC dap = new DET_AGENTEC(); FLUJO f_actual = db.FLUJOes.Where(a => a.NUM_DOC.Equals(d.NUM_DOC)).FirstOrDefault(); //DET_AGENTEH dah = db.DET_AGENTEH.Where(a => a.SOCIEDAD_ID.Equals(d.SOCIEDAD_ID) & a.PUESTOC_ID == d.PUESTO_ID & // a.USUARIOC_ID.Equals(d.USUARIOC_ID) & a.VERSION == f_actual.DETVER).FirstOrDefault(); List <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).ToList(); USUARIO u = db.USUARIOs.Find(d.USUARIOC_ID); //long gaa = db.CREADOR2.Where(a => a.ID.Equals(u.ID) & a.BUKRS.Equals(d.SOCIEDAD_ID) & a.LAND.Equals(d.PAIS_ID) & a.PUESTOC_ID == d.PUESTO_ID & a.ACTIVO == true).FirstOrDefault().AGROUP_ID; int ppos = 0; if (pos.Equals(0)) { if (loop == null) { //dap = db.DET_AGENTEP.Where(a => a.SOCIEDAD_ID.Equals(dah.SOCIEDAD_ID) & a.PUESTOC_ID == dah.PUESTOC_ID & // a.VERSION == dah.VERSION & a.AGROUP_ID == dah.AGROUP_ID & a.POS == 1).FirstOrDefault(); dap = dah.Where(a => a.POS == 1).FirstOrDefault(); dap.POS = dap.POS - 1; } else { FLUJO ffl = db.FLUJOes.Where(a => a.NUM_DOC.Equals(d.NUM_DOC) & a.ESTATUS.Equals("R")).OrderByDescending(a => a.POS).FirstOrDefault(); if (ffl.DETPOS == 99) { ppos = 1; } ffl.DETPOS = ffl.DETPOS - 1; fin = true; ffl.POS = ppos; return(ffl); } } else if (pos.Equals(98)) { dap = dah.Where(a => a.POS == (pos + 1)).FirstOrDefault(); } else { //DET_AGENTE actual = db.DET_AGENTE.Where(a => a.PUESTOC_ID == d.PUESTO_ID & a.AGROUP_ID == gaa & a.POS == (pos)).FirstOrDefault(); DET_AGENTEC actual = dah.Where(a => a.POS == (pos)).FirstOrDefault(); if (actual.POS == 99) { fin = true; } else if (actual.POS == 98) { //da = db.DET_AGENTE.Where(a => a.PUESTOC_ID == d.PUESTO_ID & a.AGROUP_ID == gaa & a.POS == (pos + 1)).FirstOrDefault(); dap = dah.Where(a => a.POS == (pos)).FirstOrDefault(); } else { if (actual.MONTO != null) { if (d.MONTO_DOC_ML2 > actual.MONTO) { dap = dah.Where(a => a.POS == (pos + 1)).FirstOrDefault(); ppos = -1; } } //if (actual.PRESUPUESTO != null) if ((bool)actual.PRESUPUESTO) { if (d.MONTO_DOC_MD > 100000) { //da = db.DET_AGENTE.Where(a => a.PUESTOC_ID == d.PUESTO_ID & a.AGROUP_ID == gaa & a.POS == (pos + 1)).FirstOrDefault(); dap = dah.Where(a => a.POS == (pos + 1)).FirstOrDefault(); ppos = -1; } } } } string agente = ""; FLUJO f = new FLUJO(); f.DETPOS = 0; if (!fin) { if (dap != null) { if (dap.USUARIOA_ID != null) { //agente = db.GAUTORIZACIONs.Where(a => a.ID == da.AGROUP_ID).FirstOrDefault().USUARIOs.Where(a => a.PUESTO_ID == da.PUESTOA_ID).First().ID; agente = dap.USUARIOA_ID; f.DETPOS = dap.POS; } else { dap = dah.Where(a => a.POS == (sop)).FirstOrDefault(); if (dap == null) { agente = d.USUARIOD_ID; f.DETPOS = 98; } else { //agente = db.GAUTORIZACIONs.Where(a => a.ID == da.AGROUP_ID).FirstOrDefault().USUARIOs.Where(a => a.PUESTO_ID == da.PUESTOA_ID).First().ID; agente = dap.USUARIOA_ID; f.DETPOS = dap.POS; } } } else { dap = dah.Where(a => a.POS == (sop)).FirstOrDefault(); if (dap == null) { agente = d.USUARIOD_ID; f.DETPOS = 98; } else { //agente = db.GAUTORIZACIONs.Where(a => a.ID == da.AGROUP_ID).FirstOrDefault().USUARIOs.Where(a => a.PUESTO_ID == da.PUESTOA_ID).First().ID; agente = dap.USUARIOA_ID; f.DETPOS = dap.POS; } } } f.POS = ppos; if (agente != "") { f.USUARIOA_ID = agente; } else { f.USUARIOA_ID = null; } return(f); }