private async Task <RespPagarDeudas> ProcesoRecibo(SarVtrrch HeaderCobranza) { RespPagarDeudas resultado = new RespPagarDeudas(); await InsertaCwJmSchedules("WSCOBR"); //Para dejar tiempo a Softland a que procese el recibo Thread.Sleep(15000); //Para recargar la entidad con los datos del recibo impactado en Softland. await Context.Entry(HeaderCobranza).ReloadAsync(); switch (HeaderCobranza.SarVtrrchStatus) { case "S": Logger.Information($"El pago se recibio, procesado por Softland: {resultado.NroOperacion}"); resultado.Estado = 0; resultado.NroOperacion = HeaderCobranza.SarVtrrchCodfor + "|" + HeaderCobranza.SarVtrrchNrofor.ToString(); break; case "W": Logger.Warning($"El pago se recibio, pero Softland aún no lo proceso, SAR_VTRRRCH_IDENTI = {HeaderCobranza.SarVtrrchIdenti}"); resultado.Estado = 0; resultado.NroOperacion = "Pago recibido, numero de comprobante pendiente de confirmar"; break; case "E": Logger.Warning($"El pago se recibio, la registracion dio error: {HeaderCobranza.SarVtrrchErrmsg}"); resultado.Estado = 999; resultado.NroOperacion = "Error interno en aplicación"; break; } return(resultado); }
private async Task <RespAnular> ProcesoAnulacion(SarVtrrch HeaderCobranza) { RespAnular respuesta = new RespAnular(); await InsertaCwJmSchedules("WSCOBR"); //Para dejar tiempo a Softland a que procese el recibo Thread.Sleep(10000); //Para recargar la entidad con los datos del recibo impactado en Softland. await Context.Entry(HeaderCobranza).ReloadAsync(); switch (HeaderCobranza.SarVtrrchStatus) { case "S": Logger.Information($"La anulación se recibio, procesada ok por Softland"); respuesta.Estado = 0; break; case "W": Logger.Warning($"La anulación se recibio, pero Softland aún no la proceso, SAR_VTRRRCH_IDENTI = {HeaderCobranza.SarVtrrchIdenti}"); respuesta.Estado = 999; break; case "E": Logger.Warning($"La anulación se recibio, el procesamiento dio error: {HeaderCobranza.SarVtrrchErrmsg}"); respuesta.Estado = 999; break; default: respuesta.Estado = 999; break; } return(respuesta); }
public async Task <bool> ExisteTransaccion(string IdTransaccion) { SarVtrrch vtrrch = await Context.SarVtrrch.FindAsync(IdTransaccion); if (vtrrch != null) { return(true); } else { return(false); } }
public async Task <RespAnular> Post(string codBoca, string codTerminal, string idTransaccion, string codfor, int nrofor) { RespAnular response = new RespAnular { Estado = 0 }; SarVtrrch HeaderCobranza = new SarVtrrch { SarVtrrchIdenti = "A" + idTransaccion, SarVtrrchStatus = "A", SarVtrrchCodcom = await RecuperarEquivalencia("WEBSER", "ANUCOM", codBoca), SarVtrrchNrocta = "", SarVtrrchCodemp = "WILTEL2", SarVtrrchModfor = "VT", SarVtrrchCodfor = codfor, SarVtrrchNrofor = nrofor, SarVtrrchFchmov = DateTime.Now.Date, SarVtFecalt = DateTime.Now, SarVtFecmod = DateTime.Now, SarVtDebaja = "N", SarVtOalias = "SAR_VTRRCH", SarVtrrchErrmsg = "", SarVtUltopr = "A", SarVtUserid = "WEBAPI", UsrVtrrchWsestad = 999, UsrVtrrchCodboc = codBoca, UsrVtrrchCodter = codTerminal }; try { Context.SarVtrrch.Add(HeaderCobranza); await Context.SaveChangesAsync(); Logger.Information("Se insertó registro de anulación en tabla SAR_VTRRCH "); } catch (Exception error) { Logger.Fatal($"Error al insertar registro de anulacion en tabla SAR_VTRRCH :{error}"); response.Estado = 999; return(response); }; response = await ProcesoAnulacion(HeaderCobranza); return(response); }
public async Task <RespEstadoTransaccion> Get(string codBoca, string codTerminal, string idTransaccion) { RespEstadoTransaccion response = new RespEstadoTransaccion { Estado = 0, NroOperacion = "" }; SarVtrrch vtrrch = await Context.SarVtrrch.FindAsync(idTransaccion); if (vtrrch != null) { response.Estado = vtrrch.UsrVtrrchWsestad; if (vtrrch.UsrVtrrchWsestad == 0) { switch (vtrrch.SarVtrrchStatus) { case "S": response.NroOperacion = vtrrch.SarVtrrchCodfor + "|" + vtrrch.SarVtrrchNrofor.ToString(); response.Estado = 0; break; case "E": response.NroOperacion = ""; response.Estado = 999; break; case "W": response.NroOperacion = "Pago recibido, numero de comprobante pendiente de confirmar"; response.Estado = 0; break; } } } else { response.Estado = 300; //Transaccion inexistente } return(response); }
public async Task <RespPagarDeudas> Post(string codBoca, string codTerminal, ComprobanteDeudaSoftland comprobanteDeuda, string codEnte, string idTransaccion, string importe, int status) { RespPagarDeudas response = new RespPagarDeudas(); SarVtrrch HeaderCobranza = new SarVtrrch { SarVtrrchIdenti = idTransaccion, SarVtrrchStatus = "W", SarVtrrchCodcom = await RecuperarEquivalencia("WEBSER", "CODCOM", codEnte), SarVtrrchNrocta = comprobanteDeuda.Nrocta, SarVtrrchCodemp = "WILTEL2", SarVtrrchFchmov = DateTime.Now.Date, SarVtFecalt = DateTime.Now, SarVtFecmod = DateTime.Now, SarVtDebaja = "N", SarVtOalias = "SAR_VTRRCH", SarVtrrchErrmsg = "", SarVtUltopr = "A", SarVtUserid = "WEBAPI", UsrVtrrchWsestad = status, UsrVtrrchCodboc = codBoca, UsrVtrrchCodter = codTerminal, UsrVtrrchCodent = Int16.Parse(codEnte) }; SarVtrrcc01 AplicacionesCobranza = new SarVtrrcc01 { SarVtrrcc01Identi = idTransaccion, SarVtrrcc01Nroitm = 1, SarVtrrcc01Modapl = comprobanteDeuda.Modfor, SarVtrrcc01Codapl = comprobanteDeuda.Codfor, SarVtrrcc01Nroapl = comprobanteDeuda.Nrofor, SarVtrrcc01Cuotas = 1, SarVtrrcc01Impnac = null, SarVtrrcc01Impext = null, SarVtrrcc01Cannac = Convert.ToDecimal(importe), SarVtrrcc01Canext = null, SarVtFecalt = DateTime.Now, SarVtFecmod = DateTime.Now, SarVtUserid = "WEBAPI", SarVtUltopr = "A", SarVtDebaja = "N" }; SarVtrrcc04 MediosdeCobro = new SarVtrrcc04 { SarVtrrcc04Identi = idTransaccion, SarVtrrcc04Nroitm = 1, SarVtrrcc04Modcpt = null, SarVtrrcc04Tipcpt = await RecuperarEquivalencia("WEBSER", "TIPCPT", codEnte), SarVtrrcc04Codcpt = await RecuperarEquivalencia("WEBSER", "CODCPT", codEnte), SarVtrrcc04Import = Convert.ToDecimal(importe), SarVtFecalt = DateTime.Now, SarVtFecmod = DateTime.Now, SarVtUserid = "WEBAPI", SarVtUltopr = "A", SarVtDebaja = "N" }; try { Context.SarVtrrch.Add(HeaderCobranza); await Context.SaveChangesAsync(); Context.SarVtrrcc01.Add(AplicacionesCobranza); await Context.SaveChangesAsync(); Context.SarVtrrcc04.Add(MediosdeCobro); await Context.SaveChangesAsync(); Logger.Information("Se insertaron registros en tablas SAR_VTRRCH e hijas"); } catch (Exception error) { Logger.Fatal($"Error al insertar registros en tablas SAR_VTRRCH e hijas:{error}"); response.Estado = 999; response.NroOperacion = ""; }; if (status == 0) { response = await ProcesoRecibo(HeaderCobranza); } return(response); }