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
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. |