: !/bin/sh # allmobilescsv billperiod inp_platinumBATCH inp_DIVID [toplevelshipto|All] billperiod="$1" inp_platinumBATCH="$2" inp_DIVID="$3" toplevelshipto="$4" #------------------- # Testing #billperiod="Sep_2008" #inp_platinumBATCH="all" #inp_DIVID="all" ##toplevelshipto="VRT" #toplevelshipto="" #------------------- parpardir="${billperiod}/${inp_platinumBATCH}_${inp_DIVID}" logfile="allmobilescsv_${billperiod}_${inp_platinumBATCH}_${inp_DIVID}_${toplevelshipto}.log" rm -f "$logfile" #----------------------------------------------------------------- email_file() { echo "email_file:" echo " extratxtfiles=[$extratxtfiles]" echo " attfiles=[$attfiles]" echo " pwd = " `pwd` for emailaddr in $emaillist do # Force mail to pass DATE as GMT TZ=''; export TZ ( echo "allmobilescsv run for... " echo "________billperiod = $billperiod " echo "_inp_platinumBATCH = $inp_platinumBATCH " echo "_________inp_DIVID = $inp_DIVID " echo "____toplevelshipto = $toplevelshipto " echo " " echo "Please Find Attached Log File " for extraf in $extratxtfiles do if [ -n "$extraf" ]; then cat $extraf echo " " fi done for attf in $attfiles do uuencode $attf `basename $attf` done ) | mail -s "$subject" $emailaddr #) >"$0.eml" done } #--------------------------------------------------- # input files # eg. afile=[./VRT/data/mobile/mobile_VRT_0_101044_103_0407-355798_29075.csv] #ServiceID Detail,September 2008,SDATE,EDATE,VRT Victrack,VRT,All,0,Telco - Mobile Charges,101044,HUMAN RESOURCES,103,0407-355798,VRT999999,29075,TELSTRA,RUSSELL CLOKE,0.0000,23.0200,2.5300,Date,Time,Origin,Dialled Number,Description,Duration,Cost:Float #,,,,,,,,,,,,,,,,,,,,02-09-2008,17:03:00,DIVERTED TO,1011, CALL FORWARDING CHARGES,000:00:30,0.05 #--------------------------------------------------- doallmobilescsv() { period="$1" shipto="$2" gggrid="$shipto" outfile="allmobiles_${shipto}_${period}.csv" echo "doallmobilecsv: period=[$period] shipto=[$shipto]" pardir="${parpardir}/${gggrid}" echo "pardir=[$pardir]" #return ( cd "topdat/$pardir" pwd find . -name "mobile_*.csv" -depth -exec cat {} \; | \ awk -F',' -v"billperiod=$billperiod" ' BEGIN { monthmmmstr["Jan"] = 1 monthmmmstr["Feb"] = 2 monthmmmstr["Mar"] = 3 monthmmmstr["Apr"] = 4 monthmmmstr["May"] = 5 monthmmmstr["Jun"] = 6 monthmmmstr["Jul"] = 7 monthmmmstr["Aug"] = 8 monthmmmstr["Sep"] = 9 monthmmmstr["Oct"] = 10 monthmmmstr["Nov"] = 11 monthmmmstr["Dec"] = 12 billmmm = substr(billperiod,1,3) billmm = monthmmmstr[billmmm] billyyyy = 0 + substr(billperiod,5,4) billsdate = sprintf("%02d-%02d-%04d", 1, billmm, billyyyy) } function trim(s) { sub(/^[ \t]*/,"",s) sub(/[ \t]*$/,"",s) return s } function clip(s) { sub(/[ \t]*$/,"",s) return s } function quote(s) { gsub(/\"/,"\\\"",s) return "\"" s "\"" } function fmt_exbillperiod(exbp) { split(exbp,exbp_arr, " ") exbpmmm = substr(exbp_arr[1],1,3) exbpmm = monthmmmstr[exbpmmm] exbpyyyy = 0 + substr(exbp_arr[2],1,4) newexbillperiod = sprintf("%04d-%02d", exbpyyyy, exbpmm) return newexbillperiod } function outcsv(doheader) { if ( doheader ) { #ServiceID Detail #Period #- SDATE #- EDATE #VRT Victrack #VRT #- All #- 0 #ElementDescripton #- Element #Department #- No #ServiceID #InvoiceID #BatchID #Supplier #Person #- RENT #- (CALLS) #- Admin (OTHER) #Date #Time #Origin #Dialled Number #Description #Duration #Cost:Float outp = quote("ReportDesc") "," outp = outp quote("exbillperiod") "," #outp = outp quote("SDATE") "," #outp = outp quote("EDATE") "," outp = outp quote("ShipToDesc") "," outp = outp quote("DIVID") "," #outp = outp quote("SGIDdesc") "," #outp = outp quote("SGID") "," outp = outp quote("SEIDdesc") "," #outp = outp quote("SEID") "," outp = outp quote("department") "," #outp = outp quote("DEPTID") "," outp = outp quote("SID") "," outp = outp quote("invoiceno") "," outp = outp quote("sundry") "," outp = outp quote("supplier") "," outp = outp quote("user") "," #outp = outp quote("XRENT") "," #outp = outp quote("XCALL") "," #outp = outp quote("XOTHER") "," outp = outp quote(Date) "," outp = outp quote(Time) "," outp = outp quote(Origin) "," outp = outp quote(Dialled_Number) "," outp = outp quote(Description) "," outp = outp quote(Duration) "," outp = outp quote(Cost) } else { outp = quote(reportdesc) "," outp = outp quote(rfmtexbillperiod) "," #outp = outp quote(SDATE) "," #outp = outp quote(EDATE) "," outp = outp quote(ShipToDesc) "," outp = outp quote(DIVID) "," #outp = outp quote(SGIDdesc) "," #outp = outp quote(SGID) "," outp = outp quote(SEIDdesc) "," #outp = outp quote(SEID) "," outp = outp quote(department) "," #outp = outp quote(DEPTID) "," outp = outp quote(SID) "," outp = outp quote(invoiceno) "," outp = outp quote(sundry) "," outp = outp quote(supplier) "," outp = outp quote(user) "," #outp = outp quote(XRENT) "," #outp = outp quote(XCALL) "," #outp = outp quote(XOTHER) "," outp = outp quote(Date) "," outp = outp quote(Time) "," outp = outp quote(Origin) "," outp = outp quote(Dialled_Number) "," outp = outp quote(Description) "," outp = outp quote(Duration) "," outp = outp quote(Cost) } print outp } { if ( $1 == "ServiceID Detail" ) { f = 0 reportdesc = trim($(++f)) exbillperiod = trim($(++f)) SDATE = trim($(++f)) EDATE = trim($(++f)) ShipToDesc = trim($(++f)) DIVID = trim($(++f)) SGIDdesc = trim($(++f)) SGID = trim($(++f)) SEIDdesc = trim($(++f)) SEID = trim($(++f)) department = trim($(++f)) DEPTID = trim($(++f)) SID = trim($(++f)) invoiceno = trim($(++f)) sundry = trim($(++f)) supplier = trim($(++f)) user = trim($(++f)) XRENT = trim($(++f)) XCALL = trim($(++f)) XOTHER = trim($(++f)) Date = $(++f) Time = $(++f) Origin = $(++f) Dialled_Number = $(++f) Description = $(++f) Duration = $(++f) Cost = $(++f) rfmtexbillperiod = fmt_exbillperiod(exbillperiod) if ( !doneheader ) outcsv(1) doneheader = 1 next } f = 20 Date = trim($(++f)) Time = trim($(++f)) Origin = trim($(++f)) Dialled_Number = trim($(++f)) Description = trim($(++f)) Duration = trim($(++f)) Cost = trim($(++f)) # exclude CHARGE_DESC CALL call summary records # (keep RENT and OTHER) if ( Date == "CHARGE_DESC" && Origin == "CALL" ) next if ( Date == "CHARGE_DESC" ) { Date = billsdate Dialled_Number = "" } gsub("[a-zA-Z]","", Dialled_Number) outcsv(0) } ' < "$afile" >"$outfile" echo "file stats:" ls -altr "$outfile" echo "Lines: "`wc -l "$outfile"` echo "----------" ) } #--------------------------------------------------- # main # all output to fiel exec >"$logfile" 2>&1 if [ "$toplevelshipto" != "" -a "$toplevelshipto" != "All" ]; then doallmobilescsv $billperiod $toplevelshipto else echo "for all top level shiptos..." ( cd "topdat/$parpardir" ls | grep -v "^log_" ) | \ while read adir do echo "doallmobecsv for adir=[$adir]" topshipto="$adir" doallmobilescsv $billperiod $topshipto done fi # add to end of lines unstripcr "$logfile" # email log file attfiles="$logfile" extratxtfiles="" subject="VicTrack Bilmax21 allmobilescsv for $billperiod" #emaillist="rod@transmit.com.au" emaillist="tqnew telco.billing@victrack.com.au robyn.douglas@victrack.com.au rod@transmit.com.au" email_file exit 0