20 require_once(
"$admLibrary/aAdminSettings.i");
21 require_once(
"$sharedLibrary/sFeatureMnu.i");
23 $tinymceVersion = GetTinyMCEVersion();
24 $cloudfrontDomainName = GetCloudFrontDomainName();
30 "operation" => array(
"filter" => FILTER_SANITIZE_STRING),
31 "settings" => array(
"filter" => FILTER_DEFAULT)
33 HCU_ImportVars($admVars,
"SETTINGS", $admOk);
35 $sOperation = isset($admVars[
"SETTINGS"][
"operation"]) ? $admVars[
"SETTINGS"][
"operation"] :
null;
36 $sSettings = isset($admVars[
"SETTINGS"][
"settings"]) ? $admVars[
"SETTINGS"][
"settings"] :
null;
44 $sql =
"SELECT email FROM cuadmnotify WHERE cu = '{$Cu}' AND role = 'achnotify'";
45 $sqlRs = db_query($sql, $dbh);
46 $sqlData = db_fetch_assoc($sqlRs);
53 $showEmailNotifyContent = is_array($sqlData) && strlen($sqlData[
'email']) > 0;
60 $featureList = FetchMenuFeatureList( array(
"dbh" => $dbh), array(
"Cu"=>$Cu) );
61 $featureMenuHasACH =
false;
62 $featureMenuHasCommercial =
false;
64 if (in_array(
"TRNEXT", $featureList[
'data'])) {
65 $featureMenuHasACH =
true;
68 if (in_array(
"ACHPMT", $featureList[
'data']) || in_array(
"ACHCOL", $featureList[
'data'])) {
69 $featureMenuHasACH =
true;
70 $featureMenuHasCommercial =
true;
73 switch ($sOperation) {
76 PrintAdminSettings($tinymceVersion, $cloudfrontDomainName, $featureMenuHasACH, $featureMenuHasCommercial, $showEmailNotifyContent);
78 case "readAdminSettings":
79 $sProfiles = AdminReadProfiles($SYSENV, $dbh, $Cu);
80 $sSettings = AdminReadSettings($SYSENV, $dbh, $Cu);
82 $aryResult[
'data'][
'settings'] = $sSettings[
'settings'];
83 $aryResult[
'data'][
'profiles'] = $sProfiles[
'profiles'];
85 AdminSettingsReplay($aryResult, $aryReply, $sOperation);
87 case "updateACHSettings":
88 $sValidate = ValidateACHSettings($SYSENV, $sSettings,
true);
89 $sSettings = AdminUpdateSettings($SYSENV, $dbh, $Cu, $sValidate[
'validate']);
91 $aryResult[
'info'] = $sSettings[
'message'];
92 $aryResult[
'data'][
'settings'] = $sSettings[
'settings'];
94 AdminSettingsReplay($aryResult, $aryReply, $sOperation);
96 case "updateAutoSettings":
97 $sValidate = ValidateAutoSettings($SYSENV, $sSettings,
true);
98 $sSettings = AdminUpdateSettings($SYSENV, $dbh, $Cu, $sValidate[
'validate']);
100 $aryResult[
'info'] = $sSettings[
'message'];
101 $aryResult[
'data'][
'settings'] = $sSettings[
'settings'];
103 AdminSettingsReplay($aryResult, $aryReply, $sOperation);
106 throw new Exception(
"Unknown server request: " . $sOperation);
109 }
catch (Exception $e) {
110 $aryReply[
'error'][] = $e->getMessage();
111 $aryResult[
'data'] = array();
112 $aryResult[
'info'] = array();
114 AdminSettingsReplay($aryResult, $aryReply, $sOperation);
126 function PrintAdminSettings($tinyMceVersion, $cloudfrontDomainName, $hasACHFeature, $hasCommercialFeature, $showEmailContent) { ?>
127 <script type=
"text/javascript" src=
"https://<?php echo $cloudfrontDomainName; ?>/homecu/js/tinymce/<?php echo $tinyMceVersion; ?>/tinymce.min.js"></script>
128 <script type=
"text/javascript" src=
"https://<?php echo $cloudfrontDomainName; ?>/homecu/js/tinymce/homecuchar.plugin.js"></script>
129 <script type=
"text/javascript">
130 <?php getShowWaitFunctions(); ?>
132 var asDataSource =
null;
136 <?php
if ($hasACHFeature) { ?>
138 var asDataACH =
null;
139 var asObserveACH =
null;
142 var asTabAuto =
null;
143 var asDataAuto =
null;
144 var asObserveAuto =
null;
146 var asEmailNotifyDialog =
null;
147 var asWindowStack = [];
155 function ValidateFormSuccess() {
156 var _tabUsed = $(
".tabTitles .selected").data(
"name");
157 <?php
if ($hasACHFeature) { ?> var _sourceACH = asObserveACH.source; <?php } ?>
158 var _sourceAuto = asObserveAuto.source;
162 if (_tabUsed ==
"Auto Enrollment" && asObserveAuto.dirty) {
164 if (_sourceAuto.profile_e) {
165 if (typeof _sourceAuto.profile_e ===
"string") {
166 _profile = _sourceAuto.profile_e;
168 _profile = _sourceAuto.profile_e.code;
173 _settings.profile = _profile;
176 operation:
"updateAutoSettings",
177 settings: JSON.stringify(_settings)
181 <?php
if ($hasACHFeature) { ?>
182 if (_tabUsed ==
"ACH" && asObserveACH.dirty) {
184 _sourceACH.cutoff_e.getHours() +
185 (_sourceACH.cutoff_e.getMinutes() < 10 ?
'0':
'') +
186 _sourceACH.cutoff_e.getMinutes();
187 _settings.cutoff = _time;
189 var _routing = _sourceACH.routing_e;
190 _routing = _routing.replace(/_/g,
'');
191 _routing = _routing.trim();
192 _settings.routing = _routing;
194 var _account = _sourceACH.account_e.replace(/_/g,
'');
195 _account = _account.replace(/_/g,
'');
196 _account = _account.trim();
197 _settings.account = _account;
199 var _sub_account_mask = _sourceACH.sub_account_mask_e.replace(/_/g,
'');
200 _sub_account_mask = _sub_account_mask.replace(/_/g,
'');
201 _sub_account_mask = _sub_account_mask.trim();
202 _settings.sub_account_mask = _sub_account_mask;
204 var _offsetting = _sourceACH.offsetting_e;
205 _settings.offsetting = _offsetting;
207 var _name = _sourceACH.name_e;
208 _name = _name.trim();
209 _settings.name = _name;
211 var _type = _sourceACH.type_e;
212 _settings.type = _type.substring(0,1);
215 <?php
if ($hasCommercialFeature && $showEmailContent) { ?>
216 var _notify = tinymce.activeEditor.getContent();
217 _notify = _notify.replace(/[\n\r]+/g,
'');
218 _notify = _notify.trim();
219 _settings.notify = _notify;
223 operation:
"updateACHSettings",
224 settings: JSON.stringify(_settings)
229 if (<?php
if ($hasACHFeature) { ?> asObserveACH.dirty || <? } ?> asObserveAuto.dirty) {
231 asDataSource.transport.options.read.type =
"POST";
232 asDataSource.read(_request);
244 function ValidateForm() {
245 var _tabUsed = $(
".tabTitles .selected").data(
"name");
246 <?php
if ($hasACHFeature) { ?> var _sourceACH = asObserveACH.source; <?php } ?>
247 var _sourceAuto = asObserveAuto.source;
250 <?php
if ($hasACHFeature) { ?> var _sourceACH = asObserveACH.source; <?php } ?>
251 var _sourceAuto = asObserveAuto.source;
253 <?php
if ($hasACHFeature) { ?>
254 if (_tabUsed ==
"ACH") {
256 var _name = _sourceACH.name_e;
257 _name = _name.trim();
258 if (_name.length === 0) {
259 _errors.push(
"Credit union name is required");
262 var _account = _sourceACH.account_e;
263 _account = _account.replace(/_/g,
'');
264 _account = _account.trim();
265 if (_account.length === 0) {
266 _errors.push(
"ACH GL Account is required");
267 }
else if (_account.match(/^\d{1,12}$/) ===
null) {
268 _errors.push(
"ACH GL Account can only contain up to 12 digits");
271 var _sub_account_mask = _sourceACH.sub_account_mask_e;
272 _sub_account_mask = _sub_account_mask.replace(/_/g,
'');
273 _sub_account_mask = _sub_account_mask.trim();
274 if (_sub_account_mask.length > 16) {
275 _errors.push(
"ACH Sub-Account Format can only contain up to 16 characters");
276 }
else if (_sub_account_mask.match(/^0*$/) ===
null) {
277 _errors.push(
"ACH Sub-Account Format can only contain '0' characters");
280 var _routing = _sourceACH.routing_e;
281 _routing = _routing.replace(/_/g,
'');
282 _routing = _routing.trim();
283 if (_routing.length === 0) {
284 _errors.push(
"Routing number is required");
285 }
else if (_routing.match(/\d{9}/) ===
null) {
286 _errors.push(
"Routing number must be 9 digits");
289 var _cutoff = _sourceACH.cutoff_e;
290 if (_cutoff ===
null) {
291 _errors.push(
"Cutoff time is required");
294 <?php
if ($hasCommercialFeature && $showEmailContent) {
295 var _notify = tinymce.activeEditor.getContent();
296 _notify = _notify.replace(/[\n\r]+/g,
'');
297 _notify = _notify.trim();
298 if (_notify.length === 0) {
299 _errors.push(
"Email Notification is required");
305 if (_tabUsed ==
"Auto") {
306 var _profile = _sourceAuto.profile_e;
308 if (typeof _profile ===
"string") {
309 _profile = _profile.trim();
311 _profile = _profile.code.trim();
317 if (_profile.length === 0) {
318 _errors.push(
"Default profile is required");
323 if (_errors.length > 0) {
324 $.homecuValidator.settings.formStatusField =
"formStatus";
325 $.homecuValidator.displayMessage(_errors, $.homecuValidator.settings.statusError);
332 <?php
if ($hasACHFeature) {
341 function ValidateTabACH() {
342 var _observe = asObserveACH;
343 var _source = asObserveACH.source;
349 _label = $(
"label[for=achName]");
350 _warning = $(_label.find(
"span")[1]);
351 var _name = _source.name_e;
352 _name = _name.trim();
353 _name !== _source.name ?
358 _label = $(
"label[for=achAccount]");
359 _warning = $(_label.find(
"span")[1]);
360 var _account = _source.account_e;
361 _account = _account.replace(/_/g,
'');
362 _account = _account.trim();
363 _account !== _source.account ?
368 _label = $(
"label[for=achSubAccountMask]");
369 _warning = $(_label.find(
"span")[1]);
370 var _sub_account_mask = _source.sub_account_mask_e;
371 _sub_account_mask = _sub_account_mask.replace(/_/g,
'');
372 _sub_account_mask = _sub_account_mask.trim();
373 _sub_account_mask !== _source.sub_account_mask ?
378 _label = $(
"label[for=achMicroOffsetting]");
379 _warning = $(_label.find(
"span")[1]);
380 var _offsetting = _source.offsetting_e;
381 _offsetting != _source.offsetting ?
386 _label = $(
"label[for=achRouting]");
387 _warning = $(_label.find(
"span")[1]);
388 var _routing = _source.routing_e;
389 _routing = _routing.replace(/_/g,
'');
390 _routing = _routing.trim();
391 _routing !== _source.routing ?
396 _label = $(
"label[for=achCutoff]");
397 _warning = $(_label.find(
"span")[1]);
421 var _cutoff = _source.cutoff_e;
422 if (_source.cutoff) {
424 (_cutoff.getTime() !== _source.cutoff.getTime()) ?
429 (_cutoff.getTime() !== _source.cutoff.getTime());
433 _observe.dirty =
true;
437 (_cutoff.getHours() !== 15 && _source.cutoff_e.getMinutes() !== 0) ?
442 (_cutoff.getHours() !== 15 && _source.cutoff_e.getMinutes() !== 0);
446 _observe.dirty =
true;
455 <?php
if ($hasCommercialFeature && $showEmailContent) { ?>
459 _label = $(
"label[for=achEmailNotify]");
460 _warning = $(_label.find(
"span")[1]);
462 var _notify = _source.notify;
463 _notify = _notify.replace(/[\s\n\t\r]+/g,
'');
464 _notify = _notify.trim();
466 var _notify_e = tinymce.activeEditor.getContent();
467 _notify_e = _notify_e.replace(/[\s\n\t\r]+/g,
'');
468 _notify_e = _notify_e.trim();
470 _notify_e !== _notify ?
477 _label = $(
"label[for=achType]");
478 _warning = $(_label.find(
"span")[2]);
479 var _type = _source.type_e.substring(0,1);
480 _type !== _source.type ?
489 (_name !== _source.name) ||
490 (_account !== _source.account) ||
491 (_sub_account_mask !== _source.sub_account_mask) ||
492 (_offsetting !== _source.offsetting) ||
493 (_routing !== _source.routing) ||
494 (_notify !== _notify_e) ||
495 (_type !== _source.type);
497 return !_observe.dirty;
509 function ValidateTabAuto() {
510 var _observe = asObserveAuto;
511 var _source = asObserveAuto.source;
517 _label = $(
"label[for=autoProfile]");
518 _warning = $(_label.find(
"span")[1]);
519 _value = _source.profile;
521 if (_source.profile_e) {
522 if (typeof _source.profile_e ===
"string") {
523 _value_e = _source.profile_e;
525 _value_e = _source.profile_e.code;
531 if (_value ===
null) {
537 (_value ===
null && _value_e !==
"");
539 _value_e !== _value ?
544 (_value_e !== _value);
547 return !_observe.dirty;
556 function InitDataSources() {
557 asDataSource =
new kendo.data.DataSource({
562 contentType:
"application/x-www-form-urlencoded",
571 parse:
function(data) {
573 var resultData =
null;
574 var resultOperation =
null;
576 if (data.hasOwnProperty(
"Results")) {
577 results = data.Results;
578 resultData = results.data;
579 resultOperation = results.operation;
582 if (results.hasOwnProperty(
"error")) {
586 if (resultData ===
null || resultData === undefined) {
590 switch (resultOperation) {
591 <?php
if ($hasACHFeature) { ?>
592 case "updateACHSettings":
593 asObserveACH.init(resultData);
597 case "updateAutoSettings":
598 asObserveAuto.init(resultData);
601 case "readAdminSettings":
602 asObserveAuto.init(resultData);
603 <?php
if ($hasACHFeature) { ?> asObserveACH.init(resultData); <?php } ?>
610 requestStart:
function(request) {
613 requestEnd:
function(response) {
616 if (response.hasOwnProperty(
"response")) {
617 if (response.response.hasOwnProperty(
"Results")) {
618 var results = response.response.Results;
620 if (results.hasOwnProperty(
"error")) {
621 $.homecuValidator.homecuResetMessage =
true;
622 $.homecuValidator.displayMessage(results.error, $.homecuValidator.settings.statusError);
623 }
else if (results.hasOwnProperty(
"info")) {
624 $.homecuValidator.homecuResetMessage =
true;
625 $.homecuValidator.displayMessage(results.info, $.homecuValidator.settings.statusSuccess);
628 $.homecuValidator.displayMessage(
"Error Parsing Server", $.homecuValidator.settings.statusError);
631 $.homecuValidator.displayMessage(
"Error Parsing Server", $.homecuValidator.settings.statusError);
637 function DiscardChangesOkayACH() {
638 asObserveACH.reset();
639 $(
"#tabAch .fa-asterisk").hide();
642 function DiscardChangesOkayAuto() {
643 asObserveAuto.reset();
644 $(
"#tabAuto .fa-asterisk").hide();
653 function InitDataViews() {
654 <?php
if ($hasACHFeature) { ?> asTabACH = $(
"#tabAch"); <?php } ?>
655 asTabAuto = $(
"#tabAuto");
656 asTabs = $(
"#tabs").hcuTabs({
658 <?php
if ($hasACHFeature) { ?>
659 { title:
"ACH", text:
"ACH", icon:
"fa-money", selected:
true, discardChangesText:
"<p>Changes have been made to ACH settings.</p><p>Do you wish to discard your changes?</p>",
660 content: asTabACH, validate: ValidateTabACH, discardChangesOkay: DiscardChangesOkayACH
663 { title:
"Auto Enrollment", text:
"Auto Enrollment", icon:
"fa-users", <?php
if (!$hasACHFeature) { ?> selected:
true, <?php } ?>
664 content: asTabAuto, validate: ValidateTabAuto, discardChangesOkay: DiscardChangesOkayAuto,
665 discardChangesText:
"<p>Changes have been made to auto settings.</p><p>Do you wish to discard your changes?</p>" 668 useDiscardChangesDialog:
true,
669 discardChangesWindowStack: asWindowStack,
670 formValidate: ValidateForm
673 <?php
if ($hasACHFeature) { ?>
674 asObserveACH =
new kendo.observable({
677 change:
function(e) {
680 init:
function(data) {
682 _source.name = data.settings.name ? data.settings.name :
"";
683 _source.name_e = _source.name;
684 _source.account = data.settings.account ? data.settings.account :
"";
685 _source.account_e = _source.account;
686 _source.sub_account_mask = data.settings.sub_account_mask ? data.settings.sub_account_mask :
"";
687 _source.sub_account_mask_e = _source.sub_account_mask;
688 _source.offsetting = data.settings.offsetting > 0 ? 1 : 0;
689 _source.offsetting_e = _source.offsetting;
690 _source.routing = data.settings.routing ? data.settings.routing :
"";
691 _source.routing_e = _source.routing;
694 _source.type = data.settings.type == 1 ?
"1" : (data.settings.type ==
" " ?
" " :
"9");
695 _source.type_e = _source.type;
697 <?php
if ($hasCommercialFeature && $showEmailContent) {
699 _source.notify_d = $(
"#emailNotifyDefault").html();
702 _source.notify = data.settings.notify ? data.settings.notify :
"";
703 _source.notify_e = data.settings.notify ? data.settings.notify : _source.notify_d;
706 var _today =
new Date();
707 var _timeHour = data.settings.cutoff ?
708 data.settings.cutoff.substring(0, 2) :
710 var _timeMinutes = data.settings.cutoff ?
711 data.settings.cutoff.substring(2, 4) :
713 var _timeValue =
new Date(
714 _today.getFullYear(),
721 _source.cutoff = data.settings.cutoff ? _timeValue :
"";
722 _source.cutoff_e = _timeValue;
724 this.
set(
"source", _source);
727 this.
set(
"source.name_e", this.source.name);
728 this.
set(
"source.account_e", this.source.account);
729 this.
set(
"source.sub_account_mask_e", this.source.sub_account_mask);
730 this.
set(
"source.offsetting_e", this.source.offsetting);
731 this.
set(
"source.routing_e", this.source.routing);
732 this.
set(
"source.type_e", this.source.type);
734 <?php
if ($hasCommercialFeature && $showEmailContent) {
736 this.
set(
"source.notify_e", this.source.notify);
739 tinymce.activeEditor.setContent(this.source.notify);
742 if (this.source.cutoff ===
"") {
743 var _today =
new Date();
746 this.
set(
"source.cutoff_e",
new Date(
747 _today.getFullYear(),
754 this.
set(
"source.cutoff_e", this.source.cutoff);
757 resetNotify:
function(e) {
759 $(
"#emailNotifyConfirmDialog").data(
"kendoDialog").open();
764 asObserveAuto =
new kendo.observable({
768 change:
function(e) {
771 init:
function(data) {
773 _source.profile = data.settings.profile;
774 _source.profile_e = data.settings.profile;
776 this.
set(
"source", _source);
781 var _profiles = data.profiles;
782 this.
set(
"profiles", _profiles);
786 this.
set(
"source.profile_e", this.source.profile);
790 <?php
if ($hasACHFeature) { ?> kendo.bind(asTabACH, asObserveACH); <?php } ?>
791 kendo.bind(asTabAuto, asObserveAuto);
793 <?php
if ($hasACHFeature) { ?>
794 $(
"#achAccount").kendoMaskedTextBox({
795 mask:
"000000000000",
796 clearPromptChar:
true 799 $(
"#achRouting").kendoMaskedTextBox({
801 clearPromptChar:
true 804 $(
"#achEmailPlaceholders").on(
"click",
function(e) {
805 $(
"#emailNotifyPlaceholderDialog").data(
"kendoDialog").open();
809 $(
"#lnkCancel").on(
"click",
function(e) {
811 <?php
if ($hasACHFeature) { ?> asObserveACH.reset(); <?php } ?>
812 asObserveAuto.reset();
816 $(
"#btnUpdate").on(
"click",
function(e) {
818 $.homecuValidator.hideMessage();
820 if (ValidateForm()) {
821 ValidateFormSuccess();
825 $.homecuValidator.setup({
826 formValidate:
"bankingSettings" 829 <?php
if ($hasACHFeature && $showEmailContent) { ?>
830 $(
"#emailNotifyConfirmDialog").kendoDialog({
831 title:
"Reset Email Message",
835 content: $(
"#emailNotifyConfirmTemplate").html(),
837 asWindowStack.push(
this);
840 asWindowStack.pop(
this);
844 action:
function(e) {}
847 text:
"Yes", primary:
true,
848 action:
function(e) {
850 asObserveACH.set(
"source.notify_e", asObserveACH.source.notify_d);
854 tinymce.activeEditor.setContent(asObserveACH.source.notify_d);
863 $(
"#emailNotifyPlaceholderDialog").kendoDialog({
864 title:
"ACH Email Notification Template",
869 content: $(
"#emailNotifyPlaceholderTemplate").html(),
871 asWindowStack.push(
this);
874 asWindowStack.pop(
this);
877 { text:
"Ok", primary:
true,
878 action:
function(e) {}
884 selector:
"#achEmailNotify",
885 relative_urls:
false,
886 remove_script_host :
false,
888 "advlist autolink link image lists preview anchor pagebreak",
889 "searchreplace visualblocks visualchars code insertdatetime nonbreaking",
890 "table contextmenu directionality template textcolor homecuchar paste textcolor" 892 toolbar1:
"code newdocument | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | fontselect fontsizeselect | bullist numlist",
893 toolbar2:
"outdent indent blockquote | undo redo | link unlink image | preview | forecolor backcolor | removeformat | homecuchar | nonbreaking",
895 toolbar_items_size:
"small",
896 valid_children :
"+body[style]",
897 init_instance_callback:
function(editor) {
898 editor.setContent(asObserveACH.source.notify_e);
900 editor.on(
"change",
function(e) {
908 $(
"#tipCompanyIDType").kendoTooltip({
909 content:
"This field is the Identification Code Designator for the Company ID field in the ACH file Company / Batch Header and Company / Batch Control records for Micro Deposits, Micro Deposit Offsets and External Transactions.<br><br>Identification Code Designator values:<br>EIN: 1<br>Other: 9<br>Blank: Legacy setting" 913 $(
"#tipSubAccountMask").kendoTooltip({
914 content:
"<p>Applies a format to the sub-account number in the ACH file. Example: a format of '000' when applied to a sub-account of '10' will result in '010'.</p><p>If the format is blank or is shorter than the sub-account number, just the sub-account number is used.</p>",
918 $(document).ready(
function() {
923 asDataSource.transport.options.read.type =
"POST";
925 operation:
"readAdminSettings" 929 $(document).on(
'click',
'.k-overlay',
function() {
930 if (asWindowStack.length > 0) {
931 asWindowStack[asWindowStack.length-1].close();
936 <div
id=
"emailNotifyConfirmDialog"></div>
937 <div
id=
"emailNotifyPlaceholderDialog"></div>
938 <div
id=
"bankingSettings">
940 <div
class=
"container-fluid">
942 <div
id=
"tabs"></div>
945 <?php
if ($hasACHFeature) { ?>
947 <div
class=
"well well-sm col-sm-12" id=
"tabAch">
949 <div
class=
"col-sm-3">
950 <label
for=
"achName">
951 <span>Credit Union Name</span>
952 <span
class=
"fa fa-asterisk" style=
"color: #f0ad4e;" 953 data-bind=
"visible: dirty"></span>
956 <div
class=
"col-sm-4">
957 <input
class=
"hcu-all-100 k-textbox" id=
"achName" name=
"achName" 961 value: source.name_e, 962 events: { change: change }" 968 <div
class=
"col-sm-3">
969 <label
for=
"achAccount">
970 <span>ACH GL Account</span>
971 <span
class=
"fa fa-asterisk" style=
"color: #f0ad4e;" 972 data-bind=
"visible: dirty"></span>
975 <div
class=
"col-sm-4">
976 <input
class=
"hcu-all-100" id=
"achAccount" name=
"achAccount" 978 value: source.account_e, 979 events: { change: change }">
984 <div
class=
"col-sm-3">
985 <label
for=
"achSubAccountMask">
986 <span>ACH Sub-Account Format</span>
987 <span
class=
"fa fa-question-circle-o" id=
"tipSubAccountMask"></span>
988 <span
class=
"fa fa-asterisk" style=
"color: #f0ad4e;" 989 data-bind=
"visible: dirty"></span>
992 <div
class=
"col-sm-4">
993 <input
class=
"hcu-all-100 k-textbox" id=
"achSubAccountMask" name=
"achSubAccountMask" 996 value: source.sub_account_mask_e, 997 events: { change: change }">
1002 <div
class=
"col-sm-3">
1003 <label
for=
"achMicroOffsetting">
1004 <span>Create Offsetting Micro Deposit Entry</span>
1005 <span
class=
"fa fa-asterisk" style=
"color: #f0ad4e;" 1006 data-bind=
"visible: dirty"></span>
1009 <div
class=
"col-sm-4 checkbox">
1011 <input type=
"checkbox" id=
"achMicroOffsetting" name=
"achMicroOffsetting" 1013 checked: source.offsetting_e, 1014 events: { change: change }"> Yes
1020 <div
class=
"col-sm-3">
1021 <label
for=
"achRouting">
1022 <span>Routing Number</span>
1023 <span
class=
"fa fa-asterisk" style=
"color: #f0ad4e;" 1024 data-bind=
"visible: dirty"></span>
1027 <div
class=
"col-sm-4">
1028 <input
class=
"hcu-all-100" id=
"achRouting" 1030 value: source.routing_e, 1031 events: { change: change }">
1036 <div
class=
"col-sm-3">
1037 <label
for=
"achType">
1038 <span>Company ID Type</span>
1039 <span
class=
"fa fa-question-circle-o" id=
"tipCompanyIDType"></span>
1040 <span
class=
"fa fa-asterisk" style=
"color: #f0ad4e;" 1041 data-bind=
"visible: dirty"></span>
1044 <div
class=
"col-sm-4">
1045 <label
for=
"achEIN" style=
"margin-top: 2px;">
1046 <input type=
"radio" name=
"achType" id=
"achEIN" value=
"1" style=
"margin-top: -2px;" 1047 data-bind=
"checked: source.type_e, events: { change: change }" required>
1051 <label
for=
"achOther" style=
"margin-top: 2px;">
1052 <input type=
"radio" name=
"achType" id=
"achOther" value=
"9" style=
"margin-top: -2px;" 1053 data-bind=
"checked: source.type_e, events: { change: change }" required>
1057 <label
for=
"achBlank" style=
"margin-top: 2px;">
1058 <input type=
"radio" name=
"achType" id=
"achBlank" value=
" " style=
"margin-top: -2px;" 1059 data-bind=
"checked: source.type_e, events: { change: change }" required>
1060 <span>Blank (Legacy Setting)</span>
1066 <div
class=
"col-sm-3">
1067 <label
for=
"achCutoff">
1068 <span>Cutoff Time</span>
1069 <span
class=
"fa fa-asterisk" style=
"color: #f0ad4e;" 1070 data-bind=
"visible: dirty"></span>
1073 <div
class=
"col-sm-4">
1074 <input
class=
"hcu-all-100" id=
"achCutoff" 1075 data-role=
"timepicker" 1077 value: source.cutoff_e, 1078 events: { change: change }">
1081 <?php
if($hasCommercialFeature) { ?>
1084 <div
class=
"col-sm-3">
1085 <label
for=
"achEmailNotify">
1086 <span>Email Notification</span>
1087 <span
class=
"fa fa-asterisk" style=
"color: #f0ad4e;" 1088 data-bind=
"visible: dirty"></span>
1091 <?php
if ($showEmailContent) { ?>
1092 <div
class=
"col-sm-4 text-right">
1093 <a href=
"#" data-bind=
"events: {click: resetNotify}">Reset email message to
default</a>
1095 <?php } ?> <!-- end show content -->
1097 <?php
if($showEmailContent) { ?>
1099 <div
class=
"col-sm-12">
1100 <a href=
"#" id=
"achEmailPlaceholders">Help</a>
1101 <textarea
class=
"hcu-all-100" id=
"achEmailNotify" 1102 data-bind=
"value: source.notify_e"></textarea>
1107 <div
class=
"col-sm-12">
1108 <div
class=
"hcu-secondary">
1109 <div
class=
"small vsgSecondary">
1110 <span>This feature requires an
"ACH Notifications" email on the <a href=
"main.prg?ft=46">CU Email Notifications</a> screen.</span>
1115 <?php } ?> <!-- end show content -->
1116 <?php } ?> <!-- end has feature -->
1120 <!--TAB VIEW: AUTO-ENROLLMENT-->
1121 <div
class=
"well well-sm col-sm-12" id=
"tabAuto">
1123 <div
class=
"col-sm-3">
1124 <label
for=
"autoProfile">
1125 <span>Default Profile</span>
1126 <span
class=
"fa fa-asterisk" style=
"color: #f0ad4e;" 1127 data-bind=
"visible: dirty"></span>
1130 <div
class=
"col-sm-4">
1131 <input
class=
"hcu-all-100" id=
"autoProfile" 1132 data-role=
"dropdownlist" 1133 data-value-field=
"code" 1134 data-text-field=
"description" 1135 data-option-label=
"Select profile" 1137 value: source.profile_e, 1139 events: { change: change }">
1144 <div
class=
"hcu-template col-sm-12">
1145 <div
class=
"hcu-edit-buttons k-state-default">
1146 <a href=
"##" id=
"lnkCancel">Cancel</a>
1148 <a href=
"##" id=
"btnUpdate" class=
"k-button k-primary">
1149 <i
class=
"fa fa-check fa-lg"></i>Update
1155 <?php
if ($hasACHFeature) { ?>
1156 <script type=
"text/template" id=
"emailNotifyDefault">
1158 <p><span style=
"font-size: 10pt;">{{company}} has initiated a {{transactiontype}} in the amount of: ${{amount}} on {{date}}</span></p>
1161 <p style=
"padding-left: 30px;"><span style=
"font-size: 10pt;"><strong>Name On Account:</strong> {{accountname}}</span></p>
1162 <p style=
"padding-left: 30px;"><span style=
"font-size: 10pt;"><strong>Routing Number:</strong> {{routing}}</span></p>
1163 <p style=
"padding-left: 30px;"><span style=
"font-size: 10pt;"><strong>Account Number:</strong> {{accountnumber}}</span></p>
1164 <p style=
"padding-left: 30px;"><span style=
"font-size: 10pt;">{{accounttype}}</span></p>
1168 You are receiving
this email as a courtesy notification that a funds transfer has been initiated. The actual transfer may not show in your online account
for several days. This notification is not a guarantee that the transfer will actually occur.
1171 Do not reply to
this email. This mailbox is not monitored and you will not receive a response. If you need any assistance or wish to stop receiving
this type of notification please contact {{company}}.
1176 <script type=
"text/template" id=
"emailNotifyConfirmTemplate">
1177 <div
class=
"col-sm-12">
1178 <p><strong>Your are about to restore your email notification to the
default format.</strong></p>
1179 <p>Do you wish to
continue?</p>
1183 <script type=
"text/template" id=
"emailNotifyPlaceholderTemplate">
1184 <div
class=
"col-sm-12">
1185 <p>Below is a list of replacement keywords which may be used when creating ACH notification emails. These keywords are not mandatory but must be used with surrounding
double brackets
for correct replacement.</p>
1186 <p>For example:
"{{company}} has initiated a {{transactiontype}}..." will generate the following sentence:
"ABC Company has initiated a withdrawal..."</p>
1188 <p><strong>Keywords that can be used to display transaction data:</strong></p>
1189 <ul style=
"margin-left: 30px;">
1190 <li><label>{{company}}:</label> the Group Name</li>
1191 <li><label>{{transactiontype}}:</label> whether the transaction is
"withdrawal" or
"deposit"</li>
1192 <li><label>{{amount}}:</label> the transaction amount</li>
1193 <li><label>{{date}}:</label> the batch effective date</li>
1195 <p><strong>Keywords that can be used to display the remote account information:</strong></p>
1196 <ul style=
"margin-left: 30px;">
1197 <li><label>{{accountname}}:</label> the name on the remote account</li>
1198 <li><label>{{routing}}:</label> the remote account routing number</li>
1199 <li><label>{{accountnumber}}:</label> the last four digits of the remote account number</li>
1200 <li><label>{{accounttype}}:</label> whether the remote account is
"checking" or
"savings"</li>