233 lines
4.6 KiB
Plaintext
233 lines
4.6 KiB
Plaintext
* MIKE LEWIS - UPDATE TABLES FROM GREAT PLAINS DBF - CGW1300 09-22-94
|
|
|
|
#INCLUDE 'RQB.CH'
|
|
#include "RASQLB.CH"
|
|
** #INCLUDE 'F:\CLIP52\RASQLB\52\RQB.CH'
|
|
** #include "F:\CLIP52\RASQLB\52\RASQLB.CH"
|
|
#INCLUDE 'INKEY.CH'
|
|
|
|
// CONSTANTS
|
|
#define A_CUSNO 2 // 2nd Element in CUSMAS Field Array (customer #)
|
|
|
|
EXTERNAL N_XVIA
|
|
|
|
*****************************************************
|
|
FUNCTION CGWB1300(MFILE, BFILE, BKEY_FLD, DO_MSG)
|
|
// UPDATE TABLE DBFs WITH GREAT PLAINS INFO
|
|
|
|
// MFILE = CGW FILE NAME
|
|
// BFILE = BTRIEVE FILE NAME
|
|
// BKEY_FLD = AN ARRAY OF BTRIEVE KEY FIELDS NEEDE TO LOOKUP CGW RECORDS
|
|
// DO_MSG = LOGICAL FLAG TO DISPLAY MESSAGE BELOW
|
|
|
|
LOCAL MSTRUCT, MFLD_NAMES
|
|
LOCAL FLDS_TO_GET := {}, GP_FLD, CGW_FLD, MVAL
|
|
LOCAL BARM_FACTOR, XXX, OPT, MWORK_AREA, ALL := .T.
|
|
LOCAL DO_IT := .F.
|
|
|
|
IF DO_MSG = NIL
|
|
DO_MSG = .T.
|
|
ENDIF
|
|
|
|
IF DO_MSG
|
|
CLS
|
|
@ 10,15 SAY 'About to UPDATE the TABLE Files from the'
|
|
@ 11,15 SAY 'Great Plains File. This process may take '
|
|
@ 12,15 SAY 'several minutes to complete.'
|
|
OPT = ' '
|
|
@ 14,20 SAY 'Do you wish to continue? (Y/N)' GET OPT PICTURE '!' VALID OPT$'YN'
|
|
READ
|
|
IF LASTKEY() = 27 .OR. OPT$'N'
|
|
RETURN
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// GO OPEN AND SETUP BTRIEVR FILE
|
|
RESULT = SET_BTREV(BFILE, MFILE)
|
|
MTABLE = RESULT[1]
|
|
MSTRUCT = RESULT[2]
|
|
|
|
|
|
MWORK_AREA = N_XSELECT()
|
|
|
|
// OPEN UP CGW MASTER FILE
|
|
DBOPEN(MFILE)
|
|
|
|
|
|
|
|
FLDS_TO_GET = GPFLDLIST(BFILE)
|
|
|
|
IF DO_IT
|
|
QBROWSE(2,2,20,79)
|
|
ENDIF
|
|
|
|
|
|
BARM_FACTOR = SETBARM(,, 20, N_XLASTREC() )
|
|
|
|
XXX = 0
|
|
N_XGOTOTOP() // TOP OF BTRIVE FILE
|
|
DO WHILE !N_XEOF()
|
|
XXX++
|
|
BARM_UPDATE(,,XXX, BARM_FACTOR)
|
|
|
|
IF MFILE = 'CUST_MAST'
|
|
MCUSNO = N_XFETCH(A_CUSNO) // GET CURRENT GREAT PLAINS CUSTOMER ID
|
|
MKEY = N_XFETCH('BANK') // GET CURRENT CUSTOMER ID
|
|
ELSE
|
|
MKEY = ''
|
|
FOR L = 1 TO LEN(BKEY_FLD)
|
|
XKEY = N_XFETCH(BKEY_FLD[L]) // GET CURRENT GREAT PLAINS KEY VALUE
|
|
IF VALTYPE(XKEY) = 'N'
|
|
MKEY = MKEY + LTRIM(STR(XKEY))
|
|
ELSE
|
|
IF VALTYPE(XKEY) = 'D'
|
|
MKEY = MKEY + DTOS(XKEY)
|
|
ELSE
|
|
MKEY = MKEY + XKEY
|
|
ENDIF
|
|
ENDIF
|
|
NEXT
|
|
ENDIF
|
|
|
|
// WATCH OUT FOR NULL CHARACTERS!!!
|
|
FOR L2 = 1 TO LEN(MKEY)
|
|
X = SUBSTR(MKEY,1,L2)
|
|
IF ASC(X) = 0
|
|
X = ' '
|
|
MKEY = LEFT(MKEY,L2-1) + X + RIGHT(MKEY, LEN(MKEY)-L2)
|
|
ENDIF
|
|
NEXT
|
|
|
|
SELECT &MFILE
|
|
SEEK MKEY // CGW CUST ID OR FILE KEY
|
|
IF !FOUND()
|
|
ADD_REC(1)
|
|
ELSE
|
|
REC_LOCK(1)
|
|
ENDIF
|
|
|
|
N_XSELECT(MWORK_AREA) // SELECT BTRIEVE FILE
|
|
|
|
FOR L = 1 TO LEN(FLDS_TO_GET)
|
|
GP_FLD = FLDS_TO_GET[L,1]
|
|
CGW_FLD = FLDS_TO_GET[L,2]
|
|
|
|
|
|
|
|
IF MFILE = 'CUST_MAST'
|
|
|
|
DO CASE
|
|
|
|
CASE GP_FLD == 'PHONE'
|
|
MVAL = SETDASH(GP_FLD)
|
|
|
|
CASE GP_FLD == 'FAX'
|
|
MVAL = SETDASH(GP_FLD)
|
|
|
|
CASE GP_FLD == 'SHIPPHN'
|
|
MVAL = SETDASH(GP_FLD)
|
|
|
|
CASE GP_FLD == 'SHIPFAX'
|
|
MVAL = SETDASH(GP_FLD)
|
|
|
|
CASE GP_FLD == 'TERMS'
|
|
MVAL = STR(N_XFETCH(GP_FLD),2)
|
|
|
|
CASE GP_FLD == 'SHP_METHOD'
|
|
MVAL = STR(N_XFETCH(GP_FLD),2)
|
|
|
|
CASE GP_FLD == 'SLSMAN'
|
|
MVAL = STR(VAL(N_XFETCH(GP_FLD)),5)
|
|
|
|
CASE GP_FLD = 'SHIP'
|
|
// ONLY GET SHIPPING INFO FOR CUSTOMERS WITH '01' OR '02'
|
|
// IN THE LAST 2 DIGITS IN THE CUST ID
|
|
IF RIGHT(MKEY,2) = '01' .OR. RIGHT(MKEY,2) = '02'
|
|
MVAL = N_XFETCH(GP_FLD)
|
|
ELSE
|
|
MVAL = ''
|
|
ENDIF
|
|
|
|
OTHERWISE
|
|
MVAL = N_XFETCH(GP_FLD)
|
|
|
|
ENDCASE
|
|
ELSE
|
|
MVAL = N_XFETCH(GP_FLD)
|
|
ENDIF
|
|
|
|
REPLACE &MFILE->&CGW_FLD WITH MVAL
|
|
NEXT
|
|
|
|
|
|
N_XSKIP(1)
|
|
ENDDO
|
|
|
|
N_XCLOSE(ALL)
|
|
|
|
CLOSE DATABASES
|
|
RETURN
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* * * * * * * * * * * * * * * * * * * * * * * *
|
|
FUNCTION SET_BTREV(MFILE, MDESC)
|
|
// OPEN UP THE BTRIEVE FILE
|
|
|
|
CLS
|
|
WAIT_BOX(' *** UPDATING ' + MDESC + ' FILE *** ',;
|
|
' *** PLEASE WAIT *** ')
|
|
|
|
N_XLOGIN()
|
|
N_XERRLVL(3)
|
|
|
|
MSTRUCT := {}
|
|
MFLD_NAMES := {}
|
|
SELECT 0
|
|
|
|
NET_USE('CGWBTREV', .F., 1, 'DEFINITIONS') && CUSTOMER CHANGE FLAG
|
|
GO TOP
|
|
DO WHILE !EOF()
|
|
IF TRIM(SYSNAME) == MFILE
|
|
AADD(MSTRUCT, FNAME + TYPE + LENGTH + DECIMAL_PT + NUM_DECS + FILLER + SEMI_COLON)
|
|
AADD(MFLD_NAMES, FNAME)
|
|
ENDIF
|
|
SKIP 1
|
|
ENDDO
|
|
USE
|
|
|
|
|
|
NET_USE('&CONTROL', .F., 5, 'CONTROL') && CUSTOMER CHANGE FLAG
|
|
MPATH = ALLTRIM(CONTROL->BTR_PATH)
|
|
MTABLE = MPATH + MFILE + '.DAT'
|
|
USE
|
|
|
|
SET DEFAULT FILETYPE TO '.DAT'
|
|
SET RDD TO 'RQBRDD'
|
|
|
|
N_XSELECT(0) // SELECT NEXT EMPTY BTRIEVE WORK AREA
|
|
N_XUSE(MTABLE, MSTRUCT)
|
|
|
|
|
|
SET DEFAULT FILETYPE TO
|
|
SET RDD TO
|
|
|
|
RETURN {MTABLE, MSTRUCT}
|
|
|
|
* * * * * * * * * * * * * * * * * *
|
|
FUNCTION SETDASH(MFIELD)
|
|
// PUT IN DASHES FOR THE PHONE NUMBER IN &MFILD
|
|
|
|
LOCAL MVAL
|
|
|
|
MVAL = TRIM(N_XFETCH(MFIELD)) // GET PHONE NUMBER
|
|
MVAL = LEFT(MVAL,3) + '-' + SUBSTR(MVAL,4,3) + '-' + RIGHT(MVAL,4)
|
|
RETURN MVAL
|
|
|
|
|
|
|
|
|