/// <summary> /// For posting /// </summary> /// <param name="origenalAmount"></param> /// <param name="currency"></param> /// <param name="systemCurrency"></param> /// <returns></returns> public LatestCurrencyRate GetLatestCurrencyRate(decimal origenalAmount, Currency currency, SystemCurrencySettingViewModel systemCurrency) { LatestCurrencyRate latestCurrencyRate = new LatestCurrencyRate { NewAmount = origenalAmount }; if (currency.Id != systemCurrency.CurrencyId) { var lates = this._CurrencyRatesRepository.Get(null) .OrderByDescending(x => x.Date) .Where(x => x.CurrencyId == currency.Id && x.ExchangeCurrencyId == systemCurrency.CurrencyId) //.ToList(); .FirstOrDefault(); //CurrencyRate lates = null; //if (latesList != null) lates = latesList.FirstOrDefault(); if (lates != null) { latestCurrencyRate.NewAmount = origenalAmount * lates.Price; } var sysCurrency = this._currencysRepository.Get(systemCurrency.CurrencyId.Value); if (currency != null && lates != null && sysCurrency != null) { latestCurrencyRate.AppendedDescriptionAr = $" [1 {currency.ChildTranslatedCurrencys.FirstOrDefault(x => x.Language == Language.Arabic)?.Name} = {lates.Price} {sysCurrency.ChildTranslatedCurrencys.FirstOrDefault(x => x.Language == Language.Arabic)?.Name}]"; latestCurrencyRate.AppendedDescriptionEn = $" [1 {currency.ChildTranslatedCurrencys.FirstOrDefault(x => x.Language == Language.English)?.Name} = {lates.Price} {sysCurrency.ChildTranslatedCurrencys.FirstOrDefault(x => x.Language == Language.English)?.Name}]"; } } return(latestCurrencyRate); }
public IList <Transaction> VirtualPostReceiptsMovement(long costCenterId, DateTime?toDate, Language lang, long?userId) { List <Transaction> list = new List <Transaction>(); ConditionFilter <Donation, long> condition = new ConditionFilter <Donation, long> { //NavigationProperties = new List<string> { "DonationCostCenters" }, Query = (x => x.DonationCostCenters.Any(c => c.CostCenterId == costCenterId) && x.ParentKeyDonationId.HasValue == false && x.Date <= toDate) }; var sourceEntities = this._donationsRepository.Get(condition); if (sourceEntities != null && sourceEntities.Count() > 0) { DateTime now = DateTime.Now; var financialSetting = this._settingsService.GetFinancialSetting(); var systemCurrency = this._settingsService.GetSystemCurrency(); foreach (var source in sourceEntities) { LatestCurrencyRate latestCurrencyRate = this._currencyRatesService .GetLatestCurrencyRate(source.DonationCostCenters.FirstOrDefault(x => x.CostCenterId == costCenterId).Amount, source.Currency, systemCurrency); #region Set Journal Description var ar = source.ChildTranslatedDonations.FirstOrDefault(x => x.Language == Language.Arabic); var en = source.ChildTranslatedDonations.FirstOrDefault(x => x.Language == Language.English); string journalDescriptionAr = this._resourcesService[ResourceKeyEnum.RelayFromReceiptsMovementNo, Language.Arabic].Value + source.Code + latestCurrencyRate.AppendedDescriptionAr; string journalDescriptionEn = this._resourcesService[ResourceKeyEnum.RelayFromReceiptsMovementNo, Language.English].Value + source.Code + latestCurrencyRate.AppendedDescriptionEn; if (ar?.Description != null) { journalDescriptionAr = ar.Description + " - " + journalDescriptionAr; } if (en?.Description != null) { journalDescriptionEn = en.Description + " - " + journalDescriptionEn; } #endregion var journal = new Journal { Date = source.Date, MovementType = MovementType.ReceiptsMovement, ObjectId = source.Id, CreationDate = now }; var journalAr = new Journal { Description = journalDescriptionAr, Language = Language.Arabic, CreationDate = now, Date = source.Date }; var journalEn = new Journal { Description = journalDescriptionEn, Language = Language.English, CreationDate = now, Date = source.Date }; journal.ChildTranslatedJournals.Add(journalAr); journal.ChildTranslatedJournals.Add(journalEn); #region الطرف الدائن // الطرف الدائن var transactionC = new Transaction { IsCreditor = true, Amount = latestCurrencyRate.NewAmount, //Amount = source.DonationCostCenters.FirstOrDefault(x => x.CostCenterId == costCenterId).Amount, CreationDate = now, DescriptionAR = journalAr.Description, DescriptionEN = journalEn.Description, //DescriptionAR = "معاملة طرف مدين لحركة مقبوضات", //DescriptionEN = "Treating the debtor of a receivable transaction", Journal = journal }; // if (source.BankId.HasValue) // { // // حالة اختيار طريقة الدفع شيك // if (source.ChequeToBankId.HasValue) // { // // اعداد استخدام شيكات تحت التحصيل مفعل // if (financialSetting.UseChecksUnderCollection == false) // { // if (source.Bank == null) source.Bank = this._banksRepository.Get(source.BankId.Value); // transactionD.AccountChartId = source.Bank.AccountChartId; // #region Record The Owner Of This Transaction // transactionD.ObjectType = ObjectType.Bank; // transactionD.ObjectId = source.BankId; // #endregion // } // // اعداد استخدام شيكات تحت التحصيل غير مفعل // else // { // if (source.Exchangeable) // { // if (source.Bank == null) source.Bank = this._banksRepository.Get(source.BankId.Value); // transactionD.AccountChartId = source.Bank.AccountChartId; // #region Record The Owner Of This Transaction // transactionD.ObjectType = ObjectType.Bank; // transactionD.ObjectId = source.BankId; // #endregion // } // } // } // else // { // if (source.Bank == null) source.Bank = this._banksRepository.Get(source.BankId.Value); // transactionD.AccountChartId = source.Bank.AccountChartId; // #region Record The Owner Of This Transaction // transactionD.ObjectType = ObjectType.Bank; // transactionD.ObjectId = source.BankId; // #endregion // } // } journal.Transactions.Add(transactionC); #endregion list.AddRange(journal.Transactions); } } return(list); }
public IList <Transaction> VirtualPostPaymentMovement(long safeId, DateTime?toDate, Language lang, long?userId) { List <Transaction> list = new List <Transaction>(); ConditionFilter <PaymentMovment, long> condition = new ConditionFilter <PaymentMovment, long> { Query = (x => x.SafeId.HasValue && x.SafeId.Value == safeId && x.ParentKeyPaymentMovmentId.HasValue == false && x.Date <= toDate.Value) }; var sourceEntities = this._paymentMovmentsRepository.Get(condition); if (sourceEntities != null && sourceEntities.Count() > 0) { DateTime now = DateTime.Now; //var userId = this._currentUserService.CurrentUserId; //var financialSetting = this._settingsService.GetFinancialSetting(); var systemCurrency = this._settingsService.GetSystemCurrency(); foreach (var source in sourceEntities) { if (source.Date > toDate.Value) { continue; } //source.IsPosted = true; //source.PostingDate = now; //source.PostedByUserId = userId; //this._paymentMovmentsRepository.Update(source); LatestCurrencyRate latestCurrencyRate = this._currencyRatesService.GetLatestCurrencyRate(source.Amount, source.Currency, systemCurrency); #region Set Journal Description var ar = source.ChildTranslatedPaymentMovments.FirstOrDefault(x => x.Language == Language.Arabic); var en = source.ChildTranslatedPaymentMovments.FirstOrDefault(x => x.Language == Language.English); string journalDescriptionAr = this._resourcesService[ResourceKeyEnum.RelayFromPaymentMovementNo, Language.Arabic].Value + source.Code + latestCurrencyRate.AppendedDescriptionAr; string journalDescriptionEn = this._resourcesService[ResourceKeyEnum.RelayFromPaymentMovementNo, Language.English].Value + source.Code + latestCurrencyRate.AppendedDescriptionEn; if (ar?.Description != null) { journalDescriptionAr = ar.Description + " - " + journalDescriptionAr; } if (en?.Description != null) { journalDescriptionEn = en.Description + " - " + journalDescriptionEn; } #endregion var journal = new Journal { Date = source.Date, MovementType = MovementType.PaymentMovement, ObjectId = source.Id, CreationDate = now, }; var journalAr = new Journal { Description = journalDescriptionAr, Language = Language.Arabic, CreationDate = now, Date = source.Date }; var journalEn = new Journal { Description = journalDescriptionEn, Language = Language.English, CreationDate = now, Date = source.Date }; journal.ChildTranslatedJournals.Add(journalAr); journal.ChildTranslatedJournals.Add(journalEn); #region الطرف المدين // الطرف المدين var transactionD = new Transaction { IsCreditor = false, Amount = latestCurrencyRate.NewAmount, CreationDate = now, DescriptionAR = journalAr.Description, DescriptionEN = journalEn.Description, //DescriptionAR = "معاملة طرف مدين لحركة مدفوعات", //DescriptionEN = "Treating the debtor of a payment transaction", Journal = journal }; if (source.SafeId.HasValue) { if (source.Safe == null) { source.Safe = this._safesRepository.Get(source.SafeId.Value); } transactionD.AccountChartId = source.Safe.SafeAccountCharts.FirstOrDefault().AccountChartId; transactionD.AccountChart = source.Safe.SafeAccountCharts.FirstOrDefault().AccountChart; #region Record The Owner Of This Transaction transactionD.ObjectType = ObjectType.Safe; transactionD.ObjectId = source.SafeId; #endregion } journal.Transactions.Add(transactionD); #endregion list.AddRange(journal.Transactions); } } return(list); }
public IList <Transaction> VirtualPostPaymentMovement(long costCenterId, DateTime?toDate, Language lang, long?userId) { List <Transaction> list = new List <Transaction>(); ConditionFilter <PaymentMovment, long> condition = new ConditionFilter <PaymentMovment, long> { //NavigationProperties = new List<string> { "PaymentMovmentCostCenters" }, Query = (x => x.PaymentMovmentCostCenters.Any(c => c.CostCenterId == costCenterId) && x.ParentKeyPaymentMovmentId.HasValue == false && x.Date <= toDate) }; var sourceEntities = this._paymentMovmentsRepository.Get(condition); if (sourceEntities != null && sourceEntities.Count() > 0) { DateTime now = DateTime.Now; //var financialSetting = this._settingsService.GetFinancialSetting(); var systemCurrency = this._settingsService.GetSystemCurrency(); foreach (var source in sourceEntities) { LatestCurrencyRate latestCurrencyRate = this._currencyRatesService .GetLatestCurrencyRate(source.PaymentMovmentCostCenters.FirstOrDefault(X => X.CostCenterId == costCenterId).Amount, source.Currency, systemCurrency); #region Set Journal Description var ar = source.ChildTranslatedPaymentMovments.FirstOrDefault(x => x.Language == Language.Arabic); var en = source.ChildTranslatedPaymentMovments.FirstOrDefault(x => x.Language == Language.English); string journalDescriptionAr = this._resourcesService[ResourceKeyEnum.RelayFromPaymentMovementNo, Language.Arabic].Value + source.Code + latestCurrencyRate.AppendedDescriptionAr; string journalDescriptionEn = this._resourcesService[ResourceKeyEnum.RelayFromPaymentMovementNo, Language.English].Value + source.Code + latestCurrencyRate.AppendedDescriptionEn; if (ar?.Description != null) { journalDescriptionAr = ar.Description + " - " + journalDescriptionAr; } if (en?.Description != null) { journalDescriptionEn = en.Description + " - " + journalDescriptionEn; } #endregion var journal = new Journal { Date = source.Date, MovementType = MovementType.PaymentMovement, ObjectId = source.Id, CreationDate = now, }; var journalAr = new Journal { Description = journalDescriptionAr, Language = Language.Arabic, CreationDate = now, Date = source.Date }; var journalEn = new Journal { Description = journalDescriptionEn, Language = Language.English, CreationDate = now, Date = source.Date }; journal.ChildTranslatedJournals.Add(journalAr); journal.ChildTranslatedJournals.Add(journalEn); #region الطرف المدين // الطرف المدين var transactionD = new Transaction { IsCreditor = false, Amount = latestCurrencyRate.NewAmount, //Amount = source.PaymentMovmentCostCenters.FirstOrDefault(X => X.CostCenterId == costCenterId).Amount, CreationDate = now, DescriptionAR = journalAr.Description, DescriptionEN = journalEn.Description, //DescriptionAR = "معاملة طرف دائن لحركة مدفوعات", //DescriptionEN = "Transaction of a crediting party for the movement of payment", Journal = journal }; //if (source.BankId.HasValue) //{ // if (source.Bank == null) source.Bank = this._banksRepository.Get(source.BankId.Value); // transactionD.AccountChartId = source.Bank.AccountChartId; // #region Record The Owner Of This Transaction // transactionD.ObjectType = ObjectType.Bank; // transactionD.ObjectId = source.BankId; // #endregion //} journal.Transactions.Add(transactionD); #endregion list.AddRange(journal.Transactions); } } return(list); }