001: /*
002: * Copyright 2006-2007 The Kuali Foundation.
003: *
004: * Licensed under the Educational Community License, Version 1.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/ecl1.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:
017: package org.kuali.module.financial.bo;
018:
019: import java.util.LinkedHashMap;
020:
021: import org.kuali.core.bo.PersistableBusinessObjectBase;
022: import org.kuali.core.util.KualiDecimal;
023: import org.kuali.kfs.KFSConstants;
024: import org.kuali.kfs.KFSPropertyConstants;
025:
026: /**
027: * This class contains the coin breakdown for coin inserted into a cash drawer
028: */
029: public class CoinDetail extends PersistableBusinessObjectBase {
030:
031: private String documentNumber;
032: private String financialDocumentTypeCode;
033: private String cashieringRecordSource;
034: private KualiDecimal financialDocumentFiftyCentAmount;
035: private KualiDecimal financialDocumentTwentyFiveCentAmount;
036: private KualiDecimal financialDocumentTenCentAmount;
037: private KualiDecimal financialDocumentFiveCentAmount;
038: private KualiDecimal financialDocumentOneCentAmount;
039: private KualiDecimal financialDocumentOtherCentAmount;
040: private KualiDecimal financialDocumentHundredCentAmount;
041:
042: /**
043: * Default constructor.
044: */
045: public CoinDetail() {
046: }
047:
048: /**
049: * Gets the documentNumber attribute.
050: *
051: * @return Returns the documentNumber
052: */
053: public String getDocumentNumber() {
054: return documentNumber;
055: }
056:
057: /**
058: * Sets the documentNumber attribute.
059: *
060: * @param documentNumber The documentNumber to set.
061: */
062: public void setDocumentNumber(String documentNumber) {
063: this .documentNumber = documentNumber;
064: }
065:
066: /**
067: * Gets the financialDocumentTypeCode attribute.
068: *
069: * @return Returns the financialDocumentTypeCode
070: */
071: public String getFinancialDocumentTypeCode() {
072: return financialDocumentTypeCode;
073: }
074:
075: /**
076: * Sets the financialDocumentTypeCode attribute.
077: *
078: * @param financialDocumentTypeCode The financialDocumentTypeCode to set.
079: */
080: public void setFinancialDocumentTypeCode(
081: String financialDocumentTypeCode) {
082: this .financialDocumentTypeCode = financialDocumentTypeCode;
083: }
084:
085: /**
086: * Gets the cashieringRecordSource attribute.
087: *
088: * @return Returns the cashieringRecordSource
089: */
090: public String getCashieringRecordSource() {
091: return cashieringRecordSource;
092: }
093:
094: /**
095: * Sets the cashieringRecordSource attribute.
096: *
097: * @param cashieringRecordSource The cashieringRecordSource to set.
098: */
099: public void setCashieringRecordSource(
100: String financialDocumentColumnTypeCode) {
101: this .cashieringRecordSource = financialDocumentColumnTypeCode;
102: }
103:
104: /**
105: * Gets the financialDocumentFiftyCentAmount attribute.
106: *
107: * @return Returns the financialDocumentFiftyCentAmount
108: */
109: public KualiDecimal getFinancialDocumentFiftyCentAmount() {
110: return financialDocumentFiftyCentAmount;
111: }
112:
113: /**
114: * Sets the financialDocumentFiftyCentAmount attribute.
115: *
116: * @param financialDocumentFiftyCentAmount The financialDocumentFiftyCentAmount to set.
117: */
118: public void setFinancialDocumentFiftyCentAmount(
119: KualiDecimal financialDocumentFiftyCentAmount) {
120: this .financialDocumentFiftyCentAmount = financialDocumentFiftyCentAmount;
121: }
122:
123: /**
124: * Returns the number of half-cent coins in the drawer
125: *
126: * @return the count of half cent coins in the drawer
127: */
128: public Integer getFiftyCentCount() {
129: return (financialDocumentFiftyCentAmount == null) ? new Integer(
130: 0)
131: : new Integer(financialDocumentFiftyCentAmount.divide(
132: KFSConstants.CoinTypeAmounts.FIFTY_CENT_AMOUNT)
133: .intValue());
134: }
135:
136: /**
137: * Sets the number of fifty cent coins in the drawer. This is useful if, you know, you're in da club, with, say a bottle full of
138: * "bub"
139: *
140: * @param count the number of fifty cent coins present in the drawer
141: */
142: public void setFiftyCentCount(Integer count) {
143: if (count != null) {
144: financialDocumentFiftyCentAmount = new KualiDecimal(count
145: .intValue())
146: .multiply(KFSConstants.CoinTypeAmounts.FIFTY_CENT_AMOUNT);
147: }
148: }
149:
150: /**
151: * Gets the financialDocumentTwentyFiveCentAmount attribute.
152: *
153: * @return Returns the financialDocumentTwentyFiveCentAmount
154: */
155: public KualiDecimal getFinancialDocumentTwentyFiveCentAmount() {
156: return financialDocumentTwentyFiveCentAmount;
157: }
158:
159: /**
160: * Sets the financialDocumentTwentyFiveCentAmount attribute.
161: *
162: * @param financialDocumentTwentyFiveCentAmount The financialDocumentTwentyFiveCentAmount to set.
163: */
164: public void setFinancialDocumentTwentyFiveCentAmount(
165: KualiDecimal financialDocumentTwentyFiveCentAmount) {
166: this .financialDocumentTwentyFiveCentAmount = financialDocumentTwentyFiveCentAmount;
167: }
168:
169: /**
170: * Returns the number of quarters in the drawer
171: *
172: * @return the count of quarters in the drawer
173: */
174: public Integer getTwentyFiveCentCount() {
175: return (financialDocumentTwentyFiveCentAmount == null) ? new Integer(
176: 0)
177: : new Integer(
178: financialDocumentTwentyFiveCentAmount
179: .divide(
180: KFSConstants.CoinTypeAmounts.TWENTY_FIVE_CENT_AMOUNT)
181: .intValue());
182: }
183:
184: /**
185: * Sets the number of quarters in the drawer
186: *
187: * @param count the number of quarters present in the drawer
188: */
189: public void setTwentyFiveCentCount(Integer count) {
190: if (count != null) {
191: financialDocumentTwentyFiveCentAmount = new KualiDecimal(
192: count.intValue())
193: .multiply(KFSConstants.CoinTypeAmounts.TWENTY_FIVE_CENT_AMOUNT);
194: }
195: }
196:
197: /**
198: * Gets the financialDocumentTenCentAmount attribute.
199: *
200: * @return Returns the financialDocumentTenCentAmount
201: */
202: public KualiDecimal getFinancialDocumentTenCentAmount() {
203: return financialDocumentTenCentAmount;
204: }
205:
206: /**
207: * Sets the financialDocumentTenCentAmount attribute.
208: *
209: * @param financialDocumentTenCentAmount The financialDocumentTenCentAmount to set.
210: */
211: public void setFinancialDocumentTenCentAmount(
212: KualiDecimal financialDocumentTenCentAmount) {
213: this .financialDocumentTenCentAmount = financialDocumentTenCentAmount;
214: }
215:
216: /**
217: * Returns the number of dimes in the drawer
218: *
219: * @return the count of dimes in the drawer
220: */
221: public Integer getTenCentCount() {
222: return (financialDocumentTenCentAmount == null) ? new Integer(0)
223: : new Integer(financialDocumentTenCentAmount.divide(
224: KFSConstants.CoinTypeAmounts.TEN_CENT_AMOUNT)
225: .intValue());
226: }
227:
228: /**
229: * Sets the number of dimes in the drawer
230: *
231: * @param count the number of dimes present in the drawer
232: */
233: public void setTenCentCount(Integer count) {
234: if (count != null) {
235: financialDocumentTenCentAmount = new KualiDecimal(count
236: .intValue())
237: .multiply(KFSConstants.CoinTypeAmounts.TEN_CENT_AMOUNT);
238: }
239: }
240:
241: /**
242: * Gets the financialDocumentFiveCentAmount attribute.
243: *
244: * @return Returns the financialDocumentFiveCentAmount
245: */
246: public KualiDecimal getFinancialDocumentFiveCentAmount() {
247: return financialDocumentFiveCentAmount;
248: }
249:
250: /**
251: * Sets the financialDocumentFiveCentAmount attribute.
252: *
253: * @param financialDocumentFiveCentAmount The financialDocumentFiveCentAmount to set.
254: */
255: public void setFinancialDocumentFiveCentAmount(
256: KualiDecimal financialDocumentFiveCentAmount) {
257: this .financialDocumentFiveCentAmount = financialDocumentFiveCentAmount;
258: }
259:
260: /**
261: * Returns the number of nickels in the drawer
262: *
263: * @return the count of nickels in the drawer
264: */
265: public Integer getFiveCentCount() {
266: return (financialDocumentFiveCentAmount == null) ? new Integer(
267: 0) : new Integer(financialDocumentFiveCentAmount
268: .divide(KFSConstants.CoinTypeAmounts.FIVE_CENT_AMOUNT)
269: .intValue());
270: }
271:
272: /**
273: * Sets the number of nickels in the drawer
274: *
275: * @param count the number of nickels present in the drawer
276: */
277: public void setFiveCentCount(Integer count) {
278: if (count != null) {
279: financialDocumentFiveCentAmount = new KualiDecimal(count
280: .intValue())
281: .multiply(KFSConstants.CoinTypeAmounts.FIVE_CENT_AMOUNT);
282: }
283: }
284:
285: /**
286: * Gets the financialDocumentOneCentAmount attribute.
287: *
288: * @return Returns the financialDocumentOneCentAmount
289: */
290: public KualiDecimal getFinancialDocumentOneCentAmount() {
291: return financialDocumentOneCentAmount;
292: }
293:
294: /**
295: * Sets the financialDocumentOneCentAmount attribute.
296: *
297: * @param financialDocumentOneCentAmount The financialDocumentOneCentAmount to set.
298: */
299: public void setFinancialDocumentOneCentAmount(
300: KualiDecimal financialDocumentOneCentAmount) {
301: this .financialDocumentOneCentAmount = financialDocumentOneCentAmount;
302: }
303:
304: /**
305: * Returns the number of pennies in the drawer
306: *
307: * @return the count of pennies in the drawer
308: */
309: public Integer getOneCentCount() {
310: return (financialDocumentOneCentAmount == null) ? new Integer(0)
311: : new Integer(financialDocumentOneCentAmount.divide(
312: KFSConstants.CoinTypeAmounts.ONE_CENT_AMOUNT)
313: .intValue());
314: }
315:
316: /**
317: * Sets the number of pennies in the drawer
318: *
319: * @param count the number of pennies present in the drawer
320: */
321: public void setOneCentCount(Integer count) {
322: if (count != null) {
323: financialDocumentOneCentAmount = new KualiDecimal(count)
324: .multiply(KFSConstants.CoinTypeAmounts.ONE_CENT_AMOUNT);
325: }
326: }
327:
328: /**
329: * Gets the financialDocumentOtherCentAmount attribute.
330: *
331: * @return Returns the financialDocumentOtherCentAmount
332: */
333: public KualiDecimal getFinancialDocumentOtherCentAmount() {
334: return financialDocumentOtherCentAmount;
335: }
336:
337: /**
338: * Sets the financialDocumentOtherCentAmount attribute.
339: *
340: * @param financialDocumentOtherCentAmount The financialDocumentOtherCentAmount to set.
341: */
342: public void setFinancialDocumentOtherCentAmount(
343: KualiDecimal financialDocumentOtherCentAmount) {
344: this .financialDocumentOtherCentAmount = financialDocumentOtherCentAmount;
345: }
346:
347: /**
348: * Gets the financialDocumentHundredCentAmount attribute.
349: *
350: * @return Returns the financialDocumentHundredCentAmount
351: */
352: public KualiDecimal getFinancialDocumentHundredCentAmount() {
353: return financialDocumentHundredCentAmount;
354: }
355:
356: /**
357: * Sets the financialDocumentHundredCentAmount attribute.
358: *
359: * @param financialDocumentHundredCentAmount The financialDocumentHundredCentAmount to set.
360: */
361: public void setFinancialDocumentHundredCentAmount(
362: KualiDecimal financialDocumentHundredCentAmount) {
363: this .financialDocumentHundredCentAmount = financialDocumentHundredCentAmount;
364: }
365:
366: /**
367: * Returns the number of dollar coins--Sacajawea, Susan B. Anthony, or otherwise--in the drawer
368: *
369: * @return the count of dollar coins in the drawer
370: */
371: public Integer getHundredCentCount() {
372: return (financialDocumentHundredCentAmount == null) ? new Integer(
373: 0)
374: : new Integer(
375: financialDocumentHundredCentAmount
376: .divide(
377: KFSConstants.CoinTypeAmounts.HUNDRED_CENT_AMOUNT)
378: .intValue());
379: }
380:
381: /**
382: * Sets the number of hundred cent coins in the drawer
383: *
384: * @param count the number of hundred cent coins present in the drawer
385: */
386: public void setHundredCentCount(Integer count) {
387: if (count != null) {
388: financialDocumentHundredCentAmount = new KualiDecimal(count
389: .intValue())
390: .multiply(KFSConstants.CoinTypeAmounts.HUNDRED_CENT_AMOUNT);
391: }
392: }
393:
394: /**
395: * Returns the total amount represented by this coin detail record.
396: *
397: * @return total amount of this detail
398: */
399: public KualiDecimal getTotalAmount() {
400: KualiDecimal result = new KualiDecimal(0);
401: if (this .financialDocumentHundredCentAmount != null) {
402: result = result
403: .add(this .financialDocumentHundredCentAmount);
404: }
405: if (this .financialDocumentFiftyCentAmount != null) {
406: result = result.add(this .financialDocumentFiftyCentAmount);
407: }
408: if (this .financialDocumentTwentyFiveCentAmount != null) {
409: result = result
410: .add(this .financialDocumentTwentyFiveCentAmount);
411: }
412: if (this .financialDocumentTenCentAmount != null) {
413: result = result.add(this .financialDocumentTenCentAmount);
414: }
415: if (this .financialDocumentFiveCentAmount != null) {
416: result = result.add(this .financialDocumentFiveCentAmount);
417: }
418: if (this .financialDocumentOneCentAmount != null) {
419: result = result.add(this .financialDocumentOneCentAmount);
420: }
421: if (this .financialDocumentOtherCentAmount != null) {
422: result = result.add(this .financialDocumentOtherCentAmount);
423: }
424: return result;
425: }
426:
427: /**
428: * This method sets all amounts in this record to zero
429: */
430: public void zeroOutAmounts() {
431: this .financialDocumentHundredCentAmount = new KualiDecimal(0);
432: this .financialDocumentFiftyCentAmount = new KualiDecimal(0);
433: this .financialDocumentTwentyFiveCentAmount = new KualiDecimal(0);
434: this .financialDocumentTenCentAmount = new KualiDecimal(0);
435: this .financialDocumentFiveCentAmount = new KualiDecimal(0);
436: this .financialDocumentOneCentAmount = new KualiDecimal(0);
437: this .financialDocumentOtherCentAmount = new KualiDecimal(0);
438: }
439:
440: /**
441: * This method sets all amounts that are null to zero
442: */
443: public void zeroOutUnpopulatedAmounts() {
444: if (this .financialDocumentHundredCentAmount == null) {
445: this .financialDocumentHundredCentAmount = new KualiDecimal(
446: 0);
447: }
448: if (this .financialDocumentFiftyCentAmount == null) {
449: this .financialDocumentFiftyCentAmount = new KualiDecimal(0);
450: }
451: if (this .financialDocumentTwentyFiveCentAmount == null) {
452: this .financialDocumentTwentyFiveCentAmount = new KualiDecimal(
453: 0);
454: }
455: if (this .financialDocumentTenCentAmount == null) {
456: this .financialDocumentTenCentAmount = new KualiDecimal(0);
457: }
458: if (this .financialDocumentFiveCentAmount == null) {
459: this .financialDocumentFiveCentAmount = new KualiDecimal(0);
460: }
461: if (this .financialDocumentOneCentAmount == null) {
462: this .financialDocumentOneCentAmount = new KualiDecimal(0);
463: }
464: if (this .financialDocumentOtherCentAmount == null) {
465: this .financialDocumentOtherCentAmount = new KualiDecimal(0);
466: }
467: }
468:
469: public void add(CoinDetail detail) {
470: if (detail.financialDocumentHundredCentAmount != null) {
471: if (this .financialDocumentHundredCentAmount == null) {
472: this .financialDocumentHundredCentAmount = new KualiDecimal(
473: 0)
474: .add(detail.financialDocumentHundredCentAmount);
475: } else {
476: this .financialDocumentHundredCentAmount = this .financialDocumentHundredCentAmount
477: .add(detail.financialDocumentHundredCentAmount);
478: }
479: }
480: if (detail.financialDocumentFiftyCentAmount != null) {
481: if (this .financialDocumentFiftyCentAmount == null) {
482: this .financialDocumentFiftyCentAmount = new KualiDecimal(
483: 0).add(detail.financialDocumentFiftyCentAmount);
484: } else {
485: this .financialDocumentFiftyCentAmount = this .financialDocumentFiftyCentAmount
486: .add(detail.financialDocumentFiftyCentAmount);
487: }
488: }
489: if (detail.financialDocumentTwentyFiveCentAmount != null) {
490: if (this .financialDocumentTwentyFiveCentAmount == null) {
491: this .financialDocumentTwentyFiveCentAmount = new KualiDecimal(
492: 0)
493: .add(detail.financialDocumentTwentyFiveCentAmount);
494: } else {
495: this .financialDocumentTwentyFiveCentAmount = this .financialDocumentTwentyFiveCentAmount
496: .add(detail.financialDocumentTwentyFiveCentAmount);
497: }
498: }
499: if (detail.financialDocumentTenCentAmount != null) {
500: if (this .financialDocumentTenCentAmount == null) {
501: this .financialDocumentTenCentAmount = new KualiDecimal(
502: 0).add(detail.financialDocumentTenCentAmount);
503: } else {
504: this .financialDocumentTenCentAmount = this .financialDocumentTenCentAmount
505: .add(detail.financialDocumentTenCentAmount);
506: }
507: }
508: if (detail.financialDocumentFiveCentAmount != null) {
509: if (this .financialDocumentFiveCentAmount == null) {
510: this .financialDocumentFiveCentAmount = new KualiDecimal(
511: 0).add(detail.financialDocumentFiveCentAmount);
512: } else {
513: this .financialDocumentFiveCentAmount = this .financialDocumentFiveCentAmount
514: .add(detail.financialDocumentFiveCentAmount);
515: }
516: }
517: if (detail.financialDocumentOneCentAmount != null) {
518: if (this .financialDocumentOneCentAmount == null) {
519: this .financialDocumentOneCentAmount = new KualiDecimal(
520: 0).add(detail.financialDocumentOneCentAmount);
521: } else {
522: this .financialDocumentOneCentAmount = this .financialDocumentOneCentAmount
523: .add(detail.financialDocumentOneCentAmount);
524: }
525: }
526: if (detail.financialDocumentOtherCentAmount != null) {
527: if (this .financialDocumentOtherCentAmount == null) {
528: this .financialDocumentOtherCentAmount = new KualiDecimal(
529: 0).add(detail.financialDocumentOtherCentAmount);
530: } else {
531: this .financialDocumentOtherCentAmount = this .financialDocumentOtherCentAmount
532: .add(detail.financialDocumentOtherCentAmount);
533: }
534: }
535: }
536:
537: public void subtract(CoinDetail detail) {
538: if (detail.financialDocumentHundredCentAmount != null) {
539: if (this .financialDocumentHundredCentAmount == null) {
540: this .financialDocumentHundredCentAmount = new KualiDecimal(
541: 0)
542: .subtract(detail.financialDocumentHundredCentAmount);
543: } else {
544: this .financialDocumentHundredCentAmount = this .financialDocumentHundredCentAmount
545: .subtract(detail.financialDocumentHundredCentAmount);
546: }
547: }
548: if (detail.financialDocumentFiftyCentAmount != null) {
549: if (this .financialDocumentFiftyCentAmount == null) {
550: this .financialDocumentFiftyCentAmount = new KualiDecimal(
551: 0)
552: .subtract(detail.financialDocumentFiftyCentAmount);
553: } else {
554: this .financialDocumentFiftyCentAmount = this .financialDocumentFiftyCentAmount
555: .subtract(detail.financialDocumentFiftyCentAmount);
556: }
557: }
558: if (detail.financialDocumentTwentyFiveCentAmount != null) {
559: if (this .financialDocumentTwentyFiveCentAmount == null) {
560: this .financialDocumentTwentyFiveCentAmount = new KualiDecimal(
561: 0)
562: .subtract(detail.financialDocumentTwentyFiveCentAmount);
563: } else {
564: this .financialDocumentTwentyFiveCentAmount = this .financialDocumentTwentyFiveCentAmount
565: .subtract(detail.financialDocumentTwentyFiveCentAmount);
566: }
567: }
568: if (detail.financialDocumentTenCentAmount != null) {
569: if (this .financialDocumentTenCentAmount == null) {
570: this .financialDocumentTenCentAmount = new KualiDecimal(
571: 0)
572: .subtract(detail.financialDocumentTenCentAmount);
573: } else {
574: this .financialDocumentTenCentAmount = this .financialDocumentTenCentAmount
575: .subtract(detail.financialDocumentTenCentAmount);
576: }
577: }
578: if (detail.financialDocumentFiveCentAmount != null) {
579: if (this .financialDocumentFiveCentAmount == null) {
580: this .financialDocumentFiveCentAmount = new KualiDecimal(
581: 0)
582: .subtract(detail.financialDocumentFiveCentAmount);
583: } else {
584: this .financialDocumentFiveCentAmount = this .financialDocumentFiveCentAmount
585: .subtract(detail.financialDocumentFiveCentAmount);
586: }
587: }
588: if (detail.financialDocumentOneCentAmount != null) {
589: if (this .financialDocumentOneCentAmount == null) {
590: this .financialDocumentOneCentAmount = new KualiDecimal(
591: 0)
592: .subtract(detail.financialDocumentOneCentAmount);
593: } else {
594: this .financialDocumentOneCentAmount = this .financialDocumentOneCentAmount
595: .subtract(detail.financialDocumentOneCentAmount);
596: }
597: }
598: if (detail.financialDocumentOtherCentAmount != null) {
599: if (this .financialDocumentOtherCentAmount == null) {
600: this .financialDocumentOtherCentAmount = new KualiDecimal(
601: 0)
602: .subtract(detail.financialDocumentOtherCentAmount);
603: } else {
604: this .financialDocumentOtherCentAmount = this .financialDocumentOtherCentAmount
605: .subtract(detail.financialDocumentOtherCentAmount);
606: }
607: }
608: }
609:
610: /**
611: * Is this coin detail empty of any value?
612: *
613: * @return true if any field at all is neither null nor the amount is zero
614: */
615: public boolean isEmpty() {
616: return ((this .financialDocumentHundredCentAmount == null || this .financialDocumentHundredCentAmount
617: .equals(KualiDecimal.ZERO))
618: && (this .financialDocumentFiftyCentAmount == null || this .financialDocumentFiftyCentAmount
619: .equals(KualiDecimal.ZERO))
620: && (this .financialDocumentTwentyFiveCentAmount == null || this .financialDocumentTwentyFiveCentAmount
621: .equals(KualiDecimal.ZERO))
622: && (this .financialDocumentTenCentAmount == null || this .financialDocumentTenCentAmount
623: .equals(KualiDecimal.ZERO))
624: && (this .financialDocumentFiveCentAmount == null || this .financialDocumentFiveCentAmount
625: .equals(KualiDecimal.ZERO))
626: && (this .financialDocumentOneCentAmount == null || this .financialDocumentOneCentAmount
627: .equals(KualiDecimal.ZERO)) && (this .financialDocumentOtherCentAmount == null || this .financialDocumentOtherCentAmount
628: .equals(KualiDecimal.ZERO)));
629: }
630:
631: /**
632: * @see org.kuali.core.bo.BusinessObjectBase#toStringMapper()
633: */
634: protected LinkedHashMap toStringMapper() {
635: LinkedHashMap m = new LinkedHashMap();
636: m
637: .put(KFSPropertyConstants.DOCUMENT_NUMBER,
638: this .documentNumber);
639: m.put("financialDocumentTypeCode",
640: this .financialDocumentTypeCode);
641: m.put("cashieringRecordSource", this.cashieringRecordSource);
642: return m;
643: }
644: }
|