public RequisitionDocument createRequisitionDocumentForTax(
      TaxTestCaseFixture taxTestCaseFixture) {

    RequisitionDocument doc = createRequisitionDocument();

    doc.getItem(0).getItemType().setTaxableIndicator(taxTestCaseFixture.isItemTypeTaxable());

    doc.setDeliveryStateCode("IN");

    if (taxTestCaseFixture.isItemTaxAmountNull()) {
      doc.getItem(0).setItemTaxAmount(null);
    } else {
      doc.getItem(0).setItemTaxAmount(new KualiDecimal(100));
    }

    doc.setUseTaxIndicator(taxTestCaseFixture.isUseTax());

    if (taxTestCaseFixture.iscommodityCodeNull()) {
      ((RequisitionItem) doc.getItem(0)).setPurchasingCommodityCode(null);
      ((RequisitionItem) doc.getItem(0)).setCommodityCode(null);
    } else {
      ((RequisitionItem) doc.getItem(0))
          .setCommodityCode(CommodityCodeFixture.COMMODITY_CODE_BASIC_ACTIVE.createCommodityCode());
    }

    String INVALID_VALUE = "XX";

    String fundGroupCode =
        doc.getItem(0)
            .getSourceAccountingLines()
            .get(0)
            .getAccount()
            .getSubFundGroup()
            .getFundGroupCode();
    String subFundGroupCode =
        doc.getItem(0)
            .getSourceAccountingLines()
            .get(0)
            .getAccount()
            .getSubFundGroup()
            .getSubFundGroupCode();
    String objectLevelCode =
        doc.getItem(0)
            .getSourceAccountingLines()
            .get(0)
            .getObjectCode()
            .getFinancialObjectLevelCode();
    String consolidationObjectCode =
        doc.getItem(0)
            .getSourceAccountingLines()
            .get(0)
            .getObjectCode()
            .getFinancialObjectLevel()
            .getFinancialConsolidationObjectCode();

    String parameterSuffix;

    if (taxTestCaseFixture.isDeliveryStateTaxable()) {
      TestUtils.setSystemParameter(
          KfsParameterConstants.PURCHASING_DOCUMENT.class,
          TaxParameters.TAXABLE_DELIVERY_STATES,
          doc.getDeliveryStateCode());
      parameterSuffix = "FOR_TAXABLE_STATES";
    } else {
      TestUtils.setSystemParameter(
          KfsParameterConstants.PURCHASING_DOCUMENT.class,
          TaxParameters.TAXABLE_DELIVERY_STATES,
          INVALID_VALUE);
      parameterSuffix = "FOR_NON_TAXABLE_STATES";
    }

    if (taxTestCaseFixture.isFundGroupCodeTaxable()) {
      TestUtils.setSystemParameter(
          KfsParameterConstants.PURCHASING_DOCUMENT.class,
          "TAXABLE_FUND_GROUPS_" + parameterSuffix,
          fundGroupCode);
      TestUtils.setSystemParameter(
          KfsParameterConstants.PURCHASING_DOCUMENT.class,
          "TAXABLE_SUB_FUND_GROUPS_" + parameterSuffix,
          subFundGroupCode);
    } else {
      // Just put some invalid value
      TestUtils.setSystemParameter(
          KfsParameterConstants.PURCHASING_DOCUMENT.class,
          "TAXABLE_FUND_GROUPS_" + parameterSuffix,
          INVALID_VALUE);
      TestUtils.setSystemParameter(
          KfsParameterConstants.PURCHASING_DOCUMENT.class,
          "TAXABLE_SUB_FUND_GROUPS_" + parameterSuffix,
          INVALID_VALUE);
    }

    if (taxTestCaseFixture.isObjectCodeTaxable()) {
      TestUtils.setSystemParameter(
          KfsParameterConstants.PURCHASING_DOCUMENT.class,
          "TAXABLE_OBJECT_LEVELS_" + parameterSuffix,
          objectLevelCode);
      TestUtils.setSystemParameter(
          KfsParameterConstants.PURCHASING_DOCUMENT.class,
          "TAXABLE_OBJECT_CONSOLIDATIONS_" + parameterSuffix,
          consolidationObjectCode);
    } else {
      TestUtils.setSystemParameter(
          KfsParameterConstants.PURCHASING_DOCUMENT.class,
          "TAXABLE_OBJECT_LEVELS_" + parameterSuffix,
          INVALID_VALUE);
      TestUtils.setSystemParameter(
          KfsParameterConstants.PURCHASING_DOCUMENT.class,
          "TAXABLE_OBJECT_CONSOLIDATIONS_" + parameterSuffix,
          INVALID_VALUE);
    }

    if (taxTestCaseFixture.isSalesTaxEnabled()) {
      TestUtils.setSystemParameter(
          KfsParameterConstants.PURCHASING_DOCUMENT.class,
          PurapParameterConstants.ENABLE_SALES_TAX_IND,
          "Y");
    } else {
      TestUtils.setSystemParameter(
          KfsParameterConstants.PURCHASING_DOCUMENT.class,
          PurapParameterConstants.ENABLE_SALES_TAX_IND,
          "N");
    }

    return doc;
  }