/**
   * Check for zero amount, or negative on original (non-correction) document; no sign check for
   * documents that are corrections to previous documents <strong>the accounting document must be
   * the first parameter, the accounting line must be the second parameter</strong>
   *
   * @see org.kuali.kfs.sys.document.validation.GenericValidation#validate(java.lang.Object[])
   */
  @Override
  public boolean validate(AttributedDocumentEvent event) {
    KualiDecimal amount = accountingLineForValidation.getAmount();
    String correctsDocumentId =
        accountingDocumentForValidation
            .getFinancialSystemDocumentHeader()
            .getFinancialDocumentInErrorNumber();

    if (amount != null) {
      if (KualiDecimal.ZERO.compareTo(amount) == 0) { // amount == 0
        GlobalVariables.getMessageMap()
            .putError(AMOUNT_PROPERTY_NAME, ERROR_ZERO_AMOUNT, "an accounting line");
        return false;
      } else {
        if (null == correctsDocumentId && KualiDecimal.ZERO.compareTo(amount) == 1) { // amount < 0
          GlobalVariables.getMessageMap()
              .putError(AMOUNT_PROPERTY_NAME, ERROR_INVALID_NEGATIVE_AMOUNT_NON_CORRECTION);
          return false;
        }
      }
    }

    return true;
  }