public async Task ActualizarListaActividadGeneral(int pciId, List <ActividadGeneral> listaTotal) { List <ActividadGeneral> listaActividadGeneral = new List <ActividadGeneral>(); ActividadGeneral actividadGeneral = null; DateTime fechaActual = _generalInterface.ObtenerFechaHoraActual(); #region Registrar nuevos List <ActividadGeneral> listaNueva = listaTotal .Where(x => x.ActividadGeneralId == 0) .OrderBy(x => x.RubroPresupuestal.Nombre) .ToList(); if (listaNueva != null && listaNueva.Count > 0) { foreach (var item in listaNueva) { actividadGeneral = new ActividadGeneral(); actividadGeneral.PciId = pciId; actividadGeneral.ApropiacionVigente = item.ApropiacionVigente; actividadGeneral.ApropiacionDisponible = item.ApropiacionDisponible; actividadGeneral.RubroPresupuestalId = item.RubroPresupuestal.RubroPresupuestalId; listaActividadGeneral.Add(actividadGeneral); } await _dataContext.ActividadGeneral.AddRangeAsync(listaActividadGeneral); await _dataContext.SaveChangesAsync(); } #endregion Registrar nuevos #region Actualizar registros List <ActividadGeneral> listaModificada = listaTotal .Where(x => x.ActividadGeneralId > 0) .ToList(); if (listaModificada != null && listaModificada.Count > 0) { foreach (var item in listaModificada) { actividadGeneral = await _repoActividad.ObtenerActividadGeneralBase(item.ActividadGeneralId); if (actividadGeneral != null) { actividadGeneral.ApropiacionVigente = item.ApropiacionVigente; actividadGeneral.ApropiacionDisponible = item.ApropiacionDisponible; await _dataContext.SaveChangesAsync(); } } } #endregion Actualizar registros }
public async Task <IActionResult> RegistrarContrato(ContratoDto contratoDto) { Contrato contrato = new Contrato(); await using var transaction = await _dataContext.Database.BeginTransactionAsync(); try { usuarioId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); valorPciId = User.FindFirst(ClaimTypes.Role).Value; if (!string.IsNullOrEmpty(valorPciId)) { pciId = int.Parse(valorPciId); } if (contratoDto != null) { var cdp = await _cdpRepo.ObtenerCDPPorCompromiso(contratoDto.Crp); #region Mapear datos Contrato contrato.NumeroContrato = contratoDto.NumeroContrato; contrato.TipoContratoId = contratoDto.TipoContratoId; contrato.Crp = contratoDto.Crp; contrato.FechaRegistro = cdp.Fecha; contrato.FechaExpedicionPoliza = contratoDto.FechaExpedicionPoliza; contrato.FechaInicio = contratoDto.FechaInicio; contrato.FechaFinal = contratoDto.FechaFinal; contrato.EsPagoMensual = contratoDto.EsPagoMensual; contrato.ValorPagoMensual = contratoDto.EsPagoMensual ? contratoDto.ValorPagoMensual : 0; contrato.Supervisor1Id = contratoDto.Supervisor1Id; contrato.Supervisor2Id = contratoDto.Supervisor2Id.HasValue ? contratoDto.Supervisor2Id.Value : null; contrato.UsuarioIdRegistro = usuarioId; contrato.PciId = pciId; contrato.FechaInsercion = _generalInterface.ObtenerFechaHoraActual(); #endregion Mapear datos Contrato //Registrar Parametro liquidación Contrato _dataContext.Contrato.Add(contrato); await _dataContext.SaveChangesAsync(); await transaction.CommitAsync(); return(Ok(contrato.ContratoId)); } } catch (Exception) { throw; } throw new Exception($"No se pudo registrar el tercero"); }
public async Task <bool> ValidateDate() { DateTime?fechaRegistrada = null; var parameter = await _context.ParametroSistema.FirstOrDefaultAsync(x => x.Nombre.ToLower() == parametroFecha.ToLower()); var fechaSistema = _generalInterface.ObtenerFechaHoraActual(); if (parameter == null) { return(false); } var valor = Decrypt(parameter.Valor); if (string.IsNullOrEmpty(valor)) { return(false); } fechaRegistrada = Convert.ToDateTime(valor); fechaRegistrada = fechaRegistrada.Value.Date.AddDays(1); if (fechaSistema >= fechaRegistrada) { return(false); } return(true); }
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { var resultContext = await next(); var userId = int.Parse(resultContext.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value); var repo = resultContext.HttpContext.RequestServices.GetService <IDatingRepository>(); var user = await repo.GetUser(userId); user.LastActive = _generalInterface.ObtenerFechaHoraActual(); await repo.SaveAll(); }
public async Task <PagedList <FormatoCausacionyLiquidacionPagos> > ObtenerLiquidacionesParaCuentaPorPagarArchivo( int?terceroId, List <int> listaEstadoId, bool?procesado, UserParams userParams) { var listaCompromisoConClave = (from pp in _context.ClavePresupuestalContable where pp.PciId == userParams.PciId select pp.Crp).ToHashSet(); var lista = (from dl in _context.DetalleLiquidacion join c in _context.PlanPago on dl.PlanPagoId equals c.PlanPagoId join t in _context.Tercero on c.TerceroId equals t.TerceroId join p in _context.ParametroLiquidacionTercero on c.TerceroId equals p.TerceroId into parametroLiquidacion from pl in parametroLiquidacion.DefaultIfEmpty() where dl.EstadoId != (int)EstadoDetalleLiquidacion.Rechazado where (dl.Crp == c.Crp) where dl.PciId == c.PciId where dl.PciId == pl.PciId where dl.PciId == userParams.PciId where (c.TerceroId == terceroId || terceroId == null) where (dl.Procesado == procesado || procesado == null) select new FormatoCausacionyLiquidacionPagos() { DetalleLiquidacionId = dl.DetalleLiquidacionId, PlanPagoId = dl.PlanPagoId, IdentificacionTercero = dl.NumeroIdentificacion, NombreTercero = dl.Nombre, NumeroRadicadoSupervisor = dl.NumeroRadicado, FechaRadicadoSupervisor = dl.FechaRegistro.HasValue ? dl.FechaRegistro.Value : _generalInterface.ObtenerFechaHoraActual(), ValorTotal = c.ValorFacturado.HasValue ? c.ValorFacturado.Value : 0, TieneClavePresupuestalContable = listaCompromisoConClave.Contains(c.Crp) }). Distinct(); if (lista != null) { lista.OrderByDescending(c => c.DetalleLiquidacionId); } return(await PagedList <FormatoCausacionyLiquidacionPagos> .CreateAsync(lista, userParams.PageNumber, userParams.PageSize)); }
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { var resultContext = await next(); var userId = int.Parse(resultContext.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value); var unitOfWork = resultContext.HttpContext.RequestServices.GetService <IUnitOfWork>(); var repo = resultContext.HttpContext.RequestServices.GetService <IUsuarioRepository>(); var user = await repo.ObtenerUsuarioBase(userId); user.FechaUltimoAcceso = _generalInterface.ObtenerFechaHoraActual(); await unitOfWork.CompleteAsync(); }
public async Task <IActionResult> ActualizarPlanPago(PlanPagoDto planPagoDto) { usuarioId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); if (planPagoDto != null) { //Obtener todos los campos del plan de pago para una correcta actualización var planPagoBD = await _repo.ObtenerPlanPagoBase(planPagoDto.PlanPagoId); _mapper.Map(planPagoDto, planPagoBD); if (planPagoDto.esRadicarFactura) { planPagoBD.EstadoPlanPagoId = (int)EstadoPlanPago.PorObligar; planPagoBD.FechaFactura = _generalInterface.ObtenerFechaHoraActual(); planPagoBD.FechaRegistro = _generalInterface.ObtenerFechaHoraActual(); planPagoBD.UsuarioIdRegistro = usuarioId; } else { planPagoBD.EstadoPlanPagoId = (int)EstadoPlanPago.PorObligar; planPagoBD.FechaFactura = _generalInterface.ObtenerFechaHoraActual(); planPagoBD.FechaModificacion = _generalInterface.ObtenerFechaHoraActual(); planPagoBD.UsuarioIdModificacion = usuarioId; } //Para apagar manualmente la columna que no deseo modificar // _dataContext.Entry(planPagoBD).Property("RubroPresupuestalId").IsModified = false; //await _unitOfWork.CompleteAsync(); //Para solicitar la actualización de una entidad //_dataContext.Update(planPagoBD); await _unitOfWork.CompleteAsync(); return(NoContent()); } throw new Exception($"No se pudo actualizar la factura"); }
public async Task <ICollection <RadicadoDto> > ObtenerListaRadicado(int pciId, int mes, int?terceroId, List <int> listaEstadoId) { int anio = _generalInterface.ObtenerFechaHoraActual().Year; var lista = (from c in _context.PlanPago join e in _context.Estado on c.EstadoPlanPagoId equals e.EstadoId join t in _context.Tercero on c.TerceroId equals t.TerceroId join d in _context.DetalleLiquidacion on c.PlanPagoId equals d.PlanPagoId into liquidacion from li in liquidacion.DefaultIfEmpty() where c.PciId == li.PciId where c.PciId == pciId where (c.FechaRadicadoSupervisor.Value.Month == mes) where (c.FechaRadicadoSupervisor.Value.Year == anio) where (c.TerceroId == terceroId || terceroId == null) where (listaEstadoId.Contains(c.EstadoPlanPagoId.Value)) select new RadicadoDto() { PlanPagoId = c.PlanPagoId, FechaRadicadoSupervisor = c.FechaRadicadoSupervisor.Value, FechaRadicadoSupervisorDescripcion = c.FechaRadicadoSupervisor.Value.ToString("yyyy-MM-dd"), Estado = e.Descripcion, Crp = c.Crp.ToString(), NumeroRadicadoProveedor = c.NumeroRadicadoProveedor, NumeroRadicadoSupervisor = c.NumeroRadicadoSupervisor, ValorAPagar = c.ValorFacturado.Value, NIT = t.NumeroIdentificacion, NombreTercero = t.Nombre, Obligacion = li.Obligacion.HasValue ? li.Obligacion.Value.ToString() : string.Empty, OrdenPago = li.OrdenPago.HasValue ? li.OrdenPago.Value.ToString() : string.Empty, FechaOrdenPago = li.FechaOrdenPago, FechaOrdenPagoDescripcion = li.FechaOrdenPago.HasValue ? li.FechaOrdenPago.Value.ToString("yyyy-MM-dd") : string.Empty, TextoComprobanteContable = li.TextoComprobanteContable != null ? li.TextoComprobanteContable : string.Empty, }) .OrderBy(c => c.FechaRadicadoSupervisor) .ThenBy(c => c.Crp); return(await lista.ToListAsync()); }
private async Task ActualizarPlanAdquisicion(int pciId, PlanAdquisicion planAdquisicion) { DateTime fechaActual = _generalInterface.ObtenerFechaHoraActual(); ActividadEspecifica actividadEspecificaBD = null; int operacion = 1; // operacion=1=>suma; operacion=2=>resta int areaId = 0; await using var transaction = await _dataContext.Database.BeginTransactionAsync(); #region Obtener Area if (planAdquisicion.DependenciaId > 0) { Dependencia dependencia = _dataContext.Dependencia.Where(x => x.DependenciaId == planAdquisicion.DependenciaId).FirstOrDefault(); if (dependencia != null) { areaId = dependencia.AreaId; } } #endregion Obtener Area #region Registrar nuevos if (planAdquisicion.EstadoModificacion == (int)EstadoModificacion.Insertado) { PlanAdquisicion planAdquisicionNuevo = new PlanAdquisicion(); planAdquisicionNuevo.PlanDeCompras = planAdquisicion.PlanDeCompras; planAdquisicionNuevo.ActividadGeneralId = planAdquisicion.ActividadEspecifica.ActividadGeneral.ActividadGeneralId; planAdquisicionNuevo.ActividadEspecificaId = planAdquisicion.ActividadEspecifica.ActividadEspecificaId; planAdquisicionNuevo.ValorAct = planAdquisicion.ValorAct; planAdquisicionNuevo.SaldoAct = planAdquisicion.ValorAct; planAdquisicionNuevo.AplicaContrato = planAdquisicion.AplicaContrato; planAdquisicionNuevo.UsuarioId = planAdquisicion.UsuarioId; planAdquisicionNuevo.DependenciaId = planAdquisicion.DependenciaId; planAdquisicionNuevo.AreaId = areaId; planAdquisicionNuevo.PciId = pciId; planAdquisicionNuevo.EstadoId = (int)EstadoPlanAdquisicion.Generado; if (planAdquisicion.RubroPresupuestal != null) { planAdquisicionNuevo.RubroPresupuestalId = planAdquisicion.RubroPresupuestal.RubroPresupuestalId; planAdquisicionNuevo.DecretoId = planAdquisicion.RubroPresupuestal.PadreRubroId.Value; } actividadEspecificaBD = await _repoActividad.ObtenerActividadEspecificaBase(planAdquisicion.ActividadEspecifica.ActividadEspecificaId); if (actividadEspecificaBD != null) { operacion = 2; // resta await _serviceActividad.ActualizarActividadEspecifica(actividadEspecificaBD, planAdquisicion.ValorAct, operacion); } await _dataContext.PlanAdquisicion.AddAsync(planAdquisicionNuevo); await _dataContext.SaveChangesAsync(); } #endregion Registrar nuevos #region Actualizar registros if (planAdquisicion.EstadoModificacion == (int)EstadoModificacion.Modificado) { decimal valor = 0; PlanAdquisicion planAdquisicionBD = await _repo.ObtenerPlanAnualAdquisicionBase(planAdquisicion.PlanAdquisicionId); if (planAdquisicionBD != null) { if (planAdquisicionBD.ValorAct > planAdquisicion.ValorAct) { operacion = 1; // Suma valor = planAdquisicionBD.ValorAct - planAdquisicion.ValorAct; } else { operacion = 2; // Resta valor = planAdquisicion.ValorAct - planAdquisicionBD.ValorAct; } planAdquisicionBD.PlanDeCompras = planAdquisicion.PlanDeCompras; planAdquisicionBD.AplicaContrato = planAdquisicion.AplicaContrato; planAdquisicionBD.SaldoAct = planAdquisicion.ValorAct; planAdquisicionBD.ValorAct = planAdquisicion.ValorAct; planAdquisicionBD.AplicaContrato = planAdquisicion.AplicaContrato; planAdquisicionBD.DependenciaId = planAdquisicion.DependenciaId; planAdquisicionBD.Crp = planAdquisicion.Crp; planAdquisicionBD.AreaId = areaId; await _dataContext.SaveChangesAsync(); actividadEspecificaBD = await _repoActividad.ObtenerActividadEspecificaBase(planAdquisicion.ActividadEspecifica.ActividadEspecificaId); if (actividadEspecificaBD != null) { await _serviceActividad.ActualizarActividadEspecifica(actividadEspecificaBD, valor, operacion); } } } #endregion Actualizar registros await transaction.CommitAsync(); }
public async Task <ActionResult> RegistrarSolicitudCDP(SolicitudCDP solicitudCDP) { usuarioId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); SolicitudCDP solicitud = null; DetalleSolicitudCDP detalle = null; PlanAdquisicion planAdquisicion = null; List <DetalleSolicitudCDP> listaDetalle = new List <DetalleSolicitudCDP>(); await using var transaction = await _dataContext.Database.BeginTransactionAsync(); try { if (solicitudCDP != null) { if (solicitudCDP.TipoOperacion.TipoOperacionId == (int)TipoOperacionEnum.SOLICITUD_INICIAL) { #region Cabecera Solicitud CDP solicitud = new SolicitudCDP(); solicitud.TipoOperacionId = solicitudCDP.TipoOperacion.TipoOperacionId; solicitud.UsuarioId = usuarioId; solicitud.UsuarioIdRegistro = usuarioId; solicitud.FechaRegistro = _generalInterface.ObtenerFechaHoraActual(); solicitud.EstadoSolicitudCDPId = solicitudCDP.EstadoSolicitudCDP.EstadoId; solicitud.NumeroActividad = solicitudCDP.NumeroActividad; solicitud.AplicaContrato = solicitudCDP.AplicaContrato; solicitud.NombreBienServicio = solicitudCDP.NombreBienServicio; solicitud.ProyectoInversion = solicitudCDP.ProyectoInversion; solicitud.NombreBienServicio = solicitudCDP.NombreBienServicio; solicitud.ActividadProyectoInversion = solicitudCDP.ActividadProyectoInversion; solicitud.ObjetoBienServicioContratado = solicitudCDP.ObjetoBienServicioContratado; solicitud.Observaciones = solicitudCDP.Observaciones; solicitud.Cdp = null; solicitud.TipoDetalleCDPId = null; await _dataContext.SolicitudCDP.AddAsync(solicitud); await _dataContext.SaveChangesAsync(); #endregion Cabecera Solicitud CDP #region Registrar Detalle Solicitud CDP if (solicitudCDP.DetalleSolicitudCDPs != null && solicitudCDP.DetalleSolicitudCDPs.Count > 0) { foreach (var item in solicitudCDP.DetalleSolicitudCDPs) { detalle = new DetalleSolicitudCDP(); detalle.SolicitudCDPId = solicitud.SolicitudCDPId; detalle.PlanAdquisicionId = item.PlanAdquisicionId; detalle.RubroPresupuestalId = item.RubroPresupuestal.RubroPresupuestalId; detalle.ValorActividad = item.ValorActividad; detalle.SaldoActividad = item.SaldoActividad; detalle.ValorSolicitud = item.ValorSolicitud; listaDetalle.Add(detalle); } //Insertar Detalle await _dataContext.DetalleSolicitudCDP.AddRangeAsync(listaDetalle); await _dataContext.SaveChangesAsync(); } #endregion Registrar Detalle Solicitud CDP #region Actualizar Plan de adquisición if (solicitudCDP.DetalleSolicitudCDPs != null && solicitudCDP.DetalleSolicitudCDPs.Count > 0) { foreach (var item in solicitudCDP.DetalleSolicitudCDPs) { planAdquisicion = await _planAdquisicionRepo.ObtenerPlanAnualAdquisicionBase(item.PlanAdquisicionId.Value); planAdquisicion.SaldoAct = planAdquisicion.SaldoAct - item.ValorSolicitud; planAdquisicion.EstadoId = (int)EstadoPlanAdquisicion.ConCDP; await _dataContext.SaveChangesAsync(); } } #endregion Actualizar Plan de adquisición } else { #region Cabecera Solicitud CDP solicitud = new SolicitudCDP(); solicitud.TipoOperacionId = solicitudCDP.TipoOperacion.TipoOperacionId; solicitud.UsuarioId = usuarioId; solicitud.UsuarioIdRegistro = usuarioId; solicitud.FechaRegistro = _generalInterface.ObtenerFechaHoraActual(); solicitud.EstadoSolicitudCDPId = solicitudCDP.EstadoSolicitudCDP.EstadoId; solicitud.NumeroActividad = solicitudCDP.NumeroActividad; solicitud.AplicaContrato = solicitudCDP.AplicaContrato; solicitud.NombreBienServicio = solicitudCDP.NombreBienServicio; solicitud.ProyectoInversion = solicitudCDP.ProyectoInversion; solicitud.NombreBienServicio = solicitudCDP.NombreBienServicio; solicitud.ActividadProyectoInversion = solicitudCDP.ActividadProyectoInversion; solicitud.ObjetoBienServicioContratado = solicitudCDP.ObjetoBienServicioContratado; solicitud.Observaciones = solicitudCDP.Observaciones; solicitud.Cdp = solicitudCDP.Cdp; solicitud.TipoDetalleCDPId = solicitudCDP.TipoDetalleCDP.TipoDetalleCDPId; await _dataContext.SolicitudCDP.AddAsync(solicitud); await _dataContext.SaveChangesAsync(); #endregion Cabecera Solicitud CDP #region Registrar Detalle Solicitud CDP if (solicitudCDP.DetalleSolicitudCDPs != null && solicitudCDP.DetalleSolicitudCDPs.Count > 0) { foreach (var item in solicitudCDP.DetalleSolicitudCDPs) { detalle = new DetalleSolicitudCDP(); detalle.SolicitudCDPId = solicitud.SolicitudCDPId; detalle.PlanAdquisicionId = item.PlanAdquisicionId; detalle.RubroPresupuestalId = item.RubroPresupuestal.RubroPresupuestalId; detalle.ValorActividad = item.ValorActividad; detalle.SaldoActividad = item.SaldoActividad; detalle.ValorSolicitud = item.ValorSolicitud; listaDetalle.Add(detalle); } await _dataContext.DetalleSolicitudCDP.AddRangeAsync(listaDetalle); await _dataContext.SaveChangesAsync(); } #endregion Registrar Detalle Solicitud CDP #region Actualizar Plan de adquisición if (solicitudCDP.DetalleSolicitudCDPs != null && solicitudCDP.DetalleSolicitudCDPs.Count > 0) { foreach (var item in solicitudCDP.DetalleSolicitudCDPs) { planAdquisicion = await _planAdquisicionRepo.ObtenerPlanAnualAdquisicionBase(item.PlanAdquisicionId.Value); switch (solicitudCDP.TipoOperacion.TipoOperacionId) { case (int)TipoOperacionEnum.ADICION: { planAdquisicion.SaldoAct = planAdquisicion.SaldoAct - item.ValorSolicitud; break; } case (int)TipoOperacionEnum.REDUCCION: { planAdquisicion.SaldoAct = planAdquisicion.SaldoAct + item.ValorSolicitud; break; } case (int)TipoOperacionEnum.ANULACION: { planAdquisicion.SaldoAct = planAdquisicion.SaldoAct + item.ValorSolicitud; break; } } planAdquisicion.EstadoId = (int)EstadoPlanAdquisicion.ConCDP; await _dataContext.SaveChangesAsync(); } } #endregion Actualizar Plan de adquisición } await transaction.CommitAsync(); return(Ok(solicitudCDP.SolicitudCDPId)); } } catch (Exception) { throw; } throw new Exception($"No se pudo registrar la solicitud de CDP"); }
public async Task <IActionResult> DescargarArchivoCargaObligacion([FromQuery] int?tipoArchivoId, [FromQuery] string estado ) { #region Variables List <int> listaIds = new List <int>(); string cadena = string.Empty; string nombreArchivo = string.Empty; DateTime fecha = _generalInterface.ObtenerFechaHoraActual(); // int consecutivo = 0; #endregion Variables try { usuarioId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); valorPciId = User.FindFirst(ClaimTypes.Role).Value; if (!string.IsNullOrEmpty(valorPciId)) { pciId = int.Parse(valorPciId); } switch (tipoArchivoId) { case (int)TipoArchivoObligacion.Cabecera: { #region Cabecera var lista = (await _repo.ObtenerListaCargaObligacionArchivoCabecera(usuarioId, estado, pciId)); //Obtener información para el archivo cadena = _cargaService.ObtenerInformacionOrdenPagoArchivoCabecera(lista.ToList()); //Encoding.UTF8: Respeta las tildes en las palabras byte[] byteArray = Encoding.UTF8.GetBytes(cadena); MemoryStream stream = new MemoryStream(byteArray); if (stream == null) { return(new NoContentResult()); } nombreArchivo = "SIGPAA Cabecera"; Response.AddFileName(nombreArchivo); return(File(stream, "application/octet-stream", nombreArchivo)); #endregion Cabecera }; case (int)TipoArchivoObligacion.Item: { #region Items var lista = await _repo.ObtenerListaCargaObligacionArchivoDetalle(estado, pciId); if (lista != null && lista.Count > 0) { //Obtener información para el archivo cadena = _cargaService.ObtenerInformacionOrdenPagoArchivoDetalle(lista.ToList()); //Encoding.UTF8: Respeta las tildes en las palabras byte[] byteArray = Encoding.UTF8.GetBytes(cadena); MemoryStream stream = new MemoryStream(byteArray); if (stream == null) { return(new NoContentResult()); } nombreArchivo = "SIGPAA Detalle"; Response.AddFileName(nombreArchivo); return(File(stream, "application/octet-stream", nombreArchivo)); } else { return(new NoContentResult()); } #endregion Items }; default: break; } throw new Exception("No se pudo crear el archivo de las órdenes de pago"); } catch (Exception) { throw; } }
public async Task <IActionResult> ActualizarFormatoSolicitudPago(FormatoSolicitudPagoDto formatoDto) { DetalleFormatoSolicitudPago detalleSolicitud = null; await using var transaction = await _dataContext.Database.BeginTransactionAsync(); try { usuarioId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); valorPciId = User.FindFirst(ClaimTypes.Role).Value; if (!string.IsNullOrEmpty(valorPciId)) { pciId = int.Parse(valorPciId); } if (formatoDto != null) { #region Actualizar solicitud de pago var formatoBD = await _repo.ObtenerFormatoSolicitudPagoBase(formatoDto.FormatoSolicitudPagoId); formatoBD.UsuarioIdModificacion = usuarioId; formatoBD.FechaModificacion = _generalInterface.ObtenerFechaHoraActual(); formatoBD.ObservacionesModificacion = formatoDto.ObservacionesModificacion; formatoBD.EstadoId = formatoDto.EstadoId; if (formatoDto.EstadoId == (int)EstadoSolicitudPago.Rechazado) { var parametroLiquidacionTercero = await _terceroRepository.ObtenerParametrizacionLiquidacionXTercero(formatoDto.Tercero.TerceroId, pciId); if (parametroLiquidacionTercero != null && parametroLiquidacionTercero.FacturaElectronicaId == 0) { formatoBD.NumeroFactura = string.Empty; } } await _dataContext.SaveChangesAsync(); #endregion Actualizar solicitud de pago #region Registrar Rubros Presupuestales if (formatoDto.EstadoId == (int)EstadoSolicitudPago.Aprobado) { if (formatoDto.DetallesFormatoSolicitudPago != null && formatoDto.DetallesFormatoSolicitudPago.Count > 0) { foreach (var item in formatoDto.DetallesFormatoSolicitudPago) { if (item.ValorAPagar > 0) { detalleSolicitud = new DetalleFormatoSolicitudPago(); detalleSolicitud.FormatoSolicitudPagoId = formatoBD.FormatoSolicitudPagoId; detalleSolicitud.RubroPresupuestalId = item.RubroPresupuestal.Id; detalleSolicitud.ValorAPagar = item.ValorAPagar; detalleSolicitud.Dependencia = item.Dependencia; detalleSolicitud.ClavePresupuestalContableId = item.ClavePresupuestalContableId.HasValue ? item.ClavePresupuestalContableId : null; _dataContext.DetalleFormatoSolicitudPago.Add(detalleSolicitud); } } } await _dataContext.SaveChangesAsync(); } #endregion Registrar Rubros Presupuestales #region Actualizar el plan de pago var cantidadPlanPagoxCompromiso = await _planPagoRepository.CantidadPlanPagoParaCompromiso(formatoBD.Crp, pciId); if (cantidadPlanPagoxCompromiso > 1) { if (formatoDto.EstadoId == (int)EstadoSolicitudPago.Aprobado) { var planPagoBD = await _planPagoRepository.ObtenerPlanPagoBase(formatoDto.PlanPagoId); planPagoBD.NumeroFactura = formatoDto.NumeroFactura; planPagoBD.ValorFacturado = formatoDto.ValorFacturado; planPagoBD.Observaciones = formatoDto.Observaciones; planPagoBD.NumeroRadicadoProveedor = formatoDto.NumeroRadicadoProveedor; planPagoBD.FechaRadicadoProveedor = formatoDto.FechaRadicadoProveedor; planPagoBD.NumeroRadicadoSupervisor = formatoDto.NumeroRadicadoSupervisor; planPagoBD.FechaRadicadoSupervisor = formatoDto.FechaRadicadoSupervisor; planPagoBD.EstadoPlanPagoId = (int)EstadoPlanPago.PorObligar; planPagoBD.UsuarioIdModificacion = usuarioId; planPagoBD.FechaModificacion = _generalInterface.ObtenerFechaHoraActual(); await _dataContext.SaveChangesAsync(); } else { var planPagoBD = await _planPagoRepository.ObtenerPlanPagoBase(formatoDto.PlanPagoId); planPagoBD.EstadoPlanPagoId = (int)EstadoPlanPago.PorPagar; planPagoBD.UsuarioIdModificacion = usuarioId; planPagoBD.FechaModificacion = _generalInterface.ObtenerFechaHoraActual(); } await transaction.CommitAsync(); } #endregion Actualizar el plan de pago #region Actualizar Numeración if (formatoDto.EstadoId == (int)EstadoSolicitudPago.Rechazado) { var parametroLiquidacionTercero = await _terceroRepository.ObtenerParametrizacionLiquidacionXTercero(formatoDto.Tercero.TerceroId, pciId); if (parametroLiquidacionTercero != null && parametroLiquidacionTercero.FacturaElectronicaId == 0) { var numeracion = await _repo.ObtenerNumeracionxNumeroFactura(formatoDto.NumeroFactura); if (numeracion != null) { numeracion.Utilizado = false; numeracion.FormatoSolicitudPagoId = null; await _dataContext.SaveChangesAsync(); } } } #endregion Actualizar Numeración return(Ok(formatoBD.FormatoSolicitudPagoId)); } } catch (Exception) { throw; } throw new Exception($"No se pudo registrar el formato de liquidación"); }