1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.kfs.module.ec.document;
20
21 import static org.kuali.kfs.sys.fixture.UserNameFixture.khuntley;
22
23 import java.sql.Connection;
24 import java.sql.ResultSet;
25 import java.sql.SQLException;
26 import java.sql.Statement;
27 import java.util.ArrayList;
28 import java.util.HashSet;
29 import java.util.List;
30 import java.util.Set;
31
32 import javax.sql.DataSource;
33
34 import org.kuali.kfs.module.ec.businessobject.EffortCertificationDetail;
35 import org.kuali.kfs.sys.ConfigureContext;
36 import org.kuali.kfs.sys.DocumentTestUtils;
37 import org.kuali.kfs.sys.context.KualiTestBase;
38 import org.kuali.kfs.sys.context.SpringContext;
39 import org.kuali.kfs.sys.service.UniversityDateService;
40 import org.kuali.rice.core.api.util.type.KualiDecimal;
41 import org.kuali.rice.kew.api.WorkflowDocument;
42 import org.kuali.rice.kim.api.identity.Person;
43 import org.kuali.rice.kim.api.identity.PersonService;
44 import org.kuali.rice.kns.service.DataDictionaryService;
45 import org.kuali.rice.krad.bo.DocumentHeader;
46 import org.kuali.rice.krad.bo.Note;
47 import org.kuali.rice.krad.document.Document;
48 import org.kuali.rice.krad.service.DocumentService;
49 import org.kuali.rice.krad.service.NoteService;
50 import org.kuali.rice.krad.service.XmlObjectSerializerService;
51 import org.kuali.rice.krad.workflow.DocumentInitiator;
52 import org.kuali.rice.krad.workflow.KualiDocumentXmlMaterializer;
53 import org.kuali.rice.krad.workflow.KualiTransactionalDocumentInformation;
54
55
56 @ConfigureContext(session = khuntley)
57 public class EffortCertificationRoutingTest extends KualiTestBase {
58
59 private Set<String> databaseNodes;
60
61 private Document getDocumentParameterFixture() throws Exception {
62 return DocumentTestUtils.createDocument(SpringContext.getBean(DocumentService.class), EffortCertificationDocument.class);
63 }
64
65 @Override
66 public void setUp() throws Exception {
67 super.setUp();
68 String documentType = SpringContext.getBean(DataDictionaryService.class).getDocumentTypeNameByClass(EffortCertificationDocument.class);
69
70 DataSource mySource = SpringContext.getBean(DataSource.class);
71 Connection dbCon = null;
72 ResultSet dbAnswer = null;
73 databaseNodes = new HashSet<String>();
74
75 try {
76 dbCon = mySource.getConnection();
77 Statement dbAsk = dbCon.createStatement();
78
79 String query = "select nd.nm ";
80 query = query + "from KREW_RTE_NODE_T nd, KREW_DOC_TYP_T doc ";
81 query = query + "where nd.rte_mthd_nm is not null ";
82 query = query + "and doc.doc_typ_id = nd.doc_typ_id ";
83 query = query + "and doc.doc_typ_nm = '" + documentType + "' ";
84 query = query + "and doc.cur_ind = 1 ";
85 query = query + "and exists (select * from KREW_RTE_NODE_LNK_T ";
86 query = query + "where to_rte_node_id=nd.rte_node_id) ";
87 dbAnswer = dbAsk.executeQuery(query);
88 }
89 catch (Exception e) {
90 e.printStackTrace();
91 }
92 finally {
93 try {
94 dbCon.close();
95 }
96 catch (SQLException sqle2) {
97 sqle2.printStackTrace();
98 }
99 }
100 while (dbAnswer.next()) {
101 databaseNodes.add(dbAnswer.getString(1));
102 }
103 }
104
105 private EffortCertificationDocument buildDocument() throws Exception {
106
107 EffortCertificationDocument document = (EffortCertificationDocument) getDocumentParameterFixture();
108
109 document.setEmplid("0000000060");
110 document.setEffortCertificationReportNumber("A03");
111 document.setUniversityFiscalYear(2009);
112 document.setEffortCertificationDocumentCode(true);
113 List<EffortCertificationDetail> effortCertificationDetailLines = new ArrayList<EffortCertificationDetail>();
114 EffortCertificationDetail testDetailLine = new EffortCertificationDetail();
115 testDetailLine.setAccountNumber("4831401");
116 testDetailLine.setChartOfAccountsCode("BL");
117
118 testDetailLine.setEffortCertificationCalculatedOverallPercent(40);
119 testDetailLine.setEffortCertificationUpdatedOverallPercent(50);
120 testDetailLine.setPositionNumber("1");
121 testDetailLine.setFinancialObjectCode("4000");
122 testDetailLine.setSourceChartOfAccountsCode("BL");
123 testDetailLine.setSourceAccountNumber("4831401");
124 Integer testDate = SpringContext.getBean(UniversityDateService.class).getCurrentFiscalYear();
125 testDetailLine.setUniversityFiscalYear(testDate);
126 testDetailLine.setEffortCertificationOriginalPayrollAmount(new KualiDecimal(100.00));
127
128
129 Note testNote = new Note();
130 testNote.setNoteText("This is a nice note.");
131 testNote.setAuthorUniversalIdentifier(document.getDocumentHeader().getWorkflowDocument().getInitiatorPrincipalId());
132 SpringContext.getBean(NoteService.class).createNote(testNote, document.getDocumentHeader(),document.getDocumentHeader().getWorkflowDocument().getInitiatorPrincipalId() );
133 effortCertificationDetailLines.add(testDetailLine);
134 testDetailLine = new EffortCertificationDetail();
135 testDetailLine.setAccountNumber("4631483");
136 testDetailLine.setChartOfAccountsCode("BL");
137
138 testDetailLine.setEffortCertificationCalculatedOverallPercent(60);
139 testDetailLine.setEffortCertificationUpdatedOverallPercent(50);
140 testDetailLine.setPositionNumber("1");
141 testDetailLine.setFinancialObjectCode("4000");
142 testDetailLine.setSourceChartOfAccountsCode("BL");
143 testDetailLine.setSourceAccountNumber("4631483");
144 testDetailLine.setUniversityFiscalYear(testDate);
145 testDetailLine.setEffortCertificationOriginalPayrollAmount(new KualiDecimal(100.00));
146 effortCertificationDetailLines.add(testDetailLine);
147 document.setEffortCertificationDetailLines(effortCertificationDetailLines);
148
149 document.getFinancialSystemDocumentHeader().setFinancialDocumentTotalAmount(new KualiDecimal(200.00));
150 SpringContext.getBean(DocumentService.class).saveDocument(document);
151 return (EffortCertificationDocument) SpringContext.getBean(DocumentService.class).getByDocumentHeaderId(document.getDocumentNumber());
152 }
153
154 public String serializeDocumentToXml(Document document) {
155 DocumentHeader documentHeader = document.getDocumentHeader();
156 KualiTransactionalDocumentInformation transInfo = new KualiTransactionalDocumentInformation();
157 DocumentInitiator initiatior = new DocumentInitiator();
158
159 try {
160 String initiatorPrincipalId = documentHeader.getWorkflowDocument().getInitiatorPrincipalId();
161 Person initiatorUser = SpringContext.getBean(PersonService.class).getPersonByPrincipalName(initiatorPrincipalId);
162 initiatior.setPerson(initiatorUser);
163 }
164 catch (Exception e) {
165 throw new RuntimeException(e);
166 }
167
168 transInfo.setDocumentInitiator(initiatior);
169 KualiDocumentXmlMaterializer xmlWrapper = new KualiDocumentXmlMaterializer();
170 xmlWrapper.setDocument(document);
171 xmlWrapper.setKualiTransactionalDocumentInformation(transInfo);
172 String xml = SpringContext.getBean(XmlObjectSerializerService.class).toXml(xmlWrapper);
173 return xml;
174 }
175
176
177 public final void testRouting() throws Exception {
178 EffortCertificationDocument document = buildDocument();
179 System.out.println("EffortCertificationDocument doc# " + document.getDocumentNumber());
180 WorkflowDocument testDoc = document.getDocumentHeader().getWorkflowDocument();
181 testDoc.blanketApprove("Approved by unit test");
182 assertTrue("Document didn't route!", testDoc.isProcessed() || testDoc.isFinal());
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204 System.out.println("Document Routed");
205 }
206 }