You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1876 lines
67 KiB

unit Uzahlung;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Mask, Buttons, ExtCtrls, DB, DBTables,uvars,
upsuch,ufsuch,udiverse,Gauges,uberecht, Menus,ukalend,bde32,
ComCtrls,lzexpand, ImgList, ToolWin, JvExControls, JvComponent,
JvArrowButton,jclstrings;
type
TZahlung = class(TForm)
lfaktura: TListBox;
Label1: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
nrfaktura: TEdit;
Label3: TLabel;
Datum: TMaskEdit;
Label4: TLabel;
Betrag: TMaskEdit;
Label5: TLabel;
lkonto: TComboBox;
Label6: TLabel;
vorauszahlung: TCheckBox;
Panel1: TPanel;
lzahlungen: TListBox;
Zahlungen: TLabel;
btnstorno: TButton;
BitBtn4: TBitBtn;
tb_zahlung: TTable;
tb_privat: TTable;
TB_firma: TTable;
tb_faktura: TTable;
tb_debitor: TTable;
tb_konto: TTable;
panelzahlung: TPanel;
tb_besrt: TTable;
tb_besri: TTable;
panelverarbeitung: TPanel;
Label2: TLabel;
tb_zjournal: TTable;
tb_anrede: TTable;
MainMenu1: TMainMenu;
Datei1: TMenuItem;
Verlassen1: TMenuItem;
Disketteeinlesen1: TMenuItem;
status: TPanel;
datumbtn: TBitBtn;
q_faktura: TQuery;
q_zahlung: TQuery;
tb_tmpkonto: TTable;
tb_faktura1: TTable;
Gauge1: TProgressBar;
tb_formular: TTable;
tb_formfeld: TTable;
tb_anzahlungen: TTable;
tb_behandlung: TTable;
tb_rgtyp: TTable;
tb_privat1: TTable;
tb_ansatz: TTable;
tb_abrechnungstyp: TTable;
RGNR: TButton;
Deb: TLabel;
Pat: TLabel;
OpenDialog1: TOpenDialog;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ImageList1: TImageList;
Panel3: TPanel;
N1: TMenuItem;
PopupMenu1: TPopupMenu;
Rechnungstornieren1: TMenuItem;
PopupMenu2: TPopupMenu;
N2: TMenuItem;
ZL1: TMenuItem;
JvArrowButton1: TJvArrowButton;
PopupMenu3: TPopupMenu;
Vorlagebearbeiten1: TMenuItem;
PopupMenu4: TPopupMenu;
Quittungsvorlagebearbeiten1: TMenuItem;
Quittungdrucken1: TMenuItem;
Quitungsvorlagebearbeiten1: TMenuItem;
N3: TMenuItem;
procedure btnexitClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure printbtnClick(Sender: TObject);
procedure lzahlungenClick(Sender: TObject);
procedure btnstornoClick(Sender: TObject);
procedure lfakturaClick(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure Verlassen1Click(Sender: TObject);
procedure Disketteeinlesen1Click(Sender: TObject);
procedure DatumEnter(Sender: TObject);
procedure BetragEnter(Sender: TObject);
procedure lkontoEnter(Sender: TObject);
procedure vorauszahlungEnter(Sender: TObject);
procedure lzahlungenEnter(Sender: TObject);
procedure lfakturaEnter(Sender: TObject);
procedure btnhelpClick(Sender: TObject);
procedure Hilfe1Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure tb_zahlungAfterPost(DataSet: TDataset);
procedure tb_fakturaAfterPost(DataSet: TDataset);
procedure tb_debitorAfterPost(DataSet: TDataset);
procedure tb_anzahlungenAfterPost(DataSet: TDataSet);
procedure RGNRClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure ToolButton7Click(Sender: TObject);
procedure ToolButton8Click(Sender: TObject);
procedure ToolButton10Click(Sender: TObject);
procedure Rechnungstornieren1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure ZL1Click(Sender: TObject);
procedure JvArrowButton1Click(Sender: TObject);
procedure Vorlagebearbeiten1Click(Sender: TObject);
procedure Quittungdrucken1Click(Sender: TObject);
procedure Quitungsvorlagebearbeiten1Click(Sender: TObject);
procedure lzahlungenDblClick(Sender: TObject);
private
su,su1,su2,su3:double;
xdebitor:integer;
nlanguage:integer;
fname:string;
pfad:string;
nreccount,papierschacht:integer;
filename:array[0..64] of char;
typ:string;
slangtext:array[0..60] of char;
Tagesdatum,tageszeit:string;
wt,wt1,sprinter,sport:array[0..64] of char;
stopaction:boolean;
rc:integer;
fakturanummer:integer;
erstellungsdatum:double;
procedure copyfile(source,dest:string);
procedure set_caption;
procedure set_caption_Privat;
procedure set_caption_Firma;
procedure offene_rechnungen;
procedure erledigte_zahlungen;
function verbucht:boolean;
procedure insert_into_zjournal;
procedure anzahlung_verbuchen(nrfaktura,nrkonto:integer);
function neue_behandlung(patient:integer):integer;
procedure meldung_doppelzahlung(nrfaktura:integer);
{ Private-Deklarationen }
public
nrdebitor:longint;
procedure refresh;
{ Public-Deklarationen }
end;
var
Zahlung: TZahlung;
design:boolean;
implementation
uses uzahlzuw, Uvz, UReporting, ureports, umenuhandler;
{$R *.DFM}
procedure TZahlung.btnexitClick(Sender: TObject);
begin
close;
end;
procedure TZahlung.FormDestroy(Sender: TObject);
begin
tb_zjournal.close;
tb_zahlung.close;
tb_privat.close;
tb_firma.close;
tb_faktura.close;
tb_debitor.close;
tb_konto.close;
tb_anrede.close;
tb_anzahlungen.close;
tb_behandlung.close;
tb_privat1.close;
end;
procedure TZahlung.FormCreate(Sender: TObject);
begin
screen.cursor:=crhourglass;
loginsert(0,'Zahlungsverarbeitung gestartet');
tb_anrede.open;
tb_zjournal.open;
tb_zahlung.open;
tb_privat.open;
tb_firma.open;
tb_faktura.open;
tb_debitor.open;
tb_konto.open;
lkonto.clear;
tb_anzahlungen.open;
tb_behandlung.open;
tb_privat1.open;
screen.cursor:=crdefault;
end;
procedure tzahlung.refresh;
begin
screen.cursor:=crhourglass;
lkonto.clear;
with tb_konto do begin
first;
while not eof do begin
lkonto.items.add(fieldbyname('konto').asstring+
keyblank+
fieldbyname('nrkonto').asstring);
next;
end;
lkonto.itemindex:=0;
end;
datum.text:=datetostr(now);
if nrdebitor <> 0 then begin
set_caption;
offene_rechnungen;
erledigte_zahlungen;
end;
screen.cursor:=crdefault;
end;
procedure tzahlung.set_caption;
begin
with tb_privat do begin
indexname:='';
setkey;
fieldbyname('nrprivat').asinteger:=nrdebitor;
if gotokey then begin
s:=' '+tb_privat.fieldbyname('nrprivat').asstring+' - '+
scut(tb_privat.fieldbyname('vorname').asstring)+' '+
scut(tb_privat.fieldbyname('name').asstring)+', '+
scut(tb_privat.fieldbyname('ort').asstring);
end else begin
with tb_firma do begin
indexname:='';
setkey;
fieldbyname('nrfirma').asinteger:=nrdebitor;
gotokey;
s:=' '+fieldbyname('nrfirma').asstring+' '+
fieldbyname('name1').asstring+', '+
fieldbyname('ort').asstring;
end;
end;
end;
panel3.caption:=s;
zahlung.caption:=gettext(1006)+s;
end;
procedure tzahlung.set_caption_Privat;
begin
with tb_privat do begin
indexname:='';
setkey;
fieldbyname('nrprivat').asinteger:=nrdebitor;
if gotokey then begin
s:=' '+tb_privat.fieldbyname('nrprivat').asstring+' - '+
scut(tb_privat.fieldbyname('vorname').asstring)+' '+
scut(tb_privat.fieldbyname('name').asstring)+', '+
scut(tb_privat.fieldbyname('ort').asstring);
end;
end;
panel3.caption:=s;
zahlung.caption:=gettext(1006)+s;
end;
procedure tzahlung.set_caption_Firma;
begin
with tb_firma do begin
indexname:='';
setkey;
fieldbyname('nrfirma').asinteger:=nrdebitor;
gotokey;
s:=' '+fieldbyname('nrfirma').asstring+' - '+
fieldbyname('name1').asstring+', '+
fieldbyname('ort').asstring;
end;
panel3.caption:=s;
zahlung.caption:=gettext(1006)+s;
end;
procedure TZahlung.BitBtn1Click(Sender: TObject);
begin
deb.caption:='';
pat.caption:='';
psuche.showmodal;
if searchkey <> 0 then begin
nrdebitor:=searchkey;
set_caption_Privat;
offene_rechnungen;
erledigte_zahlungen;
end;
end;
procedure TZahlung.BitBtn2Click(Sender: TObject);
begin
deb.caption:='';
pat.caption:='';
fsuche.showmodal;
if searchkey <> 0 then begin
nrdebitor:=searchkey;
set_caption_Firma;
offene_rechnungen;
erledigte_zahlungen;
end;
end;
procedure TZahlung.printbtnClick(Sender: TObject);
begin
Kalender.datum:=strtodate(datum.text);
kalender.showmodal;
datum.text:=datetostr(kalender.datum);
end;
procedure tzahlung.offene_rechnungen;
var t,bereitsbezahlt:real;
s,s1:string;
begin
with tb_faktura do begin
indexname:='idxdebitor';
setkey;
fieldbyname('nrdebitor').asinteger:=nrdebitor;
gotokey;
lfaktura.clear;
while (not eof) and (fieldbyname('nrdebitor').asinteger=nrdebitor) do begin
t:=0;
if fieldbyname('status').asinteger=0 then begin
bereitsbezahlt:=0;
with tb_zahlung do begin
indexname:='idx_faktura';
setkey;
fieldbyname('nrfaktura').asinteger:=tb_faktura.fieldbyname('nrfaktura').asinteger;
gotokey;
while (not eof) and (fieldbyname('nrfaktura').asinteger=tb_faktura.fieldbyname('nrfaktura').asinteger) do begin
if fieldbyname('status').asinteger=0 then begin
bereitsbezahlt:=bereitsbezahlt+fieldbyname('betrag').asfloat;
end;
next;
end;
end;
t:=fieldbyname('total').asfloat;
if fieldbyname('mahndatum3').asstring<>'' then t:=t+fieldbyname('mahngebuehr3').asfloat else
if fieldbyname('mahndatum2').asstring<>'' then t:=t+fieldbyname('mahngebuehr2').asfloat else
if fieldbyname('mahndatum1').asstring<>'' then t:=t+fieldbyname('mahngebuehr1').asfloat;
t:=t-bereitsbezahlt;
str(t:8:2,s);
str(bereitsbezahlt:8:2,s1);
if t>0.04 then begin
lfaktura.items.add(fieldbyname('nrfaktura').asstring+' '+fieldbyname('datum').asstring+' '+s+' '+s1);
end;
end;
next;
end;
end;
end;
procedure tzahlung.erledigte_zahlungen;
var s1:string;
begin
with tb_zahlung do begin
indexname:='idx_debitor';
setkey;
fieldbyname('nrdebitor').asinteger:=nrdebitor;
gotokey;
lzahlungen.clear;
while (not eof) and (fieldbyname('nrdebitor').asinteger=nrdebitor) do begin
str(fieldbyname('betrag').asfloat:8:2,s);
if fieldbyname('status').asinteger=0 then s:=s+'';
if fieldbyname('status').asinteger=9 then s:=s+'/storno';
if fieldbyname('status').asinteger=1 then s:=s+'/VZ';
with tb_konto do begin
setkey;
fieldbyname('nrkonto').asinteger:=tb_zahlung.fieldbyname('nrkonto').asinteger;
gotokey;
s1:=fieldbyname('konto').asstring;
while length(s1)<8 do begin
s1:=s1+' ';
end;
if length(s1)>0 then s1:=strleft(s1,8);
if tb_zahlung.fieldbyname('nrfaktura').asstring <> '0' then s1:=s1+'/RG:' + tb_zahlung.fieldbyname('nrfaktura').asstring;
end;
lzahlungen.items.insert(0,fieldbyname('valuta').asstring+' '+s+'/'+s1+keyblank+
fieldbyname('nrzahlung').asstring);
next;
end;
end;
btnstorno.enabled:=false;
end;
procedure TZahlung.lzahlungenClick(Sender: TObject);
begin
if pos('storno',lzahlungen.items[lzahlungen.itemindex])=0 then btnstorno.enabled:=true;
end;
procedure TZahlung.btnstornoClick(Sender: TObject);
begin
if berechtigungen.berechtigt(78) = false then exit;
if meldungyesno(125)=id_yes then begin
with tb_zahlung do begin
indexname:='';
setkey;
fieldbyname('nrzahlung').asinteger:=key_from_string(lzahlungen.items[lzahlungen.itemindex]);
if gotokey then begin
if fieldbyname('nrbehandlung').asinteger > 0 then begin
meldung(127);
exit;
end;
edit;
fieldbyname('status').asinteger:=9;
insert_into_zjournal;
post;
if fieldbyname('vorauszahlung').asboolean=false then begin
with tb_debitor do begin
indexname:='idx_faktura';
setkey;
fieldbyname('nrfaktura').asinteger:=tb_zahlung.fieldbyname('nrfaktura').asinteger;
if gotokey then begin
edit;
fieldbyname('betrag').asfloat:=fieldbyname('betrag').asfloat+tb_zahlung.fieldbyname('betrag').asfloat;
post;
end;
end;
if tb_debitor.fieldbyname('betrag').asfloat > 0 then begin
with tb_faktura do begin
indexname:='';
setkey;
fieldbyname('nrfaktura').asinteger:=tb_zahlung.fieldbyname('nrfaktura').asinteger;
if gotokey then begin
edit;
fieldbyname('status').asinteger:=0;
fieldbyname('statusdatum').asfloat:=now;
post;
end;
end;
end;
end;
erledigte_zahlungen;
offene_rechnungen;
end;
end;
end;
end;
procedure TZahlung.lfakturaClick(Sender: TObject);
var s,s1:string;
begin
vorauszahlung.checked:=false;
s:=lfaktura.items[lfaktura.itemindex];
nrfaktura.text:=copy(s,1,10);
s:=(copy(s,23,8));
i:=pos('.',s);
if i > 0 then begin
s:=copy(s,1,i-1)+'.'+copy(s,i+1,length(s));
end;
betrag.text:=s;
datum.text:=datetostr(now);
vorauszahlung.checked:=false;
pat.caption:='';
deb.caption:='';
with tb_faktura do begin
indexname:='';
setkey;
fieldbyname('nrfaktura').asstring:=nrfaktura.Text;
gotokey;
end;
with tb_privat do begin
indexname:='';
setkey;
fieldbyname('nrprivat').asinteger:=tb_faktura.fieldbyname('nrpatient').asinteger;
gotokey;
pat.caption:='Patient:'+fieldbyname('nrprivat').asstring+' / '+fieldbyname('vorname').asstring+' '+fieldbyname('name').asstring+', '+fieldbyname('ort').asstring;
pat.refresh;
end;
if tb_faktura.fieldbyname('nrdebitor').asinteger<>tb_faktura.fieldbyname('nrpatient').asinteger then begin
with tb_privat do begin
setkey;
fieldbyname('nrprivat').asinteger:=tb_faktura.fieldbyname('nrdebitor').asinteger;
if gotokey then begin
deb.caption:='Debitor:'+fieldbyname('nrprivat').asstring+' / '+fieldbyname('vorname').asstring+' '+fieldbyname('name').asstring+', '+fieldbyname('ort').asstring;
deb.refresh;
end else begin
with tb_firma do begin
setkey;
fieldbyname('nrfirma').asinteger:=tb_faktura.fieldbyname('nrdebitor').asinteger;
if gotokey then begin
deb.caption:='Debitor:'+fieldbyname('nrfirma').asstring+' / '+fieldbyname('name1').asstring+' '+fieldbyname('ort').asstring;
deb.refresh;
end;
end;
end;
end;
end;
end;
procedure TZahlung.BitBtn4Click(Sender: TObject);
var b,b1:double;
x:string;
i1:integer;
begin
if not berechtigungen.berechtigt(78) then exit;
if vorauszahlung.checked then begin
with tb_zahlung do begin
indexname:='';
last;
i:=fieldbyname('nrzahlung').asinteger+1;
insert;
fieldbyname('nrzahlung').asinteger:=i;
fieldbyname('mandant').asinteger:=mandant;
fieldbyname('valuta').asstring:=datum.text;
fieldbyname('nrfaktura').asinteger:=0;
fieldbyname('betrag').asfloat:=strtofloat(betrag.text);
fieldbyname('nrdebitor').asinteger:=nrdebitor;
fieldbyname('nrkonto').asinteger:=key_from_string(lkonto.items[lkonto.itemindex]);
fieldbyname('vorauszahlung').asboolean:=vorauszahlung.checked=true;
fieldbyname('status').asinteger:=1;
fieldbyname('statusdatum').asfloat:=now;
post;
insert_into_zjournal;
zahlzuw.nrpatient:=fieldbyname('nrdebitor').asinteger;
zahlzuw.betrag:=fieldbyname('betrag').asfloat;
zahlzuw.nrzahlung:=fieldbyname('nrzahlung').asinteger;
zahlzuw.showmodal;
end;
erledigte_zahlungen;
exit;
end;
with tb_zahlung do begin
s:=copy(lfaktura.items[lfaktura.itemindex],23,8);
i:=pos('.',s);
if i > 0 then begin
s:=copy(s,1,i-1)+'.'+copy(s,i+1,length(s));
end;
b:=strtofloat(s);
b1:=strtofloat(betrag.text);
if b1>b then begin
meldung(126);
exit;
end;
indexname:='';
last;
i:=fieldbyname('nrzahlung').asinteger+1;
insert;
fieldbyname('nrzahlung').asinteger:=i;
fieldbyname('mandant').asinteger:=mandant;
fieldbyname('valuta').asstring:=datum.text;
fieldbyname('nrfaktura').asinteger:=strtoint(nrfaktura.text);
fieldbyname('betrag').asfloat:=strtofloat(betrag.text);
fieldbyname('nrdebitor').asinteger:=nrdebitor;
fieldbyname('nrkonto').asinteger:=key_from_string(lkonto.items[lkonto.itemindex]);
fieldbyname('vorauszahlung').asboolean:=vorauszahlung.checked=true;
fieldbyname('status').asinteger:=0;
fieldbyname('statusdatum').asfloat:=now;
post;
insert_into_zjournal;
if not fieldbyname('vorauszahlung').asboolean then begin
with tb_debitor do begin
indexname:='idx_faktura';
setkey;
fieldbyname('nrfaktura').asinteger:=tb_zahlung.fieldbyname('nrfaktura').asinteger;
if gotokey then begin
edit;
fieldbyname('betrag').asfloat:=fieldbyname('betrag').asfloat-tb_zahlung.fieldbyname('betrag').asfloat;
post;
x:=floattostr(fieldbyname('betrag').asfloat);
val(x,b,i1);
if fieldbyname('betrag').asfloat=0 then begin
with tb_faktura do begin
indexname:='';
setkey;
fieldbyname('nrfaktura').asinteger:=tb_debitor.fieldbyname('nrfaktura').asinteger;
if gotokey then begin
edit;
fieldbyname('status').asinteger:=0;
fieldbyname('statusdatum').asfloat:=now;
post;
end;
end;
end;
end;
end;
end;
nrfaktura.text:='';
datum.text:=datetostr(now);
betrag.text:='0.00';
offene_rechnungen;
erledigte_zahlungen;
end;
end;
function tzahlung.verbucht:boolean;
var nrfaktura:longint;
nrkonto:longint;
storno:boolean;
nofaktura,nodebitor,fakturastorniert:boolean;
zahlungsstorno:boolean;
s:string;
begin
zahlungsstorno:=false;
nofaktura:=false;
nodebitor:=false;
fakturastorniert:=false;
storno:=false;
nrkonto:=diverse.get_konto;
verbucht:=true;
nrfaktura:=strtoint(copy(tb_besri.fieldbyname('referenz').asstring,7,10));
s:=inttostr(nrfaktura);
if copy(s,5,1)='9' then begin
anzahlung_verbuchen(nrfaktura,nrkonto);
verbucht:=true;
exit;
end;
with tb_faktura do begin
indexname:='';
setkey;
fieldbyname('nrfaktura').asinteger:=nrfaktura;
if not gotokey then begin
meldung(204);
verbucht:=false;
storno:=true;
nofaktura:=true;
end;
if fieldbyname('status').asinteger=9 then begin
meldung(205);
verbucht:=false;
storno:=true;
fakturastorniert:=false;
end;
end;
//Neu Meldung bei Doppelzahlung
with tb_zahlung do begin
indexname:='idx_faktura';
setkey;
fieldbyname('nrfaktura').asinteger:=nrfaktura;
if gotokey then begin
meldung_doppelzahlung(nrfaktura);
end;
end;
// Ende Meldung
with tb_debitor do begin
indexname:='idx_faktura';
setkey;
fieldbyname('nrfaktura').asinteger:=nrfaktura;
if not gotokey then begin
meldung(206);
verbucht:=false;
nodebitor:=true;
storno:=true;
end;
if fieldbyname('status').asinteger=9 then storno:=true;
edit;
strpcopy(wt,'');
if copy(tb_besri.fieldbyname('transaktion').asstring,3,1)='5' then begin
zahlungsstorno:=true;
fieldbyname('betrag').asfloat:=fieldbyname('betrag').asfloat+
tb_besri.fieldbyname('betrag').asfloat;
strpcopy(wt,'J');
end else begin
fieldbyname('betrag').asfloat:=fieldbyname('betrag').asfloat-
tb_besri.fieldbyname('betrag').asfloat;
end;
if not storno then begin
post;
str(fieldbyname('betrag').asfloat:8:2,wt);
{ ll.lldefinefieldext('Differenz',wt,ll_text,'');}
end;
if not storno then begin
with tb_faktura do begin
setkey;
fieldbyname('nrfaktura').asinteger:=nrfaktura;
gotokey;
edit;
if tb_debitor.fieldbyname('betrag').asfloat=0 then begin
tb_faktura.fieldbyname('status').asinteger:=0;
tb_faktura.fieldbyname('statusdatum').asfloat:=now;
end else begin
tb_faktura.fieldbyname('status').asinteger:=0;
tb_faktura.fieldbyname('statusdatum').asfloat:=now;
end;
post;
end;
end;
if not storno then begin
with tb_zahlung do begin
indexname:='';
last;
i:=fieldbyname('nrzahlung').asinteger+1;
insert;
fieldbyname('nrzahlung').asinteger:=i;
fieldbyname('nrfaktura').asinteger:=nrfaktura;
fieldbyname('betrag').asfloat:=tb_besri.fieldbyname('betrag').asfloat;
fieldbyname('vorauszahlung').asboolean:=false;
fieldbyname('nrkonto').asinteger:=nrkonto;
fieldbyname('mandant').asinteger:=mandant;
fieldbyname('nrdebitor').asinteger:=tb_faktura.fieldbyname('nrdebitor').asinteger;
fieldbyname('valuta').asfloat:=tb_besri.fieldbyname('datumgutschrift').asfloat;
{ fieldbyname('nrbehandlung').asinteger:=tb_faktura.fieldbyname('nrbehandlung').asinteger;}
fieldbyname('status').asinteger:=0;
fieldbyname('statusdatum').asfloat:=now;
if zahlungsstorno then begin
fieldbyname('betrag').asfloat:=fieldbyname('betrag').asfloat*-1;
end;
post;
insert_into_zjournal;
end;
end;
end;
if not storno then verbucht:=true else verbucht:=false;
strpcopy(wt,'');
strpcopy(wt,copy(tb_besri.fieldbyname('referenz').asstring,7,10));
{ ll.lldefinefieldext('Fakturanummer',wt,ll_text,'');
str(tb_besri.fieldbyname('betrag').asfloat:8:2,wt);
ll.lldefinefieldext('Betrag',wt,ll_text,'');
str(tb_besri.fieldbyname('taxen_ptt').asfloat:8:2,wt);
ll.lldefinefieldext('PTT_Taxen',wt,ll_text,'');
if storno then strpcopy(wt,'N') else strpcopy(wt,'J');
ll.lldefinefieldext('Verarbeitet',wt,ll_text,'');
strpcopy(wt,tb_besri.fieldbyname('transaktion').asstring);
ll.lldefinefieldext('Transaktion',wt,ll_text,'');
if nodebitor then strpcopy(wt,'') else strpcopy(wt,tb_faktura.fieldbyname('nrdebitor').asstring);
ll.lldefinefieldext('Debitorennummer',wt,ll_text,'');
strpcopy(wt,tb_besri.fieldbyname('datumgutschrift').asstring);
ll.lldefinefieldext('Valuta',wt,ll_text,'');
with tb_privat do begin
setkey;
fieldbyname('nrprivat').asinteger:=tb_faktura.fieldbyname('nrdebitor').asinteger;
if gotokey then begin
strpcopy(wt,scut1(fieldbyname('vorname').asstring)+'. '+
fieldbyname('name').asstring+', '+
fieldbyname('ort').asstring);
end else begin
with tb_firma do begin
setkey;
fieldbyname('nrfirma').asinteger:=tb_faktura.fieldbyname('nrdebitor').asinteger;
if gotokey then begin
strpcopy(wt,fieldbyname('name1').asstring+', '+
fieldbyname('ort').asstring);
end else begin
strpcopy(wt,diverse.gettext(210));
end;
end;
end;
end;
if nodebitor then begin
strpcopy(wt,'');
strpcopy(wt,'Ref-Nr:' + tb_besri.fieldbyname('Referenz').asstring);
end;
ll.lldefinefieldext('Debitor',wt,ll_text,'');
strpcopy(wt,'');
if tb_faktura.fieldbyname('nrdebitor').asinteger<>tb_faktura.fieldbyname('nrpatient').asinteger then begin
with tb_privat do begin
setkey;
fieldbyname('nrprivat').asinteger:=tb_faktura.fieldbyname('nrpatient').asinteger;
if gotokey then begin
strpcopy(wt,scut1(fieldbyname('vorname').asstring)+'. '+
fieldbyname('name').asstring+', '+
fieldbyname('ort').asstring);
end else begin
with tb_firma do begin
setkey;
fieldbyname('nrfirma').asinteger:=tb_faktura.fieldbyname('nrpatient').asinteger;
if gotokey then begin
strpcopy(wt,fieldbyname('name1').asstring+', '+
fieldbyname('ort').asstring);
end else begin
strpcopy(wt,diverse.gettext(210));
end;
end;
end;
end;
end;
if nofaktura then strpcopy(wt,diverse.gettext(207));
if nodebitor then strpcopy(wt,diverse.gettext(208));
if fakturastorniert then strpcopy(wt,diverse.gettext(209));
ll.lldefinefieldext('Patient',wt,ll_text,'');
str(su:4:2,wt);
ll.lldefinefieldext('Summe',wt,ll_text or ll_table_footerfield,'');
str(su1:8:2,wt);
ll.lldefinefieldext('Summe1',wt,ll_text or ll_table_footerfield,'');
str(su2:8:2,wt);
ll.lldefinefieldext('Summe2',wt,ll_text or ll_table_footerfield,'');
str(su3:8:2,wt);
ll.lldefinefieldext('Summe3',wt,ll_text or ll_table_footerfield,'');
rc:=ll.llprintfields();
if rc <> 0 then begin
rc:=0;
ll.llprint();
ll.llprintfields();
end;}
end;
Procedure tzahlung.meldung_doppelzahlung(nrfaktura:integer);
var s:string;
begin
s:='Eine Zahlung wirD verbucht, wobei bereits eine Zahlung für die Rechnung vorhanden ist.'+chr(13)+chr(13);
diverse.getadresse(tb_faktura.fieldbyname('nrdebitor').asinteger,tb_faktura.fieldbyname('nrdebitor').asinteger);
s:=s+chr(13)+chr(13)+'Fakturanummer: ' + tb_faktura.fieldbyname('nrfaktura').asstring+chr(13)+chr(13);
s:=s+'Debitor:'+chr(13);
s:=s+diverse.adresszeile1+chr(13);
s:=s+diverse.adresszeile2+chr(13);
s:=s+diverse.adresszeile3+chr(13);
s:=s+diverse.adresszeile4+chr(13);
s:=s+diverse.adresszeile5+chr(13);
s:=s+diverse.adresszeile6+chr(13);
showmessage(s);
end;
procedure tzahlung.anzahlung_verbuchen(nrfaktura,nrkonto:integer);
var patient,i,behandlung:integer;
begin
with tb_anzahlungen do begin
setkey;
fieldbyname('nranzahlung').asinteger:=nrfaktura;
if not gotokey then begin
showmessage('Keine Anzahlung für Rechnungsnummer '+inttostr(nrfaktura)+'. Keine Verbuchung dieser Rechnung!');
exit;
end;
edit;
fieldbyname('einbezahlt').asfloat:=tb_besri.fieldbyname('betrag').asfloat;
post;
with tb_behandlung do begin
indexname:='';
setkey;
fieldbyname('nrbehandlung').asinteger:=tb_anzahlungen.fieldbyname('nrbehandlung').asinteger;
gotokey;
patient:=fieldbyname('nrpatient').asinteger;
if (fieldbyname('nrgarant').asinteger <> fieldbyname('nrpatient').asinteger) and (fieldbyname('nrgarant').asinteger > 0)
then xdebitor:=fieldbyname('nrgarant').asinteger else xdebitor:=fieldbyname('nrpatient').asinteger;
indexname:='idx_patient';
setkey;
fieldbyname('nrpatient').asinteger:=patient;
fieldbyname('status').asinteger:=0;
gotonearest;
behandlung:=0;
while (not eof) and (fieldbyname('nrpatient').asinteger=patient) do begin
if fieldbyname('status').asinteger=1 then begin
if behandlung=0 then behandlung:=fieldbyname('nrbehandlung').asinteger;
end;
next;
end;
end;
if behandlung=0 then behandlung:=neue_behandlung(patient);
with tb_zahlung do begin
indexname:='';
last;
i:=fieldbyname('nrzahlung').asinteger+1;
insert;
fieldbyname('nrzahlung').asinteger:=i;
{ fieldbyname('nrfaktura').asinteger:=nrfaktura;}
fieldbyname('betrag').asfloat:=tb_besri.fieldbyname('betrag').asfloat;
fieldbyname('vorauszahlung').asboolean:=true;
fieldbyname('nrkonto').asinteger:=nrkonto;
fieldbyname('mandant').asinteger:=mandant;
fieldbyname('nrdebitor').asinteger:=xdebitor;
fieldbyname('valuta').asfloat:=tb_besri.fieldbyname('datumgutschrift').asfloat;
fieldbyname('nrbehandlung').asinteger:=behandlung;
fieldbyname('status').asinteger:=1;
fieldbyname('statusdatum').asfloat:=now;
post;
str(fieldbyname('betrag').asfloat:8:2,wt);
{ ll.lldefinefieldext('Differenz',wt,ll_text,'');
strpcopy(wt,'');
strpcopy(wt,copy(tb_besri.fieldbyname('referenz').asstring,7,10));
ll.lldefinefieldext('Fakturanummer',wt,ll_text,'');
str(tb_besri.fieldbyname('betrag').asfloat:8:2,wt);
ll.lldefinefieldext('Betrag',wt,ll_text,'');
str(tb_besri.fieldbyname('taxen_ptt').asfloat:8:2,wt);
ll.lldefinefieldext('PTT_Taxen',wt,ll_text,'');
strpcopy(wt,'J');
ll.lldefinefieldext('Verarbeitet',wt,ll_text,'');
strpcopy(wt,tb_besri.fieldbyname('transaktion').asstring);
ll.lldefinefieldext('Transaktion',wt,ll_text,'');
strpcopy(wt,inttostr(xdebitor)+' *** ');
ll.lldefinefieldext('Debitorennummer',wt,ll_text,'');
strpcopy(wt,tb_besri.fieldbyname('datumgutschrift').asstring);
ll.lldefinefieldext('Valuta',wt,ll_text,'');}
with tb_privat1 do begin
setkey;
fieldbyname('nrprivat').asinteger:=xdebitor;
if gotokey then begin
strpcopy(wt,scut1(fieldbyname('vorname').asstring)+'. '+
fieldbyname('name').asstring+', '+
fieldbyname('ort').asstring);
end else begin
with tb_firma do begin
setkey;
fieldbyname('nrfirma').asinteger:=xdebitor;
if gotokey then begin
strpcopy(wt,fieldbyname('name1').asstring+', '+
fieldbyname('ort').asstring);
end else begin
strpcopy(wt,diverse.gettext(210));
end;
end;
end;
end;
{ ll.lldefinefieldext('Debitor',wt,ll_text,'');}
strpcopy(wt,'');
if xdebitor <> patient then begin
with tb_privat1 do begin
setkey;
fieldbyname('nrprivat').asinteger:=patient;
if gotokey then begin
strpcopy(wt,scut1(fieldbyname('vorname').asstring)+'. '+
fieldbyname('name').asstring+', '+
fieldbyname('ort').asstring);
end;
end;
end;
{ ll.lldefinefieldext('Patient',wt,ll_text,'');
str(su:4:2,wt);
ll.lldefinefieldext('Summe',wt,ll_text or ll_table_footerfield,'');
str(su1:8:2,wt);
ll.lldefinefieldext('Summe1',wt,ll_text or ll_table_footerfield,'');
str(su2:8:2,wt);
ll.lldefinefieldext('Summe2',wt,ll_text or ll_table_footerfield,'');
str(su3:8:2,wt);
ll.lldefinefieldext('Summe3',wt,ll_text or ll_table_footerfield,'');
rc:=ll.llprintfields();
if rc <> 0 then begin
rc:=0;
ll.llprint();
ll.llprintfields();
end; }
end;
end;
end;
function tzahlung.neue_behandlung(patient:integer):integer;
var x:integer;
begin
tb_rgtyp.open;
tb_ansatz.open;
tb_abrechnungstyp.open;
tb_behandlung.indexname:='';
tb_behandlung.last;
x:=tb_behandlung.fieldbyname('nrbehandlung').asinteger+1;
tb_rgtyp.setkey;
tb_rgtyp.fieldbyname('nrrgtyp').asinteger:=tb_privat.fieldbyname('nrrgtyp').asinteger;
tb_abrechnungstyp.setkey;
tb_abrechnungstyp.fieldbyname('nrabrechnungstyp').asinteger:=tb_rgtyp.fieldbyname('nrabrechnungstyp').asinteger;
tb_ansatz.setkey;
tb_ansatz.fieldbyname('nransatz').asinteger:=tb_abrechnungstyp.fieldbyname('nransatz').asinteger;
tb_ansatz.gotokey;
with tb_privat1 do begin
indexname:='';
setkey;
fieldbyname('nrprivat').asinteger:=patient;
gotokey;
end;
with tb_behandlung do begin
indexname:='';
last;
x:=fieldbyname('nrbehandlung').asinteger+1;
insert;
fieldbyname('andrucken_taxpunkte').asboolean:=tb_rgtyp.fieldbyname('andrucken_taxpunkte').asboolean;
fieldbyname('nrbehandlung').asinteger:=x;
fieldbyname('behandlungsbeginn').asstring:=datetostr(now);
fieldbyname('mandant').asinteger:=mandant;
fieldbyname('nrpatient').asinteger:=tb_privat1.fieldbyname('nrprivat').asinteger;
fieldbyname('nrbehandler').asinteger:=behandlernummer;
fieldbyname('rabatt').asfloat:=tb_privat1.fieldbyname('rabatt').asfloat;
fieldbyname('nrabrechnungstyp').asinteger:=tb_rgtyp.fieldbyname('nrabrechnungstyp').asinteger;
fieldbyname('nransatz').asinteger:=tb_abrechnungstyp.fieldbyname('nransatz').asinteger;
fieldbyname('nrtaxpunkt').asinteger:=tb_abrechnungstyp.fieldbyname('nrtaxpunkt').asinteger;
fieldbyname('taxpunktwert').asfloat:=tb_ansatz.fieldbyname('taxpunktwert').asfloat;
fieldbyname('nrestyp').asinteger:=tb_privat1.fieldbyname('estyp').asinteger;
fieldbyname('nrrgtyp').asinteger:=tb_privat1.fieldbyname('nrrgtyp').asinteger;
fieldbyname('nrgarant').asinteger:=-1;
if xdebitor<>patient then fieldbyname('nrgarant').asinteger:=xdebitor;
fieldbyname('nransprechpartner').asinteger:=-1;
fieldbyname('status').asinteger:=1;
fieldbyname('statusdatum').asfloat:=int(now);
post;
end;
neue_behandlung:=tb_behandlung.fieldbyname('nrbehandlung').asinteger;
tb_rgtyp.close;
tb_ansatz.close;
tb_abrechnungstyp.close;
end;
procedure tzahlung.insert_into_zjournal;
begin
with tb_zjournal do begin
indexname:='';
last;
i:=fieldbyname('nreintrag').asinteger+1;
insert;
fieldbyname('nreintrag').asinteger:=i;
fieldbyname('mandant').asinteger:=mandant;
fieldbyname('datum').asfloat:=tb_zahlung.fieldbyname('valuta').asfloat;
fieldbyname('nrdebitor').asinteger:=tb_zahlung.fieldbyname('nrdebitor').asinteger;
fieldbyname('nrfaktura').asinteger:=tb_zahlung.fieldbyname('nrfaktura').asinteger;
fieldbyname('betrag').asfloat:=tb_zahlung.fieldbyname('betrag').asfloat;
fieldbyname('storno').asstring:='';
fieldbyname('vz').asstring:='';
if tb_zahlung.fieldbyname('status').asinteger=9 then fieldbyname('storno').asstring:='J';
if tb_zahlung.fieldbyname('vorauszahlung').asboolean then fieldbyname('vz').asstring:='J';
with tb_konto do begin
indexname:='';
setkey;
fieldbyname('nrkonto').asinteger:=tb_zahlung.fieldbyname('nrkonto').asinteger;
if gotokey then begin
tb_zjournal.fieldbyname('konto').asstring:=fieldbyname('konto').asstring;
end else begin
tb_zjournal.fieldbyname('konto').asstring:='';
end;
end;
with tb_privat do begin
indexname:='';
setkey;
fieldbyname('nrprivat').asinteger:=tb_zahlung.fieldbyname('nrdebitor').asinteger;
if gotokey then begin
s:=scut1(fieldbyname('vorname').asstring)+'. '+fieldbyname('name').asstring+', '+fieldbyname('ort').asstring;
with tb_anrede do begin
setkey;
fieldbyname('nranrede').asinteger:=tb_privat.fieldbyname('nranrede').asinteger;
if gotokey then begin
s:=fieldbyname('anrede_d').asstring+' '+s;
end;
end;
end else begin
with tb_firma do begin
setkey;
fieldbyname('nrfirma').asinteger:=tb_zahlung.fieldbyname('nrdebitor').asinteger;
if gotokey then begin
s:=fieldbyname('name1').asstring+', '+fieldbyname('ort').asstring;
end else begin
s:='???';
end;
end;
end;
end;
fieldbyname('debitor').asstring:=s;
post;
end;
end;
procedure TZahlung.Verlassen1Click(Sender: TObject);
begin
close;
end;
procedure TZahlung.Disketteeinlesen1Click(Sender: TObject);
begin
ToolButton7Click(Sender);
end;
procedure TZahlung.DatumEnter(Sender: TObject);
begin
status.caption:=getstatustext(300);
end;
procedure TZahlung.BetragEnter(Sender: TObject);
begin
status.caption:=getstatustext(301);
end;
procedure TZahlung.lkontoEnter(Sender: TObject);
begin
status.caption:=getstatustext(302);
end;
procedure TZahlung.vorauszahlungEnter(Sender: TObject);
begin
status.caption:=getstatustext(303);
end;
procedure TZahlung.lzahlungenEnter(Sender: TObject);
begin
status.caption:=getstatustext(304);
end;
procedure TZahlung.lfakturaEnter(Sender: TObject);
begin
status.caption:=getstatustext(305);
end;
procedure TZahlung.btnhelpClick(Sender: TObject);
begin
application.helpcontext(164);
end;
procedure TZahlung.Hilfe1Click(Sender: TObject);
begin
application.helpcontext(164);
end;
procedure TZahlung.BitBtn5Click(Sender: TObject);
var saldo:double;
wt:array[0..70] of char;
xx:integer;
begin
screen.cursor:=crhourglass;
saldo:=0;
tb_faktura1.open;
with q_faktura do begin
close;
sql.clear;
sql.add('SELECT Nrfaktura, Nrdebitor, Datum, Total, Status, Statusdatum');
sql.add('FROM ":dpm:FAKTURA.DB"');
sql.add('WHERE');
sql.add('(Nrdebitor = '+inttostr(nrdebitor)+')');
sql.add('ORDER BY Datum,statusdatum,status');
open;
end;
with q_zahlung do begin
close;
sql.clear;
sql.add('SELECT Nrzahlung, Nrdebitor, Betrag, Valuta, Status, Statusdatum, nrbehandlung,vorauszahlung');
sql.add('FROM ":dpm:ZAHLUNG.DB"');
sql.add('WHERE');
sql.add('(Nrdebitor = '+inttostr(nrdebitor)+')');
sql.add('ORDER BY valuta, statusdatum, status');
open;
end;
with tb_tmpkonto do begin
open;
first;
while not eof do begin
delete;
end;
end;
with q_faktura do begin
first;
xx:=1;
while not eof do begin
tb_tmpkonto.insert;
if fieldbyname('status').asinteger=9 then begin
tb_tmpkonto.fieldbyname('datum').asfloat:=fieldbyname('statusdatum').asfloat;
tb_tmpkonto.fieldbyname('haben').asfloat:=0;
tb_tmpkonto.fieldbyname('soll').asfloat:=fieldbyname('total').asfloat;
tb_tmpkonto.fieldbyname('text').asstring:='Rechnung Nr:'+fieldbyname('nrfaktura').asstring;
saldo:=saldo+fieldbyname('total').asfloat;
tb_tmpkonto.fieldbyname('saldo').asfloat:=saldo;
tb_tmpkonto.fieldbyname('nreintrag').asinteger:=xx;
inc(xx);
tb_tmpkonto.post;
tb_tmpkonto.insert;
tb_tmpkonto.fieldbyname('datum').asfloat:=fieldbyname('statusdatum').asfloat;
tb_tmpkonto.fieldbyname('haben').asfloat:=fieldbyname('total').asfloat;
tb_tmpkonto.fieldbyname('soll').asfloat:=0;
tb_tmpkonto.fieldbyname('text').asstring:='Storno Rechnung Nr:'+fieldbyname('nrfaktura').asstring;
saldo:=saldo-fieldbyname('total').asfloat;
tb_tmpkonto.fieldbyname('saldo').asfloat:=saldo;
tb_tmpkonto.fieldbyname('nreintrag').asinteger:=xx;
inc(xx);
end else begin
tb_tmpkonto.fieldbyname('datum').asfloat:=fieldbyname('statusdatum').asfloat;
tb_tmpkonto.fieldbyname('haben').asfloat:=0;
tb_tmpkonto.fieldbyname('soll').asfloat:=fieldbyname('total').asfloat;
tb_tmpkonto.fieldbyname('text').asstring:='Rechnung Nr:'+fieldbyname('nrfaktura').asstring;
saldo:=saldo+fieldbyname('total').asfloat;
tb_tmpkonto.fieldbyname('saldo').asfloat:=saldo;
tb_tmpkonto.fieldbyname('nreintrag').asinteger:=xx;
inc(xx);
end;
tb_tmpkonto.post;
next;
end;
end;
with q_zahlung do begin
first;
while not eof do begin
if (fieldbyname('vorauszahlung').asboolean) and (fieldbyname('nrbehandlung').asstring <>'') and
(fieldbyname('status').asinteger <>9) then begin
with tb_faktura1 do begin
indexname:='idxbehandlung';
setkey;
fieldbyname('nrbehandlung').asinteger:=q_zahlung.fieldbyname('nrbehandlung').asinteger;
fieldbyname('status').asinteger:=0;
if gotokey then begin
tb_tmpkonto.insert;
tb_tmpkonto.fieldbyname('datum').asfloat:=fieldbyname('datum').asfloat;
tb_tmpkonto.fieldbyname('soll').asfloat:=q_zahlung.fieldbyname('betrag').asfloat;
tb_tmpkonto.fieldbyname('haben').asfloat:=0;
tb_tmpkonto.fieldbyname('text').asstring:='VZ Abzug bei Rechnung Nr: '+
tb_faktura1.fieldbyname('nrfaktura').asstring;
saldo:=saldo+q_zahlung.fieldbyname('betrag').asfloat;
tb_tmpkonto.fieldbyname('saldo').asfloat:=saldo;
tb_tmpkonto.post;
end;
end;
end;
tb_tmpkonto.insert;
if fieldbyname('status').asinteger<>9 then begin
tb_tmpkonto.fieldbyname('datum').asfloat:=fieldbyname('valuta').asfloat;
tb_tmpkonto.fieldbyname('haben').asfloat:=fieldbyname('betrag').asfloat;
tb_tmpkonto.fieldbyname('soll').asfloat:=0;
tb_tmpkonto.fieldbyname('text').asstring:='Ihre Zahlung';
saldo:=saldo-fieldbyname('betrag').asfloat;
tb_tmpkonto.fieldbyname('saldo').asfloat:=saldo;
tb_tmpkonto.fieldbyname('nreintrag').asinteger:=xx;
inc(xx);
end else begin
tb_tmpkonto.fieldbyname('datum').asfloat:=fieldbyname('valuta').asfloat;
tb_tmpkonto.fieldbyname('haben').asfloat:=fieldbyname('betrag').asfloat;
tb_tmpkonto.fieldbyname('soll').asfloat:=0;
tb_tmpkonto.fieldbyname('text').asstring:='Ihre Zahlung';
saldo:=saldo+fieldbyname('betrag').asfloat;
tb_tmpkonto.fieldbyname('saldo').asfloat:=saldo;
tb_tmpkonto.fieldbyname('nreintrag').asinteger:=xx;
inc(xx);
tb_tmpkonto.post;
tb_tmpkonto.insert;
tb_tmpkonto.fieldbyname('datum').asfloat:=fieldbyname('statusdatum').asfloat;
tb_tmpkonto.fieldbyname('haben').asfloat:=0;
tb_tmpkonto.fieldbyname('soll').asfloat:=fieldbyname('betrag').asfloat;
tb_tmpkonto.fieldbyname('text').asstring:='Storno Zahlung';
saldo:=saldo+fieldbyname('betrag').asfloat;
tb_tmpkonto.fieldbyname('saldo').asfloat:=saldo;
tb_tmpkonto.fieldbyname('nreintrag').asinteger:=xx;
inc(xx);
end;
tb_tmpkonto.insert;
next;
end;
end;
s:=diverse.getformulartext(1001,'D',mandant);
strpcopy(wt,s);
{ ll.lldefinevariableext('Absender_Z1',wt,ll_text,'');
s:=diverse.getformulartext(1002,'D',mandant);
strpcopy(wt,s);
ll.lldefinevariableext('Absender_Z2',wt,ll_text,'');
s:=diverse.getformulartext(1003,'D',mandant);
strpcopy(wt,s);
ll.lldefinevariableext('Absender_Z3',wt,ll_text,'');
s:=diverse.getformulartext(1004,'D',mandant);
strpcopy(wt,s);
ll.lldefinevariableext('Absender_Z4',wt,ll_text,'');
diverse.getadresse(nrdebitor,0);
strpcopy(wt,diverse.adresszeile1);
ll.lldefinevariableext('Debitor_Z1',wt,ll_text,'');
strpcopy(wt,diverse.adresszeile2);
ll.lldefinevariableext('Debitor_Z2',wt,ll_text,'');
strpcopy(wt,diverse.adresszeile3);
ll.lldefinevariableext('Debitor_Z3',wt,ll_text,'');
strpcopy(wt,diverse.adresszeile4);
ll.lldefinevariableext('Debitor_Z4',wt,ll_text,'');
strpcopy(wt,diverse.adresszeile5);
ll.lldefinevariableext('Debitor_Z5',wt,ll_text,'');
strpcopy(wt,diverse.adresszeile6);
ll.lldefinevariableext('Debitor_Z6',wt,ll_text,'');
ll.llprint();
saldo:=0;
with tb_tmpkonto do begin
indexname:='idx_datum';
first;
repeat
strpcopy(wt,fieldbyname('datum').asstring);
ll.lldefinefieldext('Datum',wt,ll_text,'');
strpcopy(wt,fieldbyname('text').asstring);
ll.lldefinefieldext('Text',wt,ll_text,'');
str(fieldbyname('soll').asfloat:8:2,wt);
ll.lldefinefieldext('Belastung',wt,ll_text,'');
str(fieldbyname('haben').asfloat:8:2,wt);
ll.lldefinefieldext('Gutschrift',wt,ll_text,'');
saldo:=saldo+fieldbyname('soll').asfloat-fieldbyname('haben').asfloat;
str(saldo:8:2,wt);
ll.lldefinefieldext('Saldo',wt,ll_text,'');
rc:=ll.llprintfields();
if rc=ll_wrn_repeat_data then begin
ll.llprint();
rc:=0;
ll.llprintfields();
end;
next;
until (eof);
str(saldo:8:2,wt);
ll.lldefinefieldext('Saldo1',wt,ll_text,'');
end_print(true);
end;
screen.cursor:=crdefault;
tb_tmpkonto.close;
q_faktura.close;
q_zahlung.close;
tb_faktura1.close; }
end;
procedure TZahlung.tb_zahlungAfterPost(DataSet: TDataset);
begin
flushdbbuffer(dataset as ttable);
end;
procedure TZahlung.tb_fakturaAfterPost(DataSet: TDataset);
begin
flushdbbuffer(dataset as ttable);
end;
procedure TZahlung.tb_debitorAfterPost(DataSet: TDataset);
begin
flushdbbuffer(dataset as ttable);
end;
procedure tzahlung.copyfile(source,dest:string);
var x1,x2:integer;
tof1,tof2:tofstruct;
begin
strpcopy(wt,source);
strpcopy(wt1,dest);
x1:=lzopenfile(wt,tof1,of_read);
x2:=lzopenfile(wt1,tof2,of_create);
lzcopy(x1,x2);
lzclose(x1);
lzclose(x2);
end;
procedure TZahlung.tb_anzahlungenAfterPost(DataSet: TDataSet);
begin
flushdbbuffer(dataset as ttable);
end;
procedure TZahlung.RGNRClick(Sender: TObject);
var s:string;
i:longint;
e:integer;
begin
deb.caption:='';
pat.caption:='';
s:=inputbox('Rechnungsnummer','Rechnungsnummer eingeben','');
val(s,i,e);
if e <> 0 then begin
showmessage('Ungültige Rechnungsnummer eingegeben');
exit;
end;
with tb_faktura do begin
indexname:='';
setkey;
fieldbyname('nrfaktura').asinteger:=i;
if not gotokey then begin
showmessage('Rechnung mit der Nummer: '+s+' ist nicht vorhanden');
exit;
end;
nrdebitor:=fieldbyname('nrdebitor').asinteger;
set_caption;
offene_rechnungen;
erledigte_zahlungen;
for i:=0 to lzahlungen.items.count-1 do begin
if pos('RG:'+s,lzahlungen.items[i])>0 then lzahlungen.itemindex:=i;
end;
end;
end;
procedure TZahlung.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=caFree;
end;
procedure TZahlung.ToolButton1Click(Sender: TObject);
begin
close;
end;
procedure TZahlung.ToolButton3Click(Sender: TObject);
begin
bitbtn1click(sender);
end;
procedure TZahlung.ToolButton5Click(Sender: TObject);
begin
RGNRClick(Sender);
end;
procedure TZahlung.ToolButton4Click(Sender: TObject);
begin
bitbtn2click(sender);
end;
procedure TZahlung.ToolButton7Click(Sender: TObject);
var fname:string;
lw:string;
f:system.text;
s1:string;
i,ii:integer;
jetzt:double;
az:integer;
xx:double;
tr:treports;
begin
if not berechtigungen.berechtigt(78) then exit;
if not berechtigungen.berechtigt(25) then exit;
su:=0;
su1:=0;
su2:=0;
su3:=0;
{[ lw:=diverse.get_diskettenlaufwerk;
' s:=diverse.gettext(203)+lw;
' if messagedlg(s,mtconfirmation,[mbok,mbabort],0)<>id_ok then begin
' exit;
' end;
' fname:=diverse.get_besrfilename;}
lw:=diverse.diskettenlaufwerk;
if lw='Diskfile' then begin
if opendialog1.execute then fname:=opendialog1.FileName else exit;
end else begin
s:='Bitte die Diskette mit den Bankzahlungen in '+lw+' einlegen.';
if messagedlg(s,mtconfirmation,[mbok,mbabort],0)<>id_ok then begin
exit;
end;
fname:=diverse.get_besrfilename;
if not fileexists(lw+fname) then begin
showmessage('Datei mit Bankzahlungen nicht gefunden! Funktion wird abgebrochen!');
exit;
end;
fname:=lw+'\'+fname;
end;
if not fileexists(fname) then begin
meldung(200);
exit;
end;
tb_besrt.open;
tb_besri.open;
system.assign(f,fname);
system.reset(f);
gauge1.min:=0;
gauge1.position:=0;
repeat
system.readln(f,s);
if (copy(s,1,3)='999') or (copy(s,1,3)='995')then begin
with tb_besrt do begin
setkey;
s1:=copy(s,64,2);
val(s1,ii,i);
if ii < 80 then s1:='20'+s1 else s1:='19'+s1;
s1:=copy(s,68,2)+'.'+copy(s,66,2)+'.'+s1;
xx:=strtodate(s1);
xx:=int(xx);
fieldbyname('erstellungsdatum').asfloat:=xx;
erstellungsdatum:=xx;
if gotokey then begin
meldung(3000);
close;
exit;
end;
insert;
fieldbyname('transaktion').asstring:=copy(s,1,3);
fieldbyname('datum').asfloat:=erstellungsdatum;
fieldbyname('svbnummer').asstring:=copy(s,4,9);
fieldbyname('sortierung').asstring:=copy(s,13,27);
s1:=copy(s,40,10)+'.'+copy(s,50,2);
fieldbyname('betrag').asfloat:=strtofloat(s1);
s1:=copy(s,52,12)+'.0';
fieldbyname('anzahltransaktionen').asfloat:=strtofloat(s1);
s1:=copy(s,64,2);
val(s1,ii,i);
if ii < 80 then s1:='20'+s1 else s1:='19'+s1;
s1:=copy(s,68,2)+'.'+copy(s,66,2)+'.'+s1;
xx:=strtodate(s1);
xx:=int(xx);
fieldbyname('erstellungsdatum').asfloat:=xx;
s1:=copy(s,70,7)+'.'+copy(s,77,2);
fieldbyname('Taxen_PTT').asfloat:=strtofloat(s1);
s1:=copy(s,79,7)+'.'+copy(s,86,2);
fieldbyname('Taxen_Manuell').asfloat:=strtofloat(s1);
su3:=fieldbyname('taxen_manuell').asfloat;
fieldbyname('reserve').asstring:=copy(s,88,13);
post;
end;
end;
until system.eof(f);
system.close(f);
az:=0;
system.assign(f,fname);
system.reset(f);
jetzt:=now;
gauge1.max:=tb_besrt.fieldbyname('anzahltransaktionen').asinteger;
panelverarbeitung.visible:=true;
refresh;
repeat
system.readln(f,s);
if length(s) > 0 then begin
if (copy(s,1,3)<>'999') and (copy(s,1,3)<>'995') then
with tb_besri do begin
insert;
fieldbyname('datum').asfloat:=erstellungsdatum;
fieldbyname('transaktion').asstring:=copy(s,1,3);
fieldbyname('svbnr').asstring:=copy(s,4,9);
fieldbyname('referenz').asstring:=copy(s,13,27);
s1:=copy(s,40,8)+'.'+copy(s,48,2);
fieldbyname('betrag').asfloat:=strtofloat(s1);
fieldbyname('aufgabereferenz').asstring:=copy(s,50,9);
if length(s) > 60 then begin
s1:=copy(s,60,2);
val(s1,ii,i);
if ii < 80 then s1:='20'+s1 else s1:='19'+s1;
s1:=copy(s,64,2)+'.'+copy(s,62,2)+'.'+s1;
xx:=strtodate(s1);
xx:=int(xx);
fieldbyname('datumaufgabe').asfloat:=xx;
s1:=copy(s,66,2);
val(s1,ii,i);
if ii < 80 then s1:='20'+s1 else s1:='19'+s1;
s1:=copy(s,70,2)+'.'+copy(s,68,2)+'.'+s1;
xx:=strtodate(s1);
fieldbyname('datumverarbeitung').asfloat:=xx;
s1:=copy(s,72,2);
val(s1,ii,i);
if ii < 80 then s1:='20'+s1 else s1:='19'+s1;
s1:=copy(s,76,2)+'.'+copy(s,74,2)+'.'+s1;
xx:=strtodate(s1);
fieldbyname('datumgutschrift').asfloat:=xx;
fieldbyname('recherche').asstring:=copy(s,78,9);
fieldbyname('rejectcode').asstring:=copy(s,87,1);
fieldbyname('reserve').asstring:=copy(s,88,9);
s1:=copy(s,97,2)+'.'+copy(s,99,2);
fieldbyname('taxen_ptt').asfloat:=strtofloat(s1);
fieldbyname('verbucht').asboolean:=false;
su:=su+1;
su1:=su1+fieldbyname('betrag').asfloat;
su2:=su2+fieldbyname('taxen_ptt').asfloat;
end else begin
s1:=copy(s,60,2);
val(s1,ii,i);
fieldbyname('datumaufgabe').asfloat:=0;
fieldbyname('datumverarbeitung').asfloat:=0;
fieldbyname('datumgutschrift').asfloat:=int(now);
fieldbyname('recherche').asstring:='';
fieldbyname('rejectcode').asstring:='';
fieldbyname('reserve').asstring:='';
s1:=copy(s,97,2)+'.'+copy(s,99,2);
fieldbyname('taxen_ptt').asfloat:=0;
fieldbyname('verbucht').asboolean:=false;
su:=su+1;
su1:=su1+fieldbyname('betrag').asfloat;
su2:=su2+fieldbyname('taxen_ptt').asfloat;
end;
if verbucht then begin;
fieldbyname('verbucht').asboolean:=true;
post;
end else begin
fieldbyname('verbucht').asboolean:=false;
post;
end;
end;
end;
gauge1.position:=gauge1.position+1;
until eof(f);
system.close(f);
tb_besrt.close;
tb_besri.close;
panelverarbeitung.visible:=false;
refresh;
tr:=treports.create(application);
tr.jdatum:=datetostr(erstellungsdatum);
tr.sel_esrjournal(false);
tr.Destroy;
end;
procedure TZahlung.ToolButton8Click(Sender: TObject);
var saldo:double;
wt:array[0..70] of char;
xx:integer;
begin
screen.cursor:=crhourglass;
saldo:=0;
tb_faktura1.open;
with q_faktura do begin
close;
sql.clear;
sql.add('SELECT Nrfaktura, Nrdebitor, Datum, Total, Status, Statusdatum, mahndatum1, mahngebuehr1, mahndatum2, mahngebuehr2, mahndatum3, mahngebuehr3');
sql.add('FROM ":dpm:FAKTURA.DB"');
sql.add('WHERE');
sql.add('(Nrdebitor = '+inttostr(nrdebitor)+')');
sql.add('ORDER BY Datum desc,statusdatum,status');
open;
end;
with q_zahlung do begin
close;
sql.clear;
sql.add('SELECT Nrzahlung, nrfaktura, Nrdebitor, Betrag, Valuta, Status, Statusdatum, nrbehandlung,vorauszahlung');
sql.add('FROM ":dpm:ZAHLUNG.DB"');
sql.add('WHERE');
sql.add('(Nrdebitor = '+inttostr(nrdebitor)+')');
sql.add('ORDER BY valuta, statusdatum, status');
open;
end;
with tb_tmpkonto do begin
open;
first;
while not eof do begin
delete;
end;
end;
with q_faktura do begin
first;
xx:=1;
while not eof do begin
tb_tmpkonto.insert;
if fieldbyname('status').asinteger=9 then begin
tb_tmpkonto.fieldbyname('datum').asfloat:=fieldbyname('datum').asfloat;
tb_tmpkonto.fieldbyname('haben').asfloat:=0;
tb_tmpkonto.fieldbyname('soll').asfloat:=fieldbyname('total').asfloat;
tb_tmpkonto.fieldbyname('text').asstring:='Rechnung Nr:'+fieldbyname('nrfaktura').asstring;
saldo:=saldo+fieldbyname('total').asfloat;
tb_tmpkonto.fieldbyname('saldo').asfloat:=saldo;
tb_tmpkonto.fieldbyname('nreintrag').asinteger:=xx;
inc(xx);
tb_tmpkonto.post;
tb_tmpkonto.insert;
tb_tmpkonto.fieldbyname('datum').asfloat:=fieldbyname('datum').asfloat;
tb_tmpkonto.fieldbyname('haben').asfloat:=fieldbyname('total').asfloat;
tb_tmpkonto.fieldbyname('soll').asfloat:=0;
tb_tmpkonto.fieldbyname('text').asstring:='Storno Rechnung Nr:'+fieldbyname('nrfaktura').asstring;
saldo:=saldo-fieldbyname('total').asfloat;
tb_tmpkonto.fieldbyname('saldo').asfloat:=saldo;
tb_tmpkonto.fieldbyname('nreintrag').asinteger:=xx;
inc(xx);
end else begin
tb_tmpkonto.fieldbyname('datum').asfloat:=fieldbyname('datum').asfloat;
tb_tmpkonto.fieldbyname('haben').asfloat:=0;
tb_tmpkonto.fieldbyname('soll').asfloat:=fieldbyname('total').asfloat;
tb_tmpkonto.fieldbyname('text').asstring:='Rechnung Nr:'+fieldbyname('nrfaktura').asstring;
saldo:=saldo+fieldbyname('total').asfloat;
tb_tmpkonto.fieldbyname('saldo').asfloat:=saldo;
tb_tmpkonto.fieldbyname('nreintrag').asinteger:=xx;
inc(xx);
end;
tb_tmpkonto.post;
// Mahnungen bei Kontoauszug berücksichtigen
if q_faktura.fieldbyname('Mahndatum1').asstring<>'' then begin
tb_tmpkonto.insert;
tb_tmpkonto.fieldbyname('datum').asfloat:=q_faktura.fieldbyname('mahndatum1').asfloat;
tb_tmpkonto.fieldbyname('haben').asfloat:=0;
tb_tmpkonto.fieldbyname('soll').asfloat:=q_faktura.fieldbyname('mahngebuehr1').asfloat;
tb_tmpkonto.fieldbyname('text').asstring:='1. Mahnung Rechnung Nr:'+fieldbyname('nrfaktura').asstring;
saldo:=saldo+q_faktura.fieldbyname('mahngebuehr1').asfloat;
tb_tmpkonto.fieldbyname('saldo').asfloat:=saldo;
tb_tmpkonto.fieldbyname('nreintrag').asinteger:=xx;
inc(xx);
tb_tmpkonto.post;
end;
// Mahnungen bei Kontoauszug berücksichtigen
if q_faktura.fieldbyname('Mahndatum2').asstring<>'' then begin
tb_tmpkonto.insert;
tb_tmpkonto.fieldbyname('datum').asfloat:=q_faktura.fieldbyname('mahndatum2').asfloat;
tb_tmpkonto.fieldbyname('haben').asfloat:=0;
tb_tmpkonto.fieldbyname('soll').asfloat:=q_faktura.fieldbyname('mahngebuehr2').asfloat;
tb_tmpkonto.fieldbyname('text').asstring:='2. Mahnung Rechnung Nr:'+fieldbyname('nrfaktura').asstring;
saldo:=saldo+q_faktura.fieldbyname('mahngebuehr2').asfloat;
tb_tmpkonto.fieldbyname('saldo').asfloat:=saldo;
tb_tmpkonto.fieldbyname('nreintrag').asinteger:=xx;
inc(xx);
tb_tmpkonto.post;
end;
if q_faktura.fieldbyname('Mahndatum3').asstring<>'' then begin
tb_tmpkonto.insert;
tb_tmpkonto.fieldbyname('datum').asfloat:=q_faktura.fieldbyname('mahndatum3').asfloat;
tb_tmpkonto.fieldbyname('haben').asfloat:=0;
tb_tmpkonto.fieldbyname('soll').asfloat:=q_faktura.fieldbyname('mahngebuehr3').asfloat;
tb_tmpkonto.fieldbyname('text').asstring:='3. Mahnung Rechnung Nr:'+fieldbyname('nrfaktura').asstring;
saldo:=saldo+q_faktura.fieldbyname('mahngebuehr3').asfloat;
tb_tmpkonto.fieldbyname('saldo').asfloat:=saldo;
tb_tmpkonto.fieldbyname('nreintrag').asinteger:=xx;
inc(xx);
tb_tmpkonto.post;
end;
next;
end;
end;
with q_zahlung do begin
first;
while not eof do begin
if (fieldbyname('vorauszahlung').asboolean) and (fieldbyname('nrbehandlung').asstring <>'') and
(fieldbyname('status').asinteger <>9) then begin
with tb_faktura1 do begin
indexname:='idxbehandlung';
setkey;
fieldbyname('nrbehandlung').asinteger:=q_zahlung.fieldbyname('nrbehandlung').asinteger;
fieldbyname('status').asinteger:=0;
if gotokey then begin
tb_tmpkonto.insert;
tb_tmpkonto.fieldbyname('datum').asfloat:=fieldbyname('datum').asfloat;
tb_tmpkonto.fieldbyname('soll').asfloat:=q_zahlung.fieldbyname('betrag').asfloat;
tb_tmpkonto.fieldbyname('haben').asfloat:=0;
tb_tmpkonto.fieldbyname('text').asstring:='VZ Abzug bei Rechnung Nr: '+
tb_faktura1.fieldbyname('nrfaktura').asstring;
saldo:=saldo+q_zahlung.fieldbyname('betrag').asfloat;
tb_tmpkonto.fieldbyname('saldo').asfloat:=saldo;
tb_tmpkonto.fieldbyname('nreintrag').asinteger:=xx;
inc(xx);
tb_tmpkonto.post;
end;
end;
end;
tb_tmpkonto.insert;
if fieldbyname('status').asinteger<>9 then begin
tb_tmpkonto.fieldbyname('datum').asfloat:=fieldbyname('valuta').asfloat;
tb_tmpkonto.fieldbyname('haben').asfloat:=fieldbyname('betrag').asfloat;
tb_tmpkonto.fieldbyname('soll').asfloat:=0;
tb_tmpkonto.fieldbyname('text').asstring:='Ihre Zahlung zu Rechnung-Nr ' + fieldbyname('nrfaktura').asstring ;
saldo:=saldo-fieldbyname('betrag').asfloat;
tb_tmpkonto.fieldbyname('saldo').asfloat:=saldo;
tb_tmpkonto.fieldbyname('nreintrag').asinteger:=xx;
inc(xx);
end else begin
tb_tmpkonto.fieldbyname('datum').asfloat:=fieldbyname('valuta').asfloat;
tb_tmpkonto.fieldbyname('haben').asfloat:=fieldbyname('betrag').asfloat;
tb_tmpkonto.fieldbyname('soll').asfloat:=0;
tb_tmpkonto.fieldbyname('text').asstring:='Ihre Zahlung zu Rechnung-Nr ' + fieldbyname('nrfaktura').asstring ;
saldo:=saldo+fieldbyname('betrag').asfloat;
tb_tmpkonto.fieldbyname('saldo').asfloat:=saldo;
tb_tmpkonto.fieldbyname('nreintrag').asinteger:=xx;
inc(xx);
tb_tmpkonto.post;
tb_tmpkonto.insert;
tb_tmpkonto.fieldbyname('datum').asfloat:=fieldbyname('statusdatum').asfloat;
tb_tmpkonto.fieldbyname('haben').asfloat:=0;
tb_tmpkonto.fieldbyname('soll').asfloat:=fieldbyname('betrag').asfloat;
tb_tmpkonto.fieldbyname('text').asstring:='Storno Zahlung';
saldo:=saldo+fieldbyname('betrag').asfloat;
tb_tmpkonto.fieldbyname('saldo').asfloat:=saldo;
tb_tmpkonto.fieldbyname('nreintrag').asinteger:=xx;
inc(xx);
end;
tb_tmpkonto.post;
next;
end;
end;
screen.cursor:=crdefault;
tb_tmpkonto.close;
q_faktura.close;
q_zahlung.close;
tb_faktura1.close;
reporting.kontoauszug(nrdebitor,design);
end;
procedure TZahlung.ToolButton10Click(Sender: TObject);
begin
diverse.showhelp_topic('Zahlungen');
end;
procedure TZahlung.Rechnungstornieren1Click(Sender: TObject);
var s:string;
begin
if not berechtigungen.berechtigt(78) then exit;
if MessageDlg('Die markierte Rechnung wirklich stornieren ' + char(13) + chr(13) + '(Achtung: zugehörende Behandlungen werden nicht berücksichtigt!)',
mtConfirmation, [mbYes, mbNo], 0) = mryes then begin
s:=lfaktura.items[lfaktura.itemindex];
s:=copy(s,1,10);
tb_faktura.indexname:='';
tb_faktura.setkey;
tb_faktura.fieldbyname('nrfaktura').asstring:=s;
if tb_faktura.GotoKey then begin
tb_faktura.edit;
tb_faktura.FieldByName('Status').asinteger:=9;
tb_faktura.fieldbyname('statusdatum').asfloat:=now;
tb_faktura.post;
end;
tb_debitor.indexname:='idx_faktura';
tb_debitor.setkey;
tb_debitor.fieldbyname('nrfaktura').asstring:=s;
if tb_debitor.gotokey then begin
tb_debitor.edit;
tb_debitor.fieldbyname('statusdatum').asfloat:=now;
tb_debitor.fieldbyname('status').asinteger:=9;
tb_debitor.post;
end;
offene_rechnungen;
erledigte_zahlungen;
end;
end;
procedure TZahlung.N2Click(Sender: TObject);
begin
with tb_zahlung do begin
indexname:='';
setkey;
fieldbyname('nrzahlung').asinteger:=key_from_string(lzahlungen.items[lzahlungen.itemindex]);
if gotokey then begin
if fieldbyname('status').asinteger=9 then begin
edit;
fieldbyname('status').asinteger:=0;
post;
end;
end;
end;
end;
procedure TZahlung.ZL1Click(Sender: TObject);
begin
if not berechtigungen.berechtigt(78) then exit;
with tb_zahlung do begin
indexname:='';
setkey;
fieldbyname('nrzahlung').asinteger:=key_from_string(lzahlungen.items[lzahlungen.itemindex]);
if gotokey then begin
if fieldbyname('status').asinteger=9 then begin
delete;
end;
end;
end;
end;
procedure TZahlung.JvArrowButton1Click(Sender: TObject);
begin
design:=false;
ToolButton8Click(sender);
end;
procedure TZahlung.Vorlagebearbeiten1Click(Sender: TObject);
begin
design:=true;
ToolButton8Click(sender);
end;
procedure TZahlung.Quittungdrucken1Click(Sender: TObject);
begin
reporting.vzquittung(nrdebitor,key_from_string(lzahlungen.items[lzahlungen.itemindex]),false);
end;
procedure TZahlung.Quitungsvorlagebearbeiten1Click(Sender: TObject);
begin
reporting.vzquittung(nrdebitor,key_from_string(lzahlungen.items[lzahlungen.itemindex]),true);
end;
procedure TZahlung.lzahlungenDblClick(Sender: TObject);
var nrbehandlung:string;
begin
with tb_zahlung do begin
indexname:='';
setkey;
fieldbyname('nrzahlung').asinteger:=key_from_string(lzahlungen.items[lzahlungen.itemindex]);
if gotokey then begin
with tb_faktura do begin
tb_faktura.indexname:='';
tb_faktura.setkey;
tb_faktura.fieldbyname('nrfaktura').asstring:=tb_zahlung.fieldbyname('nrfaktura').asstring;
if tb_faktura.gotokey then begin
nrbehandlung:=tb_faktura.fieldbyname('nrbehandlung').asstring;
if not berechtigungen.berechtigt(5) then exit;
tb_behandlung.indexname:='';
tb_behandlung.SetKey;
tb_behandlung.FieldByName('nrbehandlung').asstring:=nrbehandlung;
if tb_behandlung.gotokey then begin
menuhandler.showbehandlung_rg(tb_behandlung.fieldbyname('nrpatient').asinteger,false,tb_behandlung.fieldbyname('nrbehandlung').asinteger)
end;
end;
end;
end;
end;
end;
end.