Ayuda con DO WHILE
Publicado por wily001 (4 intervenciones) el 07/11/2008 12:03:48
Lo que quiero hacer es; por cada año insertar 6 tributos, la cabecera graba sin problemas, pero solo me genera el primer tributo para el año.. en algun lugar esta mal el DO WHILE
IF vipadimento=0
WAIT windows 'Cuenta Catastral no puede ser liquidada. Faltan parametros'
thisform.Release()
RETURN
endif
**generador de id liquidaciones
=SQLEXEC(sgim, 'SELECT gen_id(liquidacion,0)+1 as idmax from rdb$database','mayor')
vNUMERO_LIQ = VAL(mayor.idmax)
vIDESTADO_LIQ = 1
vFECHA_LIQ = DATE()
vFECHA_VENCE_LIQ = DATE()
***Liquidacion
**selecciona tributos
=SQLEXEC(sgim,'SELECT IDTRIBUTO FROM TRIBUTO_S','tributo')
GO top
****** INSERCION DE LIQ
=SQLEXEC(sgim,"EXECUTE PROCEDURE LIQ_I(?vNUMERO_LIQ,?vFICHA_INM,?vIDESTADO_LIQ,?vFECHA_LIQ,?vFECHA_VENCE_LIQ)")
=SQLCOMMIT(sgim)
*!* ***select de cabecera
*!* =SQLEXEC(sgim,'SELECT * FROM LIQ_S','liquidacion')
*!* =SQLCOMMIT(sgim)
*!* DO WHILE .T.
do while vano_desde != vano_hasta
*!* APPEND
vano_desde = vano_desde + 1
vIDTRIBUTO = tributo.IDTRIBUTO
**********calculo de tributos
DO WHILE tributo.IDTRIBUTO <> EOF()&&tributo.IDTRIBUTO != 7
APPEND BLANK
IF vIDTRIBUTO = 1 then
vMONTO_TRIBUTO = (v_valor_fiscal*1/100)
ENDIF
IF vIDTRIBUTO = 2 then
vMONTO_TRIBUTO = 3000
ENDIF
IF vIDTRIBUTO = 3 then
vMONTO_TRIBUTO = 10000
ENDIF
IF vIDTRIBUTO = 4 then
vMONTO_TRIBUTO = 5000
ENDIF
IF vIDTRIBUTO = 5 then
vMONTO_TRIBUTO = 5000
ENDIF
IF vIDTRIBUTO = 6 then
vMONTO_TRIBUTO = 5000
ENDIF
vANOliq = vano_desde
=SQLEXEC(sgim,"EXECUTE PROCEDURE DET_LIQ_I(?vIDTRIBUTO,?vANOliq,?vNUMERO_LIQ,?vMONTO_TRIBUTO)")
=SQLCOMMIT(sgim)
enddo
SKIP
enddo
*!* ENDDO
IF vipadimento=0
WAIT windows 'Cuenta Catastral no puede ser liquidada. Faltan parametros'
thisform.Release()
RETURN
endif
**generador de id liquidaciones
=SQLEXEC(sgim, 'SELECT gen_id(liquidacion,0)+1 as idmax from rdb$database','mayor')
vNUMERO_LIQ = VAL(mayor.idmax)
vIDESTADO_LIQ = 1
vFECHA_LIQ = DATE()
vFECHA_VENCE_LIQ = DATE()
***Liquidacion
**selecciona tributos
=SQLEXEC(sgim,'SELECT IDTRIBUTO FROM TRIBUTO_S','tributo')
GO top
****** INSERCION DE LIQ
=SQLEXEC(sgim,"EXECUTE PROCEDURE LIQ_I(?vNUMERO_LIQ,?vFICHA_INM,?vIDESTADO_LIQ,?vFECHA_LIQ,?vFECHA_VENCE_LIQ)")
=SQLCOMMIT(sgim)
*!* ***select de cabecera
*!* =SQLEXEC(sgim,'SELECT * FROM LIQ_S','liquidacion')
*!* =SQLCOMMIT(sgim)
*!* DO WHILE .T.
do while vano_desde != vano_hasta
*!* APPEND
vano_desde = vano_desde + 1
vIDTRIBUTO = tributo.IDTRIBUTO
**********calculo de tributos
DO WHILE tributo.IDTRIBUTO <> EOF()&&tributo.IDTRIBUTO != 7
APPEND BLANK
IF vIDTRIBUTO = 1 then
vMONTO_TRIBUTO = (v_valor_fiscal*1/100)
ENDIF
IF vIDTRIBUTO = 2 then
vMONTO_TRIBUTO = 3000
ENDIF
IF vIDTRIBUTO = 3 then
vMONTO_TRIBUTO = 10000
ENDIF
IF vIDTRIBUTO = 4 then
vMONTO_TRIBUTO = 5000
ENDIF
IF vIDTRIBUTO = 5 then
vMONTO_TRIBUTO = 5000
ENDIF
IF vIDTRIBUTO = 6 then
vMONTO_TRIBUTO = 5000
ENDIF
vANOliq = vano_desde
=SQLEXEC(sgim,"EXECUTE PROCEDURE DET_LIQ_I(?vIDTRIBUTO,?vANOliq,?vNUMERO_LIQ,?vMONTO_TRIBUTO)")
=SQLCOMMIT(sgim)
enddo
SKIP
enddo
*!* ENDDO
Valora esta pregunta


0