Compucolor.org – Virtual Media

Listing of file='INVT.BAS;01' on disk='vmedia/inventory-sector.ccvf'

2 BAUD= 3:SBIT= 1:REM  SET 300 BAUD 1 STOP BIT
3 PLP= 66:REM  LINES PER PRINTER PAGE
4 PLOT 27,18,BAUD
5 CLEAR 200
11 PLOT 12,3,1,10:PRINT "INVENTORY CONTROL"
12 PRINT "(17 JUNE 1980 1950)"
13 FOR D= 1TO 1000:NEXT
20 PLOT 12,3,1,10:INPUT "ENTER TODAYS DATE ( DDMMYY ) ";DAY
25 FILE  "T",21000
26 INPUT "LOAD DATA DISK IF APPLICABLE ,<RETURN>";Z$
30 IF DAY> 320000THEN 20
100 FILE "R",1,"INVFIL",1
110 GET 1,1;NR,F$[25],Q,R,S$[15],LS,UC
1000 REM INVENTORY MENU
1010 PLOT 12,14
1011 AA$= "INVENTORY MENU FOR "
1012 PRINT TAB( (64- (LEN (AA$)+ LEN (F$)))/ 2);AA$;F$
1014 PRINT :PRINT :PRINT
1015 M= 0:POKE  33278,0
1016 FILE "T",22000
1020 PRINT "       NEW PRODUCT RECORDS			N"
1030 PRINT "       DELETE A RECORD				D"
1040 PRINT "       CHANGE A RECORD				C"
1050 PRINT "       SEARCH FOR A RECORD			S"
1052 PRINT "       LIST STOCK				L"
1053 PRINT "	RENAME DATA FILE	F"
1054 PRINT "	CHANGE DATA DISK	*"
1055 PRINT "	EXIT FROM INVENTORY	X"
1060 PRINT
1070 PRINT "		ENTER SELECTION "
1075 Z= PEEK (33278)
1080 IF Z= ASC ("N")THEN 2000
1090 IF Z= ASC ("D")THEN 3000
1100 IF Z= ASC ("C")THEN 4000
1110 IF Z= ASC ("S")THEN 5000
1120 IF Z= ASC ("X")THEN 20000
1130 IF Z= ASC ("L")THEN 14000
1140 IF Z= ASC ("F")THEN 15000
1150 IF Z= ASC ("*")THEN 16000
1200 GOTO 1075
1201 REM
2000 REM CREATE NEW PRODUCT
2010 PLOT 12
2020 M= 2:REM  NEW RECORD MODE
2030 GOSUB 10000
2040 GOSUB 12000
2050 GOSUB 9000
2055 RX= NR- 1:REM  UPDATE POINTER
2060 GOSUB 8000
2065 PLOT 12,14
2070 GOSUB 11000
2075 PRINT "RECORD AS STORED"
2080 GOSUB 12500
2090 M= 0:REM  RECORD BY RECORD MODE
2100 GOTO 1000
2200 REM
3000 REM DELETE EXISTING RECORD
3010 PLOT 12,3,1,10:INPUT "	DELETE WHAT RECORD NUMBER : ";RX$
3020 PLOT 12
3030 RX= VAL (RX$)
3040 IF RX< 2OR RX> = NRTHEN 13000
3050 GOSUB 8000:GOSUB 11000GOTO <0xF4> PRINT :INPUT "YES TO DELETE : ";Q$:IF Q$< > "YES"THEN 1000
3065 PRINT "RECORD BEING DELETED"
3070 GET 1,NR- 1;RN,D$[25],Q,R,S$[15],LS,UC
3080 PUT 1,RX;RN,D$[25],Q,R,S$[15],LS,UC
3090 NR= NR- 1:REM  DECREMENT POINTER
3100 GET 1,1;RN,D$[25],Q,R,S$[15],LS,UC
3110 PUT 1,1;NR,D$[25],Q,R,S$[15],LS,UC
3120 GOTO 1000
3199 REM
4000 REM CHANGE EXISTING RECORD
4020 PLOT 12,3,1,10:INPUT "CHANGE WHAT RECORD NUMBER : ";RX$
4030 PLOT 12:RX= VAL (RX$)
4040 IF RX< 2OR RX> = NRTHEN 13000
4060 GOSUB 8000:GOSUB 11000
4070 PRINT :INPUT "YES TO CHANGE DATA : ";Q$:IF Q$< > "YES"THEN 1000
4080 M= 1:REM  MODIFY MODE
4100 PLOT 12:GOSUB 11006
4200 PRINT :INPUT "YES TO COMPLETE CHANGE : ";Q$:IF Q$< > "YES"THEN 1000
4210 GOSUB 9500
4220 M= 0:REM RECORD BY RECORD MODE
4225 PLOT 12:GOSUB 11000:GOSUB 12500
4230 GOTO 1000
5000 REM SEARCH FOR EXISTING
5001 POKE 33278,0
5020 PLOT 12:PRINT "		SEARCH MENU"
5030 PRINT :PRINT :PRINT
5040 PRINT "		PART NUMBER		P"
5050 PRINT "		DESCRIPTION		D"
5060 PRINT "		SUPPLIER		S"
5070 PRINT "		BELOW QTY		Q"
5075 PRINT :PRINT
5080 PRINT "			ENTER SELECTION "
5081 Z= PEEK (33278)
5082 IF Z= ASC ("P")THEN 5500
5084 IF Z= ASC ("D")THEN 5600
5086 IF Z= ASC ("S")THEN 5700
5088 IF Z= ASC ("Q")THEN 5800
5100 GOTO 5081
5500 PLOT 12,3,1,10
5510 INPUT "	WHAT PART NUMBER : ";Q$
5512 N= VAL (Q$)
5514 FOR RX= 2TO NR- 1:REM  RANGE OF RECORDS
5516 GET 1,RX;RN,D$[25],Q,R,S$[15],LS,UC
5518 IF N= RNTHEN PLOT 12:GOSUB 11000:GOSUB 12000
5520 NEXT
5522 GOTO 1000
5600 PLOT 12,3,1,10
5610 INPUT "	WHAT DESCRIPTION : ";Q$
5611 S= 1:F= LEN (Q$)
5612 IF Q$= ""THEN 1000
5613 IF  LEFT$ (Q$,1)= "*" THEN  S= 3:F= LEN (Q$)- 2
5614 FOR RX= 2TO NR- 1
5616 GET 1,RX;RN,D$[25],Q,R,S$[15],LS,UC
5618 IF MID$ (Q$,S,F)= MID$ (D$,S,F)THEN PLOT 12:GOSUB 11000:GOSUB 12000
5620 NEXT
5622 GOTO 1000
5700 PLOT 12,3,1,10
5710 INPUT "	WHAT SUPPLIER : ";Q$
5712 IF Q$= ""THEN 1000
5714 FOR RX= 2TO NR- 1
5716 GET 1,RX;RN,D$[25],Q,R,S$[15],LS,UC
5718 IF Q$= LEFT$ (S$,LEN (Q$))THEN PLOT 12:GOSUB 11000:GOSUB 12000
5720 NEXT
5722 GOTO 1000
5800 IF NR= 2THEN 13000
5805 FOR RX= 2TO NR- 1
5810 GET 1,RX;RN,D$[25],Q,R,S$[15],LS,UC
5820 IF Q= < RTHEN PLOT 12:GOSUB 11000:GOSUB 12000
5830 NEXT
5840 GOTO 1000
8000 REM READ EXISTING RECORD
8010 GET 1,RX;RN,D$[25],Q,R,S$[15],LS,UC
8020 RETURN
9000 REM WRITE A NEW RECORD
9010 PUT 1,NR;RN,D$[25],Q,R,S$[15],LS,UC
9015 NR= NR+ 1:REM  NEW POINTER IS OLD+1
9020 PUT 1,1;NR,F$[25],LU,R,S$[15],LS,UC
9100 RETURN
9500 REM WRITE EXISTING RECORD
9510 PUT 1,RX;RN,D$[25],Q,R,S$[15],LS,UC
9520 RETURN
10000 REM GET DATA FROM KEYBOARD
10010 INPUT "ENTER PART NUMBER     ";R1$
10011 IF R1$< > ""THEN RN= VAL (R1$)
10012 IF  RN> 999999 THEN  10010
10015 IF M= 1THEN RETURN
10020 INPUT "ENTER DESCRIPTION     ";D1$
10021 IF D1$< > ""THEN D$= D1$
10025 IF M= 1THEN RETURN
10030 INPUT "ENTER SUPPLIER        ";S1$
10031 IF S1$< > ""THEN S$= S1$
10035 IF M= 1THEN RETURN
10040 INPUT "ENTER QTY IN STOCK    ";Q1$
10041 IF Q1$< > ""THEN Q= VAL (Q1$)
10042 IF  Q> 999999 THEN  10040
10045 IF M= 1THEN RETURN
10050 INPUT "ENTER REORDER QTY     ";Q2$
10051 IF Q2$< > ""THEN R= VAL (Q2$)
10052 IF  R> 999999 THEN  10050
10055 IF M= 1THEN RETURN
10060 INPUT "ENTER UNIT COST       ";U1$
10061 IF U1$< > ""THEN UC= VAL (U1$)
10062 IF  UC> 999999 THEN  10060
10069 IF  M= 1 THEN  RETURN
10070 INPUT "ENTER FORWARD DATA    ";L1$
10071 IF  L1$< > "" THEN  LS= VAL (L1$)
10072 IF  LS> 999999 THEN  10070
10080 IF  M= 1 THEN  RETURN
10999 RETURN
11000 REM DISPLAY A RECORD
11005 PRINT :PRINT "RECORD NUMBER          ";RX;"        STOCK VALUE       $";Q* UC
11006 PRINT :PRINT
11010 PRINT "PART NUMBER          ";RN
11015 IF M= 1THEN GOSUB 10010
11020 PRINT "DESCRIPTION           ";D$
11025 IF M= 1THEN GOSUB 10020
11030 PRINT "SUPPLIER              ";S$
11035 IF M= 1THEN GOSUB 10030
11040 PRINT "QTY IN STOCK         ";Q
11045 IF M= 1THEN GOSUB 10040
11050 PRINT "REORDER QTY          ";R
11055 IF M= 1THEN GOSUB 10050
11060 N= UC:GOSUB  17000:PRINT "UNIT COST             ";Z$
11065 IF M= 1THEN GOSUB 10060
11070 PRINT "FORWARD              ";LS;""
11080 IF  M= 1 THEN  GOSUB  10070
11090 PRINT :IF  M= 0 THEN  PRINT "'C' TO CHANGE"
11999 RETURN
12000 PRINT "ANY OTHER TO QUIT"
12500 POKE 33278,0:PRINT "<RETURN> TO CONTINUE"
12510 Z= PEEK (33278)
12610 IF Z= 13THEN  12999
12625 IF  Z= ASC ("C") THEN  4080
12627 IF  Z< > 0 THEN  1000
12630 GOTO  12510
12999 RETURN
13000 PLOT 12
13010 PLOT 3,0,12:PRINT "INVALID OPERATION"
13020 GOSUB 12500
13030 GOTO 1000
14000 REM LIST STOCK
14001 Z$= ""
14005 IF NR- 1= 1THEN GOTO 13000
14010 PLOT 12,3,1,10:INPUT "OUTPUT TO SCREEN OR PRINTER : ";Q$:IF  Q$= "X" THEN  1000
14011 PRINT :PRINT :T1= 0:T2= 0:T3= 0:T4= 0:T5= 0:T6= 0:T7= 0:T8= 0:T9= 0:T0= 0:ST= 0:GT= 0
14012 INPUT " START RECORD FOR LISTING : ";A$
14013 INPUT "   END RECORD FOR LISTING : ";B$
14014 A= 2:IF A$< > ""THEN A= VAL (A$)
14015 B= NR- 1:IF B$< > ""THEN B= VAL (B$)
14016 IF A< 2OR B> = NROR A> BTHEN 14000
14020 IF LEFT$ (Q$,1)= "P"THEN M= 1:PRINT "SET UP PRINTER, AND PUT 'ON LINE'"
14022 IF M= 1THEN PRINT :INPUT "RETURN TO START PRINT, ANY OTHER TO QUIT";Z$
14023 IF Z$< > ""THEN M= 0:GOTO 1000
14025 PLOT 15:LPP= 25
14027 IF  M= 1 AND  SB= 1 THEN  PLOT 14
14028 IF  M= 1 AND  SB< > 1 THEN  PLOT 15
14030 IF M= 1THEN POKE  33265,14:LPP= PLP- 6:POKE 33289,96
14035 LN= LPP
14040 FOR RX= ATO B
14045 IF LN= LPPTHEN GOSUB 14400:REM  HEADLINE
14050 GET 1,RX;RN,D$[25],Q,R,S$[15],LS,UC
14055 N= Q* UC:PT= N:GOSUB 17000:PT$= Z$:N= UC:GOSUB 17000:LN= LN+ 1
14056 IF PEEK (33278)< > 13THEN 14100
14060 PRINT "";RX;"";TAB( 5);RN;TAB( 13);LEFT$ (D$,20);TAB( 35);LEFT$ (S$,10);TAB( 47);
14061 PRINT Q;TAB( 54);Z$;:IF M= 1THEN PRINT TAB( 63);PT$;TAB( 73);LS;TAB( 81);R;TAB( 88);
14062 IF M= 1AND Q< = RTHEN PRINT R- Q;TAB( 93);"***"
14063 IF M= 1AND Q> RTHEN PRINT
14064 IF M< > 1THEN PRINT :GOTO 14075
14065 IF  LEFT$ (D$,2)= "0-" THEN  T0= T0+ PT
14066 IF  LEFT$ (D$,2)= "1-" THEN  T1= T1+ PT
14067 IF  LEFT$ (D$,2)= "2-" THEN  T2= T2+ PT
14068 IF  LEFT$ (D$,2)= "3-" THEN  T3= T3+ PT
14069 IF  LEFT$ (D$,2)= "4-" THEN  T4= T4+ PT
14070 IF  LEFT$ (D$,2)= "5-" THEN  T5= T5+ PT
14071 IF  LEFT$ (D$,2)= "6-" THEN  T6= T6+ PT
14072 IF  LEFT$ (D$,2)= "7-" THEN  T7= T7+ PT
14073 IF  LEFT$ (D$,2)= "8-" THEN  T8= T8+ PT
14074 IF  LEFT$ (D$,2)= "9-" THEN  T9= T9+ PT
14075 GT= GT+ PT
14076 NEXT :IF M< > 1THEN GOSUB 12500
14077 IF  M< > 1 THEN  14201
14078 PRINT  CHR$ (12):ST= T0+ T1+ T2+ T3+ T4+ T5+ T6+ T7+ T8+ T9
14079 N= T0:GOSUB  17000:PRINT "SUBTOTAL DESCRIPTION 0-XXX  ";Z$
14080 N= T1:GOSUB  17000:PRINT "SUBTOTAL DESCRIPTION 1-XXX  ";Z$
14081 N= T2:GOSUB  17000:PRINT "SUBTOTAL DESCRIPTION 2-XXX  ";Z$
14082 N= T3:GOSUB  17000:PRINT "SUBTOTAL DESCRIPTION 3-XXX  ";Z$
14083 N= T4:GOSUB  17000:PRINT "SUBTOTAL DESCRIPTION 4-XXX  ";Z$
14084 N= T5:GOSUB  17000:PRINT "SUBTOTAL DESCRIPTION 5-XXX  ";Z$
14085 N= T6:GOSUB  17000:PRINT "SUBTOTAL DESCRIPTION 6-XXX  ";Z$
14086 N= T7:GOSUB  17000:PRINT "SUBTOTAL DESCRIPTION 7-XXX  ";Z$
14087 N= T8:GOSUB  17000:PRINT "SUBTOTAL DESCRIPTION 8-XXX  ";Z$
14088 N= T9:GOSUB  17000:PRINT "SUBTOTAL DESCRIPTION 9-XXX  ";Z$
14090 N= GT- ST:GOSUB  17000:PRINT "SUBTOTAL ALL OTHER RECORDS  ";Z$
14091 PRINT "---------------------------------------"
14092 PRINT "GRAND TOTAL ALL LISTED ITEMS";GT
14100 IF M= 1THEN POKE 33265,0:POKE 33289,64:REM  **** RESTORE NORMAL
14110 M= 0
14201 GOTO  1000
14400 IF M< > 1AND RX< > ATHEN GOSUB 12000
14410 IF  M= 1 THEN  FOR  NT= 1 TO  6:PRINT :NEXT
14440 IF M< > 1THEN PLOT 12
14450 PRINT "";F$;"   ";DAY
14500 PRINT "REC";TAB( 6);"PART";TAB( 13);"DESCRIPTION";TAB( 35);"SUPPLIER";
14510 PRINT TAB( 48);"QTY";TAB( 55);"COST";
14514 IF M< > 1THEN PRINT
14515 IF M= 1THEN PRINT TAB( 64);"$VALU";TAB( 74);"FORWRD";TAB( 82);"MINMUM";TAB( 89);"REORDER"
14520 LN= 0
14580 RETURN
14998 GOSUB 12500
15000 PLOT 12,3,1,10
15010 PRINT "CURRENT FILE NAME : ";F$
15015 FOR D= 1TO 500:NEXT
15020 PLOT 3,1,11
15030 INPUT "NEW FILE NAME     : ";F1$
15040 IF F1$< > ""THEN F$= F1$
15050 GET 1,1;RN,D$[25],Q,R,S$[15],LS,UC
15060 PUT 1,1;RN,F$[25],Q,R,S$[15],LS,UC
15070 GOTO 1000
16000 FILE "C",1
16010 PLOT 12,3,1,10:INPUT "CHANGE DATA DISK NOW, THEN RETURN ";Z$
16020 GOTO 100:REM  RESTORE NEW DISK
17000 N= N+ .0001:IN= INT (N):RE= N- IN
17010 Z$= "     "+ STR$ (IN)
17020 IF INT (RE* 100)= 0THEN Z$= Z$+ ".00":GOTO 17040
17030 Z$= Z$+ MID$ (STR$ (RE+ .001),2,3)
17040 Z$= RIGHT$ (Z$,8)
17050 RETURN
20000 FILE "C",1
20001 LOAD "MENU.BAS":RUN
21000 PLOT  12,3,0,10,14
21010 PRINT "**** DATA FILE NOT FOUND ON THIS DISKETTE ****"
21015 PLOT 15
21020 PRINT :PRINT "LOAD CORRECT DISKETTE OR CREATE NEW FILE"
21030 FOR  DL= 1 TO  1000:NEXT
21035 IF  Z= 1 THEN  INPUT "LOAD SYSTEM DISK, <RETURN>";Z$:LOAD "MENU.BAS":RUN
21036 Z= Z+ 1
21040 GOTO  26
22000 PLOT 12,3,0,9:PRINT "FILE IS FULL":GOTO 13010