示例#1
0
        /// <summary>
        /// Creates the payment summaries.
        /// This will create payment summaries/Invoice Requests for the repeat payments to be charged at the end of the cycle
        /// </summary>
        /// <param name="dateToConsider">The date to consider.</param>
        public static void CreatePaymentSummaries(DateTime dateToConsider)
        {
            using (StageBitzDB dataContext = new StageBitzDB())
            {
                FinanceBL financeBL = new FinanceBL(dataContext);
                CompanyBL companyBL = new CompanyBL(dataContext);

                //This will get all the CompanyPaymentPackages that needs to be Charged for considering cycle
                List <CompanyPaymentPackage> companyPaymentPackages = (from cpp in dataContext.CompanyPaymentPackages
                                                                       join cps in dataContext.CompanyPaymentSummaries on cpp.CompanyId equals cps.CompanyId
                                                                       where cps.IsImmidiateFutureRecordCreated == false &&
                                                                       cpp.StartDate <= dateToConsider && (cpp.EndDate > dateToConsider || cpp.EndDate == null) &&
                                                                       cps.NextPaymentCycleStartingDate <= dateToConsider
                                                                       select cpp).Distinct().ToList();

                foreach (CompanyPaymentPackage companyPaymentPackage in companyPaymentPackages)
                {
                    Data.Company company = companyPaymentPackage.Company;

                    PaymentSummaryDetails paymentSummaryDetails = new PaymentSummaryDetails()
                    {
                        CompanyPaymentPackage = companyPaymentPackage,
                        CompanyId             = companyPaymentPackage.CompanyId,
                        ShouldProcess         = !(companyBL.IsCompanySuspended(companyPaymentPackage.CompanyId) || companyBL.HasCompanySuspendedbySBAdmin(companyPaymentPackage.CompanyId)),
                        UserId                        = 0,
                        PackageStartDate              = companyPaymentPackage.StartDate,
                        PaymentMethodCodeId           = companyPaymentPackage.PaymentMethodCodeId,
                        HasPackageChanged             = false,
                        ProjectPaymentPackageTypeId   = companyPaymentPackage.ProjectPaymentPackageTypeId,
                        InventoryPaymentPackageTypeId = companyPaymentPackage.InventoryPaymentPackageTypeId,
                        IsEducationPackage            = companyPaymentPackage.IsEducationalPackage,
                        PaymentDurationTypeCodeId     = companyPaymentPackage.PaymentDurationCodeId,
                        DiscountCodeUsageToApply      = financeBL.GetLatestDiscountCodeUsage(companyPaymentPackage.CompanyId)
                    };
                    //Get IsImmidiateFutureRecordCreated "False" Future Anual Summary records and make them as "True".(To commit as Processed)
                    var unprocessedFutureSummaries = (from cps in dataContext.CompanyPaymentSummaries
                                                      where cps.IsImmidiateFutureRecordCreated == false &&
                                                      cps.CompanyId == companyPaymentPackage.CompanyId &&
                                                      cps.ToDate <= dateToConsider
                                                      select cps).ToList();

                    foreach (CompanyPaymentSummary cps in unprocessedFutureSummaries)
                    {
                        cps.IsImmidiateFutureRecordCreated = true;
                        cps.LastUpdatedDate = Utils.Today;
                        cps.LastUpdatedBy   = 0;
                    }

                    CreateCompanyPaymentSummaries(paymentSummaryDetails, dateToConsider, dataContext);
                }

                dataContext.SaveChanges();
            }
        }