A mi tambien me trabaja mal el DBCOMBO, por lo que evito utilizarlo, Pero de todas formas prueba modificar tu funcion:
IF nTipoPago>0
TipoPago ->(Dbgoto(nTipopago))
nDescuento:= Tipopago->Porcen
ELSE
MsgAlert("Debe Seleccionar Porcentaje")
ENDIF