13 require_once(
"$admLibrary/aMemberSupport.i");
19 function GetMicrSize() {
26 "operation" => array(
"filter" => FILTER_SANITIZE_STRING),
27 "payload" => array(
"filter" => FILTER_SANITIZE_STRING),
28 "mMicrs" => array(
"filter" => FILTER_SANITIZE_STRING)
31 HCU_ImportVars($admVars,
"MEMBER_MICR", $admOk);
33 $mOperation = isset($admVars[
"MEMBER_MICR"][
"operation"]) ? $admVars[
"MEMBER_MICR"][
"operation"] :
null;
34 $mPayload = isset($admVars[
"MEMBER_MICR"][
"payload"]) ? $admVars[
"MEMBER_MICR"][
"payload"] :
null;
35 $mMicrs = isset($admVars[
"MEMBER_MICR"][
"mMicrs"]) ? $admVars[
"MEMBER_MICR"][
"mMicrs"] :
null;
37 $mMember = $mPayload ?
38 MemberDecrypt($SYSENV, $Cu, $mPayload) :
41 $mContext = $mPayload ?
42 MemberContext($SYSENV, $Cu, $mMember[
'member']) :
43 MemberContext($SYSENV, $Cu);
48 switch ($mOperation) {
52 case "memberReadMicrs":
53 header(
'Content-type: application/json');
58 $aryResult[
'data'][
'numbers'] = $mRTNumbers[
'numbers'];
59 $aryResult[
'data'][
'accounts'] = $mAccounts[
'accounts'];
60 $aryResult[
'data'][
'micrs'] = $mMicrs[
'micrs'];
61 MemberReply($aryResult, $aryReply, $mOperation);
63 case "memberUpdateMicrs":
64 header(
'Content-type: application/json');
67 $mDelete =
MemberDeleteMicrs($SYSENV, $dbh, $mContext, $mValidateMicrs[
'delete']);
68 $mCreate =
MemberCreateMicrs($SYSENV, $dbh, $mContext, $mValidateMicrs[
'create']);
69 $mUpdate =
MemberUpdateMicrs($SYSENV, $dbh, $mContext, $mValidateMicrs[
'update']);
72 $aryResult[
'data'][
'micrs'] = $mMicrs[
'micrs'];
73 $aryResult[
'info'][] = isset($mDelete[
'message']) ? $mDelete[
'message'] :
"" ;
74 $aryResult[
'info'][] = isset($mCreate[
'message']) ? $mCreate[
'message'] :
"" ;
75 $aryResult[
'info'][] = isset($mUpdate[
'message']) ? $mUpdate[
'message'] :
"" ;
76 MemberReply($aryResult, $aryReply, $mOperation);
79 throw new Exception(
"Unknown server request: " . $mOperation);
83 }
catch (Exception $e) {
84 $aryReply[
'errors'][] = $e->getMessage();
85 $aryResult[
'data'] = array();
86 $aryResult[
'info'] = array();
87 MemberReply($aryResult, $aryReply, $mOperation);
101 $sList = html_entity_decode($pMicrs, ENT_QUOTES);
102 $dList = HCU_JsonDecode($sList);
104 $mValidate = array();
106 foreach ($dList as $action => $set) {
107 $mValidate[$action] = array();
108 foreach ($set as $key => $value) {
109 $mValidate[$action][] = array(
110 "_action" =>
"$action",
111 "micrid" => intval($value[
'mId']),
112 "accounttype" => prep_save($value[
'mType'], 12),
113 "micraccount" => prep_save($value[
'mMicr'], 17),
114 "startcheck" => intval($value[
'mCheck']),
115 "rt" => prep_save($value[
'mRt'], 12),
116 "cu" => $pContext[
'cu_code']
136 if (count($pMicrs) == 0) {
return array(); }
138 $cuTable = $pContext[
'cu_table'];
139 $cuCode = $pContext[
'cu_code'];
140 $cuMember = $pContext[
'm_account'];
142 $sqlReturn = array();
152 foreach ($pMicrs as $key => $value) {
155 '{$value['accounttype']}', 156 '{$value['micraccount']}', 157 '{$value['startcheck']}', 162 INSERT INTO cuovermicr 163 ($sqlColumns) VALUES ($sqlValues);";
166 $sqlCreateRs = db_query($sqlCreate, $pDbh);
168 $pEnv[
'logger']->error(db_last_error());
169 throw new Exception(
"Failed to create MICR settings.");
172 $sqlReturn[
'message'] =
"MICR settings have been created successfully.";
188 if (count($pMicrs) == 0) {
return array(); }
190 $cuTable = $pContext[
'cu_table'];
191 $cuCode = $pContext[
'cu_code'];
192 $cuMember = $pContext[
'm_account'];
194 $sqlReturn = array();
202 foreach ($pMicrs as $key => $value) {
204 '{$value['accounttype']}', 205 '{$value['micraccount']}', 206 '{$value['startcheck']}', 211 SET ($sqlColumns) = ($sqlValues) 212 WHERE micrid = {$value['micrid']} 213 AND accountnumber = '$cuMember' 214 AND cu = '$cuCode';";
218 $sqlUpdateRs = db_query($sqlUpdate, $pDbh);
220 $pEnv[
'logger']->error(db_last_error());
221 throw new Exception(
"Failed to update MICR settings.");
224 $sqlReturn[
'message'] =
"MICR settings have been updated successfully.";
240 if (count($pMicrs) == 0) {
return array(); }
242 $cuTable = $pContext[
'cu_table'];
243 $cuCode = $pContext[
'cu_code'];
244 $cuMember = $pContext[
'm_account'];
246 $sqlReturn = array();
249 foreach ($pMicrs as $key => $value) {
251 DELETE FROM cuovermicr 252 WHERE micrid = {$value['micrid']} 253 AND accountnumber = '$cuMember';";
256 $sqlDeleteRs = db_query($sqlDelete, $pDbh);
258 $pEnv[
'logger']->error(db_last_error());
259 throw new Exception(
"Failed to delete MICR settings.");
262 $sqlReturn[
'message'] =
"MICR settings have been deleted successfully.";
277 $cuTable = $pContext[
'cu_table'];
278 $cuCode = $pContext[
'cu_code'];
279 $cuMember = $pContext[
'm_account'];
281 $sqlReturn = array();
284 SELECT rt, 'P' AS pri FROM cuadmin WHERE cu ='$cuCode' 286 SELECT rt, 'X' AS pri FROM cualtroute WHERE cu ='$cuCode' 289 $sqlSelectRs = db_query($sqlSelect, $pDbh);
291 $pEnv[
'logger']->error(db_last_error());
292 throw new Exception(
"Failed to read member routing / transit numbers.");
295 $sqlReturn[
'numbers'] = db_fetch_all($sqlSelectRs);
310 $cuTable = $pContext[
'cu_table'];
311 $cuCode = $pContext[
'cu_code'];
312 $cuMember = $pContext[
'm_account'];
314 $sqlReturn = array();
316 ab.accounttype AS a_type, 317 ab.description AS a_desc, 318 ab.micraccount AS a_micr";
321 FROM {$cuTable}accountbalance ab 322 WHERE ab.accountnumber = '$cuMember' 323 AND ab.deposittype = 'Y' 324 ORDER BY ab.accounttype";
325 $sqlSelectRs = db_query($sqlSelect, $pDbh);
327 $pEnv[
'logger']->error(db_last_error());
328 throw new Exception(
"Failed to read member sub accounts.");
331 $sqlReturn[
'accounts'] = db_fetch_all($sqlSelectRs);
346 $cuTable = $pContext[
'cu_table'];
347 $cuCode = $pContext[
'cu_code'];
348 $cuMember = $pContext[
'm_account'];
350 $sqlReturn = array();
353 om.startcheck AS o_check, 355 om.micraccount AS o_micr, 356 ab.accounttype AS a_type, 357 ab.description AS a_desc, 358 ab.micraccount AS a_micr";
362 JOIN {$cuCode}accountbalance ab 363 ON ab.accountnumber = om.accountnumber 364 AND ab.accounttype = om.accounttype 365 WHERE cu = '{$cuCode}' 366 AND om.accountnumber = '$cuMember' 367 ORDER BY om.accounttype, om.startcheck";
368 $sqlSelectRs = db_query($sqlSelect, $pDbh);
370 $pEnv[
'logger']->error(db_last_error());
371 throw new Exception(
"Failed to read member mict values.");
374 $sqlReturn[
'micrs'] = db_fetch_all($sqlSelectRs);
387 <style type=
"text/css">
388 #mmMicrGrid .k-grid-content tr:hover { 389 background: transparent;
396 <div
id=
"status"></div>
398 <div
class=
"h4">Core Info</div>
400 <div
class=
"hcu-secondary">
401 <div
class=
"small vsgSecondary">
402 <span>This is the information from your core data provider.</span>
406 <div
id=
"mmCoreInfoGrid"></div>
409 <div
class=
"h4">MICR Overrides</div>
411 <div
class=
"hcu-secondary">
412 <div
class=
"small vsgSecondary">
413 <span>Click inside a row field to edit the selected field.</span><br>
414 <span>Delete a MICR
override by clicking the checkbox to the left of each row.</span>
418 <div
id=
"mmMicrGrid"></div>
420 <div
class=
"hcu-template">
421 <div
class=
"hcu-edit-buttons k-state-default">
422 <span
class=
"hcu-icon-delete">
424 <a href=
"##" id=
"lnkCancel">Cancel</a>
426 <a href=
"##" id=
"btnUpdate" class=
"k-button k-primary">
427 <i
class=
"fa fa-check fa-lg"></i>
435 <p>This member
's MICR settings have been changed.</p> 436 <p>Do you wish to discard the changes?</p> 440 <p>There are one or more MICR settings with empty fields.</p> 441 <p>Please review your changes and resubmit the form.</p> 444 <div id="mmDuplicates"> 445 <p>There are multiple MICR settings for a sub-account with one or more of the following errors:</p> 446 <ul style="margin-left: 25px;"> 447 <li>the routing/transit numbers are the same</li> 448 <li>the starting check numbers are the same</li> 450 <p>Please review your changes and re-submit the form.</p> 479 <script type="text/javascript">
480 //# sourceURL=micrs.js
482 var MemberMicrs = function() {
483 var mmCardContainer = null;
484 var mmCardWindows = null;
486 var mmPayload = null;
491 var mmDataSource = null;
492 var mmDataAccounts = null;
493 var mmDataNumbers = null;
494 var mmDataMicrs = null;
495 var mmDataCoreInfo= null;
497 var mmMicrGrid = null;
498 var mmCoreInfoGrid= null;
499 var mmMicrTip = null;
502 var mmDiscard = null;
504 var mmDuplicates = null;
508 var DataBuildCoreInfo= function(accounts, rts) {
511 var rt= rts.length >= 1 ? rts[0].rt.trim() : "";
513 for (var i=0; i!= accounts.length; i++) {
514 var row= accounts[i];
516 for (var j=0; j!= rts.length; j++) {
518 if ((typeof(rrow['pri
']) !== 'undefined
') && (rrow['pri
'] === 'P
')) { 519 mmDataCoreInfo.push({kendoId: ++kendoId, account: row.a_type.trim() + " - " + 520 row.a_desc.trim(), coreMicr: row.a_micr != null ? row.a_micr.trim() : ""}); 526 mmCoreInfoGrid.dataSource.data(mmDataCoreInfo); 529 var DataBuildMicrs = function(data) { 532 for (var i = 0; i < data.length; i++) { 535 micr.oId = parseInt(data[i].o_id); 536 micr.oAcct = data[i].a_type.trim() + " - " + data[i].a_desc.trim(); 537 micr.oRt = data[i].o_rt.trim(); 538 micr.oMicr = data[i].o_micr.trim(); 539 micr.oMicr = micr.oMicr == "0" ? "" : micr.oMicr; 540 micr.oCheck = data[i].o_check.trim(); 541 micr.eAcct = data[i].a_type.trim() + " - " + data[i].a_desc.trim(); 542 micr.eRt = data[i].o_rt.trim(); 543 micr.eMicr = data[i].o_micr.trim(); 544 micr.eCheck = data[i].o_check.trim(); 546 micr.eDelete = false; 549 micr.eaMicr= data[i].a_micr != null ? data[i].a_micr.trim() : ""; <?php // Because of internal rules, it must start with e and o version is needed even though it never changes. ?> 550 micr.oaMicr= micr.eaMicr; 552 mmDataMicrs.push(micr); 573 mmMicrGrid.dataSource.data(mmDataMicrs); 574 $("#mmMicrGrid").find("input[type=checkbox]").prop("checked", false); 577 var DataBuildNumbers = function(data) { 580 text: "Select an r/t number" 583 for (var i = 0; i < data.length; i++) { 585 value: data[i].rt.trim(), 586 text: data[i].rt.trim() 589 mmDataNumbers.push(number); 593 var DataBuildAccounts = function(data) { 596 text: "Select an account", 600 for (var i = 0; i < data.length; i++) { 602 account.value = data[i].a_type.trim() + " - " + data[i].a_desc.trim(); 603 account.text = data[i].a_type.trim() + " - " + data[i].a_desc.trim(); 605 var micr= data[i].a_micr.trim(); 606 micr= micr == "0" ? "" : micr; 609 mmDataAccounts.push(account); 613 var ValidateMicrsDuplicate = function() { 615 var data = mmMicrGrid.dataSource.data(); 618 for (var i = 0; i < data.length-1; i++) { 620 if (data[i].eDelete) { continue; } 621 if (data[i].eNew && !data[i].eDirty) { continue; } 623 var acct= item.eAcct.trim(); 624 var checkRt= (item.eCheck+"").trim() + "-" + item.eRt.trim(); <?php // Needed because eCheck can now be a number with the trim doesn't work with. ?>
627 if (checks[acct][checkRt]) {
628 checks[acct][checkRt] ++;
630 checks[acct][checkRt] = 1;
634 checks[acct][checkRt] = 1;
638 for (keyAcct in checks) {
639 for (keyCheck in checks[keyAcct]) {
640 if (checks[keyAcct][keyCheck] > 1) {
649 var ValidateMicrsEmpty =
function() {
651 var data = mmMicrGrid.dataSource.data();
652 for (var i = 0; i < data.length-1; i++) {
654 if (!item.eDirty) {
continue; }
656 if (item.eAcct.trim() ==
"") { valid =
false; }
657 else if (item.eRt.trim() ==
"") { valid =
false; }
658 else if ((item.eMicr+
"").trim() ==
"") { valid =
false; }
659 else if ((item.eCheck+
"").trim() ==
"") { valid =
false; }
660 else { valid =
true; }
666 var ValidateMicrsDirty =
function(mode) {
668 var data = mmMicrGrid.dataSource.data();
670 for (var i = 0; i < data.length-1; i++) {
672 if (item.eNew) { item.eDirty =
true; }
673 else if (item.eAcct != item.oAcct) { item.eDirty =
true; }
674 else if (item.eRt != item.oRt) { item.eDirty =
true; }
675 else if (item.eMicr != item.oMicr) { item.eDirty =
true; }
676 else if (item.eCheck != item.oCheck) { item.eDirty =
true; }
677 else if (item.eDelete) { item.eDirty =
true; }
678 else { item.eDirty =
false; }
680 if (!valid && item.eDirty) { valid =
true; }
686 var EditorDropDown =
function(container, options) {
687 if (container.hasClass(
"vsgDisabled") || options.model.eAdd) {
688 mmMicrGrid.closeCell();
692 if (container.attr(
"name") ==
"eAcct" && mmDataAccounts.length == 2 ||
693 container.attr(
"name") ==
"eRt" && mmDataNumbers.length == 2) {
695 mmMicrGrid.closeCell();
699 $(
'<input required name="' + options.field +
'"/>')
702 dataTextField:
"text",
703 dataValueField:
"value",
704 dataSource: options.field ==
"eAcct" ?
708 var valueKeyE = options.field;
709 var valueKeyO = options.field.replace(
"e",
"o");
710 var valueO = options.model[valueKeyO];
711 var valueE = options.model[valueKeyE];
713 if (options.field ==
"eAcct") { <?php
714 var dataItem= this.dataItem();
715 options.model.eaMicr= dataItem.micr;
716 options.model.oaMicr= dataItem.micr;
717 $(this.wrapper).closest(
"tr").find(
"[name='eaMicr']").text(dataItem.micr);
720 if (valueO == valueE) {
721 $(container).removeClass(
"k-dirty-cell");
722 $(container).find(
".k-dirty").remove();
724 $(container).addClass(
"k-dirty-cell");
725 $(container).prepend(
"<span class='k-dirty'></span>");
730 select:
function() {}
731 }).closest(
".k-dropdown.k-widget").on(
"keydown",
function(e) {
732 var key = e.which || e.keyCode;
737 if (options.field ==
"eAcct") {
738 if (mmDataNumbers.length == 2) {
739 gridCell = $(
this).closest(
"tr").find(
"td:eq(3)");
741 gridCell = $(
this).closest(
"tr").find(
"td:eq(2)");
743 }
else if (options.field ==
"eRt") {
744 gridCell = $(
this).closest(
"tr").find(
"td:eq(3)");
746 mmMicrGrid.editCell(gridCell);
750 container.find(
"input").data(
"kendoDropDownList").open();
753 var EditorNumeric =
function(container, options) {
754 if (container.hasClass(
"vsgDisabled") || options.model.eAdd) {
755 mmMicrGrid.closeCell();
759 $(
'<input name="' + options.field +
'" maxlength=\"<?php echo GetMicrSize(); ?>\"/>')
761 .on(
"change",
function(e) {
762 var name = $(
this).closest(
"td").attr(
"name");
763 if (name ==
"eCheck") {
764 var valueE = $(
this).val();
765 valueE = valueE.replace(/^0+/,
'');
772 .on(
"keypress",
function(e) {
773 var key = e.which || e.keyCode;
774 if (key == 46 || key == 8 || (key > 47 && key < 58) || (key > 36 && key < 41)) { <?php
780 .on(
"keydown",
function(e) {
781 var key = e.which || e.keyCode;
787 if (options.field ==
"eMicr") {
788 gridCell = $(
this).closest(
"tr").find(
"td:eq(4)");
789 }
else if (options.field ==
"eCheck") {
790 gridRow = $(
this).closest(
"tr").next(
"tr");
792 if (mmDataAccounts.length == 2) {
793 if (mmDataNumbers.length == 2) {
794 gridCell = gridRow.find(
"td:eq(3)");
796 gridCell = gridRow.find(
"td:eq(2)");
799 gridCell = gridRow.find(
"td:eq(1)");
802 $(
this).trigger(
"change");
803 mmMicrGrid.editCell(gridCell);
806 .on(
"blur",
function() {
807 var valueKeyE = options.field;
808 var valueKeyO = options.field.replace(
"e",
"o");
809 var valueO = options.model[valueKeyO];
810 var valueE = options.model[valueKeyE];
812 if (valueO == valueE) {
813 $(container).removeClass(
"k-dirty-cell");
814 $(container).find(
".k-dirty").remove();
816 $(container).addClass(
"k-dirty-cell");
817 $(container).prepend(
"<span class='k-dirty'></span>");
824 var EventUpdateMicrs =
function() {
825 var data = mmMicrGrid.dataSource.data();
832 for (var i = 0; i < data.length-1; i++) {
837 itemU.mId = item.oId;
838 itemU.mAcct = item.eDelete ? item.oAcct : item.eAcct,
839 itemU.mRt = item.eDelete ? item.oRt : item.eRt,
840 itemU.mMicr = item.eDelete ? item.oMicr : item.eMicr,
841 itemU.mCheck = item.eDelete ? item.oCheck : item.eCheck
843 var account = itemU.mAcct.split(
"-");
844 var mType = account[0].trim();
848 dataU.create.push(itemU);
849 }
else if (item.eDelete) {
850 dataU.delete.push(itemU);
852 dataU.update.push(itemU);
857 var memberRequest = {
858 operation:
"memberUpdateMicrs",
860 mMicrs: JSON.stringify(dataU)
863 mmDataSource.transport.options.read.type =
"POST";
864 mmDataSource.read(memberRequest);
867 var EventPreservState =
function() {
868 var rowCheckAll =
true;
869 $(
"#mmMicrGrid").find(
"tr").each(
function(i) {
872 if (i > 0 && i < mmMicrGrid.dataSource.data().length) {
873 var rowItem = mmMicrGrid.dataItem(
this);
874 var rowValueO =
null;
875 var rowValueE =
null;
877 $(
this).find(
"td").each(
function(j) {
879 var fieldKeyE =
null;
880 var fieldKeyO =
null;
883 fieldKeyE = field.attr(
"name");
884 fieldKeyO = fieldKeyE.replace(
"e",
"o");
886 rowValueO = rowItem[fieldKeyO];
887 rowValueE = rowItem[fieldKeyE];
889 if (rowValueO != rowValueE) {
890 $(
this).addClass(
"k-dirty-cell");
891 $(
this).prepend(
"<span class='k-dirty'></span>");
895 if (rowItem.eDelete) {
896 $(
this).addClass(
"vsgDisabled");
897 $(
this).addClass(
"mark-for-delete");
898 $(
this).find(
"input[type=checkbox]").prop(
"checked",
true);
902 if (!rowItem.eDelete) {
909 $(
"#chk_ALL").prop(
"checked",
true);
913 var EventShowTip =
function(e) {
914 var target = $(e.target);
915 var targetContent =
"";
917 if (target.hasClass(
"mark-for-delete")) {
918 targetContent =
"This micr setting has been marked for removal.";
920 targetContent = $(e.target).text().trim();
923 return targetContent;
926 var EventCheckBoxChange =
function(e) {
928 var boxId = box.attr(
"id");
929 var boxValue = box.prop(
"checked");
932 $(
"#mmMicrGrid input[id=chk_ALL]").prop(
"checked",
false);
935 if (boxId ==
"chk_ALL") {
936 $(
"#mmMicrGrid input[type=checkbox]").each(
function(e) {
938 $(
this).prop(
"checked", boxValue);
939 $(
this).trigger(
"change");
943 var row = box.closest(
"tr");
944 var rowIndex = mmDataMicrs[row[0].rowIndex];
945 var rowItem = mmMicrGrid.dataItem(row);
946 var rowFields = $(row).find(
"td");
948 $(rowFields).each(
function(e) {
955 field.addClass(
"vsgDisabled");
956 field.addClass(
"mark-for-delete");
957 rowItem.eDelete =
true;
959 var ntb= field.find(
"[id^='ntb_']");
960 ntb.length == 0 ? null : ntb.data(
"kendoNumericTextBox").enable(
false);
962 var mtb= field.find(
"[id^='mtb_']");
963 mtb.length == 0 ? null : mtb.data(
"kendoMaskedTextBox").enable(
false);
965 field.removeClass(
"vsgDisabled");
966 field.removeClass(
"mark-for-delete");
967 rowItem.eDelete =
false;
969 var ntb= field.find(
"[id^='ntb_']");
970 ntb.length == 0 ? null : ntb.data(
"kendoNumericTextBox").enable(
true);
972 var mtb= field.find(
"[id^='mtb_']");
973 mtb.length == 0 ? null : mtb.data(
"kendoMaskedTextBox").enable(
true);
982 var EventOpenWindow =
function(e) {
983 var windowElement = this.element[0];
984 var windowId = windowElement.id;
990 mmCardWindows.push(
this);
993 var EventCloseWindow =
function(e) {
994 var windowElement = this.element[0];
995 var windowId = windowElement.id;
1000 if (ValidateMicrsDirty()) {
1002 if (!ValidateMicrsEmpty()) { mmEmpty.open(); }
1003 else if (!ValidateMicrsDuplicate()) { mmDuplicates.open(); }
1004 else { EventUpdateMicrs(); }
1007 case "discardConfirm":
1008 EventPopWindow(windowId);
1009 mmMicrGrid.dataSource.data(mmDataMicrs);
1014 if (windowId ==
"mmMicrs") {
1015 if (ValidateMicrsDirty()) {
1019 EventPopWindow(windowId);
1020 $.homecuValidator.setup({
1021 formStatusField:
"formStatus",
1022 formValidate:
"cardContainerDiv" 1026 EventPopWindow(windowId);
1034 var EventPopWindow =
function(windowId) {
1036 for (var i = 0; i < mmCardWindows.length; i++) {
1037 var openWindow = mmCardWindows[i].element[0];
1038 var openId = openWindow.id;
1040 if (openId == windowId) {
1046 if (popIndex > -1) {
1047 mmCardWindows.splice(popIndex, 1);
1051 var InitDataSources =
function() {
1052 mmDataSource =
new kendo.data.DataSource({
1057 contentType:
"application/x-www-form-urlencoded",
1065 requestStart:
function(request) {
1068 requestEnd:
function(response) {
1069 setTimeout(hideWaitWindow, 500);
1071 if (response.hasOwnProperty(
"response")) {
1072 if (response.response.hasOwnProperty(
"Results")) {
1073 var results = response.response.Results;
1075 if (results.hasOwnProperty(
"error")) {
1076 $.homecuValidator.homecuResetMessage =
true;
1077 $.homecuValidator.displayMessage(results.error, $.homecuValidator.settings.statusError);
1078 }
else if (results.hasOwnProperty(
"info")) {
1079 $.homecuValidator.homecuResetMessage =
true;
1080 $.homecuValidator.displayMessage(results.info, $.homecuValidator.settings.statusSuccess);
1083 $.homecuValidator.displayMessage(
"Error Parsing Server", $.homecuValidator.settings.statusError);
1086 $.homecuValidator.displayMessage(
"Error Parsing Server", $.homecuValidator.settings.statusError);
1090 parse:
function(response) {
1093 var resultData =
null;
1094 var resultOperation =
null;
1096 if (response.hasOwnProperty(
"Results")) {
1097 results = response.Results;
1098 resultData = results.data;
1099 resultOperation = results.operation;
1104 if (results.hasOwnProperty(
"errors")) {
1108 if (resultData == undefined || resultData ==
null) {
1112 setTimeout(
function() {
1113 switch (resultOperation) {
1114 case "memberReadMicrs":
1115 if (!resultData.accounts) { <?php
1116 kendo.destroy($(
"#mmMicrs *")); <?php
1117 $(
"#mmMicrs").html(
"<div class='vsgSecondary'>No checking accounts available.</div>" 1118 +
"<div class='hcu-template'><div class='hcu-edit-buttons k-state-default'><a href='#' id='btnClose' class='k-button k-primary'>" 1119 +
"<i class='fa fa-check fa-lg'></i>Close</a></div></div>");
1120 $(
"#btnClose").click(function() { mmMicrs.close(); });
1122 DataBuildMicrs(resultData.micrs);
1123 DataBuildNumbers(resultData.numbers);
1124 DataBuildAccounts(resultData.accounts);
1125 DataBuildCoreInfo(resultData.accounts, resultData.numbers);
1128 mmMember.cardTitle=
"Member MICR";
1129 var
template= kendo.template($(
"#titleTemplate").html());
1130 mmMicrs.title(
template(mmMember)).center().open();
1132 case "memberUpdateMicrs":
1133 DataBuildMicrs(resultData.micrs);
1144 var InitDataViews =
function() {
1145 mmMicrs = $(
"#mmMicrs").kendoWindow({
1146 title:
"Member MICR",
1152 activate: EventOpenWindow,
1153 close: EventCloseWindow,
1155 this.wrapper.css({ top: 100 });
1157 }).data(
"kendoWindow");
1159 mmDiscard = $(
"#mmDiscard").kendoDialog({
1160 title:
"Discard Changes",
1166 show: EventOpenWindow,
1167 close: EventCloseWindow,
1170 action:
function() { mmAction =
"discardDeny"; }
1172 { text:
"Yes", primary:
true,
1173 action:
function() { mmAction =
"discardConfirm"; }
1176 }).data(
"kendoDialog");
1178 mmEmpty = $(
"#mmEmpty").kendoDialog({
1179 title:
"Empty Fields",
1185 show: EventOpenWindow,
1186 close: EventCloseWindow,
1188 { text:
"Ok", primary:
true }
1190 }).data(
"kendoDialog");
1192 mmDuplicates = $(
"#mmDuplicates").kendoDialog({
1193 title:
"Duplicate Values",
1199 show: EventOpenWindow,
1200 close: EventCloseWindow,
1202 { text:
"Ok", primary:
true }
1204 }).data(
"kendoDialog");
1206 mmUpdate = $(
"#btnUpdate");
1207 mmCancel = $(
"#lnkCancel");
1208 mmStatus = $(
"#mmStatus");
1211 mmCoreInfoGrid= $(
"#mmCoreInfoGrid").kendoGrid({
1218 kendoId: {type:
"number"},
1219 account: {type:
"string"},
1220 coreMicr: {type:
"string"}
1226 {field:
"account", title:
"Account", width:
"400px", attributes: {
"class":
"showEllipsis" }},
1227 {field:
"coreMicr", title:
"Core MICR"}
1229 }).data(
"kendoGrid");
1231 mmMicrGrid = $(
"#mmMicrGrid").kendoGrid({
1235 dataBound:
function() {
1236 $(
"#mmMicrGrid input[type=checkbox]").off();
1237 $(
"#mmMicrGrid input[type=checkbox]").change(EventCheckBoxChange);
1239 $(
"td[name='eCheck'] input").each(
function() { <?php
1240 var name= $(
this).closest(
"td").attr(
"name");
1241 $(
this).kendoNumericTextBox({
1242 spinners:
false, <?php
1244 restrictDecimals:
true,
1246 placeholder:
"Enter a check number",
1249 change:
function() { <?php
1250 var tr= $(this.wrapper).closest(
"tr");
1251 var dataItem= mmMicrGrid.dataItem(tr);
1252 dataItem.dirty=
true;
1253 dataItem.eDirty=
true;
1254 dataItem[name]= this.value();
1259 $(
"td[name='eMicr'] input").each(
function() { <?php
1260 var name= $(
this).closest(
"td").attr(
"name");
1261 $(
this).kendoMaskedTextBox({
1263 mask:
"<?php echo str_repeat('0', GetMicrSize()); ?>",
1264 placeholder:
"Enter a micr value",
1265 change:
function() { <?php
1266 var tr= $(this.wrapper).closest(
"tr");
1267 var dataItem= mmMicrGrid.dataItem(tr);
1268 dataItem.dirty=
true;
1269 dataItem.eDirty=
true;
1270 dataItem[name]= this.value();
1275 change:
function() {
1276 var cell = this.select();
1277 var cellIndex = cell.index();
1278 var row = cell.closest(
"tr");
1279 var rowIndex = row[0].rowIndex;
1280 var rowItem = mmMicrGrid.dataItem(row);
1285 oAcct:
" ", oRt:
" ", oMicr:
" ", oCheck:
"0", oaMicr:
" ",
1286 eAcct:
" ", eRt:
" ", eMicr:
" ", eCheck:
"0", eaMicr:
" ",
1287 eDirty:
false, eDelete:
false,
1288 eNew:
true, eAdd:
false 1291 if (mmDataAccounts.length == 2) {
1292 rowNew.oAcct = mmDataAccounts[1].value;
1293 rowNew.eAcct = mmDataAccounts[1].value;
1296 if (mmDataNumbers.length == 2) {
1297 rowNew.oRt = mmDataNumbers[1].value;
1298 rowNew.eRt = mmDataNumbers[1].value;
1301 mmMicrGrid.dataSource.insert(rowIndex, rowNew);
1302 EventPreservState();
1304 if (cellIndex == 0) {
1307 mmMicrGrid.dataSource.remove(rowItem);
1308 EventPreservState();
1310 var box = cell.find(
"input[type=checkbox]")[0];
1311 $(box).trigger(
"click");
1317 $(cell).removeClass(
"k-state-selected");
1323 template:
"#if(eAdd){#<span class=\"fa fa-plus\"></span>#}else if(eNew){#<span class=\"fa fa-minus\"></span>#}else{#<input type=\"checkbox\" style=\"margin-top: -2px;\" />#}#",
1324 headerTemplate:
"<input type=\"checkbox\" style=\"margin-top: -2px;\" id=\"chk_ALL\" />" },
1325 { field:
"eAcct", title:
"Account", editor: EditorDropDown, width:
"400px",
1326 attributes: {
"name":
"eAcct",
"class":
"showEllipsis" },
1327 template:
"#if(eAdd){#<span>Add Row</span>#}else if(eAcct.trim() == \"\"){#<span>Select an account</span>#}else{##=eAcct##}#" },
1328 { field:
"eRt", title:
"R/T", editor: EditorDropDown, attributes: {
"name":
"eRt" },
1329 template:
"#if(eAdd){#<span></span>#}else if(eRt.trim() == \"\"){#<span>Select an r/t number</span>#}else{##=eRt##}#"},
1330 { field:
"eaMicr", title:
"Core MICR", editable:
function() {
return false; },
template:
"#if (eAdd) { #<span></span># } else { # #=eaMicr# # } #", attributes: {
"name" :
"eaMicr"}},
1331 { field:
"eMicr", title:
"MICR #", editable:
function() {
return false; },
1332 attributes: {
"name":
"eMicr" },
1333 template:
"#if(eAdd){#<span></span>#}else {#<span><input id='mtb_#=oId#_1' class='hcu-all-100' value='#=eMicr#'></span>#}#"},
1336 { field:
"eCheck", title:
"Starting Check #", editable:
function() {
return false; },
1337 attributes: {
"name":
"eCheck" },
1338 template:
"#if(eAdd){#<span></span>#}else {#<span><input id='ntb_#=oId#_2' class='hcu-all-100' value='#=eCheck#'></span>#}#"}
1340 }).data(
"kendoGrid");
1345 jQuery.extend(jQuery.expr[
':'], {
1346 overflown: function (el) {
1347 return el.offsetHeight < el.scrollHeight || el.offsetWidth < el.scrollWidth;
1351 mmMicrTip = homecuTooltip.defaults;
1352 mmMicrTip.filter =
".showEllipsis:overflown, .vsgDisabled";
1353 mmMicrTip.content = EventShowTip
1354 $(
"#mmMicrGrid").kendoTooltip(mmMicrTip);
1357 var InitDataActions =
function() {
1359 mmUpdate.on(
"click",
function() { mmAction =
"micrsUpdate"; mmMicrs.close(); });
1361 mmCancel.on(
"click",
function() { mmMicrs.close(); });
1364 this.Open =
function(windowStack) {
1366 $.homecuValidator.setup({
1367 formStatusField:
"status",
1368 formValidate:
"mmMicrs" 1371 mmCardWindows = windowStack;
1372 var memberRequest = {
1373 operation:
"memberReadMicrs",
1377 mmDataSource.transport.options.read.type =
"POST";
1378 mmDataSource.read(memberRequest);
1381 this.Close =
function() {
1383 mmDiscard.destroy();
1385 mmDuplicates.destroy();
1388 this.Data =
function(payload, member) {
1389 mmPayload = payload;
1393 this.Init =
function(hubCall, cardContainer) {
1395 mmCardContainer = cardContainer;
1401 mmCall(
"MemberMicr",
this);