Clarion - Rollback y Commit

 
Vista:

Rollback y Commit

Publicado por Deysi (15 intervenciones) el 30/10/2007 21:42:10
Hola Disculpen tengo este codigo que lo coloque en un boton el cual cancela una remision y me regresa la cantidad remisionada a mi pedido, el caso es que en ocaciones no hace bien la cancelacion.

Lo que estuve investigando es que puedo hacerlo por Rollback o commit. pero no se en que parte de mi codigo usarlo.
alguien me podria indicar como usar el Rollback y el commit.

Saludos Cordiales
De antemano Gracias

Deysi

!Cancela la Remision

IF REM:StatusRemision ='Facturado'
MESSAGE('LA REMISION NO PUEDE SER CANCELADA POR QUE YA HA SIDO FACTURADA','AVISO !!!',ICON:EXCLAMATION,BUTTON:OK)
CYCLE
ELSIF REM:StatusRemision ='Entregado'
MESSAGE('LA REMISION NO PUEDE SER CANCELADA POR QUE YA HA SIDO ENTREGADA','AVISO !!!',ICON:EXCLAMATION,BUTTON:OK)
CYCLE
ELSE
CASE MESSAGE('ESTA OPERACION CANCELA LA REMISION, ESTA SEGURO DE CANCELAR? ','ADVERTENCIA !!!',ICON:EXCLAMATION,'SI|NO',2)

OF 1

GET(Queue:2,Choice(?Browse:2))
REM:Id_RemisionesFolio = REM:Id_RemisionesFolio
SET(Remision,REM:LKFolioRemision)
NEXT(Remision)
REM:StatusRemision ='Cancelado'
PUT(Remision)

Open(Pedido)
PRY:Id_PedidoConsecutivo = REM:Id_PedidoConsecutivo
SET(Pedido,PRY:LKPedido)
NEXT(Pedido)
PRY:CantidadPedidoEnviadas -= REM:CantidadPedidoRemisionada
PRY:CantidadPedidoPendienteEnviar = PRY:CantidadCotiza - PRY:CantidadPedidoEnviadas
PRY:Existencias += REM:CantidadPedidoRemisionada
PUT(Pedido)

BRW2.ResetSort(1)

OF 2

END ! FIN DE MESSAGE CASE
END !FIN DE CONDICION IF
DISPLAY()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Rollback y Commit

Publicado por Jose Luis (126 intervenciones) el 31/10/2007 16:16:34
logout(5, Remision, Pedido)
if errorcode()
cycle
end
GET(Queue:2,Choice(?Browse:2))
REM:Id_RemisionesFolio = REM:Id_RemisionesFolio
SET(Remision,REM:LKFolioRemision)
NEXT(Remision)
REM:StatusRemision ='Cancelado'
PUT(Remision)
if errorcode()
rollback
cycle
end

Open(Pedido)
PRY:Id_PedidoConsecutivo = REM:Id_PedidoConsecutivo
SET(Pedido,PRY:LKPedido)
NEXT(Pedido)
PRY:CantidadPedidoEnviadas -= REM:CantidadPedidoRemisionada
PRY:CantidadPedidoPendienteEnviar = PRY:CantidadCotiza - PRY:CantidadPedidoEnviadas
PRY:Existencias += REM:CantidadPedidoRemisionada
PUT(Pedido)
if errorcode()
rollback
cycle
end
commit
BRW2.ResetSort(1)

Aunque se me hace medio inconsistente tu codigo:
1. por que abres Pedido, que no lo tienes en las tablas del proceso?
2. si abres Pedido, por que no lo cierras?
3. por que no revisas los errores, comunmente al hacer un add, put o delete uno debe revisar el error para ver q se haya hecho la accion y q no continue con lo demas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar