Ejemplo n.º 1
0
        private void btCancelLastSavingEvent_Click(object sender, EventArgs e)
        {
            try
            {

                if (!_saving.HasCancelableEvents()) return;

                EventStock es = new EventStock();
                es.AddRange(_saving.Events);
                Event foundEvent = es.GetLastSavingNonDeletedEvent;

                var coaServices = ServicesProvider.GetInstance().GetChartOfAccountsServices();
                var fiscalYear =
                    coaServices.SelectFiscalYears().Find(
                        y => y.OpenDate <= foundEvent.Date && (y.CloseDate >= foundEvent.Date || y.CloseDate == null));
                if (null == fiscalYear || !fiscalYear.Open)
                {
                    throw new OpenCbsContractSaveException(
                        OpenCbsContractSaveExceptionEnum.OperationOutsideCurrentFiscalYear);
                }

                string message = GetString("ConfirmCancelLastEvent");
                string caption = GetString("Confirm");
                DialogResult res = MessageBox.Show(message, caption, MessageBoxButtons.YesNo);
                if (res != DialogResult.Yes) return;

                FrmDeleteEventComment frm = new FrmDeleteEventComment();
                DialogResult result = frm.ShowDialog();

                if (result == DialogResult.OK)
                {
                    try
                    {
                        if (_saving is SavingBookContract)
                            ((SavingBookContract)_saving).Loans = SavingServices.SelectLoansBySavingsId(_saving.Id);

                        SavingEvent sEvent = SavingServices.CancelLastEvent(_saving, User.CurrentUser, frm.Comment);

                        for (int i = 0; i <= _saving.Events.Count - 1; i++)
                            if (_saving.Events[i].Id == sEvent.Id)
                            {
                                SavingEvent temp = _saving.Events[i];
                                temp.Deleted = true;
                                _saving.Events[i] = temp;
                            }
                    }
                    catch (Exception ex)
                    {
                        new frmShowError(CustomExceptionHandler.ShowExceptionText(ex)).ShowDialog();
                    }

                    ((LotrasmicMainWindowForm)_mdiParent).ReloadAlertsSync();

                    DisplaySavingEvent(_saving);

                    if (_person != null) DisplaySavings(_person.Savings);
                    if (_client != null) DisplaySavings(_client.Savings);
                }
            }
            catch (Exception ex)
            {
                new frmShowError(CustomExceptionHandler.ShowExceptionText(ex)).ShowDialog();
            }
        }
Ejemplo n.º 2
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);
        }