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; }
public PatrimonyStatus CreatePatrimonyStatus(PatrimonyStatusRequest PatrimonyStatus) { var entityToInsert = new PatrimonyStatus() { }; MergePatrimonyStatus(entityToInsert, PatrimonyStatus); PatrimonyStatusRepository.Insert(entityToInsert); return(entityToInsert); }
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); }
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); }
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); }
public PatrimonyStatus UpdatePatrimonyStatus(PatrimonyStatus originalPatrimonyStatus, PatrimonyStatusRequest PatrimonyStatus) { this.MergePatrimonyStatus(originalPatrimonyStatus, PatrimonyStatus); PatrimonyStatusRepository.Update(originalPatrimonyStatus); return(originalPatrimonyStatus); }