Esempio n. 1
0
        private void WriteAccountDefinitions(string outputFileName)
        {
            var accountDefintionStatements = _dataStore.GetPackage(WorkFlowViewModel.InputAccountDefinitionPackageDefinition)
                                             .MakeAccountPrintable(_dataStore,
                                                                   WorkFlowViewModel.DisplayableAccountNamesDictionaryPackageDefinition)
                                             .MakeRecipientAccountPrintable(_dataStore,
                                                                            WorkFlowViewModel.DisplayableAccountNamesDictionaryPackageDefinition);


            AccountDefinitionGateway gateway = new AccountDefinitionGateway(outputFileName);

            gateway.WirteAccountDefinitions(accountDefintionStatements);
        }
        private void ReadInput()
        {
            var input     = _dataStore.GetPackage(WorkFlowViewModel.InputParametersPackageDefinition);
            var startDate = input.AccountingPeriodStartDate;
            var endDate   = input.AccountingPeriodEndDate;

            var logger = new Logger();

            var journalStatements = JournalReader.ReadJournalStatements
                                        (input.CurrentJournalFileName, input.CurrentJournalSheetName, logger);

            var previousBalanceSheetStatements = BalanceSheetReader.ReadBalanceSheetStatements
                                                     (input.PreviousBalanceSheetFileName, input.PreviousBalanceSheetSheetName, logger);

            var trimmedJournalStatements = JournalStatementsCorrecter
                                           .CorrectInvalidStatements(journalStatements, startDate, endDate, logger);

            var trimmedBalanceSheetStatements = BalanceSheetStatementsCorrecter
                                                .CorrectInvalidStatements(previousBalanceSheetStatements, logger);


            var accountDefinitionStatements = new AccountDefinitionGateway(input.AccountDefinitionFileName)
                                              .GetAccountDefinitionStatements(logger, input.AccountDefintionSheetName);


            accountDefinitionStatements.ForEach(x => x.Account = x.Account.Trim());

            var displayableAccountNames = new Dictionary <string, string>();

            foreach (var accountDefinitionStatement in accountDefinitionStatements)
            {
                var printableName = accountDefinitionStatement.Account.Trim();
                var name          = printableName.ToLower();
                if (!displayableAccountNames.ContainsKey(name))
                {
                    displayableAccountNames.Add(name, printableName);
                }
            }

            accountDefinitionStatements.ForEach(x => x.Account = x.Account.ToLower());
            accountDefinitionStatements.ForEach(x =>
            {
                if (x.RecipientAccount != null)
                {
                    x.RecipientAccount = x.RecipientAccount.Trim().ToLower();
                }
            });


            var cleanedAccountDefinitionStatements =
                AccountDefinitionStatementsCorrecter.CorrectInvalidStatements(accountDefinitionStatements,
                                                                              previousBalanceSheetStatements, journalStatements, logger);



            _dataStore.PutPackage(trimmedBalanceSheetStatements, WorkFlowViewModel.TrimmedPreviousBalanceSheetStatements);
            _dataStore.PutPackage(journalStatements, WorkFlowViewModel.InputJournalStatementsPackageDefintion);
            _dataStore.PutPackage(trimmedJournalStatements, WorkFlowViewModel.TrimmedJournalStatementsPackageDefintion);
            _dataStore.PutPackage(previousBalanceSheetStatements, WorkFlowViewModel.PreviousBalanceSheetStatementsPackageDefinition);
            _dataStore.PutPackage(accountDefinitionStatements, WorkFlowViewModel.InputAccountDefinitionPackageDefinition);
            _dataStore.PutPackage(cleanedAccountDefinitionStatements, WorkFlowViewModel.CorrectedAccountDefinitionPackageDefinition);
            _dataStore.PutPackage(displayableAccountNames, WorkFlowViewModel.DisplayableAccountNamesDictionaryPackageDefinition);

            ValidateAccountingPeriod(startDate, endDate, logger);
            ValidateJournalStatements(journalStatements, logger);
            ValidateBalanceSheetStatements(previousBalanceSheetStatements, logger);

            logger.InformationList.Sort((a, b) =>
            {
                if (a.GetType() == b.GetType())
                {
                    return(0);
                }
                if (a.GetType() == typeof(Error))
                {
                    return(-1);
                }
                return(1);
            });

            InformationList = logger.InformationList.ToList();
            OverAllMessage  = GetOverAllErrorMessage(logger.InformationList.ToList());
        }