home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: InfoMgt
/
InfoMgt.zip
/
kim21.zip
/
KUNDEN.KIM
< prev
next >
Wrap
Text File
|
1995-07-27
|
38KB
|
1,304 lines
rem Programm : Kundenverwaltung
rem Programmierer : JK & HW
rem Datum : 01.07.95
rem Hauptprogramm : KUNDEN.KIM *
rem Includeprogramme : KUNDEN.INC Weitere Routinen
rem AUSWAHL.INC Listfunktion
rem LOCK.INC Netzfunktionen
rem Datendateien : KUNDEN.DBF
rem KUNDEN.MDX
rem KUNDEN.DBT (Memo)
rem KUNHIS.DBF (Nur in Verb. mit AUFTRAG)
rem KUNHIS.MDX
rem Zusatzdateien : VERZ.DAT (Def. des Programm u. Datenverz.)
rem DRUCK.DAT (Druck intern oder über Report)
rem REIHE.DAT (Feldreihenfolge)
rem KUVAR.DAT (Positionen und Beschreibungen
rem der var. Zusatzfelder )
rem --------------------------------------------------------------------
rem Netzfunktionen aktivieren
rem --------------------------------------------------------------------
call jk_init_net()
rem --------------------------------------------------------------------
rem Variablen definieren
rem --------------------------------------------------------------------
dimfloat _jk_schalter,1,3
dim _reiheA,1,30
dim _reiheB,1,30
dim _alt,1,30
DEFFLOAT a,taste,i,_f2,_f3,_f5,_f6,_f8,_f9,_pgauf,_pgab,zahl,flag,_ENTER
DEFSTRING objekt,old_objekt,_ind_bez,_version$,_verz1,_verz2,text$
deffloat _jk,_neu,_dr_lpt,_shareware
deffloat _def_prompt_len
rem --------------------------------------------------------------------
rem Physikalische Reihenfolge der Felder der ersten Seite
rem --------------------------------------------------------------------
_reiheA1 ="inp1"
_reiheA2 ="inp2"
_reiheA3 ="inp3"
_reiheA4 ="inp5"
_reiheA5 ="inp6"
_reiheA6 ="inp7"
_reiheA7 ="inp8"
_reiheA8 ="inp9"
_reiheA9 ="inp10"
_reiheA10="inp11"
_reiheA11="inp12"
_reiheA12="inp13"
_reiheA13="inp14"
_reiheA14="inp15"
_reiheA15="inp16"
_reiheA16="inp17"
_reiheA17="inp18"
_reiheA18="inp19"
_reiheA19="inp20"
_reiheA20="inp22"
_reiheA21="inp64"
_reiheA22="inp65"
_reiheA23="inp66"
_reiheA24="inp67"
rem --------------------------------------------------------------------
rem Font laden
rem --------------------------------------------------------------------
loadfont "c8","Courier",8
rem --------------------------------------------------------------------
rem Prompts plus ein Leerzeichen darstellen
rem --------------------------------------------------------------------
_def_prompt_len=1
rem --------------------------------------------------------------------
rem Verschiedene Farbpaletten definieren
rem --------------------------------------------------------------------
def_palette 1,0,15
def_palette 2,0,15
def_palette 3,2,4
rem --------------------------------------------------------------------
rem Tastaturmappings definieren
rem --------------------------------------------------------------------
_f2=10001
_f3=10002
_f5=10003
_f9=10004
_pgauf=10005
_pgab=10006
_f8=10007
_f6=10009
_ENTER=10010
SET_KEYMAP "F2",_f2,1
SET_KEYMAP "F3",_f3,2
SET_KEYMAP "F5",_f5,3
SET_KEYMAP "F6",_f6,9
SET_KEYMAP "F9",_f9,4
SET_KEYMAP "GRAY_PGUP",_pgauf,5
SET_KEYMAP "GRAY_PGDN",_pgab,6
SET_KEYMAP "F8",_f8,7
rem --------------------------------------------------------------------
rem Datei mit Bitmaps und Icons laden
rem --------------------------------------------------------------------
load_dat "icon.dat",a
rem --------------------------------------------------------------------
rem Datenbank öffnen
rem --------------------------------------------------------------------
CALL db_oeffnen()
rem --------------------------------------------------------------------
rem Feldreihenfolge holen
rem --------------------------------------------------------------------
call jk_var_holen()
rem --------------------------------------------------------------------
rem Bildschirmmasken definieren
rem --------------------------------------------------------------------
CALL fenster_inhalt()
rem --------------------------------------------------------------------
rem Menüs definieren
rem --------------------------------------------------------------------
CALL def_menu()
rem --------------------------------------------------------------------
rem Fenster auf maximale Größe und darstellen
rem --------------------------------------------------------------------
set_item_status "window",0,"maximized"
win_paint "window"
rem --------------------------------------------------------------------
rem Ersten Datensatz holen und zeigen
rem --------------------------------------------------------------------
istart 1,kun
call daten_setzen()
rem --------------------------------------------------------------------
rem Haupt-Eventschleife , wartet auf Aktionen
rem --------------------------------------------------------------------
while i<>1000
win_ev i
get_item_pos objekt,taste,old_objekt
if taste=13 then
call auswerten(objekt,taste,i)
endif
if taste >= _f2 then
call auswerten_taste(objekt,taste,i)
endif
if old_objekt = "inp1" and objekt<>"inp1" and _jk=1 then
CALL vorhanden()
endif
wend
rem --------------------------------------------------------------------
rem Programm beenden
rem --------------------------------------------------------------------
iclose 1
iclose 2
iclose 3
event_on_item "window","end"
end
rem --------------------------------------------------------------------
rem Weitere exterene Programmteile laden
rem --------------------------------------------------------------------
@auswahl.inc
@kunden.inc
@lock.inc
rem --------------------------------------------------------------------
rem Mod. zum Prüfen ob Kundennummer schon vergeben
rem --------------------------------------------------------------------
MODUL vorhanden()
deffloat ok,flag
defstring merke
dim ku,1,100
get_item "inp1",merke
set 10,merke
iread 2,ok,merke,ku
if ok = 0 then
msgbox "Nummer vorhanden",1,flag,""
set_item "inp1",""
setfocus "inp1"
exitmod
endif
ENDMOD
rem --------------------------------------------------------------------
rem Herkömmliche Auswertungsroutine KIM Ver 2.0
rem siehe neue Module mit _select() Endung
rem --------------------------------------------------------------------
MODUL auswerten(char obj,float taste,float i)
deffloat flag,a,zahl,laenge,x
defstring merke,eingabe,expr,jktemp
mid obj,merke,1,1
if merke="m" and _neu=1 and obj<>"ma1" and obj <>"ma2" then
call speichern()
endif
if obj = "ma1" and _neu<>1 then
_jk=1
_neu=1
clear kun,1,63
iadd 1,kun
call daten_setzen()
set_item "inp17","1"
set_item "inp18","0"
setfocus "inp1"
exitmod
else
_jk=0
endif
if obj="ma4" then
i=1000
exitmod
endif
if obj="ma8" then
if _jk_schalter3=0 then
for x=1 to 24
jktemp=_reiheA[x]
get_item _reiheA[x],_alt[x]
set_item _reiheA[x],""
next
call jk_reihe_zeigen()
_jk_schalter3=1
set_item "ma8","Feldreihenfolge sichern "
setfocus "inp1"
else
call jk_reihe_erstellen()
for x=1 to 24
set_item _reiheA[x],_alt[x]
next
msgbox "Reihenfolgeänderung wirksam nach Neustart",0,flag,""
_jk_schalter3=0
set_item "ma8","Feldreihenfolge ändern "
endif
exitmod
endif
if obj="Button1" and taste < _f2 then
if _neu=1 then
call speichern()
else
call fenster2()
endif
endif
if obj="Button2" and taste < _f2 then
if _neu=1 then
call speichern()
else
call fenster3()
endif
endif
if obj="Button3" and taste < _f2 then
if _neu=1 then
call speichern()
else
call fenster4()
endif
endif
if obj="Button4" and taste < _f2 then
if _neu=1 then
call speichern()
else
call fenster5()
endif
endif
ENDMOD
rem --------------------------------------------------------------------
rem Tastendrücke auf Keymaps prüfen und reagieren
rem --------------------------------------------------------------------
MODUL auswerten_taste(char obj,float taste,float i)
deffloat flag,a,zahl,laenge
defstring merke,eingabe,expr
if taste = _f2 and _neu<>1 then
_jk=1
_neu=1
clear kun,1,63
iadd 1,kun
call daten_setzen()
set_item "inp17","1"
set_item "inp18","0"
setfocus "inp1"
exitmod
else
_jk=0
endif
if taste = _f3 then
call daten_schreiben()
imodrec 1,kun
setfocus "inp1"
_neu=0
exitmod
endif
if taste = _f6 then
call zusatz_zeilen()
exitmod
endif
if taste = _f9 then
if _neu=1 then
call speichern()
else
i=1000
endif
exitmod
endif
if taste = _pgab then
if _neu=1 then
call speichern()
else
call vor_blaettern()
endif
exitmod
endif
if taste = _pgauf then
if _neu=1 then
call speichern()
else
call zur_blaettern()
endif
exitmod
endif
ENDMOD
rem --------------------------------------------------------------------
rem Eventfunktion : Falls Objekt MA5,... selektiert dann rufe die
rem entsprechende Routine auf. (Neu in KIM 2.1)
rem --------------------------------------------------------------------
modul ma5_select()
call zusatz_zeilen()
endmod
modul mf_select()
call history()
endmod
modul mc1_select()
call druck_kundenliste()
setfocus "inp1"
endmod
modul mc2_select()
call druck_telephonliste()
setfocus "inp1"
endmod
modul mc3_select()
call druck_umsatzliste()
setfocus "inp1"
endmod
modul md_select()
call zur_blaettern()
endmod
modul me_select()
call vor_blaettern()
endmod
modul mb1_select()
call suche_nach("1")
setfocus "inp1"
endmod
modul mb2_select()
call suche_nach("2")
setfocus "inp1"
endmod
modul mb3_select()
call suche_nach("3")
setfocus "inp1"
endmod
modul mb4_select()
call suche_nach("4")
setfocus "inp1"
endmod
modul ma2_select()
call daten_schreiben()
imodrec 1,kun
setfocus "inp1"
_neu=0
endmod
modul ma3_select()
deffloat flag,a
msgbox "Wollen Sie Datensatz wirklich löschen ? ",1,flag,""
if flag=1 then
ilen 1,flag
if flag <= 1 then
clear kun,1,67
imodrec 1,kun
else
idel 1
inext 1,a,kun
endif
call daten_setzen()
setfocus "inp1"
endif
endmod
rem --------------------------------------------------------------------
rem Speichern eines Datensatzes
rem --------------------------------------------------------------------
MODUL speichern()
deffloat a,flag
defstring merke
sound 100,200
call meldung_speichern(30,10,"Eingabe nicht gespeichert","Abspeichern ?",flag)
if flag=0 then
call daten_schreiben()
imodrec 1,kun
setfocus "inp1"
_neu=0
exitmod
else
if flag=2 then
idel 1
inext 1,a,kun
call daten_setzen()
setfocus "inp1"
_jk=0
_neu=0
endif
endif
ENDMOD
rem --------------------------------------------------------------------
rem Daten aus Datenbank holen und in Maskenelemente kopieren
rem --------------------------------------------------------------------
MODUL daten_setzen()
igetrec 1,kun
set_item_array "inp",kun,1,3
set_item_array "inp",kun,5,20
set_item "inp22",kun22
set_item_array "inp",kun,64,67
ENDMOD
rem --------------------------------------------------------------------
rem Daten aus Maske holen und in DB schreiben
rem --------------------------------------------------------------------
MODUL daten_schreiben()
defstring merke
deffloat i
get_item "inp17",merke
if merke <>"0" and merke <>"1" then
set_item "inp17","1"
endif
get_item "inp18",merke
if merke <>"0" and merke <>"1" then
set_item "inp18","0"
endif
get_item_array "inp",kun,1,3
get_item_array "inp",kun,5,20
kun21=""
get_item "inp22",kun22
kun23=""
get_item_array "inp",kun,64,67
if _neu=1 then
kun41=kun3
kun42=kun2
kun43=kun5
kun44=kun6
kun45=kun7
kun46=kun8
i=48
merke=" 0,00"
while i<= 60
kun[i]=merke
i=i+1
wend
_neu=0
endif
ENDMOD
rem --------------------------------------------------------------------
rem Die Artikelhistory nur in Verbindung mit ADEUS-AUFTRAG
rem --------------------------------------------------------------------
MODUL history()
defstring objekt,teil,merke
deffloat i,taste,z,erg,flag,a
call listen_anzeige(erg)
if erg=-1 then
msgbox "Keine Artikel-History vorhanden ! ",0,flag,""
exitmod
endif
win_paint "window5"
taste=0
while i <> 1000
WIN_EV i
GET_ITEM_POS objekt,taste
if taste=13 or taste =_f9 or taste = _ENTER then
i=1000
endif
find_item "liste",a
if a=-1 then
i=1000
endif
wend
if a<>-1 then
event_on_item "window5","end"
endif
ENDMOD
rem --------------------------------------------------------------------
rem Listfunktion für HISTORY
rem --------------------------------------------------------------------
MODUL listen_anzeige(float ret)
defstring objekt,merke_str,zahl,id$,string,merke,teil
deffloat i,taste,zeilen,ok,a,k,z
dim text,1,100
dim artzu,1,10
def_window "window5",5,10,80,10;"modal","size off"
def_border "rand"
def_titel "titel","Auftrags - History";"center"
add_item "window5","rand","titel"
DEF_LIST "liste",0,1,1,77,7,0,0 ;"border","c8"
DEF_SCROLLBAR "scroll1",1,0,0,0,0;"border"
def_prompt "z1",4,0,"Datum"
def_prompt "z2",18,0,"Status"
def_prompt "z3",34,0,"Bearbeiter"
def_prompt "z4",49,0,"Beleg-Nr."
def_prompt "z5",64,0,"Betrag"
add_item "window5","z1","z2","z3","z4","z5"
add_item "liste","scroll1"
add_item "window5","liste"
ret=-1
i=1
merke=kun1
iread 3,ok,merke,hist
if ok=0 then
while a<>4 and a<>3 and merke=hist1 and i<= 50
if i <=9 then
form i,string,0,1
else
form i,string,0,2
endif
text[i]=""
set 15,hist3 : set 10,hist4 : set 10,hist6 : rset 10,hist5
change hist6,44,46
form hist6,hist6,2,10
stradd text[i],hist2," ",hist3," ",hist4," ",hist5," ",hist6
id$="text"+string
def_string id$,1,0,80,text[i]
add_item "liste",id$
i=i+1
ret=0
inext 3,a,hist
wend
endif
ENDMOD
rem --------------------------------------------------------------------
rem Darstellen des aktuellen Indizes
rem --------------------------------------------------------------------
MODUL index_anzeige(char ind)
if ind="KUNDENNR" then
_ind_bez="Kundennummer"
else
if ind="UPPER(ZUSATZ)" then
_ind_bez="Firmenname"
else
if ind="UPPER(ZUNAME)" then
_ind_bez="Zuname"
else
if ind="PLZ" then
_ind_bez="Postleitzahl"
else
if ind="umsges" then
_ind_bez="Umsatz"
endif
endif
endif
endif
endif
set_item "inp70",_ind_bez
ENDMOD
rem --------------------------------------------------------------------
rem Kundenliste drucken
rem --------------------------------------------------------------------
MODUL druck_kundenliste()
defstring merke,expr,anfang,zeilen,endk,merke_feld,ausgabe
defstring formatiert,co_endk,teil1,teil2,date,sklave
deffloat flag,ok,zahl,laenge,zahl1,zahl2,a,db_nr
dim zeile,1,10
call druck_meldung(flag)
if flag=-1 then exitmod : endif
iget_nr 1,db_nr
iset 1,"tag1",expr
call index_anzeige(expr)
istart 1,kun
anfang=kun1
flag=0
call fenster_druck("Kundenliste","Ab Kundennr.","Bis Kundennr.",anfang,endk,flag)
if flag=-1 then
igo_nr 1,db_nr
call daten_setzen()
exitmod
endif
rset 10,anfang
iread 1,ok,anfang,kun
if ok=3 then
stradd zeilen,"Artikelnr. >= ",anfang," nicht vorhanden !"
msgbox zeilen,0,flag,""
igo_nr 1,db_nr
call daten_setzen()
exitmod
endif
merke_feld=kun1
compress merke_feld
compress endk
len endk,laenge
rset laenge,merke_feld
if merke_feld > endk and endk<>"" then
msgbox "Keinen Kunden gefunden",0,flag,""
igo_nr 1,db_nr
call daten_setzen()
exitmod
endif
compress endk
co_endk=endk
if endk="" then
endk="9999999999"
endif
rset 10,endk
if _dr_lpt=1 then
ausgabe="lpt1"
else
if _dr_lpt=2 then
ausgabe="lpt2"
else
ausgabe="screen"
endif
endif
exist "druck.dat",a
formatiert=""
if a=1 then
loadarray "druck.dat",zeile,1,10,a
select zeile4,44,teil,1,2
compress teil2
if teil2="1" then
formatiert="ja"
endif
endif
if formatiert="" then
call tmp_fenster(1)
datum date,3
compress co_endk
kill ausgabe
open 9,ausgabe
iread 1,ok,kun1,kun
if ok=0 then
puts 9,""
puts 9," KUNDENLISTE vom ",date
puts 9,""
puts 9," Von Kundennr. ",merke_feld," Bis Kundennr. ",co_endk
puts 9,""
puts 9," Kunden-Nr. Name "
puts 9," PLZ Ort Zentrale "
puts 9," ------------------------------------------------------------------------"
val kun1,zahl1
val endk,zahl2
while zahl1<=zahl2 and a<>3 and a<> 4
set 10,kun1 : set 15,kun4 : set 7,kun7
set 30,kun8 : set 20,kun11
compress kun5
if kun5="" then
set 30,kun2
puts 9," ",kun1," ",kun2
else
set 30,kun2
set 30,kun5
puts 9," ",kun1," ",kun5," ",kun2
endif
puts 9," ",kun7," ",kun8," ",kun11
puts 9," ------------------------------------------------------------------------"
inext 1,a,kun
val kun1,zahl1
wend
call tmp_fenster(0)
close 9
if ausgabe="screen" then
call show_datei(ausgabe)
endif
endif
else
sklave=_verz2+"kunden"
merke="kun1_li.rpt"
kill "report.dte"
kill "datei.dte"
open 8,"datei.dte"
puts 8,"_datei = ",chr(34),merke,chr(34)
puts 8,"importend"
close 8
open 8,"report.dte"
puts 8,'_index = "tag1"'
puts 8,"_ausgabe = ",chr(34),ausgabe,chr(34)
puts 8,"_startkey = ",chr(34),kun1,chr(34)
puts 8,"_endkey = ",chr(34),endk,chr(34)
puts 8,"_slavedb = ",chr(34),sklave,chr(34)
puts 8,"_masterdb = ",chr(34),sklave,chr(34)
puts 8,"_index_feld = 1"
puts 8,'_aufsteigend = "ja"'
puts 8,"importend"
close 8
shell "krun.exe","","report.kim"
endif
igo_nr 1,db_nr
call daten_setzen()
ENDMOD
rem --------------------------------------------------------------------
rem Ausgabe der Telefonliste
rem --------------------------------------------------------------------
MODUL druck_telephonliste()
defstring merke,expr,anfang,zeilen,endk,merke_feld,ausgabe
defstring formatiert,co_endk,teil1,teil2,date,sklave
deffloat flag,ok,zahl,laenge,zahl1,zahl2,a,db_nr
dim zeile,1,10
call druck_meldung(flag)
if flag=-1 then exitmod : endif
iget_nr 1,db_nr
iset 1,"tag1",expr
call index_anzeige(expr)
istart 1,kun1
anfang=kun1
flag=0
call fenster_druck("Telephonliste","Ab Kundennr.","Bis Kundennr.",anfang,endk,flag)
if flag=-1 then
igo_nr 1,db_nr
call daten_setzen()
exitmod
endif
rset 10,anfang
iread 1,ok,anfang,kun
if ok=3 then
stradd zeilen,"Kundennr. >= ",anfang," nicht vorhanden !"
msgbox zeilen,0,flag,""
igo_nr 1,db_nr
call daten_setzen()
exitmod
endif
merke_feld=kun1
compress merke_feld
len endk,laenge
rset laenge,merke_feld
if merke_feld > endk and endk<>"" then
msgbox "Keinen Kunden gefunden",0,flag,""
igo_nr 1,db_nr
call daten_setzen()
exitmod
endif
compress endk
if endk="" then
endk="9999999999"
endif
rset 10,endk
if _dr_lpt=1 then
ausgabe="lpt1"
else
if _dr_lpt=2 then
ausgabe="lpt2"
else
ausgabe="screen"
endif
endif
exist "druck.dat",a
formatiert=""
if a=1 then
loadarray "druck.dat",zeile,1,10,a
select zeile5,44,teil,1,2
compress teil2
if teil2="1" then
formatiert="ja"
endif
endif
if formatiert="" then
call tmp_fenster(1)
datum date,3
compress co_endk
kill ausgabe
open 9,ausgabe
iread 1,ok,kun1,kun
if ok=0 then
puts 9,""
puts 9," TELEPHONLISTE vom ",date
puts 9,""
puts 9," Von Kundennr. ",merke_feld," Bis Kundennr. ",co_endk
puts 9,""
puts 9," Kunden-Nr. Name "
puts 9," Ansprechpartner Zentrale Durchwahl"
puts 9," ------------------------------------------------------------------------"
val kun1,zahl1
val endk,zahl2
while zahl1<=zahl2 and a<>3 and a<> 4
set 10,kun1 : set 20,kun4 : set 20,kun9
set 20,kun11 : set 30,kun10
compress kun5
if kun5="" then
set 30,kun2
puts 9," ",kun1," ",kun2
else
set 30,kun2
set 30,kun5
puts 9," ",kun1," ",kun5," ",kun2
endif
puts 9," ",kun9," ",kun11," ",kun10
puts 9," ------------------------------------------------------------------------"
inext 1,a,kun
val kun1,zahl1
wend
call tmp_fenster(0)
close 9
if ausgabe="screen" then
call show_datei(ausgabe)
endif
endif
else
sklave=_verz2+"kunden"
merke="kun2_li.rpt"
kill "report.dte"
kill "datei.dte"
open 8,"datei.dte"
puts 8,"_datei = ",chr(34),merke,chr(34)
puts 8,"importend"
close 8
open 8,"report.dte"
puts 8,'_index = "tag1"'
puts 8,"_ausgabe = ",chr(34),ausgabe,chr(34)
puts 8,"_startkey = ",chr(34),kun1,chr(34)
puts 8,"_endkey = ",chr(34),endk,chr(34)
puts 8,"_slavedb = ",chr(34),sklave,chr(34)
puts 8,"_masterdb = ",chr(34),sklave,chr(34)
puts 8,"_index_feld = 1"
puts 8,'_aufsteigend = "ja"'
puts 8,"importend"
close 8
shell "krun.exe","","report.kim"
endif
igo_nr 1,db_nr
call daten_setzen()
ENDMOD
rem --------------------------------------------------------------------
rem Druck-Umsatzliste
rem --------------------------------------------------------------------
MODUL druck_umsatzliste()
defstring merke,expr,anfang,zeilen,endk,merke_feld,ausgabe
defstring formatiert,co_endk,teil1,teil2,date,sklave
deffloat flag,ok,zahl,laenge,zahl1,zahl2,a,db_nr
dim zeile,1,10
call druck_meldung(flag)
if flag=-1 then exitmod : endif
iget_nr 1,db_nr
iset 1,"tag5",expr
istart 1,kun
anfang=kun60
flag=1
call fenster_druck("Umsatzliste","Ab Umsatz ","Bis Umsatz ",anfang,endk,flag)
if flag=-1 then
iset 1,"tag1",expr
call index_anzeige(expr)
igo_nr 1,db_nr
call daten_setzen()
exitmod
endif
rset 12,anfang
iread 1,ok,anfang,kun
if ok=3 then
stradd zeilen,"Umsatz >= ",anfang," nicht vorhanden !"
msgbox zeilen,0,flag,""
iset 1,"tag1",expr
call index_anzeige(expr)
igo_nr 1,db_nr
call daten_setzen()
exitmod
endif
merke_feld=kun60
compress merke_feld
len endk,laenge
rset laenge,merke_feld
if merke_feld > endk and endk<>"" then
msgbox "Keinen Kunden gefunden",0,flag,""
iset 1,"tag1",expr
call index_anzeige(expr)
igo_nr 1,db_nr
call daten_setzen()
exitmod
endif
compress endk
co_endk=endk
if endk="" then
endk="999999999999"
endif
rset 12,endk
if _dr_lpt=1 then
ausgabe="lpt1"
else
if _dr_lpt=2 then
ausgabe="lpt2"
else
ausgabe="screen"
endif
endif
exist "druck.dat",a
formatiert=""
if a=1 then
loadarray "druck.dat",zeile,1,10,a
select zeile6,44,teil,1,2
compress teil2
if teil2="1" then
formatiert="ja"
endif
endif
if formatiert="" then
call tmp_fenster(1)
datum date,3
compress co_endk
kill ausgabe
open 9,ausgabe
iread 1,ok,kun60,kun
if ok=0 then
puts 9,""
puts 9," UMSATZLISTE vom ",date
puts 9,""
puts 9," AB Umsatz ",merke_feld," Bis Umsatz ",co_endk
puts 9,""
puts 9," Kunden-Nr. Name "
puts 9,""
puts 9," Januar Februar Maerz April Mai"
puts 9," Juni Juli August September Oktober"
puts 9," November Dezember Gesamt"
puts 9," ------------------------------------------------------------------------"
val kun60,zahl1
val endk,zahl2
while zahl1<=zahl2 and a<>3 and a<> 4
set 10,kun1 : set 20,kun4
rset 12,kun48 : rset 12,kun49 : rset 12,kun50 : rset 12,kun51 : rset 12,kun52
rset 12,kun53 : rset 12,kun54 : rset 12,kun55 : rset 12,kun56 : rset 12,kun57
rset 12,kun58 : rset 12,kun59 : rset 12,kun60
compress kun5
if kun5="" then
set 30,kun2
puts 9," ",kun1," ",kun2
else
set 30,kun2
set 30,kun5
puts 9," ",kun1," ",kun5," ",kun2
endif
puts 9,""
puts 9," ",kun48," ",kun49," ",kun50," ",kun51," ",kun52
puts 9," ",kun53," ",kun54," ",kun55," ",kun56," ",kun57
puts 9," ",kun58," ",kun59," ",kun60
puts 9," ------------------------------------------------------------------------"
inext 1,a,kun
val kun60,zahl1
wend
call tmp_fenster(0)
close 9
if ausgabe="screen" then
call show_datei(ausgabe)
endif
endif
else
sklave=_verz2+"kunden"
merke="kun3_li.rpt"
kill "report.dte"
kill "datei.dte"
open 8,"datei.dte"
puts 8,"_datei = ",chr(34),merke,chr(34)
puts 8,"importend"
close 8
open 8,"report.dte"
puts 8,'_index = "tag5"'
puts 8,"_ausgabe = ",chr(34),ausgabe,chr(34)
puts 8,"_startkey = ",chr(34),kun60,chr(34)
puts 8,"_endkey = ",chr(34),endk,chr(34)
puts 8,"_slavedb = ",chr(34),sklave,chr(34)
puts 8,"_masterdb = ",chr(34),sklave,chr(34)
puts 8,"_index_feld = 60"
puts 8,'_aufsteigend = "ja"'
puts 8,"importend"
close 8
shell "krun.exe","","report.kim"
endif
iset 1,"tag1",expr
call index_anzeige(expr)
igo_nr 1,db_nr
call daten_setzen()
ENDMOD
rem --------------------------------------------------------------------
rem Umsatz pro Kunden drucken
rem --------------------------------------------------------------------
MODUL umsatz_einzel_druck()
defstring merke,expr,anfang,zeilen,endk,merke_feld,ausgabe
defstring formatiert,co_endk,teil1,teil2,date,sklave
deffloat flag,ok,zahl,laenge,zahl1,zahl2,a
dim zeile,1,10
call druck_meldung(flag)
if flag=-1 then exitmod : endif
if _dr_lpt=1 then
ausgabe="lpt1"
else
if _dr_lpt=2 then
ausgabe="lpt2"
else
ausgabe="screen"
endif
endif
call tmp_fenster(1)
datum date,3
kill ausgabe
open 9,ausgabe
puts 9,""
puts 9," UMSATZLISTE vom ",date
puts 9,""
puts 9," Kunden-Nr. ",kun1
puts 9," Anrede ",kun3
puts 9," Firmenname 1 ",kun5
puts 9," Firmenname 2 ",kun2
puts 9," Strasse ",kun6
puts 9," Plz ",kun7
puts 9," Ort ",kun8
puts 9," Ansprechpartner ",kun9
puts 9," Durchwahl ",kun10
puts 9," Zentrale ",kun11
puts 9," Telefax ",kun12
rset 12,kun48 : rset 12,kun49 : rset 12,kun50 : rset 12,kun51 : rset 12,kun52
rset 12,kun53 : rset 12,kun54 : rset 12,kun55 : rset 12,kun56 : rset 12,kun57
rset 12,kun58 : rset 12,kun59 : rset 12,kun60
puts 9,""
puts 9," ------------------------------"
puts 9," Januar ",kun48," DM"
puts 9," Februar ",kun49," DM"
puts 9," Maerz ",kun50," DM"
puts 9," April ",kun51," DM"
puts 9," Mai ",kun52," DM"
puts 9," Juni ",kun53," DM"
puts 9," Juli ",kun54," DM"
puts 9," August ",kun55," DM"
puts 9," September ",kun56," DM"
puts 9," Oktober ",kun57," DM"
puts 9," November ",kun58," DM"
puts 9," Dezember ",kun59," DM"
puts 9," ------------------------------"
puts 9," Gesamt ",kun60," DM"
puts 9," =============================="
call tmp_fenster(0)
close 9
if ausgabe="screen" then
call show_datei(ausgabe)
endif
ENDMOD
rem --------------------------------------------------------------------
rem Fenster für Eingabe der Druckparameter (von .. bis )
rem --------------------------------------------------------------------
MODUL fenster_druck(char titel,char ueber1,char ueber2,char merke1,char merke2,float ret)
deffloat taste,i,a
defstring obj
def_window "windr",30,6,30,7;"modal","size off"
def_border "randdr"
def_titel "titeldr",titel;"center"
add_item "windr","randdr","titeldr"
DEF_PROMPT "ausdr1" , 1, 1,ueber1
DEF_PROMPT "ausdr2" , 1, 2,ueber2
if ret=1 then
def_number "inpdr1" ,15, 1,12,"","";"decimal 2","right","clear","border"
def_number "inpdr2" ,15, 2,12,"","";"decimal 2","right","clear","border"
else
DEF_STRING "inpdr1" ,15, 1,12,merke1;"border","clear"
DEF_STRING "inpdr2" ,15, 2,12,merke1;"border","clear"
endif
def_button "buttdr1",2,4,10,"","Ok";"auto size"
def_button "buttdr2",15,4,10,"","Abbruch";"auto size"
ADD_ITEM "windr","ausdr1","inpdr1","ausdr2","inpdr2","buttdr1","buttdr2"
win_paint "windr"
add_item "windr","inpdr1"
while i<>1000
win_ev i
get_item_pos obj,taste
if obj="buttdr2" and taste=13 then
ret=-1
i=1000
endif
if obj="buttdr2" and taste=_ENTER then
ret=-1
i=1000
endif
if obj="buttdr2" then
ret=-1
i=1000
endif
if obj="buttdr1" and taste=13 then
ret=0
get_item "inpdr1",merke1
get_item "inpdr2",merke2
i=1000
endif
if obj="buttdr1" and taste=_ENTER then
ret=0
get_item "inpdr1",merke1
get_item "inpdr2",merke2
i=1000
endif
find_item "windr",a
if a=-1 then
i=1000
endif
wend
if a<>-1 then
event_on_item "windr","end"
endif
ENDMOD
rem --------------------------------------------------------------------
rem Eventroutine für Eingabe der Druckparametern
rem --------------------------------------------------------------------
MODUL druck_meldung(float flag)
deffloat z,t,a,ok
defstring obj
call msg_fenster_dr()
win_paint "mdr"
set_item_status "mdr_button1",0,"set"
add_item "mdr","mdr_button4"
while z<>1000
win_ev z
get_item_pos obj,t
if t=13 or t=_ENTER then
if obj="mdr_button5" then z=1000 : flag=-1 :endif
if obj="mdr_button4" then
get_item_status "mdr_button1","set",ok
if ok=1 then _dr_lpt=1 : endif
get_item_status "mdr_button2","set",ok
if ok=1 then _dr_lpt=2 : endif
get_item_status "mdr_button3","set",ok
if ok=1 then _dr_lpt=3 : endif
z=1000
endif
endif
find_item "mdr",a
if a=-1 then
z=1000
endif
wend
if a<>-1 then
event_on_item "mdr","end"
endif
ENDMOD
rem --------------------------------------------------------------------
rem Definition des Fesnsters für Druckparameter
rem --------------------------------------------------------------------
MODUL msg_fenster_dr()
def_window "mdr",22,6, 40, 6;"move off","modal"
def_border "mdr_border"
def_titel "mdr_titel","Meldung" ;"center"
def_button "mdr_button1",2,1,7,"","LPT&1";"checkbox"
def_button "mdr_button2",12,1,7,"","LPT&2";"checkbox"
def_button "mdr_button3",22,1,12,"","&Bildschirm";"checkbox"
def_group "druck",1,0,36,2,"Ihre Wahl"
add_item "druck","mdr_button1","mdr_button2","mdr_button3"
def_button "mdr_button4", 5,3,10,"","&Ok";"auto size"
def_button "mdr_button5",20,3,10,"","&Abbruch";"auto size"
add_item "mdr",..
"mdr_border",..
"mdr_titel",..
"mdr_button4",..
"mdr_button5",..
"druck"
ENDMOD
rem --------------------------------------------------------------------
rem Eingabe von zusätzlichen Text für Kunden
rem --------------------------------------------------------------------
MODUL zusatz_zeilen()
deffloat z,t,a
defstring obj
def_window "msg_ze",5,7,78,7 ;"move off","modal"
def_border "msg_border_ze"
def_titel "msg_titel_ze","Zusatz-Text" ;"center"
def_button "msg_button1_ze",15,4,15,"","&Speichern";"auto size"
def_button "msg_button2_ze",40,4,15,"","&Quit";"auto size"
def_prompt "msg_pr1_ze",1,1,"Zeile 1 "
def_prompt "msg_pr2_ze",1,2,"Zeile 2 "
def_string "msg_inp1",9 , 1,60,kun61 ;"border","clear"
def_string "msg_inp2",9 , 2,60,kun62 ;"border","clear"
add_item "msg_ze","msg_border_ze","msg_titel_ze","msg_pr1_ze","msg_pr2_ze",..
"msg_button1_ze","msg_button2_ze","msg_inp1","msg_inp2"
win_paint "msg_ze"
set_item "msg_inp1",kun61
set_item "msg_inp2",kun62
add_item "msg_ze","msg_inp1"
while z<>1000
win_ev z
get_item_pos obj,t
if t=13 or t=_enter then
if obj="msg_button1_ze" then
get_item "msg_inp1",kun61
get_item "msg_inp2",kun62
imodrec 1,kun
z=1000
endif
if obj="msg_button2_ze" then
z=1000
endif
find_item "msg_ze",a
endif
if a=-1 then
z=1000
endif
wend
if a<>-1 then
event_on_item "msg_ze","end"
endif
ENDMOD
rem ****************** Programmende ************************