/* * 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.vnd.document.authorization; import java.util.Set; import org.kuali.kfs.sys.document.authorization.FinancialSystemMaintenanceDocumentPresentationControllerBase; import org.kuali.kfs.vnd.VendorPropertyConstants; import org.kuali.kfs.vnd.businessobject.VendorDetail; import org.kuali.rice.kns.document.MaintenanceDocument; import org.kuali.rice.krad.bo.BusinessObject; import org.kuali.rice.krad.util.ObjectUtils; public class VendorDocumentPresentationController extends FinancialSystemMaintenanceDocumentPresentationControllerBase { @Override public Set<String> getConditionallyReadOnlySectionIds(MaintenanceDocument document) { Set<String> conditionallyReadOnlySectionIds = super.getConditionallyReadOnlySectionIds(document); VendorDetail vendor = (VendorDetail)document.getNewMaintainableObject().getDataObject(); if (!vendor.isVendorParentIndicator()) { // make some sections read only, e.g. supplier diversity cause they're on the header conditionallyReadOnlySectionIds.add(VendorPropertyConstants.VENDOR_SUPPLIER_DIVERSITIES); } return conditionallyReadOnlySectionIds; } /** * @see org.kuali.rice.kns.document.authorization.MaintenanceDocumentPresentationControllerBase#getConditionallyReadOnlyPropertyNames(org.kuali.rice.krad.maintenance.MaintenanceDocument) */ @Override public Set<String> getConditionallyReadOnlyPropertyNames(MaintenanceDocument document) { Set<String> conditionallyReadonlyPropertyNames = super.getConditionallyReadOnlyPropertyNames(document); VendorDetail vendor = (VendorDetail)document.getNewMaintainableObject().getDataObject(); if (vendor.isVendorParentIndicator()) { // Vendor Parent Indicator should be readOnly if the vendor is a parent. conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_PARENT_INDICATOR); // For existing vendors, don't allow vendor type code to be changed if maint table indicates it shouldn't be changed if (ObjectUtils.isNotNull(vendor.getVendorHeaderGeneratedIdentifier()) && !vendor.getVendorHeader().getVendorType().isVendorTypeChangeAllowedIndicator()) { conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_TYPE_CODE); } } // If the vendor is not a parent, there are certain fields that should be readOnly else { // All the fields in VendorHeader should be readOnly if the vendor is not a parent. conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_TYPE_CODE); conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_TAX_NUMBER); conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_TAX_TYPE_CODE); conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_OWNERSHIP_CODE); conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_OWNERSHIP_CATEGORY_CODE); conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_FEDERAL_WITHOLDING_TAX_BEGINNING_DATE); conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_FEDERAL_WITHOLDING_TAX_END_DATE); conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_W9_RECEIVED_INDICATOR); conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_W8_BEN_RECEIVED_INDICATOR); conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_DEBARRED_INDICATOR); conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_FOREIGN_INDICATOR); conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_W8SIGNED_DATE); conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_W9SIGNED_DATE); conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_W8_TYPE_CODE); conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_GIIN_CODE); conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_DOB); conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_CHAPTER_3_STATUS_CODE); conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_CHAPTER_4_STATUS_CODE); conditionallyReadonlyPropertyNames.add(VendorPropertyConstants.VENDOR_CORP_CITIZEN_CODE); } return conditionallyReadonlyPropertyNames; } @Override public Set<String> getConditionallyHiddenPropertyNames(BusinessObject businessObject) { Set<String> conditionallyHiddenPropertyNames = super.getConditionallyHiddenPropertyNames(businessObject); MaintenanceDocument document = (MaintenanceDocument) businessObject; VendorDetail vendor = (VendorDetail)document.getNewMaintainableObject().getDataObject(); // If the vendor is a parent then the vendor parent name should be hidden. if (vendor.isVendorParentIndicator()) { conditionallyHiddenPropertyNames.add(VendorPropertyConstants.VENDOR_PARENT_NAME); } return conditionallyHiddenPropertyNames; } }