2021-09-03 17:42:07 +02:00

3920 lines
113 KiB
QBasic
Raw Blame History

DECLARE SUB Vende (r%)
DECLARE SUB Elif ()
DECLARE SUB Staul ()
DECLARE SUB Ticket (e%)
DECLARE SUB Stock (EE%)
DECLARE SUB Balan (EEE%)
'
' Q B a s i c P e r s o n a l F i n a n c i a l
'
' Copyright (C) Microsoft Corporation 1990
'Set default data type to integer for faster operation
DEFINT A-Z
'Sub and function declarations
DECLARE SUB Proveedores (lug%)
DECLARE SUB LCenter (text$)
DECLARE SUB ScrollUp ()
DECLARE SUB ScrollDown ()
DECLARE SUB Initialize ()
DECLARE SUB center (Row%, text$)
DECLARE SUB FancyCls (dots%, Background%)
DECLARE SUB LoadState ()
DECLARE SUB SaveState ()
DECLARE SUB MenuSystem ()
DECLARE SUB box (Row1%, Col1%, Row2%, Col2%)
DECLARE SUB PrintHelpLine (help$)
DECLARE SUB EditTrans (item%)
DECLARE SUB Referencias (op%)
DECLARE SUB ImpRef (po%)
DECLARE SUB ImpComp (so%)
DECLARE FUNCTION Cvdt$ (x#)
DECLARE FUNCTION Cvst$ (x!)
DECLARE FUNCTION Cvit$ (x%)
DECLARE FUNCTION Menu% (CurrChoiceX%, MaxChoice%, choice$(), ItemRow%(), ItemCol%(), help$(), BarMode%)
DECLARE FUNCTION GetString$ (Row%, Col%, start$, end$, vis%, max%)
DECLARE FUNCTION Trim$ (x$)
'Constants
CONST true = -1
CONST false = NOT true
'User-defined types
TYPE AccountType
Title AS STRING * 20
AType AS STRING * 1
Desc AS STRING * 50
END TYPE
TYPE Recordtype
Date AS STRING * 8
Ref AS STRING * 10
Desc AS STRING * 50
Fig1 AS DOUBLE
Fig2 AS DOUBLE
END TYPE
'Global variables
DIM SHARED account(1 TO 19) AS AccountType 'Stores the 19 account titles
DIM SHARED ColorPref 'Color Preference
DIM SHARED colors(0 TO 20, 1 TO 4) 'Different Colors
DIM SHARED ScrollUpAsm(1 TO 7) 'Assembly Language Routines
DIM SHARED ScrollDownAsm(1 TO 7)
DIM SHARED printerr AS INTEGER 'Printer error flag
DIM SHARED Fecha$(1), fech$(1)
DEF SEG = 0 ' Turn off CapLock, NumLock and ScrollLock
KeyFlags = PEEK(1047)
POKE 1047, &H0
DEF SEG
'Open money manager data file. If it does not exist in current directory,
' goto error handler to create and initialize it.
ON ERROR GOTO ErrorTrap
OPEN "Personal.cfg" FOR INPUT AS #1
CLOSE
ON ERROR GOTO 0 'Reset error handler
Initialize 'Initialize program
MenuSystem 'This is the main program
COLOR 7, 0 'Clear screen and end
CLS
DEF SEG = 0 ' Restore CapLock, NumLock and ScrollLock states
POKE 1047, KeyFlags
DEF SEG
END
' Error handler for program
' If data file not found, create and initialize a new one.
ErrorTrap:
SELECT CASE ERR
' If data file not found, create and initialize a new one.
CASE 53
CLOSE
ColorPref = 1
FOR a = 1 TO 19
account(a).Title = ""
account(a).AType = ""
account(a).Desc = ""
NEXT a
SaveState
RESUME
CASE 24, 25
printerr = true
box 8, 13, 14, 69
center 11, "La impresora no responde ..."
center 12, "Presione Barra espaciadora para continuar"
WHILE INKEY$ <> "": WEND
RESUME NEXT
CASE ELSE
END SELECT
RESUME NEXT
ErrorCaj:
OPEN "Caja.cfg" FOR OUTPUT AS #1
PRINT #1, "N"
CLOSE
RESUME NEXT
'The following data defines the color schemes available via the main menu.
'
' scrn dots bar back title shdow choice curs cursbk shdow
DATA 0, 7, 15, 7, 0, 7, 0, 15, 0, 0
DATA 1, 9, 12, 3, 0, 1, 15, 0, 7, 0
DATA 3, 15, 13, 1, 14, 3, 15, 0, 7, 0
DATA 7, 12, 15, 4, 14, 0, 15, 15, 1, 0
'The following data is actually a machine language program to
'scroll the screen up or down very fast using a BIOS call.
DATA &HB8,&H01,&H06,&HB9,&H01,&H04,&HBA,&H4E,&H16,&HB7,&H00,&HCD,&H10,&HCB
DATA &HB8,&H01,&H07,&HB9,&H01,&H04,&HBA,&H4E,&H16,&HB7,&H00,&HCD,&H10,&HCB
SUB Balan (EE%)
END SUB
'Box:
' Draw a box on the screen between the given coordinates.
SUB box (Row1, Col1, Row2, Col2) STATIC
BoxWidth = Col2 - Col1 + 1
LOCATE Row1, Col1
PRINT "<22>"; STRING$(BoxWidth - 2, "<22>"); "<22>";
FOR a = Row1 + 1 TO Row2 - 1
LOCATE a, Col1
PRINT "<22>"; SPACE$(BoxWidth - 2); "<22>";
NEXT a
LOCATE Row2, Col1
PRINT "<22>"; STRING$(BoxWidth - 2, "<22>"); "<22>";
END SUB
'Center:
' Center text on the given row.
SUB center (Row, text$)
LOCATE Row, 41 - LEN(text$) / 2
PRINT text$;
END SUB
'Cvdt$:
' Convert a double precision number to a string WITHOUT a leading space.
FUNCTION Cvdt$ (x#)
Cvdt$ = RIGHT$(STR$(x#), LEN(STR$(x#)) - 1)
END FUNCTION
'Cvit$:
' Convert an integer to a string WITHOUT a leading space.
FUNCTION Cvit$ (x)
Cvit$ = RIGHT$(STR$(x), LEN(STR$(x)) - 1)
END FUNCTION
'Cvst$:
' Convert a single precision number to a string WITHOUT a leading space
FUNCTION Cvst$ (x!)
Cvst$ = RIGHT$(STR$(x!), LEN(STR$(x!)) - 1)
END FUNCTION
'EditTrans:
' This is the full-screen editor which allows you to enter and change
' transactions
SUB EditTrans (item%)
'Stores info about each column
REDIM help$(6), Col(6), vis(6), max(6), CurrString$(1), CurrFig#(6)
'Array to keep the current balance at all the transactions
REDIM Balance#(1000), Ca#(1000), Cb$(1000), Cc#(1000), Cd#(1000), Ce#(1000), lin$(155)
gf = 0
box 17, 5, 21, 75
center 18, "Por Favor Introduzca Fecha"
center 19, "con la que realizar la transacci<63>n"
PrintHelpLine "Fecha: mm - dd - aaaa"
DO
emp$ = GetString$(20, 7, DATE$, end$, 10, 10)
Fecha$ = end$
M = VAL(MID$(Fecha$, 1, 2))
D = VAL(MID$(Fecha$, 4, 2))
IF M <= 12 AND D <= 31 THEN gf = 1
IF LEN(Fecha$) < 10 THEN gf = 0
LOOP WHILE gf = 0
gf = 0
mes$ = MID$(Fecha$, 1, 2)
dia$ = MID$(Fecha$, 4, 2)
an$ = MID$(Fecha$, 7, 4)
CurrDia$ = dia$
compufech$ = mes$ + dia$ + an$
'Open random access file
file$ = "E-" + mes$ + an$ + "." + Cvit$(item)
OPEN file$ FOR RANDOM AS #1 LEN = 59
FIELD #1, 2 AS IoDia$, 6 AS IoRef$, 22 AS IoDesc$, 3 AS IoUnd$, 3 AS IoCC$, 8 AS IoPvp$, 8 AS IoPc$
FIELD #1, 2 AS valid$, 5 AS IoMaxRecord$
'Initialize variables
CurrString$(1) = ""
CurrFig#(2) = 0
CurrFig#(3) = 0
CurrFig#(4) = 0
CurrFig#(5) = 0
CurrFig#(6) = 0
GET #1, 1
IF valid$ <> "SI" THEN
LSET IoDia$ = ""
LSET IoRef$ = STR$(0)
LSET IoDesc$ = ""
LSET IoUnd$ = STR$(0)
LSET IoCC$ = STR$(0)
LSET IoPvp$ = STR$(0)
LSET IoPc$ = STR$(0)
PUT #1, 2
LSET valid$ = "SI"
LSET IoMaxRecord$ = "1"
PUT #1, 1
END IF
MaxRecord = VAL(IoMaxRecord$)
Balance#(0) = 0
a = 1
WHILE a <= MaxRecord
GET #1, a + 1
p# = VAL(IoPvp$)
p1# = VAL(IoUnd$)
p2# = VAL(IoCC$)
p3# = VAL(IoPc$)
Balance#(a) = p# * p1# * p2# - p1# * p2# * p3#
BalTotal# = BalTotal# + Balance#(a)
a = a + 1
WEND
GOSUB CargaCienReferencias
help$(1) = "Referencia del Producto "
help$(2) = "Producto (sin Referencia o nuevo) "
help$(3) = "Unidades totales "
help$(4) = "Unidades parciales, ( o por caja ) "
help$(5) = "P.V.P. del Producto, ( por unidad )"
help$(6) = "Precio de Costo, ( la unidad ) "
Col(1) = 2: vis(1) = 6: max(1) = 6
Col(2) = 9: vis(2) = 22: max(2) = 22
Col(3) = 32: vis(3) = 5: max(3) = 3
Col(4) = 38: vis(4) = 5: max(4) = 3
Col(5) = 44: vis(5) = 10: max(5) = 8
Col(6) = 55: vis(6) = 10: max(6) = 8
'Draw Screen
COLOR colors(7, ColorPref), colors(4, ColorPref)
box 2, 1, 21, 80
box 22, 1, 24, 80
COLOR colors(5, ColorPref), colors(4, ColorPref)
LOCATE 1, 1: PRINT SPACE$(80);
LOCATE 1, 4: PRINT "Empresa: " + Trim$(account(item).Title);
'LOCATE 1, 63: PRINT "Fecha: ";
'LOCATE 1, 63: PRINT "Fecha: " + Fecha$;
COLOR colors(7, ColorPref), colors(4, ColorPref)
LOCATE 3, 2: PRINT " Ref# <20> Concepto <20> Und <20>Und/C<> P.V.P. <20> P.C. <20> Beneficios "
LOCATE 4, 2: PRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
u1$ = " <20> <20> <20> <20> <20> <20> "
u1x$ = "<22><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
u2$ = "##,###,###"
u3$ = "##,###,###,###"
u5$ = "###"
u6$ = "######"
u9$ = "#,###,###,###,###"
CurrTopline = 1: bajabarra = 1
GOSUB EditTransPrintWholeScreen
bajabarra = 0
CurrRow = 1
CurrCol = 1
PrintHelpLine help$(CurrCol) + "| <F2=Guardar y Salir> <F9=Insert> <F10=Supr>"
GOSUB EditTransGetLine
finished = false
GOSUB EditTransPrintBalances
'Loop until <F2> is pressed
DO
GOSUB EditTransShowCursor 'Show Cursor, Wait for key
DO: kbd$ = INKEY$: LOOP UNTIL kbd$ <> ""
ed = 1: GOSUB EditTransShowCursor: ed = 0: 'Oculta el cursor para obtener datos ED=1
bajabar = 0: bajabarra = 0
IF kbd$ >= " " AND kbd$ < "~" OR kbd$ = CHR$(8) THEN 'If legal key, edit item
GOSUB EditTransEditItem
END IF
SELECT CASE kbd$ 'Handle Special keys
CASE CHR$(0) + "H" 'up arrow
GOSUB EditTransMoveUp
CASE CHR$(0) + "P" 'Down arrow
GOSUB EditTransMoveDown
CASE CHR$(0) + "K", CHR$(0) + CHR$(15) 'Left Arrow,BackTab
CurrCol = (CurrCol + 4) MOD 6 + 1
PrintHelpLine help$(CurrCol) + "| <F2=Guardar y Salir> <F9=Insert> <F10=Supr>"
CASE CHR$(0) + "M", CHR$(9) 'Right Arrow,Tab
CurrCol = (CurrCol) MOD 6 + 1
PrintHelpLine help$(CurrCol) + "| <F2=Guardar y Salir> <F9=Insert> <F10=Supr>"
CASE CHR$(0) + "G" 'Home
CurrCol = 1
CASE CHR$(0) + "O" 'End
CurrCol = 6
CASE CHR$(0) + "I" 'Page Up
CurrRow = 1
CurrTopline = CurrTopline - 16
IF CurrTopline < 1 THEN
CurrTopline = 1
END IF
'************************
bajabarra = 1
GOSUB EditTransPrintWholeScreen
GOSUB EditTransGetLine
bajabarra = 0
GOSUB PrintBalances
CASE CHR$(0) + "Q" 'Page Down
CurrRow = 1
CurrTopline = CurrTopline + 16
IF CurrTopline > MaxRecord THEN
CurrTopline = MaxRecord
END IF
bajabarra = 1
GOSUB EditTransPrintWholeScreen
GOSUB EditTransGetLine
bajabarra = 0
GOSUB PrintBalances
CASE CHR$(0) + "<" 'F2
finished = true
CASE CHR$(0) + "C" 'F9
GOSUB EditTransAddRecord
CASE CHR$(0) + "D" 'F10
GOSUB EditTransDeleteRecord
CASE CHR$(13) 'Enter
CASE ELSE
BEEP
END SELECT
LOOP UNTIL finished
CLOSE
EXIT SUB
EditTransShowCursor:
IF ed = 1 THEN
COLOR colors(7, ColorPref), colors(4, ColorPref)
ELSE
COLOR colors(8, ColorPref), colors(9, ColorPref)
END IF
LOCATE CurrRow + 4, Col(CurrCol)
SELECT CASE CurrCol
CASE 1
IF CurrFig#(2) <> 0 THEN
PRINT USING u6$; CurrFig#(2);
ELSE
PRINT " ";
END IF
CASE 2
IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN
PRINT LEFT$(CurrString$(1), vis(2));
ELSE
PRINT SPACE$(vis(2))
END IF
CASE 3
IF CurrFig#(3) <> 0 THEN
PRINT " ";
PRINT USING u5$; CurrFig#(3);
PRINT " ";
ELSE
PRINT " ";
END IF
CASE 4
IF CurrFig#(4) <> 0 THEN
PRINT " ";
PRINT USING u5$; CurrFig#(4);
PRINT " ";
ELSE
PRINT " ";
END IF
CASE 5
IF CurrFig#(5) <> 0 THEN
PRINT USING u2$; CurrFig#(5);
ELSE
PRINT " ";
END IF
CASE 6
IF CurrFig#(6) <> 0 THEN
PRINT USING u2$; CurrFig#(6);
ELSE
PRINT " ";
END IF
END SELECT
RETURN
EditTransEditItem:
CurrRecord = CurrTopline + CurrRow - 1
COLOR colors(7, ColorPref), colors(4, ColorPref)
LOCATE 1, 63: PRINT "Fecha: ";
LOCATE 1, 63: PRINT "Fecha: " + Fecha$;
COLOR colors(8, ColorPref), colors(9, ColorPref)
GraDat = 0: Clasifica = 0
SELECT CASE CurrCol
CASE 1
start$ = kbd$
DO
kbd$ = GetString$(CurrRow + 4, Col(1), start$, new$, vis(1), max(1))
new1# = VAL(new$)
start$ = ""
LOOP WHILE new1# >= 1001# OR new1# < 0
CurrFig#(2) = new1#
reg = 0: b = 1
DO
IF Ca#(b) = CurrFig#(2) THEN
CurrString$(1) = Cb$(b)
CurrFig#(4) = Cc#(b)
CurrFig#(5) = Cd#(b)
CurrFig#(6) = Ce#(b)
Clasifica = 1: Valpu = 1
EXIT DO
END IF
b = b + 1
LOOP WHILE Ca#(b) <> 0 OR b <= TopeRef# + 1
IF Clasifica = 0 THEN
df = 0
FOR Ol = 16 TO 19
FOR Oc = 24 TO 49
df = df + 1
lin$(df) = CHR$(SCREEN(Ol, Oc))
NEXT Oc, Ol
box 16, 24, 19, 49
IF TopeRef# = 999 THEN
LOCATE 17, 25: PRINT " Lo siento, referencias "
LOCATE 18, 25: PRINT "AGOTADAS, elimine alguna"
ELSE
LOCATE 17, 25: PRINT "Esa Referencia no existe"
LOCATE 18, 25: PRINT "<22> Desea crearla ? (S/N) "
DO
i$ = INKEY$
LOOP WHILE i$ = ""
COLOR colors(7, ColorPref), colors(4, ColorPref)
df = 0
FOR Ol = 16 TO 19
FOR Oc = 24 TO 49
df = df + 1
LOCATE Ol, Oc: PRINT lin$(df)
NEXT Oc, Ol
IF i$ = "s" OR i$ = "S" THEN
Valpu = 0
TopeRef# = TopeRef# + 1
GraDat = 1
GraCurrDat = CurrTopline + CurrRow - 1
ELSEIF i$ = "n" OR i$ = "N" THEN CurrFig#(2) = 0
END IF
END IF
END IF
GOSUB EditTransPutLine
GOSUB EditTransGetLine
BalTotal# = BalTotal# - Balance#(CurrRecord)
PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5)
PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6)
Balance#(CurrRecord) = PvpTotal# - PcTotal#
BalTotal# = BalTotal# + Balance#(CurrRecord)
CASE 2
IF Valpu = 0 THEN
kbd$ = GetString$(CurrRow + 4, Col(CurrCol), kbd$, new$, vis(CurrCol), max(CurrCol))
CurrString$(1) = new$
END IF
GOSUB EditTransPutLine
GOSUB EditTransGetLine
CASE 3
start$ = kbd$
DO
kbd$ = GetString$(CurrRow + 4, Col(3), start$, new$, vis(3), max(3))
new3# = VAL(new$)
start$ = ""
IF CurrFig#(4) <= 100# AND new3# <= 601# OR new3# <= 0 THEN EXIT DO
IF CurrFig#(4) > 100# AND new3# <= 11 OR new3# <= 0 THEN EXIT DO
LOOP
CurrFig#(3) = new3#
GOSUB EditTransPutLine
GOSUB EditTransGetLine
BalTotal# = BalTotal# - Balance#(CurrRecord)
PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5)
PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6)
Balance#(CurrRecord) = PvpTotal# - PcTotal#
BalTotal# = BalTotal# + Balance#(CurrRecord)
CASE 4
IF Valpu = 0 THEN
start$ = kbd$
DO
kbd$ = GetString$(CurrRow + 4, Col(4), start$, new$, vis(4), max(4))
new4# = VAL(new$)
start$ = ""
IF CurrFig#(3) <= 10 AND new4# <= 601 OR new4# <= 0 THEN EXIT DO
IF CurrFig#(3) > 10 AND new4# <= 101 OR new4# <= 0 THEN EXIT DO
LOOP
CurrFig#(4) = new4#
END IF
GOSUB EditTransPutLine
GOSUB EditTransGetLine
BalTotal# = BalTotal# - Balance#(CurrRecord)
PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5)
PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6)
Balance#(CurrRecord) = PvpTotal# - PcTotal#
BalTotal# = BalTotal# + Balance#(CurrRecord)
CASE 5
IF Valpu = 0 THEN
start$ = kbd$
old3# = CurrFig#(5)
DO
kbd$ = GetString$(CurrRow + 4, Col(5), start$, new$, vis(5), max(5))
new5# = VAL(new$)
start$ = ""
LOOP WHILE new5# >= 75001# OR new5# < 0
a = CurrRecord
CurrFig#(5) = new5#
END IF
GOSUB EditTransPutLine
GOSUB EditTransGetLine
BalTotal# = BalTotal# - Balance#(CurrRecord)
PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5)
PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6)
Balance#(CurrRecord) = PvpTotal# - PcTotal#
BalTotal# = BalTotal# + Balance#(CurrRecord)
CASE 6
IF Valpu = 0 THEN
start$ = kbd$
old4# = CurrFig#(6)
DO
kbd$ = GetString$(CurrRow + 4, Col(6), start$, new$, vis(6), max(6))
new6# = VAL(new$)
start$ = ""
LOOP WHILE new6# >= 75001# OR new6# < 0
a = CurrRecord
CurrFig#(6) = new6#
END IF
GOSUB EditTransPutLine
GOSUB EditTransGetLine
BalTotal# = BalTotal# - Balance#(CurrRecord)
PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5)
PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6)
Balance#(CurrRecord) = PvpTotal# - PcTotal#
BalTotal# = BalTotal# + Balance#(CurrRecord)
CASE ELSE
END SELECT
GOSUB EditTransPrintLine
RETURN
EditTransMoveUp:
Valpu = 0
IF CurrRow = 1 THEN
IF CurrTopline = 1 THEN
BEEP
ELSE
ScrollDown
CurrTopline = CurrTopline - 1
GOSUB EditTransGetLine
GOSUB EditTransPrintLine
END IF
ELSE
CurrRow = CurrRow - 1
GOSUB EditTransGetLine
END IF
GOSUB PrintBalances
RETURN
EditTransMoveDown:
Valpu = 0
IF (CurrRow + CurrTopline - 1) >= MaxRecord THEN
BEEP
ELSE
IF CurrRow = 16 THEN
ScrollUp
CurrTopline = CurrTopline + 1
GOSUB EditTransGetLine
GOSUB EditTransPrintLine
ELSE
CurrRow = CurrRow + 1
GOSUB EditTransGetLine
END IF
END IF
GOSUB PrintBalances
RETURN
EditTransPrintLine:
COLOR colors(7, ColorPref), colors(4, ColorPref)
CurrRecord = CurrTopline + CurrRow - 1
LOCATE CurrRow + 4, 2
IF CurrRecord = MaxRecord + 1 THEN
PRINT u1x$;
ELSEIF CurrRecord > MaxRecord THEN
PRINT u1$;
ELSE
IF CurrFig#(2) <> 0 THEN PRINT USING u6$; CurrFig#(2); ELSE PRINT " ";
IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN PRINT "<22>" + CurrString$(1); ELSE PRINT "<22> ";
IF CurrFig#(3) <> 0 THEN PRINT "<22> "; : PRINT USING u5$; CurrFig#(3); : PRINT " "; ELSE PRINT "<22> ";
IF CurrFig#(4) <> 0 THEN PRINT "<22> "; : PRINT USING u5$; CurrFig#(4); : PRINT " "; ELSE PRINT "<22> ";
IF CurrFig#(5) <> 0 THEN PRINT "<22>"; : PRINT USING u2$; CurrFig#(5); ELSE PRINT "<22> ";
IF CurrFig#(6) <> 0 THEN PRINT "<22>"; : PRINT USING u2$; CurrFig#(6); ELSE PRINT "<22> ";
PRINT "<22>";
PRINT USING u3$; Balance#(CurrRecord);
IF bajabar <> 1 THEN GOSUB EditTransPrintBalances
END IF
RETURN
EditTransPrintBalances:
COLOR colors(7, ColorPref), colors(4, ColorPref)
FOR a = 1 TO 16
CurrRecord = CurrTopline + a - 1
IF CurrRecord <= MaxRecord THEN
LOCATE 4 + a, 66
PRINT USING u3$; Balance#(CurrTopline + a - 1);
END IF
NEXT a
PrintBalances:
IF bajabarra <> 1 THEN
COLOR colors(7, ColorPref), colors(4, ColorPref)
PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5)
PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6)
LOCATE 21, 1: PRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
box 22, 1, 24, 80
LOCATE 23, 2: PRINT CurrString$(1)
LOCATE 23, 25: PRINT "<22>";
LOCATE 23, 26: PRINT USING u9$; PvpTotal#;
PRINT "<22>";
PRINT USING u9$; PcTotal#;
PRINT "<22>";
PRINT USING u9$; BalTotal#;
END IF
RETURN
EditTransDeleteRecord:
bajabar = 1
IF MaxRecord = 1 THEN
BEEP
ELSE
CurrRecord = CurrTopline + CurrRow - 1
MaxRecord = MaxRecord - 1
a = CurrRecord
BalTotal# = BalTotal# - Balance#(CurrRecord)
WHILE a <= MaxRecord
GET #1, a + 2
PUT #1, a + 1
Balance#(a) = Balance#(a + 1)
a = a + 1
WEND
Balance#(MaxRecord + 1) = 0
LSET valid$ = "SI"
LSET IoMaxRecord$ = Cvit$(MaxRecord)
PUT #1, 1
GOSUB EditTransPrintWholeScreen
CurrRecord = CurrTopline + CurrRow - 1
IF CurrRecord > MaxRecord THEN
GOSUB EditTransMoveUp
END IF
bajabar = 0
GOSUB EditTransGetLine
END IF
RETURN
EditTransAddRecord:
bajabar = 1
CurrRecord = CurrTopline + CurrRow - 1
a = MaxRecord
tb = 0
WHILE a > CurrRecord
GET #1, a + 1
PUT #1, a + 2
Balance#(a + 1) = Balance#(a)
a = a - 1
WEND
Balance#(CurrRecord + 1) = 0
MaxRecord = MaxRecord + 1
LSET IoRef$ = STR$(0)
LSET IoDesc$ = ""
LSET IoUnd$ = STR$(0)
LSET IoCC$ = STR$(0)
LSET IoPvp$ = STR$(0)
LSET IoPc$ = STR$(0)
PUT #1, CurrRecord + 2
LSET valid$ = "SI"
LSET IoMaxRecord$ = Cvit$(MaxRecord)
PUT #1, 1
GOSUB EditTransPrintWholeScreen
GOSUB EditTransGetLine
RETURN
EditTransPrintWholeScreen:
temp = CurrRow
FOR CurrRow = 1 TO 16
CurrRecord = CurrTopline + CurrRow - 1
IF CurrRecord <= MaxRecord THEN
GOSUB EditTransGetLine
END IF
GOSUB EditTransPrintLine
NEXT CurrRow
CurrRow = temp
RETURN
EditTransPutLine:
CurrRecord = CurrTopline + CurrRow - 1
LSET IoDia$ = CurrDia$
LSET IoRef$ = LTRIM$(RTRIM$(STR$(CurrFig#(2))))
LSET IoDesc$ = CurrString$(1)
LSET IoUnd$ = LTRIM$(RTRIM$(STR$(CurrFig#(3))))
LSET IoCC$ = LTRIM$(RTRIM$(STR$(CurrFig#(4))))
LSET IoPvp$ = LTRIM$(RTRIM$(STR$(CurrFig#(5))))
LSET IoPc$ = LTRIM$(RTRIM$(STR$(CurrFig#(6))))
PUT #1, CurrRecord + 1
IF GraCurrDat = CurrRecord THEN
file2$ = "Ref#." + Cvit$(item%)
OPEN file2$ FOR RANDOM AS #2 LEN = 54
FIELD #2, 6 AS IRf$, 22 AS IDsc$, 3 AS ICC$, 8 AS IPVP$, 8 AS IPC$
FIELD #2, 2 AS vld$, 5 AS IMxRcrd$
LSET IRf$ = LTRIM$(RTRIM$(STR$(CurrFig#(2))))
LSET IDsc$ = CurrString$(1)
LSET ICC$ = LTRIM$(RTRIM$(STR$(CurrFig#(4))))
LSET IPVP$ = LTRIM$(RTRIM$(STR$(CurrFig#(5))))
LSET IPC$ = LTRIM$(RTRIM$(STR$(CurrFig#(6))))
PUT #2, TopeRef#
LSET vld$ = "SI"
LSET IMxRcrd$ = LTRIM$(RTRIM$(STR$(TopeRef#)))
PUT #2, 1
TopeRef# = VAL(IMxRcrd$)
Ca#(TopeRef#) = CurrFig#(2)
Cb$(TopeRef#) = CurrString$(1)
Cc#(TopeRef#) = CurrFig#(4)
Cd#(TopeRef#) = CurrFig#(5)
Ce#(TopeRef#) = CurrFig#(6)
CLOSE #2
END IF
RETURN
EditTransGetLine:
CurrRecord = CurrTopline + CurrRow - 1
GET #1, CurrRecord + 1
dia$ = IoDia$
CurrFig#(2) = VAL(IoRef$)
CurrString$(1) = IoDesc$
CurrFig#(3) = VAL(IoUnd$)
CurrFig#(4) = VAL(IoCC$)
CurrFig#(5) = VAL(IoPvp$)
CurrFig#(6) = VAL(IoPc$)
compufech$ = mes$ + "-" + dia$ + "-" + an$
LOCATE 1, 63: PRINT "Fecha: ";
LOCATE 1, 63: PRINT "Fecha: " + compufech$;
RETURN
CargaCienReferencias:
CLS
box 14, 28, 17, 51
LOCATE 15, 30: PRINT "Cargando referencias"
LOCATE 16, 30: PRINT "Por favor, espere..."
file2$ = "Ref#." + Cvit$(item%)
OPEN file2$ FOR RANDOM AS #2 LEN = 54
FIELD #2, 6 AS IRf$, 22 AS IDsc$, 3 AS ICC$, 8 AS IPVP$, 8 AS IPC$
FIELD #2, 2 AS vld$, 5 AS IMxRcrd$
GET #2, 1
IF vld$ <> "SI" THEN
LSET IRf$ = STR$(0)
LSET IDsc$ = ""
LSET ICC$ = STR$(0)
LSET IPVP$ = STR$(0)
LSET IPC$ = STR$(0)
PUT #2, 2
LSET vld$ = "SI"
LSET IMxRcrd$ = "1"
PUT #2, 1
END IF
TopeRef# = VAL(IMxRcrd$)
b = 1
WHILE b <= TopeRef#
GET #2, b + 1
Ca#(b) = VAL(IRf$)
Cb$(b) = IDsc$
Cc#(b) = VAL(ICC$)
Cd#(b) = VAL(IPVP$)
Ce#(b) = VAL(IPC$)
b = b + 1
WEND
CLOSE #2
RETURN
END SUB
SUB Elif
END SUB
'FancyCls:
' Clears screen in the right color, and draws nice dots.
SUB FancyCls (dots, Background)
VIEW PRINT 2 TO 24
COLOR dots, Background
CLS 2
FOR a = 95 TO 1820 STEP 45
Row = a / 80 + 1
Col = a MOD 80 + 1
LOCATE Row, Col
PRINT CHR$(250);
NEXT a
VIEW PRINT
END SUB
'GetString$:
' Given a row and col, and an initial string, edit a string
' VIS is the length of the visible field of entry
' MAX is the maximum number of characters allowed in the string
FUNCTION GetString$ (Row, Col, start$, end$, vis, max)
Curr$ = Trim$(LEFT$(start$, max))
IF Curr$ = CHR$(8) THEN Curr$ = ""
LOCATE , , 1
finished = false
DO
GOSUB GetStringShowText
GOSUB GetStringGetKey
IF LEN(kbd$) > 1 THEN
finished = true
GetString$ = kbd$
ELSE
SELECT CASE kbd$
CASE CHR$(13), CHR$(27), CHR$(9)
finished = true
GetString$ = kbd$
CASE CHR$(8)
IF Curr$ <> "" THEN
Curr$ = LEFT$(Curr$, LEN(Curr$) - 1)
END IF
CASE " " TO "}"
IF LEN(Curr$) < max THEN
Curr$ = Curr$ + kbd$
ELSE
BEEP
END IF
CASE ELSE
BEEP
END SELECT
END IF
LOOP UNTIL finished
end$ = Curr$
LOCATE , , 0
EXIT FUNCTION
GetStringShowText:
LOCATE Row, Col
IF LEN(Curr$) > vis THEN
PRINT RIGHT$(Curr$, vis);
ELSE
PRINT Curr$; SPACE$(vis - LEN(Curr$));
LOCATE Row, Col + LEN(Curr$)
END IF
RETURN
GetStringGetKey:
kbd$ = ""
WHILE kbd$ = ""
kbd$ = INKEY$
WEND
RETURN
END FUNCTION
SUB ImpComp (so%)
'Stores info about each column
'Array to keep the current balance at all the transactions
REDIM Col(6), Balance#(1000)
mes$ = MID$(DATE$, 1, 2)
an$ = MID$(DATE$, 7, 4)
comes$ = mes$ + "-" + an$
gf = 0
box 17, 5, 21, 75
center 18, "Por Favor Introduzca Mes y a<>o"
center 19, "para imprimir gastos."
PrintHelpLine "Mes y A<>o: mm-aaaa"
DO
emp$ = GetString$(20, 7, comes$, end$, 10, 10)
Fecha$ = end$
mes$ = MID$(Fecha$, 1, 2)
IF VAL(mes$) <= 12 THEN gf = 1
IF LEN(Fecha$) < 7 THEN gf = 0
LOOP WHILE gf = 0
gf = 0
mes$ = MID$(Fecha$, 1, 2)
an$ = MID$(Fecha$, 4, 4)
center 18, "Imprimiendo Fecha Seleccionada"
center 19, "Por favor, espere ..."
'Open random access file
file$ = "E-" + mes$ + an$ + "." + Cvit$(so%)
OPEN file$ FOR RANDOM AS #1 LEN = 59
FIELD #1, 2 AS IoDia$, 6 AS IoRef$, 22 AS IoDesc$, 3 AS IoUnd$, 3 AS IoCC$, 8 AS IoPvp$, 8 AS IoPc$
FIELD #1, 2 AS valid$, 5 AS IoMaxRecord$
GET #1, 1
IF valid$ <> "SI" THEN
center 18, "Este mes, esta vacio, verifique esto."
center 19, "--> Pulse una tecla <--"
SLEEP
EXIT SUB
END IF
MaxRecord = VAL(IoMaxRecord$)
Balance#(0) = 0
a = 1
WHILE a <= MaxRecord
GET #1, a + 1
p# = VAL(IoPvp$)
p1# = VAL(IoUnd$)
p2# = VAL(IoCC$)
p3# = VAL(IoPc$)
Balance#(a) = p# * p1# * p2# - p1# * p2# * p3#
BalTotal# = BalTotal# + Balance#(a)
a = a + 1
WEND
DO
printerr = false
ON ERROR GOTO ErrorTrap
LPRINT
kdb$ = INKEY$
WHILE kdb$ = "": kdb$ = INKEY$: WEND
IF kdb$ = CHR$(27) THEN EXIT SUB
LOOP WHILE printerr = true
box 8, 13, 14, 69
LPRINT SPACE$(80);
LPRINT "Empresa: " + Trim$(account(so%).Title);
GOSUB ObtMes
LPRINT TAB(63); "Fecha: " + Fecha$;
LPRINT
LPRINT "Dia<69> Ref# <20> Concepto <20> Und <20>Und/C<> P.V.P. <20> P.C. <20> Beneficios ";
LPRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
LPRINT " <20> <20> <20> <20> <20> <20> <20> ";
u2$ = "##,###,###"
u3$ = "####,###,###"
u5$ = "###"
u6$ = "######"
u9$ = "#,###,###,###,###"
Curlip = 3
a = 1
Curlip = 0
WHILE a <= MaxRecord
GET #1, a + 1
Curlip = Curlip + 1
IF Curlip = 50 THEN GOSUB PausePage
dia$ = IoDia$
r# = VAL(IoRef$)
D$ = IoDesc$
p# = VAL(IoPvp$)
p1# = VAL(IoUnd$)
p2# = VAL(IoCC$)
p3# = VAL(IoPc$)
Balance#(a) = p# * p1# * p2# - p1# * p2# * p3#
IF LEN(dia$) = 1 THEN LPRINT TAB(3); dia$ + "<22>"; ELSE LPRINT TAB(2); dia$ + "<22>";
IF r# <> 0 THEN LPRINT USING u6$; r#; ELSE LPRINT " ";
IF RTRIM$(LTRIM$(D$)) <> "" THEN LPRINT "<22>" + D$; ELSE LPRINT "<22> ";
IF p1# <> 0 THEN LPRINT "<22> "; : LPRINT USING u5$; p1#; : LPRINT " "; ELSE LPRINT "<22> ";
IF p2# <> 0 THEN LPRINT "<22> "; : LPRINT USING u5$; p2#; : LPRINT " "; ELSE LPRINT "<22> ";
IF p3# <> 0 THEN LPRINT "<22>"; : LPRINT USING u2$; p3#; ELSE LPRINT "<22> ";
IF p2# <> 0 THEN LPRINT "<22>"; : LPRINT USING u2$; p2#; ELSE LPRINT "<22> ";
LPRINT "<22>";
LPRINT USING u3$; Balance#(a);
a = a + 1
WEND
LPRINT "<22><>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
LPRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
LPRINT " Balance total:"; USING u9$; BalTotal#;
LPRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
LPRINT "<22><>ܳ<EFBFBD><DCB3><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
LPRINT "Programa Realizado por J.D. para Guill<6C>n Dominguez s.l"
EXIT SUB
PausePage:
center 18, "Inserte una hoja en la impresora"
center 19, "Y pulse una tecla... "
SLEEP
DO
kop = 0
printerr = false
ON ERROR GOTO ErrorTrap
LPRINT
kdb$ = INKEY$
WHILE kdb$ = "": kdb$ = INKEY$: WEND
IF kdb$ = CHR$(27) THEN EXIT SUB
box 8, 13, 14, 69
LOOP WHILE printerr <> true
center 18, "Imprimiendo Fecha Seleccionada"
center 19, "Por favor, espere ..."
RETURN
ObtMes:
SELECT CASE VAL(mes$)
CASE 1: Fecha$ = "Enero, " + an$
CASE 2: Fecha$ = "Febr., " + an$
CASE 3: Fecha$ = "Marzo, " + an$
CASE 4: Fecha$ = "Abril, " + an$
CASE 5: Fecha$ = "Mayo, " + an$
CASE 6: Fecha$ = "Junio, " + an$
CASE 7: Fecha$ = "Julio, " + an$
CASE 8: Fecha$ = "Agost, " + an$
CASE 9: Fecha$ = "Sept., " + an$
CASE 10: Fecha$ = "Octu., " + an$
CASE 11: Fecha$ = "Nov., " + an$
CASE 12: Fecha$ = "Dicc., " + an$
END SELECT
RETURN
END SUB
SUB ImpRef (po%)
REDIM CurrFig#(5), CurrString$(1)
file$ = "Ref#." + Cvit$(po%)
OPEN file$ FOR RANDOM AS #1 LEN = 54
FIELD #1, 6 AS IoRef$, 22 AS IoDesc$, 3 AS IoCC$, 8 AS IoPvp$, 8 AS IoPc$
FIELD #1, 2 AS valid$, 5 AS IoMaxRecord$
GET #1, 1
IF valid$ <> "SI" THEN
center 18, "Al parecer esta empresa no tiene ref."
center 19, "Verifique estos datos. PAK"
SLEEP
EXIT SUB
END IF
MaxRecord = VAL(IoMaxRecord$)
box 17, 5, 21, 75
center 18, "Imprimiendo Referencias"
center 19, "Por favor, espere ..."
DO
printerr = false
ON ERROR GOTO ErrorTrap
LPRINT
kdb$ = INKEY$
WHILE kdb$ = "": kdb$ = INKEY$: WEND
IF kdb$ = CHR$(27) THEN EXIT SUB
LOOP WHILE printerr = true
LPRINT "Referencias de la Empresa: " + Trim$(account(po%).Title);
LPRINT " "
LPRINT " Ref# <20> Concepto <20> Und/C <20> P.V.P. <20> P.C. ";
LPRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
LPRINT " <20> <20> <20> <20> "
u1x$ = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
u2$ = "##,###,###"
u5$ = "###"
u6$ = "######"
a = 1
WHILE a <= MaxRecord
GET #1, a + 1
CurrFig#(2) = VAL(IoRef$)
CurrString$(1) = IoDesc$
CurrFig#(3) = VAL(IoCC$)
CurrFig#(4) = VAL(IoPvp$)
CurrFig#(5) = VAL(IoPc$)
ds = ds + 1
IF ds = 50 THEN GOSUB finpage
IF CurrFig#(2) <> 0 THEN LPRINT " "; : LPRINT USING u6$; CurrFig#(2); ELSE LPRINT " ";
IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN LPRINT "<22> " + CurrString$(1); ELSE LPRINT "<22> ";
IF CurrFig#(3) <> 0 THEN LPRINT " <20> "; : LPRINT USING u5$; CurrFig#(3); : LPRINT " "; ELSE LPRINT " <20> ";
IF CurrFig#(4) <> 0 THEN LPRINT "<22> "; : LPRINT USING u5$; CurrFig#(4); : LPRINT " "; ELSE LPRINT "<22> ";
IF CurrFig#(5) <> 0 THEN LPRINT "<22> "; : LPRINT USING u2$; CurrFig#(5) ELSE LPRINT "<22> "
a = a + 1
WEND
EXIT SUB
finpage:
center 18, "Inserte una hoja en la impresora"
center 19, "Y pulse una tecla... "
SLEEP
DO
kop = 0
printerr = false
ON ERROR GOTO ErrorTrap
LPRINT
kdb$ = INKEY$
WHILE kdb$ = "": kdb$ = INKEY$: WEND
IF kdb$ = CHR$(27) THEN EXIT SUB
box 8, 13, 14, 69
LOOP WHILE printerr <> true
center 18, "Imprimiendo Fecha Seleccionada"
center 19, "Por favor, espere ..."
RETURN
END SUB
'Initialize:
' Read colors in and set up assembly routines
SUB Initialize
WIDTH , 25
VIEW PRINT
FOR ColorSet = 1 TO 4
FOR x = 1 TO 10
READ colors(x, ColorSet)
NEXT x
NEXT ColorSet
LoadState
p = VARPTR(ScrollUpAsm(1))
DEF SEG = VARSEG(ScrollUpAsm(1))
FOR i = 0 TO 13
READ J
POKE (p + i), J
NEXT i
p = VARPTR(ScrollDownAsm(1))
DEF SEG = VARSEG(ScrollDownAsm(1))
FOR i = 0 TO 13
READ J
POKE (p + i), J
NEXT i
DEF SEG
END SUB
'LCenter:
' Center TEXT$ on the line printer
SUB LCenter (text$)
LPRINT TAB(41 - LEN(text$) / 2); text$
END SUB
'LoadState:
' Load color preferences and account info from Personal.cfg
SUB LoadState
OPEN "Personal.cfg" FOR INPUT AS #1
INPUT #1, ColorPref
FOR a = 1 TO 10
LINE INPUT #1, account(a).Title
NEXT a
CLOSE
END SUB
'Menu:
' Handles Menu Selection for a single menu (either sub menu, or menu bar)
' currChoiceX : Number of current choice
' maxChoice : Number of choices in the list
' choice$() : Array with the text of the choices
' itemRow() : Array with the row of the choices
' itemCol() : Array with the col of the choices
' help$() : Array with the help text for each choice
' barMode : Boolean: TRUE = menu bar style, FALSE = drop down style
'
' Returns the number of the choice that was made by changing currChoiceX
' and returns the scan code of the key that was pressed to exit
'
FUNCTION Menu (CurrChoiceX, MaxChoice, choice$(), ItemRow(), ItemCol(), help$(), BarMode)
currChoice = CurrChoiceX
'if in bar mode, color in menu bar, else color box/shadow
'bar mode means you are currently in the menu bar, not a sub menu
IF BarMode THEN
COLOR colors(7, ColorPref), colors(4, ColorPref)
LOCATE 1, 1
PRINT SPACE$(80);
ELSE
IF boorra <> 0 THEN FancyCls colors(2, ColorPref), colors(1, ColorPref)
COLOR colors(7, ColorPref), colors(4, ColorPref)
box ItemRow(1) - 1, ItemCol(1) - 1, ItemRow(MaxChoice) + 1, ItemCol(1) + LEN(choice$(1)) + 1
COLOR colors(10, ColorPref), colors(6, ColorPref)
FOR a = 1 TO MaxChoice + 1
LOCATE ItemRow(1) + a - 1, ItemCol(1) + LEN(choice$(1)) + 2
PRINT CHR$(178); CHR$(178);
NEXT a
LOCATE ItemRow(MaxChoice) + 2, ItemCol(MaxChoice) + 2
PRINT STRING$(LEN(choice$(MaxChoice)) + 2, 178);
END IF
'print the choices
COLOR colors(7, ColorPref), colors(4, ColorPref)
FOR a = 1 TO MaxChoice
LOCATE ItemRow(a), ItemCol(a)
PRINT choice$(a);
NEXT a
finished = false
WHILE NOT finished
GOSUB MenuShowCursor
GOSUB MenuGetKey
GOSUB MenuHideCursor
SELECT CASE kbd$
CASE CHR$(0) + "H": GOSUB MenuUp
CASE CHR$(0) + "P": GOSUB MenuDown
CASE CHR$(0) + "K": GOSUB MenuLeft
CASE CHR$(0) + "M": GOSUB MenuRight
CASE CHR$(13): GOSUB MenuEnter
CASE CHR$(27): GOSUB MenuEscape
CASE ELSE: BEEP
END SELECT
WEND
Menu = currChoice
EXIT FUNCTION
MenuEnter:
finished = true
RETURN
MenuEscape:
currChoice = 0
finished = true
RETURN
MenuUp:
IF BarMode THEN
BEEP
ELSE
currChoice = (currChoice + MaxChoice - 2) MOD MaxChoice + 1
END IF
RETURN
MenuLeft:
IF BarMode THEN
currChoice = (currChoice + MaxChoice - 2) MOD MaxChoice + 1
ELSE
currChoice = -2
finished = true
END IF
RETURN
MenuRight:
IF BarMode THEN
currChoice = (currChoice) MOD MaxChoice + 1
ELSE
currChoice = -3
finished = true
END IF
RETURN
MenuDown:
IF BarMode THEN
finished = true
ELSE
currChoice = (currChoice) MOD MaxChoice + 1
END IF
RETURN
MenuShowCursor:
COLOR colors(8, ColorPref), colors(9, ColorPref)
LOCATE ItemRow(currChoice), ItemCol(currChoice)
PRINT choice$(currChoice);
PrintHelpLine help$(currChoice)
RETURN
MenuGetKey:
kbd$ = ""
WHILE kbd$ = ""
kbd$ = INKEY$
WEND
RETURN
MenuHideCursor:
COLOR colors(7, ColorPref), colors(4, ColorPref)
LOCATE ItemRow(currChoice), ItemCol(currChoice)
PRINT choice$(currChoice);
RETURN
END FUNCTION
'MenuSystem:
' Main routine that controls the program. Uses the MENU function
' to implement menu system and calls the appropriate function to handle
' the user's selection
SUB MenuSystem
boorra = 1
DIM choice$(20), menuRow(20), menuCol(20), help$(20)
LOCATE , , 0
choice = 1
finished = false
WHILE NOT finished
GOSUB MenuSystemMain
Subchoice = -1
WHILE Subchoice < 0
SELECT CASE choice
CASE 1: GOSUB MenuSystemFile
CASE 2: GOSUB MenuSystemEdit
CASE 3: GOSUB MenuSystemAccount
CASE 4: GOSUB MenuSystemReport
CASE 5: GOSUB MenuSystemColors
CASE 6: GOSUB help
END SELECT
FancyCls colors(2, ColorPref), colors(1, ColorPref)
SELECT CASE Subchoice
CASE -2: choice = (choice + 3) MOD 5 + 1
CASE -3: choice = (choice) MOD 6 + 1
END SELECT
WEND
WEND
EXIT SUB
MenuSystemMain:
FancyCls colors(2, ColorPref), colors(1, ColorPref)
COLOR colors(7, ColorPref), colors(4, ColorPref)
box 9, 19, 14, 61
center 11, "Use las teclas de direcci<63>n para el men<65>"
center 12, "Presione Entrar para elegir elemento"
choice$(1) = " Archivo "
choice$(2) = " Proveedores "
choice$(3) = " Transacciones "
choice$(4) = " Clientes "
choice$(5) = " Colores "
choice$(6) = " Ayuda "
menuRow(1) = 1: menuCol(1) = 2
menuRow(2) = 1: menuCol(2) = 12
menuRow(3) = 1: menuCol(3) = 26
menuRow(4) = 1: menuCol(4) = 42
menuRow(5) = 1: menuCol(5) = 53
menuRow(6) = 1: menuCol(6) = 72
help$(1) = "Salir del Administrador"
help$(2) = "Agregar/edit/supr Proveedores"
help$(3) = "Agregar/edit/supr Transacciones"
help$(4) = "Ver e imprimir clientes"
help$(5) = "Fijar color en pantalla"
help$(6) = " Ayuda "
DO
NewChoice = Menu((choice), 6, choice$(), menuRow(), menuCol(), help$(), true)
LOOP WHILE NewChoice = 0
choice = NewChoice
RETURN
MenuSystemFile:
FancyCls colors(2, ColorPref), colors(1, ColorPref)
choice$(1) = " Ficheros "
choice$(2) = " Status "
choice$(3) = " Salir "
menuRow(1) = 3: menuCol(1) = 2
menuRow(2) = 4: menuCol(2) = 2
menuRow(3) = 5: menuCol(3) = 2
help$(1) = "Operaciones de Configuraci<63>n"
help$(2) = "Status actual"
help$(3) = "Salir del Administrador"
Subchoice = Menu(1, 3, choice$(), menuRow(), menuCol(), help$(), false)
SELECT CASE Subchoice
CASE 1
choice$(1) = " Eliminar Fich. "
choice$(2) = " Vendedores "
choice$(3) = " Caja (S/N) "
menuRow(1) = 5: menuCol(1) = 6
menuRow(2) = 6: menuCol(2) = 6
menuRow(3) = 7: menuCol(3) = 6
help$(1) = "Eliminaci<63>n de ficheros..."
help$(2) = "Agregar/Editar/Eliminar Vendedores"
help$(3) = "Configurar Caja registradora"
Subchoice = Menu(1, 3, choice$(), menuRow(), menuCol(), help$(), false)
SELECT CASE Subchoice
CASE 1: Elif
CASE 2
don = 2
GOSUB empresa
Vende (Subchoice)
don = 0
CASE 3
ON ERROR GOTO ErrorCaj
OPEN "Caja.cfg" FOR INPUT AS #1
INPUT #1, act$
CLOSE
box 8, 13, 14, 69
center 11, "<22>Hay una caja registradora instalada"
center 12, "en el puerto RS232?"
LOCATE 13, 15: PRINT "Actual: ", act$
center 14, "<Esc, Mantener> <<3C><> Cambiar"
kbd$ = INKEY$
WHILE kbd$ = "": kbd$ = INKEY$: WEND
IF kbd$ <> CHR$(13) THEN RETURN
LOCATE 13, 15: INPUT "Nuevo: ", act$
IF UCASE$(RTRIM$(LTRIM$(act$))) <> "S" THEN act$ = "N"
OPEN "Caja.cfg" FOR OUTPUT AS #1
PRINT #1, act$
CLOSE
CASE ELSE
END SELECT
CASE 2: Staul
CASE 3: finished = true
CASE ELSE
END SELECT
RETURN
MenuSystemEdit:
FancyCls colors(2, ColorPref), colors(1, ColorPref)
choice$(1) = " Altas "
choice$(2) = " Editar/Modificar "
choice$(3) = " Buscar "
choice$(4) = " Eliminar "
choice$(5) = " Imprimir (1, 2) "
menuRow(1) = 3: menuCol(1) = 9
menuRow(2) = 4: menuCol(2) = 9
menuRow(3) = 5: menuCol(3) = 9
menuRow(4) = 6: menuCol(4) = 9
menuRow(5) = 7: menuCol(5) = 9
help$(1) = "Agregar Proveedores"
help$(2) = "Editar/Modificar Proveedores"
help$(3) = "Busqueda de Proveedores"
help$(4) = "Eliminar Proveedores"
help$(5) = "Imprimir lista individual o r<>pida"
Subchoice = Menu(1, 5, choice$(), menuRow(), menuCol(), help$(), false)
SELECT CASE Subchoice
CASE 1 TO 5
Proveedores (Subchoice)
END SELECT
RETURN
MenuSystemAccount:
don = 0
FancyCls colors(2, ColorPref), colors(1, ColorPref)
choice$(1) = " Compras "
choice$(2) = " Referencias "
choice$(3) = " Imprimir (1) "
choice$(4) = " Imprimir (2) "
menuRow(1) = 3: menuCol(1) = 26
menuRow(2) = 4: menuCol(2) = 26
menuRow(3) = 5: menuCol(3) = 26
menuRow(4) = 6: menuCol(4) = 26
help$(1) = "Agregar/Eliminar/Editar Compras"
help$(2) = "Agregar/Eliminar/Editar Referencias"
help$(3) = "Imprimir Compras del mes"
help$(4) = "Imprimir Referencias"
Subchoice = Menu(1, 4, choice$(), menuRow(), menuCol(), help$(), false)
SELECT CASE Subchoice
CASE 1: vaw = 1: GOTO empresa
CASE 2: vaw = 2: GOTO empresa
CASE 3: vaw = 3: GOTO empresa
CASE 4: vaw = 4: GOTO empresa
END SELECT
RETURN
empresa:
boorra = 1
FOR a = 1 TO 10
IF Trim$(account(a).Title) = "" THEN
choice$(a) = RIGHT$(STR$(a), 2) + ". ------------------- "
ELSE
choice$(a) = RIGHT$(STR$(a), 2) + ". " + account(a).Title
END IF
menuRow(a) = a + 4
menuCol(a) = 32
help$(a) = RTRIM$(account(a).Title)
NEXT a
Subchoice = Menu(1, 10, choice$(), menuRow(), menuCol(), help$(), false)
boorra = 0
IF Subchoice > 0 THEN
IF choice$(Subchoice) = RIGHT$(STR$(Subchoice), 2) + ". ------------------- " THEN
box 17, 5, 21, 75
center 19, "Esa empresa no EXISTE, <20>Desea crearla?"
DO:
K$ = INKEY$
LOOP WHILE K$ = ""
IF K$ = "s" OR K$ = "S" THEN
box 17, 5, 21, 75
center 18, "Introduzca el nombre de la Empresa"
emp$ = GetString$(19, 7, "", end$, 20, 20)
'end$ contiene la informacion
account(Subchoice).Title = end$
SaveState
ELSE
box 17, 5, 21, 75
center 19, "Escoja una empresa"
GOTO empresa
END IF
END IF
IF vaw = 2 THEN Referencias (Subchoice)
IF vaw = 1 THEN EditTrans (Subchoice)
IF vaw = 3 THEN ImpComp (Subchoice)
IF vaw = 4 THEN ImpRef (Subchoice)
END IF
IF don = 2 THEN RETURN
GOTO MenuSystemMain
MenuSystemReport:
FancyCls colors(2, ColorPref), colors(1, ColorPref)
choice$(1) = " Ticket "
choice$(2) = " Balance "
choice$(3) = " Stock actual "
menuRow(1) = 3: menuCol(1) = 39
menuRow(2) = 4: menuCol(2) = 39
menuRow(3) = 5: menuCol(3) = 39
help$(1) = "Ticket, comenzar a fichar"
help$(2) = "Total Vendido, dia, mes"
help$(3) = "Ver o imprimir Stock actual"
Subchoice = Menu(1, 3, choice$(), menuRow(), menuCol(), help$(), false)
don = 2
SELECT CASE Subchoice
CASE 1
GOSUB empresa
Ticket (Subchoice%)
CASE 2
GOSUB empresa
Balan (Subchoice%)
CASE 3
GOSUB empresa
Stock (Subchoice%)
CASE ELSE
END SELECT
RETURN
MenuSystemColors:
FancyCls colors(2, ColorPref), colors(1, ColorPref)
choice$(1) = " Monocrom<6F>tico "
choice$(2) = " Cyan/Azul "
choice$(3) = " Azul/Cyan "
choice$(4) = " Rojo/Gris "
menuRow(1) = 3: menuCol(1) = 50
menuRow(2) = 4: menuCol(2) = 50
menuRow(3) = 5: menuCol(3) = 50
menuRow(4) = 6: menuCol(4) = 50
help$(1) = "Color para presentaci<63>n monocrom<6F>tico y LCD"
help$(2) = "Color presentado cyan"
help$(3) = "Color presentado azul"
help$(4) = "Color presentado rojo"
Subchoice = Menu(1, 4, choice$(), menuRow(), menuCol(), help$(), false)
SELECT CASE Subchoice
CASE 1 TO 4
ColorPref = Subchoice
SaveState
CASE ELSE
END SELECT
RETURN
help:
FancyCls colors(2, ColorPref), colors(1, ColorPref)
choice$(1) = " Uso de la ayuda "
choice$(2) = " Sobre los Men<65>s "
choice$(3) = " Grabaci<63>n de Datos "
choice$(4) = " Acerca de... "
menuRow(1) = 3: menuCol(1) = 57
menuRow(2) = 4: menuCol(2) = 57
menuRow(3) = 5: menuCol(3) = 57
menuRow(4) = 6: menuCol(4) = 57
help$(1) = "Uso de la ayuda en Personal Financial"
help$(2) = "Ayuda en los men<65>s"
help$(3) = "Modo de grabar los Datos"
help$(4) = "Creditos del Personal Financial"
Subchoice = Menu(1, 4, choice$(), menuRow(), menuCol(), help$(), false)
SELECT CASE Subchoice
CASE 1
RETURN
CASE 2
RETURN
CASE 3
RETURN
CASE 4
box 9, 10, 16, 70
center 10, "P E R S O N A L F I N A N C I A L"
center 12, "by"
center 14, "Jos<6F> David Guill<6C>n (c) 1993"
center 16, "Pulse una tecla"
SLEEP
CASE ELSE
END SELECT
RETURN
END SUB
'PrintHelpLine:
' Prints help text on the bottom row in the proper color
SUB PrintHelpLine (help$)
COLOR colors(5, ColorPref), colors(4, ColorPref)
LOCATE 25, 1
PRINT SPACE$(80);
center 25, help$
END SUB
SUB Proveedores (lug%)
DIM Row(12), Col(12), vis(12), max(12), help$(12), CurrString$(12), she$(4)
Row(1) = 4: Col(1) = 11: vis(1) = 40: max(1) = 40
Row(2) = 6: Col(2) = 14: vis(2) = 32: max(2) = 32
Row(3) = 6: Col(3) = 62: vis(3) = 10: max(3) = 10
Row(4) = 8: Col(4) = 14: vis(4) = 32: max(4) = 32
Row(5) = 8: Col(5) = 59: vis(5) = 19: max(5) = 19
Row(6) = 10: Col(6) = 14: vis(6) = 16: max(6) = 16
Row(7) = 10: Col(7) = 58: vis(7) = 19: max(7) = 19
Row(8) = 15: Col(8) = 21: vis(8) = 50: max(8) = 50
Row(9) = 17: Col(9) = 13: vis(9) = 58: max(9) = 58
Row(10) = 19: Col(10) = 21: vis(10) = 50: max(10) = 50
Row(11) = 21: Col(11) = 14: vis(11) = 32: max(11) = 32
Row(12) = 21: Col(12) = 59: vis(12) = 16: max(12) = 16
help$(1) = "Nombre de la entidad Proveedora "
help$(2) = "Direcci<63>n "
help$(3) = "Codigo Postal "
help$(4) = "Localidad "
help$(5) = "Provincia "
help$(6) = "Tel<65>fono "
help$(7) = "C.I.F. "
help$(8) = "Entidad Bancaria "
help$(9) = "Material que Provee "
help$(10) = "Jefe de Ventas "
help$(11) = "Direcci<63>n del Jefe V. "
help$(12) = "Tel<65>fono del Jefe de V. "
ON lug GOTO ip, mp, sp, bp, impr
ip:
COLOR colors(7, ColorPref), colors(4, ColorPref): PRINT "SD"
entrada = 0: jk = 0
nom$ = "": ape$ = "": Cal$ = "": num$ = "": Pis$ = "": lettt$ = "": tel$ = ""
GOSUB menu2
OPEN "proo1.dat" FOR RANDOM AS #1 LEN = 56
FOR x = 1 TO LOF(1) / 56
jk = jk + 1
FIELD #1, 40 AS nom$, 16 AS tel$
GET #1, x
IF RTRIM$(LTRIM$(nom$)) = "" THEN entrada = jk: GOTO ent
NEXT x
entrada = jk + 1
ent:
CLOSE #1
IF entrada = 0 THEN entrada = 1
LOCATE 2, 47: PRINT entrada
pieza = 0
empi:
IF pieza = 3 THEN PrintHelpLine help$(1) + " | <F2=Buscar> <F10=Salir>"
IF pieza = 0 THEN PrintHelpLine help$(1) + "| <F2=Guardar y Salir> <F10=Salir sin Grabar>"
a = 1
DO
GOSUB showline
DO: kbd$ = INKEY$: LOOP UNTIL kbd$ <> ""
ed = 1: GOSUB showline: ed = 0
IF kbd$ >= " " AND kbd$ < "~" OR kbd$ = CHR$(8) THEN 'If legal key, edit item
kbd$ = GetString$(Row(a), Col(a), kbd$, new$, vis(a), max(a))
CurrString$(a) = new$
END IF
SELECT CASE kbd$ 'Handle Special keys
CASE CHR$(0) + "H" 'up arrow
IF pieza = 3 AND a = 1 THEN a = 4 ELSE IF pieza = 3 THEN a = a - 1
IF pieza = 0 AND a = 1 THEN a = 12 ELSE IF pieza = 0 THEN a = a - 1
IF pieza = 3 THEN PrintHelpLine help$(a) + " | <F2=Buscar> <F10=Salir>"
IF pieza = 0 THEN PrintHelpLine help$(a) + "| <F2=Guardar y Salir> <F10=Salir sin Grabar>"
CASE CHR$(0) + "P" 'Down arrow
IF pieza = 3 AND a = 4 THEN a = 1 ELSE IF pieza = 3 THEN a = a + 1
IF pieza = 0 AND a = 12 THEN a = 1 ELSE IF pieza = 0 THEN a = a + 1
IF pieza = 3 THEN PrintHelpLine help$(a) + " | <F2=Buscar> <F10=Salir>"
IF pieza = 0 THEN PrintHelpLine help$(a) + "| <F2=Guardar y Salir> <F10=Salir sin Grabar>"
CASE CHR$(0) + "K", CHR$(0) + CHR$(15) 'Left Arrow,BackTab
IF pieza = 3 AND a = 1 THEN a = 4 ELSE IF pieza = 3 THEN a = a - 1
IF pieza = 0 AND a = 1 THEN a = 12 ELSE IF pieza = 0 THEN a = a - 1
IF pieza = 3 THEN PrintHelpLine help$(a) + " | <F2=Buscar> <F10=Salir>"
IF pieza = 0 THEN PrintHelpLine help$(a) + "| <F2=Guardar y Salir> <F10=Salir sin Grabar>"
CASE CHR$(0) + "M", CHR$(9) 'Right Arrow,Tab
IF pieza = 3 AND a = 4 THEN a = 1 ELSE IF pieza = 3 THEN a = a + 1
IF pieza = 0 AND a = 12 THEN a = 1 ELSE IF pieza = 0 THEN a = a + 1
IF pieza = 3 THEN PrintHelpLine help$(a) + " | <F2=Buscar> <F10=Salir>"
IF pieza = 0 THEN PrintHelpLine help$(a) + "| <F2=Guardar y Salir> <F10=Salir sin Grabar>"
CASE CHR$(0) + "<" 'F2
finished = true
CASE CHR$(0) + "D" 'F10
CLOSE : EXIT SUB
CASE CHR$(13) 'Enter
CASE ELSE
BEEP
END SELECT
LOOP UNTIL finished
IF pieza = 3 THEN RETURN
cont:
OPEN "proo1.dat" FOR RANDOM AS #1 LEN = 56
OPEN "proo2.dat" FOR RANDOM AS #2 LEN = 112
OPEN "proo3.dat" FOR RANDOM AS #3 LEN = 206
FIELD #1, 40 AS nom2$, 16 AS Tel2$
FIELD #2, 32 AS cal2$, 10 AS num2$, 32 AS Pis2$, 19 AS LET2$, 19 AS loc2$
FIELD #3, 50 AS Cpu2$, 58 AS Ram2$, 50 AS TG2$, 32 AS Hd2$, 16 AS tel3$
LSET nom2$ = CurrString$(1): LSET Tel2$ = CurrString$(6)
LSET cal2$ = CurrString$(2): LSET num2$ = CurrString$(3): LSET Pis2$ = CurrString$(4): LSET LET2$ = CurrString$(5): LSET loc2$ = CurrString$(7)
LSET Cpu2$ = CurrString$(8): LSET Ram2$ = CurrString$(9): LSET TG2$ = CurrString$(10): LSET Hd2$ = CurrString$(11): LSET tel3$ = CurrString$(12)
IF valor = 3 THEN PUT #1, lf ELSE PUT #1, entrada
IF valor = 3 THEN PUT #2, lf ELSE PUT #2, entrada
IF valor = 3 THEN PUT #3, lf ELSE PUT #3, entrada
CLOSE #1, #2, #3
IF valor = 3 THEN RETURN
IF pieza = 3 THEN RETURN
LOCATE 13, 2: PRINT "<22>Seguir introduciendo?"
we:
i$ = INKEY$
IF i$ = "" THEN GOTO we
IF i$ = "S" OR i$ = "s" THEN GOTO ip ELSE CLOSE : EXIT SUB
ep:
GOSUB menu2
center 23, "Utilice + y - para ver las Fichas"
K = 0
mirp:
lf = 0
CLOSE #1, #2, #3
OPEN "proo1.dat" FOR RANDOM AS #1 LEN = 56
OPEN "proo2.dat" FOR RANDOM AS #2 LEN = 112
OPEN "proo3.dat" FOR RANDOM AS #3 LEN = 206
lf = 0
vez = 1
DO
pro:
IF lf = 0 THEN lf = 1
FIELD #1, 40 AS nom$, 16 AS tel$
FIELD #2, 32 AS Cal$, 10 AS num$, 32 AS Pis$, 19 AS lettt$, 19 AS locc$
FIELD #3, 50 AS cpu$, 58 AS ram$, 50 AS tg$, 32 AS hd$, 16 AS tel4$
GET #1, lf
GET #2, lf
GET #3, lf
g = 0
IF K = 1 AND UCASE$(RTRIM$(LTRIM$(she$(1)))) <> UCASE$(MID$(nom$, 1, LEN(RTRIM$(LTRIM$(she$(1)))))) THEN GOSUB pw
IF K = 2 AND UCASE$(RTRIM$(LTRIM$(she$(2)))) <> UCASE$(MID$(Cal$, 1, LEN(RTRIM$(LTRIM$(she$(2)))))) THEN GOSUB pw
IF K = 3 AND UCASE$(RTRIM$(LTRIM$(she$(3)))) <> UCASE$(MID$(num$, 1, LEN(RTRIM$(LTRIM$(she$(3)))))) THEN GOSUB pw
IF K = 4 AND UCASE$(RTRIM$(LTRIM$(she$(4)))) <> UCASE$(MID$(tg$, 1, LEN(RTRIM$(LTRIM$(she$(4)))))) THEN GOSUB pw
IF g = 1 THEN GOTO pro
IF RTRIM$(LTRIM$(nom$)) = "" AND r = 0 THEN lf = lf + 1: GOTO pro
IF RTRIM$(LTRIM$(nom$)) = "" AND r = 1 THEN lf = lf - 1: GOTO pro
vez = 0
COLOR colors(3, ColorPref), colors(9, ColorPref)
LOCATE 4, 11: PRINT nom$
LOCATE 6, 14: PRINT Cal$
LOCATE 6, 62: PRINT num$
LOCATE 8, 14: PRINT Pis$
LOCATE 8, 59: PRINT lettt$
LOCATE 10, 14: PRINT tel$
LOCATE 10, 58: PRINT locc$
LOCATE 15, 21: PRINT cpu$
LOCATE 17, 13: PRINT ram$
LOCATE 19, 21: PRINT tg$
LOCATE 21, 14: PRINT hd$
LOCATE 21, 59: PRINT tel4$
COLOR colors(7, ColorPref), colors(4, ColorPref)
nom$ = nom$: Cal$ = Cal$: num$ = num$: Pis$ = Pis$: lettt$ = lettt$: locc$ = locc$
tel$ = tel$: cpu$ = cpu$: ram$ = ram$: tg$ = tg$: hd$ = hd$: tel4$ = tel4$
CurrString$(1) = nom$
CurrString$(2) = Cal$
CurrString$(3) = num$
CurrString$(4) = Pis$
CurrString$(5) = lettt$
CurrString$(6) = tel$
CurrString$(7) = locc$
CurrString$(8) = cpu$
CurrString$(9) = ram$
CurrString$(10) = tg$
CurrString$(11) = hd$
CurrString$(12) = tel$
tipo = 0
T:
w$ = INKEY$: IF w$ = "" THEN GOTO T
IF w$ = "+" THEN lf = lf + 1: r = 0
IF w$ = "-" THEN lf = lf - 1: r = 1
IF w$ = CHR$(27) THEN CLOSE : EXIT SUB
IF w$ = CHR$(13) AND valor = 3 THEN CLOSE #1, #2, #3: RETURN
IF w$ = CHR$(13) AND valor = 2 THEN CLOSE #1, #2, #3: RETURN
IF lf > LOF(1) / 56 THEN lf = lf - 1: GOTO T
IF lf = 0 OR lf = -1 THEN lf = 1: GOTO T
IF tipo = 1 THEN GOTO pro
LOOP
CLOSE #1, #2, #3
END
pw:
IF vez = 1 AND r = 0 THEN lf = lf + 1: g = 1
IF vez = 1 AND r = 1 THEN lf = lf - 1: g = 1
IF g = 0 AND r = 0 THEN lf = lf + 1
IF g = 0 AND r = 1 THEN lf = lf - 1
IF lf > LOF(1) / 56 AND vez = 1 THEN GOTO filenotfound
IF lf > LOF(1) / 56 THEN lf = lf - 1: GOTO T
IF lf = 0 OR lf = -1 THEN lf = 1: GOTO T
tipo = 1
g = 1
RETURN
END
mp:
valor = 0
GOSUB menu2
valor = 3
LOCATE 23, 1: PRINT STRING$(80, "<22>");
center 23, "Use + o - y <<3C><> para editar ficha"
GOSUB mirp
GOSUB empi
EXIT SUB
r:
i$ = INKEY$: IF i$ = "" THEN GOTO r
IF i$ = "S" OR i$ = "s" THEN GOTO mp ELSE CLOSE : EXIT SUB
bp:
valor = 0
GOSUB menu2
valor = 3
LOCATE 23, 1: PRINT STRING$(80, "<22>");
center 23, "Use + o - y <<3C><> para borrar ficha"
GOSUB mirp
FOR wq = 1 TO 12
CurrString$(wq) = ""
NEXT wq
LOCATE 23, 1: PRINT STRING$(80, "<22>");
center 23, "Pulse 'S' si desea eliminarla"
r3:
i$ = INKEY$: IF i$ = "" THEN GOTO r3
IF i$ = "S" OR i$ = "s" THEN GOTO po ELSE CLOSE : EXIT SUB
po:
GOSUB cont
LOCATE 23, 1: PRINT STRING$(80, "<22>");
center 23, "<22>Desea eliminar otra ficha?"
r2:
i$ = INKEY$: IF i$ = "" THEN GOTO r2
IF i$ = "S" OR i$ = "s" THEN GOTO bp ELSE CLOSE : EXIT SUB
finentrada:
END
impr:
REM FICHERO PARA IMPRIMIR
COLOR colors(7, ColorPref), colors(4, ColorPref)
box 13, 33, 19, 72
LOCATE 14, 34: PRINT "Esta usd. en la secci<63>n de impresion."
LOCATE 15, 34: PRINT "Cerciorese de que la impresora este"
LOCATE 16, 34: PRINT "encendida y de que tenga papel."
LOCATE 18, 34: PRINT " Pulse una tecla..."
n:
q$ = INKEY$: IF q$ = "" THEN GOTO n
IF q$ = CHR$(27) THEN EXIT SUB
box 13, 33, 19, 72
LOCATE 15, 34: PRINT "Elija modo de impresion:"
LOCATE 17, 39: PRINT "(a) Lista simple"
LOCATE 18, 39: PRINT "(b) Lista completa"
COLOR colors(8, ColorPref), colors(9, ColorPref)
hn:
q$ = INKEY$: IF q$ = "" THEN GOTO hn
IF q$ = CHR$(27) THEN EXIT SUB
IF q$ = "A" OR q$ = "a" THEN GOTO ls
IF q$ = "B" OR q$ = "b" THEN GOTO lc
GOTO hn
ls:
kop = 0
printerr = false
ON ERROR GOTO ErrorTrap
LPRINT
kdb$ = INKEY$
WHILE kdb$ = "": kdb$ = INKEY$: WEND
IF kdb$ = CHR$(27) THEN EXIT SUB
IF printerr = true THEN GOTO ls
OPEN "proo1.dat" FOR RANDOM AS #1 LEN = 56
FOR x = 1 TO LOF(1) / 56
FIELD #1, 40 AS nom$, 16 AS tel$
GET #1, x
IF RTRIM$(LTRIM$(nom$)) = "" THEN GOTO continua
IF kop = 0 THEN
LPRINT " Nombre de la entidad proveedora Tel<65>fono ": LPRINT
kop = 1
END IF
LPRINT nom$ + " " + tel$
b = b + 1: IF b = 50 THEN GOSUB finlista
continua:
NEXT x
CLOSE #1
CLOSE : EXIT SUB
finlista:
box 13, 33, 19, 72
LOCATE 15, 34: PRINT "Cuando deje de imprimir ponga papel"
LOCATE 16, 34: PRINT " Pulse entonces una tecla para "
LOCATE 17, 34: PRINT " continuar listando. "
M:
IF INKEY$ = "" THEN GOTO M
box 13, 33, 19, 72
LOCATE 16, 34: PRINT " IMPRIMIENDO "
b = 0: RETURN
lc:
valor = 2
GOSUB menu2
center 23, "Seleccione ficha a imprimir..."
GOSUB mirp
lf:
printerr = false
ON ERROR GOTO ErrorTrap
LPRINT
kdb$ = INKEY$
WHILE kdb$ = "": kdb$ = INKEY$: WEND
IF kdb$ = CHR$(27) THEN EXIT SUB
IF printerr = true THEN GOTO lf
LPRINT " Tratamiento de Proveedores <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ";
LPRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> N<> de Ficha: <20><>";
LPRINT "<22> <20><>";
LPRINT "<22> Nombre: " + nom$ + " <20><>";
LPRINT "<22> <20><>";
LPRINT "<22> Direcci<63>n: " + Cal$ + " Cod. Postal: " + num$ + " <20><>";
LPRINT "<22> <20><>";
LPRINT "<22> Localidad: " + Pis$ + " Provincia: " + lettt$ + " <20><>";
LPRINT "<22> <20><>";
LPRINT "<22> Tel<65>fono: " + tel$ + " C.I.F.: " + locc$ + " <20><>";
LPRINT "<22> <20><>";
LPRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>";
LPRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
LPRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>";
LPRINT "<22> Entidad Bancaria: " + cpu$ + " <20><>";
LPRINT "<22> <20><>";
LPRINT "<22> Material: " + ram$ + " <20><>";
LPRINT "<22> <20><>";
LPRINT "<22> Jefe de Ventas: " + tg$ + " <20><>";
LPRINT "<22> <20><>";
LPRINT "<22> Direcci<63>n: " + hd$ + " Tel<65>fono: " + tel$ + " <20><>";
LPRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٱ";
LPRINT " <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
LPRINT "Base de Datos y Programa TPV, por Jos<6F> David Guill<6C>n, para Guill<6C>n Dominguez s.l.";
FancyCls colors(2, ColorPref), colors(1, ColorPref)
box 10, 15, 14, 65
center 12, "Cuando deje de imprimir, pulse una tecla"
SLEEP
CLOSE : EXIT SUB
sp:
valor = 0: pieza = 3
GOSUB menu2
LOCATE 13, 2: PRINT "Introduzca parte a buscar..."
lili:
Row(1) = 4: Col(1) = 11: vis(1) = 40: max(1) = 40
Row(2) = 8: Col(2) = 14: vis(2) = 32: max(2) = 32
Row(3) = 8: Col(3) = 59: vis(3) = 19: max(3) = 19
Row(4) = 17: Col(4) = 13: vis(4) = 58: max(4) = 58
help$(1) = "Nombre de la entidad Proveedora "
help$(2) = "Localidad "
help$(3) = "Provincia "
help$(4) = "Material que Provee "
GOSUB empi
FOR qwq = 1 TO 4
IF LTRIM$(RTRIM$(CurrString$(qwq))) <> "" THEN she$(qwq) = CurrString$(qwq): K = qwq
NEXT qwq
IF pieza = 0 THEN pieza = 3: GOTO lili
PrintHelpLine "Pulse (Esc) para salir y + -"
GOTO mirp
EXIT SUB
filenotfound:
LOCATE 13, 2: PRINT "Ficha no encontrada"
SLEEP
COLOR colors(7, ColorPref), colors(4, ColorPref)
GOTO sp
END
menu2:
LOCATE 1, 1
PRINT " Tratamiento de Proveedores <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ";
PRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> N<> de Ficha: <20><>";
PRINT "<22> <20><>";
PRINT "<22> Nombre: <20><>";
PRINT "<22> <20><>";
PRINT "<22> Direcci<63>n: Cod. Postal: <20><>";
PRINT "<22> <20><>";
PRINT "<22> Localidad: Provincia: <20><>";
PRINT "<22> <20><>";
PRINT "<22> Tel<65>fono: C.I.F.: <20><>";
PRINT "<22> <20><>";
PRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>";
PRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
PRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>";
PRINT "<22> Entidad Bancaria: <20><>";
PRINT "<22> <20><>";
PRINT "<22> Material: <20><>";
PRINT "<22> <20><>";
PRINT "<22> Jefe de Ventas: <20><>";
PRINT "<22> <20><>";
PRINT "<22> Direcci<63>n: Tel<65>fono: <20><>";
PRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٱ";
PRINT " <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
RETURN
showline:
IF ed = 1 THEN
COLOR colors(7, ColorPref), colors(4, ColorPref)
ELSE
COLOR colors(8, ColorPref), colors(9, ColorPref)
END IF
LOCATE Row(a), Col(a)
IF RTRIM$(LTRIM$(CurrString$(a))) <> "" THEN
PRINT CurrString$(a)
ELSE
PRINT SPACE$(vis(a))
END IF
RETURN
lg:
CLOSE : EXIT SUB
END SUB
SUB Referencias (op%)
'Stores info about each column
REDIM help$(6), Col(6), vis(6), max(6), CurrString$(1), CurrFig#(6), lin$(130), ref1000#(1000)
'Array to keep the current balance at all the transactions
'Open random access file
file$ = "Ref#." + Cvit$(op%)
OPEN file$ FOR RANDOM AS #1 LEN = 54
FIELD #1, 6 AS IoRef$, 22 AS IoDesc$, 3 AS IoCC$, 8 AS IoPvp$, 8 AS IoPc$
FIELD #1, 2 AS valid$, 5 AS IoMaxRecord$
'Initialize variables
CurrString$(1) = ""
CurrFig#(2) = 0
CurrFig#(3) = 0
CurrFig#(4) = 0
CurrFig#(5) = 0
GET #1, 1
IF valid$ <> "SI" THEN
LSET IoRef$ = STR$(0)
LSET IoDesc$ = ""
LSET IoCC$ = STR$(0)
LSET IoPvp$ = STR$(0)
LSET IoPc$ = STR$(0)
PUT #1, 2
LSET valid$ = "SI"
LSET IoMaxRecord$ = "1"
PUT #1, 1
END IF
MaxRecord = VAL(IoMaxRecord$)
ref1000#(0) = 0
a = 1
WHILE a <= MaxRecord
GET #1, a + 1
ref1000#(a) = VAL(IoRef$)
a = a + 1
WEND
help$(1) = "Referencia del Producto "
help$(2) = "Nombre del Producto "
help$(3) = "Unidades parciales, ( o por caja ) "
help$(4) = "P.V.P. del Producto, ( por unidad )"
help$(5) = "Precio de Costo, ( la unidad ) "
Col(1) = 4: vis(1) = 10: max(1) = 6
Col(2) = 16: vis(2) = 22: max(2) = 22
Col(3) = 40: vis(3) = 9: max(3) = 3
Col(4) = 50: vis(4) = 12: max(4) = 8
Col(5) = 63: vis(5) = 13: max(5) = 8
'Draw Screen
COLOR colors(7, ColorPref), colors(4, ColorPref)
box 2, 3, 24, 76
COLOR colors(5, ColorPref), colors(4, ColorPref)
LOCATE 1, 1: PRINT SPACE$(80);
LOCATE 1, 4: PRINT "Referencias de la Empresa: " + Trim$(account(op%).Title);
COLOR colors(7, ColorPref), colors(4, ColorPref)
LOCATE 3, 4: PRINT " Ref# <20> Concepto <20> Und/C <20> P.V.P. <20> P.C. "
LOCATE 4, 4: PRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
u1$ = " <20> <20> <20> <20> "
u1x$ = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
u2$ = "##,###,###"
u5$ = "###"
u6$ = "######"
CurrTopline = 1
GOSUB EditTransPrintWholeScreen2
CurrRow = 1
CurrCol = 1
PrintHelpLine help$(CurrCol) + "| <F2=Guardar y Salir> <F9=Insert> <F10=Supr>"
GOSUB EditTransGetLine2
finished = false
'Loop until <F2> is pressed
DO
GOSUB EditTransShowCursor2 'Show Cursor, Wait for key
DO: kbd$ = INKEY$: LOOP UNTIL kbd$ <> ""
ed = 1: GOSUB EditTransShowCursor2: ed = 0: 'Oculta el cursor para obtener datos ED=1
IF kbd$ >= " " AND kbd$ < "~" OR kbd$ = CHR$(8) THEN 'If legal key, edit item
GOSUB EditTransEditItem2
END IF
SELECT CASE kbd$ 'Handle Special keys
CASE CHR$(0) + "H" 'up arrow
GOSUB EditTransMoveUp2
CASE CHR$(0) + "P" 'Down arrow
GOSUB EditTransMoveDown2
CASE CHR$(0) + "K", CHR$(0) + CHR$(15) 'Left Arrow,BackTab
CurrCol = (CurrCol + 3) MOD 5 + 1
PrintHelpLine help$(CurrCol) + "| <F2=Guardar y Salir> <F9=Insert> <F10=Supr>"
CASE CHR$(0) + "M", CHR$(9) 'Right Arrow,Tab
CurrCol = (CurrCol) MOD 5 + 1
PrintHelpLine help$(CurrCol) + "| <F2=Guardar y Salir> <F9=Insert> <F10=Supr>"
CASE CHR$(0) + "G" 'Home
CurrCol = 1
CASE CHR$(0) + "O" 'End
CurrCol = 5
CASE CHR$(0) + "I" 'Page Up
CurrRow = 1
CurrTopline = CurrTopline - 19
IF CurrTopline < 1 THEN
CurrTopline = 1
END IF
GOSUB EditTransPrintWholeScreen2
GOSUB EditTransGetLine2
CASE CHR$(0) + "Q" 'Page Down
CurrRow = 1
CurrTopline = CurrTopline + 19
IF CurrTopline > MaxRecord THEN
CurrTopline = MaxRecord
END IF
GOSUB EditTransPrintWholeScreen2
GOSUB EditTransGetLine2
CASE CHR$(0) + "<" 'F2
finished = true
CASE CHR$(0) + "C" 'F9
GOSUB EditTransAddRecord2
CASE CHR$(0) + "D" 'F10
GOSUB EditTransDeleteRecord2
CASE CHR$(13) 'Enter
CASE ELSE
BEEP
END SELECT
LOOP UNTIL finished
CLOSE
EXIT SUB
EditTransShowCursor2:
IF ed = 1 THEN
COLOR colors(7, ColorPref), colors(4, ColorPref)
ELSE
COLOR colors(8, ColorPref), colors(9, ColorPref)
END IF
LOCATE CurrRow + 4, Col(CurrCol)
SELECT CASE CurrCol
CASE 1
IF CurrFig#(2) <> 0 THEN PRINT " "; : PRINT USING u6$; CurrFig#(2); ELSE PRINT " ";
CASE 2
IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN PRINT CurrString$(1); ELSE PRINT " ";
CASE 3
IF CurrFig#(3) <> 0 THEN PRINT " "; : PRINT USING u5$; CurrFig#(3); : PRINT " "; ELSE PRINT " ";
CASE 4
IF CurrFig#(4) <> 0 THEN PRINT " "; : PRINT USING u5$; CurrFig#(4); : PRINT " "; ELSE PRINT " ";
CASE 5
IF CurrFig#(5) <> 0 THEN PRINT " "; : PRINT USING u2$; CurrFig#(5); ELSE PRINT " ";
END SELECT
RETURN
EditTransEditItem2:
CurrRecord = CurrTopline + CurrRow - 1
EditTransEditItem3:
COLOR colors(8, ColorPref), colors(9, ColorPref)
SELECT CASE CurrCol
CASE 1
start$ = kbd$
DO
kbd$ = GetString$(CurrRow + 4, Col(1), start$, new$, vis(1), max(1))
new1# = VAL(new$)
start$ = ""
LOOP WHILE new1# >= 100001# OR new1# < 0
CurrFig#(2) = new1#
reg = 0: b = 1
DO WHILE ref1000#(b) <> 0 OR b = 999
IF ref1000#(b) = CurrFig#(2) THEN
df = 0
FOR Ol = 17 TO 19
FOR Oc = 24 TO 49
df = df + 1
lin$(df) = CHR$(SCREEN(Ol, Oc))
NEXT Oc, Ol
box 17, 24, 19, 49
LOCATE 18, 25: PRINT "Esa Referencia ya existe"
SLEEP
COLOR colors(7, ColorPref), colors(4, ColorPref)
df = 0
FOR Ol = 17 TO 19
FOR Oc = 24 TO 49
df = df + 1
LOCATE Ol, Oc: PRINT lin$(df)
NEXT Oc, Ol
reg = 1
EXIT DO
END IF
b = b + 1
LOOP
IF reg = 1 THEN GOTO EditTransEditItem3
GOSUB EditTransPutLine2
GOSUB EditTransGetLine2
CASE 2
kbd$ = GetString$(CurrRow + 4, Col(CurrCol), kbd$, new$, vis(CurrCol), max(CurrCol))
CurrString$(1) = new$
GOSUB EditTransPutLine2
GOSUB EditTransGetLine2
CASE 3
start$ = kbd$
DO
kbd$ = GetString$(CurrRow + 4, Col(3), start$, new$, vis(3), max(3))
new3# = VAL(new$)
start$ = ""
LOOP WHILE new3# > 601# OR new3# < 0
CurrFig#(3) = new3#
IF CurrFig#(3) = 0 THEN CurrFig#(3) = 1
GOSUB EditTransPutLine2
GOSUB EditTransGetLine2
CASE 4
start$ = kbd$
DO
kbd$ = GetString$(CurrRow + 4, Col(4), start$, new$, vis(4), max(4))
new4# = VAL(new$)
start$ = ""
LOOP WHILE new4# >= 75001# OR new4# < 0
CurrFig#(4) = new4#
IF CurrFig#(4) = 0 THEN
df = 0
FOR Ol = 17 TO 19
FOR Oc = 18 TO 59
df = df + 1
lin$(df) = CHR$(SCREEN(Ol, Oc))
NEXT Oc, Ol
box 17, 18, 19, 59
LOCATE 18, 20: PRINT "El P.V.P. No puede ser 0 ni menor de 0"
SLEEP
COLOR colors(7, ColorPref), colors(4, ColorPref)
df = 0
FOR Ol = 17 TO 19
FOR Oc = 18 TO 59
df = df + 1
LOCATE Ol, Oc: PRINT lin$(df)
NEXT Oc, Ol
END IF
GOSUB EditTransPutLine2
GOSUB EditTransGetLine2
CASE 5
start$ = kbd$
DO
kbd$ = GetString$(CurrRow + 4, Col(5), start$, new$, vis(5), max(5))
new5# = VAL(new$)
start$ = ""
LOOP WHILE new5# >= 75001# OR new5 < 0
CurrFig#(5) = new5#
IF CurrFig#(5) = 0 THEN
df = 0
FOR Ol = 17 TO 19
FOR Oc = 18 TO 59
df = df + 1
lin$(df) = CHR$(SCREEN(Ol, Oc))
NEXT Oc, Ol
box 17, 18, 19, 59
LOCATE 18, 20: PRINT " El P.C. No puede ser 0 ni menor de 0"
SLEEP
df = 0
COLOR colors(7, ColorPref), colors(4, ColorPref)
FOR Ol = 17 TO 19
FOR Oc = 18 TO 59
df = df + 1
LOCATE Ol, Oc: PRINT lin$(df)
NEXT Oc, Ol
END IF
GOSUB EditTransPutLine2
GOSUB EditTransGetLine2
CASE ELSE
END SELECT
GOSUB EditTransPrintLine2
RETURN
EditTransMoveUp2:
IF CurrRow = 1 THEN
IF CurrTopline = 1 THEN
BEEP
ELSE
ScrollDown
CurrTopline = CurrTopline - 1
GOSUB EditTransGetLine2
GOSUB EditTransPrintLine2
END IF
ELSE
CurrRow = CurrRow - 1
GOSUB EditTransGetLine2
END IF
RETURN
EditTransMoveDown2:
IF (CurrRow + CurrTopline - 1) >= MaxRecord THEN
BEEP
ELSE
IF CurrRow = 19 THEN
ScrollUp
CurrTopline = CurrTopline + 1
GOSUB EditTransGetLine2
GOSUB EditTransPrintLine2
ELSE
CurrRow = CurrRow + 1
GOSUB EditTransGetLine2
END IF
END IF
p = 0
IF CurrFig#(4) = 0 THEN p = 1 ELSE IF CurrFig#(5) = 0 THEN p = 2
IF p <> 0 THEN
df = 0
FOR Ol = 17 TO 19
FOR Oc = 18 TO 59
df = df + 1
lin$(df) = CHR$(SCREEN(Ol, Oc))
NEXT Oc, Ol
box 17, 18, 19, 59
LOCATE 18, 20: IF p = 1 THEN PRINT "El P.V.P. No puede ser 0 ni menor de 0" ELSE PRINT " El P.C. No puede ser 0 ni menor de 0"
SLEEP
COLOR colors(7, ColorPref), colors(4, ColorPref)
df = 0
FOR Ol = 17 TO 19
FOR Oc = 18 TO 59
df = df + 1
LOCATE Ol, Oc: PRINT lin$(df)
NEXT Oc, Ol
END IF
RETURN
EditTransPrintLine2:
COLOR colors(7, ColorPref), colors(4, ColorPref)
CurrRecord = CurrTopline + CurrRow - 1
LOCATE CurrRow + 4, 4
IF CurrRecord = MaxRecord + 1 THEN
PRINT u1x$;
ELSEIF CurrRecord > MaxRecord THEN
PRINT u1$;
ELSE
IF CurrFig#(2) <> 0 THEN PRINT " "; : PRINT USING u6$; CurrFig#(2); ELSE PRINT " ";
IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN PRINT "<22> " + CurrString$(1); ELSE PRINT "<22> ";
IF CurrFig#(3) <> 0 THEN PRINT " <20> "; : PRINT USING u5$; CurrFig#(3); : PRINT " "; ELSE PRINT " <20> ";
IF CurrFig#(4) <> 0 THEN PRINT "<22> "; : PRINT USING u5$; CurrFig#(4); : PRINT " "; ELSE PRINT "<22> ";
IF CurrFig#(5) <> 0 THEN PRINT "<22> "; : PRINT USING u2$; CurrFig#(5); ELSE PRINT "<22> ";
END IF
RETURN
EditTransDeleteRecord2:
IF MaxRecord = 1 THEN
BEEP
ELSE
CurrRecord = CurrTopline + CurrRow - 1
MaxRecord = MaxRecord - 1
a = CurrRecord
WHILE a <= MaxRecord
GET #1, a + 2
PUT #1, a + 1
ref1000#(a) = ref1000#(a + 1)
a = a + 1
WEND
LSET valid$ = "SI"
LSET IoMaxRecord$ = Cvit$(MaxRecord)
PUT #1, 1
GOSUB EditTransPrintWholeScreen2
CurrRecord = CurrTopline + CurrRow - 1
IF CurrRecord > MaxRecord THEN
GOSUB EditTransMoveUp2
END IF
GOSUB EditTransGetLine2
END IF
RETURN
EditTransAddRecord2:
CurrRecord = CurrTopline + CurrRow - 1
a = MaxRecord
WHILE a > CurrRecord
GET #1, a + 1
PUT #1, a + 2
ref1000#(a + 1) = ref1000#(a)
a = a - 1
WEND
MaxRecord = MaxRecord + 1
LSET IoRef$ = STR$(0)
LSET IoDesc$ = ""
LSET IoCC$ = STR$(0)
LSET IoPvp$ = STR$(0)
LSET IoPc$ = STR$(0)
PUT #1, CurrRecord + 2
LSET valid$ = "SI"
LSET IoMaxRecord$ = Cvit$(MaxRecord)
PUT #1, 1
GOSUB EditTransPrintWholeScreen2
GOSUB EditTransGetLine2
RETURN
EditTransPrintWholeScreen2:
temp = CurrRow
FOR CurrRow = 1 TO 19
CurrRecord = CurrTopline + CurrRow - 1
IF CurrRecord <= MaxRecord THEN
GOSUB EditTransGetLine2
END IF
GOSUB EditTransPrintLine2
NEXT CurrRow
CurrRow = temp
RETURN
EditTransPutLine2:
CurrRecord = CurrTopline + CurrRow - 1
LSET IoRef$ = LTRIM$(RTRIM$(STR$(CurrFig#(2))))
LSET IoDesc$ = CurrString$(1)
LSET IoCC$ = LTRIM$(RTRIM$(STR$(CurrFig#(3))))
LSET IoPvp$ = LTRIM$(RTRIM$(STR$(CurrFig#(4))))
LSET IoPc$ = LTRIM$(RTRIM$(STR$(CurrFig#(5))))
PUT #1, CurrRecord + 1
RETURN
EditTransGetLine2:
CurrRecord = CurrTopline + CurrRow - 1
GET #1, CurrRecord + 1
CurrFig#(2) = VAL(IoRef$)
CurrString$(1) = IoDesc$
CurrFig#(3) = VAL(IoCC$)
CurrFig#(4) = VAL(IoPvp$)
CurrFig#(5) = VAL(IoPc$)
RETURN
END SUB
'SaveState:
' Save color preference and account information to "Personal.cfg" data file.
SUB SaveState
OPEN "Personal.cfg" FOR OUTPUT AS #2
PRINT #2, ColorPref
FOR a = 1 TO 19
PRINT #2, account(a).Title
NEXT a
CLOSE #2
END SUB
'ScrollDown:
' Call the assembly program to scroll the screen down
SUB ScrollDown
DEF SEG = VARSEG(ScrollDownAsm(1))
CALL Absolute(VARPTR(ScrollDownAsm(1)))
DEF SEG
END SUB
'ScrollUp:
' Calls the assembly program to scroll the screen up
SUB ScrollUp
DEF SEG = VARSEG(ScrollUpAsm(1))
CALL Absolute(VARPTR(ScrollUpAsm(1)))
DEF SEG
END SUB
SUB Staul
END SUB
SUB Stock (EEE%)
END SUB
SUB Ticket (e%)
'Stores info about each column
REDIM help$(6), Col(6), vis(6), max(6), CurrString$(1), CurrFig#(6)
'Array to keep the current balance at all the transactions
REDIM Balance#(1000), Ca#(1000), Cb$(1000), Cc#(1000), Cd#(1000), Ce#(1000), lin$(155)
gf = 0
box 17, 5, 21, 75
center 18, "Por Favor Introduzca Fecha"
center 19, "con la que guardar ticket del d<>a."
PrintHelpLine "Fecha: mm - dd - aaaa"
DO
emp$ = GetString$(20, 7, DATE$, end$, 10, 10)
Fecha$ = end$
M = VAL(MID$(Fecha$, 1, 2))
D = VAL(MID$(Fecha$, 4, 2))
IF M <= 12 AND D <= 31 THEN gf = 1
IF LEN(Fecha$) < 10 THEN gf = 0
LOOP WHILE gf = 0
gf = 0
mes$ = MID$(Fecha$, 1, 2)
dia$ = MID$(Fecha$, 4, 2)
an$ = MID$(Fecha$, 7, 4)
CurrDia$ = dia$
compufech$ = mes$ + dia$ + an$
help$(1) = "Vendedor 1 a 9 "
help$(2) = "Referencia "
help$(3) = "Producto "
help$(4) = "Unidades "
help$(5) = "P.V.P. (Unidad) "
Col(1) = 2: vis(1) = 3: max(1) = 1
Col(2) = 9: vis(2) = 6: max(2) = 6
Col(3) = 19: vis(3) = 22: max(3) = 22
Col(4) = 43: vis(4) = 5: max(4) = 3
Col(5) = 51: vis(5) = 10: max(5) = 8
'Open random access file
file$ = "T-" + dia$ + mes$ + "." + Cvit$(e)
OPEN file$ FOR RANDOM AS #1 LEN = 59
FIELD #1, 2 AS IoDia$, 6 AS IoRef$, 22 AS IoDesc$, 3 AS IoUnd$, 3 AS IoCC$, 8 AS IoPvp$, 8 AS IoPc$
FIELD #1, 2 AS valid$, 5 AS IoMaxRecord$
'Initialize variables
CurrString$(1) = ""
CurrFig#(2) = 0
CurrFig#(3) = 0
CurrFig#(4) = 0
CurrFig#(5) = 0
CurrFig#(6) = 0
GET #1, 1
IF valid$ <> "SI" THEN
LSET IoDia$ = ""
LSET IoRef$ = STR$(0)
LSET IoDesc$ = ""
LSET IoUnd$ = STR$(0)
LSET IoCC$ = STR$(0)
LSET IoPvp$ = STR$(0)
LSET IoPc$ = STR$(0)
PUT #1, 2
LSET valid$ = "SI"
LSET IoMaxRecord$ = "1"
PUT #1, 1
END IF
MaxRecord = VAL(IoMaxRecord$)
Balance#(0) = 0
a = 1
WHILE a <= MaxRecord
GET #1, a + 1
p# = VAL(IoPvp$)
p1# = VAL(IoUnd$)
p2# = VAL(IoCC$)
p3# = VAL(IoPc$)
Balance#(a) = p# * p1# * p2# - p1# * p2# * p3#
BalTotal# = BalTotal# + Balance#(a)
a = a + 1
WEND
GOSUB CargaReferencias
'Draw Screen
COLOR colors(7, ColorPref), colors(4, ColorPref)
box 2, 1, 21, 80
box 22, 1, 24, 80
COLOR colors(5, ColorPref), colors(4, ColorPref)
LOCATE 1, 1: PRINT SPACE$(80);
LOCATE 1, 4: PRINT "Empresa: " + Trim$(account(e%).Title);
'LOCATE 1, 63: PRINT "Fecha: ";
'LOCATE 1, 63: PRINT "Fecha: " + Fecha$;
COLOR colors(7, ColorPref), colors(4, ColorPref)
LOCATE 3, 2: PRINT " No. <20> Ref# <20> Concepto <20> Und <20> P.V.P. <20> Total "
LOCATE 4, 2: PRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
u1$ = " <20> <20> <20> <20> <20> "
u1x$ = "<22><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
u2$ = "##,###,###"
u3$ = "##,###,###,###"
u5$ = "###"
u6$ = "######"
u9$ = "#,###,###,###,###"
CurrTopline = 1: bajabarra = 1
GOSUB EditPrintWholeScreen
bajabarra = 0
CurrRow = 1
CurrCol = 1
PrintHelpLine help$(CurrCol) + "| <F1=Fichar> <F2=Salir> <F3=Impr. Tiket> <F9=Insert> <F10=Supr>"
GOSUB EditGetLine
finished = false
GOSUB EditPrintBalances
'Loop until <F2> is pressed
DO
GOSUB EditShowCursor 'Show Cursor, Wait for key
DO: kbd$ = INKEY$: LOOP UNTIL kbd$ <> ""
ed = 1: GOSUB EditShowCursor: ed = 0: 'Oculta el cursor para obtener datos ED=1
bajabar = 0: bajabarra = 0
IF kbd$ >= " " AND kbd$ < "~" OR kbd$ = CHR$(8) THEN 'If legal key, edit item
GOSUB EditEditItem
END IF
SELECT CASE kbd$ 'Handle Special keys
CASE CHR$(0) + "H" 'up arrow
GOSUB EditMoveUp
CASE CHR$(0) + "P" 'Down arrow
GOSUB EditMoveDown
CASE CHR$(0) + "K", CHR$(0) + CHR$(15) 'Left Arrow,BackTab
CurrCol = (CurrCol + 3) MOD 5 + 1
PrintHelpLine help$(CurrCol) + "| <F1=Fichar> <F2=Salir> <F3=Impr. Tiket> <F9=Insert> <F10=Supr>"
CASE CHR$(0) + "M", CHR$(9) 'Right Arrow,Tab
CurrCol = (CurrCol) MOD 5 + 1
PrintHelpLine help$(CurrCol) + "| <F1=Fichar> <F2=Salir> <F3=Impr. Tiket> <F9=Insert> <F10=Supr>"
CASE CHR$(0) + "G" 'Home
CurrCol = 1
CASE CHR$(0) + "O" 'End
CurrCol = 6
CASE CHR$(0) + "I" 'Page Up
CurrRow = 1
CurrTopline = CurrTopline - 16
IF CurrTopline < 1 THEN
CurrTopline = 1
END IF
'************************
bajabarra = 1
GOSUB EditPrintWholeScreen
GOSUB EditGetLine
bajabarra = 0
GOSUB PrintBalan
CASE CHR$(0) + "Q" 'Page Down
CurrRow = 1
CurrTopline = CurrTopline + 16
IF CurrTopline > MaxRecord THEN
CurrTopline = MaxRecord
END IF
bajabarra = 1
GOSUB EditPrintWholeScreen
GOSUB EditGetLine
bajabarra = 0
GOSUB PrintBalan
CASE CHR$(0) + "<" 'F2
finished = true
CASE CHR$(0) + "C" 'F9
GOSUB EditAddRecord
CASE CHR$(0) + "D" 'F10
GOSUB EditDeleteRecord
CASE CHR$(13) 'Enter
CASE ELSE
BEEP
END SELECT
LOOP UNTIL finished
CLOSE
EXIT SUB
EditShowCursor:
IF ed = 1 THEN
COLOR colors(7, ColorPref), colors(4, ColorPref)
ELSE
COLOR colors(8, ColorPref), colors(9, ColorPref)
END IF
LOCATE CurrRow + 4, Col(CurrCol)
SELECT CASE CurrCol
CASE 1
IF CurrFig#(2) <> 0 THEN
PRINT USING u6$; CurrFig#(2);
ELSE
PRINT SPACE$(vis(2));
END IF
CASE 2
IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN
PRINT LEFT$(CurrString$(1), vis(2));
ELSE
PRINT SPACE$(vis(2))
END IF
CASE 3
IF CurrFig#(3) <> 0 THEN
PRINT " ";
PRINT USING u5$; CurrFig#(3);
PRINT " ";
ELSE
PRINT " ";
END IF
CASE 4
IF CurrFig#(4) <> 0 THEN
PRINT " ";
PRINT USING u5$; CurrFig#(4);
PRINT " ";
ELSE
PRINT " ";
END IF
CASE 5
IF CurrFig#(5) <> 0 THEN
PRINT USING u2$; CurrFig#(5);
ELSE
PRINT " ";
END IF
CASE 6
IF CurrFig#(6) <> 0 THEN
PRINT USING u2$; CurrFig#(6);
ELSE
PRINT " ";
END IF
END SELECT
RETURN
EditEditItem:
CurrRecord = CurrTopline + CurrRow - 1
COLOR colors(7, ColorPref), colors(4, ColorPref)
LOCATE 1, 63: PRINT "Fecha: ";
LOCATE 1, 63: PRINT "Fecha: " + Fecha$;
COLOR colors(8, ColorPref), colors(9, ColorPref)
GraDat = 0: Clasifica = 0
SELECT CASE CurrCol
CASE 1
start$ = kbd$
DO
kbd$ = GetString$(CurrRow + 4, Col(1), start$, new$, vis(1), max(1))
new1# = VAL(new$)
start$ = ""
LOOP WHILE new1# >= 1001# OR new1# < 0
CurrFig#(2) = new1#
reg = 0: b = 1
DO
IF Ca#(b) = CurrFig#(2) THEN
CurrString$(1) = Cb$(b)
CurrFig#(4) = Cc#(b)
CurrFig#(5) = Cd#(b)
CurrFig#(6) = Ce#(b)
Clasifica = 1: Valpu = 1
EXIT DO
END IF
b = b + 1
LOOP WHILE Ca#(b) <> 0 OR b <= TopeRef# + 1
IF Clasifica = 0 THEN
df = 0
FOR Ol = 16 TO 19
FOR Oc = 24 TO 49
df = df + 1
lin$(df) = CHR$(SCREEN(Ol, Oc))
NEXT Oc, Ol
box 16, 24, 19, 49
IF TopeRef# = 999 THEN
LOCATE 17, 25: PRINT " Lo siento, referencias "
LOCATE 18, 25: PRINT "AGOTADAS, elimine alguna"
ELSE
LOCATE 17, 25: PRINT "Esa Referencia no existe"
LOCATE 18, 25: PRINT "<22> Desea crearla ? (S/N) "
DO
i$ = INKEY$
LOOP WHILE i$ = ""
COLOR colors(7, ColorPref), colors(4, ColorPref)
df = 0
FOR Ol = 16 TO 19
FOR Oc = 24 TO 49
df = df + 1
LOCATE Ol, Oc: PRINT lin$(df)
NEXT Oc, Ol
IF i$ = "s" OR i$ = "S" THEN
Valpu = 0
TopeRef# = TopeRef# + 1
GraDat = 1
GraCurrDat = CurrTopline + CurrRow - 1
ELSEIF i$ = "n" OR i$ = "N" THEN CurrFig#(2) = 0
END IF
END IF
END IF
GOSUB EditPutLine
GOSUB EditGetLine
BalTotal# = BalTotal# - Balance#(CurrRecord)
PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5)
PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6)
Balance#(CurrRecord) = PvpTotal# - PcTotal#
BalTotal# = BalTotal# + Balance#(CurrRecord)
CASE 2
IF Valpu = 0 THEN
kbd$ = GetString$(CurrRow + 4, Col(CurrCol), kbd$, new$, vis(CurrCol), max(CurrCol))
CurrString$(1) = new$
END IF
GOSUB EditPutLine
GOSUB EditGetLine
CASE 3
start$ = kbd$
DO
kbd$ = GetString$(CurrRow + 4, Col(3), start$, new$, vis(3), max(3))
new3# = VAL(new$)
start$ = ""
IF CurrFig#(4) <= 100# AND new3# <= 601# OR new3# <= 0 THEN EXIT DO
IF CurrFig#(4) > 100# AND new3# <= 11 OR new3# <= 0 THEN EXIT DO
LOOP
CurrFig#(3) = new3#
GOSUB EditPutLine
GOSUB EditGetLine
BalTotal# = BalTotal# - Balance#(CurrRecord)
PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5)
PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6)
Balance#(CurrRecord) = PvpTotal# - PcTotal#
BalTotal# = BalTotal# + Balance#(CurrRecord)
CASE 4
IF Valpu = 0 THEN
start$ = kbd$
DO
kbd$ = GetString$(CurrRow + 4, Col(4), start$, new$, vis(4), max(4))
new4# = VAL(new$)
start$ = ""
IF CurrFig#(3) <= 10 AND new4# <= 601 OR new4# <= 0 THEN EXIT DO
IF CurrFig#(3) > 10 AND new4# <= 101 OR new4# <= 0 THEN EXIT DO
LOOP
CurrFig#(4) = new4#
END IF
GOSUB EditPutLine
GOSUB EditGetLine
BalTotal# = BalTotal# - Balance#(CurrRecord)
PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5)
PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6)
Balance#(CurrRecord) = PvpTotal# - PcTotal#
BalTotal# = BalTotal# + Balance#(CurrRecord)
CASE 5
IF Valpu = 0 THEN
start$ = kbd$
old3# = CurrFig#(5)
DO
kbd$ = GetString$(CurrRow + 4, Col(5), start$, new$, vis(5), max(5))
new5# = VAL(new$)
start$ = ""
LOOP WHILE new5# >= 75001# OR new5# < 0
a = CurrRecord
CurrFig#(5) = new5#
END IF
GOSUB EditPutLine
GOSUB EditGetLine
BalTotal# = BalTotal# - Balance#(CurrRecord)
PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5)
PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6)
Balance#(CurrRecord) = PvpTotal# - PcTotal#
BalTotal# = BalTotal# + Balance#(CurrRecord)
CASE 6
IF Valpu = 0 THEN
start$ = kbd$
old4# = CurrFig#(6)
DO
kbd$ = GetString$(CurrRow + 4, Col(6), start$, new$, vis(6), max(6))
new6# = VAL(new$)
start$ = ""
LOOP WHILE new6# >= 75001# OR new6# < 0
a = CurrRecord
CurrFig#(6) = new6#
END IF
GOSUB EditPutLine
GOSUB EditGetLine
BalTotal# = BalTotal# - Balance#(CurrRecord)
PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5)
PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6)
Balance#(CurrRecord) = PvpTotal# - PcTotal#
BalTotal# = BalTotal# + Balance#(CurrRecord)
CASE ELSE
END SELECT
GOSUB EditPrintLine
RETURN
EditMoveUp:
Valpu = 0
IF CurrRow = 1 THEN
IF CurrTopline = 1 THEN
BEEP
ELSE
ScrollDown
CurrTopline = CurrTopline - 1
GOSUB EditGetLine
GOSUB EditPrintLine
END IF
ELSE
CurrRow = CurrRow - 1
GOSUB EditGetLine
END IF
GOSUB PrintBalan
RETURN
EditMoveDown:
Valpu = 0
IF (CurrRow + CurrTopline - 1) >= MaxRecord THEN
BEEP
ELSE
IF CurrRow = 16 THEN
ScrollUp
CurrTopline = CurrTopline + 1
GOSUB EditGetLine
GOSUB EditPrintLine
ELSE
CurrRow = CurrRow + 1
GOSUB EditGetLine
END IF
END IF
GOSUB PrintBalan
RETURN
EditPrintLine:
COLOR colors(7, ColorPref), colors(4, ColorPref)
CurrRecord = CurrTopline + CurrRow - 1
LOCATE CurrRow + 4, 2
IF CurrRecord = MaxRecord + 1 THEN
PRINT u1x$;
ELSEIF CurrRecord > MaxRecord THEN
PRINT u1$;
ELSE
IF CurrFig#(2) <> 0 THEN PRINT USING u6$; CurrFig#(2); ELSE PRINT " ";
IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN PRINT "<22>" + CurrString$(1); ELSE PRINT "<22> ";
IF CurrFig#(3) <> 0 THEN PRINT "<22> "; : PRINT USING u5$; CurrFig#(3); : PRINT " "; ELSE PRINT "<22> ";
IF CurrFig#(4) <> 0 THEN PRINT "<22> "; : PRINT USING u5$; CurrFig#(4); : PRINT " "; ELSE PRINT "<22> ";
IF CurrFig#(5) <> 0 THEN PRINT "<22>"; : PRINT USING u2$; CurrFig#(5); ELSE PRINT "<22> ";
IF CurrFig#(6) <> 0 THEN PRINT "<22>"; : PRINT USING u2$; CurrFig#(6); ELSE PRINT "<22> ";
PRINT "<22>";
PRINT USING u3$; Balance#(CurrRecord);
IF bajabar <> 1 THEN GOSUB EditPrintBalances
END IF
RETURN
EditPrintBalances:
COLOR colors(7, ColorPref), colors(4, ColorPref)
FOR a = 1 TO 16
CurrRecord = CurrTopline + a - 1
IF CurrRecord <= MaxRecord THEN
LOCATE 4 + a, 66
PRINT USING u3$; Balance#(CurrTopline + a - 1);
END IF
NEXT a
PrintBalan:
IF bajabarra <> 1 THEN
COLOR colors(7, ColorPref), colors(4, ColorPref)
PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5)
PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6)
LOCATE 21, 1: PRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
box 22, 1, 24, 80
LOCATE 23, 2: PRINT CurrString$(1)
LOCATE 23, 25: PRINT "<22>";
LOCATE 23, 26: PRINT USING u9$; PvpTotal#;
PRINT "<22>";
PRINT USING u9$; PcTotal#;
PRINT "<22>";
PRINT USING u9$; BalTotal#;
END IF
RETURN
EditDeleteRecord:
bajabar = 1
IF MaxRecord = 1 THEN
BEEP
ELSE
CurrRecord = CurrTopline + CurrRow - 1
MaxRecord = MaxRecord - 1
a = CurrRecord
BalTotal# = BalTotal# - Balance#(CurrRecord)
WHILE a <= MaxRecord
GET #1, a + 2
PUT #1, a + 1
Balance#(a) = Balance#(a + 1)
a = a + 1
WEND
Balance#(MaxRecord + 1) = 0
LSET valid$ = "SI"
LSET IoMaxRecord$ = Cvit$(MaxRecord)
PUT #1, 1
GOSUB EditPrintWholeScreen
CurrRecord = CurrTopline + CurrRow - 1
IF CurrRecord > MaxRecord THEN
GOSUB EditMoveUp
END IF
bajabar = 0
GOSUB EditGetLine
END IF
RETURN
EditAddRecord:
bajabar = 1
CurrRecord = CurrTopline + CurrRow - 1
a = MaxRecord
tb = 0
WHILE a > CurrRecord
GET #1, a + 1
PUT #1, a + 2
Balance#(a + 1) = Balance#(a)
a = a - 1
WEND
Balance#(CurrRecord + 1) = 0
MaxRecord = MaxRecord + 1
LSET IoRef$ = STR$(0)
LSET IoDesc$ = ""
LSET IoUnd$ = STR$(0)
LSET IoCC$ = STR$(0)
LSET IoPvp$ = STR$(0)
LSET IoPc$ = STR$(0)
PUT #1, CurrRecord + 2
LSET valid$ = "SI"
LSET IoMaxRecord$ = Cvit$(MaxRecord)
PUT #1, 1
GOSUB EditPrintWholeScreen
GOSUB EditGetLine
RETURN
EditPrintWholeScreen:
temp = CurrRow
FOR CurrRow = 1 TO 16
CurrRecord = CurrTopline + CurrRow - 1
IF CurrRecord <= MaxRecord THEN
GOSUB EditGetLine
END IF
GOSUB EditPrintLine
NEXT CurrRow
CurrRow = temp
RETURN
EditPutLine:
CurrRecord = CurrTopline + CurrRow - 1
LSET IoDia$ = CurrDia$
LSET IoRef$ = LTRIM$(RTRIM$(STR$(CurrFig#(2))))
LSET IoDesc$ = CurrString$(1)
LSET IoUnd$ = LTRIM$(RTRIM$(STR$(CurrFig#(3))))
LSET IoCC$ = LTRIM$(RTRIM$(STR$(CurrFig#(4))))
LSET IoPvp$ = LTRIM$(RTRIM$(STR$(CurrFig#(5))))
LSET IoPc$ = LTRIM$(RTRIM$(STR$(CurrFig#(6))))
PUT #1, CurrRecord + 1
IF GraCurrDat = CurrRecord THEN
file2$ = "Ref#." + Cvit$(e%)
OPEN file2$ FOR RANDOM AS #2 LEN = 54
FIELD #2, 6 AS IRf$, 22 AS IDsc$, 3 AS ICC$, 8 AS IPVP$, 8 AS IPC$
FIELD #2, 2 AS vld$, 5 AS IMxRcrd$
LSET IRf$ = LTRIM$(RTRIM$(STR$(CurrFig#(2))))
LSET IDsc$ = CurrString$(1)
LSET ICC$ = LTRIM$(RTRIM$(STR$(CurrFig#(4))))
LSET IPVP$ = LTRIM$(RTRIM$(STR$(CurrFig#(5))))
LSET IPC$ = LTRIM$(RTRIM$(STR$(CurrFig#(6))))
PUT #2, TopeRef#
LSET vld$ = "SI"
LSET IMxRcrd$ = LTRIM$(RTRIM$(STR$(TopeRef#)))
PUT #2, 1
TopeRef# = VAL(IMxRcrd$)
Ca#(TopeRef#) = CurrFig#(2)
Cb$(TopeRef#) = CurrString$(1)
Cc#(TopeRef#) = CurrFig#(4)
Cd#(TopeRef#) = CurrFig#(5)
Ce#(TopeRef#) = CurrFig#(6)
CLOSE #2
END IF
RETURN
EditGetLine:
CurrRecord = CurrTopline + CurrRow - 1
GET #1, CurrRecord + 1
dia$ = IoDia$
CurrFig#(2) = VAL(IoRef$)
CurrString$(1) = IoDesc$
CurrFig#(3) = VAL(IoUnd$)
CurrFig#(4) = VAL(IoCC$)
CurrFig#(5) = VAL(IoPvp$)
CurrFig#(6) = VAL(IoPc$)
compufech$ = mes$ + "-" + dia$ + "-" + an$
LOCATE 1, 63: PRINT "Fecha: ";
LOCATE 1, 63: PRINT "Fecha: " + compufech$;
RETURN
CargaReferencias:
CLS
box 14, 28, 17, 51
center 15, "Cargando referencias"
center 16, "Por favor, espere..."
file2$ = "Ref#." + Cvit$(e%)
OPEN file2$ FOR RANDOM AS #2 LEN = 54
FIELD #2, 6 AS IRf$, 22 AS IDsc$, 3 AS ICC$, 8 AS IPVP$, 8 AS IPC$
FIELD #2, 2 AS vld$, 5 AS IMxRcrd$
GET #2, 1
IF vld$ <> "SI" THEN
LSET IRf$ = STR$(0)
LSET IDsc$ = ""
LSET ICC$ = STR$(0)
LSET IPVP$ = STR$(0)
LSET IPC$ = STR$(0)
PUT #2, 2
LSET vld$ = "SI"
LSET IMxRcrd$ = "1"
PUT #2, 1
END IF
TopeRef# = VAL(IMxRcrd$)
b = 1
WHILE b <= TopeRef#
GET #2, b + 1
Ca#(b) = VAL(IRf$)
Cb$(b) = IDsc$
Cc#(b) = VAL(ICC$)
Cd#(b) = VAL(IPVP$)
Ce#(b) = VAL(IPC$)
b = b + 1
WEND
CLOSE #2
RETURN
END SUB
'Trin$:
' Remove null and spaces from the end of a string.
FUNCTION Trim$ (x$)
IF x$ = "" THEN
Trim$ = ""
ELSE
lastChar = 0
FOR a = 1 TO LEN(x$)
y$ = MID$(x$, a, 1)
IF y$ <> CHR$(0) AND y$ <> " " THEN
lastChar = a
END IF
NEXT a
Trim$ = LEFT$(x$, lastChar)
END IF
END FUNCTION
SUB Vende (r%)
'Information about each column
REDIM help$(4), Col(4), vis(4), max(4), Title$(9), Desc$(9), Ca$(9), AType$(9)
'Draw the screen
COLOR colors(7, ColorPref), colors(4, ColorPref)
OPEN "Vendedor" + Cvit$(item) FOR RANDOM AS #1 LEN = 76
FIELD #1, 20 AS T$, 50 AS D$, 3 AS C$, 1 AS a$
FIELD #1, 2 AS valid$
IF valid$ <> "*" THEN
valid$ = "*"
PUT #1, 1
FOR a = 1 TO 9
LSET T$ = ""
LSET D$ = ""
LSET C$ = ""
LSET a$ = ""
PUT #1, a + 1
NEXT a
END IF
FOR a = 1 TO 9
GET #1, a + 1
Title$(a) = T$
Desc$(a) = D$
Ca$(a) = C$
AType$(a) = a$
NEXT a
CLOSE
box 2, 1, 14, 80
box 15, 1, 18, 80
COLOR colors(5, ColorPref), colors(4, ColorPref)
LOCATE 1, 1: PRINT SPACE$(80)
LOCATE 1, 4: PRINT "Editor de Vendedores, Empresa: " + Trim$(account(r%).Title);
COLOR colors(7, ColorPref), colors(4, ColorPref)
LOCATE 3, 2: PRINT "No<4E> Vendedor/a <20> Otros Datos <20> C.A <20>N.A"
LOCATE 4, 2: PRINT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
u$ = "##<23>\ \<5C>\ \<5C>\ \<5C> ! "
FOR a = 5 TO 13
LOCATE a, 2
x = a - 4
PRINT USING u$; x; Title$(x); Desc$(x); Ca$(x); AType$(x);
NEXT a
'Initialize variables
help$(1) = " Nombre del Vendedor/a "
help$(2) = " Direcci<63>n, n<> Telefono, etc... "
help$(3) = " Codigo Personal de Acceso al Sistema "
help$(4) = " Acceso al Sistema ( Nivel 1 a 5 ) "
Col(1) = 5: Col(2) = 26: Col(3) = 72: Col(4) = 78
vis(1) = 20: vis(2) = 50: vis(3) = 4: vis(4) = 1
max(1) = 20: max(2) = 50: max(3) = 3: max(4) = 1
finished = false
CurrRow = 1
CurrCol = 1
PrintHelpLine help$(CurrCol) + "| <F2=Guardar y Salir> <Esc=Anula>"
'Loop until F2 or <ESC> is pressed
DO
GOSUB EditAccountsShowCursor 'Show Cursor
DO 'Wait for key
kbd$ = INKEY$
LOOP UNTIL kbd$ <> ""
IF kbd$ >= " " AND kbd$ < "~" THEN 'If legal, edit item
COLOR colors(8, ColorPref), colors(9, ColorPref)
ok = false
start$ = kbd$
DO
kbd$ = GetString$(CurrRow + 4, Col(CurrCol), start$, end$, vis(CurrCol), max(CurrCol))
SELECT CASE CurrCol
CASE 1: Title$(CurrRow) = LEFT$(end$ + SPACE$(max(CurrCol)), max(CurrCol))
CASE 2: Desc$(CurrRow) = LEFT$(end$ + SPACE$(max(CurrCol)), max(CurrCol))
CASE 3: Ca$(CurrRow) = LEFT$(end$ + SPACE$(max(CurrCol)), max(CurrCol))
CASE 4: AType$(CurrRow) = LEFT$(end$ + SPACE$(max(CurrCol)), max(CurrCol))
CASE ELSE
END SELECT
start$ = ""
IF CurrCol = 4 THEN
x$ = UCASE$(end$)
IF VAL(x$) >= 1 OR VAL(x$) <= 5 THEN
ok = true
ELSE
BEEP
END IF
ELSE
ok = true
END IF
LOOP UNTIL ok
END IF
hide = 1: GOSUB EditAccountsShowCursor: hide = 0 'Hide Cursor so it can move
'If it needs to
SELECT CASE kbd$
CASE CHR$(0) + "H" 'Up Arrow
CurrRow = (CurrRow + 17) MOD 9 + 1
CASE CHR$(0) + "P" 'Down Arrow
CurrRow = (CurrRow) MOD 9 + 1
CASE CHR$(0) + "K", CHR$(0) + CHR$(15) 'Left or Shift+Tab
CurrCol = (CurrCol + 1) MOD 4 + 1
PrintHelpLine help$(CurrCol) + "| <F2=Guardar y Salir> <Esc=Anula>"
CASE CHR$(0) + "M", CHR$(9) 'Right or Tab
CurrCol = (CurrCol) MOD 4 + 1
PrintHelpLine help$(CurrCol) + "| <F2=Guardar y Salir> <Esc=Anula>"
CASE CHR$(0) + "<" 'F2
finished = true
Save = true
CASE CHR$(27) 'Esc
finished = true
Save = false
CASE CHR$(13) 'Return
CASE ELSE
BEEP
END SELECT
LOOP UNTIL finished
IF Save THEN
OPEN "Vendedor" + Cvit$(item) FOR RANDOM AS #1 LEN = 76
FIELD #1, 20 AS T$, 50 AS D$, 3 AS C$, 1 AS a$
FIELD #1, 2 AS valid$
FOR a = 1 TO 9
LSET T$ = Title$(a)
LSET D$ = Desc$(a)
LSET C$ = Ca$(a)
LSET a$ = AType$(a)
PUT #1, a + 1
NEXT a
CLOSE
END IF
EXIT SUB
EditAccountsShowCursor:
IF hide = 0 THEN COLOR colors(8, ColorPref), colors(9, ColorPref) ELSE COLOR colors(7, ColorPref), colors(4, ColorPref)
LOCATE CurrRow + 4, Col(CurrCol)
SELECT CASE CurrCol
CASE 1: PRINT LEFT$(Title$(CurrRow), vis(CurrCol));
CASE 2: PRINT LEFT$(Desc$(CurrRow), vis(CurrCol));
CASE 3: PRINT LEFT$(Ca$(CurrRow), vis(CurrCol));
CASE 4: PRINT LEFT$(AType$(CurrRow), vis(CurrCol));
CASE ELSE
END SELECT
RETURN
END SUB