a2billing_subscription_fee.php

来自「asterisk用 的voip记费软件」· PHP 代码 · 共 192 行

PHP
192
字号
#!/usr/bin/php -q<?php /*************************************************************************** *            a2billing_subscription_fee.php * *  Fri Feb 27 14:17:10 2007 (in the train from Jemappes to Bruxelles) *  Copyright  2007  User : Areski *  ADD THIS SCRIPT IN A CRONTAB JOB *	crontab -e	0 6 1 * * php /var/lib/asterisk/agi-bin/libs_a2billing/crontjob/a2billing_subscription_fee.php		field	 allowed values	-----	 --------------	minute	 		0-59	hour		 	0-23	day of month	1-31	month	 		1-12 (or names, see below)	day of week	 	0-7 (0 or 7 is Sun, or use names)		The sample above will run the script every 21 of each month at 10AM****************************************************************************/set_time_limit(0);error_reporting(E_ALL ^ (E_NOTICE | E_WARNING));include (dirname(__FILE__)."/../db_php_lib/Class.Table.php");include (dirname(__FILE__)."/../Class.A2Billing.php");include (dirname(__FILE__)."/../Misc.php");$verbose_level=0;$groupcard=5000;if ($A2B->config["database"]['dbtype'] == "postgres"){	$UNIX_TIMESTAMP = "date_part('epoch',";}else{	$UNIX_TIMESTAMP = "UNIX_TIMESTAMP(";}$A2B = new A2Billing();$A2B -> load_conf($agi, NULL, 0, $idconfig);write_log(LOGFILE_CRONT_SUBSCRIPTIONFEE, basename(__FILE__).' line:'.__LINE__."[#### BATCH BEGIN ####]");if (!$A2B -> DbConnect()){					echo "[Cannot connect to the database]\n";	write_log(LOGFILE_CRONT_SUBSCRIPTIONFEE, basename(__FILE__).' line:'.__LINE__."[Cannot connect to the database]");	exit;						}$instance_table = new Table();// SELECT * FROM cc_card LEFT JOIN cc_subscription_fee ON cc_card.id_subscription_fee=cc_subscription_fee.id WHERE cc_subscription_fee.status=1// CHECK AMOUNT OF CARD ON WHICH APPLY THE SERVICE$QUERY = 'SELECT count(*) FROM cc_card LEFT JOIN cc_subscription_fee ON cc_card.id_subscription_fee=cc_subscription_fee.id WHERE cc_subscription_fee.status=1';$result = $instance_table -> SQLExec ($A2B -> DBHandle, $QUERY);$nb_card = $result[0][0];$nbpagemax=(intval($nb_card/$groupcard));if ($verbose_level>=1) echo "===> NB_CARD : $nb_card - NBPAGEMAX:$nbpagemax\n";if (!($nb_card>0)){	if ($verbose_level>=1) echo "[No card to run the Subscription Fee service]\n";	write_log(LOGFILE_CRONT_SUBSCRIPTIONFEE, basename(__FILE__).' line:'.__LINE__."[No card to run the Subscription Feeservice]");	exit();}//SELECT cc_card.id, username, credit, cc_card.currency, cc_subscription_fee.id, cc_subscription_fee.label, cc_subscription_fee.fee, cc_subscription_fee.currency, emailreport FROM cc_card LEFT JOIN cc_subscription_fee ON cc_card.id_subscription_fee=cc_subscription_fee.id WHERE cc_subscription_fee.status=1// CHECK THE SUBSCRIPTION SERVICES$QUERY = 'SELECT id, label, fee, currency, emailreport FROM cc_subscription_fee WHERE status=1 ORDER BY id ';$result = $instance_table -> SQLExec ($A2B -> DBHandle, $QUERY);if ($verbose_level>=1) print_r ($result);if( !is_array($result)) {		echo "[No Recurring service to run]\n";		write_log(LOGFILE_CRONT_SUBSCRIPTIONFEE, basename(__FILE__).' line:'.__LINE__."[ No Recurring service to run]");		exit();}write_log(LOGFILE_CRONT_SUBSCRIPTIONFEE, basename(__FILE__).' line:'.__LINE__."[Number of card found : $nb_card]");$oneday = 60*60*24;$currencies_list = get_currencies($A2B -> DBHandle);/*$amount_converted = convert_currency ($currencies_list, 1, 'USD', 'EUR');$amount_converted = convert_currency ($currencies_list, 1, 'MAD', 'EUR');$amount_converted = convert_currency ($currencies_list, 1, 'EUR', 'MAD');exit;*/// mail variable for user notification// BROWSE THROUGH THE SERVICES foreach ($result as $myservice) {	$totalcardperform = 0;	$totalcredit = 0;	$totalcredit_converted = 0;		$myservice_id = $myservice[0];	$myservice_fee = $myservice[2];	$myservice_cur = $myservice[3];		write_log(LOGFILE_CRONT_SUBSCRIPTIONFEE, basename(__FILE__).' line:'.__LINE__."[Subscription Fee Service analyze cards on which to apply service ]");	// BROWSE THROUGH THE CARD TO APPLY THE SUBSCRIPTION FEE SERVICE 	for ($page = 0; $page <= $nbpagemax; $page++) {				$sql = "SELECT id, credit, currency, username, email FROM cc_card WHERE id_subscription_fee='$myservice_id' ORDER BY id ";		if ($A2B->config["database"]['dbtype'] == "postgres"){			$sql .= " LIMIT $groupcard OFFSET ".$page*$groupcard;		}else{			$sql .= " LIMIT ".$page*$groupcard.", $groupcard";		}		if ($verbose_level>=1) echo "==> SELECT CARD QUERY : $sql\n";		$result_card = $instance_table -> SQLExec ($A2B -> DBHandle, $sql);				foreach ($result_card as $mycard){			if ($verbose_level>=1) print_r ($mycard);			if ($verbose_level>=1) echo "------>>>  ID = ".$mycard[0]." - CARD =".$mycard[3]." - BALANCE =".$mycard[1]." \n";							$amount_converted = convert_currency ($currencies_list, $myservice_fee, strtoupper($myservice_cur), strtoupper($mycard[2]));						if ($verbose_level>=1) echo "AMOUNT TO REMOVE FROM THE CARD ->".$amount_converted;			if (abs($amount_converted) > 0){	// CHECK IF WE HAVE AN AMOUNT TO REMOVE				$QUERY = "UPDATE cc_card SET credit=credit-'".$amount_converted."' WHERE id=".$mycard[0];					$result = $instance_table -> SQLExec ($A2B -> DBHandle, $QUERY, 0);				if ($verbose_level>=1) echo "==> UPDATE CARD QUERY: 	$QUERY\n";								// ADD A CHARGE				$QUERY = "INSERT INTO cc_charge (id_cc_card, id_cc_subscription_fee, chargetype, amount, currency) ".						 "VALUES ('".$mycard[0]."', '$myservice_id', '3', '$amount_converted', '".strtoupper($mycard[2])."')";				$result_insert = $instance_table -> SQLExec ($A2B -> DBHandle, $QUERY, 0);				if ($verbose_level>=1) echo "==> INSERT CHARGE QUERY=$QUERY\n";								/* // INSERT REPORT IN cc_subscription_fee_card 				$QUERY = "INSERT INTO cc_subscription_fee_card (id_cc_card, id_cc_subscription_fee, fee, fee_converted, currency) ".						 "VALUES ('".$mycard[0]."', '$myservice_id', '$myservice_fee', '$amount_converted', '".strtoupper($mycard[2])."')";				$result_insert = $instance_table -> SQLExec ($A2B -> DBHandle, $QUERY, 0);				if ($verbose_level>=1) echo "==> INSERT SERVICE REPORT QUERY=$QUERY\n";				*/								$totalcardperform ++;				$totalcredit += $myservice_fee;				$totalcredit_converted += $amount_converted;			}			//exit();		}		// Little bit of rest		sleep(15);	}		write_log(LOGFILE_CRONT_SUBSCRIPTIONFEE, basename(__FILE__).' line:'.__LINE__."[Service finish]");		write_log(LOGFILE_CRONT_SUBSCRIPTIONFEE, basename(__FILE__).' line:'.__LINE__."[Service report : 'totalcardperform=$totalcardperform', 'totalcredit=$totalcredit']");	if ($verbose_level>=1) echo "[Service report : 'totalcardperform=$totalcardperform', 'totalcredit=$totalcredit']";		// UPDATE THE SERVICE			$QUERY = "UPDATE cc_subscription_fee SET datelastrun=now(), numberofrun=numberofrun+1, totalcardperform=totalcardperform+".$totalcardperform.			 ", totalcredit = totalcredit + '$totalcredit' WHERE id=$myservice_id";		$result = $instance_table -> SQLExec ($A2B -> DBHandle, $QUERY, 0);	if ($verbose_level>=1) echo "==> SERVICE UPDATE QUERY: 	$QUERY\n";			// SEND REPORT	if (strlen($myservice[4])>0){		$mail_content = "SUBSCRIPTION SERVICE NAME = ".$myservice[1];		$mail_content .= "\n\nTotal card updated = ".$totalcardperform;		$mail_content .= "\nTotal credit removed = ".$totalcredit;		mail($myservice[4], "A2BILLING SUBSCRIPTION SERVICES : REPORT", $mail_content);	}} // END FOREACH SERVICESif ($verbose_level>=1) echo "#### END SUBSCRIPTION SERVICES \n";write_log(LOGFILE_CRONT_SUBSCRIPTIONFEE, basename(__FILE__).' line:'.__LINE__."[#### BATCH PROCESS END ####]");		?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?