001    /*
002     * Copyright 2011 The Kuali Foundation.
003     * 
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     * 
008     * http://www.opensource.org/licenses/ecl2.php
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.kfs.module.endow.document.web.struts;
017    
018    import static org.kuali.kfs.module.endow.EndowConstants.EXISTING_SOURCE_TRAN_LINE_PROPERTY_NAME;
019    
020    import java.util.List;
021    
022    import javax.servlet.http.HttpServletRequest;
023    import javax.servlet.http.HttpServletResponse;
024    
025    import org.apache.struts.action.ActionForm;
026    import org.apache.struts.action.ActionForward;
027    import org.apache.struts.action.ActionMapping;
028    import org.kuali.kfs.module.endow.businessobject.EndowmentSourceTransactionLine;
029    import org.kuali.kfs.module.endow.businessobject.EndowmentTargetTransactionLine;
030    import org.kuali.kfs.module.endow.businessobject.EndowmentTransactionLine;
031    import org.kuali.kfs.module.endow.document.EndowmentTransactionLinesDocument;
032    import org.kuali.kfs.module.endow.document.SecurityTransferDocument;
033    import org.kuali.kfs.module.endow.document.service.UpdateSecurityTransferTargetTaxLotsService;
034    import org.kuali.kfs.module.endow.document.service.UpdateTaxLotsBasedOnAccMethodAndTransSubtypeService;
035    import org.kuali.kfs.module.endow.document.validation.event.RefreshTransactionLineEvent;
036    import org.kuali.kfs.sys.businessobject.FinancialSystemDocumentHeader;
037    import org.kuali.kfs.sys.context.SpringContext;
038    import org.kuali.kfs.sys.document.AmountTotaling;
039    import org.kuali.rice.kns.service.KualiRuleService;
040    
041    public class SecurityTransferDocumentAction extends EndowmentTaxLotLinesDocumentActionBase {
042    
043    
044        /**
045         * @see org.kuali.kfs.module.endow.document.web.struts.EndowmentTaxLotLinesDocumentActionBase#updateTransactionLineTaxLots(boolean, boolean, org.kuali.kfs.module.endow.document.EndowmentTransactionLinesDocument, org.kuali.kfs.module.endow.businessobject.EndowmentTransactionLine)
046         */
047        @Override
048        protected void updateTransactionLineTaxLots(boolean isUpdate, boolean isSource, EndowmentTransactionLinesDocument etlDocument, EndowmentTransactionLine transLine) {
049            SecurityTransferDocument securityTransferDocument = (SecurityTransferDocument) etlDocument;
050    
051            if (transLine instanceof EndowmentSourceTransactionLine) {
052                UpdateTaxLotsBasedOnAccMethodAndTransSubtypeService taxLotsService = SpringContext.getBean(UpdateTaxLotsBasedOnAccMethodAndTransSubtypeService.class);
053                taxLotsService.updateTransactionLineTaxLots(isUpdate, securityTransferDocument, transLine);
054            }
055    
056            if (transLine instanceof EndowmentTargetTransactionLine) {
057                UpdateSecurityTransferTargetTaxLotsService taxLotsService = SpringContext.getBean(UpdateSecurityTransferTargetTaxLotsService.class);
058                taxLotsService.updateTransactionLineTaxLots(securityTransferDocument, transLine);
059            }
060    
061        }
062    
063        /**
064         * @see org.kuali.kfs.module.endow.document.web.struts.EndowmentTransactionLinesDocumentActionBase#deleteSourceTransactionLine(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
065         */
066        @Override
067        public ActionForward deleteSourceTransactionLine(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
068    
069            ActionForward actionForward = super.deleteSourceTransactionLine(mapping, form, request, response);
070            EndowmentTransactionLinesDocumentFormBase etlForm = (EndowmentTransactionLinesDocumentFormBase) form;
071    
072            // delete target transaction lines as well
073            List<EndowmentTransactionLine> targetTransactionLines = etlForm.getEndowmentTransactionLinesDocumentBase().getTargetTransactionLines();
074            if (targetTransactionLines != null && targetTransactionLines.size() > 0) {
075                for (int i = 0; i < targetTransactionLines.size(); i++) {
076                    deleteTransactionLine(false, etlForm, i);
077                }
078            }
079    
080            return actionForward;
081        }
082    
083    
084        /**
085         * @see org.kuali.kfs.module.endow.document.web.struts.EndowmentTaxLotLinesDocumentActionBase#deleteSourceTaxLotLine(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
086         */
087        @Override
088        public ActionForward deleteSourceTaxLotLine(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
089    
090            ActionForward actionForward = super.deleteSourceTaxLotLine(mapping, form, request, response);
091            EndowmentTransactionLinesDocumentFormBase documentForm = (EndowmentTransactionLinesDocumentFormBase) form;
092            EndowmentTransactionLinesDocument endowmentDocument = (EndowmentTransactionLinesDocument) documentForm.getDocument();
093    
094            boolean rulePassed = true;
095    
096            // if the document has target transaction lines update the related tax lots
097            if (endowmentDocument.getTargetTransactionLines() != null && endowmentDocument.getTargetTransactionLines().size() > 0) {
098                for (int i = 0; i < endowmentDocument.getTargetTransactionLines().size(); i++) {
099    
100                    EndowmentTransactionLine transLine = endowmentDocument.getTargetTransactionLines().get(i);
101    
102                    // check any business rules
103                    rulePassed &= SpringContext.getBean(KualiRuleService.class).applyRules(new RefreshTransactionLineEvent(EXISTING_SOURCE_TRAN_LINE_PROPERTY_NAME, endowmentDocument, transLine, i));
104    
105                    if (rulePassed) {
106                        updateTransactionLineTaxLots(true, true, endowmentDocument, transLine);
107                    }
108    
109                    if (endowmentDocument instanceof AmountTotaling)
110                        ((FinancialSystemDocumentHeader) documentForm.getDocument().getDocumentHeader()).setFinancialDocumentTotalAmount(((AmountTotaling) endowmentDocument).getTotalDollarAmount());
111                }
112    
113            }
114    
115            return actionForward;
116        }
117    
118    
119        /**
120         * @see org.kuali.kfs.module.endow.document.web.struts.EndowmentTaxLotLinesDocumentActionBase#getRefreshTaxLotsOnSaveOrSubmit()
121         */
122        @Override
123        protected boolean getRefreshTaxLotsOnSaveOrSubmit() {
124            return false;
125        }
126    
127    }