From 29b94f089af91247825a7b53603d998befa1dca8 Mon Sep 17 00:00:00 2001 From: "JP-DEV\\sjpad" Date: Fri, 8 Sep 2017 15:40:04 -0400 Subject: [PATCH] Add show payment history in Ledger and Globals. Fix Front Payments form validation and invoice balance taking payments to enc=0. Fix for payments not summing correctly for amounts over 1,000.00 in Ledger. --- interface/patient_file/deleter.php | 22 ++++---- interface/patient_file/front_payment.php | 90 +++++++++++++++++--------------- interface/reports/pat_ledger.php | 38 +++++++++----- library/globals.inc.php | 7 +++ 4 files changed, 92 insertions(+), 65 deletions(-) diff --git a/interface/patient_file/deleter.php b/interface/patient_file/deleter.php index ab23cec79..92e6e8272 100644 --- a/interface/patient_file/deleter.php +++ b/interface/patient_file/deleter.php @@ -349,15 +349,19 @@ if ($_POST['form_submit']) { } else { // Encounter is 0! Seems this happens for pre-payments. $tpmt = sprintf("%01.2f", $payrow['amount1'] + $payrow['amount2']); - row_delete( - "ar_session", - "patient_id = '" . add_escape_custom($patient_id) . "' AND " . - "payer_id = 0 AND " . - "reference = '" . add_escape_custom($payrow['source']) . "' AND " . - "pay_total = '" . add_escape_custom($tpmt) . "' AND " . - "(SELECT COUNT(*) FROM ar_activity where ar_activity.session_id = ar_session.session_id) " . - "ORDER BY session_id DESC LIMIT 1" - ); + // Patched out 09/06/17- If this is prepayment can't see need for ar_activity when prepayments not stored there? In this case passed in session id is valid. + // Was causing delete of wrong prepayment session in the case of delete from checkout undo and/or front receipt delete if payment happens to be same + // amount of a previous prepayment. Much tested but look here if problems in postings. + // + /* row_delete("ar_session", + "patient_id = ' " . add_escape_custom($patient_id) . " ' AND " . + "payer_id = 0 AND " . + "reference = '" . add_escape_custom($payrow['source']) . "' AND " . + "pay_total = '" . add_escape_custom($tpmt) . "' AND " . + "(SELECT COUNT(*) FROM ar_activity where ar_activity.session_id = ar_session.session_id) = 0 " . + "ORDER BY session_id DESC LIMIT 1"); */ + + row_delete("ar_session", "session_id = '" . add_escape_custom($ref_id) . "'"); } row_delete("payments", "id = '" . add_escape_custom($payrow['id']) . "'"); diff --git a/interface/patient_file/front_payment.php b/interface/patient_file/front_payment.php index b68df5e87..b7780611c 100644 --- a/interface/patient_file/front_payment.php +++ b/interface/patient_file/front_payment.php @@ -185,7 +185,9 @@ if ($_POST['form_save']) { if ($amount = 0 + $payment) { $zero_enc=$enc; if ($_REQUEST['radio_type_of_payment']=='invoice_balance') { - ; + if (!$enc) { + $enc = calendar_arrived($form_pid); + } } else { if (!$enc) { $enc = calendar_arrived($form_pid); @@ -316,26 +318,26 @@ if ($_POST['form_save']) { $amount=0; } - sqlBeginTrans(); - $sequence_no = sqlQuery("SELECT IFNULL(MAX(sequence_no),0) + 1 AS increment FROM ar_activity WHERE pid = ? AND encounter = ?", array($form_pid, $enc)); - sqlStatement( - "insert into ar_activity set " . - "pid = ?" . - ", encounter = ?" . - ", sequence_no = ?" . - ", code_type = ?" . - ", code = ?" . - ", modifier = ?" . - ", payer_type = ?" . - ", post_time = now() " . - ", post_user = ?" . - ", session_id = ?" . - ", pay_amount = ?" . - ", adj_amount = ?" . - ", account_code = 'PP'", - array($form_pid,$enc,$sequence_no['increment'],$Codetype,$Code,$Modifier,0,$_SESSION['authUserID'],$payment_id,$insert_value,0) - ); - sqlCommitTrans(); + sqlBeginTrans(); + $sequence_no = sqlQuery("SELECT IFNULL(MAX(sequence_no),0) + 1 AS increment FROM ar_activity WHERE pid = ? AND encounter = ?", array($form_pid, $enc)); + sqlStatement( + "insert into ar_activity set " . + "pid = ?" . + ", encounter = ?" . + ", sequence_no = ?" . + ", code_type = ?" . + ", code = ?" . + ", modifier = ?" . + ", payer_type = ?" . + ", post_time = now() " . + ", post_user = ?" . + ", session_id = ?" . + ", pay_amount = ?" . + ", adj_amount = ?" . + ", account_code = 'PP'", + array($form_pid,$enc,$sequence_no['increment'],$Codetype,$Code,$Modifier,0,$_SESSION['authUserID'],$payment_id,$insert_value,0) + ); + sqlCommitTrans(); }//if }//while if ($amount!=0) {//if any excess is there. @@ -346,7 +348,7 @@ if ($_POST['form_save']) { "pid = ?" . ", encounter = ?" . ", sequence_no = ?" . - ", code_type = ?" . + ", code_type = ?" . ", code = ?" . ", modifier = ?" . ", payer_type = ?" . @@ -646,21 +648,26 @@ function validate() ok=-1; top.restoreSession(); issue='no'; - if(((document.getElementById('form_method').options[document.getElementById('form_method').selectedIndex].value=='check_payment' || - document.getElementById('form_method').options[document.getElementById('form_method').selectedIndex].value=='bank_draft') && - document.getElementById('check_number').value=='' )) - { + if(((document.getElementById('form_method').options[document.getElementById('form_method').selectedIndex].value=='check_payment' || + document.getElementById('form_method').options[document.getElementById('form_method').selectedIndex].value=='bank_draft') && + document.getElementById('check_number').value=='' )) + { alert(""); document.getElementById('check_number').focus(); return false; } - if(document.getElementById('radio_type_of_payment_self1').checked==false && document.getElementById('radio_type_of_payment_self2').checked==false && document.getElementById('radio_type_of_payment1').checked==false && document.getElementById('radio_type_of_payment2').checked==false && document.getElementById('radio_type_of_payment5').checked==false && document.getElementById('radio_type_of_payment4').checked==false) + if(document.getElementById('radio_type_of_payment_self1').checked==false && + document.getElementById('radio_type_of_payment1').checked==false && + document.getElementById('radio_type_of_payment2').checked==false && + document.getElementById('radio_type_of_payment4').checked==false) { alert(""); return false; } - if(document.getElementById('radio_type_of_payment_self1').checked==true || document.getElementById('radio_type_of_payment_self2').checked==true || document.getElementById('radio_type_of_payment1').checked==true || document.getElementById('radio_type_of_payment5').checked==true) + + if(document.getElementById('radio_type_of_payment_self1').checked==true || + document.getElementById('radio_type_of_payment1').checked==true) { for (var i = 0; i < f.elements.length; ++i) { @@ -670,7 +677,7 @@ function validate() { if(elem.value*1>0) {//A warning message, if the amount is posted with out encounter. - if(confirm("")) + if(confirm("")) { ok=1; } @@ -692,7 +699,7 @@ function validate() { var elem = f.elements[i]; var ename = elem.name; - if (ename.indexOf('form_upay[') == 0) //Today is this text box. + if (ename.indexOf('form_upay[0') == 0) //Today is this text box. { if(f.form_paytotal.value*1!=elem.value*1)//Total CO-PAY is not posted against today {//A warning message, if the amount is posted against an old encounter. @@ -712,13 +719,11 @@ function validate() }//Co Pay else if(document.getElementById('radio_type_of_payment2').checked==true)//Invoice Balance { - if(document.getElementById('Today').innerHTML=='') - { for (var i = 0; i < f.elements.length; ++i) { var elem = f.elements[i]; var ename = elem.name; - if (ename.indexOf('form_upay[') == 0) + if (ename.indexOf('form_upay[0') == 0) { if (elem.value*1 > 0) { @@ -728,7 +733,6 @@ function validate() break; } } - } } if(ok==-1) { @@ -767,13 +771,13 @@ function make_it_hide_enc_pay() for (var i = 1; ; ++i) { var td_inspaid_elem = document.getElementById('td_inspaid_'+i) - var td_patient_copay_elem = document.getElementById('td_patient_copay_'+i) + var td_patient_copay_elem = document.getElementById('td_patient_copay_'+i) var td_copay_elem = document.getElementById('td_copay_'+i) var balance_elem = document.getElementById('balance_'+i) if (td_inspaid_elem) { td_inspaid_elem.style.display="none"; - td_patient_copay_elem.style.display="none"; + td_patient_copay_elem.style.display="none"; td_copay_elem.style.display="none"; balance_elem.style.display="none"; } @@ -784,7 +788,7 @@ function make_it_hide_enc_pay() } document.getElementById('td_total_4').style.display="none"; document.getElementById('td_total_7').style.display="none"; - document.getElementById('td_total_8').style.display="none"; + document.getElementById('td_total_8').style.display="none"; document.getElementById('td_total_6').style.display="none"; document.getElementById('table_display').width="420px"; @@ -798,7 +802,7 @@ function make_visible() document.getElementById('td_head_total_charge').style.display="none"; document.getElementById('td_head_insurance_payment').style.display="none"; document.getElementById('td_head_patient_payment').style.display="none"; - document.getElementById('td_head_patient_co_pay').style.display="none"; + document.getElementById('td_head_patient_co_pay').style.display="none"; document.getElementById('td_head_co_pay').style.display="none"; document.getElementById('td_head_insurance_balance').style.display="none"; document.getElementById('td_head_patient_balance').style.display="none"; @@ -807,7 +811,7 @@ function make_visible() var td_charges_elem = document.getElementById('td_charges_'+i) var td_inspaid_elem = document.getElementById('td_inspaid_'+i) var td_ptpaid_elem = document.getElementById('td_ptpaid_'+i) - var td_patient_copay_elem = document.getElementById('td_patient_copay_'+i) + var td_patient_copay_elem = document.getElementById('td_patient_copay_'+i) var td_copay_elem = document.getElementById('td_copay_'+i) var balance_elem = document.getElementById('balance_'+i) var duept_elem = document.getElementById('duept_'+i) @@ -827,7 +831,7 @@ function make_visible() } } document.getElementById('td_total_7').style.display=""; - document.getElementById('td_total_8').style.display=""; + document.getElementById('td_total_8').style.display=""; document.getElementById('td_total_1').style.display="none"; document.getElementById('td_total_2').style.display="none"; document.getElementById('td_total_3').style.display="none"; @@ -845,7 +849,7 @@ function make_it_hide() document.getElementById('td_head_insurance_payment').style.display=""; document.getElementById('td_head_patient_payment').style.display=""; document.getElementById('td_head_patient_co_pay').style.display=""; - document.getElementById('td_head_co_pay').style.display=""; + document.getElementById('td_head_co_pay').style.display=""; document.getElementById('td_head_insurance_balance').style.display=""; document.getElementById('td_head_patient_balance').style.display=""; for (var i = 1; ; ++i) @@ -862,7 +866,7 @@ function make_it_hide() td_charges_elem.style.display=""; td_inspaid_elem.style.display=""; td_ptpaid_elem.style.display=""; - td_patient_copay_elem.style.display=""; + td_patient_copay_elem.style.display=""; td_copay_elem.style.display=""; balance_elem.style.display=""; duept_elem.style.display=""; @@ -878,7 +882,7 @@ function make_it_hide() document.getElementById('td_total_4').style.display=""; document.getElementById('td_total_5').style.display=""; document.getElementById('td_total_6').style.display=""; - document.getElementById('td_total_7').style.display=""; + document.getElementById('td_total_7').style.display=""; document.getElementById('td_total_8').style.display=""; document.getElementById('table_display').width="635px"; diff --git a/interface/reports/pat_ledger.php b/interface/reports/pat_ledger.php index 96b99dc73..3e3a25f35 100644 --- a/interface/reports/pat_ledger.php +++ b/interface/reports/pat_ledger.php @@ -162,8 +162,8 @@ function PrintEncFooter() echo ""; echo " "; echo "". xlt('Encounter Balance').":"; - echo "".text($enc_units).""; - echo "".text(oeFormatMoney($enc_chg)).""; + echo "".text($enc_units).""; + echo "".text(oeFormatMoney($enc_chg)).""; echo "".text(oeFormatMoney($enc_pmt)).""; echo "".text(oeFormatMoney($enc_adj)).""; echo "".text(oeFormatMoney($enc_bal)).""; @@ -174,9 +174,13 @@ function PrintCreditDetail($detail, $pat, $unassigned = false) global $enc_pmt, $total_pmt, $enc_adj, $total_adj, $enc_bal, $total_bal; global $bgcolor, $orow, $enc_units, $enc_chg; foreach ($detail as $pmt) { + $uap_flag = false; if ($unassigned) { if (($pmt['pay_total'] - $pmt['applied']) == 0) { - continue; + if (!$GLOBALS['show_payment_history']) { + continue; + } + $uap_flag = true; } } @@ -216,7 +220,12 @@ function PrintCreditDetail($detail, $pat, $unassigned = false) $description .= '['.$memo.']'; } - + if ($uap_flag === true) { + if ($description) { + $description .= ' '; + } + $description .= '{Pay History}'; + } $print .= "". text($description)." "; $payer = ($pmt['name'] == '') ? xl('Patient') : $pmt['name']; @@ -232,9 +241,9 @@ function PrintCreditDetail($detail, $pat, $unassigned = false) $print .= "".text($type)." "; if ($unassigned) { $pmt_amt = $pmt['pay_total'] - $pmt['applied']; - $uac_bal = oeFormatMoney($pmt_amt * -1); - $uac_appl = oeFormatMoney($pmt['applied']); - $uac_total = oeFormatMoney($pmt['pay_total']); + $uac_bal = $pmt_amt * -1; + $uac_appl = $pmt['applied']; + $uac_total = $pmt['pay_total']; $pmt_amt = $pmt['pay_total']; $total_pmt = $total_pmt - $uac_bal; } else { @@ -259,10 +268,13 @@ function PrintCreditDetail($detail, $pat, $unassigned = false) $print_adj = oeFormatMoney($adj_amt); } - $print .= "".text($uac_appl)." "; + $print_appl = $uac_appl ? oeFormatMoney($uac_appl) : ""; + $print_bal = $uac_bal ? oeFormatMoney($uac_bal) : ""; + + $print .= "".text($print_appl)." "; $print .= "".text($print_pmt)." "; $print .= "".text($print_adj)." "; - $print .= "".text($uac_bal)." "; + $print .= "".text($print_bal)." "; $print .= "\n"; echo $print; if ($pmt['follow_up_note'] != '') { @@ -751,8 +763,8 @@ if ($_REQUEST['form_refresh'] || $_REQUEST['form_csvexport']) { } $print .= "".text($bill)." / ".text($who).""; - $print .= "". text($erow['units']).""; - $print .= "". text(oeFormatMoney($erow['fee'])).""; + $print .= "". text($erow['units']).""; + $print .= "". text(oeFormatMoney($erow['fee'])).""; $print .= "   "; $print .= "\n"; @@ -809,8 +821,8 @@ if ($_REQUEST['form_refresh'] || $_REQUEST['form_csvexport']) { echo "\n"; echo "  "; echo " " . xlt("Grand Total") ."\n"; - echo " ". text($total_units) ."\n"; - echo " ". text(oeFormatMoney($total_chg)) ."\n"; + echo " ". text($total_units) ."\n"; + echo " ". text(oeFormatMoney($total_chg)) ."\n"; echo " ". text(oeFormatMoney($total_pmt)) ."\n"; echo " ". text(oeFormatMoney($total_adj)) ."\n"; echo " ". text(oeFormatMoney($total_bal)) . "\n"; diff --git a/library/globals.inc.php b/library/globals.inc.php index 4332ef201..71602a872 100644 --- a/library/globals.inc.php +++ b/library/globals.inc.php @@ -1058,6 +1058,13 @@ $GLOBALS_METADATA = array( xl('Default selection for rendering provider in fee sheet.') ), + 'show_payment_history' => array( + xl('Show all payment history in Patient Ledger'), + 'bool', // data type + '1', // default = true + xl('Turn on to show all payment history in Patient Ledger') + ), + 'support_fee_sheet_line_item_provider' => array( xl('Support provider in line item in fee sheet'), 'bool', // data type -- 2.11.4.GIT