@Override
  public void clearForm() {

    modTrans = null;

    amountField.setDecimal(BigDecimal.ZERO);

    reconciledButton.setDisable(false);
    reconciledButton.setSelected(false);
    reconciledButton.setIndeterminate(false);

    if (payeeTextField != null) { // transfer slips do not use the payee field
      payeeTextField.setEditable(true);
      payeeTextField.clear();
    }

    datePicker.setEditable(true);
    if (!Options.rememberLastDateProperty().get()) {
      datePicker.setValue(LocalDate.now());
    }

    memoTextField.clear();

    numberComboBox.setValue(null);
    numberComboBox.setDisable(false);

    attachmentPane.clear();
  }
  @FXML
  public void initialize() {

    // Needed to support tri-state capability
    reconciledButton.setAllowIndeterminate(true);

    // Number combo needs to know the account in order to determine the next transaction number
    numberComboBox.accountProperty().bind(accountProperty());

    AutoCompleteFactory.setMemoModel(memoTextField);

    accountProperty.addListener(
        (observable, oldValue, newValue) -> {
          // Set the number of fixed decimal places for entry
          amountField.scaleProperty().set(newValue.getCurrencyNode().getScale());

          // Enabled auto completion for the payee field
          if (payeeTextField != null) { // transfer slips do not use the payee field
            AutoCompleteFactory.setPayeeModel(payeeTextField, newValue);
          }
        });

    // If focus is lost, check and load the form with an existing transaction
    if (payeeTextField != null) { // transfer slips do not use the payee field
      payeeTextField
          .focusedProperty()
          .addListener(
              (observable, oldValue, newValue) -> {
                if (!newValue) {
                  handlePayeeFocusChange();
                }
              });
    }

    // Install an event handler when the parent has been set via injection
    parentProperty.addListener(
        (observable, oldValue, newValue) -> {
          newValue.addEventHandler(
              KeyEvent.KEY_PRESSED,
              event -> {
                if (JavaFXUtils.ESCAPE_KEY.match(
                    event)) { // clear the form if an escape key is detected
                  clearForm();
                } else if (JavaFXUtils.ENTER_KEY.match(event)) { // handle an enter key if detected
                  if (validateForm()) {
                    Platform.runLater(AbstractSlipController.this::handleEnterAction);
                  } else {
                    Platform.runLater(
                        () -> {
                          if (event.getSource() instanceof Node) {
                            JavaFXUtils.focusNext((Node) event.getSource());
                          }
                        });
                  }
                }
              });
        });
  }