a2billing_bill_diduse.php

来自「asterisk 計費模塊」· PHP 代码 · 共 164 行

PHP
164
字号
#!/usr/bin/php -q<?php /*************************************************************************** *            a2billing_bill_diduse.php * *  Usage : this script will browse all the DID that are reserve and check if the customer need to pay for it *	bill them or warn them per email to know if they want to pay in order to keep their DIDs  * *  ADD THIS SCRIPT IN A CRONTAB JOB *	crontab -e	0 2 * * * php /var/lib/asterisk/agi-bin/libs_a2billing/crontjob/a2billing_bill_diduse.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)	****************************************************************************/	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_BILL_DIDUSE, basename(__FILE__).' line:'.__LINE__."[#### BATCH DIDUSE BEGIN ####]");if (!$A2B -> DbConnect()){							echo "[Cannot connect to the database]\n";			write_log(LOGFILE_CRONT_BILL_DIDUSE, basename(__FILE__).' line:'.__LINE__."[Cannot connect to the database]");			exit;						}//$A2B -> DBHandle$instance_table = new Table();// CHECK THE CARD WITH DID'S$QUERY = "SELECT id_did, reservationdate, month_payed, fixrate, cc_card.id, credit, email, did FROM (cc_did_use INNER JOIN cc_card on cc_card.id=id_cc_card) INNER JOIN cc_did ON (id_did=cc_did.id) WHERE ( releasedate IS NULL OR releasedate < '1984-01-01 00:00:00') AND cc_did_use.activated=1";if ($verbose_level>=1) echo "==> SELECT CARD WIHT DID'S QUERY : $QUERY\n";$result = $instance_table -> SQLExec ($A2B -> DBHandle, $QUERY);if ($verbose_level>=1) print_r ($result);if( !is_array($result)) {	if ($verbose_level>=1) echo "[No DID in use to run the DIDBilling recurring service]\n";	write_log(LOGFILE_CRONT_BILL_DIDUSE, basename(__FILE__).' line:'.__LINE__."[No DID in use to run the DIDBilling recurring service]");	exit();}$oneday = 60*60*24;// count day that user have to recharge his account$daytopay = $A2B->config['global']['didbilling_daytopay'];if ($verbose_level>=1) echo "daytopay=$daytopay \n";// BROWSE THROUGH THE CARD TO APPLY THE DID USAGEforeach ($result as $mydids){	// mail variable for user notification	$user_mail_adrr = '';	$mail_user = false;	$mail_user_content = '';		if ($verbose_level>=1) print_r ($mydids);	if ($verbose_level>=1) echo "------>>>  ID DID = ".$mydids[0]." - MONTHLY RATE = ".$mydids[3]."ID CARD = ".$mydids[4]." -BALANCE =".$mycard[5]." \n";		$day_remaining = 0;	$timestamp_datetopay = mktime(date('H',(strtotime($mydids[1]))-(intval($daytopay) * $oneday)),									date("i",(strtotime($mydids[1]))-(intval($daytopay) * $oneday)),									date("s",(strtotime($mydids[1]))-(intval($daytopay) * $oneday)),									date("m",(strtotime($mydids[1]))-(intval($daytopay) * $oneday))+$mydids[2],									date("d",(strtotime($mydids[1]))-(intval($daytopay) * $oneday)),									date("Y",(strtotime($mydids[1]))-(intval($daytopay) * $oneday)));		$day_remaining = time() - $timestamp_datetopay;	if ($verbose_level>=1) echo "Time now :".time()." - timestamp_datetopay=$timestamp_datetopay\n";	if ($verbose_level>=1) echo "day_remaining=$day_remaining <=".(intval($daytopay) * $oneday)."\n";	if ($day_remaining >= 0)	{		if ($day_remaining<=(intval($daytopay) * $oneday))		{			// THE USER HAVE TO PAY FOR HIS DID NOW						if ($mydids[5] >= $mydids[3])			{				// USER HAVE ENOUGH CREDIT TO PAY FOR THE DID 				$QUERY = "UPDATE cc_card SET credit=credit-'".$mydids[3]."' WHERE id=".$mydids[4];					$result = $instance_table -> SQLExec ($A2B -> DBHandle, $QUERY, 0);				if ($verbose_level>=1) echo "==> UPDATE CARD QUERY: 	$QUERY\n";								$QUERY = "UPDATE cc_did_use set month_payed = month_payed+1 WHERE id_did = '".$mydids[0].						"' AND activated = 1 AND ( releasedate IS NULL OR releasedate < '1984-01-01 00:00:00') " ;				if ($verbose_level>=1) echo "==> UPDATE DID USE QUERY: 	$QUERY\n";				$result = $instance_table -> SQLExec ($A2B -> DBHandle, $QUERY, 0);								$QUERY = "INSERT INTO cc_charge (id_cc_card, amount, chargetype, id_cc_did, currency) VALUES ('".$mydids[4]."', '".$mydids[3]."', '2','".$mydids[0]."', '".strtoupper($A2B->config['global']['base_currency'])."')";				if ($verbose_level>=1) echo "==> INSERT CHARGE QUERY: 	$QUERY\n";				$result = $instance_table -> SQLExec ($A2B -> DBHandle, $QUERY, 0);								$mail_user_content.="BALANCE REMAINING ".$mydids[5]-$mydids[3]."\n\n";				$mail_user_content.="An automatic taking away of :".$mydids[3]." has been carry out of your account to pay your DID (".$mydids[7].")\n\n";					$mail_user_content.="Monthly cost for DID :".$mydids[0]."\n\n";				$mail_user = true;				$mail_user_subject="DID notification - (".$mydids[7].")";			} else {				// USER DONT HAVE ENOUGH CREDIT TO PAY FOR THE DID - WE WILL WARN HIM				$mail_user_content.="BALANCE REMAINING ".$mydids[5]."\n\n";				$mail_user_content.="Your credit is not enough to pay your DID number (".$mydids[7]."), the monthly cost is :".$mydids[0]."\n\n";				$mail_user_content.="You have ".date ("d",$day_remaining)." days to recharge your card or the DID will be automatically released \n\n";				$mail_user = true;				$mail_user_subject="DID notification - (".$mydids[7].")";			}		} else {			// RELEASE THE DID 			$QUERY = "UPDATE cc_did set iduser = 0, reserved = 0 WHERE id='".$mydids[0]."'" ;			if ($verbose_level>=1) echo "==> UPDATE DID QUERY: 	$QUERY\n";			$result = $instance_table -> SQLExec ($A2B -> DBHandle, $QUERY, 0);						$QUERY = "UPDATE cc_did_use set releasedate = now() WHERE id_did = '".$mydids[0]."' and activated = 1" ;			$result = $instance_table -> SQLExec ($A2B -> DBHandle, $QUERY, 0);			if ($verbose_level>=1) echo "==> UPDATE DID USE QUERY: 	$QUERY\n";						$QUERY = "INSERT INTO cc_did_use (activated, id_did) VALUES ('0','".$mydids[0]."')";			$result = $instance_table -> SQLExec ($A2B -> DBHandle, $QUERY, 0);			if ($verbose_level>=1) echo "==> INSERT NEW DID USE QUERY: 	$QUERY\n";						$QUERY = "DELETE FROM cc_did_destination WHERE id_cc_did =".$mydids[0];			$result = $instance_table -> SQLExec ($A2B -> DBHandle, $QUERY, 0);			if ($verbose_level>=1) echo "==> DELETEDID did_destination QUERY: 	$QUERY\n";						$mail_user_content.="The DID ".$mydids[7]." has been automatically released!\n\n";			$mail_user=true;			$mail_user_subject="DID Released";		}	}	$user_mail_adrr=$mydids[6];	if ($mail_user && strlen($user_mail_adrr)>5) mail($user_mail_adrr, $mail_user_subject, $mail_content);}write_log(LOGFILE_CRONT_BILL_DIDUSE, basename(__FILE__).' line:'.__LINE__."[Service DIDUSE finish]");if ($verbose_level>=1) echo "#### END RECURRING SERVICES \n";write_log(LOGFILE_CRONT_BILL_DIDUSE, basename(__FILE__).' line:'.__LINE__."[#### BATCH DIDUSE  PROCESS END ####]");	?>

⌨️ 快捷键说明

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