Example #1
0
        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
        }
Example #2
0
        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");
        }
Example #3
0
        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);
        }
Example #4
0
        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();
        }
Example #5
0
        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));
        }
Example #6
0
        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();
        }
Example #7
0
        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");
        }
Example #8
0
        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());
        }
Example #9
0
        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();
        }
Example #10
0
        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");
        }
Example #11
0
        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;
            }
        }
Example #12
0
        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");
        }