use of org.kuali.kfs.fp.document.CapitalAccountingLinesDocumentBase in project cu-kfs by CU-CommunityApps.
the class CapitalAssetInformationActionBase method checkCapitalAccountingLinesSelected.
/**
* sets the capital accounting lines select and amount distributed values to true if
* there are capital asset records for a given capital accounting line. The system control
* amount and system control remaining amounts are calculated here.
*
* @param calfb
*/
protected void checkCapitalAccountingLinesSelected(CapitalAccountingLinesFormBase calfb) {
CapitalAccountingLinesDocumentBase caldb = (CapitalAccountingLinesDocumentBase) calfb.getFinancialDocument();
List<CapitalAccountingLines> capitalAccountingLines = caldb.getCapitalAccountingLines();
KualiAccountingDocumentFormBase kadfb = calfb;
List<CapitalAssetInformation> currentCapitalAssetInformation = this.getCurrentCapitalAssetInformationObject(kadfb);
SpringContext.getBean(CapitalAssetManagementModuleService.class).filterNonCapitalAssets(currentCapitalAssetInformation);
calfb.setCreatedAssetsControlAmount(KualiDecimal.ZERO);
calfb.setSystemControlAmount(KualiDecimal.ZERO);
for (CapitalAccountingLines capitalAccountingLine : capitalAccountingLines) {
if (capitalAccountingLine.isSelectLine()) {
calfb.setSystemControlAmount(calfb.getSystemControlAmount().add(capitalAccountingLine.getAmount()));
}
if (currentCapitalAssetInformation.size() <= 0) {
capitalAccountingLine.setAccountLinePercent(null);
capitalAccountingLine.setAmountDistributed(false);
capitalAccountingLine.setSelectLine(false);
} else {
CapitalAssetInformation existingCapitalAsset = getCapitalAssetCreated(capitalAccountingLine, currentCapitalAssetInformation);
if (ObjectUtils.isNotNull(existingCapitalAsset)) {
// There is a CapitalAssetInformation matching the current accounting line.
capitalAccountingLine.setSelectLine(true);
} else {
capitalAccountingLine.setAccountLinePercent(null);
capitalAccountingLine.setSelectLine(false);
}
}
if (capitalAccountingLineAmountDistributed(capitalAccountingLine, currentCapitalAssetInformation)) {
// all the money from this accounting line is distributed among the assets
capitalAccountingLine.setAmountDistributed(true);
} else {
capitalAccountingLine.setAmountDistributed(false);
}
}
KualiDecimal capitalAssetsTotal = KualiDecimal.ZERO;
// get amount allocated so far....or the system control remainder amount field.
for (CapitalAssetInformation capitalAsset : currentCapitalAssetInformation) {
capitalAssetsTotal = capitalAssetsTotal.add(capitalAsset.getCapitalAssetLineAmount());
}
calfb.setCreatedAssetsControlAmount(calfb.getSystemControlAmount().subtract(capitalAssetsTotal));
}
use of org.kuali.kfs.fp.document.CapitalAccountingLinesDocumentBase in project cu-kfs by CU-CommunityApps.
the class CapitalAssetInformationActionBase method redistributeCostEquallyForModifiedAssets.
/**
* @param form
*/
protected void redistributeCostEquallyForModifiedAssets(ActionForm form) {
KualiDecimal remainingAmountToDistribute = KualiDecimal.ZERO;
CapitalAccountingLinesFormBase calfb = (CapitalAccountingLinesFormBase) form;
CapitalAccountingLinesDocumentBase caldb = (CapitalAccountingLinesDocumentBase) calfb.getFinancialDocument();
String distributionCode = calfb.getCapitalAccountingLine().getDistributionCode();
List<CapitalAccountingLines> capitalAccountingLines = caldb.getCapitalAccountingLines();
List<CapitalAccountingLines> selectedCapitalAccountingLines = new ArrayList<>();
for (CapitalAccountingLines capitalAccountingLine : capitalAccountingLines) {
if (capitalAccountingLine.isSelectLine() && !capitalAccountingLine.isAmountDistributed()) {
selectedCapitalAccountingLines.add(capitalAccountingLine);
remainingAmountToDistribute = remainingAmountToDistribute.add(capitalAccountingLine.getAmount());
}
}
KualiAccountingDocumentFormBase kualiAccountingDocumentFormBase = (KualiAccountingDocumentFormBase) form;
List<CapitalAssetInformation> capitalAssetInformation = this.getCurrentCapitalAssetInformationObject(kualiAccountingDocumentFormBase);
redistributeAmountsForAccountingsLineForModifyAssets(selectedCapitalAccountingLines, capitalAssetInformation, remainingAmountToDistribute);
// now process any capital assets that has distribution set to "by amount"
redistributeAmountsForAccountingsLineForModifyAssetsByAmounts(selectedCapitalAccountingLines, capitalAssetInformation, remainingAmountToDistribute);
}
use of org.kuali.kfs.fp.document.CapitalAccountingLinesDocumentBase in project cu-kfs by CU-CommunityApps.
the class CapitalAssetInformationActionBase method createCapitalAssetForGroupAccountingLines.
/**
* Populates capital asset information collection with capital accounting lines.
* Based on actionType, capitalassetactionindicator attribute is filled with 'C' for create
* and 'M' for modify assets, which will be used to differentiate to pull the records in
* create asset screen or modify asset screen.
*
* @param calfb
* @param actionType
* @param distributionAmountCode
*/
protected void createCapitalAssetForGroupAccountingLines(CapitalAccountingLinesFormBase calfb, String actionType, String distributionAmountCode) {
CapitalAccountingLinesDocumentBase caldb = (CapitalAccountingLinesDocumentBase) calfb.getFinancialDocument();
List<CapitalAccountingLines> capitalAccountingLines = caldb.getCapitalAccountingLines();
KualiAccountingDocumentFormBase kadfb = calfb;
List<CapitalAssetInformation> currentCapitalAssetInformation = this.getCurrentCapitalAssetInformationObject(kadfb);
String documentNumber = calfb.getDocument().getDocumentNumber();
calfb.setSystemControlAmount(KualiDecimal.ZERO);
List<CapitalAccountingLines> selectedCapitalAccountingLines = new ArrayList<>();
for (CapitalAccountingLines capitalAccountingLine : capitalAccountingLines) {
if (capitalAccountingLine.isSelectLine() && !capitalAccountingLine.isAmountDistributed()) {
capitalAccountingLine.setDistributionAmountCode(distributionAmountCode);
selectedCapitalAccountingLines.add(capitalAccountingLine);
}
}
CapitalAssetInformation existingCapitalAsset = capitalAssetCreated(selectedCapitalAccountingLines, currentCapitalAssetInformation);
if (ObjectUtils.isNotNull(existingCapitalAsset)) {
if (!accountingLinesAmountDistributed(selectedCapitalAccountingLines, existingCapitalAsset)) {
// accounting line amount not completely distributed yet so we need to create more assets
// add the capital information record to the list of asset information
createNewCapitalAsset(selectedCapitalAccountingLines, currentCapitalAssetInformation, documentNumber, actionType, getNextCapitalAssetLineNumber(kadfb));
}
} else {
// add the capital information record to the list of asset information
createNewCapitalAsset(selectedCapitalAccountingLines, currentCapitalAssetInformation, documentNumber, actionType, getNextCapitalAssetLineNumber(kadfb));
}
}
use of org.kuali.kfs.fp.document.CapitalAccountingLinesDocumentBase 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);
}
use of org.kuali.kfs.fp.document.CapitalAccountingLinesDocumentBase in project cu-kfs by CU-CommunityApps.
the class CapitalAssetInformationActionBase method redistributeCreateCapitalAssetAmount.
/**
* @param mapping
* @param form
* @param request
* @param response
* @return actionForward
* @throws Exception
*/
public ActionForward redistributeCreateCapitalAssetAmount(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
LOG.debug("redistributeCreateCapitalAssetAmount() - start");
KualiDecimal remainingAmountToDistribute = KualiDecimal.ZERO;
CapitalAccountingLinesFormBase calfb = (CapitalAccountingLinesFormBase) form;
CapitalAccountingLinesDocumentBase caldb = (CapitalAccountingLinesDocumentBase) calfb.getFinancialDocument();
List<CapitalAccountingLines> selectedCapitalAccountingLines = new ArrayList<CapitalAccountingLines>();
String distributionCode = calfb.getCapitalAccountingLine().getDistributionCode();
remainingAmountToDistribute = getRemainingAmounToDistribute(selectedCapitalAccountingLines, form);
KualiAccountingDocumentFormBase kualiAccountingDocumentFormBase = (KualiAccountingDocumentFormBase) form;
List<CapitalAssetInformation> capitalAssetInformation = this.getCurrentCapitalAssetInformationObject(kualiAccountingDocumentFormBase);
// run the process to redistribute the accounting line amount to the capital assets.
redistributeEqualAmountsForAccountingLineForCreateAssets(selectedCapitalAccountingLines, capitalAssetInformation, remainingAmountToDistribute);
redistributeIndividualAmountsForAccountingLinesForCreateAssets(selectedCapitalAccountingLines, capitalAssetInformation);
// adjust any variance from capital accounting lines to the distributed accounting lines amounts....
adjustCapitalAssetsAccountingLinesAmounts(selectedCapitalAccountingLines, capitalAssetInformation);
// now perform calculations of adjusting variance when asset amounts are odd
// /// adjustVarianceOnCapitalAssets(capitalAssetInformation);
checkCapitalAccountingLinesSelected(calfb);
return mapping.findForward(KFSConstants.MAPPING_BASIC);
}
Aggregations