1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.kfs.module.purap.document.validation.impl;
20
21 import org.kuali.kfs.module.purap.PurapConstants;
22 import org.kuali.kfs.module.purap.PurapParameterConstants;
23 import org.kuali.kfs.module.purap.document.AccountsPayableDocument;
24 import org.kuali.kfs.module.purap.document.PurchasingAccountsPayableDocument;
25 import org.kuali.kfs.module.purap.document.VendorCreditMemoDocument;
26 import org.kuali.kfs.sys.context.SpringContext;
27 import org.kuali.kfs.sys.service.impl.KfsParameterConstants;
28 import org.kuali.rice.core.web.format.CurrencyFormatter;
29 import org.kuali.rice.coreservice.framework.parameter.ParameterService;
30 import org.kuali.rice.krad.document.Document;
31
32
33
34
35 public class CreditMemoDocumentPreRules extends AccountsPayableDocumentPreRulesBase {
36
37
38
39
40 public CreditMemoDocumentPreRules() {
41 super();
42 }
43
44
45
46
47 @Override
48 public boolean doPrompts(Document document) {
49 return super.doPrompts(document);
50 }
51
52
53
54
55 @Override
56 public String getDocumentName() {
57 return "Credit Memo";
58 }
59
60
61
62
63 @Override
64 public String createInvoiceNoMatchQuestionText(AccountsPayableDocument accountsPayableDocument){
65
66 String questionText = super.createInvoiceNoMatchQuestionText(accountsPayableDocument);
67
68 CurrencyFormatter cf = new CurrencyFormatter();
69 VendorCreditMemoDocument cm = (VendorCreditMemoDocument) accountsPayableDocument;
70 StringBuffer questionTextBuffer = new StringBuffer("");
71 questionTextBuffer.append(questionText);
72
73 questionTextBuffer.append("[br][br][b]Summary Detail Below[/b][br][br][table questionTable]");
74 questionTextBuffer.append("[tr][td leftTd]Credit Memo Amount entered on start screen:[/td][td rightTd]").append((String)cf.format(cm.getInitialAmount())).append("[/td][/tr]");
75 questionTextBuffer.append("[tr][td leftTd]Total credit processed prior to restocking fee:[/td][td rightTd]").append((String)cf.format(cm.getLineItemTotal())).append("[/td][/tr]");
76
77
78 boolean salesTaxInd = SpringContext.getBean(ParameterService.class).getParameterValueAsBoolean(KfsParameterConstants.PURCHASING_DOCUMENT.class, PurapParameterConstants.ENABLE_SALES_TAX_IND);
79 if(salesTaxInd){
80 questionTextBuffer.append("[tr][td leftTd]Grand Total Prior to Tax:[/td][td rightTd]").append((String)cf.format(cm.getGrandPreTaxTotal())).append("[/td][/tr]");
81 questionTextBuffer.append("[tr][td leftTd]Grand Total Tax:[/td][td rightTd]").append((String)cf.format(cm.getGrandTaxAmount())).append("[/td][/tr]");
82 }
83
84 questionTextBuffer.append("[tr][td leftTd]Grand Total:[/td][td rightTd]").append((String)cf.format(cm.getGrandTotal())).append("[/td][/tr][/table]");
85
86 return questionTextBuffer.toString();
87
88 }
89
90 @Override
91 protected boolean checkCAMSWarningStatus(PurchasingAccountsPayableDocument purapDocument) {
92 return PurapConstants.CAMSWarningStatuses.CREDIT_MEMO_STATUS_WARNING_NO_CAMS_DATA.contains(purapDocument.getApplicationDocumentStatus());
93 }
94
95
96
97
98
99
100
101 @Override
102 protected boolean validateInvoiceTotalsAreMismatched(AccountsPayableDocument accountsPayableDocument) {
103 boolean mismatched = false;
104 String[] excludeArray = { PurapConstants.ItemTypeCodes.ITEM_TYPE_PMT_TERMS_DISCOUNT_CODE };
105
106
107
108 if (accountsPayableDocument.isUseTaxIndicator()) {
109 if (accountsPayableDocument.getTotalPreTaxDollarAmountAllItems(excludeArray).compareTo(accountsPayableDocument.getInitialAmount()) != 0 && !accountsPayableDocument.isUnmatchedOverride()) {
110 mismatched = true;
111 }
112 }
113
114
115 else {
116 if (accountsPayableDocument.getTotalDollarAmountAllItems(excludeArray).compareTo(accountsPayableDocument.getInitialAmount()) != 0 && !accountsPayableDocument.isUnmatchedOverride()) {
117 mismatched = true;
118 }
119 }
120 return mismatched;
121 }
122 }