PROCEDURE CGWB0100() ****************************************************** ** MIKE LEWIS - MAIN MENU 09-10-93 - CGWB0100 ****************************************************** LOCAL NCHOICE, MARR := {}, SAVESCR SETCOLOR(LNOR) CLS @ 0,30 SAY ' Great Plains File Maintenance ' @ 1,0 SAY DOUBLE // IF WE WANT TO ADD A RECORD TO GREAT PLAINS FILES IF ACTION = 'ADDREC' CGWB1100() // GO ADD RECORD RETURN ENDIF AADD(MARR, 'BROWSE Great Plains Files') AADD(MARR, 'UPDATE From Great Plains Files') DO WHILE .T. SAVESCR = SAVESCREEN() NCHOICE = PICKLIST(MARR, 10) IF LASTKEY() = 27 CLOSE DATABASES RETURN ENDIF IF NCHOICE = 1 CGWB1210() ELSE IF NCHOICE = 2 CGWB1220() ENDIF ENDIF RESTSCREEN(,,,,SAVESCR) ENDDO * ******************************************************** * FUNCTION PICKLIST(PASS_ARR, ROW, COL, PICKMSG, INITVAL, CLR_SCREEN) * * * *===== PICK BOX FOR LIST SELECTION =====* * * * * PASS_ARR = ARRAY HOLDING LINES OF LIST TO SELECT FROM * * ROW = STARTING ROW OF LIST BOX * * COL = STARTING COLUMN OF LIST BOX * * pickmsg = MESSAGE FOR TOP OF LIST BOX * * INITVAL = INITIAL VALUE OF CHOICE * * * * LOCAL NUM_LINES, MAX_LENGTH, XX, FUNCBOX, MKEY_DESC, DOFUNC * LOCAL bTOP, bBOTM, bLEFT, bRIGHT, BCENTER, OFFSET, I, MKEYDESC, MARR:={} * LOCAL SAVECOLOR := SETCOLOR(), SAME_ONE := .F., NUM_TRUE := 0 * LOCAL MCHOICE * * STATIC FIRST_ELEM, LAST_ELEM, PICKED_ELEM, LAST_CHOICE * * * IF FIRST_ELEM == PASS_ARR[1] * NUM_TRUE++ * ENDIF * * IF LAST_ELEM == PASS_ARR[LEN(PASS_ARR)] * NUM_TRUE++ * ENDIF * * IF LAST_CHOICE == NIL .OR. LAST_CHOICE > LEN(PASS_ARR) .OR. LAST_CHOICE < 1 * ELSE * IF PICKED_ELEM == PASS_ARR[LAST_CHOICE] * NUM_TRUE++ * ENDIF * ENDIF * IF NUM_TRUE = 3 * SAME_ONE = .T. * ENDIF * * * * * IF !SAME_ONE * IF INITVAL = NIL * MCHOICE = 1 * ELSE * MCHOICE = INITVAL * ENDIF * ELSE * MCHOICE = LAST_CHOICE * ENDIF * * IF PICKMSG = NIL * PICKMSG = '' * ELSE * PICKMSG = ' ' + PICKMSG + ' ' * ENDIF * * IF CLR_SCREEN = NIL * CLR_SCREEN := .T. * ENDIF * * NUM_LINES = LEN(PASS_ARR) // GET NUMBER OF ARRAY ELEMENTS * IF NUM_LINES = 0 * RETURN * ENDIF * * * MAX_LENGTH = LEN(PICKMSG) * FOR XX = 1 TO NUM_LINES * IF VALTYPE(PASS_ARR[XX]) = 'A' // PASSED A FUNCTION(S) INSTEAD * MKEYDESC = '' // OF A CHARACTER DESCRIPTION * FOR I = 1 TO LEN(PASS_ARR[XX]) * DOFUNC = PASS_ARR[XX,I] * MKEYDESC = MKEYDESC + &DOFUNC * NEXT * AADD(MARR, MKEYDESC) * ELSE * AADD(MARR, PASS_ARR[XX]) * ENDIF * * IF LEN(MARR[XX]) > MAX_LENGTH // FIND LONGEST LINE LENGTH * MAX_LENGTH = LEN(MARR[XX]) * ENDIF * NEXT * * * * MAX_LENGTH++ * * bTOP = ROW * bBOTM = bTOP + NUM_LINES + 1 * IF bBOTM > 23 * bBOTM = 23 * ENDIF * * IF COL = NIL .OR. COL = 0 * // CENTER THE BOX * bLEFT = ((80 - MAX_LENGTH)/2) - 2 * bRIGHT = 80 - bLEFT * ELSE * bLEFT = COL - 1 * bRIGHT = bLEFT + MAX_LENGTH * ENDIF * * FUNCBOX = SAVESCREEN(BTOP,BLEFT,BBOTM+1,BRIGHT+1) * * * SETCOLOR(BLACK) * @ bTOP+1,bLEFT+1 CLEAR TO bBOTM+1,bRIGHT+1 // DRAW SHADOW BOX * SETCOLOR(HNOR) * @ bTOP,bLEFT CLEAR TO bBOTM,bRIGHT // DRAW BACKROUND COLOR * @ bTOP,bLEFT TO bBOTM,bRIGHT // DRAW DOUBLE LINE * * * * IF LEN(PICKMSG) > 0 * // FIND THE CENTER OF THE BOX * BCENTER = INT( (BRIGHT - BLEFT) / 2) * OFFSET = INT(LEN(PICKMSG) / 2) * SETCOLOR(HREV) * @ BTOP,BLEFT+(BCENTER-OFFSET) SAY PICKMSG * ENDIF * * SETCOLOR(LNOR) * DO WHILE .T. * MCHOICE := ACHOICE(bTOP+1,bLEFT+1,bBOTM-1,bRIGHT-1,MARR,,,MCHOICE) * // DON'T LEAVE UNLESS VALID INPUT OR ESCAPE KEY IS PRESSED!!! * IF MCHOICE <> 0 .OR. LASTKEY() = 27 * EXIT * ENDIF * ENDDO * IF CLR_SCREEN * RESTSCREEN(bTOP,bLEFT,bBOTM+1,BRIGHT+1,FUNCBOX) * ENDIF * SETCOLOR(SAVECOLOR) // RESET COLOR IN CASE OF AN ESCAPE * * // IF ONE WAS PICKED, DO THIS * IF MCHOICE > 0 * FIRST_ELEM = PASS_ARR[1] * LAST_ELEM = PASS_ARR[LEN(PASS_ARR)] * PICKED_ELEM = PASS_ARR[MCHOICE] * LAST_CHOICE = MCHOICE * RETURN MCHOICE * ELSE * RETURN 0 * ENDIF * * ****************************************************************** * * FUNCTION NET_USE * PARAMETERS file, ex_use, wait, Falias, SETNDX * PRIVATE forever, NUMTIMES, LOCKVAR * * IF WAIT = NIL .OR. WAIT > 1 * WAIT = 1 * ENDIF * * IF EX_USE = NIL * EX_USE = .F. * ENDIF * * IF WAIT > 1 * WAIT := 1 * ENDIF * NUMTIMES = 0 * DO WHILE .T. * IF PCOUNT() > 3 * IF SELECT(FALIAS) != 0 // IS FILE ALREADY OPENED? * ///////////////////////////////// * // CHECK TO SEE IF FILE NEEDS TO CHANGE EXCLUSIVE STATUS!!!!! * ///////////////////////////////// * SELECT &FALIAS * RETURN .T. * ENDIF * ENDIF * * forever = (wait = 0) * DO WHILE (forever .OR. wait > 0) * * SELECT 0 * IF ex_use && exclusive * IF PCOUNT() = 3 * USE &file EXCLUSIVE * ELSE * USE &file EXCLUSIVE ALIAS &FALIAS * ENDIF * ELSE * IF PCOUNT() = 3 * USE &file * ELSE * USE &file ALIAS &FALIAS && shared * ENDIF * ENDIF * * IF !NETERR() * IF PCOUNT() > 4 * NDXFILE := {} * DO WHILE .T. * STOP := AT(',', SETNDX) * IF STOP = 0 * AADD(NDXFILE, SETNDX) * EXIT * ELSE * NDX1 := SUBSTR(SETNDX,1,STOP-1) * AADD(NDXFILE, NDX1) * SETNDX := SUBSTR(SETNDX,STOP+1, LEN(SETNDX)-STOP) * ENDIF * ENDDO * * IF LEN(NDXFILE) = 1 * SET INDEX TO (NDXFILE[1]) * ELSE * IF LEN(NDXFILE) = 2 * SET INDEX TO (NDXFILE[1]), (NDXFILE[2]) * ELSE * IF LEN(NDXFILE) = 3 * SET INDEX TO (NDXFILE[1]), (NDXFILE[2]), (NDXFILE[3]) * ELSE * IF LEN(NDXFILE) = 4 * SET INDEX TO (NDXFILE[1]), (NDXFILE[2]), (NDXFILE[3]), (NDXFILE[4]) * ELSE * IF LEN(NDXFILE) = 5 * SET INDEX TO (NDXFILE[1]), (NDXFILE[2]), (NDXFILE[3]), (NDXFILE[4]), (NDXFILE[5]) * ENDIF * ENDIF * ENDIF * ENDIF * ENDIF * ENDIF * ENDIF * * IF .NOT. NETERR() && USE succeeds * RETURN (.T.) * ENDIF * * INKEY(1) && wait 1 second * wait = wait - 1 * ENDDO * LOCKVAR = 'FILE ' + TRIM(FILE) + ' COULD NOT BE OPENED' * LOCK_ERR() && USE fails * NUMTIMES = NUMTIMES + 1 * WAIT = 3 * IF NUMTIMES > 5 * WHATSGOINGON() * NUMTIMES = 0 * ENDIF * ENDDO * * End - NET_USE * * ****************************************************************** * * FUNCTION FIL_LOCK * PARAMETERS wait, OKABORT * PRIVATE forever, NUMTIMES, LOCKVAR * * IF WAIT > 1 * WAIT := 1 * ENDIF * NUMTIMES = 0 * DO WHILE .T. * IF FLOCK() * RETURN (.T.) && locked * ENDIF * * forever = (wait = 0) * DO WHILE (forever .OR. wait > 0) * * INKEY(.5) && wait 1/2 second * wait = wait - .5 * * IF FLOCK() * RETURN (.T.) && locked * ENDIF * * ENDDO * LOCKVAR = 'FILE ' + TRIM(FILE) + ' COULD NOT BE OPENED' * LOCK_ERR() && not locked * NUMTIMES = NUMTIMES + 1 * WAIT = 3 * IF NUMTIMES > 5 * WHATSGOINGON() * NUMTIMES = 0 * ENDIF * ENDDO * * End - FIL_LOCK * * * FUNCTION REC_LOCK * PARAMETERS wait, OKABORT * PRIVATE forever, NUMTIMES, LOCKVAR * * IF WAIT = NIL .OR. WAIT > 1 * WAIT := 1 * ENDIF * NUMTIMES = 0 * DO WHILE .T. * IF RLOCK() * RETURN (.T.) && locked * ENDIF * * forever = (wait = 0) * DO WHILE (forever .OR. wait > 0) * * IF RLOCK() * RETURN (.T.) && locked * ENDIF * * INKEY(.5) && wait 1/2 second * wait = wait - .5 * * ENDDO * LOCKVAR = 'THE RECORD YOU REQUESTED IS IN USE BY SOMEONE ELSE' * LOCK_ERR() && not locked * NUMTIMES = NUMTIMES + 1 * WAIT = 3 * IF NUMTIMES > 5 * WHATSGOINGON() * NUMTIMES = 0 * ENDIF * ENDDO * * End - REC_LOCK * * * FUNCTION ADD_REC * PARAMETERS wait, OKABORT * PRIVATE forever, NUMTIMES, LOCKVAR * * IF WAIT > 3 * WAIT := 3 * ENDIF * APPEND BLANK * IF .NOT. NETERR() * RETURN (.T.) * ENDIF * * NUMTIMES = 0 * DO WHILE .T. * forever = (wait = 0) * DO WHILE (forever .OR. wait > 0) * * APPEND BLANK * IF .NOT. NETERR() * RETURN .T. * ENDIF * * INKEY(.5) && wait 1/2 second * wait = wait - .5 * * ENDDO * LOCKVAR = 'THE RECORD COULD NOT BE ADDED - FILE IN USE BY SOMEONE ELSE' * LOCK_ERR() && not locked * NUMTIMES = NUMTIMES + 1 * WAIT = 3 * IF NUMTIMES > 5 * WHATSGOINGON() * NUMTIMES = 0 * ENDIF * ENDDO * * ************************************************************* * * PROCEDURE LOCK_ERR * PARAMETERS OKABORT * LOCAL XXX, SAVESCR := SAVESCREEN() * * SETCOLOR(HREV) * @ 22,0 * @ 23,0 * @ 22,0 SAY LOCKVAR * XXX = ' ' * @ 23,17 SAY " Enter 'Y' To Try Again " * DO WHILE .NOT. XXX$'Y' * @ 23,42 GET XXX PICTURE '!' * READ * ENDDO * SETCOLOR(LNOR) * RESTSCREEN(,,,,SAVESCR) * RETURN * * * * STATIC PROCEDURE WHATSGOINGON * PRIVATE WHATGIVES * ?? CHR(7) * SAVE SCREEN TO WHATGIVES * @ 07,10 CLEAR TO 19,70 * @ 07,10 TO 19,70 * @ 09,15 SAY 'YOU HAVE TRIED TO GRAB THAT FILE OR RECORD ' * @ 10,15 SAY 'OVER 5 TIMES NOW. SOMEBODY HAS LOCKED THAT ' * @ 11,15 SAY 'FILE/RECORD UP TIGHTER THAN A DRUM!!!!! ' * @ 13,15 SAY 'First, find out who has the file/record locked.' * @ 14,15 SAY 'Let them finish their process if possible. ' * @ 16,15 SAY 'You May Keep RETRYING or PRESS ALT-C as a ' * @ 17,15 SAY 'LAST RESORT Option to ABORT YOUR APPLICATION.' * @ 21,14 SAY ' ' * WAIT * RESTORE SCREEN FROM WHATGIVES * RETURN * * * * * * * * * * * * * * * * * * * * * * * * * * * * FUNCTION WAIT_BOX(LINE1, LINE2, LINE3, LINE4, V ) * LOCAL SCRN1, I, LONGEST, H, SAVECOL * PRIVATE LINEVAR, MSG1, MSG2, MSG3, MSG4 * IF V = NIL * V := 11 * ENDIF * DO CASE * CASE MSG2 = NIL * NUMMSG := 1 * CASE MSG3 = NIL * NUMMSG := 2 * CASE MSG4 = NIL * NUMMSG := 3 * OTHERWISE * NUMMSG := 4 * ENDCASE * SET CURSOR OFF * MSG1 := LINE1 * MSG2 := LINE2 * MSG3 := LINE3 * MSG4 := LINE4 * SAVECOL := SETCOLOR() * SETCOLOR(HREV) * LONGEST := 0 * FOR I = 1 TO NUMMSG * LINEVAR := 'MSG' + STR(I,1) * IF &LINEVAR = NIL * ELSE * IF LEN(&LINEVAR) > LONGEST * LONGEST := LEN(&LINEVAR) * ENDIF * ENDIF * NEXT * * H = ((80 - LONGEST) / 2) * @ V,H-5 CLEAR TO V+7,H+5+LONGEST * @ V,H-5 TO V+7,H+5+LONGEST DOUBLE * @ V+2,H SAY LINE1 * IF PCOUNT() > 1 * @ V+3,H SAY LINE2 * ENDIF * IF PCOUNT() > 2 * @ V+4,H SAY LINE3 * ENDIF * IF PCOUNT() > 3 * @ V+5,H SAY LINE4 * ENDIF * SETCOLOR(SAVECOL) * SET CURSOR ON * RETURN (.T.) * * *************************************************************** * * FUNCTION SETBARM(ROW, COL, LEN, TOTRECS) * LOCAL SAVECOL := SETCOLOR(LNOR) * IF ROW = NIL * ROW := 16 * LEN = 20 * COL := 40 - (LEN / 2) * ENDIF * @ ROW,COL SAY REPLICATE('Û', LEN ) * SETCOLOR(HREV) * @ ROW+1,COL SAY '0' * @ ROW+1,COL+LEN-1 SAY ALLTRIM(STR(TOTRECS)) * SETCOLOR(SAVECOL) * RETURN LEN/TOTRECS * * *************************************************************** * * PROCEDURE BARM_UPDATE(ROW, COL, CURREC, BARMFACT) * LOCAL SAVECOL := SETCOLOR(HREV), MID * IF ROW = NIL * ROW := 16 * COL := 30 * MID := 38 * ELSE * MID := COL + (RECCOUNT() * BARMFACTOR / 2) - 2 * ENDIF * @ ROW,COL SAY REPLICATE('Û', INT(CURREC*BARMFACT) ) * @ ROW+1,MID SAY '(' + ALLTRIM(STR(CURREC)) + ')' * SETCOLOR(SAVECOL) * RETURN .T. * * ********************************************************************** * FUNCTION GPFLDLIST(MSYSNAME) LOCAL FLDS_TO_GET := {} // FLDS_TO_GET LAYOUT // 1 = GREAT PLAINS FIELD NAME // 2 = CGW0CM FIELD NAME IF MSYSNAME = NIL MSYSNAME = 'CUSMAS' ENDIF // BUILD LIST OF FIELDS TO GET INFO FROM DO CASE CASE MSYSNAME = 'CUSMAS' AADD(FLDS_TO_GET, {'CUSNO', 'GP_CUST'}) AADD(FLDS_TO_GET, {'NAME', 'COMP_NAME'}) AADD(FLDS_TO_GET, {'SLSMAN', 'SLSMAN'}) AADD(FLDS_TO_GET, {'SHP_METHOD', 'SHP_METHOD'}) AADD(FLDS_TO_GET, {'TERMS', '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, {'SHIPCITY', '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'}) AADD(FLDS_TO_GET, {'BANK', 'CUST_ID'}) CASE MSYSNAME = 'SLSMAS' AADD(FLDS_TO_GET, {'SLSMAN', 'SLSMAN'}) AADD(FLDS_TO_GET, {'LST_NME', 'LST_NME'}) AADD(FLDS_TO_GET, {'FST_NME', 'FST_NME'}) AADD(FLDS_TO_GET, {'MID_NME', 'MID_NME'}) CASE MSYSNAME = 'STXDET' AADD(FLDS_TO_GET, {'SSTAXDET', 'SSTAXDET'}) AADD(FLDS_TO_GET, {'SSTAXSEQ', 'SSTAXSEQ'}) AADD(FLDS_TO_GET, {'SDETDESC', 'SDETDESC'}) AADD(FLDS_TO_GET, {'STAXON', 'STAXON'}) AADD(FLDS_TO_GET, {'STAXINCL', 'STAXINCL'}) AADD(FLDS_TO_GET, {'STAXAMT', 'STAXAMT'}) AADD(FLDS_TO_GET, {'STAXRND', 'STAXRND'}) AADD(FLDS_TO_GET, {'SAPMNMX', 'SAPMNMX'}) AADD(FLDS_TO_GET, {'SMINAMT', 'SMINAMT'}) AADD(FLDS_TO_GET, {'SMAXAMT', 'SMAXAMT'}) CASE MSYSNAME = 'STXSCH' AADD(FLDS_TO_GET, {'STAXSCH', 'STAXSCH'}) AADD(FLDS_TO_GET, {'SEQ1', 'SEQ1'}) AADD(FLDS_TO_GET, {'SEQ2', 'SEQ2'}) AADD(FLDS_TO_GET, {'SEQ3', 'SEQ3'}) AADD(FLDS_TO_GET, {'SEQ4', 'SEQ4'}) AADD(FLDS_TO_GET, {'SEQ5', 'SEQ5'}) AADD(FLDS_TO_GET, {'SEQ6', 'SEQ6'}) AADD(FLDS_TO_GET, {'SEQ7', 'SEQ7'}) AADD(FLDS_TO_GET, {'SEQ8', 'SEQ8'}) AADD(FLDS_TO_GET, {'SEQ9', 'SEQ9'}) AADD(FLDS_TO_GET, {'SEQ10', 'SEQ10'}) CASE MSYSNAME = 'ARARAM' AADD(FLDS_TO_GET, {'SHIP0', 'SHIP0'}) AADD(FLDS_TO_GET, {'SHIP1', 'SHIP1'}) AADD(FLDS_TO_GET, {'SHIP2', 'SHIP2'}) AADD(FLDS_TO_GET, {'SHIP3', 'SHIP3'}) AADD(FLDS_TO_GET, {'SHIP4', 'SHIP4'}) AADD(FLDS_TO_GET, {'SHIP5', 'SHIP5'}) AADD(FLDS_TO_GET, {'SHIP6', 'SHIP6'}) AADD(FLDS_TO_GET, {'SHIP7', 'SHIP7'}) AADD(FLDS_TO_GET, {'SHIP8', 'SHIP8'}) AADD(FLDS_TO_GET, {'SHIP9', 'SHIP9'}) AADD(FLDS_TO_GET, {'TRMDSC1', 'TRMDSC1'}) AADD(FLDS_TO_GET, {'PERCNT1', 'PERCNT1'}) AADD(FLDS_TO_GET, {'DSCDAY1', 'DSCDAY1'}) AADD(FLDS_TO_GET, {'NETDAY1', 'NETDAY1'}) AADD(FLDS_TO_GET, {'DAYMON1', 'DAYMON1'}) AADD(FLDS_TO_GET, {'DTEDUE1', 'DTEDUE1'}) AADD(FLDS_TO_GET, {'TRMDSC2', 'TRMDSC2'}) AADD(FLDS_TO_GET, {'PERCNT2', 'PERCNT2'}) AADD(FLDS_TO_GET, {'DSCDAY2', 'DSCDAY2'}) AADD(FLDS_TO_GET, {'NETDAY2', 'NETDAY2'}) AADD(FLDS_TO_GET, {'DAYMON2', 'DAYMON2'}) AADD(FLDS_TO_GET, {'DTEDUE2', 'DTEDUE2'}) AADD(FLDS_TO_GET, {'TRMDSC3', 'TRMDSC3'}) AADD(FLDS_TO_GET, {'PERCNT3', 'PERCNT3'}) AADD(FLDS_TO_GET, {'DSCDAY3', 'DSCDAY3'}) AADD(FLDS_TO_GET, {'NETDAY3', 'NETDAY3'}) AADD(FLDS_TO_GET, {'DAYMON3', 'DAYMON3'}) AADD(FLDS_TO_GET, {'DTEDUE3', 'DTEDUE3'}) AADD(FLDS_TO_GET, {'TRMDSC4', 'TRMDSC4'}) AADD(FLDS_TO_GET, {'PERCNT4', 'PERCNT4'}) AADD(FLDS_TO_GET, {'DSCDAY4', 'DSCDAY4'}) AADD(FLDS_TO_GET, {'NETDAY4', 'NETDAY4'}) AADD(FLDS_TO_GET, {'DAYMON4', 'DAYMON4'}) AADD(FLDS_TO_GET, {'DTEDUE4', 'DTEDUE4'}) AADD(FLDS_TO_GET, {'TRMDSC5', 'TRMDSC5'}) AADD(FLDS_TO_GET, {'PERCNT5', 'PERCNT5'}) AADD(FLDS_TO_GET, {'DSCDAY5', 'DSCDAY5'}) AADD(FLDS_TO_GET, {'NETDAY5', 'NETDAY5'}) AADD(FLDS_TO_GET, {'DAYMON5', 'DAYMON5'}) AADD(FLDS_TO_GET, {'DTEDUE5', 'DTEDUE5'}) AADD(FLDS_TO_GET, {'TRMDSC6', 'TRMDSC6'}) AADD(FLDS_TO_GET, {'PERCNT6', 'PERCNT6'}) AADD(FLDS_TO_GET, {'DSCDAY6', 'DSCDAY6'}) AADD(FLDS_TO_GET, {'NETDAY6', 'NETDAY6'}) AADD(FLDS_TO_GET, {'DAYMON6', 'DAYMON6'}) AADD(FLDS_TO_GET, {'DTEDUE6', 'DTEDUE6'}) AADD(FLDS_TO_GET, {'TRMDSC7', 'TRMDSC7'}) AADD(FLDS_TO_GET, {'PERCNT7', 'PERCNT7'}) AADD(FLDS_TO_GET, {'DSCDAY7', 'DSCDAY7'}) AADD(FLDS_TO_GET, {'NETDAY7', 'NETDAY7'}) AADD(FLDS_TO_GET, {'DAYMON7', 'DAYMON7'}) AADD(FLDS_TO_GET, {'DTEDUE7', 'DTEDUE7'}) AADD(FLDS_TO_GET, {'TRMDSC8', 'TRMDSC8'}) AADD(FLDS_TO_GET, {'PERCNT8', 'PERCNT8'}) AADD(FLDS_TO_GET, {'DSCDAY8', 'DSCDAY8'}) AADD(FLDS_TO_GET, {'NETDAY8', 'NETDAY8'}) AADD(FLDS_TO_GET, {'DAYMON8', 'DAYMON8'}) AADD(FLDS_TO_GET, {'DTEDUE8', 'DTEDUE8'}) AADD(FLDS_TO_GET, {'TRMDSC9', 'TRMDSC9'}) AADD(FLDS_TO_GET, {'PERCNT9', 'PERCNT9'}) AADD(FLDS_TO_GET, {'DSCDAY9', 'DSCDAY9'}) AADD(FLDS_TO_GET, {'NETDAY9', 'NETDAY9'}) AADD(FLDS_TO_GET, {'DAYMON9', 'DAYMON9'}) AADD(FLDS_TO_GET, {'DTEDUE9', 'DTEDUE9'}) AADD(FLDS_TO_GET, {'TRMDSC10', 'TRMDSC10'}) AADD(FLDS_TO_GET, {'PERCNT10', 'PERCNT10'}) AADD(FLDS_TO_GET, {'DSCDAY10', 'DSCDAY10'}) AADD(FLDS_TO_GET, {'NETDAY10', 'NETDAY10'}) AADD(FLDS_TO_GET, {'DAYMON10', 'DAYMON10'}) AADD(FLDS_TO_GET, {'DTEDUE10', 'DTEDUE10'}) END CASE RETURN FLDS_TO_GET * * ******************************************************* FUNCTION ORD_HOTKEYS(WHICHONE) LOCAL RETVAL := {}, NOTEVAR, NEEDVAR, SEEKKEY LOCAL MTITLE := ' + "Reg: " + CURCONVREG->REGID + [-] + TRIM(CURCONVREG->FNAME) + [ ] + CURCONVREG->LNAME ' AADD(RETVAL, { 'F6-Customer Update', -5, 'UPDT_CUST()' } ) RETURN RETVAL ******************************************************* FUNCTION UPDT_CUST() LOCAL SAVESEL := SELECT() STATIC MELEM IF MELEM = NIL MELEM := ASCAN(GETVARS, {|X| X[3] = 'CUST_ID'}) ENDIF **KEYBOARD (SAVESEL)->CUST_ID KEYBOARD GETVARS[MELEM, 4] ADD_SING_REC(1,'Update CUSTOMER' ,{'CUST_MAST', .F.,,,,,'ADD',,.F.,.F. }) SELECT (SAVESEL) RETURN .T.