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.ar.businessobject; 017 018 import org.kuali.kfs.coa.businessobject.Account; 019 import org.kuali.kfs.coa.businessobject.ObjectCode; 020 import org.kuali.kfs.coa.service.ObjectCodeService; 021 import org.kuali.kfs.module.ar.ArConstants; 022 import org.kuali.kfs.module.ar.document.CustomerInvoiceWriteoffDocument; 023 import org.kuali.kfs.sys.context.SpringContext; 024 import org.kuali.kfs.sys.document.validation.impl.AccountingDocumentRuleBaseConstants.GENERAL_LEDGER_PENDING_ENTRY_CODE; 025 import org.kuali.rice.kns.service.ParameterService; 026 import org.kuali.rice.kns.util.KualiDecimal; 027 028 029 public class WriteoffTaxCustomerInvoiceDetail extends CustomerInvoiceDetail { 030 031 private CustomerInvoiceDetail postable; 032 private CustomerInvoiceWriteoffDocument poster; 033 private boolean isUsingTaxLiabilityAdjustmentIndNo; 034 035 public WriteoffTaxCustomerInvoiceDetail(CustomerInvoiceDetail postable, CustomerInvoiceWriteoffDocument poster){ 036 this.postable = postable; 037 this.poster = poster; 038 039 String writeoffTaxGenerationOption = SpringContext.getBean(ParameterService.class).getParameterValue(CustomerInvoiceWriteoffDocument.class, ArConstants.ALLOW_SALES_TAX_LIABILITY_ADJUSTMENT_IND); 040 isUsingTaxLiabilityAdjustmentIndNo = ArConstants.ALLOW_SALES_TAX_LIABILITY_ADJUSTMENT_IND_NO.equals( writeoffTaxGenerationOption ); 041 042 if( isUsingTaxLiabilityAdjustmentIndNo ){ 043 //if is using org account default, I already set the writeoff FAU on 044 //the document, so that is needed to do is refresh the FAU objects 045 this.poster.refreshReferenceObject("account"); 046 this.poster.refreshReferenceObject("chartOfAccounts"); 047 this.poster.refreshReferenceObject("subAccount"); 048 this.poster.refreshReferenceObject("financialObject"); 049 this.poster.refreshReferenceObject("financialSubObject"); 050 this.poster.refreshReferenceObject("project"); 051 } else { 052 this.postable.refreshNonUpdateableReferences(); 053 } 054 } 055 056 @Override 057 public Account getAccount() { 058 if ( isUsingTaxLiabilityAdjustmentIndNo ){ 059 return poster.getAccount(); 060 } else { 061 return postable.getAccount(); 062 } 063 } 064 065 @Override 066 public String getAccountNumber() { 067 if ( isUsingTaxLiabilityAdjustmentIndNo ){ 068 return poster.getAccountNumber(); 069 } else { 070 return postable.getAccountNumber(); 071 } 072 } 073 074 @Override 075 public KualiDecimal getAmount() { 076 return postable.getAmountOpen(); 077 } 078 079 @Override 080 public String getChartOfAccountsCode() { 081 if ( isUsingTaxLiabilityAdjustmentIndNo ){ 082 return poster.getChartOfAccountsCode(); 083 } else { 084 return postable.getChartOfAccountsCode(); 085 } 086 } 087 088 @Override 089 public String getDocumentNumber() { 090 return postable.getDocumentNumber(); 091 } 092 093 @Override 094 public String getFinancialDocumentLineDescription() { 095 return postable.getFinancialDocumentLineDescription(); 096 } 097 098 @Override 099 public String getFinancialObjectCode() { 100 if ( isUsingTaxLiabilityAdjustmentIndNo ){ 101 return poster.getFinancialObjectCode(); 102 } else { 103 return postable.getAccountsReceivableObjectCode(); 104 } 105 } 106 107 @Override 108 public ObjectCode getObjectCode() { 109 if ( isUsingTaxLiabilityAdjustmentIndNo ){ 110 return poster.getFinancialObject(); 111 } else { 112 return postable.getAccountsReceivableObject(); 113 } 114 } 115 116 @Override 117 public String getFinancialSubObjectCode() { 118 return GENERAL_LEDGER_PENDING_ENTRY_CODE.getBlankFinancialSubObjectCode(); 119 } 120 121 @Override 122 public String getOrganizationReferenceId() { 123 if ( isUsingTaxLiabilityAdjustmentIndNo ){ 124 return poster.getOrganizationReferenceIdentifier(); 125 } else { 126 return postable.getOrganizationReferenceId(); 127 } 128 } 129 130 @Override 131 public String getProjectCode() { 132 if ( isUsingTaxLiabilityAdjustmentIndNo ){ 133 return poster.getProjectCode(); 134 } else { 135 return postable.getProjectCode(); 136 } 137 } 138 139 @Override 140 public String getSubAccountNumber() { 141 if ( isUsingTaxLiabilityAdjustmentIndNo ){ 142 return poster.getSubAccountNumber(); 143 } else { 144 return postable.getSubAccountNumber(); 145 } 146 } 147 }