From e3562cd32ba099db127afb51d346437402f9bc2a Mon Sep 17 00:00:00 2001 From: luis daniel lucio quiroz Date: Tue, 24 Jun 2014 11:51:37 +0000 Subject: [PATCH] better billing decition, specially to allow tollfree billing --- app/xml_cdr/v_xml_cdr_import.php | 63 ++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 24 deletions(-) diff --git a/app/xml_cdr/v_xml_cdr_import.php b/app/xml_cdr/v_xml_cdr_import.php index d7c2539938..cd6a41ca8b 100644 --- a/app/xml_cdr/v_xml_cdr_import.php +++ b/app/xml_cdr/v_xml_cdr_import.php @@ -230,32 +230,47 @@ function call_cost($rate, $i1, $i2, $t){ //billing information if (file_exists($_SERVER['DOCUMENT_ROOT'].PROJECT_PATH."/app/billings/app_config.php")){ - $database->fields['carrier_name'] = check_str(urldecode($xml->variables->lcr_carrier)); - $sql_rate ="SELECT connect_increment, talk_increment FROM v_lcr, v_carriers WHERE v_carriers.carrier_name = '".$xml->variables->lcr_carrier."' AND v_lcr.rate=".$xml->variables->lcr_rate." AND v_lcr.lcr_direction = '".check_str(urldecode($xml->variables->call_direction))."' AND digits in (".check_str(urldecode($xml->variables->lcr_query_expanded_digits)).") AND v_lcr.carrier_uuid = v_carriers.carrier_uuid ORDER BY digits DESC, rate ASC limit 1"; - $sql_user_rate = "SELECT connect_increment, talk_increment FROM v_lcr WHERE carrier_uuid='' AND v_lcr.lcr_direction = '".check_str(urldecode($xml->variables->call_direction))."' AND digits IN (".check_str(urldecode($xml->variables->lcr_query_expanded_digits)).") ORDER BY digits DESC, rate ASC limit 1"; - if ($debug) { - echo "sql_rate: $sql_rate\n"; - echo "sql_user_rate: $sql_user_rate\n"; + switch(check_str(urldecode($xml->variables->call_direction))){ + case "outbound": + $database->fields['carrier_name'] = check_str(urldecode($xml->variables->lcr_carrier)); + $sql_rate ="SELECT connect_increment, talk_increment FROM v_lcr, v_carriers WHERE v_carriers.carrier_name = '".$xml->variables->lcr_carrier."' AND v_lcr.rate=".$xml->variables->lcr_rate." AND v_lcr.lcr_direction = '".check_str(urldecode($xml->variables->call_direction))."' AND digits in (".check_str(urldecode($xml->variables->lcr_query_expanded_digits)).") AND v_lcr.carrier_uuid = v_carriers.carrier_uuid ORDER BY digits DESC, rate ASC limit 1"; + $sql_user_rate = "SELECT connect_increment, talk_increment FROM v_lcr WHERE carrier_uuid='' AND v_lcr.lcr_direction = '".check_str(urldecode($xml->variables->call_direction))."' AND digits IN (".check_str(urldecode($xml->variables->lcr_query_expanded_digits)).") ORDER BY digits DESC, rate ASC limit 1"; + if ($debug) { + echo "sql_rate: $sql_rate\n"; + echo "sql_user_rate: $sql_user_rate\n"; + } + + $db2 = new database; + $db2->sql = $sql_rate; + $db2->result = $db2->execute(); +// print_r($db2->result); + $lcr_rate = (strlen($xml->variables->lcr_rate)?$xml->variables->lcr_rate:0); + $lcr_first_increment = (strlen($db2->result[0]['connect_increment'])?check_str($db2->result[0]['connect_increment']):60); + $lcr_second_increment = (strlen($db2->result[0]['talk_increment'])?check_str($db2->result[0]['talk_increment']):60); + unset($db2->sql); + unset($db2->result); + + $db2->sql = $sql_user_rate; + $db2->result = $db2->execute(); + $lcr_user_rate = (strlen($xml->variables->lcr_user_rate)?$xml->variables->lcr_user_rate:0.01); + $lcr_user_first_increment = (strlen($db2->result[0]['connect_increment'])?check_str($db2->result[0]['connect_increment']):60); + $lcr_user_second_increment = (strlen($db2->result[0]['talk_increment'])?check_str($db2->result[0]['talk_increment']):60); + + unset($db2->sql); + unset($db2->result); + break; + case "inbound": + // Need to add code for tollfree number, unique case when we bill inbound + $lcr_rate = 0; $lcr_first_increment = 0; $lcr_second_increment = 0; + $lcr_user_rate = 0; $lcr_user_first_increment = 0; $lcr_user_second_increment = 0; + + break; + case "local": + $lcr_rate = 0; $lcr_first_increment = 0; $lcr_second_increment = 0; + $lcr_user_rate = 0; $lcr_user_first_increment = 0; $lcr_user_second_increment = 0; + break; } - $db2 = new database; - $db2->sql = $sql_rate; - $db2->result = $db2->execute(); -// print_r($db2->result); - $lcr_rate = (strlen($xml->variables->lcr_rate)?$xml->variables->lcr_rate:0); - $lcr_first_increment = (strlen($db2->result[0]['connect_increment'])?check_str($db2->result[0]['connect_increment']):60); - $lcr_second_increment = (strlen($db2->result[0]['talk_increment'])?check_str($db2->result[0]['talk_increment']):60); - unset($db2->sql); - unset($db2->result); - - $db2->sql = $sql_user_rate; - $db2->result = $db2->execute(); - $lcr_user_rate = (strlen($xml->variables->lcr_user_rate)?$xml->variables->lcr_user_rate:(check_str(urldecode($xml->variables->call_direction)) == "outbound"?0.01:0.0)); - $lcr_user_first_increment = (strlen($db2->result[0]['connect_increment'])?check_str($db2->result[0]['connect_increment']):60); - $lcr_user_second_increment = (strlen($db2->result[0]['talk_increment'])?check_str($db2->result[0]['talk_increment']):60); - - unset($db2->sql); - unset($db2->result); $time = check_str(urldecode($xml->variables->billsec)); $call_buy = call_cost($lcr_rate, $lcr_first_increment, $lcr_second_increment, $time); $call_sell = call_cost($lcr_user_rate, $lcr_user_first_increment, $lcr_user_second_increment, check_str(urldecode($xml->variables->billsec)));