Files
CGW/CGWB1300.PRG
Jason Soltys 7905c43278 first commit
2026-07-14 00:41:31 -05:00

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