public async Task <ComprobanteDeudaSoftland> RecuperarComprobanteDeuda(string identificadorDeuda) { string sSql = "SELECT " + " VTRMVH_CODEMP, VTRMVH_MODFOR, VTRMVH_CODFOR, VTRMVH_NROFOR, VTRMVC_FCHVNC, VTRMVC_IMPNAC, VTRMVH_NROCTA, " + " ISNULL((SELECT SUM(VTRMVC_IMPNAC) FROM VTRMVC " + " WHERE " + " VTRMVC_EMPAPL = VTRMVH_CODEMP AND " + " VTRMVC_MODAPL = VTRMVH_MODFOR AND " + " VTRMVC_CODAPL = VTRMVH_CODFOR AND " + " VTRMVC_NROAPL = VTRMVH_NROFOR ),0) SALDO " + " FROM VTRMVH " + " INNER JOIN VTRMVC ON " + " VTRMVC_CODEMP = VTRMVH_CODEMP AND " + " VTRMVC_MODFOR = VTRMVH_MODFOR AND " + " VTRMVC_CODFOR = VTRMVH_CODFOR AND " + " VTRMVC_NROFOR = VTRMVH_NROFOR AND " + " VTRMVC_CODFOR = VTRMVC_CODAPL " + " WHERE " + $" USR_VTRMVH_IDC = '{identificadorDeuda}' "; ComprobanteDeudaSoftland comprobante = new ComprobanteDeudaSoftland(); using (SqlConnection sql = new SqlConnection(Connectionstring)) { using (SqlCommand cmd = new SqlCommand(sSql, sql)) { cmd.CommandType = System.Data.CommandType.Text; await sql.OpenAsync(); using (var reader = await cmd.ExecuteReaderAsync()) { while (await reader.ReadAsync()) { comprobante.Codemp = (string)reader["VTRMVH_CODEMP"]; comprobante.Modfor = (string)reader["VTRMVH_MODFOR"]; comprobante.Codfor = (string)reader["VTRMVH_CODFOR"]; comprobante.Nrofor = (int)reader["VTRMVH_NROFOR"]; comprobante.Fchvnc = (DateTime)reader["VTRMVC_FCHVNC"]; comprobante.Import = (decimal)reader["VTRMVC_IMPNAC"]; comprobante.Nrocta = (string)reader["VTRMVH_NROCTA"]; comprobante.Saldo = (decimal)reader["SALDO"]; } } } return(comprobante); } }
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); }