Esempio n. 1
0
 private void MergePatrimonyStatus(PatrimonyStatus originalPatrimonyStatus, PatrimonyStatusRequest PatrimonyStatus)
 {
     originalPatrimonyStatus.Consortium = this.ConsortiumRepository.GetById(PatrimonyStatus.ConsortiumId);
     originalPatrimonyStatus.Activo     = PatrimonyStatus.Activo;
     originalPatrimonyStatus.Pasivo     = PatrimonyStatus.Pasivo;
     originalPatrimonyStatus.Debe       = PatrimonyStatus.Debe;
     originalPatrimonyStatus.Haber      = PatrimonyStatus.Haber;
     originalPatrimonyStatus.StatusDate = PatrimonyStatus.StatusDate;
 }
Esempio n. 2
0
        public PatrimonyStatus CreatePatrimonyStatus(PatrimonyStatusRequest PatrimonyStatus)
        {
            var entityToInsert = new PatrimonyStatus()
            {
            };

            MergePatrimonyStatus(entityToInsert, PatrimonyStatus);
            PatrimonyStatusRepository.Insert(entityToInsert);
            return(entityToInsert);
        }
Esempio n. 3
0
        public bool RegisterMonth(int consortiumId)
        {
            DateTime now       = DateTime.Now;
            var      startDate = new DateTime(now.Year, now.Month, 1);
            var      endDate   = startDate.AddMonths(1).AddDays(-1);

            var spends = this.SpendRepository.GetByConsortiumId(consortiumId, startDate, endDate);

            var incomes = this.IncomeRepository.GetByConsortiumId(consortiumId, startDate, endDate);

            var spendTypes = this.SpendTypeRepository.GetByConsortiumId(consortiumId).Where(x => x.Required).ToList();

            //this.ValidateSpendsWithTypes(spends, spendTypes);

            var lastStatus = this.PatrimonyStatusRepository
                             .GetByConsortiumId(consortiumId)
                             .OrderByDescending(x => x.StatusDate)
                             .FirstOrDefault();

            var oldStatus = this.PatrimonyStatusRepository
                            .GetByConsortiumId(consortiumId)
                            .OrderByDescending(x => x.StatusDate)
                            .Take(2)
                            .LastOrDefault();

            var lastValidStatus = this.ValidateUnique(lastStatus, oldStatus, startDate, endDate);

            var debt      = spends.Where(x => x.SpendClass.Description != "E").Sum(x => x.Bill.Amount);
            var discounts = spends.Where(x => x.SpendClass.Description == "E");

            if (discounts != null)
            {
                debt = debt - discounts.Sum(x => x.Bill.Amount);
            }
            var totalIncome = incomes.Sum(x => x.Amount);

            var patrimonyStatus = new PatrimonyStatus()
            {
                Activo     = lastValidStatus != null ? lastValidStatus.Activo - debt + totalIncome : 0 - debt + totalIncome,
                Pasivo     = lastValidStatus != null ? lastValidStatus.Pasivo + debt - totalIncome : 0 + debt - totalIncome,
                Haber      = totalIncome,
                Debe       = debt,
                Consortium = this.ConsortiumRepository.GetById(consortiumId),
                StatusDate = now
            };

            this.PatrimonyStatusRepository.Insert(patrimonyStatus);

            return(true);
        }
Esempio n. 4
0
 public PatrimonyStatus ValidateUnique(PatrimonyStatus patrimony, PatrimonyStatus oldPatrimonyStatus, DateTime startDate, DateTime endDate)
 {
     if (patrimony != null && (patrimony.StatusDate >= startDate && patrimony.StatusDate <= endDate))
     {
         this.PatrimonyStatusRepository.Delete(patrimony);
         if (patrimony != oldPatrimonyStatus)
         {
             return(oldPatrimonyStatus);
         }
         else
         {
             return(null);
         }
     }
     return(patrimony);
 }
Esempio n. 5
0
        public AccountStatus CreateAccountStatus(AccountStatusRequest AccountStatus)
        {
            var entityToInsert = new AccountStatus()
            {
            };

            MergeAccountStatus(entityToInsert, AccountStatus);

            if (entityToInsert.IsPayment())
            {
                var unit       = UnitRepository.GetById(AccountStatus.UnitId);
                var consortium = ConsortiumRepository.GetAll().Where(x => x.Ownership.Id == unit.Ownership.Id).FirstOrDefault();

                var dateDay = AccountStatus.StatusDate.Day;
                var limitDateConfiguration = ConsortiumConfigurationRepository
                                             .GetAll().Where(x => x.Consortium.Id == consortium.Id && x.Type.Description == "Día límite pago adelantado")
                                             .OrderByDescending(x => x.ConfigurationDate)
                                             .FirstOrDefault();

                var limitDayValue = limitDateConfiguration != null?Convert.ToInt32(limitDateConfiguration.Value) : 0;

                if (dateDay <= limitDayValue)
                {
                    var advancedPaymentConfiguration = ConsortiumConfigurationRepository
                                                       .GetAll().Where(x => x.Consortium.Id == consortium.Id && x.Type.Description == "Descuento por pago adelantado")
                                                       .OrderByDescending(x => x.ConfigurationDate)
                                                       .FirstOrDefault();


                    var advandedPaymentValue = advancedPaymentConfiguration != null ? advancedPaymentConfiguration.Value : 0;

                    this.RecalculateAmount(entityToInsert, advandedPaymentValue);
                }
            }

            AccountStatusRepository.Insert(entityToInsert);

            if (entityToInsert.IsPayment())
            {
                var payment = new Payment()
                {
                    AccountStatus = entityToInsert,
                    PaymentType   = PaymentTypeRepository.GetById(AccountStatus.PaymentTypeId.Value)
                };

                PaymentRepository.Insert(payment);

                var unit       = UnitRepository.GetById(AccountStatus.UnitId);
                var consortium = ConsortiumRepository.GetAll().Where(x => x.Ownership.Id == unit.Ownership.Id).FirstOrDefault();

                var actualPatrimonyStatus = this.PatrimonyStatusRepository.GetByConsortiumId(consortium.Id)
                                            .OrderByDescending(x => x.StatusDate).FirstOrDefault();


                var patrimonyStatus = new PatrimonyStatus()
                {
                    Activo     = actualPatrimonyStatus != null ? actualPatrimonyStatus.Activo + entityToInsert.Haber : entityToInsert.Haber,
                    Debe       = 0,
                    Pasivo     = actualPatrimonyStatus != null ? actualPatrimonyStatus.Pasivo - entityToInsert.Haber : -entityToInsert.Haber,
                    Haber      = entityToInsert.Haber,
                    Consortium = consortium,
                    StatusDate = DateTime.Now
                };

                this.PatrimonyStatusRepository.Insert(patrimonyStatus);

                //modificar el ultimo estado de cuenta
                var unitAccount          = this.AccountStatusRepository.GetByUnitId(unit.Id).ToList();
                var lastSummarizedStatus = unitAccount.Where(x => !x.IsPayment() && !x.Interest).OrderByDescending(x => x.StatusDate).FirstOrDefault();
                lastSummarizedStatus.Haber += entityToInsert.Haber;
                lastSummarizedStatus.Debe  -= entityToInsert.Haber;

                this.AccountStatusRepository.Update(lastSummarizedStatus);
            }


            return(entityToInsert);
        }
Esempio n. 6
0
 public PatrimonyStatus UpdatePatrimonyStatus(PatrimonyStatus originalPatrimonyStatus, PatrimonyStatusRequest PatrimonyStatus)
 {
     this.MergePatrimonyStatus(originalPatrimonyStatus, PatrimonyStatus);
     PatrimonyStatusRepository.Update(originalPatrimonyStatus);
     return(originalPatrimonyStatus);
 }