Search in sources :

Example 1 with Asset

use of org.kuali.kfs.integration.cam.businessobject.Asset in project cu-kfs by CU-CommunityApps.

the class CapitalAssetInformationActionBase method refresh.

/**
 * Multi-value asset lookup is implemented through the integration package by module's service
 * to gather the results. The results are processed for any capital accounting lines where
 * the line is marked for selection.  After the capital assets are populated with the
 * selected asset numbers, the system control amount is redistributed equally among the assets
 * when the distribution method is "distribute cost equally".
 *
 * @see org.kuali.rice.kns.web.struts.action.KualiAction#refresh(org.apache.struts.action.ActionMapping,
 * org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
 */
@Override
public ActionForward refresh(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
    super.refresh(mapping, form, request, response);
    // process the multiple value lookup data
    CapitalAssetInformationFormBase capitalAssetInformationFormBase = (CapitalAssetInformationFormBase) form;
    Collection<PersistableBusinessObject> rawValues = null;
    Map<String, Set<String>> segmentedSelection = new HashMap<>();
    // If multiple asset lookup was used to select the assets, then....
    if (StringUtils.equals(KFSConstants.MULTIPLE_VALUE, capitalAssetInformationFormBase.getRefreshCaller())) {
        String lookupResultsSequenceNumber = capitalAssetInformationFormBase.getLookupResultsSequenceNumber();
        if (StringUtils.isNotBlank(lookupResultsSequenceNumber)) {
            // actually returning from a multiple value lookup
            Set<String> selectedIds = SpringContext.getBean(SegmentedLookupResultsService.class).retrieveSetOfSelectedObjectIds(lookupResultsSequenceNumber, GlobalVariables.getUserSession().getPerson().getPrincipalId());
            for (String selectedId : selectedIds) {
                String selectedObjId = StringUtils.substringBefore(selectedId, ".");
                if (!segmentedSelection.containsKey(selectedObjId)) {
                    segmentedSelection.put(selectedObjId, new HashSet<>());
                }
            }
            // Retrieving selected data from table.
            if (LOG.isDebugEnabled()) {
                LOG.debug("Asking segmentation service for object ids " + segmentedSelection.keySet());
            }
            rawValues = SpringContext.getBean(SegmentedLookupResultsService.class).retrieveSelectedResultBOs(lookupResultsSequenceNumber, segmentedSelection.keySet(), Asset.class, GlobalVariables.getUserSession().getPerson().getPrincipalId());
        }
        if (rawValues == null || rawValues.size() == 0) {
            // redistribute capital asset amount to its group accounting lines on refresh
            DistributeCapitalAssetAmountToGroupAccountingLines((KualiAccountingDocumentFormBase) form);
            return mapping.findForward(KFSConstants.MAPPING_BASIC);
        }
        KualiAccountingDocumentFormBase kualiAccountingDocumentFormBase = (KualiAccountingDocumentFormBase) form;
        CapitalAccountingLinesFormBase calfb = (CapitalAccountingLinesFormBase) form;
        CapitalAccountingLinesDocumentBase caldb = (CapitalAccountingLinesDocumentBase) calfb.getFinancialDocument();
        List<CapitalAccountingLines> capitalAccountingLines = caldb.getCapitalAccountingLines();
        List<CapitalAssetInformation> capitalAssetInformation = this.getCurrentCapitalAssetInformationObject(kualiAccountingDocumentFormBase);
        List<CapitalAccountingLines> selectedCapitalAccountingLines = new ArrayList<>();
        for (CapitalAccountingLines capitalAccountingLine : capitalAccountingLines) {
            if (capitalAccountingLine.isSelectLine() && !capitalAccountingLine.isAmountDistributed()) {
                selectedCapitalAccountingLines.add(capitalAccountingLine);
            }
        }
        // where capital accounting line is "selected" and its amount is greater than already allocated.
        if (rawValues != null) {
            for (PersistableBusinessObject bo : rawValues) {
                Asset asset = (Asset) bo;
                boolean addIt = modifyAssetAlreadyExists(capitalAssetInformation, asset.getCapitalAssetNumber());
                // If it doesn't already exist in the list add it.
                if (addIt) {
                    createNewModifyCapitalAsset(selectedCapitalAccountingLines, capitalAssetInformation, calfb.getDocument().getDocumentNumber(), KFSConstants.CapitalAssets.CAPITAL_ASSET_MODIFY_ACTION_INDICATOR, getNextCapitalAssetLineNumber(kualiAccountingDocumentFormBase), asset.getCapitalAssetNumber());
                }
            }
            checkCapitalAccountingLinesSelected(calfb);
            // remove the blank capital asset modify records now...
            removeEmptyCapitalAssetModify(capitalAssetInformation);
            // now redistribute the amount for all assets if needed....
            redistributeModifyCapitalAssetAmount(mapping, form, request, response);
        }
    }
    // redistribute capital asset amount to its group accounting lines on refresh
    DistributeCapitalAssetAmountToGroupAccountingLines((KualiAccountingDocumentFormBase) form);
    return mapping.findForward(KFSConstants.MAPPING_BASIC);
}
Also used : CapitalAssetInformation(org.kuali.kfs.fp.businessobject.CapitalAssetInformation) HashSet(java.util.HashSet) Set(java.util.Set) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) SegmentedLookupResultsService(org.kuali.kfs.sys.service.SegmentedLookupResultsService) CapitalAccountingLinesDocumentBase(org.kuali.kfs.fp.document.CapitalAccountingLinesDocumentBase) PersistableBusinessObject(org.kuali.kfs.krad.bo.PersistableBusinessObject) CapitalAccountingLines(org.kuali.kfs.fp.businessobject.CapitalAccountingLines) Asset(org.kuali.kfs.integration.cam.businessobject.Asset) KualiAccountingDocumentFormBase(org.kuali.kfs.sys.web.struts.KualiAccountingDocumentFormBase)

Aggregations

ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 Set (java.util.Set)1 CapitalAccountingLines (org.kuali.kfs.fp.businessobject.CapitalAccountingLines)1 CapitalAssetInformation (org.kuali.kfs.fp.businessobject.CapitalAssetInformation)1 CapitalAccountingLinesDocumentBase (org.kuali.kfs.fp.document.CapitalAccountingLinesDocumentBase)1 Asset (org.kuali.kfs.integration.cam.businessobject.Asset)1 PersistableBusinessObject (org.kuali.kfs.krad.bo.PersistableBusinessObject)1 SegmentedLookupResultsService (org.kuali.kfs.sys.service.SegmentedLookupResultsService)1 KualiAccountingDocumentFormBase (org.kuali.kfs.sys.web.struts.KualiAccountingDocumentFormBase)1