use of org.kuali.kfs.kim.api.identity.Person in project cu-kfs by CU-CommunityApps.
the class AccountGlobalRule method checkGeneralRules.
/**
* This method checks some of the general business rules associated with this document Such as: valid user for fiscal officer,
* supervisor or account manager (and not the same individual) are they trying to use an expired continuation account
*
* @param maintenanceDocument
* @return false on rules violation
*/
protected boolean checkGeneralRules(MaintenanceDocument maintenanceDocument) {
LOG.info("checkGeneralRules called");
Person fiscalOfficer = newAccountGlobal.getAccountFiscalOfficerUser();
Person accountManager = newAccountGlobal.getAccountManagerUser();
Person accountSupervisor = newAccountGlobal.getAccountSupervisoryUser();
boolean success = true;
if (isNonSystemSupervisorEditingAClosedAccount(maintenanceDocument, GlobalVariables.getUserSession().getPerson())) {
success &= false;
putFieldError(KFSPropertyConstants.ACCOUNT_CHANGE_DETAILS, COAKeyConstants.ERROR_DOCUMENT_ACCMAINT_ONLY_SUPERVISORS_CAN_EDIT);
}
if (StringUtils.isNotBlank(newAccountGlobal.getAccountFiscalOfficerSystemIdentifier()) && (ObjectUtils.isNull(fiscalOfficer) || StringUtils.isEmpty(fiscalOfficer.getPrincipalId()) || !getDocumentHelperService().getDocumentAuthorizer(maintenanceDocument).isAuthorized(maintenanceDocument, KFSConstants.PermissionNames.SERVE_AS_FISCAL_OFFICER.namespace, KFSConstants.PermissionNames.SERVE_AS_FISCAL_OFFICER.name, fiscalOfficer.getPrincipalId()))) {
final String fiscalOfficerName = fiscalOfficer != null ? fiscalOfficer.getName() : newAccountGlobal.getAccountFiscalOfficerSystemIdentifier();
super.putFieldError(KFSPropertyConstants.ACCOUNT_FISCAL_OFFICER_USER + "." + KFSPropertyConstants.KUALI_USER_PERSON_USER_IDENTIFIER, KFSKeyConstants.ERROR_USER_MISSING_PERMISSION, new String[] { fiscalOfficerName, KFSConstants.PermissionNames.SERVE_AS_FISCAL_OFFICER.namespace, KFSConstants.PermissionNames.SERVE_AS_FISCAL_OFFICER.name });
success = false;
} else if (ObjectUtils.isNotNull(fiscalOfficer) && StringUtils.isNotBlank(fiscalOfficer.getPrincipalName()) && ObjectUtils.isNull(fiscalOfficer.getPrincipalId())) {
super.putFieldError(KFSPropertyConstants.ACCOUNT_FISCAL_OFFICER_USER + "." + KFSPropertyConstants.KUALI_USER_PERSON_USER_IDENTIFIER, COAKeyConstants.ERROR_DOCUMENT_GLOBAL_ACCOUNT_PRINCIPAL_NAME_FISCAL_OFFICER_SUPER_INVALID);
success = false;
}
if (StringUtils.isNotBlank(newAccountGlobal.getAccountsSupervisorySystemsIdentifier()) && (ObjectUtils.isNull(accountSupervisor) || StringUtils.isEmpty(accountSupervisor.getPrincipalId()) || !getDocumentHelperService().getDocumentAuthorizer(maintenanceDocument).isAuthorized(maintenanceDocument, KFSConstants.PermissionNames.SERVE_AS_ACCOUNT_SUPERVISOR.namespace, KFSConstants.PermissionNames.SERVE_AS_ACCOUNT_SUPERVISOR.name, accountSupervisor.getPrincipalId()))) {
final String accountSupervisorName = accountSupervisor != null ? accountSupervisor.getName() : newAccountGlobal.getAccountsSupervisorySystemsIdentifier();
super.putFieldError(KFSPropertyConstants.ACCOUNT_SUPERVISORY_USER + "." + KFSPropertyConstants.KUALI_USER_PERSON_USER_IDENTIFIER, KFSKeyConstants.ERROR_USER_MISSING_PERMISSION, new String[] { accountSupervisorName, KFSConstants.PermissionNames.SERVE_AS_ACCOUNT_SUPERVISOR.namespace, KFSConstants.PermissionNames.SERVE_AS_ACCOUNT_SUPERVISOR.name });
success = false;
} else if (ObjectUtils.isNotNull(accountSupervisor) && StringUtils.isNotBlank(accountSupervisor.getPrincipalName()) && ObjectUtils.isNull(accountSupervisor.getPrincipalId())) {
super.putFieldError(KFSPropertyConstants.ACCOUNT_SUPERVISORY_USER + "." + KFSPropertyConstants.KUALI_USER_PERSON_USER_IDENTIFIER, COAKeyConstants.ERROR_DOCUMENT_GLOBAL_ACCOUNT_PRINCIPAL_NAME_ACCOUNT_SUPER_INVALID);
success = false;
}
if (StringUtils.isNotBlank(newAccountGlobal.getAccountManagerSystemIdentifier()) && (ObjectUtils.isNull(accountManager) || StringUtils.isEmpty(accountManager.getPrincipalId()) || !getDocumentHelperService().getDocumentAuthorizer(maintenanceDocument).isAuthorized(maintenanceDocument, KFSConstants.PermissionNames.SERVE_AS_ACCOUNT_MANAGER.namespace, KFSConstants.PermissionNames.SERVE_AS_ACCOUNT_MANAGER.name, accountManager.getPrincipalId()))) {
final String accountManagerName = accountManager != null ? accountManager.getName() : newAccountGlobal.getAccountManagerSystemIdentifier();
super.putFieldError(KFSPropertyConstants.ACCOUNT_MANAGER_USER + "." + KFSPropertyConstants.KUALI_USER_PERSON_USER_IDENTIFIER, KFSKeyConstants.ERROR_USER_MISSING_PERMISSION, new String[] { accountManagerName, KFSConstants.PermissionNames.SERVE_AS_ACCOUNT_MANAGER.namespace, KFSConstants.PermissionNames.SERVE_AS_ACCOUNT_MANAGER.name });
success = false;
} else if (ObjectUtils.isNotNull(accountManager) && StringUtils.isNotBlank(accountManager.getPrincipalName()) && ObjectUtils.isNull(accountManager.getPrincipalId())) {
super.putFieldError(KFSPropertyConstants.ACCOUNT_MANAGER_USER + "." + KFSPropertyConstants.KUALI_USER_PERSON_USER_IDENTIFIER, COAKeyConstants.ERROR_DOCUMENT_GLOBAL_ACCOUNT_PRINCIPAL_NAME_ACCOUNT_MANAGER_INVALID);
success = false;
}
// check FringeBenefit account rules
success &= checkFringeBenefitAccountRule(newAccountGlobal);
// the supervisor cannot be the same as the fiscal officer or account manager.
if (isSupervisorSameAsFiscalOfficer(newAccountGlobal)) {
success &= false;
putFieldError(KFSPropertyConstants.ACCOUNTS_SUPERVISORY_SYSTEMS_IDENTIFIER, COAKeyConstants.ERROR_DOCUMENT_ACCMAINT_ACCT_SUPER_CANNOT_BE_FISCAL_OFFICER);
}
if (isSupervisorSameAsManager(newAccountGlobal)) {
success &= false;
putFieldError(KFSPropertyConstants.ACCOUNT_MANAGER_SYSTEM_IDENTIFIER, COAKeyConstants.ERROR_DOCUMENT_ACCMAINT_ACCT_SUPER_CANNOT_BE_ACCT_MGR);
}
// disallow continuation account being expired
if (isContinuationAccountExpired(newAccountGlobal)) {
success &= false;
putFieldError(KFSPropertyConstants.CONTINUATION_ACCOUNT_NUMBER, COAKeyConstants.ERROR_DOCUMENT_ACCMAINT_ACCOUNT_EXPIRED_CONTINUATION);
}
// only need to do this check if the entered information does not already violate the rules
if (!isSupervisorSameAsFiscalOfficer(newAccountGlobal) && !isSupervisorSameAsManager(newAccountGlobal)) {
success &= checkAllAccountUsers(newAccountGlobal, fiscalOfficer, accountManager, accountSupervisor);
}
success &= checkCfda(newAccountGlobal.getAccountCfdaNumber());
return success;
}
use of org.kuali.kfs.kim.api.identity.Person in project cu-kfs by CU-CommunityApps.
the class DisbursementVoucherAction method hasFullEdit.
/**
* Determines if the current user has full edit permissions on the document, which would allow them to repopulate the payee
*
* @param document the document to check for full edit permissions on
* @return true if full edit is allowed on the document, false otherwise
*/
protected boolean hasFullEdit(DisbursementVoucherDocument document) {
final Person user = GlobalVariables.getUserSession().getPerson();
final TransactionalDocumentPresentationController documentPresentationController = (TransactionalDocumentPresentationController) getDocumentHelperService().getDocumentPresentationController(document);
final TransactionalDocumentAuthorizer documentAuthorizer = (TransactionalDocumentAuthorizer) getDocumentHelperService().getDocumentAuthorizer(document);
Set<String> documentActions = documentPresentationController.getDocumentActions(document);
documentActions = documentAuthorizer.getDocumentActions(document, user, documentActions);
Set<String> editModes = documentPresentationController.getEditModes(document);
editModes = documentAuthorizer.getEditModes(document, user, editModes);
return documentActions.contains(KRADConstants.KUALI_ACTION_CAN_EDIT) && editModes.contains("fullEntry");
}
use of org.kuali.kfs.kim.api.identity.Person in project cu-kfs by CU-CommunityApps.
the class ContractsGrantsInvoiceDocumentServiceImpl method buildAwardFieldsMap.
private Map<String, Object> buildAwardFieldsMap(ContractsAndGrantsBillingAward award) {
Map<String, Object> awardFieldsMap = new HashMap<>();
KualiDecimal billing = getAwardBilledToDateAmount(award.getProposalNumber());
KualiDecimal payments = calculateTotalPaymentsToDateByAward(award);
KualiDecimal receivable = billing.subtract(payments);
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.BILLINGS, billing);
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.PAYMENTS, payments);
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.RECEIVABLES, receivable);
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + KFSPropertyConstants.PROPOSAL_NUMBER, award.getProposalNumber());
if (ObjectUtils.isNotNull(award.getAwardBeginningDate())) {
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + KFSPropertyConstants.AWARD_BEGINNING_DATE, award.getAwardBeginningDate());
}
if (ObjectUtils.isNotNull(award.getAwardEndingDate())) {
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + KFSPropertyConstants.AWARD_ENDING_DATE, award.getAwardEndingDate());
}
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + KFSPropertyConstants.AWARD_TOTAL_AMOUNT, award.getAwardTotalAmount());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.AWARD_ADDENDUM_NUMBER, award.getAwardAddendumNumber());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.AWARD_ALLOCATED_UNIVERSITY_COMPUTING_SERVICES_AMOUNT, award.getAwardAllocatedUniversityComputingServicesAmount());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + KFSPropertyConstants.FEDERAL_PASS_THROUGH_FUNDED_AMOUNT, award.getFederalPassThroughFundedAmount());
if (ObjectUtils.isNotNull(award.getAwardEntryDate())) {
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + KFSPropertyConstants.AWARD_ENTRY_DATE, award.getAwardEntryDate());
}
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.AGENCY_FUTURE_1_AMOUNT, award.getAgencyFuture1Amount());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.AGENCY_FUTURE_2_AMOUNT, award.getAgencyFuture2Amount());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.AGENCY_FUTURE_3_AMOUNT, award.getAgencyFuture3Amount());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + KFSPropertyConstants.AWARD_DOCUMENT_NUMBER, award.getAwardDocumentNumber());
if (ObjectUtils.isNotNull(award.getAwardLastUpdateDate())) {
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.AWARD_LAST_UPDATE_DATE, award.getAwardLastUpdateDate());
}
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + KFSPropertyConstants.FEDERAL_PASS_THROUGH_INDICATOR, award.getFederalPassThroughIndicator());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.AWARD_DIRECT_COST_AMOUNT, award.getAwardDirectCostAmount());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.AWARD_INDIRECT_COST_AMOUNT, award.getAwardIndirectCostAmount());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + KFSPropertyConstants.GRANT_DESCRIPTION_CODE, award.getGrantDescriptionCode());
final ContractAndGrantsProposal proposal = award.getProposal();
if (ObjectUtils.isNotNull(proposal)) {
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.GRANT_NUMBER, proposal.getGrantNumber());
}
awardFieldsMap.put(KFSPropertyConstants.AGENCY_NUMBER, award.getAgencyNumber());
awardFieldsMap.put(KFSPropertyConstants.AGENCY + "." + KFSPropertyConstants.FULL_NAME, award.getAgency().getFullName());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + KFSPropertyConstants.FEDERAL_PASS_THROUGH_AGENCY_NUMBER, award.getFederalPassThroughAgencyNumber());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.AGENCY_ANALYST_NAME, award.getAgencyAnalystName());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.ANALYST_TELEPHONE_NUMBER, award.getAnalystTelephoneNumber());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.BILLING_FREQUENCY_CODE, award.getBillingFrequencyCode());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + KFSPropertyConstants.AWARD_PROJECT_TITLE, award.getAwardProjectTitle());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.AWARD_PURPOSE_CODE, award.getAwardPurposeCode());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + KFSPropertyConstants.ACTIVE, award.isActive());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.EXCLUDED_FROM_INVOICING, award.isExcludedFromInvoicing());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.ADDITIONAL_FORMS_REQUIRED, award.isAdditionalFormsRequiredIndicator());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.ADDITIONAL_FORMS_DESCRIPTION, award.getAdditionalFormsDescription());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.INSTRUMENT_TYPE_CODE, award.getInstrumentTypeCode());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.MIN_INVOICE_AMOUNT, award.getMinInvoiceAmount());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.AUTO_APPROVE, award.getAutoApproveIndicator());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.FUNDING_EXPIRATION_DATE, award.getFundingExpirationDate());
if (ObjectUtils.isNotNull(award.getAwardPrimaryProjectDirector())) {
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArConstants.AWARD_PROJECT_DIRECTOR + "." + KFSPropertyConstants.NAME, award.getAwardPrimaryProjectDirector().getProjectDirector().getName());
}
if (ObjectUtils.isNotNull(award.getAwardPrimaryFundManager())) {
final Person fundManager = award.getAwardPrimaryFundManager().getFundManager();
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.PRIMARY_FUND_MANAGER + "." + KFSPropertyConstants.NAME, fundManager.getName());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.PRIMARY_FUND_MANAGER + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.EMAIL, fundManager.getEmailAddress());
awardFieldsMap.put(KFSPropertyConstants.AWARD + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.PRIMARY_FUND_MANAGER + "." + ArPropertyConstants.ContractsAndGrantsBillingAwardFields.PHONE, fundManager.getPhoneNumber());
}
return awardFieldsMap;
}
use of org.kuali.kfs.kim.api.identity.Person in project cu-kfs by CU-CommunityApps.
the class ContractsGrantsInvoiceDocumentServiceImpl method addNoteForInvoiceReportFail.
protected void addNoteForInvoiceReportFail(ContractsGrantsInvoiceDocument document) {
Note note = new Note();
note.setNotePostedTimestampToCurrent();
note.setNoteText(configurationService.getPropertyValueAsString(ArKeyConstants.ERROR_FILE_UPLOAD_NO_PDF_FILE_SELECTED_FOR_SAVE));
note.setNoteTypeCode(KFSConstants.NoteTypeEnum.BUSINESS_OBJECT_NOTE_TYPE.getCode());
Person systemUser = personService.getPersonByPrincipalName(KFSConstants.SYSTEM_USER);
note = noteService.createNote(note, document.getNoteTarget(), systemUser.getPrincipalId());
noteService.save(note);
document.addNote(note);
}
use of org.kuali.kfs.kim.api.identity.Person in project cu-kfs by CU-CommunityApps.
the class PurchasingAccountsPayableDocumentPresentationController method canEdit.
/**
* None of the PURAP documents allowing editing by adhoc requests
*/
@Override
public boolean canEdit(Document document) {
Person currentUser = GlobalVariables.getUserSession().getPerson();
WorkflowDocument kwf = document.getDocumentHeader().getWorkflowDocument();
// Adding this check so that the initiator will always be able to edit the document (before initial submission)
if (kwf.getInitiatorPrincipalId().equals(currentUser.getPrincipalId()) && (kwf.isInitiated() || kwf.isSaved())) {
return true;
}
if (!document.getDocumentHeader().getWorkflowDocument().isCompletionRequested() && SpringContext.getBean(FinancialSystemWorkflowHelperService.class).isAdhocApprovalRequestedForPrincipal(document.getDocumentHeader().getWorkflowDocument(), GlobalVariables.getUserSession().getPrincipalId())) {
return false;
}
return super.canEdit(document);
}
Aggregations