1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.ole.fp.document.authorization;
17
18 import java.util.Map;
19 import java.util.Set;
20
21 import org.apache.commons.lang.StringUtils;
22 import org.kuali.ole.sys.OLEConstants;
23 import org.kuali.ole.sys.OLEKeyConstants;
24 import org.kuali.ole.sys.businessobject.AccountingLine;
25 import org.kuali.ole.sys.context.SpringContext;
26 import org.kuali.ole.sys.document.AccountingDocument;
27 import org.kuali.ole.sys.document.authorization.AccountingLineAuthorizerBase;
28 import org.kuali.ole.sys.document.validation.impl.AccountingDocumentRuleBaseConstants.APPLICATION_PARAMETER;
29 import org.kuali.ole.sys.document.web.AccountingLineRenderingContext;
30 import org.kuali.ole.sys.document.web.AccountingLineViewAction;
31 import org.kuali.ole.sys.service.impl.OleParameterConstants;
32 import org.kuali.rice.core.api.parameter.ParameterEvaluator;
33 import org.kuali.rice.core.api.parameter.ParameterEvaluatorService;
34 import org.kuali.rice.coreservice.framework.parameter.ParameterService;
35 import org.kuali.rice.kim.api.identity.Person;
36 import org.kuali.rice.kns.service.DataDictionaryService;
37
38
39
40
41 public class FinancialProcessingAccountingLineAuthorizer extends AccountingLineAuthorizerBase {
42 private final static String SALES_TAX_DOCUMENT_TYPES_PARAMETER_NAME = "SALES_TAX_APPLICABLE_DOCUMENT_TYPES";
43 private final static String SALES_TAX_LINE_ACCOUNT_OBJECT_CODES_PARAMETER_NAME = "SALES_TAX_APPLICABLE_ACCOUNTS_AND_OBJECT_CODES";
44
45
46
47
48 @Override
49 public Set<String> getUnviewableBlocks(AccountingDocument accountingDocument, AccountingLine accountingLine, boolean newLine, Person currentUser) {
50 Set unviewableBlocks = super.getUnviewableBlocks(accountingDocument, accountingLine, newLine, currentUser);
51 if (salesTaxUnviewable(accountingDocument, accountingLine)) {
52 unviewableBlocks.add(OLEConstants.AccountingLineViewStandardBlockNames.SALES_TAX_BLOCK);
53 }
54 return unviewableBlocks;
55 }
56
57
58
59
60
61
62
63 protected boolean salesTaxUnviewable(AccountingDocument document, AccountingLine line) {
64 ParameterService parameterService = SpringContext.getBean(ParameterService.class);
65 String docTypeCode = SpringContext.getBean(DataDictionaryService.class).getDocumentTypeNameByClass(document.getClass());
66 ParameterEvaluator docTypeEvaluator = SpringContext.getBean(ParameterEvaluatorService.class).getParameterEvaluator(OleParameterConstants.FINANCIAL_PROCESSING_DOCUMENT.class, FinancialProcessingAccountingLineAuthorizer.SALES_TAX_DOCUMENT_TYPES_PARAMETER_NAME, docTypeCode);
67 if (!docTypeEvaluator.evaluationSucceeds()) return true;
68 if (!StringUtils.isEmpty(line.getFinancialObjectCode()) && !StringUtils.isEmpty(line.getAccountNumber())) {
69 String compare = line.getAccountNumber() + ":" + line.getFinancialObjectCode();
70 ParameterEvaluator salesTaxApplicableAccountAndObjectEvaluator = SpringContext.getBean(ParameterEvaluatorService.class).getParameterEvaluator(OleParameterConstants.FINANCIAL_PROCESSING_DOCUMENT.class, APPLICATION_PARAMETER.SALES_TAX_APPLICABLE_ACCOUNTS_AND_OBJECT_CODES, compare);
71 if (!salesTaxApplicableAccountAndObjectEvaluator.evaluationSucceeds()) return true;
72 return false;
73 }
74 return true;
75 }
76
77
78
79
80
81 @Override
82 protected Map<String, AccountingLineViewAction> getActionMap(AccountingLineRenderingContext accountingLineRenderingContext, String accountingLinePropertyName, Integer accountingLineIndex, String groupTitle) {
83
84 Map<String, AccountingLineViewAction> actionMap = super.getActionMap(accountingLineRenderingContext, accountingLinePropertyName, accountingLineIndex, groupTitle);
85
86 if (accountingLineIndex != null) {
87 AccountingLineViewAction refreshAction = this.getRefreshAction(accountingLineRenderingContext.getAccountingLine(), accountingLinePropertyName, accountingLineIndex, groupTitle);
88 actionMap.put(OLEConstants.RETURN_METHOD_TO_CALL, refreshAction);
89 }
90
91 return actionMap;
92 }
93
94
95
96
97
98
99
100
101
102
103 protected AccountingLineViewAction getRefreshAction(AccountingLine accountingLine, String accountingLinePropertyName, Integer accountingLineIndex, String groupTitle) {
104 String actionMethod = this.getRefreshLineMethod(accountingLine, accountingLinePropertyName, accountingLineIndex);
105 String actionLabel = getActionLabel(OLEKeyConstants.AccountingLineViewRendering.ACCOUNTING_LINE_REFRESH_ACTION_LABEL, groupTitle, accountingLineIndex + 1);
106
107 String actionImageName = getRiceImagePath() + "tinybutton-refresh.gif";
108
109 return new AccountingLineViewAction(actionMethod, actionLabel, actionImageName);
110 }
111
112
113
114
115
116
117
118
119
120 protected String getRefreshLineMethod(AccountingLine accountingLine, String accountingLineProperty, Integer accountingLineIndex) {
121 final String infix = getActionInfixForExtantAccountingLine(accountingLine, accountingLineProperty);
122 return "refresh.line" + accountingLineIndex + ".anchoraccounting" + infix + "Anchor";
123 }
124 }
125