Example #1
0
            internal async Task <ValidatedAccountingImport> ProcessManualAccountingImport(List <AccountingCsvLine> csvAccountingData, bool IsMTMSelected, string company)
            {
                ValidatedAccountingImport       validatedAccountingImport = new ValidatedAccountingImport();
                List <AccountingDocumentImport> accountingRecordList      = new List <AccountingDocumentImport>();
                IEnumerable <NominalAccount>    nominalAccount            = (await _masterDataService.GetNominalAccountsAsync(company)).ToList();
                List <AccountingCsvLine>        goodDataList     = new List <AccountingCsvLine>();
                IEnumerable <Counterparty>      counterParty     = (await _masterDataService.GetCounterpartiesAsync(company)).ToList();
                IEnumerable <AccountLineTypes>  accountLineTypes = (await _masterDataService.GetAllAsync()).ToList();
                IEnumerable <CostType>          costType         = (await _masterDataService.GetCostTypesAsync(company)).ToList();
                IEnumerable <Department>        departmentId     = (await _masterDataService.GetDepartmentsAsync(company)).ToList();
                IEnumerable <Commodity>         commodity        = (await _masterDataService.GetCommoditiesAsync(company)).ToList();

                string[] chartercompany = new string[1];
                chartercompany[0] = company;
                IEnumerable <CharterManager> charterManager         = (await _masterDataService.GetCharterManagersAsync(chartercompany)).ToList();
                IEnumerable <Currency>       settlementCurrencyList = (await _masterDataService.GetCurrenciesAsync()).ToList();
                IEnumerable <Province>       provinces = (await _masterDataService.GetProvincesAsync()).ToList();
                EntitySearchRequest          request   = new EntitySearchRequest {
                    Clauses = null, Limit = 214748647, Offset = 0, SortColumns = null
                };
                var searchResultTransactionDocumentEntries = await _accountingDocumentQueries.SearchTransactionDocumentEntriesAsync(company, request);

                IEnumerable <TransactionDocumentSearch> searchResultTransactionDocument;

                searchResultTransactionDocument = _mapper.Map <IEnumerable <TransactionDocumentSearch> >(searchResultTransactionDocumentEntries);
                IEnumerable <SectionSearchResult> searchResultSectionId = await _accountingDocumentQueries.SearchSectionsAsync(company, request);

                IEnumerable <FxDealSearchResult> searchResultFxDeal = await _accountingDocumentQueries.SearchFxDealsAsync(company, request);


                var validatedAccounting = ValidateData(IsMTMSelected, csvAccountingData, nominalAccount, counterParty, accountLineTypes, costType, departmentId, charterManager, commodity, settlementCurrencyList, searchResultTransactionDocument, provinces, searchResultSectionId, searchResultFxDeal);

                foreach (var data in validatedAccounting.GoodData.LineNumber.ToList())
                {
                    var accontingValueListImport = csvAccountingData.Where(x => x.LineNumber == data).FirstOrDefault();
                    if (accontingValueListImport != null)
                    {
                        goodDataList.Add(accontingValueListImport);
                    }
                }
                validatedAccountingImport.GoodDataList = goodDataList;
                validatedAccountingImport.GoodData     = validatedAccounting.GoodData;
                validatedAccountingImport.BlockerData  = validatedAccounting.BlockerData;

                return(validatedAccountingImport);
            }
Example #2
0
            private static ValidatedAccountingImport ValidateData(
                bool isMTMSelected,
                List <AccountingCsvLine> csvLines,
                IEnumerable <NominalAccount> nominalAccount,
                IEnumerable <Counterparty> counterParty,
                IEnumerable <AccountLineTypes> accountLineType,
                IEnumerable <CostType> costType,
                IEnumerable <Department> departmentId,
                IEnumerable <CharterManager> charterManagers,
                IEnumerable <Commodity> commodity,
                IEnumerable <Currency> settlementCurrencyList,
                IEnumerable <TransactionDocumentSearch> searchResultTransactionDocument,
                IEnumerable <Province> provinces,
                IEnumerable <SectionSearchResult> searchResultSectionId,
                IEnumerable <FxDealSearchResult> searchResultFxDeal


                )
            {
                ValidatedAccountingImport validatedAccountingImport = new ValidatedAccountingImport
                {
                    GoodData = new AccountingImportReportData

                    {
                        ErrorCode    = "Good data",
                        ErrorMessage = "Following Accounting Line are Ready for Import",
                        LineNumber   = new List <int>()
                    },
                    BlockerData = new List <AccountingImportReportData>(),
                };

                List <AccountingValidationError> validationErrors = new List <AccountingValidationError>();

                foreach (var csvLine in csvLines)
                {
                    bool isValidLine = ValidateNominalAccount(validationErrors, csvLine, nominalAccount, counterParty, accountLineType, costType, isMTMSelected) &&
                                       ValidateClientAccountId(validationErrors, csvLine, counterParty) &&
                                       ValidateAssociatedAccountId(validationErrors, csvLine, counterParty) &&
                                       ValidateCostAccount(validationErrors, csvLine, costType) &&
                                       ValidateAccountLineTypeId(validationErrors, csvLine, isMTMSelected, accountLineType) &&
                                       ValidateDepartmentId(validationErrors, csvLine, departmentId) &&
                                       ValidateCommodityAccount(validationErrors, csvLine, commodity) &&
                                       ValidateCharterManager(validationErrors, csvLine, charterManagers) &&
                                       ValidateSettlementCurrencyList(validationErrors, csvLine, settlementCurrencyList) &&
                                       ValidateTransactionDocument(validationErrors, csvLine, searchResultTransactionDocument) &&
                                       Validateprovinces(validationErrors, csvLine, provinces) &&
                                       ValidateSectionId(validationErrors, csvLine, searchResultSectionId) &&
                                       ValidateFxDeal(validationErrors, csvLine, searchResultFxDeal);

                    if (isValidLine)
                    {
                        validatedAccountingImport.GoodData.LineNumber.Add(csvLine.LineNumber);
                    }
                }


                foreach (var group in validationErrors.GroupBy(v => v.ErrorCode).ToList())
                {
                    var accountingImportReportData = new AccountingImportReportData
                    {
                        ErrorCode    = group.Key,
                        ErrorMessage = _errorMessages[group.Key],
                        LineNumber   = group.Select(item => item.AccountingCheckCsvLine.LineNumber).ToList()
                    };

                    validatedAccountingImport.BlockerData.Add(accountingImportReportData);
                }

                return(validatedAccountingImport);
            }