Note: This was originally posted by an inactive account. Content was preserved by moving under an admin account.
Originally posted by: TheoI have the following commands in a filter node:
DURATION_ROUNDED_EDITED=(DURATION_ROUNDED*1000).lo ng()
END_DATETIME= dateTimeAdjust(timestamp(DATE,TIME),DURATION_ROUND ED_EDITED.long(),"milliseconds")
SPLIT_DATETIME=END_DATETIME.str().split(" ")
END_DATE=getItem(SPLIT_DATETIME,0).date("CCYY-MM-DD")
END_TIME=getItem(SPLIT_DATETIME,1).left(8).time("H H:MM:SS")
END_DOW=weekday(END_DATE)
if PEAK_FLAG=="Peak" then #PEAK INITIAL ZONE CATEGORY
{
if (END_DOW==6 or ((END_TIME<"08:00:00".time("HH:MM:SS") or END_TIME>="20:00:00".time("HH:MM:SS")) and END_DOW<>0)) then # Saturday or off-peak hours check
{
END_PEAK_FLAG="Off-Peak 1"
if END_TIME>="20:00:00".time("HH:MM:SS") then
{
CHARGEABLE_SECONDS_ALPHA=timeSubtract("20:00:00".t ime("HH:MM:SS"),TIME)
CHARGEABLE_SECONDS_BETA=timeSubtract(END_TIME,"20: 00:00".time("HH:MM:SS"))
}
}
else
{
END_PEAK_FLAG=="Peak"
CHARGEABLE_SECONDS_ALPHA=DURATION_ROUNDED.double()
}
}
else if PEAK_FLAG=="Off-Peak 1" then #OFF-PEAK 1 INITIAL ZONE CATEGORY
{
if END_DOW==0 then # Sunday flag
{
END_PEAK_FLAG="Off-Peak 2 Sunday"
CHARGEABLE_SECONDS_ALPHA= (timeSubtract("23:59:59".time("HH:MM:SS"),TIME)+1) .double #Seconds with first Tariff
CHARGEABLE_SECONDS_BETA= (DURATION_ROUNDED-CHARGEABLE_SECONDS_ALPHA).double() #Seconds with second Tariff
}
else if (END_TIME>="08:00:00".time("HH:MM:SS") and END_TIME<"20:00:00".time("HH:MM:SS") and END_DOW<>6) then # Peak hours check
{
END_PEAK_FLAG="Peak"
CHARGEABLE_SECONDS_ALPHA=timeSubtract("08:00:00".t ime("HH:MM:SS"),TIME).double()
CHARGEABLE_SECONDS_BETA=timeSubtract(END_TIME,"08: 00:00".time("HH:MM:SS")).double()
}
else
{
END_PEAK_FLAG=="Off-Peak 1"
CHARGEABLE_SECONDS_ALPHA=DURATION_ROUNDED.double()
}
}
else if PEAK_FLAG=="Off-Peak 2 Sunday" then #OFF-PEAK 2 INITIAL ZONE CATEGORY
{
if END_TIME<"08:00:00".time("HH:MM:SS") and END_DOW<>0 then
{
END_PEAK_FLAG="Off-Peak 1"
CHARGEABLE_SECONDS_ALPHA=timeSubtract("23:59:59".t ime("HH:MM:SS"),TIME)+1
CHARGEABLE_SECONDS_BETA=timeSubtract(END_TIME,"08: 00:00".time("HH:MM:SS")).double()
}
else
{
END_PEAK_FLAG=="Off-Peak 2 Sunday"
CHARGEABLE_SECONDS_ALPHA=DURATION_ROUNDED.double()
}
}
else
{
END_PEAK_FLAG=="Short Call"
}
CHARGEABLE_DURATION_DIFFERENCE = (CHARGEABLE_SECONDS_ALPHA+CHARGEABLE_SECONDS_BETA-DURATION_ROUNDED.round(0))
emit *,END_DATETIME,END_DATE,END_TIME,END_DOW,END_PEAK_ FLAG,CHARGEABLE_SECONDS_ALPHA,CHARGEABLE_SECONDS_B ETA,CHARGEABLE_DURATION_DIFFERENCE
I am trying to identify and split a call among specified time zones(peak/off-peak) where applicable.
The problem lies with the highlighted statements (Off-peak 2 Sunday "else" fragment).
Even if a call occurs on a normal Sunday and ends in the same Sunday, this code seems to allocate it in Off-peak 1 zone, whereas it should remain in Off-peak 2 zone.
Can you help me?
When I try to alter the if...else commands a bit, a "double" instead of "long" error occurs as well.
I am sorry for the rarther "messy" script.
Thank you.
Input Fields:
CARRIER_NAME (str) B_NUMBER(str) DURATION_ROUNDED (double) DURATION_ACTUAL(double) CALL_TYPE (Originating/Terminating - str) A_NUMBER(str) DATE(date) TIME(time) EVENT_COST_NO_VAT(double) EVENT_COST_NO_VAS(double) ROUNDING_RULE(str)