1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.kfs.module.ar.businessobject;
20
21 import org.kuali.kfs.coa.businessobject.Account;
22 import org.kuali.kfs.coa.businessobject.ObjectCode;
23 import org.kuali.kfs.module.ar.ArConstants;
24 import org.kuali.kfs.module.ar.document.CustomerInvoiceWriteoffDocument;
25 import org.kuali.kfs.sys.context.SpringContext;
26 import org.kuali.kfs.sys.document.validation.impl.AccountingDocumentRuleBaseConstants.GENERAL_LEDGER_PENDING_ENTRY_CODE;
27 import org.kuali.rice.core.api.util.type.KualiDecimal;
28 import org.kuali.rice.coreservice.framework.parameter.ParameterService;
29
30
31 public class WriteoffTaxCustomerInvoiceDetail extends CustomerInvoiceDetail {
32
33 private CustomerInvoiceDetail postable;
34 private CustomerInvoiceWriteoffDocument poster;
35 private boolean isUsingTaxLiabilityAdjustmentIndNo;
36
37 public WriteoffTaxCustomerInvoiceDetail(CustomerInvoiceDetail postable, CustomerInvoiceWriteoffDocument poster){
38 this.postable = postable;
39 this.poster = poster;
40
41 String writeoffTaxGenerationOption = SpringContext.getBean(ParameterService.class).getParameterValueAsString(CustomerInvoiceWriteoffDocument.class, ArConstants.ALLOW_SALES_TAX_LIABILITY_ADJUSTMENT_IND);
42 isUsingTaxLiabilityAdjustmentIndNo = ArConstants.ALLOW_SALES_TAX_LIABILITY_ADJUSTMENT_IND_NO.equals( writeoffTaxGenerationOption );
43
44 if( isUsingTaxLiabilityAdjustmentIndNo ){
45
46
47 this.poster.refreshReferenceObject("account");
48 this.poster.refreshReferenceObject("chartOfAccounts");
49 this.poster.refreshReferenceObject("subAccount");
50 this.poster.refreshReferenceObject("financialObject");
51 this.poster.refreshReferenceObject("financialSubObject");
52 this.poster.refreshReferenceObject("project");
53 } else {
54 this.postable.refreshNonUpdateableReferences();
55 }
56 }
57
58 @Override
59 public Account getAccount() {
60 if ( isUsingTaxLiabilityAdjustmentIndNo ){
61 return poster.getAccount();
62 } else {
63 return postable.getAccount();
64 }
65 }
66
67 @Override
68 public String getAccountNumber() {
69 if ( isUsingTaxLiabilityAdjustmentIndNo ){
70 return poster.getAccountNumber();
71 } else {
72 return postable.getAccountNumber();
73 }
74 }
75
76 @Override
77 public KualiDecimal getAmount() {
78 return postable.getAmountOpen();
79 }
80
81 @Override
82 public String getChartOfAccountsCode() {
83 if ( isUsingTaxLiabilityAdjustmentIndNo ){
84 return poster.getChartOfAccountsCode();
85 } else {
86 return postable.getChartOfAccountsCode();
87 }
88 }
89
90 @Override
91 public String getDocumentNumber() {
92 return postable.getDocumentNumber();
93 }
94
95 @Override
96 public String getFinancialDocumentLineDescription() {
97 return postable.getFinancialDocumentLineDescription();
98 }
99
100 @Override
101 public String getFinancialObjectCode() {
102 if ( isUsingTaxLiabilityAdjustmentIndNo ){
103 return poster.getFinancialObjectCode();
104 } else {
105 return postable.getAccountsReceivableObjectCode();
106 }
107 }
108
109 @Override
110 public ObjectCode getObjectCode() {
111 if ( isUsingTaxLiabilityAdjustmentIndNo ){
112 return poster.getFinancialObject();
113 } else {
114 return postable.getAccountsReceivableObject();
115 }
116 }
117
118 @Override
119 public String getFinancialSubObjectCode() {
120 return GENERAL_LEDGER_PENDING_ENTRY_CODE.getBlankFinancialSubObjectCode();
121 }
122
123 @Override
124 public String getOrganizationReferenceId() {
125 if ( isUsingTaxLiabilityAdjustmentIndNo ){
126 return poster.getOrganizationReferenceIdentifier();
127 } else {
128 return postable.getOrganizationReferenceId();
129 }
130 }
131
132 @Override
133 public String getProjectCode() {
134 if ( isUsingTaxLiabilityAdjustmentIndNo ){
135 return poster.getProjectCode();
136 } else {
137 return postable.getProjectCode();
138 }
139 }
140
141 @Override
142 public String getSubAccountNumber() {
143 if ( isUsingTaxLiabilityAdjustmentIndNo ){
144 return poster.getSubAccountNumber();
145 } else {
146 return postable.getSubAccountNumber();
147 }
148 }
149 }