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); }
public FileStreamResult generarExcel(List <SolxContabilizar> lst, string cocode) { ArchivoContable acontable = new ArchivoContable(); List <ArchivoC> l_ac = new List <ArchivoC>(); var workbook = new XLWorkbook(); var worksheet = workbook.Worksheets.Add("Sheet 1"); foreach (var l in lst) { acontable.generarArchivo(l.NUM_DOC, 0, 0, "L", ref l_ac); } var fila = 1; foreach (var la in l_ac) { worksheet.Cell(fila, 1).Value = la.tab.TIPO_DOC; worksheet.Cell(fila, 2).Value = la.tab.SOCIEDAD.Trim(); worksheet.Cell(fila, 3).Value = la.tab.FECHA_DOCU.Trim(); worksheet.Cell(fila, 4).Value = la.tab.FECHA_DOCU.Trim(); worksheet.Cell(fila, 5).Value = la.doc.MONEDA_ID.Trim(); worksheet.Cell(fila, 6).Value = la.tab.HEADER_TEXT.Trim(); worksheet.Cell(fila, 7).Value = la.tab.REFERENCIA.Trim(); worksheet.Cell(fila, 8).Value = la.tab.CALC_TAXT.ToString().Replace("True", "X").Replace("False", ""); worksheet.Cell(fila, 9).Value = la.tab.NOTA.Trim(); worksheet.Cell(fila, 10).Value = la.tab.CORRESPONDENCIA.Trim(); var fdetalle = fila + 2; foreach (var d in la.det) { worksheet.Cell(fdetalle, 1).Value = d.POS_TYPE; worksheet.Cell(fdetalle, 2).Value = d.COMP_CODE; worksheet.Cell(fdetalle, 3).Value = d.BUS_AREA; worksheet.Cell(fdetalle, 4).Value = d.POST_KEY; worksheet.Cell(fdetalle, 5).Value = d.ACCOUNT; worksheet.Cell(fdetalle, 6).Value = d.COST_CENTER; worksheet.Cell(fdetalle, 7).Value = d.BALANCE; worksheet.Cell(fdetalle, 8).Value = d.TEXT; worksheet.Cell(fdetalle, 9).Value = "'" + d.SALES_ORG; worksheet.Cell(fdetalle, 10).Value = d.DIST_CHANEL; worksheet.Cell(fdetalle, 11).Value = d.DIVISION; worksheet.Cell(fdetalle, 12).Value = d.INV_REF; worksheet.Cell(fdetalle, 13).Value = d.PAY_TERM; worksheet.Cell(fdetalle, 14).Value = d.JURIS_CODE; worksheet.Cell(fdetalle, 15).Value = "'" + d.CUSTOMER; worksheet.Cell(fdetalle, 16).Value = "'" + d.PRODUCT; worksheet.Cell(fdetalle, 17).Value = d.TAX_CODE; worksheet.Cell(fdetalle, 18).Value = d.PLANT; worksheet.Cell(fdetalle, 19).Value = d.REF_KEY1; worksheet.Cell(fdetalle, 20).Value = d.REF_KEY2; worksheet.Cell(fdetalle, 21).Value = d.REF_KEY3; worksheet.Cell(fdetalle, 22).Value = "'" + d.ASSIGNMENT; worksheet.Cell(fdetalle, 23).Value = d.QTY; worksheet.Cell(fdetalle, 24).Value = d.BASE_UNIT; worksheet.Cell(fdetalle, 25).Value = d.AMOUNT_LC; worksheet.Cell(fdetalle, 26).Value = d.RETENCION_ID; fdetalle += 1; } fila = fdetalle + 2; } worksheet.Columns().AdjustToContents(); var fileDownloadName = "SolxContabilizar_" + cocode + "_" + DateTime.Now.ToString("ddMMyyyy") + ".xlsx"; var contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; var fileStream = new MemoryStream(); workbook.SaveAs(fileStream); fileStream.Position = 0; var fsr = new FileStreamResult(fileStream, contentType); fsr.FileDownloadName = fileDownloadName; return(fsr); }