home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: InfoMgt / InfoMgt.zip / kim21.zip / KUNDEN.INC < prev    next >
Text File  |  1995-07-27  |  33KB  |  1,068 lines

  1.   
  2.   rem Programm         :   Kundenverwaltung
  3.   rem Programmierer    :   JK & HW
  4.   rem Datum            :   01.07.95
  5.   rem Hauptprogramm    :   KUNDEN.KIM
  6.   rem Includeprogramme :   KUNDEN.INC *
  7.   
  8.   
  9.   rem --------------------------------------------------------------------
  10.   rem Öffnen oder erstellen der Datenbank
  11.   rem --------------------------------------------------------------------
  12.   MODUL db_oeffnen()
  13.     
  14.     DEFFLOAT a
  15.     DEFSTRING expr
  16.     defstring datei
  17.     defstring _icreate_sep
  18.     _icreate_sep=";"
  19.     
  20.     exist "verz.dat",a
  21.     if a=1 then
  22.       loadarray "verz.dat",_verz,1,2,a
  23.     else
  24.       _verz1=""
  25.       _verz2=""
  26.     endif
  27.     
  28.     DEFINE kun1,  10 as KUNDENNR
  29.     DEFINE kun2,  30 as ZUSATZ
  30.     DEFINE kun3,   6 as ANREDE
  31.     DEFINE kun4,  20 as VORNAME
  32.     DEFINE kun5,  30 as ZUNAME
  33.     DEFINE kun6,  40 as STRASSE
  34.     DEFINE kun7,   7 as PLZ
  35.     DEFINE kun8,  40 as ORT
  36.     DEFINE kun9,  20 as ANSPRECH
  37.     DEFINE kun10, 30 as DURCHWAHL
  38.     DEFINE kun11, 20 as ZENTRALE
  39.     DEFINE kun12, 30 as TELEFAX
  40.     DEFINE kun13, 40 as KREDITINST
  41.     DEFINE kun14, 12 as KONTONR
  42.     DEFINE kun15, 12 as BANKLEITZ
  43.     DEFINE kun16,  5 as WAEHRUNG
  44.     DEFINE kun17,  1 as MWST
  45.     DEFINE kun18,  1 as EGAUSLAND
  46.     DEFINE kun19, 20 as USTID
  47.     DEFINE kun20, 10 as KREDITLIMIT
  48.     DEFINE kun21, 30 as ZAHLUNGSBED
  49.     DEFINE kun22, 10 as LKONTAKT
  50.     DEFINE kun23, 10 as NKONTAKT
  51.     DIMMEMO kun24, 10000
  52.     DEFINE kun25, 10 as Skontokonto
  53.     DEFINE kun26, 10 as Skonto
  54.     DEFINE kun27, 10 as Erloeskonto
  55.     DEFINE kun28, 10 as Bilanzkonto
  56.     DEFINE kun29, 1  as Mahnsperre
  57.     DEFINE kun30, 1  as Mahnstatus
  58.     DEFINE kun31, 1  as Gebuehr
  59.     DEFINE kun32, 1  as Zins
  60.     DEFINE kun33, 1  as Saldovortrag
  61.     DEFINE kun34, 12 as ASoll
  62.     DEFINE kun35, 12 as AHaben
  63.     DEFINE kun36, 12 as Soll
  64.     DEFINE kun37, 12 as Haben
  65.     DEFINE kun38, 1  as Bebucht
  66.     DEFINE kun39,  7 as Rabatt
  67.     DEFINE kun40, 12 as Zahlziel
  68.     DEFINE kun41,  6 as LANREDE
  69.     DEFINE kun42, 30 as LVORNAME
  70.     DEFINE kun43, 30 as LZUNAME
  71.     DEFINE kun44, 40 as LSTRASSE
  72.     DEFINE kun45,  7 as LPLZ
  73.     DEFINE kun46, 40 as LORT
  74.     DEFINE kun47, 12 as Istkonti
  75.     DEFINE kun48, 12 as umsjan
  76.     DEFINE kun49, 12 as umsfeb
  77.     DEFINE kun50, 12 as umsmer
  78.     DEFINE kun51, 12 as umsapr
  79.     DEFINE kun52, 12 as umsmai
  80.     DEFINE kun53, 12 as umsjun
  81.     DEFINE kun54, 12 as umsjul
  82.     DEFINE kun55, 12 as umsaug
  83.     DEFINE kun56, 12 as umssep
  84.     DEFINE kun57, 12 as umsokt
  85.     DEFINE kun58, 12 as umsnov
  86.     DEFINE kun59, 12 as umsdez
  87.     DEFINE kun60, 12 as umsges
  88.     DEFINE kun61, 60 as Bemerk1
  89.     DEFINE kun62, 60 as Bemerk2
  90.     DEFINE kun63, 10 as ulfnr
  91.     
  92.     rem Kohle Juni 95
  93.     rem Frei-Definierbare Felder
  94.     
  95.     DEFINE kun64, 40 as var1
  96.     DEFINE kun65, 40 as var2
  97.     DEFINE kun66, 40 as var3
  98.     DEFINE kun67, 40 as var4
  99.     
  100.     DEFINE hist1, 10 as hkdnr
  101.     DEFINE hist2, 10 as hdatum
  102.     DEFINE hist3, 15 as hstatus
  103.     DEFINE hist4, 10 as hbearb
  104.     DEFINE hist5, 10 as hbeleg
  105.     DEFINE hist6, 10 as hbetrag
  106.     DEFINE hist7,  1 as hmahnfl
  107.     
  108.     REM----- Prüfen ob Datenbank schon existiert
  109.     datei=_verz2+"kunden.dbf"
  110.     exist datei,a
  111.     IF a<>1 THEN
  112.       dim feld,1,100
  113.       dim index,1,100
  114.       
  115.       REM-----Bezeichnung       Typ    Länge   Nachkommastellen
  116.       
  117.       feld1 =" KUNDENNR      ;   N  ;  10  ;   0"
  118.       feld2 =" ZUSATZ        ;   C  ;  30  ;   0"
  119.       feld3 =" ANREDE        ;   C  ;   6  ;   0"
  120.       feld4 =" VORNAME       ;   C  ;  20  ;   0"
  121.       feld5 =" ZUNAME        ;   C  ;  30  ;   0"
  122.       feld6 =" STRASSE       ;   C  ;  40  ;   0"
  123.       feld7 =" PLZ           ;   C  ;   7  ;   0"
  124.       feld8 =" ORT           ;   C  ;  40  ;   0"
  125.       feld9 =" ANSPRECH      ;   C  ;  20  ;   0"
  126.       feld10=" DURCHWAHL     ;   C  ;  30  ;   0"
  127.       feld11=" ZENTRALE      ;   C  ;  20  ;   0"
  128.       feld12=" TELEFAX       ;   C  ;  30  ;   0"
  129.       feld13=" KREDITINST    ;   C  ;  40  ;   0"
  130.       feld14=" KONTONR       ;   N  ;  12  ;   0"
  131.       feld15=" BANKLEITZ     ;   N  ;  12  ;   0"
  132.       feld16=" WAEHRUNG      ;   C  ;   5  ;   0"
  133.       feld17=" MWST          ;   N  ;   1  ;   0"
  134.       feld18=" EGAUSLAND     ;   N  ;   1  ;   0"
  135.       feld19=" USID          ;   C  ;  20  ;   0"
  136.       feld20=" KREDITLIMIT   ;   N  ;  10  ;   2"
  137.       feld21=" ZAHLUNGSBED   ;   C  ;  30  ;   0"
  138.       feld22=" LKONTAKT      ;   C  ;  10  ;   0"
  139.       feld23=" NKONTAKT      ;   C  ;  10  ;   0"
  140.       feld24=" BEM_MEMO      ;   M  ;10000 ;   0"
  141.       feld25=" Skontokonto   ;   N  ;  10  ;   0"
  142.       feld26=" Skonto        ;   N  ;  10  ;   2"
  143.       feld27=" Erloeskonto   ;   N  ;  10  ;   0"
  144.       feld28=" Bilanzkonto   ;   N  ;  10  ;   0"
  145.       feld29=" Mahnsperre    ;   N  ;  1   ;   0"
  146.       feld30=" Mahnstatus    ;   N  ;  1   ;   0"
  147.       feld31=" Gebuehr       ;   N  ;  1   ;   0"
  148.       feld32=" Zins          ;   N  ;  1   ;   0"
  149.       feld33=" Saldovortrag  ;   N  ;  1   ;   0"
  150.       feld34=" ASoll         ;   N  ;  12  ;   2"
  151.       feld35=" AHaben        ;   N  ;  12  ;   2"
  152.       feld36=" Soll          ;   N  ;  12  ;   2"
  153.       feld37=" Haben         ;   N  ;  12  ;   2"
  154.       feld38=" Bebucht       ;   N  ;  12  ;   2"
  155.       feld39=" Rabatt        ;   N  ;  12  ;   2"
  156.       feld40=" Zahlziel      ;   C  ;  12  ;   0"
  157.       feld41=" LANREDE       ;   C  ;   6  ;   0"
  158.       feld42=" LVORNAME      ;   C  ;  30  ;   0"
  159.       feld43=" LZUNAME       ;   C  ;  30  ;   0"
  160.       feld44=" LSTRASSE      ;   C  ;  40  ;   0"
  161.       feld45=" LPLZ          ;   C  ;   7  ;   0"
  162.       feld46=" LORT          ;   C  ;  40  ;   0"
  163.       feld47=" Istkonti      ;   N  ;  12  ;   2"
  164.       feld48=" umsjan        ;   N  ;  12  ;   2"
  165.       feld49=" umsfeb        ;   N  ;  12  ;   2"
  166.       feld50=" umsmer        ;   N  ;  12  ;   2"
  167.       feld51=" umsapr        ;   N  ;  12  ;   2"
  168.       feld52=" umsmai        ;   N  ;  12  ;   2"
  169.       feld53=" umsjun        ;   N  ;  12  ;   2"
  170.       feld54=" umsjul        ;   N  ;  12  ;   2"
  171.       feld55=" umsaug        ;   N  ;  12  ;   2"
  172.       feld56=" umssep        ;   N  ;  12  ;   2"
  173.       feld57=" umsokt        ;   N  ;  12  ;   2"
  174.       feld58=" umsnov        ;   N  ;  12  ;   2"
  175.       feld59=" umsdez        ;   N  ;  12  ;   2"
  176.       feld60=" umsges        ;   N  ;  12  ;   2"
  177.       feld61=" Bemerk1       ;   C  ;  60  ;   0"
  178.       feld62=" Bemerk2       ;   C  ;  60  ;   0"
  179.       feld63=" ulfnr         ;   C  ;  10  ;   0"
  180.       
  181.       rem Neu Juni 95 Kohle
  182.       feld64=" var1          ;   C  ;  60  ;   0"
  183.       feld65=" var2          ;   C  ;  60  ;   0"
  184.       feld66=" var3          ;   C  ;  60  ;   0"
  185.       feld67=" var4          ;   C  ;  60  ;   0"
  186.       
  187.       
  188.       
  189.       REM---Bezeichnung Ausdruck Filter    Unique ja/nein    Ab/Aufsteigend
  190.       index1='tag1 ; KUNDENNR          ; DEL()<>"*" ;    1;    0'
  191.       index2='tag2 ; UPPER(ZUSATZ)     ; DEL()<>"*" ;    0;    0'
  192.       index3='tag3 ; UPPER(ZUNAME)     ; DEL()<>"*" ;    0;    0'
  193.       index4='tag4 ; PLZ               ; DEL()<>"*" ;    0;    0'
  194.       index5='tag5 ; umsges            ; DEL()<>"*" ;    0;    0'
  195.       index6=""
  196.       
  197.       datei=_verz2+"kunden.dbf" : kill datei
  198.       datei=_verz2+"kunden.mdx" : kill datei
  199.       datei=_verz2+"kunden.dbt" : kill datei
  200.       
  201.       datei=_verz2+"kunden"
  202.       icreate datei,feld,index
  203.       
  204.       IOPEN 1,datei
  205.       IOPEN_INDEX 1,datei
  206.       ISET 1,"tag1",expr
  207.       ISTART 1,kun
  208.       IADD 1,kun
  209.       ICLOSE 1
  210.     ENDIF
  211.     
  212.     datei=_verz2+"kunhis.dbf"
  213.     exist datei,a
  214.     IF a<>1 THEN
  215.       dim fld,1,10
  216.       dim ind,1,10
  217.       
  218.       fld1 =" hkdnr    ;   C  ;  10  ;   0"
  219.       fld2 =" hdatum   ;   C  ;  10  ;   0"
  220.       fld3 =" hstatus  ;   C  ;  15  ;   0"
  221.       fld4 =" hbearb   ;   C  ;  10  ;   0"
  222.       fld5 =" hbeleg   ;   N  ;  10  ;   0"
  223.       fld6 =" hbetrag  ;   N  ;  10  ;   2"
  224.       fld7 =" hmahnfl  ;   C  ;   1  ;   0"
  225.       fld8 =""
  226.       
  227.       REM---Bezeichnung Ausdruck Filter    Unique ja/nein    Ab/Aufsteigend
  228.       ind1='tag1 ; hkdnr+hdatum ; DEL()<>"*" ;    0;    1'
  229.       ind2=""
  230.       
  231.       datei=_verz2+"kunhis.dbf" : kill datei
  232.       datei=_verz2+"kunhis.mdx" : kill datei
  233.       datei=_verz2+"kunhis.dbt" : kill datei
  234.       
  235.       datei=_verz2+"kunhis"
  236.       icreate datei,fld,ind
  237.       
  238.       IOPEN 1,datei
  239.       IOPEN_INDEX 1,datei
  240.       ISET 1,"tag1",expr
  241.       ISTART 1,hist
  242.       IADD 1,hist
  243.       ICLOSE 1
  244.       
  245.     ENDIF
  246.     
  247.     datei=_verz2+"kunden"
  248.     IOPEN 1,datei
  249.     IOPEN_INDEX 1,datei
  250.     ISET 1,"tag1",expr
  251.     ISTART 1,kun
  252.     
  253.     IOPEN 2,datei
  254.     IOPEN_INDEX 2,datei
  255.     ISET 2,"tag1",expr
  256.     ISTART 2,kun
  257.     
  258.     datei=_verz2+"kunhis"
  259.     IOPEN 3,datei
  260.     IOPEN_INDEX 3,datei
  261.     ISET 3,"tag1",expr
  262.     ISTART 3,hist
  263.     
  264.     _ind_bez="Kundennummer"
  265.     
  266.   ENDMOD
  267.   
  268.   rem --------------------------------------------------------------------
  269.   rem Maske der ersten Seite
  270.   rem --------------------------------------------------------------------
  271.   MODUL fenster_inhalt()
  272.     defstring inhalt,datei
  273.     deffloat a
  274.     
  275.     def_window "window",0,0,75,15;"modal"
  276.     def_border "rand"
  277.     def_titel "titel","Kundenstammverwaltung";"center"
  278.     def_max_button "max"
  279.     def_scrollbar "jk_scroll_w",1,0,0,0,0
  280.     def_toolbar   "jk_tool_w",0,0,0,0;"region off"
  281.     add_item "window","rand","max","titel","jk_scroll_w"
  282.     
  283.     def_prompt     "aus1",1,1,  "Kundennr. ";""
  284.     def_prompt     "aus3",1,2,  "Anrede         ";""
  285.     def_prompt     "aus5",1,3,  "Firmenname 1   ";""
  286.     def_prompt     "aus2",1,4,  "Firmenname 2   ";""
  287.     def_prompt     "aus6",1,5,  "Strasse        ";""
  288.     def_prompt     "aus7",1,6,  "Plz            ";""
  289.     def_prompt     "aus8",30,6, "Ort            ";""
  290.     def_prompt     "aus9",1,7,  "Kontaktperson  ";""
  291.     def_prompt     "aus10",39,7,"Durchwahl      ";""
  292.     def_prompt     "aus11",1,8, "Zentrale       ";""
  293.     def_prompt     "aus12",44,8,"Fax            ";""
  294.     def_prompt     "aus13",1,9, "Kreditinstitut ";""
  295.     def_prompt     "aus14",1,10, "Kontonummer    ";""
  296.     def_prompt     "aus15",37,10,"Bankleitzahl   ";""
  297.     def_prompt     "aus16",64,10,"Waehrung  "     ;""
  298.     def_prompt     "aus17",1,11,"MwSt pflichtig ";""
  299.     def_prompt     "aus18",37,11,"EG-Ausland    ";""
  300.     def_prompt     "aus19",54,11,"USID          ";""
  301.     def_prompt     "aus20",1,12,"Kreditlimit    ";""
  302.     def_prompt     "aus21",30,12,"Letzter Kontakt ";""
  303.     
  304.     
  305.     def_prompt     "aus24",20,11,"<-1=Ja/0=Nein->"  ;""
  306.     
  307.     def_string     "inp1"   ,17,1,10,kun1,13  ;"border","right"
  308.     def_string     "inp2"   ,17,4,30,kun2,34  ;"border"
  309.     def_string     "inp3"   ,17,2,6 ,kun3, 8  ;"border"
  310.     def_string     "inp5"   ,17,3,30,kun5,34  ;"border"
  311.     def_string     "inp6"   ,17,5,40,kun6,45  ;"border"
  312.     def_string     "inp7"   ,17,6, 7,kun7, 9  ;"border"
  313.     def_string     "inp8"   ,35,6,40,kun8,47  ;"border"
  314.     def_string     "inp9"   ,17,7,20,kun9,22  ;"border"
  315.     def_string     "inp10",50, 7,30,kun10,32  ;"border"
  316.     def_string     "inp11",17, 8,20,kun11,22  ;"border"
  317.     def_string     "inp12",50, 8,30,kun12,32  ;"border"
  318.     def_string     "inp13",17, 9,40,kun13,45  ;"border"
  319.     def_number     "inp14",17,10,12,kun14,""  ;"decimal 0","right","clear","border"
  320.     def_number     "inp15",49,10,12,kun15,"";"decimal 0","right","clear","border"
  321.     def_string     "inp16",75,10, 5,kun16, 7  ;"border"
  322.     def_string     "inp17",17,11, 3,kun17, 3 ;"border","clear"
  323.     def_string     "inp18",49,11, 3,kun18, 3 ;"border","clear"
  324.     def_string     "inp19",60,11,20,kun19,22  ;"border"
  325.     
  326.     def_number     "inp20",17,12,12,kun10,"0..99.99";"decimal 2","right","clear","border"
  327.     def_input_date "inp22",47,12,12,kun22,"" ;"border"
  328.     
  329.     
  330.     
  331.     
  332.     set 15,_ind_bez
  333.     def_prompt     "aus23",22,17,"Sortiert nach"  ;""
  334.     def_prompt     "inp70",37,17,_ind_bez;"border"
  335.     add_item "window","aus23","inp70"
  336.     
  337.     
  338.     rem vier Felder mit variabler Position
  339.     rem Positionsdaten werden geladen
  340.     
  341.     def_string     "inp64",_j_x5,_j_y5,_j_l5,kun64  ;"border"
  342.     def_string     "inp65",_j_x6,_j_y6,_j_l6,kun65  ;"border"
  343.     def_string     "inp66",_j_x7,_j_y7,_j_l7,kun66  ;"border"
  344.     def_string     "inp67",_j_x8,_j_y8,_j_l8,kun67  ;"border"
  345.     
  346.     def_prompt     "j_aus64",_j_x1,_j_y1,_j_var1
  347.     def_prompt     "j_aus65",_j_x2,_j_y2,_j_var2
  348.     def_prompt     "j_aus66",_j_x3,_j_y3,_j_var3
  349.     def_prompt     "j_aus67",_j_x4,_j_y4,_j_var4
  350.     
  351.     DEF_BUTTON     "Button1", 1 ,0 ,14,"","Seite &2"
  352.     DEF_BUTTON     "Button2", 16,0 ,14,"","Seite &3"
  353.     DEF_BUTTON     "Button4", 32,0 ,14,"","Seite &4"
  354.     DEF_BUTTON     "Button3", 48,0 ,14,"","U&msatz"
  355.     
  356.     
  357.     add_item_array "window","aus",1,3
  358.     add_item_array "window","aus",5,21
  359.     add_item "window","aus24"
  360.     add_item_array "window","j_aus",64,67
  361.     
  362.     datei=_verz2+"reihe.dat"
  363.     exist datei,a
  364.     if a=1 then
  365.       call jk_reihe_laden()
  366.     else
  367.       add_item "window","inp1"
  368.       add_item "window","inp3","inp5","inp2"
  369.       add_item_array "window","inp",6,20
  370.       add_item_array "window","inp",64,67
  371.       add_item "window","inp22"
  372.     endif
  373.     add_item "jk_tool_w","Button1","Button2","Button4","Button3"
  374.     add_item "window","jk_tool_w"
  375.     
  376.   ENDMOD
  377.   
  378.   rem --------------------------------------------------------------------
  379.   rem Vor Blättern , automatisch speichern wenn Satz geändert
  380.   rem --------------------------------------------------------------------
  381.   modul vor_blaettern()
  382.     deffloat a
  383.     if _neu=1 then
  384.       call jk_lock(1)
  385.       if _jk_ok=1 then
  386.         call daten_schreiben()
  387.         imodrec 1,kun
  388.         rem iunlock 1,_jk_ok
  389.         _neu=0
  390.       endif
  391.     endif
  392.     inext 1,a,kun
  393.     if a=3 then
  394.       beep
  395.       iprev 1,a,kun
  396.       call daten_setzen()
  397.     else
  398.       call daten_setzen()
  399.     endif
  400.     add_item "window","inp1"
  401.     call jk_lock(1)
  402.   endmod
  403.   
  404.   rem --------------------------------------------------------------------
  405.   rem Zurückblättern , speichern wenn geändert
  406.   rem --------------------------------------------------------------------
  407.   modul zur_blaettern()
  408.     deffloat a
  409.     if _neu=1 then
  410.       call jk_lock(1)
  411.       if _jk_ok=1 then
  412.         call daten_schreiben()
  413.         imodrec 1,kun
  414.         rem iunlock 1,_jk_ok
  415.         _neu=0
  416.       endif
  417.     endif
  418.     iprev 1,a,kun
  419.     if a=4 then
  420.       beep
  421.     else
  422.       call daten_setzen()
  423.     endif
  424.     add_item "window","inp1"
  425.     call jk_lock(1)
  426.   endmod
  427.   
  428.   rem --------------------------------------------------------------------
  429.   rem Suchen nach verschiedenen Indizes
  430.   rem --------------------------------------------------------------------
  431.   MODUL suche_nach(char ind)
  432.     deffloat ok,db_nummer
  433.     defstring index,expr
  434.     
  435.     iget_nr 1,db_nummer
  436.     stradd index,"tag",ind
  437.     iset 1,index,expr
  438.     istart 1,kun
  439.     if ind ="1" then
  440.       call dbliste(ok,1,"1+5+2","10+30+30",3,0)
  441.     else
  442.       if ind ="2" then
  443.         call dbliste(ok,1,"2+5+1","30+30+10",3,2)
  444.       else
  445.         if ind ="3" then
  446.           call dbliste(ok,1,"5+1+2","30+10+30",3,2)
  447.         else
  448.           call dbliste(ok,1,"7+8+1","7+40+10",3,0)
  449.         endif
  450.       endif
  451.     endif
  452.     if ok<>1 then
  453.       igo_nr 1,db_nummer
  454.     endif
  455.     call index_anzeige(expr)
  456.     call daten_setzen()
  457.     setfocus "inp1"
  458.   ENDMOD
  459.   
  460.   rem --------------------------------------------------------------------
  461.   rem Menü definieren
  462.   rem --------------------------------------------------------------------
  463.   MODUL def_menu()
  464.     
  465.     def_pulldown_item "ma","&Datei   ",1
  466.     def_pulldown_item "mb","&Suchen   ",1
  467.     def_pulldown_item "mc","Dr&ucken   ",1
  468.     def_pulldown_item "md"," <<&L  ",0
  469.     def_pulldown_item "me"," >>&R  ",0
  470.     def_pulldown_item "mf","  &History ",0
  471.     
  472.     def_popup_item "ma1","&Neu        F2"
  473.     def_popup_item "ma2","&Speichern  F3"
  474.     def_popup_item "ma3","&Löschen "
  475.     def_popup_item "ma5","&Zusatztext F6"
  476.     def_popup_item "ma4","&Ende       F9"
  477.     def_popup_item "ma6"," "
  478.     def_popup_item "ma7","";"sep on"
  479.     def_popup_item "ma8","Feldreihenfolge ändern"
  480.     
  481.     def_popup_item "mb1","&Kundennummer    "
  482.     def_popup_item "mb3","Firmenname &1    "
  483.     def_popup_item "mb2","Firmenname &2    "
  484.     def_popup_item "mb4","&Postleitzahl    "
  485.     
  486.     def_popup_item "mc1","&Kundenliste"
  487.     def_popup_item "mc2","&Telefonliste"
  488.     def_popup_item "mc3","&Umsatzliste"
  489.     
  490.     add_item "ma","ma1","ma2","ma3","ma5","ma6","ma7","ma8","ma4"
  491.     add_item "mb","mb1","mb3","mb2","mb4"
  492.     add_item "mc","mc1","mc2","mc3"
  493.     
  494.     def_pulldown_menu "Menu",1
  495.     ADD_ITEM "Menu","ma","mb","mc","md","me","mf"
  496.     ADD_ITEM "window","Menu"
  497.     
  498.   ENDMOD
  499.   
  500.   rem --------------------------------------------------------------------
  501.   rem Zusatzinformationen auf Fenster 2
  502.   rem --------------------------------------------------------------------
  503.   MODUL fenster2()
  504.     
  505.     def_window "window2",2,2,75,16;"modal","move off"
  506.     def_border "rand2"
  507.     def_titel "titel2","Kundenverwaltung Seite 2";"center"
  508.     def_max_button "max2"
  509.     add_item "window2","rand2","max2","titel2"
  510.     
  511.     DEF_PROMPT "Feldname1",1,1,"Skonto-Konto  ";""
  512.     DEF_PROMPT "Feldname2",37,1,"Skonto  ";""
  513.     DEF_PROMPT "Feldname3",1,2,"Erlöskonto  ";""
  514.     DEF_PROMPT "Feldname4",1,3,"Bilanzkonto  ";""
  515.     DEF_PROMPT "Feldname5",1,6,"Mahnsperre  ";""
  516.     DEF_PROMPT "Feldname6",1,7,"Mahnstatus  ";""
  517.     DEF_PROMPT "Feldname7",29,6,"Gebühr  ";""
  518.     DEF_PROMPT "Feldname8",49,6,"Zins  ";""
  519.     DEF_PROMPT "Feldname9",1,8,"Saldovortrag  ";""
  520.     DEF_PROMPT "Feldname10",1,9,"Anfang Soll  ";""
  521.     DEF_PROMPT "Feldname11",37,9,"Anfang Haben  ";""
  522.     DEF_PROMPT "Feldname12",1,10,"Soll  ";""
  523.     DEF_PROMPT "Feldname13",37,10,"Haben  ";""
  524.     DEF_PROMPT "Feldname14",1,11,"Bebucht j/n  ";""
  525.     DEF_PROMPT "Feldname15",37,2,"Rabatt  ";""
  526.     DEF_PROMPT "Feldname16",37,3,"Zahlungsziel  ";""
  527.     
  528.     DEF_STRING "inp25",18,1,15,"";"border"
  529.     def_number "inp26",50,1,12,kun26,""   ;"decimal 2","right","clear","border"
  530.     DEF_STRING "inp27",18,2,15,"";"border"
  531.     DEF_STRING "inp28",18,3,15,"";"border"
  532.     DEF_STRING "inp29",18,6,3,"";"border"
  533.     DEF_STRING "inp30",18,7,3,"";"border"
  534.     DEF_STRING "inp31",40,6,3,"";"border"
  535.     DEF_STRING "inp32",58,6,3,"";"border"
  536.     DEF_STRING "inp33",18,8,3,"";"border"
  537.     DEF_STRING "inp34",18,9,15,"";"border"
  538.     DEF_STRING "inp35",55,9,15,"";"border"
  539.     DEF_STRING "inp36",18,10,15,"";"border"
  540.     DEF_STRING "inp37",55,10,15,"";"border"
  541.     DEF_STRING "inp38",18,11,15,"";"border"
  542.     def_number "inp39",50,2, 7,kun39,""   ;"decimal 2","right","clear","border"
  543.     DEF_STRING "inp40",50,3,12,"";"border"
  544.     
  545.     DEF_BUTTON "PushButton1",1,13,16,"","Seite &1";""
  546.     
  547.     add_item_array "window2","Feldname",1,16
  548.     
  549.     add_item "window2","inp25","inp26","inp27","inp39","inp28","inp40"
  550.     add_item_array "window2","inp",29,38
  551.     
  552.     add_item "window2","PushButton1"
  553.     
  554.     deffloat y,t,a
  555.     defstring obj
  556.     
  557.     set_item_array "inp",kun,25,40
  558.     win_paint "window2"
  559.     add_item "window2","inp25"
  560.     
  561.     while y<>1000
  562.       win_ev y
  563.       get_item_pos obj,t
  564.       if t=13 or t=_ENTER then
  565.         if obj="PushButton1" then y=1000 :endif
  566.       endif
  567.       find_item "window2",a
  568.       if a=-1 then
  569.         y=1000
  570.       endif
  571.     wend
  572.     
  573.     get_item_array "inp",kun,1,3
  574.     get_item_array "inp",kun,5,20
  575.     kun21=""
  576.     get_item "inp22",kun22
  577.     kun23=""
  578.     get_item_array "inp",kun,25,40
  579.     imodrec 1,kun
  580.     if a<>-1 then
  581.       event_on_item "window2","end"
  582.     endif
  583.   ENDMOD
  584.   
  585.   rem --------------------------------------------------------------------
  586.   rem Zusatzinformationen auf Fenster 3 ( Lieferanschrift )
  587.   rem --------------------------------------------------------------------
  588.   MODUL fenster3()
  589.     
  590.     def_window "window3",2,2,70,11;"modal","move off"
  591.     def_border "rand3"
  592.     def_titel "titel3","Lieferanschrift  Kundenverwaltung Seite 3";"center"
  593.     def_max_button "max3"
  594.     add_item "window3","rand3","max3","titel3"
  595.     
  596.     def_prompt     "aus42",1,1,  "Anrede         ";""
  597.     def_prompt     "aus43",1,2,  "Firmenname 1   ";""
  598.     def_prompt     "aus70",1,3,  "Firmenname 2   ";""
  599.     def_prompt     "aus44",1,4,  "Strasse        ";""
  600.     def_prompt     "aus45",1,5,  "Plz            ";""
  601.     def_prompt     "aus46",1,6,  "Ort            ";""
  602.     
  603.     def_string     "inp41"   ,17,1,6 ,kun41, 8  ;"border","clear"
  604.     def_string     "inp43"   ,17,2,30,kun43,34  ;"border","clear"
  605.     def_string     "inp44"   ,17,4,40,kun44,45  ;"border","clear"
  606.     def_string     "inp45"   ,17,5, 7,kun45, 9  ;"border","clear"
  607.     def_string     "inp46"   ,17,6,40,kun46,47  ;"border","clear"
  608.     def_string     "inp70"   ,17,3,30,kun42,34  ;"border","clear"
  609.     
  610.     DEF_BUTTON "PushButton2", 2,8,16,"","Seite &1";""
  611.     
  612.     add_item_array "window3","aus",42,46
  613.     add_item "window3","inp41","inp43","inp70"
  614.     add_item_array "window3","inp",44,46
  615.     add_item "window3","PushButton2","aus70"
  616.     
  617.     deffloat y,t,a
  618.     defstring obj,old
  619.     
  620.     set_item_array "inp",kun,43,46
  621.     set_item "inp70",kun42
  622.     set_item "inp41",kun41
  623.     win_paint "window3"
  624.     add_item "window3","inp41"
  625.     
  626.     while y<>1000
  627.       win_ev y
  628.       get_item_pos obj,t,old
  629.       if t=13 or t=_ENTER then
  630.         if obj="PushButton2" then y=1000 :endif
  631.       endif
  632.       if old="PushButton2" then
  633.         add_item "window3","inp41"
  634.       endif
  635.       find_item "window3",a
  636.       if a=-1 then
  637.         y=1000
  638.       endif
  639.     wend
  640.     get_item_array "inp",kun,43,46
  641.     get_item "inp70",kun42
  642.     get_item "inp41",kun41
  643.     _neu=0
  644.     imodrec 1,kun
  645.     if a<>-1 then
  646.       event_on_item "window3","end"
  647.     endif
  648.   ENDMOD
  649.   
  650.   rem --------------------------------------------------------------------
  651.   rem Zusatzinformationen auf Fenster 4 ( Umsätze )
  652.   rem --------------------------------------------------------------------
  653.   MODUL fenster4()
  654.     deffloat druck
  655.     
  656.     def_window "window4",1,1,47,18;"modal"
  657.     def_border "rand4"
  658.     def_titel "titel4","Kundenumsatz";"center"
  659.     add_item "window4","rand4","titel4"
  660.     
  661.     DEF_PROMPT "aus47",1,1,"Januar  ";""
  662.     DEF_PROMPT "aus48",1,2,"Februar ";""
  663.     DEF_PROMPT "aus49",1,3,"Maerz  ";""
  664.     DEF_PROMPT "aus50",1,4,"April  ";""
  665.     DEF_PROMPT "aus51",1,5,"Mai  ";""
  666.     DEF_PROMPT "aus52",1,6,"Juni  ";""
  667.     DEF_PROMPT "aus53",1,7,"Juli  ";""
  668.     DEF_PROMPT "aus54",1,8,"August ";""
  669.     DEF_PROMPT "aus55",1,9,"September  ";""
  670.     DEF_PROMPT "aus56",1,10,"Oktober  ";""
  671.     DEF_PROMPT "aus57",1,11,"November  ";""
  672.     DEF_PROMPT "aus58",1,12,"Dezember  ";""
  673.     DEF_PROMPT "aus72",1,13,"Gesamt    ";""
  674.     
  675.     DEF_PROMPT "aus59",37,1,"DM  ";""
  676.     DEF_PROMPT "aus60",37,2,"DM  ";""
  677.     DEF_PROMPT "aus61",37,3,"DM  ";""
  678.     DEF_PROMPT "aus62",37,4,"DM  ";""
  679.     DEF_PROMPT "aus63",37,5,"DM  ";""
  680.     DEF_PROMPT "aus64",37,6,"DM  ";""
  681.     DEF_PROMPT "aus65",37,7,"DM  ";""
  682.     DEF_PROMPT "aus66",37,8,"DM  ";""
  683.     DEF_PROMPT "aus67",37,9,"DM  ";""
  684.     DEF_PROMPT "aus68",37,10,"DM  ";""
  685.     DEF_PROMPT "aus69",37,11,"DM  ";""
  686.     DEF_PROMPT "aus70",37,12,"DM  ";""
  687.     DEF_PROMPT "aus71",37,13,"DM  ";""
  688.     
  689.     DEF_STRING "inp48",24,1,13,"";"border","view only"
  690.     def_string "inp49",24,2,13,"";"border","view only"
  691.     DEF_STRING "inp50",24,3,13,"";"border","view only"
  692.     DEF_STRING "inp51",24,4,13,"";"border","view only"
  693.     DEF_STRING "inp52",24,5,13,"";"border","view only"
  694.     DEF_STRING "inp53",24,6,13,"";"border","view only"
  695.     DEF_STRING "inp54",24,7,13,"";"border","view only"
  696.     DEF_STRING "inp55",24,8,13,"";"border","view only"
  697.     DEF_STRING "inp56",24,9,13,"";"border","view only"
  698.     DEF_STRING "inp57",24,10,13,"";"border","view only"
  699.     DEF_STRING "inp58",24,11,13,"";"border","view only"
  700.     DEF_STRING "inp59",24,12,13,"";"border","view only"
  701.     DEF_STRING "inp60",24,13,13,"";"border","view only"
  702.     
  703.     DEF_BUTTON "PushButton1", 4,15,16,"","Seite &1";""
  704.     DEF_BUTTON "PushButton2",24,15,16,"","&Drucken";""
  705.     
  706.     add_item_array "window4","aus",47,72
  707.     
  708.     add_item_array "window4","inp",48,60
  709.     add_item "window4","PushButton1","PushButton2"
  710.     
  711.     set_item_array "inp",kun,48,60
  712.     
  713.     deffloat y,t,i,erg_fl,summe,a
  714.     defstring obj
  715.     
  716.     win_paint "window4"
  717.     add_item "window4","PushButton1"
  718.     
  719.     i=48
  720.     while i<=59
  721.       val kun[i],erg_fl
  722.       change kun[i],46,44
  723.       summe=summe+erg_fl
  724.       i=i+1
  725.     wend
  726.     form summe,kun60,2,12
  727.     change kun60,46,44
  728.     set_item "inp60",kun60
  729.     imodrec 1,kun
  730.     
  731.     while y<>1000
  732.       win_ev y
  733.       get_item_pos obj,t
  734.       if obj="PushButton2" and t = 13 then
  735.         druck=1
  736.         y=1000
  737.       endif
  738.       if obj="PushButton2" and t = _ENTER then
  739.         druck=1
  740.         y=1000
  741.       endif
  742.       if obj="PushButton1" and t = 13 then
  743.         druck=0
  744.         y=1000
  745.       endif
  746.       if obj="PushButton1" and t = _f9 then
  747.         druck=0
  748.         y=1000
  749.       endif
  750.       if obj="PushButton1" and t = _ENTER then
  751.         druck=0
  752.         y=1000
  753.       endif
  754.       find_item "window4",a
  755.       if a=-1 then
  756.         y=1000
  757.       endif
  758.     wend
  759.     if a<>-1 then
  760.       event_on_item "window4","end"
  761.     endif
  762.     if druck=1 then
  763.       call umsatz_einzel_druck()
  764.     endif
  765.     
  766.   ENDMOD
  767.   
  768.   rem --------------------------------------------------------------------
  769.   rem Zusatzinformationen auf Fenster 4 ( Bemerkungen )
  770.   rem --------------------------------------------------------------------
  771.   MODUL fenster5()
  772.     def_window "window5",2,2,70,11;"modal","move off"
  773.     def_border "rand5"
  774.     def_titel "titel5","Bemerkungen";"center"
  775.     def_max_button "max5"
  776.     add_item "window5","rand5","max5","titel5"
  777.     
  778.     def_prompt     "aus22",1,1,  "Bemerkungen ";""
  779.     def_text       "inp24",1,2,65,6,1000,kun24 ;"border"
  780.     
  781.     DEF_BUTTON "PushButton5", 2,8,16,"","Seite &1";""
  782.     
  783.     add_item "window5","aus22","inp24","PushButton5"
  784.     
  785.     deffloat y,t,a
  786.     defstring obj,old
  787.     
  788.     
  789.     set_item "inp24",kun24
  790.     win_paint "window5"
  791.     add_item "window5","inp24"
  792.     
  793.     while y<>1000
  794.       win_ev y
  795.       get_item_pos obj,t,old
  796.       if t=13 or t=_ENTER then
  797.         if obj="PushButton5" then y=1000 :endif
  798.       endif
  799.       if old="PushButton5" then
  800.         add_item "window5","inp24"
  801.       endif
  802.       find_item "window5",a
  803.       if a=-1 then
  804.         y=1000
  805.       endif
  806.     wend
  807.     
  808.     get_item "inp24",kun24
  809.     _neu=0
  810.     imodrec 1,kun
  811.     if a<>-1 then
  812.       event_on_item "window5","end"
  813.     endif
  814.   ENDMOD
  815.   
  816.   
  817.   rem --------------------------------------------------------------------
  818.   rem Parameter für var. Felder holen
  819.   rem --------------------------------------------------------------------
  820.   modul jk_var_holen()
  821.     dim _j_var,1,8
  822.     dimfloat _j_x,1,8
  823.     dimfloat _j_y,1,8
  824.     dimfloat _j_l,1,8
  825.     
  826.     defstring datei
  827.     deffloat a,i
  828.     datei=_verz2+"kuvar.dat"
  829.     exist datei,a
  830.     if a=1 then
  831.       open 9,datei,"r"
  832.       for i=1 to 8
  833.         gets 9,_j_var[i]
  834.         gets 9,_j_x[i]
  835.         gets 9,_j_y[i]
  836.         gets 9,_j_l[i]
  837.         set _j_l[i],_j_var[i]
  838.       next
  839.       close 9
  840.     else
  841.       
  842.       rem Feldbeschreibungen
  843.       
  844.       _j_var1="Bemerk 1       "
  845.       _j_x1  =1
  846.       _j_y1  =13
  847.       _j_l1  =15
  848.       _j_var2="Bemerk 2       "
  849.       _j_x2  =1
  850.       _j_y2  =14
  851.       _j_l2  =15
  852.       
  853.       _j_var3="Bemerk 4       "
  854.       _j_x3  =1
  855.       _j_y3  =15
  856.       _j_l3  =15
  857.       
  858.       _j_var4="Bemerk 5       "
  859.       _j_x4  =1
  860.       _j_y4  =16
  861.       _j_l4  =15
  862.       
  863.       rem Eingabefelder
  864.       _j_var5=""
  865.       _j_x5  =17
  866.       _j_y5  =13
  867.       _j_l5  =60
  868.       
  869.       _j_var6=""
  870.       _j_x6  =17
  871.       _j_y6  =14
  872.       _j_l6  =60
  873.       
  874.       _j_var7=""
  875.       _j_x7  =17
  876.       _j_y7  =15
  877.       _j_l7  =60
  878.       
  879.       _j_var8=""
  880.       _j_x8  =17
  881.       _j_y8  =16
  882.       _j_l8  =60
  883.       
  884.     endif
  885.     
  886.   endmod
  887.   
  888.   rem --------------------------------------------------------------------
  889.   rem Paramter der var. Felder in Datei speichern
  890.   rem --------------------------------------------------------------------
  891.   modul jk_var_schreiben()
  892.     
  893.     defstring datei
  894.     deffloat a,i,vor,nach
  895.     datei=_verz2+"kuvar.dat"
  896.     kill datei
  897.     open 9,datei
  898.     for i=1 to 8
  899.       puts 9,_j_var[i]
  900.       frac _j_x[i],vor,nach
  901.       puts 9,vor
  902.       frac _j_y[i],vor,nach
  903.       puts 9,vor
  904.       frac _j_l[i],vor,nach
  905.       puts 9,vor
  906.     next
  907.     close 9
  908.   endmod
  909.   
  910.   rem --------------------------------------------------------------------
  911.   rem Bewegbare Objekte im Fenster fixieren
  912.   rem --------------------------------------------------------------------
  913.   modul jk_fixiere_objekte()
  914.     
  915.     deffloat i,x,y,breite,hoehe,br,ho,z
  916.     defstring obj$,zahl$
  917.     z=0
  918.     
  919.     for i=64 to 67
  920.       z=z+1
  921.       form i,zahl$,0,1
  922.       
  923.       rem Prompts
  924.       
  925.       obj$="j_aus"+zahl$
  926.       set_item_status obj$,1,"editmode"
  927.       set_item_status obj$,0,"select off","view only"
  928.       textwidth  obj$,"W",breite
  929.       textheight obj$,"I",hoehe
  930.       hoehe=24
  931.       get_item_xy obj$,x,y,br,ho
  932.       _j_x[z]=x/breite
  933.       _j_y[z]=y/hoehe
  934.       _j_l[z]=br/breite
  935.       rem _h_pos[_ob_anzahl]=(ho/hoehe)
  936.     next
  937.     
  938.     z=4
  939.     for i=64 to 67
  940.       z=z+1
  941.       form i,zahl$,0,1
  942.       obj$="inp"+zahl$
  943.       set_item_status obj$,1,"editmode"
  944.       textwidth  obj$,"X",breite
  945.       textheight obj$,"X",hoehe
  946.       hoehe=24
  947.       get_item_xy obj$,x,y,br,ho
  948.       _j_x[z]=x/breite
  949.       _j_y[z]=y/hoehe
  950.       _j_l[z]=br/breite
  951.     next
  952.     event_on_item "window","redisplay"
  953.   endmod
  954.   
  955.   rem --------------------------------------------------------------------
  956.   rem Fixierte Objekte bewegbar machen
  957.   rem --------------------------------------------------------------------
  958.   modul jk_neupos_objekte()
  959.     deffloat i,x,y,breite,hoehe,br,ho
  960.     defstring obj$,zahl$
  961.     for i=64 to 67
  962.       form i,zahl$,0,1
  963.       rem Prompts
  964.       obj$="j_aus"+zahl$
  965.       set_item_status obj$,0,"editmode"
  966.       set_item_status obj$,1,"select off","view only"
  967.       rem Strings
  968.       obj$="inp"+zahl$
  969.       color_item obj$,3
  970.       set_item_status obj$,0,"editmode"
  971.     next
  972.     event_on_item "window","redisplay"
  973.   endmod
  974.   
  975.   rem --------------------------------------------------------------------
  976.   rem Bilden einer Liste der Eingabereihenfolge
  977.   rem --------------------------------------------------------------------
  978.   modul jk_reihe_erstellen()
  979.     defstring datei,text
  980.     deffloat i,c,x
  981.     datei=_verz2+"reihe.dat"
  982.     kill datei
  983.     open 9,datei
  984.     rem Erst prüfen der belegten Felder
  985.     for i=1 to 24
  986.       get_item _reiheA[i],text
  987.       val text,c
  988.       if c>0 and c<25 then
  989.         _reiheB[c]=_reiheA[i]
  990.       else
  991.         set_item _reiheA[i],""
  992.       endif
  993.     next
  994.     rem Nun prüfen der unblegten Felder
  995.     for i=1 to 24
  996.       get_item _reiheA[i],text
  997.       val text,c
  998.       if c=0 then
  999.         for x=1 to 24
  1000.           compress _reiheB[x]
  1001.           if _reiheB[x]="" then
  1002.             _reiheB[x]=_reiheA[i]
  1003.             x=25
  1004.           endif
  1005.         next
  1006.       endif
  1007.     next
  1008.     for i=1 to 24
  1009.       puts 9,_reiheB[i]
  1010.     next
  1011.     close 9
  1012.   endmod
  1013.   
  1014.   rem --------------------------------------------------------------------
  1015.   rem Eingabereihenfolge aus Datei laden
  1016.   rem --------------------------------------------------------------------
  1017.   modul jk_reihe_laden()
  1018.     
  1019.     deffloat i,y,x,ok
  1020.     defstring datei,text,textakt
  1021.     
  1022.     datei=_verz2+"reihe.dat"
  1023.     exist datei,ok
  1024.     if ok=1 then
  1025.       open 9,datei,"r"
  1026.       for i=1 to 24
  1027.         gets 9,text
  1028.         add_item "window",text
  1029.         if i=1 then
  1030.           textakt=text
  1031.         endif
  1032.       next
  1033.       add_item "window",textakt
  1034.       close 9
  1035.     endif
  1036.     
  1037.   endmod
  1038.   
  1039.   rem --------------------------------------------------------------------
  1040.   rem Reihenfolge am Bildschirm darstellen
  1041.   rem --------------------------------------------------------------------
  1042.   modul jk_reihe_zeigen()
  1043.     
  1044.     deffloat i,y,x,ok
  1045.     defstring datei,text,wert$
  1046.     
  1047.     datei=_verz2+"reihe.dat"
  1048.     exist datei,ok
  1049.     if ok=1 then
  1050.       open 9,datei,"r"
  1051.       for i=1 to 24
  1052.         gets 9,text
  1053.         for x=1 to 24
  1054.           if text=_reiheA[x] then
  1055.             form x,wert$,0,1
  1056.             set_item text,wert$
  1057.             x=25
  1058.           endif   
  1059.         next
  1060.       next
  1061.       close 9
  1062.     endif
  1063.   endmod
  1064.   
  1065.   
  1066.   
  1067.    
  1068.