General information
Category:
Coding, syntax & commands
hi nance...please help me out with the function
FUNCTION GetRate
LOCAL lcInAlias, lcSeekValue, lcCheckDigit, lcAssertSetting, llFoundPrefix, lnResult
lcInAlias = ALIAS() && save the currently selected work area
lcAssertSetting = SET('ASSERTS') && and the SET ASSERTS mode
lcSeekValue = NULL &&default seek value to NULL
lnResult = NULL &&default result to NULL
llFoundPrefix = .F. &&And by default the seek failed
SET ASSERTS ON && enable asserts
IF ! USED('long_distance')
* if the lookup table isn't in use already in this datasession, open it
USE long_distance IN 0 SHARED && make sure the table is in use
ENDIF
SELECT long_distance && Select the lookup table before trying to find in it
SET ORDER TO resellerid &&is correct && in the right sort order
*
* I use a local variable so that the LEFT() function is only called once,
* and the code becomes a tad clearer in the DO CASE
*
lcCheckDigit = LEFT(view1.dialednr,1)
* Check how many characters to use for lookup based on first character
DO CASE
CASE lcCheckDigit = '1'
lcSeekValue = LEFT(view1.dialednr,4)
CASE lcCheckDigit = '0'
lcSeekValue = LEFT(view1.dialednr,6)
CASE lcCheckDigit = '#'
lcSeekValue = LEFT(view1.dialednr,3)
CASE LEFT(view1.dialednr,3) == "411"
* 411 calls cost $0.75 each
lnResult = .75
CASE LEFT(view1.dialednr,3) == "911"
* 911 calls cost $0.00 each
lnResult = 0.00
CASE LEN(ALLTRIM(CHRTRAN(view1.dialednr, '-',''))) < 7
lnResult = 0
OTHERWISE
* Oops - the dialednr isn't in the form we expected - use an ASSERT
* to let us know an error occurred while developing, to let us go
* into the debugger when the error occurs. ASSERT gives us a message
* telling us what we think went wrong as a part of the statement
*ASSERT .F. MESSAGE 'Lead dialednr character "' + lcCheckDigit + '" not supported!'
lnResult = 0
ENDCASE
IF ! ISNULL(lcSeekValue)
* the dialednr started with a valid character, so try to find the prefix
* we grabbed from our rate table
llFoundPrefix = SEEK(lcSeekValue)
ENDIF
IF llFoundPrefix
* found it - save the rate we found!
lnResult = long_distance.rate
ELSE
* oops - not in our lookup table - use ASSERT to let me know
* what went wrong
*ASSERT ! ISNULL(lcSeekValue) MESSAGE 'Cound not find number prefix "' + lcSeekValue +'" in long_distance table'
ldresult=0
ENDIF
*Restore the initially-selected work area and the ASSERT setting
IF ! EMPTY(lcInAlias)
SELECT (lcInAlias)
ELSE
SELECT 0
ENDIF
SET ASSERTS &lcAssertSetting
RETURN lnResult
>Dovi-
>
>You haven't given us any information we can use to help you. The more specific (and brief) you can be with your question, the better.
>
>>i need help witha function thet is not returning the corect rates for a customer according to the call made and the rate assigned to a custoime.rr
Previous
Next
Reply
View the map of this thread
View the map of this thread starting from this message only
View all messages of this thread
View all messages of this thread starting from this message only