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); }
public async Task <RespPagarDeudas> Post(string autentic1, string autentic2, string CodBoca, string CodTerminal, string CodDeuda, string CodEnte, string IdTransaccion, string Importe) { RespPagarDeudas response = new RespPagarDeudas(); this.logger.Information($"Se recibió pago, Boca: {CodBoca}, Terminal {CodTerminal}, " + $"Deuda:{CodDeuda}, Ente: {CodEnte}, Importe: {Importe}" + $", Identi:{IdTransaccion}"); bool Autenticado = await _AuthenticationService.ValidoAutenticacion(autentic1, autentic2); if (Autenticado == true) { if (CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator == ".") //punto como separador decimal { Importe = Importe.Replace(",", "."); } if (CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator == ",") //coma como separador decimal { Importe = Importe.Replace(".", ","); } response = await Service.Post(CodBoca, CodTerminal, CodDeuda, CodEnte, IdTransaccion, Importe); } else { response.Estado = 200; //Datos de autenticación incorrectos } logger.Information($"Respuesta:{response.ToString()}"); 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); }
public async Task <RespPagarDeudas> Post(string CodBoca, string CodTerminal, string CodDeuda, string CodEnte, string IdTransaccion, string Importe) { RespPagarDeudas response = new RespPagarDeudas { Estado = 0, NroOperacion = "" }; bool existe = await Repository.ExisteTransaccion(IdTransaccion); if (existe == true) { response.Estado = 999; //Error interno... la transaccion ya existe response.NroOperacion = ""; Logger.Warning($"El id transaccion {IdTransaccion} ya fue recibido."); return(response); } ComprobanteDeudaSoftland comprobanteDeuda = await Repository.RecuperarComprobanteDeuda(CodDeuda); if (comprobanteDeuda.Codfor == null) { response.Estado = 4; // Codigo de Deuda inexistente response.NroOperacion = ""; Logger.Warning($"Codigo de Deuda inexistente, Codfor: {comprobanteDeuda.Codfor}, Nrofor: {comprobanteDeuda.Nrofor}"); return(response); } //A pedido de Diego Ballario, se elimina este control (Mail 29/05/2020) //if (comprobanteDeuda.Fchvnc.Date < DateTime.Now.Date) //{ // response.Estado = 3; //Deuda vencida // response.NroOperacion = ""; // Logger.Warning($"Deuda vencida, el día {comprobanteDeuda.Fchvnc.Date} - Codfor: {comprobanteDeuda.Codfor}, Nrofor: {comprobanteDeuda.Nrofor}"); // return response; //} if (comprobanteDeuda.Saldo == 0) { response.Estado = 7; // La deuda ya fue cancelada response.NroOperacion = ""; Logger.Warning($"La deuda ya fue cancelada - Codfor: {comprobanteDeuda.Codfor}, Nrofor: {comprobanteDeuda.Nrofor}"); return(response); } if (comprobanteDeuda.Saldo < Convert.ToDecimal(Importe)) { response.Estado = 10; //El importe no puede ser superior al monto adeudado del comprobante response.NroOperacion = ""; Logger.Warning($"El importe no puede ser superior al monto adeudado del comprobante - " + $"Codfor: {comprobanteDeuda.Codfor}, Nrofor: {comprobanteDeuda.Nrofor}" + $"Monto adeudado:{comprobanteDeuda.Saldo}, Importe pagado: {Importe}"); return(response); } if (response.Estado != 999) { response = await Repository.Post(CodBoca, CodTerminal, comprobanteDeuda, CodEnte, IdTransaccion, Importe, response.Estado); } return(response); }