@SuppressWarnings("unchecked")
  @Override
  public ActionForward addItem(
      ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response)
      throws Exception {
    PurchasingFormBase purchasingForm = (PurchasingFormBase) form;
    PurApItem item = purchasingForm.getNewPurchasingItemLine();
    RequisitionItem requisitionItem = (RequisitionItem) item;
    PurchasingDocument purDocument = (PurchasingDocument) purchasingForm.getDocument();

    if (StringUtils.isBlank(requisitionItem.getPurchasingCommodityCode())) {
      boolean commCodeParam =
          SpringContext.getBean(ParameterService.class)
              .getParameterValueAsBoolean(
                  CuRequisitionDocument.class,
                  PurapParameterConstants.ENABLE_DEFAULT_VENDOR_COMMODITY_CODE_IND);

      if (commCodeParam) {
        if (purchasingForm instanceof RequisitionForm) {
          CuRequisitionDocument reqs = (CuRequisitionDocument) purchasingForm.getDocument();
          VendorDetail dtl = reqs.getVendorDetail();
          if (ObjectUtils.isNotNull(dtl)) {
            List<VendorCommodityCode> vcc = dtl.getVendorCommodities();
            String defaultCommodityCode = "";
            Iterator<VendorCommodityCode> it = vcc.iterator();
            while (it.hasNext()) {
              VendorCommodityCode commodity = it.next();
              if (commodity.isCommodityDefaultIndicator()) {
                defaultCommodityCode = commodity.getPurchasingCommodityCode();
                requisitionItem.setPurchasingCommodityCode(defaultCommodityCode);
              }
            }
          }
        }
      }
    }

    boolean rulePassed =
        SpringContext.getBean(KualiRuleService.class)
            .applyRules(new AttributedAddPurchasingAccountsPayableItemEvent("", purDocument, item));

    if (rulePassed) {
      item = purchasingForm.getAndResetNewPurchasingItemLine();
      purDocument.addItem(item);
      // KFSPTS-985
      if (((PurchasingDocumentBase) (purDocument)).isIntegratedWithFavoriteAccount()) {
        populatePrimaryFavoriteAccount(
            item.getSourceAccountingLines(),
            getAccountClassFromNewPurApAccountingLine(purchasingForm));
      }
    }

    return mapping.findForward(KFSConstants.MAPPING_BASIC);
  }
 @ConfigureContext(session = parke)
 public void testUpdateItemAccountAmounts_ThreeAccounts() {
   PurapAccountingServiceFixture fixture = PurapAccountingServiceFixture.REQ_PRORATION_THIRDS;
   RequisitionDocument req = fixture.generateRequisitionDocument_OneItem();
   RequisitionItem item = (RequisitionItem) req.getItems().get(0);
   KualiDecimal total = item.getTotalAmount();
   purapAccountingService.updateItemAccountAmounts(item);
   PurApAccountingLine line1 = item.getSourceAccountingLines().get(0);
   assertTrue(line1.getAmount().compareTo(total.divide(new KualiDecimal(3))) == 0);
 }