Hello friends!
I am trying to create a Function Using Select Case to replace an ugly nested if on amount calculation based on several variables. I can get filed rule to accept the function but it always evaluates to $0.00. I see an Alpha 5 halt windows briefly come up and I have determined using debug that none of the variables needed to complete the calculation are being captured. Do I need a pointer?
Current ugly if - Depending on several variables take price + x and multiply by how_many.
IF(PREM_AGENT=.T..AND.SSPBB=.T..AND.SSPRENT=.T..AND.JOB_CODE="I",(PRICE+28)*HOW_MANY,
IF(PREM_AGENT=.T..AND.SSPBB=.T..AND.SSPRENT=.F..AND.JOB_CODE="I",(PRICE+20)*HOW_MANY,
IF(PREM_AGENT=.T..AND.SSPBB=.F..AND.SSPRENT=.T..AND.JOB_CODE="I",(PRICE+16)*HOW_MANY,
IF(PREM_AGENT=.T..AND.JOB_CODE="I",(PRICE+8)*HOW_MANY,
IF(SSPBB=.T..AND.SSPRENT=.T..AND.JOB_CODE="I",(PRICE+20)*HOW_MANY,
IF(SSPBB=.T..AND.SSPRENT=.F..AND.JOB_CODE="I",(PRICE+12)*HOW_MANY,
IF(SSPBB=.F..AND.SSPRENT=.T..AND.JOB_CODE="I",(PRICE+8)*HOW_MANY,PRICE*HOW_MANY)))))))
Cleaner but DOA Function
function Amount as N()
' New Calculation for order amount
''
''
DIM job_code as C
DIM how_many as N
DIM price as N
DIM prem_agent as L
DIM sspbb as L
DIM ssprent as L
SELECT
CASE job_code="I" .and. prem_agent=.T. .and. sspbb=.T. .and. ssprent=.T.
amount = price+28 * how_many
CASE job_code="I" .and. prem_agent=.T. .and. ssprent=.T.
amount = price+16 * how_many
CASE job_code="I" .and. prem_agent=.T. .and. sspbb=.T.
amount = price+20 * how_many
CASE job_code="I" .and. prem_agent=.T.
amount = price+8 * how_many
CASE job_code="I" .and. sspbb=.T. .and. ssprent=.T.
amount = price+20 * how_many
CASE job_code="I" .and. ssprent=.T.
amount = price+8 * how_many
CASE job_code="I" .and. sspbb=.T.
amount = price+12 * how_many
CASE ELSE
amount = price * how_many
END SELECT
end function
Thanks In Advance for any help
Mike
I am trying to create a Function Using Select Case to replace an ugly nested if on amount calculation based on several variables. I can get filed rule to accept the function but it always evaluates to $0.00. I see an Alpha 5 halt windows briefly come up and I have determined using debug that none of the variables needed to complete the calculation are being captured. Do I need a pointer?
Current ugly if - Depending on several variables take price + x and multiply by how_many.
IF(PREM_AGENT=.T..AND.SSPBB=.T..AND.SSPRENT=.T..AND.JOB_CODE="I",(PRICE+28)*HOW_MANY,
IF(PREM_AGENT=.T..AND.SSPBB=.T..AND.SSPRENT=.F..AND.JOB_CODE="I",(PRICE+20)*HOW_MANY,
IF(PREM_AGENT=.T..AND.SSPBB=.F..AND.SSPRENT=.T..AND.JOB_CODE="I",(PRICE+16)*HOW_MANY,
IF(PREM_AGENT=.T..AND.JOB_CODE="I",(PRICE+8)*HOW_MANY,
IF(SSPBB=.T..AND.SSPRENT=.T..AND.JOB_CODE="I",(PRICE+20)*HOW_MANY,
IF(SSPBB=.T..AND.SSPRENT=.F..AND.JOB_CODE="I",(PRICE+12)*HOW_MANY,
IF(SSPBB=.F..AND.SSPRENT=.T..AND.JOB_CODE="I",(PRICE+8)*HOW_MANY,PRICE*HOW_MANY)))))))
Cleaner but DOA Function
function Amount as N()
' New Calculation for order amount
''
''
DIM job_code as C
DIM how_many as N
DIM price as N
DIM prem_agent as L
DIM sspbb as L
DIM ssprent as L
SELECT
CASE job_code="I" .and. prem_agent=.T. .and. sspbb=.T. .and. ssprent=.T.
amount = price+28 * how_many
CASE job_code="I" .and. prem_agent=.T. .and. ssprent=.T.
amount = price+16 * how_many
CASE job_code="I" .and. prem_agent=.T. .and. sspbb=.T.
amount = price+20 * how_many
CASE job_code="I" .and. prem_agent=.T.
amount = price+8 * how_many
CASE job_code="I" .and. sspbb=.T. .and. ssprent=.T.
amount = price+20 * how_many
CASE job_code="I" .and. ssprent=.T.
amount = price+8 * how_many
CASE job_code="I" .and. sspbb=.T.
amount = price+12 * how_many
CASE ELSE
amount = price * how_many
END SELECT
end function
Thanks In Advance for any help
Mike
Comment