@Override
 protected void addRoleQualification(Object dataObject, Map<String, String> attributes) {
   super.addRoleQualification(dataObject, attributes);
   IWantDocument iWantDocument = (IWantDocument) dataObject;
   attributes.put(KfsKimAttributes.CHART_OF_ACCOUNTS_CODE, iWantDocument.getRoutingChart());
   attributes.put(KfsKimAttributes.ORGANIZATION_CODE, iWantDocument.getRoutingOrganization());
 }
  /**
   * Creates a requisition document based on information from an I Want document.
   *
   * @param mapping
   * @param form
   * @param request
   * @param response
   * @return
   * @throws Exception
   */
  @SuppressWarnings("deprecation")
  public ActionForward createReqFromIWantDoc(
      ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response)
      throws Exception {

    String iWantDocumentNumber = request.getParameter(KRADConstants.PARAMETER_DOC_ID);
    RequisitionForm requisitionForm = (RequisitionForm) form;

    IWantDocument iWantDocument =
        (IWantDocument) getDocumentService().getByDocumentHeaderId(iWantDocumentNumber);
    if (iWantDocument == null) {
      throw new WorkflowException(
          "Could not find IWantDocument with ID '" + iWantDocumentNumber + "'");
    }

    // Make sure the user is authorized to create the req in this manner.
    TransactionalDocumentPresentationController pControl =
        (TransactionalDocumentPresentationController)
            getDocumentHelperService().getDocumentPresentationController(iWantDocument);
    TransactionalDocumentAuthorizer authorizer =
        (TransactionalDocumentAuthorizer)
            getDocumentHelperService().getDocumentAuthorizer(iWantDocument);
    Set<String> iwntEditModes =
        authorizer.getEditModes(
            iWantDocument,
            GlobalVariables.getUserSession().getPerson(),
            pControl.getEditModes(iWantDocument));
    if (!iwntEditModes.contains(CUPurapConstants.IWNT_DOC_CREATE_REQ)) {
      throw new AuthorizationException(
          GlobalVariables.getUserSession().getPrincipalId(),
          CUPurapConstants.IWNT_DOC_CREATE_REQ,
          CuRequisitionDocument.class.getSimpleName(),
          "user is not authorized to create requisitions from IWantDocument '"
              + iWantDocumentNumber
              + "'",
          Collections.<String, Object>emptyMap());
    }

    // Do not allow the req to be created if the IWNT doc is already associated with another req.
    if (iWantDocument != null
        && (StringUtils.isNotBlank(iWantDocument.getReqsDocId())
            || StringUtils.isNotBlank(iWantDocument.getDvDocId()))) {
      throw new WorkflowException(
          "Cannot create requisition from IWantDocument '"
              + iWantDocumentNumber
              + "' because a DV or Requisition has already been created from that document");
    }

    IWantDocumentService iWantDocumentService = SpringContext.getBean(IWantDocumentService.class);

    createDocument(requisitionForm);

    RequisitionDocument requisitionDocument = requisitionForm.getRequisitionDocument();

    iWantDocumentService.setUpRequisitionDetailsFromIWantDoc(
        iWantDocument, requisitionDocument, requisitionForm);

    // Set the requisition doc ID reference on the IWantDocument.
    iWantDocument.setReqsDocId(requisitionDocument.getDocumentNumber());
    SpringContext.getBean(PurapService.class).saveDocumentNoValidation(iWantDocument);

    return mapping.findForward(RiceConstants.MAPPING_BASIC);
  }