Francis:
oBrwMov:lAutoEdit := .t.
oBrwMov:bKeyChar := {|nK| if( nK==VK_RETURN,oBrwMov:Edit(oBrwMov:nColAct,.t.),) }
oBrwMov:bEdit:= {|nCol, cBuffer, lFirstEdit| EditaCelda( @fCant,@fCantV,@fCantC,oBrwMov, nCol, cBuffer, .T.,cAlias ) }
//---------------------------------------------------------------------------------------------------------
STATIC Function EditaCelda( fCant , fCantV, fCantC,oLbx , nCol , cBuffer , lFirstEdit,cAlias )
Local uBuffer:=cBuffer,nColReal:= nCol,lContinue:=.f.,bValid,cSaldo:=0,xSaldo:=0,cDifSaldo:=0
Do Case
Case nCol = 5 .and. lFirstEdit
uBuffer:=(cAlias)->SALDO
cSaldo:=(cAlias)->SALDO
If lContinue:= oLbx:lEditCol( nColReal, @uBuffer, "@ZE 999999",bValid,,(nRgb(15,15,15),nRgb(255,255,255)))
IF uBuffer # cSaldo
IF MSGYESNO("El saldo ha sido cambiado,"+CRLF+CRLF+;
'El sistema generará un movimiento de ajuste de inventario automáticamente,'+CRLF+CRLF+;
'Confirma la operación ?','Atención')
xSaldo:=RECUNSALDO(1,(cAlias)->COD)
(cAlias)->SALDO:=uBuffer
cDifSaldo:=uBuffer - xSaldo
(CALIAS)->(DBCOMMIT())
oLbx:Refresh()
IF !empty((cAlias)->AT1) .or. !empty((cAlias)->AT2)
ELSE
if cDifSaldo # 0
AJUSINV((cAlias)->COD,cDifSaldo,(cAlias)->AT1,(cAlias)->AT1)
endif
ENDIF
ART->(DBSETORDER(1))
ART->(DBSETORDER(1))
IF ART->(DBSEEK(MOVART->MCOD,.F.))
IF ART->(DBRLOCK())
REPL ART->SALDO WITH ART->SALDO + MOVART->MCAN
ART->(DBUNLOCK())
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
EndCase
RETURN NIL
Saludos,