/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.module.tem.document.web.struts; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.kuali.kfs.fp.document.DisbursementVoucherDocument; import org.kuali.kfs.module.tem.TemConstants; import org.kuali.kfs.module.tem.businessobject.AccountingDocumentRelationship; import org.kuali.kfs.module.tem.businessobject.TemSourceAccountingLine; import org.kuali.kfs.module.tem.document.TravelDocumentBase; import org.kuali.kfs.module.tem.document.service.AccountingDocumentRelationshipService; import org.kuali.kfs.sys.businessobject.SourceAccountingLine; import org.kuali.kfs.sys.context.SpringContext; /** * This class... */ public class TravelDisbursementVoucherAction extends org.kuali.kfs.fp.document.web.struts.DisbursementVoucherAction { @Override public ActionForward docHandler(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ActionForward forward = super.docHandler(mapping, form, request, response); TravelDisbursementVoucherForm travelDisbursementVoucherForm = (TravelDisbursementVoucherForm) form; if (travelDisbursementVoucherForm.getTemDocID() != null) { TravelDocumentBase document = (TravelDocumentBase) getDocumentService().getByDocumentHeaderId(travelDisbursementVoucherForm.getTemDocID().toString()); DisbursementVoucherDocument disbursementVoucherDocument = (DisbursementVoucherDocument) travelDisbursementVoucherForm.getDocument(); document.populateVendorPayment(disbursementVoucherDocument); if (document.getTemProfile() == null) { document.setProfileId(document.getTemProfileId()); } if (document.getTemProfile() != null) { travelDisbursementVoucherForm.getNewSourceLine().setChartOfAccountsCode(document.getTemProfile().getDefaultChartCode()); travelDisbursementVoucherForm.getNewSourceLine().setAccountNumber(document.getTemProfile().getDefaultAccount()); } if (document.getSourceAccountingLines() != null) { for (TemSourceAccountingLine line : (List<TemSourceAccountingLine>)document.getSourceAccountingLines()){ if (!line.getCardType().equals(TemConstants.TRAVEL_TYPE_CTS)){ final SourceAccountingLine newLine = convertAccountingLine(line); newLine.setDocumentNumber(disbursementVoucherDocument.getDocumentNumber()); disbursementVoucherDocument.addSourceAccountingLine(newLine); } } } String relationDescription = document.getDocumentHeader().getWorkflowDocument().getDocumentTypeName() + " - DV"; SpringContext.getBean(AccountingDocumentRelationshipService.class).save(new AccountingDocumentRelationship(document.getDocumentNumber(), travelDisbursementVoucherForm.getDocument().getDocumentNumber(), relationDescription)); } return forward; } /** * Converts an accounting line from a TEM document into a SourceAccountingLine, like the ones that DV's use * @param travelAccountingLine the travel accounting line to copy * @return a SourceAccountingLine to be added to the DV document */ protected SourceAccountingLine convertAccountingLine(TemSourceAccountingLine travelAccountingLine) { SourceAccountingLine accountingLine = new SourceAccountingLine(); accountingLine.setPostingYear(travelAccountingLine.getPostingYear()); accountingLine.setChartOfAccountsCode(travelAccountingLine.getChartOfAccountsCode()); accountingLine.setAccountNumber(travelAccountingLine.getAccountNumber()); accountingLine.setSubAccountNumber(travelAccountingLine.getSubAccountNumber()); accountingLine.setFinancialObjectCode(travelAccountingLine.getFinancialObjectCode()); accountingLine.setFinancialSubObjectCode(travelAccountingLine.getFinancialSubObjectCode()); accountingLine.setProjectCode(travelAccountingLine.getProjectCode()); accountingLine.setBalanceTypeCode(travelAccountingLine.getBalanceTypeCode()); accountingLine.setAmount(travelAccountingLine.getAmount()); accountingLine.setReferenceOriginCode(travelAccountingLine.getReferenceOriginCode()); accountingLine.setReferenceNumber(travelAccountingLine.getReferenceNumber()); accountingLine.setReferenceTypeCode(travelAccountingLine.getReferenceTypeCode()); accountingLine.setOverrideCode(travelAccountingLine.getOverrideCode()); accountingLine.setAccountExpiredOverride(travelAccountingLine.getAccountExpiredOverride()); accountingLine.setNonFringeAccountOverride(travelAccountingLine.getNonFringeAccountOverride()); accountingLine.setObjectBudgetOverride(travelAccountingLine.isObjectBudgetOverride()); accountingLine.setOrganizationReferenceId(travelAccountingLine.getOrganizationReferenceId()); accountingLine.setFinancialDocumentLineDescription(travelAccountingLine.getFinancialDocumentLineDescription()); return accountingLine; } }