示例#1
0
        private void BtnRunClick(object sender, EventArgs e)
        {
            _beginDate = dateTimePickerBeginDate.Value.Date;
            _endDate   = dateTimePickerEndDate.Value.Date;
            _branch    = ((Branch)cmbBranches.SelectedItem);

            btnPreview.Enabled = false;
            dateTimePickerBeginDate.Enabled = false;
            dateTimePickerEndDate.Enabled   = false;
            cmbBranches.Enabled             = false;
            clbxFields.Enabled = false;
            btnPost.Enabled    = false;
            btnView.Enabled    = false;
            //DisableX();

            EnableCloseButton(this, false);

            if (_mode == 0)
            {
                _closureOptions = new ClosureOptions
                {
                    DoAccrued              = false,
                    DoOverdue              = false,
                    DoProvision            = false,
                    DoSavingEvents         = false,
                    DoReversalTransactions =
                        clbxFields.CheckedItems.Contains(_closureItems.Items[0]),
                    DoLoanClosure             = clbxFields.CheckedItems.Contains(_closureItems.Items[1]),
                    DoSavingClosure           = clbxFields.CheckedItems.Contains(_closureItems.Items[2]),
                    DoManualEntries           = clbxFields.CheckedItems.Contains(_closureItems.Items[3]),
                    DoTellerManagementClosure = clbxFields.CheckedItems.Contains(_closureItems.Items[4])
                };
            }

            if (_mode == 1)
            {
                //generaion of events
                _closureOptions = new ClosureOptions
                {
                    DoAccrued              = clbxFields.CheckedItems.Contains(_closureItems.Items[0]),
                    DoOverdue              = clbxFields.CheckedItems.Contains(_closureItems.Items[1]),
                    DoProvision            = clbxFields.CheckedItems.Contains(_closureItems.Items[2]),
                    DoSavingEvents         = clbxFields.CheckedItems.Contains(_closureItems.Items[3]),
                    DoReversalTransactions = false,
                    DoLoanClosure          = false,
                    DoSavingClosure        = false,
                    DoManualEntries        = false
                };
            }

            bwRun.RunWorkerAsync();
        }
示例#2
0
        private void GenerateEvents(ClosureOptions options)
        {
            if (options.DoOverdue || options.DoProvision || options.DoAccrued || options.DoLoanClosure)
            {
                UpdateStatus("PerformingClosure", "");
                _listLoan = ServicesProvider.GetInstance().GetContractServices().SelectContractsForClosure();
                UpdateStatus("", "Contracts -> " + _listLoan.Count.ToString());
            }
            //generate overdue events
            if (options.DoOverdue)
            {
                UpdateStatus("OverdueEventsProcessing", "");
                LateLoanProcessing();
            }
            //generate provision events
            if (options.DoProvision)
            {
                UpdateStatus("ProvisionEventsProcessing", "");
                ProvisionLoanProcessing();
            }
            //generate accrued interest events
            if (options.DoAccrued)
            {
                UpdateStatus("AccruedInterestEventsProcessing", "");
                AccruedInterestLoanProcessing();
            }

            if (options.DoSavingEvents)
            {
                UpdateStatus("SavingEventsGeneration", "");
                GenerateSavingsClosureEvents();
            }

            UpdateStatus("", "Loding list ...");
            olvEvents.SetObjects(_generatedEvents);
            UpdateStatus("", "Done");
        }
示例#3
0
        private void GetBookings(ClosureOptions options)
        {
            List <Booking> bookings   = new List <Booking>();
            EventStock     eventStock = new EventStock();

            AccountingRuleCollection rules = ServicesProvider.GetInstance().GetAccountingRuleServices().SelectAll();

            rules.SortByOrder();

            if (options.DoLoanClosure)
            {
                UpdateStatus("LoanClosureProcessing", "");
                eventStock =
                    ServicesProvider.GetInstance().GetEventProcessorServices().SelectEventsForClosure(_beginDate, _endDate, _branch);
                UpdateStatus("LoanClosureProcessing", eventStock.GetEvents().Count.ToString());
                //add generated events for processing
            }

            if (options.DoSavingClosure)
            {
                UpdateStatus("SavingsClosureProcessing", "");

                eventStock.AddRange(
                    ServicesProvider.GetInstance().GetSavingServices().SelectEventsForClosure(
                        _beginDate, _endDate, _branch));

                UpdateStatus("SavingsClosureProcessing", eventStock.GetEvents().Count.ToString());
            }

            if (options.DoTellerManagementClosure)
            {
                UpdateStatus("TellerManagementProcessing", "");
                eventStock.AddRange(ServicesProvider.GetInstance().GetEventProcessorServices().GetTellerEventsForClosure(
                                        _beginDate, _endDate));
                UpdateStatus("EventClosureProcessing", eventStock.GetEvents().Count.ToString());
            }

            //important to have sorted list
            eventStock.SortEventsById();
            //closure procesing
            timerClosure.Start();
            timerClosure.Enabled = true;

            //set ex rate
            List <ExchangeRate> rates =
                ServicesProvider.GetInstance().GetExchangeRateServices().SelectRatesByDate(_beginDate, _endDate);

            List <CoreDomain.Accounting.FiscalYear> fiscalYears =
                ServicesProvider.GetInstance().GetChartOfAccountsServices().SelectFiscalYears();

            bookings.AddRange(
                _accountingClosure.GetBookings(
                    rules,
                    eventStock,
                    ServicesProvider.GetInstance().GetTellerServices().FindAllTellers(),
                    ServicesProvider.GetInstance().GetPaymentMethodServices().GetAllPaymentMethodsForClosure(),
                    rates,
                    fiscalYears));

            timerClosure.Stop();
            timerClosure.Enabled = false;

            //manual transactions
            if (options.DoManualEntries)
            {
                bookings.AddRange(ServicesProvider.GetInstance().GetAccountingServices().SelectMovements(false, rates,
                                                                                                         fiscalYears));
            }

            #region Reversal
            if (options.DoReversalTransactions)
            {
                UpdateStatus("ReversalTransactionProcessing", "");
                bookings.AddRange(ServicesProvider.GetInstance().GetAccountingServices().SelectMovementsForReverse(
                                      rates,
                                      fiscalYears));
            }
            #endregion

            //add reversal provision booking
            if (options.DoLoanClosure)
            {
                bookings.AddRange(
                    _generatedEvents.GetProvisionEvents().Select(
                        provisionEvent =>
                        ServicesProvider.GetInstance().GetAccountingServices().SelectProvisionMovments(
                            provisionEvent.ContracId, rates,
                            fiscalYears)).Where(b => b != null));
            }

            SortBookingsByDate(bookings);

            FillListView(bookings);
        }