0001 SETERR GENERROR
0010 REM 0 "SOENTCON - 11/07/2022 - Order Entry Control Program"
0011 REM "Author - PES,DJB,MLS"
0012 REM "PTS: *9496,*9444,*11880,*11909,*11906,11920,*12233,*12248,*12256,12421,12503,*12511,*12933,12990,*13120
0013 REM RRW/RCG ENHANCED FOR SP 8.0 011215
0015 REM 0 - (COPYRIGHT) 0015-0022
0016 REM  Standards 8.0
0019 REM  OPEN SYSTEMS (R) Accounting Software
0020 REM  Copyright (c)1982 - 2013 Open Systems Holdings Corp.
0021 REM  All Rights Reserved
0022 REM  OPEN SYSTEMS is a registered trademark of Open Systems Holdings Corp.
0023 LOADORD$="";REM RRW/RCG SP000 ALLOW MDI JUMP TO ORDER
0024 LET INHOUSE=0,INHOUSE=NUM(STBL("INHOUSE",ERR=0025),ERR=0025)
0025 LET MQTY$="-"+STBL("+IQTY"),MPRICE$="-"+STBL("+INUP"),MCOST$="-"+STBL("+INUC"),MDOLL$="-"+STBL("+DOLL")
0026 PRECISION NUM(STBL("-DOLL"))
0075 LET TD8$=TD8$+FILL(26-LEN(TD8$)); LET TD8$(2,25)=TH8$(2,25)
0080 LET Y$="",YDISABLE$="X",WINDID$="",SELVAL$="",INFO=1,DISABLE$="XJ",PROGID$=""
0085 IF SELCHG THEN IF GUI THEN PRINT (OSGUI.CHAN)'TITLE'(0,TITLE$), ELSE GOSUB BOX FI; LET SELCHG=0
0087 IF INIT THEN LET INIT=0; GOSUB SETUP ELSE IF TASK$<>"DL" THEN GOSUB GUI_BUTTONS
0089 DIM_ARCR: DIM CR0$(10),CR1$(14),CR1[2],CR2$(6),CR3$(12),CR2[2],CR4$(6),CR5$(20),CR6$(74),CRCFF$:FATTR(CRCFF$),CRCFV$:FATTR(CRCFV$)
0090 REM 0 "* * *   Handle Function Returns"
0093 IF GUI=0 THEN PRINT 'BACKGR'+STBL("FBKG"),'DEFAULT',
0094 LET POSZ=POS(TASK$="ALELILDLNHEHUHUTDOVCRONTSP",2); IF POSZ>1 THEN LET POSZ=(POSZ+1)/2; REM "SP004"
0095 IF POS(TASK$="NHDOVC",2)=0 CALL "SOENTCON.HOOKS"+"::RECALC_TOTALS",ERR=*NEXT;REM 073015 RRW/RCG UPDATE TOTALS WITHOUT PRICE UPDATE
0096 ON POSZ GOTO 0210,RETAPPLINE,RETEDLINE,RETINSLINE,RETDELLINE,RETNEWHDR,RETEDHDR,RETUPDHDR,RETUPDTOT,RETDELORD,COMPLVER,RETONLINE,NEXTTRANS,RETSPECORD,0210; REM "Return from Functions"; REM "SP004"
0210 GOTO ABANDON
0310 DEF FND$(D)=DATE(D:STBL("DATEMASK"))
0320 GOTO 1000
0899 REM 0 - (SOFIL) 0899-0969
0900 XXTB: IOLIST T0$,T1,T1$,T2$,T3$,T4$,T2; REM "all application tables"
0902 OSCN: IOLIST CN0$,CN1$,CN2$,CN3$
0911 ARCRXXX: IOLIST CR0$,CR1$,CR1[ALL],CR2$,CR3$,CR2[ALL],CR4$,CR5$,CR6$,CRCFF$,CRCFV$
0913 ALTGLMAXXX: IOLIST G0$,G1$,G0; REM "GLMAx SHORT FORM FOR EDITING"
0920 ARHIXXX: IOLIST H0$,H1$,H2$,H3$,H4$,H1,H2,H3,H4,H5,H6,H7,H8,H9,H0,H5$,H6$,H9[ALL],H7$,H10,H8$,HCFF$,HCFV$
0921 ARCTXXX: IOLIST CTKEY$,CTSEQ$,CTORD$,CTBAT$
0922 ARSAXXX: IOLIST S0$,S1$,S2$,S3$,S4$,SCFF$,SCFV$
0923 ARINXXX: IOLIST N0$,N1$,N1[ALL],N2$,N3$,NCFF$,NCFV$
0925 SOTDXXX: IOLIST TD0$,TD0,TD1$,TD1[ALL],TD2$,TD3$,TD2[ALL],TD3,TD4$,TD5$,TD4,TD5[ALL],TD6$,TD7$,TD8$,TD9$,TD10$,TD11$,TD12$,TD6[ALL],TD13$,TD14$,TDCFF$,TDCFV$
0926 ARCUXXX: IOLIST C0$,C1$,C2$,C3$,C4$,C5$,C1[ALL],C2[ALL],C3,C4,C8$,C5[ALL],C6,C9$,C7,C6$,C7$,C10$[ALL],C11$,C12$,C8,CCFF$,CCFV$
0927 RMGCXXX: IOLIST GC0$,GC1$,GC2$,GC3$,GC4$,GC5$,GC6$,GC7$,GC8$[ALL],GC9$[ALL],GC10$[ALL],GC11$[ALL],GCCFF$,GCCFV$
0928 ARBTXXX: IOLIST BC0$,BC1$,BC2$,BC3$[ALL],BC4$,BC1,BC2,BC3
0929 SOSLXXX: IOLIST WW$,W0,W0$
0931 ARSRXXX: IOLIST SR0$,SR1$,SR2$,SR3$,SR4$,SR0[ALL],SR1[ALL],SR2[ALL],SR3,SR4[ALL],SR5$,SRCFF$,SRCFV$
0932 SODEXXX: IOLIST DKEY$,DDESC$
0933 RMCDXXX: IOLIST RCD0$,RCD1$,RCD1[ALL],RCDCFF$,RCDCFV$
0934 ARPYXXX: IOLIST P0$,P1$,P1,P2$,P2[ALL],P3$,P3,P4,P4$,P5$,PCFF$,PCFV$
0935 ARDCXXX: IOLIST DC0$,DC1$,DC2$,DCCFF$,DCCFV$
0936 ARDEXXX: IOLIST DKEY$,DDESC$
0937 ARFCXXX: IOLIST FC0$,FC1$,FC1[ALL],FCCFF$,FCCFV$
0938 ARGLXXX: IOLIST GL0$,GL1$,GL2$,GLCFF$,GLCFV$
0939 ARSHXXX: IOLIST SH0$,SH1$,SH2$,SH3$,SH4$,SHCFF$,SHCFV$
0940 ARHSXXX: IOLIST HS0$,HS1[ALL],HS2[ALL],HS1$,HS2$,HSCFF$,HSCFV$
0941 ARHDXXX: IOLIST HD0$,HD1$
0942 ARTCXXX: IOLIST TC0$,TC1$,TC2$,TC1[ALL],TCCFF$,TCCFV$
0943 SOLSXXX: IOLIST LS0$,LS1$,LS2$,LS3$,LS4$,LS1[ALL],LS5$,LS6$,LS7$,LSCFF$,LSCFV$
0948 SOKTXXX: IOLIST KT0$,KT1$,KT2$,KT3$,KT4$,KT5$,KT1[ALL],KT6$,KT2[ALL],KTCFF$,KTCFV$
0949 SOKHXXX: IOLIST KH0$,KH1$,KH2$,KH3$,KH4$,KH5$,KH6$,KH1[ALL],KH2,KH7$,KH3[ALL],KH8$,KHCFF$,KHCFV$
0955 SORLXXX: IOLIST RL0$,RL0,RL1$,RL1[ALL],RL2$,RL3$,RL2[ALL],RL3,RL4$,RL5$,RL4,RL5[ALL],RL6$,RL7$,RL8$,RL9$,RL10$,RL11$,RL12$,RL6[ALL],RLCFF$,RLCFV$
0956 SOTHXXX: IOLIST TH0$,TH0,TH1$,TH1[ALL],TH2$,TH3$,TH2[ALL],TH3,TH4$,TH5$,TH4,TH5[ALL],TH6$,TH7$,TH8$,TH9$,TH10$,TH11$,TH12$,TH13$,TH6[ALL],TH14$,TH15$,TH7,THCFF$,THCFV$
0957 SORHXXX: IOLIST RH0$,RH0,RH1$,RH1[ALL],RH2$,RH3$,RH2[ALL],RH3,RH4$,RH5$,RH4,RH5[ALL],RH6$,RH7$,RH8$,RH9$,RH10$,RH11$,RH12$,RH6[ALL],RHCFF$,RHCFV$
0959 JOBSXXX: IOLIST B0$,B1$,B2$,B3$,B0[ALL],B4$,B5$,B1[ALL],B2[ALL],B6$,B3,B4,B7$,B5[ALL],B6[ALL],B7[ALL],B8[ALL],B8$,B9$,B10$,B11$,B12$,BCFF$,BCFV$; REM "JOBS FILE"
0960 ARCMXXX: IOLIST CM0$,CM1$,CM2$,CM3$,CM4$,CM5$,CMCFF$,CMCFV$
0962 SOBDXXX: IOLIST BD0$,BD1$
0964 SOBHXXX: IOLIST BH0$,BH0,BH1$,BH1[ALL],BH2$,BH3$,BH2[ALL],BH3,BH4$,BH5$,BH4,BH5[ALL],BH6$,BH7$,BH8$,BH9$,BH10$,BH11$,BH12$,BH13$,BH6[ALL],BH7[ALL],BH8[ALL],BH14$,BHCFF$,BHCFV$
0966 SOBKXXX: IOLIST BK0$,BK1$,BK2$,BK3$,BK4$,BK5$,BK1[ALL],BK6$,BK2[ALL],BKCFF$,BKCFV$
0968 SOBLXXX: IOLIST BL0$,BL0,BL1$,BL1[ALL],BL2$,BL3$,BL2[ALL],BL3,BL4$,BL5$,BL4,BL5[ALL],BL6$,BL7$,BL8$,BL9$,BL10$,BL11$,BL12$,BL6[ALL],BLCFF$,BLCFV$
0969 SOBSXXX: IOLIST BS0$,BS1$,BS2$,BS1,BS2[ALL],BSCFF$,BSCFV$
1000 REM 1000 "* * *   Startup Logic"
1010 ABANDON:
1020 GOSUB SETUP
1030 GOSUB GUI_BUTTONS
1040 IF POS(X0$="DEMS") THEN GOTO 1200
1100 REM 1100,10 "* * *   New Order Startup"
1110 LET TASK$="NH"
1119 IF SOEH=207 RUN "SOENTHDR.IMP";REM RRW/RCG IMPORT
1120 RUN "SOENTHDR"; REM "new header"
1130 RETNEWHDR: REM "return from new header"
1140 LET LOC[3]=0
1150 GOSUB DATA
1160 GOTO APPEND
1200 REM 1200,5 "* * *   Change Order Startup"
1205 LET TASK$="EH",E1=1,E5=WKSDATE
1209 IF SOEH=207 RUN "SOENTHDR.IMP";REM RRW/RCG IMPORT
1210 RUN "SOENTHDR"; REM "edit header"
1215 RETEDHDR: REM "return from edit header"
1220 GOSUB DATA
1225 GOSUB NUMLINES
1230 IF POS(X0$="DS") THEN LET SR33$=TH4$
1235 LET LN[7]=1; GOSUB BUILD
1240 IF POS(X0$="DS")=0 THEN GOTO 1260
1245 GOSUB READTOTREC; LET TH4$=SR33$,TOT[0]=0,TOT[1]=0,TOT[2]=0; GOSUB 7750; REM "restore header info after build"
1250 IF GUI THEN PRINT (OSGUI.CHAN)'TITLE'(2090,FNNUM$(LOC[3],MASK$)), ELSE PRINT 'SF',STBL("FTXT"),@(73,16),FNNUM$(LOC[3],MASK$),
1255 LET TASK$="VO",LN[0]=2; GOSUB GENLINE; RUN "SOENTVER"; REM "verify"
1260 IF POS("DUKE"=STBL("RCMOD",ERR=*NEXT)) THEN IF DUKE_RECALC_PRICES THEN LET DUKE_RECALC_PRICES=0,SAVE_LN=LN[0],LN[0]=2; GOSUB GENLINE; LET LN[0]=SAVE_LN,SAVE_LN=0; GOTO RECALC
1262 GOTO CONTROL
1265 REM "* * *   completed verification - allow edit"
1270 COMPLVER:
1275 IF ORD_CRED_FLAG=1 THEN LET E0=3,E1=3 ELSE LET E0=3,E1=9; REM "------ Done so that after an order is verified, it acts like a change order" "****************
1280 GOSUB SETUP
1285 GOSUB NUMLINES
1290 GOSUB DATA
1295 DIM TD1[4],TD2[2],TD5[10]
1300 LET LN[7]=1; GOSUB BUILD
1305 GOTO CONTROL
1400 REM 1400,5 "* * *   How Many Lines?"
1405 NUMLINES:
1410 LET F0=5; READ (FILE[5],KEY=TRAN$+"}}}",DOM=1415,ERR=GENERROR)
1415 LET K$=KEYP(FILE[5],ERR=GENERROR)
1420 LET LOC[3]=NUM(K$(15,3))
1425 IF LOC[3]>=5 THEN LET LN[9]=5 ELSE LET LN[9]=LOC[3]
1430 RETURN
1450 REM 1450,4 "* * *   Setup Initial LN and LOC Values"
1454 SETUP:
1458 DIM LN[12],LOC[5],GUI_LN[1:5,1:2]
1462 LET LN[0]=1,LN[1]=1,LN[2]=10,LN[3]=2,LN[4]=3,LN[5]=6,LN[6]=5,LN[7]=1,LN[8]=1,LN[9]=0,LN[10]=66,LN[11]=16,LN[12]=74
1466 DIM LN$[1:LN[6],LN[3]-1]
1470 LET ACT$=" ",MASK$="000"
1474 LET LOC[0]=999,LOC[1]=LN[7],LOC[2]=LN[8],LOC[3]=0,LOC[4]=1
1478 LET GUI_LN[1,1]=23,GUI_LN[2,1]=39,GUI_LN[3,1]=44,GUI_LN[4,1]=60,GUI_LN[5,1]=74
1482 LET GUI_LN[1,2]=0,GUI_LN[2,2]=1,GUI_LN[3,2]=0,GUI_LN[4,2]=1,GUI_LN[5,2]=1
1486 GOSUB GUI_BUTTONS
1490 RETURN
1500 REM 1500,4 "* * *   Main Control"
1504 CONTROL:
1508 LET ML2=12,Y$="",ONLINE_PICKING$="",ONLINE_INVOICE$="",ONLINE_PACKING$="",ONLINE_CONFIRM$="",LIVE$="",TRACKING$="",RECALC$=""; IF O2$(11,1)="1" THEN LET ML1=50 ELSE ML1=40
1512 IF LOC[3]>LN[6] THEN LET GT$=", "+'SF'+"G"+'SB'+"oto",ML1=ML1+6 ELSE LET GT$=""
1516 IF (POS(STR(TH0)="126") AND O2$(14,1)="1") THEN IF GUI THEN PRINT (OSGUI.CHAN)'TITLE'(9070,"&Picking Slip") ELSE LET ONLINE_PICKING$=", "+'SF'+"O"+'SB'+"n-Demand Picking Slip",ML2=ML2+23
1517 IF POS(STR(TH0)="126") THEN IF GUI THEN PRINT (OSGUI.CHAN)'TITLE'(9060,"&On-Demand Confirmation") ELSE LET ONLINE_CONFIRM$=", "+'SB'+"con"+'SF'+"F"+'SB'+"irmation",ML2=ML2+14
1518 IF POS(STR(TH0)="35") THEN IF GUI THEN PRINT (OSGUI.CHAN)'TITLE'(9060,"&On-Demand Confirmation") ELSE LET ONLINE_CONFIRM$=", "+'SB'+"con"+'SF'+"F"+'SB'+"irm",ML2=ML2+9; rem "CWE/RCG"
1520 IF (POS(STR(TH0)="345789")) THEN IF TH0=8 THEN LET TYPE_INV$="Quote" ELSE IF POS(STR(TH0)="79") THEN LET TYPE_INV$="RMA" ELSE LET TYPE_INV$="Invoice" FI FI; IF GUI THEN PRINT (OSGUI.CHAN)'TITLE'(9060,"&On-Demand "+TYPE_INV$) ELSE IF O2$(13,1)="1" THEN LET ONLINE_INVOICE$=", "+'SF'+"O"+'SB'+"n-Demand "+TYPE_INV$,ML2=ML2+15+LEN(TYPE_INV$)
1524 IF (POS(STR(TH0)="35") AND O2$(39,1)="1") THEN LET ONLINE_PACKING$=", "+'SF'+"P"+'SB'+"acking",ML2=ML2+9
1528 IF POS(STR(TH0)="89") THEN LET LIVE$=", "+'SF'+"L"+'SB'+"ive",ML2=ML2+6; REM "quote"
1532 IF O2$(45,1)="1" AND TH0<>8 THEN LET TRACKING$=", "+'SF'+"S"+'SB'+"hip Tracking",ML2=ML2+15
1536 IF TH0<>5 AND O2$(2,1)="1" THEN LET RECALC$='SB'+", "+'SF'+"R"+'SB'+"ecalc",ML2=ML2+8 ELSE LET RECALC$=""
1540 IF O2$(11,1)="1" THEN LET MSG1$='SF'+"Enter"+'SB'+" = edit, "+'SF'+"A"+'SB'+"ppend, "+'SF'+"H"+'SB'+"eader, "+"addl "+'SF'+"D"+'SB'+"esc, "+'SF'+"N"+'SB'+"ext trans"+GT$ ELSE LET MSG1$='SF'+"Enter"+'SB'+" = edit, "+'SF'+"A"+'SB'+"ppend, "+'SF'+"H"+'SB'+"eader, "+'SF'+"N"+'SB'+"ext trans"+GT$
1544 LET MSG2$='SF'+"T"+'SB'+"otals, "+'SF'+"V"+'SB'+"iew"+RECALC$+ONLINE_PICKING$+ONLINE_CONFIRM$+ONLINE_INVOICE$+ONLINE_PACKING$+LIVE$+TRACKING$
1546 CALL "SOENTCON.HOOKS"+"::TXT_MSG",ERR=*NEXT;REM RRW/RCG SP001,SP002,SP003,SP004,SP005
1548 GOSUB DISMSG
1552 GOSUB ENABLE_FIELDS; GOSUB DISENT
1556 SUBCONTROL:
1560 LET TASK$="",ABORT=0,GUI_ID=7000,ROW_ID=2080
1564 GOSUB GENLINE
1568 IF LEN(TASK$)<2 THEN GOTO 1580
1572 LET POSZ=POS(TASK$="LDLUPDPUENHODLIL",2); IF POSZ>1 THEN LET POSZ=(POSZ+1)/2
1576 ON POSZ GOTO 1580,LINEDOWN,LINEUP,PAGEDOWN,PAGEUP,GOTOEND,HOME,DELLINE,INSLINE,1580
1580 ON POS(TASK$=" AGHDVTLNOPF@RS") GOTO 1584,EDLINE,APPEND,GOTOLN,HEADER,ADDITIONAL_DESC,VIEW,TOTALS,LIVE,NEXTTRANS,ONLINE,ONLINE,ONLINE,QUICKCHANGE,RECALC,TRACKING_NUMBERS,1584
1584 SOENTCPR_SKIP_PRICE=0,ONLINE_AFTER_HOOK=0;CALL"SOENTCON.HOOKS"+"::MORE_TASKS",ERR=*NEXT;IF TASK$="B" THEN LET BKTH0$="";GOTO NEXTTRANS ELSE IF TASK$="$" AND SOENTCPR_SKIP_PRICE GOTO RECALC ELSE IF TASK$="L" GOTO 3909 ELSE IF ONLINE_AFTER_HOOK GOTO 5110 ELSE IF RUN_AFTER_HOOK$<>"" THEN LET SPQQ$=RUN_AFTER_HOOK$,RUN_AFTER_HOOK$=""; RUN SPQQ$; REM RRW/RCG SP001,SP002,SP003,SP004,SP005;SP011,SP000
1585 TASK$="";REM RRW/RCG SP MOVED DOWN FROM 1584
1588 GOTO 1560
1600 REM 1600,5 "* * *   Line Down"
1605 LINEDOWN:
1610 IF LOC[2]+1>LOC[3] THEN GOTO 1640
1615 LET LOC[2]=LOC[2]+1,LOC[1]=LOC[1]+1
1620 FOR LINE=1 TO LN[6]-1; LET LN$[LINE,0]=LN$[LINE+1,0],LN$[LINE,1]=LN$[LINE+1,1]; NEXT LINE
1625 LET F0=5; READ (FILE[F0],KEY=TRAN$+FNNUM$(LOC[2],"000"))IOL=SOTDXXX
1630 LET LINE=LN[6]; GOSUB BUILDLINE
1635 LET LN[0]=1
1640 GOTO SUBCONTROL
1650 REM 1650,5 "* * *   Line Up"
1655 LINEUP:
1660 IF LOC[2]<=1 THEN GOTO 1690 ELSE LET LOC[2]=LOC[2]-1,LOC[1]=LOC[1]-1
1665 FOR LINE=LN[6]-1 TO 1 STEP -1; LET LN$[LINE+1,0]=LN$[LINE,0],LN$[LINE+1,1]=LN$[LINE,1]; NEXT LINE
1670 LET F0=5; READ (FILE[F0],KEY=TRAN$+FNNUM$(LOC[2],"000"))IOL=SOTDXXX
1675 LET LINE=1; GOSUB BUILDLINE
1680 IF LN[9]<LN[6] THEN LET LN[9]=LN[9]+1
1685 LET LN[0]=1
1690 GOTO SUBCONTROL
1700 REM 1700,5 "* * *   Page Down"
1705 PAGEDOWN:
1710 LET LOC[1]=LOC[1]+LN[6],LOC[2]=MIN(LOC[2]+LN[6],LOC[3]); REM "set locals"
1715 LET LN[0]=1,LN[7]=1; REM ",LN[8]=1; REM "set array"
1720 GOSUB BUILD
1725 LET LN[8]=MIN(LN[8],LN[9])
1730 GOTO SUBCONTROL
1750 REM 1750,5 "* * *   Page Up"
1755 PAGEUP:
1760 LET LOC[1]=MAX(1,LOC[1]-LN[6]),LOC[2]=MAX(LOC[1],LOC[2]-LN[6]); REM "set locals"
1765 LET LN[0]=1,LN[7]=1; REM "set array"
1770 GOSUB BUILD
1775 LET LN[8]=MAX(1,LOC[2]-LOC[1]+1)
1780 GOTO SUBCONTROL
1800 REM 1800,5 "* * *   Goto End"
1805 GOTOEND:
1810 LET LOC[1]=MAX(1,LOC[3]-(LN[6]-1)),LOC[2]=LOC[3]
1815 LET LN[0]=1,LN[7]=1,LN[8]=MIN(LN[6],LOC[3])
1820 GOSUB BUILD; GOTO CONTROL
1850 REM 1850,5 "* * *   Goto Home"
1855 HOME:
1860 LET LOC[1]=1,LOC[2]=1; REM "set locals"
1865 LET LN[0]=1,LN[7]=1,LN[8]=1; REM "  set array"
1870 GOSUB BUILD; GOTO SUBCONTROL
1900 REM 1900,5 "* * *   goto a specific line "
1905 GOTOLN:
1907 CALL"SOENTCON.HOOKS"+"::SPECIAL_GOTO",ERR=*NEXT;IF X>0 GOTO 1930;REM RRW/RCG SP005
1910 IF LOC[3]<=5 THEN GOTO 1960; REM "Skip if 5 or less"
1915 LET ATGOTO=1,FOLLOW=(LN[8]-1)*2+6,YDISABLE$="D"
1920 LET X0=1,X1=15,X3=1,X1$="###",X4=LEN(X1$),X$="",X9=1,WINDID$="SOENTJW1",SELVAL$=TRAN$+FILL(3),STARTX=10,STARTY=FOLLOW,PROMPT$="Go To Entry:",TEXT_COLOR=2
1925 CALL "GENGOTO.PUB",Y$,STARTX,STARTY,X2,X3,X4,X9,X1$,X,X$,WINDID$,SELVAL$,COMPID$,FILE[ALL],YDISABLE$,PGM(-2),FLD_HLP$,OSGUI$,BUTTON_KEYS$[ALL],PROMPT$,TEXT_COLOR
1930 ON POS(Y$="XMP") GOTO 1935,8454,9990,8454
1935 IF X<1 OR X=LOC[2] THEN GOTO 1960
1940 IF X>LOC[3] THEN LET X=LOC[3]
1945 LET LOC[1]=X,LOC[2]=X
1950 LET LN[0]=1,LN[7]=1,LN[8]=1
1955 GOSUB BUILD
1960 LET ATGOTO=0,YDISABLE$="X"; GOTO SUBCONTROL
1965 EXITGOTO:
1970 LET ATGOTO=0,YDISABLE$="X"; GOTO CONTROL
2000 REM 2000,5 "* * *   Build Display Array"
2005 BUILD:
2010 DIM TD1[4],TD2[2],TD5[10],TD6[1:5,1:4],TDCFF$:FATTR(TDCFF$),TDCFV$:FATTR(TDCFV$)
2015 LET LN[9]=0
2020 DIM LN$[1:LN[6],LN[3]-1]
2025 LET KEY$=TRAN$+FNNUM$(LOC[1],"000")
2030 LET F0=5; READ (FILE[F0],KEY=KEY$,DOM=2040,END=2070,ERR=GENERROR)IOL=SOTDXXX
2035 GOTO 2045
2040 READ (FILE[5],END=2070,ERR=GENERROR)IOL=SOTDXXX
2045 IF TD0$(1,14)<>TRAN$ THEN GOTO 2070; REM IF R0$(15,3)<>"999"
2050 LET LN[9]=LN[9]+1
2055 LET LINE=LN[9]; GOSUB BUILDLINE
2060 IF LN[9]>=LN[6] THEN GOTO 2070
2065 GOTO 2040
2070 LET LN[0]=1
2075 IF TD0$(1,14)<>TRAN$ THEN READ (FILE[5],KEY=TRAN$+"001",ERR=GENERROR)IOL=SOTDXXX
2080 GOSUB CLEANUP
2085 RETURN
2100 REM 2100,5 "----- Build a Line"
2105 BUILDLINE:
2110 LET EXTCOST=0,EXTPRICE=0
2115 IF TD6$(80,1)="2" AND E1<>8 THEN GOSUB SERSETUP
2120 GOSUB SETQTY
2125 IF LEN(CVS(TD6$(27,35),2))>20 THEN LET DESCR$=TD6$(27,17)+"..." ELSE LET DESCR$=TD6$(27,20)
2130 IF TD11$="J" THEN LET IID$=TD7$(1,6)+" "+TD7$(7,6)+FILL(7) ELSE LET IID$=TD6$(1,20)
2135 IF TD6$(80,1)="2" AND POS(STR(E1)="12678")=0 THEN LET EXTPRICE=SER[2],EXTCOST=CUMR7 ELSE IF QTY<>0 THEN LET EXTPRICE=(QTY*TD5[4])-TD5[10] ELSE EXTPRICE=0 FI; LET EXTCOST=TD5[3]*QTY FI
2140 IF TD5[10]<>0 THEN IF TD5[1]<>0 THEN LET U_PRICE=TD5[4]-(TD5[10]/TD5[1]) ELSE U_PRICE=TD5[4]-(TD5[10]/TD4) FI ELSE LET U_PRICE=TD5[4]
2142 CALL "SPHOOKS.PUB::SOUNCALC_PUB",FILE[ALL],INVE$,TD6$(1,20),TD4,TD6$(67,5),RETVAL$,MQTY$,DISP_CONV,DISP_UNIT$
2145 LET LN$[LINE,0]=IID$+" "+FILL(2)+" "+RETVAL$+" "+DISP_UNIT$+" "+FNNUM$(U_PRICE*DISP_CONV,MPRICE$)+" "+FNNUM$(EXTPRICE,MDOLL$)
2148 CALL "SPHOOKS.PUB::SOUNCALC_PUB",FILE[ALL],INVE$,TD6$(1,20),TD5[1],TD6$(67,5),RETVAL$,MQTY$,DISP_CONV,DISP_UNIT$
2150 LET LN$[LINE,1]=FILL(3)+DESCR$+" "+RETVAL$+FILL(36)
2152 IF GUI=0 THEN IF POS("DUKE"=STBL("RCMOD",ERR=*NEXT)) THEN IF TD5[10] THEN IF TD5[9] THEN LET LN$[LINE,1](40)="Disc"+FNNUM$(TD5[9],"###")+"%"+FNNUM$(TD5[10],"-"+MDOLL$(4)) ELSE LET LN$[LINE,1](40)="Discount"+FNNUM$(TD5[10],"-"+MDOLL$(4))
2155 LET LINE=0,IID$="",DESCR$=""; RETURN
2200 REM 2200,5 "----- View a Transaction"
2205 VIEW:
2210 GOSUB DIMVARS
2215 LET F0=5; READ (FILE[5],KEY=TRAN$+FNNUM$(LOC[2],"000"),ERR=GENERROR)IOL=SOTDXXX
2220 GOSUB SETQTY
2225 IF TD6$(80,1)="2" AND E1<>8 THEN GOSUB SERSETUP; LET EXTPRICE=CUMAR6,EXTCOST=CUMAR7
2230 IF TD6$(80,1)<>"2" OR E1=8 THEN LET EXTPRICE=(QTY*TD5[4]),EXTCOST=QTY*TD5[3]
2235 LET IDFLAG$=TD11$; IF IDFLAG$(1,1)="J" THEN LET IDFLAG$="JOB " ELSE IF IDFLAG$(1,1)="K" THEN LET IDFLAG$="KIT " ELSE LET IDFLAG$="ITEM"
2240 CALL "SOENTVEW.PUB",FILE[ALL],O2$,SHOWCOST,EXTPRICE,EXTCOST,IDFLAG$,GL$,MDOLL$,MCOST$,MQTY$,MPRICE$,M2$,TD0$,TD0,TD1$,TD1[ALL],TD2$,TD3,TD5$,TD4,TD5[ALL],TD6$,TD7$,TD8$,TD12$,TD14$,FROM$,OSGUI$,SOENT_VIEW_CONTEXT,SOENT_ADDL_CONTEXT,MENU1$+MENUHLP$,ORDTYPE
2245 GOSUB CLEANUP
2250 GOTO SUBCONTROL
2255 REM "------   Modify Quick Entry"
2260 QUICKCHANGE:
2265 IF QE=-1 THEN GOTO 2275
2270 CALL "GENQKCHG.PUB",ERR=2275,FLD[ALL],QTAB$
2275 GOTO SUBCONTROL
3000 REM 3000 "----- Read Totals Record"
3010 READTOTREC:
3020 LET F0=37; READ (FILE[F0],KEY=TRAN$,ERR=GENERROR)IOL=SOTHXXX
3030 LET SHIPTONUM=TH4,SHIPTONAME$=TH11$(1,30),TOT[ALL]=TH5[ALL],TOT2[ALL]=TH6[ALL],S91$=TH1$(25,6)+TH1$(7,1),PYMTKEY1$=TH8$(27,10),HISTKEY1$=TH8$(37,8),PYMTKEY2$=TH8$(45,10),HISTKEY2$=TH8$(55,8)
3031 SPSHIPTO$=FIELD(THCFF$,"SHIPTO_ID",ERR=3032);REM RRW/RCG SP007
3040 IF CVS(PYMTKEY1$,3)<>"" THEN LET F0=19; READ (FILE[F0],KEY=PYMTKEY1$,DOM=3050,KNUM=0,ERR=GENERROR)IOL=ARCRXXX; TOT[6]=CR2[0]*ORD_CRED_FLAG; GOTO 3060
3050 IF CVS(HISTKEY1$,3)<>"" THEN DIM H9[9],HCFF$:FATTR(HCFF$),HCFV$:FATTR(HCFV$); LET H3=0,F0=82; READ (FILE[F0],KEY=HISTKEY1$,DOM=3060,KNUM=0)IOL=ARHIXXX; LET TOT[6]=H3*ORD_CRED_FLAG; REM "----- In history, reverse CR's are negative"
3060 IF CVS(PYMTKEY2$,3)<>"" THEN LET F0=19; READ (FILE[F0],KEY=PYMTKEY2$,DOM=3070,KNUM=0,ERR=GENERROR)IOL=ARCRXXX; TOT[7]=CR2[0]*ORD_CRED_FLAG; GOTO 3080
3070 IF CVS(HISTKEY2$,3)<>"" THEN DIM H9[9],HCFF$:FATTR(HCFF$),HCFV$:FATTR(HCFV$); LET H3=0,F0=82; READ (FILE[F0],KEY=HISTKEY2$,DOM=3080,KNUM=0)IOL=ARHIXXX; LET TOT[7]=H3*ORD_CRED_FLAG; REM "----- In history, reverse CR's are negative"
3080 IF TH1$(7,1)="Y" THEN LET S6=1 ELSE LET S6=0
3090 RETURN
3100 REM 3100,5 "---- Update Header Info"
3105 HEADER:
3110 LET TASK$="UH"
3115 LET X8$=" "; GOSUB GENERROR
3120 GOSUB READTOTREC
3124 IF SOEH=207 RUN "SOENTHDR.IMP";REM RRW/RCG IMPORT
3125 RUN "SOENTHDR"
3130 RETUPDHDR: REM "Return from Update Header"
3135 IF ABORT THEN GOSUB READTOTREC; GOTO 3145
3140 GOSUB DATA2; GOSUB BUILD
3145 GOTO CONTROL
3150 REM 3150,4 "----- Update Totals"
3154 TOTALS:
3158 LET TASK$="UT",LN[0]=0
3162 LET X8$=" ",X9$=""; GOSUB GENERROR
3166 GOSUB READTOTREC
3170 LET LTITLE$=" Totals Information "
3174 RUN "SOENTTOT"
3178 RETUPDTOT: REM "Return from Update Totals"
3182 IF ABORT THEN GOSUB READTOTREC
3184 GOSUB SETUP; GOSUB BUILD; GOSUB NUMLINES; REM "CWE/RCG - Must refresh due to HLE pymts"
3186 GOSUB 7750
3190 IF RCG_SMALL_RCPT THEN LET RCG_SMALL_RCPT=0; CALL "ARPRI1.RCPT"; GOTO RETONLINE; REM "CWE/RCG - Small Receipt - RCG_SMALL_RCPT gets set in SOENTTOT"
3195 GOTO CONTROL
3200 REM 3200,5 "----- Edit a Line"
3205 EDLINE:
3208 IF QIK_EDIT THEN GOSUB QUICK_ROTATE
3210 LET BUILDWIND=1,NOEDITQTY=0,FOUND_SORI=0
3215 LET SAVEE0=E0,E0=3; REM "set for 'change'"
3220 LET TASK$="EL"
3225 GOSUB DIMVARS
3230 LET F0=5; READ (FILE[F0],KEY=TRAN$+FNNUM$(LOC[2],"000"))IOL=SOTDXXX
3235 IF O2$(54,1)<>"1" THEN GOTO 3295 FI; IF POS(STR(TD0)="49")=0 THEN GOTO 3295
3240 IF TD11$="K" THEN GOTO 3255 ELSE IF CVS(TD13$,3)="" THEN GOTO 3295
3245 IF TD11$="I" THEN EXTRACT RECORD(FILE[27],KNUM=0,KEY=TD13$,DOM=3295)SORI$; LET FOUND_SORI=1; GOTO 3285
3250 IF TD11$<>"K" THEN GOTO 3295
3255 READ (FILE[27],KNUM=1,KEY=TD0$,DOM=NEXT_LINE_KIT_CHECK)
3260 NEXT_LINE_KIT_CHECK:
3265 READ RECORD(FILE[27],END=3295)SORI$; IF SORI.BATCH$+SORI.ORD$+SORI.ENT$<>TD0$ THEN GOTO 3295
3270 IF SORI.STAT$="N" THEN GOTO NEXT_LINE_KIT_CHECK
3275 IF SORI.STAT$="P" THEN LET X9$="Cannot edit quantities on kits where posted returned components exist." ELSE IF SORI.STAT$="A" THEN LET X9$="Cannot edit quantities kits where approved returned components exist."
3280 GOTO 3290
3285 LET X9$=""; IF SORI.STAT$="P" THEN LET X9$="Cannot edit quantities on posted returned items." ELSE IF SORI.STAT$="A" THEN LET X9$="Cannot edit quantities on approved returned items."
3290 IF CVS(X9$,3)<>"" THEN LET NOEDITQTY=1; GOSUB GENERROR
3295 IF POS(STR(TD0)="12678") THEN LET QTY2=TD4 ELSE LET QTY2=TD5[1]
3300 DIM SAVETD5[10]; LET SAVETD5[ALL]=TD5[ALL],SAVETD4=TD4,SAVETD6$=TD6$,SAVETD3=TD3,SAVETD12$=TD12$,SAVENONTAX=ROUND(((TD5[4]*QTY2)-(TD5[10]*(QTY2<>0)))*(TD6[1,1]=0),DOPR)
3305 IF TD6$(80,1)="2" THEN GOSUB SERSETUP; LET EXTPRICE=CUMR6,EXTCOST=CUMR7
3310 IF O2$(2,1)="1" AND TD6$(1,20)<>FILL(20) THEN LET INITEM=1; GOSUB SET_INUPD2; LET INVE.ITEM$=TD6$(1,20),INLD.LOCA$=TD6$(21,6),INVE.ITYP$=TD6$(80,1),E3=NUM(TD6$(80,1)) ELSE LET INITEM=0
3315 IF TD11$="K" THEN LET ORGTD4=TD4,ORGTD5_1=TD5[1],ORGTD5_2=TD5[2],ORGTD5_8=TD5[8]
3320 LET MSG1$="",MSG2$="",ML1=0,ML2=0; GOSUB DISMSG
3325 LET LTITLE$=" Edit Line ",PRICECHANGE=0
3330 IF STBL("QUICK")="ON" AND ORDTYPE<>2 THEN RUN "SOENTLN1.QIK" ELSE RUN "SOENTLN1"
3335 RETEDLINE: REM "Return from edit"
3340 IF O2$(2,1)="1" THEN DIM INVE$:FATTR(INVE$),INLD$:FATTR(INLD$),INUPD1$:FATTR(INUPD1$),INUPD2$:FATTR(INUPD2$),SAVE_INUPD2$:FATTR(INUPD2$)
3345 LET E0=SAVEE0
3350 LET ORGTD4=0,ORGTD5_1=0,ORGTD5_2=0,ORGTD5_8=0
3355 IF ABORT THEN IF POS(X0$="DS")=0 THEN GOSUB READTOTREC; GOTO 3390
3360 IF POS(X0$="DS")=0 THEN GOSUB 7750; LET LINE=LN[8],LN[0]=1; GOSUB BUILDLINE; GOTO 3390 ELSE GOSUB 7750
3365 IF ABORT THEN GOSUB READTOTREC; GOSUB 7750; GOTO 3380
3370 IF LOC[2]+1>LOC[3] THEN IF GUI THEN GOSUB DESTROY_GUI_WINDOW ELSE PRINT 'POP', FI; GOSUB 7750; GOSUB CLEANUP; GOTO GOTOEND
3375 LET LOC[2]=LOC[2]+1,LN[8]=LN[8]+1; IF BUILDWIND<>2 THEN GOSUB DISENT; GOTO 3215
3380 LET LOC[1]=LOC[2],LN[8]=1,LN[7]=1,LN[0]=1; GOSUB BUILD
3385 IF BUILDWIND=2 AND LOC[2]+1<=LOC[3] THEN LET BUILDWIND=1,LN[0]=2; GOSUB GENLINE; LET LN[0]=0; GOSUB DISENT; GOTO 3215
3390 GOSUB CLEANUP
3395 IF QIK_NEXT THEN LET QIK_NEXT=0; GOTO APPEND
3399 GOTO CONTROL
3400 REM 3400,5 "----- Append a Line"
3405 APPEND:
3408 IF SOEH=207 IF SOED.CUST$+SOED.PO$=SOEH.CUST$+SOEH.PO$ SCITEM$=SOED.ITEM$,SCQTY=SOED.QTY,SCUNIT$=SOED.UNITS$,SCPRICE=SOED.PRICE,SCGL$=SOED.GL$,SCPRID$=SOED.PRID$,SCTD990$=SOED.RMA$+SOED.SERIAL$+SOED.LINE$,SCRMA$=SOED.RMA$,SCSERIAL$=SOED.SERIAL$,SCPOLINE$=SOED.LINE$;GOTO 3410 ELSE SCITEM$="",SCQTY=0,SCUNIT$="",SCPRICE=0,SCGL$="",SCPRID$="",SCTD990$="",SCRMA$="",SCSERIAL$="",SCPOLINE$="";GOTO NEXTTRANS;REM RRW/RCG IMPORT SCTD990$ NOW BROKEN UP 121615
3409 IF SOEH=207 SCGLCODE$="";IF STBL("RCCSTNAM",ERR=*NEXT)="BRK" AND LEN(SOED.GL$)=2 SCGLCODE$=SOED.GL$,SOED.GL$="";REM RRW/RCG IMPORT BRK
3410 LET BUILDWIND=1,NOEDITQTY=0,FOUND_SORI=0
3415 IF LOC[3]+1>LOC[0] THEN LET X9$="Maximum Number of Lines is 999"; GOSUB GENERROR; GOTO 3505
3420 LET MSG1$="",MSG2$="",ML1=0,ML2=0; GOSUB DISMSG
3422 IF STBL("QUICK")="ON" AND ORDTYPE<>2 THEN GOSUB QUICK_ROTATE
3425 LET SLOC2=LOC[2],LOC[2]=LOC[3]+1
3430 LET TASK$="AL",LTITLE$=" Append Line "
3435 GOSUB DIMVARS
3440 IF O2$(2,1)="1" THEN DIM INVE$:FATTR(INVE$),INLD$:FATTR(INLD$),INUPD1$:FATTR(INUPD1$),INUPD2$:FATTR(INUPD2$),SAVE_INUPD2$:FATTR(INUPD2$)
3445 IF STBL("QUICK")="ON" AND ORDTYPE<>2 THEN RUN "SOENTLN1.QIK" ELSE RUN "SOENTLN1"
3450 RETAPPLINE: REM "Return from Append"
3451 IF STBL("QUICK")="ON" THEN DIM TEMP$(50); LET TEMP$(1,50)=STBL("OPTIONS"); LET O2$(35,1)=TEMP$(35,1); REM "Restore Options from QuickSale"
3452 IF SOEH=207 DIM SOED$:FATTR(SOED$);READ RECORD(FILE[SOED],END=3453)SOED$;REM RRW/RCG IMPORT
3454 IF SOEH=207 GOTO APPEND;REM RRW/RCG IMPORT
3455 IF ABORT THEN GOTO 3475
3460 IF LOC[0]>LOC[3]+1 THEN LET LOC[3]=LOC[3]+1 FI; GOSUB 7750; GOSUB DISENT; GOSUB CLEANUP
3465 IF LOC[3]>=LOC[0] THEN IF GUI THEN GOSUB DESTROY_GUI_WINDOW ELSE PRINT 'POP', FI; GOSUB 7750; GOTO 3480
3470 IF BUILDWIND<>2 THEN GOTO 3420 ELSE GOTO 3480
3475 LET LOC[2]=LOC[3]; GOSUB READTOTREC; GOSUB 7750
3480 LET LOC[1]=MAX(1,LOC[3]-4); GOSUB BUILD
3485 LET LN[0]=1,LN[7]=1,LN[8]=LN[9]
3490 IF BUILDWIND=2 THEN LET BUILDWIND=1,LN[0]=2; GOSUB GENLINE; LET LN[0]=0; GOTO 3420
3495 GOSUB CLEANUP
3500 IF O2$(2,1)="1" THEN DIM INVE$:FATTR(INVE$),INLD$:FATTR(INLD$),INUPD1$:FATTR(INUPD1$),INUPD2$:FATTR(INUPD2$),SAVE_INUPD2$:FATTR(INUPD2$)
3505 IF QIK_EDIT THEN LET LOC[2]=QIK_EDIT,Y$=""; GOTO EDLINE
3510 GOTO CONTROL
3600 REM 3600,5 "----- Delete a Line"
3605 DELLINE:
3606 CALL "SOENTCON.HOOKS"+"::BEFORE_DELLINE",ERR=*NEXT;IF X9$<>"" GOSUB CLEAR_GLOBAL;GOSUB GENERROR;RETURN ELSE IF X8$<>"" LET X9$=X8$,X8$="";GOSUB GENERROR;REM RRW/RCG BEFORE DELETING LINE DO EXTRA CHECKS; PASS BACK X9$ WITH ERROR MESSAGE TO DENY DELETION OF LINE, PASS X8$ BACK FOR WARNING ONLY BUT ALLOW DELETE 060515
3610 IF LOC[3]<=1 THEN LET X9$="Cannot Delete Last Line of Order"; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO 3720
3615 PRECISION MXPR
3620 LET F0=5; READ (FILE[F0],KEY=TRAN$+FNNUM$(LOC[2],"000"),ERR=GENERROR)IOL=SOTDXXX
3625 IF POS(STR(TH0)="479") AND O2$(55,1)="1" THEN GOSUB CHECK_RETURNS; IF RTN_OK=0 THEN LET X9$="Cannot delete lines with approved or posted returned items."; GOSUB GENERROR; RETURN
3630 IF POS(STR(TD0)="12678") THEN LET QTY2=TD4 ELSE LET QTY2=TD5[1]
3635 DIM SAVETD5[10],SAVETD6[1:5,1:4]; LET SAVETD5[ALL]=TD5[ALL],SAVETD6[ALL]=TD6[ALL],SAVETD4=TD4,SAVETD6$=TD6$,SAVETD4$=TD4$,SAVETD5$=TD5$,SAVETD1$=TD1$,SAVETD7$=TD7$,SAVENONTAX=ROUND(((QTY2*TD5[4])-(TD5[10]*(QTY2<>0)))*(TD6[1,1]=0),DOPR)
3640 LET SAVEE0=E0
3645 LET O7=3,X8$="Entry Number "+FNNUM$(LOC[2],"000"); GOSUB CLEAR_GLOBAL; GOSUB GENERROR; IF Y$<>"D" THEN GOTO 3720
3650 LET TASK$="DL",NOPOP=1
3655 RUN "SOENTUPD"
3660 RETDELLINE:
3665 LET E0=SAVEE0
3670 IF NOPOP=1 THEN LET NOPOP=0 ELSE IF GUI THEN GOSUB DESTROY_GUI_WINDOW ELSE PRINT 'POP',
3675 IF GUI=0 THEN PRINT 'BACKGR'+STBL("FBKG"),'DEFAULT',
3680 IF ABORT THEN GOTO 3720
3685 GOSUB 7750; REM "refresh totals"
3690 LET LOC[3]=LOC[3]-1
3695 LET LOC[1]=MIN(LOC[1],LOC[3])
3700 LET LOC[2]=MIN(LOC[2],LOC[3])
3705 LET LN[0]=1
3710 GOSUB BUILD
3715 LET LN[8]=MIN(LN[8],LN[9])
3720 GOTO CONTROL
3800 REM 3800,3 "----- Insert a Line"
3803 INSLINE:
3806 IF LOC[3]+1>LOC[0] THEN LET X9$="Maximum Number of Lines Reached.  Cannot Insert."; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO 3839
3809 LET MSG1$="",MSG2$="",ML1=0,ML2=0; GOSUB DISMSG
3812 LET LTITLE$=" Insert Line ",TASK$="IL"
3815 GOSUB DIMVARS
3818 IF O2$(2,1)="1" THEN DIM INVE$:FATTR(INVE$),INLD$:FATTR(INLD$),INUPD1$:FATTR(INUPD1$),INUPD2$:FATTR(INUPD2$),SAVE_INUPD2$:FATTR(INUPD2$)
3821 IF STBL("QUICK")="ON" AND ORDTYPE<>2 THEN RUN "SOENTLN1.QIK" ELSE RUN "SOENTLN1"
3824 RETINSLINE: REM "return from insert"
3827 IF ABORT THEN GOSUB READTOTREC; GOTO 3839
3830 GOSUB 7750
3833 LET LOC[3]=LOC[3]+1
3836 GOSUB BUILD
3839 GOSUB CLEANUP
3842 IF O2$(2,1)="1" THEN DIM INVE$:FATTR(INVE$),INLD$:FATTR(INLD$),INUPD1$:FATTR(INUPD1$),INUPD2$:FATTR(INUPD2$),SAVE_INUPD2$:FATTR(INUPD2$)
3845 GOTO CONTROL
3848 REM "* * *  Next Transaction"
3851 NEXTTRANS: IF INHOUSE=0 THEN GOTO 3860
3854 IF NODISP THEN LET NODISP=0; GOTO 3860; REM "Returned From SOENTTOT"
3857 IF (TH0=3 OR TH0=4) AND LOC[3]>0 THEN LET NODISP=1; RUN "SOENTTOT"
3860 LET X8$=" "; GOSUB GENERROR
3863 DIM X$(15); LET X$(1,12)=STBL("USERID"),X$(13,3)=STBL("SORTSEQ")
3866 REMOVE (FILE[16],KEY=X$,ERR=3869)
3869 IF GUI THEN GOSUB CLEAR_GUI_SCREEN ELSE PRINT 'CF',
3871 CALL "SOENTCON.HOOKS"+"::NEXTTRANS",ERR=*NEXT; IF POS_NETDUE THEN LET TASK$="T",Y$=""; GOTO 1580; REM RRW/RCG
3872 DIM TOT[10],TOT2[1:5,1:4]
3875 GOTO ABANDON
3900 REM 3900,4 "----- Make it Live"
3904 LIVE:
3908 IF POS(STR(TH0)="89")=0 THEN GOTO SUBCONTROL
3909 IF TH0<>8 AND TH0<>9 GOTO 3928;REM SP003 CHANGE STATUS RRW/RCG
3910 IF SPO2$(39,1)<>"1" THEN GOTO 3912
3911 IF CRED_LIM THEN LET O7=0,X9$="Credit limit exceeded."; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; CALL "SOTATTLE.HOOKS"+"::CREDIT_LIM",ERR=*NEXT
3912 IF GUI=0 THEN PRINT @(1,21),FILL(78),@(1,22),FILL(78)
3916 IF TH0=9 THEN LET TYPE$="Miscellaneous Credit? "; GOTO 3928 ELSE LET TYPE$="New? "; REM "----- No credit check when turning RMA to Misc. Credit"
3918 LET CREDLIM=C3-C1[1]-C1[2]-C1[3]-C1[4]-C1[5]-C1[6]-C1[7]; REM "credit left"
3919 IF POS("DUKE"=STBL("RCMOD",ERR=*NEXT)) THEN CALL "SOENT.HOOKS"+STBL("RCMOD")+"::GET_OTHER_COMPANY_BALANCE",ERR=*NEXT,FILE[222],C0$,CREDLIM
3920 CALL "SOCRLCK1.PUB",C0$,CREDLIM,(37),(19),FILE[ALL],TH0$(1,14),SOTH$,ARCR$
3921 IF POS("DUKE"=STBL("RCMOD",ERR=*NEXT)) THEN CALL "SOCRLCK1.PUB",C0$,CREDLIM,(220),(221),FILE[ALL],FILL(14),SOTH$,ARCR$
3924 IF CREDLIM-(TH5[0]+TH5[2]+TH5[9]+TH5[3]+TH5[4])<0 AND SPO2$(39,1)<>"1" THEN CALL "SOENTCON.HOOKS"+"::EXTRA_CREDIT_LIMIT",ERR=*NEXT; IF SP039_OK=0 THEN LET Y$="S"; GOTO 8452 ELSE GOTO 3926
3925 IF CREDLIM-(TH5[0]+TH5[2]+TH5[9]+TH5[3]+TH5[4])<0 THEN LET X9$="Warning: Changing quote to live order will exceed customer's credit limit."; GOSUB CLEAR_GLOBAL; GOSUB GENERROR
3926 LET CREDLIM=99999999
3928 IF GUI THEN LET O7=10,X9$="Change Status to "+TYPE$; GOSUB GENERROR; IF Y$="E" THEN LET X$="YES" ELSE LET X$="NO " FI; GOTO 3948
3932 LET X8$="Change Status to "+TYPE$; GOSUB GENERROR
3936 LET X0=22,X1=53+(8*(TH0=9)),X3=5,X1$="",X4=3,X$="",Y$=""
3940 GOSUB GENINPUT
3944 IF Y$="U" THEN GOTO 3936
3948 IF X$(1,1)="N" THEN GOTO 4048
3949 IF POS("DUKE"=STBL("RCMOD",ERR=*NEXT)) THEN IF TH0=8 THEN CALL "SOENTCON.HOOKS"+"::CHECK_QTY_FOR_LIVE",ERR=*NEXT; IF X9$<>"" THEN LET X$="NO "; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO 4048
3952 PRECISION MXPR; GOSUB DIMVARS
3953 IF TH0<>8 AND TH0<>9 CALL "SOENTCON.HOOKS"+"::DO_CHANGE_STATUS",ERR=*NEXT;IF X9$="" GOTO AFTER_CHANGE_STATUS ELSE GOSUB CLEAR_GLOBAL;GOSUB GENERROR;GOTO 4048;REM RRW/RCG SP003 PASS BACK ERROR IN X9$ OTHERWISE SUCCESS
3956 LET F0=5; READ (FILE[5],KEY=TRAN$+FILL(3),DOM=3960)
3960 LET F0=5; READ (FILE[5],END=4012,ERR=GENERROR)IOL=SOTDXXX
3962 IF TD0$(1,14)<>TRAN$ THEN GOTO 4012
3964 IF TH0=9 THEN LET TD0=4; WRITE (FILE[5],ERR=GENERROR)IOL=SOTDXXX; GOTO 4004; REM "----- Skip inventory and kit updates, just changing status so credit can be posted"
3972 IF KITON AND TD11$="K" THEN GOSUB UPDINVEX
3973 IF (DO2$(66,1)="1" AND ORDTYPE=1) THEN IF TH0=8 THEN LET TH1$(17,8)=TD0$(7,8),TH1[2]=TD1[3],TD1$(17,8)=TD0$(7,8),TD1[2]=TD1[3]
3974 IF POS("DUKE"=STBL("RCMOD",ERR=*NEXT)) THEN IF (DO2$(66,1)="1" AND ORDTYPE=1) THEN IF TH0=8 THEN IF TH1$(17,8)<>FILL(8) THEN LET TH1$(17,1)=STBL("CID")
3976 LET TD0=1,TD9$="",TD10$=" "; IF CVS(TD1$(17,8),3)="" THEN LET TD1$(17,8)=FILL(8),TD1[2]=-1 FI; WRITE (FILE[5],ERR=GENERROR)IOL=SOTDXXX
3980 IF O2$(2,1)<>"1" OR TD6$(1,20)=FILL(20) THEN GOTO 4004; REM "OR R0$(15,3)="999"
3984 IF KITON AND TD11$="K" THEN GOTO 4004
3988 GOSUB SET_INUPD
3992 LET INUPD1.TASK$="QT"; GOSUB INUPD; LET INUPD1.TASK$="CT"; GOSUB INUPD; LET INUPD1.TASK$="UC"; GOSUB INUPD
3996 LET INUPD1.TASK$="S1"; GOSUB INUPD
4000 READ (FILE[41],ERR=4004)
4004 GOTO 3960
4008 READ (FILE[37],KEY=TD0$(1,14),ERR=GENERROR)IOL=SOTHXXX
4011 CALL "SOTATTLE.HOOKS"+"::STATUS_CHANGE_PREP",ERR=*NEXT;REM SP001
4012 IF TH0=9 THEN LET TH0=4 ELSE LET TH0=1,TH9$="",TH10$=""; IF CVS(TH1$(17,8),3)="" THEN LET TH1$(17,8)=FILL(8),TH1[2]=-1
4016 WRITE (FILE[37],ERR=GENERROR)IOL=SOTHXXX
4017 CALL "SOTATTLE.HOOKS"+"::STATUS_CHANGE",ERR=*NEXT;REM SP001 7.6 WAS MISTYPED AS HOOKS_SOENTCON S/B HOOKS_TATTLE
4020 IF TH0=1 THEN LET E1=1,TD0=1,X0$="E" ELSE LET E0=4,E1=4,X0$="F"; REM "----- Done after a quote is made live so we treat it like a new order "****************
4023 AFTER_CHANGE_STATUS:REM SP003 RRW/RCG 021615
4024 LET F0=5; READ (FILE[5],KEY=TRAN$+"001",ERR=GENERROR)IOL=SOTDXXX
4028 READ (FILE[41],ERR=4032)
4032 GOSUB DATA
4036 GOSUB GUI_BUTTONS
4040 GOSUB CLEANUP
4044 GOSUB RESTART
4048 GOTO CONTROL
4052 RESTART:
4056 LET PARAM=3,STATUS=-2
4060 CALL "ARRESTRT.PUB",FILE[15],F1,BATCH$,TERM$,MSG$,PICKS$,PARAM,STATUS
4064 RETURN
4100 REM 4100,5 "----- UPDATE INVEX FOR KITS WHEN TURNED TO LIVE"
4105 UPDINVEX:
4110 IF KITON=0 THEN GOTO 4165
4115 DIM KT1[4],KT2[1],KTCFF$:FATTR(KTCFF$),KTCFV$:FATTR(KTCFV$)
4120 LET F0=SOKT; READ (FILE[F0],KEY=TD0$(1,17),DOM=4125)IOL=SOKTXXX
4125 LET F0=SOKT; READ (FILE[F0],END=4165,ERR=GENERROR)IOL=SOKTXXX
4130 IF KT0$(1,17)<>TD0$(1,17) THEN GOTO 4165
4135 LET KIT_MULT=KT1[0]
4140 GOSUB SET_KIT_INUPD
4145 LET INUPD1.TASK$="QT"; GOSUB INUPD; LET INUPD1.TASK$="CT"; GOSUB INUPD; LET INUPD1.TASK$="UC"; GOSUB INUPD
4150 LET INUPD1.TASK$="S1"; GOSUB INUPD
4155 READ (FILE[41],ERR=4160)
4160 GOTO 4125
4165 LET F0=41; READ (FILE[41],ERR=4170)
4170 RETURN
4200 REM 4200,5 "----- DIM Variables for Line Entry"
4205 DIMVARS:
4210 IF LEN(TD0$)=0 THEN DIM TD0$(17)
4215 IF CF=0 THEN LET CF=1
4220 DIM TD5[10],TD6[1:5,1:4],TD5$(36),TD6$(86),TD7$(13),TD11$(1),TD12$(16),TD13$(6),TD14$(6),TDCFF$:FATTR(TDCFF$),TDCFV$:FATTR(TDCFV$)
4225 LET TD8$=TD8$(1,26)
4230 DIM SER[3],SAVETD5[10],SAVETD6[1:5,1:4]; LET SAVENONTAX=0
4235 DIM_SOLS: DIM LS1[4],LSCFF$:FATTR(LSCFF$),LSCFV$:FATTR(LSCFV$),SOLS$:FATTR(SOLS$)
4240 LET TD4=0,E3=4,TD5[8]=1,TD6$(21,6)=LO0$,X7$="",TD3=0,X8=0,Y$="",C1=0,GL$=FILL(2)
4245 LET ADDL=0,ADDL2=0,CUMR6=0,CUMR7=0,TD4=1,PRICECHANGE=1
4250 IF O2$(11,1)="1" THEN DIM XT$[1:99]
4255 LET TD1[ALL]=TH1[ALL],TD2[ALL]=TH2[ALL],TD1$=TH1$,TD2$=TH2$,TD3$=TH3$
4260 LET TD1$(31,12)=FILL(12),TD1$(37,4)=TH5$(1,4); IF O2$(52,1)="1" THEN IF DISCTYPEDF$="%" THEN LET TD1$(10,1)="1" ELSE LET TD1$(10,1)="0"
4265 LET TD4$=TH4$,TD8$(2,25)=TH8$(2,25),TD9$=TH9$,TD10$=TH10$
4270 LET TD0=TH0,TD0$(1,14)=TH0$
4275 RETURN
4280 REM "----- Cleanup Uneeded Data"
4285 CLEANUP:
4290 DIM TD5[10],TD6[1:5,1:4],TD5$(0),TD6$(86),TD7$(0),TD11$(0),TD12$(16),TD13$(6),TD14$(6)
4295 DIM SAVETD5[0],SAVETD6[0],SER[0],P0$(0),P5$(0)
4300 DIM DKEY$(0),DDESC$(0),DD1$(0),XT$[0]
4305 LET C=0,C2=0,P=0,TD6$(1,26)=FILL(20)+LO0$
4310 RETURN
4400 REM 4400,5 "----- Serial Number Stuff"
4405 SERSETUP:
4410 DIM SER[3],LS1[4],LSCFF$:FATTR(LSCFF$),LSCFV$:FATTR(LSCFV$),SOLS$:FATTR(SOLS$)
4415 LET SER[0]=1,SER[3]=0,E8$="",CUMR6=0,CUMR7=0
4420 PRECISION MXPR
4425 LET AR7$=TD0$(1,17)+FNNUM$(SER[0],"000000")
4430 LET F0=21; READ RECORD(FILE[F0],KNUM=0,ERR=GENERROR,KEY=AR7$,DOM=4445)SOLS$
4435 LET SER[0]=SER[0]+1,SER[3]=SER[3]+1,CUMR6=CUMR6+SOLS.UPRC,CUMR7=CUMR7+SOLS.UCST
4440 GOTO 4425
4445 IF CUMR6>0 THEN LET CUMR6=CUMR6-TD5[10] FI; LET SER[2]=CUMR6; REM 
4450 RETURN
4500 REM 4500,5 "----- READ Additonal Description"
4505 READDESCR:
4510 DIM DD1$(3500)
4515 LET ADDL=99
4520 FOR I=1 TO 99
4525 DIM DDESC$(35)
4530 LET F0=4; READ (FILE[F0],KEY=TD0$(1,17)+FNNUM$((I),"00"),DOM=4545,END=4545)IOL=SODEXXX
4535 LET DD1$(I*35-34,35)=DDESC$
4540 GOTO 4550
4545 LET ADDL=I-1; EXITTO 4555
4550 NEXT I
4555 RETURN
4560 REM "Display Entry"
4565 DISENT:
4570 IF GUI THEN PRINT (OSGUI.CHAN)'CONTEXT'(OSGUI.CUR_CONTEXT[1]),'TITLE'(2080,FNNUM$(LOC[2],MASK$)),'TITLE'(2090,FNNUM$(LOC[3],MASK$)),'CONTEXT'(OSGUI.CUR_CONTEXT[OSGUI.CONTEXT_POINTER]) ELSE PRINT STBL("FTXT"),'SF',@(66,16),FNNUM$(LOC[2],MASK$),@(73),FNNUM$(LOC[3],MASK$),
4575 RETURN
4580 DISMSG:
4585 IF GUI THEN PRINT (OSGUI.CHAN)'CONTEXT'(OSGUI.CUR_CONTEXT[1]),'TITLE'(100,""),'CONTEXT'(OSGUI.CUR_CONTEXT[OSGUI.CONTEXT_POINTER]) ELSE PRINT @(1,21),FILL(78),@(1,22),FILL(78),
4590 IF GUI=0 THEN PRINT STBL("FBX"),@(INT((80-ML1)/2),21),MSG1$,
4595 IF GUI=0 THEN PRINT STBL("FBX"),@(INT((80-ML2)/2),22),MSG2$,
4600 LET X8$=""
4605 RETURN
4610 SETQTY: IF POS(STR(TD0)="12678") THEN LET QTY=TD4 ELSE LET QTY=TD5[1] FI; RETURN
4700 REM 4700,5 "----- Additonal Description"
4705 ADDITIONAL_DESC:
4708 IF O2$(11,1)<>"1" THEN GOTO CONTROL
4710 DIM DDESC$(35),XT$[1:99],SAVEXT$[1:99]
4715 LET START_LINE=1,ADDL_CALL=1
4720 FOR I=1 TO 99; IF CVS(XT$[I],3)<>"" THEN EXITTO 4740 FI; NEXT I
4725 FOR I=1 TO 99; DIM DDESC$(35)
4730 READ (FILE[4],KEY=TRAN$+STR(LOC[2]:"000")+STR(I:"00"),DOM=4735,ERR=GENERROR)IOL=SODEXXX
4735 LET XT$[I]=DDESC$; NEXT I
4740 LET SAVEXT$[ALL]=XT$[ALL]
4750 IF POS(Y$="PJQ")=0 THEN CALL "GENADDL.PUB",XT$[ALL],14,7,Y$,START_LINE,OSGUI$,99
4755 FOR I=1 TO 10; IF XT$[I]<>SAVEXT$[I] THEN EXITTO 4760 FI; NEXT I; GOTO 4765
4760 LET O7=2,X8$="To save additional descriptions."; GOSUB GENERROR
4765 IF Y$="P" THEN CALL "SOENTUPD::ADDL_DESC",FILE[ALL],OSGUI$,TRAN$+STR(LOC[2]:"000"),XT$[ALL],ADDL_CALL
4770 LET ADDL_CALL=0
4785 GOTO CONTROL
4900 REM 4900,5
4905 SET_KIT_INUPD:
4910 LET INUPD1.ITEM$=KT1$(1,20)
4915 LET INUPD1.LOCA$=KT1$(21,6)
4920 LET INUPD1.ITYP$="1"
4925 LET INUPD1.LOTS=0
4930 LET INUPD1.DEL=0
4935 LET INUPD1.UNIT$=KT3$(1,5)
4940 LET INUPD1.OQTY1=TD4*KIT_MULT,INUPD1.OQTY2=TD5[1]*KIT_MULT,INUPD1.OQTY3=0
4945 LET MSG$=""
4950 LET INUPD1.CONV=KT2[0]
4955 LET INUPD1.UCST=KT1[1]/KT2[0]
4960 LET INUPD1.ECST=KT1[0]*KT1[1]/KT2[0]*TD5[1]*TD5[3]/TD5[8]
4965 LET INUPD1.SUCST=KT1[1]
4970 LET INUPD1.SECST=KT1[0]*KT1[1]*TD5[1]*TD5[3]
4975 LET INUPD1.SORTNITM$=O2$(54,1)
4980 RETURN
5000 REM 5000,5 "----- Online Pick Slip/Invoice"
5005 ONLINE:
5010 LET PICK=0,INVC=0,PACK=0,CONFIRM=0,INV_CONFIRM=0,Y$="",YDISABLE$="D",INFO=0
5015 IF TASK$="O" AND POS(STR(TH0)="126") AND O2$(14,1)="1" THEN LET PICK=1
5016 IF TASK$="F" AND POS(STR(TH0)="126") THEN LET CONFIRM=1
5017 IF TASK$="F" AND POS(STR(TH0)="35") THEN LET CONFIRM=1,INV_CONFIRM=1; REM "CWE/RCG"
5020 IF TASK$="O" AND POS(STR(TH0)="345789") AND O2$(13,1)="1" THEN LET INVC=1
5025 IF TASK$="P" AND POS(STR(TH0)="35") AND O2$(39,1)="1" THEN LET INVC=0,PACK=1
5030 IF PICK=0 AND INVC=0 AND PACK=0 AND CONFIRM=0 THEN GOTO 5115
5035 IF PICK THEN IF C4$(7,1)="Y" THEN IF CODHOLD=0 OR (CODHOLD AND TM1[1]+TM1[2]+TM1[3]<>0) THEN LET X9$="Customer "+TD2$+" Is on Credit Hold.  Cannot Print Picking Slip."; GOSUB GENERROR; GOTO 5115
5040 IF PICK THEN LET X8$="Print On-Demand Picking Slip? (Y/N)"
5042 IF CONFIRM THEN LET X8$="Print On-Demand Confirmation? (Y/N)"
5045 IF PACK THEN LET X8$="Print On-Demand Packing List? (Y/N)"
5050 IF INVC THEN IF E1=8 THEN LET X8$="Print Price Quote? (Y/N)" ELSE IF POS(STR(TH0)="79") THEN LET X8$="Print On-Demand RMA?" ELSE LET X8$="Print On-Demand Invoice? (Y/N)"
5055 IF GUI THEN LET X9$=X8$,X8$="",O7=10; GOSUB GENERROR; IF Y$="E" THEN LET X$="YES" ELSE LET X$="NO " FI; GOTO 5085
5060 IF GUI=0 THEN PRINT @(1,21),FILL(78),@(1,22),FILL(78)
5062 IF INVC THEN CALL "SOENTCON.HOOKS"+"::ONLINE",ERR=*NEXT; IF POS_NETDUE THEN LET TASK$="T",Y$=""; GOTO 1580;  REM CWE/RCG
5064 HOOK_ONLINE_PROMPT_SKIP=1;CALL "SOENTCON.HOOKS"+"::CHECK_SKIP_ONLINE_PROMPT",ERR=*NEXT;IF HOOK_ONLINE_PROMPT_SKIP X$="YES";GOTO 5076;REM RRW/RCG
5065 GOSUB GENERROR
5070 LET X0=22,X1=60,X3=5,X1$="",X4=3,X$="NO ",Y$=""
5075 GOSUB GENINPUT
5080 IF Y$="U" THEN GOTO 5115
5085 ON POS(X$(1,1)="YN") GOTO 5070,5090,5115
5090 LET TASK$="RO"
5095 IF PICK OR PACK THEN LET TDTD0$=TH0$(1,14),Y$="",INFO=0,TDTD0=TH0
5096 IF PICK OR PACK CALL "SOTATTLE.HOOKS"+"::ONLINE_PICK_PACK",ERR=*NEXT;REM RRW/RCG SP001
5100 IF INVC OR PACK OR CONFIRM THEN LET THTH0$=TH0$,Y$="",INFO=0,THTH0=TH0
5105 IF GUI THEN GOSUB CLEAR_GUI_SCREEN ELSE PRINT 'BACKGR'+STBL("FBKG"),'DEFAULT','CF',
5110 IF HOOK_OVERRIDE_FORM_PROGRAM$<>"" HOOKX$=HOOK_OVERRIDE_FORM_PROGRAM$,HOOK_OVERRIDE_FORM_PROGRAM$="";RUN HOOKX$,ERR=5111 ;REM RRW/RCG SP011
5111 IF PICK THEN RUN "SOPIK" ELSE IF CONFIRM THEN LET SOONLINE=1; RUN "ARPROI" ELSE IF INVC THEN LET SOONLINE=1; RUN "ARPROI" ELSE RUN "SOPAK"
5115 LET YDISABLE$="X"
5120 GOTO CONTROL
5125 RETONLINE: REM "return from online print"
5130 DIM PICK$(0); IF GUI THEN GOSUB ENABLE_FIELDS ELSE PRINT 'BACKGR'+STBL("FBKG"),'DEFAULT',
5135 IF F<>0 THEN CLOSE (F,ERR=5140); LET F=0
5140 IF O2$(67,1)<>"1" THEN LET U1$="",YDISABLE$="X"; GOTO 8470; REM "Abandon- Next Transaction"
5145 GOSUB DATA; LET U1$="",YDISABLE$="X",TASK$=""; LET LN[0]=1; GOTO CONTROL; REM "Back to HLE - Stay in current transaction"
5200 RECALC: REM 5200,5 "---- Recalculate Prices
5202 IF SOENTCPR_SKIP_PRICE X$="YES"; GOTO 5250;REM RRW/RCG SP000 REBUILD TOTALS ONLY
5205 IF TH0=5 OR O2$(2,1)<>"1" THEN GOTO CONTROL
5210 LET MSG1$=" ",MSG2$=" "; GOSUB DISMSG
5215 LET X8$="Recalculate Prices? (Y/N)"
5220 IF GUI THEN LET X9$=X8$,X8$="",O7=10; GOSUB GENERROR; IF Y$="E" THEN LET X$="YES" ELSE LET X$="NO " FI; GOTO 5245
5225 GOSUB GENERROR
5230 LET X0=22,X1=57,X3=5,X1$="",X4=3,X$="NO ",Y$=""
5235 GOSUB GENINPUT
5240 IF Y$="U" THEN GOTO RECALC_DONE
5245 IF X$(1,1)="N" THEN GOTO RECALC_DONE
5248 REM "CWE/RCG - Gets calculated in 5250; LET PYMTAMT1=TOT[6],PYMTAMT2=TOT[7]
5250 CALL "SOENTCPR.PUB"
5252 REM LET TOT[6]=PYMTAMT1,TOT[7]=PYMTAMT2
5255 GOSUB DATA2
5260 GOSUB BUILD
5262 SOENTCPR_SKIP_PRICE=0;REM RRW/RCG SP000
5265 RECALC_DONE:
5270 GOTO CONTROL
5300 TRACKING_NUMBERS: REM 5300,5 "---- Tracking Number Input
5305 IF O2$(45,1)<>"1" OR TH0=8 THEN GOTO CONTROL
5310 CALL "SOTRACK.PUB::INIT",PASS$
5315 LET PASS.SOTR=SOTR
5320 LET PASS.ARSH=22
5325 LET PASS.BATCH$=TH0$(1,6)
5330 LET PASS.ORDER$=TH0$(7,8)
5335 LET PASS.DEFAULT_METHOD$=TH7$(1,6)
5340 CALL "SOTRACK.PUB::TRACKING_NUMBERS",FILE[ALL],PASS$,SOTR$,"E",OSGUI$,SOTRACK_MAIN_CONTEXT,SHCFF$,SHCFV$,"",""
5345 GOTO CONTROL
5500 REM 5500,5 "----- Set Edit Template"
5505 SET_INUPD2:
5510 IF TASK$<>"EL" THEN GOTO 5525
5515 READ RECORD(FILE[2],KEY=TD6$(1,20),DOM=5520,ERR=GENERROR)INVE$
5520 READ RECORD(FILE[41],KEY=TD6$(1,26),DOM=5525,ERR=GENERROR)INLD$
5525 LET INUPD2.ITEM$=TD6$(1,20)
5530 LET INUPD2.LOCA$=TD6$(21,6)
5535 LET INUPD2.LOTN$=FILL(16)
5540 LET INUPD2.SERN$=FILL(35)
5545 LET INUPD2.CMNT$=FILL(35)
5550 LET INUPD2.SREP$=TH3$(1,3)
5555 LET INUPD2.GLCD$=INLD.GLCD$
5560 LET INUPD2.ITYP$=TD6$(80,1)
5565 LET INUPD2.LOTS=NUM(TD6$(72,1))
5570 LET INUPD2.DEL=0
5575 LET INUPD2.PRID$=TD6$(81,6)
5580 LET INUPD2.CLVL$=TH13$
5585 LET INUPD2.CUST$=TD2$
5590 LET INUPD2.ODAT=TH1[3]; REM ORDER DATE
5595 IF INUPD2.ODAT=-1 THEN LET INUPD2.ODAT=TH1[2]; REM INVOICE DATE
5600 IF INUPD2.ODAT=-1 THEN LET INUPD2.ODAT=TH1[1]; REM SHIP DATE
5605 IF INUPD2.ODAT=-1 THEN LET INUPD2.ODAT=WKSDATE; REM WORKSTATION DATE
5610 IF TH1[2]<>-1 THEN LET INUPD2.IVDAT=TH1[2]
5615 IF TH1[1]<>-1 THEN LET INUPD2.RDAT=TH1[1]
5620 LET INUPD2.TPER=NUM(TD4$)
5625 LET DATE$=DATE(INUPD1.ODAT:STBL("DATEMASK"))
5630 LET INUPD2.TYR=NUM(DATE$(7,4))
5635 LET INUPD2.HISTFL=1
5640 LET INUPD2.APP$="SO"
5645 LET INUPD2.BATCH$=TH0$(1,6)
5650 LET INUPD2.TRAN$=TD0$(7,8)
5655 LET INUPD2.LINE$=STR(LOC[2]:"000")
5660 LET INUPD2.SRCE$=TD2$
5665 LET INUPD2.SREF$=TD1$(17,8)
5670 LET INUPD2.JOB$=TD7$(1,6)
5675 LET INUPD2.PHASE$=TD7$(7,6)
5680 LET INUPD2.CCODE$=FILL(3)
5685 LET INUPD2.UNIT$=TD6$(67,5)
5690 LET INUPD2.OQTY1=TD4,INUPD2.OQTY2=TD5[1],INUPD2.OQTY3=TD5[2]
5695 LET MSG$=""
5700 LET INUPD2.CONV=TD5[8]
5705 LET INUPD2.PRC1=TD5[4]
5710 LET INUPD2.PRC2=(TD5[4]*TD5[1])-TD5[10]
5715 LET INUPD2.UCST=0; REM TD5[3]
5720 LET INUPD2.ECST=0; REM TD5[3]*TD5[1]
5725 LET INUPD2.SUCST=TD5[3]
5730 LET INUPD2.SECST=TD5[3]*TD5[1]
5735 LET INUPD2.SORTNITM$=O2$(54,1)
5740 RETURN
5800 REM 5800,3 "----- Set Template"
5803 SET_INUPD:
5806 LET INUPD1.ITEM$=TD6$(1,20)
5809 LET INUPD1.LOCA$=TD6$(21,6)
5812 LET INUPD1.LOTN$=FILL(16)
5815 LET INUPD1.SERN$=FILL(35)
5818 LET INUPD1.CMNT$=FILL(35)
5821 LET INUPD1.SREP$=TH3$(1,3)
5824 LET INUPD1.GLCD$=INLD.GLCD$
5827 LET INUPD1.ITYP$=TD6$(80,1)
5830 LET INUPD1.LOTS=NUM(TD6$(72,1))
5833 LET INUPD1.DEL=0
5836 LET INUPD1.PRID$=TD6$(81,6)
5839 LET INUPD1.CLVL$=TH13$
5842 LET INUPD1.CUST$=TD2$
5845 LET INUPD1.ODAT=TH1[3]; REM ORDER DATE
5848 IF INUPD1.ODAT=-1 THEN LET INUPD1.ODAT=TH1[2]; REM INVOICE DATE
5851 IF INUPD1.ODAT=-1 THEN LET INUPD1.ODAT=TH1[1]; REM SHIP DATE
5854 IF INUPD1.ODAT=-1 THEN LET INUPD1.ODAT=WKSDATE; REM WORKSTATION DATE
5857 IF TH1[2]<>-1 THEN LET INUPD1.IVDAT=TH1[2]
5860 IF TH1[1]<>-1 THEN LET INUPD1.RDAT=TH1[1]
5863 LET INUPD1.TPER=NUM(TD4$)
5866 LET DATE$=DATE(INUPD1.ODAT:STBL("DATEMASK"))
5869 LET INUPD1.TYR=NUM(DATE$(7,4))
5872 LET INUPD1.HISTFL=1
5875 LET INUPD1.APP$="SO"
5878 LET INUPD1.BATCH$=TH0$(1,6)
5881 LET INUPD1.TRAN$=TD0$(7,8)
5884 LET INUPD1.LINE$=TD0$(15,3)
5887 LET INUPD1.SRCE$=TD2$
5890 LET INUPD1.SREF$=TD1$(17,8)
5893 LET INUPD1.JOB$=TD7$(1,6)
5896 LET INUPD1.PHASE$=TD7$(7,6)
5899 LET INUPD1.CCODE$=FILL(3)
5902 LET INUPD1.UNIT$=TD6$(67,5)
5905 LET INUPD1.OQTY1=TD4,INUPD1.OQTY2=TD5[1],INUPD1.OQTY3=TD5[2]
5908 LET MSG$=""
5911 LET INUPD1.CONV=TD5[8]
5914 LET INUPD1.PRC1=TD5[4]
5917 LET INUPD1.PRC2=(TD5[4]*TD5[1])-TD5[10]
5920 LET INUPD1.UCST=0
5923 LET INUPD1.ECST=0
5926 LET INUPD1.SUCST=TD5[3]
5929 LET INUPD1.SECST=TD5[3]*TD5[1]
5932 LET INUPD1.SORTNITM$=O2$(54,1)
5935 RETURN
6000 REM 0 - (GENINPUT) 6000-6190
6001 GENINPUT: REM "08/10/2007 - General Input Routine Interface"
6005 LET WIND$=WINDID$,SEL$=SELVAL$,PRO$=PROGID$
6010 IF X9<>0 THEN GOTO 6100
6090 IF POS(Y$="PJQ") THEN LET WINDID$="",SELVAL$="",PROGID$=""; RETURN
6100 IF GUI=0 THEN CALL "GENINPUT.PUB",ERR=GENERROR,Z9$,Y$,(X0),(X1),(X2),(X3),(X4),X9,X1$(1),X,X$,INFO,WINDID$,SELVAL$,COMPID$,PROGID$,FILE[ALL],YDISABLE$,PGM(-2),FLD_HLP$,GENINPUT$; GOTO 6120
6110 CALL "GENGUINP.PUB",ERR=GENERROR,Z9$,Y$,(X0),(X1),(X2),(X3),(X4),X9,X1$(1),X,X$,INFO,WINDID$,SELVAL$,COMPID$,PROGID$,FILE[ALL],YDISABLE$,PGM(-2),FLD_HLP$,GUI_ID,BUTTON_KEYS$[ALL],OSGUI$,GUI_RADIO$,GENINPUT$
6120 ON POS(Y$="DIB PJCEU") GOTO 6180,6185,6183,6184,6190
6180 IF STBL("VERSW")="OFF" THEN GOSUB 8420 ELSE GOSUB 8410; REM "check other commands"
6182 GOTO 6100
6183 GOSUB INFO; LET Y$="E",WINDID$=WIND$,SELVAL$=SEL$,PROGID$=PRO$; GOTO 6100
6184 GOSUB DRILL; LET Y$="E",WINDID$=WIND$,SELVAL$=SEL$,PROGID$=PRO$; GOTO 6100
6185 GOSUB 9200
6187 GOTO 6100
6190 RETURN
6200 REM 0 - (SOINFO) 6200-6290
6201 INFO: REM "05/28/91 - Sales Order INFO Routine"
6210 DIM APPKEY$(30),KEYNAME$[1:15]
6220 LET APPKEY$="ARSOIN"
6230 LET KEYNAME$[1]=C0$
6240 LET KEYNAME$[2]=C0$
6250 IF TD6$(1,1)<>"}" THEN LET KEYNAME$[3]=TD6$(1,26) ELSE LET KEYNAME$[3]=FILL(20)+TD6$(21,6)
6260 CALL "GENINFO.PUB",APPKEY$,KEYNAME$[ALL],FILE[ALL],O2$,OSGUI$
6290 RETURN
6300 REM 0 - (DRILL) 6300-6310
6301 DRILL:
6310 RETURN
6700 REM 0 - (GENLINE) 6700-6780
6701 GENLINE: REM "08/10/2007 - General Line Item Handling Routine Interface"
6705 LET TASK$=""
6710 IF GUI=0 THEN CALL "GENLINE.PUB",ERR=GENERROR,LN[ALL],LOC[ALL],LN$[ALL],MASK$,ACT$,DISABLE$,TASK$,FLD_HLP$,PGM(-2),GENINPUT$; GOTO 6712
6711 CALL "GENGULIN.PUB",ERR=GENERROR,LN[ALL],LOC[ALL],LN$[ALL],MASK$,ACT$,DISABLE$,TASK$,GUI_LN[ALL],GUI_ID,ROW_ID,BUTTON_KEYS$[ALL],OSGUI$,FLD_HLP$,PGM(-2),GENINPUT$
6712 IF LN[0]=2 THEN RETURN
6715 IF TASK$<>"" THEN GOTO 6780
6720 ON POS(ACT$="XMDIB") GOTO 6730,6730,6730,6750,6745,6747,6780
6730 LET Y$=ACT$(1,1); IF STBL("VERSW")="OFF" THEN GOSUB 8420 ELSE GOSUB 8410; REM "Check other commands"
6740 GOTO 6710
6745 GOSUB INFO; LET ACT$=""; GOTO 6780
6747 GOSUB DRILL_HLE; LET ACT$="",Y$="E",WINDID$=WIND$,SELVAL$=SEL$,PROGID$=PRO$; GOTO 6710
6750 GOSUB 9200
6760 GOTO 6710
6780 RETURN
6800 REM 0 - (DRILL_HLE) 6800-6810
6801 DRILL_HLE:
6810 RETURN
7700 REM 7700,5 "----- Display Data"
7705 DATA:
7710 IF TASK$<>"L" THEN IF GUI THEN GOSUB CLEAR_GUI_SCREEN ELSE PRINT 'CF',
7715 DATA2:
7720 IF LEN(TD6$)<26 THEN LET TD6$=TD6$+FILL(26-LEN(TD6$))
7725 IF GUI THEN GOTO GUI_DATA
7730 PRINT 'SF',STBL("FTXT"),
7735 PRINT @(12,1),TH2$,@(19),C1$,@(69),TRAN$(1,6),
7740 PRINT @(12,2),SHIP$,@(19),SHIPTONAME$,@(51),LO0$,@(69),TRAN$(7,8),
7745 PRINT @(63,3)," ("+E2$(1+(TH0-1)*8,8)+") ",
7750 IF GUI THEN GOTO 17735
7755 PRINT 'SF','BACKGR'+STBL("FBKG"),STBL("FTXT"),'DEFAULT',
7756 CALL "SOENTCON.HOOKS"+"::TOT_DATA",ERR=*NEXT;REM RRW/RCG
7760 PRINT @(1,19),FNNUM$(TOT[0],MDOLL$),; REM taxable + nontaxable
7765 PRINT @(16),FNNUM$(TOT[3]+TOT[4],MDOLL$),; REM freight + misc
7770 PRINT @(31),FNNUM$(ROUND(TOT[2],DOPR)+TOT[9],MDOLL$),; REM sales tax + sales tax adj
7775 PRINT @(46),FNNUM$(TOT[6]+TOT[7],MDOLL$),; REM prepayment
7780 LET SAVEPREC=TCB(14); PRECISION DOPR; LET PTAX=(ROUND(TOT[2],DOPR)+TH5[9])*1; PRECISION SAVEPREC
7785 PRINT @(63),FNNUM$((TOT[0]+PTAX+TOT[3]+TOT[4]-TOT[6]-TOT[7]),MDOLL$),
7790 RETURN
7900 REM 7900,5 "----- Display Boxes"
7905 BOX:
7910 PRINT 'BACKGR',STBL("FBKG"),STBL("FBX"),'DEFAULT','SB','BOX'(14,0,50,0),
7915 PRINT 'SB',STBL("FTTL"),@(INT((77-LEN(TITLE$))/2),0),TITLE$,
7920 LET TITLE$=""
7925 RETURN
8400 REM 0 - (GENERROR) 8400-8452
8401 GENERROR: REM "02/21/89 - GENERAL ERROR ROUTINE"
8405 IF O7=0 AND X9$="" AND X8$="" THEN LET O7=-3
8410 CALL "GENERROR.PUB",X9$,X8$,ERR,TCB(5),O7,Y$,TCB(10),X1$(1),F$(1),PROGID$,FILE[ALL],YDISABLE$,PGM(-2),X$,X4,MX8,MX9,OSGUI$
8420 ON POS(Y$="XMSLR") GOTO 8450,8452,9990,8452,8490,8499
8450 RETURN
8452 LET SPREC=TCB(14); RESET; PRECISION SPREC; SETERR GENERROR
8454 IF Y$="X" THEN GOTO 8470
8456 IF Y$="S" THEN GOTO 8480
8460 REM "8470=BR ON X, 8480=BR ON S, 8490=L "
8470 IF POS(TASK$="LO") THEN LET Y$=""; GOTO CONTROL
8472 IF ATGOTO THEN LET Y$=""; GOTO EXITGOTO
8474 LET X8$=" "; GOSUB GENERROR
8476 IF GUI THEN GOSUB CLEAR_GUI_SCREEN ELSE PRINT 'CF',
8478 GOTO ABANDON
8480 IF POS(TASK$="LO") THEN LET Y$=""; GOTO CONTROL
8484 IF ATGOTO THEN LET Y$=""; GOTO EXITGOTO
8488 LET TASK$=""; GOTO CONTROL
8490 REM 0 - (GENERROR2) 8490-8499
8491 CALL "GENPSCR.PUB"
8492 LET Y$=""
8495 RETURN
8499 RETRY
8500 REM 0 - (INUPD) 8500-8540
8510 INUPD: REM "05/17/95 - Inventory interface routine"
8520 CALL "INUPD.PUB",ERR=8540,FILE[ALL],INUPD1$,INUPD2$,INUPD3$,INCJ$,INLD$,INHI$,INHS$,INLH$,INLP$,INLT$,INPP$,INPS$,INQL$,INQT$,INSH$,INSN$,INUM$,INUP$,INVE$,OSSE$,UO2$,MSG$
8530 LET INUPDERR=0; RETURN
8540 LET INUPDERR=1; GOTO GENERROR
9200 REM "----- DELETE LINE"
9201 EXITTO DELLINE
9230 RETDELORD: REM "return from delete order"
9240 LET TASK$=""
9250 GOTO ABANDON
9300 REM 9300,5 "----- Check Returns for Approved or Posted Items"
9305 CHECK_RETURNS:
9310 LET RTN_OK=1
9315 READ (FILE[27],KNUM=1,KEY=TD0$,DOM=NEXT_LINE_ITEM)
9320 NEXT_LINE_ITEM:
9325 READ RECORD(FILE[27],END=DONE_CHECK_RETURNS)SORI$; IF SORI.BATCH$+SORI.ORD$+SORI.ENT$<>TD0$ THEN GOTO DONE_CHECK_RETURNS
9330 IF SORI.STAT$="N" THEN GOTO NEXT_LINE_ITEM
9335 LET RTN_OK=0
9340 DONE_CHECK_RETURNS:
9345 RETURN
9990 REM 0 - "----- Return to Menu"
9991 QUIT:
9992 IF POS(TASK$="LO") THEN LET Y$=""; GOTO CONTROL
9993 IF ATGOTO THEN LET Y$=""; GOTO EXITGOTO
9994 IF INHOUSE THEN IF (TH0=3 OR TH0=4) AND LOC[3]>0 THEN RUN "SOENTTOT"
9995 CALL "SOENTCON.HOOKS"+"::F7_EXIT_ORDER",ERR=*NEXT; IF POS_NETDUE THEN LET TASK$="T",Y$=""; GOTO 1580; REM RRW/RCG
9996 LET P8$=O1$,P7$=""; IF O2$(13,1)="1" THEN RUN "SOENTOIT" ELSE RUN "ARVER";REM RRW/RCG MOVED DOWN FROM 9995
9999 END
10000 REM 0 - (GENNUM) 10000-10008
10002 DEF FNNUM$(XX,XX1$)
10003 LET XX$=STR(XX:XX1$,ERR=10005); GOTO 10006
10005 LET XX1=LEN(XX1$); IF POS(XX1$(XX1,1)="-)") THEN LET XX1=XX1-1 FI; LET XX$=FILL(XX1,"*"),XX$=XX$+FILL(LEN(XX1$)-LEN(XX$))
10006 RETURN XX$
10008 FNEND
17700 REM 17700,5 "----- GUI Data"
17705 GUI_DATA:
17710 IF LEN(TD5$)<80 THEN LET TD5$=TD5$+FILL(80-LEN(TD5$))
17715 PRINT (OSGUI.CHAN)'TITLE'(2000,TH2$),'TITLE'(2010,C1$),'TITLE'(2050,TRAN$(1,6))
17720 PRINT (OSGUI.CHAN)'TITLE'(2020,SHIP$),'TITLE'(2030,SHIPTONAME$),'TITLE'(2040,LO0$),'TITLE'(2060,TRAN$(7,8))
17725 PRINT (OSGUI.CHAN)'TITLE'(2070," ("+E2$(1+(TH0-1)*8,8)+") ")
17730 REM 
17735 PRINT (OSGUI.CHAN)'CONTEXT'(OSGUI.CUR_CONTEXT[1]),
17739 CALL "SOENTCON.HOOKS"+"::TOT_DATA",ERR=*NEXT;REM RRW/RCG
17740 PRINT (OSGUI.CHAN)'TITLE'(2100,FNNUM$(TOT[0],MDOLL$))
17745 PRINT (OSGUI.CHAN)'TITLE'(2110,FNNUM$(TOT[3]+TOT[4],MDOLL$))
17750 PRINT (OSGUI.CHAN)'TITLE'(2120,FNNUM$(ROUND(TOT[2],DOPR)+TOT[9],MDOLL$))
17755 PRINT (OSGUI.CHAN)'TITLE'(2130,FNNUM$(TOT[6]+TOT[7],MDOLL$))
17760 LET SAVEPREC=TCB(14); PRECISION DOPR; LET PTAX=(ROUND(TOT[2],DOPR)+TH5[9])*1; PRECISION SAVEPREC
17765 PRINT (OSGUI.CHAN)'TITLE'(2140,FNNUM$((TOT[0]+PTAX+TOT[3]+TOT[4]-TOT[6]-TOT[7]),MDOLL$))
17770 PRINT (OSGUI.CHAN)'CONTEXT'(OSGUI.CUR_CONTEXT[OSGUI.CONTEXT_POINTER])
17775 RETURN
18000 REM 18000,5 "----- Disable Fields"
18005 DISABLE_FIELDS:
18010 IF GUI THEN PRINT (OSGUI.CHAN)'SHOW'(4000),'ENABLE'(4000),'DISABLE'(7000,9000,9010,9020,9030,9040,9050,9060,9070,9080,9090,9100,9110,-20500)
18012 CALL "SOENTCON.HOOKS"+"::DISABLE_FIELDS",ERR=*NEXT;REM RRW/RCG SP001,SP002,SP003,SP004,SP005
18015 RETURN
18100 REM 18100,5 "----- Enable Fields"
18105 ENABLE_FIELDS:
18110 IF GUI=0 THEN RETURN
18115 PRINT (OSGUI.CHAN)'ENABLE'(7000,9000,9010,9020,9030,9040,9090,-20500)
18120 IF LOC[3]>LN[6] THEN PRINT (OSGUI.CHAN)'ENABLE'(9050) ELSE PRINT (OSGUI.CHAN)'DISABLE'(9050)
18122 IF O2$(11,1)="1" THEN PRINT (OSGUI.CHAN)'ENABLE'(9110) ELSE PRINT (OSGUI.CHAN)'DISABLE'(9110)
18125 IF POS(STR(TH0)="345789") THEN IF O2$(13,1)="1" THEN PRINT (OSGUI.CHAN)'ENABLE'(9060) ELSE PRINT (OSGUI.CHAN)'DISABLE'(9060)
18127 IF POS(STR(TH0)="126") THEN IF O2$(13,1)="1" THEN PRINT (OSGUI.CHAN)'ENABLE'(9060) ELSE PRINT (OSGUI.CHAN)'DISABLE'(9060)
18130 IF POS(STR(TH0)="126") THEN IF O2$(14,1)="1" THEN PRINT (OSGUI.CHAN)'ENABLE'(9070); REM ELSE PRINT (OSGUI.CHAN)'DISABLE'(9080)
18135 IF (POS(STR(TD0)="35") AND O2$(39,1)="1") THEN PRINT (OSGUI.CHAN)'ENABLE'(9070); REM  ELSE PRINT (OSGUI.CHAN)'DISABLE'(9080)
18140 IF POS(STR(TH0)="89") THEN PRINT (OSGUI.CHAN)'ENABLE'(9070)
18145 IF TH0=5 OR O2$(2,1)<>"1" THEN PRINT (OSGUI.CHAN)'DISABLE'(9080) ELSE PRINT (OSGUI.CHAN)'ENABLE'(9080)
18150 IF O2$(45,1)<>"1" OR TH0=8 THEN PRINT (OSGUI.CHAN)'DISABLE'(9100) ELSE PRINT (OSGUI.CHAN)'ENABLE'(9100)
18152 CALL "SOENTCON.HOOKS"+"::ENABLE_FIELDS",ERR=*NEXT;REM RRW/RCG SP001,SP002,SP003,SP004,SP005
18155 RETURN
18200 REM 18200,5 "----- Clear GUI Global"
18205 CLEAR_GLOBAL:
18210 IF GUI THEN LET DUMMY$=STBL("!CLEAR","DESTID",ERR=18215)
18215 RETURN
18400 REM 18400,5 "----- Destroy Window"
18405 DESTROY_GUI_WINDOW:
18410 IF INQTYDSP_CONTEXT THEN PRINT (OSGUI.CHAN)'CONTEXT'(OSGUI.CUR_CONTEXT[INQTYDSP_CONTEXT]),'HIDE'(0),'CONTEXT'(OSGUI.CUR_CONTEXT[OSGUI.CONTEXT_POINTER])
18415 PRINT (OSGUI.CHAN)'HIDE'(0),'CONTEXT'(OSGUI.CUR_CONTEXT[1]); LET OSGUI.CONTEXT_POINTER=1
18420 RETURN
18500 REM 18500,5 "----- Setup Button Keys for HLE's
18505 GUI_BUTTONS:
18510 IF GUI=0 THEN GOTO 18535
18515 LET SAVEPOINTER=0; IF OSGUI.CONTEXT_POINTER<>1 THEN LET SAVEPOINTER=OSGUI.CONTEXT_POINTER; PRINT (OSGUI.CHAN)'CONTEXT'(OSGUI.CUR_CONTEXT[1])
18520 IF GUI THEN DIM BUTTON_KEYS$[1:12,1:2]; LET BUTTON_KEYS$[1,1]="9000",BUTTON_KEYS$[1,2]=$0D$,BUTTON_KEYS$[2,1]="9010",BUTTON_KEYS$[2,2]="A",BUTTON_KEYS$[3,1]="9020",BUTTON_KEYS$[3,2]="H",BUTTON_KEYS$[4,1]="9030",BUTTON_KEYS$[4,2]="T",BUTTON_KEYS$[5,1]="9040",BUTTON_KEYS$[5,2]="V",BUTTON_KEYS$[6,1]="9050",BUTTON_KEYS$[6,2]="G",BUTTON_KEYS$[7,1]="9060",BUTTON_KEYS$[7,2]="O",BUTTON_KEYS$[8,1]="9070",BUTTON_KEYS$[8,2]="P",BUTTON_KEYS$[9,1]="9080",BUTTON_KEYS$[9,2]="R",BUTTON_KEYS$[10,1]="9090",BUTTON_KEYS$[10,2]="N",BUTTON_KEYS$[11,1]="9100",BUTTON_KEYS$[11,2]="S",BUTTON_KEYS$[12,1]="9110",BUTTON_KEYS$[12,2]="D"
18525 IF GUI THEN IF POS(STR(TH0)="89") THEN LET BUTTON_KEYS$[8,2]="L"; PRINT (OSGUI.CHAN)'TITLE'(9070,"&Live") ELSE PRINT (OSGUI.CHAN)'TITLE'(9070,"&Packing List")
18527 CALL"SOENTCON.HOOKS"+"::REDO_GUI_BUTTONS_WITH_ADDL",ERR=*NEXT;REM RRW/RCG SP001,SP002,SP003,SP004,SP005
18530 IF SAVEPOINTER THEN LET OSGUI.CONTEXT_POINTER=SAVEPOINTER; PRINT (OSGUI.CHAN)'CONTEXT'(OSGUI.CUR_CONTEXT[OSGUI.CONTEXT_POINTER])
18535 RETURN
18600 REM 18600,5 "----- Clear GUI Screen"
18605 CLEAR_GUI_SCREEN:
18610 LET LN[0]=-1,GUI_ID=7000; GOSUB GENLINE
18615 FOR I=2000 TO 2140 STEP 10; IF I<>2070 THEN PRINT (OSGUI.CHAN)'CLRTITLE'(I) FI; NEXT I
18620 RETURN
20000 REM "------- Quick Rotate - Scroll HLE up a line for Quick Entry"
20005 QUICK_ROTATE:
20010 IF LOC[3]=0 THEN RETURN
20015 IF QIK_EDIT AND LOC[3]<LN[6] THEN LET LN$[LOC[2],0]=FILL(LN[12]),LN$[LOC[2],1]=FILL(LN[12]); GOTO 20040
20020 LET LOC[1]=LOC[3]-(LN[6]-(2+GUI)); IF QIK_EDIT THEN LET LOC[1]=LOC[3]-(LN[6]-(1+GUI))
20025 IF LOC[1]<1 THEN LET LOC[1]=1
20030 GOSUB BUILD
20040 LET SAVELN0=LN[0],LN[0]=2,SAVETASK$=TASK$,GUI_ID=7000,ROW_ID=2080; GOSUB GENLINE; LET LN[0]=SAVELN0,TASK$=SAVETASK$,SAVELN0=0,SAVETASK$=""
20050 RETURN
20200 REM "------- Special Item Return - SP004"
20205 RETSPECORD:
20210 GOSUB SETUP
20215 LET TASK$="HE"
20220 GOTO RETEDHDR