@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); }