0001 SETERR GENERROR
0010 REM 0 "SOENTREC - 11/18/2016 - SP Order Payments"
0011 REM "Authors - CWE"
0015 REM 0 - (COPYRIGHT) 15-22
0016 REM  Standards 8.0
0019 REM OPEN SYSTEMS (R) Accounting Software
0020 REM Copyright (c)1982,1985,1991,1994,1995,1996 Open Systems Holdings Corp.
0021 REM All Rights Reserved
0022 REM OPEN SYSTEMS is a registered trademark of Open Systems Holdings Corp.
0023 REM 
0030 ENTER
0040 IF GUI THEN LET SAVE_POINTER=OSGUI.CONTEXT_POINTER
0045 LET RCG_PYMT_QUICK=0; IF STBL("QUICK")="ON" THEN LET RCG_PYMT_QUICK=1
0070 LET CCID$=STBL("CID")+FILL(3),CCID$=CCID$(1,3)
0075 PRECISION NUM(STBL("-DOLL"))
0080 LET M1$="-#######.00"
0090 LET TASK$="",BATCH$=TRAN$(1,6)
0100 IF GUI=0 THEN PRINT 'WINDOW'(0,4,79,20),'CAPTURE','SCROLL'(14,0,53,18),; let MAINWIND=1
0105 LET TITLE1$=" Payments "
0115 GOSUB PROMPTS
0120 REM "------- Check if RCG Credit Card module is used"
0125 LET RCPCINST=0,RCPC_CUSTOM_FIELD=0
0130 LET F$="RCMI"+STBL("CID")
0135 LET TESTCHAN=UNT; OPEN(TESTCHAN,ERR=0150)F$
0140 LET TEST$=KEYF(TESTCHAN,ERR=*NEXT); LET RCPCINST=1
0145 CLOSE (TESTCHAN,ERR=*NEXT)
0150 LET TESTCHAN=0,F$="",TEST$=""
0155 IF RCPCINST=0 THEN GOTO 0170
0160 SETERR 0165; LET TEST$=CRCFV.MID$,RCPC_CUSTOM_FIELD=1
0165 SETERR GENERROR
0300 DEF FND$(D)=DATE(D:STBL("DATEMASK"))
0305 DEF FNA$(D)=DATE(D:STBL("DATEMASK")+"z")
0310 DEF FNYESNO$(XXX$)
0312 IF POS("Y"=XXX$) THEN RETURN "YES" ELSE RETURN "NO "
0314 FNEND
0400 DEF FNCC_NUM$(XXX$)
0402 LET XX1$=XXX$
0404 LET XX1=LEN(CVS(XX1$,3)); IF XX1<6 THEN GOTO 0408
0405 LET XX2$=XX1$(1,2),XX3$=XX1$(XX1-3,4)
0406 LET XX1$=XX2$+FILL(4,"*")+XX3$
0408 RETURN XX1$
0410 FNEND
0898 GOTO 1000
0899 REM 0 - (ARFIL) 899-970
0900 XXTB: IOLIST T0$,T1,T1$,T2$,T3$,T4$,T2; REM "all application tables" 
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$
0924 ARCRXXX: IOLIST CR0$,CR1$,CR1[ALL],CR2$,CR3$,CR2[ALL],CR4$,CR5$,CR6$,CRCFF$,CRCFV$
0928 ARBTXXX: IOLIST BC0$,BC1$,BC2$,BC3$[ALL],BC4$,BC1,BC2,BC3
0934 ARPYXXX: IOLIST P0$,P1$,P1,P2$,P2[ALL],P3$,P3,P4,P4$,P5$,PCFF$,PCFV$
1000 REM 0 "-----  Startup Logic"
1010 ABANDON:
1020 DIM BC3$[3],CR1[2],CR2[2],CRCFF$:FATTR(CRCFF$),CRCFV$:FATTR(CRCFV$)
1025 DIM PYMT$:"MOP:C(3*),PTYPE:N(1*),BNK:C(6*),EXPMTH:N(2*),EXPYR:N(4*),MOPDESC:C(25*),POSTED:C(1*)"
1040 LET TASK$="",LN=1; DIM MI$[1:2,1:5]
1050 GOSUB DATA
1060 GOSUB SETUP
1070 GOSUB ONFILE
1080 IF ONFILE=0 THEN GOSUB TOTALS; LET TASK$="A"; GOTO APPEND ELSE LET RCG_PYMT_QUICK=0,RCG_QUICK=0
1082 LET STARTKEY$=FILL(14)+TH0$(7,8)
1085 GOSUB BUILD; GOSUB TOTALS
1090 GOTO CONTROL
1240 GOSUB LOADWHSE
1270 GOTO CONTROL
1450 REM 1450,5 "-----  Setup Initial LN and LOC Values"
1455 SETUP:
1460 DIM LN[12],LOC[5],GUI_LN[1:4,1:2]
1462 LET GUI_LN[1,1]=11,GUI_LN[2,1]=29,GUI_LN[3,1]=41,GUI_LN[4,1]=47
1463 LET GUI_LN[1,2]=2,GUI_LN[2,2]=0,GUI_LN[3,2]=1,GUI_LN[4,2]=2
1465 LET LN[0]=1,LN[1]=2,LN[2]=10,LN[3]=2,LN[4]=4,LN[5]=4,LN[6]=INT(LN[2]/LN[3]),LN[7]=1,LN[8]=1,LN[9]=0,LN[10]=99,LN[11]=20,LN[12]=47
1467 DIM LN$[1:LN[6],LN[3]-1]
1470 LET ACT$=" ",MASK$="000000"
1475 LET LOC[0]=99999999,LOC[1]=LN[7],LOC[2]=LN[8],LOC[3]=1,LOC[4]=0,LOC[5]=3
1476 SETUP2: LET LOC[1]=999999,LOC[2]=999,LOC[3]=9999999; REM "lie"
1480 RETURN
1500 REM 1500,5 "-----  Main Control"
1505 CONTROL:
1507 LET ML=0,GT$="",Y$="",YDISABLE$=""
1508 IF RCG_PYMT_QUICK THEN LET RCG_PYMT_QUICK=0; IF POS(STR(TH0)="345") THEN IF NETTOT=0 AND PMT[1]<>0 THEN LET TASK$="D"; GOTO 1560
1510 IF GUI THEN GOSUB ENABLE_BUTTONS
1512 GOSUB ONFILE; IF ONFILE=0 THEN GOTO APPEND
1515 IF GUI=0 THEN LET X8$='SF'+"Enter"+'SB'+"=Edit, "+'SF'+"A"+'SB'+"ppend, "+'SF'+"D"+'SB'+"one",ML=22
1520 GOSUB DISMSG
1525 SUBCONTROL:
1530 IF GUI THEN GOSUB GUI_BUTTONS
1535 LET TASK$="",ABORT=0,GUI_ID=7000,ROW_ID=0
1540 GOSUB GENLINE; GOSUB SETUP2
1542 IF TASK$="TB" THEN LET TASK$="D"; REM "Tab = Done"
1545 IF LEN(TASK$)<2 THEN GOTO 1560 ELSE IF ONFILE=0 THEN GOTO SUBCONTROL
1550 LET POSZ=POS(TASK$="LDLUPDPUENHO",2); IF POSZ>1 THEN LET POSZ=(POSZ+1)/2
1555 ON POSZ GOTO 1560,LINEDOWN,LINEUP,PAGEDOWN,PAGEUP,GOTOEND,HOME,1560
1560 ON POS(TASK$=" AD") GOTO 1565,APPEND,APPEND,QUIT
1565 LET TASK$=""
1570 GOTO 1535
1600 REM 1600,5 "-----  Line Down"
1605 LINEDOWN:
1607 GOSUB CURRKEY; GOSUB LASTKEY
1610 IF CURRKEY$>=LASTKEY$ THEN GOTO 1640
1615 LET KEY$=CURRKEY$,INUSE=0
1625 LET F0=206; EXTRACT (FILE[206],KEY=KEY$,ERR=1626); GOTO 1627
1626 IF ERR<>0 THEN GOTO GENERROR
1627 LET KEY$=KEYN(FILE[206],END=1640)
1628 LET F0=206; READ RECORD(FILE[206],KEY=KEY$,ERR=1629)SPCR$; GOTO 1632
1630 IF ERR<>0 THEN GOTO GENERROR ELSE LET INUSE$=KEY$; GOSUB INUSE
1633 FOR LINE=1 TO LN[6]-1; LET LN$[LINE,0]=LN$[LINE+1,0],LN$[LINE,1]=LN$[LINE+1,1]; NEXT LINE
1634 LET LINE=LN[6]; GOSUB BUILDLINE
1637 LET LN[0]=1,INUSE=0
1640 GOSUB SETUP2
1645 GOSUB RELEASEREC; GOTO SUBCONTROL
1650 REM 1650,5 "-----  Line Up"
1655 LINEUP:
1656 IF LN[8]=1 THEN LET Y$="U"; GOTO QUIT
1657 GOSUB CURRKEY; GOSUB FIRSTKEY
1660 IF CURRKEY$<=FIRSTKEY$ THEN GOTO 1690
1665 LET KEY$=CURRKEY$
1670 LET F0=206; EXTRACT (FILE[206],KEY=KEY$,ERR=1671)
1671 LET K$=KEYP(FILE[206],END=1690,ERR=GENERROR)
1672 LET F0=206; READ RECORD(FILE[206],KEY=K$,ERR=1673)SPCR$; LET INUSE=0; GOTO 1674
1673 IF ERR<>0 THEN GOTO GENERROR ELSE LET INUSE$=K$; GOSUB INUSE
1674 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
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 GOSUB RELEASEREC; GOTO SUBCONTROL
1700 REM 1700,5 "-----  Page Down"
1705 PAGEDOWN:
1707 GOSUB LASTKEY
1708 LET TEMP$=LN$[LN[9],0](LN[12]+1)
1710 IF TEMP$>=LASTKEY$ THEN LET LN[8]=LN[9]; GOTO 1725
1712 LET F0=206; EXTRACT (FILE[206],KEY=TEMP$,ERR=1713); GOTO 1715
1713 IF ERR<>0 THEN GOTO GENERROR
1715 LET K$=KEYN(FILE[206],END=1725),STARTKEY$=K$
1720 GOSUB BUILD
1722 LET LN[8]=MIN(LN[8],LN[9])
1725 GOSUB SETUP2
1730 GOTO SUBCONTROL
1750 REM 1750,5 "-----  Page Up"
1755 PAGEUP:
1757 GOSUB FIRSTKEY; GOSUB LASTKEY
1758 LET TEMP$=LN$[1,0](LN[12]+1)
1760 IF TEMP$<=FIRSTKEY$ THEN LET LN[8]=1; GOTO 1785
1770 GOSUB FINDKEY
1775 GOSUB BUILD
1780 LET LN[8]=MIN(LN[8],LN[9])
1782 LET LN[0]=1,LN[7]=1; REM "set array"
1785 GOTO SUBCONTROL
1800 REM 1800,5 "-----  Goto End"
1805 GOTOEND:
1807 GOSUB FIRSTKEY; GOSUB LASTKEY
1808 LET TEMP$=LN$[LN[8],0](LN[12]+1)
1810 IF LEN(LN$[LN[6],0])>LN[12] THEN IF TEMP$>=LASTKEY$ THEN LET LN[8]=LN[9]; GOTO 1845
1812 IF TEMP$=FIRSTKEY$ AND TEMP$=LASTKEY$ THEN GOTO 1840
1815 GOSUB FINDKEY; REM "find key to start with"
1820 GOSUB BUILD
1840 LET LN[0]=1,LN[7]=1,LN[8]=MIN(LN[6],LN[9])
1845 GOSUB SETUP2
1847 GOTO CONTROL
1850 REM 1850,5 "-----  Goto Home"
1855 HOME:
1856 GOSUB FIRSTKEY
1857 LET TEMP$=LN$[LN[8],0](LN[12]+1)
1859 IF TEMP$<=FIRSTKEY$ THEN GOTO 1880
1860 LET STARTKEY$=""
1870 GOSUB BUILD
1880 LET LN[0]=1,LN[7]=1,LN[8]=1; REM "  set array"
1890 GOTO SUBCONTROL
2000 REM 2000,5 "-----  Build Display Array"
2005 BUILD:
2010 LET LN[9]=0
2011 DIM LN$[1:LN[6],LN[3]-1]
2015 LET KEY$=STARTKEY$; IF CVS(KEY$,3)="" THEN LET KEY$=FILL(14)+TH0$(7,8)
2017 LET INUSE=0
2020 LET F0=206; READ RECORD(FILE[206],KEY=KEY$,KNUM=0,DOM=2030,END=2060,ERR=2022)SPCR$; GOTO 2035
2022 IF ERR<>0 THEN GOTO GENERROR
2023 LET INUSE$=KEY$; GOTO 2034
2030 READ RECORD(FILE[206],END=2060,ERR=2032)SPCR$; GOTO 2035
2032 IF ERR<>0 THEN GOTO GENERROR
2035 IF SPCR.ID$<>FILL(14)+TH0$(7,8) THEN GOTO 2060
2040 LET LN[9]=LN[9]+1
2045 LET LINE=LN[9]; GOSUB BUILDLINE
2050 IF LN[9]>=LN[6] THEN GOTO 2060
2052 IF INUSE THEN LET KEY$=KEYN(FILE[206],END=2060,ERR=GENERROR); GOTO 2017
2055 GOTO 2030
2060 LET LN[0]=1,APPEND$=STARTKEY$,STARTKEY$="",INUSE=0
2062 GOSUB CLEANUP
2063 IF LN[9] THEN LET LN[8]=MIN(LN[8],LN[9])
2065 RETURN
2070 REM 2070,5 "-----  Build a Line"
2075 BUILDLINE:
2078 GOSUB LOAD_CR
2080 LET X$=FILL(10); IF SPCR.DAT>1 THEN LET X$=FND$(SPCR.DAT)
2082 LET TMP$=FILL(10); IF PYMT.PTYPE=1 THEN LET TMP$(1)="CASH" ELSE IF PYMT.PTYPE=2 THEN LET TMP$(1)=MI$[LN,3] ELSE IF PYMT.PTYPE=3 THEN LET TMP$(1)=FNCC_NUM$(MI$[LN,1])
2085 LET LN$[LINE,0]=X$+FILL(2)+PYMT.MOP$+FILL(2)+TMP$+FILL(1)+FNNUM$(SPCR.AMT,M1$)+FILL(4)+FNYESNO$(PYMT.POSTED$)
2090 IF PYMT.PTYPE=3 THEN LET LN$[LINE,1]=FILL(12)+MI$[LN,2] ELSE LET LN$[LINE,1]=FILL(12)+SPCR.MEMO$ FI; LET LN$[LINE,1]=LN$[LINE,1]+FILL(LN[12]),LN$[LINE,1]=LN$[LINE,1](1,LN[12])
2091 IF GUI THEN LET LN$[LINE,1](27)=""; REM "Grid issue"
2093 LET LN$[LINE,0]=LN$[LINE,0]+FILL(LN[12]),LN$[LINE,0]=LN$[LINE,0](1,LN[12])+KEYP(FILE[206],ERR=2094)
2099 LET LN[0]=1,LINE=0; RETURN
4000 REM 4000,5 "----- get first/last/curr keys for curr warehouse"
4005 FIRSTKEY:
4008 LET FIRSTKEY$=FILL(14)+TH0$(7,8)
4010 READ (FILE[206],KEY=FIRSTKEY$,DOM=4011)
4020 IF POS(FILL(14)+TH0$(7,8)=KEY(FILE[206],ERR=4021)) THEN LET FIRSTKEY$=KEY(FILE[206],ERR=4030)
4030 RETURN
4050 LASTKEY:
4060 LET LASTKEY$=FILL(14)+TH0$(7,8)
4065 READ (FILE[206],KEY=LASTKEY$+"}}}",DOM=4066)
4070 IF POS(FILL(14)+TH0$(7,8)=KEYP(FILE[206],ERR=4071)) THEN LET LASTKEY$=KEYP(FILE[206],ERR=4080)
4080 RETURN
4090 CURRKEY:
4095 LET CURRKEY$=LN$[LN[8],0](LN[12]+1)
4098 RETURN
4100 REM 4100,5 "-----  find key to start with on END and PAGEUP"
4105 FINDKEY:
4107 GOSUB FIRSTKEY; GOSUB LASTKEY
4109 LET TEMP$=LN$[1,0](LN[12]+1)
4110 IF TASK$="EN" THEN LET K$=LASTKEY$,KEYS=LN[6]-1 ELSE LET K$=TEMP$,KEYS=LN[6]
4120 LET F0=206; EXTRACT (FILE[206],KEY=K$,ERR=4122); GOTO 4125
4122 IF ERR<>0 THEN GOTO GENERROR
4125 LET SAVEK$=K$,K$=KEYP(FILE[206],END=4190,ERR=GENERROR)
4140 IF K$(1,22)<>FILL(14)+TH0$(7,8) THEN GOTO 4190
4150 LET KEYS=KEYS-1; IF KEYS>0 THEN GOTO 4120
4190 IF K$(1,22)=FILL(14)+TH0$(7,8) THEN LET STARTKEY$=K$ ELSE LET STARTKEY$=SAVEK$
4195 GOSUB RELEASEREC
4199 RETURN
4200 REM "-----  Release Item Record"
4205 RELEASEREC: READ (FILE[206],ERR=4210)
4220 RETURN
4230 REM "-----  Cleanup UnNeeded Data"
4232 CLEANUP:
4234 LET ABORT=0
4236 RETURN
4245 CALCTOT:
4250 LET PMT[1]=0,PMT[2]=0
4252 READ (FILE[206],KEY=FILL(14)+TH0$(7,8),DOM=*NEXT)
4254 READ RECORD (FILE[206],END=4260)SPCR$
4256 IF SPCR.ID$=FILL(14)+TH0$(7,8) THEN LET PMT[1]=PMT[1]+SPCR.AMT; GOTO 4254
4260 LET INVTOT=ROUND(TH5[0]+ROUND(TH5[2],DOPR)+TH5[9]+TH5[3]+TH5[4],DOPR),NETTOT=ROUND(INVTOT-PMT[1]-PMT[2],DOPR)
4270 RETURN
4300 REM "------- Get Bank Acct Descr"
4305 BANKDESC:
4310 DIM BA1$(22)
4315 READ (FILE[14],KEY=MI$[LN,1],DOM=4120)*,BA1$; LET BA1$=BA1$(1,22); GOTO 4125
4320 LET X9$="'"+CVS(MI$[LN,1],2)+"' is not on file."
4325 RETURN
4500 DISMSG: IF GUI=0 THEN PRINT 'SCROLL'("RESET"),'SCROLL'(0,0,79,20),'BACKGR',STBL("FBKG"),'DEFAULT',@(2,18),FILL(75),STBL("FBX"),'SF',@(INT((78-ML)/2),18),X8$,; LET X8$=""; PRINT 'SCROLL'(14,0,53,18),'BACKGR',STBL("FBKG3"),STBL("FTXT3"),'DEFAULT', FI; RETURN
4510 REM "Get Order Totals"
4511 TOTALS:
4525 GOSUB CALCTOT
4530 IF GUI=0 THEN PRINT 'SF',@(7,16),FNNUM$(INVTOT,M1$(3)),@(25),FNNUM$(PMT[1],M1$(3)),@(43),FNNUM$(NETTOT,M1$(3)),
4532 IF GUI AND MOPWIND=0 THEN PRINT (OSGUI.CHAN)'TITLE'(2050,FNNUM$(TOT[0]+TOT[2],M1$(3))),'TITLE'(2060,FNNUM$(TOT[6],M1$(3))),'TITLE'(2070,FNNUM$(TOT[0]+TOT[2]-TOT[6],M1$(3)))
4535 RETURN
4600 REM "----- Load a Warehouse"
4605 LOADWHSE:
4650 GOSUB DATA
4660 GOSUB SETUP
4680 GOSUB BUILD
4690 RETURN
4700 LOAD_CR: REM 4700,5 "---- Load cash Receipt record"
4705 LET KEY$=SPCR.CASH_RCPT$; DIM PYMT$:FATTR(PYMT$),MI$[1:2,1:5]; LET PYMT.POSTED$="Y",PYMT.MOP$=FILL(3)
4710 READ (FILE[19],KEY=KEY$,KNUM=0,DOM=4715)IOL=ARCRXXX; LET PYMT.POSTED$="N"; GOTO 4725
4715 LET KEY$=SPCR.HIST_SEQ$
4720 DIM H9[9],HCFF$:FATTR(HCFF$),HCFV$:FATTR(HCFV$); LET H3=0; READ (FILE[82],KEY=KEY$,KNUM=0,DOM=LOAD_CR_DONE)IOL=ARHIXXX; LET PYMT.MOP$=H3$(3,3),PYMT.PTYPE=H4; IF PYMT.PTYPE=3 THEN LET MI$[LN,1]=H2$(33,5),MI$[LN,2]=H2$(53,25),MI$[LN,3]=H3$(6,6) FI; GOTO LOAD_CR_DONE
4725 LET PYMT.MOP$[LN]=CR6$(1,3)
4730 LET MI$[LN,1]=CR6$(4,20)
4735 LET MI$[LN,2]=CR6$(24,25)
4740 IF CR2[2]<>6 THEN LET MI$[LN,3]=CR6$(55,6) ELSE LET MI$[LN,3]=CR5$(1,9)
4745 IF CR2[2]=2 THEN LET MI$[LN,3]=CR5$(10,10)
4750 LET MI$[LN,4]=CR0$
4755 LET MI$[LN,5]=CR6$(67,8)
4760 LET PYMT.EXPMTH=NUM(CR6$(49,2)),PYMT.EXPYR=NUM(CR6$(51,4))
4765 LET PYMT.PTYPE=CR2[2]
4770 LOAD_CR_DONE:
4775 IF SPCR.DEP_ADJ THEN LET PYMT.MOP$="Dep",MI$[LN,3]="Adjustment",PYMT.PTYPE$="2"
4780 RETURN
5000 REM 5000,5 "----- Write Receipt Records if Necessary"
5005 RECEIPTS:
5015 IF PYMT.POSTED$="Y" THEN GOTO 5155
5025 LET ZZ$=PYMT.MOP$+MI$[LN,1]+FILL(20-LEN(MI$[LN,1]))+MI$[LN,2]+FILL(25-LEN(MI$[LN,2]))+FNNUM$(PYMT.EXPMTH,"00")+FNNUM$(PYMT.EXPYR,"####"); IF PYMT.PTYPE<>6 AND PYMT.PTYPE<>2 THEN LET ZZ$=ZZ$+MI$[LN,3]+FILL(6-LEN(MI$[LN,3]))
5030 IF SPCR.AMT=0 THEN IF CVS(MI$[LN,4],3)="" THEN GOTO 5155
5035 IF CVS(MI$[LN,4],2)="" THEN GOTO 5050
5040 LET F0=19; READ (FILE[F0],KNUM=0,KEY=MI$[LN,4],DOM=5045,ERR=GENERROR)IOL=ARCRXXX; GOTO 5055
5045 GOSUB CLEAR_RECEIPT_KEY
5050 LET REWRITE=0; GOTO 5065
5055 IF CR6$(1,60)=ZZ$ AND CR2[0]=SPCR.AMT THEN GOTO 5150
5060 LET REWRITE=1
5065 IF REWRITE AND SPCR.AMT=0 THEN REMOVE (FILE[19],KEY=CR0$,ERR=GENERROR); GOSUB REST; GOTO 5155
5070 IF O2$(10,1)<>"1" AND REWRITE AND MI$[LN,2]<>TH0$(1,6) THEN REMOVE (FILE[19],KEY=CR0$,ERR=GENERROR); LET CR0$(1,6)=MI$[LN,2],MI$[LN,4]=MI$[LN,2]
5075 READ (FILE[25],KEY=PYMT.MOP$,DOM=5155,ERR=GENERROR)IOL=ARPYXXX
5080 LET CR1$=TH1$(17,8)+FILL(6); REM "invc #"
5085 IF P1<3 THEN LET CR1$(9,6)=MI$[LN,1](1,6) ELSE IF P1=6 THEN LET CR1$(9,6)=P3$; REM "bank id"
5090 LET CR1[0]=SPCR.DAT,CR1[1]=0,CR1[2]=0; REM "pmt date, aging pd, check #"
5095 IF CR1[0]<1 THEN LET CR1[0]=WKSDATE
5100 IF P1=2 THEN LET CR5$(10,10)=MI$[LN,3](1,10); REM "check #"
5105 LET CR2$=TH2$,CR3$=MOPACCT$; REM "cust id, gl acct"
5110 LET CR2[0]=SPCR.AMT*ORD_CRED_FLAG; REM "pmt amt"
5115 LET CR2[2]=P1
5120 LET X$=FND$(CR1[0]),X=CR1[0]; GOSUB GENPC1; LET CR4$=FNNUM$(PERIOD,"00")+FNNUM$(YEAR,"0000"),O9$=""; REM "gl pd"
5125 IF P1=3 THEN LET CR6$=ZZ$+TRAN$ ELSE LET CR6$=ZZ$+TRAN$; REM "mop code +(cc# or bank) + (cardholder or dep#) + exp date +(authcode or check#)"
5130 IF P1=6 THEN LET CR5$=MI$[LN,3]+FILL(11),CR6$=ZZ$+FILL(6)+TRAN$+FILL(4) ELSE LET CR5$=FILL(20)
5135 IF P1=2 THEN LET CR5$=FILL(9)+MI$[LN,3]+FILL(1),CR6$=ZZ$(1,48)+FILL(12)+TRAN$
5138 IF P1=3 THEN IF RCPC_CUSTOM_FIELD THEN LET CRCFV.MID$=MID$
5140 IF REWRITE THEN WRITE (FILE[19],ERR=GENERROR)IOL=ARCRXXX; GOSUB REST
5145 IF REWRITE=0 THEN GOSUB WRITERECEIPT; LET MI$[LN,4]=CR0$+FILL(4),SPCR.CASH_RCPT$=CR0$(1,10)
5150 IF CVS(SPCR.DRAWER_ID$,3)="" THEN LET SPCR.DRAWER_ID$=STBL("SP_DRAWER_ID",ERR=*NEXT)+FILL(4),SPCR.DRAWER_ID$=SPCR.DRAWER_ID$(1,4); IF SPCR.DRAWER_ID$=FILL(4) THEN LET SPCR.DRAWER_ID$(1,4)=FID(0)
5155 LET SPCR$=FIELD(SPCR$); WRITE RECORD (FILE[206])SPCR$
5160 READ (FILE[19],KNUM=0,KEY="",ERR=5165)
5165 RETURN
5300 REM 5300,5 "----- Clearing receipt key if Cash receipt record not found"
5305 CLEAR_RECEIPT_KEY:
5310 LET SPCR.CASH_RCPT$=FILL(10),SPCR$=FIELD(SPCR$)
5315 WRITE RECORD(FILE[206],ERR=GENERROR)SPCR$
5320 RETURN
5400 REM 5400,5 "----- Write a New Cash Receipt"
5405 WRITERECEIPT:
5410 LET CR0$=TRAN$(1,6)+FILL(4)
5415 IF CR0$(1,6)=FILL(6) THEN IF P1<3 THEN LET CR0$(1,6)=CR6$(24,6)
5420 CALL "ARCRTRAN.PUB",FILE[19],FILE[20],CR0$,CR1$,CR1[ALL],CR2$,CR3$,CR2[ALL],CR4$,CR5$,CR6$,CRCFF$,CRCFV$
5425 REST:
5430 IF CR0$(1,6)=LASTBAT$ THEN GOTO 5445
5435 LET LASTBAT$=TRAN$(1,6),PARAM=3,STATUS=-3
5440 CALL "ARRESTRT.PUB",FILE[15],F1,LASTBAT$,TERM$,MSG$,PICK$,PARAM,STATUS
5445 RETURN
5700 REM "-----  Handle Record In Use"
5705 INUSE:
5710 LET INUSE=1
5799 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 othercommands"
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
6195 FLAGS: IF GUI=0 THEN IF CVS(WINDID$,3)="" THEN PRINT 'SB',STBL("FBX2"),'BOX'(48,18,9,0),STBL("FTXT2"), ELSE PRINT 'BR','SB',@(48,18)," Inquiry ",'ER', FI FI; RETURN
6200 REM 0 - (INFO) 6200-6210
6201 INFO:
6210 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
7500 PROMPTS:
7502 IF GUI THEN GOTO GUI_PROMPTS
7505 GOSUB BOX
7510 PRINT 'SB',STBL("FTXT3"),
7530 PRINT @(7,2),"Date",@(16),"Method",@(37),"Amount",@(45),"Posted?",
7540 PRINT @(2,16),"Total",@(19),"Pymts",@(36),"Net Due",
7570 LET X2=0; RETURN
7600 PROMPTS2:
7605 IF GUI THEN GOTO GUI_PROMPTS2
7610 GOSUB BOX2
7615 PRINT 'SB',STBL("FTXT"),
7620 PRINT @(7,3),"Amount Due",@(35),"Payment Method",
7622 PRINT @(35,5),"Payment Amount",
7623 PRINT @(35,6),"Convenience Fee",@(35,7),"Total Payment",
7624 PRINT @(35,9),"Payment Date",
7626 PRINT @(35,11),FILL(38),@(35,12),FILL(38),@(35,13),FILL(38),
7628 IF PYMT.PTYPE=3 THEN GOTO 7640
7630 PRINT @(35,11),"Check Number"
7632 PRINT @(35,13),"Memo",
7636 GOTO 7660
7640 PRINT @(35,11),"Card #",
7642 PRINT @(35,12),"Name",
7644 PRINT @(35,13),"Expires",@(46),"/",@(54),"Auth",
7660 RETURN
7665 DATA2:
7670 IF GUI THEN GOTO GUI_DATA2
7672 PRINT 'SF',@(19,3),FNNUM$(NETTOT,M1$),@(51),PYMT.MOP$,
7674 PRINT @(51,5),FNNUM$(SPCR.AMT,M1$),
7675 print @(51,6),FNNUM$(CCFEE,M1$),@(51,7),FNNUM$(SPCR.AMT+CCFEE,M1$),
7676 PRINT @(51,9),FND$(SPCR.DAT),
7678 IF PYMT.PTYPE=2 THEN PRINT @(51,11),MI$[LN,3], ELSE  PRINT @(51,11),FILL(10),
7680 IF PYMT.PTYPE<>3 THEN PRINT @(43,13),SPCR.MEMO$,; GOTO 7699
7682 PRINT @(44,11),FNCC_NUM$(MI$[LN,1]),
7684 PRINT @(44,12),MI$[LN,2],
7686 PRINT @(44,13),FNNUM$(PYMT.EXPMTH,"00"),@(47),FNNUM$(PYMT.EXPYR,"####"),@(60),MI$[LN,3],
7699 RETURN
7700 DATA: REM "DISPLAY DATA" 
7702 IF GUI THEN GOTO GUI_DATA
7704 PRINT 'CF','SF',STBL("FTXT3"),
7710 RETURN
7750 REM DATA2:
7760 LET LN[8]=MAX(1,LN[8]),LINE=LN[8]
7765 GOSUB BUILDLINE
7767 IF GUI THEN GOTO GUI_DATA2
7770 FOR I=0 TO LN[3]-1
7775 PRINT 'SF',@(LN[4],(LN[8]*LN[3])+I),LN$[LN[8],I](1,LN[12]),
7780 NEXT I
7790 RETURN
7800 BOX2:
7805 PRINT 'PUSH',
7810 LET MOPWIND=1
7815 PRINT 'BACKGR',STBL("FBKG2"),STBL("FBX2"),'DEFAULT',
7820 PRINT 'SCROLL'(1,0,77,18),'SCROLL'("ON"),'CS','SB',
7825 LET PTITLE$=" Prepayment Entry "+FNNUM$(LN,"#")+" "
7830 PRINT 'BOX'(0,0,77,18),STBL("FTTL2"),@(INT((60-LEN(PTITLE$))/2)),PTITLE$,
7835 PRINT 'SCROLL'("RESET"),
7840 RETURN
7900 BOX: REM "Display Boxes"
7905 PRINT 'BACKGR',STBL("FBKG3"),STBL("FBX3"),'DEFAULT','CS','SB',
7910 PRINT 'BOX'(0,0,53,18),
7930 IF POS(TASK$="AE")=0 THEN PRINT 'GS',@(0,15),"6",'BOX'(1,15,51,0),@(52,15),"7",'GE',
7985 PRINT 'SB',STBL("FTTL3"),@(INT((50-LEN(TITLE1$))/2),0),TITLE1$,
7995 RETURN
8300 REM 0 - (GENOPEN) 8300-8345
8305 GENOPEN: REM "08/10/2007 General file OPEN routine"
8310 LET GENOPEN_MSG$="",YSAVE$=YDISABLE$,YDISABLE$="XSJPUD",Y$=""
8315 CALL "GENOPEN.PUB",FILE[ALL],F$,F0,TASK,TPL$,GENOPEN_MSG$,Y$,GENOPEN$
8320 IF Y$="M" THEN GOTO 9990
8330 IF POS("Unavailable"=GENOPEN_MSG$) THEN LET X9$=GENOPEN_MSG$; GOSUB GENERROR; IF GENOPEN.RET$<>"" THEN GOTO GENOPEN_DONE ELSE LET YDISABLE$=YSAVE$,YSAVE$=""; GOTO GENOPEN
8335 IF GENOPEN_MSG$<>"" THEN LET O7=1,X9$=GENOPEN_MSG$; GOSUB GENERROR; GOTO 9990
8340 GENOPEN_DONE:
8345 LET YDISABLE$=YSAVE$,YSAVE$=""; 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,QUIT,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 MOPWIND THEN LET MOPWIND=0; IF GUI THEN GOSUB DESTROY_GUI_WINDOW2 ELSE PRINT 'POP',
8475 IF LN[9]=0 THEN GOTO QUIT ELSE GOTO ABANDON
8480 GOTO 13200
8490 REM 0 - (GENERROR2) 8490-8499
8491 CALL "GENPSCR.PUB"
8492 LET Y$=""
8495 RETURN
8499 RETRY
9000 REM 0 - (GENDATE) 9000-9099                   
9001 GENDATE: REM "06/18/92 - General Date Routine"
9010 CALL "GENDATE.PUB",X$,X1$,X,X0,X1,X3
9099 RETURN
9200 REM "DELETE ROUTINE" 
9205 IF LEN(LN$[LN[8],0])<LN[12] THEN RETURN
9210 GOSUB CURRKEY; READ RECORD(FILE[206],KEY=CURRKEY$,DOM=9235)SPCR$
9215 GOSUB LOAD_CR; IF PYMT.POSTED$="Y" THEN LET X9$="Can not delete a posted payment."; GOSUB GENERROR; RETURN
9220 LET O7=3; GOSUB GENERROR
9225 IF Y$<>"D" THEN RETURN
9228 LET SPCR.AMT=0; GOSUB RECEIPTS
9230 REMOVE (FILE[206],KEY=CURRKEY$,DOM=9231)
9235 GOSUB BUILD; GOSUB TOTALS
9240 LET Y$="X"; GOTO 8452
9300 REM "Check if Records Exist"                
9301 ONFILE:
9310 LET ONFILE=0
9320 READ (FILE[206],KNUM=0,KEY=FILL(14)+TH0$(7,8),DOM=9321)
9325 LET XX$=KEY(FILE[206],ERR=9326); IF XX$(1,22)=FILL(14)+TH0$(7,8) THEN LET ONFILE=1
9330 RETURN
9400 REM 0 - (GENPC) 9400-9448
9401 GENPC: REM "04/31/2009 - Read Period Conversion Table"
9410 LET SELECTION=0; GOTO 9440
9420 GENPC1: REM "9500 Section does Conversion - Date to Period"
9427 LET SELECTION=1,DATE$=X$,LOCKFLAG=0,INVALIDYEAR=0; GOTO 9440
9430 GENPC2: REM "This Section does Conversion - Period to Dates"
9435 LET SELECTION=2,PERIOD=X,BEGDATE=-1,ENDDATE=-1,LOCKFLAG=0,INVALIDYEAR=0
9440 CALL "GENPC.PUB",FILE[ALL],SELECTION,DATE$,O9$,BEGDATE,ENDDATE,PERIOD,PPY,YEAR,APP$,LOCKFLAG,INVALIDYEAR,RMPH$,RMPL$,MSG$
9442 IF SELECTION=1 THEN LET X=PERIOD
9444 IF CVS(MSG$,3)<>"" THEN LET X9$=MSG$,MSG$=""; GOSUB GENERROR
9448 RETURN
9990 QUIT: IF MOPWIND THEN LET MOPWIND=0; IF GUI THEN GOSUB DESTROY_GUI_WINDOW2 ELSE PRINT 'POP',; LET Y$="X"; GOTO 8452
9991 GOSUB ONFILE; IF ONFILE=0 THEN GOTO 9993
9992 IF POS(TASK$="EA") THEN LET Y$="X"; GOTO 8452
9994 IF MAINWIND THEN LET MAINWIND=0; IF GUI=0 THEN PRINT 'POP', ELSE GOSUB DESTROY_GUI_WINDOW
9998 EXIT
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
10010 DEF FNGUINUM$(XX,XX1$,ID)
10015 LET XX$=STR(XX:XX1$,ERR=10020); GOTO 10025
10020 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$))
10025 LET TF$=SENDMSG(OSGUI.CHAN,ID,23,0,XX1$)
10030 RETURN CVS(XX$,3)
10035 FNEND
13100 APPEND:
13105 LET X8$=" ",ML=1; GOSUB DISMSG
13110 IF TASK$<>"A" THEN LET TASK$="E"; GOTO 13170
13115 DIM SPCR$:FATTR(SPCR$),PYMT$:FATTR(PYMT$),MI$[1:2,1:5]
13120 LET SPCR.ID$=FILL(14)+TH0$(7,8),SPCR.SEQ$="000",SPCR.MEMO$=FILL(25),SPCR.CASH_RCPT$=FILL(10),SPCR.HIST_SEQ$=FILL(8),SPCR.DRAWER_ID$=FILL(4)
13125 LET SPCR.AMT=0,SPCR.DAT=NUM(STBL("JULDATE"))
13150 READ (FILE[206],KNUM=0,KEY=FILL(14)+TH0$(7,8)+"}}}",DOM=*NEXT)
13155 LET X$=KEYP(FILE[206],ERR=13161)
13160 IF X$(1,22)=FILL(14)+TH0$(7,8) THEN LET SPCR.SEQ$=STR(NUM(X$(23,3))+1:"000")
13165 GOTO 13190
13172 IF LEN(LN$[LN[8],0])<LN[12] THEN GOTO SUBCONTROL
13175 GOSUB CURRKEY
13180 READ RECORD(FILE[206],KEY=CURRKEY$,DOM=SUBCONTROL)SPCR$
13185 GOSUB LOAD_CR; IF PYMT.POSTED$="Y" THEN LET X9$="Can not Edit a Posted Payment";  GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO CONTROL
13190 GOSUB PROMPTS2
13195 GOSUB DATA2
13200 LET X0=3,X1=51,X3=0,X4=3,X$=PYMT.MOP$,WINDID$="ARPYT W1",SELVAL$="",X2=SX2,PROGID$="ARACPCFM.PUB",SAVX$=X$,GUI_ID=4000,MID$="",ccfee=0,PCT=0; IF CVS(X$,3)="" THEN LET X$=C7$(3,3) FI; IF CVS(X$,3)="" THEN LET X9=1
13202 GOSUB GENINPUT; REM "Method of Payment"
13204 IF Y$="U" THEN GOTO 13200
13206 LET PYMT.MOP$=X$+FILL(X4-LEN(X$)); IF PYMT.MOP$=FILL(3) THEN IF TASK$="A" THEN GOTO QUIT ELSE GOSUB 9200; GOTO 13200
13208 DIM P2[4]; READ (FILE[25],KEY=PYMT.MOP$,DOM=*NEXT)IOL=ARPYXXX; GOTO 13211
13210 LET O7=8; GOSUB GENERROR; GOSUB CLEAR_GLOBAL; GOTO 13200
13211 IF P1=3 THEN IF STBL("CID")="S" THEN LET X9$="If American Express is used, make sure to enter fee using item AMX."; gosub generror
13212 IF P1=6 THEN LET X9$="Must enter Direct Debit in Cash Receipts"; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO 13200 else IF O2$(15,1)<>"1" THEN GOTO 13222
13214 IF P1=1 OR P1=2 THEN LET PYMT.BNK$=P3$ ELSE LET PYMT.BNK$=""; GOTO 13222
13216 READ RECORD (FILE[14],KEY=PYMT.BNK$,KNUM=0,DOM=*NEXT)RMBA$; GOTO 13220
13218 LET X9$="Bank Not Found"; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO 13200
13220 IF RMBA.STAT$="I" THEN LET X9$="Entry of Payment Method not allowed with Inactive Bank IDs"; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO 13200
13222 IF BAINST=0 AND P1=6 THEN LET X9$="You must be using Banking to process direct debit payments."; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO 13200
13224 LET PYMT.PTYPE=P1,PYMT.MOPDESC$=P1$+FILL(25),PYMT.MOPDESC$=PYMT.MOPDESC$(1,25)
13226 IF SAVX$<>PYMT.MOP$ THEN FOR I=1 TO 3; LET MI$[LN,I]=""; NEXT I; LET SPCR.MEMO$=FILL(25),PYMT.EXPMTH=0,PYMT.EXPYR=0
13228 IF GUI=0 THEN GOSUB 7615 ELSE GOSUB GUI_MOP_PROMPTS FI; GOSUB DATA2
13230 LET X2=P1; IF X2>4 THEN LET X2=4
13232 IF P1<3 THEN LET MI$[LN,1]=P3$
13234 IF P1<3 THEN IF O2$(15,1)="1" AND CVS(MI$[LN,1],2)<>"" THEN GOSUB BANKDESC; IF X9$<>"" THEN IF P1=2 THEN GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO 13200
13236 IF P1<3 AND O2$(10,1)="1" THEN LET MI$[LN,2]=BATCH$
13238 IF P1=1 THEN LET MI$[LN,3]="CASH  "
13240 IF P1=3 AND STBL("CID")="L" AND TASK$<>"E" THEN GOSUB PROMPT_DEBIT; IF Y$="U" THEN GOTO 13200
13250 LET X0=5,X1=51,X3=1,X1$=M1$,X4=LEN(X1$),X=SPCR.AMT,GUI_ID=4010; IF X=0 THEN LET Y$=""
13252 IF TASK$="A" AND X=0 AND NETTOT>0 THEN LET X=NETTOT
13253 IF STBL("RCCSTNAM",ERR=*NEXT)="ORION" AND P1=1 AND POS_TENDERED IF NETTOT>=POS_TENDERED THEN LET X=POS_TENDERED FI; SPCR.AMT=X;GOSUB DATA2;GOSUB CLEAR_GLOBAL;GOTO 13258;REM RRW/RCG 010417
13254 GOSUB GENINPUT; REM "Amount"
13256 IF Y$="U" THEN GOTO 13200
13258 LET SPCR.AMT=X
13260 IF SPCR.AMT=0 THEN IF TASK$="A" THEN LET X9$="Amount is required."; GOSUB GENERROR; GOSUB CLEAR_GLOBAL; GOTO 13250 ELSE GOSUB 9200; GOTO 13250
13262 IF PCT THEN SPREC=TCB(14); PRECISION 4; LET CCFEE=ROUND(SPCR.AMT*(PCT/100),2); PRECISION SPREC; GOSUB DATA2
13265 IF RCG_PYMT_QUICK THEN LET Y$="J"
13270 LET X0=9,X1=51,X3=6,X=SPCR.DAT,X$=FND$(X),P0=1,GUI_ID=4020
13272 GOSUB GENINPUT; REM "Date"
13273 IF Y$="U" AND STBL("RCCSTNAM",ERR=*NEXT)="ORION" AND P1=1 AND POS_TENDERED  GOSUB CLEAR_GLOBAL;GOTO 13200;REM 010407
13274 IF Y$="U" THEN GOTO 13250
13276 IF X<1 THEN LET O7=5; GOSUB GENERROR; GOSUB CLEAR_GLOBAL; GOTO 13270
13278 LET SPCR.DAT=X
13280 GOSUB GENPC1
13282 IF LOCKFLAG OR INVALIDYEAR THEN LET X9=1; GOTO 13270
13290 IF P1<>2 GOSUB CLEAR_GLOBAL; IF P1=1 THEN GOTO 13350 ELSE GOTO 13350
13310 LET X0=11,X1=51,X3=0,X4=10,X$=MI$[LN,3],GUI_ID=4030
13315 IF CVS(X$,3)="" THEN LET Y$=""
13320 GOSUB GENINPUT; REM "Check No."
13325 IF Y$="U" THEN GOTO 13270
13330 IF CVS(X$,3)="" THEN LET X9$="A Check Number is Required."; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO 13310
13335 LET MI$[LN,3]=X$+FILL(X4-LEN(X$))
13380 IF P1=3 THEN IF RCPCINST THEN GOTO CCSETUP ELSE GOTO 13450; REM "CWE/RCG"
13385 IF RCG_PYMT_QUICK THEN LET Y$="J"
13400 LET X0=13,X1=43,X3=0,X4=25,X$=SPCR.MEMO$,GUI_ID=4040
13410 GOSUB GENINPUT; REM "Note/Memo"
13415 IF Y$="U" THEN IF P1=2 THEN GOTO 13310 ELSE GOSUB CLEAR_GLOBAL; GOTO 13270
13420 LET SPCR.MEMO$=X$+FILL(25),SPCR.MEMO$=SPCR.MEMO$(1,25)
13430 IF P1<>3 THEN GOSUB CLEAR_GLOBAL; GOTO 14000
13450 LET X0=11,X1=44,X3=0,X4=20,X$=MI$[LN,1],GUI_ID=4050
13452 SKIPCCEXPIREVAL=0;IF STBL("RCCSTNAM",ERR=*NEXT)="GEHARDWARE" SKIPCCEXPIREVAL=1;REM RRW/RCG 082817
13460 GOSUB GENINPUT; REM "Card #"
13465 IF Y$="U" THEN GOTO 13250
13470 LET MI$[LN,1]=X$+FILL(X4-LEN(X$))
13475 IF GUI=0 THEN PRINT 'SF',@(X1,X0),FILL(20),@(X1),FNCC_NUM$(MI$[LN,1]), else print (OSGUI.CHAN)'TITLE'(GUI_ID,FNCC_NUM$(MI$[LN,1]))
13500 LET X0=12,X1=44,X3=0,X4=25,X$=MI$[LN,2],GUI_ID=4060
13510 GOSUB GENINPUT; REM "Name"
13515 IF Y$="U" THEN GOTO 13450
13520 LET MI$[LN,2]=X$+FILL(X4-LEN(X$))
13550 LET X0=13,X1=44,X3=1,X1$="00",X4=2,X=PYMT.EXPMTH,GUI_ID=4070
13560 GOSUB GENINPUT; REM "Period"
13565 IF Y$="U" THEN GOTO 13500
13570 LET PYMT.EXPMTH=X
13574 IF SKIPCCEXPIREVAL AND X=0 GOTO 13650;REM RRW/RCG 082817
13575 IF X<1 OR X>12 THEN LET X9$="Month must be between 1 and 12."; GOSUB GENERROR; GOSUB CLEAR_GLOBAL; GOTO 13550
13600 LET X0=13,X1=47,X3=11,X=PYMT.EXPYR,X$=STR(X),GUI_ID=4080
13610 GOSUB GENINPUT; REM "Year"
13615 IF Y$="U" THEN GOTO 13550
13620 LET PYMT.EXPYR=X
13625 LET X$="01/01/"+STR(PYMT.EXPYR)
13630 GOSUB GENDATE
13634 IF SKIPCCEXPIREVAL AND X<=0 GOTO 13646;REM RRW/RCG 082817
13635 IF X<0 THEN LET X9$="Invalid Year."; GOSUB GENERROR; GOSUB CLEAR_GLOBAL; GOTO 13600
13645 LET MO=NUM(DATE(NUM(STBL("JULDATE")):"%M")),YR=NUM(DATE(NUM(STBL("JULDATE")):"%Y")); IF (PYMT.EXPMTH<MO AND PYMT.EXPYR<=YR) OR PYMT.EXPYR<YR THEN LET X9$="Credit card has expired."; GOSUB GENERROR; GOSUB CLEAR_GLOBAL; IF O2$(29,1)<>"1" THEN GOTO 13600
13650 LET X0=13,X1=60,X3=0,X4=6,X$=MI$[LN,3],GUI_ID=4090
13660 GOSUB GENINPUT; REM "Auth"
13665 IF Y$="U" THEN GOTO 13600
13670 LET MI$[LN,3]=X$+FILL(X4-LEN(X$))
14000 REM "All Done"
14005 IF RCG_PYMT_QUICK THEN LET Y$="P"; GOTO 14025
14010 LET O7=2; GOSUB GENERROR
14020 IF Y$="U" THEN GOSUB CLEAR_GLOBAL; IF P1=3 THEN IF RCPCINST THEN GOTO CCSETUP ELSE GOTO 13650 ELSE GOTO 13400
14025 IF Y$<>"P" THEN GOTO 14000
14030 IF MOPWIND THEN LET MOPWIND=0; IF GUI THEN GOSUB DESTROY_GUI_WINDOW2 ELSE PRINT 'POP',
14040 GOSUB RECEIPTS
14042 CALL"SPPOPDRW.PUB",ERR=*NEXT;REM RRW/RCG POP DRAWER USING STBL("SP_DRAWER_ID") 122216
14050 IF CCFEE=0 THEN GOTO 14200
14055 LET OLDMISC=TH5[4],OLDMISCCLASS$=TH1$(41,2),TH5[4]=TH5[4]+CCFEE
14060 IF S6=0 THEN LET TH1$(41,2)=FILL(2); GOTO 14075
14065 LET TH1$(41,2)=STR(0:"00")
14070 IF TH5[4]=OLDMISC AND TH1$(41,2)=OLDMISCCLASS$ THEN GOTO 14200
14075 DIM OLDTAX[1:5,1:4],TAX[1:5,1:4]
14080 IF S6 THEN CALL "GENTAX.PUB",FILE[ALL],TH1$(25,6),OLDMISCCLASS$,OLDMISC,OLDTAX[ALL],"SM",0,RMGC,RMTH,RMTD
14085 IF TH5[4]<>0 AND S6 THEN CALL "GENTAX.PUB",FILE[ALL],TH1$(25,6),TH1$(41,2),TH5[4],TAX[ALL],"SM",0,RMGC,RMTH,RMTD
14090 LET TH6[ALL]=TH6[ALL]-OLDTAX[ALL]
14095 IF TH5[4]<>0 THEN LET TH6[ALL]=TH6[ALL]+TAX[ALL]
14100 FOR LOOP=1 TO 5; LET TH5[2]=TH5[2]-OLDTAX[LOOP,1]+TAX[LOOP,1]; NEXT LOOP
14105 DIM OLDTAX[0],TAX[0]; LET OLDMISC=0
14200 LET STARTKEY$=""; IF TASK$="E" THEN IF LEN(LN$[1,0])>LN[12] THEN LET STARTKEY$=LN$[1,0](LN[12]+1)
14205 IF TASK$="A" AND LN[9]<>0 THEN LET TASK$=""; GOSUB TOTALS; GOTO GOTOEND
14210 LET TASK$=""; GOSUB BUILD; GOSUB TOTALS; GOTO CONTROL
14600 REM "----- Prompt if Debit Card"
14605 PROMPT_DEBIT:
14610 LET CCFEE=0,PCT=0,XX=POS("%"=P1$); IF XX=0 THEN RETURN
14615 LET TEMP$=P1$(1,XX-1),XX=POS(" "=TEMP$,-1); IF XX=0 THEN XX=1
14620 LET PCT=NUM(TEMP$(XX+1),ERR=14660); IF PCT=0 THEN RETURN
14630 PRINT 'WINDOW'(0,0,80,25),'CAPTURE','BACKGR',STBL("FBKG"),STBL("FTXT"),'DEFAULT',@(2,22),FILL(70),@(2),'SF',"Card Type: (C)redit, (D)ebit",
14632 let x0=22,x1=32,x3=5,x4=6,x1$="CreditDebit ",x$="",x9=1
14634 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$
14636 PRINT 'POP',
14640 IF POS(Y$="USXM") THEN LET Y$="U",PCT=0; RETURN
14645 IF POS(X$(1,1)="CD")=0 THEN LET X9$="Invalid Selection.  Must Select (C)redit or (D)ebit."; GOSUB CLEAR_GLOBAL; GOSUB GENERROR; GOTO 14632
14650 IF POS(X$(1,1)="D") THEN LET PCT=0
14660 RETURN
17510 GUI_PROMPTS:
17512 IF SOENTREC_CONTEXT THEN PRINT (OSGUI.CHAN)'CONTEXT'(OSGUI.CUR_CONTEXT[SOENTREC_CONTEXT]); LET OSGUI.CONTEXT_POINTER=SOENTREC_CONTEXT; GOTO 17555
17521 LET OSGUI.SCRNID$="SOENTREC.BRC"; FOR I=1 TO NUM(STBL("GUIWIND")); IF OSGUI.WIND_ID[I]=0 THEN LET OSGUI.WIND_ID[I]=1,OSGUI.CONTEXT_POINTER=I,SOENTREC_CONTEXT=I; EXITTO 17530 FI; NEXT I
17530 LET MSG$=""; GOSUB ASSIGN_COLUMN_HEADINGS; CALL "GENGURES.PUB",FILE[ALL],OSGUI$,MSG$; IF CVS(MSG$,3)<>"" THEN LET X9$=MSG$,O7=1; GOSUB GENERROR; GOTO QUIT
17550 LET MENU$=MENU1$+MENUHLE$+MENUHLP$; PRINT (OSGUI.CHAN)'SETMENU',MENU$
17555 PRINT (OSGUI.CHAN)'TITLE'(0,TITLE1$),'SHOW'(0)
17560 LET MAINWIND=1
17565 RETURN
17570 GUI_PROMPTS2:
17572 IF SOENTREC_PAYMENT_CONTEXT THEN PRINT (OSGUI.CHAN)'CONTEXT'(OSGUI.CUR_CONTEXT[SOENTREC_PAYMENT_CONTEXT]); LET OSGUI.CONTEXT_POINTER=SOENTREC_PAYMENT_CONTEXT; GOTO 17585
17574 LET OSGUI.SCRNID$="SOENTREC.BRC"; FOR I=1 TO NUM(STBL("GUIWIND")); IF OSGUI.WIND_ID[I]=0 THEN LET OSGUI.WIND_ID[I]=2,OSGUI.CONTEXT_POINTER=I,SOENTREC_PAYMENT_CONTEXT=I; EXITTO 17576 FI; NEXT I
17576 LET MSG$=""; CALL "GENGURES.PUB",FILE[ALL],OSGUI$,MSG$; IF CVS(MSG$,3)<>"" THEN LET X9$=MSG$,O7=1; GOSUB GENERROR; GOTO QUIT
17580 LET OSGUI.BASE_CONTEXT[I]=OSGUI.BASE_CONTEXT[1]
17582 LET MENU$=MENU1$+MENUHLP$; PRINT (OSGUI.CHAN)'SETMENU',MENU$
17584 GOSUB CENTER_FORM
17585 LET PTITLE$=" Prepayment Entry "+SPCR.SEQ$+" "
17586 GOSUB GUI_MOP_PROMPTS; PRINT (OSGUI.CHAN)'TITLE'(0,PTITLE$),'SHOW'(0)
17588 LET MOPWIND=1
17595 RETURN
17600 REM "------- GUI MOP Prompts"
17605 GUI_MOP_PROMPTS:
17610 IF PYMT.PTYPE=3 THEN GOTO 17640
17615 PRINT (OSGUI.CHAN)'TITLE'(1040,"Check Number"),'TITLE'(1050,""),'TITLE'(1060,"Memo")
17620 PRINT (OSGUI.CHAN)'ENABLE'(4030,4040),'HIDE'(1070,1080,4050,4060,4070,4080,4090),'SHOW'(4030,4040); IF PYMT.PTYPE<>2 THEN PRINT (OSGUI.CHAN)'DISABLE'(4030) ELSE PRINT (OSGUI.CHAN)'ENABLE'(4030)
17625 GOTO 17650
17640 PRINT (OSGUI.CHAN)'TITLE'(1040,"Card #"),'TITLE'(1050,"Name"),'TITLE'(1060,"Expires")
17645 PRINT (OSGUI.CHAN)'HIDE'(4030,4040),'SHOW'(1070,1080,4050,4060,4070,4080,4090)
17650 RETURN
17700 REM                                                                     
17705 GUI_DATA:
17729 RETURN
17800 GUI_DATA2:
17810 PRINT (OSGUI.CHAN)'TITLE'(2000,FNNUM$(NETTOT,M1$))
17815 PRINT (OSGUI.CHAN)'TITLE'(4000,PYMT.MOP$)
17820 PRINT (OSGUI.CHAN)'TITLE'(4010,FNGUINUM$(SPCR.AMT,M1$,4010))
17825 PRINT (OSGUI.CHAN)'TITLE'(4020,FND$(SPCR.DAT))
17830 IF PYMT.PTYPE=2 THEN PRINT (OSGUI.CHAN)'TITLE'(4030,MI$[LN,3]) ELSE PRINT (OSGUI.CHAN)'TITLE'(4030,"")
17835 IF PYMT.PTYPE<>3 THEN PRINT (OSGUI.CHAN)'TITLE'(4040,SPCR.MEMO$); GOTO 17860 ELSE PRINT (OSGUI.CHAN)'TITLE'(4040,"")
17840 PRINT (OSGUI.CHAN)'TITLE'(4050,FNCC_NUM$(MI$[LN,1]))
17845 PRINT (OSGUI.CHAN)'TITLE'(4060,MI$[LN,2])
17850 PRINT (OSGUI.CHAN)'TITLE'(4070,FNGUINUM$(PYMT.EXPMTH,"00",4070)),'TITLE'(4080,FNGUINUM$(PYMT.EXPYR,"####",4080))
17855 PRINT (OSGUI.CHAN)'TITLE'(4090,MI$[LN,3])
17860 RETURN
18000 REM 18000,5 "----- Disable Fields"                                                                                                              
18005 ENABLE_BUTTONS:
18010 IF GUI THEN PRINT (OSGUI.CHAN)'ENABLE'(7000,8001,8002,8003,8004,8005,8006,9000,9010,9020)
18015 RETURN
18100 REM 18100,5 "----- Disable Fields"                                                                                                              
18105 ENABLE_FIELDS:
18110 IF GUI THEN PRINT (OSGUI.CHAN)'DISABLE'(7000,8001,8002,8003,8004,8005,8006,9000,9010,90200)
18111 IF STBL("INTTYPE")="BBJ" THEN LET A$=SENDMSG(OSGUI.CHAN,7000,55,0,BCGR_COLOR$); REM "BBJ FIX"
18135 RETURN
18200 REM 18200,5 "----- Clear GUI Global"                                    
18205 CLEAR_GLOBAL:
18210 IF GUI THEN LET DUMMY$=STBL("!CLEAR","DESTID",ERR=18215)
18215 RETURN
18405 DESTROY_GUI_WINDOW:
18410 PRINT (OSGUI.CHAN)'HIDE'(0),'CONTEXT'(OSGUI.CUR_CONTEXT[SAVE_POINTER]);LET OSGUI.CONTEXT_POINTER=SAVE_POINTER,SAVE_POINTER=0
18415 RETURN
18420 REM 18420,5 "----- Destroy Window, either Tax or Prepays"
18425 DESTROY_GUI_WINDOW2:
18430 PRINT (OSGUI.CHAN)'HIDE'(0); LET OSGUI.CONTEXT_POINTER=SOENTREC_CONTEXT; PRINT (OSGUI.CHAN)'CONTEXT'(OSGUI.CUR_CONTEXT[OSGUI.CONTEXT_POINTER])
18435 RETURN
18500 REM 18500,5 "----- Setup Button Keys for HLE's                          
18505 GUI_BUTTONS:
18510 IF GUI=0 THEN RETURN
18515 DIM BUTTON_KEYS$[1:3,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]="D"
18520 RETURN
19000 REFRESH_HLE:
19005 DIM TI$:TMPL(OSGUI.CHAN,IND=1)
19007 LET ID=7000
19010 LET TI.COL%=0,TI.ALIGNMENT%=2,TI.STYLE%=0,TI.BACKCOLOR$=$FFFFFF$,TI.TEXTCOLOR$=$000000$,TI.ROW%=0,TI.BUF$=""; IF STBL("INTTYPE")="BBJ" THEN LET TI.BACKCOLOR$=BCGR_COLOR$; REM "BBJ FIX"
19015 LET TF$=SENDMSG(OSGUI.CHAN,ID,32,0,$$)
19020 LET TMP$=DIMS(GUI_LN[ALL]),BASE=DEC(TMP$(6,4)),NUM=DEC(TMP$(2,4))
19025 LET I=(LN[8]*4-3)-1; REM FOR I=0 TO LN[2]-1 STEP LN[3]
19030 FOR J=0 TO LN[3]-1
19035 LET TMP=1,TI.ROW%=I+J
19040 LET BEGIN_FLAG=0,END_FLAG=0; FOR K=BASE TO NUM; IF GUI_LN[K,1]=0 THEN GOTO 19085
19045 IF LEN(LN$[LN[7]+I/LN[3],J])>0 THEN IF LN$[LN[7]+I/LN[3],J](1,1)=$00$ THEN IF BEGIN_FLAG=0 THEN LET TI.BUF$="< begin >",TI.COL%=K-1,BEGIN_FLAG=1,TI.ALIGNMENT=0; GOTO 19065
19050 IF LEN(LN$[LN[7]+I/LN[3],J])>0 THEN IF LN$[LN[7]+I/LN[3],J](1,1)=$FF$ THEN IF END_FLAG=0 THEN LET TI.BUF$="< end >",TI.COL%=K-1,END_FLAG=1,TI.ALIGNMENT=0; GOTO 19065
19055 IF LEN(LN$[LN[7]+I/LN[3],J])>0 THEN IF LN$[LN[7]+I/LN[3],J](1,1)=$FF$ THEN IF END_FLAG=0 THEN LET TI.BUF$="< end >",TI.COL%=K-1,END_FLAG=1,TI.ALIGNMENT=0; GOTO 19065
19059 REM 
19060 LET STRING$=LN$[LN[7]+I/LN[3],J](TMP,GUI_LN[K,1]-TMP+1),TI.BUF$=CVS(STRING$,2),TI.COL%=K-1,TI.ALIGNMENT=GUI_LN[K,2]
19065 IF LEN(TI.BUF$)<1 THEN LET TI.BUF$=" " FI; IF GUI_LN[K,2]=3 THEN IF TI.BUF$(1,1)="Y" THEN LET TI.STYLE=4 ELSE LET TI.STYLE=8 FI; LET TI.ALIGNMENT=2,TI.BUF$=""
19070 LET TMP$=SENDMSG(OSGUI.CHAN,ID,54,0,TI$)
19080 LET TMP=GUI_LN[K,1]+1
19085 NEXT K
19087 NEXT J
19089 REM NEXT I
19099 RETURN
19110 CENTER_FORM:
19120 PRINT (OSGUI.CHAN)'CONTEXT'(OSGUI.CUR_CONTEXT[SOENTREC_CONTEXT])
19130 LET TMP$=CTRL(OSGUI.CHAN,0,0),TMPXPOS=DEC(TMP$(1,2)),TMPYPOS=DEC(TMP$(3,2)),TMPWT=DEC(TMP$(5,2)),TMPHT=DEC(TMP$(7,2))
19140 PRINT (OSGUI.CHAN)'CONTEXT'(OSGUI.CUR_CONTEXT[OSGUI.CONTEXT_POINTER])
19150 LET TMP$=CTRL(OSGUI.CHAN,0,0),TMPWTPOP=DEC(TMP$(5,2)),TMPHTPOP=DEC(TMP$(7,2))
19160 LET TMPXPOP=TMPXPOS+INT((TMPWT-TMPWTPOP)/2),TMPYPOP=TMPYPOS+INT((TMPHT-TMPHTPOP)/2)
19170 PRINT (OSGUI.CHAN)'MOVE'(0,TMPXPOP,TMPYPOP)
19180 RETURN
19200 REM 19200, 5 "----- Assign column heading Values"
19205 ASSIGN_COLUMN_HEADINGS:
19210 NUMGRIDS=1
19220 LET OSGUI.HEADINGS$[1]="Date",OSGUI.HEADINGS$[2]="Method",OSGUI.HEADINGS$[3]="Amount ",OSGUI.HEADINGS$[4]="Posted",OSGUI.HEADINGS$[5]="",OSGUI.HEADINGS$[6]="",OSGUI.HEADINGS$[7]="",OSGUI.HEADINGS$[8]="",OSGUI.HEADINGS$[9]="",OSGUI.HEADINGS$[10]="",OSGUI.HEADINGS$[11]="",OSGUI.HEADINGS$[12]=""
19225 LET OSGUI.ALIGN[1]=2,OSGUI.ALIGN[2]=2,OSGUI.ALIGN[3]=1,OSGUI.ALIGN[4]=2,OSGUI.ALIGN[5]=2,OSGUI.ALIGN[6]=2,OSGUI.ALIGN[7]=2,OSGUI.ALIGN[8]=2,OSGUI.ALIGN[9]=0,OSGUI.ALIGN[10]=1,OSGUI.ALIGN[11]=0,OSGUI.ALIGN[12]=1
19230 LET OSGUI.HEADER_ID[1]=7100,OSGUI.GRID_ID[1]=7000,OSGUI.GRIDS=NUMGRIDS,OSGUI.GRIDPTR=1
19235 RETURN
20000 REM "Credit Card Routine"
20001 CCSETUP:
20010 CALL "RCPCCRED.PUB::INIT",PCCHG$
20020 LET PCCHG.TRANS$=TH0$(7,8)+STR(NUM(SPCR.SEQ$):"00"),PCCHG.SOURCE$="1",PCCHG.DAT=JUL(0,0,0),Y$=""
20025 LET PCCHG.CARD$=FILL(20),PCCHG.NAME$=FILL(25),PCCHG.EXPD$=FILL(6),PCCHG.AUTH$=FILL(6)
20030 LET PCCHG.AMT=SPCR.AMT+CCFEE,PCCHG.FEE=CCFEE; REM IF SPCR.SEQ$="000" THEN LET PCCHG.TAX=ROUND(TH5[2]+ROUND(TH5[9],2),2); REM "Tax used for corporate cards"
20035 LET PCCHG.CUST$=TH2$,PCCHG.CUSTPONUM$=TH8$(2,25),PCCHG.INVNO$=TH1$(17,8); IF CVS(PCCHG.INVNO$,3)="" THEN LET PCCHG.INVNO$=TH0$(7,8)
20040 LET PCCHG.MOP$=PYMT.MOP$+PYMT.MOPDESC$+FILL(30),PCCHG.MOP$=PCCHG.MOP$(1,30),PCCHG.ORDER_ID$=FILL(9,"}"); IF TASK$="E" THEN LET PCCHG.ORDER_ID$=SPCR.MEMO$(1,9); REM "Initializing PCCHG.ORDER_ID$ so a prior payment cannot be found"
20041 IF GUI THEN LET PCCHG.CONTEXT_POINTER=OSGUI.CUR_CONTEXT[1]
20042 GOSUB CHECK_ACTIVITY_LOG
20045 LET PCCHG.ORDSTAT=TH0; IF POS(STR(PCCHG.ORDSTAT)="79") THEN LET PCCHG.ORDSTAT=4
20050 CALL "RCPCCRED.PUB",FILE[ALL],PCCHG$,O2$,OSGUI$
20060 GOSUB CLEAR_GLOBAL; IF POS(PCCHG.Y$="UM") OR CVS(PCCHG.AUTH$,3)="" THEN IF TASK$="E" THEN GOTO 14000 ELSE GOTO 13200
20065 IF PCCHG.Y$="X" THEN LET PYMT.AMT=0,PYMT.MOP$=FILL(3),PYMT.MOPDESC$=FILL(25); GOSUB DATA; GOTO 13200
20090 LET SPCR.AMT=PCCHG.AMT; IF PCCHG.PARTIAL_AMT THEN LET SPCR.AMT=PCCHG.PARTIAL_AMT FI; GOSUB DATA
20100 LET MI$[LN,1]=PCCHG.CARD$,MI$[LN,2]=PCCHG.NAME$,PYMT.EXPMTH=NUM(PCCHG.EXPD$(1,2)),PYMT.EXPYR=NUM(PCCHG.EXPD$(3,4)),MI$[LN,3]=PCCHG.AUTH$,SPCR.MEMO$(1,9)=PCCHG.ORDER_ID$; GOSUB DATA
20105 LET MID$=""; IF CVS(PCCHG.AUTH$,3)<>"" THEN LET MID$=PCCHG.MID$
20110 IF PCCHG.PARTIAL_AMT=0 THEN IF PCCHG.Y$="P" THEN LET YDISABLE$=YDISABLE$+"M"; IF GUI THEN LET Y$="P"; GOTO PROCESS ELSE PRINT 'FL',"9",CHR(4),$1B$+"P"+$1B$+"P",
20120 LET Y$="P"; GOTO 14025
20150 REM "------ Check CC Activity log to see if this payment already used then rotate"
20155 CHECK_ACTIVITY_LOG:
20160 CALL "RCPCTPL"
20165 LET RCCT=UNT; OPEN(RCCT)"RCCT"+STBL("CID")
20170 LET RCG_MSG$="",SAVE_X=0; GOTO 20200; REM "This routine no longer needed because the order_id$ is stored in SPCR.MEMO$
20172 READ (RCCT,KNUM=3,KEY=PCCHG.TRANS$,DOM=*NEXT)
20174 READ RECORD (RCCT,END=20200)RCCT$
20176 IF RCCT.TRANS$<>PCCHG.TRANS$ THEN GOTO 20200
20180 IF CVS(RCCT.AUTH$,3)="" OR RCCT.CUST$<>TH2$ THEN GOTO 20190
20184 IF SAVE_X THEN IF SAVE_X=SPCR.AMT AND SAVE_X=RCCT.AMT THEN GOTO 20200
20186 IF SAVE_X THEN LET RCG_MSG$="Warning: Prior payment exists in the Activity Log for "+ CVS(STR(RCCT.AMT:"########.00"),3)+" on "+DATE(RCCT.DAT);goto 20200
20190 LET RCCT.TRANS$(9,2)="00"; REM "Rotate pymt 1 or pymt 2 to "00"
20195 LET RCCT$=FIELD(RCCT$); WRITE RECORD (RCCT)RCCT$
20200 REM "------- Check if card was added to the vault using Esc+I from thisorder.  If found, then default the Merchant and card"
20202 IF SAVE_X THEN GOTO 20215
20204 READ (RCCT,KNUM=3,KEY=PCCHG.TRANS$(1,8),DOM=*NEXT)
20206 READ RECORD(RCCT,END=20215)RCCT$
20208 IF RCCT.TRANS$<>PCCHG.TRANS$(1,8)+FILL(2) THEN GOTO 20215
20210 IF RCCT.COMMAND$="4" THEN LET PCCHG.MID$=RCCT.MID$,PCCHG.CARD$=RCCT.CARD$; GOTO 20215 ELSE GOTO 20206
20215 LET RCCT$="",BTINFO$="",SAVE_X=0
20220 IF RCCT THEN CLOSE (RCCT,ERR=*NEXT)
20225 LET RCCT=0
20230 IF RCG_MSG$<>"" THEN LET X9$=RCG_MSG$,RCG_MSG$=""; GOSUB CLEAR_GLOBAL; GOSUB GENERROR
20240 RETURN