Este es el módulo:
Code: Select all
* ------------------------------------------------------ *
* SISTEMA : SISCOMFAR *
* PRG : DEVOPROV.PRG *
* CREADO : 20-04-2013 *
* ACTUALIZADO : *
* AUTOR : EDUARDO V. FLORES RIVAS *
* COMENTARIOS : PRG PARA REGISTRO DE DEVOLUCIONES PROV. *
* ------------------------------------------------------ *
PROC Devoluciones
IF IsWindowDefined(Win_Devols) = .T.
MINIMIZE WINDOW Win_Devols
RESTORE WINDOW Win_Devols
RETURN
ENDIF
PRIVATE nDevoCargada := 0
PRIVATE aEstados := {'Pendiente','Devuelto','Anulado'}
PRIVATE SIS_PRINTER := GetDefaultPrinter()
PRIVATE DH_MODO := 'Nada'
PRIVATE DH_TIPO := 0
DEFINE WINDOW Win_Devols ;
AT 0 , 0 ;
WIDTH 1020 HEIGHT 700 ;
TITLE "DEVOLUCIONES A PROVEEDOR" ;
FONT "Arial" SIZE 9 ;
CHILD ;
NOMAXIMIZE ;
ON INIT DevolIniciar()
ON KEY CONTROL+R OF Win_Devols ACTION DevolReImprimir()
ON KEY CONTROL+C OF Win_Devols ACTION DevolImprimirCopia()
ON KEY CONTROL+I OF Win_Devols ACTION DevolElegirImpresora()
ON KEY CONTROL+DELETE OF Win_Devols ACTION DevolAnular()
*
* TOOLBAR
*
DEFINE TOOLBAR DevolBarra BUTTONSIZE 70,30 FLAT BORDER
BUTTON BotNuevo ;
CAPTION '&Nueva' ;
PICTURE 'imagen\nuevo.bmp' ;
ACTION DevolNueva()
BUTTON BotAbrir ;
CAPTION '&Abrir' ;
PICTURE 'imagen\abrir.bmp' ;
ACTION DevolAbrir()
BUTTON BotGrabar ;
CAPTION '&Grabar' ;
PICTURE 'imagen\grabar.bmp' ;
ACTION DevolGrabar()
BUTTON BotAnular ;
CAPTION '&Anular' ;
PICTURE 'imagen\equis.bmp' ;
ACTION DevolAnular()
BUTTON BotReportes ;
CAPTION '&Reportes' ;
PICTURE 'imagen\reporte.bmp' ;
WHOLEDROPDOWN
DEFINE DROPDOWN MENU BUTTON BotReportes
ITEM 'Devoluciones Pendientes de Entrega' ACTION DevolAProvPend()
END MENU
BUTTON BotSalir ;
CAPTION '&Salir' ;
PICTURE 'imagen\salir.bmp' ;
ACTION DevolSalir()
END TOOLBAR
*
* ENCABEZADO
*
@ 050 , 010 FRAME FraCabeza ;
WIDTH 650 ;
HEIGHT 135
@ 070 , 020 LABEL LblOpera ;
WIDTH 90 ;
HEIGHT 20 ;
VALUE "Devolución No:" ;
ACTION DevolAbrir('xnum') ;
RIGHTALIGN ;
FONTCOLOR Color_Label3_Font ;
BACKCOLOR Color_Label3_Back
@ 070 , 110 TEXTBOX TxtOpera ;
HEIGHT 20 ;
READONLY ;
WIDTH 90 ;
NUMERIC INPUTMASK '99999999'
@ 070 , 220 LABEL LblRefer ;
WIDTH 90 ;
HEIGHT 20 ;
VALUE "Num.Fac.Prov.:" ;
RIGHTALIGN ;
FONTCOLOR Color_Label3_Font ;
BACKCOLOR Color_Label3_Back
@ 070 , 310 TEXTBOX TxtRefer ;
WIDTH 90 ;
HEIGHT 20 ;
READONLY ;
NUMERIC INPUTMASK '9999999'
@ 070 , 420 LABEL LblDoc ;
WIDTH 90 ;
HEIGHT 20 ;
VALUE "Doc.Fac.Prov.:" ;
RIGHTALIGN ;
FONTCOLOR Color_Label3_Font ;
BACKCOLOR Color_Label3_Back
@ 070 , 510 TEXTBOX TxtDoc ;
WIDTH 110 ;
HEIGHT 20 ;
INPUTMASK '999-99999999' ;
ON ENTER Win_Devols.BotAgregar.Setfocus
@ 100 , 020 LABEL LblProveedor ;
WIDTH 90 ;
HEIGHT 20 ;
VALUE "Proveedor:" ;
FONTCOLOR Color_Label3_Font ;
BACKCOLOR Color_Label3_Back ;
RIGHTALIGN
@ 100 , 110 TEXTBOX TxtProvCod ;
WIDTH 90 ;
HEIGHT 20 ;
READONLY ;
RIGHTALIGN
@ 100 , 220 TEXTBOX TxtProvDes ;
WIDTH 400 ;
HEIGHT 20 ;
READONLY
@ 130 , 020 LABEL LblProvDat ;
WIDTH 90 ;
HEIGHT 20 ;
VALUE "Datos Prov.:" ;
RIGHTALIGN ;
FONTCOLOR Color_Label3_Font ;
BACKCOLOR Color_Label3_Back
@ 130 , 110 TEXTBOX TxtProvRuc ;
WIDTH 90 ;
HEIGHT 20 ;
READONLY ;
RIGHTALIGN
@ 130 , 220 TEXTBOX TxtProvDir ;
WIDTH 400 ;
HEIGHT 20 ;
READONLY
@ 160 , 020 LABEL LblEstado ;
WIDTH 90 ;
HEIGHT 20 ;
VALUE "Estado:" ;
RIGHTALIGN ;
FONTCOLOR Color_Label3_Font ;
BACKCOLOR Color_Label3_Back
@ 160 , 110 COMBOBOX CmbEstado ;
WIDTH 120 ;
ITEMS aEstados
@ 160 , 240 LABEL LblFecha ;
WIDTH 90 ;
HEIGHT 20 ;
VALUE "Fecha:" ;
RIGHTALIGN ;
FONTCOLOR Color_Label3_Font ;
BACKCOLOR Color_Label3_Back
@ 160 , 330 TEXTBOX TxtFecha ;
WIDTH 90 ;
HEIGHT 20 ;
READONLY ;
RIGHTALIGN
@ 160 , 430 LABEL LblEntrega ;
WIDTH 90 ;
HEIGHT 20 ;
VALUE "Entrega:" ;
RIGHTALIGN ;
FONTCOLOR Color_Label3_Font ;
BACKCOLOR Color_Label3_Back
@ 160 , 520 TEXTBOX TxtEntrega ;
WIDTH 90 ;
HEIGHT 20 ;
READONLY ;
RIGHTALIGN
*
* GRID DE DETALLES
*
@ 190 , 010 BROWSE BrwDevueltos ;
WIDTH 1000 ;
HEIGHT 400 ;
HEADERS {'Código','Artículo','Labo','Lote','Vence','Unids.','Motivo'} ;
FIELDS {'TEMPD->DD_ARTCOD','TEMPD->DD_ARTNOM','TEMPD->DD_ARTLAB','TEMPD->DD_ARTLOT','TEMPD->DD_ARTVEN','TEMPD->DD_ARTUNI','TEMPD->DD_MOTIVO'} ;
WIDTHS { 70,300,060,100,100,080,300 } ;
WORKAREA TEMPD ;
JUSTIFY { BROWSE_JTFY_LEFT , BROWSE_JTFY_LEFT , BROWSE_JTFY_LEFT , BROWSE_JTFY_LEFT , BROWSE_JTFY_LEFT , BROWSE_JTFY_RIGHT , BROWSE_JTFY_LEFT } ;
ON DBLCLICK DevolEditItem()
*
* MENSAJES
*
@ 610 , 020 LABEL LblMensajes ;
WIDTH 550 ;
HEIGHT 35 ;
FONT 'Arial Bold' SIZE 12 ;
BOLD ;
FONTCOLOR RED ;
CENTERALIGN
*
* TOTAL
*
@ 610 , 580 LABEL LblTotal ;
WIDTH 70 ;
HEIGHT 25 ;
VALUE "TOTAL:" ;
FONT 'Courier New' SIZE 12 ;
BOLD ;
FONTCOLOR Color_Label3_Font ;
BACKCOLOR Color_Label3_Back ;
CENTERALIGN
@ 610 , 650 LABEL TxtTotal ;
WIDTH 110 ;
HEIGHT 025 ;
FONT 'Courier New' SIZE 12 ;
BOLD ;
FONTCOLOR BLACK ;
BACKCOLOR Mi_Amarillo ;
RIGHTALIGN
*
* BOTONES DETALLES
*
@ 060 , 900 BUTTON BotAgregar ;
CAPTION "Agregar" ;
ACTION DevolAddItem() ;
WIDTH 90 ;
HEIGHT 30
@ 090 , 900 BUTTON BotEditar ;
CAPTION "Cambiar" ;
ACTION DevolEditItem() ;
WIDTH 90 ;
HEIGHT 30
@ 120 , 900 BUTTON BotBorrar ;
CAPTION "Borrar" ;
ACTION DevolDelItem() ;
WIDTH 90 ;
HEIGHT 30
END WINDOW
CENTER WINDOW Win_Devols
ACTIVATE WINDOW Win_Devols
IF SELECT('TEMPC') > 0
CLOSE TEMPC
ENDIF
IF SELECT('TEMPD') > 0
CLOSE TEMPD
ENDIF
IF SELECT('TEMPA') > 0
CLOSE TEMPA
ENDIF
IF SELECT('TEMPB') > 0
CLOSE TEMPB
ENDIF
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC DevolSalir
IF SELECT('TEMPD') = 0
RELEASE WINDOW Win_Devols
RETURN
ENDIF
IF TEMPD->(RECCOUNT()) > 0 .AND. nDevoCargada = 0
IF QuestBox({'¿ Desea cancelar la operación actual ?'},{'Cancelar','Regresar'}) = 1
RELEASE WINDOW Win_Devols
ENDIF
ELSE
RELEASE WINDOW Win_Devols
ENDIF
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC DevolIniciar
IF ! IsDir('C:\Farmacom\Devols')
CreateFolder('C:\Farmacom\Devols')
ENDIF
Win_Devols.DevolBarra.Enabled := .F.
DevolLimpiar()
Win_Devols.DevolBarra.Enabled := .T.
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC DevolLimpiar
nDevoCargada := 0
DH_MODO := 'Nada'
DH_TIPO := 0
OpenTemp() // Crea y abre los temporales
Win_Devols.BrwDevueltos.Value := TEMPD->(RECNO())
Win_Devols.BrwDevueltos.Refresh
Win_Devols.TxtOpera.Value := SPACE(6)
Win_Devols.TxtFecha.Value := SPACE(8)
Win_Devols.TxtDoc.Value := ' - '
Win_Devols.TxtProvCod.Value := SPACE(6)
Win_Devols.TxtProvDes.Value := SPACE(70)
Win_Devols.TxtProvRuc.Value := SPACE(11)
Win_Devols.TxtProvDir.Value := SPACE(40)
Win_Devols.CmbEstado.Value := 1
Win_Devols.TxtEntrega.Value := SPACE(8)
Win_Devols.TxtRefer.Value := 0
Devolswitch(.F.)
Win_Devols.TxtOpera.SetFocus
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC DevolSwitch(lSwitch)
Win_Devols.BotGrabar.Enabled := lSwitch
Win_Devols.BotAnular.Enabled := lSwitch
Win_Devols.BotAgregar.Enabled := lSwitch
Win_Devols.BotBorrar.Enabled := lSwitch
Win_Devols.BotEditar.Enabled := lSwitch
Win_Devols.BrwDevueltos.Enabled := lSwitch
Win_Devols.TxtOpera.Enabled := lSwitch
Win_Devols.TxtFecha.Enabled := lSwitch
Win_Devols.TxtDoc.Enabled := lSwitch
Win_Devols.TxtProvCod.Enabled := lSwitch
Win_Devols.TxtProvDes.Enabled := lSwitch
Win_Devols.TxtProvRuc.Enabled := lSwitch
Win_Devols.TxtProvDir.Enabled := lSwitch
Win_Devols.CmbEstado.Enabled := .F.
Win_Devols.TxtEntrega.Enabled := lSwitch
Win_Devols.TxtRefer.Enabled := lSwitch
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC DevolNueva
LOCAL DataProv := {}
LOCAL DataComp := {}
IF ! AccesoOk('ALMA.DEVO.NUEV.')
RETURN
ENDIF
IF nDevoCargada = 0 .AND. SELECT('TEMPD') > 0 // <- AQUI ES DONDE ME LANZA EL ERROR
IF TEMPD->(RECCOUNT()) > 0
IF ! MsgYesNo('¿ Desea cancelar la operación actual ?'+Chr(13)+'NO SE GRABARAN LOS DATOS INGRESADOS')
RETURN
ENDIF
ENDIF
ENDIF
DevolLimpiar()
DataComp := InputDocDeCompra()
IF LEN( DataComp ) > 0
DataProv := DameDatos( 'MPROV' , DataComp[3] , {'PROV_COD','PROV_NOM','PROV_RUC','PROV_DIRE'} )
DevoCompCargaAuxi( DataComp[1] ) // <-- Carga TEMPA con los items de la factura del proveedor.
DevoCompDescuenta( DataComp[1] ) // <-- Descuenta las unidades ya devueltas en TEMPA.
Win_Devols.TxtRefer.Value := DataComp[1]
Win_Devols.TxtDoc.Value := DataComp[2]
Devolswitch(.T.)
IF DH_TIPO = 1 // Si es precarga :
Win_Devols.CmbEstado.Value := 1 // Estado = Pendiente (para que despues de grabar se descargue)
Win_Devols.CmbEstado.Enabled := .F. // Inhabilita la selección del estado.
ELSE
Win_Devols.CmbEstado.Value := 1
Win_Devols.CmbEstado.Enabled := .T.
ENDIF
Win_Devols.TxtOpera.Value := DevolNuevoNumero()
Win_Devols.TxtFecha.Value := DTOC(GetHoy())
Win_Devols.TxtProvCod.Value := DataProv[1]
Win_Devols.TxtProvDes.Value := DataProv[2]
Win_Devols.TxtProvRuc.Value := DataProv[3]
Win_Devols.TxtProvDir.Value := DataProv[4]
DH_MODO := 'Nueva'
Win_Devols.BotAnular.Enabled := .F.
Win_Devols.BotAgregar.SetFocus
ENDIF
RETURN
*>----------------------------------------------------------------------<*
*>----------------------------------------------------------------------<*
*>----------------------------------------------------------------------<*
FUNC DevolNuevoNumero
LOCAL nLast := 0
LOCAL nNew := 1
LOCAL cQuery := "SELECT TOP 1 DC_NUMERO FROM DEVOLCAB ORDER BY DC_NUMERO DESC"
LOCAL oLast
oLast := TOleAuto():New('ADODB.Recordset')
oLast:CursorLocation = adUseClient
oLast:Open( cQuery , oConexion , adOpenForwardOnly , adLockReadOnly )
IF ! oLast:EOF()
nLast := oLast:Fields("DC_NUMERO"):Value
nNew := nLast+1
ENDIF
oLast:Close()
RETURN( nNew )
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC DevolAbrir( nQueModo )
LOCAL nQueDevolAbrir := 0
IF ! AccesoOk('ALMA.DEVO.ABRE.')
RETURN
ENDIF
IF nQueModo = NIL
nQueDevolAbrir := DevolSeleccionar()
ELSE
cQueDevolAbrir := InputBox('Número Devol.:')
IF ! EMPTY(cQueDevolAbrir)
nQueDevolAbrir := VAL( cQueDevolAbrir )
ENDIF
ENDIF
IF nQueDevolAbrir > 0
IF DevolCargar( nQueDevolAbrir )
nDevoCargada := nQueDevolAbrir
DH_MODO := 'Abrir'
Devolswitch(.F.)
IF Win_Devols.CmbEstado.Value = 1 .AND. TEMPC->DC_SALUSE = SPACE(4)
Win_Devols.CmbEstado.Enabled := .T.
Win_Devols.BotGrabar.Enabled := .T.
ENDIF
IF TEMPC->DC_ESTADO < 3
Win_Devols.BotAnular.Enabled := .T.
ELSE
Win_Devols.BotAnular.Enabled := .F.
ENDIF
Win_Devols.BrwDevueltos.Value := 1
Win_Devols.BrwDevueltos.Setfocus
ENDIF
ENDIF
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC DevolGrabar
LOCAL aNuevos := {}
IF ! AccesoOk('ALMA.DEVO.GRAB.')
RETURN
ENDIF
IF LENNOSPC( Win_Devols.TxtProvCod.Value ) = 0
MsgExclamation('Elija un Proveedor para la Devolución.')
RETURN
ENDIF
IF VAL( STRTRAN(Win_Devols.TxtDoc.Value,'-') ) = 0
MsgExclamation('Ingrese el número de Factura del proveedor.')
Win_Devols.TxtDoc.Setfocus
RETURN
ENDIF
IF Win_Devols.CmbEstado.Value = 3
MsgExclamation('Estado NO VALIDO.')
Win_Devols.CmbEstado.Setfocus
RETURN
ENDIF
Win_Devols.DevolBarra.Enabled := .F.
Devolswitch(.F.)
DO CASE
CASE DH_TIPO = 1 // Pre-Carga
aNuevos := DevoGrab1()
IF LEN(aNuevos) > 0
FOR nNew = 1 TO LEN(aNuevos)
IF MsgYesNo('¿ Listo para imprimir la devolución ?')
DevolImprimir( aNuevos[nNew] )
ENDIF
NEXT
ENDIF
CASE DH_TIPO = 2 // Post-Carga
aNuevos := DevoGrab2()
IF LEN(aNuevos) > 0 .AND. Win_Devols.CmbEstado.Value = 2
FOR nNew = 1 TO LEN(aNuevos)
IF MsgYesNo('¿ Listo para imprimir la devolución ?')
DevolImprimir( aNuevos[nNew] )
ENDIF
NEXT
ENDIF
ENDCASE
DevolLimpiar()
Devolswitch(.T.)
Win_Devols.DevolBarra.Enabled := .T.
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC DevolAnular
IF ! AccesoOk('ALMA.DEVO.ANUL.')
RETURN
ENDIF
IF Win_Devols.TxtOpera.Value = 0 .OR. DH_MODO <> 'Abrir' .OR. TEMPC->DC_ESTADO = 3
RETURN
ENDIF
IF MsgYesNo('Esta seguro de ANULAR esta DEVOLUCION')
Win_Devols.DevolBarra.Enabled := .F.
Devolswitch(.F.)
IF TEMPC->DC_CARGA = 1 // 0 = No Descargado 1 = Descargado
DevoProvAnul() // Descarga stock y kardex
ELSE
DevoProvAnulCab() // Solo actualiza cabecera
ENDIF
MsgInfo('Devolución a proveedor ANULADA.')
Devolswitch(.T.)
Win_Devols.DevolBarra.Enabled := .T.
DevolLimpiar()
ENDIF
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC DevolReImprimir
IF Win_Devols.TxtOpera.Value > 0
DevolImprimir( Win_Devols.TxtOpera.Value )
MsgInfo('Documento enviado a la impresora')
ENDIF
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC DevolImprimirCopia
IF Win_Devols.TxtOpera.Value > 0
ImprimirCopia( Win_Devols.TxtOpera.Value )
MsgInfo('Documento enviado a la impresora')
ENDIF
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC DevolAddItem
LOCAL aArtiData
nDetaNew := DevoCompSele()
IF nDetaNew > 0
SELE TEMPA
DBGOTO( nDetaNew )
TEMPA->DD_RECNO := 1
SELE TEMPD
APPEND BLANK
REPLACE TEMPD->DD_ARTCOD WITH TEMPA->DD_ARTCOD
REPLACE TEMPD->DD_ARTNOM WITH TEMPA->DD_ARTNOM
REPLACE TEMPD->DD_ARTLAB WITH TEMPA->DD_ARTLAB
REPLACE TEMPD->DD_ARTUNI WITH TEMPA->DD_ARTUNI
REPLACE TEMPD->DD_ARTLOT WITH TEMPA->DD_ARTLOT
REPLACE TEMPD->DD_ARTVEN WITH TEMPA->DD_ARTVEN
REPLACE TEMPD->DD_RECNO WITH TEMPA->(RECNO())
COMMIT
Win_Devols.BrwDevueltos.Value := TEMPD->(RECNO())
Win_Devols.BrwDevueltos.Refresh
DevolCalculaTotal()
// DevolEditItem()
RETURN
ENDIF
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC DevolEditItem
LOCAL aArtiData
LOCAL aDetaOld
LOCAL aDetaNew
IF TEMPD->(RECNO()) = 0
RETURN
ENDIF
aDetaOld := {;
TEMPD->DD_ARTCOD,;
TEMPD->DD_ARTNOM,;
TEMPD->DD_ARTLAB,;
TEMPD->DD_ARTUNI,;
TEMPD->DD_ARTLOT,;
TEMPD->DD_ARTVEN,;
TEMPD->DD_MOTIVO}
aDetaNew := DevolGetItem( aDetaOld )
IF LEN(aDetaNew) > 0
SELE TEMPD
REPLACE TEMPD->DD_ARTCOD WITH aDetaNew[1]
REPLACE TEMPD->DD_ARTNOM WITH aDetaNew[2]
REPLACE TEMPD->DD_ARTLAB WITH aDetaNew[3]
REPLACE TEMPD->DD_ARTUNI WITH aDetaNew[4]
REPLACE TEMPD->DD_ARTLOT WITH aDetaNew[5]
REPLACE TEMPD->DD_ARTVEN WITH aDetaNew[6]
REPLACE TEMPD->DD_MOTIVO WITH aDetaNew[7]
COMMIT
ENDIF
DevolCalculaTotal()
Win_Devols.BrwDevueltos.Value := TEMPD->(RECNO())
Win_Devols.BrwDevueltos.Refresh
Win_Devols.BotAgregar.SetFocus()
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC DevolDelItem
SELE TEMPA
DBGOTO( TEMPD->DD_RECNO )
TEMPA->DD_RECNO := 0
SELE TEMPD
DELETE
PACK
Win_Devols.BrwDevueltos.Value := TEMPD->(RECNO())
Win_Devols.BrwDevueltos.Refresh
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC DevolCalculaTotal
LOCAL xTempSel := SELECT()
LOCAL nTempReg := TEMPD->(RECNO())
LOCAL nTotal := 0
SELE TEMPD
DBGOTOP()
DO WHILE .NOT. TEMPD->(EOF())
nTotal := nTotal + TEMPD->DD_ARTUNI
SKIP
ENDDO
Win_Devols.TxtTotal.Value := nTotal
DBGOTO( nTempReg )
SELE &xTempSel
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC DevolElegirImpresora
LOCAL cNuevaImpresora := GetPrinter()
IF ! EMPTY(cNuevaImpresora)
SELE DATAX
DBGOTO(1)
IF RED_RLOCK()
REPLACE DATA1 WITH cNuevaImpresora
RED_UNLOCK()
SIS_PRINTER := cNuevaImpresora
ENDIF
ENDIF
RETURN
¿ Porque me dice que no existe la variable NDEVOCARGADA si esta declarada arriba ? - He tratado de generar el error yo mismo pero a mi no me sale, no sé que puede haber hecho el usuario para que salga dicho error. Y este no es el único módulo donde me ha pasado, de vez en cuando encuentro este mismo error con otras variables en otros .prg pero son esporádicos no se generan siempre, debe haber alguna acción específica que los produce.Date:07/10/15 Time: 16:54:29
Error BASE/1003 No existe la variable: NDEVOCARGADA
Called from DEVOLNUEVA(405)
Called from (b)DEVOLUCIONES(46)
Called from _DOCONTROLEVENTPROCEDURE(5276)
Called from EVENTS(1398)
Called from _DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(4935)
Called from RECEPCION(327)
Called from ABREMODULO(327)
Called from EJECUTAOPCION(297)
Called from (b)MAIN(123)
Called from _DOCONTROLEVENTPROCEDURE(5276)
Called from EVENTS(1451)
Called from _DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(4935)
Called from MAIN(181)
Mil gracias anticipadas por su valiosa ayuda.