public async Task AuthorizeForPosting(List <long> listOfDocId, string company, bool postOpClosedPolicy) { List <AccountingDocument> accountDocumentsDto = (await _accountingDocumentRepository.GetAccountingDocumentsByAccountingIdsAsync(listOfDocId, company)).ToList(); var companyDate = await _systemDateTimeService.GetCompanyDate(company); foreach (AccountingDocument accountingDocumentDto in accountDocumentsDto) { await CommonRules.CalculateFunctionalAndStatutoryCurrencyAccountingLine(_foreignExchangeRateService, accountingDocumentDto); AccountingSetupDto accountingSetup = await _accountingQueries.GetAccountingSetup((int)accountingDocumentDto.TransactionDocumentTypeId, company); accountingDocumentDto.StatusId = await CommonRules.ReturnAccountingDocumentStatus(_accountingQueries, accountingDocumentDto, companyDate, company, accountingSetup); await _accountingDocumentRepository.UpdateAccountingDocumentStatutoryAndFunctionalCurrencyAmounts(company, accountingDocumentDto); } var listOfAuthorizedDocument = accountDocumentsDto.Where(x => x.StatusId == PostingStatus.Authorised).ToList(); if (listOfAuthorizedDocument.Count > 0) { foreach (AccountingDocument accountingDocument in listOfAuthorizedDocument) { await EnqueuePostingProcessorMessage(accountingDocument.AccountingId, company, postOpClosedPolicy); } } }
public async Task <Unit> Handle(ProcessHeldAndMappingErrorDocumentCommand request, CancellationToken cancellationToken) { _unitOfWork.BeginTransaction(); try { var companyDate = await _systemDateTimeService.GetCompanyDate(request.Company); IEnumerable <AccountingDocument> accountingDocuments = await _accountingQueries.GetAccountingDocumentInHeldAndMappingErrorState(request.Company); foreach (AccountingDocument accountingDocument in accountingDocuments) { await CommonRules.CalculateFunctionalAndStatutoryCurrencyAccountingLine(_foreignExchangeRateService, accountingDocument); AccountingSetupDto accountingSetup = await _accountingQueries.GetAccountingSetup((int)accountingDocument.TransactionDocumentTypeId, request.Company); accountingDocument.StatusId = await ReturnAccountingDocumentStatus(accountingDocument, companyDate, request.Company, accountingSetup); await _accountingDocumentRepository.UpdateAccountingDocument(accountingDocument, request.Company); if (accountingDocument.StatusId == PostingStatus.Authorised) { bool postOpClosedPolicy = await CommonRules.CheckPrivileges(_authorizationService, _identityService); await EnqueuePostingProcessorMessage(accountingDocument.AccountingId, request.Company, postOpClosedPolicy); } } _unitOfWork.Commit(); } catch { _unitOfWork.Rollback(); throw; } return(Unit.Value); }