private async Task <PostingStatus> ReturnAccountingDocumentStatus(AccountingDocument accountingDocument, DateTime companyDate, string company, AccountingSetupDto accountingSetup) { accountingDocument.ErrorMessage = string.Empty; // Sanity Check bool isLegSumValid = CommonRules.CheckSanityCheck(accountingDocument); MappingErrorMessages messages; if (isLegSumValid) { if (CommonRules.CheckFxRateConverted(accountingDocument)) { bool ifInterface = await CommonRules.CheckIfInterface(_accountingQueries, accountingDocument.TransactionDocumentId, company); messages = await CommonRules.CheckMappingError(_accountingQueries, accountingDocument.AccountingDocumentLines, company, accountingDocument.TransactionDocumentTypeId); if (ifInterface) { if (messages.C2CCode == null) { accountingDocument.ErrorMessage = "C2C Code Is NULL ;"; } if (!messages.CostAlternativeCode) { accountingDocument.ErrorMessage += "Cost Alternative Code Is NULL ;"; } if (!messages.TaxInterfaceCode) { accountingDocument.ErrorMessage += "Tax Interface Code Is NULL ;"; } if (messages.DepartmentAlternativeCode == null) { accountingDocument.ErrorMessage += "Department Alternative Code Is NULL ;"; } if (!messages.NominalAlternativeAccount) { accountingDocument.ErrorMessage += "Nominal Alternative Code Is NULL ;"; } if (!string.IsNullOrEmpty(accountingDocument.ErrorMessage)) { return(PostingStatus.MappingError); } } if (CommonRules.MandatoryFieldValidation(accountingDocument)) { accountingDocument.ErrorMessage = "Mandatory Field Missing"; return(PostingStatus.Held); } if (accountingDocument.DocumentDate.Date > companyDate.Date) { accountingDocument.ErrorMessage = "Future document date"; return(PostingStatus.Held); } if (!CommonRules.IsLastMonthForAccountingOpen(accountingSetup.LastMonthClosed, accountingDocument.AccountingDate, accountingSetup.NumberOfOpenPeriod)) { accountingDocument.ErrorMessage = "Month is not yet open for accounting period"; return(PostingStatus.Held); } return(PostingStatus.Authorised); } else { accountingDocument.ErrorMessage = "No Fxrates Found"; return(PostingStatus.Held); } } else { accountingDocument.ErrorMessage = "Unbalanced document"; return(PostingStatus.Held); } }