16 $serviceShowInfo =
false;
17 $serviceLoadMenu =
false;
18 $serviceShowMenu =
false;
23 require_once(dirname(__FILE__) .
'/../library/hcuService.i');
25 require_once(dirname(__FILE__) .
'/../library/permissions.i');
26 require_once(dirname(__FILE__) .
'/../library/hcuACH.i');
27 require_once(dirname(__FILE__) .
'/../library/hcuTransfer.i');
28 require_once(dirname(__FILE__) .
'/../library/hcuTransferScheduled.i');
33 "action" => array(
'filter' => FILTER_SANITIZE_STRING),
34 "ach_name" => array(
'filter' => FILTER_SANITIZE_STRING),
35 "display_name" => array(
"filter" => FILTER_SANITIZE_STRING,
'options' => array(
'flags' => FILTER_FLAG_NO_ENCODE_QUOTES)),
36 "email" => array(
'filter' => FILTER_SANITIZE_EMAIL),
37 "email_notify" => array(
'filter' => FILTER_SANITIZE_NUMBER_INT),
38 "address1" => array(
'filter' => FILTER_SANITIZE_STRING),
39 "address2" => array(
'filter' => FILTER_SANITIZE_STRING),
40 "city" => array(
'filter' => FILTER_SANITIZE_STRING),
41 "state" => array(
'filter' => FILTER_SANITIZE_STRING),
42 "zip" => array(
'filter' => FILTER_SANITIZE_STRING),
43 "country" => array(
'filter' => FILTER_SANITIZE_STRING),
44 "update_partner" => array(
'filter' => FILTER_SANITIZE_NUMBER_INT),
45 "dfi_routing" => array(
'filter' => FILTER_SANITIZE_STRING),
46 "dfi_account" => array(
'filter' => FILTER_SANITIZE_STRING),
47 "dfi_account_type" => array(
'filter' => FILTER_SANITIZE_STRING),
48 "addenda" => array(
'filter' => FILTER_SANITIZE_STRING),
49 "internal_acct" => array(
'filter' => FILTER_SANITIZE_STRING),
50 "internal_sub_acct" => array(
'filter' => FILTER_SANITIZE_STRING),
51 "eff_date" => array(
'filter' => FILTER_SANITIZE_STRING),
52 "end_date" => array(
'filter' => FILTER_SANITIZE_STRING),
53 "frequency" => array(
'filter' => FILTER_SANITIZE_STRING),
54 "continue" => array(
'filter' => FILTER_SANITIZE_STRING),
55 "amount" => array(
'filter' => FILTER_SANITIZE_NUMBER_INT),
56 "ach_type" => array(
'filter' => FILTER_SANITIZE_STRING),
57 "memo" => array(
'filter' => FILTER_SANITIZE_STRING),
58 "batch_data" => array(
'filter' => FILTER_UNSAFE_RAW),
59 "partner_id" => array(
'filter' => FILTER_SANITIZE_NUMBER_INT),
60 "partner_type" => array(
'filter' => FILTER_SANITIZE_STRING),
61 "template_id" => array(
'filter' => FILTER_SANITIZE_NUMBER_INT),
62 "template_name" => array(
'filter' => FILTER_SANITIZE_STRING),
63 "update_template" => array(
'filter' => FILTER_SANITIZE_NUMBER_INT),
66 HCU_ImportVars( $inputVars,
"", $varOk );
67 header(
'Content-Type: application/json');
98 $parseRefer = parse_url($_SERVER[
'HTTP_REFERER']);
99 $referScript = basename($parseRefer[
'path']);
101 if (!in_array($referScript, array(
'hcuACHSingle.prg',
'hcuACHBatch.prg',
'hcuACHPartners.prg'))) {
103 $aryErrors[] = $MC->msg(
'Feature Unavailable', HCU_DISPLAY_AS_RAW);
104 throw new Exception (HCU_JsonEncode($aryErrors));
108 $aryErrors = array();
111 switch ( $inputVars[
"action"] ) {
112 case "submit_payment":
113 case "submit_collection":
116 $permissionInputs = array();
117 if ( $inputVars[
"action"] ===
"submit_payment" ) {
118 $permissionInputs[
"feature"] = FEATURE_ACH_PAYMENTS;
120 $permissionInputs[
"feature"] = FEATURE_ACH_COLLECTIONS;
122 $return = Perm_AccessRights( $dbh, $HB_ENV, $permissionInputs );
125 $aryErrors[] = $MC->msg(
'Rights not set', HCU_DISPLAY_AS_HTML);
126 throw new Exception (HCU_JsonEncode($aryErrors));
131 $inputVars[
"amount"] = round( $inputVars[
"amount"] / 100, 2 );
134 $aryValidate = ACH_ValidateInputs( $HB_ENV, $dbh, $inputVars, $MC );
135 if ( !$aryValidate || ($aryValidate[
"code"] !==
"000") ) {
137 if ( is_array( $aryValidate[
"errors"] ) ) {
138 for ( $e = 0; $e < count( $aryValidate[
"errors"] ); $e++ ) {
139 $aryErrors[] = $aryValidate[
"errors"][$e];
142 $aryErrors[] = $aryValidate[
"errors"];
145 throw new Exception (HCU_JsonEncode($aryErrors));
149 $partnerAddResult =
false;
150 if ( intval( $inputVars[
"update_partner"] ) === 1 ) {
151 $partnerAddResult = ACH_UpdatePartner( $dbh, $HB_ENV, $inputVars, $MC );
152 if ( $partnerAddResult[
"code"] !==
"000" ) {
155 $aryErrors[] = $MC->msg(
'ACH Partner update failed', HCU_DISPLAY_AS_RAW);
157 if ( is_array( $partnerAddResult[
"errors"] ) ) {
158 for ( $e = 0; $e < count( $partnerAddResult[
"errors"] ); $e++ ) {
159 $aryErrors[] = $partnerAddResult[
"errors"][$e];
162 $aryErrors[] = $partnerAddResult[
"errors"];
165 throw new Exception (HCU_JsonEncode($aryErrors));
168 $aryInfo[] = $MC->msg(
'ACH Partner updated', HCU_DISPLAY_AS_RAW);
173 $decryptedAccountInfo = hcu_decrypturl( $inputVars[
"internal_sub_acct"], $HB_ENV[
'historyHash'] );
176 $accountParts = explode(
"|", $decryptedAccountInfo );
177 $permissionInputs[
"account"] = $accountParts[1];
178 $permissionInputs[
"accounttype"] = $accountParts[2];
179 $permissionInputs[
"amount"] = $inputVars[
"amount"];
181 $return = Perm_CheckLimits( $dbh, $HB_ENV, $permissionInputs );
182 if ( !$return || ($return[
"status"][
"code"] !==
"000") ) {
183 $aryErrors[] = $MC->msg(
'ACH Exceeded Permissions', HCU_DISPLAY_AS_RAW);
185 $aryErrors[] = Perm_GetLimitErrDesc($MC, $return[
"status"][
"code"]);
187 throw new Exception (HCU_JsonEncode($aryErrors));
192 $inputVars[
"addenda"] = ConvertFromUTF8( $inputVars[
"addenda"] );
193 $inputVars[
"memo"] = ConvertFromUTF8( $inputVars[
"memo"] );
194 $inputVars[
"needs_confirmation"] = Perm_CheckConfirmReq( $dbh, $HB_ENV, $permissionInputs );
199 $immdTransfer = $inputVars[
'frequency'] ==
"OneTime";
201 if ( $immdTransfer ) {
202 $return = ACH_Submit( $dbh, $HB_ENV, $inputVars, $MC );
203 if ( $return[
"code"] !==
"000" ) {
204 if ( is_array( $return[
"errors"] ) ) {
205 for ( $e = 0; $e < count( $return[
"errors"] ); $e++ ) {
206 $aryErrors[] = $return[
"errors"][$e];
209 $aryErrors[] = $return[
"errors"];
212 throw new Exception (HCU_JsonEncode($aryErrors));
216 $aryResult[
'txn'] = Array(
217 Array(
"label" => $MC->msg(
'Date', HCU_DISPLAY_AS_RAW),
'caption' => $return[
'data'][
"data_date"]),
218 Array(
"label" => $MC->msg(
'Action', HCU_DISPLAY_AS_RAW),
'caption' => $return[
'data'][
"data_action"]),
219 Array(
"label" => $MC->msg(
'ACH Company Name Label', HCU_DISPLAY_AS_RAW),
'caption' => $return[
'data'][
"data_company"]),
220 Array(
"label" => $MC->msg(
'Account', HCU_DISPLAY_AS_RAW),
'caption' => $return[
'data'][
"data_account"]),
221 Array(
"label" => $MC->msg(
'Amount', HCU_DISPLAY_AS_RAW),
'caption' =>
"$" . mobile_formatnumber($return[
'data'][
"data_amount"]),
","),
222 Array(
"label" => $MC->msg(
'Confirmation', HCU_DISPLAY_AS_RAW),
'caption' => $return[
'data'][
"data_confirm"])
226 if ( $inputVars[
"action"] ===
"submit_payment" ) {
227 $aryInfo[] = $MC->msg(
'ACH Payment Submitted', HCU_DISPLAY_AS_RAW);
229 $aryInfo[] = $MC->msg(
'ACH Collection Submitted', HCU_DISPLAY_AS_RAW);
233 if ( !$immdTransfer ) {
237 $inputVars[
'frequency_count'] = 0;
239 $partnerId = $inputVars[
"partner_id"] > 0 ? $inputVars[
"partner_id"] : $partnerAddResult[
"data"][
"partner_id"];
241 if ( $partnerId > 0 ) {
243 $nextIntervalDate = TxNextInterval($inputVars[
'eff_date'], $inputVars[
'frequency'], 0);
244 if ($nextIntervalDate ==
null) {
245 $aryErrors[] = $MC->msg(
'Continue Until greater than next', HCU_DISPLAY_AS_RAW);
246 throw new Exception (HCU_JsonEncode($aryErrors));
249 $txScheduleData = array(
250 "txAmount" => floatval($inputVars[
'amount']),
251 "txLocalAccount" => $decryptedAccountInfo,
252 "txLocalMember" => $inputVars[
'internal_acct'],
253 "txPartnerId" => $partnerId,
254 "txCode" => ACH_GetTransCode( $permissionInputs[
'feature'], $inputVars[
'ach_type'] ),
255 "txMemo" => prep_save($inputVars[
'memo']),
256 "txAddenda" => prep_save($inputVars[
'addenda']),
257 "txType" => ($permissionInputs[
'feature'] == FEATURE_ACH_PAYMENTS ?
"L2R" :
"R2L")
259 $txScheduleParameters = array(
260 "txFrequency" => prep_save($inputVars[
'frequency'], 50)
262 $txScheduleValues = array(
263 "txDateStart" => $inputVars[
'eff_date'],
264 "txDateEnd" => $inputVars[
'end_date'],
265 "txFrequency" => $inputVars[
'frequency'],
266 "txFrequencyCount" => $inputVars[
'frequency_count'],
267 "txFeature" => $permissionInputs[
'feature'],
268 "txParameters" => TxnSchedParameters($txScheduleParameters),
269 "txData" => TxnSchedDataACH($txScheduleData)
273 $txScheduleCreate = TxnSchedCreate($HB_ENV, $dbh, $MC, $txScheduleValues);
276 if ($txScheduleCreate[
'status'][
'code'] !==
"000") {
279 $aryErrors[] = $txScheduleCreate[
'status'][
'errors'];
283 if ( $inputVars[
"action"] ===
"submit_payment" ) {
284 $aryInfo[] = $MC->msg(
"ACH Scheduled A Payment", HCU_DISPLAY_AS_RAW);
286 $aryInfo[] = $MC->msg(
"ACH Scheduled A Collection", HCU_DISPLAY_AS_RAW);
289 $aryErrors[] = $MC->msg(
"ACH Scheduled partner error", HCU_DISPLAY_AS_RAW);
290 throw new Exception (HCU_JsonEncode($aryErrors));
295 if ( $partnerAddResult !==
false ) {
297 $fromTo = ( $inputVars[
"action"] ===
"submit_payment" ) ?
"withdrawl" :
"deposit";
299 $return = ACH_GetPartners( $dbh, $HB_ENV );
300 if ( $return[
"code"] !==
"000" ) {
301 if ( is_array( $return[
"errors"] ) ) {
302 for ( $e = 0; $e < count( $return[
"errors"] ); $e++ ) {
303 $aryErrors[] = $return[
"errors"][$e];
306 $aryErrors[] = $return[
"errors"];
309 throw new Exception (HCU_JsonEncode($aryErrors));
313 $aryResult[
"partners"] = $return[
"data"];
315 $return = ACH_GetAccounts( $dbh, $HB_ENV, $fromTo );
316 if ( $return[
"code"] !==
"000" ) {
317 if ( is_array( $return[
"errors"] ) ) {
318 for ( $e = 0; $e < count( $return[
"errors"] ); $e++ ) {
319 $aryErrors[] = $return[
"errors"][$e];
322 $aryErrors[] = $return[
"errors"];
325 throw new Exception (HCU_JsonEncode($aryErrors));
329 $aryResult[
"accounts"] = $return[
"data"];
333 case "get_ach_partners":
335 $partners = ACH_GetPartners( $dbh, $HB_ENV, $MC );
336 if ( $partners[
"code"] !==
"000" ) {
337 $aryErrors[] = $MC->msg(
'ACH Error getting partners', HCU_DISPLAY_AS_RAW);
339 if ( is_array( $partners[
"errors"] ) ) {
340 for ( $e = 0; $e < count( $partners[
"errors"] ); $e++ ) {
341 $aryErrors[] = $partners[
"errors"][$e];
344 $aryErrors[] = $partners[
"errors"];
347 throw new Exception (HCU_JsonEncode($aryErrors));
351 $aryResult[
"partners"] = $partners[
"data"];
353 case "collections_list":
354 case "payments_list":
357 $fromTo = ( $inputVars[
"action"] ===
"payments_list" ) ?
"withdrawl" :
"deposit";
359 $return = ACH_GetAccounts( $dbh, $HB_ENV, $fromTo );
360 if ( $return[
"code"] !==
"000" ) {
361 $aryErrors[] = $MC->msg(
'ACH Error getting lists', HCU_DISPLAY_AS_RAW);
363 if ( is_array( $return[
"errors"] ) ) {
364 for ( $e = 0; $e < count( $return[
"errors"] ); $e++ ) {
365 $aryErrors[] = $return[
"errors"][$e];
368 $aryErrors[] = $return[
"errors"];
371 throw new Exception (HCU_JsonEncode($aryErrors));
375 $aryResult[
"accounts"] = $return[
"data"];
377 case "read_templates":
379 $return = ACH_GetTemplates( $dbh, $HB_ENV, $inputVars[
"action"], $MC );
381 if ($return[
'code'] !=
'000') {
383 if ( is_array( $return[
"errors"] ) ) {
384 for ( $e = 0; $e < count( $return[
"errors"] ); $e++ ) {
385 $aryErrors[] = $return[
"errors"][$e];
388 $aryErrors[] = $return[
"errors"];
391 throw new Exception (HCU_JsonEncode($aryErrors));
394 $aryResult[
"templates"] = $return[
"data"];
396 case "update_template":
397 case "delete_template":
399 $return = ACH_UpdateTemplate( $dbh, $HB_ENV, $inputVars, $MC );
401 if ($return[
'code'] !=
'000') {
403 if ( is_array( $return[
"errors"] ) ) {
404 for ( $e = 0; $e < count( $return[
"errors"] ); $e++ ) {
405 $aryErrors[] = $return[
"errors"][$e];
408 $aryErrors[] = $return[
"errors"];
411 throw new Exception (HCU_JsonEncode($aryErrors));
415 $return = ACH_GetTemplates( $dbh, $HB_ENV, $inputVars[
"action"], $MC );
417 if ($return[
'code'] !=
'000') {
419 if ( is_array( $return[
"errors"] ) ) {
420 for ( $e = 0; $e < count( $return[
"errors"] ); $e++ ) {
421 $aryErrors[] = $return[
"errors"][$e];
424 $aryErrors[] = $return[
"errors"];
427 throw new Exception (HCU_JsonEncode($aryErrors));
430 $aryResult[
"templates"] = $return[
"data"];
433 $return = ACH_GetSinglePartner( $dbh, $HB_ENV, $inputVars[
"partner_id"] );
435 if ($return[
'code'] !=
'000') {
436 $aryErrors[] = $MC->msg(
'ACH Error getting partner info', HCU_DISPLAY_AS_RAW);
437 throw new Exception (HCU_JsonEncode($aryErrors));
440 $aryResult[
"one_partner"] = $return[
"data"];
443 case "add_ach_partner":
444 case "update_ach_partner":
446 $partnerUpdateAddResult = ACH_UpdatePartner( $dbh, $HB_ENV, $inputVars, $MC );
447 if ( $partnerUpdateAddResult[
"code"] !==
"000" ) {
448 $aryErrors[] = $MC->msg(
'ACH Error Partner update failed', HCU_DISPLAY_AS_RAW);
450 if ( is_array( $partnerUpdateAddResult[
"errors"] ) ) {
451 for ( $e = 0; $e < count( $partnerUpdateAddResult[
"errors"] ); $e++ ) {
452 $aryErrors[] = $partnerUpdateAddResult[
"errors"][$e];
455 $aryErrors[] = $partnerUpdateAddResult[
"errors"];
458 throw new Exception (HCU_JsonEncode($aryErrors));
462 $aryInfo[] = $MC->msg(
'ACH Partner updated', HCU_DISPLAY_AS_RAW);
465 $partnerId = $partnerUpdateAddResult[
"data"][
"partner_id"];
466 $partnerRead = ACH_GetSinglePartner( $dbh, $HB_ENV, $partnerId );
468 if ($partnerRead[
'code'] !=
'000') {
469 $aryErrors[] = $MC->msg(
'ACH Error getting partner info', HCU_DISPLAY_AS_RAW);
470 throw new Exception (HCU_JsonEncode($aryErrors));
473 $aryResult[
"partner_data"] = $partnerRead[
"data"];
474 $aryResult[
"update_partner"] = $partnerUpdateAddResult[
"data"];
477 case "delete_ach_partner":
478 $partnerDeleteResult = ACH_DeletePartner( $dbh, $HB_ENV, $inputVars, $MC);
479 if ( $partnerDeleteResult[
"code"] !==
"000" ) {
481 if ( is_array( $partnerDeleteResult[
"errors"] ) ) {
482 for ( $e = 0; $e < count( $partnerDeleteResult[
"errors"] ); $e++ ) {
483 $aryErrors[] = $partnerDeleteResult[
"errors"][$e];
486 $aryErrors[] = $partnerDeleteResult[
"errors"];
489 throw new Exception (HCU_JsonEncode($aryErrors));
493 $aryInfo[] = $MC->msg(
'ACH Partner deleted', HCU_DISPLAY_AS_RAW);
494 $aryResult[
"update_partner"] = $partnerDeleteResult[
"data"];
497 case "read_template_partners":
499 $return = ACH_GetTemplatePartners( $dbh, $HB_ENV, $inputVars[
"template_id"], $MC );
501 if ($return[
'code'] !=
'000') {
503 if ( is_array( $return[
"errors"] ) ) {
504 for ( $e = 0; $e < count( $return[
"errors"] ); $e++ ) {
505 $aryErrors[] = $return[
"errors"][$e];
508 $aryErrors[] = $return[
"errors"];
511 throw new Exception (HCU_JsonEncode($aryErrors));
514 $aryResult[
"read_template_partners"] = $return[
"data"];
516 case "add_template_partner":
518 $return = ACH_AddPartnerToTemplate( $dbh, $HB_ENV, $inputVars[
"template_id"], $inputVars[
"partner_id"], $MC );
519 if ($return[
'code'] !=
'000') {
520 $aryErrors[] = $MC->msg(
'ACH Error Adding Template Partner', HCU_DISPLAY_AS_RAW);
521 throw new Exception (HCU_JsonEncode($aryErrors));
525 $return = ACH_GetSinglePartner( $dbh, $HB_ENV, $inputVars[
"partner_id"] );
527 if ($return[
'code'] !=
'000') {
528 $aryErrors[] = $MC->msg(
'ACH Error getting partner info', HCU_DISPLAY_AS_RAW);
529 throw new Exception (HCU_JsonEncode($aryErrors));
532 $aryResult[
"one_partner"] = $return[
"data"];
535 case "remove_template_partner":
537 $return = ACH_RemovePartnerFromTemplate( $dbh, $HB_ENV, $inputVars[
"template_id"], $inputVars[
"partner_id"], $MC );
538 if ($return[
'code'] !=
'000') {
539 $aryErrors[] = $MC->msg(
'ACH Error removing partner template', HCU_DISPLAY_AS_RAW);
540 throw new Exception (HCU_JsonEncode($aryErrors));
543 $aryResult[
"partner_removed"] = $inputVars[
"partner_id"];
546 case "submit_batch_payment":
547 case "submit_batch_collection":
549 $permissionInputs = array();
550 if ( $inputVars[
"action"] ===
"submit_batch_payment" ) {
551 $permissionInputs[
"feature"] = FEATURE_ACH_PAYMENTS;
553 $permissionInputs[
"feature"] = FEATURE_ACH_COLLECTIONS;
555 $return = Perm_AccessRights( $dbh, $HB_ENV, $permissionInputs );
558 $aryErrors[] = $MC->msg(
'Rights not set', HCU_DISPLAY_AS_HTML);
559 throw new Exception (HCU_JsonEncode($aryErrors));
563 $aryValidate = ACH_ValidateInputs( $HB_ENV, $dbh, $inputVars, $MC );
564 if ( !$aryValidate || ($aryValidate[
"code"] !==
"000") ) {
566 if ( is_array( $aryValidate[
"errors"] ) ) {
567 for ( $e = 0; $e < count( $aryValidate[
"errors"] ); $e++ ) {
568 $aryErrors[] = $aryValidate[
"errors"][$e];
571 $aryErrors[] = $aryValidate[
"errors"];
574 throw new Exception (HCU_JsonEncode($aryErrors));
578 $decryptedAccountInfo = hcu_decrypturl( $inputVars[
"internal_sub_acct"], $HB_ENV[
'historyHash'] );
581 $accountParts = explode(
"|", $decryptedAccountInfo );
582 $permissionInputs[
"account"] = $accountParts[1];
583 $permissionInputs[
"accounttype"] = $accountParts[2];
586 $batchInfo = HCU_JsonDecode( $inputVars[
"batch_data"]);
589 for ( $i = 0; $i < count( $batchInfo ); $i++ ) {
590 $batchAmount += $batchInfo[$i][
"amount"];
593 $batchInfo[$i][
"addenda"] = ConvertFromUTF8( $batchInfo[$i][
"addenda"] );
596 $permissionInputs[
"amount"] = $batchAmount;
599 $return = Perm_CheckLimits( $dbh, $HB_ENV, $permissionInputs );
600 if ( !$return || ($return[
"status"][
"code"] !==
"000") ) {
601 $aryErrors[] = $MC->msg(
'ACH Exceeded Permissions', HCU_DISPLAY_AS_RAW);
603 $aryErrors[] = Perm_GetLimitErrDesc($MC, $return[
"status"][
"code"]);
605 throw new Exception (HCU_JsonEncode($aryErrors));
610 $inputVars[
"memo"] = ConvertFromUTF8( $inputVars[
"memo"] );
611 $inputVars[
"needs_confirmation"] = Perm_CheckConfirmReq( $dbh, $HB_ENV, $permissionInputs );
614 $return = ACH_SubmitBatch( $dbh, $HB_ENV, $inputVars, $batchInfo, $MC );
615 if ( $return[
"code"] !==
"000" ) {
616 if ( is_array( $return[
"errors"] ) ) {
617 for ( $e = 0; $e < count( $return[
"errors"] ); $e++ ) {
618 $aryErrors[] = $return[
"errors"][$e];
621 $aryErrors[] = $return[
"errors"];
624 throw new Exception (HCU_JsonEncode($aryErrors));
628 $aryResult[
'txn'] = Array(
629 Array(
"label" => $MC->msg(
'Date', HCU_DISPLAY_AS_RAW),
'caption' => $return[
'data'][
"data_date"]),
630 Array(
"label" => $MC->msg(
'Action', HCU_DISPLAY_AS_RAW),
'caption' => $return[
'data'][
"data_action"]),
631 Array(
"label" => $MC->msg(
'ACH Company Name Label', HCU_DISPLAY_AS_RAW),
'caption' => $return[
'data'][
"data_company"]),
632 Array(
"label" => $MC->msg(
'Account', HCU_DISPLAY_AS_RAW),
'caption' => $return[
'data'][
"data_account"]),
633 Array(
"label" => $MC->msg(
'Amount', HCU_DISPLAY_AS_RAW),
'caption' =>
"$" . mobile_formatnumber($return[
'data'][
"data_amount"]),
","),
634 Array(
"label" => $MC->msg(
'Confirmation', HCU_DISPLAY_AS_RAW),
'caption' => $return[
'data'][
"data_confirm"])
638 if ( $inputVars[
"action"] ===
"submit_batch_payment" ) {
639 $aryInfo[] = $MC->msg(
'ACH Payment Submitted', HCU_DISPLAY_AS_RAW);
641 $aryInfo[] = $MC->msg(
'ACH Collection Submitted', HCU_DISPLAY_AS_RAW);
645 if ( intval( $inputVars[
"update_template"] ) === 1 ) {
646 $partnerAddResult = ACH_UpdateTemplatePartners( $dbh, $HB_ENV, $inputVars[
"template_id"], $batchInfo, $MC );
647 if ( $partnerAddResult[
"code"] !==
"000" ) {
650 $aryInfo[] = $MC->msg(
'ACH Error Template partner update failed', HCU_DISPLAY_AS_RAW);
652 for ( $i = 0 ; $i < count( $partnerAddResult[
"errors"] ); $i++ ) {
653 $aryInfo[] = $partnerAddResult[
"errors"][$i];
657 $aryInfo[] = $MC->msg(
'ACH Template Updated', HCU_DISPLAY_AS_RAW);
661 $aryResult[
"submit_batch"] =
"Success";
667 $uploadFile = $_FILES[
"csvFile"];
668 if ( $uploadFile[
"error"] !== 0 || $uploadFile[
"type"] !=
"text/csv" ) {
669 $aryErrors[] = $MC->msg(
'Upload file error', HCU_DISPLAY_AS_RAW) .
" 1000";
670 throw new Exception (HCU_JsonEncode($aryErrors));
673 $tmpName = $uploadFile[
"tmp_name"];
675 if ( !is_uploaded_file( $tmpName ) ) {
676 $aryErrors[] = $MC->msg(
'Upload file error', HCU_DISPLAY_AS_RAW) .
" 1001";
677 throw new Exception (HCU_JsonEncode($aryErrors));
681 $contents = file( $tmpName, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES );
686 $csvResult = ACH_ProcessCSV( $HB_ENV, $inputVars[
"template_id"], $contents, $MC );
687 if ( $csvResult[
"code"] !==
"000" ) {
688 $aryErrors[] = $csvResult[
"errors"];
689 throw new Exception (HCU_JsonEncode($aryErrors));
693 $aryResult[
"csv"][
"found"] = $csvResult[
"data"][
"found"];
695 $aryResult[
"csv"][
"not_found"] = $csvResult[
"data"][
"not_found"];
697 $aryResult[
"csv"][
"missed"] = $csvResult[
"data"][
"missed"];
700 $aryErrors[] =
"Unexpected action: {$inputVars["action
"]}";
701 throw new Exception (HCU_JsonEncode($aryErrors));
707 $aryReply[
"homecuErrors"] = HCU_JsonDecode( $ex->getMessage() );
710 $aryResult = array();
716 if ( count( $aryInfo ) ) {
717 $aryReply[
"homecuInfo"] = $aryInfo;
720 if ( count( $aryResult ) ) {
721 $aryReply[
"homecuData"] = $aryResult;
724 print HCU_JsonEncode(Array(
"Results" => $aryReply));
727 function FixOneElement( $pInputList ) {
728 $outputArray = array();
730 $keys = HCU_array_keys( $pInputList );
732 foreach ( $keys as $key ) {
733 $outputArray[$key] = html_entity_decode( $pInputList[$key] );
743 function FixEntities( $pHBEnv, $pInputArray ) {
748 if ( !is_array( $pInputArray ) ) {
749 throw new Exception (
"Parameter must be an array.");
752 for ( $i = 0; $i < count( $pInputArray ); $i++ ) {
753 $element = $pInputArray[$i];
756 $retArray[] = FixOneElement( $element );
759 }
catch (Exception $ex) {
760 $reason = $ex->getMessage();
761 $pHBEnv[
"SYSENV"][
"logger"]->info( __FILE__ .
" FixEntities error: " . $reason );
764 $retArray = $pInputArray;