示例#1
0
        /// <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);
        }
示例#3
0
        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);
        }