Vielen Dank für die erste Hilfe per E-Mail.
Habe hbprint erfolgreich eingebunden.
Werde hbprintd auch einbinden, da dann die Druckerauswahl vorhanden sein sollte.
Da ich jedoch noch nicht weiß, wie ich wo und wann etwas bewirke, anbei mein Druckmodul.
Code: Alles auswählen
* Programmname : rech01.prg Rechnungsmodul - provisorisch
* wird aufgerufen von : haupt.prg
* Letzte Žnderung am : 05.09.92
* Auftraggerberlisten und Summen
* SET FUNKTIONEN
* --------------
* VARIABLEN
* -------------------------------------------------------------------------
* PRIVATE = In dieser Routine und in Unterroutinen
* PUBLIC = In allen Routinen (auch šbergeordnete)
* LOCAL = NUR in der aktuellen Routine
* STATIC = NUR in der aktuellen Routine aber auch noch nach dem Verlassen!
* -------------------------------------------------------------------------
*---------------------------HAUPTPROGRAMM----------------------------------
PROCEDURE rech01
field zaehler,datum1,auftraggeb,ladestelle,termin1,colli,kg_m3,entladeste
field termin2,fahrzeug,fahrer,zeichen,dm_km,dm_pauscha,kilometer,dm_ok,km_ok
field datum2,zeit2,in_ausland,kfzart,pronummer,gebuehren,mwsteuer,rechnung
field name1,name2,strasse,plz_ort,kd_bez,druck
field rg_nummer,dm_netto,dm_steuer,dm_summe,dm_gebueh,dm_enbet,saetze
field rg_von_dat,rg_bis_dat,rg_von_pos,rg_bis_pos
field e_name,e_name1,e_inhaber,e_strasse,e_ort,e_tel,e_tel1,e_fax,b_name1
field b_lz1,kto_nr1
field dm_kg
memvar fenster2,getlist,taste1,laufwerk1
local eauftraggeber,evon1,evon2,ebis1,ebis2,ekfzart,ein_ausland,rgfrage
local edruck
local eingabeok
local periode
local satzzahl
local rechnr,rgnummer
local temp1,temp2
local rgvondat,rgbisdat,rgvonpos,rgbispos
local cotemp1
local drname,drname1,drinhaber,drstrasse,drort,drtel,drtel1,drfax,drbname1
local drblz1,drktonr1
local altbereich
************ Adressvariablen ****************
local ename1,ename2,estrasse,eanschrift
local seitenzahl,position
************ Steuer- Betragsvariablen *********************************
local emwst1,emwst2,summe1,summe2,summe3,summe4,summe5
set decimals to 2
temp1:=laufwerk1 + "\" + "drucken.dbf"
use selbst shared new
drname:=e_name
drname1:=e_name1
drinhaber:=e_inhaber
drstrasse:=e_strasse
drort:=e_ort
drtel:=e_tel
drtel1:=e_tel1
drfax:=e_fax
drbname1:=b_name1
drblz1:=b_lz1
drktonr1:=kto_nr1
use
select felder
evon1:=zaehler
evon2:=date()
**ctod("")
ebis1:=zaehler
ebis2:=date()
**ctod("")
eauftraggeber:="***" // auftraggeb
ekfzart:=kfzart
ein_ausland:="*" // in_ausland
periode:=space(2)
rgfrage:="J"
eingabeok:="N"
select arbeit
fenster2:=wopen(1,0,24,79)
wbox()
CLS
@ 01,00 say center("Auftraggeber - Rechnung - Modul")
set confirm on
SET ESCAPE off
setcursor(1)
@ 03,05 say "Bitte Namen w„hlen:"
SAVE SCREEN
do while eauftraggeber="***"
kunden->(DBEDIT( 3, 27, 20, 48,{"kd_bez"},,,{"KUNDENLISTE"}))
eauftraggeber:=kunden->KD_BEZ
enddo
RESTORE SCREEN
@ 03,28 say eauftraggeber // picture "@!"
@ 05,05 say "Von / Pos.Nr.:"
@ 05,20 get evon1
@ 05,35 say "Bis / Pos.Nr.:"
@ 05,50 get ebis1
@ 07,05 say "VON / BIS = 0 - Abfrage nach Datum"
@ 09,05 say "Von / Termin :"
@ 09,20 get evon2 picture "@D" when evon1=0 .and. ebis1=0
@ 09,35 say "Bis / Termin :"
@ 09,50 get ebis2 picture "@D" when evon1=0 .and. ebis1=0
@ 11,05 say "Kfzart:"
@ 11,25 say "****** = Alles"
read
SAVE SCREEN
use kfz01 shared new
DBEDIT(10, 14, 20, 22,{"kfzart"},,,{"KFZART"})
ekfzart:=KFZART
RESTORE SCREEN
use
select arbeit
@ 11,13 say ekfzart // picture "@!"
@ 11,25 say "Inland - Ausland (I/A/*):"
@ 11,51 get ein_ausland picture "@!" valid ein_ausland="I" .or. ein_ausland="A" ;
.or. ein_ausland="*"
@ 11,54 say "* = Alles"
@ 13,05 say "Periode (1 - 13):"
@ 13,23 get periode picture "99"
@ 15,05 say "Mit Rechnungsnummer ? (J/N)"
@ 15,34 get rgfrage picture "@!" valid rgfrage="J" .or. rgfrage="N"
@ 17,05 say "Eingabe OK ? (J/N)"
@ 17,25 get eingabeok picture "!@" valid eingabeok="J" .or. eingabeok="N"
read
if eingabeok="N"
wclose(fenster2)
return
endif
********** Anschrifteingabe *************
select kunden
emwst1:=0
cls
eauftraggeber=kd_bez
ename1:=name1
ename2:=name2
estrasse:=strasse
eanschrift:=plz_ort
edruck:=druck
@ 03,05 say "Firmenname:"
@ 04,05 say ename1
@ 06,05 say ename2
@ 08,05 say "Straáe:"
@ 09,05 say estrasse
@ 11,05 say "Postleitzahl und Ort:"
@ 12,05 say eanschrift
@ 15,05 say "MwSt.:"
@ 16,06 get emwst1 picture "##.##"
read
setcursor(0)
select arbeit
if edruck="J"
if evon1=0 .and. ebis1=0
set filter to auftraggeb=eauftraggeber .and. termin1>=evon2 .and. termin1<=ebis2
else
set filter to auftraggeb=eauftraggeber .and. zaehler>=evon1 .and. zaehler<=ebis1
endif
go top
copy to (temp1) // drucken
use (temp1) exclusive new
index on zaehler to tempzae
select drucken
if ekfzart="******" .and. ein_ausland="*"
set filter to
go top
endif
if ein_ausland="*" .and. ekfzart<>"******"
set filter to kfzart=ekfzart
go top
endif
if ein_ausland<>"*" .and. ekfzart="******"
set filter to in_ausland=ein_ausland
go top
endif
if ein_ausland<>"*" .and. ekfzart<>"******"
set filter to kfzart=ekfzart .and. in_ausland=ein_ausland
go top
endif
go top
rgvondat:=termin1
rgvonpos:=zaehler
go bottom
rgbisdat:=termin1
rgbispos:=zaehler
go top
count to satzzahl
if satzzahl=0
use
temp1:=laufwerk1 + "\" + "drucken.dbf"
if filedelete(temp1)
cls
?
? "Keine Daten zum Druck vorhanden !!!"
?
? "Bitte Taste!"
inkey(0)
select arbeit
set filter to
go top
wclose(fenster2)
return
endif
endif
sum dm_pauscha to summe1
summe1:=round(summe1,2)
if emwst1 > 0
summe2:=round(summe1/100*emwst1,2)
else
summe2:=0
endif
emwst1:=round(emwst1,2)
summe2:=round(summe2,2)
summe3:=round(summe1+summe2,2)
summe3:=round(summe3,2)
cls
?
? ename1
? ename2
? estrasse
? eanschrift
?
? "Netto: ",summe1
? "Mehrwertsteuer:",summe2
? "Endbetrag: ",summe3
?
?
?
go top
if printready(1)
?
?
?
?
? "Rechnung wird gedruckt !"
set printer on
set device to printer
set console off
else
?
?
?
?
? "Drucker nicht bereit !!!"
?
?
? "Bitte Taste !"
inkey(0)
use
temp1:=laufwerk1 + "\" + "drucken.dbf"
filedelete(temp1)
select arbeit
set filter to
go top
wclose(fenster2)
return
endif
********************** Rechnungsdatenkank etc. **********
if rgfrage="J"
use rgdat index rgdzaeh,rgdnumm,rgdkd_b alias rechnung shared new
append blank
select rechnung
rechnr:=dtos(date()) + str(recno(),5)
rgnummer:=strtran(rechnr," ","0")
replace zaehler with recno()
replace rg_nummer with rgnummer
replace kd_bez with eauftraggeber
replace dm_netto with summe1
replace mwsteuer with emwst1
replace dm_steuer with summe2
replace dm_summe with summe3
replace dm_gebueh with 0
replace dm_endbet with summe3
replace saetze with satzzahl
replace rg_datum with date()
replace rg_von_dat with rgvondat
replace rg_bis_dat with rgbisdat
replace rg_von_pos with rgvonpos
replace rg_bis_pos with rgbispos
replace kfzart with ekfzart
use
select drucken
altbereich:=SELECT()
select arbeit
go top
flock()
replace rechnung with "X" all
unlock
select (altbereich)
endif
******************* Kopf und Anschrift drucken **************
printsend(027)
printsend(087)
printsend(001)
@03,03 say drname
*** "KELSTERB.- TRUCK - SERVICE"
* @04,06 say drname1
*** "INTERNATIONALE SPEDITION"
printsend(027)
printsend(087)
printsend(000)
@03,10 say drname1
@04,06 say drinhaber
@06,06 say drstrasse
*** "Im Taubengrund 21"
* @06,46 say drinhaber
*** "Inh. Rainer Dittel"
@07,06 say drort
*** "65451 Kelsterbach"
@07,46 say "Bankverbindung:"
@08,06 say drtel
*** "Tel.: 06107/3023"
@08,46 say drbname1
*** "Kreissparkasse Gross - Gerau"
@09,06 say drfax
*** "Fax: 06107/61706"
@09,46 say "Kto.:"
@09,51 say drktonr1
@09,62 say "BLZ:"
@09,66 say drblz1
*** 5108337 BLZ:508 52 553"
@13,06 say ename1
@14,06 say ename2
@15,06 say estrasse
@16,06 say eanschrift
@18,46 say "Datum:"
@18,54 say date()
@ 20,06 say "R E C H N U N G"
if rgfrage="J"
@ 20,22 say "-"
@ 20,24 say rgnummer
endif
if periode<>" "
@ 20,46 say "Periode:"
@ 20,56 say periode
endif
@ 22,05 say ekfzart
if ein_ausland="I"
@ 22,25 say "Inland"
endif
if ein_ausland="A"
@ 22,25 say "Ausland"
endif
@ 24,05 say "Pr.-Nr.: von: nach: Betrag:"
setprc(0,0)
position:=0
go top
do while .not. eof()
do while position < 35
@ 01,05 say pronummer
@ 01,26 say ladestelle
@ 01,47 say entladeste
@ 01,68 say dm_pauscha
setprc(0,0)
skip
if .not. eof()
position:=position+1
if position=35
eject
position:=40
endif
else
position:=100
endif
enddo
do while position < 100
if position=40
@ 04,05 say "Pr.-Nr.: von: nach: Betrag:"
setprc(0,0)
endif
@ 01,05 say pronummer
@ 01,26 say ladestelle
@ 01,47 say entladeste
@ 01,68 say dm_pauscha
setprc(0,0)
skip
if eof()
position:=100
else
position:=position+1
if position=95
eject
position:=40
endif
endif
enddo
enddo
@ 03,05 say "Nettosumme / DM"
@ 03,25 say "MwSt.:"
@ 03,32 say emwst1
@ 03,38 say "%"
@ 03,51 say "Rechnungsbetrag / DM :"
@ 04,05 say summe1
@ 04,25 say summe2
@ 04,51 say summe3
setprc(0,0)
printsend(027)
printsend(087)
printsend(001)
@02,03 say "Rechnungsbetrag:"
@02,18 say summe3
@02,34 say "DM"
printsend(027)
printsend(087)
printsend(000)
setprc(0,0)
if printready(1)
eject
set printer off
set console on
set device to screen
use
if rgfrage="J"
temp1:=laufwerk1 + "\" + "drucken.dbf"
temp2:="rgdaten\"+substr(rgnummer,3,6)+substr(rgnummer,-2)+".dbf"
if filemove(temp1,temp2)=0
?
? "Druck beendet!!!"
?
else
temp1:=laufwerk1 + "\" + "drucken.dbf"
if filedelete(temp1)
?
? "Druck beendet!!!"
?
endif
endif
select arbeit
endif
endif
endif
if edruck="N" .or. edruck=" "
if evon1=0 .and. ebis1=0
set filter to auftraggeb=eauftraggeber .and. termin1>=evon2 .and. termin1<=ebis2
else
set filter to auftraggeb=eauftraggeber .and. zaehler>=evon1 .and. zaehler<=ebis1
endif
** set filter to zaehler >= evon1 .and. zaehler <= ebis1 .and. auftraggeb=eauftraggeber
go top
copy to (temp1) // drucken
use (temp1) exclusive new
index on zaehler to tempzae
select drucken
if ekfzart="******" .and. ein_ausland="*"
set filter to
go top
endif
if ein_ausland="*" .and. ekfzart<>"******"
set filter to kfzart=ekfzart
go top
endif
if ein_ausland<>"*" .and. ekfzart="******"
set filter to in_ausland=ein_ausland
go top
endif
if ein_ausland<>"*" .and. ekfzart<>"******"
set filter to kfzart=ekfzart .and. in_ausland=ein_ausland
go top
endif
go top
go top
rgvondat:=termin1
rgvonpos:=zaehler
go bottom
rgbisdat:=termin1
rgbispos:=zaehler
go top
count to satzzahl
if satzzahl=0
use
temp1:=laufwerk1 + "\" + "drucken.dbf"
if filedelete(temp1)
cls
?
? "Keine Daten zum Druck vorhanden !!!"
?
? "Bitte Taste!"
inkey(0)
select arbeit
set filter to
go top
wclose(fenster2)
return
endif
endif
sum dm_pauscha to summe1
summe1:=round(summe1,2)
if emwst1 > 0
summe2:=round(summe1/100*emwst1,2)
else
summe2:=0
endif
emwst1:=round(emwst1,2)
summe2:=round(summe2,2)
summe3:=round(summe1+summe2,2)
summe3:=round(summe3,2)
sum gebuehren to summe4
summe4:=round(summe4,2)
summe5:=round(summe4+summe3,2)
summe5:=round(summe5,2)
cls
?
? ename1
? ename2
? estrasse
? eanschrift
?
? "Netto: ",summe1
? "Mehrwertsteuer: ",summe2
? "Endbetrag: ",summe3
? "Gebhren: ",summe4
? "Rechnungsbetrag:",summe5
?
go top
if printready(1)
?
?
?
?
? "Rechnung wird gedruckt !"
set printer on
set device to printer
set console off
else
?
?
?
?
? "Drucker nicht bereit !!!"
?
?
? "Bitte Taste !"
inkey(0)
use
temp1:=laufwerk1 + "\" + "drucken.dbf"
filedelete(temp1)
select arbeit
set filter to
go top
wclose(fenster2)
return
endif
********************** Rechnungsdatenkank etc. **********
if rgfrage="J"
use rgdat index rgdzaeh,rgdnumm,rgdkd_b alias rechnung shared new
append blank
select rechnung
rechnr:=dtos(date()) + str(recno(),5)
rgnummer:=strtran(rechnr," ","0")
replace zaehler with recno()
replace rg_nummer with rgnummer
replace kd_bez with eauftraggeber
replace dm_netto with summe1
replace mwsteuer with emwst1
replace dm_steuer with summe2
replace dm_summe with summe3
replace dm_gebueh with summe4
replace dm_endbet with summe5
replace saetze with satzzahl
replace rg_datum with date()
replace rg_von_dat with rgvondat
replace rg_bis_dat with rgbisdat
replace rg_von_pos with rgvonpos
replace rg_bis_pos with rgbispos
replace kfzart with ekfzart
use
select drucken
altbereich:=SELECT()
select arbeit
go top
flock()
replace rechnung with "X" all
unlock
select (altbereich)
endif
******************* Kopf und Anschrift drucken **************
printsend(027)
printsend(087)
printsend(001)
@03,03 say drname
*** "KELSTERB.- TRUCK - SERVICE"
* @04,06 say drname1
*** "INTERNATIONALE SPEDITION"
printsend(027)
printsend(087)
printsend(000)
@03,10 say drname1
@04,06 say drinhaber
@06,06 say drstrasse
*** "Im Taubengrund 21"
* @06,46 say drinhaber
*** "Inh. Rainer Dittel"
@07,06 say drort
*** "65451 Kelsterbach"
@07,46 say "Bankverbindung:"
@08,06 say "Tel.:"
@08,12 say drtel
*** "Tel.: 06107/3023"
@08,46 say drbname1
*** "Kreissparkasse Gross - Gerau"
@09,06 say "Fax:"
@09,11 say drfax
*** "Fax: 06107/61706"
@09,46 say "Kto.:"
@09,51 say drktonr1
@09,62 say "BLZ:"
@09,66 say drblz1
*** 5108337 BLZ:508 52 553"
@13,06 say ename1
@14,06 say ename2
@15,06 say estrasse
@16,06 say eanschrift
@18,46 say "Datum:"
@18,54 say date()
******************* Kopf und Anschrift drucken **************
@20,06 say "R E C H N U N G"
if rgfrage="J"
@ 20,22 say "-"
@ 20,24 say rgnummer
endif
?
setprc(0,0)
position:=0
do while .not. eof()
do while position < 6
@ 02,05 say "Posnr.:"
@ 02,15 say "Pr.-Nr.:"
@ 02,39 say "KFZ-Art"
@ 02,50 say "Termin:"
if gebuehren > 0
@ 02,65 say "Gebhren:"
endif
@ 03,05 say zaehler
@ 03,15 say pronummer
@ 03,39 say kfzart
@ 03,50 say termin1
if gebuehren > 0
@ 03,65 say gebuehren
endif
@ 04,05 say "Von:"
@ 04,28 say "Nach:"
@ 04,50 say "Colli:"
@ 04,58 say "KG:"
@ 04,65 say "KM:"
*** @ 04,71 say "Betrag:"
@ 05,05 say ladestelle
@ 05,28 say entladeste
@ 05,50 say colli
@ 05,58 say kg_m3
@ 05,65 say kilometer
*** @ 05,71 say dm_pauscha
@ 06,05 say "DM / KM:"
@ 06,20 say "DM / KG:"
@ 06,70 say "Betrag:"
@ 07,05 say dm_km
@ 07,20 say dm_kg
@ 07,70 say dm_pauscha
@ 08,05 say "--------------------------------------------------------------------------"
setprc(0,0)
skip
if .not. eof()
position:=position+1
if position=5
eject
position:=10
endif
else
position:=25
endif
enddo
do while position < 17
if position=10
?
?
?
?
setprc(0,0)
endif
@ 02,05 say "Posnr.:"
@ 02,15 say "Pr.-Nr.:"
@ 02,39 say "KFZ-Art"
@ 02,50 say "Termin:"
if gebuehren > 0
@ 02,65 say "Gebhren:"
endif
@ 03,05 say zaehler
@ 03,15 say pronummer
@ 03,39 say kfzart
@ 03,50 say termin1
if gebuehren > 0
@ 03,65 say gebuehren
endif
@ 04,05 say "Von:"
@ 04,28 say "Nach:"
@ 04,50 say "Colli:"
@ 04,58 say "KG:"
@ 04,65 say "KM:"
*** @ 04,71 say "Betrag:"
@ 05,05 say ladestelle
@ 05,28 say entladeste
@ 05,50 say colli
@ 05,58 say kg_m3
@ 05,65 say kilometer
*** @ 05,71 say dm_pauscha
@ 06,05 say "DM / KM:"
@ 06,20 say "DM / KG:"
@ 06,70 say "Betrag:"
@ 07,05 say dm_km
@ 07,20 say dm_kg
@ 07,70 say dm_pauscha
@ 08,05 say "--------------------------------------------------------------------------"
setprc(0,0)
skip
if eof()
position:=25
else
position:=position+1
if position=17
eject
position:=10
endif
endif
enddo
enddo
@ 02,05 say "Nettosumme / DM:"
@ 02,30 say summe1
@ 02,44 say "DM"
@ 03,05 say "MwSt./ %:"
@ 03,15 say emwst1
@ 03,30 say summe2
@ 03,44 say "DM"
@ 04,05 say "Endbetrag: / DM:"
@ 04,30 say summe3
@ 04,44 say "DM"
@ 05,05 say "Gebhren / DM :"
@ 05,30 say summe4
@ 05,44 say "DM"
@ 06,05 say "Rechnungsbetrag:"
@ 06,30 say summe5
@ 06,44 say "DM"
setprc(0,0)
printsend(027)
printsend(087)
printsend(001)
@02,03 say "Rechnungsbetrag:"
@02,18 say summe5
@02,34 say "DM"
printsend(027)
printsend(087)
printsend(000)
setprc(0,0)
eject
set printer off
set console on
set device to screen
use
if rgfrage="J"
temp1:=laufwerk1 + "\" + "drucken.dbf"
temp2:="rgdaten\"+substr(rgnummer,3,6)+substr(rgnummer,-2)+".dbf"
if filemove(temp1,temp2)=0
?
? "Druck beendet!!!"
?
sound(131,40)
endif
endif
if rgfrage="N"
temp1:=laufwerk1 + "\" + "drucken.dbf"
if filedelete(temp1)
?
? "Druck beendet!!!"
?
endif
endif
endif
set printer off
set console on
set device to screen
select arbeit
set filter to
go top
?
? "Bitte Taste !"
inkey(0)
wclose(fenster2)
return
* Programmende EOF *