docs: protected boolean validateBudgetForForm(ProposalDevelopmentDocumentContract pdDoc) throws S2SException {
          boolean valid = true;
  
          ProposalDevelopmentBudgetExtContract budget = s2SCommonBudgetService.getBudget(pdDoc.getDevelopmentProposal());
          if(budget != null) {
              for (BudgetPeriodContract period : budget.getBudgetPeriods()) {
                  List<String> participantSupportCode = new ArrayList<>();
                  participantSupportCode.add(s2sBudgetCalculatorService.getParticipantSupportCategoryCode());
                  List<? extends BudgetLineItemContract> participantSupportLineItems =
                          s2sBudgetCalculatorService.getMatchingLineItems(period.getBudgetLineItems(), participantSupportCode);
                  int numberOfParticipants = period.getNumberOfParticipants() == null ? 0 : period.getNumberOfParticipants();
                  if (!participantSupportLineItems.isEmpty() && numberOfParticipants == 0) {
                      AuditError auditError= s2SErrorHandlerService.getError(PARTICIPANT_COUNT_REQUIRED, getFormName());
                      AuditError error= new AuditError(auditError.getErrorKey(),
                              auditError.getMessageKey()+period.getBudgetPeriod(),auditError.getLink());
                      getAuditErrors().add(error);
                      valid = false;
                  } else if (numberOfParticipants > 0 && participantSupportLineItems.isEmpty()) {
                      getAuditErrors().add(s2SErrorHandlerService.getError(PARTICIPANT_COSTS_REQUIRED, getFormName()));
                      valid = false;
                  }
              }
          }
          return valid;
      }