use of org.kuali.kfs.coa.businessobject.AccountGlobal in project cu-kfs by CU-CommunityApps.
the class FinancialSystemSearchableAttribute method extractDocumentAttributes.
@Override
public List<DocumentAttribute> extractDocumentAttributes(ExtensionDefinition extensionDefinition, DocumentWithContent documentWithContent) {
if (LOG.isDebugEnabled()) {
LOG.debug("extractDocumentAttributes( " + extensionDefinition + ", " + documentWithContent + " )");
}
List<DocumentAttribute> searchAttrValues = super.extractDocumentAttributes(extensionDefinition, documentWithContent);
String docId = documentWithContent.getDocument().getDocumentId();
DocumentService docService = SpringContext.getBean(DocumentService.class);
Document doc = null;
try {
doc = docService.getByDocumentHeaderIdSessionless(docId);
} catch (WorkflowException we) {
}
if (doc != null) {
if (doc instanceof AmountTotaling && ((AmountTotaling) doc).getTotalDollarAmount() != null) {
DocumentAttributeDecimal.Builder searchableAttributeValue = DocumentAttributeDecimal.Builder.create(KFSPropertyConstants.FINANCIAL_DOCUMENT_TOTAL_AMOUNT);
searchableAttributeValue.setValue(((AmountTotaling) doc).getTotalDollarAmount().bigDecimalValue());
searchAttrValues.add(searchableAttributeValue.build());
}
if (doc instanceof AccountingDocument) {
AccountingDocument accountingDoc = (AccountingDocument) doc;
searchAttrValues.addAll(harvestAccountingDocumentSearchableAttributes(accountingDoc));
}
boolean indexedLedgerDoc = false;
if (doc instanceof LaborLedgerPostingDocumentForSearching) {
LaborLedgerPostingDocumentForSearching LLPostingDoc = (LaborLedgerPostingDocumentForSearching) doc;
searchAttrValues.addAll(harvestLLPDocumentSearchableAttributes(LLPostingDoc));
indexedLedgerDoc = true;
}
if (doc instanceof GeneralLedgerPostingDocument && !indexedLedgerDoc) {
GeneralLedgerPostingDocument GLPostingDoc = (GeneralLedgerPostingDocument) doc;
searchAttrValues.addAll(harvestGLPDocumentSearchableAttributes(GLPostingDoc));
}
DocumentHeader docHeader = doc.getDocumentHeader();
if (ObjectUtils.isNotNull(docHeader) && ObjectUtils.isNotNull(docHeader.getWorkflowDocument()) && CUKFSConstants.GACC_DOCUMENT_TYPE.equalsIgnoreCase(docHeader.getWorkflowDocument().getDocumentTypeName())) {
for (AccountGlobalDetail detail : ((AccountGlobal) ((AccountGlobalMaintainableImpl) ((FinancialSystemMaintenanceDocument) doc).getNewMaintainableObject()).getBusinessObject()).getAccountGlobalDetails()) {
if (!StringUtils.isBlank(detail.getAccountNumber())) {
DocumentAttributeString.Builder searchableAttributeValue = DocumentAttributeString.Builder.create(KFSPropertyConstants.ACCOUNT_NUMBER);
searchableAttributeValue.setValue(detail.getAccountNumber());
searchAttrValues.add(searchableAttributeValue.build());
}
}
}
}
return searchAttrValues;
}
use of org.kuali.kfs.coa.businessobject.AccountGlobal in project cu-kfs by CU-CommunityApps.
the class AccountGlobalRule method checkExpirationDate.
/**
* This method checks to see if any expiration date field rules were violated Loops through each detail object and calls
* {@link AccountGlobalRule#checkExpirationDate(MaintenanceDocument, AccountGlobalDetail)}
*
* @param maintenanceDocument
* @return false on rules violation
*/
protected boolean checkExpirationDate(MaintenanceDocument maintenanceDocument) {
LOG.info("checkExpirationDate called");
boolean success = true;
Date newExpDate = newAccountGlobal.getAccountExpirationDate();
// and the approver hasn't changed the value
if (maintenanceDocument.isNew() && ObjectUtils.isNotNull(newExpDate)) {
Date oldExpDate = null;
if (maintenanceDocument.getDocumentHeader().getWorkflowDocument().isApprovalRequested()) {
try {
MaintenanceDocument oldMaintDoc = (MaintenanceDocument) SpringContext.getBean(DocumentService.class).getByDocumentHeaderId(maintenanceDocument.getDocumentNumber());
AccountGlobal oldAccountGlobal = (AccountGlobal) oldMaintDoc.getDocumentBusinessObject();
if (ObjectUtils.isNotNull(oldAccountGlobal)) {
oldExpDate = oldAccountGlobal.getAccountExpirationDate();
}
} catch (WorkflowException ex) {
LOG.warn("Error retrieving maintenance doc for doc #" + maintenanceDocument.getDocumentNumber() + ". This shouldn't happen.", ex);
}
}
if (ObjectUtils.isNull(oldExpDate) || !oldExpDate.equals(newExpDate)) {
// KFSUPGRADE-925 check parameter to see if back date is allowed
Collection<String> fundGroups = SpringContext.getBean(ParameterService.class).getParameterValuesAsString(Account.class, KFSConstants.ChartApcParms.EXPIRATION_DATE_BACKDATING_FUND_GROUPS);
if (fundGroups == null || (ObjectUtils.isNotNull(newAccountGlobal.getSubFundGroup()) && !fundGroups.contains(newAccountGlobal.getSubFundGroup().getFundGroupCode()))) {
if (!newExpDate.after(today) && !newExpDate.equals(today)) {
putFieldError("accountExpirationDate", KFSKeyConstants.ERROR_DOCUMENT_ACCMAINT_EXP_DATE_TODAY_LATER);
success &= false;
}
}
}
}
// a continuation account is required if the expiration date is completed.
success &= checkContinuationAccount(maintenanceDocument, newExpDate);
for (AccountGlobalDetail detail : newAccountGlobal.getAccountGlobalDetails()) {
success &= checkExpirationDate(maintenanceDocument, detail);
}
return success;
}
use of org.kuali.kfs.coa.businessobject.AccountGlobal in project cu-kfs by CU-CommunityApps.
the class AccountGlobalRule method checkExpirationDate.
/**
* This method checks to see if any expiration date field rules were violated in relation to the given detail record
*
* @param maintenanceDocument
* @param detail - the account detail we are investigating
* @return false on rules violation
*/
protected boolean checkExpirationDate(MaintenanceDocument maintenanceDocument, AccountGlobalDetail detail) {
boolean success = true;
Date newExpDate = newAccountGlobal.getAccountExpirationDate();
Date prevExpDate = null;
// get previous expiration date for possible check later
if (maintenanceDocument.getDocumentHeader().getWorkflowDocument().isApprovalRequested()) {
try {
MaintenanceDocument oldMaintDoc = (MaintenanceDocument) SpringContext.getBean(DocumentService.class).getByDocumentHeaderId(maintenanceDocument.getDocumentNumber());
AccountGlobal oldAccountGlobal = (AccountGlobal) oldMaintDoc.getDocumentBusinessObject();
if (ObjectUtils.isNotNull(oldAccountGlobal)) {
prevExpDate = oldAccountGlobal.getAccountExpirationDate();
}
} catch (WorkflowException ex) {
LOG.warn("Error retrieving maintenance doc for doc #" + maintenanceDocument.getDocumentNumber() + ". This shouldn't happen.", ex);
}
}
// load the object by keys
Account account = SpringContext.getBean(BusinessObjectService.class).findByPrimaryKey(Account.class, detail.getPrimaryKeys());
if (ObjectUtils.isNotNull(account)) {
Date oldExpDate = account.getAccountExpirationDate();
// is an edit doc
if (isUpdatedExpirationDateInvalid(account, newAccountGlobal)) {
// we're not interested unless the approver changed the value
if (ObjectUtils.isNull(prevExpDate) || !prevExpDate.equals(newExpDate)) {
if (newAccountGlobal.getClosed() != null && newAccountGlobal.getClosed()) {
/*If the Account is being closed and the date is before today's date, the EXP date can only be today*/
putFieldError(KFSPropertyConstants.ACCOUNT_EXPIRATION_DATE, KFSKeyConstants.ERROR_DOCUMENT_ACCMAINT_ACCT_CANNOT_BE_CLOSED_EXP_DATE_INVALID);
} else {
/*If the Account is not being closed and the date is before today's date, the EXP date can only be today or at a later date*/
putFieldError(KFSPropertyConstants.ACCOUNT_EXPIRATION_DATE, KFSKeyConstants.ERROR_DOCUMENT_ACCMAINT_EXP_DATE_TODAY_LATER);
}
success &= false;
}
}
// acct_expiration_dt can not be before acct_effect_dt
Date effectiveDate = null;
if (ObjectUtils.isNotNull(newAccountGlobal.getAccountEffectiveDate())) {
effectiveDate = newAccountGlobal.getAccountEffectiveDate();
} else {
effectiveDate = account.getAccountEffectiveDate();
}
if (ObjectUtils.isNotNull(effectiveDate) && ObjectUtils.isNotNull(newExpDate)) {
if (newExpDate.before(effectiveDate)) {
putFieldError(KFSPropertyConstants.ACCOUNT_EXPIRATION_DATE, CUKFSKeyConstants.ERROR_DOCUMENT_ACCT_GLB_MAINT_EXP_DATE_CANNOT_BE_BEFORE_EFFECTIVE_DATE, new String[] { detail.getAccountNumber() });
success &= false;
}
}
}
return success;
}
Aggregations