15 require_once(dirname(__FILE__) .
'/../library/permissions.i');
19 $serviceShowInfo =
true;
20 $serviceLoadMenu =
true;
21 $serviceShowMenu =
true;
24 require_once(dirname(__FILE__) .
'/../library/hcuService.i');
25 require_once(dirname(__FILE__) .
'/../library/hcuExternalAccts.i');
37 $chome = $HB_ENV[
"chome"];
38 $Flang = $HB_ENV[
"Flang"];
45 HCU_ImportVars($inputVars,
"", $varOk);
48 require_once(dirname(__FILE__) .
'/../includes/hcuPreContent.i');
51 PermCheckFeatureScreen($dbh, $HB_ENV, $MC, FEATURE_EXTERNAL_TRANSFERS,
'create');
54 $featureEnabled = Check_ExternalTransfersEnabled( $dbh, $HB_ENV );
55 if ( $featureEnabled !==
true ) {
57 throw new Exception( HCU_JsonEncode( $MC->msg(
'Option not set', HCU_DISPLAY_AS_HTML) ), 915 );
61 $permissionInputs = array(
"feature" => FEATURE_EXTERNAL_TRANSFERS );
62 $accessRights = Perm_AccessRights( $dbh, $HB_ENV, $permissionInputs );
64 if ( !$accessRights[
"create"] ) {
66 throw new Exception( HCU_JsonEncode( $MC->msg(
'Rights not set', HCU_DISPLAY_AS_HTML) ), 915 );
70 $limits = Perm_GetValidationLimits( $dbh, $HB_ENV, $permissionInputs );
72 if ( $limits ===
false || !isset( $limits[
"count_per_day"] ) || !isset( $limits[
"group"][
"count_per_day"] ) ) {
76 $allowedCount = intval( $limits[
"count_per_day"] );
79 $Fset = $HB_ENV[
"Fset"];
82 $noticesAry = Get_NoticeInfo($dbh, $HB_ENV, $MC,
"D",
"extAccountNotice",
true);
84 $hasNoticeEXT =
false;
85 $hasNoticePopupEXT =
false;
87 $noticeLinkDisplayEXT =
"";
89 if ( $noticesAry[
"status"][
"code"] ==
"000" && HCU_array_key_exists(
'0', $noticesAry[
'notice'])) {
90 if ($noticesAry[
"notice"][0][
"notice_id"] ) {
92 $noticeLinkDisplayEXT = $noticesAry[
"notice"][0][
"notice_linkdisplay"];
94 $noticeOption = $noticesAry[
'notice'][0];
96 $noticeOptions = Array (
97 'docsid' => $noticeOption[
'notice_id'],
98 'docstype' => $noticeOption[
'notice_type'],
101 'expireTime' => mktime() + 86400
104 $encryptedDocDetails= HCU_PayloadEncode($HB_ENV[
'Cu'], $noticeOptions);
106 $noticeOptions[
'noticeOnly'] = 1;
108 $encryptedDocDetailsNoticeOnly= HCU_PayloadEncode($HB_ENV[
'Cu'], $noticeOptions);
112 $noticeURLEXT = $HB_ENV[
'homebankingpath'] .
'/hcuViewNotice.prg?cu=' . $HB_ENV[
'cu'] .
'&x=' . urlencode($encryptedDocDetails);
115 $noticeURLNoticeOnly = $HB_ENV[
'homebankingpath'] .
'/hcuViewNotice.prg?cu=' . $HB_ENV[
'cu'] .
'&x=' . urlencode($encryptedDocDetailsNoticeOnly);
118 $hasNoticePopupEXT = $noticeOption[
"notice_popup"] ? true :
false;
123 $noticesAry = Get_NoticeInfo($dbh, $HB_ENV, $MC,
"D",
"extAccountTerms",
true);
125 $hasTermsEXT =
false;
126 $hasTermsPopupEXT =
false;
128 $termsLinkDisplayEXT =
"";
130 if ( $noticesAry[
"status"][
"code"] ==
"000" && HCU_array_key_exists(
'0', $noticesAry[
'notice'])) {
131 if ($noticesAry[
"notice"][0][
"notice_id"] ) {
133 $noticeOption = $noticesAry[
'notice'][0];
135 $noticeOptions = Array (
136 'docsid' => $noticeOption[
'notice_id'],
137 'docstype' => $noticeOption[
'notice_type'],
140 'expireTime' => mktime() + 86400
143 $encryptedDocDetails= HCU_PayloadEncode($HB_ENV[
'Cu'], $noticeOptions);
145 $noticeOptions[
'noticeOnly'] = 1;
147 $encryptedDocDetailsNoticeOnly= HCU_PayloadEncode($HB_ENV[
'Cu'], $noticeOptions);
151 $termsURLEXT = $HB_ENV[
'homebankingpath'] .
'/hcuViewNotice.prg?cu=' . $HB_ENV[
'cu'] .
'&x=' . urlencode($encryptedDocDetails);
154 $termsURLNoticeOnly = $HB_ENV[
'homebankingpath'] .
'/hcuViewNotice.prg?cu=' . $HB_ENV[
'cu'] .
'&x=' . urlencode($encryptedDocDetailsNoticeOnly);
157 $hasTermsPopupEXT = $noticeOption[
"notice_popup"] ? true :
false;
159 $termsButtonText = $noticeOption[
"notice_linkdisplay"];
169 $accountTypes = array( array(
"type" => ACCOUNT_TYPE_CHECKING,
"display" => $MC->msg(
"ACH Checking", HCU_DISPLAY_AS_HTML) ),
170 array(
"type" => ACCOUNT_TYPE_SAVINGS,
"display" => $MC->msg(
"ACH Savings", HCU_DISPLAY_AS_HTML) )
174 <div
class=
"col-xs-12" style=
'font-size:12px;'>
175 <div
id=
"hcuAchTables" class=
"k-content" style=
"max-width:700px;"></div>
176 <!--
set up the array with status names -->
177 <?php $statuses = Get_ExternalTransferStatusLookup( $MC ); ?>
182 var achAccountTypes = <?php echo HCU_JsonEncode( $accountTypes ); ?>;
183 var extStatusLookup = <?php echo HCU_JsonEncode( $statuses ) ?>;
184 var extGridList = [];
186 var addAccountDialog;
187 var window_stack = [];
189 var extValidateDialog;
194 var terms = <?php echo HCU_JsonEncode($hasTermsEXT && $hasTermsPopupEXT); ?>;
195 var notice = <?php echo HCU_JsonEncode($hasNoticeEXT && $hasNoticePopupEXT); ?>;
198 function ShowStatus( statusMessage ) {
199 $.homecuValidator.settings.formStatusField =
"formStatus";
200 $.homecuValidator.settings.formInfoTitle =
"";
201 $.homecuValidator.displayMessage(statusMessage);
204 function GetExternalAccounts( ) {
205 var request = { action:
"get_accounts" };
207 dsHelper.read( request );
211 function LaunchValidationDialog(
id ) {
213 for ( var i = 0; i < extGridList.length; i++ ) {
214 if ( extGridList[i].
id ==
id ) {
215 ShowValidationInput( extGridList[i] );
222 function LaunchUpdateDialog(
id ) {
224 for ( var i = 0; i < extGridList.length; i++ ) {
225 if ( extGridList[i].
id ==
id ) {
226 ShowExtAcctDetail( extGridList[i] );
233 function ShowExtAcctDetail( detailInfo ) {
235 updateAccountModel.ResetModel();
236 updateAccountModel.set(
"extAcctId", detailInfo.id );
237 updateAccountModel.set(
"extName", detailInfo.displayName );
238 updateAccountModel.set(
"extNameOnAccount", detailInfo.nameOnAccount );
241 "<div id='editFormStatus' class='homecu-formStatus k-block k-error-colored' style='display:none; margin-bottom:10px;max-width:800px;'></div>" +
242 "<div id='extAcctUpdate' class='well well-sm form-horizontal'>" +
243 "<div class='form-group'>" +
244 "<label class='col-xs-12 col-sm-5' for='extNameUpdate'><?php echo $MC->msg("EXT Display Name
", HCU_DISPLAY_AS_JS) ?></label>" +
245 "<div class='col-xs-12 col-sm-7'>" +
246 "<input id='extNameUpdate' \ 247 name='extNameUpdate' \ 249 data-bind='value: extName, events:{change: setDirty}' \ 250 placeholder='<?php echo $MC->msg("ACH Required
", HCU_DISPLAY_AS_JS) ?>' \ 252 class='k-textbox k-autocomplete hcu-all-100' \ 254 validationMessage = '<?php echo $MC->msg("EXT Display Name required
", HCU_DISPLAY_AS_JS) ?>' \ 255 autocomplete='off' />" +
258 "<div class='form-group'>" +
259 "<label class='col-xs-12 col-sm-5' for='extNameOnAcctUpdate'><?php echo $MC->msg("EXT Name On Account
", HCU_DISPLAY_AS_JS) ?></label>" +
260 "<div class='col-xs-12 col-sm-7'>" +
261 "<input id='extNameOnAcctUpdate' \ 262 name='extNameOnAcctUpdate' \ 264 data-bind='value: extNameOnAccount, events:{change: setDirty}' \ 265 placeholder='<?php echo $MC->msg("ACH Required
", HCU_DISPLAY_AS_JS) ?>' \ 267 class='k-textbox k-autocomplete hcu-all-100' \ 269 validationMessage = '<?php echo $MC->msg("EXT Name On Account required
", HCU_DISPLAY_AS_JS) ?>' \ 270 autocomplete='off'/>" +
273 "<div class='form-group'>" +
274 "<label class='col-xs-12 col-sm-5'><?php echo $MC->msg("Status
", HCU_DISPLAY_AS_JS) ?></label>" +
275 "<div class='col-xs-12 col-sm-7'>" + detailInfo.statusName +
"</div>" +
277 "<div class='form-group'>" +
278 "<label class='col-xs-12 col-sm-5'><?php echo $MC->msg("Account
", HCU_DISPLAY_AS_JS) ?></label>" +
279 "<div class='col-xs-12 col-sm-7'>" + detailInfo.account +
"</div>" +
281 "<div class='form-group'>" +
282 "<label class='col-xs-12 col-sm-5'><?php echo $MC->msg("Type
", HCU_DISPLAY_AS_JS) ?></label>" +
283 "<div class='col-xs-12 col-sm-7'>" + detailInfo.type +
"</div>" +
286 "<div class=\"hcu-template\">" +
287 "<div class=\"hcu-edit-buttons k-state-default\">" +
288 "<span class=\"hcu-icon-delete\">" +
289 "<a href=\"##\" id=\"lnkDelete\">" +
290 "<i class=\"fa fa-trash fa-lg\"></i>" +
293 "<a href=\"##\" id=\"lnkCancel\"><?php echo $MC->msg('Cancel', HCU_DISPLAY_AS_JS); ?></a>" +
295 "<a href=\"##\" id=\"btnUpdate\" class=\"k-button k-primary\">" +
296 "<i class=\"fa fa-check fa-lg\"></i><?php echo $MC->msg('Update', HCU_DISPLAY_AS_JS); ?>" +
301 extDetailDialog.content(content);
302 $.homecuValidator.setup( {formStatusField:
"editFormStatus", formValidate:
"extAcctUpdate"} );
303 kendo.bind($(
"#extAcctUpdate"), updateAccountModel);
304 extDetailDialog.center();
305 extDetailDialog.open();
309 function ShowValidationInput( detailInfo ) {
311 updateAccountModel.ResetModel();
312 updateAccountModel.set(
"extAcctId", detailInfo.id );
314 updateAccountModel.set(
"retries", detailInfo.retries );
315 updateAccountModel.set(
"pendingDate", detailInfo.pendingDate );
319 "<div id='validateFormStatus' class='homecu-formStatus k-block k-error-colored' style='display:none; margin-bottom:10px;max-width:800px;'></div>" +
320 "<div id='extAcctValidate' class='well well-sm form-horizontal'>" +
321 "<div class='form-group'>" +
322 "<div class='col-xs-12 hcu-secondary-text'><?php echo $MC->msg("EXT Validate message
", HCU_DISPLAY_AS_JS) ?></div>" +
324 "<div class='form-group'>" +
325 "<label class='col-xs-12 col-sm-7' for='textNameUpdate'><?php echo $MC->msg("EXT Micro First
", HCU_DISPLAY_AS_JS) ?></label>" +
326 "<div class='col-xs-2 col-sm-1 leading-zero-fontsize local-align-leading-zero'>$0.</div>" +
327 "<div class='col-xs-4 col-sm-4'>" +
328 "<input id='extMicro1' \ 331 data-bind='value: extMicro1' \ 333 class='hcu-all-100 validation-entry' \ 335 validationMessage = '<?php echo $MC->msg("EXT Micro required
", HCU_DISPLAY_AS_JS) ?>' \ 336 autocomplete='off' />" +
339 "<div class='form-group'>" +
340 "<label class='col-xs-12 col-sm-7' for='extMicro2'><?php echo $MC->msg("EXT Micro Second
", HCU_DISPLAY_AS_JS) ?></label>" +
341 "<div class='col-xs-2 col-sm-1 leading-zero-fontsize local-align-leading-zero'>$0.</div>" +
342 "<div class='col-xs-4 col-sm-4'>" +
343 "<input id='extMicro2' \ 346 data-bind='value: extMicro2' \ 348 class='hcu-all-100 validation-entry' \ 350 validationMessage = '<?php echo $MC->msg("EXT Micro required
", HCU_DISPLAY_AS_JS) ?>' \ 351 autocomplete='off' />" +
354 "<div class='form-group'>" +
355 "<label class='col-xs-12 col-sm-7' for='textNameUpdate'><?php echo $MC->msg("EXT Retries Left
", HCU_DISPLAY_AS_JS) ?></label>" +
356 "<div class='col-xs-12 col-sm-5 leading-zero-fontsize'><span data-bind='text: retries'></span></div>" +
358 "<div class='form-group'>" +
359 "<label class='col-xs-12 col-sm-7' for='textNameUpdate'><?php echo $MC->msg("EXT Date Started
", HCU_DISPLAY_AS_JS) ?></label>" +
360 "<div class='col-xs-12 col-sm-5'><span data-bind='text: pendingDate'></span></div>" +
363 "<div class=\"hcu-template\">" +
364 "<div class=\"hcu-edit-buttons k-state-default\">" +
365 "<a href=\"##\" id=\"lnkCancel\"><?php echo $MC->msg("Cancel
", HCU_DISPLAY_AS_JS); ?></a>" +
367 "<a href=\"##\" id=\"btnUpdate\" class=\"k-button k-primary\">" +
368 "<i class=\"fa fa-check fa-lg\"></i><?php echo $MC->msg("Update
", HCU_DISPLAY_AS_JS); ?>" +
373 extValidateDialog.content(content)
374 $.homecuValidator.setup( {formStatusField:
"validateFormStatus", formValidate:
"extAcctValidate"} );
375 kendo.bind($(
"#extAcctValidate"), updateAccountModel);
376 extValidateDialog.center();
377 extValidateDialog.open();
382 function HandleGetAccounts( accountInfo ) {
383 var hasPending =
false;
386 for ( var i = 0; i < accountInfo.length; i++ ) {
387 var remoteInfo = JSON.parse( accountInfo[i].remote_info );
388 var remoteAccount = accountInfo[i][
"remoteAccount"];
391 var verificationStart =
"";
392 var linkStr =
"<a title='<?php echo $MC->msg("EXT Edit Account Info
", HCU_DISPLAY_AS_JS) ?>' href='javascript:LaunchUpdateDialog(" + accountInfo[i].id +
")'><div class='fa fa-pencil text-primary'></div></a>";
393 linkStr +=
"<span class='hcu-icon-spacer'></span>";
394 if ( accountInfo[i].status ==
'p' ) {
395 retries = remoteInfo[
"verify"][
"tries"];
396 verificationStart = remoteInfo[
"verify"][
"pending_date"];
397 linkStr +=
"<a title='<?php echo $MC->msg("EXT Validate Account
", HCU_DISPLAY_AS_JS) ?>' href='javascript:LaunchValidationDialog(" + accountInfo[i].id +
")'><div class='fa fa-flag text-info'></div></a>";
398 }
else if ( accountInfo[i].status ==
'a' ) {
399 linkStr +=
"<div class='fa fa-check text-success'></div>";
400 }
else if ( accountInfo[i].status ==
'i' ) {
401 linkStr +=
"<div class='fa fa-ban text-danger'></div>";
402 }
else if ( accountInfo[i].status ==
'l' ) {
404 linkStr +=
"<div class='fa fa-lock text-danger'></div>";
406 linkStr +=
"<div class='fa fa-question text-danger'></div>";
410 id: accountInfo[i].id,
411 userId: accountInfo[i].user_id,
412 displayName: accountInfo[i].display_name,
413 nameOnAccount: accountInfo[i].name_on_account,
414 status: accountInfo[i].status,
415 statusName: extStatusLookup[accountInfo[i].status],
417 account: remoteAccount,
418 type: (remoteInfo.rdfi.type == 20 ?
419 "<?php echo $MC->msg("ACH Savings
", HCU_DISPLAY_AS_JS) ?>" :
420 "<?php echo $MC->msg("ACH Checking
", HCU_DISPLAY_AS_JS) ?>"),
422 pendingDate: verificationStart
425 extGridList.push( newObject );
428 if ( accountInfo[i].status ==
'p' ) {
433 $(
"#extValidationMsg").show();
435 $(
"#extValidationMsg").hide();
440 extAcctGrid.dataSource.data(extGridList);
444 function HandleUpdateAccount( updateInfo ) {
445 var idValidated = updateInfo[
"id"];
448 for ( var i = 0; i < extGridList.length; i++ ) {
449 if ( extGridList[i].
id == idValidated ) {
450 extGridList[i].displayName = updateInfo[
"display_name"];
451 extGridList[i].nameOnAccount = updateInfo[
"name_on_account"];
457 extAcctGrid.dataSource.data(extGridList);
461 function HandleValidateAccount( validationInfo ) {
462 var idValidate = validationInfo[
"id"];
465 for ( var i = 0; i < extGridList.length; i++ ) {
466 if ( extGridList[i].
id == idValidate ) {
468 if ( validationInfo[
"status"] ==
"p" || validationInfo[
"status"] ==
"l" ) {
470 $.homecuValidator.displayMessage( validationInfo[
"message"], $.homecuValidator.settings.statusError );
471 extGridList[i].retries = validationInfo[
"tries"];
472 updateAccountModel.set(
"retries", validationInfo[
"tries"] );
473 if ( validationInfo[
"status"] ==
"l" ) {
474 extGridList[i].status = validationInfo[
"status"];
475 extGridList[i].statusName = extStatusLookup[validationInfo[
"status"]];
476 var linkStr =
"<a title='<?php echo $MC->msg("EXT Edit Account Info
", HCU_DISPLAY_AS_JS) ?>' href='javascript:LaunchUpdateDialog(" + idValidate +
")'><div class='fa fa-pencil text-primary'></div></a><span class='hcu-icon-spacer'></span><div class='fa fa-lock text-danger'></div>";
478 extGridList[i].linksStr = linkStr;
480 }
else if ( validationInfo[
"status"] ==
"a" ) {
481 extGridList[i].status = validationInfo[
"status"];
482 extGridList[i].statusName = extStatusLookup[validationInfo[
"status"]];
484 var linkStr =
"<a title='<?php echo $MC->msg("EXT Edit Account Info
", HCU_DISPLAY_AS_JS) ?>' href='javascript:LaunchUpdateDialog(" + idValidate +
")'><div class='fa fa-pencil text-primary'></div></a><span class='hcu-icon-spacer'></span><div class='fa fa-check text-success'></div>";
485 extGridList[i].linksStr = linkStr;
487 $.homecuValidator.displayMessage( validationInfo[
"message"] );
495 extAcctGrid.dataSource.data(extGridList);
499 function HandleDeleteAccount( idToDelete ) {
501 for ( var i = 0; i < extGridList.length; i++ ) {
502 if ( extGridList[i].
id == idToDelete ) {
503 extGridList.splice(i, 1);
509 extAcctGrid.dataSource.data(extGridList);
513 function InitDataSources() {
514 dsHelper =
new kendo.data.DataSource({
519 url:
'hcuExternalAccts.data?cu=<?php echo $HB_ENV['cu
']; ?>',
521 contentType:
"application/x-www-form-urlencoded",
527 parse:
function(response) {
533 requestStart:
function( e ) {
536 requestEnd:
function( e ) {
542 if ( e.response && e.response.Results ) {
543 results = e.response.Results;
546 if ( results && results.homecuErrors )
547 error = results.homecuErrors;
549 if ( error && error.length > 0 ) {
552 dsHelper.cancelChanges();
554 $.homecuValidator.displayMessage(error, $.homecuValidator.settings.statusError);
557 if ( results && results.homecuInfo && (results.homecuInfo.length > 0) ) {
558 ShowStatus( results.homecuInfo );
562 if ( results && results.homecuData ) {
563 if ( results.homecuData.get_accounts ) {
564 HandleGetAccounts( results.homecuData.get_accounts);
565 }
else if ( results.homecuData.add_account ) {
567 addAccountDialog.close();
570 $.homecuValidator.settings.formStatusField =
"formStatus";
573 HandleGetAccounts( results.homecuData.add_account );
574 }
else if ( results.homecuData.update_account ) {
576 extDetailDialog.close();
579 $.homecuValidator.settings.formStatusField =
"formStatus";
582 HandleUpdateAccount( results.homecuData.update_account );
583 }
else if ( results.homecuData.validate_account ) {
585 if ( results.homecuData.validate_account[
"status"] ==
"a" ) {
587 extValidateDialog.close();
590 $.homecuValidator.settings.formStatusField =
"formStatus";
594 HandleValidateAccount( results.homecuData.validate_account );
595 }
else if ( results.homecuData.delete_account ) {
597 extDetailDialog.close();
600 $.homecuValidator.settings.formStatusField =
"formStatus";
603 HandleDeleteAccount( results.homecuData.delete_account );
610 error =
"<?php echo $MC->msg("Transport error
", HCU_DISPLAY_AS_JS) ?>";
611 $.homecuValidator.displayMessage(error, $.homecuValidator.settings.statusError);
617 error:
function( e ) {
622 function InitDataViews() {
623 addAccountModel = kendo.observable({
625 extNameOnAccount:
"",
629 extDFISelectedType:
"",
631 ResetModel:
function () {
632 this.
set(
"extName",
"" );
633 this.
set(
"extNameOnAccount",
"" );
634 this.
set(
"extDFIRouting",
"" );
635 this.
set(
"extDFIAccount",
"" );
636 this.
set(
"extDFIConfirm",
"" );
637 this.
set(
"extDFISelectedType",
"" );
638 this.
set(
"dirtyFlag", false );
640 setDirty:
function(e) {
641 this.
set(
"dirtyFlag", true );
643 SendToServer:
function () {
644 var action =
"add_account";
647 display_name: this.extName,
648 name_on_account: this.extNameOnAccount,
649 dfi_routing: this.extDFIRouting,
650 dfi_account: this.extDFIAccount,
651 dfi_account_type: this.extDFISelectedType
654 dsHelper.read( request );
658 updateAccountModel = kendo.observable({
661 extNameOnAccount:
"",
667 ResetModel:
function () {
668 this.
set(
"extAcctId", 0 );
669 this.
set(
"extName",
"" );
670 this.
set(
"extNameOnAccount",
"" );
671 this.
set(
"extMicro1",
"" );
672 this.
set(
"extMicro2",
"" );
673 this.
set(
"dirtyFlag", false );
675 setDirty:
function(e) {
676 this.
set(
"dirtyFlag", true );
678 SendToServer:
function () {
679 var action =
"update_account";
683 display_name: this.extName,
684 name_on_account: this.extNameOnAccount
687 dsHelper.read( request );
689 SendMicros:
function () {
690 var action =
"validate_account";
694 micro1: this.extMicro1,
695 micro2: this.extMicro2
698 dsHelper.read( request );
703 $.homecuValidator.setup({formErrorTitle:
"<?php echo $MC->msg("Error Occurred
", HCU_DISPLAY_AS_JS) ?>"});
705 extAcctGrid = $(
'#extAcctGrid').kendoGrid({
707 dataSource: extGridList,
711 toolbar: kendo.template($(
"#gridToolbar").html()),
712 noRecords: {
template:
"<span class='hcu-secondary-text'><?php echo $MC->msg("EXT No Accounts
", HCU_DISPLAY_AS_JS) ?></span>"},
716 template:
"#= data.linksStr #",
718 { field:
"displayName",
719 title:
"<?php echo $MC->msg("Name
", HCU_DISPLAY_AS_JS) ?>" },
720 { field:
"statusName",
721 title:
"<?php echo $MC->msg("Status
", HCU_DISPLAY_AS_JS) ?>",
723 minScreenWidth: 567 },
725 title:
"<?php echo $MC->msg("ACH Account Info
", HCU_DISPLAY_AS_JS) ?>",
726 minScreenWidth: 374 }
728 change:
function(e) {
730 $.homecuValidator.displayMessage(
"" );
732 var selectedCell = this.select();
733 var selectedRow = selectedCell.closest(
"tr");
734 var cellIndex = selectedCell.index();
737 var currSelectedItem = extAcctGrid.dataItem(selectedRow);
739 if ( cellIndex >= 1 ) {
740 ShowExtAcctDetail( currSelectedItem );
743 selectedCell.removeClass(
"k-state-selected" );
745 }).data(
'kendoGrid');
747 var maxHeight = parseInt($(window).height() * .9, 10);
748 var widthDialog = parseInt($(window).width() * .8, 10);
749 var addAccountTemplate = $(
"#addAccountTemplate").html();
750 addAccountDialog = $(addAccountTemplate).kendoWindow({
754 maxHeight: maxHeight,
758 title:
"<?php echo $MC->msg("ACH Account Info
", HCU_DISPLAY_AS_JS) ?>",
759 activate:
function() {
761 window_stack.push(
function(e) {
762 if ( addAccountModel.dirtyFlag ) {
763 discardDialog.open();
765 addAccountDialog.close(e);
770 $.homecuValidator.setup({formValidate:
"addAccountDialog", formStatusField:
'addFormStatus'});
773 addAccountModel.ResetModel();
776 $(
'#addAccountDialog').css(
'overflow',
'');
779 if (!$(
"#achAccountType").data(
"kendoDropDownList")) {
780 $(
"#achAccountType").kendoDropDownList({
781 dataTextField:
"display",
782 dataValueField:
"type",
783 dataSource: achAccountTypes,
784 optionLabel: {type:
"", display:
"<?php echo $MC->msg("ACH Select Type
", HCU_DISPLAY_AS_JS) ?>"},
789 if (!$(
"#singleRecipientRouting").data(
"kendoMaskedTextBox")) {
790 $(
"#singleRecipientRouting").kendoMaskedTextBox({
792 clearPromptChar:
true 797 kendo.bind($(
"#addAccountDialog"), addAccountModel);
800 $(
"#addAccountDialog #btnUpdate").on(
"click",
function(e) {
804 var otherErrors = Array();
806 if ( addAccountModel.extDFIRouting.replace(/_/g,
'').length != 9 || !(/^\d+$/.test(addAccountModel.extDFIRouting)) ) {
808 otherErrors.push( $(
"#singleRecipientRouting").attr(
"validationMessage" ) );
810 if ( addAccountModel.extDFIAccount.length < 1 ) {
812 otherErrors.push( $(
"#singleRecipientAccount").attr(
"validationMessage" ) );
814 if ( addAccountModel.extDFIAccount !== addAccountModel.extDFIConfirm ) {
816 otherErrors.push( $(
"#singleRecipientConfirm").attr(
"data-homecuCustomEquals-msg" ) );
818 if ( addAccountModel.extDFISelectedType ===
"" ) {
820 otherErrors.push( $(
"#achAccountType").attr(
"validationMessage" ) );
823 $.homecuValidator.validate();
824 var totalErrors = $.homecuValidator.homecuKendoValidator.errors();
827 for (var i = 0; i < otherErrors.length; i++) {
828 if ($.inArray(otherErrors[i], totalErrors) == -1) {
829 totalErrors.push(otherErrors[i]);
833 if (totalErrors.length > 0) {
834 $.homecuValidator.displayMessage(totalErrors, $.homecuValidator.settings.statusError);
837 $.homecuValidator.settings.formStatusField =
"addFormStatus";
839 if ( addAccountModel.dirtyFlag ) {
841 addAccountModel.SendToServer();
851 $(
"#addAccountDialog #lnkCancel").on(
"click",
function(e) {
853 discardDialog.open();
861 $(
"#addAccountDialog #btnUpdate").off();
862 $(
"#addAccountDialog #lnkCancel").off();
864 }).data(
"kendoWindow");
866 var maxHeight = parseInt($(window).height() * .9, 10);
867 extDetailDialog = $(
"#extDetailDialog").kendoWindow({
871 title:
"<?php echo $MC->msg("EXT Edit Account Info
", HCU_DISPLAY_AS_JS) ?>",
872 maxHeight: maxHeight,
875 activate:
function() {
877 window_stack.push(
function(e) {
878 if ( updateAccountModel.dirtyFlag ) {
879 discardDialog.open();
881 extDetailDialog.close(e);
886 $(
"#extNameUpdate").blur();
889 $(
"#extDetailDialog #btnUpdate").on(
"click",
function(e) {
892 if ($.homecuValidator.validate()) {
893 if (updateAccountModel.dirtyFlag) {
894 updateAccountModel.SendToServer();
899 $(
"#extDetailDialog #lnkCancel").on(
"click",
function(e) {
901 if (updateAccountModel.dirtyFlag) {
902 discardDialog.open();
904 extDetailDialog.close();
908 $(
"#extDetailDialog #lnkDelete").on(
"click",
function(e) {
918 $(
"#extDetailDialog #lnkCancel").off();
919 $(
"#extDetailDialog #lnkDelete").off();
920 $(
"#extDetailDialog #btnUpdate").off();
922 }).data(
"kendoWindow");
924 extValidateDialog = $(
"#extValidateDialog").kendoWindow({
928 title:
"<?php echo $MC->msg("EXT Validate Account
", HCU_DISPLAY_AS_JS); ?>",
929 maxHeight: maxHeight,
932 activate:
function() {
934 $(
"#extNameUpdate").blur();
937 if (!$(
"#extMicro1").data(
"kendoNumericTextBox")) {
938 $(
"#extMicro1").kendoNumericTextBox({
945 if (!$(
"#extMicro2").data(
"kendoNumericTextBox")) {
946 $(
"#extMicro2").kendoNumericTextBox({
953 window_stack.push(
function(e) {
954 if ( updateAccountModel.dirtyFlag ) {
955 discardDialog.open();
957 extValidateDialog.close(e);
962 $(
".validation-entry").focus(
function() {
965 clearTimeout(input.data(
"selectTimeId"));
967 var selectTimeId = setTimeout(
function() {
971 input.data(
"selectTimeId", selectTimeId);
972 }).blur(
function(e) {
973 clearTimeout($(
this).data(
"selectTimeId"));
977 $(
"#extValidateDialog #btnUpdate").on(
"click",
function(e) {
980 if ( updateAccountModel.retries === 0 ) {
984 $.homecuValidator.displayMessage(
"");
987 var m1 = $(
"#extMicro1").data(
"kendoNumericTextBox");
988 var m2 = $(
"#extMicro2").data(
"kendoNumericTextBox");
989 if ($.homecuValidator.validate()) {
990 if (m1.value() > 0 && m2.value() > 0) {
992 updateAccountModel.SendMicros();
996 $.homecuValidator.displayMessage(
"<?php echo $MC->msg("EXT Micro required
", HCU_DISPLAY_AS_JS) ?>", $.homecuValidator.settings.statusError );
1000 $(
"#extValidateDialog #lnkCancel").on(
"click",
function(e) {
1002 if ( updateAccountModel.dirtyFlag ) {
1003 discardDialog.open();
1005 extValidateDialog.close();
1014 $(
"#extValidateDialog #lnkCancel").off();
1015 $(
"#extValidateDialog #btnUpdate").off();
1017 }).data(
"kendoWindow");
1019 deleteDialog = $(
"#deleteDialog").kendoDialog({
1021 title:
"<?php echo $MC->msg("Delete
", HCU_DISPLAY_AS_JS) ?>",
1022 content:
"<p><?php echo $MC->msg("EXT Continue
delete", HCU_DISPLAY_AS_JS) ?></p><p><?php echo $MC->msg("ACH Continue
", HCU_DISPLAY_AS_JS) ?></p>",
1025 window_stack.push(
function(e) {
1026 deleteDialog.close(e);
1029 close:
function(e) {
1033 actions: [{text:
"<?php echo $MC->msg("No
", HCU_DISPLAY_AS_JS) ?>"},
1035 text:
"<?php echo $MC->msg("Yes
", HCU_DISPLAY_AS_JS) ?>",
1036 action:
function(e){
1037 var request = { action:
"delete_account",
1038 id: updateAccountModel.extAcctId };
1040 dsHelper.read( request );
1047 }).data(
"kendoDialog");
1049 $(
"#extAddAccount").on(
"click",
function() {
1050 $.homecuValidator.setup( {formStatusField:
"addFormStatus", formValidate:
"addAccountDialog"} );
1051 addAccountModel.ResetModel();
1052 addAccountDialog.center();
1053 addAccountDialog.open();
1056 GetExternalAccounts();
1058 discardDialog = $(
"#discardDialog").kendoDialog({
1060 title:
"<?php echo $MC->msg("ACH Discard Changes?
", HCU_DISPLAY_AS_JS) ?>",
1061 content:
"<p><?php echo $MC->msg("ACH Discard changes warning
", HCU_DISPLAY_AS_JS) ?></p><p><?php echo $MC->msg("ACH Continue
", HCU_DISPLAY_AS_JS) ?></p>",
1064 window_stack.push(
function(e) {
1065 discardDialog.close(e);
1068 close:
function(e) {
1073 text:
"<?php echo $MC->msg("No
", HCU_DISPLAY_AS_JS) ?>",
1074 action:
function(e) {
1078 text:
"<?php echo $MC->msg("Yes
", HCU_DISPLAY_AS_JS) ?>",
1080 action:
function(e) {
1082 addAccountModel.ResetModel();
1083 updateAccountModel.ResetModel();
1089 var fn = window_stack[window_stack.length - 1];
1093 }).data(
"kendoDialog");
1096 function InitScreen() {
1101 $(
"#ach-payment").show();
1104 $(document).ready(
function() {
1106 ShowNotice(
'<?php echo $termsURLEXT; ?>',
"<?php echo $termsLinkDisplayEXT ?>",
1110 ShowNotice(
'<?php echo $noticeURLEXT; ?>',
"<?php echo $noticeLinkDisplayEXT ?>");
1117 var urlInit = window.location.href.substring(0, window.location.href.indexOf(
"hcu"));
1118 var urlCu =
"<?php echo $Cu ?>";
1119 var urlPage =
"hcuAccounts.prg";
1120 var urlRedirect = urlInit + urlPage +
"?cu=" + urlCu;
1122 window.location.replace(urlRedirect);
1125 }
else if (notice) {
1127 ShowNotice(
'<?php echo $noticeURLEXT; ?>',
"<?php echo $noticeLinkDisplayEXT ?>");
1134 $(document).on(
"click",
".k-overlay",
function (e) {
1135 if(window_stack.length > 0) {
1137 var fn = window_stack[window_stack.length - 1];
1145 <script
id=
"gridToolbar" type=
"text/x-kendo-template">
1146 <a
class=
"k-button" href=
"\#" onclick=
"return addAccountDialog.center().open()"><span
class=
"fa fa-plus"></span> <?php echo $MC->msg(
"EXT Add Account", HCU_DISPLAY_AS_JS) ?></a>
1147 <div
id=
"extValidationMsg" class=
"hcu-secondary-text" style=
"margin-top: 10px; display:none;"><?php echo $MC->combo_msg(
"EXT Click to validate", HCU_DISPLAY_AS_RAW,
"#validate_icon#",
"<span class='fa fa-flag'></span>"); ?></div>
1149 <script
id=
"addAccountTemplate" type=
"text/x-kendo-template">
1150 <div
id=
"addAccountDialog" class=
"container-fluid hcu-scrolling-dialog">
1151 <div
id=
"addFormStatus" class=
"homecu-formStatus k-block k-error-colored" style=
"display:none; margin-bottom:10px;max-width:800px;"></div>
1152 <div
class=
"well well-sm form-horizontal">
1153 <div
class=
"form-group">
1154 <div
class=
"col-xs-12 hcu-secondary-text"> <?php echo $MC->msg(
"EXT All Required", HCU_DISPLAY_AS_HTML); ?></div>
1156 <div
class=
"form-group">
1157 <label
for=
"singleDisplayName" class=
"col-xs-12 col-sm-4 control-label"><?php echo $MC->msg(
"ACH Display Name", HCU_DISPLAY_AS_HTML) ?></label>
1158 <div
class=
"col-xs-12 col-sm-6">
1160 id=
"singleDisplayName" 1161 name=singleDisplayName
" 1162 class="k-textbox hcu-all-100
" 1164 data-bind="value: extName, events:{change: setDirty}
" 1165 validationMessage="<?php echo $MC->msg(
"ACH Unique display name required", HCU_DISPLAY_AS_HTML) ?>
" 1169 <div class="form-group
"> 1170 <div class="col-xs-12 h4
"> <?php echo $MC->msg("ACH Remote Account
", HCU_DISPLAY_AS_HTML); ?></div> 1172 <div class="form-group
"> 1173 <label for="extNameOnAccount
" class="col-xs-12 col-sm-4 control-label
"><?php echo $MC->msg("EXT Name On Account
", HCU_DISPLAY_AS_HTML); ?><span class="required-field
"></label> 1174 <div class="col-xs-12 col-sm-6
"><input id="extNameOnAccount
" 1175 name="extNameOnAccount
" 1176 class="k-textbox hcu-all-100
" 1178 data-bind="value: extNameOnAccount, events:{change: setDirty}
" 1179 validationMessage="<?php echo $MC->msg(
"EXT Name On Account required", HCU_DISPLAY_AS_HTML); ?>
" 1182 <div class="form-group
"> 1183 <label for="singleRecipientRouting
" class="col-xs-12 col-sm-4 control-label
"><?php echo $MC->msg("ACH Routing Number
", HCU_DISPLAY_AS_HTML); ?><span class="required-field
"></label> 1184 <div class="col-xs-12 col-sm-6
"><input id="singleRecipientRouting
" 1185 name="singleRecipientRouting
" 1187 data-bind="value: extDFIRouting, events:{change: setDirty}
" 1190 validationMessage="<?php echo $MC->msg(
"ACH Routing number 9 digits", HCU_DISPLAY_AS_HTML); ?>
" 1193 <div class="form-group
"> 1194 <label for="singleRecipientAccount
" class="col-xs-12 col-sm-4 control-label
"><?php echo $MC->msg("ACH Account
", HCU_DISPLAY_AS_HTML) ?></label> 1195 <div class="col-xs-12 col-sm-6
"><input type="text
" 1196 name="singleRecipientAccount
" 1197 id="singleRecipientAccount
" 1198 class="k-textbox hcu-all-100 account-match
" 1200 data-bind="value: extDFIAccount, events:{change: setDirty}
" 1201 validationMessage="<?php echo $MC->msg(
'ACH Need remote account', HCU_DISPLAY_AS_HTML); ?>
" 1204 <div class="form-group
"> 1205 <label for="singleRecipientAccountConfirm
" class="col-xs-12 col-sm-4 control-label
"><?php echo $MC->msg('ACH Confirm Account', HCU_DISPLAY_AS_HTML); ?></label> 1206 <div class="col-xs-12 col-sm-6
"><input type="text
" 1207 id="singleRecipientConfirm
" 1208 name="singleRecipientConfirm
" 1209 class="k-textbox hcu-all-100 account-match
" 1211 homecu-equals="account-match
" 1212 data-homecuCustomEquals-msg="<?php echo $MC->msg(
'ACH Accounts no match', HCU_DISPLAY_AS_HTML); ?>
" 1213 data-bind="value: extDFIConfirm, events:{change: setDirty}
" 1214 validationMessage="<?php echo $MC->msg(
'Account Number Missing', HCU_DISPLAY_AS_HTML); ?>
" 1217 <div class="form-group
"> 1218 <label for="achAccountType
" class="col-xs-12 col-sm-4 control-label
"><?php echo $MC->msg('Account Type', HCU_DISPLAY_AS_HTML); ?></label> 1219 <div class="col-xs-12 col-sm-5
"><input id="achAccountType
" 1220 name="achAccountType
" 1222 data-bind="value: extDFISelectedType, events:{change: setDirty}
" 1223 validationMessage="<?php echo $MC->msg(
'ACH Need remote account type', HCU_DISPLAY_AS_HTML) ?>
" 1227 <div class="hcu-
template"> 1228 <div class="hcu-edit-buttons k-state-
default"> 1229 <a href="##
" id="lnkCancel
"><?php echo $MC->msg("Cancel
", HCU_DISPLAY_AS_HTML); ?></a> 1231 <a href="##
" id="btnUpdate
" class="k-button k-primary
"> 1232 <i class="fa fa-check fa-lg
"></i><?php echo $MC->msg("Update
", HCU_DISPLAY_AS_HTML); ?> 1238 <div id="disclosureWindow
" name="disclosureWindow
"></div> 1239 <div id="discardDialog
"></div> 1240 <style type="text/css
"> 1241 .hcu-scrolling-dialog { 1247 .account-rows .k-grid-content tr td { 1248 border-left-width: 0; 1250 .k-grid .k-grid-content tr:hover { 1253 .leading-zero-fontsize { 1256 .local-align-leading-zero { 1264 /* Small devices @screen-sm-min (tablets, 768px and up) */ 1265 @media (min-width: 768px) { 1268 /* Medium devices @screen-md-min (desktops, 992px and up) */ 1269 @media (min-width: 992px) { 1272 <div id="extDetailDialog
"></div> 1273 <div id="extValidateDialog
"></div> 1274 <div id="deleteDialog
"></div> 1275 <div class="k-content col-xs-12
" id="ach-payment
" style="max-width:700px; display: none;
"> 1276 <div class="form-horizontal
"> 1277 <div class="well well-sm
"> 1278 <div class="form-group
"> 1279 <div class="col-xs-12 h4
"><?php echo $MC->msg('EXT External Accounts', HCU_DISPLAY_AS_HTML) ?></div> 1281 <div class="form-group
"> 1282 <div class="col-xs-12
"><div class="account-rows
" id="extAcctGrid
"></div></div> 1289 } catch (Exception $ex) { 1290 // * Include the Error page and then end the content 1291 // NOTE: this is for when the page is first loading 1292 $serviceErrorMsg = HCU_JsonDecode($ex->getMessage()); 1294 $serviceErrorCode = $ex->getCode(); // this chooses which error page to show 1296 require_once(dirname(__FILE__) . '/../includes/hcuErrorPage.i'); 1303 // ** INCLUDE POST CONTENT SCRIPT 1304 require_once(dirname(__FILE__) . '/../includes/hcuPostContent.i');