: !/bin/sh # extncalls8.t21batch ################################################################# # T21BATCHDESC Extension Call Detail # ALLOWBLANKDATES false # CUSTOMDESC Enter Dialled Number (e. 001* or ALL for all numbers) # CUSTOMDEF ALL # T21BATCHVAR1DESC Enter Minimum Duration in seconds (def. 0) # T21BATCHVAR1VALU 0 # T21BATCHVAR2DESC Enter Minimum Call Cost in dollars and cents # T21BATCHVAR2VALU 0.0 # T21BATCHVAR3DESC Enter Extension list ("," delimited) # T21BATCHVAR3VALU ALL # T21BATCHVAR4DESC calltype # T21BATCHVAR4VALU ALL # T21BATCHVAR5DESC expandedcalltype # T21BATCHVAR5VALU ALL # T21BATCHENDARGS ######################################################################## ######################################################################## DEFDIALLEDNO="ALL" DEFDURATION="0" DEFCALLCOST="0.0" progname=$0 SDATE=$1; EDATE=$2; STIME=$3; ETIME=$4 if [ -n "$5" ]; then SITEID=$5 fi if [ -n "$6" ]; then DIALLEDNO=$6 #else # DIALLEDNO=$DEFDIALLEDNO fi if [ -n "$T21BATCHVAR1VALU" ]; then DURATION=$T21BATCHVAR1VALU #else # DURATION=$DEFDURATION fi if [ -n "$T21BATCHVAR2VALU" ]; then CALLCOST=$T21BATCHVAR2VALU #else # CALLCOST=$DEFCALLCOST fi if [ -n "$T21BATCHVAR3VALU" ]; then EXTNLIST="$T21BATCHVAR3VALU" else EXTNLIST="" fi if [ -n "$T21BATCHVAR4VALU" ]; then CALLTYPE="$T21BATCHVAR4VALU" else CALLTYPE="" fi if [ -n "$T21BATCHVAR5VALU" ]; then EXPANDEDCALLTYPE="$T21BATCHVAR5VALU" else EXPANDEDCALLTYPE="" fi #ACCODE="" ACCODE="ALL" #----------------------------------------- ## Testing #SDATE="20/11/2015" #EDATE="20/11/2015" #SDATE="01/06/2015" #EDATE="30/11/2015" #SITEID="ALL" #DIALLEDNO="ALL" #DIALLEDNO="*417002877" #DURATION=ALL #CALLCOST=ALL #EXTNLIST="ALL" ##EXTNLIST="12345,54321" ##EXTNLIST="SQL" ##EXTNSQLBIT=" = directtemplate.extension \ ## and directcustom.surname matches \"*FAX*\" \ ##" #CALLTYPE="ALL" #EXPANDEDCALLTYPE="ALL" #EXTRASQLBIT="" ### SHB (Shell House), NAU (Nauru House), BCI (Burnley C&I) ##EXTRASQLBIT="$EXRASQLBIT and siteid in( 95, 106, 102 )" ### Mobile calls only ##EXTRASQLBIT="$EXTRASQLBIT and calltypedef.callcategory = \"M\"" #SDATE="17/05/2017" #EDATE="17/05/2017" #SITEID="ALL" #DIALLEDNO="ALL" #DURATION=ALL #CALLCOST=ALL ##EXTNLIST="ALL" #EXTNLIST="4100" #ACCODE="ALL" #SEPARATEFILES="0" #CALLTYPE="ALL" #EXPANDEDCALLTYPE="ALL" #EXTRASQLBIT="" #SDATE="24/05/2017" #EDATE="24/05/2017" #SITEID="ALL" #DIALLEDNO="ALL" #DURATION=ALL #CALLCOST=ALL #EXTNLIST="ALL" ##EXTNLIST="4100" ##ACCODE="ALL" #ACCODE="26" #SEPARATEFILES="0" #CALLTYPE="ALL" #EXPANDEDCALLTYPE="ALL" #EXTRASQLBIT="" #SDATE="08/04/2017" #EDATE="24/04/2017" #SITEID="ALL" #DIALLEDNO="ALL" #DURATION=ALL #CALLCOST=ALL #EXTNLIST="ALL" ##EXTNLIST="4100" ##ACCODE="ALL" #ACCODE="15" #SEPARATEFILES="0" #CALLTYPE="ALL" #EXPANDEDCALLTYPE="ALL" #EXTRASQLBIT="" #SDATE="28/09/2012" #EDATE="19/10/2012" #SITEID="ALL" #DIALLEDNO="ALL" #DURATION=ALL #CALLCOST=ALL #EXTNLIST="ALL" #EXTNLIST="57476, 57472" #ACCODE="ALL" #SEPARATEFILES="0" #CALLTYPE="ALL" #EXPANDEDCALLTYPE="ALL" #EXTRASQLBIT="" #SDATE="01/01/2018" #EDATE="20/03/2018" #SITEID="ALL" #DIALLEDNO="*411235235" #DURATION=ALL #CALLCOST=ALL #EXTNLIST="ALL" #ACCODE="ALL" #SEPARATEFILES="0" #CALLTYPE="ALL" #EXPANDEDCALLTYPE="ALL" #EXTRASQLBIT="" ################################################################# ################################################################# lastdayinmonth() # Returns the last day in month, Inputs: $1=mm $2=yyyy { cal $1 $2 | awk '{ if ( NF > 0 ) x=$NF } END { print x }' } ################################################################# do_extncalls8() { tmp0file=/u/catcom/tmp/calls_$$ tmp1file=/u/catcom/tmp/calls_1_$$ tmp2file=/u/catcom/tmp/calls_2_$$ rm -f "$tmp0file" rm -f "$tmp1file" rm -f "$tmp2file" FROMBIT="" SELECTBIT="" if [ "$EXTNLIST" = "ALL" ]; then INEXTNLISTBIT="" OUTEXTNLISTBIT="" else if [ "$EXTNLIST" = "SQL" ]; then INEXTNLISTBIT=" and inletno $EXTNSQLBIT and directtemplate.recordno = directcustom.recordno" OUTEXTNLISTBIT=" and outletno $EXTNSQLBIT and directtemplate.recordno = directcustom.recordno" SELECTBIT="directcustom.surname, directcustom.firstname," FROMBIT=", directtemplate, directcustom" else INEXTNLISTBIT=" and inletno in ($EXTNLIST)" OUTEXTNLISTBIT=" and outletno in ($EXTNLIST)" FROMBIT="" fi fi if [ "$CALLTYPE" = "ALL" ]; then CALLTYPEBIT="" else CALLTYPEBIT=" and calltype matches \"[${CALLTYPE}]\"" fi if [ "$EXPANDEDCALLTYPE" = "ALL" ]; then EXPANDEDCALLTYPEBIT="" else EXPANDEDCALLTYPEBIT=" and expandedcalltype matches \"[${EXPANDEDCALLTYPE}]\"" fi if [ "$ACCODE" = "ALL" ]; then ACCODEBIT="" else ACCODEBIT=" and accesscode matches \"${ACCODE}\"" fi ########################################################### # send file to user #exec 1>$tmp0file 2>&1 #echo #echo " Calldetail Report `date`" #echo #echo " From: $SDATE To: $EDATE" #echo #echo " With Dialled Numbers matching $DIALLEDNO" #echo " Durations greater than or equal to $DURATION seconds" #echo " Costs greater than or equal to $COST cents" #echo " Extension list ($EXTNLIST)" #echo " calltype list ($CALLTYPE)" #echo " expandedcalltype list ($EXPANDEDCALLTYPE)" #echo " ----------------------------------------------------------- " # csv header if [ "$EXTNLIST" = "SQL" ]; then if [ "$CODE1" != "ALL" ]; then echo "surname,firstname,code1,siteid,calldate,endtime,inlettype,inletno,outlettype,outletno,calltype,calltypedesc,callcategory,dialledno,accode,duration,callcost,expandedcalltype" else echo "surname,firstname,siteid,calldate,endtime,inlettype,inletno,outlettype,outletno,calltype,calltypedesc,callcategory,dialledno,accode,duration,callcost,expandedcalltype" fi else if [ "$CODE1" != "ALL" ]; then echo "code1,siteid,calldate,endtime,inlettype,inletno,outlettype,outletno,calltype,calltypedesc,callcategory,expandedcalltype,dialledno,accode,duration,callcost" else echo "siteid,calldate,endtime,inlettype,inletno,outlettype,outletno,calltype,calltypedesc,callcategory,expandedcalltype,dialledno,accode,duration,callcost" fi fi dd=$sdd; mm=$smm; yyyy=$syyyy while true do dodate="$dd/$mm/$yyyy" tbldate=`echo $dodate | sed -e 's/\//_/g'` cdrtable="c$tbldate" #echo "dodate=$dodate cdrtable=$cdrtable dd=$dd mm=$mm yyyy=$yyyy" #echo #echo " For $dodate" if [ "$CODE1" != "ALL" ]; then # extranges table #siteid #lorange #hirange #code1 #code2 #codedesc SELECTBIT="$SELECTBIT, code1, " FROMBIT=", extranges" INEXTNRANGESQLBIT=" and inletno between extranges.lorange and extranges.hirange and extranges.siteid = $cdrtable.siteid and extranges.code1 = \"$CODE1\"" OUTEXTNRANGESQLBIT=" and outletno between extranges.lorange and extranges.hirange and extranges.siteid = $cdrtable.siteid and extranges.code1 = \"$CODE1\"" fi #cat </dev/null <"$tmp2file" rm -f "$tmp1file" fi # format output awk -F ',' -v"EXTNLIST=$EXTNLIST" ' { f = 0 if ( EXTNLIST == "SQL" ) { surname = $(++f) firstname = $(++f) } code1 = $(++f) siteid = $(++f) calldate = $(++f) endtime = $(++f) inlettype = $(++f) inletno = $(++f) outetno = $(++f) outlettype = $(++f) calltype = $(++f) calltypedesc = $(++f) callcategory = $(++f) dialled_cli = $(++f) accesscode = $(++f) duration = $(++f) callcost = $(++f) expandedcalltype = $(++f) #printf("%-6.6s %-10.10s %6.6s %1.1s %-10.10s %-1.1s %-10.10s %-1.1s %-20.20s %-1.1s %-1.1s %-20.20s %12d %6d %6.2f %-1.1s\n", if ( EXTNLIST == "SQL" ) { printf("%s,%s,", surname, firstname) } printf("%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,+\"%s\",%s,%s,%s\n", code1, siteid, calldate, endtime, inlettype, inletno, outetno, outlettype, calltype, calltypedesc, callcategory, expandedcalltype, dialled_cli, accesscode, duration, callcost) }' <"$tmp2file" # increment date variables dd=`expr $dd + 1 | awk '{printf("%02d\n",$1)}'` if [ $dd -gt `lastdayinmonth $mm $yyyy` ]; then dd=01 mm=`expr $mm + 1 | awk '{printf("%02d\n",$1)}'` if [ $mm -gt 12 ]; then mm=01 yyyy=`expr $yyyy + 1 | awk '{printf("%04d\n",$1)}'` fi fi # break out if we are past end date if [ $yyyy$mm$dd -gt $eyyyy$emm$edd ]; then break; fi #echo done #echo #echo " End\f" # send file to user #cat $tmp0file | pr_rep system extncalls_ rm -f "$tmp0file" rm -f "$tmp1file" rm -f "$tmp2file" } ##################################################### # main if [ -z "$CODE1" ]; then echo "Enter Extn Range CODE1 (ie. EST, Just Enter for ALL):\c"; read CODE1 fi if [ -z "$CODE1" ]; then CODE1="ALL" fi if [ -z "$SITEID" ]; then echo "Enter siteid (Enter for ALL):\c"; read SITEID fi if [ -z "$SITEID" ]; then SITEID="ALL" fi if [ -z "$SDATE" ]; then echo "Enter start date:\c"; read SDATE fi if [ -z "$EDATE" ]; then echo "Enter end date:\c"; read EDATE fi #if [ -z "$STIME" ]; then # echo "Enter start time:\c"; read STIME #fi #if [ -z "$ETIME" ]; then # echo "Enter end time:\c"; read ETIME #fi if [ -z "$DIALLEDNO" ]; then echo "Enter dialledno(Enter for [$DEFDIALLEDNO];or ALL):\c"; read DIALLEDNO fi if [ -z "$DIALLEDNO" ]; then DIALLEDNO=$DEFDIALLEDNO fi if [ -z "$DURATION" ]; then echo "Enter min duration(secs,Enter for $DEFDURATION):\c"; read DURATION fi if [ -z "$DURATION" ]; then DURATION=$DEFDURATION fi if [ -z "$CALLCOST" ]; then echo "Enter min callcost(dollars and cents,Enter for $DEFCALLCOST):\c"; read CALLCOST fi if [ -z "$CALLCOST" ]; then CALLCOST=$DEFCALLCOST fi if [ -z "$EXTNLIST" ]; then echo "Enter extension list(, delimited - Enter for ALL):\c"; read EXTNLIST fi if [ -z "$EXTNLIST" ]; then EXTNLIST="ALL" fi if [ -z "$CALLTYPE" ]; then echo "Enter calltype list(Ie. EBA or Enter to ignore):\c"; read CALLTYPE fi if [ -z "$CALLTYPE" ]; then CALLTYPE="ALL" fi if [ -z "$EXPANDEDCALLTYPE" ]; then echo "Enter expandedcalltype list(Ie. EBA or Enter to ignore):\c"; read EXPANDEDCALLTYPE fi if [ -z "$EXPANDEDCALLTYPE" ]; then EXPANDEDCALLTYPE="ALL" fi if [ -z "$ACCODE" ]; then echo "Enter account code list(Enter to ignore):\c"; read ACCODE fi if [ -z "$ACCODE" ]; then ACCODE="ALL" fi export SITEID SDATE EDATE STIME ETIME DIALLEDNO DURATION CALLCOST EXTNLIST CALLTYPE EXPANDEDCALLTYPE ACCODE #------------------------------------------ if [ "$SITEID" = "ALL" ]; then SITEBIT="" else SITEBIT="and siteid = $SITEID" fi if [ "$DIALLEDNO" = "ALL" ]; then DIALLEDNOBIT="" else DIALLEDNOBIT=" and dialledno matches \"$DIALLEDNO\"" fi if [ "$DURATION" = "ALL" ]; then DURATIONBIT="" else DURATIONBIT=" and duration >= $DURATION" fi if [ "$CALLCOST" = "ALL" ]; then CALLCOSTBIT="" else CALLCOSTBIT=" and callcost >= $CALLCOST" fi export SITEBIT DIALLEDNOBIT DURATIONBIT CALLCOSTBIT #---------------------------------------------------------- sdd=`echo $SDATE | sed -e 's/\/..\/....$//g'` smm=`echo $SDATE | sed -e 's/^..\///g;s/\/....$//g'` syyyy=`echo $SDATE | sed -e 's/^..\/..\///g'` edd=`echo $EDATE | sed -e 's/\/..\/....$//g'` emm=`echo $EDATE | sed -e 's/^..\///g;s/\/....$//g'` eyyyy=`echo $EDATE | sed -e 's/^..\/..\///g'` if [ "$SEPARATEFILES" = "1" ]; then ALL_EXTNLIST="$EXTNLIST" for EXTN in `echo "$ALL_EXTNLIST" | tr "," " "` do tmpfile=/tmp/extncalls_$$ #outfile="extncalls_${EXTN}_${sdd}${smm}${syyyy}_to_${edd}${emm}${eyyyy}.csv" outfile="$tmpfile" EXTNLIST="$EXTN" echo "running: EXTNLIST=[$EXTNLIST] do_extncalls8 outfile=[$outfile]" do_extncalls8 >"$outfile" cat $tmpfile | pr_rep system extncalls_ rm -f "$tmpfile" done else tmpfile=/tmp/extncalls_$$ #outfile="extncalls8_$$.csv" outfile="$tmpfile" echo "running: EXTNLIST=[$EXTNLIST] do_extncalls8 outfile=[$outfile]" do_extncalls8 >"$outfile" cat $tmpfile | pr_rep system extncalls_ rm -f "$tmpfile" fi exit 0