Exemplo n.º 1
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();
        }
Exemplo n.º 2
0
        public async Task ActualizarActividadEspecifica(int pciId, ActividadEspecifica actividadEspecifica)
        {
            ActividadGeneral actividadGeneralBD = null;
            DateTime         fechaActual        = _generalInterface.ObtenerFechaHoraActual();
            int operacion = 1; // operacion=1=>suma; operacion=2=>resta

            await using var transaction = await _dataContext.Database.BeginTransactionAsync();

            #region Registrar nuevos

            if (actividadEspecifica.EstadoModificacion == (int)EstadoModificacion.Insertado)
            {
                ActividadEspecifica actividadEspecificaNuevo = new ActividadEspecifica();
                actividadEspecificaNuevo.Nombre = actividadEspecifica.Nombre;
                actividadEspecificaNuevo.RubroPresupuestalId     = actividadEspecifica.RubroPresupuestal.RubroPresupuestalId;
                actividadEspecificaNuevo.SaldoPorProgramar       = actividadEspecifica.SaldoPorProgramar;
                actividadEspecificaNuevo.ValorApropiacionVigente = actividadEspecifica.ValorApropiacionVigente;
                actividadEspecificaNuevo.ActividadGeneralId      = actividadEspecifica.ActividadGeneral.ActividadGeneralId;
                actividadEspecificaNuevo.PciId = pciId;
                actividadGeneralBD             = await _repoActividad.ObtenerActividadGeneralBase(actividadEspecifica.ActividadGeneral.ActividadGeneralId);

                if (actividadGeneralBD != null)
                {
                    operacion = 2; // resta
                    await ActualizarActividadGeneral(actividadGeneralBD, actividadEspecifica.SaldoPorProgramar, operacion);
                }
                await _dataContext.ActividadEspecifica.AddAsync(actividadEspecificaNuevo);

                await _dataContext.SaveChangesAsync();
            }

            #endregion Registrar nuevos

            #region Actualizar registros

            if (actividadEspecifica.EstadoModificacion == (int)EstadoModificacion.Modificado)
            {
                decimal             valor = 0;
                ActividadEspecifica actividadEspecificaBD = await _repoActividad.ObtenerActividadEspecificaBase(actividadEspecifica.ActividadEspecificaId);

                if (actividadEspecificaBD != null)
                {
                    if (actividadEspecificaBD.SaldoPorProgramar > actividadEspecifica.SaldoPorProgramar)
                    {
                        operacion = 1; // Suma
                        valor     = actividadEspecificaBD.SaldoPorProgramar - actividadEspecifica.SaldoPorProgramar;
                    }
                    else
                    {
                        operacion = 2; // Resta
                        valor     = actividadEspecifica.SaldoPorProgramar - actividadEspecificaBD.SaldoPorProgramar;
                    }

                    actividadEspecificaBD.Nombre = actividadEspecifica.Nombre;
                    actividadEspecificaBD.ValorApropiacionVigente = actividadEspecifica.ValorApropiacionVigente;
                    actividadEspecificaBD.SaldoPorProgramar       = actividadEspecifica.SaldoPorProgramar;
                    actividadEspecificaBD.PciId = pciId;
                    await _dataContext.SaveChangesAsync();

                    actividadGeneralBD = await _repoActividad.ObtenerActividadGeneralBase(actividadEspecifica.ActividadGeneral.ActividadGeneralId);

                    if (actividadGeneralBD != null)
                    {
                        await ActualizarActividadGeneral(actividadGeneralBD, valor, operacion);
                    }
                }
            }

            #endregion Actualizar registros

            await transaction.CommitAsync();
        }