* MIKE LEWIS - UPDATE CUSTMAST FROM GREAT PLAINS DBF - CGW1170 04-26-94 #INCLUDE 'F:\CLIP52\RASQLB\52\RQB.CH' #include "F:\CLIP52\RASQLB\52\RASQLB.CH" #INCLUDE 'INKEY.CH' // CONSTANTS #define T_CM_CUSNO 1 // 1ST Index order for CUSMAS.DAT (customer #) #define T_CM_NAME 2 // 2nd Index order for CUSMAS.DAT (customer name) #define A_CUSNO 2 // 2nd Element in CUSMAS Field Array (customer #) #define A_NAME 4 // 4TH Element in CUSMAS Field Array (customer name) EXTERNAL N_XVIA ***************************************************** FUNCTION CGW1170 // UPDATE CUSTOMER DBF WITH GREAT PLAINS INFO LOCAL MSTRUCT, MFLD_NAMES LOCAL FLDS_TO_GET := {}, GP_FLD, CGW_FLD, MVAL LOCAL BARM_FACTOR, XXX, OPT, MWORK_AREA CLS @ 10,15 SAY 'About to UPDATE the CUSTOMER File 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 CLS WAIT_BOX(' *** UPDATING CUSTOMER FILE *** ',; ' *** PLEASE WAIT *** ') N_XLOGIN() N_XERRLVL(3) MSTRUCT := {} MFLD_NAMES := {} SELECT 0 USE CUSTMAST ALIAS DEFINITIONS NET_USE('CUSTMAST', .F., 5, 'DEFINITIONS') && CUSTOMER CHANGE FLAG DO WHILE !EOF() AADD(MSTRUCT, FNAME + TYPE + LENGTH + DECIMAL_PT + NUM_DECS + FILLER + SEMI_COLON) AADD(MFLD_NAMES, FNAME) SKIP 1 ENDDO USE DBOPEN('CUST_MAST') DONSETORD(4) // INDEXED ON GP_CUST DBOPEN('CONTROL', .F.) *-NET_USE('&CONTROL', .F., 5, 'CONTROL') && CUSTOMER CHANGE FLAG MPATH = ALLTRIM(CONTROL->BTR_PATH) MTABLE = MPATH + 'CUSMAS.DAT' USE SET DEFAULT FILETYPE TO '.DAT' SET RDD TO 'RQBRDD' NEW_STRUCT := RQBSTRUCT('CUSMAS') N_XSELECT(0) // SELECT NEXT EMPTY BTRIEVE WORK AREA N_XUSE(MTABLE, MSTRUCT) MWORK_AREA = N_XSELECT() *-N_XORDER(MORDER) // SET TO CORRECT INDEX ORDER N_XSRECSIZ() N_XRECSIZ() SET DEFAULT FILETYPE TO SET RDD TO // BUILD LIST OF FIELDS TO GET INFO FROM *-AADD(FLDS_TO_GET, {'CUSNO', 'GP_CUST'}) AADD(FLDS_TO_GET, {'NAME', 'COMP_NAME'}) AADD(FLDS_TO_GET, {'SLSMAN', 'SLSMAN'}) AADD(FLDS_TO_GET, {'DSHP', 'SHP_METHOD'}) AADD(FLDS_TO_GET, {'DTRM', 'TERMS'}) AADD(FLDS_TO_GET, {'CUSDSC', 'DISCOUNT'}) AADD(FLDS_TO_GET, {'DAYSTOPAY', 'DAYSTOPAY'}) AADD(FLDS_TO_GET, {'ADD1', 'CUST_ADDR'}) AADD(FLDS_TO_GET, {'ADD2', 'CUST_ADDR2'}) AADD(FLDS_TO_GET, {'CONTACT', 'CONT_LNAME'}) AADD(FLDS_TO_GET, {'COMMENT', 'COMMENT'}) AADD(FLDS_TO_GET, {'TAXNUM', 'TAXNUM'}) AADD(FLDS_TO_GET, {'CITY', 'CUST_CITY'}) AADD(FLDS_TO_GET, {'CUSTYP', 'CUSTYP'}) AADD(FLDS_TO_GET, {'STATE', 'CUST_STATE'}) AADD(FLDS_TO_GET, {'UPSZONE', 'UPSZONE'}) AADD(FLDS_TO_GET, {'ZIP', 'CUST_ZIP'}) AADD(FLDS_TO_GET, {'PHONE', 'PHONE'}) AADD(FLDS_TO_GET, {'TAXSCH', 'TAXSCH'}) AADD(FLDS_TO_GET, {'SHIPNAME', 'SHIPNAME'}) AADD(FLDS_TO_GET, {'SHIPADD1', 'SHIPADD1'}) AADD(FLDS_TO_GET, {'SHIPADD2', 'SHIPADD2'}) AADD(FLDS_TO_GET, {'SHIPST', 'SHIPST'}) AADD(FLDS_TO_GET, {'SHIPZIP', 'SHIPZIP'}) AADD(FLDS_TO_GET, {'SHIPPHN', 'SHIPPHN'}) AADD(FLDS_TO_GET, {'SHIPFAX', 'SHIPFAX'}) AADD(FLDS_TO_GET, {'FAX', 'FAX'}) AADD(FLDS_TO_GET, {'TAXRGST', 'TAXRGST'}) AADD(FLDS_TO_GET, {'CURRID', 'CURRID'}) *-QBROWSE(2,2,20,79) BARM_FACTOR = SETBARM(,, 20, N_XLASTREC() ) XXX = 0 N_XGOTOTOP() // TOP OF BTRIVE FILE DO WHILE !N_XEOF() XXX++ BARM_UPDATE(,,XXX, BARM_FACTOR) MCUSNO = N_XFETCH(A_CUSNO) // GET CURRENT CUSTOMER ID SELECT CUST_MAST SEEK MCUSNO IF !FOUND() ADD_REC(1) REPLACE GP_CUST WITH MCUSNO /////////////////////////////////////////////////// // TEMPORARY FOR NOW REPLACE CUST_ID WITH MCUSNO 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 GP_FLD == 'DTRM' MVAL = STR(N_XFETCH(GP_FLD),12) ELSE MVAL = N_XFETCH(GP_FLD) ENDIF REPLACE CUST_MAST->&CGW_FLD WITH MVAL NEXT N_XSKIP(1) ENDDO CLOSE DATABASES RETURN