Aún no me animo a diseñar el módulo de cobranzas del nuevo sistema en la empresa en la que laboro, asi que siguen usando un módulo externo desarrollado por mi colega que trabaja conmigo, el tema es que mi colega solo programa en visual fox pro.
El esta jalando las facturas del nuevo sistema y las va registrando en una tabla de fox pro como canceladas. Mi problema ahora es que necesito saber cuales son las facturas que ya han sido canceladas (repito esto es temporal porque luego debo diseñar mi propio módulo de cobro de facturas) y escribí este pequeñe procesito para acceder a la tabla de fox pro y buscar en los registros si la factura ya fue cancelada:
Code: Select all
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC VentSubeCreaDbf
LOCAL qVentX
LOCAL oVentX
LOCAL nVX
LOCAL aDbfCP := {{'FECHA' ,'C', 8,0},;
{'HORA' ,'C', 5,0},;
{'VENTA' ,'N', 7,0},;
{'DOCUM' ,'C',12,0},;
{'DIAS' ,'N', 3,0},;
{'VENCE' ,'C', 8,0},;
{'MONTO' ,'N',12,2},;
{'ESTADO' ,'C', 2,0},;
{'PAGADO' ,'N', 1,0}}
LOCAL cInic := DTOS( DATE()-120 )
LOCAL cPagos := '\\192.168.2.73\Comparte\Sistemf\Cheques\fache.dbf'
LOCAL iPagos := '\\192.168.2.73\Comparte\Sistemf\Cheques\fache.cdx'
IF SELE('XINFO') > 0
CLOSE XINFO
ENDIF
IF SELE('XPAGO') > 0
CLOSE XPAGO
ENDIF
SELE 0
USE &cPagos ALIAS XPAGO SHARED VIA 'DBFCDX' READONLY
[color=#BF4080] SET INDEX TO &iPagos // <------- AQUI TENGO EL PROBLEMAAAAAA !!!![/color]
SET ORDER TO TAG fact_
DBCREATE(cFactsDbf,aDbfCP)
SELE 0
USE &cFactsDbf ALIAS XINFO EXCLUSIVE VIA 'DBFCDX'
qVentX := ;
"SELECT VC_FECHA,VC_HORA,VC_NUMVTA,VC_DOCNUM,VC_PGDIAS,VC_PGVENC,VC_TOTPRC,VC_ESTADO "+;
"FROM VENTASC "+;
"WHERE VC_ESTADO = 'OK' AND VC_CLICOD = '"+cQueClie+"' AND LEFT(VC_FECHA,6) >= '"+LEFT(cInic,6)+"' "+;
"ORDER BY VC_NUMVTA DESC"
oVentX := TOleAuto():New('ADODB.Recordset')
oVentX:CursorLocation = adUseClient
oVentX:Open( qVentX , oConexion , adOpenForwardOnly , adLockReadOnly )
FOR nVX = 1 TO oVentX:RecordCount()
nPagado := VentSubePagado( oVentX:Fields("VC_DOCNUM"):Value )
APPEND BLANK
XINFO->FECHA := oVentX:Fields("VC_FECHA"):Value
XINFO->HORA := oVentX:Fields("VC_HORA"):Value
XINFO->VENTA := oVentX:Fields("VC_NUMVTA"):Value
XINFO->DOCUM := oVentX:Fields("VC_DOCNUM"):Value
XINFO->DIAS := oVentX:Fields("VC_PGDIAS"):Value
XINFO->VENCE := oVentX:Fields("VC_PGVENC"):Value
XINFO->MONTO := oVentX:Fields("VC_TOTPRC"):Value
XINFO->ESTADO := oVentX:Fields("VC_ESTADO"):Value
XINFO->PAGADO := nPagado
oVentX:MoveNext()
NEXT
oVentX:Close()
CLOSE XINFO
CLOSE XPAGO
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
FUNC VentSubePagado( cNumDoc )
LOCAL nPago := 0
LOCAL xSele := SELECT()
LOCAL xDoc := LEFT(cNumDoc,3)+RIGHT(cNumDoc,7)
SELE XPAGO
DBSEEK( xDoc )
IF FOUND()
nPago := 1
ENDIF
SELE &xSele
RETURN( nPago )
Date:16/05/14 Time: 18:36:55
Error DBFCDX/1012 Se detecto corrupcion: \\192.168.2.73\Comparte\Sistemf\Cheques\fache.cdx
Called from DBUSEAREA(0)
Called from VENTSUBECREADBF(56)
Called from ENVIARINFODEFACTURAS(18)
Called from (b)MAIN(216)
Called from _DOCONTROLEVENTPROCEDURE(5276)
Called from EVENTS(1391)
Called from _DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(4935)
Called from MAIN(302)
Por supuesto el .cdx no lo he creado yo con nuestro querido Clipper/Harbour/Hmg ha sido creado por VFP. Intuyo que puede tratarse de una incompatibilidad del driver 'DBFCDX' ?
Agradeceré me tiendan una mano.
Mil gracias y cordiales saludos a todos.