CREATE OR REPLACE PACKAGE BODY EUROMOBIL.Rechnungen AS
/******************************************************************************
NAME: Rechnungen.KdInRechn
PURPOSE: Zuordnung Kunde zu Rechnung, anschlie�nd wieder Rechnung editieren
Date: 17.10.2002/18.04.2017
*******************************************************************************/
PROCEDURE KdInRechn( p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_AUFART VARCHAR2,
p_KENNUNG VARCHAR2,
p_AUFTRNR VARCHAR2,
p_FNR VARCHAR2 DEFAULT NULL,
p_FUNC VARCHAR2,
p_ART VARCHAR2,
p_NUMMER VARCHAR2,
x INTEGER DEFAULT NULL,
y INTEGER DEFAULT NULL) IS
-- Rec_Rechnung RECHNUNG%ROWTYPE;
my_ProgName VARCHAR2(20) :='KdInRechn';
my_ANREDE VARCHAR2(20) :='';
my_NAME1 VARCHAR2(40) :='';
my_NAME2 VARCHAR2(40) :='';
my_NAME3 VARCHAR2(40) :='';
my_STRASSE VARCHAR2(40) :='';
my_HAUSNR VARCHAR2(10) :='';
my_STRASSE2 VARCHAR2(40) :='';
my_PLZ VARCHAR2(10) :='';
my_ORT VARCHAR2(40) :='';
my_LAND VARCHAR2(40) :='';
my_EGSTEUER VARCHAR2(30) :='';
my_STEUERNR VARCHAR2(30) :='';
my_KdTarif VARCHAR2(12) :='';
my_MWSTSL VARCHAR2(1) :='1';
my_PRIVAT VARCHAR2(1) :='P';
my_PdfRechnung VARCHAR2(1) :='';
my_PdfEMail VARCHAR2(60) :='';
my_KST FLOAT :=0.0;
my_GKREF FLOAT :=0.0;
my_RABATT FLOAT :=0.0;
my_ZAHLART INTEGER;
my_SplitRgNr INTEGER;
my_ABW VARCHAR2(200):='';
my_ErrorText VARCHAR2(100);
my_RechNr INTEGER :=0;
my_RechArt VARCHAR2(01):='R';
my_found BOOLEAN :=TRUE;
cntrech INTEGER :=0;
BEGIN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin(p_HDLNR => p_HDLNR);
RETURN;
END IF;
my_rechnr:=TO_NUMBER(p_USERNR,999) * -1.0;
IF p_FUNC='99'
THEN my_RechArt:='L';
ELSE SELECT COUNT(RECHNR)
INTO cntrech
FROM RECHNUNG
WHERE HDLNR =p_HDLNR
AND RECHNR=my_RechNr;
IF cntrech=1
THEN SELECT RECHART, SPLITRECHNR
INTO my_RechArt, my_SplitRgNr
FROM RECHNUNG
WHERE HDLNR =p_HDLNR
AND RECHNR=my_RechNr;
ELSE SELECT COUNT(RECHNR) -- Rob ProForma
INTO cntrech
FROM RECHNUNG
WHERE HDLNR =p_HDLNR
AND RECHNR =NVL(p_AUFTRNR,0)
AND RECHART='P';
IF cntrech=1
THEN SELECT RECHNR, RECHART, SPLITRECHNR
INTO my_RechNr, my_RechArt, my_SplitRgNr
FROM RECHNUNG
WHERE HDLNR =p_HDLNR
AND RECHNR =NVL(p_AUFTRNR,0)
AND RECHART='P';
END IF;
END IF;
END IF;
IF p_FUNC IN ('1','7','9','11','14','99')
THEN SELECT COUNT (RECHNR) INTO cntRech
FROM RECHADR
WHERE HDLNR =p_HDLNR
AND RECHNR =my_RechNr
AND RECHART=my_RechArt;
IF cntRech=1
THEN DELETE FROM RECHADR
WHERE HDLNR =p_HDLNR
AND RECHNR =my_RechNr
AND RECHART=my_RechArt;
COMMIT;
END IF;
END IF;
BEGIN
SELECT ANREDE, NAME1, NAME2, NAME3, STRASSE, HAUSNR, STRASSE2, PLZ, ORT, LAND,
EGSTEUER, STEUERNR, MWST, TYP, KST, GKREF, RABATT, STDZAHLART, STDTARIF, PDFRECHNUNG, PDFEMAIL
INTO my_ANREDE, my_NAME1, my_NAME2, my_NAME3, my_STRASSE, my_HausNr, my_STRASSE2, my_PLZ, my_ORT, my_LAND,
my_EGSTEUER, my_STEUERNR, my_MWSTSL, my_PRIVAT, my_KST, my_GKREF, my_RABATT, my_ZAHLART, my_KdTarif, my_PdfRechnung, my_PdfEMail
FROM ADRESSEN
WHERE HDLNR =p_HDLNR AND
ART =p_ART AND
NUMMER=p_NUMMER;
EXCEPTION
WHEN OTHERS THEN my_found:=FALSE;
END;
IF (p_FUNC IN ('1','7','9','11','14','99')) AND my_found
THEN INSERT INTO RECHADR
(HDLNR, RECHNR, RECHART,
ANREDE, NAME1, NAME2, NAME3, STRASSE, HAUSNR, STRASSE2, PLZ, ORT, LAND,
DEBITOR, EGSTEUER, STEUERNR, MITMWST, PRIVAT, KOSTENSTELLE, GKREF, KDTARIF,
PDFRECHNUNG, PDFEMAIL)
VALUES
(p_HDLNR, my_RechNr, my_RechArt,
my_ANREDE, my_NAME1, my_NAME2, my_NAME3, my_STRASSE, my_HAUSNR, my_STRASSE2, my_PLZ, my_ORT, my_LAND,
p_NUMMER, my_EGSTEUER, my_STEUERNR, my_MWSTSL, my_PRIVAT, my_KST, my_GKREF, my_KdTarif,
my_PdfRechnung, my_PdfEMail);
UPDATE RECHNUNG
SET DEBITOR = p_NUMMER,
GKREF = my_GkRef
WHERE HDLNR = p_HDLNR
AND RECHNR = my_rechnr;
IF p_FUNC='1'
THEN UPDATE RECHNUNG
SET RABATT = my_RABATT
WHERE HDLNR = p_HDLNR AND
RECHNR = my_Rechnr AND
RECHART= my_RechArt;
END IF;
IF my_ZAHLART IS NOT NULL
THEN UPDATE RECHNUNG
SET ZAHLWEG = my_ZAHLART
WHERE HDLNR = p_HDLNR AND
RECHNR = my_RechNr AND
RECHART = my_RechArt;
END IF;
IF NVL(my_GKREF,0)=0
THEN UPDATE RECHNUNG
SET GKPRLNR = 0
WHERE HDLNR = p_HDLNR AND
RECHNR = my_RechNr AND
RECHART = my_RechArt;
END IF;
END IF;
my_ABW:=my_NAME1 || ' ' || my_NAME2 || ', ' || my_PLZ || ' ' || my_ORT;
IF p_FUNC IN ('2b','6b','8b','7c','9c','7a','9a','7b','9b')
THEN UPDATE RECHNUNG SET
ABWRECH = SUBSTR(my_ABW,1,60)
WHERE HDLNR =p_HDLNR AND
RECHNR=my_rechnr;
END IF;
IF NVL(p_NUMMER,0)>0 THEN
IF p_FUNC IN ('7c','8c','9c')
THEN UPDATE RECHNUNG SET
VERMITTLER = NVL(p_NUMMER,0)
WHERE HDLNR =p_HDLNR AND
RECHNR =my_RechNr AND
RECHART=my_RechArt;
END IF;
END IF;
COMMIT;
CASE p_FUNC
WHEN '99' THEN NULL; -- nichts machen, silent
WHEN '11' THEN RECHNTOOLS.EditZwi(p_HDLNR,p_FILNR,p_USERNR);
WHEN '7' THEN ShowRech(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => p_HDLNR,
p_AFILNR => p_FILNR,
p_RECHNR => my_RechNr,
p_RECHART => my_RechArt,
p_XSL => 'mietgula',
p_FUNC => p_FUNC,
p_ERRORTEXT => my_ERRORTEXT);
WHEN '9' THEN ShowRech(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => p_HDLNR,
p_AFILNR => p_FILNR,
p_RECHNR => my_RechNr,
p_RECHART => my_RechArt,
p_XSL => 'mietgula',
p_FUNC => p_FUNC,
p_ERRORTEXT => my_ERRORTEXT);
WHEN '9a' THEN ShowRech(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => p_HDLNR,
p_AFILNR => p_FILNR,
p_RECHNR => my_RechNr,
p_RECHART => my_RechArt,
p_XSL => 'mietgula',
p_FUNC => SUBSTR(p_FUNC,1,1),
p_ERRORTEXT => my_ERRORTEXT);
WHEN '9b' THEN ShowRech(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => p_HDLNR,
p_AFILNR => p_FILNR,
p_RECHNR => my_RechNr,
p_RECHART => my_RechArt,
p_XSL => 'mietgula',
p_FUNC => SUBSTR(p_FUNC,1,1),
p_ERRORTEXT => my_ERRORTEXT);
WHEN '9c' THEN ShowRech(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => p_HDLNR,
p_AFILNR => p_FILNR,
p_RECHNR => my_RechNr,
p_RECHART => my_RechArt,
p_XSL => 'mietgula',
p_FUNC => SUBSTR(p_FUNC,1,1),
p_ERRORTEXT => my_ERRORTEXT);
WHEN '7a' THEN ShowRech(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => p_HDLNR,
p_AFILNR => p_FILNR,
p_RECHNR => my_RechNr,
p_RECHART => my_RechArt,
p_XSL => 'mietgula',
p_FUNC => SUBSTR(p_FUNC,1,1),
p_ERRORTEXT => my_ERRORTEXT);
WHEN '7b' THEN ShowRech(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => p_HDLNR,
p_AFILNR => p_FILNR,
p_RECHNR => my_RechNr,
p_RECHART => my_RechArt,
p_XSL => 'mietgula',
p_FUNC => SUBSTR(p_FUNC,1,1),
p_ERRORTEXT => my_ERRORTEXT);
WHEN '7c' THEN ShowRech(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => p_HDLNR,
p_AFILNR => p_FILNR,
p_RECHNR => my_RechNr,
p_RECHART => my_RechArt,
p_XSL => 'mietgula',
p_FUNC => SUBSTR(p_FUNC,1,1),
p_ERRORTEXT => my_ERRORTEXT);
WHEN '14' THEN ShowRech(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => p_HDLNR,
p_AFILNR => p_FILNR,
p_RECHNR => my_RechNr,
p_RECHART => my_RechArt,
p_XSL => 'rechsplit',
p_FUNC => '14',
p_ERRORTEXT => my_ERRORTEXT);
ELSE RECHNTOOLS.ShowUsrRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, p_USERNR, p_KENNUNG, p_AUFTRNR);
END CASE;
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END KdInRechn;
/******************************************************************************
NAME: Rechnungen.TxInRechn
PURPOSE: Zuordnung Standardtext zu Rechnung, anschlie�nd wieder Rechnung editieren
Date: 19.10.2002
*******************************************************************************/
PROCEDURE TxInRechn( p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_AUFART VARCHAR2,
p_KENNUNG VARCHAR2,
p_AUFTRNR VARCHAR2,
p_FUNC VARCHAR2,
p_NR VARCHAR2,
p_VFW VARCHAR2,
x INTEGER,
y INTEGER) IS
my_ProgName VARCHAR2(20) :='TxtInRechn';
my_BEM1 VARCHAR2(40) :='';
my_BEM2 VARCHAR2(40) :='';
my_BEM3 VARCHAR2(40) :='';
my_BEM4 VARCHAR2(40) :='';
my_BEM5 VARCHAR2(40) :='';
my_BEM6 VARCHAR2(40) :='';
m_usrrechnr FLOAT :=0.0;
BEGIN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin(p_HDLNR => p_HDLNR);
RETURN;
END IF;
m_usrrechnr:=TO_NUMBER(p_USERNR,999) * -1.0;
IF p_NR<>'-'
THEN
BEGIN
SELECT TEXT1, TEXT2, TEXT3, TEXT4, TEXT5, TEXT6 INTO
my_BEM1,my_BEM2,my_BEM3,my_BEM4,my_BEM5,my_BEM6 FROM BEMERK
WHERE HDLNR =p_HDLNR AND
NR =p_NR;
EXCEPTION
WHEN INVALID_NUMBER THEN NULL;
WHEN OTHERS THEN NULL;
END;
UPDATE RECHNUNG SET
BEMERKUNG1 = my_BEM1,
BEMERKUNG2 = my_BEM2,
BEMERKUNG3 = my_BEM3,
BEMERKUNG4 = my_BEM4,
BEMERKUNG5 = my_BEM5,
BEMERKUNG6 = my_BEM6
WHERE HDLNR =p_HDLNR AND
RECHNR =m_usrrechnr;
COMMIT;
END IF;
RECHNTOOLS.ShowUsrRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, p_USERNR, p_KENNUNG, p_AUFTRNR);
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END TxInRechn;
/******************************************************************************
NAME: Rechnungen.ShowRech
PURPOSE: Basisroutine f�r die Druckausgabe. �ergeben wird auch das XSL
Date: 07.11.2006/26.07.2017
*******************************************************************************/
PROCEDURE ShowRech (p_HDLNR VARCHAR2,
p_FILNR VARCHAR2 DEFAULT NULL,
p_AHDLNR VARCHAR2,
p_AFILNR VARCHAR2 DEFAULT NULL,
p_RECHNR VARCHAR2,
p_RECHART VARCHAR2 DEFAULT 'R',
p_USERNR VARCHAR2,
p_XSL VARCHAR2 DEFAULT NULL,
p_AUFART VARCHAR2 DEFAULT NULL,
p_FUNC VARCHAR2 DEFAULT NULL,
p_ART VARCHAR2 DEFAULT NULL,
p_ERRORTEXT VARCHAR2 DEFAULT NULL,
p_PAGENR VARCHAR2 DEFAULT NULL,
p_EXTERN VARCHAR2 DEFAULT NULL,
p_LOGO VARCHAR2 DEFAULT NULL,
p_DUPLIKAT VARCHAR2 DEFAULT NULL,
x INTEGER DEFAULT NULL,
y INTEGER DEFAULT NULL) IS
my_ProgName VARCHAR2(20):='ShowRech';
my_AHDLNR VARCHAR2(8) := XTool.ConvHdlnr(p_AHDLNR);
my_RHDLNR VARCHAR2(8) := XTool.ConvHdlnr(p_AHDLNR);
my_HDLNR VARCHAR2(8) := XTool.ConvHdlnr(p_HDLNR);
Rec_Firma FIRMA%ROWTYPE;
Rec_FirmaP FIRMAPARAM%ROWTYPE;
Rec_Partner PARTNER%ROWTYPE;
Rec_Rechnung RECHNUNG%ROWTYPE;
Rec_RechAdr RECHADR%ROWTYPE;
Rec_Auftrag AUFTRAG%ROWTYPE;
Rec_Fahrzeug FAHRZEUG%ROWTYPE;
Rec_Abtret ABTRET%ROWTYPE;
Rec_Insure INSURE%ROWTYPE;
my_XSL VARCHAR2(30):=p_XSL;
my_XSLORG VARCHAR2(30):=p_XSL;
-- m_tmp VARCHAR2(100);
my_mwstmiet FLOAT :=0.0;
my_mwstlang FLOAT :=0.0;
my_mwstkraft FLOAT :=0.0;
my_mwstsonst FLOAT :=0.0;
my_mwstverspai FLOAT :=0.0;
my_mwstverscdw FLOAT :=0.0;
my_mwstverstp FLOAT :=0.0;
my_TageLang INTEGER:=30;
my_BlockCnt INTEGER:=0;
m_EchteTage INTEGER := 0;
m_AbrTyp VARCHAR2(2) := 'MF';
m_AnzStd INTEGER := 0;
m_Dauer INTEGER := 0;
m_Rest INTEGER := 0;
m_FreiKm VARCHAR2(10);
m_FreiKm1 VARCHAR2(10);
m_BerKm INTEGER := 0;
m_ZwiRechKm INTEGER := 0;
m_AltUmsatz FLOAT := 0.0;
m_AltKm FLOAT := 0.0;
m_AltSchmal FLOAT :=0.0;
m_AltSchmal1 FLOAT :=0.0;
m_AltSchmal2 FLOAT :=0.0;
m_AltPAI FLOAT :=0.0;
m_AltCDW FLOAT :=0.0;
m_AltTP FLOAT :=0.0;
m_AltKRAFT FLOAT :=0.0;
m_AltBETANK FLOAT :=0.0;
m_AltSONST FLOAT :=0.0;
m_AltSONSTFr FLOAT :=0.0;
m_AltZub FLOAT :=0.0;
m_AltDl FLOAT :=0.0;
m_AltZubFr FLOAT :=0.0;
m_AltDlFr FLOAT :=0.0;
m_AltVtr FLOAT :=0.0;
m_AltMwSt FLOAT :=0.0;
m_NetSumme FLOAT :=0.0;
m_MwSumme FLOAT :=0.0;
m_GesSumme FLOAT :=0.0;
m_MwstBasis FLOAT :=0.0;
m_MwstFreiSum FLOAT :=0.0;
m_SpUmsatz FLOAT :=0.0;
m_SpKm FLOAT :=0.0;
m_SpSchmal FLOAT :=0.0;
m_SpSchmal1 FLOAT :=0.0;
m_SpSchmal2 FLOAT :=0.0;
m_SpPAI FLOAT :=0.0;
m_SpCDW FLOAT :=0.0;
m_SpTP FLOAT :=0.0;
m_SpKraft FLOAT :=0.0;
m_SpBetank FLOAT :=0.0;
m_SpSonst FLOAT :=0.0;
m_SpZub FLOAT :=0.0;
m_SpDl FLOAT :=0.0;
m_SpSonstFr FLOAT :=0.0;
m_SpZubFr FLOAT :=0.0;
m_SpDlFr FLOAT :=0.0;
m_SpRabatt FLOAT :=0.0;
m_partnermc VARCHAR2(40):='';
m_Privat VARCHAR2(1) :='P';
m_mitmwst VARCHAR2(1) :='W';
m_MwStSL VARCHAR2(1) :='1';
m_Vorsteuer VARCHAR2(1) :='F';
m_EMail VARCHAR2(60):='';
m_ReAnrede VARCHAR2(20):='';
m_ReName1 VARCHAR2(40):='';
m_ReName2 VARCHAR2(40):='';
m_ReName3 VARCHAR2(40):='';
m_ReName4 VARCHAR2(40):='';
m_ReAbteilung VARCHAR2(40):='';
m_ReStrasse VARCHAR2(30):='';
m_ReHausNr VARCHAR2(10):='';
m_ReStrasse2 VARCHAR2(30):='';
m_RePLZ VARCHAR2(10):='';
m_ReOrt VARCHAR2(30):='';
m_ReOrtTl VARCHAR2(30):='';
m_ReLand VARCHAR2(30):='';
m_ReEgSteuer VARCHAR2(20):='';
m_ReSteuerNr VARCHAR2(20):='';
m_RaAnrede VARCHAR2(20):='';
m_RaName1 VARCHAR2(40):='';
m_RaName2 VARCHAR2(40):='';
m_RaName3 VARCHAR2(40):='';
m_RaName4 VARCHAR2(40):='';
m_RaAbteilung VARCHAR2(40):='';
m_RaStrasse VARCHAR2(30):='';
m_RaHausNr VARCHAR2(10):='';
m_RaStrasse2 VARCHAR2(30):='';
m_RaPLZ VARCHAR2(10):='';
m_RaOrt VARCHAR2(30):='';
m_RaOrtTl VARCHAR2(30):='';
m_RaLand VARCHAR2(30):='';
m_VersandAdr INTEGER;
m_Deckblatt VARCHAR2(01):='F';
m_SpAnrede VARCHAR2(20):='';
m_SpName1 VARCHAR2(40):='';
m_SpName2 VARCHAR2(40):='';
m_SpName3 VARCHAR2(40):='';
m_SpStrasse VARCHAR2(30):='';
m_SpHausNr VARCHAR2(10):='';
m_SpStrasse2 VARCHAR2(30):='';
m_SpPLZ VARCHAR2(10):='';
m_SpOrt VARCHAR2(30):='';
m_SpOrtTl VARCHAR2(30):='';
m_SpLand VARCHAR2(30):='';
m_SpEgSteuer VARCHAR2(20):='';
m_SpSteuerNr VARCHAR2(20):='';
m_BEnde DATE;
m_BEUhr VARCHAR2(5);
m_BBEGINN DATE;
m_BBUhr VARCHAR2(5);
m_FussText VARCHAR2(1200):='';
m_FussTextM VARCHAR2(400):='';
m_FussTextR VARCHAR2(400):='';
m_FussTeil VARCHAR2(2000):='';
m_MemoText VARCHAR2(600);
m_zubstr VARCHAR2(400) :='';
m_rezubstr VARCHAR2(400) :='';
m_zubstrP VARCHAR2(400) :='';
m_lststr VARCHAR2(400) :='';
m_relststr VARCHAR2(400) :='';
m_lststrP VARCHAR2(400) :='';
m_Land VARCHAR2(02);
m_zubflag INTEGER :=0;
m_zubflagP INTEGER :=0;
m_Usrname VARCHAR2(40):='';
m_ErfUsrname VARCHAR2(40):='';
m_IsOld BOOLEAN;
m_Cnt INTEGER:=0;
m_CntZwiRe INTEGER:=0;
m_Einzug VARCHAR2(1);
m_Ingis VARCHAR2(01);
m_IngisEMail VARCHAR2(60);
m_SpIngis VARCHAR2(01);
m_SpIngisEMail VARCHAR2(60);
m_SpIngisDrc VARCHAR2(01);
m_PdfRech VARCHAR2(01);
m_PdfEMail VARCHAR2(60);
m_SpPdfRech VARCHAR2(01);
m_SpPdfEMail VARCHAR2(60);
m_PdfRechTmp VARCHAR2(01);
m_PdfEMailTmp VARCHAR2(60);
m_SpDebitor INTEGER;
m_KdBank VARCHAR2(60);
m_KdBlz VARCHAR2(20);
m_KdKonto VARCHAR2(20);
m_KdBIC VARCHAR2(11);
m_KdIBAN VARCHAR2(34);
m_KdEinzug VARCHAR2(01);
m_KdSEPADATUM DATE;
m_KdSepaMandat VARCHAR2(30);
m_VermName1 VARCHAR2(40):='';
m_VermName2 VARCHAR2(40):='';
m_error VARCHAR2(500);
m_HatSonder INTEGER;
m_Op INTEGER:=1;
m_ZahlGrp INTEGER:=0;
m_HatSammel VARCHAR2(01);
m_Aufschlag FLOAT :=0.0;
m_OldDeb INTEGER;
RueckXsl VARCHAR2(30):=NULL;
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
Loc_NLSTime VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,2);
Loc_NLSWert VARCHAR2(30):=Xtool.GetNLS(p_HDLNR,3);
Loc_NLSBetrT VARCHAR2(12):=Xtool.GetNLS(p_HDLNR,6);
Loc_NLSBetr VARCHAR2(12):=Xtool.GetNLS(p_HDLNR,7);
PROCEDURE OutFahrer(p_AUFTRNR FLOAT) IS
CURSOR curfahrer IS
SELECT * FROM FAHRER
WHERE HDLNR=my_AHDLNR AND
AUFTRNR=p_AUFTRNR;
cnt integer :=0;
BEGIN
FOR rec_fahrer IN curfahrer LOOP
IF cnt<2 THEN
Xtool.XMLStart('Fahrer');
Xtool.htx('WNAME1' ,Rec_Fahrer.NAME1);
Xtool.htx('WNAME2' ,Rec_Fahrer.NAME2);
Xtool.htx('WNAME3' ,Rec_Fahrer.NAME3);
Xtool.htx('WSTRASSE' ,Rec_Fahrer.STRASSE);
Xtool.htx('WHAUSNR' ,Rec_Fahrer.HAUSNR);
Xtool.htx('WSTRASSE2' ,Rec_Fahrer.STRASSE2);
Xtool.htx('WPLZ' ,Rec_Fahrer.PLZ);
Xtool.htx('WORT' ,Rec_Fahrer.ORT);
Xtool.htx('WORTTL' ,Rec_Fahrer.ORTSTEIL);
Xtool.htx('WTEL' ,Rec_Fahrer.TELEFON);
Xtool.htx('WGEBDATUM' ,TO_CHAR(Rec_Fahrer.GEBDAT,Loc_NLSDate));
Xtool.htx('WGEBORT' ,Rec_Fahrer.GEBORT);
Xtool.htx('WPERSODATUM',TO_CHAR(Rec_Fahrer.PERSODAT,Loc_NLSDate));
Xtool.htx('WPERSOORT' ,Rec_Fahrer.PERSOORT);
Xtool.htx('WPERSONR' ,Rec_Fahrer.PERSONR);
Xtool.XMLEnd('Fahrer');
END IF;
cnt:=cnt+1;
END LOOP;
Xtool.htx('FCNT' ,TO_CHAR(cnt-1));
END;
PROCEDURE OutStornoteile(p_GULA VARCHAR2,
p_STNRECHNR INTEGER) IS
CURSOR currechsplits IS
SELECT RECHART, RECHNR, RDATUM
FROM RECHNUNG
WHERE HDLNR =Rec_Rechnung.HDLNR
AND AUFTRNR =Rec_Rechnung.AUFTRNR
AND GUTLAST =p_GULA
AND NVL(STNRECHNR,0)>0
AND STNFLAG IS NULL
ORDER BY RECHNR;
loc_Cnt INTEGER:=0;
BEGIN
IF p_STNRECHNR>0 THEN
FOR Rec_Rech IN currechsplits LOOP
Xtool.XMLStart('RechSplits');
Xtool.htx('RECHNR' ,TO_CHAR(Rec_Rech.RECHNR));
Xtool.htx('RECHART' ,Rec_Rech.RECHART);
Xtool.htx('RECHDATUM' ,TO_CHAR(Rec_Rech.RDATUM,Loc_NLSDate));
Xtool.XMLEnd('RechSplits');
loc_Cnt:=loc_Cnt+1;
END LOOP;
END IF;
Xtool.htx('ANZSPLITS' ,TO_CHAR(loc_Cnt));
END;
BEGIN
IF my_AHDLNR IS NULL
THEN my_AHDLNR:=my_HDLNR;
END IF;
IF my_RHDLNR IS NULL
THEN my_RHDLNR:=my_HDLNR;
END IF;
IF NVL(p_RECHNR,0)<0 -- Vorschau, tmp-Rechsatz liegt noch bei H�ler!
THEN my_RHDLNR:=my_HDLNR;
END IF;
m_HatSonder:=Login.CheckRecht(p_HDLNR,p_USERNR,85,'W');
BEGIN
SELECT *
INTO Rec_Firma
FROM FIRMA
WHERE HDLNR=my_AHDLNR;
SELECT *
INTO Rec_FirmaP
FROM FIRMAPARAM
WHERE HDLNR=my_AHDLNR;
m_FussText :=Rec_Firma.FUSSTEXT;
m_FussTextM:=Rec_Firma.FUSSTEXTM;
m_FussTextR:=Rec_Firma.FUSSTEXTR;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
BEGIN
SELECT DRUCKNAME
INTO m_UsrName
FROM USERS
WHERE HDLNR=my_HDLNR
AND NR =p_USERNR;
EXCEPTION
WHEN OTHERS THEN m_UsrName:=p_USERNR;
END;
BEGIN
SELECT *
INTO Rec_Rechnung
FROM RECHNUNG
WHERE HDLNR =my_RHDLNR AND
RECHNR =p_RECHNR AND
RECHART=p_RECHART;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
IF (Rec_Rechnung.RLNUMMER=0) AND -- Ist Sammelrechnung
(my_XSLORG='drcrech')
THEN ShowSammelRechnung(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_RECHNR => NVL(p_RECHNR,0),
p_LOGO => p_LOGO,
p_DUPLIKAT => p_DUPLIKAT,
X => X);
RETURN;
END IF;
BEGIN
SELECT *
INTO Rec_Auftrag
FROM AUFTRAG
WHERE HDLNR =my_AHDLNR AND
AUFTRNR=Rec_Rechnung.AUFTRNR;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
BEGIN
SELECT DRUCKNAME
INTO m_ErfUsrName
FROM USERS
WHERE HDLNR=Rec_Rechnung.ERFHDLNR--SUBSTR(Rec_Auftrag.FILRECHNUNG,1,3) || SUBSTR(Rec_Auftrag.FILRECHNUNG,5,5)
AND NR =Rec_Rechnung.ERFUSER;
EXCEPTION
WHEN OTHERS THEN m_ErfUsrName:=NULL;
END;
IF x<0
THEN m_UsrName:=m_ErfUsrName;
END IF;
BEGIN
SELECT *
INTO Rec_Partner
FROM PARTNER
WHERE HDLNR=my_AHDLNR AND
NR = SUBSTR(my_AHDLNR,1,3) || ';' || SUBSTR(my_AHDLNR,4,5) || ';' || Rec_Auftrag.FILNR;
IF Rec_Auftrag.FILNR<>'0001'
THEN m_FussText:=Rec_Partner.FUSSTEXT;
END IF;
m_partnermc:=Rec_Partner.MATCHCODE;
EXCEPTION
WHEN OTHERS THEN m_partnermc:='?';
END;
BEGIN
SELECT MATCHCODE
INTO m_partnermc
FROM PARTNER
WHERE HDLNR=SUBSTR(Rec_Auftrag.FILRECHNUNG,1,3)||SUBSTR(Rec_Auftrag.FILRECHNUNG,5,5)
AND NR =Rec_Auftrag.FILRECHNUNG;
EXCEPTION
WHEN OTHERS THEN m_partnermc:='?';
END;
IF Rec_Rechnung.VERMITTLER>0.0
THEN BEGIN
SELECT NAME1, NAME2
INTO m_VermName1, m_VermName2
FROM ADRESSEN
WHERE HDLNR =my_AHDLNR AND
ART ='M' AND
NUMMER=Rec_Rechnung.VERMITTLER;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
END IF;
BEGIN
SELECT HVORSTEUER
INTO m_Vorsteuer
FROM ABTRET
WHERE HDLNR =my_AHDLNR AND
AUFTRNR=Rec_Rechnung.AUFTRNR;
EXCEPTION
WHEN OTHERS THEN m_Vorsteuer:='F';
END;
IF NVL(Rec_Auftrag.ALTERNFUSS,0)>0
THEN BEGIN
SELECT COUNT(NR)
INTO m_Cnt
FROM FIRMATEXT
WHERE HDLNR=Rec_Auftrag.HDLNR
AND NR =NVL(Rec_Auftrag.ALTERNFUSS,0);
IF m_Cnt=1
THEN SELECT FUSSTEXT, FUSSTEXTM, FUSSTEXTR
INTO m_FussText, m_FussTextM, m_FussTextR
FROM FIRMATEXT
WHERE HDLNR=Rec_Auftrag.HDLNR
AND NR =NVL(Rec_Auftrag.ALTERNFUSS,0);
Rec_Firma.LOGODRUCK:='smart.png';
END IF;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
END IF;
m_mwstSL :=Rec_Auftrag.MitMwst;
m_Privat :=Rec_Auftrag.Privat;
m_ReAnrede :=Rec_Auftrag.Anrede;
m_ReName1 :=Rec_Auftrag.Name1;
m_ReName2 :=Rec_Auftrag.Name2;
m_ReName3 :=Rec_Auftrag.Name3;
m_ReName4 :=Rec_Auftrag.Name4;
m_ReStrasse :=Rec_Auftrag.Strasse;
m_RehausNr :=Rec_Auftrag.HausNr;
m_ReStrasse2:=Rec_Auftrag.Strasse2;
m_RePLZ :=Rec_Auftrag.PLZ;
m_ReOrt :=Rec_Auftrag.Ort;
m_ReOrtTl :=Rec_Auftrag.Ortsteil;
m_ReLand :=Rec_Auftrag.LAND;
m_ReEgSteuer:=Rec_Auftrag.EgSteuer;
m_ReSteuerNr:=Rec_Auftrag.SteuerNr;
BEGIN
SELECT EMAIL
INTO m_EMail
FROM ADRESSEN
WHERE HDLNR = Rec_Rechnung.HDLNR
AND UPPER(ART) = 'K'
AND NUMMER = Rec_Rechnung.DEBITOR;
EXCEPTION WHEN OTHERS THEN m_EMail:=NULL;
END;
--
-- Rechnungsadresse manuell, nur bei Abrechnung
IF p_XSL IN ('mietabrech','mietzwi') THEN
SELECT COUNT(RECHNR)
INTO m_cnt
FROM RECHADR
WHERE HDLNR =my_RHDLNR AND
RECHNR =Rec_Rechnung.AUFTRNR AND
RECHART='M';
IF m_cnt=1 THEN -- Ausnahme, andere Rechnungsanschrift
SELECT *
INTO Rec_RechAdr
FROM RECHADR
WHERE HDLNR =my_RHDLNR AND
RECHNR =Rec_Rechnung.AUFTRNR AND
RECHART='M';
m_mwstSL :=Rec_RechAdr.MitMwSt;
m_Privat :=Rec_RechAdr.Privat;
m_ReAnrede :=Rec_RechAdr.Anrede;
m_ReName1 :=Rec_RechAdr.Name1;
m_ReName2 :=Rec_RechAdr.Name2;
m_ReName3 :=Rec_RechAdr.Name3;
m_ReName4 :=Rec_RechAdr.Name4;
m_ReAbteilung:=Rec_RechAdr.RgAbteilung;
m_ReStrasse :=Rec_RechAdr.Strasse;
m_ReHausNr :=Rec_RechAdr.HausNr;
m_ReStrasse2 :=Rec_RechAdr.Strasse2;
m_RePLZ :=Rec_RechAdr.PLZ;
m_ReOrt :=Rec_RechAdr.Ort;
m_ReOrtTl :=Rec_RechAdr.Ortsteil;
m_ReLand :=Rec_RechAdr.Land;
m_ReEgSteuer :=Rec_RechAdr.EgSteuer;
m_ReSteuerNr :=Rec_RechAdr.SteuerNr;
m_PdfRechTmp :=Rec_RechAdr.PDFRECHNUNG;
m_PdfEMailTmp:=Rec_RechAdr.PDFEMAIL;
--
END IF;
END IF; -- zeigen der MV-RechAdresse
-- Rechnungsadresse abweichend aus Rg
SELECT COUNT(RECHNR)
INTO m_cnt
FROM RECHADR
WHERE HDLNR =my_RHDLNR AND
RECHNR =p_RECHNR AND
RECHART=p_RECHART;
IF m_cnt=1 THEN -- Ausnahme, andere Rechnungsanschrift
SELECT *
INTO Rec_RechAdr
FROM RECHADR
WHERE HDLNR =my_RHDLNR AND
RECHNR =p_RECHNR AND
RECHART=p_RECHART;
m_mwstSL :=Rec_RechAdr.MitMwSt;
m_Privat :=Rec_RechAdr.Privat;
m_ReAnrede :=Rec_RechAdr.Anrede;
m_ReName1 :=Rec_RechAdr.Name1;
m_ReName2 :=Rec_RechAdr.Name2;
m_ReName3 :=Rec_RechAdr.Name3;
m_ReName4 :=Rec_RechAdr.Name4;
m_ReAbteilung:=Rec_RechAdr.RgAbteilung;
m_ReStrasse :=Rec_RechAdr.Strasse;
m_ReHausNr :=Rec_RechAdr.HausNr;
m_ReStrasse2 :=Rec_RechAdr.Strasse2;
m_RePLZ :=Rec_RechAdr.PLZ;
m_ReOrt :=Rec_RechAdr.Ort;
m_ReOrtTl :=Rec_RechAdr.Ortsteil;
m_ReLand :=Rec_RechAdr.Land;
m_ReEgSteuer :=Rec_RechAdr.EgSteuer;
m_ReSteuerNr :=Rec_RechAdr.SteuerNr;
m_PdfRechTmp :=Rec_RechAdr.PDFRECHNUNG;
m_PdfEMailTmp:=Rec_RechAdr.PDFEMAIL;
END IF;
IF m_mwstSL IS NULL -- Alte Datens�e default mit MwSt
THEN m_mwstSL:='1';
END IF;
--Versandadresse ermitteln
IF Rec_Auftrag.DEBITOR=Rec_Rechnung.DEBITOR
THEN m_VersandAdr:=Rec_Auftrag.RECHADRNR;
ELSE BEGIN
SELECT NR
INTO m_VersandAdr
FROM ADRRECH
WHERE HDLNR =Rec_Rechnung.HDLNR
AND NUMMER =Rec_Rechnung.DEBITOR
AND AKTIV ='W'
AND ISDEFAULT='W'
AND ROWNUM =1;
EXCEPTION
WHEN OTHERS THEN m_VersandAdr:=0;
END;
END IF;
IF m_VersandAdr>0
THEN BEGIN
SELECT ANREDE, NAME1, NAME2, NAME3, STRASSE, HAUSNR, PLZ, ORT, ORTSTEIL, NVL(DECKBLATT,'F')
INTO m_RaAnrede, m_RaName1, m_RaName2, m_RaName3, m_RaStrasse, m_RaHausNr, m_RaPLZ, m_RaOrt, m_RaOrtTl, m_Deckblatt
FROM ADRRECH
WHERE HDLNR =Rec_Rechnung.HDLNR
AND NUMMER=Rec_Rechnung.DEBITOR
AND NR =m_VersandAdr;
IF m_Deckblatt='F'
THEN m_ReAnrede :=m_RaAnrede;
m_ReName1 :=m_RaName1;
m_ReName2 :=m_RaName2;
m_ReName3 :=m_RaName3;
m_ReName4 :=m_RaName4;
m_ReStrasse :=m_RaStrasse;
m_ReHausNr :=m_RaHausNr;
m_RePLZ :=m_RaPLZ;
m_ReOrt :=m_RaOrt;
m_ReOrtTl :=m_RaOrtTl;
END IF;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
END IF;
IF p_FUNC='14' -- freier Split
THEN BEGIN
IF NVL(Rec_Rechnung.SPLITRECHNR,0)>0
THEN SELECT VERMUMSATZ, KMUMSATZ, ERLSCHMAL, ERLSCHMAL1, ERLSCHMAL2,
VERSUMSATZPAI, VERSUMSATZCDW, VERSUMSATZTP, KRAFTUMSATZ, BETANKUMSATZ, SONSTUMSATZ+DLUMSATZ+ZUBUMSATZ, SONSTUMSATZFREI+DLUMSATZFREI+ZUBUMSATZFREI, RABATT
INTO m_SpUmsatz, m_SpKm, m_SpSchmal, m_SpSchmal1, m_SpSchmal2,
m_SpPAI, m_SpCDW, m_SpTP, m_SpKRAFT, m_SpBetank, m_SpSONST, m_SpSonstFr, m_SpRabatt
FROM RECHNUNG
WHERE HDLNR =Rec_Rechnung.HDLNR
AND RECHNR =Rec_Rechnung.SPLITRECHNR
AND RECHART=Rec_Rechnung.SPLITRECHART;
ELSE SELECT VERMUMSATZ, KMUMSATZ, ERLSCHMAL, ERLSCHMAL1, ERLSCHMAL2,
VERSUMSATZPAI, VERSUMSATZCDW, VERSUMSATZTP, KRAFTUMSATZ, BETANKUMSATZ, SONSTUMSATZ+DLUMSATZ+ZUBUMSATZ, SONSTUMSATZFREI+DLUMSATZFREI+ZUBUMSATZFREI ,RABATT
INTO m_SpUmsatz, m_SpKm, m_SpSchmal, m_SpSchmal1, m_SpSchmal2,
m_SpPAI, m_SpCDW, m_SpTP, m_SpKRAFT, m_SpBetank, m_SpSONST, m_SpSonstFr, m_SpRabatt
FROM RECHNUNG
WHERE HDLNR =Rec_Rechnung.HDLNR
AND RECHNR =Rec_Rechnung.RECHNR
AND RECHART=Rec_Rechnung.RECHART;
END IF;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
m_SpAnrede :=m_ReAnrede;
m_SpName1 :=m_ReName1;
m_SpName2 :=m_ReName2;
m_SpName3 :=m_ReName3;
m_SpStrasse :=m_ReStrasse;
m_SpHausNr :=m_ReHausNr;
m_SpStrasse2:=m_ReStrasse2;
m_SpPLZ :=m_RePLZ;
m_SpOrt :=m_ReOrt;
m_SpOrtTl :=m_ReOrtTl;
m_SpLand :=m_ReLand;
BEGIN
IF NVL(Rec_Rechnung.SPLITRECHNR,0)=0
THEN SELECT *
INTO Rec_RechAdr
FROM RECHADR
WHERE HDLNR =my_RHDLNR AND
RECHNR =Rec_Rechnung.RECHNR AND
RECHART=p_RECHART;
ELSE SELECT *
INTO Rec_RechAdr
FROM RECHADR
WHERE HDLNR =my_RHDLNR AND
RECHNR =Rec_Rechnung.SPLITRECHNR AND
RECHART=Rec_Rechnung.SPLITRECHART;
END IF;
m_SpAnrede :=Rec_RechAdr.Anrede;
m_SpName1 :=Rec_RechAdr.Name1;
m_SpName2 :=Rec_RechAdr.Name2;
m_SpName3 :=Rec_RechAdr.Name3;
m_SpStrasse :=Rec_RechAdr.Strasse;
m_SpHausNr :=Rec_RechAdr.HausNr;
m_SpStrasse2:=Rec_RechAdr.Strasse2;
m_SpPLZ :=Rec_RechAdr.PLZ;
m_SpOrt :=Rec_RechAdr.Ort;
m_SpOrtTl :=Rec_RechAdr.Ortsteil;
m_SpLand :=Rec_RechAdr.Land;
EXCEPTION
WHEN OTHERS THEN m_SpAnrede :=Rec_Auftrag.Anrede;
m_SpName1 :=Rec_Auftrag.Name1;
m_SpName2 :=Rec_Auftrag.Name2;
m_SpName3 :=Rec_Auftrag.Name3;
m_SpStrasse :=Rec_Auftrag.Strasse;
m_SphausNr :=Rec_Auftrag.HausNr;
m_SpStrasse2:=Rec_Auftrag.Strasse2;
m_SpPLZ :=Rec_Auftrag.PLZ;
m_SpOrt :=Rec_Auftrag.Ort;
m_SpOrtTl :=Rec_Auftrag.Ortsteil;
m_SpLand :=Rec_Auftrag.LAND;
END;
END IF;
IF m_MwStSL='1' OR m_MwStSL='3' OR m_MwStSL='4'
THEN m_MitMwSt:='W';
ELSE m_MitMwSt:='F';
END IF;
m_LAND:=SUBSTR(Rec_Firma.KONZERNZUGR,5,2);
EM_BACK.Get_MwSt_Aktiv(m_LAND,my_MWSTMIET,my_MWSTLANG,my_TAGELANG,
my_MWSTVERSPAI,my_MWSTVERSCDW,my_MWSTVERSTP,
my_MWSTKRAFT, my_MWSTSONST,TO_DATE(Rec_Auftrag.MENDE));
IF Rec_Rechnung.ZWIRECH='W'
THEN IF (m_LAND='01' OR m_LAND='10') AND (m_MwStSl='3') AND ((trunc(Rec_Rechnung.BENDE)-trunc(Rec_Auftrag.MBEGINN))>=my_TAGELANG)
THEN m_MitMwSt:='F';
END IF;
ELSE IF (m_LAND='01' OR m_LAND='10') AND (m_MwStSl='3') AND ((trunc(Rec_Auftrag.MENDE)-trunc(Rec_Auftrag.MBEGINN))>=my_TAGELANG)
THEN m_MitMwSt:='F';
END IF;
END IF;
BEGIN
SELECT *
INTO Rec_Fahrzeug
FROM FAHRZEUG
WHERE FAHRGESTELL=Rec_Auftrag.FAHRGESTELL AND
ZULASSUNG =Rec_Auftrag.ZULASSUNG;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
BEGIN
SELECT EINZUG, BANK, KONTO, BLZ, IBAN, BIC, SEPADATUM, SEPAMANDATSID, INGIS, INGISEMAIL, PDFRECHNUNG, PDFEMAIL, ZAHLGRP, SAMMELRG
INTO m_Einzug, m_KdBank, m_KdKonto, m_KdBlz, m_KdIBAN, m_KdBIC, m_KdSepaDatum, m_KdSepaMandat, m_INGIS, m_INGISEMAIL, m_PdfRech, m_PdfEMail, m_ZahlGrp, m_HatSammel
FROM ADRESSEN
WHERE HDLNR =my_AHDLNR
AND ART ='K'
AND NUMMER = Rec_Rechnung.Debitor;
EXCEPTION
WHEN OTHERS THEN m_Einzug:='F';
END;
IF m_PdfRechTmp IS NOT NULL
THEN m_PdfRech :=m_PdfRechTmp;
m_PdfEMail:=m_PdfEMailTmp;
END IF;
IF NVL(Rec_Rechnung.SPLITREFRECHNR,0)>0
THEN BEGIN
SELECT DEBITOR, INGISDRC
INTO m_SpDebitor, m_SpIngisDrc
FROM RECHNUNG
WHERE HDLNR=my_AHDLNR
AND RECHNR =Rec_Rechnung.SPLITREFRECHNR
AND RECHART=Rec_Rechnung.SPLITREFRECHART;
SELECT INGIS, INGISEMAIL, PDFRECHNUNG, PDFEMAIL
INTO m_SpINGIS, m_SpINGISEMAIL, m_SpPdfRech, m_SpPdfEMail
FROM ADRESSEN
WHERE HDLNR =my_AHDLNR AND
ART ='K' AND
NUMMER = m_SpDebitor;
EXCEPTION
WHEN OTHERS THEN m_Einzug:='F';
END;
END IF;
IF Rec_Rechnung.BENDE IS NULL
THEN m_BBEGINN:=Rec_Auftrag.BBEGINN;
m_BBUhr :=TO_CHAR(Rec_Auftrag.BBUHR,Loc_NLSTime);
m_BEnde :=Rec_Auftrag.BENDE;
m_BEUhr :=TO_CHAR(Rec_Auftrag.BEUHR,Loc_NLSTime);
ELSE m_BBEGINN:=TO_DATE(Rec_Rechnung.BANFANG);
m_BBUhr :=TO_CHAR(Rec_Rechnung.BANFANG,Loc_NLSTime);
m_BEnde :=TO_DATE(Rec_Rechnung.BENDE);
m_BEUhr :=TO_CHAR(Rec_Rechnung.BENDE,Loc_NLSTime);
END IF;
IF SUBSTR(TO_CHAR(m_BEnde,Loc_NLSDate),7,2)='18'
THEN m_BEnde:=Rec_Auftrag.MENDE;
m_BEUhr:=TO_CHAR(Rec_Auftrag.MEUHR,Loc_NLSTime);
END IF;
IF Rec_Auftrag.MEHRFACH IS NULL
THEN m_ISOLD:=TRUE;
ELSE m_ISOLD:=FALSE;
END IF;
IF m_IsOld
THEN AUFTRTOOLS.DoRechnen(p_BBEGINN =>m_BBEGINN,
p_BBUHR =>m_BBUHR,
p_BENDE =>m_BENDE,
p_BEUHR =>m_BEUhr,
p_MEHRFACH =>Rec_Auftrag.MEHRFACH,
p_EINHEIT1 =>Rec_Auftrag.EINHEIT1,
p_EINHEIT2 =>Rec_Auftrag.EINHEIT2,
p_FAKTOR1 =>Rec_Auftrag.FAKTOR1,
p_FAKTOR2 =>Rec_Auftrag.FAKTOR2,
p_INCLKM1 =>Rec_Auftrag.INCLKM1,
p_ANKM =>Rec_Auftrag.ANKM,
p_ABKM =>Rec_Auftrag.ABKM,
p_INCLANZKM1 =>Rec_Auftrag.INCLANZKM1,
p_INCLANZKM2 =>Rec_Auftrag.INCLANZKM2,
p_KULANZ =>Rec_Auftrag.KULANZ,
p_LANGZEIT =>Rec_Auftrag.LANGZEIT,
p_ZWIRECH =>Rec_Rechnung.ZWIRECHFIRST,
p_ABRTYP =>m_AbrTyp,
p_BERKM =>m_BerKm,
p_ANZSTD =>m_AnzStd,
p_ECHTETAGE =>m_EchteTage,
p_DAUER =>m_Dauer,
p_REST =>m_Rest,
p_FREIKM =>m_FreiKm,
p_FREIKM1 =>m_FreiKm1);
ELSE AUFTRTOOLS.DoRechnen(p_BBEGINN =>m_BBEGINN,
p_BBUHR =>m_BBUHR,
p_BENDE =>m_BENDE,
p_BEUHR =>m_BEUhr,
p_MEHRFACH =>Rec_Rechnung.MEHRFACH,
p_EINHEIT1 =>Rec_Rechnung.EINHEIT1,
p_EINHEIT2 =>Rec_Rechnung.EINHEIT2,
p_FAKTOR1 =>Rec_Rechnung.FAKTOR1,
p_FAKTOR2 =>Rec_Rechnung.FAKTOR2,
p_INCLKM1 =>Rec_Rechnung.INCLKM1,
p_ANKM =>Rec_Rechnung.VONKM,
p_ABKM =>Rec_Rechnung.BISKM,
p_INCLANZKM1 =>Rec_Rechnung.INCLANZKM1,
p_INCLANZKM2 =>Rec_Rechnung.INCLANZKM2,
p_KULANZ =>Rec_Rechnung.KULANZ,
p_LANGZEIT =>Rec_Auftrag.LANGZEIT,
p_ZWIRECH =>Rec_Rechnung.ZWIRECHFIRST,
p_ABRTYP =>m_AbrTyp,
p_BERKM =>m_BerKm,
p_ANZSTD =>m_AnzStd,
p_ECHTETAGE =>m_EchteTage,
p_DAUER =>m_Dauer,
p_REST =>m_Rest,
p_FREIKM =>m_FreiKm,
p_FREIKM1 =>m_FreiKm1);
END IF;
-- htp.p(m_EchteTage);
-- htp.p(m_AnzStd);
-- htp.p(m_Dauer);
-- htp.p(m_Rest);
-- return;
-- ggf EWP-Korrektur
/* IF Rec_Rechnung.MVART IN ('MV1','MV4') -- Zusatzbedarf aus Vermietumsatz wieder abziehen
THEN m_Rest:=m_Rest-
RECHNTOOLS.CalcZentrZub (p_HDLNR => Rec_Rechnung.HDLNR,
p_RECHART => Rec_Rechnung.RechArt,
p_RECHNR => Rec_Rechnung.RechNr,
p_ISTBETRAG=> FALSE);
IF m_Rest<0
THEN m_Dauer:=m_Dauer+m_Rest;
m_Rest:=0;
END IF;
END IF;*/
--
/* IF (Rec_Rechnung.ZWIRECH='F') AND
(Rec_Rechnung.GUTLAST='F')
THEN SELECT SUM(BERKM)
INTO m_ZwiRechKm
FROM RECHNUNG
WHERE HDLNR =p_HDLNR
AND AUFTRNR=Rec_Rechnung.AUFTRNR
AND ZWIRECH='W';
END IF;*/
-- Unfallersatz
-- IF (LENGTH(Rec_Rechnung.TARIFTYP)<4 AND SUBSTR(Rec_Rechnung.TARIFTYP,2,2)='10') OR -- alte Tarifstruktur
-- (LENGTH(Rec_Rechnung.TARIFTYP)>3 AND SUBSTR(Rec_Rechnung.TARIFTYP,2,2)='06') -- neue Tarifstruktur
-- THEN IF m_REST>0 AND m_Dauer<30
-- THEN m_Rest :=0;
-- m_Dauer:=m_Dauer+1;
-- m_EchteTage:=m_EchteTage+1;
-- END IF;
-- END IF;
-- Unfallersatz
IF Rec_Rechnung.GUTLAST='F' AND
Rec_Rechnung.ZWIRECH='F' AND
NVL(Rec_Rechnung.MITZWI,'W')='W'
THEN IF NVL(Rec_Rechnung.SPLITREFRECHNR,0)>0 OR
Rec_Auftrag.SPLITTING IS NOT NULL
THEN m_OldDeb:=Rec_Rechnung.DEBITOR;
ELSE m_OldDeb:=0;
END IF;
RECHNTOOLS.GetAltRech(my_AHDLNR, -- fja 27.2. von HDLNR auf AHDLNR
Rec_Rechnung.AUFTRNR,
m_OldDeb,
Rec_Rechnung.RECHNR,
Rec_Rechnung.RDATUM,
'W',
m_AltUmsatz,
m_AltKm,
m_AltSchmal,
m_AltSchmal1,
m_AltSchmal2,
m_AltCDW,
m_AltPAI,
m_AltTP,
m_AltKraft,
m_AltBetank,
m_AltZub,
m_AltDl,
m_AltZubFr,
m_AltDlFr,
m_AltSonst,
m_AltSonstFr,
m_AltMwSt,
m_AltVtr);
END IF;
--htp.p(m_AltUmsatz); return;
-- DoZubStr (p_HDLNR,Rec_Rechnung.AUFTRNR,m_mitmwst,Rec_Auftrag.PRIVAT,Rec_Firma.MWSTMIET,m_ZubStr);
SELECT COUNT(RECHNR)
INTO m_CntZwiRe
FROM RECHNUNG
WHERE HDLNR=Rec_rechnung.HDLNR
AND RECHNR <>Rec_rechnung.RECHNR
AND AUFTRNR=Rec_Rechnung.AUFTRNR
AND ZWIRECH='W'
AND ZWIRECHFIRST='1'; -- Hier sind schon die pauschalen MV-Zubeh�re drin
RECHNTOOLS.DoZubStr (p_HDLNR => my_AHDLNR,
p_AUFTRNR => Rec_Rechnung.AUFTRNR,
p_PAUSCHAL => 'F',
p_MITMWST => 'F',
p_PRIVAT => m_PRIVAT,
p_MWST => Rec_Rechnung.SONSTMWST,
p_LST => 'F',
p_BBEGINN => Rec_Rechnung.BANFANG,
p_BENDE => Rec_Rechnung.BENDE,
p_ZUBLST => m_ZubFlag,
p_STRING => m_ZubStr);
RECHNTOOLS.DoZubStr (p_HDLNR => my_AHDLNR,
p_AUFTRNR => Rec_Rechnung.AUFTRNR,
p_PAUSCHAL => 'F',
p_MITMWST => 'F',
p_PRIVAT => m_PRIVAT,
p_MWST => Rec_Rechnung.SONSTMWST,
p_LST => 'W',
p_BBEGINN => Rec_Rechnung.BANFANG,
p_BENDE => Rec_Rechnung.BENDE,
p_ZUBLST => m_ZubFlag,
p_STRING => m_LstStr);
IF (NVL(Rec_Rechnung.MITZUB,'W')='W')-- AND
-- (m_CntZwiRe=0)
THEN RECHNTOOLS.DoZubStr (p_HDLNR => my_AHDLNR,
p_AUFTRNR => Rec_Rechnung.AUFTRNR,
p_PAUSCHAL => 'W',
p_ZWIRECHFIRST=> NVL(Rec_Rechnung.ZWIRECHFIRST,1),
p_MITMWST => 'F',
p_PRIVAT => m_PRIVAT,
p_MWST => Rec_Rechnung.SONSTMWST,
p_LST => 'F',
p_BBEGINN => Rec_Rechnung.BANFANG,
p_BENDE => Rec_Rechnung.BENDE,
p_ZUBLST => m_ZubFlag,
p_STRING => m_ZubStrP);
RECHNTOOLS.DoZubStr (p_HDLNR => my_AHDLNR,
p_AUFTRNR => Rec_Rechnung.AUFTRNR,
p_PAUSCHAL => 'W',
p_ZWIRECHFIRST=> NVL(Rec_Rechnung.ZWIRECHFIRST,1),
p_MITMWST => 'F',
p_PRIVAT => m_PRIVAT,
p_MWST => Rec_Rechnung.SONSTMWST,
p_LST => 'W',
p_BBEGINN => Rec_Rechnung.BANFANG,
p_BENDE => Rec_Rechnung.BENDE,
p_ZUBLST => m_ZubFlag,
p_STRING => m_LstStrP);
IF m_ZubStr IS NOT NULL AND
m_ZubStrP IS NOT NULL
THEN m_ZubStr:=m_ZubStr || ', ';
END IF;
IF m_LstStr IS NOT NULL AND
m_LstStrP IS NOT NULL
THEN m_LstStr:=m_LstStr || ', ';
END IF;
m_ZubStr:=m_ZubStr || ' ' || m_ZubStrP;
m_LstStr:=m_LstStr || ' ' || m_LstStrP;
END IF;
IF m_zubflagP>m_zubflag
THEN m_zubflag:=m_zubflagP;
END IF;
RECHNTOOLS.DoReZubStr(p_HDLNR => my_AHDLNR,
p_RECHNR => Rec_Rechnung.RECHNR,
p_RECHART => Rec_Rechnung.RECHART,
p_MITMWST => 'F',
p_PRIVAT => m_PRIVAT,
p_MWST => Rec_Rechnung.SONSTMWST,
p_LST => 'F',
p_BBEGINN => Rec_Rechnung.BANFANG,
p_BENDE => Rec_Rechnung.BENDE,
p_STRING => m_ReZubStr);
RECHNTOOLS.DoReZubStr(p_HDLNR => my_AHDLNR,
p_RECHNR => Rec_Rechnung.RECHNR,
p_RECHART => Rec_Rechnung.RECHART,
p_MITMWST => 'F',
p_PRIVAT => m_PRIVAT,
p_MWST => Rec_Rechnung.SONSTMWST,
p_LST => 'W',
p_BBEGINN => Rec_Rechnung.BANFANG,
p_BENDE => Rec_Rechnung.BENDE,
p_STRING => m_ReLstStr);
/* IF (SUBSTR(Rec_Firma.KONZERNZUGR,5,2)='15')
THEN IF my_XSLORG='drcrech'
THEN my_XSLORG:='drcrech'||SUBSTR(Rec_Firma.KONZERNZUGR,5,2);
END IF;
IF my_XSLORG='drcgula'
THEN my_XSLORG:='drcgula'||SUBSTR(Rec_Firma.KONZERNZUGR,5,2);
END IF;
END IF;*/
IF Rec_Rechnung.MVART IN ('MV1','MV4') AND
my_XSLORG='drcrech'
THEN my_XSLORG:=my_XSLORG||'_MV1';
END IF;
IF Rec_Firma.FORMTYP IS NOT NULL
THEN IF my_XSLORG='drcrech'
THEN IF Rec_Rechnung.ZWIRECH='W'
THEN my_XSLORG:='drcrech'||Rec_Firma.FORMTYP;
ELSE my_XSLORG:='drcrech'||Rec_Firma.FORMTYP;
END IF;
END IF;
IF my_XSLORG='drcgula'
THEN IF Rec_Rechnung.ZWIRECH='W'
THEN my_XSLORG:='drcrech'||Rec_Firma.FORMTYP;
my_XSL:='drcrech';
ELSE my_XSLORG:='drcgula'||Rec_Firma.FORMTYP;
END IF;
END IF;
END IF;
SELECT COUNT(RECHNR)
INTO my_BlockCnt
FROM RECHZUB
WHERE HDLNR =Rec_Rechnung.HDLNR
AND RECHNR=Rec_Rechnung.RECHNR;
IF p_USERNR='*'
THEN Xtool.XMLHeader('Rechnungen',my_XSLORG,my_HDLNR,'0','ShowRech');
ELSE Xtool.XMLHeader('Rechnungen',my_XSLORG,my_HDLNR,p_USERNR,'ShowRech');
END IF;
Xtool.OutFeldBez(my_HDLNR,my_XSL);
Xtool.XMLStart('Rechnung');
Xtool.htx('USERNR' ,p_USERNR);
Xtool.htx('HATSONDER' ,TO_CHAR(m_HatSonder));
Xtool.htx('HATGRUNDBETRAG' ,Rec_FirmaP.HATGRUNDBETRAG);
Xtool.htx('HATGULAZUB' ,Rec_FirmaP.HATGULAZUB);
Xtool.htx('HATFREIERECH' ,Rec_FirmaP.HATFREIERECH);
Xtool.htx('HATZBDALL' ,Rec_FirmaP.HATZBDALL);
Xtool.htx('HATTRFALL' ,Rec_FirmaP.HATTRFALL);
Xtool.htx('HATVRMHIDDEN' ,Rec_FirmaP.HATVRMHIDDEN);
Xtool.htx('HATKEINREPUEBNM',Rec_FirmaP.HATKEINREPUEBNM);
Xtool.htx('HATKEINBERDATUM',Rec_FirmaP.HATKEINBERDATUM);
Xtool.htx('HATERWKZMEMO' ,Rec_FirmaP.HATERWKZMEMO);
Xtool.htx('HATSBERW' ,Rec_FirmaP.HATSBERW);
Xtool.htx('ABSENDER' ,Rec_Firma.ABSENDER);
Xtool.htx('ABSHDLNR' ,TO_CHAR(Rec_Firma.VZ,'000',Loc_NLSWert)||TO_CHAR(Rec_Firma.HAENDLER,'900000',Loc_NLSWert));
Xtool.htx('ABWEXTBETRNR' ,Rec_Firma.ABWEXTBETRNR);
--Xtool.htx('LKC' ,'12');
Xtool.htx('LKC' ,SUBSTR(Rec_Firma.KONZERNZUGR,5,2));
Xtool.htx('LKKC' ,SUBSTR(Rec_Firma.KONZERNZUGR,5,4));
Xtool.htx('VAACOMP' ,Rec_Firma.FILIALE);
Xtool.htx('FINAME1' ,Rec_Firma.NAME_1);
Xtool.htx('FINAME2' ,Rec_Firma.NAME_2);
Xtool.htx('FINAME3' ,Rec_Firma.NAME_3);
Xtool.htx('FISTRASSE' ,Rec_Firma.STRASSE || ' ' || Rec_Firma.HAUSNR);
Xtool.htx('FISTRASSE2' ,Rec_Firma.STRASSE2);
Xtool.htx('FILKZ' ,Rec_Firma.LKZ);
Xtool.htx('FIPLZ' ,Rec_Firma.PLZ);
Xtool.htx('FIORT' ,Rec_Firma.ORT);
Xtool.htx('FITELEFON' ,Rec_Firma.TELEFON);
Xtool.htx('FIFAX' ,Rec_Firma.FAX);
Xtool.htx('FIEMAIL' ,Rec_Firma.EMAIL);
Xtool.htx('FIWEBADR' ,Rec_Firma.WEBADRESSE);
Xtool.htx('FBANK1' ,Rec_Firma.BANK);
Xtool.htx('FBLZ1' ,Rec_Firma.BLZ);
Xtool.htx('FKONTO1' ,Rec_Firma.KONTO);
Xtool.htx('FBIC1' ,Rec_Firma.BIC);
Xtool.htx('FIBAN1' ,Rec_Firma.IBAN);
Xtool.htx('FBANK2' ,Rec_Firma.BANK2);
Xtool.htx('FBLZ2' ,Rec_Firma.BLZ2);
Xtool.htx('FKONTO2' ,Rec_Firma.KONTO2);
Xtool.htx('FBIC2' ,Rec_Firma.BIC2);
Xtool.htx('FIBAN2' ,Rec_Firma.IBAN2);
Xtool.htx('FEGSTEUER' ,Rec_Firma.EGSTEUER);
Xtool.htx('FSTEUERNR' ,Rec_Firma.STEUERNR);
Xtool.htx('FSEPAGLID' ,Rec_Firma.SEPAGLID);
Xtool.htx('CASHTYP' ,NVL(Rec_Firma.CASHTYP,0));
IF Rec_Auftrag.AUFTRNREXT IS NULL -- dann keinen Lieferschein anbieten
THEN Xtool.htx('RECHFLAG' ,'0');
ELSE Xtool.htx('RECHFLAG' ,TO_CHAR(Rec_Firma.RECHFLAG));
END IF;
Xtool.htx('AUFTEXT' ,Rec_Rechnung.AUFTRNREXT);
Xtool.htx('ROBKENNZ' ,Rec_Auftrag.ROBKENNZ);
Xtool.htx('HDLNR' ,my_HDLNR);
Xtool.htx('FILNR' ,p_FILNR);
Xtool.htx('AHDLNR' ,Rec_Auftrag.HDLNR);
Xtool.htx('AFILNR' ,Rec_Auftrag.FILNR);
Xtool.htx('USERNAME' ,m_Usrname);
Xtool.htx('ERFUSER' ,m_ErfUsrName);
Xtool.htx('MVART' ,Rec_Rechnung.MVART);
Xtool.htx('KENNUNG' ,Rec_Auftrag.KENNUNG);
Xtool.htx('AUFTRNR' ,Rec_Rechnung.AUFTRNR);
Xtool.htx('UNFALLERSATZ',Rec_Auftrag.UNFALLERSATZ);
Xtool.htx('RUNFALLERSATZ',Rec_Rechnung.UNFALLERSATZ);
Xtool.htx('FILRECHNUNG',Rec_Auftrag.FILRECHNUNG);
Xtool.htx('FILPARTNER' ,m_partnermc);
Xtool.htx('KENNZ' ,Rec_Auftrag.KENNZ);
Xtool.htx('FZBEZ' ,Rec_Fahrzeug.BEZEICHNUNG);
Xtool.htx('CO2' ,Rec_Fahrzeug.CO2);
Xtool.htx('ENERGIE' ,Rec_Fahrzeug.ENERGIELABEL);
Xtool.htx('STEUERWERT' ,TO_CHAR(Rec_Fahrzeug.VERSWERT,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('TYP' ,Rec_Auftrag.PRIVAT);
Xtool.htx('ANREDE' ,Rec_Auftrag.ANREDE);
Xtool.htx('NAME1' ,Rec_Auftrag.NAME1);
Xtool.htx('NAME2' ,Rec_Auftrag.NAME2);
Xtool.htx('NAME3' ,Rec_Auftrag.NAME3);
Xtool.htx('NAME4' ,Rec_Auftrag.NAME4);
Xtool.htx('STRASSE' ,Rec_Auftrag.STRASSE);
Xtool.htx('HAUSNR' ,Rec_Auftrag.HAUSNR);
Xtool.htx('STRASSE2' ,Rec_Auftrag.STRASSE2);
Xtool.htx('PLZ' ,Rec_Auftrag.PLZ);
Xtool.htx('ORT' ,Rec_Auftrag.ORT);
Xtool.htx('ORTTL' ,Rec_Auftrag.ORTSTEIL);
Xtool.htx('LAND' ,Rec_Auftrag.LAND);
Xtool.htx('ORTISO' ,UPPER(Rec_Auftrag.ORT||' '||Rec_Auftrag.ORTSTEIL));
IF Rec_Auftrag.DEBITOR=0
THEN Xtool.htx('AUFDEBITOR' ,'');
ELSE Xtool.htx('AUFDEBITOR' ,Rec_Auftrag.DEBITOR);
END IF;
Xtool.htx('AUFTRNREXT' ,Rec_Auftrag.AUFTRNREXT);
Xtool.htx('SPLITTING' ,Rec_Auftrag.SPLITTING);
Xtool.htx('SPLITDEBITOR',Rec_Auftrag.SPLITDEBITOR);
Xtool.htx('SCHADEN1' ,Rec_Auftrag.SCHADEN1);
Xtool.htx('SCHADEN2' ,Rec_Auftrag.SCHADEN2);
HEWA_WRAP.ShowVWLeasing(Rec_Auftrag.HDLNR,Rec_Auftrag.AUFTRNR,Rec_Auftrag.EXTGUID,0.0,0.0,0.0);
Xtool.htx('LKENNZ' ,Rec_Auftrag.LEASINGKENNZ);
Xtool.htx('CARDNR' ,Rec_Auftrag.CARDNR);
Xtool.htx('CARDVIN' ,Rec_Auftrag.CARDVIN);
Xtool.htx('CARDSTART' ,TO_CHAR(Rec_Auftrag.CARDSTART,Loc_NLSDate));
Xtool.htx('CARDENDE' ,TO_CHAR(Rec_Auftrag.CARDENDE,loc_NLSDate));
Xtool.htx('RECHNR' ,Rec_Rechnung.RECHNR);
-- IF p_FUNC IN ('7','9') AND
-- (NVL(Rec_Rechnung.REFRECHNR,0)>9)
-- THEN Xtool.htx('RECHNR' ,Rec_Rechnung.REFRECHNR);
-- ELSE Xtool.htx('RECHNR' ,Rec_Rechnung.RECHNR);
-- END IF;
Xtool.htx('RECHART' ,Rec_Rechnung.RECHART);
Xtool.htx('SPRECHART' ,Rec_Rechnung.SPLITREFRECHART);
Xtool.htx('ABWRECH' ,Rec_Rechnung.ABWRECH);
Xtool.htx('DEBITOR' ,Rec_Rechnung.DEBITOR);
Xtool.htx('MITMWST' ,m_mitmwst);
Xtool.htx('RETYP' ,m_Privat);
Xtool.htx('REANREDE' ,m_ReAnrede);
Xtool.htx('RENAME1' ,m_ReName1);
Xtool.htx('RENAME2' ,m_ReName2);
Xtool.htx('RENAME3' ,m_ReName3);
Xtool.htx('RENAME4' ,m_ReName4);
Xtool.htx('REABTEILUNG',m_ReAbteilung);
Xtool.htx('RESTRASSE' ,m_ReStrasse);
Xtool.htx('REHAUSNR' ,m_ReHausNr);
Xtool.htx('RESTRASSE2' ,m_ReStrasse2);
Xtool.htx('REPLZ' ,m_RePLZ);
Xtool.htx('REORT' ,m_ReOrt);
Xtool.htx('REORTTL' ,m_ReOrtTl);
Xtool.htx('RELAND' ,m_ReLand);
Xtool.htx('REORTISO' ,UPPER(m_ReOrt||' '||m_ReOrtTl));
Xtool.htx('RSTEUERNR' ,m_ReSteuerNr);
Xtool.htx('REGSTEUER' ,m_ReEgSteuer);
Xtool.htx('DEBSTEUERNR',m_ReSteuerNr);
Xtool.htx('DEBEGSTEUER',m_ReEgSteuer);
Xtool.htx('RAANREDE' ,m_RaAnrede);
Xtool.htx('RANAME1' ,m_RaName1);
Xtool.htx('RANAME2' ,m_RaName2);
Xtool.htx('RANAME3' ,m_RaName3);
Xtool.htx('RANAME4' ,m_RaName4);
Xtool.htx('RASTRASSE' ,m_RaStrasse);
Xtool.htx('RAHAUSNR' ,m_RaHausNr);
Xtool.htx('RASTRASSE2' ,m_RaStrasse2);
Xtool.htx('RAPLZ' ,m_RaPLZ);
Xtool.htx('RAORT' ,m_RaOrt);
Xtool.htx('RAORTTL' ,m_RaOrtTl);
Xtool.htx('RALAND' ,m_RaLand);
Xtool.htx('RAORTISO' ,UPPER(m_RaOrt||' '||m_RaOrtTl));
IF Rec_Auftrag.NAME1 <>m_ReName1 OR
Rec_Auftrag.NAME2 <>m_ReName2 OR
Rec_Auftrag.NAME3 <>m_ReName3 OR
Rec_Auftrag.NAME4 <>m_ReName4 OR
Rec_Auftrag.STRASSE <>m_ReStrasse OR
Rec_Auftrag.HAUSNR <>m_ReHausNr OR
Rec_Auftrag.STRASSE2<>m_ReStrasse2 OR
Rec_Auftrag.PLZ <>m_RePLZ OR
Rec_Auftrag.ORT <>m_ReOrt OR
Rec_Auftrag.ORTSTEIL<>m_ReOrtTl
THEN Xtool.htx('REDIFF','W');
IF Rec_Rechnung.GUTLAST='F'
THEN my_BlockCnt:=my_BlockCnt+9;
END IF;
ELSE Xtool.htx('REDIFF','F');
END IF;
IF NVL(Rec_Rechnung.SPLITREFRECHNR,0)>0 OR
NVL(Rec_Rechnung.SPLITRECHNR,0)>0
THEN Xtool.htx('SPLITMANUELL','W');
ELSE Xtool.htx('SPLITMANUELL','F');
END IF;
Xtool.htx('SPLITREFRECHNR',TO_CHAR(NVL(Rec_Rechnung.SPLITREFRECHNR,0)));
Xtool.htx('SPLITREFRECHART',Rec_Rechnung.SPLITREFRECHART);
IF p_FUNC='14'
THEN IF NVL(Rec_Rechnung.SPLITDEBITOR,0)=0
THEN Xtool.htx('SPLITDEBITOR',Rec_Rechnung.DEBITOR);
ELSE Xtool.htx('SPLITDEBITOR',Rec_Rechnung.SPLITDEBITOR);
END IF;
IF NVL(Rec_Rechnung.SPLITRECHNR,0)=0
THEN Xtool.htx('SPLITURRG' ,Rec_Rechnung.RECHNR);
Xtool.htx('SPLITURART' ,Rec_Rechnung.RECHART);
ELSE Xtool.htx('SPLITURRG' ,Rec_Rechnung.SPLITRECHNR);
Xtool.htx('SPLITURART' ,Rec_Rechnung.SPLITRECHART);
END IF;
Xtool.htx('SPANREDE' ,m_SpAnrede);
Xtool.htx('SPNAME1' ,m_SpName1);
Xtool.htx('SPNAME2' ,m_SpName2);
Xtool.htx('SPNAME3' ,m_SpName3);
Xtool.htx('SPSTRASSE' ,m_SpStrasse);
Xtool.htx('SPHAUSNR' ,m_SpHausNr);
Xtool.htx('SPSTRASSE2' ,m_SpStrasse2);
Xtool.htx('SPPLZ' ,m_SpPLZ);
Xtool.htx('SPORT' ,m_SpOrt);
Xtool.htx('SPORTTL' ,m_SpOrtTl);
Xtool.htx('SPLAND' ,m_SpLand);
Xtool.htx('SPSUMME1' ,TO_CHAR(m_SpUmsatz,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('SPKMSUMME' ,TO_CHAR(m_SpKm,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('SPRBSUMME' ,TO_CHAR(m_SpSchmal,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('SPRBSUMME1' ,TO_CHAR(m_SpSchmal1,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('SPRBSUMME2' ,TO_CHAR(m_SpSchmal2,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('SPVRSSUMME1',TO_CHAR(m_SpCDW,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('SPVRSSUMME2',TO_CHAR(m_SpPAI,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('SPVRSSUMME3',TO_CHAR(m_SpTp,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('SPKRSUMME' ,TO_CHAR(m_SpKraft,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('SPBTSUMME' ,TO_CHAR(m_SpBetank,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('SPSOSUMME' ,TO_CHAR(m_SpSonst,Loc_NLSBetrT,Loc_NLSWert));
END IF;
IF (p_FUNC IN ('7','9') and Rec_Rechnung.RECHNR<0) OR
(Rec_Rechnung.GUTLAST='W') OR
(p_FUNC='14') OR
(Rec_Rechnung.AUFTRNR IS NULL)
THEN --IF p_FUNC='7'
-- THEN m_Op:=-1;
--END IF;
Xtool.htx('MIETE' ,TO_CHAR(Rec_Rechnung.VERMUMSATZ * m_Op,Loc_NLSBetr,Loc_NLSWert));
Xtool.htx('KM' ,TO_CHAR(Rec_Rechnung.KMUMSATZ * m_Op,Loc_NLSBetr,Loc_NLSWert));
Xtool.htx('ERLSCHMAL' ,TO_CHAR(Rec_Rechnung.ERLSCHMAL * m_Op,Loc_NLSBetr,Loc_NLSWert));
Xtool.htx('RBSUMME' ,TO_CHAR(Rec_Rechnung.ERLSCHMAL * m_Op,Loc_NLSBetr,Loc_NLSWert));
Xtool.htx('CDWS' ,TO_CHAR(Rec_Rechnung.VERSUMSATZCDW * m_Op,Loc_NLSBetr,Loc_NLSWert));
Xtool.htx('PAIS' ,TO_CHAR(Rec_Rechnung.VERSUMSATZPAI * m_Op,Loc_NLSBetr,Loc_NLSWert));
Xtool.htx('TRAPO' ,TO_CHAR(Rec_Rechnung.VERSUMSATZTP * m_Op,Loc_NLSBetr,Loc_NLSWert));
Xtool.htx('KRAFT' ,TO_CHAR(Rec_Rechnung.KRAFTUMSATZ * m_Op,Loc_NLSBetr,Loc_NLSWert));
Xtool.htx('BETANK' ,TO_CHAR(Rec_Rechnung.BETANKUMSATZ * m_Op,Loc_NLSBetr,Loc_NLSWert));
Xtool.htx('LITER' ,TO_CHAR(Rec_Rechnung.LITER,'999990D99',Loc_NLSWert));
Xtool.htx('LITERABS' ,TO_CHAR(ABS(Rec_Rechnung.LITER),'999990D99',Loc_NLSWert));
IF Rec_Rechnung.ERLSCHMAL=0
THEN Xtool.htx('RBPRINT','0');
ELSE Xtool.htx('RBPRINT','1');
END IF;
END IF;
IF Rec_Rechnung.ERLSCHMAL=0.0
THEN Xtool.htx('ERLSCHMALAUS' ,'');
ELSE Xtool.htx('ERLSCHMALAUS' ,TO_CHAR(Rec_Rechnung.ERLSCHMAL * m_Op * -1.0,Loc_NLSBetr,Loc_NLSWert));
END IF;
Xtool.htx('TELEFON' ,Rec_Auftrag.TELEFON);
Xtool.htx('FAHRGESTELL',Rec_Auftrag.FAHRGESTELL);
Xtool.htx('KENNZ' ,Rec_Auftrag.KENNZ);
Xtool.htx('ZULASSUNG' ,TO_CHAR(Rec_Auftrag.ZULASSUNG,Loc_NLSDate));
Xtool.htx('FZBEZ' ,Rec_Fahrzeug.BEZEICHNUNG);
Xtool.htx('ABKM' ,TO_CHAR(Rec_Auftrag.ABKM,'999G999',Loc_NLSWert));
Xtool.htx('ANKM' ,TO_CHAR(Rec_Auftrag.ANKM,'999G999',Loc_NLSWert));
Xtool.htx('DIFFKM' ,TO_CHAR(Rec_Auftrag.ANKM - Rec_Auftrag.ABKM,'999G999',Loc_NLSWert));
IF Rec_Rechnung.VONKM IS NULL
THEN Xtool.htx('RABKM' ,TO_CHAR(Rec_Auftrag.ABKM,'999G999',Loc_NLSWert));
Xtool.htx('RANKM' ,TO_CHAR(Rec_Auftrag.ANKM,'999G999',Loc_NLSWert));
Xtool.htx('RDIFFKM' ,TO_CHAR(Rec_Auftrag.ANKM - Rec_Auftrag.ABKM,'999G999',Loc_NLSWert));
ELSE Xtool.htx('RABKM' ,TO_CHAR(Rec_Rechnung.VONKM,'999G999',Loc_NLSWert));
Xtool.htx('RANKM' ,TO_CHAR(Rec_Rechnung.BISKM,'999G999',Loc_NLSWert));
Xtool.htx('RDIFFKM' ,TO_CHAR(Rec_Rechnung.BISKM - Rec_Rechnung.VONKM,'999G999',Loc_NLSWert));
END IF;
Xtool.htx('FREIEKM' ,m_FreiKm);
Xtool.htx('FREIEKM1' ,m_FreiKm1);
Xtool.htx('INCLANZKM1' ,TO_CHAR(Rec_Rechnung.INCLANZKM1,'999999',Loc_NLSWert));
Xtool.htx('INCLANZKM2' ,TO_CHAR(Rec_Rechnung.INCLANZKM2,'999999',Loc_NLSWert));
Xtool.htx('MBEGINN' ,TO_CHAR(Rec_Auftrag.MBEGINN,Loc_NLSDate));
Xtool.htx('MBUHR' ,TO_CHAR(Rec_Auftrag.MBUHR,Loc_NLSTime));
Xtool.htx('BBEGINN' ,TO_CHAR(Rec_Rechnung.BANFANG,Loc_NLSDate));
Xtool.htx('BBUHR' ,TO_CHAR(Rec_Rechnung.BANFANG,Loc_NLSTime));
Xtool.htx('MENDE' ,TO_CHAR(Rec_Auftrag.MENDE,Loc_NLSDate));
Xtool.htx('MEUHR' ,TO_CHAR(Rec_Auftrag.MEUHR,Loc_NLSTime));
Xtool.htx('MERFDATUM' ,TO_CHAR(Rec_Auftrag.ERFDATUM,Loc_NLSDate));
IF Rec_Rechnung.BENDE IS NULL
THEN Xtool.htx('BENDE' ,TO_CHAR(Rec_Auftrag.BENDE,Loc_NLSDate));
Xtool.htx('BEUHR' ,TO_CHAR(Rec_Auftrag.BEUHR,Loc_NLSTime));
ELSE Xtool.htx('BENDE' ,TO_CHAR(Rec_Rechnung.BENDE,Loc_NLSDate));
Xtool.htx('BEUHR' ,TO_CHAR(Rec_Rechnung.BENDE,Loc_NLSTime));
END IF;
Xtool.htx('VERMITTLER' ,TO_CHAR(Rec_Rechnung.VERMITTLER));
Xtool.htx('VERMNAME' ,m_VermName1 || ' ' || m_VermName2);
Xtool.htx('TARIFTYP' ,Rec_Rechnung.TARIFTYP);
Xtool.htx('UNFALLERSATZ',Rec_Auftrag.UNFALLERSATZ);
Xtool.htx('RUNFALLERSATZ',Rec_RECHNUNG.UNFALLERSATZ);
IF Rec_Rechnung.TARIFBEZ IS NULL -- noch alt abgerechnet
THEN Xtool.htx('BERECHGRP' ,Rec_Auftrag.BERECHGRP);
Xtool.htx('TARIFBEZ' ,Rec_Auftrag.TARIFBEZ);
ELSE Xtool.htx('BERECHGRP' ,SUBSTR(Rec_Rechnung.TARIFTYP,7,1));
Xtool.htx('TARIFBEZ' ,Rec_Rechnung.TARIFBEZ);
END IF;
Xtool.htx('FZGRPBEZ' ,Rec_Auftrag.FZGRPBEZ);
IF LENGTH(Rec_Rechnung.TARIFTYP)=3
THEN IF SUBSTR(Rec_Rechnung.TARIFTYP,2,2)='10'
THEN Xtool.htx('ISUNFALL','1');
ELSE Xtool.htx('ISUNFALL','0');
END IF;
Xtool.htx('ISMOBI','0');
ELSE IF SUBSTR(Rec_Rechnung.TARIFTYP,2,2)='06'
THEN Xtool.htx('ISUNFALL','1');
ELSE Xtool.htx('ISUNFALL','0');
END IF;
IF (SUBSTR(Rec_Rechnung.TARIFTYP,2,2)='04') OR
(SUBSTR(Rec_Rechnung.TARIFTYP,2,2)='05')
THEN Xtool.htx('ISMOBI','1');
ELSE Xtool.htx('ISMOBI','0');
END IF;
END IF;
Xtool.htx('CDW' ,Rec_Auftrag.CDW);
Xtool.htx('PAI' ,Rec_Auftrag.PAI);
Xtool.htx('SB' ,TO_CHAR(Rec_Auftrag.SELBSTBEHALT));
Xtool.htx('SBTK' ,TO_CHAR(Rec_Auftrag.SELBSTBEHALTTK));
-- Xtool.htx('ZAHLUNGSART',Rec_Rechnung.ZAHLWEG);
IF SUBSTR(Rec_Rechnung.ZAHLWEG,1,1)>'9'
THEN Xtool.htx('ZAHLWEG' ,'0');
ELSE Xtool.htx('ZAHLWEG' ,Rec_Rechnung.ZAHLWEG);
END IF;
IF SUBSTR(Rec_Auftrag.TARIFTYP,2,2)='10'
THEN Xtool.htx('UNFERSATZ' ,'J');
Xtool.htx('VORSTEUER' ,m_Vorsteuer);
ELSE Xtool.htx('UNFERSATZ' ,'N');
Xtool.htx('VORSTEUER' ,m_Vorsteuer);
END IF;
/* IF SUBSTR(Rec_Auftrag.TARIFTYP,2,2)='10
THEN Xtool.htx('UNFERSATZ' ,'J');
Xtool.htx('VORSTEUER' ,m_Vorsteuer);
ELSE Xtool.htx('UNFERSATZ' ,'N');
Xtool.htx('VORSTEUER' ,'N');
END IF;
*/
IF (SUBSTR(Rec_Rechnung.ZAHLWEG,1,1)='0') OR
(SUBSTR(Rec_Rechnung.ZAHLWEG,1,1)='1') OR
(SUBSTR(Rec_Rechnung.ZAHLWEG,1,1)='2')
THEN
Xtool.htx('ZAHLZIEL' ,Rec_Firma.STDBARTEXT);
ELSE
IF (SUBSTR(Rec_Rechnung.ZAHLWEG,1,1)='4')
THEN Xtool.htx('ZAHLZIEL' ,'');
ELSE IF NVL(Rec_Rechnung.ZAHLTAG,0)>0
THEN Xtool.htx('ZAHLZIEL' ,TO_CHAR(Rec_Rechnung.RDATUM + NVL(Rec_Rechnung.ZAHLTAG,0),Loc_NLSDate));
ELSE Xtool.htx('ZAHLZIEL' ,Rec_Firma.SOFORTTEXT);
END IF;
END IF;
END IF;
Xtool.htx('ZAHLZIELSEPA',TO_CHAR(Rec_Rechnung.RDATUM + NVL(Rec_Rechnung.ZAHLTAG,0),Loc_NLSDate));
IF Rec_Rechnung.RABATT IS NULL
THEN IF Rec_Auftrag.RABATT IS NULL
THEN Xtool.htx('RABATT' ,'0');
ELSE Xtool.htx('RABATT' ,TO_CHAR(Rec_Auftrag.RABATT,'990',Loc_NLSWert));
END IF;
ELSE Xtool.htx('RABATT' ,TO_CHAR(Rec_Rechnung.RABATT,'990',Loc_NLSWert));
END IF;
Xtool.htx('RABATTZL' ,Rec_Rechnung.RABATTZL);
Xtool.htx('AUTHCODE' ,Rec_Auftrag.AUTHCODE);
Xtool.htx('REAUTHCODE' ,Rec_Rechnung.AUTHCODE);
Xtool.htx('BEMERKUNG11',Rec_Auftrag.BEMERKUNG11);
Xtool.htx('BEMERKUNG12',Rec_Auftrag.BEMERKUNG12);
Xtool.htx('BEMERKUNG13',Rec_Auftrag.BEMERKUNG13);
Xtool.htx('BEMERKUNG14',Rec_Auftrag.BEMERKUNG14);
Xtool.htx('BEMERKUNG15',Rec_Auftrag.BEMERKUNG15);
Xtool.htx('BEMERKUNG16',Rec_Auftrag.BEMERKUNG16);
Xtool.htx('BEMERKUNG21',Rec_Rechnung.BEMERKUNG1);
Xtool.htx('BEMERKUNG22',Rec_Rechnung.BEMERKUNG2);
Xtool.htx('BEMERKUNG23',Rec_Rechnung.BEMERKUNG3);
Xtool.htx('BEMERKUNG24',Rec_Rechnung.BEMERKUNG4);
Xtool.htx('BEMERKUNG25',Rec_Rechnung.BEMERKUNG5);
Xtool.htx('BEMERKUNG26',Rec_Rechnung.BEMERKUNG6);
Xtool.htx('MANBEM1' ,Rec_Rechnung.BEMERKUNG1);
Xtool.htx('MANBEM2' ,Rec_Rechnung.BEMERKUNG2);
Xtool.htx('MANBEM3' ,Rec_Rechnung.BEMERKUNG3);
Xtool.htx('MANBEM4' ,Rec_Rechnung.BEMERKUNG4);
Xtool.htx('MANBEM5' ,Rec_Rechnung.BEMERKUNG5);
Xtool.htx('MANBEM6' ,Rec_Rechnung.BEMERKUNG6);
Xtool.htx('RECHMEMO' ,Rec_Rechnung.RECHMEMO);
m_MemoText:=Rec_Rechnung.RECHMEMO;
WHILE LENGTH(m_MemoText)>0 LOOP
Xtool.ExtractLine(m_MemoText,m_FussTeil,m_MemoText);
IF LENGTH(m_FussTeil)>0
THEN Xtool.XMLStart('MemoText');
Xtool.htx('MEMOZEILE',m_FussTeil,false);
Xtool.XMLEnd('MemoText');
END IF;
END LOOP;
IF Rec_Auftrag.DMSSOURCE='F2'
THEN Xtool.htx('MUTEXT',em_back.get_parameter(p_PARANAME => 'MU-TEXT',
p_PARAGRUPPE => 'PROG-PARAMETER',
p_SQLERRM => m_Error));
END IF;
IF Rec_Rechnung.GUTLAST='W' AND
Rec_Rechnung.VERMUMSATZ=0.0 AND
Rec_Rechnung.KMUMSATZ=0.0 AND
Rec_Rechnung.ERLSCHMAL=0.0 AND
Rec_Rechnung.VERSUMSATZPAI=0.0 AND
Rec_Rechnung.VERSUMSATZCDW=0.0 AND
Rec_Rechnung.VERSUMSATZTP=0.0 AND
-- Rec_Rechnung.SONSTUMSATZ=0.0 AND
-- Rec_Rechnung.SONSTUMSATZFREI=0.0 AND
Rec_Rechnung.KRAFTUMSATZ=0.0 AND
Rec_Rechnung.BETANKUMSATZ=0.0 AND
NVL(Rec_Rechnung.LITER,0)=0 AND
NVL(Rec_Rechnung.AUFTRNR,0)=0 AND
Rec_FirmaP.HATFREIERECH='W'
THEN Xtool.htx('ISTFREIERECH','W');
ELSE Xtool.htx('ISTFREIERECH','F');
END IF;
Xtool.htx('FZGZUBNR' ,Rec_Firma.FZGVKZUBEHOER);
Xtool.htx('ZUBEHOER' ,TRIM(m_zubstr));
Xtool.htx('REZUBEHOER' ,TRIM(m_rezubstr));
Xtool.htx('ZUBEHOERL' ,TRIM(m_lststr));
Xtool.htx('REZUBEHOERL',TRIM(m_relststr));
Xtool.htx('ZUBFLAG' ,TO_CHAR(m_zubflag));
IF (p_FUNC IN ('7','9') AND Rec_Rechnung.RECHNR>0)
THEN Xtool.htx('SONST' ,'');
Xtool.htx('SONSTFR' ,'');
Xtool.htx('AUSLAGENTEXT','');
ELSE IF NVL(Rec_Rechnung.SONSTUMSATZFREI,0)<>0
THEN Xtool.htx('SONST' ,TO_CHAR(Rec_Rechnung.SONSTUMSATZFREI*m_OP,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('SONSTFR' ,'');
Xtool.htx('MWSTFREI' ,'W');
ELSE Xtool.htx('SONST' ,TO_CHAR(Rec_Rechnung.SONSTUMSATZ*m_OP,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('SONSTFR' ,TO_CHAR(Rec_Rechnung.SONSTUMSATZFREI*m_OP,Loc_NLSBetrT,Loc_NLSWert));
END IF;
Xtool.htx('AUSLAGENTEXT',Rec_Rechnung.AUSLAGENTEXT);
END IF;
Xtool.htx('SONSTMV' ,TO_CHAR(Rec_Auftrag.SONSTUMSATZ,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('BETANKMV' ,TO_CHAR(Rec_Auftrag.BETANKUMSATZ,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('KRAFTMV' ,TO_CHAR(Rec_Auftrag.KRAFTUMSATZ,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('REFRECHNR' ,Rec_Rechnung.REFRECHNR);
Xtool.htx('REFRECHART' ,Rec_Rechnung.REFRECHART);
Xtool.htx('RECHTYP' ,Rec_Rechnung.GUTLAST);
Xtool.htx('RECHTYP2' ,Rec_Rechnung.RECHTYP);
Xtool.htx('RECHZWI' ,Rec_Rechnung.ZWIRECH);
Xtool.htx('MWSTSL' ,m_MwStSL);
Xtool.htx('KST' ,TO_CHAR(Rec_Rechnung.KSTSTELLE,'999999',Loc_NLSWert));
Xtool.htx('RDATUM' ,TO_CHAR(Rec_Rechnung.RDATUM,Loc_NLSDate));
IF Rec_Rechnung.TRFMANUELL='W'
THEN IF SUBSTR(Rec_Auftrag.DMSSOURCE,1,1)='O' AND
SUBSTR(my_XSL,1,3)='drc'
THEN Xtool.htx('TRFMANU' ,'F');
ELSE Xtool.htx('TRFMANU' ,Rec_Rechnung.TRFMANUELL);
END IF;
ELSE Xtool.htx('TRFMANU' ,'F');
END IF;
Xtool.htx('ABRECH' ,m_AbrTyp || TO_CHAR(m_AnzStd));
Xtool.htx('ANZ1' ,TO_CHAR(m_Dauer));
IF Rec_Rechnung.GRUNDBETRAG=0.0
THEN Xtool.htx('GRUNDBETRAG','');
ELSE Xtool.htx('GRUNDBETRAG',TO_CHAR(Rec_Rechnung.GRUNDBETRAG,Loc_NLSBetrT,Loc_NLSWert));
END IF;
Xtool.htx('PREIS1',TO_CHAR(Rec_Rechnung.PREIS1,Loc_NLSBetrT,Loc_NLSWert));
IF NVL(Rec_Auftrag.SPLITDEBITOR,0)>0
THEN Xtool.htx('SUMME1A','');
ELSE Xtool.htx('SUMME1A',TO_CHAR(Rec_Rechnung.PREIS1 * m_Dauer,Loc_NLSBetrT,Loc_NLSWert));
END IF;
IF Rec_Rechnung.VERMUMSATZ<0
THEN Xtool.htx('VERMVZ','-');
ELSE Xtool.htx('VERMVZ','');
END IF; Xtool.htx('EINHEIT1' ,TO_CHAR(Rec_Rechnung.EINHEIT1));
Xtool.htx('FAKTOR1' ,TO_CHAR(Rec_Rechnung.FAKTOR1));
Xtool.htx('ANZ2' ,TO_CHAR(m_Rest));
Xtool.htx('PREIS2',TO_CHAR(Rec_Rechnung.PREIS2,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('EINHEIT2' ,TO_CHAR(Rec_Rechnung.EINHEIT2));
IF NVL(Rec_Auftrag.SPLITDEBITOR,0)>0
THEN Xtool.htx('SUMME2A',TO_CHAR(Rec_Rechnung.VERMUMSATZ+m_AltUmsatz,Loc_NLSBetrT,Loc_NLSWert));
ELSE Xtool.htx('SUMME2A',TO_CHAR(Rec_Rechnung.PREIS2 * m_Rest,Loc_NLSBetrT,Loc_NLSWert));
END IF;
Xtool.htx('FAKTOR2' ,TO_CHAR(Rec_Rechnung.FAKTOR2));
Xtool.htx('KULANZ' ,TO_CHAR(Rec_Rechnung.KULANZ));
Xtool.htx('BERKM' ,TO_CHAR(Rec_Rechnung.BERKM,'999G999',Loc_NLSWert));
Xtool.htx('ZWIRECHKM' ,TO_CHAR(m_ZwiRechKm,'999G999',Loc_NLSWert));
Xtool.htx('TAGE' ,TO_CHAR(m_EchteTage));
IF Rec_Auftrag.CDW='F'
THEN Xtool.htx('CDWTAGE' ,'-');
Xtool.htx('CDWTAGE2' ,'');
Xtool.htx('CDWTAGESUM' ,'-');
ELSE Xtool.htx('CDWTAGE' ,TO_CHAR(m_Dauer));
Xtool.htx('CDWTAGE2' ,TO_CHAR(m_Rest));
Xtool.htx('CDWTAGESUM' ,TO_CHAR(m_Dauer+m_Rest));
END IF;
IF Rec_Auftrag.PAI='F'
THEN Xtool.htx('PAITAGE' ,'-');
Xtool.htx('PAITAGE2' ,'');
Xtool.htx('PAITAGESUM' ,'-');
ELSE Xtool.htx('PAITAGE' ,TO_CHAR(m_Dauer));
Xtool.htx('PAITAGE2' ,TO_CHAR(m_Rest));
Xtool.htx('PAITAGESUM' ,TO_CHAR(m_Dauer+m_Rest));
END IF;
IF Rec_Auftrag.CDW='F'
THEN Xtool.htx('DMCDW' ,'');
Xtool.htx('DMCDW2' ,'');
ELSE Xtool.htx('DMCDW' ,TO_CHAR(Rec_Rechnung.DMCDW,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('DMCDW2' ,TO_CHAR(Rec_Rechnung.DMCDW2,Loc_NLSBetrT,Loc_NLSWert));
END IF;
IF Rec_Auftrag.PAI='F'
THEN Xtool.htx('DMPAI' ,'');
Xtool.htx('DMPAI2' ,'');
ELSE Xtool.htx('DMPAI' ,TO_CHAR(Rec_Rechnung.DMPAI,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('DMPAI2' ,TO_CHAR(Rec_Rechnung.DMPAI2,Loc_NLSBetrT,Loc_NLSWert));
END IF;
Xtool.htx('DMKM' ,TO_CHAR(Rec_Rechnung.DMKM,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('SUMME1' ,TO_CHAR(Rec_Rechnung.VERMUMSATZ+m_AltUmsatz,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('KMSUMME' ,TO_CHAR(Rec_Rechnung.KMUMSATZ+m_AltKm,Loc_NLSBetrT,Loc_NLSWert));
IF Rec_Rechnung.KMUMSATZ<0
THEN Xtool.htx('KMVZ','-');
ELSE Xtool.htx('KMVZ','');
END IF; IF (p_FUNC IN ('7','9') AND Rec_Rechnung.RECHNR<0) OR
(p_FUNC='14')
THEN NULL;
ELSE Xtool.htx('RBSUMME' ,TO_CHAR(Rec_Rechnung.ERLSCHMAL+m_AltSchmal,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('RBSUMME1' ,TO_CHAR(Rec_Rechnung.ERLSCHMAL1+m_AltSchmal1,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('RBSUMME2' ,TO_CHAR(Rec_Rechnung.ERLSCHMAL2+m_AltSchmal2,Loc_NLSBetrT,Loc_NLSWert));
IF Rec_Rechnung.ERLSCHMAL+m_AltSchmal+
Rec_Rechnung.ERLSCHMAL1+m_AltSchmal1+
Rec_Rechnung.ERLSCHMAL2+m_AltSchmal2=0
THEN Xtool.htx('RBPRINT','0');
ELSE Xtool.htx('RBPRINT','1');
END IF;
END IF;
Xtool.htx('ZWSUMME1' ,TO_CHAR(Rec_Rechnung.VERMUMSATZ + Rec_Rechnung.KMUMSATZ - Rec_Rechnung.ERLSCHMAL +
m_AltUmsatz + m_AltKm - m_AltSchmal,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('VRSSUMME1' ,TO_CHAR(Rec_Rechnung.VERSUMSATZCDW+m_AltCDW,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('VRSSUMME2' ,TO_CHAR(Rec_Rechnung.VERSUMSATZPAI+m_AltPAI,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('VRSSUMME3' ,TO_CHAR(Rec_Rechnung.VERSUMSATZTP+m_AltTP,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('VRSSUMME' ,TO_CHAR(Rec_Rechnung.VERSUMSATZCDW+m_AltCDW+
Rec_Rechnung.VERSUMSATZPAI+m_AltPAI+
Rec_Rechnung.VERSUMSATZTP+m_AltTP,Loc_NLSBetrT,Loc_NLSWert));
IF Rec_Rechnung.VERSUMSATZCDW+m_AltCDW+
Rec_Rechnung.VERSUMSATZPAI+m_AltPAI+
Rec_Rechnung.VERSUMSATZTP+m_AltTP<>0.0 OR
Rec_Rechnung.CDW='W' OR
Rec_Rechnung.PAI='W'
THEN Xtool.htx('VRSPRINT' ,'1');
ELSE Xtool.htx('VRSPRINT' ,'0');
END IF;
Xtool.htx('ZWSUMME2' ,TO_CHAR(Rec_Rechnung.VERMUMSATZ + Rec_Rechnung.KMUMSATZ - Rec_Rechnung.ERLSCHMAL - Rec_Rechnung.ERLSCHMAL1 +
Rec_Rechnung.VERSUMSATZPAI +
Rec_Rechnung.VERSUMSATZCDW +
Rec_Rechnung.VERSUMSATZTP+
m_AltUmsatz+m_AltKm+m_AltCDW+m_AltPAI+m_AltTP-m_AltSchmal,Loc_NLSBetrT,Loc_NLSWert));
IF Rec_Rechnung.LITER<0 AND p_FUNC IN ('9')
THEN Xtool.htx('LITER','');
ELSE Xtool.htx('LITER',TO_CHAR(Rec_Rechnung.LITER,'999990D99',Loc_NLSWert));
Xtool.htx('LITERABS',TO_CHAR(ABS(Rec_Rechnung.LITER),'999990D99',Loc_NLSWert));
END IF;
RECHNTOOLS.ShowTreibstoff(my_HDLNR,Rec_Rechnung.SORTE);
IF NVL(Rec_Rechnung.LITER,0)<>0
THEN Xtool.htx('KRPREIS' ,TO_CHAR((Rec_Rechnung.KRAFTUMSATZ+m_AltKraft)/ABS(Rec_Rechnung.LITER),Loc_NLSBetrT,Loc_NLSWert));
ELSE Xtool.htx('KRPREIS' ,TO_CHAR((Rec_Rechnung.KRAFTUMSATZ+m_AltKraft),Loc_NLSBetrT,Loc_NLSWert));
END IF;
Xtool.htx('KRSUMME' ,TO_CHAR(Rec_Rechnung.KRAFTUMSATZ+m_AltKraft,Loc_NLSBetrT,Loc_NLSWert));
IF Rec_Rechnung.KRAFTUMSATZ +m_AltKraft <>0.0 OR
Rec_Rechnung.BETANKUMSATZ+m_AltBetank<>0.0
THEN Xtool.htx('KRAFTPRINT' ,'1');
ELSE Xtool.htx('KRAFTPRINT' ,'0');
END IF;
IF rec_rechnung.GUTLAST='W'
THEN
-- Xtool.htx('SOSUMME' ,TO_CHAR(Rec_Rechnung.SONSTUMSATZ+m_AltSonst+Rec_Rechnung.SONSTUMSATZFREI+m_AltSonstFr+Rec_Rechnung.ZUBUMSATZ+m_AltZub+Rec_Rechnung.DLUMSATZ+m_AltDl,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('SOSUMME' ,TO_CHAR(Rec_Rechnung.SONSTUMSATZ+m_AltSonst+Rec_Rechnung.SONSTUMSATZFREI+m_AltSonstFr+Rec_Rechnung.ZUBUMSATZ+m_AltZub+Rec_Rechnung.DLUMSATZ+m_AltDl+Rec_Rechnung.ZUBUMSATZFREI+m_AltZubFr+Rec_Rechnung.DLUMSATZFREI+m_AltDlFr,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('BTSUMME' ,TO_CHAR(Rec_Rechnung.BETANKUMSATZ+m_AltBetank,Loc_NLSBetrT,Loc_NLSWert));
ELSE
Xtool.htx('ZUSUMME' ,TO_CHAR(Rec_Rechnung.ZUBUMSATZ+m_AltZub+Rec_Rechnung.ZUBUMSATZFREI+m_AltZubFr,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('DLSUMME' ,TO_CHAR(Rec_Rechnung.DLUMSATZ+m_AltDl+Rec_Rechnung.DLUMSATZFREI+m_AltDlFr,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('SOSUMME' ,TO_CHAR(Rec_Rechnung.SONSTUMSATZ+m_AltSonst+Rec_Rechnung.SONSTUMSATZFREI+m_AltSonstFr,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('BTSUMME' ,TO_CHAR(Rec_Rechnung.BETANKUMSATZ+m_AltBetank,Loc_NLSBetrT,Loc_NLSWert));
END IF;
IF Rec_Rechnung.ZUBUMSATZ+m_AltZub <>0.0 OR
Rec_Rechnung.ZUBUMSATZFREI+m_AltZubFr <>0.0
THEN Xtool.htx('ZUBPRINT1' ,'1');
ELSE Xtool.htx('ZUBPRINT1' ,'0');
END IF;
IF Rec_Rechnung.DLUMSATZ+m_AltDl <>0.0 OR
Rec_Rechnung.DLUMSATZFREI+m_AltDlFr <>0.0
THEN Xtool.htx('ZUBPRINT2' ,'1');
ELSE Xtool.htx('ZUBPRINT2' ,'0');
END IF;
IF Rec_Rechnung.SONSTUMSATZ+m_AltSonst <>0.0 OR
Rec_Rechnung.SONSTUMSATZFREI+m_AltSonstFr <>0.0
THEN Xtool.htx('ZUBPRINT3' ,'1');
ELSE Xtool.htx('ZUBPRINT3' ,'0');
END IF;
Xtool.htx('ZWSUMME3' ,TO_CHAR(Rec_Rechnung.VERMUMSATZ + Rec_Rechnung.KMUMSATZ - Rec_Rechnung.ERLSCHMAL - Rec_Rechnung.ERLSCHMAL1 - Rec_Rechnung.ERLSCHMAL2 +
Rec_Rechnung.VERSUMSATZPAI +
Rec_Rechnung.VERSUMSATZCDW +
Rec_Rechnung.VERSUMSATZTP +
Rec_Rechnung.KRAFTUMSATZ +
Rec_Rechnung.BETANKUMSATZ +
Rec_Rechnung.SONSTUMSATZ+
Rec_Rechnung.SONSTUMSATZFREI+
Rec_Rechnung.ZUBUMSATZ+
Rec_Rechnung.DLUMSATZ+
Rec_Rechnung.ZUBUMSATZFREI+
Rec_Rechnung.DLUMSATZFREI+
m_AltUmsatz+m_AltKm-m_AltSchmal+
m_AltCDW+m_AltPAI+m_AltTP+
m_AltKraft+m_AltBetank+m_AltSonst+m_AltSonstFr+m_AltZub+m_AltDl+m_AltZubFr+m_AltDlFr,Loc_NLSBetrT,Loc_NLSWert));
m_NetSumme :=Rec_Rechnung.VERMUMSATZ + Rec_Rechnung.KMUMSATZ - Rec_Rechnung.ERLSCHMAL - Rec_Rechnung.ERLSCHMAL1 - Rec_Rechnung.ERLSCHMAL2 +
Rec_Rechnung.VERSUMSATZPAI +
Rec_Rechnung.VERSUMSATZCDW +
Rec_Rechnung.VERSUMSATZTP +
Rec_Rechnung.KRAFTUMSATZ +
Rec_Rechnung.BETANKUMSATZ +
Rec_Rechnung.SONSTUMSATZ +
Rec_Rechnung.SONSTUMSATZFREI +
Rec_Rechnung.ZUBUMSATZ+
Rec_Rechnung.DLUMSATZ+
Rec_Rechnung.ZUBUMSATZFREI+
Rec_Rechnung.DLUMSATZFREI;
/* m_MwSumme :=Schnittstellen.KaufRND(((Rec_Rechnung.VERMUMSATZ + Rec_Rechnung.KMUMSATZ - Rec_Rechnung.ERLSCHMAL - Rec_Rechnung.ERLSCHMAL1 - Rec_Rechnung.ERLSCHMAL2) / 100 * Rec_Rechnung.VERMMWST)) +
Schnittstellen.KaufRND((Rec_Rechnung.VERSUMSATZPAI / 100 * Rec_Rechnung.VERSMWSTPAI)) +
Shnittstellen.KaufRND((Rec_Rechnung.VERSUMSATZCDW / 100 * Rec_Rechnung.VERSMWSTCDW)) +
Schnittstellen.KaufRND((Rec_Rechnung.VERSUMSATZTP / 100 * Rec_Rechnung.VERSMWSTTP)) +
Schnittstellen.KaufRND((Rec_Rechnung.KRAFTUMSATZ / 100 * Rec_Rechnung.KRAFTMWST)) +
Schnittstellen.KaufRND((Rec_Rechnung.SONSTUMSATZ / 100 * Rec_Rechnung.SONSTMWST)) +
Schnittstellen.KaufRND((Rec_Rechnung.ZUBUMSATZ / 100 * Rec_Rechnung.SONSTMWST)) +
Schnittstellen.KaufRND((Rec_Rechnung.DLUMSATZ / 100 * Rec_Rechnung.SONSTMWST));*/
m_MwstFreiSum:=Rec_Rechnung.ZUBUMSATZFREI+
Rec_Rechnung.DLUMSATZFREI+
Rec_Rechnung.SONSTUMSATZFREI;
IF NVL(Rec_Rechnung.RABATTZL,0)=3
THEN m_MwstFreiSum:=m_MwstFreiSum-
(m_MwstFreiSum / 100 * Rec_Rechnung.RABATT);
END IF;
m_MwstBasis:=m_NetSumme - m_MwstFreiSum;
m_MwSumme :=0.0;
IF Rec_Rechnung.VERMMWST=0
THEN m_MwstBasis :=m_MwstBasis - (Rec_Rechnung.VERMUMSATZ + Rec_Rechnung.KMUMSATZ - Rec_Rechnung.ERLSCHMAL);
m_MwstFreiSum:=m_MwstFreiSum+(Rec_Rechnung.VERMUMSATZ + Rec_Rechnung.KMUMSATZ - Rec_Rechnung.ERLSCHMAL);
ELSE m_MwSumme :=Schnittstellen.KaufRND(((Rec_Rechnung.VERMUMSATZ + Rec_Rechnung.KMUMSATZ - Rec_Rechnung.ERLSCHMAL) / 100 * Rec_Rechnung.VERMMWST));
END IF;
IF Rec_Rechnung.VERSMWSTPAI=0
THEN IF NVL(Rec_Rechnung.RABATTZL,0)>=2
THEN m_MwstBasis :=m_MwstBasis - (Rec_Rechnung.VERSUMSATZPAI - (Rec_Rechnung.VERSUMSATZPAI / 100 * NVL(Rec_Rechnung.RABATT,0)));
m_MwstFreiSum:=m_MwstFreiSum+(Rec_Rechnung.VERSUMSATZPAI - (Rec_Rechnung.VERSUMSATZPAI / 100 * NVL(Rec_Rechnung.RABATT,0)));
ELSE m_MwstBasis :=m_MwstBasis - (Rec_Rechnung.VERSUMSATZPAI);
m_MwstFreiSum:=m_MwstFreiSum+(Rec_Rechnung.VERSUMSATZPAI);
END IF;
ELSE IF NVL(Rec_Rechnung.RABATTZL,0)>=2
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((Rec_Rechnung.VERSUMSATZPAI - (Rec_Rechnung.VERSUMSATZPAI / 100 * NVL(Rec_Rechnung.RABATT,0))) / 100 * Rec_Rechnung.VERSMWSTPAI);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((Rec_Rechnung.VERSUMSATZPAI / 100 * Rec_Rechnung.VERSMWSTPAI));
END IF;
END IF;
IF Rec_Rechnung.VERSMWSTCDW=0
THEN IF NVL(Rec_Rechnung.RABATTZL,0)>=2
THEN m_MwstBasis :=m_MwstBasis - (Rec_Rechnung.VERSUMSATZCDW - (Rec_Rechnung.VERSUMSATZCDW / 100 * NVL(Rec_Rechnung.RABATT,0)));
m_MwstFreiSum:=m_MwstFreiSum+(Rec_Rechnung.VERSUMSATZCDW - (Rec_Rechnung.VERSUMSATZCDW / 100 * NVL(Rec_Rechnung.RABATT,0)));
ELSE m_MwstBasis :=m_MwstBasis - (Rec_Rechnung.VERSUMSATZCDW);
m_MwstFreiSum:=m_MwstFreiSum+(Rec_Rechnung.VERSUMSATZCDW);
END IF;
ELSE IF NVL(Rec_Rechnung.RABATTZL,0)>=2
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((Rec_Rechnung.VERSUMSATZCDW - (Rec_Rechnung.VERSUMSATZCDW / 100 * NVL(Rec_Rechnung.RABATT,0))) / 100 * Rec_Rechnung.VERSMWSTCDW);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((Rec_Rechnung.VERSUMSATZCDW / 100 * Rec_Rechnung.VERSMWSTCDW));
END IF;
END IF;
IF Rec_Rechnung.VERSMWSTTP=0
THEN IF NVL(Rec_Rechnung.RABATTZL,0)>=2
THEN m_MwstBasis :=m_MwstBasis - (Rec_Rechnung.VERSUMSATZTP - (Rec_Rechnung.VERSUMSATZTP / 100 * NVL(Rec_Rechnung.RABATT,0)));
m_MwstFreiSum:=m_MwstFreiSum+(Rec_Rechnung.VERSUMSATZTP - (Rec_Rechnung.VERSUMSATZTP / 100 * NVL(Rec_Rechnung.RABATT,0)));
ELSE m_MwstBasis :=m_MwstBasis - (Rec_Rechnung.VERSUMSATZTP);
m_MwstFreiSum:=m_MwstFreiSum+(Rec_Rechnung.VERSUMSATZTP);
END IF;
ELSE IF NVL(Rec_Rechnung.RABATTZL,0)>=2
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((Rec_Rechnung.VERSUMSATZTP - (Rec_Rechnung.VERSUMSATZTP / 100 * NVL(Rec_Rechnung.RABATT,0))) / 100 * Rec_Rechnung.VERSMWSTTP);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((Rec_Rechnung.VERSUMSATZTP / 100 * Rec_Rechnung.VERSMWSTTP));
END IF;
END IF;
IF Rec_Rechnung.KRAFTMWST=0
THEN IF NVL(Rec_Rechnung.RABATTZL,0)=3
THEN m_MwstBasis :=m_MwstBasis - (Rec_Rechnung.KRAFTUMSATZ - (Rec_Rechnung.KRAFTUMSATZ / 100 * NVL(Rec_Rechnung.RABATT,0)));
m_MwstFreiSum:=m_MwstFreiSum+(Rec_Rechnung.KRAFTUMSATZ - (Rec_Rechnung.KRAFTUMSATZ / 100 * NVL(Rec_Rechnung.RABATT,0)));
ELSE m_MwstBasis :=m_MwstBasis - (Rec_Rechnung.KRAFTUMSATZ);
m_MwstFreiSum:=m_MwstFreiSum+(Rec_Rechnung.KRAFTUMSATZ);
END IF;
ELSE IF NVL(Rec_Rechnung.RABATTZL,0)=3
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((Rec_Rechnung.KRAFTUMSATZ - (Rec_Rechnung.KRAFTUMSATZ / 100 * NVL(Rec_Rechnung.RABATT,0))) / 100 * Rec_Rechnung.KRAFTMWST);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((Rec_Rechnung.KRAFTUMSATZ / 100 * Rec_Rechnung.KRAFTMWST));
END IF;
END IF;
IF Rec_Rechnung.SONSTMWST=0
THEN IF NVL(Rec_Rechnung.RABATTZL,0)=3
THEN m_MwstBasis :=m_MwstBasis - (Rec_Rechnung.BETANKUMSATZ - (Rec_Rechnung.BETANKUMSATZ / 100 * NVL(Rec_Rechnung.RABATT,0)));
m_MwstFreiSum:=m_MwstFreiSum+(Rec_Rechnung.BETANKUMSATZ - (Rec_Rechnung.BETANKUMSATZ / 100 * NVL(Rec_Rechnung.RABATT,0)));
ELSE m_MwstBasis :=m_MwstBasis - (Rec_Rechnung.BETANKUMSATZ);
m_MwstFreiSum:=m_MwstFreiSum+(Rec_Rechnung.BETANKUMSATZ);
END IF;
ELSE IF NVL(Rec_Rechnung.RABATTZL,0)=3
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((Rec_Rechnung.BETANKUMSATZ - (Rec_Rechnung.BETANKUMSATZ / 100 * NVL(Rec_Rechnung.RABATT,0))) / 100 * Rec_Rechnung.SONSTMWST);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((Rec_Rechnung.BETANKUMSATZ / 100 * Rec_Rechnung.SONSTMWST));
END IF;
END IF;
IF Rec_Rechnung.SONSTMWST=0
THEN IF NVL(Rec_Rechnung.RABATTZL,0)=3
THEN m_MwstBasis :=m_MwstBasis - (Rec_Rechnung.SONSTUMSATZ - (Rec_Rechnung.SONSTUMSATZ / 100 * NVL(Rec_Rechnung.RABATT,0)));
ELSE m_MwstBasis :=m_MwstBasis - (Rec_Rechnung.SONSTUMSATZ);
END IF;
ELSE IF NVL(Rec_Rechnung.RABATTZL,0)=3
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((Rec_Rechnung.SONSTUMSATZ - (Rec_Rechnung.SONSTUMSATZ / 100 * NVL(Rec_Rechnung.RABATT,0))) / 100 * Rec_Rechnung.SONSTMWST);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((Rec_Rechnung.SONSTUMSATZ / 100 * Rec_Rechnung.SONSTMWST));
END IF;
END IF;
IF Rec_Rechnung.SONSTMWST=0
THEN IF NVL(Rec_Rechnung.RABATTZL,0)=3
THEN m_MwstBasis:=m_MwstBasis - (Rec_Rechnung.ZUBUMSATZ - (Rec_Rechnung.ZUBUMSATZ / 100 * NVL(Rec_Rechnung.RABATT,0)));
ELSE m_MwstBasis:=m_MwstBasis - (Rec_Rechnung.ZUBUMSATZ);
END IF;
ELSE IF NVL(Rec_Rechnung.RABATTZL,0)=3
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((Rec_Rechnung.ZUBUMSATZ - (Rec_Rechnung.ZUBUMSATZ / 100 * NVL(Rec_Rechnung.RABATT,0))) / 100 * Rec_Rechnung.SONSTMWST);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((Rec_Rechnung.ZUBUMSATZ / 100 * Rec_Rechnung.SONSTMWST));
END IF;
END IF;
IF Rec_Rechnung.SONSTMWST=0
THEN IF NVL(Rec_Rechnung.RABATTZL,0)=3
THEN m_MwstBasis:=m_MwstBasis - (Rec_Rechnung.DLUMSATZ - (Rec_Rechnung.DLUMSATZ / 100 * NVL(Rec_Rechnung.RABATT,0)));
ELSE m_MwstBasis:=m_MwstBasis - (Rec_Rechnung.DLUMSATZ);
END IF;
ELSE IF NVL(Rec_Rechnung.RABATTZL,0)=3
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((Rec_Rechnung.DLUMSATZ - (Rec_Rechnung.DLUMSATZ / 100 * NVL(Rec_Rechnung.RABATT,0))) / 100 * Rec_Rechnung.SONSTMWST);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((Rec_Rechnung.DLUMSATZ / 100 * Rec_Rechnung.SONSTMWST));
END IF;
END IF;
m_GesSumme :=m_NetSumme + m_MwSumme; -- Gibt bei Rabatten und Splitt ggf. Cent-Differenzen
/* IF (Rec_Rechnung.ZWIRECH='W') OR
(Rec_Rechnung.GUTLAST='W') OR
(Rec_Rechnung.MITANZ='F')
THEN m_GesSumme :=Rec_Rechnung.GEZAHLT;
ELSE m_GesSumme :=Rec_Rechnung.GEZAHLT+Rec_Auftrag.ANZAHLUNG;
END IF;*/
IF m_MwstFreiSum=0.0
THEN Xtool.htx('MWSTFREISUMME','');
ELSE Xtool.htx('MWSTFREISUMME',TO_CHAR(m_MwstFreiSum,Loc_NLSBetrT,Loc_NLSWert));
END IF;
Xtool.htx('MWSTBASIS' ,TO_CHAR(m_MwstBasis,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('NETTOSUMME' ,TO_CHAR(m_NetSumme,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('MWSTSUMME' ,TO_CHAR(m_MwSumme,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('GESSUMME' ,TO_CHAR(m_GesSumme,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('ALTDATUM' ,'AltDatum');
Xtool.htx('ALTSUMME' ,TO_CHAR(m_AltUmsatz+m_AltKm-m_AltSchmal+
m_AltCDW+m_AltPAI+m_AltTP+
m_AltKraft+m_AltBetank+m_AltSonst+m_AltZub+m_AltDl+m_AltZubFr+m_AltDlFr,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('VERMMWST' ,TO_CHAR(Rec_Rechnung.VERMMWST,'90D9',Loc_NLSWert));
Xtool.htx('VERSMWSTCDW',TO_CHAR(Rec_Rechnung.VERSMWSTCDW,'90D9',Loc_NLSWert));
Xtool.htx('VERSMWSTPAI',TO_CHAR(Rec_Rechnung.VERSMWSTPAI,'90D9',Loc_NLSWert));
Xtool.htx('VERSMWSTTP' ,TO_CHAR(Rec_Rechnung.VERSMWSTTP,'90D9',Loc_NLSWert));
Xtool.htx('KRAFTMWST' ,TO_CHAR(Rec_Rechnung.KRAFTMWST,'90D9',Loc_NLSWert));
Xtool.htx('SONSTMWST' ,TO_CHAR(Rec_Rechnung.SONSTMWST,'90D9',Loc_NLSWert));
m_gesSumme:=m_gesSumme + NVL(Rec_Rechnung.VTRBETRAG,0);
IF (Rec_Rechnung.ZWIRECH='W') OR
(Rec_Rechnung.GUTLAST='W') OR
(Rec_Rechnung.MITANZ='F')
THEN Xtool.htx('ANZAHLUNG' ,TO_CHAR(0.0,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('RESTBETRAG' ,TO_CHAR(m_GesSumme,Loc_NLSBetrT,Loc_NLSWert));
ELSE Xtool.htx('ANZAHLUNG' ,TO_CHAR(Rec_Auftrag.ANZAHLUNG,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('RESTBETRAG' ,TO_CHAR(m_GesSumme -
Rec_Auftrag.ANZAHLUNG,Loc_NLSBetrT,Loc_NLSWert));
END IF;
IF (Rec_Rechnung.ZWIRECH='W') OR
(Rec_Rechnung.GUTLAST='W') OR
(Rec_Rechnung.MITANZ='F')
THEN IF ROUND(m_GesSumme * 100)>=0.0
THEN Xtool.htx('ISTGUT1','F');
ELSE Xtool.htx('ISTGUT1','W');
END IF;
ELSE IF ROUND(m_GesSumme * 100) -
ROUND(Rec_Auftrag.ANZAHLUNG * 100)>=0.0
THEN Xtool.htx('ISTGUT1','F');
ELSE Xtool.htx('ISTGUT1','W');
END IF;
END IF;
IF ROUND(m_GesSumme * 100)>=0.0
THEN Xtool.htx('ISTGUT','F');
ELSE Xtool.htx('ISTGUT','W');
END IF;
Xtool.htx('VTRSTEUER' ,TO_CHAR(Rec_Rechnung.VTRSTEUER,'90',Loc_NLSWert));
Xtool.htx('VTRBETRAG' ,TO_CHAR(Rec_Rechnung.VTRBETRAG,Loc_NLSBetrT,Loc_NLSWert));
-- Subset der m�glichen Tariftypen
-- Auftraege.ShowFzGruppe(p_HDLNR,Rec_Auftrag.BERECHGRP);
-- Tariftypen
-- Subset der m�glichen Tarife
-- Auftraege.ShowTarife (p_HDLNR,rec_Auftrag.HDLNR,Rec_Auftrag.BERECHGRP,
-- TO_CHAR(rec_Auftrag.MENDE,Loc_NLSDate),Rec_Auftrag.TARIFTYP);
-- Tarife
IF SUBSTR(Rec_Firma.KONZERNZUGR,5,2)='04'-- OR p_HDLNR='015E6006'
THEN Xtool.htx('ISIRL','1');
BEGIN
SELECT * INTO Rec_Insure FROM INSURE
WHERE HDLNR =Rec_Rechnung.HDLNR AND
AUFTRNR =Rec_Rechnung.AUFTRNR;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
Xtool.htx('IRLOWN',Rec_Insure.USEOWN);
Xtool.htx('INSCOMP',Rec_Insure.COMPANY);
Xtool.htx('INSPOL',Rec_Insure.POLICY);
Xtool.htx('INSCOV',Rec_Insure.COVER);
Xtool.htx('INSEXP',TO_CHAR(Rec_Insure.EXPIRY,Loc_NLSDate));
Xtool.htx('INSBROK',Rec_Insure.BROKER);
Xtool.htx('INSTEL',Rec_Insure.TELEFON);
Xtool.htx('ADDMEMO1',Rec_Insure.ADDMEMO1);
Xtool.htx('QUEST1',Rec_Insure.QUEST1);
Xtool.htx('QUEST2',Rec_Insure.QUEST2);
Xtool.htx('QUEST3',Rec_Insure.QUEST3);
Xtool.htx('QUEST4',Rec_Insure.QUEST4);
Xtool.htx('QUEST5',Rec_Insure.QUEST5);
Xtool.htx('QUEST6',Rec_Insure.QUEST6);
Xtool.htx('QUEST7',Rec_Insure.QUEST7);
Xtool.htx('QUEST8',Rec_Insure.QUEST8);
Xtool.htx('DETAIL1',Rec_Insure.DETAIL1);
Xtool.htx('DETAIL2',Rec_Insure.DETAIL2);
Xtool.htx('DETAIL3',Rec_Insure.DETAIL3);
Xtool.htx('DETAIL4',Rec_Insure.DETAIL4);
Xtool.htx('DETAIL5',Rec_Insure.DETAIL5);
ELSE Xtool.htx('ISIRL','0');
END IF;
WHILE LENGTH(m_FussText)>0 LOOP
Xtool.ExtractLine(m_FussText,m_FussTeil,m_FussText);
IF LENGTH(m_FussTeil)>0
THEN Xtool.XMLStart('FussText');
Xtool.htx('FUSSZEILE',m_FussTeil,false);
Xtool.XMLEnd('FussText');
END IF;
END LOOP;
WHILE LENGTH(m_FussTextM)>0 LOOP
Xtool.ExtractLine(m_FussTextM,m_FussTeil,m_FussTextM);
IF LENGTH(m_FussTeil)>0
THEN Xtool.XMLStart('FussTextM');
Xtool.htx('FUSSZEILE',m_FussTeil,false);
Xtool.XMLEnd('FussTextM');
END IF;
END LOOP;
WHILE LENGTH(m_FussTextR)>0 LOOP
Xtool.ExtractLine(m_FussTextR,m_FussTeil,m_FussTextR);
IF LENGTH(m_FussTeil)>0
THEN Xtool.XMLStart('FussTextR');
Xtool.htx('FUSSZEILE',m_FussTeil,false);
Xtool.XMLEnd('FussTextR');
END IF;
END LOOP;
Xtool.htx('AUFART',p_AUFART);
Xtool.htx('FUNC',p_FUNC);
Xtool.htx('ART',p_ART);
IF (m_PRIVAT<>'P') AND (p_FUNC='7') AND
((m_ReSteuerNr='') OR (m_ReSteuerNr IS NULL))
THEN Xtool.htx('DARFGULA','0');
ELSE Xtool.htx('DARFGULA','1');
END IF;
Xtool.htx('MITANZ',rec_Rechnung.MITANZ);
Xtool.htx('MITZUB',rec_Rechnung.MITZUB);
Xtool.htx('MITZWI',rec_Rechnung.MITZWI);
Xtool.htx('NURFKM',rec_Rechnung.NURFREIEKM);
Xtool.htx('STNRECHNR' ,Rec_Rechnung.STNRECHNR);
IF (Rec_Rechnung.ZAHLWEG='50') OR
(m_HatSammel='W')
-- ((m_HatSammel='W') AND (NVL(Rec_Rechnung.AUFTRNR,0)>0))
THEN AUFTRTOOLS.ShowZahlArten(Rec_Rechnung.HDLNR,Rec_Rechnung.ZAHLWEG,TRUE,FALSE,TRUE,m_ZahlGrp,Rec_Auftrag.MVART);
ELSE AUFTRTOOLS.ShowZahlArten(Rec_Rechnung.HDLNR,Rec_Rechnung.ZAHLWEG,TRUE,FALSE,FALSE,m_ZahlGrp,Rec_Auftrag.MVART);
END IF;
Xtool.htx('ERRORTEXT' ,p_ERRORTEXT);
Xtool.htx('PAGENR' ,p_PAGENR);
Xtool.htx('LOGODRUCK' ,Rec_Firma.LOGODRUCK);
Xtool.htx('LOGOFUSSDRUCK' ,Rec_Firma.LOGOFUSSDRUCK);
Xtool.htx('HATSTR2' ,Rec_FirmaP.HATSTRASSE2);
Xtool.htx('HATLOGODRUCK' ,Rec_FirmaP.HATLOGODRUCK);
Xtool.htx('HATFUSSZUSTEXT' ,Rec_FirmaP.HATLOGOFUSS);
Xtool.htx('HATFUSSEINSPL' ,Rec_FirmaP.HATFUSSEINSPL);
Xtool.htx('HATLOGOSCALE' ,Rec_FirmaP.HATLOGOSCALE);
Xtool.htx('HATOWIRECH' ,Rec_FirmaP.HATOWIRECH);
Xtool.htx('HATQRCODE' ,Rec_FirmaP.HATQRCODE);
Xtool.htx('DRCLOGOHOEHE' ,Rec_FirmaP.DRCLOGOHOEHE);
IF p_DUPLIKAT IS NULL -- p_LOGO muss dann auch gesetzt sein
THEN Xtool.htx('X',TO_CHAR(NVL(X,0))); -- Erkennung ob Duplikat, kommt aus Menue, -2 = kommt aus VAA
Xtool.htx('Y',TO_CHAR(NVL(Y,0))); -- Erkennung ob Duplikat, kommt aus Menue, -2 = kommt aus VAA
IF NVL(X,0)=0 OR NVL(Y,0)=-2
THEN Xtool.htx('DUPL','F'); -- Kein Eindruck Duplikat
ELSE IF NVL(X,0)>0
THEN Xtool.htx('DUPL','W'); -- Eindruck Duplikat
ELSE Xtool.htx('DUPL',rec_Firma.DUPLDRUCK); -- Kein Eindruck Duplikat, je nach FiStamm
END IF;
END IF;
ELSE Xtool.htx('DUPL',p_DUPLIKAT);
CASE p_LOGO
WHEN 'W' THEN Xtool.htx('X','-2');
WHEN 'F' THEN Xtool.htx('X','-1');
ELSE Xtool.htx('X',TO_CHAR(NVL(X,0)));
END CASE;
END IF;
Xtool.htx('ARVATOTRANS' ,Rec_Rechnung.ARVATOTRANSTOKEN);
--Xtool.htx('KRDBANK' ,Rec_Rechnung.KRDBANK);
Xtool.htx('KRDNR' ,Rec_Rechnung.KRDNR);
Xtool.htx('KRDBETRAG' ,TO_CHAR(Rec_Rechnung.KRDBETRAG,Loc_NLSBetrT,Loc_NLSWert));
--Xtool.htx('KRDGENNR' ,Rec_Auftrag.KRDGENNR);
--Xtool.htx('KRDINHABER' ,Rec_Auftrag.KRDINHABER);
Xtool.htx('EINZUG' ,NVL(m_Einzug,'F'));
Xtool.htx('KDBANK' ,m_KdBank);
Xtool.htx('KDKONTO',m_KdKonto);
Xtool.htx('KDBLZ' ,m_KdBlz);
Xtool.htx('KDIBAN' ,m_KdIBAN);
Xtool.htx('KDBIC' ,m_KdBIC);
IF (m_Einzug='W') AND
(m_KdSEPADatum<=rec_rechnung.RDATUM) AND
(m_KdSEPADatum>TO_DATE('20000101','yyyymmdd'))
THEN Xtool.htx('KDSEPADATUM',TO_CHAR(m_KdSEPADatum,Loc_NLSDate));
Xtool.htx('KDSEPAMANDAT',m_KdSEPAMandat);
ELSE Xtool.htx('KDSEPADATUM','');
Xtool.htx('KDSEPAMANDAT','');
END IF;
Xtool.htx('INGIS' ,m_Ingis);
Xtool.htx('INGISEMAIL',m_IngisEMail);
Xtool.htx('INGISDRC',Rec_Rechnung.INGISDRC);
Xtool.htx('PDFRECH',m_PdfRech);
Xtool.htx('PDFEMAIL',m_PdfEMail);
Xtool.htx('SPINGIS' ,m_SpIngis);
Xtool.htx('SPINGISEMAIL',m_SpIngisEMail);
Xtool.htx('SPPDFRECH',m_SpPdfRech);
Xtool.htx('SPPDFEMAIL',m_SpPdfEMail);
Xtool.htx('SPINGISDRC',m_SpIngisDrc);
Xtool.htx('DECKBLATT',m_Deckblatt);
OutFahrer(Rec_Rechnung.AUFTRNR);
RECHNTOOLS.OutLetzteZwirech(Rec_RECHNUNG.HDLNR,Rec_RECHNUNG.AUFTRNR,Rec_RECHNUNG.RECHNR,Loc_NLSDate,Loc_NLSTime);
OutStornoTeile(Rec_Rechnung.GUTLAST, NVL(Rec_Rechnung.STNRECHNR,0));
Xtool.XMLStart('KONTAKT');
Xtool.htx('NR','');
Xtool.htx('NAME1','-');
Xtool.XMLEnd('KONTAKT');
IF m_Privat='P' AND
m_EMail IS NOT NULL THEN
Xtool.XMLStart('KONTAKT');
Xtool.htx('NR','');
Xtool.htx('NAME1',Rec_Auftrag.NAME1||' '||Rec_Auftrag.NAME2);
Xtool.htx('EMAIL',m_EMail);
Xtool.XMLEnd('KONTAKT');
END IF;
KUNDEN.ShowKontakte(Rec_Rechnung.HDLNR,'K',Rec_Rechnung.DEBITOR);
IF Y=-2 -- GDV Abruf eines Beleges
THEN Xtool.htx('GDV','J');
BEGIN
SELECT *
INTO Rec_Abtret
FROM ABTRET
WHERE HDLNR =Rec_Rechnung.HDLNR AND
AUFTRNR=Rec_Rechnung.AUFTRNR;
Xtool.htx('SKENNZ' ,Rec_Abtret.SKENNZ);
Xtool.htx('SVERSNR' ,Rec_Abtret.SVERSNR);
Xtool.htx('SSCHADEN' ,Rec_Abtret.SSCHADENNR);
Xtool.htx('UDATUM' ,TO_CHAR(Rec_Abtret.UTAG,Loc_NLSDate));
EXCEPTION
WHEN OTHERS THEN NULL;
END;
END IF;
TARIFE.ShowEinheiten(p_HDLNR);
AUFTRTOOLS.ShowZubehoer(rec_Rechnung.HDLNR,rec_AUFTRAG.AUFTRNR,rec_AUFTRAG.PRIVAT,'F',Rec_Rechnung.VERMMWST,m_Aufschlag,m_EchteTage);
RECHNTOOLS.ShowZubehoer(rec_Rechnung.HDLNR,rec_RECHNUNG.RECHNR,rec_RECHNUNG.RECHART,Rec_Auftrag.PRIVAT,m_MitMwst,Rec_Rechnung.VERMMWST,m_Aufschlag,m_EchteTage);
RECHNTOOLS.ShowReZubPos(Rec_Rechnung.HDLNR,Rec_Rechnung.RECHNR,Rec_Rechnung.RECHART,Rec_Rechnung.AUFTRNR,Rec_Rechnung.VERMMWST);
AUFTRTOOLS.ShowKreditBank(Rec_RECHNUNG.HDLNR,Rec_Rechnung.KRDBANK);
FIRMEN.DoOutputFirAnhang(p_HDLNR);
HEWA_WRAP.ShowRgAnfrage(p_HDLNR => Rec_Rechnung.HDLNR,
p_AUFTRNR => Rec_Rechnung.AUFTRNR,
p_ANFRAGENR => Rec_Auftrag.EXTGUID,
p_RECHART => Rec_Rechnung.RECHART,
p_RECHNR => Rec_Rechnung.RECHNR,
p_TAGE => m_EchteTage,
p_SUMME => m_GesSumme);
Xtool.htx('CJIB','F');
IF rec_Rechnung.GRUNDBETRAG>0.0
THEN my_BlockCnt:=my_BlockCnt+1;
Xtool.htx('PRNGRUND','W');
END IF;
IF Rec_Rechnung.VERMUMSATZ+m_AltUmsatz<>0.0
THEN my_BlockCnt:=my_BlockCnt+1;
Xtool.htx('PRN1TAG','W');
END IF;
IF m_Rest>0
THEN my_BlockCnt:=my_BlockCnt+1;
Xtool.htx('PRN2TAG','W');
ELSE Xtool.htx('PRN2TAG','F');
END IF;
IF Rec_Rechnung.KMUMSATZ+m_AltKm<>0.0
THEN my_BlockCnt:=my_BlockCnt+1;
Xtool.htx('PRNKM','W');
END IF;
IF Rec_Rechnung.ERLSCHMAL+m_AltSchmal<>0.0
THEN my_BlockCnt:=my_BlockCnt+1;
Xtool.htx('PRNRABATT','W');
END IF;
IF Rec_Rechnung.ERLSCHMAL1+m_AltSchmal1<>0.0
THEN my_BlockCnt:=my_BlockCnt+1;
Xtool.htx('PRNRABATT1','W');
END IF;
IF Rec_Rechnung.ERLSCHMAL2+m_AltSchmal2<>0.0
THEN my_BlockCnt:=my_BlockCnt+1;
Xtool.htx('PRNRABATT2','W');
END IF;
IF rec_Rechnung.VERSUMSATZCDW+m_AltCDW<>0.0
THEN my_BlockCnt:=my_BlockCnt+1;
Xtool.htx('PRNCDW','W');
IF m_Rest>0
THEN my_BlockCnt:=my_BlockCnt+1;
Xtool.htx('PRNCDW2','W');
ELSE Xtool.htx('PRNCDW2','F');
END IF;
ELSE Xtool.htx('PRNCDW','F');
Xtool.htx('PRNCDW2','F');
END IF;
IF rec_Rechnung.VERSUMSATZPAI+m_AltPAI<>0.0
THEN my_BlockCnt:=my_BlockCnt+1;
Xtool.htx('PRNPAI','W');
IF m_Rest>0
THEN my_BlockCnt:=my_BlockCnt+1;
Xtool.htx('PRNPAI2','W');
ELSE Xtool.htx('PRNPAI2','F');
END IF;
ELSE Xtool.htx('PRNPAI','F');
Xtool.htx('PRNPAI2','F');
END IF;
IF rec_Rechnung.VERSUMSATZTP+m_AltTP<>0.0
THEN my_BlockCnt:=my_BlockCnt+1;
Xtool.htx('PRNTRP','W');
END IF;
IF rec_Rechnung.KRAFTUMSATZ+m_AltKraft<>0.0
OR rec_Rechnung.BETANKUMSATZ+m_AltBetank<>0.0
THEN my_BlockCnt:=my_BlockCnt+2; -- sind 2 Zeilen
Xtool.htx('PRNKRAFT','W');
ELSE Xtool.htx('PRNKRAFT','F');
END IF;
IF rec_Rechnung.SONSTUMSATZ+m_AltSonst<>0.0
THEN my_BlockCnt:=my_BlockCnt+1;
Xtool.htx('PRNSONST','W');
ELSE Xtool.htx('PRNSONST','F');
END IF;
IF rec_Rechnung.SONSTUMSATZFREI+m_AltSonstFr<>0.0
THEN my_BlockCnt:=my_BlockCnt+1;
Xtool.htx('PRNSONSTFR','W');
ELSE Xtool.htx('PRNSONSTFR','F');
END IF;
IF rec_Rechnung.ZUBUMSATZ+m_AltZub<>0.0
OR rec_Rechnung.DLUMSATZ+m_AltDl<>0.0
THEN my_BlockCnt:=my_BlockCnt+1;
Xtool.htx('PRNZUB','W');
END IF;
IF rec_Rechnung.ZUBUMSATZFREI+m_AltZubFr<>0.0
OR rec_Rechnung.DLUMSATZFREI+m_AltDlFr<>0.0
THEN my_BlockCnt:=my_BlockCnt+1;
Xtool.htx('PRNZUBFREI','W');
END IF;
Xtool.htx('PRNDEBUG' ,'F');
CASE NVL(Rec_Firma.FORMTYP,0)
WHEN 1 THEN Xtool.htx('HOEHE' ,TO_CHAR(260-(my_BlockCnt*15)));
WHEN 7 THEN Xtool.htx('HOEHE' ,TO_CHAR(260-(my_BlockCnt*15)));
WHEN 24 THEN Xtool.htx('HOEHE' ,TO_CHAR(380-(my_BlockCnt*15)));
WHEN 28 THEN Xtool.htx('HOEHE' ,TO_CHAR(380-(my_BlockCnt*15)));
ELSE NULL;
END CASE;
-- Xtool.htx('PRNDEBUG' ,'W');
-- Xtool.htx('HOEHE' ,TO_CHAR(140));
Xtool.XMLEnd('Rechnung');
Xtool.XMLEnd('Rechnungen');
-- R�cksprung organisieren
IF (p_XSL='rechprint') OR
(p_XSL='rechsplit') OR
(p_XSL='mietgula')
THEN RueckXsl:=p_XSL;
END IF;
IF (p_XSL='drcgula') AND
(TO_NUMBER(p_RECHNR)<0)
THEN RueckXsl:='mietgula';
END IF;
IF (p_FUNC='14') -- Freies Splitting
THEN RueckXSL:='rechsplit';
END IF;
IF (p_FUNC='30') -- FzWechsel, Druckvorstufe
THEN RueckXSL:='fzwechsel';
END IF;
IF RueckXsl IS NOT NULL THEN
DELETE FROM GOBACKTBL WHERE HDLNR=p_HDLNR AND USERNR=p_USERNR AND LISTE=0;
IF p_FUNC='30'
THEN INSERT INTO GOBACKTBL
(HDLNR,USERNR,FILNR,DATUMSTAMP,FUNKTION,LISTE,XSL,FUNC,AHDLNR,AFILNR,AUFTRNR,KENNUNG)
VALUES
(p_HDLNR,p_USERNR,p_FILNR,SYSDATE,0001,0,RueckXsl,p_FUNC,p_AHDLNR,p_AFILNR,Rec_Auftrag.AUFTRNR,Rec_Auftrag.KENNUNG);
ELSE INSERT INTO GOBACKTBL
(HDLNR,USERNR,FILNR,DATUMSTAMP,FUNKTION,LISTE,XSL,FUNC,AHDLNR,AFILNR,AUFTRNR,KENNUNG)
VALUES
(p_HDLNR,p_USERNR,p_FILNR,SYSDATE,0002,0,RueckXsl,p_FUNC,p_AHDLNR,p_AFILNR,p_RECHNR,p_RECHART);
END IF;
END IF;
COMMIT;
-- Ende
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END ShowRech;
/******************************************************************************
NAME: Rechnungen.ErfKurzMemo
PURPOSE: Fahrzeugkurzr�cknahme, internes Memo via AJAX
Date: 12.11.2015
*******************************************************************************/
PROCEDURE ErfKurzMemo(p_HDLNR VARCHAR2,
p_USERNR VARCHAR2,
p_AUFTRNR VARCHAR2,
p_BEMINTERN VARCHAR2 DEFAULT NULL) IS
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
Loc_NLSTime VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,2);
PROCEDURE DoAusgabe IS
CURSOR curbemint IS
SELECT * FROM AUFTRMEMO
WHERE HDLNR =p_HDLNR
AND AUFTRNR=p_AUFTRNR
ORDER BY DATUM DESC;
m_BemName VARCHAR2(40);
BEGIN
FOR rec_bems IN curbemint LOOP
BEGIN
SELECT DRUCKNAME
INTO m_BemName
FROM USERS
WHERE HDLNR=p_HDLNR
AND NR =Rec_Bems.ERFASSER;
EXCEPTION WHEN OTHERS THEN m_BemName:='?';
END;
htp.p('<p><span style="font-size:8px;">');
htp.p(TO_CHAR(Rec_bems.DATUM,Loc_NLSDate) || ' ' ||TO_CHAR(Rec_bems.DATUM,Loc_NLSTime)||' ('||Rec_bems.ERFASSER||', '||m_BemName||')</span><br/>');
htp.p(Rec_bems.MEMO||'</p>');
END LOOP;
END;
BEGIN
AUFTRTOOLS.DoUpdateBemIntern(p_HDLNR,p_USERNR,p_AUFTRNR,p_BEMINTERN);
COMMIT;
DoAusgabe;
END;
/******************************************************************************
NAME: Rechnungen.ErfKurzSchaden
PURPOSE: Fahrzeugkurzr�cknahme, Schafden via AJAX
Date: 17.07.2017
*******************************************************************************/
PROCEDURE ErfKurzSchaden(p_HDLNR VARCHAR2,
p_USERNR VARCHAR2,
p_AUFTRNR VARCHAR2,
p_MENDE VARCHAR2,
p_SCHADEN VARCHAR2 DEFAULT NULL) IS
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
my_Progname VARCHAR2(20):='ErfKurzSchaden';
my_FzHdlNr VARCHAR2(08);
my_Fahrgestell VARCHAR2(20);
my_Zulassung DATE;
my_Lfd INTEGER;
my_MBeginn DATE;
my_MEnde DATE:=TO_DATE(p_MENDE,Loc_NLSDate);
PROCEDURE DoAusgabe IS
CURSOR curschaeden IS
SELECT * FROM FZKOSTEN
WHERE FAHRGESTELL=my_FAHRGESTELL
AND SCHADEN ='W'
AND ((DATUM>=TRUNC(my_MBEGINN) AND DATUM<=TRUNC(my_MENDE)) OR
(DATUMBEHOBEN IS NULL AND DATUM<TRUNC(my_MBEGINN)) OR
(DATUMBEHOBEN>=TRUNC(my_MBEGINN) AND DATUM<=TRUNC(my_MBEGINN)))
ORDER BY DATUM;
BEGIN
FOR rec_schaden IN curschaeden LOOP
htp.p('<span style="font-size:8px;">');
htp.p(TO_CHAR(Rec_schaden.DATUM,Loc_NLSDate) ||', '||TO_CHAR(Rec_schaden.MVNUMMER)||'</span> '||Rec_schaden.BEZEICHNUNG||'<br/>');
END LOOP;
END;
BEGIN
BEGIN
SELECT FAHRGESTELL, ZULASSUNG, MBEGINN
INTO my_FAHRGESTELL, my_Zulassung, my_MBeginn
FROM AUFTRAG
WHERE HDLNR =p_HDLNR
AND AUFTRNR=p_AUFTRNR;
SELECT HDLNR
INTO my_FzHdlNr
FROM FAHRZEUG
WHERE FAHRGESTELL=my_Fahrgestell
AND ZULASSUNG =my_Zulassung;
SELECT MAX(LFD)
INTO my_Lfd
FROM FZKOSTEN
WHERE FAHRGESTELL=my_Fahrgestell;
my_Lfd:=NVL(my_Lfd,0)+1;
INSERT INTO FZKOSTEN
(HDLNR,FAHRGESTELL,LFD,BEZEICHNUNG,DATUM,MVNUMMER,SCHADEN,USERNR)
VALUES
(my_FzHdlNr,my_Fahrgestell,my_Lfd,p_SCHADEN,TO_DATE(p_MENDE,Loc_NLSDate),p_AUFTRNR,'W',p_USERNR);
COMMIT;
EXCEPTION WHEN OTHERS
THEN XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END;
DoAusgabe;
END;
/******************************************************************************
NAME: Rechnungen.Kurzrueck
PURPOSE: Fahrzeugkurzr�cknahme, ME, BE und km-Stand festlegen
Date: 02.05.2005/19.04.2017
*******************************************************************************/
PROCEDURE KurzRueck (p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_AHDLNR VARCHAR2 DEFAULT NULL,
p_AFILNR VARCHAR2 DEFAULT NULL,
p_KENNUNG VARCHAR2,
p_AUFTRNR VARCHAR2,
p_MENDE VARCHAR2,
p_MENDEUHR VARCHAR2,
p_MBEGINN VARCHAR2 DEFAULT NULL,
p_MBEGINNUHR VARCHAR2 DEFAULT NULL,
p_ABKM VARCHAR2 DEFAULT NULL,
p_ANKM VARCHAR2 DEFAULT NULL,
p_KRAFTSTOFF VARCHAR2 DEFAULT NULL,
p_LITER VARCHAR2 DEFAULT NULL,
p_SORTE VARCHAR2 DEFAULT NULL,
p_KRAFTBRUTTO VARCHAR2 DEFAULT NULL,
p_SONSTIGE VARCHAR2 DEFAULT NULL,
p_SONSTBEMERK VARCHAR2 DEFAULT NULL,
p_SONSTBRUTTO VARCHAR2 DEFAULT NULL,
p_BETANKUNG VARCHAR2 DEFAULT NULL,
p_BETANKBRUTTO VARCHAR2 DEFAULT NULL,
p_SCHADEN1 VARCHAR2 DEFAULT NULL,
p_SCHADEN2 VARCHAR2 DEFAULT NULL,
p_PARKPLATZ VARCHAR2 DEFAULT NULL,
p_BEMINTERN VARCHAR2 DEFAULT NULL,
p_FUELLMENGE VARCHAR2 DEFAULT NULL,
p_ABWOK VARCHAR2 DEFAULT NULL,
p_FUNC VARCHAR2 DEFAULT '0') IS
my_ProgName VARCHAR2(20):='KurzRueck';
Rec_Auftrag AUFTRAG%ROWTYPE;
m_errortext VARCHAR2(300) := NULL;
m_neukenn VARCHAR2(1) :='B';
m_Langzeit VARCHAR2(01);
m_bende VARCHAR2(10);
m_bendeuhr VARCHAR2(05);
m_mbeginn DATE;
m_mbuhr DATE;
m_bbeginn DATE;
m_bbuhr DATE;
m_Fahrgestell VARCHAR2(20);
m_Zulassung DATE;
m_Kennz VARCHAR2(20);
m_FzHdlNr VARCHAR2(08);
m_Standort VARCHAR2(14):=SUBSTR(p_HDLNR,1,3) || ';' || SUBSTR(p_HDLNR,4,5) || ';' || p_FILNR;
m_OldStandort VARCHAR2(14);
m_filrechnung VARCHAR2(14);
m_konzernzugr VARCHAR2(08);
m_FzgVerbr VARCHAR2(01);
m_FzgAbhl VARCHAR2(01);
m_TrpZentrale VARCHAR2(01);
m_B2BHdlNr VARCHAR2(08);
m_DmsSource VARCHAR2(03);
m_AuftrNrExt VARCHAR2(30);
m_RobGrund VARCHAR2(03);
m_MvArt VARCHAR2(04);
m_GkPrlNr INTEGER;
m_MietMin INTEGER;
m_Einh1 INTEGER;
m_Faktor1 INTEGER;
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
Loc_NLSTime VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,2);
Loc_NLSWert VARCHAR2(30):=Xtool.GetNLS(p_HDLNR,3);
Loc_NLSBetr VARCHAR2(30):=Xtool.GetNLS(p_HDLNR,7);
m_KraftBrutto VARCHAR2(01):=p_KRAFTBRUTTO;
m_Sorte INTEGER:=NVL(p_SORTE,0);
m_Liter FLOAT := NVL(TO_NUMBER(p_Liter,Loc_NLSBetr,Loc_NLSWert),0);
m_KraftUmsatz FLOAT := NVL(TO_NUMBER(p_KRAFTSTOFF,Loc_NLSBetr,Loc_NLSWert),0);
m_SonstUmsatz FLOAT := NVL(TO_NUMBER(p_SONSTIGE,Loc_NLSBetr,Loc_NLSWert),0);
m_BetankUmsatz FLOAT := NVL(TO_NUMBER(p_BETANKUNG,Loc_NLSBetr,Loc_NLSWert),0);
m_MwstKraft FLOAT :=0.0;
m_MwStSonst FLOAT :=0.0;
m_Land VARCHAR2(02);
m_abkm INTEGER := 0;
m_TrpKmEnde INTEGER := 0;
m_NeuAbKm INTEGER :=NVL(TO_NUMBER(p_ABKM,'9999999',Loc_NLSWert),0);
m_AnKm INTEGER :=NVL(TO_NUMBER(p_ANKM,'9999999',Loc_NLSWert),0);
m_AufKm INTEGER :=NVL(TO_NUMBER(p_ANKM,'9999999',Loc_NLSWert),0);
m_MaxKm INTEGER :=9999999;
m_FzMaxKm INTEGER;
m_FzAbmeldung DATE;
m_ObuTXFer DATE;
m_ZahlArt VARCHAR2(2);
myerr VARCHAR2(1) :='0';
pl_Nr VARCHAR2(2);
pl_LCode VARCHAR2(2);
pl_DELTAWERT FLOAT;
pl_MAXWERT FLOAT;
pl_MINWERT FLOAT;
pl_PFLICHT VARCHAR2(1);
pl_VONDATUM DATE;
pl_AUSNAHME BOOLEAN;
pl_RESULT BOOLEAN;
/* PROCEDURE ReturnFzgTransport IS
BEGIN
FzKommen(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_FAHRGESTELL=> m_Fahrgst,
p_ZULASSUNG => TO_CHAR(m_Zulassung,Loc_NLSDate),
p_KENNZ => m_Kennz,
p_KMSTAND => p_ANKM,
p_KURZRUECK => 'W');
IF m_TrpZentrale='W' -- AnKm neu holen, ist Abfahrt von Kunde wenn Zentrale zahlt
THEN SELECT ANKM
INTO m_AufKm
FROM AUFTRAG
WHERE HDLNR =p_AHDLNR AND
KENNUNG=p_KENNUNG AND
AUFTRNR=p_AUFTRNR;
END IF;
END;*/
/* PROCEDURE FzgTransportStartKm IS
my_Datum DATE;
BEGIN
SELECT MAX(ANKMSTAND)
INTO m_TrpKmEnde
FROM FAHRAUFT
WHERE HDLNR=p_HDLNR
AND AUFTRNR=p_AUFTRNR
AND ZUAB ='<';
SELECT MAX(DATUM)
INTO my_Datum
FROM FAHRAUFT
WHERE HDLNR=p_HDLNR
AND AUFTRNR=p_AUFTRNR
AND ZUAB ='>';
UPDATE FAHRAUFT
SET KMSTAND = m_AnKm
WHERE HDLNR=p_HDLNR
AND AUFTRNR=p_AUFTRNR
AND ZUAB ='>'
AND DATUM=my_Datum;
-- IF NVL(m_TrpZentrale,'F')='F' -- Kunde bezahlt,KM-Stand aus Transportauftrag
-- THEN m_AufKm:=m_TrpKmEnde;
-- END IF;
END;*/
PROCEDURE FzgTransportStartKm IS
my_Datum DATE;
BEGIN
SELECT MAX(DATUM)
INTO my_Datum
FROM FAHRAUFT
WHERE HDLNR =p_HDLNR
AND AUFTRNR=p_AUFTRNR
AND ZUAB ='>';
UPDATE FAHRAUFT
SET KMSTAND = m_AnKm
WHERE HDLNR=p_HDLNR
AND AUFTRNR=p_AUFTRNR
AND ZUAB ='>'
AND DATUM=my_Datum;
END;
PROCEDURE GetTrapoMaxKm IS
BEGIN
SELECT Max(ANKMSTAND)
INTO m_MaxKm
FROM FAHRAUFT
WHERE HDLNR=p_HDLNR
AND AUFTRNR=p_AUFTRNR
AND ZUAB='<';
END;
PROCEDURE DoUpdateZentralMv IS
myZHdlNr VARCHAR2(08);
myAuftrNr INTEGER;
BEGIN
IF (SUBSTR(m_AuftrnrExt,1,3)<>'F3_') OR
(m_DMSSource<>'F3')
THEN RETURN;
END IF;
BEGIN
SELECT HDLNR
INTO myZHdlNr
FROM FIRMAPARAM
WHERE F2GOZENTRALE='W'
AND ROWNUM=1;
EXCEPTION WHEN OTHERS THEN myZHdlNr:=NULL;
END;
IF myZHdlNr IS NULL
THEN RETURN;
END IF;
BEGIN
SELECT AUFTRNR
INTO myAuftrNr
FROM AUFTRAG
WHERE HDLNR=myZHdlNr
AND AUFTRNREXT=m_AuftrnrExt;
EXCEPTION
WHEN OTHERS THEN myAuftrNr:=NULL;
END;
IF myAuftrNr IS NULL
THEN RETURN;
END IF;
UPDATE AUFTRAG SET
KENNUNG = m_neukenn,
FILRECHNUNG = m_Standort,
MENDE = TO_DATE(p_MENDE,Loc_NLSDate),
MEUHR = TO_DATE(p_MENDEUHR,Loc_NLSTime),
BENDE = TO_DATE(p_MENDE,Loc_NLSDate),
BEUHR = TO_DATE(p_MENDEUHR,Loc_NLSTime),
ANKM = m_AufKm,
KRAFTUMSATZ = m_KraftUmsatz,
BETANKUMSATZ= m_BetankUmsatz,
SORTE = m_Sorte,
LITER = m_Liter,
SONSTUMSATZ = m_SonstUmsatz,
AUSLAGENTEXT= p_SONSTBEMERK,
SCHADEN1 = p_SCHADEN1,
SCHADEN2 = p_SCHADEN2,
-- ERFDATUM = ERFUHR,
ERFUHR = XTool.GetSysDate(p_HDLNR),
DFU = 'F'
WHERE HDLNR =myZHdlNr AND
AUFTRNR=myAuftrNr;
IF myZHdlNr=p_HDLNR
THEN UPDATE AUFTRAG
SET ERFASSER= p_USERNR
WHERE HDLNR = myZHdlNr
AND AUFTRNR = myAuftrNr;
END IF;
END;
PROCEDURE DoTankkosten IS
my_TankInhalt INTEGER;
my_Treibstoff INTEGER;
my_Preis FLOAT;
my_ErrorCode INTEGER;
my_ErrorText VARCHAR2(100);
BEGIN
IF p_FUELLMENGE IS NULL
THEN RETURN;
END IF;
SELECT TANKINHALT, TREIBSTOFF
INTO my_TankInhalt, my_Treibstoff
FROM FAHRZEUG
WHERE FAHRGESTELL=m_Fahrgestell
AND ZULASSUNG =m_Zulassung;
IF m_MvArt IN ('MV1','MV4')
THEN em_back.emz_utl.get_GKTreibstoff(p_gkprlnr => m_GkPrlNr, -- Muss in MV-Satz
p_treibstfnr=> my_Treibstoff,
p_datum => SYSDATE,
p_Preis => my_Preis,
p_errorCode => my_ErrorCode,
p_errorText => my_ErrorText);
ELSE BEGIN
SELECT PREIS
INTO my_Preis
FROM KRAFTSTOFF
WHERE HDLNR=p_HDLNR
AND FILNR=p_FILNR
AND SORTE=my_Treibstoff
AND VONDATUM<=TRUNC(XTool.GetSysDate(p_HDLNR))
AND BISDATUM>=TRUNC(XTool.GetSysDate(p_HDLNR))
AND ROWNUM=1;
EXCEPTION WHEN OTHERS THEN my_Preis:=0.0;
END;
END IF;
m_Liter :=my_TankInhalt - (my_TankInhalt * (NVL(p_FUELLMENGE,0) / 8));
m_Sorte :=my_Treibstoff;
m_KraftUmsatz:=m_Liter*my_Preis;
-- m_KraftBrutto:='W';
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END;
BEGIN
IF p_FUNC<>'APP' THEN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin(p_HDLNR => p_HDLNR);
RETURN;
END IF;
END IF;
myerr:='1';
SELECT KONZERNZUGR, MWSTKRAFT, MWSTSONST
INTO m_konzernzugr, m_MwStKraft, m_MwStSonst
FROM FIRMA
WHERE HDLNR=p_AHDLNR;
pl_LCode:=SUBSTR(m_konzernzugr,5,2);
myerr:='2';
SELECT ABKM, MBEGINN, MBUHR, BBEGINN, BBUHR, FAHRGESTELL, ZULASSUNG, KENNZ,
FILRECHNUNG, FZGVERBR, FZGABHL, TRPZENTRALE, B2BHDLNR, DMSSOURCE, AUFTRNREXT, ROBGRUND, ZAHLUNGSART, OBUTXFER,
MVART, GKPRLNR, LANGZEIT, EINHEIT1, FAKTOR1
INTO m_AbKm, m_mbeginn, m_mbuhr, m_bbeginn, m_bbuhr, m_Fahrgestell, m_Zulassung, m_Kennz,
m_filrechnung, m_FzgVerbr, m_FzgAbhl, m_TrpZentrale, m_B2BHdlNr, m_DmsSource, m_AuftrNrExt, m_RobGrund, m_ZahlArt, m_ObuTxFer,
m_MvArt, m_GkPrlNr, m_LangZeit, m_Einh1, m_Faktor1
FROM AUFTRAG
WHERE HDLNR =p_AHDLNR AND
KENNUNG=p_KENNUNG AND
AUFTRNR=p_AUFTRNR;
IF SUBSTR(m_konzernzugr,5,2)='17'
THEN m_Standort:=m_filrechnung;
END IF;
IF m_B2BHdlNr=''
THEN m_B2BHdlNr:=NULL;
END IF;
IF p_KENNUNG='V'
THEN m_neukenn :='W';
-- m_bende :=p_BENDE;
-- m_bendeuhr:=p_BENDEUHR;
END IF;
IF m_MvArt='MBI'
THEN m_NeuKenn:='C';
END IF;
-- Steuerung via Parameter
-- IF (m_ZahlArt='8') AND (m_ObuTXFer IS NOT NULL)
-- THEN Free2Go.SendRes(p_MIETE6NR => p_HDLNR,
-- p_AUFTRNR => p_AUFTRNR,
-- p_FUNCTION => 'close');
-- Xtool.Meldung(p_HDLNR,Xtool.OutMeldung(p_HDLNR,my_ProgName,7,''));
-- RETURN;
-- END IF;
IF m_FzgAbhl='W'
THEN GetTrapoMaxKm;
END IF;
-- IF m_ankm<=m_abkm THEN m_errortext:='* Ankunft-km muss gr��r als Abfahrt-km sein'; END IF;
IF p_MENDE IS NULL OR
p_MENDEUHR IS NULL
THEN Xtool.Meldung(p_HDLNR,Xtool.OutMeldung(p_HDLNR,'generell',18,'KurzRueck'));
RETURN;
END IF;
myerr:='3';
IF m_AnKm < m_AbKm OR
m_AnKm < m_NeuAbKm
THEN m_errortext:='* ' || Xtool.OutMeldung(p_HDLNR,'mietkurz',1,'');
END IF;
IF m_ANKM > m_MAXKM
THEN m_errortext:='* ' || Xtool.OutMeldung(p_HDLNR,'mietkurz',6,'('||TO_CHAR(m_maxKm)||'km)');
END IF;
myerr:='a';
IF TO_DATE(p_MENDE || p_MENDEUHR,loc_NLSDate || loc_NLSTime) <
TO_DATE(TO_CHAR(m_MBEGINN,loc_NLSDate) || TO_CHAR(m_MBUHR,loc_NLSTime),loc_NLSDate || loc_NLSTime)
THEN m_errortext:='* ' || Xtool.OutMeldung(p_HDLNR,'mietkurz',2,'');
END IF;
IF TO_DATE(p_MENDE || p_MENDEUHR,loc_NLSDate || loc_NLSTime) > XTool.GetSysDate(p_HDLNR)
THEN m_errortext:='* ' || Xtool.OutMeldung(p_HDLNR,'mietkurz',3,'');
END IF;
myerr:='b';
-- IF TO_DATE(p_MENDE || p_MENDEUHR,loc_NLSDate || loc_NLSTime) <
-- TO_DATE(TO_CHAR(m_BBEGINN,loc_NLSDate) || TO_CHAR(m_BBUHR,loc_NLSTime),loc_NLSDate || loc_NLSTime)
-- THEN m_errortext:='* ' || Xtool.OutMeldung(p_HDLNR,'mietkurz',4,'');
-- END IF;
myerr:='c';
IF Xtool.GetPlausi(15,p_HdlNr,pl_LCode,pl_VONDATUM,pl_DELTAWERT,pl_MAXWERT,pl_MINWERT) THEN
IF m_KraftUmsatz > pl_MAXWERT THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',2,''); END IF;
END IF;
IF Xtool.GetPlausi(16,p_HdlNr,pl_LCode,pl_VONDATUM,pl_DELTAWERT,pl_MAXWERT,pl_MINWERT) THEN
IF m_SonstUmsatz > pl_MAXWERT THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',3,''); END IF;
END IF;
-- IF ABS(TO_DATE(p_BENDE || p_BENDEUHR,my_Dat || my_Tim) -
-- TO_DATE(p_MENDE || p_MENDEUHR,my_Dat || my_Tim))>1.0
-- THEN m_errortext:='* Mietende und Berechnungsende d�rfen sich nicht mehr als 24 Std unterscheiden';
-- END IF;
IF (m_errortext IS NULL) AND
(m_B2BHdlNr IS NULL) AND
(p_KENNUNG<>'V')
THEN AUFTRTOOLS.ChkMiete(p_AHDLNR,p_AFILNR,p_USERNR,p_KENNUNG,p_AUFTRNR,m_Fahrgestell,NULL,
m_MBEGINN, m_MBUHR, TO_DATE(p_MENDE,Loc_NLSDate), TO_DATE(p_MENDEUHR,Loc_NLSTime),
m_ERRORTEXT);
IF m_errortext='#'
THEN m_errortext:=NULL;
END IF;
END IF;
AUFTRTOOLS.DoUpdateBemIntern(p_HDLNR,p_USERNR,p_AUFTRNR,p_BEMINTERN);
IF m_errortext IS NOT NULL
THEN IF p_FUNC='0'
THEN IF p_KENNUNG='V'
THEN Auftraege.ShowAuftr(p_HDLNR,p_FILNR,p_USERNR,p_AHDLNR,p_AFILNR,
p_KENNUNG,p_KENNUNG,p_AUFTRNR,'1','vfwrueck',
m_errortext);
ELSE Auftraege.ShowAuftr(p_HDLNR,p_FILNR,p_USERNR,p_AHDLNR,p_AFILNR,
p_KENNUNG,p_KENNUNG,p_AUFTRNR,'1','mietkurz',
m_errortext);
END IF;
ELSE Auftraege.ShowAuftr(p_HDLNR,p_FILNR,p_USERNR,p_AHDLNR,p_AFILNR,
p_KENNUNG,p_KENNUNG,p_AUFTRNR,'1','mietabrech',
m_errortext);
END IF;
RETURN;
END IF;
myerr:='4';
IF m_FzgAbhl='W'
THEN FzgTransportStartKm;
END IF;
DoTankkosten;
IF m_KRAFTBRUTTO='W'
THEN m_KRAFTUMSATZ := round((m_KRAFTUMSATZ / (1 + (m_MwStKraft / 100))) * 100) / 100;
END IF;
IF p_BETANKBRUTTO='W'
THEN m_BETANKUMSATZ := round((m_BETANKUMSATZ / (1 + (m_MwStSonst / 100))) * 100) / 100;
END IF;
IF p_SONSTBRUTTO='W'
THEN m_SONSTUMSATZ := round((m_SONSTUMSATZ / (1 + (m_MwStSonst / 100))) * 100) / 100;
END IF;
AUFTRTOOLS.DoArcAuftr(p_AHDLNR,p_AFILNR,p_KENNUNG,p_AUFTRNR,p_USERNR);
UPDATE AUFTRAG SET
KENNUNG = m_neukenn,
FILRECHNUNG = m_Standort,
MENDE = TO_DATE(p_MENDE,Loc_NLSDate),
MEUHR = TO_DATE(p_MENDEUHR,Loc_NLSTime),
BENDE = TO_DATE(p_MENDE,Loc_NLSDate),
BEUHR = TO_DATE(p_MENDEUHR,Loc_NLSTime),
ANKM = m_AufKm,
KRAFTUMSATZ = m_KraftUmsatz,
SORTE = m_Sorte,
LITER = m_Liter,
SONSTUMSATZ = m_SonstUmsatz,
BETANKUMSATZ= m_BetankUmsatz,
AUSLAGENTEXT= p_SONSTBEMERK,
SCHADEN1 = p_SCHADEN1,
SCHADEN2 = p_SCHADEN2,
-- ERFDATUM = ERFUHR,
ERFASSER = p_USERNR,
ERFUHR = XTool.GetSysDate(p_HDLNR),
DFU = 'F'
WHERE HDLNR =p_AHDLNR AND
KENNUNG=p_KENNUNG AND
AUFTRNR=p_AUFTRNR;
UPDATE AUFTRZUB
SET KENNUNG =m_neukenn
WHERE HDLNR =p_HDLNR AND
AUFTRNR =p_AUFTRNR;
IF p_ABKM IS NOT NULL
THEN UPDATE AUFTRAG
SET ABKM = m_NeuAbKm
WHERE HDLNR = p_AHDLNR
AND KENNUNG = m_NeuKenn
AND AUFTRNR = p_AUFTRNR;
-- ggf. Km-Korrektur erzeugen
END IF;
IF p_MBEGINN IS NOT NULL AND
p_MBEGINNUHR IS NOT NULL
THEN UPDATE AUFTRAG
SET MBEGINN = TO_DATE(p_MBEGINN,Loc_NLSDate),
MBUHR = TO_DATE(p_MBEGINNUHR,Loc_NLSTime)
WHERE HDLNR = p_AHDLNR
AND KENNUNG = m_NeuKenn
AND AUFTRNR = p_AUFTRNR;
END IF;
-- CheckLangzeit
IF NVL(m_Langzeit,'F')='W'
THEN m_MietMin:=(TO_DATE(p_MENDE ||' '||p_MENDEUHR,Loc_NLSDate || ' ' || Loc_NLSTime)-
TO_DATE(TO_CHAR(m_MBeginn,'ddmmyyyy')||' '||TO_CHAR(m_MBUHR,'hh24mi'),'ddmmyyyy hh24mi'))*1440;
IF (m_Einh1=0 AND m_MietMin<m_Faktor1*60*24) OR -- Tag
(m_Einh1=1 AND m_MietMin<m_Faktor1*60) OR -- Std
(m_Einh1=2 AND m_MietMin<m_Faktor1) OR -- Min
(m_Einh1=3 AND m_MietMin<m_Faktor1*60*24*30) -- Mon
THEN UPDATE AUFTRAG
SET LANGZEIT='F'
WHERE HDLNR = p_AHDLNR
AND KENNUNG = m_NeuKenn
AND AUFTRNR = p_AUFTRNR;
ELSE UPDATE AUFTRAG
SET BEUHR=TO_DATE('23:59','hh24:mi')
WHERE HDLNR = p_AHDLNR
AND KENNUNG = m_NeuKenn
AND AUFTRNR = p_AUFTRNR;
END IF;
END IF;
DoUpdateZentralMv; -- Zentralauftrag NL
myerr:='5';
-- SELECT *
-- INTO Rec_Auftrag
-- FROM AUFTRAG
-- WHERE HDLNR =p_AHDLNR
-- AND KENNUNG=m_neukenn
-- AND AUFTRNR=p_AUFTRNR;
myerr:='6';
IF (m_B2BHdlNr IS NULL) AND
(m_fahrgestell<>'-') AND
(m_fahrgestell IS NOT NULL) AND
(NVL(m_FzgAbhl,'F')='F')
THEN SELECT HDLNR, STANDORT, MAXKM, ABMELDUNG
INTO m_FzHdlNr, m_OldStandOrt, m_FzMaxKm, m_FzAbmeldung
FROM FAHRZEUG
WHERE FAHRGESTELL= m_fahrgestell
AND ZULASSUNG = m_zulassung;
UPDATE FAHRZEUG SET
KMSTAND = m_ANKM,
STANDORT = m_Standort,
ZUSTANDORT = m_Standort,
PARKPLATZ = p_PARKPLATZ,
MIETTAGE = NVL(MIETTAGE,0) +
(TO_DATE(p_MENDE || p_MENDEUHR,Loc_NLSDate||Loc_NLSTime) -
TO_DATE(TO_CHAR(m_mbeginn,loc_NLSDate) || TO_CHAR(m_mbuhr,loc_NLSTime),Loc_NLSDate||Loc_NLSTime)),
BERTAGE = NVL(BERTAGE,0) +
(TO_DATE(p_MENDE || p_MENDEUHR,Loc_NLSDate||Loc_NLSTime) -
TO_DATE(TO_CHAR(m_bbeginn,Loc_NLSDate) || TO_CHAR(m_bbuhr,Loc_NLSTime),Loc_NLSDate||Loc_NLSTime)),
DFU = 'F'
WHERE FAHRGESTELL= m_fahrgestell
AND ZULASSUNG = m_zulassung;
IF APP_CONST.c_Func_FzSchaeden='F'
THEN UPDATE FAHRZEUG
SET UNFALL1 = p_SCHADEN1,
UNFALL2 = p_SCHADEN2
WHERE FAHRGESTELL= m_fahrgestell
AND ZULASSUNG = m_zulassung;
ELSE FAHRZEUGE.UpdateTextSchaeden(p_FZHDLNR => m_FzHdlNr,
p_FAHRGESTELL=> m_Fahrgestell,
p_ZULASSUNG => TO_CHAR(m_Zulassung,Loc_NLSDate),
p_USERNR => p_USERNR,
p_UNFALL1 => p_SCHADEN1,
p_UNFALL2 => p_SCHADEN2,
p_AUFTRNR => p_AUFTRNR,
p_AUSSTAMM => 'F');
END IF;
IF NVL(m_FzMaxKm,0)=0
THEN m_FzMaxKm:=99999999;
END IF;
IF APP_CONST.c_Func_FzSperre='W' AND
(m_AnKm>=m_FzMaxKm)
-- (m_AnKm>=m_FzMaxKm OR TRUNC(SYSDATE)>TRUNC(m_FzAbmeldung))
THEN UPDATE FAHRZEUG
SET GESPERRT = 'W'
WHERE FAHRGESTELL= m_fahrgestell
AND ZULASSUNG = m_zulassung;
END IF;
IF m_Standort<>m_OldStandOrt
THEN INSERT INTO FAHRZSTDORT
(FAHRGESTELL, DATUM, HDLNR, FILNR)
VALUES
(m_Fahrgestell,SYSDATE,SUBSTR(m_Standort,1,3)||SUBSTR(m_Standort,5,5),SUBSTR(m_Standort,11,4));
END IF;
END IF;
myerr:='7';
UPDATE ZUBEHOER SET
AUFTRNR = NULL,
PPREIS = 0.0
WHERE HDLNR =p_AHDLNR AND
AUFTRNR=p_AUFTRNR;
DELETE FROM RECHNUNG
WHERE HDLNR=p_HDLNR AND
RECHNR='-' || p_USERNR;
DELETE FROM RECHADR
WHERE HDLNR=p_HDLNR AND
RECHNR='-' || p_USERNR;
DELETE FROM RECHZUB
WHERE HDLNR=p_HDLNR AND
RECHNR='-' || p_USERNR;
myerr:='8';
COMMIT;
IF p_FUNC='APP'
THEN RETURN;
END IF;
IF p_FUNC<>'13' -- Sammelr�cknahme
THEN IF LENGTH(m_RobGrund)>0-- wenn ROB, dann tmp-Abrechnung und Meldung
THEN SELECT *
INTO Rec_Auftrag
FROM AUFTRAG
WHERE HDLNR =p_AHDLNR AND
KENNUNG=m_NeuKenn AND
AUFTRNR=p_AUFTRNR;
ErfRechnung(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_FUNC => '0',
p_AHDLNR => Rec_Auftrag.HDLNR,
p_AFILNR => Rec_Auftrag.FILNR,
p_KENNUNG => Rec_Auftrag.KENNUNG,
p_AUFTRNR => Rec_Auftrag.AUFTRNR,
p_DEBITOR => Rec_Auftrag.DEBITOR,
p_BBEGINN => TO_CHAR(Rec_AUFTRAG.BBEGINN,Loc_NLSDate),
p_BBEGINNUHR => TO_CHAR(Rec_Auftrag.BBUHR,Loc_NLSTime),
p_BENDE => TO_CHAR(Rec_AUFTRAG.BENDE,Loc_NLSDate),
p_BENDEUHR => TO_CHAR(Rec_AUFTRAG.BEUHR,Loc_NLSTime),
p_ABKM => Rec_Auftrag.ABKM,
p_ANKM => Rec_Auftrag.ANKM,
p_TARIFFZART => Rec_Auftrag.FZTARIFFZART,
p_BERECHGRP => Rec_Auftrag.BERECHGRP,
p_TARIFTYP => Rec_Auftrag.TARIFTYP,
p_ZAHLUNGSART=> Rec_Auftrag.ZAHLUNGSART,
p_RABATT => Rec_Auftrag.RABATT,
p_RABATTZL => Rec_Auftrag.RABATTZL,
--p_ROBREGRUND => Rec_Auftrag.ROBGRUND,
p_KRAFTSTOFF => TO_CHAR(Rec_AUFTRAG.KRAFTUMSATZ,Loc_NLSBetr,Loc_NLSWert),
p_LITER => TO_CHAR(Rec_AUFTRAG.LITER,Loc_NLSBetr,Loc_NLSWert),
p_SORTE => TO_CHAR(Rec_Auftrag.SORTE),
p_BETANKUNG => TO_CHAR(Rec_AUFTRAG.BETANKUMSATZ,Loc_NLSBetr,Loc_NLSWert),
p_SONSTIGE => TO_CHAR(Rec_Auftrag.SONSTUMSATZ,Loc_NLSBetr,Loc_NLSWert),
p_SONSTBEMERK=> Rec_Auftrag.AUSLAGENTEXT,
p_NURFKM => 'F',
p_MITZWI => 'W',
p_MITZUB => 'W',
p_MITLST => 'W',
p_MITANZ => 'W',
p_ROBTMP => 'W');
END IF;
IF p_FUNC='0' OR m_MvArt='MBI'
THEN IF p_KENNUNG='V'
THEN Auftraege.ShowAuftr(p_HDLNR,p_FILNR,p_USERNR,p_AHDLNR,p_AFILNR,
'W','W',p_AUFTRNR,'1','mietprint',m_errortext);
ELSE Xtool.Meldung(p_HDLNR,Xtool.OutMeldung(p_HDLNR,'mietkurz',5,''));
END IF;
ELSE IF p_FUNC='14' -- Fahrzeugwechsel
THEN Auftraege.ShowAuftr(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => p_AHDLNR,
p_AFILNR =>p_AFILNR,
p_AUFART => 'B',
p_KENNUNG=> 'B',
p_AUFTRNR=> p_AUFTRNR,
p_FUNC => p_FUNC,
p_XSL => 'fzwechsel');
ELSE IF m_MvArt='MB4'
THEN Xtool.Meldung(p_HDLNR,Xtool.OutMeldung(p_HDLNR,'mietkurz',5,''));
ELSE Auftraege.ShowAuftr(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => p_AHDLNR,
p_AFILNR =>p_AFILNR,
p_AUFART => 'B',
p_KENNUNG => 'B',
p_AUFTRNR => p_AUFTRNR,
p_FUNC => '1',
p_XSL => 'mietabrech',
p_ERRORTEXT=> m_errortext);
END IF;
END IF;
END IF;
END IF;
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END KurzRueck;
/******************************************************************************
NAME: Rechnungen.ErfRechnung
PURPOSE: Abrechnung, Erfassung der Abrechnungsdaten
Date: 07.11.2006/24.07.2017
*******************************************************************************/
PROCEDURE ErfRechnung(p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_FUNC VARCHAR2,
p_AHDLNR VARCHAR2,
p_AFILNR VARCHAR2,
p_KENNUNG VARCHAR2,
p_AUFTRNR VARCHAR2,
p_DEBITOR VARCHAR2,
p_BBEGINN VARCHAR2,
p_BBEGINNUHR VARCHAR2,
p_BENDE VARCHAR2,
p_BENDEUHR VARCHAR2,
p_ABKM VARCHAR2,
p_ANKM VARCHAR2,
p_TARIFFZART VARCHAR2,
p_BERECHGRP VARCHAR2,
p_TARIFTYP VARCHAR2 DEFAULT NULL,
p_TARIFAUS1 VARCHAR2 DEFAULT NULL,
p_TARIFAUS2 VARCHAR2 DEFAULT NULL,
p_TARIFAUS3 VARCHAR2 DEFAULT NULL,
p_TARIFAUS4 VARCHAR2 DEFAULT NULL,
p_UNFALLERSATZ VARCHAR2 DEFAULT 'F',
p_GDVFLAG VARCHAR2 DEFAULT 'F',
p_ZAHLUNGSART VARCHAR2 DEFAULT NULL,
p_RABATT VARCHAR2 DEFAULT NULL,
p_RABATTZL VARCHAR2 DEFAULT NULL,
p_AUTHCODE VARCHAR2 DEFAULT NULL,
p_ROBREGRUND VARCHAR2 DEFAULT NULL,
p_BEMROB VARCHAR2 DEFAULT NULL,
p_KRAFTSTOFF VARCHAR2 DEFAULT NULL,
p_KRAFTBRUTTO VARCHAR2 DEFAULT NULL,
p_LITER VARCHAR2 DEFAULT NULL,
p_SORTE VARCHAR2 DEFAULT NULL,
p_BETANKUNG VARCHAR2 DEFAULT NULL,
p_BETANKBRUTTO VARCHAR2 DEFAULT NULL,
p_SONSTIGE VARCHAR2 DEFAULT NULL,
p_SONSTBRUTTO VARCHAR2 DEFAULT NULL,
p_SONSTBEMERK VARCHAR2 DEFAULT NULL,
p_BEMERKUNG21 VARCHAR2 DEFAULT NULL,
p_BEMERKUNG22 VARCHAR2 DEFAULT NULL,
p_BEMERKUNG23 VARCHAR2 DEFAULT NULL,
p_BEMERKUNG24 VARCHAR2 DEFAULT NULL,
p_BEMERKUNG25 VARCHAR2 DEFAULT NULL,
p_BEMERKUNG26 VARCHAR2 DEFAULT NULL,
p_BEMINTERN VARCHAR2 DEFAULT NULL,
p_ABWRECH VARCHAR2 DEFAULT NULL,
p_OPTMP VARCHAR2 DEFAULT NULL,
p_GRUNDBETRAG VARCHAR2 DEFAULT NULL,
p_PREIS1 VARCHAR2 DEFAULT NULL,
p_FAKTOR1 VARCHAR2 DEFAULT NULL,
p_EINHEIT1 VARCHAR2 DEFAULT NULL,
p_MEHRFACH VARCHAR2 DEFAULT 'F',
p_INCLANZKM1 VARCHAR2 DEFAULT NULL,
p_DMKM VARCHAR2 DEFAULT NULL,
p_INCLKM1 VARCHAR2 DEFAULT 'F',
p_DMCDW VARCHAR2 DEFAULT NULL,
p_INCLCDW VARCHAR2 DEFAULT 'F',
p_DMPAI VARCHAR2 DEFAULT NULL,
p_INCLPAI VARCHAR2 DEFAULT 'F',
p_PREIS2 VARCHAR2 DEFAULT NULL,
p_FAKTOR2 VARCHAR2 DEFAULT NULL,
p_EINHEIT2 VARCHAR2 DEFAULT NULL,
p_INCLANZKM2 VARCHAR2 DEFAULT NULL,
p_DMCDW2 VARCHAR2 DEFAULT NULL,
p_INCLCDW2 VARCHAR2 DEFAULT 'F',
p_DMPAI2 VARCHAR2 DEFAULT NULL,
p_INCLPAI2 VARCHAR2 DEFAULT 'F',
p_MANUELL VARCHAR2 DEFAULT 'F',
p_KULANZ VARCHAR2 DEFAULT NULL,
p_TARIFBEZ VARCHAR2 DEFAULT NULL,
p_STNRECHNR VARCHAR2 DEFAULT NULL,
p_NURFKM VARCHAR2 DEFAULT 'F',
p_MITZWI VARCHAR2 DEFAULT 'F',
p_MITZUB VARCHAR2 DEFAULT 'F',
p_MITLST VARCHAR2 DEFAULT 'F',
p_MITANZ VARCHAR2 DEFAULT 'F',
p_ZUSANLEASING VARCHAR2 DEFAULT NULL,
p_PPAUSCHAL VARCHAR2 DEFAULT NULL,
p_PART VARCHAR2 DEFAULT NULL,
p_PVONDATUM VARCHAR2 DEFAULT NULL,
p_PBISDATUM VARCHAR2 DEFAULT NULL,
p_VERMITTLER VARCHAR2 DEFAULT NULL,
p_POOLFLAG VARCHAR2 DEFAULT 'N',
p_ROBTMP VARCHAR2 DEFAULT 'F',
p_SHOWTRFALL VARCHAR2 DEFAULT NULL,
p_SHOWZBDALL VARCHAR2 DEFAULT NULL,
p_KRDBANK VARCHAR2 DEFAULT NULL,
p_KRDGENNR VARCHAR2 DEFAULT NULL,
p_KRDWECHSEL VARCHAR2 DEFAULT NULL,
p_HSTSPLGRUND VARCHAR2 DEFAULT NULL,
p_HSTBENDE VARCHAR2 DEFAULT NULL,
p_HSTBENDEUHR VARCHAR2 DEFAULT NULL,
p_HSTKM VARCHAR2 DEFAULT NULL,
p_SILENT VARCHAR2 DEFAULT NULL,
x INTEGER DEFAULT 0,
y INTEGER DEFAULT 0) IS
Rec_Auftrag AUFTRAG%ROWTYPE;
Rec_Trans TRANSPOR%ROWTYPE;
Rec_Basis6 TARIF6%ROWTYPE;
Rec_FirmaKto FIRMAKTO%ROWTYPE;
Rec_FirmaTmpl FIRMAKTOTEMPL%ROWTYPE;
Rec_RechAdr RECHADR%ROWTYPE;
my_ProgName VARCHAR2(20):='ErfRechnung';
my_Pos INTEGER;
my_rechnr INTEGER:=0;
my_liefnr INTEGER:=0;
my_rechart VARCHAR2(1):='R';
my_Referenz INTEGER:=0;
my_ReferenzArt VARCHAR2(01);
my_HdlNr VARCHAR2(8):=p_HDLNR;
my_RobTmp VARCHAR2(1):=p_ROBTMP;
my_Zahlungsart VARCHAR2(2):=p_ZAHLUNGSART;
my_HatFzKst VARCHAR2(1);
my_mwstmiet FLOAT :=0.0;
my_erlmiet INTEGER:=0;
my_erlkm INTEGER:=0;
my_erlschmal INTEGER:=0;
my_erlschmal1 INTEGER:=0;
my_erlschmal2 INTEGER:=0;
my_mwstkraft FLOAT :=0.0;
my_mwstkraftorg FLOAT :=0.0;
my_erlkraft INTEGER:=0;
my_erlbetank INTEGER:=0;
my_mwstsonst FLOAT :=0.0;
my_mwstsonstorg FLOAT :=0.0;
my_erlsonst INTEGER:=0;
my_erlsonstfrei INTEGER:=0;
my_ktomwst INTEGER:=0;
my_ktomwst2 INTEGER:=0;
my_mwstverspai FLOAT :=0.0;
my_mwstverscdw FLOAT :=0.0;
my_mwstverstp FLOAT :=0.0;
my_MWSTLANG FLOAT :=16;
my_TAGELANG FLOAT :=16;
my_erlvers INTEGER:=0;
my_erlmobi INTEGER:=0;
my_erlintern INTEGER:=0;
my_kmintern INTEGER:=0;
my_versintern INTEGER:=0;
my_sonstintern INTEGER:=0;
my_kraftintern INTEGER:=0;
my_betankintern INTEGER:=0;
my_ktoabwdeb INTEGER:=0;
my_fremdvwsoll INTEGER:=0;
my_fremdvwhaben INTEGER:=0;
my_provkonto INTEGER:=0;
my_Mk INTEGER:=0;
my_St INTEGER:=0;
my_Kst INTEGER:=0;
my_KstMobi INTEGER:=0;
my_Ak INTEGER:=0;
my_Kt INTEGER:=0;
my_MkA INTEGER:=0;
my_StA INTEGER:=0;
my_KstA INTEGER:=0;
my_AkA INTEGER:=0;
my_KtA INTEGER:=0;
my_MkFV INTEGER:=0;
my_StFV INTEGER:=0;
my_KstFV INTEGER:=0;
my_AkFV INTEGER:=0;
my_KtFV INTEGER:=0;
my_Ust INTEGER:=0;
my_ZahlTag INTEGER:=0;
my_KdZahlTag INTEGER:=0;
my_SepaZahlTag INTEGER:=0;
my_CntZwirech INTEGER:=0;
my_FzKst INTEGER:=0;
my_FzKt INTEGER:=0;
my_KdSEPADatum DATE;
my_Einzug VARCHAR2(01);
my_ZubLeistung VARCHAR2(01);
m_OldStandOrt VARCHAR2(14);
my_LastTransToken VARCHAR2(20);
my_LastPayToken VARCHAR2(40);
my_LastKrdBank INTEGER;
UhrStr1 VARCHAR2(5);
UhrStr2 VARCHAR2(5);
Std1 INTEGER :=0;
Std2 INTEGER :=0;
m_tmp VARCHAR2(100);
m_EchteTage INTEGER := 0;
m_ResteTage INTEGER := 0;
m_AbrTyp VARCHAR2(2) := 'MF';
m_AnzStd INTEGER := 0;
m_Dauer INTEGER := 0;
m_Rest INTEGER := 0;
m_FreiKm VARCHAR2(10):='';
m_FreiKm1 VARCHAR2(10):='';
m_BerKm INTEGER := 0;
m_ZwiRech VARCHAR2(01):='F';
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
Loc_NLSTime VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,2);
Loc_NLSWert VARCHAR2(30):=Xtool.GetNLS(p_HDLNR,3);
Loc_NLSBetrT VARCHAR2(12):=Xtool.GetNLS(p_HDLNR,6);
Loc_NLSBetr VARCHAR2(12):=Xtool.GetNLS(p_HDLNR,7);
m_AbKm INTEGER :=NVL(TO_NUMBER(p_ABKM,'9999999',Loc_NLSWert),0);
m_AnKm INTEGER :=NVL(TO_NUMBER(p_ANKM,'9999999',Loc_NLSWert),0);
m_Liter FLOAT :=NVL(TO_NUMBER(p_LITER,'999999D99',Loc_NLSWert),0);
m_ZwiRechKm INTEGER :=0;
m_VermUmsatz FLOAT := 0.0;
m_ErlSchmal FLOAT := 0.0;
m_ErlSchmal1 FLOAT := 0.0;
m_ErlSchmal2 FLOAT := 0.0;
m_KmUmsatz FLOAT := 0.0;
m_CDWUmsatz FLOAT := 0.0;
m_PAIUmsatz FLOAT := 0.0;
m_TrpUmsatz FLOAT := 0.0;
m_KraftUmsatz FLOAT := NVL(TO_NUMBER(p_KRAFTSTOFF,Loc_NLSBetr,Loc_NLSWert),0);
m_BetankUmsatz FLOAT := NVL(TO_NUMBER(p_BETANKUNG,Loc_NLSBetr,Loc_NLSWert),0);
m_SonstUmsatz FLOAT := NVL(TO_NUMBER(p_SONSTIGE,Loc_NLSBetr,Loc_NLSWert),0);
m_SonstUmsatzFr FLOAT := 0.0;
m_ZubUmsatz FLOAT := 0.0;
m_ZubUmsatzP FLOAT := 0.0;
m_ZubUmsatzFr FLOAT := 0.0;
m_ZubUmsatzPFr FLOAT := 0.0;
m_DlUmsatz FLOAT := 0.0;
m_DlUmsatzP FLOAT := 0.0;
m_DlUmsatzFr FLOAT := 0.0;
m_DlUmsatzPFr FLOAT := 0.0;
m_DlUmsatzA FLOAT := 0.0;
m_DlUmsatzAFr FLOAT := 0.0;
m_Rabatt FLOAT := NVL(TO_NUMBER(p_RABATT,'990'),0);
m_Gezahlt FLOAT := 0.0;
m_Rechbetrag FLOAT := 0.0;
m_MwSumme FLOAT := 0.0;
m_MwstBasis FLOAT := 0.0;
m_AltUmsatz FLOAT := 0.0;
m_AltKm FLOAT := 0.0;
m_AltSchmal FLOAT := 0.0;
m_AltSchmal1 FLOAT := 0.0;
m_AltSchmal2 FLOAT := 0.0;
m_AltCDW FLOAT := 0.0;
m_AltPAI FLOAT := 0.0;
m_AltTP FLOAT := 0.0;
m_AltKraft FLOAT := 0.0;
m_AltBetank FLOAT := 0.0;
m_AltZub FLOAT := 0.0;
m_AltDl FLOAT := 0.0;
m_AltZubFr FLOAT := 0.0;
m_AltDlFr FLOAT := 0.0;
m_AltSonst FLOAT := 0.0;
m_AltSonstFr FLOAT := 0.0;
m_AltMwst FLOAT := 0.0;
m_AltVtr FLOAT := 0.0;
m_Beitrag FLOAT := 0.0;
m_ProvBasis FLOAT := 0.0;
m_ProvSatz FLOAT := 0.0;
m_zw1 FLOAT := 0.0;
m_zw2 FLOAT := 0.0;
m_VertrSatz FLOAT := 0.0;
m_VertrBetr FLOAT := 0.0;
m_VtrKonto INTEGER:=0;
m_Basis INTEGER:=0;
m_DebName VARCHAR2(40) :='';
m_Debitor INTEGER :=0;
m_KST INTEGER :=0;
m_KSTFil INTEGER :=0;
m_GeschBer VARCHAR2(10);
m_GkRef FLOAT :=0.0;
m_GkTyp VARCHAR2(1):='';
m_Error VARCHAR2(20) :='';
m_mitmwst VARCHAR2(1) :='W';
m_mwstsl VARCHAR2(1) :='1';
m_GdvFlag VARCHAR2(1) := p_GDVFLAG;
m_AufGdvFlag VARCHAR2(1);
m_cnt INTEGER :=0;
m_cntRa INTEGER :=0;
m_CntMvRg INTEGER :=0;
m_tmpkennung VARCHAR2(1) := p_KENNUNG;
m_func VARCHAR2(6) := p_FUNC;
m_errortext VARCHAR2(300) := NULL;
-- my_Dat VARCHAR2(10) :=Loc_NLSDate;
-- my_Tim VARCHAR2( 7) :=Loc_NLSTime;
my_UsrRechNr INTEGER := 0;
my_TARIF VARCHAR2(20);
my_TARIFS VARCHAR2(20);
my_FZKLASSE VARCHAR2(2);
my_FZSTAT VARCHAR2(2);
my_FZOWNER VARCHAR2(12);
my_FZART VARCHAR2(4);
my_FZTARIFFZART VARCHAR2(01);
my_FZKTOTEMPL INTEGER;
my_F2GO VARCHAR2(2);
m_konzernzugr VARCHAR2( 8);
m_RobHdlNr VARCHAR2(08);
m_Name1 VARCHAR2(40);
m_Strasse VARCHAR2(40);
m_HausNr VARCHAR2(10);
m_PLZ VARCHAR2(10);
m_Ort VARCHAR2(40);
m_SteuerNr VARCHAR2(40);
m_Konto VARCHAR2(20);
m_Telefon VARCHAR2(20);
m_Land VARCHAR2( 2);
m_Vermittler FLOAT :=p_VERMITTLER;
m_FilSt INTEGER;
m_CashTyp INTEGER;
mp_TARIFBEZ VARCHAR2(40):=p_TARIFBEZ;
mp_TARIFTYP VARCHAR2(20):=p_TARIFTYP;
mp_STAFFELNR INTEGER :=0;
mp_PREISLISTE INTEGER :=0;
my_BERECHGRP VARCHAR2(01):=p_BERECHGRP;
my_BEMERKUNG21 VARCHAR2(60):=p_BEMERKUNG21;
my_BEMERKUNG22 VARCHAR2(60):=p_BEMERKUNG22;
my_BEMERKUNG23 VARCHAR2(60):=p_BEMERKUNG23;
my_BEMERKUNG24 VARCHAR2(60):=p_BEMERKUNG24;
my_BEMERKUNG25 VARCHAR2(60):=p_BEMERKUNG25;
my_BEMERKUNG26 VARCHAR2(60):=p_BEMERKUNG26;
my_ROBMEMO VARCHAR2(75):=p_BEMROB;
my_SchadenNr VARCHAR2(30);
my_versdeb INTEGER:=0;
my_VollKsk VARCHAR2(1);
my_VorSt VARCHAR2(2);
my_HAnrede VARCHAR2(30);
my_SAnrede VARCHAR2(30);
my_Sparte VARCHAR2(3);
my_HBJ DATE;
my_HDauer INTEGER;
my_Code VARCHAR2(04);
my_CodeNum INTEGER;
my_Message VARCHAR2(1000);
my_IntMessage VARCHAR2(1000);
my_TransToken VARCHAR2(20);
my_PayToken VARCHAR2(40);
my_DoArvato VARCHAR2(01):='F';
my_ZubDeb INTEGER:=0;
m_MinDauer INTEGER;
m_StdDauer INTEGER;
m_TagDauer INTEGER;
m_TarifOpt VARCHAR2(01);
m_HatRgDebAkt VARCHAR2(01);
m_HatMwstReihe VARCHAR2(01);
m_HatKtoTempl VARCHAR2(01);
-- Kapseln �ergabe der Daten nur wenn p_MANUELL='W'!!
mp_GRUND FLOAT := NVL(TO_NUMBER(p_GRUNDBETRAG,Loc_NLSBetr,Loc_NLSWert),0);
mp_PREIS1 FLOAT := NVL(TO_NUMBER(p_PREIS1,Loc_NLSBetr,Loc_NLSWert),0);
mp_FAKTOR1 INTEGER := NVL(p_FAKTOR1,0);
mp_EINHEIT1 INTEGER := NVL(p_EINHEIT1,0);
mp_INCLKM1 VARCHAR2(1) := p_INCLKM1;
mp_INCLANZKM1 INTEGER := NVL(p_INCLANZKM1,0);
mp_DMKM FLOAT := NVL(TO_NUMBER(p_DMKM,Loc_NLSBetr,Loc_NLSWert),0);
mp_DMCDW FLOAT := NVL(TO_NUMBER(p_DMCDW,Loc_NLSBetr,Loc_NLSWert),0);
mp_DMPAI FLOAT := NVL(TO_NUMBER(p_DMPAI,Loc_NLSBetr,Loc_NLSWert),0);
mp_INCLCDW VARCHAR2(1) := p_INCLCDW;
mp_INCLPAI VARCHAR2(1) := p_INCLPAI;
mp_MEHRFACH VARCHAR2(1) := p_MEHRFACH;
mp_PREIS2 FLOAT := NVL(TO_NUMBER(p_PREIS2,Loc_NLSBetr,Loc_NLSWert),0);
mp_FAKTOR2 INTEGER := NVL(p_FAKTOR2,0);
mp_EINHEIT2 INTEGER := NVL(p_EINHEIT2,0);
mp_INCLANZKM2 INTEGER := NVL(p_INCLANZKM2,0);
mp_DMCDW2 FLOAT := NVL(TO_NUMBER(p_DMCDW2,Loc_NLSBetr,Loc_NLSWert),0);
mp_DMPAI2 FLOAT := NVL(TO_NUMBER(p_DMPAI2,Loc_NLSBetr,Loc_NLSWert),0);
mp_INCLCDW2 VARCHAR2(1) := p_INCLCDW2;
mp_INCLPAI2 VARCHAR2(1) := p_INCLPAI2;
mp_KULANZ FLOAT := NVL(p_KULANZ,0);
mp_MAXRABATT FLOAT;
mp_STNRECHNR VARCHAR2(20):= p_STNRECHNR;
z_Nr INTEGER;
z_Preis FLOAT;
z_SplitPreis FLOAT;
z_MaxSumme FLOAT;
z_Pauschal VARCHAR2(1);
z_Leistung VARCHAR2(1);
z_Bezeichnung VARCHAR2(60);
z_Maxtage INTEGER;
z_RobFlag VARCHAR2(01);
z_VonDatum DATE;
z_BisDatum DATE;
z_MwstFrei VARCHAR2(01);
z_ErloesKonto INTEGER;
z_ErloesKontoInt INTEGER;
pl_Nr VARCHAR2(2);
pl_LCode VARCHAR2(2);
pl_DELTAWERT FLOAT;
pl_MAXWERT FLOAT;
pl_MINWERT FLOAT;
pl_PFLICHT VARCHAR2(1);
pl_VONDATUM DATE;
pl_AUSNAHME BOOLEAN;
pl_RESULT BOOLEAN;
PROCEDURE HolStdText IS
CURSOR curbemerkung IS
SELECT * FROM BEMERK
WHERE HDLNR=p_HDLNR AND
NR<100;
BEGIN
FOR rec_bemerkung IN curbemerkung LOOP
IF rec_bemerkung.STDREC='W'
THEN my_Bemerkung21:=rec_bemerkung.TEXT1;
my_Bemerkung22:=rec_bemerkung.TEXT2;
my_Bemerkung23:=rec_bemerkung.TEXT3;
my_Bemerkung24:=rec_bemerkung.TEXT4;
my_Bemerkung25:=rec_bemerkung.TEXT5;
my_Bemerkung26:=rec_bemerkung.TEXT6;
END IF;
END LOOP;
END;
PROCEDURE UpdateBemIntern IS
BEGIN
IF p_BEMINTERN IS NOT NULL
THEN INSERT INTO AuftrMemo
(HDLNR,AUFTRNR,DATUM,ERFASSER,MEMO)
VALUES
(Rec_Auftrag.HDLNR,Rec_Auftrag.AUFTRNR,SYSDATE,p_USERNR,SUBSTR(p_BEMINTERN,1,80));
END IF;
END;
FUNCTION doCheckFlags RETURN BOOLEAN IS
my_MITANZ INTEGER:=0;
my_MITZWI INTEGER:=0;
my_MITZUB INTEGER:=0;
BEGIN
IF p_MITANZ='W'
THEN my_MITANZ:=1;
ELSE SELECT COUNT(rechnr) INTO my_MITANZ FROM RECHNUNG
WHERE HDLNR =p_HDLNR AND
AUFTRNR=p_AUFTRNR AND
STNFLAG IS NULL AND
MITANZ ='W';
END IF;
IF p_MITZWI='W' OR p_MITZWI='F' -- fja, noch zu kl�n
THEN my_MITZWI:=1;
ELSE SELECT COUNT(rechnr) INTO my_MITZWI FROM RECHNUNG
WHERE HDLNR =p_HDLNR AND
AUFTRNR=p_AUFTRNR AND
STNFLAG IS NULL AND
MITZWI ='W';
END IF;
IF p_MITZUB='W'
THEN my_MITZUB:=1;
ELSE SELECT COUNT(rechnr) INTO my_MITZUB FROM RECHNUNG
WHERE HDLNR =p_HDLNR AND
AUFTRNR=p_AUFTRNR AND
STNFLAG IS NULL AND
MITZUB ='W';
END IF;
IF my_MITANZ>0 AND my_MITZUB>0 AND my_MITZWI>0
THEN RETURN TRUE;
ELSE RETURN FALSE;
END IF;
END;
FUNCTION doBestRate(lp_TARIFTYP VARCHAR2) RETURN FLOAT IS
loc_konzernzugr VARCHAR2(8);
loc_Betrag FLOAT;
loc_OK BOOLEAN;
loc_WoTag INTEGER:=TO_NUMBER(TO_CHAR(Rec_Auftrag.MBEGINN,'d'));
BEGIN
IF LENGTH(lp_TARIFTYP)<8 -- Ist Shit
THEN RETURN -1;
END IF;
IF SUBSTR(lp_TARIFTYP,6,1)<'8'THEN SELECT KONZERNZUGR INTO loc_konzernzugr FROM FIRMA WHERE HDLNR=p_AHDLNR; END IF;
IF SUBSTR(lp_TARIFTYP,6,1)='8'THEN loc_konzernzugr:=p_AHDLNR; END IF;
IF SUBSTR(lp_TARIFTYP,6,1)='9'THEN SELECT KETTENKOPF INTO loc_konzernzugr FROM FIRMA WHERE HDLNR=p_AHDLNR; END IF;
IF loc_konzernzugr='' OR
loc_konzernzugr IS NULL
THEN loc_konzernzugr:=p_AHDLNR;
END IF;
BEGIN
SELECT *
INTO Rec_Basis6
FROM TARIF6
WHERE HDLNR =loc_konzernzugr
AND NR =lp_TARIFTYP
AND Rec_Auftrag.MBEGINN>=VONDATUM
AND Rec_Auftrag.MBEGINN<=BISDATUM;
EXCEPTION
WHEN OTHERS THEN RETURN -2;
END;
IF SUBSTR(Rec_Basis6.ANMIETUNG,loc_WoTag,1)<>'1'
THEN RETURN -3;
END IF;
AUFTRTOOLS.DoRechnen(p_BBEGINN => TO_DATE(p_BBEGINN,Loc_NLSDate),
p_BBUHR => p_BBEGINNUHR,
p_BENDE => TO_DATE(p_BENDE,Loc_NLSDate),
p_BEUHR => p_BENDEUHR,
p_MEHRFACH => Rec_Basis6.MEHRFACH,
p_EINHEIT1 => Rec_Basis6.EINHEIT1,
p_EINHEIT2 => Rec_Basis6.EINHEIT2,
p_FAKTOR1 => Rec_Basis6.FAKTOR1,
p_FAKTOR2 => Rec_Basis6.FAKTOR2,
p_INCLKM1 => Rec_Basis6.INCLKM1,
p_ANKM => m_ANKM,
p_ABKM => m_ABKM,
p_INCLANZKM1=> Rec_Basis6.INCLANZKM1,
p_INCLANZKM2=> Rec_Basis6.INCLANZKM2,
p_KULANZ => mp_KULANZ,
p_LANGZEIT => Rec_Auftrag.LANGZEIT,
p_ZWIRECH => 'F',
p_ABRTYP => m_AbrTyp,
p_BERKM => m_BerKm,
p_ANZSTD => m_AnzStd,
p_ECHTETAGE => m_EchteTage,
p_DAUER => m_Dauer,
p_REST => m_Rest,
p_FREIKM => m_FreiKm,
p_FREIKM1 => m_FreiKm1);
loc_Betrag:=Rec_Basis6.GRUNDBETRAG +
(m_Dauer * Rec_Basis6.PREIS1) + (m_Rest * Rec_Basis6.PREIS2) +
(m_BerKm * Rec_Basis6.DMKM);
IF Rec_Auftrag.CDW='W'
THEN loc_Betrag:=loc_Betrag+(m_Dauer * Rec_Basis6.DMCDW)+(m_Rest * Rec_Basis6.DMCDW2);
END IF;
IF Rec_Auftrag.PAI='W'
THEN loc_Betrag:=loc_Betrag+(m_Dauer * Rec_Basis6.DMPAI)+(m_Rest * Rec_Basis6.DMPAI2);
END IF;
-- Tarifoptimierung abfragen, ggf loc_Betrag=0
IF m_TarifOpt='W'
THEN loc_OK:=TRUE;
IF NVL(Rec_Basis6.OPTBMIN,0)>0
THEN IF m_MinDauer<NVL(Rec_Basis6.OPTVMIN,0) OR
m_MinDauer>NVL(Rec_Basis6.OPTBMIN,0)
THEN loc_Ok:=FALSE;
END IF;
END IF;
IF NVL(Rec_Basis6.OPTBSTD,0)>0
THEN IF m_StdDauer<NVL(Rec_Basis6.OPTVSTD,0) OR
m_StdDauer>NVL(Rec_Basis6.OPTBSTD,0)
THEN loc_Ok:=FALSE;
END IF;
END IF;
IF NVL(Rec_Basis6.OPTBTAG,0)>0
THEN IF m_TagDauer<NVL(Rec_Basis6.OPTVTAG,0) OR
m_TagDauer>NVL(Rec_Basis6.OPTBTAG,0)
THEN loc_Ok:=FALSE;
END IF;
END IF;
IF NOT loc_OK
THEN loc_Betrag:=0.0;
END IF;
END IF;
--
RETURN loc_Betrag;
END;
PROCEDURE getBestRate IS
loc_konzernzugr VARCHAR2(8);
loc_Best1 VARCHAR2(12);
loc_Best2 VARCHAR2(12);
loc_Best3 VARCHAR2(12);
loc_Best4 VARCHAR2(12);
loc_Best5 VARCHAR2(12);
loc_Summe FLOAT;
loc_Vgl FLOAT;
loc_Minimum VARCHAR2(12) :='';
BEGIN
IF (p_MANUELL='W') -- manuell eingegriffen
OR Rec_Auftrag.dmssource IN ('AM', 'O0') -- Kein BestRate wenn Online Reserviert wurde.
OR p_SILENT='W' -- Hintergrund, z.B. Fahrzeugwechsel
THEN RETURN;
END IF;
IF SUBSTR(p_TARIFTYP,6,1)<'8'THEN SELECT KONZERNZUGR INTO loc_konzernzugr FROM FIRMA WHERE HDLNR=p_AHDLNR; END IF;
IF SUBSTR(p_TARIFTYP,6,1)='8'THEN loc_konzernzugr:=p_AHDLNR; END IF;
IF SUBSTR(p_TARIFTYP,6,1)='9'THEN SELECT KETTENKOPF INTO loc_konzernzugr FROM FIRMA WHERE HDLNR=p_AHDLNR; END IF;
IF loc_konzernzugr='' OR
loc_konzernzugr IS NULL
THEN loc_konzernzugr:=p_AHDLNR;
END IF;
BEGIN
SELECT *
INTO Rec_Basis6
FROM TARIF6
WHERE HDLNR =loc_konzernzugr
AND NR =mp_TarifTyp
AND STAFFELNR=mp_StaffelNr
AND Rec_Auftrag.MBEGINN>=VONDATUM
AND Rec_Auftrag.MBEGINN<=BISDATUM;
EXCEPTION
WHEN OTHERS THEN
--10.03.2017 T.Brauer -> nach Ausbau Ermittlung Standardtarife f�r Gro�unden mit GKPreisliste, gesonderte Ermittlung Tarifbezeichnung
IF rec_Auftrag.GKREF is not NULL THEN
mp_TARIFBEZ:=rec_Auftrag.TARIFBEZ;
ELSE
mp_TARIFBEZ:='?';
END IF;
RETURN;
END;
mp_TARIFBEZ :=Rec_Basis6.BEMERKUNG;
mp_GRUND :=Rec_Basis6.GRUNDBETRAG;
mp_PREIS1 :=Rec_Basis6.PREIS1;
mp_FAKTOR1 :=Rec_Basis6.FAKTOR1;
mp_EINHEIT1 :=Rec_Basis6.EINHEIT1;
mp_INCLANZKM1 :=Rec_Basis6.INCLANZKM1;
mp_INCLKM1 :=Rec_Basis6.INCLKM1;
mp_DMKM :=Rec_Basis6.DMKM;
mp_DMCDW :=Rec_Basis6.DMCDW;
mp_DMPAI :=Rec_Basis6.DMPAI;
mp_PREIS2 :=Rec_Basis6.PREIS2;
mp_FAKTOR2 :=Rec_Basis6.FAKTOR2;
mp_EINHEIT2 :=Rec_Basis6.EINHEIT2;
mp_INCLANZKM2 :=Rec_Basis6.INCLANZKM2;
mp_DMCDW2 :=Rec_Basis6.DMCDW2;
mp_DMPAI2 :=Rec_Basis6.DMPAI2;
mp_MEHRFACH :=Rec_Basis6.MEHRFACH;
mp_MAXRABATT :=Rec_Basis6.MAXRABATT;
IF (SUBSTR(mp_TARIFTYP,2,2)='06') OR -- neue Tarifstruktur Unfallersatz
(mp_TARIFTYP<>Rec_Auftrag.TARIFTYP) OR -- manuell anderer Tarif gew�t
(p_SILENT='W') -- Hintergrundverarbeitung
THEN RETURN;
END IF;
loc_Best1:=TRIM(Rec_Basis6.BESTRATE1);
loc_Best2:=TRIM(Rec_Basis6.BESTRATE2);
loc_Best3:=TRIM(Rec_Basis6.BESTRATE3);
loc_Best4:=TRIM(Rec_Basis6.BESTRATE4);
loc_Best5:=TRIM(Rec_Basis6.BESTRATE5);
AUFTRTOOLS.DoRechnen(p_BBEGINN => TO_DATE(p_BBEGINN,Loc_NLSDate),
p_BBUHR => p_BBEGINNUHR,
p_BENDE => TO_DATE(p_BENDE,Loc_NLSDate),
p_BEUHR => p_BENDEUHR,
p_MEHRFACH => Rec_Basis6.MEHRFACH,
p_EINHEIT1 => Rec_Basis6.EINHEIT1,
p_EINHEIT2 => Rec_Basis6.EINHEIT2,
p_FAKTOR1 => Rec_Basis6.FAKTOR1,
p_FAKTOR2 => Rec_Basis6.FAKTOR2,
p_INCLKM1 => Rec_Basis6.INCLKM1,
p_ANKM => m_ANKM,
p_ABKM => m_ABKM,
p_INCLANZKM1=> Rec_Basis6.INCLANZKM1,
p_INCLANZKM2=> Rec_Basis6.INCLANZKM2,
p_KULANZ => mp_KULANZ,
p_LANGZEIT => Rec_Auftrag.LANGZEIT,
p_ZWIRECH => 'F',
p_ABRTYP => m_AbrTyp,
p_BERKM => m_BerKm,
p_ANZSTD => m_AnzStd,
p_ECHTETAGE => m_EchteTage,
p_DAUER => m_Dauer,
p_REST => m_Rest,
p_FREIKM => m_FreiKm,
p_FREIKM1 => m_FreiKm1);
m_MinDauer:=m_AnzStd*60;
m_StdDauer:=m_AnzStd;
m_TagDauer:=m_EchteTage;
loc_Summe:=Rec_Basis6.GRUNDBETRAG +
(m_Dauer * Rec_Basis6.PREIS1) + (m_Rest * Rec_Basis6.PREIS2) +
(m_BerKm * Rec_Basis6.DMKM);
IF Rec_Auftrag.CDW='W'
THEN loc_Summe:=loc_Summe+(m_Dauer * Rec_Basis6.DMCDW)+(m_Rest * Rec_Basis6.DMCDW2);
END IF;
IF Rec_Auftrag.PAI='W'
THEN loc_Summe:=loc_Summe+(m_Dauer * Rec_Basis6.DMPAI)+(m_Rest * Rec_Basis6.DMPAI2);
END IF;
IF LENGTH(loc_Best1)>0
THEN loc_vgl:=doBestRate(loc_Best1);
IF loc_vgl>0 AND loc_summe>loc_vgl
THEN loc_minimum:=loc_Best1;
loc_summe :=loc_vgl;
END IF;
END IF;
IF LENGTH(loc_Best2)>0
THEN loc_vgl:=doBestRate(loc_Best2);
IF loc_vgl>0 AND loc_summe>loc_vgl
THEN loc_minimum:=loc_Best2;
loc_summe :=loc_vgl;
END IF;
END IF;
IF LENGTH(loc_Best3)>0
THEN loc_vgl:=doBestRate(loc_Best3);
IF loc_vgl>0 AND loc_summe>loc_vgl
THEN loc_minimum:=loc_Best3;
loc_summe :=loc_vgl;
END IF;
END IF;
IF LENGTH(loc_Best4)>0
THEN loc_vgl:=doBestRate(loc_Best4);
IF loc_vgl>0 AND loc_summe>loc_vgl
THEN loc_minimum:=loc_Best4;
loc_summe :=loc_vgl;
END IF;
END IF;
IF LENGTH(loc_Best5)>0
THEN loc_vgl:=doBestRate(loc_Best5);
IF loc_vgl>0 AND loc_summe>loc_vgl
THEN loc_minimum:=loc_Best5;
loc_summe :=loc_vgl;
END IF;
END IF;
IF LENGTH(loc_minimum)>0 -- einer gefunden, TarifParameter neu setzen
THEN loc_vgl:=doBestRate(loc_minimum);
mp_STAFFELNR :=Rec_Basis6.STAFFELNR;
mp_GRUND :=Rec_Basis6.GRUNDBETRAG;
mp_PREIS1 :=Rec_Basis6.PREIS1;
mp_FAKTOR1 :=Rec_Basis6.FAKTOR1;
mp_EINHEIT1 :=Rec_Basis6.EINHEIT1;
mp_INCLANZKM1 :=Rec_Basis6.INCLANZKM1;
mp_INCLKM1 :=Rec_Basis6.INCLKM1;
mp_DMKM :=Rec_Basis6.DMKM;
mp_DMCDW :=Rec_Basis6.DMCDW;
mp_DMPAI :=Rec_Basis6.DMPAI;
mp_PREIS2 :=Rec_Basis6.PREIS2;
mp_FAKTOR2 :=Rec_Basis6.FAKTOR2;
mp_EINHEIT2 :=Rec_Basis6.EINHEIT2;
mp_INCLANZKM2 :=Rec_Basis6.INCLANZKM2;
mp_DMCDW2 :=Rec_Basis6.DMCDW2;
mp_DMPAI2 :=Rec_Basis6.DMPAI2;
mp_TARIFBEZ :=Rec_Basis6.Bemerkung;
mp_TARIFTYP :=Rec_Basis6.NR;
mp_MEHRFACH :=Rec_Basis6.MEHRFACH;
mp_MAXRABATT :=Rec_Basis6.MAXRABATT;
END IF;
END;
PROCEDURE getGkTarif IS
my_KstVerbr FLOAT;
my_KeinPreis VARCHAR2(01);
my_BEnde DATE:=TO_DATE(p_BENDE,Loc_NLSDate);
my_BEUhr VARCHAR2(05):=p_BENDEUHR;
BEGIN
AUFTRTOOLS.DoRechnen(p_BBEGINN => TO_DATE(p_BBEGINN,Loc_NLSDate),
p_BBUHR => p_BBEGINNUHR,
p_BENDE => TO_DATE(p_BENDE,Loc_NLSDate),
p_BEUHR => p_BENDEUHR,
p_MEHRFACH => Rec_Auftrag.MEHRFACH,
p_EINHEIT1 => Rec_Auftrag.EINHEIT1,
p_EINHEIT2 => Rec_Auftrag.EINHEIT2,
p_FAKTOR1 => Rec_Auftrag.FAKTOR1,
p_FAKTOR2 => Rec_Auftrag.FAKTOR2,
p_INCLKM1 => Rec_Auftrag.INCLKM1,
p_ANKM => m_ANKM,
p_ABKM => m_ABKM,
p_INCLANZKM1=> Rec_Auftrag.INCLANZKM1,
p_INCLANZKM2=> Rec_Auftrag.INCLANZKM2,
p_KULANZ => Rec_Auftrag.KULANZ,
p_LANGZEIT => Rec_Auftrag.LANGZEIT,
p_ZWIRECH => 'F',
p_ABRTYP => m_AbrTyp,
p_BERKM => m_BerKm,
p_ANZSTD => m_AnzStd,
p_ECHTETAGE => m_EchteTage,
p_DAUER => m_Dauer,
p_REST => m_Rest,
p_FREIKM => m_FreiKm,
p_FREIKM1 => m_FreiKm1);
IF NVL(p_SILENT,'F')='F' AND NVL(Rec_Auftrag.MVART,'-')<>'MV4' THEN -- F�r EWP und in der Dunkelverarbeitung soll keine BestRate-Berechnung stattfinden, TD 09.03.2017, FA 03.04.2017
IF AUFTRTOOLS.LZMZuKurz(p_HDLNR => Rec_Auftrag.HDLNR,
p_KENNUNG => Rec_Auftrag.KENNUNG,
p_AUFTRNR => Rec_Auftrag.AUFTRNR)
THEN my_BEnde:=Rec_Auftrag.VMENDE;
my_BEUhr:=TO_CHAR(Rec_Auftrag.VMEUHR,Loc_NLSTime);
END IF;
IF mp_Preisliste>0 -- Immer Bestrate, eine manuelle Auswahl des Users bei Prl gibt es somit nicht mehr (QAMiet-323)
--mp_Preisliste=Rec_Auftrag.GKPRLNR-- AND
--mp_Tariftyp =Rec_Auftrag.TARIFTYP
THEN em_back.emz_utl.get_GKBestRatePreis(p_GKPRLNR => mp_PreisListe, --Rec_Auftrag.GKPRLNR,
p_GKNR => Rec_Auftrag.GKREF,
p_FZTYP => p_BERECHGRP,
p_FZ_OBERGRUPPE=> p_TARIFFZART,
p_ACRISSCODE => p_TARIFAUS1||p_TARIFAUS2||p_TARIFAUS3||p_TARIFAUS4,
p_TARIFDAUER => m_EchteTage,
p_TARIFEINHEIT => '0',
p_BBEGINN => TO_DATE(p_BBEGINN,Loc_NLSDate),
p_BBUHR => p_BBEGINNUHR,
p_BENDE => my_BEnde,
p_BEUHR => my_BEUhr,
p_MEHRFACH => Rec_Auftrag.MEHRFACH,
p_ANKM => m_ANKM,
p_ABKM => m_ABKM,
p_LANGZEIT => Rec_Auftrag.LANGZEIT,
p_ZWIRECH => 'F',
p_LCODE => SUBSTR(m_KonzernZugr,5,2),
p_STARTDATUM => Rec_Auftrag.MBEGINN,
p_NEUGKPRLNR => mp_PreisListe,
p_TARIF => Rec_Basis6,
p_KSTVERBR => my_KstVerbr,
p_KEINPREIS => my_KeinPreis,
p_ERRORCODE => my_CodeNum,
p_ERRORTEXT => my_Message);
ELSE em_back.EMZ_UTL.get_gkpreisaustarifnr(p_TARIFNR => mp_TarifTyp,
p_GKPRLNR => mp_PreisListe,
p_ACRISSCODE => p_TARIFAUS1||p_TARIFAUS2||p_TARIFAUS3||p_TARIFAUS4,
p_STARTDATUM => Rec_Auftrag.MBEGINN,
p_LCODE => SUBSTR(m_KonzernZugr,5,2),
p_TARIF => Rec_Basis6,
p_KSTVERBR => my_KstVerbr,
p_KEINPREIS => my_KeinPreis,
p_ERRORCODE => my_CodeNum,
p_ERRORTEXT => my_Message);
END IF;
END IF;
IF my_CodeNum=0
THEN mp_STAFFELNR :=Rec_Basis6.STAFFELNR;
mp_GRUND :=Rec_Basis6.GRUNDBETRAG;
mp_PREIS1 :=Rec_Basis6.PREIS1;
mp_FAKTOR1 :=Rec_Basis6.FAKTOR1;
mp_EINHEIT1 :=Rec_Basis6.EINHEIT1;
mp_INCLANZKM1 :=Rec_Basis6.INCLANZKM1;
mp_INCLKM1 :=Rec_Basis6.INCLKM1;
mp_DMKM :=Rec_Basis6.DMKM;
mp_DMCDW :=Rec_Basis6.DMCDW;
mp_DMPAI :=Rec_Basis6.DMPAI;
mp_PREIS2 :=Rec_Basis6.PREIS2;
mp_FAKTOR2 :=Rec_Basis6.FAKTOR2;
mp_EINHEIT2 :=Rec_Basis6.EINHEIT2;
mp_INCLANZKM2 :=Rec_Basis6.INCLANZKM2;
mp_DMCDW2 :=Rec_Basis6.DMCDW2;
mp_DMPAI2 :=Rec_Basis6.DMPAI2;
mp_TARIFBEZ :=Rec_Basis6.Bemerkung;
mp_TARIFTYP :=Rec_Basis6.NR;
mp_MEHRFACH :=Rec_Basis6.MEHRFACH;
mp_MAXRABATT :=Rec_Basis6.MAXRABATT;
ELSE mp_STAFFELNR :=Rec_Auftrag.STAFFELNR;
mp_GRUND :=Rec_Auftrag.GRUNDBETRAG;
mp_PREIS1 :=Rec_Auftrag.PREIS1;
mp_FAKTOR1 :=Rec_Auftrag.FAKTOR1;
mp_EINHEIT1 :=Rec_Auftrag.EINHEIT1;
mp_INCLANZKM1 :=Rec_Auftrag.INCLANZKM1;
mp_DMKM :=Rec_Auftrag.DMKM;
mp_DMCDW :=Rec_Auftrag.DMCDW;
mp_DMPAI :=Rec_Auftrag.DMPAI;
mp_PREIS2 :=Rec_Auftrag.PREIS2;
mp_FAKTOR2 :=Rec_Auftrag.FAKTOR2;
mp_EINHEIT2 :=Rec_Auftrag.EINHEIT2;
mp_INCLANZKM2 :=Rec_Auftrag.INCLANZKM2;
mp_DMCDW2 :=NVL(Rec_Auftrag.DMCDW2,0);
mp_DMPAI2 :=NVL(Rec_Auftrag.DMPAI2,0);
mp_KULANZ :=NVL(Rec_Auftrag.KULANZ,0);
mp_MAXRABATT :=NVL(Rec_Auftrag.MAXRABATT,0);
END IF;
END;
PROCEDURE CheckKontierung IS
my_CNT INTEGER:=0;
BEGIN
SELECT COUNT(RECHNR) INTO my_CNT FROM RECHNUNG
WHERE HDLNR = p_HDLNR AND
AUFTRNR= p_AUFTRNR AND
ZWIRECH='F' AND
GUTLAST='F' AND
STNFLAG='F' AND
ZAHLWEG=my_Zahlungsart;
IF my_CNT>0
THEN SELECT ERLKONTO, ERLKONTO1, ERLKONTO2, VERMKONTO, KMKONTO, VERSKONTO, KRAFTKONTO, BETANKKONTO, SONSTKONTO, SONSTKONTOFREI, KTOMWST, KTOMWST2, VTRKONTO,
MK,ST,KST,AK,KT,MKA,STA,KSTA,AKA,KTA,MKFV,STFV,KSTFV,AKFV,KTFV,KSTMOBI,UST
INTO my_erlschmal, my_erlschmal1, my_erlschmal2, my_erlmiet, my_erlkm, my_erlvers, my_erlkraft, my_erlbetank, my_erlsonst, my_erlsonstfrei, my_ktomwst, my_ktomwst2, m_VtrKonto,
my_Mk, my_St, my_Kst, my_Ak, my_Kt, my_MkA, my_StA, my_KstA, my_AkA, my_KtA, my_MkFv, my_StFv, my_KstFV, my_AkFv, my_KtFv, my_KstMobi, my_Ust
FROM RECHNUNG
WHERE HDLNR = p_HDLNR AND
AUFTRNR= p_AUFTRNR AND
ZWIRECH='F' AND
GUTLAST='F' AND
STNFLAG='F' AND
ROWNUM=1;
ELSE SELECT COUNT(RECHNR) INTO my_CNT FROM RECHNUNG
WHERE HDLNR = p_HDLNR AND
AUFTRNR= p_AUFTRNR AND
ZWIRECH='F' AND
GUTLAST='F' AND
STNFLAG='F';
IF my_CNT>0
THEN SELECT ERLKONTO, ERLKONTO1, ERLKONTO2, VERMKONTO, KMKONTO, VERSKONTO, KRAFTKONTO, BETANKKONTO, SONSTKONTO, SONSTKONTOFREI, KTOMWST, KTOMWST2, VTRKONTO,
MK,ST,KST,AK,KT,MKA,STA,KSTA,AKA,KTA,MKFV,STFV,KSTFV,AKFV,KTFV,KSTMOBI,UST
INTO my_erlschmal, my_erlschmal1, my_erlschmal2, my_erlmiet, my_erlkm, my_erlvers, my_erlkraft, my_erlbetank, my_erlsonst, my_erlsonstfrei, my_ktomwst, my_ktomwst2, m_VtrKonto,
my_Mk, my_St, my_Kst, my_Ak, my_Kt, my_MkA, my_StA, my_KstA, my_AkA, my_KtA, my_MkFv, my_StFv, my_KstFv, my_AkFv, my_KtFv, my_KstMobi, my_Ust
FROM RECHNUNG
WHERE HDLNR = p_HDLNR AND
AUFTRNR= p_AUFTRNR AND
ZWIRECH='F' AND
GUTLAST='F' AND
STNFLAG='F' AND
ROWNUM=1;
END IF;
END IF;
END;
FUNCTION IstLetzter RETURN BOOLEAN IS
BEGIN
IF Rec_AUFTRAG.ANKM=m_ANKM AND
TO_CHAR(Rec_AUFTRAG.BENDE,loc_NLSDate)=p_BENDE AND
TO_CHAR(Rec_AUFTRAG.BEUHR,loc_NLSTime)=p_BENDEUHR
THEN RETURN TRUE;
ELSE RETURN FALSE;
END IF;
END;
PROCEDURE getVertragsSteuer IS
loc_Summe FLOAT;
loc_AltUmsatz FLOAT:=0.0;
loc_AltKm FLOAT:=0.0;
loc_AltSchmal FLOAT:=0.0;
loc_AltSchmal1 FLOAT:=0.0;
loc_AltSchmal2 FLOAT:=0.0;
loc_AltCDW FLOAT:=0.0;
loc_AltPAI FLOAT:=0.0;
loc_AltTP FLOAT:=0.0;
loc_AltKraft FLOAT:=0.0;
loc_AltZub FLOAT:=0.0;
loc_AltDl FLOAT:=0.0;
loc_AltZubFr FLOAT:=0.0;
loc_AltDlFr FLOAT:=0.0;
loc_AltSonst FLOAT:=0.0;
loc_AltSonstFr FLOAT:=0.0;
loc_AltMwSt FLOAT:=0.0;
loc_AltVtr FLOAT:=0.0;
BEGIN
loc_Summe :=m_VermUmsatz +
m_KmUmsatz -
m_ErlSchmal -
m_ErlSchmal1 -
m_ErlSchmal2 +
m_CDWUmsatz +
m_PAIUmsatz +
m_TrpUmsatz +
m_KraftUmsatz +
m_SonstUmsatz +
m_ZubUmsatz +
m_DlUmsatz +
m_ZubUmsatzFr +
m_DlUmsatzFr +
m_SonstUmsatzFr+
-- Plus weitere Teilrechnungen
loc_AltUmsatz -
loc_AltSchmal -
loc_AltSchmal1 -
loc_AltSchmal2 +
loc_AltKm +
loc_AltCDW +
loc_AltPAI +
loc_AltTP +
loc_AltKraft +
loc_AltSonst +
loc_AltZub +
loc_AltDl +
loc_AltZubFr +
loc_AltDlFr +
loc_AltSonstFr +
-- Plus MwSt aus Delta
Schnittstellen.KaufRND(((m_VermUmsatz + m_KmUmsatz - m_ErlSchmal - m_ErlSchmal1 - m_ErlSchmal2 + loc_AltUmsatz - loc_AltSchmal + loc_AltKm) / 100 * my_MwStMiet)) +
Schnittstellen.KaufRND(((m_PAIUmsatz+loc_AltPai) / 100 * my_MwStVersPai)) +
Schnittstellen.KaufRND(((m_CDWUmsatz+loc_AltCDW) / 100 * my_MwStVersCdw)) +
Schnittstellen.KaufRND(((m_TrpUmsatz+loc_AltTp) / 100 * my_MwStVersTp)) +
Schnittstellen.KaufRND(((m_KraftUmsatz+loc_AltKraft) / 100 * my_MwStKraft)) +
Schnittstellen.KaufRND(((m_SonstUmsatz+m_ZubUmsatz+m_DlUmsatz+loc_AltSonst+loc_AltZub+loc_AltDl) / 100 * my_MwStSonst));
IF --(IstLetzter) AND
(loc_Summe>=150.00)
THEN m_VertrSatz:=1;
m_VertrBetr:=loc_Summe / 100 * m_VertrSatz;
m_VertrBetr:=m_VertrBetr - loc_AltVtr;
m_RechBetrag:=m_RechBetrag + m_VertrBetr;
END IF;
END;
-- Rechnungssatz ablegen
PROCEDURE DoMakeRechAdr(loc_TmpRechNr INTEGER) IS
my_found BOOLEAN:=TRUE;
my_ANREDE VARCHAR2(20) :='';
my_NAME1 VARCHAR2(40) :='';
my_NAME2 VARCHAR2(40) :='';
my_NAME3 VARCHAR2(40) :='';
my_STRASSE VARCHAR2(40) :='';
my_HAUSNR VARCHAR2(10) :='';
my_STRASSE2 VARCHAR2(40) :='';
my_PLZ VARCHAR2(10) :='';
my_ORT VARCHAR2(40) :='';
my_LAND VARCHAR2(40) :='';
my_EGSTEUER VARCHAR2(30) :='';
my_STEUERNR VARCHAR2(30) :='';
my_MWSTSL VARCHAR2(1) :='1';
my_PRIVAT VARCHAR2(1) :='P';
my_KdTarif VARCHAR2(12) :='';
my_KST INTEGER :=0;
my_GKREF INTEGER :=0;
my_RABATT FLOAT :=0.0;
BEGIN
m_Debitor:=Rec_Auftrag.SPLITDEBITOR;
BEGIN
SELECT ANREDE, NAME1, NAME2, NAME3, STRASSE, HAUSNR, STRASSE2, PLZ, ORT, LAND,
EGSTEUER, STEUERNR, MWST, TYP, KST, GKREF, RABATT, STDTARIF
INTO my_ANREDE, my_NAME1, my_NAME2, my_NAME3, my_STRASSE, my_HausNr, my_STRASSE2, my_PLZ, my_ORT, my_LAND,
my_EGSTEUER, my_STEUERNR, my_MWSTSL, my_PRIVAT, my_KST, my_GKREF, my_RABATT, my_KdTarif
FROM ADRESSEN
WHERE HDLNR =p_HDLNR AND
ART ='K' AND
NUMMER=m_Debitor;
EXCEPTION
WHEN OTHERS THEN my_found:=FALSE;
END;
INSERT INTO RECHADR
(HDLNR, RECHNR, RECHART,
ANREDE, NAME1, NAME2, NAME3, STRASSE, HAUSNR, STRASSE2, PLZ, ORT, LAND,
DEBITOR, EGSTEUER, STEUERNR, MITMWST, PRIVAT, KOSTENSTELLE, GKREF, KDTARIF)
VALUES
(p_HDLNR, loc_TmpRechNr, my_RechArt,
my_ANREDE, my_NAME1, my_NAME2, my_NAME3, my_STRASSE, my_HAUSNR, my_STRASSE2, my_PLZ, my_ORT, my_LAND,
m_Debitor, my_EGSTEUER, my_STEUERNR, my_MWSTSL, my_PRIVAT, my_KST, my_GKREF, my_KdTarif);
END;
PROCEDURE DoKorrRechZubPos1(loc_ZubUmsatz IN OUT FLOAT,
loc_ZubUmsatzFr IN OUT FLOAT,
loc_DlUmsatz IN OUT FLOAT,
loc_DlUmsatzFr IN OUT FLOAT) IS
CURSOR currechzubpos IS
SELECT *
FROM RECHZUBPOS
WHERE HDLNR =p_HDLNR
AND RECHNR =my_UsrRechnr
AND NVL(SPLITSUMME,0)<>0;
BEGIN
FOR Rec_Zub IN currechzubpos LOOP
IF NVL(Rec_Zub.LEISTUNG,'F')='F'
THEN IF NVL(Rec_Zub.MWSTFREI,'F')='W'
THEN loc_ZubUmsatzFr:=loc_ZubUmsatzFr-Rec_Zub.SPLITSUMME;
ELSE loc_ZubUmsatz :=loc_ZubUmsatz -Rec_Zub.SPLITSUMME;
END IF;
ELSE IF NVL(Rec_Zub.MWSTFREI,'F')='W'
THEN loc_DlUmsatzFr :=loc_DlUmsatzFr -Rec_Zub.SPLITSUMME;
ELSE loc_DlUmsatz :=loc_DlUmsatz -Rec_Zub.SPLITSUMME;
END IF;
END IF;
END LOOP;
UPDATE RECHZUBPOS
SET SUMME = SUMME-SPLITSUMME
WHERE HDLNR = p_HDLNR
AND RECHNR= my_usrrechnr
AND NVL(SPLITSUMME,0)<>0;
END;
PROCEDURE DoKorrRechZubPos2(loc_RechArt VARCHAR2,
loc_RechNr1 INTEGER,
loc_RechArt2 VARCHAR2,
loc_RechNr2 INTEGER,
loc_ZubUmsatz IN OUT FLOAT,
loc_ZubUmsatzFr IN OUT FLOAT,
loc_DlUmsatz IN OUT FLOAT,
loc_DlUmsatzFr IN OUT FLOAT) IS
CURSOR currechzubpos IS
SELECT *
FROM RECHZUBPOS
WHERE HDLNR =p_HDLNR
AND RECHNR =loc_RechNr1
AND RECHART =loc_RechArt
AND NVL(SPLITSUMME,0)<>0;
BEGIN
FOR Rec_Zub IN currechzubpos LOOP
IF NVL(Rec_Zub.LEISTUNG,'F')='F'
THEN IF NVL(Rec_Zub.MWSTFREI,'F')='W'
THEN loc_ZubUmsatzFr:=loc_ZubUmsatzFr+Rec_Zub.SPLITSUMME;
ELSE loc_ZubUmsatz :=loc_ZubUmsatz +Rec_Zub.SPLITSUMME;
END IF;
ELSE IF NVL(Rec_Zub.MWSTFREI,'F')='W'
THEN loc_DlUmsatzFr :=loc_DlUmsatzFr +Rec_Zub.SPLITSUMME;
ELSE loc_DlUmsatz :=loc_DlUmsatz +Rec_Zub.SPLITSUMME;
END IF;
END IF;
INSERT INTO RECHZUBPOS
(HDLNR,RECHART,RECHNR,LFD,NR,MVRE,SUMME,MWSTFREI,ERLOESKONTO,ERLOESKONTOINT,LEISTUNG,MENGE,EZPREIS,PAUSCHAL)
VALUES
(p_HDLNR,loc_RechArt2,loc_RechNr2,Rec_Zub.LFD,Rec_ZUB.NR,Rec_Zub.MVRE,Rec_Zub.SPLITSUMME,NVL(Rec_Zub.MWSTFREI,'F'),Rec_Zub.ERLOESKONTO,rec_Zub.ERLOESKONTOINT,rec_Zub.LEISTUNG,rec_Zub.MENGE,rec_Zub.EZPREIS,rec_Zub.PAUSCHAL);
END LOOP;
END;
PROCEDURE DoMakeRechZubPos (loc_RechArt1 VARCHAR2,
loc_RechNr1 INTEGER,
loc_RechArt2 VARCHAR2,
loc_RechNr2 INTEGER,
loc_Proz FLOAT) IS
CURSOR currechzubpos IS
SELECT *
FROM RECHZUBPOS
WHERE HDLNR =p_HDLNR
AND RECHNR =loc_RechNr1
AND RECHART =loc_RechArt1;
loc_Summe FLOAT;
BEGIN
FOR Rec_Zub IN currechzubpos LOOP
IF NVL(Rec_Zub.SPLITSUMME,0)=0
THEN loc_Summe:=Rec_Zub.SUMME * 100 / (100-loc_Proz); -- ist schon reduziert, 100 kann nicht sein
loc_Summe:=loc_Summe / 100 * loc_Proz;
ELSE loc_Summe:=NVL(Rec_Zub.SPLITSUMME,0);
END IF;
INSERT INTO RECHZUBPOS
(HDLNR,RECHART,RECHNR,LFD,NR,MVRE,SUMME,MWSTFREI,ERLOESKONTO,ERLOESKONTOINT,LEISTUNG,MENGE,EZPREIS,PAUSCHAL)
VALUES
(p_HDLNR,loc_RechArt2,loc_RechNr2,Rec_Zub.LFD,Rec_ZUB.NR,Rec_Zub.MVRE,loc_SUMME,NVL(Rec_Zub.MWSTFREI,'F'),Rec_Zub.ERLOESKONTO,rec_Zub.ERLOESKONTOINT,rec_Zub.LEISTUNG,Rec_Zub.MENGE,Rec_Zub.EZPREIS,rec_Zub.PAUSCHAL);
END LOOP;
END;
PROCEDURE DoStornoZwis IS
CURSOR curzwirech IS
SELECT *
FROM RECHNUNG
WHERE HDLNR =p_HDLNR
AND AUFTRNR =Rec_Auftrag.AUFTRNR
AND RECHART ='R'
AND ZWIRECH ='W'
AND STNFLAG IS NULL
AND ARVATOTRANSTOKEN IS NOT NULL;
loc_Summe FLOAT:=m_Gezahlt*-1.0;
loc_Betrag FLOAT;
BEGIN
FOR Rec_ZRech IN curzwirech LOOP
IF Rec_ZRech.KRDBETRAG>=loc_Summe
THEN loc_Betrag:=loc_Summe;
loc_Summe:=0.0;
ELSE loc_Betrag:=Rec_ZRech.KRDBETRAG;
loc_Summe :=loc_Summe-loc_Betrag;
END IF;
IF loc_Betrag>0.0
THEN INSERT INTO STORNOPAYMENT
(HDLNR,USERNR,RECHNR,ARVATOTRANSTOKEN,BETRAG)
VALUES (Rec_ZRech.HDLNR,p_USERNR,Rec_ZRech.RECHNR,Rec_ZRech.ARVATOTRANSTOKEN,loc_Betrag*-1.0);
my_LastTransToken:=Rec_ZRech.ARVATOTRANSTOKEN;
my_LastPayToken :=Rec_ZRech.ARVATOPAYTOKEN;
my_LastKrdBank :=Rec_ZRech.KRDBANK;
my_DoArvato:='W';
END IF;
loc_Betrag:=0.0;
END LOOP;
END;
PROCEDURE GetLastToken IS
loc_LastZwiRech INTEGER;
BEGIN
my_TransToken :=Rec_Auftrag.ARVATOTRANSTOKEN;
my_PayToken :=Rec_Auftrag.ARVATOPAYTOKEN;
IF NVL(m_CashTyp,0)<>2
THEN RETURN;
END IF;
SELECT MAX(RECHNR)
INTO loc_LastZwiRech
FROM RECHNUNG
WHERE HDLNR =Rec_Auftrag.HDLNR
AND AUFTRNR=Rec_Auftrag.AUFTRNR
AND ZWIRECH='W'
AND RECHART='R'
AND STNFLAG IS NULL
AND ARVATOTRANSTOKEN IS NOT NULL;
IF NVL(loc_LastZwiRech,0)>0
THEN SELECT ARVATOTRANSTOKEN, ARVATOPAYTOKEN
INTO my_TransToken, my_PayToken
FROM RECHNUNG
WHERE HDLNR =Rec_Auftrag.HDLNR
AND AUFTRNR=Rec_Auftrag.AUFTRNR
AND RECHART='R'
AND RECHNR =loc_LastZwiRech;
END IF;
END;
PROCEDURE SetMwstParams IS
BEGIN
IF m_MwStSL='1' OR m_MwStSL='3' OR m_MwStSL='4'
THEN m_MitMwSt:='W';
ELSE m_MitMwSt:='F';
END IF;
IF (m_LAND='01' OR m_LAND='10') AND (m_MwStSl='3') AND ((trunc(Rec_Auftrag.MENDE)-trunc(Rec_Auftrag.MBEGINN))>=my_TAGELANG)
THEN m_MitMwSt:='F';
END IF;
-- MwSt f�r MEndeDatum holen
m_LAND:=SUBSTR(m_KONZERNZUGR,5,2);
EM_BACK.Get_MwSt_Aktiv(m_LAND,my_MWSTMIET,my_MWSTLANG,my_TAGELANG,
my_MWSTVERSPAI,my_MWSTVERSCDW,my_MWSTVERSTP,
my_MWSTKRAFT, my_MWSTSONST,TO_DATE(Rec_Auftrag.MENDE));
my_MwstKraftOrg:=my_MwstKraft;
my_MwstSonstOrg:=my_MwstSonst;
IF m_LAND='04' AND (my_FZART IN ('111','131') OR (trunc(Rec_Auftrag.MENDE)-trunc(Rec_Auftrag.MBEGINN))>=my_TAGELANG)
THEN my_MWSTMIET :=my_MWSTLANG;
END IF;
-- MwSt Ende
IF m_mitmwst='F' -- MwSt-Freie Rechnung
THEN my_mwstmiet :=0.0;
my_mwstkraft :=0.0;
my_mwstsonst :=0.0;
my_mwstverspai:=0.0;
my_mwstverscdw:=0.0;
my_mwstverstp :=0.0;
END IF;
END;
PROCEDURE SetZahlParams IS
BEGIN
IF my_KdZahlTag>0
THEN my_ZahlTag:=my_KdZahlTag;
END IF;
IF my_Einzug='W' AND
NVL(my_SepaZahlTag,0)>0 AND
my_KdSepaDatum IS NOT NULL AND
my_KdSepaDatum<=SYSDATE
THEN my_ZahlTag:=my_SepaZahlTag;
END IF;
END;
PROCEDURE DoWriteRechnung(loc_HDLNR VARCHAR2,
loc_FILNR VARCHAR2,
loc_AUFTRNR INTEGER,
loc_RECHNR INTEGER,
loc_LFD INTEGER) IS
loc_MvArt VARCHAR2(04):=Rec_Auftrag.MVART;
loc_StatusExtern INTEGER:=NULL;
loc_VermUmsatz FLOAT;
loc_KmUmsatz FLOAT;
loc_CdwUmsatz FLOAT;
loc_PaiUmsatz FLOAT;
loc_TrpUmsatz FLOAT;
loc_KraftUmsatz FLOAT;
loc_BetankUmsatz FLOAT;
loc_SonstUmsatz FLOAT;
loc_SonstUmsatzFr FLOAT;
loc_ZubUmsatz FLOAT;
loc_DlUmsatz FLOAT;
loc_ZubUmsatzFr FLOAT;
loc_DlUmsatzFr FLOAT;
my_Proz FLOAT;
my_MerkArt VARCHAR2(01):=my_RechArt;
my_TmpZahlungsart INTEGER:=NULL;
my_MitAnz VARCHAR2(01):=p_MITANZ;
BEGIN
IF m_CntMvRg>0
THEN loc_MvArt:=NULL;
END IF;
IF loc_MvArt IN ('MV1','MV4')
THEN loc_StatusExtern:=0;
END IF;
IF loc_LFD=1 AND my_RechArt='P'
THEN DELETE FROM RECHNUNG
WHERE HDLNR =loc_HDLNR
AND RECHNR =loc_RECHNR
AND RECHART='P';
COMMIT;
END IF;
IF loc_LFD=2
THEN my_Referenz :=my_RechNr;
my_ReferenzArt:=my_RechArt;
BEGIN
SELECT STDZAHLART, ZAHLTAG, SEPADATUM, EINZUG, MWST
INTO my_TmpZahlungsart, my_KdZahlTag, my_KdSepaDatum, my_Einzug, m_MwstSl
FROM ADRESSEN
WHERE HDLNR =loc_HDLNR AND
ART ='K' AND
NUMMER=Rec_Auftrag.SPLITDEBITOR;
EXCEPTION
WHEN OTHERS THEN my_TmpZahlungsart:=NULL;
END;
IF my_TmpZahlungsart IS NOT NULL
THEN my_Zahlungsart:=my_TmpZahlungsart;
ELSE SELECT STDZAHLART
INTO my_TmpZahlungsart
FROM FIRMA
WHERE HDLNR=p_AHDLNR;
IF my_Zahlungsart IS NOT NULL
THEN my_Zahlungsart:=my_TmpZahlungsart;
END IF;
END IF;
IF my_Zahlungsart IN ('L','50','51')
THEN SELECT LIEFERNR
INTO my_rechnr
FROM FIRMA
WHERE HDLNR=p_AHDLNR FOR UPDATE;
UPDATE FIRMA SET
LIEFERNR = LIEFERNR + 1
WHERE HDLNR=p_AHDLNR;
my_RechArt:='L';
ELSE SELECT RECHNR
INTO my_rechnr
FROM FIRMA
WHERE HDLNR=p_AHDLNR FOR UPDATE;
UPDATE FIRMA SET
RECHNR = RECHNR + 1
WHERE HDLNR=p_AHDLNR;
my_RechArt:='R';
END IF;
UPDATE RECHNUNG
SET SPLITREFRECHNR = my_RechNr,
SPLITREFRECHART= my_RechArt
WHERE HDLNR=p_HDLNR
AND RECHNR =my_Referenz
AND RECHART=my_ReferenzArt;
COMMIT;
DoMakeRechAdr(my_RechNr);
m_BerKm:=0;
m_ANKM :=0;
m_ABKM :=0;
m_Liter:=0.0;
my_MitAnz:='F';
END IF;
SetZahlParams;
SetMwstParams;
/* m_Rechbetrag:=m_AltUmsatz +
m_AltKm+
m_AltCDW +
m_AltPai+
m_AltTp +
m_AltKraft +
m_AltBetank +
m_AltSonst +
m_AltSonstFr+
m_AltZub +
m_AltDl +
m_AltZubFr +
m_AltDlFr;
htp.p(m_RechBetrag); */
-- htp.p(m_AltDl||'alt<br>');
-- htp.p(m_DlUmsatz||'neu<br>');
loc_VermUmsatz :=m_VermUmsatz-m_AltUmsatz;
loc_KmUmsatz :=m_KmUmsatz-m_AltKm;
loc_CdwUmsatz :=m_CdwUmsatz-m_AltCdw;
loc_PaiUmsatz :=m_PaiUmsatz-m_AltPai;
loc_TrpUmsatz :=m_TrpUmsatz-m_AltTp;
loc_KraftUmsatz :=m_KraftUmsatz-m_AltKraft;
loc_BetankUmsatz :=m_BetankUmsatz-m_AltBetank;
loc_SonstUmsatz :=m_SonstUmsatz-m_AltSonst; -- SonstigeAlt sind 0, hier wird neu berechnet
loc_SonstUmsatzFr:=m_SonstUmsatzFr-m_AltSonstFr;-- SonstigeAlt sind 0, hier wird neu berechnet
loc_ZubUmsatz :=m_ZubUmsatz-m_AltZub;
loc_DlUmsatz :=m_DlUmsatz-m_AltDl;
loc_ZubUmsatzFr :=m_ZubUmsatzFr-m_AltZubFr;
loc_DlUmsatzFr :=m_DlUmsatzFr-m_AltDlFr;
--htp.p(loc_ZubUmsatz);
--htp.p(m_ZubUmsatz);
--htp.p(m_AltZUb);
--htp.p('</br>');
--htp.p(loc_DlUmsatz);
--htp.p(m_DlUmsatz);
--htp.p(m_AltDl);
IF Rec_Auftrag.SPLITTING IN ('E','M')
THEN IF NVL(Rec_Auftrag.SPLITPROZ1,0)>0
THEN IF loc_LFD=1
THEN my_Proz:=100-Rec_Auftrag.SPLITPROZ1;
ELSE my_Proz:=Rec_Auftrag.SPLITPROZ1;
END IF;
loc_VermUmsatz :=loc_VermUmsatz / 100 * my_Proz;
loc_KmUmsatz :=loc_KmUmsatz / 100 * my_Proz;
loc_CdwUmsatz :=loc_CdwUmsatz / 100 * my_Proz;
loc_PaiUmsatz :=loc_PaiUmsatz / 100 * my_Proz;
loc_TrpUmsatz :=loc_TrpUmsatz / 100 * my_Proz;
loc_KraftUmsatz :=loc_KraftUmsatz / 100 * my_Proz;
loc_BetankUmsatz :=loc_BetankUmsatz / 100 * my_Proz;
loc_SonstUmsatz :=loc_SonstUmsatz / 100 * my_Proz;
loc_SonstUmsatzFr:=loc_SonstUmsatzFr / 100 * my_Proz;
loc_ZubUmsatz :=loc_ZubUmsatz / 100 * my_Proz;
loc_DlUmsatz :=loc_DlUmsatz / 100 * my_Proz;
loc_ZubUmsatzFr :=loc_ZubUmsatzFr / 100 * my_Proz;
loc_DlUmsatzFr :=loc_DlUmsatzFr / 100 * my_Proz;
IF loc_LFD=1
THEN UPDATE RECHZUBPOS
SET SUMME = SUMME / 100 * my_Proz
WHERE HDLNR = p_HDLNR
AND RECHNR= my_usrrechnr
AND NVL(SPLITSUMME,0)=0;
ELSE DoMakeRechZubPos (my_ReferenzArt,
my_Referenz,
my_RechArt,
my_RechNr,
my_Proz);
END IF;
ELSE IF loc_LFD=1
THEN IF Rec_Auftrag.SPLITMIETECHK='W'
THEN loc_VermUmsatz :=0.0;
ELSE loc_VermUmsatz :=loc_VermUmsatz - Rec_Auftrag.SPLITMIETE;
END IF;
IF Rec_Auftrag.SPLITKMCHK='W'
THEN loc_KmUmsatz :=0.0;
ELSE loc_KmUmsatz :=loc_KmUmsatz - Rec_Auftrag.SPLITKM;
END IF;
IF Rec_Auftrag.SPLITCDWCHK='W'
THEN loc_CdwUmsatz :=0.0;
ELSE loc_CdwUmsatz :=loc_CdwUmsatz - Rec_Auftrag.SPLITCDW;
END IF;
IF Rec_Auftrag.SPLITPAICHK='W'
THEN loc_PaiUmsatz :=0.0;
ELSE loc_PaiUmsatz :=loc_PaiUmsatz - Rec_Auftrag.SPLITPAI;
END IF;
IF Rec_Auftrag.SPLITTPCHK='W'
THEN loc_TrpUmsatz :=0.0;
ELSE loc_TrpUmsatz :=loc_TrpUmsatz - Rec_Auftrag.SPLITTP;
END IF;
IF Rec_Auftrag.SPLITKRAFTCHK='W'
THEN loc_KraftUmsatz :=0.0;
ELSE loc_KraftUmsatz :=loc_KraftUmsatz- Rec_Auftrag.SPLITKRAFT;
END IF;
IF Rec_Auftrag.SPLITBETANKCHK='W'
THEN loc_BetankUmsatz:=0.0;
ELSE loc_BetankUmsatz:=loc_BetankUmsatz-Rec_Auftrag.SPLITBETANK;
END IF;
IF Rec_Auftrag.SPLITSONSTCHK='W'
THEN loc_SonstUmsatz :=0.0;
ELSE loc_SonstUmsatz :=loc_SonstUmsatz- Rec_Auftrag.SPLITSONST;
END IF;
DoKorrRechZubPos1(loc_ZubUmsatz,
loc_ZubUmsatzFr,
loc_DlUmsatz,
loc_DlUmsatzFr);
ELSE IF Rec_Auftrag.SPLITMIETECHK='W'
THEN loc_VermUmsatz :=loc_VermUmsatz;
ELSE loc_VermUmsatz :=Rec_Auftrag.SPLITMIETE;
END IF;
IF Rec_Auftrag.SPLITKMCHK='W'
THEN loc_KmUmsatz :=loc_KmUmsatz;
ELSE loc_KmUmsatz :=Rec_Auftrag.SPLITKM;
END IF;
IF Rec_Auftrag.SPLITCDWCHK='W'
THEN loc_CdwUmsatz :=loc_CDWUmsatz;
ELSE loc_CdwUmsatz :=Rec_Auftrag.SPLITCDW;
END IF;
IF Rec_Auftrag.SPLITPAICHK='W'
THEN loc_PaiUmsatz :=loc_PaiUmsatz;
ELSE loc_PaiUmsatz :=Rec_Auftrag.SPLITPAI;
END IF;
IF Rec_Auftrag.SPLITTPCHK='W'
THEN loc_TrpUmsatz :=loc_TrpUmsatz;
ELSE loc_TrpUmsatz :=Rec_Auftrag.SPLITTP;
END IF;
IF Rec_Auftrag.SPLITKRAFTCHK='W'
THEN loc_KraftUmsatz :=loc_KraftUmsatz;
ELSE loc_KraftUmsatz :=Rec_Auftrag.SPLITKRAFT;
END IF;
IF Rec_Auftrag.SPLITBETANKCHK='W'
THEN loc_BetankUmsatz:=loc_BetankUmsatz;
ELSE loc_BetankUmsatz:=Rec_Auftrag.SPLITBETANK;
END IF;
IF Rec_Auftrag.SPLITSONSTCHK='W'
THEN loc_SonstUmsatz :=loc_SonstUmsatz;
ELSE loc_SonstUmsatz :=Rec_Auftrag.SPLITSONST;
END IF;
loc_ZubUmsatz :=0.0;--Rec_Auftrag.SPLITZUB;
loc_DlUmsatz :=0.0;--Rec_Auftrag.SPLITDL;
loc_ZubUmsatzFr :=0.0;--Rec_Auftrag.SPLITZUBFREI;
loc_DlUmsatzFr :=0.0;--Rec_Auftrag.SPLITDFREIL;
DoKorrRechZubPos2(my_ReferenzArt,
my_Referenz,
my_RechArt,
my_RechNr,
loc_ZubUmsatz,
loc_ZubUmsatzFr,
loc_DlUmsatz,
loc_DlUmsatzFr);
loc_ZubUmsatz :=loc_ZubUmsatz-m_AltZub;
loc_DlUmsatz :=loc_DlUmsatz-m_AltDl;
loc_ZubUmsatzFr :=loc_ZubUmsatzFr-m_AltZubFr;
loc_DlUmsatzFr :=loc_DlUmsatzFr-m_AltDlFr;
END IF;
END IF;
END IF;
-- Rabatt auswerten
CASE NVL(p_RABATTZL,0)
WHEN 0 THEN m_ErlSchmal := Schnittstellen.KaufRND((loc_VermUmsatz + loc_KmUmsatz) / 100 * m_RABATT);
WHEN 1 THEN m_ErlSchmal := Schnittstellen.KaufRND((loc_VermUmsatz) / 100 * m_RABATT);
WHEN 2 THEN m_ErlSchmal1:= Schnittstellen.KaufRND(((loc_TrpUmsatz + loc_CdwUmsatz + loc_PaiUmsatz)) / 100 * m_RABATT);
m_ErlSchmal := Schnittstellen.KaufRND((loc_VermUmsatz + loc_KmUmsatz) / 100 * m_RABATT);
WHEN 3 THEN m_ErlSchmal2:= Schnittstellen.KaufRND(((loc_SonstUmsatz + loc_SonstUmsatzFr + loc_KraftUmsatz + loc_BetankUmsatz + loc_DlUmsatz + loc_ZubUmsatz+ loc_DlUmsatzFr + loc_ZubUmsatzFr)) / 100 * m_RABATT);
m_ErlSchmal1:= Schnittstellen.KaufRND(((loc_TrpUmsatz + loc_CdwUmsatz + loc_PaiUmsatz)) / 100 * m_RABATT);
m_ErlSchmal := Schnittstellen.KaufRND((loc_VermUmsatz + loc_KmUmsatz) / 100 * m_RABATT);
ELSE NULL;
END CASE;
-- Rabatt Ende
-- Provision nach Basiskennzeichnen errechnen
CASE NVL(m_BASIS,0)
WHEN 1 THEN m_PROVBASIS := loc_VermUmsatz+loc_KmUmsatz-m_ErlSchmal;
WHEN 2 THEN m_PROVBASIS := loc_VermUmsatz+loc_KmUmsatz-m_ErlSchmal+
loc_CDWUmsatz+loc_PAIUmsatz+loc_TrpUmsatz-m_ErlSchmal2;
WHEN 3 THEN m_PROVBASIS := loc_VermUmsatz+loc_KmUmsatz-m_ErlSchmal+
loc_CDWUmsatz+loc_PAIUmsatz+loc_TrpUmsatz-m_ErlSchmal2+
loc_KraftUmsatz+loc_BetankUmsatz+loc_SonstUmsatz+loc_SonstUmsatzFr+loc_ZubUmsatz+loc_DlUmsatz+loc_ZubUmsatzFr+loc_DlUmsatzFr-m_ErlSchmal2;
ELSE m_ProvBasis:=0.0;
END CASE;
-- Provisionen Ende
m_Rechbetrag:=loc_VermUmsatz +
loc_KmUmsatz -
m_ErlSchmal -
m_ErlSchmal1 -
m_ErlSchmal2 +
loc_CDWUmsatz +
loc_PAIUmsatz +
loc_TrpUmsatz +
loc_KraftUmsatz +
loc_BetankUmsatz +
loc_SonstUmsatz +
loc_SonstUmsatzFr+
loc_ZubUmsatz +
loc_DlUmsatz +
loc_ZubUmsatzFr +
loc_DlUmsatzFr;/* +
Schnittstellen.KaufRND(((loc_VermUmsatz + loc_KmUmsatz - m_ErlSchmal - m_ErlSchmal1 - m_ErlSchmal2) / 100 * my_MwStMiet)) +
Schnittstellen.KaufRND((loc_PAIUmsatz / 100 * my_MwStVersPai)) +
Schnittstellen.KaufRND((loc_CDWUmsatz / 100 * my_MwStVersCdw)) +
Schnittstellen.KaufRND((loc_TrpUmsatz / 100 * my_MwStVersTp)) +
Schnittstellen.KaufRND((loc_KraftUmsatz / 100 * my_MwStKraft)) +
Schnittstellen.KaufRND(((loc_SonstUmsatz+loc_ZubUmsatz+loc_DlUmsatz) / 100 * my_MwStSonst));*/
m_MwSumme :=0.0;
m_MwstBasis :=m_RechBetrag;
IF my_MwstMiet=0
THEN m_MwstBasis:=m_MwstBasis - (loc_VermUmsatz + loc_KmUmsatz - m_ErlSchmal);
ELSE m_MwSumme :=Schnittstellen.KaufRND(((loc_VermUmsatz + loc_KmUmsatz - m_ErlSchmal) / 100 * my_MwstMiet));
END IF;
IF my_MwStVersPai=0
THEN IF NVL(p_RABATTZL,0)>=2
THEN m_MwstBasis:=m_MwstBasis - (loc_PAIUmsatz - (loc_PAIUmsatz / 100 * m_Rabatt));
ELSE m_MwstBasis:=m_MwstBasis - (loc_PAIUmsatz);
END IF;
ELSE IF NVL(p_RABATTZL,0)>=2
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_PAIUmsatz - (loc_PAIUmsatz / 100 * m_Rabatt)) / 100 * my_MwStVersPai);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_PAIUmsatz / 100 * my_MwStVersPai));
END IF;
END IF;
IF my_MwStVersCdw=0
THEN IF NVL(p_RABATTZL,0)>=2
THEN m_MwstBasis:=m_MwstBasis - (loc_CDWUmsatz - (loc_CDWUmsatz / 100 * m_Rabatt));
ELSE m_MwstBasis:=m_MwstBasis - (loc_CDWUmsatz);
END IF;
ELSE IF NVL(p_RABATTZL,0)>=2
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_CDWUmsatz - (loc_CDWUmsatz / 100 * m_Rabatt)) / 100 * my_MwStVersCdw);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_CDWUmsatz / 100 * my_MwStVersCdw));
END IF;
END IF;
IF my_MwStVersTp=0
THEN IF NVL(p_RABATTZL,0)>=2
THEN m_MwstBasis:=m_MwstBasis - (loc_TrpUmsatz - (loc_TrpUmsatz / 100 * m_Rabatt));
ELSE m_MwstBasis:=m_MwstBasis - (loc_TrpUmsatz);
END IF;
ELSE IF NVL(p_RABATTZL,0)>=2
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_TrpUmsatz - (loc_TrpUmsatz / 100 * m_Rabatt)) / 100 * my_MwStVersTp);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_TrpUmsatz / 100 * my_MwStVersTp));
END IF;
END IF;
IF my_MwStKraft=0
THEN IF NVL(p_RABATTZL,0)=3
THEN m_MwstBasis:=m_MwstBasis - (loc_KraftUmsatz - (loc_KraftUmsatz / 100 * m_Rabatt));
ELSE m_MwstBasis:=m_MwstBasis - (loc_KraftUmsatz);
END IF;
ELSE IF NVL(p_RABATTZL,0)=3
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_KraftUmsatz - (loc_KraftUmsatz / 100 * m_Rabatt)) / 100 * my_MwStKraft);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_KraftUmsatz / 100 * my_MwStKraft));
END IF;
END IF;
IF my_MwStSonst=0
THEN IF NVL(p_RABATTZL,0)=3
THEN m_MwstBasis:=m_MwstBasis - (loc_BetankUmsatz - (loc_BetankUmsatz / 100 * m_Rabatt));
ELSE m_MwstBasis:=m_MwstBasis - (loc_BetankUmsatz);
END IF;
ELSE IF NVL(p_RABATTZL,0)=3
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_BetankUmsatz - (loc_BetankUmsatz / 100 * m_Rabatt)) / 100 * my_MwStSonst);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_BetankUmsatz / 100 * my_MwStSonst));
END IF;
END IF;
IF my_MwStSonst=0
THEN IF NVL(p_RABATTZL,0)=3
THEN m_MwstBasis:=m_MwstBasis - (loc_SonstUmsatz - (loc_SonstUmsatz / 100 * m_Rabatt));
ELSE m_MwstBasis:=m_MwstBasis - (loc_SonstUmsatz);
END IF;
ELSE IF NVL(p_RABATTZL,0)=3
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_SonstUmsatz - (loc_SonstUmsatz / 100 * m_Rabatt)) / 100 * my_MwStSonst);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_SonstUmsatz / 100 * my_MwStSonst));
END IF;
END IF;
IF my_MwStSonst=0
THEN IF NVL(p_RABATTZL,0)=3
THEN m_MwstBasis:=m_MwstBasis - (loc_ZubUmsatz - (loc_ZubUmsatz / 100 * m_Rabatt));
ELSE m_MwstBasis:=m_MwstBasis - (loc_ZubUmsatz);
END IF;
ELSE IF NVL(p_RABATTZL,0)=3
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_ZubUmsatz - (loc_ZubUmsatz / 100 * m_Rabatt)) / 100 * my_MwStSonst);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_ZubUmsatz / 100 * my_MwStSonst));
END IF;
END IF;
IF my_MwStSonst=0
THEN IF NVL(p_RABATTZL,0)=3
THEN m_MwstBasis:=m_MwstBasis - (loc_DlUmsatz - (loc_DlUmsatz / 100 * m_Rabatt));
ELSE m_MwstBasis:=m_MwstBasis - (loc_DlUmsatz);
END IF;
ELSE IF NVL(p_RABATTZL,0)=3
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_DlUmsatz - (loc_DlUmsatz / 100 * m_Rabatt)) / 100 * my_MwStSonst);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_DlUmsatz / 100 * my_MwStSonst));
END IF;
END IF;
m_RechBetrag:=m_RechBetrag+m_MwSumme;
m_Gezahlt :=round(m_RechBetrag*100)/100;
IF my_MITANZ='W' -- Abz�ge nur wenn Haken
THEN m_Gezahlt := m_Gezahlt - Rec_Auftrag.ANZAHLUNG;
END IF;
-- Ausssies: Vertragssteuer pr�fen und ggf setzen
IF (SUBSTR(m_konzernzugr,5,2)='05') AND
(m_mitmwst<>'F')
THEN getVertragsSteuer;
ELSE m_VertrBetr:=0.0;
m_VertrSatz:=0;
END IF;
-- Ausssies: Vertragssteuer pr�fen und ggf setzen ENDE
INSERT INTO RECHNUNG
(HDLNR,FILNR,RECHNR, GUTLAST, ZWIRECH, RECHART, AUFTRNR, DEBITOR, RDATUM, ZAHLBED, VERMITTLER,
VERMUMSATZ, KMUMSATZ, VERMMWST, ERLSCHMAL, ERLSCHMAL1, ERLSCHMAL2, ERLMWST,
ERLKONTO, ERLKONTO1, ERLKONTO2, VERMKONTO, KMKONTO,
VERSUMSATZPAI, VERSMWSTPAI, VERSUMSATZCDW, VERSMWSTCDW, VERSUMSATZTP,
VERSMWSTTP, VERSKONTO, KRAFTUMSATZ, KRAFTMWST, KRAFTKONTO, BETANKUMSATZ, BETANKKONTO, SONSTUMSATZ, SONSTUMSATZFREI, ZUBUMSATZ, DLUMSATZ, ZUBUMSATZFREI, DLUMSATZFREI,
SONSTMWST, SONSTKONTO, SONSTKONTOFREI, BERKM, GEFKM, GEZAHLT, ZAHLWEG, KSTSTELLE, KSTFIL, GESCHBEREICH, AUFHDLNR,
BEMERKUNG1, BEMERKUNG2, BEMERKUNG3, BEMERKUNG4, BEMERKUNG5, BEMERKUNG6, FIBU, PROV,
BANFANG, BENDE, MANFANG, MENDE, TARIFTYP, TARIFTYPS, AUSLAGENTEXT, PROVBASIS, PROVSATZ, PROVKONTO,
LITER,SORTE, ERFHDLNR, ERFUSER, VONKM, BISKM, TARIFBEZ, STAFFELNR,
GRUNDBETRAG, PREIS1, FAKTOR1, EINHEIT1, MEHRFACH, INCLKM1, INCLANZKM1, DMKM, CDW, DMCDW, PAI, DMPAI,
PREIS2, FAKTOR2, EINHEIT2, INCLANZKM2, CDW2, DMCDW2, PAI2, DMPAI2, TRFMANUELL, KULANZ, MAXRABATT,
RGKLASSE, RGTARIFFZART, RGFZTARIFAUS, MVKLASSE, FZKLASSE, FZSTAT, FZOWNERHDLNR, STNRECHNR, MITANZ, MITZWI, MITZUB, MITLST, ZUSANLEASING, NURFREIEKM,
GKREF, GKGRP, GKPRLNR, RABATT, RABATTZL, ABWRECH,KTOMWST, KTOMWST2, UNFALLERSATZ, GDVFLAG,
VTRSTEUER, VTRBETRAG, VTRKONTO, AUFTRNREXT, MWSTSL,FREE2GO,
MK,ST,KST,AK,KT,MKA,STA,KSTA,AKA,KTA,MKFV,STFV,KSTFV,AKFV,KTFV,UST,KSTMOBI,ZAHLTAG,
KTOABWDEB, KTOFREMDVWSOLL, KTOFREMDVWHABEN,
AUTHCODE, ROBGRUND, ROBKENNZ, ROBLEASING, SPLITREFRECHNR,SPLITREFRECHART, LFSSAMMEL,
SHOWTRFALL, SHOWZBDALL, KRDWECHSEL, MVART, STATUSEXTERN)
VALUES (loc_HdlNr,loc_FILNR,my_Rechnr, 'F', 'F', my_RECHART, loc_AUFTRNR, m_DEBITOR, XTool.GetSysDate(loc_HDLNR), my_Zahlungsart,m_VERMITTLER,
loc_VermUmsatz,loc_KmUmsatz,my_mwstmiet,m_ErlSchmal,m_ErlSchmal1,m_ErlSchmal2,my_mwstmiet,
my_erlschmal,my_erlschmal1,my_erlschmal2,my_erlmiet, my_erlkm,
loc_PAIUmsatz,my_mwstverspai,loc_CDWUmsatz,my_mwstverscdw,loc_TrpUmsatz,
my_mwstverstp,my_erlvers,loc_KraftUmsatz,my_mwstkraft,my_erlkraft,loc_BetankUmsatz,my_erlbetank,loc_SonstUmsatz,loc_SonstUmsatzFr,loc_ZubUmsatz,loc_DlUmsatz,loc_ZubUmsatzFr,loc_DlUmsatzFr,
my_mwstsonst,my_erlsonst,my_erlsonstfrei,m_BerKm,m_ANKM - m_ABKM,m_Gezahlt,my_Zahlungsart,m_KST,m_KSTFil,m_GeschBer,loc_HDLNR,
my_BEMERKUNG21,my_BEMERKUNG22,my_BEMERKUNG23,my_BEMERKUNG24,my_BEMERKUNG25,my_BEMERKUNG26,'F','F',
TO_DATE(p_BBEGINN || p_BBEGINNUHR,Loc_NLSDate||Loc_NLSTime),
TO_DATE(p_BENDE || p_BENDEUHR,Loc_NLSDate||Loc_NLSTime),
TO_DATE(TO_CHAR(Rec_Auftrag.MBEGINN,Loc_NLSDate) || TO_CHAR(Rec_Auftrag.MBUHR,Loc_NLSTime),Loc_NLSDate||Loc_NLSTime),
TO_DATE(TO_CHAR(Rec_Auftrag.MENDE,Loc_NLSDate) || TO_CHAR(Rec_Auftrag.MEUHR,Loc_NLSTime),Loc_NLSDate||Loc_NLSTime),
my_TARIF, my_TARIFS, p_SONSTBEMERK,m_ProvBasis,m_ProvSatz,my_ProvKonto,
m_Liter, p_SORTE, p_HDLNR, NVL(p_USERNR,0), m_ABKM, m_ANKM, mp_TARIFBEZ, mp_STAFFELNR,
mp_GRUND, mp_PREIS1, mp_FAKTOR1, mp_EINHEIT1, mp_MEHRFACH, mp_INCLKM1, mp_INCLANZKM1, mp_DMKM, mp_INCLCDW, mp_DMCDW, mp_INCLPAI, mp_DMPAI,
mp_PREIS2, mp_FAKTOR2, mp_EINHEIT2, mp_INCLANZKM2, mp_INCLCDW2, mp_DMCDW2, mp_INCLPAI2, mp_DMPAI2, p_MANUELL, mp_KULANZ, mp_MAXRABATT,
my_BERECHGRP,p_TARIFFZART,p_TARIFAUS1||p_TARIFAUS2||p_TARIFAUS3||p_TARIFAUS4,rec_Auftrag.BERECHGRP,my_FZKLASSE, my_FZSTAT, my_FZOWNER, mp_STNRECHNR, my_MITANZ, p_MITZWI, p_MITZUB, p_MITLST, p_ZUSANLEASING, p_NURFKM,
m_GKREF,m_GKTYP, mp_PREISLISTE, m_RABATT, NVL(p_RABATTZL,0), p_ABWRECH, my_ktomwst, my_ktomwst2, p_UNFALLERSATZ, m_GDVFLAG,
m_VertrSatz, m_VertrBetr, m_VtrKonto,Rec_Auftrag.AUFTRNREXT, m_MwStSL, my_F2GO,
my_MK,my_ST,my_KST,my_AK,my_KT,my_MKA,my_STA,my_KSTA,my_AKA,my_KTA,my_MKFV,my_STFV,my_KSTFV,my_AKFV,my_KTFV,my_UST,my_KstMobi,my_ZahlTag,
my_KtoAbwDeb, my_FremdVWSoll, my_FremdVWHaben,
p_AUTHCODE, p_ROBREGRUND, Rec_Auftrag.ROBKENNZ, Rec_Auftrag.ROBLEASING, my_Referenz,my_ReferenzArt,'W',
p_SHOWTRFALL, p_SHOWZBDALL, p_KRDWECHSEL, loc_MvArt, loc_StatusExtern);
-- my_RechArt:=my_MerkArt;
IF my_Zahlungsart='2' AND
NVL(m_CashTyp,0)=0
THEN UPDATE RECHNUNG
SET KRDBANK = p_KRDBANK,
KRDNR = p_KRDGENNR,
KRDBETRAG = m_Gezahlt
WHERE HDLNR = loc_HdlNr
AND RECHNR = my_Rechnr
AND RECHART = my_RECHART;
END IF;
IF my_Zahlungsart='2' AND
NVL(m_CashTyp,0)=2
THEN IF m_Gezahlt<0.0
THEN DoStornoZwis;
ELSE GetLastToken;
UPDATE RECHNUNG
SET ARVATOTRANSTOKEN = my_TransToken,
ARVATOPAYTOKEN = my_PayToken
WHERE HDLNR = loc_HdlNr
AND RECHNR = my_Rechnr
AND RECHART = my_RECHART;
END IF;
-- m_ERRORTEXT:='* Auszahlung';
-- m_FUNC:='E';
END IF;
END;
--
------- Zentralen MV updaten NL
PROCEDURE DoUpdateZentralMv IS
myCnt INTEGER;
myPHdlNr VARCHAR2(08);
myPFilNr VARCHAR2(04);
myPRechNr INTEGER;
myAuftrNrExt VARCHAR2(30);
myPAuftrNr INTEGER;
myDMSSource VARCHAR2(03);
BEGIN
IF (SUBSTR(Rec_Auftrag.AUFTRNREXT,1,3)<>'F3_') OR
(Rec_Auftrag.DMSSOURCE<>'F3')
THEN RETURN;
END IF;
BEGIN
SELECT HDLNR, FILNR, AUFTRNR
INTO myPHdlNr, myPFilNr, myPAuftrNr
FROM AUFTRAG
WHERE DMSSOURCE='F3'
AND AUFTRNREXT=Rec_Auftrag.AUFTRNREXT
AND HDLNR<>p_AHDLNR
AND ROWNUM=1;
EXCEPTION WHEN OTHERS THEN myPHdlNr:=NULL;
END;
IF myPHdlNr IS NULL
THEN RETURN;
END IF;
SELECT RECHNR
INTO myPRechnr
FROM FIRMA
WHERE HDLNR=myPHdlNr FOR UPDATE;
UPDATE FIRMA SET
RECHNR = RECHNR + 1
WHERE HDLNR=myPHdlNr;
DoWriteRechnung(loc_HDLNR => myPHdlNr,
loc_FILNR => myPFilNr,
loc_AUFTRNR=> myPAuftrNr,
loc_RECHNR => myPRechNr,
loc_LFD => 1);
AUFTRTOOLS.DoArcAuftr(myPHdlNr,myPFilNr,p_KENNUNG,myPAuftrNr,p_USERNR);
UPDATE AUFTRAG SET
KENNUNG = m_tmpkennung,
ERFASSER = p_USERNR,
ERFUHR = XTool.GetSysDate(myPHdlNr)
WHERE HDLNR =myPHdlNr AND
KENNUNG=p_KENNUNG AND
AUFTRNR=mypAuftrNr;
END;
-------
-- ROB
PROCEDURE DoRobRechnung IS
BEGIN
SELECT ROBHDLNR
INTO m_RobHdlNr
FROM PARTNER
WHERE HDLNR=p_HDLNR
AND NR = SUBSTR(p_HDLNR,1,3)||';'||SUBSTR(p_HDLNR,4,5)||';'||p_FILNR;
UPDATE RECHNUNG
SET ROBSTATUS=1
WHERE HDLNR =p_HDLNR
AND RECHNR=my_RechNr;
COMMIT;
END;
PROCEDURE MeldeRob IS
Rec_Partner PARTNER%ROWTYPE;
my_FreiKm INTEGER;
my_Kontakt VARCHAR2(80);
my_Treibstoff INTEGER;
my_Automatik VARCHAR2(01);
my_UserName VARCHAR2(40);
my_Kennz VARCHAR2(15);
my_Telefon VARCHAR2(20);
my_ROBTreib VARCHAR2(01);
my_ROBKlasse VARCHAR2(10);
my_Ausstattung VARCHAR2(30);
my_TarifAus VARCHAR2(05);
my_Station VARCHAR2(05);
my_Betrag FLOAT;
my_BetragNOk FLOAT;
my_Preis1 FLOAT;
my_KMPreis FLOAT;
my_DMPAI FLOAT;
my_DMCDW FLOAT;
my_VerbrKost FLOAT;
my_VerbrP VARCHAR2(01);
my_AbhKost FLOAT;
my_AbhP VARCHAR2(01);
my_Status_Auf VARCHAR2(10);
my_Status_Akt INTEGER;
my_Status_Rech VARCHAR2(10);
my_IsFakt BOOLEAN;
my_Cnt INTEGER;
PROCEDURE DoCall IS
loc_Name VARCHAR2(40);
loc_Strasse VARCHAR2(40);
loc_PLZ VARCHAR2(10);
loc_Ort VARCHAR2(40);
BEGIN
BEGIN
IF NVL(Rec_Auftrag.FZGVERBR,'F')='W'
THEN loc_Strasse:=Rec_AUFTRAG.ZUSTRASSE;
loc_Name :=Rec_AUFTRAG.ZUNAME;
loc_PLZ :=Rec_AUFTRAG.ZUPLZ;
loc_Ort :=Rec_AUFTRAG.ZUORT;
ELSE SELECT *
INTO Rec_Partner
FROM PARTNER
WHERE HDLNR =p_HDLNR
AND NR =Rec_Auftrag.FILAUFTRAG;
loc_Strasse:=Rec_Partner.STRASSE || ' ' || Rec_Partner.HAUSNR;
loc_Name :=Rec_Partner.NAME_1;
loc_PLZ :=Rec_Partner.PLZ;
loc_Ort :=Rec_Partner.ORT;
END IF;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
my_Preis1 :=mp_Preis1;
my_KMPreis:=mp_DMKM;
my_DMCDW :=mp_DMCDW;
my_DMPAI :=mp_DMPAI;
IF mp_Faktor1>1
THEN my_Preis1:=my_Preis1 / mp_Faktor1;
END IF;
IF NVL(m_Rabatt,0.0)>0
THEN CASE NVL(p_RabattZL,0)
WHEN 0 THEN my_Preis1 :=my_Preis1 - (my_Preis1 / 100 * m_Rabatt);
my_KmPreis:=my_KmPreis - (my_KmPreis / 100 * m_Rabatt);
WHEN 1 THEN my_Preis1 :=my_Preis1 - (my_Preis1 / 100 * m_Rabatt);
WHEN 2 THEN my_Preis1 :=my_Preis1 - (my_Preis1 / 100 * m_Rabatt);
my_KmPreis:=my_KmPreis - (my_KmPreis / 100 * m_Rabatt);
my_DMCDW :=my_DMCDW - (my_DMCDW / 100 * m_Rabatt);
my_DMPAI :=my_DMPAI - (my_DMPAI / 100 * m_Rabatt);
ELSE my_Preis1 :=my_Preis1 - (my_Preis1 / 100 * m_Rabatt);
my_KmPreis:=my_KmPreis - (my_KmPreis / 100 * m_Rabatt);
my_DMCDW :=my_DMCDW - (my_DMCDW / 100 * m_Rabatt);
my_DMPAI :=my_DMPAI - (my_DMPAI / 100 * m_Rabatt);
my_VerbrKost:=my_VerbrKost - (my_VerbrKost / 100 * m_Rabatt);
my_AbhKost :=my_AbhKost - (my_AbhKost / 100 * m_Rabatt);
END CASE;
END IF;
IF my_VerbrP='F'
THEN my_VerbrKost:=my_VerbrKost*m_EchteTage;
END IF;
IF my_AbhP='F'
THEN my_AbhKost:=my_AbhKost*m_EchteTage;
END IF;
my_Preis1:=my_Preis1+my_DMCDW+my_DMPAI;
ROBBOL.out_aanvragenVV(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
-- p_OPDRACHTVERVALLEN => p_Storno,
p_REDENNIETFACTUREREN => p_ROBREGRUND, -- Grund, warum nicht fakturieren
p_AANTALVRIJEKILOMETERS => TO_CHAR(my_Freikm), -- Anzahl der Freikilometer
p_AFLEVERADRES => loc_Strasse, --Strasse vom Mieter
p_AFLEVERKONTAKTPERSOON => my_UserName,--Kontakt, -- Kontaktperson
p_AFLEVERNAAM => loc_Name,-- Name
p_AFLEVERPLAATS => loc_Ort, -- Ort
p_AFLEVERPOSTCODE => loc_PLZ, -- PLZ
p_BRANDSTOFCODE => my_ROBTreib,-- Kraftstoffcode FELD: BrandstofCode
p_HUURKLASSE => my_ROBKlasse, -- Mietklasse FELD: HuurKlasse
p_MBEGINN => TO_DATE(TO_CHAR(Rec_Auftrag.MBEGINN,'ddmmyyyy')||TO_CHAR(Rec_Auftrag.MBUHR,'hh24mi'),'ddmmyyyyhh24mi'), -- Mietstart
p_INZETDUUR => TO_CHAR(m_EchteTage),-- Mietdauer in Tagen
p_REDENINZETVERVANGENDVERVOER=> Rec_Auftrag.ROBGRUND, -- Grund f�r Einsatz eines Ersatzfahrzeugs FELD: RedenInzetVervangendVervoer, abh�ig von LeasingNr
p_STATIONWAGEN => my_Station, --'true', -- true/false; gibt an woher der Wagen kommt
p_TARIEFMEERKILOMETERS => TO_CHAR(my_KMPreis,'990D99','NLS_NUMERIC_CHARACTERS=''.,'''), -- Tarif pro Kilometer
p_TARIEFPERDAG => TO_CHAR(my_PREIS1,'990D99','NLS_NUMERIC_CHARACTERS=''.,'''), -- Tarif pro Tag
p_VERSNELLINGSBAKTYPE => my_Automatik, -- Schaltungstyp FELD: VersnellingsbakType
p_CONTACTPERSOONLEVERANCHIER => my_Username, -- Kontaktperson bei Autohaus/Werkstatt
p_KENTEKEN => Rec_Auftrag.ROBKENNZ, -- Kennzeichen, des beim Leasinggeber gemeldeten Fahrzeugs
p_TELEFOONNUMMERLEVERANCIER => my_Telefon, -- Telefonnummer f�r Autohaus/Werkstatt
p_WERKBONNUMMER => Rec_Auftrag.AUFTRNR, -- Arbeitszeitnachweis-nummer
p_NUMMERLEASEMAATSCHAPPIJ => Rec_Auftrag.ROBLEASING, -- Nummer der Leasingfirma
p_KENTEKENVERVANGENDVERVOER => Rec_Auftrag.KENNZ, -- Kennzeichen des Ersatzfahrzeugs
p_AUFTRNREXT => Rec_Auftrag.AUFTRNREXT, -- ROB Auftragsnummer; kann erst beim zweiten Aufruf mitgegeben werden
p_STATUS_AUFTRAG => my_Status_Auf,-- Status Auftrag
p_STATUS_AKTIVITEIT => my_Status_Akt,-- Status Aktivit�
p_WERKOPDRACHTFACTUREERBAAR => my_IsFakt, -- kann fakturiert werden
p_STATUS_RECHNUNG => my_Status_Rech,-- Rechnungssstatus
p_BRANDSTOFKOSTEN => TO_CHAR(m_KraftUmsatz,'9990D99','NLS_NUMERIC_CHARACTERS=''.,'''), -- Treibstoff
p_AFTANKKOSTEN => TO_CHAR(m_BetankUmsatz,'9990D99','NLS_NUMERIC_CHARACTERS=''.,'''), -- Betankung
p_BRENGKOSTEN => TO_CHAR(my_VerbrKost,'990D99','NLS_NUMERIC_CHARACTERS=''.,'''), -- Verbringung
p_HAALKOSTEN => TO_CHAR(my_AbhKost,'990D99','NLS_NUMERIC_CHARACTERS=''.,'''), -- Abholung
p_EIGENRISICOCLAIM => '0.00', -- SB, ohne MwSt!!
p_OVERIGEKOSTEN => TO_CHAR(m_SonstUmsatz,'9990D99','NLS_NUMERIC_CHARACTERS=''.,'''), -- keine Ahnung
p_TOELICHTINGOVERIGEKOSTEN => p_SONSTBEMERK, -- Beschreibung sonstiges
p_VERREDENKILOMETERS => TO_CHAR(m_ANKM-m_ABKM), -- gefahrene km
p_VRIJETEKSTLEVERANCIER => my_RobMemo, -- Freitext
p_BETRAG => my_Betrag,
p_BETRAGNICHTOK => my_BetragNOk,
p_CODE => my_Code,
p_LEASINGTEXT => my_IntMessage,
p_MESSAGE => my_Message);
END;
BEGIN
-- Firma lesen
SELECT TELEFON
INTO my_Telefon
FROM FIRMA
WHERE HDLNR=p_HDLNR;
-- User lesen
SELECT DRUCKNAME
INTO my_UserName
FROM USERS
WHERE HDLNR=p_HDLNR
AND NR =p_USERNR;
-- Fahrzeug lesen
BEGIN
SELECT TREIBSTOFF, AUSSTATTUNG
INTO my_Treibstoff, my_Ausstattung
FROM FAHRZEUG
WHERE HDLNR =p_HDLNR
AND FAHRGESTELL=Rec_Auftrag.FAHRGESTELL
AND ZULASSUNG =Rec_Auftrag.ZULASSUNG;
EXCEPTION WHEN OTHERS THEN my_Treibstoff:=0;
END;
-- Zubeh�r lesen
BEGIN
SELECT PREIS, PAUSCHAL
INTO my_VerbrKost, my_VerbrP
FROM AUFTRZUB
WHERE HDLNR =p_HDLNR
AND AUFTRNR=p_AUFTRNR
AND ROBFLAG='V'
AND ROWNUM =1;
EXCEPTION WHEN OTHERS THEN my_VerbrKost:=0.0;
END;
BEGIN
SELECT PREIS, PAUSCHAL
INTO my_AbhKost, my_AbhP
FROM AUFTRZUB
WHERE HDLNR =p_HDLNR
AND AUFTRNR=p_AUFTRNR
AND ROBFLAG='A'
AND ROWNUM =1;
EXCEPTION WHEN OTHERS THEN my_AbhKost:=0.0;
END;
my_TarifAus:=Rec_Auftrag.FZTARIFAUS;
IF SUBSTR(my_TarifAus,1,1)='V'
THEN my_Station:='true';
ELSE my_Station:='false';
END IF;
CASE SUBSTR(my_TarifAus,2,1)
WHEN '0' THEN my_Treibstoff:=0;
WHEN 'D' THEN my_Treibstoff:=1;
WHEN 'E' THEN my_Treibstoff:=6;
WHEN 'G' THEN my_Treibstoff:=4;
WHEN 'H' THEN my_Treibstoff:=7;
ELSE my_Treibstoff:=0;
END CASE;
IF SUBSTR(my_TarifAus,3,1)='A'
THEN my_Automatik:='A';
ELSE my_Automatik:='H';
END IF;
BEGIN
SELECT ROB_WERT
INTO my_ROBTreib
FROM EM_BACK.ROB
WHERE ROB_TYP=1
AND EM_NR=my_TreibStoff+2500;
EXCEPTION WHEN OTHERS THEN my_ROBTreib:='D';
END;
BEGIN
SELECT ROB_WERT
INTO my_ROBKlasse
FROM EM_BACK.ROB
WHERE ROB_TYP=2
AND TRIM(EM_NR) =SUBSTR(p_TARIFTYP,7,1)
AND HERSTELLERNR=SUBSTR(p_TARIFTYP,1,1)
AND ROWNUM=1;
EXCEPTION WHEN OTHERS THEN my_ROBKlasse:='A';
END;
IF m_FreiKm='alle'
THEN my_FreiKm:=99999;
ELSE my_FreiKm:=NVL(m_FreiKm,0)+NVL(m_FreiKm1,0);
my_FreiKm:=ROUND(my_FreiKm / m_EchteTage);
END IF;
DoCall;
IF my_CODE<>'0000'
THEN my_Message:='* ROB: '||my_Message;
ELSE my_Message:=NULL;
END IF;
UPDATE AUFTRAG
SET ROBAUFSTATUS= my_Status_Auf
WHERE HDLNR =p_HDLNR AND
KENNUNG=p_KENNUNG AND
AUFTRNR=p_AUFTRNR;
UPDATE RECHNUNG
SET ROBSTATUS=1,
ROBERROR = SUBSTR(my_Message,1,300)
WHERE HDLNR =p_HDLNR
AND RECHNR=my_RechNr;
COMMIT;
END;
PROCEDURE GetRestTage IS
loc_LastZwiDate DATE;
loc_LastZwiTime DATE;
BEGIN
BEGIN
SELECT MAX(BENDE)
INTO loc_LastZwiDate
FROM RECHNUNG
WHERE HDLNR =p_AHDLNR
AND AUFTRNR=Rec_Auftrag.AUFTRNR
AND ZWIRECH='W'
AND STNFLAG IS NULL;
EXCEPTION WHEN OTHERS THEN loc_LastZwiDate:=NULL;
END;
IF loc_LastZwiDate IS NULL
THEN loc_LastZwiDate:=TO_DATE(p_BBEGINN,Loc_NLSDate);
loc_LastZwiTime:=TO_DATE(p_BBEGINNUHR,Loc_NLSTime);
ELSE loc_LastZwiTime:=loc_LastZwiDate;
END IF;
AUFTRTOOLS.DoRechnen(p_BBEGINN => loc_LastZwiDate,
p_BBUHR => TO_CHAR(loc_LastZwiTime,Loc_NLSTime),
p_BENDE => TO_DATE(p_BENDE,Loc_NLSDate),
p_BEUHR => p_BENDEUHR,
p_MEHRFACH => Rec_Basis6.MEHRFACH,
p_EINHEIT1 => Rec_Basis6.EINHEIT1,
p_EINHEIT2 => Rec_Basis6.EINHEIT2,
p_FAKTOR1 => Rec_Basis6.FAKTOR1,
p_FAKTOR2 => Rec_Basis6.FAKTOR2,
p_INCLKM1 => Rec_Basis6.INCLKM1,
p_ANKM => m_ANKM,
p_ABKM => m_ABKM,
p_INCLANZKM1=> Rec_Basis6.INCLANZKM1,
p_INCLANZKM2=> Rec_Basis6.INCLANZKM2,
p_KULANZ => mp_KULANZ,
p_LANGZEIT => Rec_Auftrag.LANGZEIT,
p_ZWIRECH => 'F',
p_ABRTYP => m_AbrTyp,
p_BERKM => m_BerKm,
p_ANZSTD => m_AnzStd,
p_ECHTETAGE => m_ResteTage,
p_DAUER => m_Dauer,
p_REST => m_Rest,
p_FREIKM => m_FreiKm,
p_FREIKM1 => m_FreiKm1);
END;
-------- Split gegen Hersteller
PROCEDURE SplitVorgang IS
Rec_Fahrer FAHRER%ROWTYPE;
loc_MvNummer INTEGER;
BEGIN
UPDATE AUFTRAG
SET MENDE = TO_DATE(p_HSTBENDE || p_HSTBENDEUHR,Loc_NLSDate||Loc_NLSTime),
MEUHR = TO_DATE(p_HSTBENDE || p_HSTBENDEUHR,Loc_NLSDate||Loc_NLSTime),
BENDE = TO_DATE(p_HSTBENDE || p_HSTBENDEUHR,Loc_NLSDate||Loc_NLSTime),
BEUHR = TO_DATE(p_HSTBENDE || p_HSTBENDEUHR,Loc_NLSDate||Loc_NLSTime),
HSTSPLGRUND = p_HSTSPLGRUND,
ANKM = ABKM+p_HSTKM
WHERE HDLNR =p_HDLNR
AND KENNUNG=p_KENNUNG
AND AUFTRNR=p_AUFTRNR;
SELECT *
INTO Rec_Fahrer
FROM FAHRER
WHERE HDLNR =p_HDLNR
AND AUFTRNR=p_AUFTRNR
AND NR =1;
SELECT AUFTRNR
INTO loc_MvNummer
FROM FIRMA
WHERE HDLNR=my_HDLNR FOR UPDATE;
UPDATE FIRMA
SET AUFTRNR=AUFTRNR+1
WHERE HDLNR=my_HDLNR;
Rec_Auftrag.AUFTRNR :=loc_MvNummer;
Rec_Auftrag.GKREF :=NULL;
Rec_Auftrag.GKPRLNR :=NULL;
Rec_Auftrag.STATUSEXTERN:=NULL;
Rec_Auftrag.EXTGUID :=NULL;
Rec_Auftrag.INTGUID :=NULL;
Rec_Auftrag.MVART :=NULL;
Rec_Auftrag.MBEGINN :=TO_DATE(p_HSTBENDE || p_HSTBENDEUHR,Loc_NLSDate||Loc_NLSTime)+(1/1440);
Rec_Auftrag.MBUHR :=TO_DATE(p_HSTBENDE || p_HSTBENDEUHR,Loc_NLSDate||Loc_NLSTime)+(1/1440);
Rec_Auftrag.BBEGINN :=TO_DATE(p_HSTBENDE || p_HSTBENDEUHR,Loc_NLSDate||Loc_NLSTime)+(1/1440);
Rec_Auftrag.BBUHR :=TO_DATE(p_HSTBENDE || p_HSTBENDEUHR,Loc_NLSDate||Loc_NLSTime)+(1/1440);
Rec_Auftrag.ABKM :=Rec_Auftrag.ABKM+p_HSTKM;
INSERT INTO AUFTRAG
VALUES Rec_Auftrag;
Rec_Fahrer.AUFTRNR :=loc_MvNummer;
INSERT INTO FAHRER
VALUES Rec_Fahrer;
COMMIT;
EXCEPTION
WHEN OTHERS THEN RollBack;
END;
FUNCTION GetOpenWechsel RETURN INTEGER IS
loc_Cnt INTEGER:=0;
BEGIN
SELECT COUNT(AUFTRNR)
INTO loc_Cnt
FROM AUFTRAG
WHERE HDLNR =Rec_Auftrag.HDLNR
AND KENNUNG IN ('A','B')
AND AUFTRNR<>Rec_Auftrag.AUFTRNR
AND FZWECHSELMASTER=Rec_Auftrag.FZWECHSELMASTER;
RETURN loc_Cnt;
END;
FUNCTION GetMinDate RETURN VARCHAR IS
loc_MBeginn DATE;
BEGIN
SELECT MIN(MBEGINN)
INTO loc_MBeginn
FROM AUFTRAG
WHERE HDLNR=p_HDLNR
AND FZWECHSELMASTER=Rec_Auftrag.FZWECHSELMASTER;
RETURN TO_CHAR(loc_MBeginn,Loc_NLSDate);
END;
PROCEDURE GetKontierung IS
FUNCTION ReadKtoTemplate(loc_TARIFFZART VARCHAR2,
loc_SEGMENT VARCHAR2,
loc_ZEIT VARCHAR2,
loc_TRFART VARCHAR2,
loc_FZKLASSE VARCHAR2) RETURN BOOLEAN IS
BEGIN
SELECT COUNT(HDLNR)
INTO m_Cnt
FROM FIRMAKTOTEMPL
WHERE HDLNR =p_AHDLNR
AND NVL(TARIFFZART,'-')=NVL(loc_TARIFFZART,'-')
AND NVL(TRFSEGMENT,'-')=NVL(loc_SEGMENT,'-')
AND NVL(TRFZEIT,'-') =NVL(loc_ZEIT,'-')
AND NVL(TRFART,'-') =NVL(loc_TRFART,'-')
AND ((loc_FZKLASSE IS NULL AND FZKLASSEN IS NULL) OR (loc_FZKLASSE IS NOT NULL AND INSTR(FZKLASSEN,loc_FZKLASSE)>0))
AND STANDARD ='W';
IF m_Cnt=1
THEN SELECT *
INTO Rec_FIRMATMPL
FROM FIRMAKTOTEMPL
WHERE HDLNR =p_AHDLNR
AND NVL(TARIFFZART,'-')=NVL(loc_TARIFFZART,'-')
AND NVL(TRFSEGMENT,'-')=NVL(loc_SEGMENT,'-')
AND NVL(TRFZEIT,'-') =NVL(loc_ZEIT,'-')
AND NVL(TRFART,'-') =NVL(loc_TRFART,'-')
AND ((loc_FZKLASSE IS NULL AND FZKLASSEN IS NULL) OR (loc_FZKLASSE IS NOT NULL AND INSTR(FZKLASSEN,loc_FZKLASSE)>0))
AND STANDARD ='W';
RETURN TRUE;
ELSE RETURN FALSE;
END IF;
END;
PROCEDURE FromKtoTemplate IS
BEGIN
my_erlmiet :=rec_firmatmpl.ERLMIET;
my_erlkm :=rec_firmatmpl.ERLKM;
my_erlschmal :=rec_firmatmpl.ERLSCHMAL;
my_erlschmal1 :=rec_firmatmpl.ERLSCHMAL1;
my_erlschmal2 :=rec_firmatmpl.ERLSCHMAL2;
my_erlkraft :=rec_firmatmpl.ERLKRAFT;
my_erlbetank :=rec_firmatmpl.ERLBETANK;
my_erlsonst :=rec_firmatmpl.ERLSONST;
my_erlsonstfrei :=rec_firmatmpl.ERLFREISONST;
my_erlvers :=rec_firmatmpl.ERLVERS;
my_erlintern :=rec_firmatmpl.MIETINTERN;
my_kmintern :=rec_firmatmpl.KMINTERN;
my_versintern :=rec_firmatmpl.VERSINTERN;
my_kraftintern :=rec_firmatmpl.KRAFTINTERN;
my_betankintern :=rec_firmatmpl.BETANKINTERN;
my_sonstintern :=rec_firmatmpl.SONSTINTERN;
my_erlmobi :=rec_firmatmpl.ERLMOBI;
my_provkonto :=rec_firmatmpl.AUFPROV;
my_fremdvwsoll :=rec_firmatmpl.FREMDVWSOLL; -- wird �berschrieben, wenn FremdVw
my_fremdvwhaben :=rec_firmatmpl.FREMDVWSOLL;
m_vtrkonto :=rec_firmatmpl.VTRKONTO;
my_Mk :=rec_firmatmpl.MK;
my_St :=rec_firmatmpl.ST;
my_Kst :=rec_firmatmpl.KST;
--my_Ak :=rec_firmatmpl.AK;
my_Kt :=rec_firmatmpl.KT;
my_KstMobi :=rec_firmatmpl.KSTMOBI;
my_MkA :=0;
my_StA :=0;
my_KstA :=0;
my_AkA :=0;
my_KtA :=0;
my_MkFV :=rec_firmatmpl.MK;
my_StFV :=rec_firmatmpl.ST;
my_KstFV :=rec_firmatmpl.KST;
--my_AkFV :=rec_firmatmpl.AK;
my_KtFV :=rec_firmatmpl.KT;
SELECT ABWDEBKONTO
INTO my_ktoabwdeb
FROM ADRESSEN
WHERE HDLNR =p_AHDLNR
AND ART ='K'
AND NUMMER=m_Debitor;
END;
PROCEDURE FromKtoTemplateFV IS
BEGIN
my_MkFV :=rec_firmatmpl.MK;
my_StFV :=rec_firmatmpl.ST;
my_KstFV :=rec_firmatmpl.KST;
--my_AkFV :=rec_firmatmpl.AK;
my_KtFV :=rec_firmatmpl.KT;
my_fremdvwhaben :=rec_firmatmpl.FREMDVWSOLL;
END;
BEGIN
SELECT ERLMIET, ERLKM, ERLSCHMAL, ERLSCHMAL1, ERLSCHMAL2, ERLKRAFT, ERLBETANK, ERLSONST, ERLFREISONST, ERLVERS,
ERLINTERN, KMINTERN, VERSINTERN, SONSTINTERN, KRAFTINTERN, BETANKINTERN,
ERLMOBI, AUFPROV, KTOMWST, KTOMWST2, VTRKONTO, KONZERNZUGR, ZAHLTAG, SEPATAGE, HATFZGKSTSTELLE, HATKTOTEMPLATE
INTO my_erlmiet, my_erlkm, my_erlschmal, my_erlschmal1, my_erlschmal2, my_erlkraft, my_erlbetank, my_erlsonst, my_erlsonstfrei, my_erlvers,
my_erlintern, my_kmintern, my_versintern, my_sonstintern, my_kraftintern, my_betankintern,
my_erlmobi, my_ProvKonto, my_ktomwst, my_ktomwst2, m_VtrKonto, m_konzernzugr, my_ZahlTag, my_SepaZahlTag, my_HatFzKst, m_HatKtoTempl
FROM FIRMA f, FIRMAPARAM fp
WHERE f.HDLNR=p_AHDLNR AND fp.HDLNR=p_AHDLNR;
my_MkFV :=my_MK;
my_StFV :=my_ST;
my_KstFV :=my_KST;
my_AkFV :=my_AK;
my_KtFV :=my_KT;
SELECT COUNT(HDLNR)
INTO m_Cnt
FROM FIRMAKTO
WHERE HDLNR=p_AHDLNR;
IF m_Cnt=1
THEN SELECT *
INTO Rec_FIRMAKTO
FROM FIRMAKTO
WHERE HDLNR=p_AHDLNR;
IF Rec_FirmaKto.USESKR='W'
THEN my_erlmiet :=rec_firmakto.ERLMIET;
my_erlkm :=rec_firmakto.ERLKM;
my_erlschmal :=rec_firmakto.ERLSCHMAL;
my_erlschmal1 :=rec_firmakto.ERLSCHMAL1;
my_erlschmal2 :=rec_firmakto.ERLSCHMAL2;
my_erlkraft :=rec_firmakto.ERLKRAFT;
my_erlbetank :=rec_firmakto.ERLBETANK;
my_erlsonst :=rec_firmakto.ERLSONST;
my_erlsonstfrei :=rec_firmakto.ERLFREISONST;
my_erlvers :=rec_firmakto.ERLVERS;
my_erlintern :=rec_firmakto.ERLINTERN;
my_kmintern :=rec_firmakto.KMINTERN;
my_versintern :=rec_firmakto.VERSINTERN;
my_kraftintern :=rec_firmakto.KRAFTINTERN;
my_betankintern :=rec_firmakto.BETANKINTERN;
my_sonstintern :=rec_firmakto.SONSTINTERN;
my_erlmobi :=rec_firmakto.ERLMOBI;
my_provkonto :=rec_firmakto.AUFPROV;
my_ktomwst :=rec_firmakto.KTOMWST;
my_ktomwst2 :=rec_firmakto.KTOMWST2;
m_vtrkonto :=rec_firmakto.VTRKONTO;
my_Mk :=rec_firmakto.MK;
my_St :=rec_firmakto.ST;
my_Kst :=rec_firmakto.KST;
my_Ak :=rec_firmakto.AK;
my_Kt :=rec_firmakto.KT;
my_KstMobi :=rec_firmakto.KSTMOBI;
my_MkA :=0;
my_StA :=0;
my_KstA :=0;
my_AkA :=0;
my_KtA :=0;
my_MkFV :=rec_firmakto.MK;
my_StFV :=rec_firmakto.ST;
my_KstFV :=rec_firmakto.KST;
my_AkFV :=rec_firmakto.AK;
my_KtFV :=rec_firmakto.KT;
END IF;
END IF;
IF NVL(m_HatKtoTempl,'F')='W'
THEN -- htp.p('Standard<br/>');
IF ReadKtoTemplate(NULL,NULL,NULL,NULL,NULL)
THEN FromKtoTemplate;
END IF;
-- htp.p('1 Parameter<br/>');
-- Standard f�r FzKlasse
IF ReadKtoTemplate(NULL,NULL,NULL,NULL,SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r Tarifart
IF ReadKtoTemplate(NULL,NULL,NULL,SUBSTR(my_Tarif,6,1),NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r Zeit
IF ReadKtoTemplate(NULL,NULL,SUBSTR(my_Tarif,4,2),NULL,NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r Segment
IF ReadKtoTemplate(NULL,SUBSTR(my_Tarif,2,2),NULL,NULL,NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt
IF ReadKtoTemplate(my_FzTarifFzArt,NULL,NULL,NULL,NULL)
THEN FromKtoTemplate;
END IF;
-- htp.p('2 Parameter<br/>');
-- Standard f�r Tarifart und FzKlasse
IF ReadKtoTemplate(NULL,NULL,NULL,SUBSTR(my_Tarif,6,1),SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r Zeit und FzKlasse
IF ReadKtoTemplate(NULL,NULL,SUBSTR(my_Tarif,4,2),NULL,SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r Segment und FzKlasse
IF ReadKtoTemplate(NULL,SUBSTR(my_Tarif,2,2),NULL,NULL,SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt und FzKlasse
IF ReadKtoTemplate(my_FzTarifFzArt,NULL,NULL,NULL,SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r Zeit und Tarifart
IF ReadKtoTemplate(NULL,NULL,SUBSTR(my_Tarif,4,2),SUBSTR(my_Tarif,6,1),NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r Segment und Tarifart
IF ReadKtoTemplate(NULL,SUBSTR(my_Tarif,2,2),NULL,SUBSTR(my_Tarif,6,1),NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt und Tarifart
IF ReadKtoTemplate(my_FzTarifFzArt,NULL,NULL,SUBSTR(my_Tarif,6,1),NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r Segment und Zeit
IF ReadKtoTemplate(NULL,SUBSTR(my_Tarif,2,2),SUBSTR(my_Tarif,4,2),NULL,NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt und Zeit
IF ReadKtoTemplate(my_FzTarifFzArt,NULL,SUBSTR(my_Tarif,4,2),NULL,NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt und Segment
IF ReadKtoTemplate(my_FzTarifFzArt,SUBSTR(my_Tarif,2,2),NULL,NULL,NULL)
THEN FromKtoTemplate;
END IF;
-- htp.p('3 Parameter<br/>');
-- Standard f�r Zeit, Tarifart und FzKlasse
IF ReadKtoTemplate(NULL,NULL,SUBSTR(my_Tarif,4,2),SUBSTR(my_Tarif,6,1),SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r Segment, Tarifart und FzKlasse
IF ReadKtoTemplate(NULL,SUBSTR(my_Tarif,2,2),NULL,SUBSTR(my_Tarif,6,1),SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Tarifart und FzKlasse
IF ReadKtoTemplate(my_FzTarifFzArt,NULL,NULL,SUBSTR(my_Tarif,6,1),SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r Segment, Zeit und FzKlasse
IF ReadKtoTemplate(NULL,SUBSTR(my_Tarif,2,2),SUBSTR(my_Tarif,4,2),NULL,SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Zeit und FzKlasse
IF ReadKtoTemplate(my_FzTarifFzArt,NULL,SUBSTR(my_Tarif,4,2),NULL,SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Segment und FzKlasse
IF ReadKtoTemplate(my_FzTarifFzArt,SUBSTR(my_Tarif,2,2),NULL,NULL,SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r Segment, Zeit, Tarifart
IF ReadKtoTemplate(NULL,SUBSTR(my_Tarif,2,2),SUBSTR(my_Tarif,4,2),SUBSTR(my_Tarif,6,1),NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Zeit, Tarifart
IF ReadKtoTemplate(my_FzTarifFzArt,NULL,SUBSTR(my_Tarif,4,2),SUBSTR(my_Tarif,6,1),NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Segment, Tarifart
IF ReadKtoTemplate(my_FzTarifFzArt,SUBSTR(my_Tarif,2,2),NULL,SUBSTR(my_Tarif,6,1),NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Segment, Zeit
IF ReadKtoTemplate(my_FzTarifFzArt,SUBSTR(my_Tarif,2,2),SUBSTR(my_Tarif,4,2),NULL,NULL)
THEN FromKtoTemplate;
END IF;
-- htp.p('4 Parameter<br/>');
-- Standard f�r Segment, Zeit, Tarifart und FzKlasse
IF ReadKtoTemplate(NULL,SUBSTR(my_Tarif,2,2),SUBSTR(my_Tarif,4,2),SUBSTR(my_Tarif,6,1),SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Zeit, Tarifart und FzKlasse
IF ReadKtoTemplate(my_FzTarifFzArt,NULL,SUBSTR(my_Tarif,4,2),SUBSTR(my_Tarif,6,1),SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Segment, Tarifart und FzKlasse
IF ReadKtoTemplate(my_FzTarifFzArt,SUBSTR(my_Tarif,2,2),NULL,SUBSTR(my_Tarif,6,1),SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Segment, Zeit und FzKlasse
IF ReadKtoTemplate(my_FzTarifFzArt,SUBSTR(my_Tarif,2,2),SUBSTR(my_Tarif,4,2),NULL,SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Segment, Zeit, Tarifart
IF ReadKtoTemplate(my_FzTarifFzArt,SUBSTR(my_Tarif,2,2),SUBSTR(my_Tarif,4,2),SUBSTR(my_Tarif,6,1),NULL)
THEN FromKtoTemplate;
END IF;
-- htp.p('5 Parameter<br/>');
-- Standard f�r TarifFzArt, Segment, Zeit, Tarifart, FzKlasse
IF ReadKtoTemplate(my_FzTarifFzArt,SUBSTR(my_Tarif,2,2),SUBSTR(my_Tarif,4,2),SUBSTR(my_Tarif,6,1),SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Fahrzeugspezifisch
SELECT COUNT(HDLNR)
INTO m_Cnt
FROM FIRMAKTOTEMPL
WHERE HDLNR =p_AHDLNR
AND NUMMER =my_FzKtoTempl;
IF m_Cnt=1
THEN SELECT *
INTO Rec_FIRMATMPL
FROM FIRMAKTOTEMPL
WHERE HDLNR =p_AHDLNR
AND NUMMER =my_FzKtoTempl;
FromKtoTemplate;
END IF;
-- ggf. abweichende Verwendung f�llen my_FzTarifFzArt<>p_TARIFFZART
IF my_FzTarifFzart<>p_TARIFFZART
THEN SELECT COUNT(HDLNR)
INTO m_Cnt
FROM FIRMAKTOTEMPL
WHERE HDLNR =p_AHDLNR
AND TARIFFZART=p_TARIFFZART
AND STANDARD='W';
IF m_Cnt=1
THEN SELECT *
INTO Rec_FIRMATMPL
FROM FIRMAKTOTEMPL
WHERE HDLNR =p_AHDLNR
AND TARIFFZART=p_TARIFFZART
AND STANDARD='W';
FromKtoTemplateFV;
END IF;
END IF;
END IF;
END;
BEGIN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin(p_HDLNR => p_HDLNR);
RETURN;
END IF;
my_Pos:=INSTR(mp_TarifTyp,'/');
IF my_Pos>0
THEN mp_PreisListe:=TO_NUMBER(SUBSTR(mp_TarifTyp,1,my_Pos-1));
mp_TarifTyp :=SUBSTR(mp_TarifTyp,my_Pos+1,12);
END IF;
my_Pos:=INSTR(mp_TarifTyp,'#');
IF my_Pos>0
THEN mp_StaffelNr:=TO_NUMBER(SUBSTR(mp_TarifTyp,my_Pos+1,1));
mp_TarifTyp :=SUBSTR(mp_TarifTyp,1,my_Pos-1);
END IF;
DELETE FROM STORNOPAYMENT
WHERE HDLNR =p_HDLNR
AND USERNR=p_USERNR;
COMMIT;
IF mp_INCLKM1='W'
THEN mp_INCLANZKM1:=0;
mp_INCLANZKM2:=0;
mp_DMKM :=0.0;
END IF;
IF mp_INCLPAI='W'
THEN mp_DMPAI :=0.0;
END IF;
IF mp_INCLCDW='W'
THEN mp_DMCDW :=0.0;
END IF;
IF mp_INCLPAI2='W'
THEN mp_DMPAI2 :=0.0;
END IF;
IF mp_INCLCDW2='W'
THEN mp_DMCDW2 :=0.0;
END IF;
IF Xtool.GetPlausi(10,p_HdlNr,pl_LCode,pl_VONDATUM,pl_DELTAWERT,pl_MAXWERT,pl_MINWERT) THEN
IF m_Rabatt > pl_MAXWERT THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',1,''); END IF;
END IF;
IF Xtool.GetPlausi(15,p_HdlNr,pl_LCode,pl_VONDATUM,pl_DELTAWERT,pl_MAXWERT,pl_MINWERT) THEN
IF m_KraftUmsatz > pl_MAXWERT THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',2,''); END IF;
END IF;
IF Xtool.GetPlausi(16,p_HdlNr,pl_LCode,pl_VONDATUM,pl_DELTAWERT,pl_MAXWERT,pl_MINWERT) THEN
IF m_SonstUmsatz > pl_MAXWERT THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',3,''); END IF;
END IF;
IF Xtool.GetPlausi(16,p_HdlNr,pl_LCode,pl_VONDATUM,pl_DELTAWERT,pl_MAXWERT,pl_MINWERT) THEN
IF m_SonstUmsatzFr > pl_MAXWERT THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',3,''); END IF;
END IF;
IF Xtool.GetPlausi(29,p_HdlNr,pl_LCode,pl_VONDATUM,pl_DELTAWERT,pl_MAXWERT,pl_MINWERT) THEN
IF mp_KULANZ > pl_MAXWERT THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',4,''); END IF;
END IF;
IF (p_BENDE IS NULL) OR (p_BENDEUHR IS NULL)
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',7,'');
END IF;
m_error:='1';
-- Plausi
SELECT *
INTO Rec_Auftrag
FROM AUFTRAG
WHERE HDLNR =p_AHDLNR AND
KENNUNG=p_KENNUNG AND
AUFTRNR=p_AUFTRNR;
SELECT COUNT(RECHNR)
INTO m_CntMvRg
FROM RECHNUNG
WHERE HDLNR =my_HDLNR
AND AUFTRNR=p_AUFTRNR
AND MVART IN ('MV1','MV4')
AND STNRECHNR IS NULL
AND STNFLAG IS NULL
AND RECHNR>0;
-- Rob-Vorgang, aber noch nicht ACC, dann Proforma machen (wie KurzR�ck)
IF Rec_Auftrag.ROBGRUND IS NOT NULL AND
NVL(Rec_Auftrag.ROBAUFSTATUS,'NAC')<>'ACC'
THEN my_RobTmp:='W';
END IF;
BEGIN
SELECT SSCHADENNR, VERSDEBITOR, HBJ, HVOLLKASKO, HVORSTEUER, HANREDE, SANREDE, SPARTE, GDVFLAG, HDAUER
INTO my_SchadenNr, my_VERSDEB, my_HBJ, my_VollKsk, my_VorSt, my_HAnrede, my_SAnrede, my_Sparte, m_AufGdvFlag, my_HDauer
FROM ABTRET
WHERE HDLNR =p_AHDLNR AND
AUFTRNR=p_AUFTRNR;
EXCEPTION
WHEN OTHERS THEN my_SchadenNr:='';
END;
IF p_UNFALLERSATZ='F'
THEN m_GdvFlag:='F';
-- ELSE m_GdvFlag:=m_AufGdvFlag;
END IF;
-- m_Vermittler:=Rec_Auftrag.VERMITTLER;
IF --(Rec_Auftrag.FAHRGESTELL<>'') AND
(Rec_Auftrag.FAHRGESTELL<>'-') AND
(Rec_Auftrag.FAHRGESTELL IS NOT NULL)
THEN SELECT TARIFTYP, FZSTAT, HDLNR, FZART, TARIFFZART, FREI_193
INTO my_FZKLASSE, my_FZSTAT, my_FZOWNER, my_FZART, my_FZTARIFFZART, my_FZKTOTEMPL
FROM FAHRZEUG
WHERE FAHRGESTELL= Rec_Auftrag.FAHRGESTELL
AND ZULASSUNG = Rec_Auftrag.ZULASSUNG;
END IF;
IF my_F2GO IS NULL
THEN my_F2GO:='F';
END IF;
IF Rec_Auftrag.DMSSOURCE='F1' -- Free2Go, Rechnungsflag nach AuftragsArt, nicht Fahrzeug!
THEN my_F2GO:='W';
ELSE my_F2GO:='F';
END IF;
IF (m_FUNC='0') OR (m_FUNC='2')
THEN IF m_ANKM < m_ABKM
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',5,'');
END IF;
IF m_ANKM > Rec_Auftrag.ANKM
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',6,'');
END IF;
--IF TO_DATE(p_BENDE || p_BENDEUHR,loc_NLSDate || loc_NLSTime) <
-- TO_DATE(p_BBEGINN || p_BBEGINNUHR,loc_NLSDate || loc_NLSTime)
-- THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',7,'');
--END IF;
IF TO_DATE(p_BENDE || p_BENDEUHR,loc_NLSDate || loc_NLSTime)>
TO_DATE(TO_CHAR(Rec_Auftrag.BENDE,loc_NLSDate) || TO_CHAR(Rec_Auftrag.BEUHR,loc_NLSTime),loc_NLSDate || loc_NLSTime)
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',8,'');
END IF;
IF (p_TARIFTYP IS NULL)
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',10,'');
END IF;
IF Rec_AUFTRAG.ANKM=m_ANKM AND
TO_CHAR(Rec_AUFTRAG.BENDE,loc_NLSDate)=p_BENDE AND
TO_CHAR(Rec_AUFTRAG.BEUHR,loc_NLSTime)=p_BENDEUHR AND
p_STNRECHNR IS NULL AND
NOT doCheckFlags
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',9,'');
END IF;
END IF;
SELECT KONZERNZUGR, NAME_1, STRASSE, HAUSNR, PLZ, ORT, STEUERNR, KONTO, TELEFON, TARIFOPT, CASHTYP, HATRGDEBAKT, HATMWSTREIHE
INTO m_konzernzugr, m_Name1, m_Strasse, m_HausNr, m_PLZ, m_Ort, m_SteuerNr, m_Konto, m_Telefon, m_TarifOpt, m_CashTyp, m_HatRgDebAkt, m_HatMwstReihe
FROM FIRMA F, FIRMAPARAM FP
WHERE F.HDLNR=p_HDLNR AND FP.HDLNR=p_HDLNR;
IF m_FUNC='0' AND p_UNFALLERSATZ='W' AND SUBSTR(m_konzernzugr,5,4)<>'1607'
THEN IF p_ABWRECH IS NULL AND m_GDVFLAG='W'
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',11,'');
END IF;
IF my_SchadenNr IS NULL AND m_GDVFLAG='W'
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',12,'');
END IF;
IF my_HBJ IS NULL
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'erfauftr',31,'');
END IF;
IF NVL(my_VERSDEB,0)=0
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'erfauftr',27,'');
END IF;
IF my_VorSt IS NULL
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'erfauftr',44,'');
END IF;
IF my_VollKsk IS NULL
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'erfauftr',44,'');
END IF;
IF my_HAnrede IS NULL AND m_GDVFLAG='W'
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'erfauftr',45,'');
END IF;
IF my_SAnrede IS NULL AND m_GDVFLAG='W'
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'erfauftr',45,'');
END IF;
IF (my_Sparte IS NULL OR my_SPARTE='000') AND m_GDVFLAG='W'
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'erfauftr',46,'');
END IF;
IF Rec_Auftrag.MVART IN ('MV1','MV4') AND NVL(my_HDauer,0)=0
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'erfauftr',121,'');
END IF;
END IF;
IF my_Zahlungsart='2' AND
NVL(m_CashTyp,0)=0 AND
p_KRDGENNR IS NULL
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',14,'');
END IF;
IF NVL(Rec_Auftrag.FZWECHSELMASTER,0)>0
THEN IF AUFTRTOOLS.CalcFzWechsel(p_HDLNR => Rec_Auftrag.HDLNR,
p_AUFTRNR=> Rec_Auftrag.AUFTRNR,
p_MASTER => Rec_Auftrag.FZWECHSELMASTER,
p_MENDE => Rec_Auftrag.MENDE+(Rec_Auftrag.MEUHR-TRUNC(Rec_Auftrag.MEUHR)))=0
THEN IF GetOpenWechsel>0
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',18,'('||TO_CHAR(GetOpenWechsel)||')');
END IF;
END IF;
END IF;
IF m_errortext IS NOT NULL
THEN m_FUNC:='E';
END IF;
-- Plausi Ende
-- Ermitteln Resttage f�r Zubeh�r
GetRestTage;
--
/*
-- BestRate
IF p_MANUELL='F'
THEN -- mp_STAFFELNR :=Rec_Auftrag.STAFFELNR;
mp_GRUND :=Rec_Auftrag.GRUNDBETRAG;
mp_PREIS1 :=Rec_Auftrag.PREIS1;
mp_FAKTOR1 :=Rec_Auftrag.FAKTOR1;
mp_EINHEIT1 :=Rec_Auftrag.EINHEIT1;
mp_INCLANZKM1 :=Rec_Auftrag.INCLANZKM1;
mp_INCLKM1 :=Rec_Auftrag.INCLKM1;
mp_DMKM :=Rec_Auftrag.DMKM;
mp_DMCDW :=Rec_Auftrag.DMCDW;
mp_DMPAI :=Rec_Auftrag.DMPAI;
mp_PREIS2 :=Rec_Auftrag.PREIS2;
mp_FAKTOR2 :=Rec_Auftrag.FAKTOR2;
mp_EINHEIT2 :=Rec_Auftrag.EINHEIT2;
mp_INCLANZKM2 :=Rec_Auftrag.INCLANZKM2;
mp_DMCDW2 :=Rec_Auftrag.DMCDW2;
mp_DMPAI2 :=Rec_Auftrag.DMPAI2;
mp_TARIFBEZ :=Rec_Auftrag.TARIFBEZ;
-- mp_TARIFTYP :=Rec_Auftrag.TARIFTYP;
mp_MEHRFACH :=Rec_Auftrag.MEHRFACH;
mp_MAXRABATT :=Rec_Auftrag.MAXRABATT;
END IF;
my_CodeNum:=1;
IF NVL(Rec_Auftrag.GKREF,0)>0 AND
mp_PreisListe>0
THEN getGkTarif;
--htp.p(my_CodeNum);
--return;
END IF;
IF my_CodeNum>0
THEN getBestRate;
END IF;
-- Bestrate Ende
*/
-- StdText laden
IF m_func='4'
THEN HolStdText;
END IF;
-- StdText laden ende
-- internes Memo
IF (m_FUNC='5C') OR -- interne Bemerkung
(p_BEMINTERN IS NOT NULL)
THEN UpdateBemIntern;
END IF;
-- internes Memo ende
m_error:='2';
my_Rechnr :=TO_NUMBER(p_USERNR,999) * -1.0;
my_UsrRechnr:=TO_NUMBER(p_USERNR,999) * -1.0;
DELETE FROM RECHNUNG WHERE HDLNR=my_HdlNr AND RECHNR=my_rechnr;
-- DELETE FROM RECHADR WHERE HDLNR=my_HdlNr AND RECHNR=my_rechnr;
DELETE FROM RECHZUBPOS WHERE HDLNR=my_HdlNr AND RECHNR=my_rechnr;
COMMIT;
m_error:='3';
-- FzWechsel pr�fen, dann auf LfSChein
IF NVL(Rec_Auftrag.FZWECHSELMASTER,0)>0
THEN my_Zahlungsart:='50';
END IF;
--
IF my_Zahlungsart IN ('L','50','51')
THEN my_rechart:='L';
END IF;
m_error:='4';
-- Kunde aus Stamm lesen, MwSt Frei?
IF Rec_Auftrag.DEBITOR>0 THEN
BEGIN
SELECT MWST, ZAHLTAG, SEPADATUM, EINZUG
INTO m_mwstsl, my_KdZahlTag, my_KdSepaDatum, my_Einzug
FROM ADRESSEN
WHERE HDLNR =p_AHDLNR AND
ART ='K' AND
NUMMER=Rec_Auftrag.DEBITOR;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
END IF;
m_error:='5';
m_Debitor := Rec_Auftrag.DEBITOR;
m_KST := Rec_Auftrag.KOSTENSTELLE;
m_GKREF := Rec_Auftrag.GKREF;
m_GKTYP := Rec_Auftrag.PRIVAT;
IF NVL(m_HatMwstReihe,'F')='F' AND
Rec_Auftrag.MVART IN ('MV1','MV4') AND
m_CntMvRg=0
THEN m_MwstSl:=0;
END IF;
m_error:='6';
SELECT COUNT(HDLNR)
INTO m_cnt
FROM RECHADR
WHERE HDLNR =p_HDLNR
AND RECHNR =my_UsrRechnr;
--RechAdr aus Mietvertrag
SELECT COUNT (HDLNR)
INTO m_cntRa
FROM RECHADR
WHERE HDLNR =p_HDLNR
AND RECHNR =Rec_Auftrag.AUFTRNR
AND RECHART='M';
IF m_CntRa=1 AND
m_Cnt=0
THEN SELECT *
INTO Rec_RechAdr
FROM RECHADR
WHERE HDLNR =p_HDLNR
AND RECHNR =Rec_Auftrag.AUFTRNR
AND RECHART='M';
Rec_RechAdr.RECHNR :=my_UsrRechnr;
Rec_RechAdr.RECHART:=my_RechArt;
INSERT INTO RECHADR VALUES Rec_RechAdr;
COMMIT;
m_Cnt:=1;
m_Debitor:=Rec_RechAdr.DEBITOR;
END IF;
--
-- GGF Deb aus Stamm holen
IF m_HatRgDebAkt='W' AND -- mit RechArt=L
m_Cnt=0 AND -- gibt schon einen manuellen Satz
NVL(Rec_Auftrag.MVART,'-') NOT IN ('MV1','MV4')
THEN DELETE FROM RECHADR
WHERE HDLNR =p_HDLNR
AND RECHNR=my_UsrRechNr;
COMMIT;
KdInRechn( p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AUFART => NULL,
p_KENNUNG => NULL,
p_AUFTRNR => NULL,
p_FUNC => '99', -- silent
p_ART => 'K',
p_NUMMER => m_Debitor);
m_Cnt:=1;
END IF;
--
IF (m_cnt=1)
THEN IF NVL(m_HatMwstReihe,'F')='F' AND
Rec_Auftrag.MVART IN ('MV1','MV4') AND
m_CntMvRg=0
THEN UPDATE RECHADR
SET MITMWST=0
WHERE HDLNR=p_HDLNR
AND RECHNR=my_UsrRechNr;
COMMIT;
END IF;
SELECT DEBITOR, MITMWST, KOSTENSTELLE, GKREF, PRIVAT
INTO m_DEBITOR, m_MWSTSL, m_KST, m_GKREF, m_GKTYP
FROM RECHADR
WHERE HDLNR =p_HDLNR
AND RECHNR =my_UsrRechnr;
UPDATE RECHADR
SET RECHART=my_RechArt
WHERE HDLNR =p_HDLNR
AND RECHNR=my_UsrRechnr;
SELECT ZAHLTAG, SEPADATUM, EINZUG
INTO my_KdZahlTag, my_KdSepaDatum, my_Einzug
FROM ADRESSEN
WHERE HDLNR=p_HDLNR
AND ART ='K'
AND NUMMER=m_Debitor;
END IF;
-- BestRate
IF p_MANUELL='F'
THEN -- mp_STAFFELNR :=Rec_Auftrag.STAFFELNR;
mp_GRUND :=Rec_Auftrag.GRUNDBETRAG;
mp_PREIS1 :=Rec_Auftrag.PREIS1;
mp_FAKTOR1 :=Rec_Auftrag.FAKTOR1;
mp_EINHEIT1 :=Rec_Auftrag.EINHEIT1;
mp_INCLANZKM1 :=Rec_Auftrag.INCLANZKM1;
mp_INCLKM1 :=Rec_Auftrag.INCLKM1;
mp_DMKM :=Rec_Auftrag.DMKM;
mp_DMCDW :=Rec_Auftrag.DMCDW;
mp_DMPAI :=Rec_Auftrag.DMPAI;
mp_PREIS2 :=Rec_Auftrag.PREIS2;
mp_FAKTOR2 :=Rec_Auftrag.FAKTOR2;
mp_EINHEIT2 :=Rec_Auftrag.EINHEIT2;
mp_INCLANZKM2 :=Rec_Auftrag.INCLANZKM2;
mp_DMCDW2 :=Rec_Auftrag.DMCDW2;
mp_DMPAI2 :=Rec_Auftrag.DMPAI2;
mp_TARIFBEZ :=Rec_Auftrag.TARIFBEZ;
-- mp_TARIFTYP :=Rec_Auftrag.TARIFTYP;
mp_MEHRFACH :=Rec_Auftrag.MEHRFACH;
mp_MAXRABATT :=Rec_Auftrag.MAXRABATT;
END IF;
my_CodeNum:=1;
IF NVL(Rec_Auftrag.GKREF,0)>0 AND
NVL(Rec_Auftrag.GKREF,0)=m_GkRef AND
mp_PreisListe>0
THEN getGkTarif;
--htp.p(my_CodeNum);
--return;
ELSE mp_PreisListe:=0;
END IF;
IF my_CodeNum>0
THEN getBestRate;
END IF;
-- Bestrate Ende
m_error:='7';
-- Unfallersatz
IF SUBSTR(p_TARIFTYP,2,2)='06'
THEN AUFTRTOOLS.DoRechnen(p_BBEGINN => TO_DATE(p_BBEGINN,Loc_NLSDate),
p_BBUHR => p_BBEGINNUHR,
p_BENDE => TO_DATE(p_BENDE,Loc_NLSDate),
p_BEUHR => p_BENDEUHR,
p_MEHRFACH => p_MEHRFACH,
p_EINHEIT1 => mp_EINHEIT1,
p_EINHEIT2 => mp_EINHEIT2,
p_FAKTOR1 => mp_FAKTOR1,
p_FAKTOR2 => mp_FAKTOR2,
p_INCLKM1 => mp_INCLKM1,
p_ANKM => m_ANKM,
p_ABKM => m_ABKM,
p_INCLANZKM1 => mp_INCLANZKM1,
p_INCLANZKM2 => mp_INCLANZKM2,
p_KULANZ => mp_KULANZ,
p_LANGZEIT => Rec_Auftrag.LANGZEIT,
p_ZWIRECH => 'F',
p_ABRTYP => m_AbrTyp,
p_BERKM => m_BerKm,
p_ANZSTD => m_AnzStd,
p_ECHTETAGE => m_EchteTage,
p_DAUER => m_Dauer,
p_REST => m_Rest,
p_FREIKM => m_FreiKm,
p_FREIKM1 => m_FreiKm1);
RECHNTOOLS.DoChangeUnf6(p_AHDLNR,p_AFILNR,
p_KENNUNG,
p_AUFTRNR,
m_EchteTage);
IF(p_MANUELL='F')
THEN SELECT *
INTO Rec_Auftrag
FROM AUFTRAG -- nochmal lesen, ggf Tarif ge�ert
WHERE HDLNR =p_AHDLNR AND
KENNUNG=p_KENNUNG AND
AUFTRNR=p_AUFTRNR;
mp_STAFFELNR :=Rec_Auftrag.STAFFELNR;
mp_GRUND :=Rec_Auftrag.GRUNDBETRAG;
mp_PREIS1 :=Rec_Auftrag.PREIS1;
mp_FAKTOR1 :=Rec_Auftrag.FAKTOR1;
mp_EINHEIT1 :=Rec_Auftrag.EINHEIT1;
mp_INCLANZKM1 :=Rec_Auftrag.INCLANZKM1;
mp_DMKM :=Rec_Auftrag.DMKM;
mp_DMCDW :=Rec_Auftrag.DMCDW;
mp_DMPAI :=Rec_Auftrag.DMPAI;
mp_PREIS2 :=Rec_Auftrag.PREIS2;
mp_FAKTOR2 :=Rec_Auftrag.FAKTOR2;
mp_EINHEIT2 :=Rec_Auftrag.EINHEIT2;
mp_INCLANZKM2 :=Rec_Auftrag.INCLANZKM2;
mp_DMCDW2 :=NVL(Rec_Auftrag.DMCDW2,0);
mp_DMPAI2 :=NVL(Rec_Auftrag.DMPAI2,0);
-- mp_KULANZ :=NVL(Rec_Auftrag.KULANZ,0); wenn Kulanz fix, dann hier wieder setzen, raus am 16.12.
mp_MAXRABATT :=NVL(Rec_Auftrag.MAXRABATT,0);
END IF;
END IF;
-- Unfallersatz
m_error:='9';
IF NVL(m_VERMITTLER,0)>0
THEN BEGIN
SELECT PROVISION, BASIS
INTO m_PROVSATZ, m_BASIS
FROM ADRESSEN
WHERE HDLNR = p_AHDLNR
AND ART = 'M'
AND NUMMER= m_VERMITTLER;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
END IF;
m_ZwiRech:='F';
IF Rec_Auftrag.LANGZEIT='W'
THEN SELECT COUNT(RECHNR)
INTO m_Cnt
FROM RECHNUNG
WHERE HDLNR =Rec_Auftrag.HDLNR
AND AUFTRNR=Rec_Auftrag.AUFTRNR
AND ZWIRECH='W';
IF m_Cnt>0
THEN m_Zwirech:='W';
END IF;
END IF;
-- Vermietumsatz, bei Langzeit Zusatztag ausrechnen
IF Rec_Auftrag.LANGZEIT='W' AND
ROUND(Rec_Auftrag.MENDE-Rec_Auftrag.MBEGINN)>=30 AND
mp_Einheit1='3' -- Monatsrechnung ggf. ge�ert zum Mietvertrag
THEN mp_Preis2 :=mp_Preis1 / 30;
mp_DMCDW2 :=mp_DMCDW / 30;
mp_DMPAI2 :=mp_DMPAI / 30;
mp_EINHEIT2 :=0;
mp_FAKTOR2 :=1;
mp_INCLANZKM2:=mp_INCLANZKM1 / 30;
END IF;
AUFTRTOOLS.DoRechnen(p_BBEGINN =>TO_DATE(p_BBEGINN,Loc_NLSDate),
p_BBUHR =>p_BBEGINNUHR,
p_BENDE =>TO_DATE(p_BENDE,Loc_NLSDate),
p_BEUHR =>p_BENDEUHR,
p_MEHRFACH =>mp_MEHRFACH,
p_EINHEIT1 =>mp_EINHEIT1,
p_EINHEIT2 =>mp_EINHEIT2,
p_FAKTOR1 =>mp_FAKTOR1,
p_FAKTOR2 =>mp_FAKTOR2,
p_INCLKM1 =>mp_INCLKM1,
p_ANKM =>m_ANKM,
p_ABKM =>m_ABKM,
p_INCLANZKM1 =>mp_INCLANZKM1,
p_INCLANZKM2 =>mp_INCLANZKM2,
p_KULANZ =>mp_KULANZ,
p_LANGZEIT =>Rec_Auftrag.LANGZEIT,
p_ZWIRECH =>m_ZwiRech,
p_ABRTYP =>m_AbrTyp,
p_BERKM =>m_BerKm,
p_ANZSTD =>m_AnzStd,
p_ECHTETAGE =>m_EchteTage,
p_DAUER =>m_Dauer,
p_REST =>m_Rest,
p_FREIKM =>m_FreiKm,
p_FREIKM1 =>m_FreiKm1);
--return;
m_error:='11';
-- Wenn EWP und Zusatzbedarf, dann Dauer/Rest echte Tage um Menge Zusatzbedarf k�rzen
--
--htp.p(m_Dauer);
--htp.p(m_rest);
--htp.p(m_Echtetage); return;
-- Wenn nur freie km abrechnen, dann m_BerKm=0 und Ankunft neu setzen
IF m_FreiKm <>'alle' AND
m_FreiKm1<>'alle'
THEN
IF (p_NURFKM='W') AND
(m_AnKm>m_AbKm+m_FreiKm+m_FreiKm1)
THEN m_BerKm:=0;
m_AnKm:=m_AbKm+m_FreiKm+m_FreiKm1;
END IF;
END IF;
/* SELECT SUM(BERKM)
INTO m_ZwiRechKm
FROM RECHNUNG
WHERE HDLNR =p_HDLNR
AND AUFTRNR=Rec_Auftrag.AUFTRNR
AND ZWIRECH='W';
m_BerKm:=m_BerKm - NVL(m_ZwiRechKm,0); */
--
IF Rec_Auftrag.TRANSPORTVRS>0 THEN
BEGIN
SELECT *
INTO Rec_Trans
FROM TRANSPOR
WHERE HDLNR=m_konzernzugr
AND NR =Rec_Auftrag.TRANSPORTVRS;
m_Beitrag := Rec_Trans.WOCHE1;
IF m_EchteTage>7 THEN m_Beitrag := Rec_Trans.WOCHE2; END IF;
IF m_EchteTage>14 THEN m_Beitrag := Rec_Trans.WOCHE3; END IF;
IF m_EchteTage>21 THEN m_Beitrag := Rec_Trans.WOCHE4; END IF;
EXCEPTION
WHEN OTHERS
THEN NULL;
END;
END IF;
m_error:='13';
IF p_KRAFTBRUTTO='W'
THEN m_KRAFTUMSATZ := round((m_KRAFTUMSATZ / (1 + (my_MwStKraftOrg / 100))) * 100) / 100;
END IF;
IF p_BETANKBRUTTO='W'
THEN m_BETANKUMSATZ := round((m_BETANKUMSATZ / (1 + (my_MwStSonstOrg / 100))) * 100) / 100;
END IF;
IF p_SONSTBRUTTO='W'
THEN m_SONSTUMSATZ := round((m_SONSTUMSATZ / (1 + (my_MwStSonstOrg / 100))) * 100) / 100;
END IF;
m_VermUmsatz := NVL(mp_GRUND,0) +
(m_Dauer * mp_PREIS1) + (m_Rest * mp_PREIS2);
m_KmUmsatz := m_BerKm * mp_DMKM;
-- Ums�e Versicherung
IF Rec_Auftrag.CDW='W'
THEN m_CDWUmsatz := (m_Dauer * mp_DMCDW) + (m_Rest * mp_DMCDW2);
ELSE m_CDWUmsatz := 0.0;
END IF;
IF Rec_Auftrag.PAI='W'
THEN m_PAIUmsatz := (m_Dauer * mp_DMPAI) + (m_Rest * mp_DMPAI2);
ELSE m_PAIUmsatz := 0.0;
END IF;
-- ENDE Ums�e Versicherung
m_error:='14';
IF m_RABATT>mp_MAXRABATT
THEN m_RABATT:=mp_MAXRABATT;
END IF;
m_TrpUmsatz := m_BEITRAG;
--fja RabattZl einf�gen
m_ErlSchmal := m_VermUmsatz / 100 * m_RABATT;
IF NVL(p_RABATTZL,0)<>1
THEN m_ErlSchmal := m_ErlSchmal + (m_KmUmsatz / 100 * m_RABATT);
END IF;
IF NVL(p_RABATTZL,0)>1
THEN m_ErlSchmal1:= (m_TrpUmsatz + m_CdwUmsatz+ m_PaiUmsatz) / 100 * m_RABATT;
ELSE m_ErlSchmal1:=0.0;
END IF;
--
-- Zwischensummen errechnen, �ergabe an Zubeh�r
m_zw1:=m_VermUmsatz + m_KmUmsatz - m_ErlSchmal;
m_zw2:=m_Zw1+m_CDWUmsatz + m_PAIUmsatz + m_TrpUmsatz - m_ErlSchmal1;
RECHNTOOLS.DoZubehor(p_HDLNR => p_AHDLNR,
p_RECHART => my_RechArt,
p_USERNR => p_USERNR,
p_AUFTRNR => p_AUFTRNR,
p_PAUSCHAL =>'F',
p_ZWIRECH =>'E',
-- p_TAGE => m_ResteTage,--m_EchteTage,
p_TAGE => m_EchteTage,
p_BBEGINN => TO_DATE(p_BBEGINN,Loc_NLSDate),
p_BENDE => TO_DATE(p_BENDE,Loc_NLSDate),
p_DOUPDATE => m_FUNC,
p_SUMME => m_ZubUmsatz,
p_SUMMEDL => m_DlUmsatz,
p_SUMMEFR => m_ZubUmsatzFr,
p_SUMMEDLFR=> m_DlUmsatzFr);
IF --(NVL(m_ZwiRech,'F')='F') AND
(p_MITZUB='W' OR -- Zubeh�r nur bei Haken
p_MITLST='W') -- Dienstleistungen nur bei Haken
THEN RECHNTOOLS.DoZubehor(p_HDLNR => p_AHDLNR,
p_RECHART => my_RechArt,
p_USERNR => p_USERNR,
p_AUFTRNR => p_AUFTRNR,
p_PAUSCHAL => 'W',
p_ZWIRECH =>'E',
p_TAGE => m_EchteTage,
--p_TAGE => m_ResteTage,--m_EchteTage,
p_BBEGINN => TO_DATE(p_BBEGINN,Loc_NLSDate),
p_BENDE => TO_DATE(p_BENDE,Loc_NLSDate),
p_DOUPDATE => m_FUNC,
p_SUMME => m_ZubUmsatzP,
p_SUMMEDL => m_DlUmsatzP,
p_SUMMEFR => m_ZubUmsatzPFr,
p_SUMMEDLFR=> m_DlUmsatzPFr);
IF p_MITZUB='W' -- Zubeh�r nur bei Haken
THEN m_ZubUmsatz :=m_ZubUmsatz +m_ZubUmsatzP;
m_ZubUmsatzFr:=m_ZubUmsatzFr+m_ZubUmsatzPFr;
END IF;
IF p_MITLST='W' -- Dienstleistungen nur bei Haken
THEN m_DlUmsatz :=m_DlUmsatz +m_DlUmsatzP;
m_DlUmsatzFr:=m_DlUmsatzFr+m_DlUmsatzPFr;
END IF;
END IF;
RECHNTOOLS.DoReZubehor(p_HDLNR => p_AHDLNR,
p_RECHART => my_RechArt,
p_RECHNR => my_UsrRechnr,
p_TAGE => m_EchteTage, -- �ber gesamten Zeittraum
p_BBEGINN => TO_DATE(p_BBEGINN,Loc_NLSDate),
p_BENDE => TO_DATE(p_BENDE,Loc_NLSDate),
p_SUMME => m_ZubUmsatzP,
p_SUMMEDL => m_DlUmsatzP,
p_SUMMEFR => m_ZubUmsatzPFr,
p_SUMMEDLFR=> m_DlUmsatzPFr);
m_DlUmsatz :=m_DlUmsatz +m_DlUmsatzP;
m_DlUmsatzFr :=m_DlUmsatzFr +m_DlUmsatzPFr;
m_ZubUmsatz :=m_ZubUmsatz +m_ZubUmsatzP;
m_ZubUmsatzFr:=m_ZubUmsatzFr+m_ZubUmsatzPFr;
RECHNTOOLS.DoZubAufschlag(p_HDLNR => p_AHDLNR,
p_RECHART => my_RechArt,
p_AUFTRNR => p_AUFTRNR,
p_RECHNR => my_UsrRechNr,
p_ECHTETAGE=> m_EchteTage,
p_ZW1 => m_Zw1,
p_ZW2 => m_Zw2,
p_SONST => m_KraftUmsatz + m_BetankUmsatz + m_SonstUmsatz + m_SonstUmsatzFr + m_DlUmsatz + m_DlUmsatzFr + m_ZubUmsatz + m_ZubUmsatzFr,
p_SUMMEDL => m_DlUmsatzA,
p_SUMMEDLFR=> m_DlUmsatzAFr);
m_DlUmsatz :=m_DlUmsatz +m_DlUmsatzA;
m_DlUmsatzFr :=m_DlUmsatzFr +m_DlUmsatzAFr;
-- Rabatt
IF NVL(p_RABATTZL,0)>2
THEN m_ErlSchmal2:= (m_KraftUmsatz + m_BetankUmsatz + m_SonstUmsatz + m_SonstUmsatzFr + m_DlUmsatz + m_ZubUmsatz + m_DlUmsatzFr + m_ZubUmsatzFr) / 100 * m_RABATT;
ELSE m_ErlSchmal2:=0.0;
END IF;
--
m_Error:='15';
IF p_MITZWI='W' -- Abz�ge nur wenn Haken
THEN IF Rec_Auftrag.SPLITTING IS NOT NULL AND
NVL(Rec_Auftrag.SPLITPROZ1,0)=0 AND
NVL(Rec_Auftrag.SPLITMIETE,0)=0 AND
NVL(Rec_Auftrag.SPLITKM,0)=0 AND
NVL(Rec_Auftrag.SPLITCDW,0)=0 AND
NVL(Rec_Auftrag.SPLITPAI,0)=0 AND
NVL(Rec_Auftrag.SPLITTP,0)=0 AND
NVL(Rec_Auftrag.SPLITSONST,0)=0 AND
NVL(Rec_Auftrag.SPLITKRAFT,0)=0
THEN my_ZubDeb:=m_Debitor;
ELSE my_ZubDeb:=0;
END IF;
RECHNTOOLS.GetAltRech(Rec_Auftrag.HDLNR,
Rec_Auftrag.AUFTRNR,
my_ZubDeb,
-1,
SYSDATE,
'W',
m_AltUmsatz,
m_AltKm,
m_AltSchmal,
m_AltSchmal1,
m_AltSchmal2,
m_AltCDW,
m_AltPAI,
m_AltTP,
m_AltKraft,
m_AltBetank,
m_AltZub,
m_AltDl,
m_AltZubFr,
m_AltDlFr,
m_AltSonst,
m_AltSonstFr,
m_AltMwSt,
m_AltVtr);
m_AltSonst :=0.0;
m_AltSonstFr:=0.0;
END IF;
-- ggf EWP-Korrektur
IF Rec_Auftrag.MVART IN ('MV1','MV4') -- Zusatzbedarf aus Vermietumsatz wieder abziehen
THEN m_AltUmsatz:=m_AltUmsatz+
RECHNTOOLS.CalcZentrZub (p_HDLNR => Rec_Auftrag.HDLNR,
p_RECHART => 'U',
p_RECHNR => TO_NUMBER('-'||p_USERNR));
END IF;
-- htp.p(m_AltUmsatz); return;
-- Kontofindung ------
my_TARIF:=mp_TARIFTYP;
IF p_UNFALLERSATZ='W'
THEN my_TARIFS:=substr(my_TARIF,1,1)||'06'||substr(my_tarif,4,9);
ELSE my_TARIFS:=my_TARIF;
END IF;
GetKontierung;
SetMwstParams;
IF Rec_FirmaKto.USESKR='W' THEN
my_Ak:=10;
IF m_GKTYP='F'
THEN my_Ak:=20;
END IF;
END IF;
my_AkFv:=my_Ak;
BEGIN
SELECT KSTSTELLE, GESCHBEREICH, ST
INTO m_KstFil, m_GeschBer, m_FilSt
FROM PARTNER
WHERE HDLNR=Rec_Auftrag.HDLNR
AND NR =SUBSTR(Rec_Auftrag.HDLNR,1,3) || ';' || SUBSTR(Rec_Auftrag.HDLNR,4,5) || ';' || Rec_Auftrag.FILNR;
EXCEPTION
WHEN OTHERS THEN m_KstFil:=0; m_FilSt:=0;
END;
IF m_FilSt>0
THEN my_St:=m_FilSt;
END IF;
-- Fahrzeugparameter �bersteuern ggf. die Standards
/* IF my_HatFzKst='W' THEN
BEGIN
SELECT KSTSTELLE
INTO my_FzKst
FROM FAHRZEUG
WHERE FAHRGESTELL=Rec_Auftrag.FAHRGESTELL
AND ZULASSUNG =Rec_Auftrag.ZULASSUNG;
EXCEPTION WHEN OTHERS THEN my_FzKst:=0; my_FzKt:=0;
END;
IF NVL(my_FzKst,0)>0
then my_Kst:=my_FzKst;
END IF;
END IF;-- Fahrzeug
---------------------------------------------
*/
-- Kundenparameter �bersteuern ggf. die Standards
IF my_Zahlungsart='4' THEN
BEGIN
SELECT ST,KST,AK,KT,MK,STA,KSTA,AKA,KTA,MKA
INTO my_St,my_Kst,my_Ak,my_Kt,my_Mk,my_StA,my_KstA,my_AkA,my_KtA,my_MkA
FROM ADRESSEN
WHERE HDLNR=p_HDLNR
AND ART='K'
AND NUMMER=m_Debitor;
my_AkFv:=my_Ak;
EXCEPTION WHEN OTHERS THEN NULL;
END;
END IF;-- Zahlungsart=4
IF mp_TARIFTYP='08' OR
SUBSTR(mp_TARIFTYP,2,2)='04'
THEN my_erlmiet:=my_erlmobi;
my_erlkm :=my_erlmobi;
END IF;
IF my_Zahlungsart='4'
THEN my_erlmiet :=my_erlintern;
my_erlkm :=my_kmintern;
my_erlkraft :=my_kraftintern;
my_erlbetank :=my_betankintern;
my_erlsonst :=my_sonstintern;
my_erlsonstfrei:=my_sonstintern;
my_erlvers :=my_versintern;
END IF;
-- Kontofindung Ende -------
m_error:='16c';
-- Rob Betrag pr�fen
-- IF p_ROBGRUND IS NOT NULL AND
-- m_Func='0' AND
-- m_Gezahlt>m_RobBetragOk
-- THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',13,'');
-- m_Func:='E';
-- END IF;
--
-- fja Hier erst Firma update, neue my_rechnr setzen wenn m_FUNC=0
IF p_ROBTMP='W' OR
(my_RobTmp='W' AND m_FUNC='0')
THEN IF NVL(p_ROBREGRUND,'+')<>'-'
THEN m_FUNC:='R';
END IF;
END IF;
IF m_FUNC='0'
THEN SELECT RECHNR, LIEFERNR
INTO my_rechnr, my_liefnr
FROM FIRMA
WHERE HDLNR=p_AHDLNR FOR UPDATE;
my_HdlNr:=p_AHDLNR;
IF my_Zahlungsart IN ('L','50','51')
THEN my_rechnr:=my_liefnr;
UPDATE FIRMA SET
LIEFERNR = LIEFERNR + 1
WHERE HDLNR=p_AHDLNR;
ELSE UPDATE FIRMA SET
RECHNR = RECHNR + 1
WHERE HDLNR=p_AHDLNR;
END IF;
mp_STNRECHNR:=NULL; -- sonst kann dieser Vorgang nicht mehr storniert werden
IF NVL(p_STNRECHNR,0)=0
THEN IF IstLetzter
THEN m_tmpkennung:='C'; -- fertig, letzte Aufteilung
END IF;
ELSE RECHNTOOLS.CheckLastRechnung(p_HDLNR => p_HDLNR,
p_AUFTRNR => Rec_Auftrag.AUFTRNR,
p_AUFBENDE => TO_CHAR(Rec_Auftrag.BENDE,Loc_NLSDate),
p_AUFBENDEUHR => TO_CHAR(Rec_Auftrag.BEUHR,Loc_NLSTime),
p_AUFANKM => Rec_Auftrag.ANKM,
p_BENDE => p_BENDE,
p_BENDEUHR => p_BENDEUHR,
p_ANKM => m_AnKm,
p_NLSDATE => loc_NLSDATE,
p_NLSTIME => loc_NLSTIME,
p_AUFSTATUS => m_tmpkennung);
END IF;
-- return;
-- CheckKontierung;
-- IF m_tmpkennung='C'
-- THEN IF NOT doCheckFlags
-- END IF;
END IF;
IF Rec_FirmaKto.USESKR='W' THEN
CASE NVL(m_MwstSl,0)
WHEN 0 THEN my_Ust:=1; -- keine Steuer
WHEN 1 THEN my_Ust:=3; -- voller Steuersatz
WHEN 2 THEN my_Ust:=0; -- nicht steuerbar
WHEN 3 THEN my_Ust:=11; -- mit EG SteuerNr
WHEN 4 THEN my_Ust:=10; -- ohne EG-SteuerNr
WHEN 5 THEN my_Ust:=47; -- au�rhalb EU
END CASE;
END IF;
IF my_RobTmp='W' and
NVL(p_ROBREGRUND,'+')<>'-'
THEN my_RechNr :=Rec_Auftrag.AUFTRNR;
my_RechArt:='P';
END IF;
DoWriteRechnung(loc_HDLNR => my_HDLNR,
loc_FILNR => Rec_Auftrag.FILNR,
loc_AUFTRNR => Rec_Auftrag.AUFTRNR,
loc_RECHNR => my_RechNr,
loc_LFD => 1);
m_error:='17';
IF m_FUNC='0' AND
p_STNRECHNR IS NOT NULL
THEN UPDATE RECHNUNG SET STNFLAG = 'F'
WHERE HDLNR =p_HDLNR AND
RECHNR=p_STNRECHNR;
END IF;
IF m_FUNC='0' AND m_GDVFLAG='W'
THEN UPDATE ABTRET SET GDVFLAG='W'
WHERE HDLNR =p_AHDLNR AND
AUFTRNR=p_AUFTRNR;
END IF;
IF Rec_AUFTRAG.NAME2=''
THEN m_DebName := Rec_AUFTRAG.NAME1;
ELSE m_DebName := Rec_AUFTRAG.NAME2;
END IF;
UPDATE AUFTRAG
SET ROBMEMO = my_RobMemo,
KRAFTUMSATZ = m_KraftUmsatz,
BETANKUMSATZ= m_BetankUmsatz,
SONSTUMSATZ = m_SonstUmsatz,
AUSLAGENTEXT= p_SONSTBEMERK
WHERE HDLNR =p_AHDLNR AND
KENNUNG=p_KENNUNG AND
AUFTRNR=p_AUFTRNR;
IF m_FUNC='0' -- fertig
THEN UPDATE RECHADR
SET HDLNR =p_AHDLNR,
RECHNR =my_RechNr,
RECHART=my_RECHART
WHERE HDLNR =p_HDLNR AND
RECHNR =my_UsrRechnr;-- tmpAblage Rechnungsadresse
UPDATE RECHZUBPOS
SET RECHNR =my_RechNr,
RECHART=my_RechArt
WHERE HDLNR =p_HDLNR AND
RECHNR =my_UsrRechnr;-- tmpAblage Rechnungsadresse
IF Rec_Auftrag.SPLITTING IN ('M','E')
AND p_MITZWI='W' -- Abz�ge nur wenn Haken
THEN IF Rec_Auftrag.SPLITTING IS NOT NULL AND
NVL(Rec_Auftrag.SPLITPROZ1,0)=0 AND
NVL(Rec_Auftrag.SPLITMIETE,0)=0 AND
NVL(Rec_Auftrag.SPLITKM,0)=0 AND
NVL(Rec_Auftrag.SPLITCDW,0)=0 AND
NVL(Rec_Auftrag.SPLITPAI,0)=0 AND
NVL(Rec_Auftrag.SPLITTP,0)=0 AND
NVL(Rec_Auftrag.SPLITSONST,0)=0 AND
NVL(Rec_Auftrag.SPLITKRAFT,0)=0
THEN my_ZubDeb:=Rec_Auftrag.SPLITDEBITOR;
ELSE my_ZubDeb:=0;
END IF;
RECHNTOOLS.GetAltRech(Rec_Auftrag.HDLNR,
Rec_Auftrag.AUFTRNR,
my_ZubDeb,
-1,
SYSDATE,
'W',
m_AltUmsatz,
m_AltKm,
m_AltSchmal,
m_AltSchmal1,
m_AltSchmal2,
m_AltCDW,
m_AltPAI,
m_AltTP,
m_AltKraft,
m_AltBetank,
m_AltZub,
m_AltDl,
m_AltZubFr,
m_AltDlFr,
m_AltSonst,
m_AltSonstFr,
m_AltMwSt,
m_AltVtr);
m_AltSonst :=0.0;
m_AltSonstFr:=0.0;
DoWriteRechnung(loc_HDLNR => my_HDLNR,
loc_FILNR => Rec_Auftrag.FILNR,
loc_AUFTRNR => Rec_Auftrag.AUFTRNR,
loc_RECHNR => my_RechNr,
loc_LFD => 2);
END IF;
AUFTRTOOLS.DoArcAuftr(p_AHDLNR,p_AFILNR,p_KENNUNG,p_AUFTRNR,p_USERNR);
UPDATE AUFTRAG SET
ROBMEMO = NULL,
KENNUNG = m_tmpkennung,
ERFUHR = XTool.GetSysDate(p_HDLNR)
WHERE HDLNR =p_AHDLNR AND
KENNUNG=p_KENNUNG AND
AUFTRNR=p_AUFTRNR;
IF p_AHDLNR=p_HDLNR THEN
UPDATE AUFTRAG SET
ERFASSER = p_USERNR
WHERE HDLNR =p_AHDLNR AND
AUFTRNR=p_AuftrNr;
END IF;
AUFTRTOOLS.DoBuchKasse(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_ZAHLART => my_Zahlungsart,
p_AUFTRNR => p_AUFTRNR,
p_RECHNR => my_rechnr,
p_DEBITOR => p_DEBITOR,
p_NAME => m_DebName,
p_BETRAG => m_gezahlt,
p_AUFHDLNR=> p_AHDLNR);
m_Error:='19';
IF p_KENNUNG='A' -- nur bei Abrechnung aus Vermietung km-Stand setzen
THEN SELECT STANDORT INTO m_OldStandOrt
FROM FAHRZEUG
WHERE FAHRGESTELL= Rec_Auftrag.FAHRGESTELL AND
ZULASSUNG = Rec_Auftrag.ZULASSUNG;
UPDATE FAHRZEUG SET
KMSTAND = m_ANKM,
STANDORT = SUBSTR(p_HDLNR,1,3) || ';' || SUBSTR(p_HDLNR,4,5) || ';' || p_FILNR,
ZUSTANDORT = SUBSTR(p_HDLNR,1,3) || ';' || SUBSTR(p_HDLNR,4,5) || ';' || p_FILNR,
DFU = 'F'
WHERE FAHRGESTELL= Rec_Auftrag.FAHRGESTELL AND
ZULASSUNG = Rec_Auftrag.ZULASSUNG;
IF SUBSTR(p_HDLNR,1,3) || ';' || SUBSTR(p_HDLNR,4,5) || ';' || p_FILNR<>m_OldStandOrt
THEN INSERT INTO FAHRZSTDORT
(FAHRGESTELL, DATUM, HDLNR, FILNR)
VALUES
(Rec_Auftrag.FAHRGESTELL,SYSDATE,p_HDLNR,p_FILNR);
END IF;
END IF;
m_Error:='20';
UPDATE AUFTRZUB
SET KENNUNG = m_tmpkennung
WHERE HDLNR =p_AHDLNR AND
AUFTRNR =p_AUFTRNR;
UPDATE RECHZUB SET
HDLNR =my_HdlNr,
RECHART=my_RechArt,
RECHNR =my_rechnr
WHERE HDLNR =p_HDLNR AND
RECHNR=my_UsrRechnr;
-- Wenn Zentralauftrag (NL), dann den Partnerauftrag abrechen
DoUpdateZentralMv;
--
END IF;
m_Error:='21';
-- Zubeh�r wird ver�ert
IF SUBSTR(m_FUNC,1,1)='*' -- Gutschrift AufZubeh�r
THEN SELECT NR,PREIS,SPLITPREIS,PAUSCHAL,LEISTUNG,BEZEICHNUNG, MAXTAGE, MAXSUMME, ROBFLAG, VONDATUM, BISDATUM, MWSTFREI, ERLOESKONTO, ERLOESKONTOINT
INTO z_Nr, z_Preis,z_SplitPreis, z_Pauschal,z_Leistung,z_Bezeichnung, z_MaxTage, z_MaxSumme, z_RobFlag, z_VonDatum, z_BisDatum, z_MwstFrei, z_ErloesKonto, z_ErloesKontoInt
FROM AUFTRZUB
WHERE HDLNR =p_AHDLNR AND
AUFTRNR=Rec_Auftrag.AUFTRNR AND
NR =SUBSTR(m_FUNC,2,5);
BEGIN
INSERT INTO RECHZUB
(HDLNR,RECHNR,RECHART,NR,BEZEICHNUNG,PREIS,SPLITPREIS,PAUSCHAL,LEISTUNG, MAXTAGE, MAXSUMME, ROBFLAG, VONDATUM, BISDATUM, MWSTFREI, ERLOESKONTO, ERLOESKONTOINT,AUSMV) VALUES
(p_AHDLNR,my_RECHNR,'U',SUBSTR(m_FUNC,2,5),z_Bezeichnung,z_Preis * -1,z_SplitPreis * -1,z_Pauschal,z_Leistung, z_MaxTage, z_MaxSumme*-1, z_RobFlag, z_VonDatum, z_BisDatum, z_MwstFrei, z_ErloesKonto, z_ErloesKontoInt,'W');
EXCEPTION
WHEN others THEN NULL;
END;
m_FUNC:='4';
END IF;
IF SUBSTR(m_FUNC,1,1)='-' -- l�schen Zubeh�r
THEN DELETE FROM RECHZUB
WHERE HDLNR =p_AHDLNR AND
RECHNR =my_RECHNR AND
NR =SUBSTR(m_FUNC,2,5);
m_FUNC:='4';
END IF;
IF SUBSTR(m_FUNC,1,2)='+P' -- Preise
THEN BEGIN
SELECT LEISTUNG
INTO my_ZubLeistung
FROM RECHZUB
WHERE HDLNR =p_AHDLNR AND
RECHNR =my_RechNr AND
NR =SUBSTR(m_FUNC,3,5);
IF my_ZubLeistung IN ('W','F') OR
p_PART='B'
THEN
CASE p_PART
WHEN 'B' THEN UPDATE RECHZUB
SET PREIS = TO_NUMBER(NVL(p_PPAUSCHAL,0),Loc_NLSBetr,Loc_NLSWert),
PAUSCHAL = 'F'
WHERE HDLNR =p_AHDLNR AND
RECHNR =my_RECHNR AND
NR =SUBSTR(m_FUNC,3,5);
WHEN 'P' THEN UPDATE RECHZUB
SET PREIS = TO_NUMBER(NVL(p_PPAUSCHAL,0),Loc_NLSBetr,Loc_NLSWert),
PAUSCHAL = 'W'
WHERE HDLNR =p_AHDLNR AND
RECHNR =my_RECHNR AND
NR =SUBSTR(m_FUNC,3,5);
WHEN 'M' THEN IF p_PPAUSCHAL IS NULL
THEN UPDATE RECHZUB
SET MAXSUMME = NULL
WHERE HDLNR =p_AHDLNR AND
RECHNR =my_RECHNR AND
NR =SUBSTR(m_FUNC,3,5);
ELSE UPDATE RECHZUB
SET MAXSUMME = TO_NUMBER(NVL(p_PPAUSCHAL,0),Loc_NLSBetr,Loc_NLSWert)
WHERE HDLNR =p_AHDLNR AND
RECHNR =my_RECHNR AND
NR =SUBSTR(m_FUNC,3,5);
END IF;
WHEN 'S' THEN IF p_PPAUSCHAL IS NULL
THEN UPDATE RECHZUB
SET SPLITPREIS = NULL
WHERE HDLNR =p_AHDLNR AND
RECHNR =my_RECHNR AND
NR =SUBSTR(m_FUNC,3,5);
ELSE UPDATE RECHZUB
SET SPLITPREIS = TO_NUMBER(NVL(p_PPAUSCHAL,0),Loc_NLSBetr,Loc_NLSWert)
WHERE HDLNR =p_AHDLNR AND
RECHNR =my_RECHNR AND
NR =SUBSTR(m_FUNC,3,5);
END IF;
WHEN 'T' THEN UPDATE RECHZUB
SET SPLITPREIS = PREIS
WHERE HDLNR =p_AHDLNR AND
RECHNR =my_RECHNR AND
NR =SUBSTR(m_FUNC,3,5);
ELSE NULL;
END CASE;
END IF;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
END IF;
IF SUBSTR(m_FUNC,1,2)='+D' -- bis Datum
THEN BEGIN
IF TO_DATE(p_PVONDATUM,Loc_NLSDate)<TO_DATE(p_PBISDATUM,Loc_NLSDate)
THEN UPDATE RECHZUB SET
VONDATUM = TO_DATE(p_PVONDATUM,Loc_NLSDate),
BISDATUM = TO_DATE(p_PBISDATUM,Loc_NLSDate)
WHERE HDLNR =p_HDLNR AND
RECHNR =my_RECHNR AND
NR =SUBSTR(m_FUNC,3,5);
ELSE UPDATE RECHZUB SET
VONDATUM = TO_DATE(p_PBISDATUM,Loc_NLSDate),
BISDATUM = TO_DATE(p_PVONDATUM,Loc_NLSDate)
WHERE HDLNR =p_HDLNR AND
RECHNR =my_RECHNR AND
NR =SUBSTR(m_FUNC,3,5);
END IF;
m_FUNC:='4';
EXCEPTION
WHEN OTHERS THEN UPDATE RECHZUB SET
VONDATUM = NULL,
BISDATUM = NULL
WHERE HDLNR =p_HDLNR AND
RECHNR= my_RECHNR AND
NR =SUBSTR(m_FUNC,3,5);
END;
END IF;
--
-- Pr�fung auf Herstellersplitting
IF m_FUNC='H'
THEN IF p_HSTSPLGRUND IS NULL
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',15,'');
m_func:='E';
END IF;
IF TO_NUMBER(NVL(p_HSTKM,0))>Rec_Auftrag.ANKM-Rec_Auftrag.ABKM
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',16,'');
m_func:='E';
END IF;
IF TO_DATE(p_HSTBENDE || p_HSTBENDEUHR,loc_NLSDate || loc_NLSTime)>
TO_DATE(TO_CHAR(Rec_Auftrag.BENDE,loc_NLSDate) || TO_CHAR(Rec_Auftrag.BEUHR,loc_NLSTime),loc_NLSDate || loc_NLSTime)
OR
TO_DATE(p_HSTBENDE || p_HSTBENDEUHR,loc_NLSDate || loc_NLSTime)<
TO_DATE(TO_CHAR(Rec_Auftrag.BBEGINN,loc_NLSDate) || TO_CHAR(Rec_Auftrag.BBUHR,loc_NLSTime),loc_NLSDate || loc_NLSTime)
THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietabrech',17,'');
m_func:='E';
END IF;
END IF;
--
COMMIT;
IF p_FUNC='8c-' -- Vermittler raus
THEN UPDATE RECHNUNG SET
VERMITTLER = NULL
WHERE HDLNR =p_HDLNR AND
RECHNR=my_RECHNR;
COMMIT;
END IF;
IF p_POOLFLAG='J' OR -- Massenr�cknahme Poolmanagement
p_SILENT='W'
THEN RETURN;
END IF;
--return; -- fja
IF m_Func='H' -- Herstellerspliting
THEN SplitVorgang;
AUFTRAEGE.ShowAuftr (p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => p_HDLNR,
p_AFILNR => p_FILNR,
p_KENNUNG => p_KENNUNG,
p_AUFTRNR => p_AUFTRNR,
p_XSL => 'mietabrech');
RETURN;
END IF;
IF m_Func='R' -- Aus Kurzr�cknahme oder NAC
THEN MeldeRob;
IF p_ROBTMP='F' -- NAC, nochmals senden
THEN INFOS.TagesInfo(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR=> p_USERNR);
END IF;
RETURN;
END IF;
IF m_FUNC='0' -- fertig
THEN IF LENGTH(Rec_Auftrag.ROBGRUND)>0
THEN IF p_ROBREGRUND='-' -- nicht melden
-- wenn m_tmpkennung:='C'; -- fertig, letzte Aufteilung
-- und MV=ROB-Vorgang, dann pr�fen ob alle Rg Grund haben
-- wenn ja, dann StornoCall ==> machen wir bei RechnungsCall
THEN IF m_TmpKennung='C'
THEN AUFTRTOOLS.RobStorno(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_KENNUNG => m_TmpKennung,
p_AUFTRNR => p_AUFTRNR,
p_GRUND => 'Storno',
p_CODE => my_Code,
p_MESSAGE => my_Message,
p_INTMESS => my_IntMessage);
DELETE FROM RECHNUNG
WHERE HDLNR =p_HDLNR
AND RECHNR=p_AUFTRNR
AND RECHART='P';
DELETE FROM RECHADR
WHERE HDLNR =p_HDLNR
AND RECHNR=p_AUFTRNR
AND RECHART='P';
COMMIT;
ELSE NULL;
END IF;
ELSE MeldeRob;
END IF;
END IF;
XTOOL.SavePdfArchiv(p_HDLNR,p_FILNR,p_USERNR,Rec_Auftrag.HDLNR,NULL,0,my_RechArt,my_RechNr);
XTOOL.SavePdfArchiv(p_HDLNR,p_FILNR,p_USERNR,Rec_Auftrag.HDLNR,'C',Rec_Auftrag.AUFTRNR);
IF my_Referenz>0 -- damit die erste Rechnung in der Buttonreihenfolge oben steht
THEN my_RechNr :=my_Referenz;
my_RechArt:=my_ReferenzArt;
XTOOL.SavePdfArchiv(p_HDLNR,p_FILNR,p_USERNR,Rec_Auftrag.HDLNR,NULL,0,my_RechArt,my_RechNr);
END IF;
IF RECHNTOOLS.SendMvEMails(p_HDLNR => Rec_Auftrag.HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AUFTRNR=> Rec_Auftrag.AUFTRNR,
p_RECHART=> my_RechArt,
p_RECHNR => my_RechNr)
THEN NULL;
END IF;
IF (my_Zahlungsart='2') AND
(NVL(m_CashTyp,0)>0) AND
(m_Gezahlt<>0.0)
THEN IF my_DoArvato='W'
THEN INSERT INTO STORNOPAYMENT
(HDLNR,USERNR,RECHNR,ARVATOTRANSTOKEN,BETRAG)
VALUES (p_HDLNR,p_USERNR,my_RechNr,NULL,0.0);
UPDATE RECHNUNG
SET ARVATOTRANSTOKEN=my_LastTransToken,
ARVATOPAYTOKEN =my_LastPayToken,
KRDBANK =my_LastKrdBank,
KRDBETRAG =m_Gezahlt
WHERE HDLNR =p_HDLNR
AND RECHNR =my_RechNr
AND RECHART=my_RechArt;
COMMIT;
ZAHLUNG.BatchZahlweg(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR);
ELSE IF m_Gezahlt>0.0
THEN ZAHLUNG.OpenZahlWeg(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_KENNUNG=> 'C',
p_AUFTRNR=> Rec_Auftrag.AUFTRNR,
p_BETRAG => m_Gezahlt,
p_FUNC => ZAHLUNG.c_EndZahlung);
ELSE ShowRech(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_AHDLNR => p_AHDLNR,
p_AFILNR => p_AFILNR,
p_RECHNR => my_RECHNR,
p_RECHART => my_RECHART,
p_USERNR => p_USERNR,
p_XSL => 'rechprint',
p_ERRORTEXT=> my_Message);
END IF;
END IF;
ELSE IF NVL(Rec_Auftrag.FZWECHSELMASTER,0)>0
THEN IF AUFTRTOOLS.CalcFzWechsel(p_HDLNR => Rec_Auftrag.HDLNR,
p_AUFTRNR=> Rec_Auftrag.AUFTRNR,
p_MASTER => Rec_Auftrag.FZWECHSELMASTER,
p_MENDE => Rec_Auftrag.MENDE+(Rec_Auftrag.MEUHR-TRUNC(Rec_Auftrag.MEUHR)),
p_DANACH => 'W')=0
THEN SammelKdn(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_NUMMER => m_Debitor,
p_VONDATUM => GetMinDate,
p_BISDATUM => TO_CHAR(SYSDATE,Loc_NLSDate),
p_FZWMASTER => Rec_Auftrag.FZWECHSELMASTER);
RETURN;
END IF;
END IF;
ShowRech(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_AHDLNR => p_AHDLNR,
p_AFILNR => p_AFILNR,
p_RECHNR => my_RECHNR,
p_RECHART => my_RECHART,
p_USERNR => p_USERNR,
p_XSL => 'rechprint',
p_ERRORTEXT=> my_Message);
END IF;
END IF;
IF p_DEBITOR IS NOT NULL AND
m_FUNC='1d' -- Manuelle Debitoreneingabe
THEN KdInRechn ( p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AUFART => NULL,
p_KENNUNG => p_KENNUNG,
p_AUFTRNR => p_AUFTRNR,
p_FUNC => '1', -- ErfRechnung
p_ART => 'K',
p_NUMMER => p_DEBITOR);
RETURN;
END IF;
IF m_func='1'OR -- Kunden suchen
m_func='2b'
THEN Kunden.KDNLISTE(p_HDLNR,p_FILNR,p_USERNR,p_KENNUNG,p_KENNUNG,p_AUFTRNR,NULL,'K',p_FUNC,'P','F');
END IF;
IF m_func='6b'
THEN Kunden.KDNLISTE(p_HDLNR,p_FILNR,p_USERNR,p_KENNUNG,p_KENNUNG,p_AUFTRNR,NULL,'V',p_FUNC,'P','F');
END IF;
IF m_func='8b' OR
m_func='8c'
THEN Kunden.KDNLISTE(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AUFART => p_KENNUNG,
p_KENNUNG=> p_KENNUNG,
p_AUFTRNR=> p_AUFTRNR,
p_ART => 'M',
p_FUNC => p_FUNC,
p_PRIVAT => 'P',
p_INTERN => 'F',
p_SORT => 1);
END IF;
IF m_func='2'-- Druckvorschau
THEN -- R�cksprung organisieren
DELETE FROM GOBACKTBL WHERE HDLNR=p_HDLNR AND USERNR=p_USERNR;
INSERT INTO GOBACKTBL
(HDLNR,USERNR,FILNR,DATUMSTAMP,FUNKTION,LISTE,XSL,AHDLNR,AFILNR,KENNUNG,AUFTRNR)
VALUES
(p_HDLNR,p_USERNR,p_FILNR,SYSDATE,1120,0,'mietabrech',p_AHDLNR,p_AFILNR,p_KENNUNG,p_AUFTRNR);
COMMIT;
-- Ende
ShowRech(p_HDLNR,p_FILNR,p_AHDLNR,p_AFILNR,my_RECHNR,my_RECHART,p_USERNR,'drcrech');
END IF;
IF m_func='3'-- Texte
THEN Bemerkung.BEMLISTE(p_AHDLNR,p_AFILNR,p_USERNR,'F',p_KENNUNG,p_KENNUNG,p_AUFTRNR,p_FUNC);
END IF;
IF m_func='5'-- Zubeh�r
THEN Zubehor.ZUBLISTE(p_AHDLNR,p_AFILNR,p_USERNR,'R',p_KENNUNG,p_AUFTRNR,'4');
END IF;
IF m_func='A'-- Abtretung nacharbeiten
THEN Auftraege.ShowAuftr(p_HDLNR,p_FILNR,p_USERNR,p_AHDLNR,p_AFILNR,p_KENNUNG,p_KENNUNG,p_AUFTRNR,p_FUNC,'erfabtret');
END IF;
IF SUBSTR(m_func,1,1)='T'-- Tarif�erung
-- Check ob Tarif ge�ert wurde
THEN IF NVL(mp_Preisliste,0)=0
THEN RECHNTOOLS.DoChangeTrf6(p_AHDLNR,p_USERNR,my_rechnr,m_FUNC,p_TARIFFZART,my_BERECHGRP,p_TARIFAUS1||p_TARIFAUS2||p_TARIFAUS3||p_TARIFAUS4,mp_TARIFTYP,mp_STAFFELNR,TO_DATE(Rec_Auftrag.MBEGINN));
END IF;
RECHNTOOLS.ShowUsrRech(p_HDLNR, p_FILNR, p_AHDLNR, p_AFILNR, p_USERNR, p_KENNUNG, p_AUFTRNR,'');
--
END IF;
IF m_func='E' -- Fehler
OR m_func='8c-' -- Vermittler raus
OR m_func='4' -- Bemerkung Standard
OR m_func='5C' -- interne Bemerkung
OR SUBSTR(m_func,1,1) IN ('-','+') -- Zubeh�r
THEN RECHNTOOLS.ShowUsrRech(p_HDLNR, p_FILNR, p_AHDLNR, p_AFILNR, p_USERNR, p_KENNUNG, p_AUFTRNR,m_ERRORTEXT);
END IF;
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END ErfRechnung;
/******************************************************************************
NAME: Rechnungen.ErfGuLa
PURPOSE: Erfassung einer GutLastschrift
Date: 07.11.2006/06.09.2017
*******************************************************************************/
PROCEDURE ErfGula (p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_AUFTRNR VARCHAR2 DEFAULT NULL,
p_RECHNR VARCHAR2 DEFAULT NULL,
p_RECHART VARCHAR2 DEFAULT 'R',
p_REFRECHNR VARCHAR2 DEFAULT NULL,
p_REFRECHART VARCHAR2 DEFAULT 'R',
p_DEBITOR VARCHAR2 DEFAULT NULL,
p_FUNC VARCHAR2 DEFAULT NULL,
p_OP VARCHAR2 DEFAULT NULL,
p_OPTMP VARCHAR2 DEFAULT NULL,
p_MIETE VARCHAR2 DEFAULT '0',
p_KM VARCHAR2 DEFAULT '0',
p_ERLSCHMAL VARCHAR2 DEFAULT '0',
p_ERLPARAM INTEGER DEFAULT 1,
p_CDW VARCHAR2 DEFAULT '0',
p_PAI VARCHAR2 DEFAULT '0',
p_TRAPO VARCHAR2 DEFAULT '0',
p_KRAFT VARCHAR2 DEFAULT '0',
p_LITER VARCHAR2 DEFAULT '0',
p_SORTE VARCHAR2 DEFAULT '0',
p_BETANKUNG VARCHAR2 DEFAULT '0',
p_SONST VARCHAR2 DEFAULT '0',
p_MWSTFREI VARCHAR2 DEFAULT NULL,
p_SONSTFREI VARCHAR2 DEFAULT '0',
p_BRUTTO VARCHAR2 DEFAULT NULL,
p_STEUERNR VARCHAR2 DEFAULT NULL,
p_EGSTEUER VARCHAR2 DEFAULT NULL,
p_ZAHLUNGSART VARCHAR2 DEFAULT NULL,
p_VERMITTLER VARCHAR2 DEFAULT NULL,
p_BEMERKUNG21 VARCHAR2 DEFAULT NULL,
p_BEMERKUNG22 VARCHAR2 DEFAULT NULL,
p_BEMERKUNG23 VARCHAR2 DEFAULT NULL,
p_BEMERKUNG24 VARCHAR2 DEFAULT NULL,
p_BEMERKUNG25 VARCHAR2 DEFAULT NULL,
p_BEMERKUNG26 VARCHAR2 DEFAULT NULL,
p_AUSLAGENTEXT VARCHAR2 DEFAULT NULL,
p_ABWRECH VARCHAR2 DEFAULT NULL,
p_SPLITDEBITOR VARCHAR2 DEFAULT NULL,
p_SPLITPROZ VARCHAR2 DEFAULT NULL,
p_SPLITURRG VARCHAR2 DEFAULT NULL,
p_SPLITURART VARCHAR2 DEFAULT NULL,
p_PPAUSCHAL VARCHAR2 DEFAULT NULL,
p_PBEZ VARCHAR2 DEFAULT NULL,
p_KRDBANK VARCHAR2 DEFAULT NULL,
p_KRDGENNR VARCHAR2 DEFAULT NULL,
p_RECHTYP VARCHAR2 DEFAULT NULL,
p_RECHMEMO VARCHAR2 DEFAULT NULL,
p_SILENT VARCHAR2 DEFAULT NULL,
x INTEGER DEFAULT 0,
y INTEGER DEFAULT 0) IS
Rec_Auftrag AUFTRAG%ROWTYPE;
Rec_Kunde ADRESSEN%ROWTYPE;
Rec_Rechnung RECHNUNG%ROWTYPE; -- alter Rechnungssatz
Rec_FirmaKto FIRMAKTO%ROWTYPE;
Rec_FirmaTmpl FIRMAKTOTEMPL%ROWTYPE;
my_ProgName VARCHAR2(20):='ErfGula';
my_rechnr INTEGER:=0;
my_liefnr INTEGER:=0;
my_RechArt VARCHAR2(01);
my_RefRechNr VARCHAR2(15):=p_REFRECHNR;
my_RefRechArt VARCHAR2(01):=p_REFRECHART;
my_mwstmiet FLOAT :=0.0;
my_mwstkraft FLOAT :=0.0;
my_mwstsonst FLOAT :=0.0;
my_mwstverspai FLOAT :=0.0;
my_mwstverscdw FLOAT :=0.0;
my_mwstverstp FLOAT :=0.0;
my_MWSTLANG FLOAT :=16;
my_TAGELANG FLOAT :=16;
my_erlmiet INTEGER:=0;
my_erlkm INTEGER:=0;
my_erlmobi INTEGER:=0;
my_erlschmal INTEGER:=0;
my_erlschmal1 INTEGER:=0;
my_erlschmal2 INTEGER:=0;
my_erlkraft INTEGER:=0;
my_erlbetank INTEGER:=0;
my_erlsonst INTEGER:=0;
my_erlsonstfrei INTEGER:=0;
my_erlvers INTEGER:=0;
my_ktomwst INTEGER:=0;
my_ktomwst2 INTEGER:=0;
my_provkonto INTEGER:=0;
my_erlintern INTEGER:=0;
my_kmintern INTEGER:=0;
my_versintern INTEGER:=0;
my_sonstintern INTEGER:=0;
my_kraftintern INTEGER:=0;
my_betankintern INTEGER:=0;
my_mk INTEGER:=0;
my_st INTEGER:=0;
my_kst INTEGER:=0;
my_kstmobi INTEGER:=0;
my_ak INTEGER:=0;
my_kt INTEGER:=0;
my_ust INTEGER:=0;
my_mkA INTEGER:=0;
my_stA INTEGER:=0;
my_kstA INTEGER:=0;
my_akA INTEGER:=0;
my_ktA INTEGER:=0;
my_mkFv INTEGER:=0;
my_stFv INTEGER:=0;
my_kstFv INTEGER:=0;
my_akFv INTEGER:=0;
my_ktFv INTEGER:=0;
my_ZahlTag INTEGER:=0;
my_KdZahlTag INTEGER:=0;
my_SepaZahlTag INTEGER:=0;
my_KdSepaDatum DATE;
my_Einzug VARCHAR2(01);
my_FZKLASSE VARCHAR2(1);
my_FZSTAT VARCHAR2(2);
my_FZOWNER VARCHAR2(8);
my_FZART VARCHAR2(4);
my_F2GO VARCHAR2(2);
my_FZTARIFFZART VARCHAR2(01);
my_FZKTOTEMPL INTEGER;
my_BEMERKUNG21 VARCHAR2(40):=p_BEMERKUNG21;
my_BEMERKUNG22 VARCHAR2(40):=p_BEMERKUNG22;
my_BEMERKUNG23 VARCHAR2(40):=p_BEMERKUNG23;
my_BEMERKUNG24 VARCHAR2(40):=p_BEMERKUNG24;
my_BEMERKUNG25 VARCHAR2(40):=p_BEMERKUNG25;
my_BEMERKUNG26 VARCHAR2(40):=p_BEMERKUNG26;
my_STEUERNR VARCHAR2(20):=p_STEUERNR;
my_EGSTEUER VARCHAR2(20):=p_EGSTEUER;
my_konzernzugr VARCHAR2( 8);
my_Land VARCHAR2( 2);
m_VermUmsatz FLOAT := 0.0;
m_KmUmsatz FLOAT := 0.0;
m_CDWUmsatz FLOAT := 0.0;
m_PAIUmsatz FLOAT := 0.0;
m_TrpUmsatz FLOAT := 0.0;
m_KraftUmsatz FLOAT := 0.0;
m_BetankUmsatz FLOAT := 0.0;
m_SonstUmsatz FLOAT := 0.0;
m_SonstUmsatzFr FLOAT := 0.0;
m_ErlSchmal FLOAT := 0.0;
m_ErlSchmal1 FLOAT := 0.0;
m_ErlSchmal2 FLOAT := 0.0;
m_DlUmsatz FLOAT := 0.0;
m_DlUmsatzFr FLOAT := 0.0;
m_ZubUmsatz FLOAT := 0.0;
m_ZubUmsatzFr FLOAT := 0.0;
m_ReSumme FLOAT := 0.0;
m_KST FLOAT := 0.0;
m_VertrSatz FLOAT := NULL;
m_VertrBetr FLOAT := NULL;
m_VtrKonto INTEGER:=0;
m_ProvBasis FLOAT := 0.0;
m_ProvSatz FLOAT := 0.0;
m_KrdSumme FLOAT := 0.0;
m_Basis INTEGER:=0;
m_cnt INTEGER:=0;
m_Faktor INTEGER:=1;
m_StatusExtern INTEGER:=NULL;
cntRech INTEGER:=0;
m_Debitor VARCHAR2(12):=NVL(TO_NUMBER(p_DEBITOR,'999999999999'),0);
m_Privat VARCHAR2(1) :='';
m_Anrede VARCHAR2(20):='';
m_Name1 VARCHAR2(40):='';
m_Name2 VARCHAR2(40):='';
m_Name3 VARCHAR2(40):='';
m_Str VARCHAR2(30):='';
m_HausNr VARCHAR2(10):='';
m_Str2 VARCHAR2(30):='';
m_PLZ VARCHAR2(10):='';
m_Ort VARCHAR2(30):='';
m_OrtTl VARCHAR2(30):='';
m_Land VARCHAR2(30):='';
-- m_EgSteuer VARCHAR2(30):='';
m_GkRef FLOAT :=0.0;
m_error VARCHAR2(1) :='0';
m_mitmwst VARCHAR2(1) :='W';
m_MwStSL VARCHAR2(1) :='1';
m_KdMwst VARCHAR2(1);
m_ZwiRech VARCHAR2(1):='F';
m_CashTyp INTEGER;
my_OP VARCHAR2(10) :=p_OP;
my_SpProz INTEGER:=NVL(p_SPLITPROZ,0);
my_ERRORTEXT VARCHAR2(300) :='';
my_HatRgDebAkt VARCHAR2(01);
my_HatKtoTempl VARCHAR2(01);
my_HatMwstReihe VARCHAR2(01);
pl_Nr VARCHAR2(2);
pl_LCode VARCHAR2(2);
pl_DELTAWERT FLOAT;
pl_MAXWERT FLOAT;
pl_MINWERT FLOAT;
pl_PFLICHT VARCHAR2(1);
pl_VONDATUM DATE;
pl_AUSNAHME BOOLEAN;
pl_RESULT BOOLEAN;
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
Loc_NLSTime VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,2);
Loc_NLSWert VARCHAR2(30):=Xtool.GetNLS(p_HDLNR,3);
Loc_NLSBetr VARCHAR2(12):=Xtool.GetNLS(p_HDLNR,7);
/* FUNCTION CheckKreditkarten(loc_RechNr INTEGER) RETURN BOOLEAN IS
CURSOR curZahlProt IS
SELECT * FROM AUFTRPAYMENT
WHERE HDLNR =p_HDLNR
AND ART ='R'
AND ACTION='P'
AND NUMMER=loc_RechNr;
BEGIN
FOR rec_ZahlProt IN curZahlProt LOOP
m_KrdSumme:=m_KrdSumme+rec_ZahlProt.BETRAG;
END LOOP;
IF m_ReSumme>m_KrdSumme
THEN RETURN FALSE;
ELSE RETURN TRUE;
END IF;
END;*/
PROCEDURE HolStdText IS
CURSOR curbemerkung IS
SELECT * FROM BEMERK
WHERE HDLNR=p_HDLNR AND
NR<100;
BEGIN
FOR rec_bemerkung IN curbemerkung LOOP
IF rec_bemerkung.STDGUL='W'
THEN my_Bemerkung21:=rec_bemerkung.TEXT1;
my_Bemerkung22:=rec_bemerkung.TEXT2;
my_Bemerkung23:=rec_bemerkung.TEXT3;
my_Bemerkung24:=rec_bemerkung.TEXT4;
my_Bemerkung25:=rec_bemerkung.TEXT5;
my_Bemerkung26:=rec_bemerkung.TEXT6;
END IF;
END LOOP;
END;
PROCEDURE GetNewRechNr IS
BEGIN
SELECT RECHNR, LIEFERNR, ERLMIET, ERLKM, ERLSCHMAL, ERLSCHMAL, ERLSCHMAL, ERLKRAFT, ERLBETANK, ERLSONST, ERLFREISONST, ERLVERS,
ERLINTERN, KMINTERN, VERSINTERN, SONSTINTERN, KRAFTINTERN, BETANKINTERN,
ERLMOBI, AUFPROV, KTOMWST, KTOMWST2, VTRKONTO, ZAHLTAG, SEPATAGE
INTO my_rechnr, my_liefnr, my_erlmiet, my_erlkm, my_erlschmal, my_erlschmal1, my_erlschmal2, my_erlkraft, my_erlbetank, my_erlsonst, my_erlsonstfrei, my_erlvers,
my_erlintern, my_kmintern, my_versintern, my_sonstintern, my_kraftintern, my_betankintern,
my_erlmobi, my_ProvKonto, my_ktomwst, my_ktomwst2, m_VtrKonto, my_ZahlTag, my_SepaZahlTag
FROM FIRMA
WHERE HDLNR=p_HDLNR FOR UPDATE;
IF p_ZAHLUNGSART IN ('50','51')
THEN UPDATE FIRMA
SET LIEFERNR = LIEFERNR + 1
WHERE HDLNR=p_HDLNR;
my_RechArt:='L';
my_RechNr :=my_LiefNr;
ELSE UPDATE FIRMA
SET RECHNR = RECHNR + 1
WHERE HDLNR=p_HDLNR;
my_RechArt:='R';
END IF;
END;
PROCEDURE getVertragsSteuer IS
loc_Summe FLOAT;
loc_AltUmsatz FLOAT;
loc_AltKm FLOAT;
loc_AltSchmal FLOAT;
loc_AltSchmal1 FLOAT;
loc_AltSchmal2 FLOAT;
loc_AltCDW FLOAT;
loc_AltPAI FLOAT;
loc_AltTP FLOAT;
loc_AltKraft FLOAT;
loc_AltBetank FLOAT;
loc_AltZub FLOAT;
loc_AltDl FLOAT;
loc_AltZubFr FLOAT;
loc_AltDlFr FLOAT;
loc_AltSonst FLOAT;
loc_AltSonstFr FLOAT;
loc_AltMwSt FLOAT;
loc_AltVtr FLOAT;
BEGIN
RECHNTOOLS.GetAltRech(Rec_Auftrag.HDLNR,
Rec_Auftrag.AUFTRNR,
0,
my_rechnr,
SYSDATE,
NULL,
loc_AltUmsatz,
loc_AltKm,
loc_AltSchmal,
loc_AltSchmal1,
loc_AltSchmal2,
loc_AltCDW,
loc_AltPAI,
loc_AltTP,
loc_AltKraft,
loc_AltBetank,
loc_AltZub,
loc_AltDl,
loc_AltZubFr,
loc_AltDlFr,
loc_AltSonst,
loc_AltSonstFr,
loc_AltMwSt,
loc_AltVtr);
loc_Summe :=m_ReSumme +
-- Plus weitere Teilrechnungen
loc_AltUmsatz -
loc_AltSchmal -
loc_AltSchmal1 -
loc_AltSchmal2 +
loc_AltKm +
loc_AltCDW +
loc_AltPAI +
loc_AltTP +
loc_AltKraft +
loc_AltBetank +
loc_AltSonst +
loc_AltSonstFr +
loc_AltZub +
loc_AltDl +
loc_AltZubFr +
loc_AltDlFr +
-- Plus MwSt
Schnittstellen.KaufRND(((loc_AltUmsatz - loc_AltSchmal- loc_AltSchmal1 - loc_AltSchmal2 + loc_AltKm) / 100 * my_MwStMiet)) +
Schnittstellen.KaufRND(((loc_AltPai) / 100 * my_MwStVersPai)) +
Schnittstellen.KaufRND(((loc_AltCDW) / 100 * my_MwStVersCdw)) +
Schnittstellen.KaufRND(((loc_AltTp) / 100 * my_MwStVersTp)) +
Schnittstellen.KaufRND(((loc_AltKraft) / 100 * my_MwStKraft)) +
Schnittstellen.KaufRND(((loc_AltSonst+loc_AltBetank+loc_AltZub+loc_AltDl) / 100 * my_MwStSonst));
IF (loc_Summe>=150.00)
THEN m_VertrSatz:=1;
m_VertrBetr:=loc_Summe / 100 * m_VertrSatz;
m_VertrBetr:=m_VertrBetr - loc_AltVtr;
m_ReSumme:=m_ReSumme + m_VertrBetr;
END IF;
END;
PROCEDURE MakeOrgRechnung IS
Rec_Rechadr RECHADR%ROWTYPE;
loc_RechAdr INTEGER;
loc_StatusExtern INTEGER:=NULL;
BEGIN
-- Urspung lesen
SELECT *
INTO Rec_Rechnung
FROM RECHNUNG
WHERE HDLNR =p_HDLNR
AND RECHNR =p_SPLITURRG
AND RECHART=my_RechArt;
IF Rec_Rechnung.MVART IN ('MV1','MV4')
THEN loc_StatusExtern:=0;
END IF;
SELECT COUNT(rechnr)
INTO loc_rechadr
FROM RECHADR
WHERE HDLNR =p_HDLNR
AND RECHNR =p_SPLITURRG
AND RECHART=my_RechArt;
GetNewRechNr;
-- SplitRechnung 1 erzeuge, Betr� minus erfasste Betr�
INSERT INTO RECHNUNG
(HDLNR, FILNR, RECHNR, GUTLAST, ZWIRECH, RECHART, AUFTRNR, DEBITOR, RDATUM, ZAHLBED,
VERMITTLER, PROVBASIS, PROVSATZ, PROVKONTO,
VERMUMSATZ, KMUMSATZ, RABATT, RABATTZL, VERMMWST, ERLSCHMAL, ERLSCHMAL1, ERLSCHMAL2, ERLMWST,
ERLKONTO, ERLKONTO1, ERLKONTO2, VERMKONTO, KMKONTO,
VERSUMSATZPAI, VERSMWSTPAI, VERSUMSATZCDW, VERSMWSTCDW, VERSUMSATZTP,
VERSMWSTTP, VERSKONTO, KRAFTUMSATZ, KRAFTMWST, KRAFTKONTO, BETANKUMSATZ, BETANKKONTO,
SONSTUMSATZ, SONSTUMSATZFREI, ZUBUMSATZ, DLUMSATZ, ZUBUMSATZFREI, DLUMSATZFREI,
SONSTMWST, SONSTKONTO, BERKM, GEFKM, GEZAHLT, ZAHLWEG, KSTSTELLE, KSTFIL,
BEMERKUNG1, BEMERKUNG2, BEMERKUNG3, BEMERKUNG4, BEMERKUNG5, BEMERKUNG6, FIBU, PROV,
BANFANG, BENDE, MANFANG, MENDE, TARIFTYP, TARIFTYPS, TARIFBEZ, ERFHDLNR, ERFUSER,
RGKLASSE, MVKLASSE, FZKLASSE, FZSTAT, FZOWNERHDLNR, RGTARIFFZART, RGFZTARIFAUS,
GKREF, GKGRP, AUSLAGENTEXT, REFRECHNR, REFRECHART, ABWRECH, LITER, SORTE, KTOMWST, KTOMWST2, UNFALLERSATZ,
VTRSTEUER, VTRBETRAG, VTRKONTO, AUFHDLNR,
AUFTRNREXT,GESCHBEREICH, MWSTSL, FREE2GO,
MK,ST,KST,AK,KT,UST,KSTMOBI, ZAHLTAG, LFSSAMMEL,
RECHTYP,RECHMEMO, MVART, STATUSEXTERN, TRFMANUELL)
VALUES (p_HDLNR,Rec_rechnung.FILNR,my_RechNr, 'W', m_ZwiRech, my_RechArt, p_AUFTRNR, Rec_Rechnung.Debitor, XTool.GetSysDate(p_HDLNR), Rec_rechnung.ZAHLBED,
Rec_Rechnung.VERMITTLER, Rec_Rechnung.ProvBasis, Rec_Rechnung.ProvSatz, Rec_Rechnung.ProvKonto,
Rec_Rechnung.VERMUMSATZ-m_VermUmsatz,Rec_Rechnung.KMUMSATZ-m_KmUmsatz,0.0,0,Rec_Rechnung.VERMMWST,Rec_Rechnung.ERLSCHMAL,0.0,0.0,Rec_Rechnung.ERLMWST,
Rec_Rechnung.erlkonto,Rec_Rechnung.erlkonto1,Rec_Rechnung.erlkonto2,my_erlmiet, my_erlkm,
Rec_Rechnung.VERSUMSATZPAI-m_PAIUmsatz,Rec_Rechnung.VERSMWSTPAI,Rec_Rechnung.VERSUMSATZCDW-m_CDWUmsatz,Rec_Rechnung.VERSMWSTCDW,Rec_Rechnung.VERSUMSATZTP-m_TrpUmsatz,
Rec_Rechnung.VERSMWSTTP,Rec_Rechnung.VERSKONTO,Rec_Rechnung.KRAFTUMSATZ-m_KraftUmsatz,Rec_Rechnung.KRAFTMWST,Rec_Rechnung.KRAFTKONTO,Rec_Rechnung.BETANKUMSATZ-m_BetankUmsatz,Rec_Rechnung.BETANKKONTO,
Rec_Rechnung.SONSTUMSATZ+Rec_Rechnung.ZUBUMSATZ+Rec_Rechnung.DLUMSATZ-m_SonstUmsatz, Rec_Rechnung.SONSTUMSATZFREI+Rec_Rechnung.ZUBUMSATZFREI+Rec_Rechnung.DLUMSATZFREI-m_SonstUmsatzFr,0.0, 0.0, 0.0, 0.0,
Rec_Rechnung.SONSTMWST,Rec_Rechnung.SONSTKONTO,Rec_Rechnung.BERKM,Rec_Rechnung.GEFKM,Rec_Rechnung.GEZAHLT-m_resumme,Rec_Rechnung.ZAHLWEG,Rec_Rechnung.KSTSTELLE, Rec_Rechnung.KSTFIL,
Rec_Rechnung.BEMERKUNG1,Rec_Rechnung.BEMERKUNG2,Rec_Rechnung.BEMERKUNG3,Rec_Rechnung.BEMERKUNG4,Rec_Rechnung.BEMERKUNG5,Rec_Rechnung.BEMERKUNG6,'F','F',
Rec_Rechnung.BANFANG,Rec_Rechnung.BENDE,Rec_Rechnung.MANFANG, Rec_Rechnung.MENDE,
Rec_RECHNUNG.TARIFTYP,Rec_Rechnung.TARIFTYPS,Rec_Rechnung.TARIFBEZ,p_HDLNR, NVL(p_USERNR,0),
rec_Auftrag.BERECHGRP,rec_Auftrag.BERECHGRP,my_FZKLASSE, my_FZSTAT, my_FZOWNER, rec_Auftrag.FZTARIFFZART, rec_Auftrag.FZTARIFAUS,
Rec_Rechnung.GkRef,Rec_Rechnung.GKGRP, Rec_Rechnung.AUSLAGENTEXT, Rec_Rechnung.RECHNR, Rec_Rechnung.RECHART/*p_SPLITURRG*/, Rec_Rechnung.ABWRECH, Rec_Rechnung.LITER, Rec_Rechnung.SORTE, Rec_rechnung.ktomwst, Rec_rechnung.ktomwst2, Rec_Rechnung.UNFALLERSATZ,
Rec_Rechnung.VTRSTEUER, Rec_Rechnung.VTRBETRAG, Rec_Rechnung.VtrKonto, Rec_Rechnung.AUFHDLNR,
Rec_rechnung.AUFTRNREXT, Rec_Rechnung.GESCHBEREICH, Rec_Rechnung.MwStSL, Rec_Rechnung.FREE2GO,
Rec_Rechnung.MK,Rec_Rechnung.ST,Rec_Rechnung.KST,Rec_Rechnung.AK,Rec_Rechnung.KT,Rec_Rechnung.UST,Rec_Rechnung.KSTMOBI,Rec_Rechnung.ZAHLTAG,'W',
Rec_Rechnung.RechTyp, Rec_Rechnung.Rechmemo, Rec_Rechnung.MVART, loc_StatusExtern, Rec_Rechnung.TRFMANUELL);
IF loc_rechadr>0
THEN SELECT *
INTO Rec_Rechadr
FROM RECHADR
WHERE HDLNR =p_HDLNR
AND RECHNR =p_SPLITURRG
AND RECHART=my_RechArt;
INSERT INTO RECHADR
(HDLNR, RECHNR, RECHART, ANREDE, NAME1, NAME2, NAME3, STRASSE, HAUSNR,
PLZ, ORT, DEBITOR, MITMWST, PRIVAT,
STEUERNR, EGSTEUER, KOSTENSTELLE)
VALUES (p_HDLNR, my_RechNr, my_RechArt, Rec_Rechadr.ANREDE, Rec_Rechadr.NAME1, Rec_Rechadr.NAME2, Rec_Rechadr.NAME3, Rec_Rechadr.STRASSE, Rec_RechAdr.HAUSNR,
Rec_Rechadr.PLZ, Rec_Rechadr.ORT, Rec_Rechadr.DEBITOR, Rec_Rechadr.MITMWST, Rec_Rechadr.PRIVAT,
Rec_Rechadr.STEUERNR, Rec_Rechadr.EGSTEUER, Rec_Rechadr.KOSTENSTELLE);
END IF;
-- UrspungsRg stornieren
RechStorno (p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_RECHNR => p_SPLITURRG,
p_RECHART => my_RechArt,
p_GRUND => 'Autom. Split',
p_NURBUCHEN => 'W');
END;
PROCEDURE GetKontierung IS
my_Tarif VARCHAR2(12):=Rec_Rechnung.TARIFTYP;
FUNCTION ReadKtoTemplate(loc_TARIFFZART VARCHAR2,
loc_SEGMENT VARCHAR2,
loc_ZEIT VARCHAR2,
loc_TRFART VARCHAR2,
loc_FZKLASSE VARCHAR2) RETURN BOOLEAN IS
BEGIN
SELECT COUNT(HDLNR)
INTO m_Cnt
FROM FIRMAKTOTEMPL
WHERE HDLNR =p_HDLNR
AND NVL(TARIFFZART,'-')=NVL(loc_TARIFFZART,'-')
AND NVL(TRFSEGMENT,'-')=NVL(loc_SEGMENT,'-')
AND NVL(TRFZEIT,'-') =NVL(loc_ZEIT,'-')
AND NVL(TRFART,'-') =NVL(loc_TRFART,'-')
AND ((loc_FZKLASSE IS NULL AND FZKLASSEN IS NULL) OR (loc_FZKLASSE IS NOT NULL AND INSTR(FZKLASSEN,loc_FZKLASSE)>0))
AND STANDARD ='W';
IF m_Cnt=1
THEN SELECT *
INTO Rec_FIRMATMPL
FROM FIRMAKTOTEMPL
WHERE HDLNR =p_HDLNR
AND NVL(TARIFFZART,'-')=NVL(loc_TARIFFZART,'-')
AND NVL(TRFSEGMENT,'-')=NVL(loc_SEGMENT,'-')
AND NVL(TRFZEIT,'-') =NVL(loc_ZEIT,'-')
AND NVL(TRFART,'-') =NVL(loc_TRFART,'-')
AND ((loc_FZKLASSE IS NULL AND FZKLASSEN IS NULL) OR (loc_FZKLASSE IS NOT NULL AND INSTR(FZKLASSEN,loc_FZKLASSE)>0))
AND STANDARD ='W';
RETURN TRUE;
ELSE RETURN FALSE;
END IF;
END;
PROCEDURE FromKtoTemplate IS
BEGIN
my_erlmiet :=rec_firmatmpl.ERLMIET;
my_erlkm :=rec_firmatmpl.ERLKM;
my_erlschmal :=rec_firmatmpl.ERLSCHMAL;
my_erlschmal1 :=rec_firmatmpl.ERLSCHMAL1;
my_erlschmal2 :=rec_firmatmpl.ERLSCHMAL2;
my_erlkraft :=rec_firmatmpl.ERLKRAFT;
my_erlbetank :=rec_firmatmpl.ERLBETANK;
my_erlsonst :=rec_firmatmpl.ERLSONST;
my_erlsonstfrei :=rec_firmatmpl.ERLFREISONST;
my_erlvers :=rec_firmatmpl.ERLVERS;
my_erlintern :=rec_firmatmpl.MIETINTERN;
my_kmintern :=rec_firmatmpl.KMINTERN;
my_versintern :=rec_firmatmpl.VERSINTERN;
my_kraftintern :=rec_firmatmpl.KRAFTINTERN;
my_betankintern :=rec_firmatmpl.BETANKINTERN;
my_sonstintern :=rec_firmatmpl.SONSTINTERN;
my_erlmobi :=rec_firmatmpl.ERLMOBI;
my_provkonto :=rec_firmatmpl.AUFPROV;
--my_ktomwst :=rec_firmatmpl.KTOMWST;
--my_ktomwst2 :=rec_firmatmpl.KTOMWST2;
m_vtrkonto :=rec_firmatmpl.VTRKONTO;
my_Mk :=rec_firmatmpl.MK;
my_St :=rec_firmatmpl.ST;
my_Kst :=rec_firmatmpl.KST;
--my_Ak :=rec_firmatmpl.AK;
my_Kt :=rec_firmatmpl.KT;
my_KstMobi :=rec_firmatmpl.KSTMOBI;
my_MkA :=0;
my_StA :=0;
my_KstA :=0;
my_AkA :=0;
my_KtA :=0;
my_MkFV :=rec_firmatmpl.MK;
my_StFV :=rec_firmatmpl.ST;
my_KstFV :=rec_firmatmpl.KST;
--my_AkFV :=rec_firmatmpl.AK;
my_KtFV :=rec_firmatmpl.KT;
END;
PROCEDURE FromKtoTemplateFW IS
BEGIN
my_MkFV :=rec_firmatmpl.MK;
my_StFV :=rec_firmatmpl.ST;
my_KstFV :=rec_firmatmpl.KST;
--my_AkFV :=rec_firmatmpl.AK;
my_KtFV :=rec_firmatmpl.KT;
END;
BEGIN
SELECT COUNT(HDLNR)
INTO m_Cnt
FROM FIRMAKTO
WHERE HDLNR=p_HDLNR;
IF m_Cnt=1
THEN SELECT *
INTO Rec_FIRMAKTO
FROM FIRMAKTO
WHERE HDLNR=p_HDLNR;
IF Rec_FirmaKto.USESKR='W'
THEN my_erlmiet :=rec_firmakto.ERLMIET;
my_erlkm :=rec_firmakto.ERLKM;
my_erlschmal :=rec_firmakto.ERLSCHMAL;
my_erlschmal1 :=rec_firmakto.ERLSCHMAL;
my_erlschmal2 :=rec_firmakto.ERLSCHMAL;
my_erlkraft :=rec_firmakto.ERLKRAFT;
my_erlbetank :=rec_firmakto.ERLBETANK;
my_erlsonst :=rec_firmakto.ERLSONST;
my_erlsonstfrei:=rec_firmakto.ERLFREISONST;
my_erlvers :=rec_firmakto.ERLVERS;
my_erlintern :=rec_firmakto.ERLINTERN;
my_kmintern :=rec_firmakto.KMINTERN;
my_versintern :=rec_firmakto.VERSINTERN;
my_kraftintern :=rec_firmakto.KRAFTINTERN;
my_betankintern:=rec_firmakto.BETANKINTERN;
my_sonstintern :=rec_firmakto.SONSTINTERN;
my_erlmobi :=rec_firmakto.ERLMOBI;
my_provkonto :=rec_firmakto.AUFPROV;
my_ktomwst :=rec_firmakto.KTOMWST;
my_ktomwst2 :=rec_firmakto.KTOMWST2;
m_vtrkonto :=rec_firmakto.VTRKONTO;
my_Mk :=rec_firmakto.MK;
my_St :=rec_firmakto.ST;
my_Kst :=rec_firmakto.KST;
my_KstMobi :=rec_firmakto.KSTMOBI;
my_Ak :=rec_firmakto.AK;
my_Kt :=rec_firmakto.KT;
my_MkA :=0;
my_StA :=0;
my_KstA :=0;
my_AkA :=0;
my_KtA :=0;
my_MkFv :=rec_firmakto.MK;
my_StFv :=rec_firmakto.ST;
my_KstFv :=rec_firmakto.KST;
my_AkFv :=rec_firmakto.AK;
my_KtFv :=rec_firmakto.KT;
END IF;
END IF;
IF NVL(my_HatKtoTempl,'F')='W'
THEN -- htp.p('Standard<br/>');
IF ReadKtoTemplate(NULL,NULL,NULL,NULL,NULL)
THEN FromKtoTemplate;
END IF;
-- htp.p('1 Parameter<br/>');
-- Standard f�r FzKlasse
IF ReadKtoTemplate(NULL,NULL,NULL,NULL,SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r Tarifart
IF ReadKtoTemplate(NULL,NULL,NULL,SUBSTR(my_Tarif,6,1),NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r Zeit
IF ReadKtoTemplate(NULL,NULL,SUBSTR(my_Tarif,4,2),NULL,NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r Segment
IF ReadKtoTemplate(NULL,SUBSTR(my_Tarif,2,2),NULL,NULL,NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt
IF ReadKtoTemplate(my_FzTarifFzArt,NULL,NULL,NULL,NULL)
THEN FromKtoTemplate;
END IF;
-- htp.p('2 Parameter<br/>');
-- Standard f�r Tarifart und FzKlasse
IF ReadKtoTemplate(NULL,NULL,NULL,SUBSTR(my_Tarif,6,1),SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r Zeit und FzKlasse
IF ReadKtoTemplate(NULL,NULL,SUBSTR(my_Tarif,4,2),NULL,SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r Segment und FzKlasse
IF ReadKtoTemplate(NULL,SUBSTR(my_Tarif,2,2),NULL,NULL,SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt und FzKlasse
IF ReadKtoTemplate(my_FzTarifFzArt,NULL,NULL,NULL,SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r Zeit und Tarifart
IF ReadKtoTemplate(NULL,NULL,SUBSTR(my_Tarif,4,2),SUBSTR(my_Tarif,6,1),NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r Segment und Tarifart
IF ReadKtoTemplate(NULL,SUBSTR(my_Tarif,2,2),NULL,SUBSTR(my_Tarif,6,1),NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt und Tarifart
IF ReadKtoTemplate(my_FzTarifFzArt,NULL,NULL,SUBSTR(my_Tarif,6,1),NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r Segment und Zeit
IF ReadKtoTemplate(NULL,SUBSTR(my_Tarif,2,2),SUBSTR(my_Tarif,4,2),NULL,NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt und Zeit
IF ReadKtoTemplate(my_FzTarifFzArt,NULL,SUBSTR(my_Tarif,4,2),NULL,NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt und Segment
IF ReadKtoTemplate(my_FzTarifFzArt,SUBSTR(my_Tarif,2,2),NULL,NULL,NULL)
THEN FromKtoTemplate;
END IF;
-- htp.p('3 Parameter<br/>');
-- Standard f�r Zeit, Tarifart und FzKlasse
IF ReadKtoTemplate(NULL,NULL,SUBSTR(my_Tarif,4,2),SUBSTR(my_Tarif,6,1),SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r Segment, Tarifart und FzKlasse
IF ReadKtoTemplate(NULL,SUBSTR(my_Tarif,2,2),NULL,SUBSTR(my_Tarif,6,1),SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Tarifart und FzKlasse
IF ReadKtoTemplate(my_FzTarifFzArt,NULL,NULL,SUBSTR(my_Tarif,6,1),SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r Segment, Zeit und FzKlasse
IF ReadKtoTemplate(NULL,SUBSTR(my_Tarif,2,2),SUBSTR(my_Tarif,4,2),NULL,SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Zeit und FzKlasse
IF ReadKtoTemplate(my_FzTarifFzArt,NULL,SUBSTR(my_Tarif,4,2),NULL,SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Segment und FzKlasse
IF ReadKtoTemplate(my_FzTarifFzArt,SUBSTR(my_Tarif,2,2),NULL,NULL,SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r Segment, Zeit, Tarifart
IF ReadKtoTemplate(NULL,SUBSTR(my_Tarif,2,2),SUBSTR(my_Tarif,4,2),SUBSTR(my_Tarif,6,1),NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Zeit, Tarifart
IF ReadKtoTemplate(my_FzTarifFzArt,NULL,SUBSTR(my_Tarif,4,2),SUBSTR(my_Tarif,6,1),NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Segment, Tarifart
IF ReadKtoTemplate(my_FzTarifFzArt,SUBSTR(my_Tarif,2,2),NULL,SUBSTR(my_Tarif,6,1),NULL)
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Segment, Zeit
IF ReadKtoTemplate(my_FzTarifFzArt,SUBSTR(my_Tarif,2,2),SUBSTR(my_Tarif,4,2),NULL,NULL)
THEN FromKtoTemplate;
END IF;
-- htp.p('4 Parameter<br/>');
-- Standard f�r Segment, Zeit, Tarifart und FzKlasse
IF ReadKtoTemplate(NULL,SUBSTR(my_Tarif,2,2),SUBSTR(my_Tarif,4,2),SUBSTR(my_Tarif,6,1),SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Zeit, Tarifart und FzKlasse
IF ReadKtoTemplate(my_FzTarifFzArt,NULL,SUBSTR(my_Tarif,4,2),SUBSTR(my_Tarif,6,1),SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Segment, Tarifart und FzKlasse
IF ReadKtoTemplate(my_FzTarifFzArt,SUBSTR(my_Tarif,2,2),NULL,SUBSTR(my_Tarif,6,1),SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Segment, Zeit und FzKlasse
IF ReadKtoTemplate(my_FzTarifFzArt,SUBSTR(my_Tarif,2,2),SUBSTR(my_Tarif,4,2),NULL,SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Standard f�r TarifFzArt, Segment, Zeit, Tarifart
IF ReadKtoTemplate(my_FzTarifFzArt,SUBSTR(my_Tarif,2,2),SUBSTR(my_Tarif,4,2),SUBSTR(my_Tarif,6,1),NULL)
THEN FromKtoTemplate;
END IF;
-- htp.p('5 Parameter<br/>');
-- Standard f�r TarifFzArt, Segment, Zeit, Tarifart, FzKlasse
IF ReadKtoTemplate(my_FzTarifFzArt,SUBSTR(my_Tarif,2,2),SUBSTR(my_Tarif,4,2),SUBSTR(my_Tarif,6,1),SUBSTR(my_Tarif,7,1))
THEN FromKtoTemplate;
END IF;
-- Fahrzeugspezifisch
SELECT COUNT(HDLNR)
INTO m_Cnt
FROM FIRMAKTOTEMPL
WHERE HDLNR =p_HDLNR
AND NUMMER =my_FzKtoTempl;
IF m_Cnt=1
THEN SELECT *
INTO Rec_FIRMATMPL
FROM FIRMAKTOTEMPL
WHERE HDLNR =p_HDLNR
AND NUMMER =my_FzKtoTempl;
FromKtoTemplate;
END IF;
END IF;
END;
BEGIN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin(p_HDLNR => p_HDLNR);
RETURN;
END IF;
IF p_FUNC='7' AND my_OP='0' AND
(p_STEUERNR IS NULL OR p_STEUERNR='')
THEN my_OP:='1';
END IF;
IF p_FUNC='7' AND my_OP IN ('0','1')-- Gutschrift sp�r 1 entfernen, dann eigenes Back aufrufen
THEN m_Faktor:=-1;
END IF;
IF my_OP IN ('9','8t')-- StdText laden
THEN HolStdText;
END IF;
IF SUBSTR(p_RECHNR,1,1)<>'-' -- erster Aufruf!
THEN my_RefRechNr :=p_RECHNR;
my_RefRechArt:=p_RECHART;
END IF;
my_rechnr:=TO_NUMBER(p_USERNR,999) * -1.0;
DELETE FROM RECHNUNG
WHERE HDLNR =p_HDLNR AND
RECHNR=my_rechnr;
DELETE FROM RECHADR
WHERE HDLNR =p_HDLNR AND
RECHNR =my_rechnr;
DELETE FROM RECHZUBPOS
WHERE HDLNR =p_HDLNR AND
RECHNR =my_rechnr;
COMMIT;
SELECT KONZERNZUGR, CASHTYP, HATRGDEBAKT, HATKTOTEMPLATE, HATMWSTREIHE
INTO my_konzernzugr, m_CashTyp, my_HatRgDebAkt, my_HatKtoTempl, my_HatMwstReihe
FROM FIRMA F, FIRMAPARAM FP
WHERE F.HDLNR=p_HDLNR AND FP.HDLNR=p_HDLNR;
IF NVL(p_AUFTRNR,0)>0
THEN SELECT *
INTO Rec_Auftrag
FROM AUFTRAG
WHERE HDLNR =p_HDLNR
AND AUFTRNR=p_AUFTRNR;
END IF;
IF NVL(my_RefRechnr,0)>0
THEN SELECT *
INTO Rec_Rechnung
FROM RECHNUNG
WHERE HDLNR =p_HDLNR AND
RECHNR =my_RefRechNr AND
RECHART=my_RefRechArt;
ELSE IF NVL(p_RECHNR,0)>0
THEN SELECT *
INTO Rec_Rechnung
FROM RECHNUNG
WHERE HDLNR =p_HDLNR AND
RECHNR =p_RECHNR AND
RECHART=p_RECHART;
END IF;
my_RefRechNr :=p_RECHNR;
my_RefRechArt:=p_RECHART;
END IF;
IF --(Rec_Auftrag.FAHRGESTELL<>'') AND
(Rec_Auftrag.FAHRGESTELL<>'-') AND
(Rec_Auftrag.FAHRGESTELL IS NOT NULL)
THEN SELECT TARIFTYP, FZSTAT, HDLNR, FZART, TARIFFZART, FREI_193
INTO my_FZKLASSE, my_FZSTAT, my_FZOWNER, my_FZART, my_FzTarifFzArt, my_FzKtoTempl
FROM FAHRZEUG
WHERE FAHRGESTELL= Rec_Auftrag.FAHRGESTELL
AND ZULASSUNG = Rec_Auftrag.ZULASSUNG;
END IF;
IF my_F2GO IS NULL
THEN my_F2GO:='F';
END IF;
IF Rec_Auftrag.DMSSOURCE='F1' -- Free2Go, Rechnungsflag nach AuftragsArt, nicht Fahrzeug!
THEN my_F2GO:='W';
ELSE my_F2GO:='F';
END IF;
m_MwStSl :=Rec_Auftrag.MITMWST;
m_KST :=Rec_Auftrag.KOSTENSTELLE;
m_error:='1';
IF m_Debitor=0
THEN m_Debitor:=TO_CHAR(Rec_Auftrag.DEBITOR);
END IF;
BEGIN
IF m_DEBITOR>0
THEN SELECT *
INTO Rec_Kunde
FROM ADRESSEN
WHERE HDLNR = p_HDLNR AND
ART = 'K' AND
NUMMER = m_DEBITOR;
m_MwStSl :=Rec_Kunde.MWST;
m_KdMwSt :=Rec_Kunde.MWST;
m_KST :=Rec_Kunde.KST;
m_Privat :=Rec_Kunde.TYP;
m_Anrede :=Rec_Kunde.ANREDE;
m_Name1 :=Rec_Kunde.NAME1;
m_Name2 :=Rec_Kunde.NAME2;
m_Name3 :=Rec_Kunde.NAME3;
m_Str :=Rec_Kunde.STRASSE;
m_HausNr :=Rec_Kunde.HAUSNR;
m_Str2 :=Rec_Kunde.STRASSE2;
m_Plz :=Rec_Kunde.PLZ;
m_Ort :=Rec_Kunde.ORT;
m_OrtTl :=Rec_Kunde.ORTSTEIL;
m_Land :=Rec_Kunde.LAND;
my_KdZahlTag :=Rec_Kunde.ZAHLTAG;
my_KdSepadatum:=Rec_Kunde.SEPADATUM;
my_Einzug :=Rec_Kunde.EINZUG;
-- m_EgSteuer:=Rec_Kunde.EGSTEUER;
m_GkRef :=Rec_Kunde.GKREF;
IF m_Str IS NULL OR
m_Plz IS NULL OR
m_Ort IS NULL
THEN my_Op :='E';
m_Debitor:=Rec_Auftrag.DEBITOR;
my_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietgula',8,'');
END IF;
ELSE m_Debitor :=Rec_Auftrag.DEBITOR;
m_Privat :=Rec_Auftrag.PRIVAT;
m_Anrede :=Rec_Auftrag.ANREDE;
m_Name1 :=Rec_Auftrag.NAME1;
m_Name2 :=Rec_Auftrag.NAME2;
m_Name3 :=Rec_Auftrag.NAME3;
m_Str :=Rec_Auftrag.STRASSE;
m_HausNr :=Rec_Auftrag.HAUSNR;
m_Str2 :=Rec_Auftrag.STRASSE2;
m_Plz :=Rec_Auftrag.PLZ;
m_Ort :=Rec_Auftrag.ORT;
m_OrtTl :=Rec_Auftrag.ORTSTEIL;
m_Land :=Rec_Auftrag.LAND;
m_Privat :=Rec_Auftrag.PRIVAT;
m_GkRef :=Rec_Auftrag.GKREF;
m_MwStSL :=Rec_Auftrag.MITMWST;
-- m_EgSteuer:=Rec_Auftrag.EGSTEUER;
m_KST :=0;
SELECT ZAHLTAG, SEPADATUM, EINZUG
INTO my_KdZahltag, my_KdSepaDatum, my_Einzug
FROM ADRESSEN
WHERE HDLNR=p_HDLNR
AND ART ='K'
AND NUMMER=m_Debitor;
END IF;
EXCEPTION
WHEN OTHERS THEN
m_Debitor :=Rec_Auftrag.DEBITOR;
m_Privat :=Rec_Auftrag.PRIVAT;
m_Anrede :=Rec_Auftrag.ANREDE;
m_Name1 :=Rec_Auftrag.NAME1;
m_Name2 :=Rec_Auftrag.NAME2;
m_Name3 :=Rec_Auftrag.NAME3;
m_Str :=Rec_Auftrag.STRASSE;
m_HausNr :=Rec_Auftrag.HAUSNR;
m_Str2 :=Rec_Auftrag.STRASSE2;
m_Plz :=Rec_Auftrag.PLZ;
m_Ort :=Rec_Auftrag.ORT;
m_OrtTl :=Rec_Auftrag.ORTSTEIL;
m_Land :=Rec_Auftrag.LAND;
m_Privat :=Rec_Auftrag.PRIVAT;
m_GkRef :=Rec_Auftrag.GKREF;-- Xtool.Meldung(m_error);
m_MwStSl :=Rec_Auftrag.MITMWST;
-- m_EgSteuer:=Rec_Auftrag.EGSTEUER;
m_KST :=0;
my_Op :='7';
END;
-- Wenn Gutschrift, MwSt-Bedingung aus altem RechAdr holen
IF p_FUNC='7'-- Gutschrift
THEN BEGIN
SELECT MITMWST
INTO m_MwstSl
FROM RECHADR
WHERE HDLNR =p_HDLNR AND
RECHNR =p_RECHNR AND
RECHART=p_RECHART;
EXCEPTION
WHEN OTHERS THEN m_MwStSl:=m_KdMwSt;
END;
END IF;
--
-- ggf. alles MwSt-Frei, Steuerung �ber
-- ggf. alles MwSt-Frei, Steuerung �ber
IF Rec_Rechnung.MVART IN ('MV1','MV4')
THEN IF NVL(my_HatMwstReihe,'F')='F'
THEN m_MwstSl:=0;
END IF;
IF p_RECHTYP IS NOT NULL AND -- OWI, Schaden
Rec_Rechnung.DEBITOR=NVL(p_DEBITOR,0) -- wenn Debitor-Alt=Debitor-Neu, dann
THEN my_Op:='9'; -- KundenSuche
END IF;
END IF;
--
--
IF m_MwStSL='1' OR m_MwStSL='3' OR m_MwStSL='4'
THEN m_MitMwSt:='W';
ELSE m_MitMwSt:='F';
END IF;
-- MwSt f�r MEndeDatum holen
my_LAND:=SUBSTR(my_KONZERNZUGR,5,2);
IF Rec_Auftrag.AUFTRNR IS NULL OR
Rec_Rechnung.MENDE IS NULL
THEN EM_BACK.Get_MwSt_Aktiv(my_LAND,my_MWSTMIET,my_MWSTLANG,my_TAGELANG,
my_MWSTVERSPAI,my_MWSTVERSCDW,my_MWSTVERSTP,
my_MWSTKRAFT, my_MWSTSONST,TRUNC(SYSDATE));
ELSE EM_BACK.Get_MwSt_Aktiv(my_LAND,my_MWSTMIET,my_MWSTLANG,my_TAGELANG,
my_MWSTVERSPAI,my_MWSTVERSCDW,my_MWSTVERSTP,
my_MWSTKRAFT, my_MWSTSONST,TO_DATE(Rec_RECHNUNG.MENDE));
END IF;
IF my_LAND='04' AND (my_FZART IN ('111','131'))
THEN my_MWSTMIET:=my_MWSTLANG;
END IF;
-- MwSt Ende
IF Rec_Auftrag.AUFTRNR IS NOT NULL
THEN IF (my_LAND='01' OR my_LAND='10') AND (m_MwStSl='3') AND ((trunc(Rec_Auftrag.MENDE)-trunc(Rec_Auftrag.MBEGINN))>=my_TAGELANG)
THEN m_MitMwSt:='F';
END IF;
END IF;
IF m_mitmwst='F'
THEN my_mwstmiet :=0.0;
my_mwstverscdw:=0.0;
my_mwstverspai:=0.0;
my_mwstverstp :=0.0;
my_mwstkraft :=0.0;
my_mwstsonst :=0.0;
END IF;
IF NVL(p_VERMITTLER,0)>0
THEN BEGIN
SELECT PROVISION, BASIS
INTO m_PROVSATZ, m_BASIS
FROM ADRESSEN
WHERE HDLNR = p_HDLNR AND
ART = 'M' AND
NUMMER= NVL(p_VERMITTLER,0);
EXCEPTION
WHEN OTHERS THEN NULL;
END;
END IF;
m_VermUmsatz := NVL(TO_NUMBER(p_MIETE,Loc_NLSBetr,Loc_NLSWert),0) * m_Faktor;
m_KmUmsatz := NVL(TO_NUMBER(p_KM,Loc_NLSBetr,Loc_NLSWert),0) * m_Faktor;
m_CDWUmsatz := NVL(TO_NUMBER(p_CDW,Loc_NLSBetr,Loc_NLSWert),0) * m_Faktor;
m_PAIUmsatz := NVL(TO_NUMBER(p_PAI,Loc_NLSBetr,Loc_NLSWert),0) * m_Faktor;
m_TrpUmsatz := NVL(TO_NUMBER(p_TRAPO,Loc_NLSBetr,Loc_NLSWert),0) * m_Faktor;
m_KraftUmsatz := NVL(TO_NUMBER(p_KRAFT,Loc_NLSBetr,Loc_NLSWert),0) * m_Faktor;
m_BetankUmsatz := NVL(TO_NUMBER(p_BETANKUNG,Loc_NLSBetr,Loc_NLSWert),0) * m_Faktor;
m_SonstUmsatz := NVL(TO_NUMBER(p_SONST,Loc_NLSBetr,Loc_NLSWert),0) * m_Faktor;
m_SonstUmsatzFr:= NVL(TO_NUMBER(p_SONSTFREI,Loc_NLSBetr,Loc_NLSWert),0) * m_Faktor;
m_ErlSchmal := NVL(TO_NUMBER(p_ERLSCHMAL,Loc_NLSBetr,Loc_NLSWert),0) * m_Faktor;
IF p_MWSTFREI='W'
THEN m_SonstUmsatzFr:=m_SonstUmsatz;
m_SonstUmsatz :=0.0;
END IF;
IF my_OP IN ('0','1')
THEN m_ErlSchmal := m_ErlSchmal * p_ERLPARAM;
END IF;
IF p_BRUTTO='W'
THEN m_VermUmsatz := round((m_VermUmsatz / ((my_mwstmiet + 100) / 100))*100)/100;
m_KmUmsatz := round((m_KmUmsatz / ((my_mwstmiet + 100) / 100))*100)/100;
m_ErlSchmal := round((m_ErlSchmal / ((my_mwstmiet + 100) / 100))*100)/100;
m_CDWUmsatz := round((m_CDWUmsatz / ((my_mwstverscdw + 100) / 100))*100)/100;
m_PAIUmsatz := round((m_PAIUmsatz / ((my_mwstverspai + 100) / 100))*100)/100;
m_TRPUmsatz := round((m_TRPUmsatz / ((my_mwstverstp + 100) / 100))*100)/100;
m_KraftUmsatz := round((m_KraftUmsatz / ((my_mwstkraft + 100) / 100))*100)/100;
m_BetankUmsatz:= round((m_BetankUmsatz/ ((my_mwstsonst + 100) / 100))*100)/100;
m_SonstUmsatz := round((m_SonstUmsatz / ((my_mwstsonst + 100) / 100))*100)/100;
END IF;
RECHNTOOLS.DoReZubehor(p_HDLNR => p_HDLNR,
p_RECHART => 'R',
p_RECHNR => my_RechNr,
p_TAGE => 0,
p_BBEGINN => Rec_Auftrag.BBEGINN,
p_BENDE => Rec_Auftrag.BENDE,
p_SUMME => m_ZubUmsatz,
p_SUMMEDL => m_DlUmsatz,
p_SUMMEFR => m_ZubUmsatzFr,
p_SUMMEDLFR=> m_DlUmsatzFr);
-- m_ZubUmsatz :=m_ZubUmsatz * m_Op;
-- m_DlUmsatz :=m_DlUmsatz * m_Op;
-- m_ZubUmsatzFr:=m_ZubUmsatzFr * m_Op;
-- m_DlUmsatzFr :=m_DlUmsatzFr * m_Op;
IF p_FUNC='14'
THEN SELECT ZWIRECH
INTO m_ZwiRech
FROM RECHNUNG
WHERE HDLNR =p_HDLNR AND
RECHNR =p_SPLITURRG AND
RECHART=p_SPLITURART;
END IF;
IF p_FUNC='14' AND
my_SpProz>0
THEN SELECT VERMUMSATZ, KMUMSATZ, VERSUMSATZCDW, VERSUMSATZPAI, VERSUMSATZTP, KRAFTUMSATZ, BETANKUMSATZ,
SONSTUMSATZ+DLUMSATZ+ZUBUMSATZ, SONSTUMSATZFREI+DLUMSATZFREI+ZUBUMSATZFREI,
ERLSCHMAL, ERLSCHMAL1, ERLSCHMAL2
INTO m_VermUmsatz, m_KmUmsatz, m_CDWUmsatz, m_PAIUmsatz, m_TRPUmsatz, m_KraftUmsatz, m_BetankUmsatz,
m_SonstUmsatz, m_SonstUmsatzFr,
m_ErlSchmal, m_ErlSchmal1, m_ErlSchmal2
FROM RECHNUNG
WHERE HDLNR =p_HDLNR AND
RECHNR =p_SPLITURRG AND
RECHART=p_SPLITURART;
m_VermUmsatz := m_VermUmsatz / 100 * my_SpProz;
m_KmUmsatz := m_KmUmsatz / 100 * my_SpProz;
m_ErlSchmal := m_ErlSchmal / 100 * my_SpProz;
m_ErlSchmal1 := m_ErlSchmal1 / 100 * my_SpProz;
m_ErlSchmal2 := m_ErlSchmal2 / 100 * my_SpProz;
m_CDWUmsatz := m_CDWUmsatz / 100 * my_SpProz;
m_PAIUmsatz := m_PAIUmsatz / 100 * my_SpProz;
m_TRPUmsatz := m_TRPUmsatz / 100 * my_SpProz;
m_KraftUmsatz := m_KraftUmsatz / 100 * my_SpProz;
m_BetankUmsatz := m_BetankUmsatz / 100 * my_SpProz;
m_SonstUmsatz := m_SonstUmsatz / 100 * my_SpProz;
m_SonstUmsatzFr:= m_SonstUmsatzFr/ 100 * my_SpProz;
m_ErlSchmal := m_ErlSchmal+m_ErlSchmal1+m_ErlSchmal2;
my_Op:='7d'; -- R�ckkehr wie Debitor manuell
END IF;
-- Rabatt herausrechnen
-- IF m_Rabatt=0
-- THEN m_ErlSchmal := 0.0;
-- ELSE m_ErlSchmal := (m_VermUmsatz + m_KmUmsatz) / 100 * m_RABATT;
-- m_VermUmsatz:=m_VermUmsatz - (m_VermUmsatz / 100 * m_RABATT);
-- m_KmUmsatz :=m_KmUmsatz - (m_KmUmsatz / 100 * m_RABATT);
-- END IF;
--
m_ReSumme:=m_VermUmsatz +
m_KmUmsatz -
m_ErlSchmal +
m_CDWUmsatz +
m_PAIUmsatz +
m_TRPUmsatz +
m_KraftUmsatz +
m_BetankUmsatz +
m_SonstUmsatz +
m_SonstUmsatzFr +
m_ZubUmsatz +
m_DlUmsatz +
m_ZubUmsatzFr +
m_DlUmsatzFr +
Schnittstellen.KaufRND((m_VermUmsatz+m_KmUmsatz-m_ErlSchmal) / 100 * my_mwstmiet)+
Schnittstellen.KaufRND(m_CDWUmsatz / 100 * my_mwstverscdw) +
Schnittstellen.KaufRND(m_PAIUmsatz / 100 * my_mwstverspai) +
Schnittstellen.KaufRND(m_TRPUmsatz / 100 * my_mwstverstp) +
Schnittstellen.KaufRND(m_KraftUmsatz / 100 * my_mwstkraft) +
Schnittstellen.KaufRND(m_BetankUmsatz / 100 * my_mwstsonst) +
Schnittstellen.KaufRND(m_SonstUmsatz / 100 * my_mwstsonst) +
Schnittstellen.KaufRND(m_ZubUmsatz / 100 * my_mwstsonst) +
Schnittstellen.KaufRND(m_DLUmsatz / 100 * my_mwstsonst);
-- Plausi
IF Xtool.GetPlausi(17,p_HdlNr,pl_LCode,pl_VONDATUM,pl_DELTAWERT,pl_MAXWERT,pl_MINWERT) THEN
IF ABS(m_VermUmsatz) > pl_MAXWERT THEN my_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietgula',1,''); END IF;
END IF;
IF Xtool.GetPlausi(18,p_HdlNr,pl_LCode,pl_VONDATUM,pl_DELTAWERT,pl_MAXWERT,pl_MINWERT) THEN
IF ABS(m_KmUmsatz) > pl_MAXWERT THEN my_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietgula',2,''); END IF;
END IF;
IF Xtool.GetPlausi(19,p_HdlNr,pl_LCode,pl_VONDATUM,pl_DELTAWERT,pl_MAXWERT,pl_MINWERT) THEN
IF ABS(m_CDWUmsatz) > pl_MAXWERT THEN my_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietgula',3,''); END IF;
END IF;
IF Xtool.GetPlausi(20,p_HdlNr,pl_LCode,pl_VONDATUM,pl_DELTAWERT,pl_MAXWERT,pl_MINWERT) THEN
IF ABS(m_PAIUmsatz) > pl_MAXWERT THEN my_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietgula',4,''); END IF;
END IF;
IF Xtool.GetPlausi(21,p_HdlNr,pl_LCode,pl_VONDATUM,pl_DELTAWERT,pl_MAXWERT,pl_MINWERT) THEN
IF ABS(m_TrpUmsatz) > pl_MAXWERT THEN my_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietgula',5,''); END IF;
END IF;
IF Xtool.GetPlausi(22,p_HdlNr,pl_LCode,pl_VONDATUM,pl_DELTAWERT,pl_MAXWERT,pl_MINWERT) THEN
IF ABS(m_KraftUmsatz) > pl_MAXWERT THEN my_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietgula',6,''); END IF;
END IF;
IF Xtool.GetPlausi(23,p_HdlNr,pl_LCode,pl_VONDATUM,pl_DELTAWERT,pl_MAXWERT,pl_MINWERT) THEN
IF ABS(m_SonstUmsatz) > pl_MAXWERT THEN my_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietgula',7,''); END IF;
END IF;
IF Xtool.GetPlausi(23,p_HdlNr,pl_LCode,pl_VONDATUM,pl_DELTAWERT,pl_MAXWERT,pl_MINWERT) THEN
IF ABS(m_SonstUmsatzFr) > pl_MAXWERT THEN my_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietgula',7,''); END IF;
END IF;
IF Rec_Rechnung.ARVATOTRANSTOKEN IS NOT NULL AND
p_Zahlungsart='2'
THEN IF Rec_Rechnung.KRDBETRAG<m_ReSumme*-1.0--NOT CheckKreditkarten(loc_RechNr => Rec_Rechnung.RECHNR)
THEN my_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietgula',13,'('||TO_CHAR(Rec_Rechnung.KRDBETRAG,Loc_NLSBetr,Loc_NLSWert)||')');
END IF;
END IF;
IF LENGTH(my_ERRORTEXT)>0
THEN my_OP:='E';
END IF;
-- ende Plausi
IF my_OP='0'
THEN GetNewRechNr;
ELSE SELECT ERLMOBI, ERLINTERN, VTRKONTO, ZAHLTAG, SEPATAGE
INTO my_erlmobi, my_erlintern, m_VtrKonto, my_ZahlTag, my_SepaZahlTag
FROM FIRMA
WHERE HDLNR=p_HDLNR;
IF p_ZAHLUNGSART IN ('50','51')
THEN my_RechArt:='L';
ELSE my_RechArt:='R';
END IF;
END IF;
IF NVL(my_KdZahlTag,0)>0
THEN my_ZahlTag:=my_KdZahlTag;
END IF;
IF my_Einzug='W' AND
NVL(my_SepaZahlTag,0)>0 AND
my_KdSepaDatum IS NOT NULL AND
my_KdSepaDatum<=SYSDATE
THEN my_ZahlTag:=my_SepaZahlTag;
END IF;
GetKontierung;
IF m_Debitor IS NOT NULL AND
p_Op IN ('7d','9d','14d')
THEN BEGIN
SELECT STEUERNR
INTO my_SteuerNr
FROM ADRESSEN
WHERE HDLNR=p_HDLNR
AND ART ='K'
AND NUMMER=m_Debitor;
EXCEPTION WHEN OTHERS THEN my_SteuerNr:=NULL;
END;
BEGIN
SELECT EGSTEUER
INTO my_EgSteuer
FROM ADRESSEN
WHERE HDLNR=p_HDLNR
AND ART ='K'
AND NUMMER=m_Debitor;
EXCEPTION WHEN OTHERS THEN my_EgSteuer:=NULL;
END;
END IF;
INSERT INTO RECHADR
(HDLNR, RECHNR, RECHART, DEBITOR, PRIVAT, ANREDE, NAME1, NAME2, NAME3,
STRASSE, HAUSNR, STRASSE2, PLZ, ORT, ORTSTEIL, LAND, EGSTEUER, STEUERNR, MITMWST, KOSTENSTELLE)
VALUES
(p_HDLNR, my_rechnr, my_RechArt, m_Debitor, m_PRIVAT, m_ANREDE, m_NAME1, m_NAME2, m_NAME3,
m_STR, m_HausNr, m_STR2, m_PLZ, m_Ort, m_OrtTl, m_Land, my_EGSTEUER, my_STEUERNR, m_MwStSL, m_KST);
m_error:='2';
-- my_erlmiet:=Rec_rechnung.vermkonto;
IF SUBSTR(rec_auftrag.TARIFTYP,2,2)='08'
THEN my_erlmiet:=my_erlmobi;
my_erlkm :=my_erlmobi;
END IF;
IF p_FUNC='7' AND -- Gutschrift
Rec_Rechnung.AUFTRNR IS NOT NULL
THEN my_erlmiet :=Rec_Rechnung.vermkonto;
my_erlkm :=Rec_Rechnung.kmkonto;
my_erlkraft :=Rec_Rechnung.kraftkonto;
my_erlbetank :=Rec_Rechnung.betankkonto;
my_erlsonst :=Rec_Rechnung.sonstkonto;
my_erlsonstfrei :=Rec_Rechnung.sonstkontofrei;
my_erlvers :=Rec_Rechnung.verskonto;
ELSE IF p_ZAHLUNGSART='4'
THEN my_erlmiet :=my_erlintern;
my_erlkm :=my_kmintern;
my_erlkraft :=my_kraftintern;
my_erlbetank :=my_betankintern;
my_erlsonst :=my_sonstintern;
my_erlsonstfrei :=my_sonstintern;
my_erlvers :=my_versintern;
END IF;
END IF;
-- Ausssies: Vertragssteuer pr�fen und ggf setzen
IF (SUBSTR(my_konzernzugr,5,2)='05') AND
(m_Faktor>0) AND
(m_mitmwst<>'F')
THEN getVertragsSteuer;
END IF;
-- Ausssies: Vertragssteuer pr�fen und ggf setzen ENDE
-- Provision nach Basiskennzeichnen errechnen
IF m_BASIS=1
THEN m_PROVBASIS := m_VermUmsatz+m_KmUmsatz-m_ErlSchmal;
END IF;
IF m_BASIS=2
THEN m_PROVBASIS := m_VermUmsatz+m_KmUmsatz-m_ErlSchmal+
m_PaiUmsatz+m_CDWUmsatz+m_TrpUmsatz;
END IF;
IF m_BASIS=3
THEN m_PROVBASIS := m_VermUmsatz+m_KmUmsatz-m_ErlSchmal+
m_PaiUmsatz+m_CDWUmsatz+m_TrpUmsatz+
m_KraftUmsatz + m_BetankUmsatz + m_SonstUmsatz+ m_SonstUmsatzFr;
END IF;
--
IF Rec_FirmaKto.USESKR='W' THEN
my_Ak:=10;
IF m_PRIVAT='F'
THEN my_Ak:=20;
END IF;
END IF;
my_AkFv:=my_Ak;
IF p_AUFTRNR IS NULL --FreieRechnung
THEN BEGIN
SELECT KSTSTELLE, GESCHBEREICH
INTO Rec_Rechnung.KSTFIL, Rec_Rechnung.GESCHBEREICH
FROM PARTNER
WHERE HDLNR=p_HDLNR
AND NR =SUBSTR(p_HDLNR,1,3) || ';' || SUBSTR(p_HDLNR,4,5) || ';' || p_FILNR;
EXCEPTION
WHEN OTHERS THEN Rec_Rechnung.KSTFIL:=0;
END;
Rec_Rechnung.ERLKONTO :=my_ErlMiet;
Rec_Rechnung.ERLKONTO1:=my_ErlSchmal1;
Rec_Rechnung.ERLKONTO2:=my_ErlSchmal2;
Rec_Rechnung.KTOMWST :=my_KtoMwst;
Rec_Rechnung.KTOMWST2 :=my_KtoMwst2;
END IF;
IF SUBSTR(my_RefRechNr,1,1)='-'
THEN my_RefRechNr :=NULL;
my_RefRechArt:=NULL;
END IF;
IF Rec_Rechnung.MVART IN ('MV1','MV4')
THEN IF p_RECHTYP IS NULL
THEN m_StatusExtern:=0;
ELSE Rec_Rechnung.MVART:=NULL; -- keine �ertragung von OWI/Schaden an FS-AG
END IF;
END IF;
INSERT INTO RECHNUNG
(HDLNR, FILNR, RECHNR, GUTLAST, ZWIRECH, RECHART, AUFTRNR, DEBITOR, RDATUM, ZAHLBED,
VERMITTLER, PROVBASIS, PROVSATZ, PROVKONTO,
VERMUMSATZ, KMUMSATZ, RABATT, RABATTZL, VERMMWST, ERLSCHMAL, ERLSCHMAL1, ERLSCHMAL2, ERLMWST,
ERLKONTO, ERLKONTO1, ERLKONTO2, VERMKONTO, KMKONTO,
VERSUMSATZPAI, VERSMWSTPAI, VERSUMSATZCDW, VERSMWSTCDW, VERSUMSATZTP,
VERSMWSTTP, VERSKONTO, KRAFTUMSATZ, KRAFTMWST, KRAFTKONTO, BETANKUMSATZ, BETANKKONTO, SONSTUMSATZ, SONSTUMSATZFREI,
ZUBUMSATZ, DLUMSATZ, ZUBUMSATZFREI, DLUMSATZFREI,
SONSTMWST, SONSTKONTO, SONSTKONTOFREI, BERKM, GEFKM, GEZAHLT, ZAHLWEG, KSTSTELLE, KSTFIL,
BEMERKUNG1, BEMERKUNG2, BEMERKUNG3, BEMERKUNG4, BEMERKUNG5, BEMERKUNG6, FIBU, PROV,
BANFANG, BENDE, MANFANG, MENDE, TARIFTYP, TARIFTYPS, TARIFBEZ, ERFHDLNR, ERFUSER,
RGKLASSE, MVKLASSE, FZKLASSE, FZSTAT, FZOWNERHDLNR, RGTARIFFZART, RGFZTARIFAUS,
GKREF, GKGRP, AUSLAGENTEXT, REFRECHNR, REFRECHART, ABWRECH, LITER, SORTE, KTOMWST, KTOMWST2, UNFALLERSATZ,
VTRSTEUER, VTRBETRAG, VTRKONTO, AUFHDLNR,
AUFTRNREXT,GESCHBEREICH, MWSTSL, FREE2GO,
MK,ST,KST,AK,KT,MKA,STA,KSTA,AKA,KTA,MKFV,STFV,KSTFV,AKFV,KTFV,UST,KSTMOBI,ZAHLTAG,
SPLITRECHNR, SPLITRECHART,SPLITDEBITOR,SPLITREFRECHNR,SPLITREFRECHART,LFSSAMMEL,
ARVATOPAYTOKEN,ARVATOTRANSTOKEN,
RECHTYP, RECHMEMO, MVART, STATUSEXTERN, TRFMANUELL)
VALUES (p_HDLNR,p_FILNR,my_rechnr, 'W', m_ZwiRech, my_RechArt, p_AUFTRNR, m_DEBITOR, XTool.GetSysDate(p_HDLNR), p_ZAHLUNGSART,
p_VERMITTLER, m_ProvBasis, m_ProvSatz, my_ProvKonto,
m_VermUmsatz,m_KmUmsatz,0.0,0,my_mwstmiet,m_ErlSchmal,0.0,0.0,my_mwstmiet,
Rec_Rechnung.erlkonto,Rec_Rechnung.erlkonto1,Rec_Rechnung.erlkonto2,my_erlmiet, my_erlkm,
m_PAIUmsatz,my_mwstverspai,m_CDWUmsatz,my_mwstverscdw,m_TrpUmsatz,
my_mwstverstp,my_erlvers,m_KraftUmsatz,my_mwstkraft,my_erlkraft,m_BetankUmsatz,my_erlbetank,m_SonstUmsatz,m_SonstUmsatzFr,
m_ZubUmsatz, m_DlUmsatz,m_ZubUmsatzFr, m_DlUmsatzFr,
my_mwstsonst,my_erlsonst,my_erlsonstfrei, 0,0,m_resumme,p_ZAHLUNGSART,m_KST, Rec_Rechnung.KSTFIL,
my_BEMERKUNG21,my_BEMERKUNG22,my_BEMERKUNG23,my_BEMERKUNG24,my_BEMERKUNG25,my_BEMERKUNG26,'F','F',
TO_DATE(TO_CHAR(Rec_Auftrag.BBEGINN,Loc_NLSDate) || TO_CHAR(Rec_Auftrag.BBUHR,Loc_NLSTime),Loc_NLSDate||Loc_NLSTime),
TO_DATE(TO_CHAR(Rec_Auftrag.BENDE,Loc_NLSDate) || TO_CHAR(Rec_Auftrag.BEUHR,Loc_NLSTime),Loc_NLSDate||Loc_NLSTime),
TO_DATE(TO_CHAR(Rec_Auftrag.MBEGINN,Loc_NLSDate) || TO_CHAR(Rec_Auftrag.MBUHR,Loc_NLSTime),Loc_NLSDate||Loc_NLSTime),
TO_DATE(TO_CHAR(Rec_Auftrag.MENDE,Loc_NLSDate) || TO_CHAR(Rec_Auftrag.MEUHR,Loc_NLSTime),Loc_NLSDate||Loc_NLSTime),
Rec_RECHNUNG.TARIFTYP,Rec_Rechnung.TARIFTYPS,Rec_Rechnung.TARIFBEZ,p_HDLNR,NVL(p_USERNR,0),
rec_Auftrag.BERECHGRP,rec_Auftrag.BERECHGRP,my_FZKLASSE, my_FZSTAT, my_FZOWNER, rec_Auftrag.FZTARIFFZART, rec_Auftrag.FZTARIFAUS,
m_GkRef,m_Privat, p_AUSLAGENTEXT, my_RefRechNr, my_RefRechArt, substr(p_ABWRECH,1,60), TO_NUMBER(p_LITER,'999D99',Loc_NLSWert)*m_Faktor, p_SORTE, Rec_rechnung.ktomwst,Rec_rechnung.ktomwst2, Rec_Rechnung.UNFALLERSATZ,
m_VertrSatz, m_VertrBetr, m_VtrKonto, Rec_Auftrag.HDLNR,
Rec_rechnung.AUFTRNREXT, Rec_Rechnung.GESCHBEREICH, m_MwStSL, my_F2GO,
my_MK,my_ST,my_KST,my_AK,my_KT,my_MKA,my_STA,my_KSTA,my_AKA,my_KTA,my_MKFV,my_STFV,my_KSTFV,my_AKFV,my_KTFV,my_UST,my_KSTMOBI,my_ZahlTag,
p_SPLITURRG, p_SPLITURART, p_SPLITDEBITOR, p_SPLITURRG, p_SPLITURART,'W',
Rec_Rechnung.ARVATOPAYTOKEN,Rec_Rechnung.ARVATOTRANSTOKEN,
p_RECHTYP, p_RECHMEMO, Rec_Rechnung.MVART, m_StatusExtern, Rec_Auftrag.MANUELL);
-- IF p_FUNC='9' -- Lastschrift, neue Transaktion. Bei Gutschrift, Verweis auf alte Transaktion
-- THEN UPDATE RECHNUNG
-- SET ARVATOTRANSTOKEN = NULL
-- WHERE HDLNR = p_HDLNR
-- AND RECHNR = my_Rechnr
-- AND RECHART = my_RechArt;
-- END IF;
IF p_Zahlungsart='2' AND
NVL(m_CashTyp,0)=0
THEN UPDATE RECHNUNG
SET KRDBANK = p_KRDBANK,
KRDNR = p_KRDGENNR,
KRDBETRAG= m_ReSumme
WHERE HDLNR = p_HDLNR
AND RECHNR = my_Rechnr
AND RECHART = my_RechArt;
--IF p_KRDGENNR IS NULL
-- THEN m_ERRORTEXT:='* ' || Xtool.OutMeldung(p_HDLNR,'mietgula',14,'');
-- m_FUNC:='E';
-- END IF;
END IF;
IF my_OP='0' -- Fertig, speichern und Auswahl
THEN AUFTRTOOLS.DoBuchKasse(p_HDLNR,p_FILNR,p_USERNR,p_ZAHLUNGSART,p_AUFTRNR,my_rechnr,m_DEBITOR,m_Name2 || ', ' || m_Name1,
m_resumme,p_HDLNR);
END IF;
m_error:='4';
-- htp.p(p_func); return;
-- Zubeh�r pflegen
IF SUBSTR(my_OP,1,1)='-' -- l�schen Zubeh�r
THEN DELETE FROM RECHZUB
WHERE HDLNR =p_HDLNR AND
RECHNR =my_RECHNR AND
NR =SUBSTR(my_OP,2,5);
my_OP:='4';
END IF;
IF SUBSTR(my_OP,1,2)='+P' -- Pauschalpreis, Bezeichnung
THEN BEGIN
IF p_FUNC='7'-- Gutschrift
THEN m_Faktor:=-1;
END IF;
UPDATE RECHZUB SET
PREIS = TO_NUMBER(NVL(p_PPAUSCHAL,0),'9999D99',Loc_NLSWert)*m_Faktor,
PAUSCHAL = 'W'
WHERE HDLNR =p_HDLNR AND
RECHNR =my_RECHNR AND
NR =SUBSTR(my_OP,3,5);
IF p_PBEZ IS NOT NULL THEN
UPDATE RECHZUB SET
BEZEICHNUNG = p_PBEZ
WHERE HDLNR =p_HDLNR AND
RECHNR =my_RECHNR AND
NR =SUBSTR(my_OP,3,5);
END IF;
my_OP:='4';
EXCEPTION
WHEN OTHERS THEN my_OP:='4';
END;
END IF;
-- Zubeh�r pflegen ende
IF my_OP='0'
THEN UPDATE RECHZUBPOS
SET RECHNR =my_RechNr,
RECHART =my_RechArt
WHERE HDLNR =p_HDLNR AND
RECHNR ='-'||p_USERNR;
UPDATE RECHZUB
SET RECHNR =my_RechNr,
RECHART=my_RechArt
WHERE HDLNR =p_HDLNR AND
RECHNR ='-'||p_USERNR;
END IF;
COMMIT;
IF my_OP='0' AND
p_FUNC='14'
THEN MakeOrgRechnung;
END IF;
IF my_OP='0' -- Fertig, speichern und Auswahl
THEN XTOOL.SavePdfArchiv(p_HDLNR,p_FILNR,p_USERNR,p_HDLNR,NULL,0,my_RechArt,my_RechNr);
IF (p_Zahlungsart='2') AND
(NVL(m_CashTyp,0)>0)-- AND
--(m_ReSumme>0.0)
THEN ZAHLUNG.OpenZahlWeg(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_KENNUNG=> Rec_Auftrag.KENNUNG,
p_AUFTRNR=> NVL(Rec_Auftrag.AUFTRNR,0),
p_RECHNR => my_RechNr,
p_BETRAG => m_ReSumme,
p_FUNC => ZAHLUNG.c_GutLast);
ELSE IF p_SILENT='W'
THEN RETURN;
ELSE ShowRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, my_RECHNR, my_RechArt, p_USERNR, 'rechprint');
END IF;
END IF;
END IF;
IF my_OP='1' -- Icon Vorschau
THEN ShowRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, my_RECHNR, my_RechArt, p_USERNR, 'drcgula',' ',p_FUNC,' ');
END IF;
IF my_OP='4' -- Zubeh�r gepflegt
THEN ShowRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, my_RECHNR, my_RechArt, p_USERNR, 'mietgula',' ',p_FUNC,' ','','3');
END IF;
IF my_OP='5'-- Zubeh�r
THEN IF p_FUNC='7'
THEN Zubehor.ZUBLISTE(p_HDLNR,p_FILNR,p_USERNR,'G',NULL,NULL,'4');
ELSE Zubehor.ZUBLISTE(p_HDLNR,p_FILNR,p_USERNR,'L',NULL,NULL,'4');
END IF;
END IF;
/* IF my_OP='7' -- Icon Suche Kunden f�r Gu/La
THEN IF p_FUNC='9'
THEN Kunden.KDNLISTE(p_HDLNR, p_FILNR, p_USERNR,NULL,NULL,NULL,NULL,'K',p_FUNC,'P','F');
ELSE ShowRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, my_RECHNR, my_RechArt, p_USERNR, 'mietgula',' ',p_FUNC,' ','* ' || Xtool.OutMeldung(p_HDLNR,'mietgula',8,''),'1');
END IF;
END IF;*/
IF my_OP IN ('7','9') -- Icon Suche Kunden f�r Gu/La
THEN Kunden.KDNLISTE(p_HDLNR, p_FILNR, p_USERNR,NULL,NULL,NULL,NULL,'K',p_FUNC,'P','F');
END IF;
IF my_OP='E' -- KdDaten nicht komplett, Kreditkarte zu wenig
THEN IF p_FUNC='7'
THEN UPDATE RECHNUNG
SET VERMUMSATZ =VERMUMSATZ * -1.0,
KMUMSATZ =KMUMSATZ * -1.0,
VERSUMSATZCDW =VERSUMSATZCDW * -1.0,
VERSUMSATZPAI =VERSUMSATZPAI * -1.0,
VERSUMSATZTP =VERSUMSATZTP * -1.0,
KRAFTUMSATZ =KRAFTUMSATZ * -1.0,
BETANKUMSATZ =BETANKUMSATZ * -1.0,
LITER =LITER * -1.0,
SONSTUMSATZ =SONSTUMSATZ * -1.0,
SONSTUMSATZFREI=SONSTUMSATZFREI * -1.0--,
--ERLSCHMAL =ERLSCHMAL * my_Op
WHERE HDLNR =p_HDLNR
AND RECHNR =my_RechNr
AND RECHART=my_RechArt;
END IF;
IF p_FUNC='9' -- Lastschrift R�cksprung
THEN UPDATE RECHNUNG
SET ERLSCHMAL =ERLSCHMAL * -1.0
WHERE HDLNR =p_HDLNR
AND RECHNR =my_RechNr
AND RECHART=my_RechArt;
END IF;
COMMIT;
IF p_FUNC='14'
THEN ShowRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, my_RECHNR, my_RechArt, p_USERNR, 'rechsplit',' ',p_FUNC,' ',my_ErrorText,'1');
ELSE ShowRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, my_RECHNR, my_RechArt, p_USERNR, 'mietgula',' ',p_FUNC,' ',my_ErrorText,'1');
END IF;
END IF;
IF my_OP='7a' -- Icon Suche Kunde ABW
THEN Kunden.KDNLISTE(p_HDLNR, p_FILNR, p_USERNR,NULL,NULL,NULL,NULL,'K',p_FUNC || 'a','P','F');
END IF;
IF my_OP='7b' -- Icon Suche Versicherung ABW
THEN Kunden.KDNLISTE(p_HDLNR, p_FILNR, p_USERNR,NULL,NULL,NULL,NULL,'V',p_FUNC || 'b','P','F');
END IF;
IF my_OP='7c' -- Icon Suche Vermittler ABW
THEN Kunden.KDNLISTE(p_HDLNR, p_FILNR, p_USERNR,NULL,NULL,NULL,NULL,'M',p_FUNC || 'c','P','F');
END IF;
IF my_OP='7d' or-- Debitor manuell erfasst, oder Proz-Split
my_OP='9d'
THEN IF p_FUNC='14'
THEN ShowRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, my_RECHNR, my_RechArt, p_USERNR, 'rechsplit',' ',p_FUNC,' ');
ELSE ShowRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, my_RECHNR, my_RechArt, p_USERNR, 'mietgula',' ',p_FUNC,' ');
END IF;
-- THEN KdInGula(p_HDLNR, p_FILNR, p_USERNR, '', '', '',NULL,p_FUNC,'',NULL,my_ERRORTEXT);
END IF;
IF my_OP='8' -- Icon Suche Bemerkung
THEN Bemerkung.BEMLISTE(p_HDLNR,p_FILNR,p_USERNR,'F',NULL,NULL,NULL,p_FUNC,my_RechArt);
END IF;
IF my_OP='8t' -- StdText geladen
THEN IF p_FUNC='14'
THEN ShowRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, my_RECHNR, my_RechArt, p_USERNR, 'rechsplit',' ',p_FUNC,' ','','2');
ELSE ShowRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, my_RECHNR, my_RechArt, p_USERNR, 'mietgula',' ',p_FUNC,' ','','2');
END IF;
END IF;
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END ErfGula;
/******************************************************************************
NAME: Rechnungen.KdnInGula
PURPOSE: GuLa, Kunde ablegen, neue Rechnungsanschrift
Date: 10.07.2003
*******************************************************************************/
PROCEDURE KdInGuLa ( p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_AUFART VARCHAR2,
p_KENNUNG VARCHAR2,
p_AUFTRNR VARCHAR2,
p_FNR VARCHAR2 DEFAULT NULL,
p_FUNC VARCHAR2, -- 7=Gutschrift, 9=Lastschrift plus abc f�r ABWRECH
p_ART VARCHAR2,
p_NUMMER VARCHAR2 DEFAULT NULL,
p_ERRORTEXT VARCHAR2 DEFAULT NULL,
x INTEGER DEFAULT NULL,
y INTEGER DEFAULT NULL) IS
Rec_Auftrag AUFTRAG%ROWTYPE;
Rec_Rechnung RECHNUNG%ROWTYPE;
Rec_Rechadr RECHADR%ROWTYPE;
my_ProgName VARCHAR2(20):='KdInGula';
my_Op FLOAT :=1.0;
my_NUMMER VARCHAR2(12) := p_NUMMER;
my_Typ VARCHAR2(1);
my_NAME1 VARCHAR2(40);
my_NAME2 VARCHAR2(40);
my_NAME3 VARCHAR2(40);
my_STRASSE VARCHAR2(30);
my_HAUSNR VARCHAR2(10);
my_STRASSE2 VARCHAR2(30);
my_PLZ VARCHAR2(10);
my_ORT VARCHAR2(30);
my_STEUERNR VARCHAR2(20);
my_EGSTEUER VARCHAR2(20);
my_ABW VARCHAR2(200);
my_FzBez VARCHAR2(50);
my_KONZERNZUGR VARCHAR(12);
mya_NAME1 VARCHAR2(40);
mya_NAME2 VARCHAR2(40);
mya_ORT VARCHAR2(30);
my_KST FLOAT;
my_error VARCHAR2(1) := '0';
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
Loc_NLSTime VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,2);
Loc_NLSWert VARCHAR2(30):=Xtool.GetNLS(p_HDLNR,3);
Loc_NLSBetrT VARCHAR2(12):=Xtool.GetNLS(p_HDLNR,6);
Loc_NLSBetr VARCHAR2(12):=Xtool.GetNLS(p_HDLNR,7);
BEGIN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin(p_HDLNR => p_HDLNR);
RETURN;
END IF;
IF SUBSTR(p_FUNC,1,1)='7' -- Gutschrift;
THEN my_Op:=-1.0;
END IF;
my_error:='1';
SELECT *
INTO Rec_Rechnung
FROM RECHNUNG
WHERE HDLNR =p_HDLNR AND
RECHNR =TO_NUMBER(p_USERNR) * -1.0;
my_ABW :=Rec_Rechnung.ABWRECH;
IF rec_Rechnung.AUFTRNR IS NOT NULL
THEN SELECT *
INTO Rec_Auftrag FROM AUFTRAG
WHERE HDLNR =p_HDLNR
AND AUFTRNR=Rec_Rechnung.AUFTRNR;
END IF;
my_KST:=Rec_Auftrag.KOSTENSTELLE;
BEGIN
SELECT BEZEICHNUNG
INTO my_FzBez
FROM FAHRZEUG
WHERE FAHRGESTELL=Rec_Auftrag.FAHRGESTELL AND
ZULASSUNG =Rec_Auftrag.ZULASSUNG;
EXCEPTION
WHEN OTHERS THEN my_FzBez:=NULL;
END;
SELECT *
INTO Rec_Rechadr
FROM RECHADR
WHERE HDLNR =p_HDLNR AND
RECHNR =Rec_Rechnung.RECHNR AND
RECHART=Rec_rechnung.RECHART;
my_NUMMER :=TO_CHAR(Rec_Rechnung.DEBITOR); -- kommt aus Vorschau
my_TYP :=Rec_RechAdr.PRIVAT;
my_NAME1 :=Rec_RechAdr.NAME1;
my_NAME2 :=Rec_RechAdr.NAME2;
my_NAME3 :=Rec_RechAdr.NAME3;
my_STRASSE :=Rec_RechAdr.STRASSE;
my_HAUSNR :=Rec_RechAdr.HAUSNR;
my_STRASSE2:=Rec_RechAdr.STRASSE2;
my_PLZ :=Rec_RechAdr.PLZ;
my_ORT :=Rec_RechAdr.ORT;
my_STEUERNR:=Rec_RechAdr.STEUERNR;
my_EGSTEUER:=Rec_RechAdr.EGSTEUER;
my_KST :=Rec_RechAdr.KOSTENSTELLE;
IF NVL(TO_NUMBER(p_NUMMER,'9999999999'),0)>0 -- Nummer �bergeben, aus Stamm holen
THEN IF p_FUNC IN('7','9','14') -- Debitor zuweisen
THEN BEGIN
SELECT TYP, NAME1, NAME2, NAME3, STRASSE, HAUSNR, STRASSE2, PLZ, ORT, STEUERNR, EGSTEUER, KST
INTO my_Typ, my_NAME1, my_NAME2, my_NAME3, my_STRASSE, my_HAUSNR, my_STRASSE2, my_PLZ, my_ORT,
my_STEUERNR, my_EGSTEUER, my_KST
FROM ADRESSEN
WHERE HDLNR = p_HDLNR AND
ART = 'K' AND
NUMMER = TO_NUMBER(p_NUMMER,'9999999999');
my_NUMMER := p_NUMMER;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
END IF;
IF p_FUNC='7a' OR p_FUNC='9a' -- Debitor ABW
THEN BEGIN
SELECT NAME1, NAME2, ORT
INTO mya_NAME1, mya_NAME2, mya_ORT
FROM ADRESSEN
WHERE HDLNR = p_HDLNR AND
ART = 'K' AND
NUMMER = TO_NUMBER(p_NUMMER,'9999999999');
my_ABW := mya_NAME1 || ' ' || mya_NAME2 || ', ' || mya_ORT;
EXCEPTION
WHEN OTHERS THEN my_ABW:='?';
END;
END IF;
IF p_FUNC='7b' OR p_FUNC='9b' -- Versicherung ABW
THEN BEGIN
SELECT NAME1, NAME2, ORT
INTO mya_NAME1, mya_NAME2, mya_ORT
FROM ADRESSEN
WHERE HDLNR = p_HDLNR AND
ART = 'V' AND
NUMMER = TO_NUMBER(p_NUMMER,'9999999999');
my_ABW := mya_NAME1 || ' ' || mya_NAME2 || ', ' || mya_ORT;
EXCEPTION
WHEN OTHERS THEN my_ABW:='?';
END;
END IF;
IF p_FUNC='7c' OR p_FUNC='9c' -- Vermittler ABW
THEN BEGIN
SELECT NAME1, NAME2, ORT
INTO mya_NAME1, mya_NAME2, mya_ORT
FROM ADRESSEN
WHERE HDLNR = p_HDLNR AND
ART = 'M' AND
NUMMER = TO_NUMBER(p_NUMMER,'9999999999');
my_ABW :=mya_NAME1 || ' ' || mya_NAME2 || ', ' || mya_ORT;
EXCEPTION
WHEN OTHERS THEN my_ABW :='?';
END;
END IF;
END IF;
IF Rec_Rechnung.SPLITRECHNR IS NOT NULL
THEN ShowRech(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => Rec_Auftrag.HDLNR,
p_AFILNR => Rec_Auftrag.FILNR,
p_RECHNR => Rec_Rechnung.RECHNR,
p_RECHART => Rec_Rechnung.RECHART,
p_XSL => 'rechsplit',
p_FUNC => '14',
p_ERRORTEXT => p_ERRORTEXT);
ELSE ShowRech(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => Rec_Auftrag.HDLNR,
p_AFILNR => Rec_Auftrag.FILNR,
p_RECHNR => Rec_Rechnung.RECHNR,
p_RECHART => Rec_Rechnung.RECHART,
p_XSL => 'mietgula',
p_FUNC => p_FUNC,
p_ERRORTEXT => p_ERRORTEXT);
END IF;
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END KdInGuLa;
/******************************************************************************
NAME: Rechnungen.DlInFahrAuft
PURPOSE: Fahrauftrag, Ablage Dienstleister
Date: 24.06.2016
*******************************************************************************/
PROCEDURE DlInFahrauft(p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_ART VARCHAR2 DEFAULT NULL,
p_NUMMER VARCHAR2 DEFAULT NULL,
p_FUNC VARCHAR2 DEFAULT NULL,
p_ERRORTEXT VARCHAR2 DEFAULT NULL,
x INTEGER DEFAULT NULL,
y INTEGER DEFAULT NULL) IS
my_ProgName VARCHAR2(20):='DlInFahrauft';
my_NUMMER VARCHAR2(12) := p_NUMMER;
my_Typ VARCHAR2(1);
my_NAME1 VARCHAR2(40);
my_NAME2 VARCHAR2(40);
my_NAME3 VARCHAR2(40);
my_error VARCHAR2(1) := '0';
BEGIN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin(p_HDLNR => p_HDLNR);
RETURN;
END IF;
IF NVL(TO_NUMBER(p_NUMMER,'9999999999'),0)>0 -- Nummer �bergeben, aus Stamm holen
THEN BEGIN
SELECT NAME1, NAME2, NAME3
INTO my_NAME1, my_NAME2, my_NAME3
FROM ADRESSEN
WHERE HDLNR = p_HDLNR
AND ART = 'F'
AND NUMMER = TO_NUMBER(p_NUMMER,'9999999999');
my_NUMMER := p_NUMMER;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
UPDATE GOBACKTBL
SET NUMMER=TO_NUMBER(p_NUMMER,'9999999999'),
NAME1 = my_Name1,
NAME2 = my_Name2,
NAME3 = my_Name3
WHERE HDLNR =p_HDLNR
AND USERNR=p_USERNR
AND FILNR =p_FILNR
AND LISTE =0;
ELSE UPDATE GOBACKTBL
SET NUMMER=NULL
WHERE HDLNR =p_HDLNR
AND USERNR=p_USERNR
AND FILNR =p_FILNR
AND LISTE =0;
END IF;
COMMIT;
GoBack.Sprung(p_HDLNR => p_HDLNR,
p_USERNR=> p_USERNR);
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END DlInFahrauft;
/******************************************************************************
NAME: Rechnungen.TxInGuLa
PURPOSE: Zuordnung Standardtext zu GuLa, anschlie�nd wieder GuLa editieren
Date: 05.01.2007
*******************************************************************************/
PROCEDURE TxInGuLa ( p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_AUFART VARCHAR2,
p_KENNUNG VARCHAR2,
p_AUFTRNR VARCHAR2,
p_FUNC VARCHAR2,
p_RECHART VARCHAR2,
p_NR VARCHAR2,
p_VFW VARCHAR2,
p_STOGRUND VARCHAR2 DEFAULT NULL,
x INTEGER,
y INTEGER) IS
Rec_Auftrag AUFTRAG%ROWTYPE;
Rec_Rechnung RECHNUNG%ROWTYPE;
Rec_Rechadr RECHADR%ROWTYPE;
my_ProgName VARCHAR2(20) :='TxInGula';
my_BEM1 VARCHAR2(60) :='';
my_BEM2 VARCHAR2(60) :='';
my_BEM3 VARCHAR2(60) :='';
my_BEM4 VARCHAR2(60) :='';
my_BEM5 VARCHAR2(60) :='';
my_BEM6 VARCHAR2(60) :='';
my_Typ VARCHAR2(1);
my_NAME1 VARCHAR2(40);
my_NAME2 VARCHAR2(40);
my_NAME3 VARCHAR2(40);
my_STRASSE VARCHAR2(30);
my_HAUSNR VARCHAR2(10);
my_STRASSE2 VARCHAR2(30);
my_PLZ VARCHAR2(10);
my_ORT VARCHAR2(30);
my_STEUERNR VARCHAR2(20);
my_EGSTEUER VARCHAR2(20);
my_FzBez VARCHAR2(50);
my_KST FLOAT;
m_konzernzugr VARCHAR2(8);
m_Land VARCHAR2(2);
my_Op FLOAT :=1.0;
HatReAdr BOOLEAN :=TRUE;
my_RechNr INTEGER:=NVL(p_USERNR,0) * -1;
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
Loc_NLSTime VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,2);
Loc_NLSWert VARCHAR2(30):=Xtool.GetNLS(p_HDLNR,3);
Loc_NLSBetr VARCHAR2(12):=Xtool.GetNLS(p_HDLNR,7);
BEGIN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin(p_HDLNR => p_HDLNR);
RETURN;
END IF;
IF p_FUNC='6'
THEN my_RechNr:=NVL(p_AUFTRNR,0);
END IF;
IF p_NR<>'-'
THEN BEGIN
SELECT TEXT1, TEXT2, TEXT3, TEXT4, TEXT5, TEXT6
INTO my_BEM1,my_BEM2,my_BEM3,my_BEM4,my_BEM5,my_BEM6
FROM BEMERK
WHERE HDLNR =p_HDLNR AND
NR =p_NR;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
UPDATE RECHNUNG
SET BEMERKUNG1 = my_BEM1,
BEMERKUNG2 = my_BEM2,
BEMERKUNG3 = my_BEM3,
BEMERKUNG4 = my_BEM4,
BEMERKUNG5 = my_BEM5,
BEMERKUNG6 = my_BEM6
WHERE HDLNR =p_HDLNR AND
RECHNR =my_RechNr AND
RECHART=p_RECHART;
COMMIT;
END IF;
CASE p_FUNC
WHEN '6' THEN ShowRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, my_RechNr, p_RECHART, p_USERNR, 'rechstnfrage',' ',p_FUNC,' ');
WHEN '14' THEN ShowRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, my_RechNr, p_RECHART, p_USERNR, 'rechsplit',' ',p_FUNC,' ');
ELSE ShowRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, my_RECHNR, p_RECHART, p_USERNR, 'mietgula',' ',p_FUNC,' ','','2');
END CASE;
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END TxInGuLa;
/******************************************************************************
NAME: Rechnungen.TxInZwi
PURPOSE: Zuordnung Standardtext zu Zwischenrechnung, anschlie�nd wieder ZwiRech editieren
Date: 17.05.2006
*******************************************************************************/
PROCEDURE TxInZwi ( p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_AUFART VARCHAR2,
p_KENNUNG VARCHAR2,
p_AUFTRNR VARCHAR2,
p_FUNC VARCHAR2,
p_NR VARCHAR2,
p_VFW VARCHAR2,
x INTEGER,
y INTEGER) IS
my_ProgName VARCHAR2(20) :='TxInZwi';
my_BEM1 VARCHAR2(40) :='';
my_BEM2 VARCHAR2(40) :='';
my_BEM3 VARCHAR2(40) :='';
my_BEM4 VARCHAR2(40) :='';
my_BEM5 VARCHAR2(40) :='';
my_BEM6 VARCHAR2(40) :='';
BEGIN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin(p_HDLNR => p_HDLNR);
RETURN;
END IF;
IF p_NR<>'-'
THEN BEGIN
SELECT TEXT1, TEXT2, TEXT3, TEXT4, TEXT5, TEXT6 INTO
my_BEM1,my_BEM2,my_BEM3,my_BEM4,my_BEM5,my_BEM6 FROM BEMERK
WHERE HDLNR =p_HDLNR AND
NR =p_NR;
EXCEPTION
WHEN INVALID_NUMBER THEN NULL;
WHEN OTHERS THEN NULL;
END;
UPDATE RECHNUNG SET
BEMERKUNG1 = my_BEM1,
BEMERKUNG2 = my_BEM2,
BEMERKUNG3 = my_BEM3,
BEMERKUNG4 = my_BEM4,
BEMERKUNG5 = my_BEM5,
BEMERKUNG6 = my_BEM6
WHERE HDLNR =p_HDLNR AND
RECHNR =TO_NUMBER(p_USERNR) * -1.0;
COMMIT;
END IF;
RECHNTOOLS.EditZwi(p_HDLNR,p_FILNR,p_USERNR);
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END TxInZwi;
/******************************************************************************
NAME: Rechnungen.ErfZwi
PURPOSE: Zwischenrechnung, Erfassung der Abrechnungsdaten
Date: 04.07.2005/19.05.2017
*******************************************************************************/
PROCEDURE ErfZwi (p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_KENNUNG VARCHAR2,
p_AUFTRNR VARCHAR2,
p_OP VARCHAR2,
p_ZAHLUNGSART VARCHAR2,
p_BENDE VARCHAR2,
p_BENDEUHR VARCHAR2,
p_BERKM VARCHAR2,
p_SONST VARCHAR2 DEFAULT '0',
p_SONSTFR VARCHAR2 DEFAULT '0',
p_BRUTTO VARCHAR2 DEFAULT NULL,
p_AUSLAGENTEXT VARCHAR2 DEFAULT NULL,
p_BEMERKUNG1 VARCHAR2 DEFAULT NULL,
p_BEMERKUNG2 VARCHAR2 DEFAULT NULL,
p_BEMERKUNG3 VARCHAR2 DEFAULT NULL,
p_BEMERKUNG4 VARCHAR2 DEFAULT NULL,
p_BEMERKUNG5 VARCHAR2 DEFAULT NULL,
p_BEMERKUNG6 VARCHAR2 DEFAULT NULL,
p_DOAUTO VARCHAR2 DEFAULT NULL,
x INTEGER DEFAULT 0,
y INTEGER DEFAULT 0) IS
Rec_Auftrag AUFTRAG%ROWTYPE;
Rec_Trans TRANSPOR%ROWTYPE;
Rec_FirmaKto FIRMAKTO%ROWTYPE;
Rec_FirmaTmpl FIRMAKTOTEMPL%ROWTYPE;
Rec_RechAdr RECHADR%ROWTYPE;
Rec_Adressen ADRESSEN%ROWTYPE;
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
Loc_NLSTime VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,2);
Loc_NLSWert VARCHAR2(30):=Xtool.GetNLS(p_HDLNR,3);
Loc_NLSBetr VARCHAR2(12):=Xtool.GetNLS(p_HDLNR,7);
my_ProgName VARCHAR2(20):='ErfZwi';
my_Debitor INTEGER:=0;
my_KtoAbwDeb INTEGER:=0;
my_rechnr INTEGER:=0;
my_UsrRechnr INTEGER:=0;
my_liefernr INTEGER:=0;
my_RechArt VARCHAR2(01):='R';
my_Zahlungsart VARCHAR2(02):=p_ZAHLUNGSART;
my_mwstmiet FLOAT :=0.0;
my_erlmiet INTEGER:=0;
my_erlkm INTEGER:=0;
my_erlschmal INTEGER:=0;
my_erlschmal1 INTEGER:=0;
my_erlschmal2 INTEGER:=0;
my_mwstkraft FLOAT :=0.0;
my_erlkraft INTEGER:=0;
my_erlbetank INTEGER:=0;
my_mwstsonst FLOAT :=0.0;
my_erlsonst INTEGER:=0;
my_erlsonstfrei INTEGER:=0;
my_MWSTLANG FLOAT :=16;
my_TAGELANG FLOAT :=16;
my_mwstverspai FLOAT :=0.0;
my_mwstverscdw FLOAT :=0.0;
my_mwstverstp FLOAT :=0.0;
my_erlvers INTEGER:=0;
my_erlmobi INTEGER:=0;
my_erlintern INTEGER:=0;
my_kmintern INTEGER:=0;
my_kraftintern INTEGER:=0;
my_betankintern INTEGER:=0;
my_versintern INTEGER:=0;
my_sonstintern INTEGER:=0;
my_ktomwst INTEGER:=0;
my_ktomwst2 INTEGER:=0;
my_VtrKonto INTEGER:=0;
my_ProvSatz FLOAT :=0.0;
my_ProvBasis FLOAT :=0.0;
my_Basis INTEGER:=0;
my_ProvKonto INTEGER:=0;
my_ZahlTag INTEGER:=0;
my_KdZahlTag INTEGER:=0;
my_SepaZahlTag INTEGER:=0;
my_Kulanz INTEGER;
my_KdSepaDatum DATE;
my_Einzug VARCHAR2(01);
my_FZTARIFFZART VARCHAR2(01);
my_FZKTOTEMPL INTEGER;
cntRech INTEGER:=0;
m_MitMwSt VARCHAR2(1):='W';
m_MwStSL VARCHAR2(1):='1';
m_konzernzugr VARCHAR2( 8);
m_Land VARCHAR2( 2);
m_FilSt INTEGER;
my_fremdvwsoll INTEGER:=0;
my_fremdvwhaben INTEGER:=0;
my_mk INTEGER:=0;
my_st INTEGER:=0;
my_kst INTEGER:=0;
my_kstmobi INTEGER:=0;
my_ak INTEGER:=0;
my_kt INTEGER:=0;
my_ust INTEGER:=0;
my_mkA INTEGER:=0;
my_stA INTEGER:=0;
my_kstA INTEGER:=0;
my_akA INTEGER:=0;
my_ktA INTEGER:=0;
my_mkFv INTEGER:=0;
my_stFv INTEGER:=0;
my_kstFv INTEGER:=0;
my_akFv INTEGER:=0;
my_ktFv INTEGER:=0;
UhrStr1 VARCHAR2(5);
UhrStr2 VARCHAR2(5);
Std1 INTEGER :=0;
Std2 INTEGER :=0;
m_tmp VARCHAR2(100) :='';
m_EchteTage INTEGER := 0;
m_AbrTyp VARCHAR2(2) := 'MF';
m_AnzStd INTEGER := 0;
m_Dauer INTEGER := 0;
m_Rest INTEGER := 0;
m_FreiKm VARCHAR2(10):='';
m_FreiKm1 VARCHAR2(10):='';
m_BerKm INTEGER := NVL(p_BERKM,0);
m_VermUmsatz FLOAT := 0.0;
m_KmUmsatz FLOAT := 0.0;
m_ErlSchmal FLOAT := 0.0;
m_ErlSchmal1 FLOAT := 0.0;
m_ErlSchmal2 FLOAT := 0.0;
m_CDWUmsatz FLOAT := 0.0;
m_PAIUmsatz FLOAT := 0.0;
m_TrpUmsatz FLOAT := 0.0;
m_KraftUmsatz FLOAT := 0.0;
m_BetankUmsatz FLOAT := 0.0;
m_ZubUmsatz FLOAT := 0.0;
m_DlUmsatz FLOAT := 0.0;
m_ZubUmsatzFr FLOAT := 0.0;
m_DlUmsatzFr FLOAT := 0.0;
m_ZubUmsatzP FLOAT := 0.0;
m_DlUmsatzP FLOAT := 0.0;
m_ZubUmsatzPFr FLOAT := 0.0;
m_DlUmsatzPFr FLOAT := 0.0;
m_DlUmsatzA FLOAT := 0.0;
m_DlUmsatzAFr FLOAT := 0.0;
m_SonstUmsatz FLOAT := 0.0;
m_SonstUmsatzFr FLOAT := 0.0;
m_RechBetrag FLOAT := 0.0;
m_Gezahlt FLOAT := 0.0;
m_MwSumme FLOAT := 0.0;
m_MwstBasis FLOAT := 0.0;
m_AltUmsatz FLOAT := 0.0;
m_AltKm FLOAT := 0.0;
m_AltSchmal FLOAT := 0.0;
m_AltSchmal1 FLOAT := 0.0;
m_AltSchmal2 FLOAT := 0.0;
m_AltCDW FLOAT := 0.0;
m_AltPAI FLOAT := 0.0;
m_AltTP FLOAT := 0.0;
m_AltKraft FLOAT := 0.0;
m_AltBetank FLOAT := 0.0;
m_AltZub FLOAT := 0.0;
m_AltDl FLOAT := 0.0;
m_AltZubFr FLOAT := 0.0;
m_AltDlFr FLOAT := 0.0;
m_AltSonst FLOAT := 0.0;
m_AltSonstFr FLOAT := 0.0;
m_AltMwSt FLOAT := 0.0;
m_AltVtr FLOAT := 0.0;
m_Zw1 FLOAT;
m_Zw2 FLOAT;
m_Kst INTEGER:=0;
m_KstFil INTEGER:=0;
m_GeschBer VARCHAR2(10);
m_errortext VARCHAR2(100) := NULL;
m_OP VARCHAR2(2) := p_OP;
m_error VARCHAR2(1) :='0';
m_Cnt INTEGER;
m_ZwiRech VARCHAR2(1):='W';
m_PREIS1 FLOAT;
m_FAKTOR1 INTEGER;
m_EINHEIT1 INTEGER;
m_INCLANZKM1 INTEGER;
m_DMKM FLOAT;
m_DMCDW FLOAT;
m_DMPAI FLOAT;
m_PREIS2 FLOAT;
m_FAKTOR2 INTEGER;
m_EINHEIT2 INTEGER;
m_INCLANZKM2 INTEGER;
m_DMCDW2 FLOAT;
m_DMPAI2 FLOAT;
my_FZKLASSE VARCHAR2(1);
my_FZSTAT VARCHAR2(2);
my_FZOWNER VARCHAR2(8);
my_FZART VARCHAR2(4);
my_F2GO VARCHAR2(2);
my_PRIVAT VARCHAR2(01);
my_LastDate DATE :=NULL;
my_BBeginn DATE;
my_DoAuto VARCHAR2(20):=p_DoAuto;
my_PdfRe VARCHAR2(01);
my_Ingis VARCHAR2(01);
my_HatFzKst VARCHAR2(01);
my_HatKtoTempl VARCHAR2(01);
my_StdZahlart INTEGER;
my_CashTyp INTEGER;
my_TransToken VARCHAR2(20);
my_PayToken VARCHAR2(40);
my_Referenz INTEGER:=0;
my_ReferenzArt VARCHAR2(01);
my_ErsterTag VARCHAR2(02);
my_LetzterTag VARCHAR2(02);
my_LetzterMon VARCHAR2(02);
PROCEDURE GetLastDate IS
BEGIN
SELECT MAX(BENDE)
INTO my_LastDate
FROM RECHNUNG
WHERE HDLNR =p_HDLNR AND
AUFTRNR=p_AUFTRNR AND
ZWIRECH='W' AND
RECHNR > 0 AND
STNRECHNR IS NULL;
END;
PROCEDURE DoMakeRechAdr(loc_TmpRechNr INTEGER,
loc_TmpRechArt VARCHAR2) IS
my_found BOOLEAN:=TRUE;
my_ANREDE VARCHAR2(20) :='';
my_NAME1 VARCHAR2(40) :='';
my_NAME2 VARCHAR2(40) :='';
my_NAME3 VARCHAR2(40) :='';
my_STRASSE VARCHAR2(40) :='';
my_HAUSNR VARCHAR2(10) :='';
my_STRASSE2 VARCHAR2(40) :='';
my_PLZ VARCHAR2(10) :='';
my_ORT VARCHAR2(40) :='';
my_LAND VARCHAR2(40) :='';
my_EGSTEUER VARCHAR2(30) :='';
my_STEUERNR VARCHAR2(30) :='';
my_MWSTSL VARCHAR2(1) :='1';
my_PRIVAT VARCHAR2(1) :='P';
my_KST FLOAT :=0.0;
my_GKREF FLOAT :=0.0;
my_RABATT FLOAT :=0.0;
BEGIN
my_Debitor:=Rec_Auftrag.SPLITDEBITOR;
BEGIN
SELECT ANREDE, NAME1, NAME2, NAME3, STRASSE, HAUSNR, STRASSE2, PLZ, ORT, LAND,
EGSTEUER, STEUERNR, MWST, TYP, KST, GKREF, RABATT
INTO my_ANREDE, my_NAME1, my_NAME2, my_NAME3, my_STRASSE, my_HausNr, my_STRASSE2, my_PLZ, my_ORT, my_LAND,
my_EGSTEUER, my_STEUERNR, my_MWSTSL, my_PRIVAT, my_KST, my_GKREF, my_RABATT
FROM ADRESSEN
WHERE HDLNR =p_HDLNR AND
ART ='K' AND
NUMMER=my_Debitor;
EXCEPTION
WHEN OTHERS THEN my_found:=FALSE;
END;
INSERT INTO RECHADR
(HDLNR, RECHNR, RECHART,
ANREDE, NAME1, NAME2, NAME3, STRASSE, HAUSNR, STRASSE2, PLZ, ORT, LAND,
DEBITOR, EGSTEUER, STEUERNR, MITMWST, PRIVAT, KOSTENSTELLE, GKREF)
VALUES
(p_HDLNR, loc_TmpRechNr, loc_TmpRechArt,
my_ANREDE, my_NAME1, my_NAME2, my_NAME3, my_STRASSE, my_HAUSNR, my_STRASSE2, my_PLZ, my_ORT, my_LAND,
my_Debitor, my_EGSTEUER, my_STEUERNR, my_MWSTSL, my_PRIVAT, my_KST, my_GKREF);
END;
PROCEDURE DoKorrRechZubPos1(loc_ZubUmsatz IN OUT FLOAT,
loc_ZubUmsatzFr IN OUT FLOAT,
loc_DlUmsatz IN OUT FLOAT,
loc_DlUmsatzFr IN OUT FLOAT) IS
CURSOR currechzubpos IS
SELECT *
FROM RECHZUBPOS
WHERE HDLNR =p_HDLNR
AND RECHNR =my_UsrRechNr
AND NVL(SPLITSUMME,0)<>0;
BEGIN
FOR Rec_Zub IN currechzubpos LOOP
IF NVL(Rec_Zub.LEISTUNG,'F')='F'
THEN IF NVL(Rec_Zub.MWSTFREI,'F')='W'
THEN loc_ZubUmsatzFr:=loc_ZubUmsatzFr-Rec_Zub.SPLITSUMME;
ELSE loc_ZubUmsatz :=loc_ZubUmsatz -Rec_Zub.SPLITSUMME;
END IF;
ELSE IF NVL(Rec_Zub.MWSTFREI,'F')='W'
THEN loc_DlUmsatzFr :=loc_DlUmsatzFr -Rec_Zub.SPLITSUMME;
ELSE loc_DlUmsatz :=loc_DlUmsatz -Rec_Zub.SPLITSUMME;
END IF;
END IF;
END LOOP;
UPDATE RECHZUBPOS
SET SUMME = SUMME-SPLITSUMME
WHERE HDLNR = p_HDLNR
AND RECHNR= my_usrrechnr
AND NVL(SPLITSUMME,0)<>0;
END;
PROCEDURE DoKorrRechZubPos2(loc_RechArt VARCHAR2,
loc_RechNr1 INTEGER,
loc_RechArt2 VARCHAR2,
loc_RechNr2 INTEGER,
loc_ZubUmsatz IN OUT FLOAT,
loc_ZubUmsatzFr IN OUT FLOAT,
loc_DlUmsatz IN OUT FLOAT,
loc_DlUmsatzFr IN OUT FLOAT) IS
CURSOR currechzubpos IS
SELECT *
FROM RECHZUBPOS
WHERE HDLNR =p_HDLNR
AND RECHNR =loc_RechNr1
AND RECHART =loc_RechArt
AND NVL(SPLITSUMME,0)<>0;
BEGIN
FOR Rec_Zub IN currechzubpos LOOP
IF NVL(Rec_Zub.LEISTUNG,'F')='F'
THEN IF NVL(Rec_Zub.MWSTFREI,'F')='W'
THEN loc_ZubUmsatzFr:=loc_ZubUmsatzFr+Rec_Zub.SPLITSUMME;
ELSE loc_ZubUmsatz :=loc_ZubUmsatz +Rec_Zub.SPLITSUMME;
END IF;
ELSE IF NVL(Rec_Zub.MWSTFREI,'F')='W'
THEN loc_DlUmsatzFr :=loc_DlUmsatzFr +Rec_Zub.SPLITSUMME;
ELSE loc_DlUmsatz :=loc_DlUmsatz +Rec_Zub.SPLITSUMME;
END IF;
END IF;
INSERT INTO RECHZUBPOS
(HDLNR,RECHART,RECHNR,LFD,NR,MVRE,SUMME,MWSTFREI,ERLOESKONTO,ERLOESKONTOINT,LEISTUNG,MENGE,EZPREIS,PAUSCHAL)
VALUES
(p_HDLNR,loc_RechArt2,loc_RechNr2,Rec_Zub.LFD,Rec_ZUB.NR,Rec_Zub.MVRE,Rec_Zub.SPLITSUMME,Rec_Zub.MWSTFREI,Rec_Zub.ERLOESKONTO,rec_Zub.ERLOESKONTOINT,rec_Zub.LEISTUNG,rec_Zub.MENGE, rec_Zub.EZPREIS,rec_Zub.PAUSCHAL);
END LOOP;
END;
PROCEDURE DoMakeRechZubPos (loc_RechArt1 VARCHAR2,
loc_RechNr1 INTEGER,
loc_RechArt2 VARCHAR2,
loc_RechNr2 INTEGER,
loc_Proz FLOAT) IS
CURSOR currechzubpos IS
SELECT *
FROM RECHZUBPOS
WHERE HDLNR =p_HDLNR
AND RECHNR =loc_RechNr1
AND RECHART =loc_RechArt1;
loc_Summe FLOAT;
BEGIN
FOR Rec_Zub IN currechzubpos LOOP
IF NVL(Rec_Zub.SPLITSUMME,0)=0
THEN loc_Summe:=Rec_Zub.SUMME * 100 / (100-loc_Proz); -- ist schon reduziert, 100 kann nicht sein
loc_Summe:=loc_Summe / 100 * loc_Proz;
ELSE loc_Summe:=NVL(Rec_Zub.SPLITSUMME,0);
END IF;
INSERT INTO RECHZUBPOS
(HDLNR,RECHART,RECHNR,LFD,NR,MVRE,SUMME,MWSTFREI,ERLOESKONTO,ERLOESKONTOINT,LEISTUNG,PAUSCHAL)
VALUES
(p_HDLNR,loc_RechArt2,loc_RechNr2,Rec_Zub.LFD,Rec_ZUB.NR,Rec_Zub.MVRE,loc_SUMME,Rec_Zub.MWSTFREI,Rec_Zub.ERLOESKONTO,rec_Zub.ERLOESKONTOINT,rec_Zub.LEISTUNG,rec_Zub.PAUSCHAL);
END LOOP;
END;
PROCEDURE GetLastToken IS
loc_LastZwiRech INTEGER;
BEGIN
my_TransToken :=Rec_Auftrag.ARVATOTRANSTOKEN;
my_PayToken :=Rec_Auftrag.ARVATOPAYTOKEN;
IF NVL(my_CashTyp,0)<>2
THEN RETURN;
END IF;
SELECT MAX(RECHNR)
INTO loc_LastZwiRech
FROM RECHNUNG
WHERE HDLNR =Rec_Auftrag.HDLNR
AND AUFTRNR=Rec_Auftrag.AUFTRNR
AND ZWIRECH='W'
AND RECHART='R'
AND STNFLAG IS NULL
AND ARVATOTRANSTOKEN IS NOT NULL;
IF NVL(loc_LastZwiRech,0)>0
THEN SELECT ARVATOTRANSTOKEN, ARVATOPAYTOKEN
INTO my_TransToken, my_PayToken
FROM RECHNUNG
WHERE HDLNR =Rec_Auftrag.HDLNR
AND RECHART='R'
AND RECHNR =loc_LastZwiRech;
END IF;
END;
PROCEDURE SetMwstParams IS
BEGIN
IF m_MwStSL='1' OR m_MwStSL='3' OR m_MwStSL='4'
THEN m_MitMwSt:='W';
ELSE m_MitMwSt:='F';
END IF;
IF (m_LAND='01' OR m_LAND='10') AND (m_MwStSl='3') AND ((trunc(Rec_Auftrag.MENDE)-trunc(Rec_Auftrag.MBEGINN))>=my_TAGELANG)
THEN m_MitMwSt:='F';
END IF;
-- MwSt f�r MEndeDatum holen
m_LAND:=SUBSTR(m_KONZERNZUGR,5,2);
EM_BACK.Get_MwSt_Aktiv(m_LAND,my_MWSTMIET,my_MWSTLANG,my_TAGELANG,
my_MWSTVERSPAI,my_MWSTVERSCDW,my_MWSTVERSTP,
my_MWSTKRAFT, my_MWSTSONST,TO_DATE(Rec_Auftrag.MENDE));
IF m_LAND='04' AND (my_FZART IN ('111','131') OR (trunc(Rec_Auftrag.MENDE)-trunc(Rec_Auftrag.MBEGINN))>=my_TAGELANG)
THEN my_MWSTMIET :=my_MWSTLANG;
END IF;
-- MwSt Ende
IF m_mitmwst='F' -- MwSt-Freie Rechnung
THEN my_mwstmiet :=0.0;
my_mwstkraft :=0.0;
my_mwstsonst :=0.0;
my_mwstverspai:=0.0;
my_mwstverscdw:=0.0;
my_mwstverstp :=0.0;
END IF;
END;
PROCEDURE SetZahlParams IS
BEGIN
IF my_KdZahlTag>0
THEN my_ZahlTag:=my_KdZahlTag;
END IF;
IF my_Einzug='W' AND
NVL(my_SepaZahlTag,0)>0 AND
my_KdSepaDatum IS NOT NULL AND
my_KdSepaDatum<=SYSDATE
THEN my_ZahlTag:=my_SepaZahlTag;
END IF;
END;
PROCEDURE DoWriteRechnung(loc_lfd INTEGER) IS
loc_VermUmsatz FLOAT;
loc_KmUmsatz FLOAT;
loc_CdwUmsatz FLOAT;
loc_PaiUmsatz FLOAT;
loc_TrpUmsatz FLOAT;
loc_KraftUmsatz FLOAT;
loc_BetankUmsatz FLOAT;
loc_SonstUmsatz FLOAT;
loc_SonstUmsatzFr FLOAT;
loc_ZubUmsatz FLOAT;
loc_DlUmsatz FLOAT;
loc_ZubUmsatzFr FLOAT;
loc_DlUmsatzFr FLOAT;
loc_Zw1 FLOAT;
loc_Zw2 FLOAT;
loc_Zw3 FLOAT;
m_Rabatt FLOAT := Rec_Auftrag.RABATT;
my_Proz FLOAT;
my_TmpZahlungsart INTEGER:=NULL;
m_MitZub VARCHAR2(01):='W';
BEGIN
IF loc_lfd=2
THEN my_Referenz :=my_RechNr;
my_ReferenzArt:=my_RechArt;
BEGIN
SELECT STDZAHLART, ZAHLTAG, SEPADATUM, EINZUG, MWST
INTO my_TmpZahlungsart, my_KdZahlTag, my_KdSepaDatum, my_Einzug, m_MwstSl
FROM ADRESSEN
WHERE HDLNR =p_HDLNR AND
ART ='K' AND
NUMMER=Rec_Auftrag.SPLITDEBITOR;
EXCEPTION
WHEN OTHERS THEN my_TmpZahlungsart:=NULL;
END;
IF my_TmpZahlungsart IS NOT NULL
THEN my_Zahlungsart:=my_TmpZahlungsart;
ELSE SELECT STDZAHLART
INTO my_TmpZahlungsart
FROM FIRMA
WHERE HDLNR=P_HDLNR;
IF my_Zahlungsart IS NOT NULL
THEN my_Zahlungsart:=my_TmpZahlungsart;
END IF;
END IF;
IF my_ZAHLUNGSART IN ('50','51')
THEN SELECT LIEFERNR
INTO my_LieferNr
FROM FIRMA
WHERE HDLNR=p_HDLNR FOR UPDATE;
UPDATE FIRMA
SET LIEFERNR = LIEFERNR + 1
WHERE HDLNR=p_HDLNR;
my_RechNr :=my_LieferNr;
my_RechArt:='L';
ELSE SELECT RECHNR
INTO my_rechnr
FROM FIRMA
WHERE HDLNR=p_HDLNR FOR UPDATE;
UPDATE FIRMA
SET RECHNR = RECHNR + 1
WHERE HDLNR=p_HDLNR;
my_RechArt:='R';
END IF;
UPDATE RECHNUNG
SET SPLITREFRECHNR = my_RechNr,
SPLITREFRECHART= my_RechArt
WHERE HDLNR=p_HDLNR
AND RECHNR =my_Referenz
AND RECHART=my_ReferenzArt;
COMMIT;
DoMakeRechAdr(my_RechNr,my_RechArt);
m_BerKm:=0;
END IF;
SetZahlParams;
SetMwstParams;
loc_VermUmsatz :=m_VermUmsatz-m_AltUmsatz;
loc_KmUmsatz :=m_KmUmsatz-m_AltKm;
loc_CdwUmsatz :=m_CdwUmsatz-m_AltCdw;
loc_PaiUmsatz :=m_PaiUmsatz-m_AltPai;
loc_TrpUmsatz :=m_TrpUmsatz-m_AltTp;
loc_KraftUmsatz :=m_KraftUmsatz-m_AltKraft;
loc_BetankUmsatz :=m_BetankUmsatz-m_AltBetank;
loc_SonstUmsatz :=m_SonstUmsatz-m_AltSonst;
loc_SonstUmsatzFr:=m_SonstUmsatzFr-m_AltSonstFr;
loc_ZubUmsatz :=m_ZubUmsatz-m_AltZub;
loc_DlUmsatz :=m_DlUmsatz-m_AltDl;
loc_ZubUmsatzFr :=m_ZubUmsatzFr-m_AltZubFr;
loc_DlUmsatzFr :=m_DlUmsatzFr-m_AltDlFr;
IF Rec_Auftrag.SPLITTING IN ('M')
THEN IF NVL(Rec_Auftrag.SPLITPROZ1,0)>0
THEN IF loc_LFD=1
THEN my_Proz:=100-Rec_Auftrag.SPLITPROZ1;
ELSE my_Proz:=Rec_Auftrag.SPLITPROZ1;
END IF;
loc_VermUmsatz :=loc_VermUmsatz / 100 * my_Proz;
loc_KmUmsatz :=loc_KmUmsatz / 100 * my_Proz;
loc_CdwUmsatz :=loc_CdwUmsatz / 100 * my_Proz;
loc_PaiUmsatz :=loc_PaiUmsatz / 100 * my_Proz;
loc_TrpUmsatz :=loc_TrpUmsatz / 100 * my_Proz;
loc_KraftUmsatz :=loc_KraftUmsatz / 100 * my_Proz;
loc_BetankUmsatz :=loc_BetankUmsatz / 100 * my_Proz;
loc_SonstUmsatz :=loc_SonstUmsatz / 100 * my_Proz;
loc_SonstUmsatzFr:=loc_SonstUmsatzFr / 100 * my_Proz;
loc_ZubUmsatz :=loc_ZubUmsatz / 100 * my_Proz;
loc_DlUmsatz :=loc_DlUmsatz / 100 * my_Proz;
loc_ZubUmsatzFr :=loc_ZubUmsatzFr / 100 * my_Proz;
loc_DlUmsatzFr :=loc_DlUmsatzFr / 100 * my_Proz;
IF loc_LFD=1
THEN UPDATE RECHZUBPOS
SET SUMME = SUMME / 100 * my_Proz
WHERE HDLNR = p_HDLNR
AND RECHNR= my_usrrechnr
AND NVL(SPLITSUMME,0)=0;
-- ELSE DoMakeRechZubPos (my_RechArt,
ELSE DoMakeRechZubPos (my_ReferenzArt,
my_Referenz,
my_RechArt,
my_RechNr,
my_Proz);
END IF;
ELSE IF loc_LFD=1
THEN IF Rec_Auftrag.SPLITMIETECHK='W'
THEN loc_VermUmsatz :=0.0;
ELSE loc_VermUmsatz :=loc_VermUmsatz - Rec_Auftrag.SPLITMIETE;
END IF;
IF Rec_Auftrag.SPLITKMCHK='W'
THEN loc_KmUmsatz :=0.0;
ELSE loc_KmUmsatz :=loc_KmUmsatz - Rec_Auftrag.SPLITKM;
END IF;
IF Rec_Auftrag.SPLITCDWCHK='W'
THEN loc_CdwUmsatz :=0.0;
ELSE loc_CdwUmsatz :=loc_CdwUmsatz - Rec_Auftrag.SPLITCDW;
END IF;
IF Rec_Auftrag.SPLITPAICHK='W'
THEN loc_PaiUmsatz :=0.0;
ELSE loc_PaiUmsatz :=loc_PaiUmsatz - Rec_Auftrag.SPLITPAI;
END IF;
IF Rec_Auftrag.SPLITTPCHK='W'
THEN loc_TrpUmsatz :=0.0;
ELSE loc_TrpUmsatz :=loc_TrpUmsatz - Rec_Auftrag.SPLITTP;
END IF;
IF Rec_Auftrag.SPLITKRAFTCHK='W'
THEN loc_KraftUmsatz :=0.0;
ELSE loc_KraftUmsatz :=loc_KraftUmsatz- Rec_Auftrag.SPLITKRAFT;
END IF;
IF Rec_Auftrag.SPLITBETANKCHK='W'
THEN loc_BetankUmsatz:=0.0;
ELSE loc_BetankUmsatz:=loc_BetankUmsatz-Rec_Auftrag.SPLITBETANK;
END IF;
IF Rec_Auftrag.SPLITSONSTCHK='W'
THEN loc_SonstUmsatz :=0.0;
ELSE loc_SonstUmsatz :=loc_SonstUmsatz- Rec_Auftrag.SPLITSONST;
END IF;
DoKorrRechZubPos1(loc_ZubUmsatz,
loc_ZubUmsatzFr,
loc_DlUmsatz,
loc_DlUmsatzFr);
ELSE IF Rec_Auftrag.SPLITMIETECHK='W'
THEN loc_VermUmsatz :=loc_VermUmsatz;
ELSE loc_VermUmsatz :=Rec_Auftrag.SPLITMIETE;
END IF;
IF Rec_Auftrag.SPLITKMCHK='W'
THEN loc_KmUmsatz :=loc_KmUmsatz;
ELSE loc_KmUmsatz :=Rec_Auftrag.SPLITKM;
END IF;
IF Rec_Auftrag.SPLITCDWCHK='W'
THEN loc_CdwUmsatz :=loc_CDWUmsatz;
ELSE loc_CdwUmsatz :=Rec_Auftrag.SPLITCDW;
END IF;
IF Rec_Auftrag.SPLITPAICHK='W'
THEN loc_PaiUmsatz :=loc_PaiUmsatz;
ELSE loc_PaiUmsatz :=Rec_Auftrag.SPLITPAI;
END IF;
IF Rec_Auftrag.SPLITTPCHK='W'
THEN loc_TrpUmsatz :=loc_TrpUmsatz;
ELSE loc_TrpUmsatz :=Rec_Auftrag.SPLITTP;
END IF;
IF Rec_Auftrag.SPLITKRAFTCHK='W'
THEN loc_KraftUmsatz :=loc_KraftUmsatz;
ELSE loc_KraftUmsatz :=Rec_Auftrag.SPLITKRAFT;
END IF;
IF Rec_Auftrag.SPLITBETANKCHK='W'
THEN loc_BetankUmsatz:=loc_BetankUmsatz;
ELSE loc_BetankUmsatz:=Rec_Auftrag.SPLITBETANK;
END IF;
IF Rec_Auftrag.SPLITSONSTCHK='W'
THEN loc_SonstUmsatz :=loc_SonstUmsatz;
ELSE loc_SonstUmsatz :=Rec_Auftrag.SPLITSONST;
END IF;
loc_ZubUmsatz :=0.0;--Rec_Auftrag.SPLITZUB;
loc_DlUmsatz :=0.0;--Rec_Auftrag.SPLITDL;
loc_ZubUmsatzFr :=0.0;--Rec_Auftrag.SPLITZUBFREI;
loc_DlUmsatzFr :=0.0;--Rec_Auftrag.SPLITDFREIL;
DoKorrRechZubPos2(my_ReferenzArt,
my_Referenz,
my_RechArt,
my_RechNr,
loc_ZubUmsatz,
loc_ZubUmsatzFr,
loc_DlUmsatz,
loc_DlUmsatzFr);
END IF;
END IF;
END IF;
CASE NVL(Rec_Auftrag.RABATTZL,0)
WHEN 0 THEN m_ErlSchmal := Schnittstellen.KaufRND((loc_VermUmsatz + loc_KmUmsatz) / 100 * Rec_Auftrag.RABATT);
WHEN 1 THEN m_ErlSchmal := Schnittstellen.KaufRND((loc_VermUmsatz) / 100 * Rec_Auftrag.RABATT);
WHEN 2 THEN m_ErlSchmal1:= Schnittstellen.KaufRND(((loc_TrpUmsatz + loc_CdwUmsatz + loc_PaiUmsatz)) / 100 * Rec_Auftrag.RABATT);
m_ErlSchmal := Schnittstellen.KaufRND((loc_VermUmsatz + loc_KmUmsatz) / 100 * Rec_Auftrag.RABATT);
WHEN 3 THEN m_ErlSchmal2:= Schnittstellen.KaufRND(((loc_SonstUmsatz +loc_SonstUmsatzFr + loc_KraftUmsatz + loc_BetankUmsatz + loc_DlUmsatz + loc_ZubUmsatz + loc_DlUmsatzFr + loc_ZubUmsatzFr)) / 100 * Rec_Auftrag.RABATT);
m_ErlSchmal1:= Schnittstellen.KaufRND(((loc_TrpUmsatz + loc_CdwUmsatz + loc_PaiUmsatz)) / 100 * Rec_Auftrag.RABATT);
m_ErlSchmal := Schnittstellen.KaufRND((loc_VermUmsatz + loc_KmUmsatz) / 100 * Rec_Auftrag.RABATT);
ELSE NULL;
END CASE;
-- Rabatt Ende
-- Provision nach Basiskennzeichnen errechnen
CASE NVL(my_BASIS,0)
WHEN 1 THEN my_PROVBASIS := loc_VermUmsatz+loc_KmUmsatz-m_ErlSchmal;
WHEN 2 THEN my_PROVBASIS := loc_VermUmsatz+loc_KmUmsatz-m_ErlSchmal+
loc_CDWUmsatz+loc_PAIUmsatz+loc_TrpUmsatz-m_ErlSchmal2;
WHEN 3 THEN my_PROVBASIS := loc_VermUmsatz+loc_KmUmsatz-m_ErlSchmal+
loc_CDWUmsatz+loc_PAIUmsatz+loc_TrpUmsatz-m_ErlSchmal2+
loc_KraftUmsatz+loc_BetankUmsatz+loc_SonstUmsatz+loc_SonstUmsatzFr+loc_ZubUmsatz+loc_DlUmsatz+loc_DlUmsatzFr+loc_ZubUmsatzFr-m_ErlSchmal2;
ELSE my_ProvBasis:=0.0;
END CASE;
-- Provisionen Ende
m_Rechbetrag:=loc_VermUmsatz +
loc_KmUmsatz -
m_ErlSchmal -
m_ErlSchmal1 -
m_ErlSchmal2 +
loc_CDWUmsatz +
loc_PAIUmsatz +
loc_TrpUmsatz +
loc_KraftUmsatz +
loc_BetankUmsatz +
loc_SonstUmsatz +
loc_SonstUmsatzFr+
loc_ZubUmsatz +
loc_DlUmsatz +
loc_ZubUmsatzFr +
loc_DlUmsatzFr;
m_MwSumme :=0.0;
m_MwstBasis :=m_RechBetrag;
IF my_MwstMiet=0
THEN m_MwstBasis:=m_MwstBasis - (loc_VermUmsatz + loc_KmUmsatz - m_ErlSchmal);
ELSE m_MwSumme :=Schnittstellen.KaufRND(((loc_VermUmsatz + loc_KmUmsatz - m_ErlSchmal) / 100 * my_MwstMiet));
END IF;
IF my_MwStVersPai=0
THEN IF NVL(Rec_Auftrag.RABATTZL,0)>=2
THEN m_MwstBasis:=m_MwstBasis - (loc_PAIUmsatz - (loc_PAIUmsatz / 100 * m_Rabatt));
ELSE m_MwstBasis:=m_MwstBasis - (loc_PAIUmsatz);
END IF;
ELSE IF NVL(Rec_Auftrag.RABATTZL,0)>=2
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_PAIUmsatz - (loc_PAIUmsatz / 100 * m_Rabatt)) / 100 * my_MwStVersPai);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_PAIUmsatz / 100 * my_MwStVersPai));
END IF;
END IF;
IF my_MwStVersCdw=0
THEN IF NVL(Rec_Auftrag.RABATTZL,0)>=2
THEN m_MwstBasis:=m_MwstBasis - (loc_CDWUmsatz - (loc_CDWUmsatz / 100 * m_Rabatt));
ELSE m_MwstBasis:=m_MwstBasis - (loc_CDWUmsatz);
END IF;
ELSE IF NVL(Rec_Auftrag.RABATTZL,0)>=2
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_CDWUmsatz - (loc_CDWUmsatz / 100 * m_Rabatt)) / 100 * my_MwStVersCdw);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_CDWUmsatz / 100 * my_MwStVersCdw));
END IF;
END IF;
IF my_MwStVersTp=0
THEN IF NVL(Rec_Auftrag.RABATTZL,0)>=2
THEN m_MwstBasis:=m_MwstBasis - (loc_TrpUmsatz - (loc_TrpUmsatz / 100 * m_Rabatt));
ELSE m_MwstBasis:=m_MwstBasis - (loc_TrpUmsatz);
END IF;
ELSE IF NVL(Rec_Auftrag.RABATTZL,0)>=2
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_TrpUmsatz - (loc_TrpUmsatz / 100 * m_Rabatt)) / 100 * my_MwStVersTp);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_TrpUmsatz / 100 * my_MwStVersTp));
END IF;
END IF;
IF my_MwStKraft=0
THEN IF NVL(Rec_Auftrag.RABATTZL,0)=3
THEN m_MwstBasis:=m_MwstBasis - (loc_KraftUmsatz - (loc_KraftUmsatz / 100 * m_Rabatt));
ELSE m_MwstBasis:=m_MwstBasis - (loc_KraftUmsatz);
END IF;
ELSE IF NVL(Rec_Auftrag.RABATTZL,0)=3
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_KraftUmsatz - (loc_KraftUmsatz / 100 * m_Rabatt)) / 100 * my_MwStKraft);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_KraftUmsatz / 100 * my_MwStKraft));
END IF;
END IF;
IF my_MwStSonst=0
THEN IF NVL(Rec_Auftrag.RABATTZL,0)=3
THEN m_MwstBasis:=m_MwstBasis - (loc_BetankUmsatz - (loc_BetankUmsatz / 100 * m_Rabatt));
ELSE m_MwstBasis:=m_MwstBasis - (loc_BetankUmsatz);
END IF;
ELSE IF NVL(Rec_Auftrag.RABATTZL,0)=3
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_BetankUmsatz - (loc_BetankUmsatz / 100 * m_Rabatt)) / 100 * my_MwStSonst);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_BetankUmsatz / 100 * my_MwStSonst));
END IF;
END IF;
IF my_MwStSonst=0
THEN IF NVL(Rec_Auftrag.RABATTZL,0)=3
THEN m_MwstBasis:=m_MwstBasis - (loc_SonstUmsatz - (loc_SonstUmsatz / 100 * m_Rabatt));
ELSE m_MwstBasis:=m_MwstBasis - (loc_SonstUmsatz);
END IF;
ELSE IF NVL(Rec_Auftrag.RABATTZL,0)=3
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_SonstUmsatz - (loc_SonstUmsatz / 100 * m_Rabatt)) / 100 * my_MwStSonst);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_SonstUmsatz / 100 * my_MwStSonst));
END IF;
END IF;
IF my_MwStSonst=0
THEN IF NVL(Rec_Auftrag.RABATTZL,0)=3
THEN m_MwstBasis:=m_MwstBasis - (loc_ZubUmsatz - (loc_ZubUmsatz / 100 * m_Rabatt));
ELSE m_MwstBasis:=m_MwstBasis - (loc_ZubUmsatz);
END IF;
ELSE IF NVL(Rec_Auftrag.RABATTZL,0)=3
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_ZubUmsatz - (loc_ZubUmsatz / 100 * m_Rabatt)) / 100 * my_MwStSonst);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_ZubUmsatz / 100 * my_MwStSonst));
END IF;
END IF;
IF my_MwStSonst=0
THEN IF NVL(Rec_Auftrag.RABATTZL,0)=3
THEN m_MwstBasis:=m_MwstBasis - (loc_DlUmsatz - (loc_DlUmsatz / 100 * m_Rabatt));
ELSE m_MwstBasis:=m_MwstBasis - (loc_DlUmsatz);
END IF;
ELSE IF NVL(Rec_Auftrag.RABATTZL,0)=3
THEN m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_DlUmsatz - (loc_DlUmsatz / 100 * m_Rabatt)) / 100 * my_MwStSonst);
ELSE m_MwSumme:=m_MwSumme+Schnittstellen.KaufRND((loc_DlUmsatz / 100 * my_MwStSonst));
END IF;
END IF;
m_RechBetrag:=m_RechBetrag+m_MwSumme;
m_Gezahlt :=round(m_RechBetrag*100)/100;
IF m_Zwirech='1'
THEN m_MitZub:='W';
END IF;
GetLastToken;
INSERT INTO RECHNUNG
(HDLNR, FILNR, RECHNR, GUTLAST, ZWIRECH, ZWIRECHFIRST, RECHART, AUFTRNR, DEBITOR, RDATUM, ZAHLBED, VERMITTLER,
VERMUMSATZ, KMUMSATZ, VERMMWST, ERLSCHMAL, ERLSCHMAL1, ERLSCHMAL2, ERLMWST, ERLKONTO, ERLKONTO1, ERLKONTO2, VERMKONTO, KMKONTO,
VERSUMSATZPAI, VERSMWSTPAI, VERSUMSATZCDW, VERSMWSTCDW, VERSUMSATZTP,
VERSMWSTTP, VERSKONTO, KRAFTUMSATZ, KRAFTMWST, KRAFTKONTO, BETANKUMSATZ, BETANKKONTO,
SONSTUMSATZ, SONSTUMSATZFREI, ZUBUMSATZ, DLUMSATZ, ZUBUMSATZFREI, DLUMSATZFREI,
SONSTMWST, SONSTKONTO, SONSTKONTOFREI, BERKM, GEFKM, GEZAHLT, ZAHLWEG, KSTSTELLE, KSTFIL, GESCHBEREICH,
AUSLAGENTEXT,
BEMERKUNG1, BEMERKUNG2, BEMERKUNG3, BEMERKUNG4, BEMERKUNG5, BEMERKUNG6, FIBU, PROV,
BANFANG, BENDE, MANFANG, MENDE,
PROVBASIS, PROVSATZ, PROVKONTO,
TARIFTYP,TARIFTYPS,ERFHDLNR, ERFUSER, VONKM, BISKM, TARIFBEZ,
GRUNDBETRAG, PREIS1, FAKTOR1, EINHEIT1, MEHRFACH, INCLKM1, INCLANZKM1, DMKM, CDW, DMCDW, PAI, DMPAI,
PREIS2, FAKTOR2, EINHEIT2, INCLANZKM2, CDW2, DMCDW2, PAI2, DMPAI2, KULANZ,
RGKLASSE, MVKLASSE, FZKLASSE, FZSTAT, FZOWNERHDLNR, RGTARIFFZART, RGFZTARIFAUS,
STNRECHNR, MITANZ, MITZWI, MITZUB, MITLST, NURFREIEKM, TRFMANUELL,GKREF, GKGRP, KTOMWST, KTOMWST2, UNFALLERSATZ, AUFHDLNR,
AUFTRNREXT, MWSTSL, FREE2GO,
RABATT,RABATTZL,MAXRABATT,ZAHLTAG,
MK,ST,KST,AK,KT,MKA,STA,KSTA,AKA,KTA,MKFV,STFV,KSTFV,AKFV,KTFV,UST,KSTMOBI,
KTOABWDEB, KTOFREMDVWSOLL, KTOFREMDVWHABEN,
SPLITREFRECHNR,SPLITREFRECHART,LFSSAMMEL,
ARVATOPAYTOKEN, ARVATOTRANSTOKEN, MVART)
VALUES (p_HDLNR,Rec_Auftrag.FILNR,my_rechnr, 'F', 'W', m_ZwiRech, my_RechArt, p_AUFTRNR, my_Debitor, XTool.GetSysDate(p_HDLNR), 0,Rec_Auftrag.VERMITTLER,
loc_VermUmsatz,loc_KmUmsatz,my_mwstmiet,m_ErlSchmal,m_ErlSchmal1,m_ErlSchmal2,my_mwstmiet,my_erlschmal,my_erlschmal1,my_erlschmal2,my_erlmiet,my_erlkm,
loc_PAIUmsatz,my_mwstverspai,loc_CDWUmsatz,my_mwstverscdw,loc_TrpUmsatz,
my_mwstverstp,my_erlvers,loc_KraftUmsatz,my_mwstkraft,my_erlkraft,loc_BetankUmsatz,my_erlbetank,
loc_SonstUmsatz,loc_SonstUmsatzFr,loc_ZubUmsatz,loc_DlUmsatz,loc_ZubUmsatzFr,loc_DlUmsatzFr,
my_mwstsonst,my_erlsonst,my_erlsonstfrei,m_BerKm,0,m_Gezahlt,my_Zahlungsart,m_Kst,m_KstFil, m_GeschBer,
p_AUSLAGENTEXT,
p_BEMERKUNG1,p_BEMERKUNG2,p_BEMERKUNG3,p_BEMERKUNG4,p_BEMERKUNG5,p_BEMERKUNG6,'F','F',
TO_DATE(TO_CHAR(my_BBEGINN,Loc_NLSDate) || TO_CHAR(my_BBEGINN,Loc_NLSTime),Loc_NLSDate||Loc_NLSTime),
TO_DATE(p_BENDE || p_BENDEUHR,Loc_NLSDate||Loc_NLSTime),
TO_DATE(TO_CHAR(Rec_Auftrag.MBEGINN,Loc_NLSDate) || TO_CHAR(Rec_Auftrag.MBUHR,Loc_NLSTime),Loc_NLSDate||Loc_NLSTime),
TO_DATE(TO_CHAR(Rec_Auftrag.MENDE,Loc_NLSDate) || TO_CHAR(Rec_Auftrag.MEUHR,Loc_NLSTime),Loc_NLSDate||Loc_NLSTime),
my_ProvBasis,my_ProvSatz,my_ProvKonto,
Rec_Auftrag.TARIFTYP,Rec_Auftrag.TARIFTYP,p_HDLNR,NVL(p_USERNR,0), Rec_Auftrag.ABKM, Rec_Auftrag.ABKM, Rec_Auftrag.TARIFBEZ,
0.0/*Rec_Auftrag.GRUNDBETRAG*/, m_PREIS1, m_FAKTOR1, m_EINHEIT1, Rec_Auftrag.MEHRFACH, Rec_Auftrag.INCLKM1, m_INCLANZKM1, m_DMKM, Rec_Auftrag.INCLCDW, m_DMCDW, Rec_Auftrag.INCLPAI, m_DMPAI,
m_PREIS2, m_FAKTOR2, m_EINHEIT2, m_INCLANZKM2, Rec_Auftrag.INCLCDW2, m_DMCDW2, Rec_Auftrag.INCLPAI2, m_DMPAI2, NVL(my_Kulanz,0),
rec_Auftrag.BERECHGRP,rec_Auftrag.BERECHGRP,my_FZKLASSE, my_FZSTAT, my_FZOWNER, rec_Auftrag.FZTARIFFZART, rec_Auftrag.FZTARIFAUS,
NULL, 'F', 'W', m_MitZub,'W',Rec_Auftrag.MANUELL,Rec_Auftrag.MANUELL,Rec_Auftrag.GKREF,Rec_Auftrag.PRIVAT, my_ktomwst, my_ktomwst2, Rec_Auftrag.UNFALLERSATZ, Rec_Auftrag.HDLNR,
Rec_Auftrag.AUFTRNREXT, m_MwStSL, my_F2GO,
Rec_Auftrag.RABATT, Rec_Auftrag.RABATTZL, Rec_Auftrag.MAXRABATT,my_ZahlTag,
my_MK,my_ST,my_KST,my_AK,my_KT,my_MKA,my_STA,my_KSTA,my_AKA,my_KTA,my_MKFV,my_STFV,my_KSTFV,my_AKFV,my_KTFV,my_UST,my_KSTMOBI,
my_KtoAbwDeb, my_FremdVWSoll, my_FremdVWHaben,
my_Referenz, my_ReferenzArt,'W',
my_PayToken, my_TransToken, Rec_Auftrag.MVART);
-- Zubeh�r updaten, Tage und Betr�
END;
PROCEDURE GetKontierung IS
PROCEDURE FromKtoTemplate IS
BEGIN
my_erlmiet :=rec_firmatmpl.ERLMIET;
my_erlkm :=rec_firmatmpl.ERLKM;
my_erlschmal :=rec_firmatmpl.ERLSCHMAL;
my_erlschmal1 :=rec_firmatmpl.ERLSCHMAL1;
my_erlschmal2 :=rec_firmatmpl.ERLSCHMAL2;
my_erlkraft :=rec_firmatmpl.ERLKRAFT;
my_erlbetank :=rec_firmatmpl.ERLBETANK;
my_erlsonst :=rec_firmatmpl.ERLSONST;
my_erlsonstfrei :=rec_firmatmpl.ERLFREISONST;
my_erlvers :=rec_firmatmpl.ERLVERS;
my_erlintern :=rec_firmatmpl.MIETINTERN;
my_kmintern :=rec_firmatmpl.KMINTERN;
my_versintern :=rec_firmatmpl.VERSINTERN;
my_kraftintern :=rec_firmatmpl.KRAFTINTERN;
my_betankintern :=rec_firmatmpl.BETANKINTERN;
my_sonstintern :=rec_firmatmpl.SONSTINTERN;
my_erlmobi :=rec_firmatmpl.ERLMOBI;
my_provkonto :=rec_firmatmpl.AUFPROV;
my_fremdvwsoll :=rec_firmatmpl.FREMDVWSOLL; -- wird �berschrieben, wenn FremdVw
my_fremdvwhaben :=rec_firmatmpl.FREMDVWSOLL;
--m_vtrkonto :=rec_firmatmpl.VTRKONTO;
my_Mk :=rec_firmatmpl.MK;
my_St :=rec_firmatmpl.ST;
my_Kst :=rec_firmatmpl.KST;
--my_Ak :=rec_firmatmpl.AK;
my_Kt :=rec_firmatmpl.KT;
my_KstMobi :=rec_firmatmpl.KSTMOBI;
my_MkA :=0;
my_StA :=0;
my_KstA :=0;
my_AkA :=0;
my_KtA :=0;
my_MkFV :=rec_firmatmpl.MK;
my_StFV :=rec_firmatmpl.ST;
my_KstFV :=rec_firmatmpl.KST;
--my_AkFV :=rec_firmatmpl.AK;
my_KtFV :=rec_firmatmpl.KT;
SELECT ABWDEBKONTO
INTO my_ktoabwdeb
FROM ADRESSEN
WHERE HDLNR =p_HDLNR
AND ART ='K'
AND NUMMER=my_Debitor;
END;
PROCEDURE FromKtoTemplateFV IS
BEGIN
my_MkFV :=rec_firmatmpl.MK;
my_StFV :=rec_firmatmpl.ST;
my_KstFV :=rec_firmatmpl.KST;
--my_AkFV :=rec_firmatmpl.AK;
my_KtFV :=rec_firmatmpl.KT;
my_fremdvwhaben :=rec_firmatmpl.FREMDVWSOLL;
END;
BEGIN
SELECT ERLMIET, ERLKM, ERLSCHMAL, ERLSCHMAL1, ERLSCHMAL2, ERLKRAFT, ERLBETANK, ERLSONST, ERLFREISONST, ERLVERS,
ERLINTERN, KMINTERN, VERSINTERN, SONSTINTERN, KRAFTINTERN, BETANKINTERN,
ERLMOBI, AUFPROV, KTOMWST, KTOMWST2, VTRKONTO, KONZERNZUGR, ZAHLTAG, SEPATAGE, HATFZGKSTSTELLE, HATKTOTEMPLATE
INTO my_erlmiet, my_erlkm, my_erlschmal, my_erlschmal1, my_erlschmal2, my_erlkraft, my_erlbetank, my_erlsonst, my_erlsonstfrei, my_erlvers,
my_erlintern, my_kmintern, my_versintern, my_sonstintern, my_kraftintern, my_betankintern,
my_erlmobi, my_ProvKonto, my_ktomwst, my_ktomwst2, my_VtrKonto, m_konzernzugr, my_ZahlTag, my_SepaZahlTag, my_HatFzKst, my_HatKtoTempl
FROM FIRMA F, FIRMAPARAM FP
WHERE F.HDLNR=p_HDLNR AND FP.HDLNR=p_HDLNR;
my_MkFV :=my_MK;
my_StFV :=my_ST;
my_KstFV :=my_KST;
my_AkFV :=my_AK;
my_KtFV :=my_KT;
SELECT COUNT(HDLNR)
INTO m_Cnt
FROM FIRMAKTO
WHERE HDLNR=p_HDLNR;
IF m_Cnt=1
THEN SELECT *
INTO Rec_FIRMAKTO
FROM FIRMAKTO
WHERE HDLNR=p_HDLNR;
IF Rec_FirmaKto.USESKR='W'
THEN my_erlmiet :=rec_firmakto.ERLMIET;
my_erlkm :=rec_firmakto.ERLKM;
my_erlschmal :=rec_firmakto.ERLSCHMAL;
my_erlschmal1 :=rec_firmakto.ERLSCHMAL1;
my_erlschmal2 :=rec_firmakto.ERLSCHMAL2;
my_erlkraft :=rec_firmakto.ERLKRAFT;
my_erlbetank :=rec_firmakto.ERLBETANK;
my_erlsonst :=rec_firmakto.ERLSONST;
my_erlsonstfrei :=rec_firmakto.ERLFREISONST;
my_erlvers :=rec_firmakto.ERLVERS;
my_erlintern :=rec_firmakto.ERLINTERN;
my_kmintern :=rec_firmakto.KMINTERN;
my_versintern :=rec_firmakto.VERSINTERN;
my_kraftintern :=rec_firmakto.KRAFTINTERN;
my_betankintern :=rec_firmakto.BETANKINTERN;
my_sonstintern :=rec_firmakto.SONSTINTERN;
my_erlmobi :=rec_firmakto.ERLMOBI;
my_provkonto :=rec_firmakto.AUFPROV;
my_ktomwst :=rec_firmakto.KTOMWST;
my_ktomwst2 :=rec_firmakto.KTOMWST2;
my_vtrkonto :=rec_firmakto.VTRKONTO;
my_Mk :=rec_firmakto.MK;
my_St :=rec_firmakto.ST;
my_Kst :=rec_firmakto.KST;
my_Ak :=rec_firmakto.AK;
my_Kt :=rec_firmakto.KT;
my_KstMobi :=rec_firmakto.KSTMOBI;
my_MkA :=0;
my_StA :=0;
my_KstA :=0;
my_AkA :=0;
my_KtA :=0;
my_MkFV :=rec_firmakto.MK;
my_StFV :=rec_firmakto.ST;
my_KstFV :=rec_firmakto.KST;
my_AkFV :=rec_firmakto.AK;
my_KtFV :=rec_firmakto.KT;
END IF;
END IF;
IF NVL(my_HatKtoTempl,'F')='W'
THEN -- Standard
SELECT COUNT(HDLNR)
INTO m_Cnt
FROM FIRMAKTOTEMPL
WHERE HDLNR =p_HDLNR
AND TARIFFZART IS NULL
AND STANDARD='W';
IF m_Cnt=1
THEN SELECT *
INTO Rec_FIRMATMPL
FROM FIRMAKTOTEMPL
WHERE HDLNR =p_HDLNR
AND TARIFFZART IS NULL
AND STANDARD='W';
FromKtoTemplate;
END IF;
-- Standard f�r Gruppe
SELECT COUNT(HDLNR)
INTO m_Cnt
FROM FIRMAKTOTEMPL
WHERE HDLNR =p_HDLNR
AND TARIFFZART=my_FzTarifFzArt
AND STANDARD='W';
IF m_Cnt=1
THEN SELECT *
INTO Rec_FIRMATMPL
FROM FIRMAKTOTEMPL
WHERE HDLNR =p_HDLNR
AND TARIFFZART=my_FzTarifFzArt
AND STANDARD='W';
FromKtoTemplate;
END IF;
-- Fahrzeugspezifisch
SELECT COUNT(HDLNR)
INTO m_Cnt
FROM FIRMAKTOTEMPL
WHERE HDLNR =p_HDLNR
AND NUMMER =my_FzKtoTempl;
IF m_Cnt=1
THEN SELECT *
INTO Rec_FIRMATMPL
FROM FIRMAKTOTEMPL
WHERE HDLNR =p_HDLNR
AND NUMMER =my_FzKtoTempl;
FromKtoTemplate;
END IF;
-- ggf. abweichende Verwendung f�llen my_FzTarifFzArt<>p_TARIFFZART
IF my_FzTarifFzart<>Rec_Auftrag.FZTARIFFZART
THEN SELECT COUNT(HDLNR)
INTO m_Cnt
FROM FIRMAKTOTEMPL
WHERE HDLNR =p_HDLNR
AND TARIFFZART=Rec_Auftrag.FZTARIFFZART
AND STANDARD='W';
IF m_Cnt=1
THEN SELECT *
INTO Rec_FIRMATMPL
FROM FIRMAKTOTEMPL
WHERE HDLNR =p_HDLNR
AND TARIFFZART=Rec_Auftrag.FZTARIFFZART
AND STANDARD='W';
FromKtoTemplateFV;
END IF;
END IF;
END IF;
END;
BEGIN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin(p_HDLNR => p_HDLNR);
RETURN;
END IF;
my_rechnr :=TO_NUMBER(p_USERNR,999) * -1.0;
my_usrrechnr:=TO_NUMBER(p_USERNR,999) * -1.0;
DELETE FROM RECHNUNG WHERE HDLNR=p_HDLNR AND RECHNR=my_rechnr;
-- DELETE FROM RECHADR WHERE HDLNR=p_HDLNR AND RECHNR=my_rechnr;
DELETE FROM RECHZUBPOS WHERE HDLNR=p_HDLNR AND RECHNR=my_rechnr;
COMMIT;
SELECT *
INTO Rec_Auftrag
FROM AUFTRAG
WHERE HDLNR =p_HDLNR AND
KENNUNG='A' AND
AUFTRNR=p_AUFTRNR;
my_PRIVAT:=Rec_Auftrag.PRIVAT;
m_Kst :=Rec_Auftrag.KOSTENSTELLE;
SELECT COUNT(RECHNR)
INTO m_Cnt
FROM RECHADR
WHERE HDLNR =p_HDLNR
AND RECHNR=my_RechNr;
IF m_Cnt=0
THEN SELECT COUNT(RECHNR)
INTO m_Cnt
FROM RECHADR
WHERE HDLNR =p_HDLNR
AND RECHNR=p_AUFTRNR
AND RECHART='M';
IF m_Cnt>0
THEN SELECT *
INTO Rec_RechAdr
FROM RECHADR
WHERE HDLNR =p_HDLNR
AND RECHNR=p_AUFTRNR
AND RECHART='M';
Rec_RechAdr.RechNr :=my_RechNr;
Rec_RechAdr.RechArt:='R';
INSERT INTO RECHADR
VALUES Rec_RechAdr;
END IF;
END IF;
GetLastDate;
IF my_LastDate IS NULL
THEN my_BBeginn:=TO_DATE(TO_CHAR(Rec_Auftrag.BBEGINN,'ddmmyyyy')||TO_CHAR(Rec_Auftrag.BBUHR,'HH24MI'),'ddmmyyyyHH24MI');
ELSE my_BBeginn:=my_LastDate+(1/1440);
END IF;
my_Kulanz:=Rec_Auftrag.KULANZ;
IF Rec_Auftrag.EINHEIT1=0
THEN my_Kulanz:=0;
END IF;
-- Unfallersatz
IF SUBSTR(Rec_AUFTRAG.TARIFTYP,2,2)='06'
THEN AUFTRTOOLS.DoRechnen(p_BBEGINN =>my_BBEGINN,
p_BBUHR =>TO_CHAR(my_BBEGINN,Loc_NLSTime),
p_BENDE =>TO_DATE(p_BENDE,Loc_NLSDate),
p_BEUHR =>p_BENDEUHR,
p_MEHRFACH =>Rec_Auftrag.MEHRFACH,
p_EINHEIT1 =>Rec_Auftrag.EINHEIT1,
p_EINHEIT2 =>Rec_Auftrag.EINHEIT2,
p_FAKTOR1 =>Rec_Auftrag.FAKTOR1,
p_FAKTOR2 =>Rec_Auftrag.FAKTOR2,
p_INCLKM1 =>Rec_Auftrag.INCLKM1,
p_ANKM =>m_BerKm,
p_ABKM =>0,
p_INCLANZKM1 =>0,
p_INCLANZKM2 =>0,
p_KULANZ =>my_Kulanz,--Rec_Auftrag.KULANZ,
p_LANGZEIT =>Rec_Auftrag.LANGZEIT,
p_ZWIRECH =>'W', -- muss Anzahl der Zwirechs werden
p_ABRTYP =>m_AbrTyp,
p_BERKM =>m_BerKm,
p_ANZSTD =>m_AnzStd,
p_ECHTETAGE =>m_EchteTage,
p_DAUER =>m_Dauer,
p_REST =>m_Rest,
p_FREIKM =>m_FreiKm,
p_FREIKM1 =>m_FreiKm1);
RECHNTOOLS.DoChangeUnf6(p_HDLNR,p_FILNR,
p_KENNUNG,
p_AUFTRNR,
m_EchteTage);
SELECT *
INTO Rec_Auftrag
FROM AUFTRAG -- neu lesen
WHERE HDLNR =p_HDLNR AND
KENNUNG='A' AND
AUFTRNR=p_AUFTRNR;
END IF; -- Unfallersatz neue Tage
IF --(Rec_Auftrag.FAHRGESTELL<>'') AND
(Rec_Auftrag.FAHRGESTELL<>'-') AND
(Rec_Auftrag.FAHRGESTELL IS NOT NULL)
THEN SELECT TARIFTYP, FZSTAT, HDLNR, FZART, TARIFFZART, FREI_193--KTOTEMPL
INTO my_FZKLASSE, my_FZSTAT, my_FZOWNER, my_FZART, my_FZTARIFFZART, my_FZKTOTEMPL
FROM FAHRZEUG
WHERE FAHRGESTELL= Rec_Auftrag.FAHRGESTELL
AND ZULASSUNG = Rec_Auftrag.ZULASSUNG;
END IF;
IF Rec_Auftrag.DMSSOURCE='F1' -- Free2Go, Rechnungsflag nach AuftragsArt, nicht Fahrzeug!
THEN my_F2GO:='W';
ELSE my_F2GO:='F';
END IF;
-- Plausi
IF TO_DATE(p_BENDE || p_BENDEUHR,Loc_NLSDate || Loc_NLSTime) <
TO_DATE(TO_CHAR(Rec_Auftrag.BBEGINN,Loc_NLSDate) || TO_CHAR(Rec_Auftrag.BBUHR,Loc_NLSTime),Loc_NLSDate || Loc_NLSTime)
THEN m_errortext:='* ' || Xtool.OutMeldung(p_HDLNR,'mietzwi',1,'');
m_OP:='E';
END IF;
IF TO_DATE(p_BENDE || p_BENDEUHR,Loc_NLSDate || Loc_NLSTime) <= my_LastDate
THEN m_errortext:='* ' || Xtool.OutMeldung(p_HDLNR,'mietzwi',3,'');
m_OP:='E';
END IF;--fja
IF p_DOAUTO IS NULL THEN
IF TO_DATE(p_BENDE || p_BENDEUHR,Loc_NLSDate || Loc_NLSTime) >
TO_DATE(TO_CHAR(Rec_Auftrag.MENDE,Loc_NLSDate) || TO_CHAR(Rec_Auftrag.MEUHR,Loc_NLSTime),Loc_NLSDate || Loc_NLSTime)
THEN m_errortext:='* ' || Xtool.OutMeldung(p_HDLNR,'mietzwi',2,'');
m_OP:='E';
END IF;
END IF;
-- Plausi Ende
IF m_OP='E' AND p_DOAUTO IS NOT NULL
THEN RETURN;
END IF;
IF m_OP='0'
THEN SELECT RECHNR, LIEFERNR, MWSTMIET, ERLMIET, ERLKM, ERLSCHMAL, ERLSCHMAL1, ERLSCHMAL2, MWSTKRAFT, ERLKRAFT, ERLBETANK,
MWSTSONST, ERLSONST, ERLFREISONST, MWSTVERSCDW, MWSTVERSPAI, MWSTVERSTP, ERLVERS, AUFPROV,
ERLINTERN, KMINTERN, KRAFTINTERN, BETANKINTERN, VERSINTERN, SONSTINTERN, ERLMOBI, KTOMWST, KTOMWST2, KONZERNZUGR, ZAHLTAG, SEPATAGE,
CASHTYP
INTO my_rechnr, my_LieferNr, my_mwstmiet, my_erlmiet, my_erlkm, my_erlschmal, my_erlschmal1, my_erlschmal2, my_mwstkraft, my_erlkraft, my_erlbetank,
my_mwstsonst, my_erlsonst, my_erlsonstfrei, my_mwstverscdw, my_mwstverspai, my_mwstverstp, my_erlvers, my_ProvKonto,
my_erlintern, my_kmintern, my_kraftintern, my_betankintern, my_VersIntern, my_SonstIntern, my_erlmobi, my_ktomwst, my_ktomwst2, m_konzernzugr, my_ZahlTag, my_SepaZahlTag,
my_CashTyp
FROM FIRMA
WHERE HDLNR=p_HDLNR FOR UPDATE;
IF my_ZAHLUNGSART IN ('50','51')
THEN UPDATE FIRMA
SET LIEFERNR = LIEFERNR + 1
WHERE HDLNR=p_HDLNR;
my_RechNr :=my_LieferNr;
my_RechArt:='L';
ELSE UPDATE FIRMA
SET RECHNR = RECHNR + 1
WHERE HDLNR=p_HDLNR;
END IF;
COMMIT;
ELSE SELECT MWSTMIET, ERLMIET, ERLKM, ERLSCHMAL, ERLSCHMAL1, ERLSCHMAL2, MWSTKRAFT, ERLKRAFT, ERLBETANK,
MWSTSONST, ERLSONST, ERLFREISONST, MWSTVERSCDW, MWSTVERSPAI, MWSTVERSTP, ERLVERS, AUFPROV,
ERLINTERN, KMINTERN, KRAFTINTERN, BETANKINTERN, VERSINTERN, SONSTINTERN, ERLMOBI, KTOMWST, KTOMWST2, KONZERNZUGR, ZAHLTAG, SEPATAGE,
CASHTYP
INTO my_mwstmiet, my_erlmiet, my_erlkm, my_erlschmal, my_erlschmal1, my_erlschmal2, my_mwstkraft, my_erlkraft, my_erlbetank,
my_mwstsonst, my_erlsonst, my_erlsonstfrei, my_mwstverscdw, my_mwstverspai, my_mwstverstp, my_erlvers, my_ProvKonto,
my_erlintern, my_kmintern, my_kraftintern, my_betankintern, my_VersIntern, my_SonstIntern, my_erlmobi, my_ktomwst, my_ktomwst2, m_konzernzugr, my_ZahlTag, my_SepaZahlTag,
my_CashTyp
FROM FIRMA
WHERE HDLNR=p_HDLNR;
END IF;
/* SELECT COUNT(HDLNR) INTO m_Cnt FROM FIRMAKTO
WHERE HDLNR=p_HDLNR;
IF m_Cnt=1
THEN SELECT *
INTO Rec_FIRMAKTO
FROM FIRMAKTO
WHERE HDLNR=p_HDLNR;
IF Rec_FirmaKto.USESKR='W'
THEN my_erlmiet :=rec_firmakto.ERLMIET;
my_erlkm :=rec_firmakto.ERLKM;
my_erlschmal :=rec_firmakto.ERLSCHMAL;
my_erlschmal1 :=rec_firmakto.ERLSCHMAL1;
my_erlschmal2 :=rec_firmakto.ERLSCHMAL2;
my_erlkraft :=rec_firmakto.ERLKRAFT;
my_erlbetank :=rec_firmakto.ERLBETANK;
my_erlsonst :=rec_firmakto.ERLSONST;
my_erlsonstfrei:=rec_firmakto.ERLFREISONST;
my_erlvers :=rec_firmakto.ERLVERS;
-- my_erlintern :=rec_firmakto.ERLINTERN;
-- my_erlkmintern :=rec_firmakto.ERLKMINTERN;
-- my_versintern :=rec_firmakto.VERSINTERN;
-- my_kraftintern :=rec_firmakto.KRAFTINTERN;
-- my_betankintern :=rec_firmakto.BETANKINTERN;
-- my_sonstintern :=rec_firmakto.SONSTINTERN;
-- my_erlmobi :=rec_firmakto.ERLMOBI;
my_provkonto :=rec_firmakto.AUFPROV;
my_ktomwst :=rec_firmakto.KTOMWST;
my_ktomwst2 :=rec_firmakto.KTOMWST2;
-- m_vtrkonto :=rec_firmakto.VTRKONTO;
my_Mk :=rec_firmakto.MK;
my_St :=rec_firmakto.ST;
my_Kst :=rec_firmakto.KST;
my_kstmobi :=rec_firmakto.KSTMOBI;
my_Ak :=rec_firmakto.AK;
my_Kt :=rec_firmakto.KT;
my_MkA :=0;
my_StA :=0;
my_KstA :=0;
my_AkA :=0;
my_KtA :=0;
my_MkFv :=rec_firmakto.MK;
my_StFV :=rec_firmakto.ST;
my_KstFv :=rec_firmakto.KST;
my_AkFv :=rec_firmakto.AK;
my_KtFv :=rec_firmakto.KT;
END IF;
END IF;
*/
m_error:='1';
IF m_OP<>'E'
THEN m_ZwiRech:='W';
IF Rec_Auftrag.LANGZEIT='W'
THEN SELECT COUNT(RECHNR)
INTO m_Cnt
FROM RECHNUNG
WHERE HDLNR =Rec_Auftrag.HDLNR
AND AUFTRNR=Rec_Auftrag.AUFTRNR
AND RECHNR > 0
AND ZWIRECH='W'
AND STNRECHNR IS NULL;
IF m_Cnt=0
THEN m_Zwirech:='1';
END IF;
END IF;
AUFTRTOOLS.DoRechnen(p_BBEGINN =>my_BBEGINN,
p_BBUHR =>TO_CHAR(my_BBEGINN,Loc_NLSTime),
p_BENDE =>TO_DATE(p_BENDE,Loc_NLSDate),
p_BEUHR =>p_BENDEUHR,
p_MEHRFACH =>Rec_Auftrag.MEHRFACH,
p_EINHEIT1 =>Rec_Auftrag.EINHEIT1,
p_EINHEIT2 =>Rec_Auftrag.EINHEIT2,
p_FAKTOR1 =>Rec_Auftrag.FAKTOR1,
p_FAKTOR2 =>Rec_Auftrag.FAKTOR2,
p_INCLKM1 =>Rec_Auftrag.INCLKM1,
p_ANKM =>m_BerKm,
p_ABKM =>0,
p_INCLANZKM1 =>0,
p_INCLANZKM2 =>0,
p_KULANZ =>my_Kulanz,--Rec_Auftrag.KULANZ,
p_LANGZEIT =>Rec_Auftrag.LANGZEIT,
p_ZWIRECH =>m_ZwiRech, -- ist 1, wenn erste ZwiRech bei Langzeit
p_ABRTYP =>m_AbrTyp,
p_BERKM =>m_BerKm,
p_ANZSTD =>m_AnzStd,
p_ECHTETAGE =>m_EchteTage,
p_DAUER =>m_Dauer,
p_REST =>m_Rest,
p_FREIKM =>m_FreiKm,
p_FREIKM1 =>m_FreiKm1);
END IF;
m_error:='3';
-- Umsatzerrechnung
m_PREIS1 :=Rec_Auftrag.PREIS1;
m_FAKTOR1 :=Rec_Auftrag.FAKTOR1;
m_EINHEIT1 :=Rec_Auftrag.EINHEIT1;
m_INCLANZKM1 :=Rec_Auftrag.INCLANZKM1;
m_DMKM :=Rec_Auftrag.DMKM;
m_DMCDW :=Rec_Auftrag.DMCDW;
m_DMPAI :=Rec_Auftrag.DMPAI;
m_PREIS2 :=Rec_Auftrag.PREIS2;
m_FAKTOR2 :=Rec_Auftrag.FAKTOR2;
m_EINHEIT2 :=Rec_Auftrag.EINHEIT2;
m_INCLANZKM2 :=Rec_Auftrag.INCLANZKM2;
m_DMCDW2 :=Rec_Auftrag.DMCDW2;
m_DMPAI2 :=Rec_Auftrag.DMPAI2;
IF Rec_Auftrag.LANGZEIT='W' AND
(m_Zwirech='1' OR TO_CHAR(Rec_Auftrag.BENDE,Loc_NLSDate)=p_BENDE) -- erste Rg, Anteilig auf Monat, oder letzte Rg in dem Monat
THEN IF Rec_Auftrag.EINHEIT1='3' -- Monatstarif
THEN m_Preis2 :=m_Preis1 / 30;
m_DMCDW2 :=m_DMCDW / 30;
m_DMPAI2 :=m_DMPAI / 30;
m_EINHEIT2:='0';
m_FAKTOR2 :=1;
END IF;
/* IF Rec_Auftrag.EINHEIT1='0' AND-- Tagestarif
Rec_Auftrag.FAKTOR1 >1 AND
TO_CHAR(my_BBEGINN,'mm')=TO_CHAR(TO_DATE(p_BENDE,Loc_NLSDate),'mm')
THEN my_ErsterTag :=TO_CHAR(my_BBEGINN,'dd');
my_LetzterTag:=TO_CHAR(TO_DATE(p_BENDE,Loc_NLSDate),'dd');
my_LetzterMon:=TO_CHAR(LAST_DAY(SYSDATE),'dd');
IF my_ErsterTag='01' AND
my_LetzterTag=my_LetzterMon -- ganzer Monat
THEN IF my_LetzterMon IN ('28','29')
THEN m_Dauer :=m_EchteTage;
m_Rest :=0;
m_Preis1 :=m_Preis2;
m_Preis2 :=0.0;
m_Faktor1 :=1;
m_DMCdw :=m_DMCdw2;
m_DMPai :=m_DMPai2;
ELSE NULL; -- nichts tun
END IF;
END IF;
IF (my_ErsterTag='01' AND
my_LetzterTag<>my_LetzterMon) OR
(my_ErsterTag<>'01') -- anteiliger Monat
THEN m_Dauer :=m_EchteTage;
m_Rest :=0;
m_Preis1 :=m_Preis2;
m_Preis2 :=0.0;
m_Faktor1 :=1;
m_DMCdw :=m_DMCdw2;
m_DMPai :=m_DMPai2;
END IF;
END IF;*/
END IF;
--htp.p(m_dauer);
--htp.p(m_rest); return;
m_VermUmsatz := --Rec_Auftrag.GRUNDBETRAG +
(m_Dauer * m_PREIS1) + (m_Rest * m_PREIS2);
m_KmUmsatz := m_BerKm * m_DMKM;
IF Rec_Auftrag.CDW='W'
THEN m_CDWUmsatz := (m_Dauer * m_DMCDW) + (m_Rest * m_DMCDW2);
ELSE m_CDWUmsatz := 0.0;
END IF;
IF Rec_Auftrag.PAI='W'
THEN m_PAIUmsatz := (m_Dauer * m_DMPAI) + (m_Rest * m_DMPAI2);
ELSE m_PAIUmsatz := 0.0;
END IF;
-- Ende Umsatzerrechnung
m_error:='4';
IF Rec_Auftrag.TRANSPORTVRS>0 THEN
BEGIN
SELECT *
INTO Rec_Trans
FROM TRANSPOR
WHERE HDLNR=m_konzernzugr AND
NR=Rec_Auftrag.TRANSPORTVRS;
m_TrpUmsatz := Rec_Trans.WOCHE1;
IF m_EchteTage>7 THEN m_TrpUmsatz := Rec_Trans.WOCHE2; END IF;
IF m_EchteTage>14 THEN m_TrpUmsatz := Rec_Trans.WOCHE3; END IF;
IF m_EchteTage>21 THEN m_TrpUmsatz := Rec_Trans.WOCHE4; END IF;
EXCEPTION
WHEN OTHERS
THEN NULL;
END;
END IF;
-- fja, Debitor ggf. aus RechAdr
IF Rec_Auftrag.DEBITOR>0 THEN
BEGIN
SELECT MWST, ZAHLTAG, SEPADATUM, EINZUG
INTO m_MwStSL, my_KdZahlTag, my_KdSepaDatum, my_Einzug
FROM ADRESSEN
WHERE HDLNR =p_HDLNR
AND UPPER(ART)='K'
AND NUMMER=Rec_Auftrag.DEBITOR;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
END IF;
-- MwSt kennzeichen ggf. aus Rechnungsadresse
SELECT COUNT (rechnr) INTO cntRech FROM RECHADR
WHERE HDLNR =p_HDLNR AND
RECHNR =TO_NUMBER(p_USERNR,999) * -1.0 AND
RECHART='R';
my_Debitor:=Rec_Auftrag.Debitor;
IF cntRech=1
THEN SELECT *
INTO Rec_RechAdr
FROM RECHADR
WHERE HDLNR =p_HDLNR AND
RECHNR=TO_NUMBER(p_USERNR,999) * -1.0 AND
RECHART='R';
my_Privat :=Rec_RechAdr.PRIVAT;
my_Debitor:=Rec_RechAdr.DEBITOR;
m_MwstSl :=Rec_RechAdr.MITMWST;
SELECT ZAHLTAG, SEPADATUM, EINZUG
INTO my_KdZahlTag, my_KdSepaDatum, my_Einzug
FROM ADRESSEN
WHERE HDLNR =p_HDLNR
AND UPPER(ART)='K'
AND NUMMER=my_Debitor;
END IF;
-- pr�fen, ob ggf Adressdaten ge�ert wurden, dann Update/Create RechAdr
IF APP_CONST.C_FUNC_ZWIADRCHECK='W' THEN
BEGIN
SELECT *
INTO Rec_Adressen
FROM ADRESSEN
WHERE HDLNR=p_HDLNR
AND ART ='K' -- nicht Upper, pr�fen nur bei aktuellem Satz
AND NUMMER=my_Debitor;
EXCEPTION WHEN OTHERS THEN NULL;
END;
IF cntRech>0
THEN IF Rec_Adressen.ANREDE <>Rec_RechAdr.ANREDE OR
Rec_Adressen.NAME1 <>Rec_RechAdr.NAME1 OR
Rec_Adressen.NAME2 <>Rec_RechAdr.NAME2 OR
Rec_Adressen.NAME3 <>Rec_RechAdr.NAME3 OR
Rec_Adressen.STRASSE <>Rec_RechAdr.STRASSE OR
Rec_Adressen.HAUSNR <>Rec_RechAdr.HAUSNR OR
Rec_Adressen.STRASSE2<>Rec_RechAdr.STRASSE2 OR
Rec_Adressen.PLZ <>Rec_RechAdr.PLZ OR
Rec_Adressen.ORT <>Rec_RechAdr.ORT OR
Rec_Adressen.ORTSTEIL<>Rec_RechAdr.ORTSTEIL OR
Rec_Adressen.TYP <>Rec_RechAdr.PRIVAT OR
Rec_Adressen.MWST <>Rec_RechAdr.MITMWST
THEN Rec_RechAdr.PRIVAT :=Rec_Adressen.TYP;
Rec_RechAdr.ANREDE :=Rec_Adressen.ANREDE;
Rec_RechAdr.NAME1 :=Rec_Adressen.NAME1;
Rec_RechAdr.NAME2 :=Rec_Adressen.NAME2;
Rec_RechAdr.NAME3 :=Rec_Adressen.NAME3;
Rec_RechAdr.STRASSE :=Rec_Adressen.STRASSE;
Rec_RechAdr.STRASSE2:=Rec_Adressen.STRASSE2;
Rec_RechAdr.HAUSNR :=Rec_Adressen.HAUSNR;
Rec_RechAdr.PLZ :=Rec_Adressen.PLZ;
Rec_RechAdr.ORT :=Rec_Adressen.ORT;
Rec_RechAdr.ORTSTEIL:=Rec_Adressen.ORTSTEIL;
Rec_RechAdr.MITMWST :=Rec_Adressen.MWST;
UPDATE RECHADR
SET ROW=Rec_RechAdr
WHERE HDLNR =p_HDLNR AND
RECHNR=TO_NUMBER(p_USERNR,999) * -1.0 AND
RECHART='R';
END IF;
ELSE IF Rec_Adressen.ANREDE <>Rec_Auftrag.ANREDE OR
Rec_Adressen.NAME1 <>Rec_Auftrag.NAME1 OR
Rec_Adressen.NAME2 <>Rec_Auftrag.NAME2 OR
Rec_Adressen.NAME3 <>Rec_Auftrag.NAME3 OR
Rec_Adressen.STRASSE <>Rec_Auftrag.STRASSE OR
Rec_Adressen.HAUSNR <>Rec_Auftrag.HAUSNR OR
Rec_Adressen.STRASSE2<>Rec_Auftrag.STRASSE2 OR
Rec_Adressen.PLZ <>Rec_Auftrag.PLZ OR
Rec_Adressen.ORT <>Rec_Auftrag.ORT OR
Rec_Adressen.ORTSTEIL<>Rec_Auftrag.ORTSTEIL OR
Rec_Adressen.TYP <>Rec_Auftrag.PRIVAT
THEN Rec_RechAdr.PRIVAT :=Rec_Adressen.TYP;
Rec_RechAdr.ANREDE :=Rec_Adressen.ANREDE;
Rec_RechAdr.NAME1 :=Rec_Adressen.NAME1;
Rec_RechAdr.NAME2 :=Rec_Adressen.NAME2;
Rec_RechAdr.NAME3 :=Rec_Adressen.NAME3;
Rec_RechAdr.STRASSE :=Rec_Adressen.STRASSE;
Rec_RechAdr.STRASSE2:=Rec_Adressen.STRASSE2;
Rec_RechAdr.HAUSNR :=Rec_Adressen.HAUSNR;
Rec_RechAdr.PLZ :=Rec_Adressen.PLZ;
Rec_RechAdr.ORT :=Rec_Adressen.ORT;
Rec_RechAdr.ORTSTEIL:=Rec_Adressen.ORTSTEIL;
Rec_RechAdr.MITMWST :=Rec_Adressen.MWST;
Rec_RechAdr.DEBITOR :=Rec_Adressen.NUMMER;
Rec_RechAdr.EGSTEUER :=Rec_Adressen.EGSTEUER;
Rec_RechAdr.STEUERNR :=Rec_Adressen.STEUERNR;
Rec_RechAdr.KOSTENSTELLE:=Rec_Adressen.KST;
Rec_RechAdr.GKREF :=Rec_Adressen.GKREF;
Rec_RechAdr.KDTARIF :=Rec_Adressen.STDTARIF;
Rec_RechAdr.PDFRECHNUNG :=Rec_Adressen.PDFRECHNUNG;
Rec_RechAdr.PDFEMAIL :=Rec_Adressen.PDFEMAIL;
Rec_RechAdr.HDLNR :=p_HDLNR;
Rec_RechAdr.RECHNR :=TO_NUMBER(p_USERNR,999) * -1.0;
Rec_RechAdr.RECHART :='R';
INSERT INTO RECHADR VALUES Rec_RechAdr;
END IF;
END IF;
END IF;--App_Const
--
SetMwstParams;
BEGIN
SELECT KSTSTELLE, GESCHBEREICH, ST INTO m_KstFil, m_GeschBer, m_FilSt FROM PARTNER
WHERE HDLNR=Rec_Auftrag.HDLNR AND
NR =SUBSTR(Rec_Auftrag.HDLNR,1,3) || ';' || SUBSTR(Rec_Auftrag.HDLNR,4,5) || ';' || Rec_Auftrag.FILNR;
EXCEPTION
WHEN OTHERS THEN m_KstFil:=0; m_FilSt:=0;
END;
IF m_FilSt>0
THEN my_St:=m_FilSt;
END IF;
m_error:='5';
m_KraftUmsatz :=0.0;
m_ZubUmsatz :=0.0;
m_DlUmsatz :=0.0;
m_ZubUmsatzFr :=0.0;
m_DlUmsatzFr :=0.0;
m_SonstUmsatz := NVL(TO_NUMBER(p_SONST,Loc_NLSBetr,Loc_NLSWert),0);
m_SonstUmsatzFr:= NVL(TO_NUMBER(p_SONSTFR,Loc_NLSBetr,Loc_NLSWert),0);
IF p_BRUTTO='W'
THEN m_SonstUmsatz:= round((m_SonstUmsatz/ ((my_mwstsonst + 100) / 100)) * 100) / 100;
END IF;
-- Zwischensummen errechnen, �ergabe an Zubeh�r
m_zw1:=m_VermUmsatz + m_KmUmsatz - m_ErlSchmal;
m_zw2:=m_Zw1+m_CDWUmsatz + m_PAIUmsatz + m_TrpUmsatz - m_ErlSchmal2;
RECHNTOOLS.DoZubehor(p_HDLNR => p_HDLNR,
p_RECHART => my_RechArt,
p_USERNR => p_USERNR,
p_AUFTRNR => p_AUFTRNR,
p_PAUSCHAL => 'F',
p_TAGE => m_EchteTage, -- ist hier nur Abrechnungszeitraum
p_BBEGINN => TRUNC(my_BBEGINN),
p_BENDE => TO_DATE(p_BENDE,Loc_NLSDate),
p_DOUPDATE => m_OP,
p_SUMME => m_ZubUmsatz,
p_SUMMEDL => m_DlUmsatz,
p_SUMMEFR => m_ZubUmsatzFr,
p_SUMMEDLFR=> m_DlUmsatzFr);
RECHNTOOLS.DoZubehor(p_HDLNR => p_HDLNR,
p_RECHART => my_RechArt,
p_USERNR => p_USERNR,
p_AUFTRNR => p_AUFTRNR,
p_PAUSCHAL => 'W',
p_ZWIRECH => m_ZwiRech,
p_TAGE => m_EchteTage, -- ist hier nur Abrechnungszeitraum
p_BBEGINN => TRUNC(my_BBEGINN),
p_BENDE => TO_DATE(p_BENDE,Loc_NLSDate),
p_DOUPDATE => m_OP,
p_SUMME => m_ZubUmsatzP,
p_SUMMEDL => m_DlUmsatzP,
p_SUMMEFR => m_ZubUmsatzPFr,
p_SUMMEDLFR=> m_DlUmsatzPFr);
m_ZubUmsatz :=m_ZubUmsatz +m_ZubUmsatzP;
m_ZubUmsatzFr:=m_ZubUmsatzFr+m_ZubUmsatzPFr;
m_DlUmsatz :=m_DlUmsatz +m_DlUmsatzP;
m_DlUmsatzFr :=m_DlUmsatzFr +m_DlUmsatzPFr;
RECHNTOOLS.DoZubAufschlag(p_HDLNR => p_HDLNR,
p_RECHART => my_RechArt,
p_AUFTRNR => p_AUFTRNR,
p_RECHNR => TO_NUMBER(p_USERNR,999) * -1.0,
p_ECHTETAGE=> m_EchteTage,
p_ZW1 => m_Zw1,
p_ZW2 => m_Zw2,
p_SONST => m_DlUmsatz + m_DlUmsatzFr + m_ZubUmsatz + m_ZubUmsatzFr,
p_SUMMEDL => m_DlUmsatzA,
p_SUMMEDLFR=> m_DlUmsatzAFr);
m_DlUmsatz :=m_DlUmsatz +m_DlUmsatzA;
m_DlUmsatzFr :=m_DlUmsatzFr +m_DlUmsatzAFr;
-- Zubeh�r
m_error:='7';
IF NVL(Rec_Auftrag.VERMITTLER,0)>0
THEN BEGIN
SELECT PROVISION, BASIS
INTO my_PROVSATZ, my_BASIS
FROM ADRESSEN
WHERE HDLNR = p_HDLNR
AND ART = 'M'
AND NUMMER= Rec_Auftrag.VERMITTLER;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
END IF;
GetKontierung;
IF SUBSTR(rec_auftrag.TARIFTYP,2,2)='08'
THEN my_erlmiet:=my_erlmobi;
my_erlkm :=my_erlmobi;
END IF;
IF p_ZAHLUNGSART='4'
THEN my_erlmiet:=my_erlintern;
my_erlkm :=my_kmintern;
END IF;
IF Rec_FirmaKto.USESKR='W' THEN
my_Ak:=10;
IF my_PRIVAT='F'
THEN my_Ak:=20;
END IF;
my_AkFv:=my_Ak;
-- fja Hier erst Firma update, neue my_rechnr setzen wenn p_FUNC=0
CASE NVL(m_MwstSl,0)
WHEN 0 THEN my_Ust:=1; -- keine Steuer
WHEN 1 THEN my_Ust:=3; -- voller Steuersatz
WHEN 2 THEN my_Ust:=0; -- nicht steuerbar
WHEN 3 THEN my_Ust:=11; -- mit EG SteuerNr
WHEN 4 THEN my_Ust:=10; -- ohne EG-SteuerNr
WHEN 5 THEN my_Ust:=47; -- au�rhalb EU
END CASE;
END IF;
DoWriteRechnung(1);
m_error:='8';
COMMIT;
-- return;--fja
IF m_OP='0' -- Fertig speichern
THEN UPDATE RECHADR
SET RECHNR =my_rechnr,
RECHART=my_RechArt
WHERE HDLNR =p_HDLNR
AND RECHNR =NVL(p_USERNR,0) * -1.0
AND RECHART=my_RechArt;
UPDATE RECHZUBPOS
SET RECHNR =my_RechNr,
RECHART=my_RechArt
WHERE HDLNR =p_HDLNR
AND RECHNR =NVL(p_USERNR,0) * -1.0
AND RECHART=my_RechArt;
XTOOL.SavePdfArchiv(p_HDLNR,p_FILNR,p_USERNR,p_HDLNR,NULL,0,my_RechArt,my_RechNr);
IF Rec_Auftrag.SPLITTING IN ('M')
THEN IF my_DOAUTO='PDF'
THEN RECHNTOOLS.SendIngis(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_RECHNR => my_RechNr,
p_RECHART=> my_RechArt,
p_INGIS => 'F',
p_DOAUTO => 'W');
END IF;
IF my_DOAUTO='INGIS'
THEN RECHNTOOLS.SendIngis(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_RECHNR => my_RechNr,
p_RECHART=> my_RechArt,
p_INGIS => 'W',
p_DOAUTO => 'W');
END IF;
IF my_DOAUTO='RECH' AND
my_RechArt='R'
THEN INSERT INTO PDFSAMMEL
(HDLNR,USERNR,RECHNR)
VALUES
(p_HDLNR,p_USERNR,my_RECHNR);
COMMIT;
END IF;
BEGIN
SELECT PDFRECHNUNG, INGIS, STDZAHLART
INTO my_PdfRe, my_Ingis, my_StdZahlart
FROM ADRESSEN
WHERE HDLNR =p_HDLNR
AND ART ='K'
AND NUMMER=Rec_Auftrag.SPLITDEBITOR;
EXCEPTION WHEN OTHERS THEN my_PdfRe:='F'; my_Ingis:='F';
END;
DoWriteRechnung(2); -- Splitrechnung erstellen
XTOOL.SavePdfArchiv(p_HDLNR,p_FILNR,p_USERNR,p_HDLNR,NULL,0,my_RechArt,my_RechNr);
IF my_DoAuto IS NOT NULL
THEN my_DoAuto:='RECH';
IF my_PdfRe='W'
THEN my_DoAuto:='PDF';
END IF;
IF my_Ingis='W'
THEN my_DoAuto:='INGIS';
END IF;
IF my_StdZahlart=50
THEN my_DoAuto:='LF';
END IF;
END IF;
END IF;
UPDATE AUFTRAG
SET LRECHNUNG = my_rechnr,
ZWIDATUM = XTool.GetSysDate(p_HDLNR)
WHERE HDLNR =p_HDLNR AND
KENNUNG='A' AND
AUFTRNR=p_AUFTRNR;
COMMIT;
-- Wenn Bar, dann Anzahlung in MV erh�hen?!
AUFTRTOOLS.DoBuchKasse(p_HDLNR,p_FILNR,p_USERNR,p_ZAHLUNGSART,p_AUFTRNR,my_rechnr,Rec_Auftrag.DEBITOR,
Rec_Auftrag.NAME2,m_RechBetrag,p_HDLNR);
IF my_DOAUTO='PDF'
THEN IF NOT RECHNTOOLS.SendMvEMails(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AUFTRNR=> Rec_Auftrag.AUFTRNR,
p_RECHART=> my_RechArt,
p_RECHNR => my_RechNr)
THEN RECHNTOOLS.SendIngis(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_RECHNR => my_RechNr,
p_RECHART=> my_RechArt,
p_INGIS => 'F',
p_DOAUTO => 'W');
END IF;
RETURN;
END IF;
IF my_DOAUTO='INGIS'
THEN RECHNTOOLS.SendIngis(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_RECHNR => my_RechNr,
p_RECHART=> my_RechArt,
p_INGIS => 'W',
p_DOAUTO => 'W');
RETURN;
END IF;
IF my_DOAUTO='RECH' AND
my_RechArt='R'
THEN INSERT INTO PDFSAMMEL
(HDLNR,USERNR,RECHNR)
VALUES
(p_HDLNR,p_USERNR,my_RECHNR);
COMMIT;
RETURN; -- Schreiben Sammelliste f�r Hannes
END IF;
IF my_DOAUTO='LF'
THEN RETURN;
END IF;
IF NVL(my_Referenz,0)>0
THEN my_RechNr :=my_Referenz;
my_RechArt:=my_ReferenzArt;
END IF;
IF (p_ZAHLUNGSART='2') AND
(NVL(my_CashTyp,0)>0)
THEN ZAHLUNG.OpenZahlWeg(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_KENNUNG=> p_KENNUNG,
p_AUFTRNR=> p_AUFTRNR,
p_RECHNR => my_RechNr,
p_BETRAG => m_RechBetrag,
p_FUNC => ZAHLUNG.c_ZwiRech);
ELSE ShowRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, my_RechNr, my_RechArt, p_USERNR, 'rechprint');
END IF;
END IF;
IF m_OP='1' -- Icon Vorschau
THEN -- R�cksprung organisieren
DELETE FROM GOBACKTBL WHERE HDLNR=p_HDLNR AND USERNR=p_USERNR AND LISTE=0;
INSERT INTO GOBACKTBL
(HDLNR,USERNR,FILNR,DATUMSTAMP,FUNKTION,LISTE,XSL,FUNC,AHDLNR,AFILNR,AUFART,KENNUNG,AUFTRNR)
VALUES
(p_HDLNR,p_USERNR,p_FILNR,SYSDATE,1120,0,'mietzwi','',p_HDLNR,p_FILNR,'',p_KENNUNG,p_AUFTRNR);
COMMIT;
-- Ende
ShowRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, my_RECHNR, my_RechArt, p_USERNR, 'drcrech',' ','10',' ');
END IF;
IF m_OP='8' -- Icon Suche Bemerkung
THEN Bemerkung.BEMLISTE(p_HDLNR,p_FILNR,p_USERNR,'F',NULL,NULL,NULL,p_OP);
END IF;
IF m_OP='11' -- Kunden suchen
THEN Kunden.KDNLISTE(p_HDLNR,p_FILNR,p_USERNR,p_KENNUNG,p_KENNUNG,p_AUFTRNR,NULL,'K',p_OP,'P','F');
END IF;
IF m_OP='E' -- Plausi Fehler
THEN RECHNTOOLS.EditZwi(p_HDLNR, p_FILNR, p_USERNR, m_errortext);
END IF;
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END ErfZwi;
/******************************************************************************
NAME: Rechnungen.RechStorno
PURPOSE: Rechnungsstorno mit Generalumkehr, anschlie�nd Druckangebot
Date: 12.08.2005 /29.03.2017
*******************************************************************************/
PROCEDURE RechStorno(p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_RECHNR VARCHAR2,
p_RECHART VARCHAR2,
p_GRUND VARCHAR2 DEFAULT NULL,
p_BEM1 VARCHAR2 DEFAULT NULL,
p_BEM2 VARCHAR2 DEFAULT NULL,
p_BEM3 VARCHAR2 DEFAULT NULL,
p_BEM4 VARCHAR2 DEFAULT NULL,
p_BEM5 VARCHAR2 DEFAULT NULL,
p_BEM6 VARCHAR2 DEFAULT NULL,
p_NURBUCHEN VARCHAR2 DEFAULT NULL,
p_STORNOALL VARCHAR2 DEFAULT 'F') IS
Rec_Rechnung RECHNUNG%ROWTYPE;
Rec_Rechadr RECHADR%ROWTYPE;
my_ProgName VARCHAR2(20):='RechStorno';
my_SplitRechNr INTEGER:=0;
my_RechNr INTEGER;
my_rechadr INTEGER;
my_Debitor INTEGER;
my_Anzahlung FLOAT;
my_FilNr VARCHAR2(4);
my_Kennung VARCHAR2(1);
my_DebName VARCHAR2(40);
my_Name1 VARCHAR2(40);
my_Name2 VARCHAR2(40);
my_GdvFlag VARCHAR2(01);
my_UnfallErsatz VARCHAR2(01);
my_AuftrNrExt VARCHAR2(30);
my_DoArvato VARCHAR2(01):='F';
my_Code VARCHAR2(04);
my_Message VARCHAR2(1000);
PROCEDURE RobStorno IS
my_RobAufStatus VARCHAR2(10);
my_RobReStatus VARCHAR2(10);
my_RobAktStatus INTEGER;
my_RobFaktura BOOLEAN;
my_Betrag FLOAT;
my_BetragNOK FLOAT;
my_Netto1 FLOAT:=0.0;
my_MwSt1 FLOAT:=0.0;
my_MwstSatz1 FLOAT:=0.0;
my_Netto2 FLOAT:=0.0;
my_MwSt2 FLOAT:=0.0;
my_MwstSatz2 FLOAT:=0.0;
my_Brutto FLOAT:=0.0;
my_Name1 VARCHAR2(40);
my_Strasse VARCHAR2(40);
my_HausNr VARCHAR2(10);
my_PLZ VARCHAR2(10);
my_Ort VARCHAR2(40);
my_SteuerNr VARCHAR2(40);
my_Konto VARCHAR2(20);
my_Iban VARCHAR2(34);
my_Bic VARCHAR2(11);
my_Telefon VARCHAR2(20);
my_Status VARCHAR2(10);
BEGIN
SELECT NAME_1, STRASSE, HAUSNR, PLZ, ORT, STEUERNR, KONTO, IBAN, BIC, TELEFON
INTO my_Name1, my_Strasse, my_HausNr, my_PLZ, my_Ort, my_SteuerNr, my_Konto, my_Iban, my_Bic, my_Telefon
FROM FIRMA
WHERE HDLNR=p_HDLNR;
my_Netto1 :=Rec_Rechnung.VERMUMSATZ+Rec_Rechnung.KMUMSATZ-Rec_Rechnung.ERLSCHMAL;
my_MwStSatz1:=Rec_Rechnung.VERMMWST;
IF my_MwstSatz1=Rec_Rechnung.VERSMWSTPAI
THEN my_Netto1 :=my_Netto1+Rec_Rechnung.VERSUMSATZCDW+Rec_Rechnung.VERSUMSATZPAI+Rec_Rechnung.VERSUMSATZTP-Rec_Rechnung.ERLSCHMAL1;
ELSE my_Netto2 :=my_Netto2+Rec_Rechnung.VERSUMSATZCDW+Rec_Rechnung.VERSUMSATZPAI+Rec_Rechnung.VERSUMSATZTP-Rec_Rechnung.ERLSCHMAL1;
my_MwStSatz2:=Rec_Rechnung.VERSMWSTPAI;
END IF;
IF my_MwstSatz1=Rec_Rechnung.SONSTMWST
THEN my_Netto1 :=my_Netto1+Rec_Rechnung.KRAFTUMSATZ+Rec_Rechnung.BETANKUMSATZ+Rec_Rechnung.SONSTUMSATZ+Rec_Rechnung.SONSTUMSATZFREI+Rec_Rechnung.ZUBUMSATZ+Rec_Rechnung.DLUMSATZ+Rec_Rechnung.ZUBUMSATZFREI+Rec_Rechnung.DLUMSATZFREI-Rec_Rechnung.ERLSCHMAL2;
ELSE my_Netto2 :=my_Netto2+Rec_Rechnung.KRAFTUMSATZ+Rec_Rechnung.BETANKUMSATZ+Rec_Rechnung.SONSTUMSATZ+Rec_Rechnung.SONSTUMSATZFREI+Rec_Rechnung.ZUBUMSATZ+Rec_Rechnung.DLUMSATZ+Rec_Rechnung.ZUBUMSATZFREI+Rec_Rechnung.DLUMSATZFREI-Rec_Rechnung.ERLSCHMAL2;
my_MwStSatz2:=Rec_Rechnung.SONSTMWST;
END IF;
--ToDo MwSt-Freie auf 2. Netto
my_Netto1:=round(my_Netto1*100) / 100;
my_MwSt1:=my_Netto1 /100 * my_MwStSatz1;
my_MwSt1 :=round(my_MwSt1*100) / 100;
my_Netto2:=round(my_Netto2*100) / 100;
my_MwSt2:=my_Netto2 /100 * my_MwStSatz2;
my_MwSt2 :=round(my_MwSt2*100) / 100;
my_Brutto:=my_Netto1+my_MwSt1+my_Netto2+my_Mwst2;
ROBEF.out_InvoerenFactuur(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
--p_LEVERANCIERSNUMMER => my_RobHdlNr, -- Autohaus / Werkstatt
p_LEASEMAATSCHAPPIJNUMMER => Rec_Rechnung.ROBLEASING,-- Nummer Leasingfirma
p_DEBETCREDITINDICATIE => 'C',
p_SOORTFACTUUR => 'CDF',
-- p_FACTUURNUMMER => TO_CHAR(my_RechNr), -- Rechnungnummer, bis zu 35 Zeichen
p_FACTUURNUMMER => TO_CHAR(Rec_Rechnung.RECHNR)||'_'||TO_CHAR(Rec_Rechnung.AUFTRNR), -- Rechnungnummer, bis zu 35 Zeichen
p_GERELATEERDEFACTUURNUMMER => TO_CHAR(Rec_Rechnung.RECHNR), -- BezugsrechnungsNr
p_FACTUURDATUM => Rec_Rechnung.RDATUM, -- Rechnungsdatum
p_KENTEKEN => Rec_Rechnung.ROBKENNZ, -- Kennzeichen
p_NAWLEVERANCIERNAAMBEDRIJF => my_NAME1, -- Bezeichnung Autohaus
p_NAWLEVERANCIERSTRAAT => my_STRASSE, -- Stra� Autohaus (Rechnungsadresse)
p_NAWLEVERANCIERHUISNUMMERENAP=> my_HausNr, -- Hausnr Autohaus
p_NAWLEVERANCIERPOSTCODE => my_PLZ, -- PLZ Autohaus
p_NAWLEVERANCIERWOONPLAATS => my_Ort, -- Ort Autohaus
p_BTWNUMMERLEVERANCIER => my_STEUERNR, -- Umsatzsteuer-Identifikationsnummer
--p_BANKNUMMERLEVERANCIER => my_KONTO, -- Kontonummer Autohaus; bis zu 11 Stellen
p_IBAN => my_IBAN,
p_BIC => my_BIC,
p_CONTACTPERSOONLEVERANCIER => '', -- Kontakt im Autohaus
p_TELEFOONNUMMERLEVERANCIER => my_TELEFON, -- Autohaus Telefonnr
p_WERKOPDRACHTNUMMER => my_AuftrNrExt, -- Auftragsnummer
p_BTWGRONDSLAG1 => TO_CHAR(my_Netto1,'99990D99','NLS_NUMERIC_CHARACTERS=''.,'''), -- Mwst Grundbetrag1
p_BTWPERCENTAGE1 => TO_CHAR(my_MwstSatz1,'99990D99','NLS_NUMERIC_CHARACTERS=''.,'''),-- Mwst %1
p_BTWBEDRAG1 => TO_CHAR(my_Mwst1,'99990D99','NLS_NUMERIC_CHARACTERS=''.,'''), -- Mwst Betrag1
p_TOTAALBEDRAGFACTUUREXBTW => TO_CHAR(my_Netto1+my_Netto2,'99990D99','NLS_NUMERIC_CHARACTERS=''.,'''), -- Betrag ohne Mwst (1+2+3)
p_TOTAALBEDRAGBTW => TO_CHAR(my_Mwst1+my_Mwst2,'99990D99','NLS_NUMERIC_CHARACTERS=''.,'''), -- Mwst gesamt (1+2+3)
p_TOTAALBEDRAGFACTUURINBTW => TO_CHAR(my_Brutto,'99990D99','NLS_NUMERIC_CHARACTERS=''.,'''), -- Betrag mit Mwst (1+2+3)
--p_IDENTIFICATIEINVOERENDELEVER=> my_RobHdlNr, -- AH Nummer des Besitzers des Leihwagens
p_STATUS_RECHNUNG => my_Status, --keine Ahnung
p_CODE => my_Code,
p_MESSAGE => my_Message);
IF my_Code<>'0000'
THEN Xtool.Meldung(p_HDLNR,'ROB: (' ||my_Code||') '|| my_Message);
END IF;
END;
PROCEDURE StornoRechZubPos IS
CURSOR currechzubpos IS
SELECT *
FROM RECHZUBPOS
WHERE HDLNR =p_HDLNR
AND RECHNR =Rec_Rechnung.RECHNR
AND RECHART =Rec_Rechnung.RECHART;
BEGIN
FOR Rec_Zub IN currechzubpos LOOP
INSERT INTO RECHZUBPOS
(HDLNR,RECHART,RECHNR,LFD,NR,MVRE,SUMME,MWSTFREI,ERLOESKONTO,ERLOESKONTOINT,SPLITSUMME,LEISTUNG,EZPREIS,MENGE,PAUSCHAL)
VALUES
(p_HDLNR,Rec_Rechnung.RECHART,my_RechNr,Rec_Zub.LFD,Rec_ZUB.NR,Rec_Zub.MVRE,Rec_ZUB.SUMME * -1.0,Rec_Zub.MWSTFREI,Rec_Zub.ERLOESKONTO,rec_Zub.ERLOESKONTOINT,rec_Zub.SPLITSUMME,rec_Zub.LEISTUNG,rec_Zub.EZPREIS*-1.0,rec_Zub.Menge,rec_Zub.PAUSCHAL);
END LOOP;
END;
PROCEDURE DoStorno IS
loc_StatusExtern INTEGER:=NULL;
BEGIN
IF Rec_Rechnung.MVART IN ('MV1','MV4')
THEN loc_StatusExtern:=0;
END IF;
my_Debitor:=Rec_Rechnung.Debitor;
BEGIN
SELECT NAME1, NAME2, AUFTRNREXT
INTO my_Name1, my_Name2, my_AuftrNrExt
FROM AUFTRAG
WHERE HDLNR =p_HDLNR
AND AUFTRNR=Rec_Rechnung.AUFTRNR;
my_DebName:=SUBSTR(my_Name1 || ' ' || my_Name2,1,40);
EXCEPTION
WHEN others THEN my_DebName:=SUBSTR(p_Grund,1,40);
END;
SELECT COUNT(rechnr)
INTO my_rechadr
FROM RECHADR
WHERE HDLNR =p_HDLNR
AND RECHNR =Rec_Rechnung.RECHNR
AND RECHART=Rec_rechnung.RECHART;
IF my_rechadr>0
THEN SELECT *
INTO Rec_Rechadr
FROM RECHADR
WHERE HDLNR =p_HDLNR
AND RECHNR =Rec_Rechnung.RECHNR
AND RECHART=Rec_rechnung.RECHART;
my_Debitor:=Rec_Rechadr.Debitor;
my_DebName:=SUBSTR(Rec_RechAdr.Name1 || ' ' || Rec_RechAdr.Name2,1,40);
END IF;
IF Rec_Rechnung.ROBSTNSTATUS='W'
THEN RobStorno;
IF my_Code<>'0000'
THEN RETURN;
END IF;
END IF;
IF Rec_Rechnung.RECHART='R'
THEN SELECT RECHNR
INTO my_rechnr
FROM FIRMA
WHERE HDLNR=p_HDLNR FOR UPDATE;
UPDATE FIRMA
SET RECHNR = RECHNR + 1
WHERE HDLNR=p_HDLNR;
ELSE SELECT LIEFERNR
INTO my_rechnr
FROM FIRMA
WHERE HDLNR=p_HDLNR FOR UPDATE;
UPDATE FIRMA
SET LIEFERNR = LIEFERNR + 1
WHERE HDLNR=p_HDLNR;
END IF;
IF Rec_Rechnung.MITANZ='W'
THEN SELECT ANZAHLUNG
INTO my_Anzahlung
FROM AUFTRAG
WHERE HDLNR =p_HDLNR AND
AUFTRNR=Rec_Rechnung.AUFTRNR;
ELSE my_Anzahlung:=0.0;
END IF;
INSERT INTO RECHNUNG
(HDLNR,FILNR,RECHNR, GUTLAST, ZWIRECH,RECHART,AUFTRNR, DEBITOR, RDATUM, ZAHLBED, VERMITTLER,
VERMUMSATZ, KMUMSATZ, VERMMWST, ERLSCHMAL, ERLMWST,
ERLKONTO, ERLKONTO1, ERLKONTO2, VERMKONTO, KMKONTO,
VERSUMSATZPAI, VERSMWSTPAI, VERSUMSATZCDW, VERSMWSTCDW, VERSUMSATZTP,
VERSMWSTTP, VERSKONTO, KRAFTUMSATZ, KRAFTMWST, KRAFTKONTO, BETANKUMSATZ, BETANKKONTO,
SONSTUMSATZ, SONSTUMSATZFREI, DLUMSATZ, ZUBUMSATZ, DLUMSATZFREI, ZUBUMSATZFREI,
SONSTMWST, SONSTKONTO, SONSTKONTOFREI, BERKM, GEFKM, GEZAHLT, ZAHLWEG, KSTSTELLE, KSTFIL,
BEMERKUNG1, BEMERKUNG2, BEMERKUNG3, BEMERKUNG4, BEMERKUNG5, BEMERKUNG6, FIBU, PROV,
BANFANG, BENDE, MANFANG, MENDE, TARIFTYP, TARIFTYPS, AUSLAGENTEXT, PROVBASIS, PROVSATZ, PROVKONTO,
LITER,SORTE, ERFHDLNR, ERFUSER, VONKM, BISKM, TARIFBEZ,
GRUNDBETRAG, PREIS1, FAKTOR1, EINHEIT1, MEHRFACH, INCLKM1, INCLANZKM1, DMKM, CDW, DMCDW, PAI, DMPAI,
PREIS2, FAKTOR2, EINHEIT2, INCLANZKM2, CDW2, DMCDW2, PAI2, DMPAI2, TRFMANUELL, KULANZ,
RGKLASSE, MVKLASSE, FZKLASSE, FZSTAT, FZOWNERHDLNR, RGTARIFFZART, RGFZTARIFAUS,
STNRECHNR, STNGRUND, KTOMWST, KTOMWST2, UNFALLERSATZ,
VTRBETRAG, VTRSTEUER, VTRKONTO, AUFHDLNR, GDVFLAG,
RABATT, RABATTZL, ERLSCHMAL1, ERLSCHMAL2,
AUFTRNREXT, GESCHBEREICH, MWSTSL, FREE2GO,
MK,ST,KST,KSTMOBI,AK,KT,UST, GKGRP,MKA,STA,AKA,KTA,KSTA,MKFV,STFV,AKFV,KTFV,KSTFV,
KTOABWDEB, KTOFREMDVWSOLL, KTOFREMDVWHABEN,
LFSSAMMEL,MITANZ,MITLST,MITZWI,MITZUB,NURFREIEKM,MAXRABATT,ZAHLTAG,
ZWIRECHFIRST,SPLITREFRECHNR,
GKREF, KRDBANK, KRDNR, ARVATOPAYTOKEN, ARVATOTRANSTOKEN, MVART, STATUSEXTERN)
VALUES (p_HDLNR,Rec_Rechnung.FILNR,my_rechnr,'W',Rec_Rechnung.ZWIRECH,Rec_rechnung.RECHART,Rec_Rechnung.AUFTRNR, my_DEBITOR, XTool.GetSysDate(p_HDLNR), Rec_Rechnung.ZAHLBED,Rec_Rechnung.VERMITTLER,
Rec_Rechnung.VERMUMSATZ * -1,Rec_Rechnung.KMUMSATZ * -1,Rec_Rechnung.VERMMWST,Rec_Rechnung.ERLSCHMAL * -1,Rec_Rechnung.ERLMWST,
Rec_Rechnung.ERLKONTO,Rec_Rechnung.ERLKONTO1,Rec_Rechnung.ERLKONTO2,Rec_Rechnung.VERMKONTO,Rec_Rechnung.KMKONTO,
Rec_Rechnung.VERSUMSATZPAI * -1,Rec_Rechnung.VERSMWSTPAI,Rec_Rechnung.VERSUMSATZCDW * -1,Rec_Rechnung.VERSMWSTCDW,Rec_Rechnung.VERSUMSATZTP * -1,
Rec_Rechnung.VERSMWSTTP,Rec_Rechnung.VERSKONTO,Rec_Rechnung.KRAFTUMSATZ * -1,Rec_Rechnung.KRAFTMWST,Rec_Rechnung.KRAFTKONTO,Rec_Rechnung.BETANKUMSATZ * -1,Rec_Rechnung.BETANKKONTO,
Rec_Rechnung.SONSTUMSATZ * -1,Rec_Rechnung.SONSTUMSATZFREI * -1,Rec_Rechnung.DLUMSATZ * -1, Rec_Rechnung.ZUBUMSATZ * -1, Rec_Rechnung.DLUMSATZFREI * -1, Rec_Rechnung.ZUBUMSATZFREI * -1,
Rec_Rechnung.SONSTMWST,Rec_Rechnung.SONSTKONTO, Rec_Rechnung.SONSTKONTOFREI, Rec_Rechnung.BERKM * -1,Rec_Rechnung.GEFKM * -1,(Rec_Rechnung.GEZAHLT+my_Anzahlung) * -1,Rec_Rechnung.ZAHLWEG,Rec_Rechnung.KSTSTELLE, Rec_Rechnung.KSTFIL,
p_BEM1,p_BEM2,p_BEM3,p_BEM4,p_BEM5,p_BEM6,'F','F',
Rec_Rechnung.BANFANG, Rec_Rechnung.BENDE,Rec_Rechnung.MANFANG,Rec_Rechnung.MENDE,Rec_Rechnung.TARIFTYP,Rec_Rechnung.TARIFTYPS,
Rec_Rechnung.AUSLAGENTEXT,Rec_Rechnung.PROVBASIS * -1,Rec_Rechnung.PROVSATZ,Rec_Rechnung.PROVKONTO,
Rec_Rechnung.LITER * -1,Rec_Rechnung.SORTE,p_HDLNR,p_USERNR,Rec_Rechnung.VONKM,Rec_Rechnung.BISKM,Rec_Rechnung.TARIFBEZ,
Rec_Rechnung.GRUNDBETRAG,Rec_Rechnung.PREIS1,Rec_Rechnung.FAKTOR1,Rec_Rechnung.EINHEIT1,Rec_Rechnung.MEHRFACH,Rec_Rechnung.INCLKM1,
Rec_Rechnung.INCLANZKM1,Rec_Rechnung.DMKM,Rec_Rechnung.CDW,Rec_Rechnung.DMCDW,Rec_Rechnung.PAI,Rec_Rechnung.DMPAI,
Rec_Rechnung.PREIS2,Rec_Rechnung.FAKTOR2,Rec_Rechnung.EINHEIT2,Rec_Rechnung.INCLANZKM2,Rec_Rechnung.CDW2,
Rec_Rechnung.DMCDW2,Rec_Rechnung.PAI2,Rec_Rechnung.DMPAI2,Rec_Rechnung.TRFMANUELL,Rec_Rechnung.KULANZ,
Rec_Rechnung.RGKLASSE,Rec_Rechnung.MVKLASSE,Rec_Rechnung.FZKLASSE,Rec_Rechnung.FZSTAT,Rec_Rechnung.FZOWNERHDLNR, Rec_Rechnung.RGTARIFFZART, Rec_Rechnung.RGFZTARIFAUS,
Rec_Rechnung.RECHNR, p_GRUND, Rec_Rechnung.KTOMWST, Rec_Rechnung.KTOMWST2, Rec_Rechnung.UNFALLERSATZ,
Rec_Rechnung.VTRBETRAG * -1, Rec_Rechnung.VTRSTEUER, Rec_Rechnung.VTRKONTO, Rec_Rechnung.AUFHDLNR,'F',
Rec_Rechnung.RABATT, Rec_Rechnung.RABATTZL, Rec_Rechnung.ERLSCHMAL1 * -1, Rec_Rechnung.ERLSCHMAL2 * -1,
Rec_Rechnung.AUFTRNREXT, Rec_Rechnung.GESCHBEREICH, Rec_Rechnung.MWSTSL, Rec_Rechnung.FREE2GO,
Rec_Rechnung.MK,Rec_Rechnung.ST,Rec_Rechnung.KST,Rec_Rechnung.KSTMOBI,Rec_Rechnung.AK,Rec_Rechnung.KT,Rec_Rechnung.UST,
Rec_Rechnung.GKGRP,Rec_Rechnung.MKA,Rec_Rechnung.STA,Rec_Rechnung.AKA,Rec_Rechnung.KTA,Rec_Rechnung.KSTA,
Rec_Rechnung.MKFV,Rec_Rechnung.STFV,Rec_Rechnung.AKFV,Rec_Rechnung.KTFV,Rec_Rechnung.KSTFV,
Rec_Rechnung.KTOABWDEB, Rec_Rechnung.KTOFREMDVWSOLL, Rec_Rechnung.KTOFREMDVWHABEN,
'W','F',Rec_Rechnung.MITLST,Rec_Rechnung.MITZWI,Rec_Rechnung.MITZUB,Rec_Rechnung.NURFREIEKM,Rec_Rechnung.MAXRABATT,Rec_Rechnung.ZAHLTAG,
NULL,my_SplitRechNr,
Rec_Rechnung.GKREF, Rec_Rechnung.KRDBANK, Rec_Rechnung.KRDNR, Rec_Rechnung.ARVATOPAYTOKEN, Rec_Rechnung.ARVATOTRANSTOKEN, Rec_Rechnung.MVART, loc_StatusExtern);
IF (my_rechadr>0)
THEN Rec_RechAdr.RechNr:=my_rechNr;
INSERT INTO RECHADR VALUES Rec_RechAdr;
END IF;
StornoRechZubPos;
UPDATE RECHNUNG
SET STNRECHNR =my_rechnr,
STNFLAG ='W',
GDVFLAG ='F',
MITANZ ='F',
ROBSTATUS =NULL,
ROBSTNSTATUS=NULL,
ZWIRECHFIRST=NULL,
GEZAHLT = GEZAHLT + my_Anzahlung
WHERE HDLNR =p_HDLNR
AND RECHNR =Rec_Rechnung.RECHNR
AND RECHART=Rec_Rechnung.RECHART;
IF my_SplitRechNr>0
THEN UPDATE RECHNUNG
SET SPLITREFRECHNR=my_RechNr
WHERE HDLNR =p_HDLNR
AND RECHNR =my_SplitRechNr
AND RECHART=Rec_Rechnung.RECHART;
END IF;
IF my_SplitRechNr=0
THEN SELECT KENNUNG, FILNR, UNFALLERSATZ, ANZAHLUNG
INTO my_Kennung, my_FilNr, my_UnfallErsatz, my_Anzahlung
FROM AUFTRAG
WHERE HDLNR =p_HDLNR AND
AUFTRNR=Rec_Rechnung.AUFTRNR;
AUFTRTOOLS.DoBuchKasse(p_HDLNR,p_FILNR,p_USERNR,SUBSTR(Rec_Rechnung.ZAHLWEG,1,1),
Rec_Rechnung.AUFTRNR,my_rechnr,Rec_Rechnung.DEBITOR,
my_DebName,Rec_Rechnung.GEZAHLT * -1.0,p_HDLNR);
END IF;
BEGIN
SELECT GDVFLAG
INTO my_GdvFlag
FROM ABTRET
WHERE HDLNR =p_HDLNR
AND AUFTRNR=Rec_Rechnung.AUFTRNR;
EXCEPTION
WHEN OTHERS THEN my_GdvFlag:='F';
END;
IF my_GdvFlag='W' AND my_UnfallErsatz='F'
THEN UPDATE ABTRET SET GDVFLAG='F'
WHERE HDLNR =p_HDLNR AND
AUFTRNR=Rec_Rechnung.AUFTRNR;
END IF;
IF Rec_Rechnung.ARVATOTRANSTOKEN IS NOT NULL AND
Rec_Rechnung.KRDBETRAG>0.0
THEN INSERT INTO STORNOPAYMENT
(HDLNR,USERNR,RECHNR,ARVATOTRANSTOKEN,BETRAG)
VALUES (Rec_Rechnung.HDLNR,p_USERNR,my_RechNr,Rec_Rechnung.ARVATOTRANSTOKEN,Rec_Rechnung.KRDBETRAG*-1.0);
my_DoArvato:='W';
END IF;
XTOOL.SavePdfArchiv(p_HDLNR,p_FILNR,p_USERNR,p_HDLNR,NULL,0,Rec_rechnung.RECHART,my_RechNr);
END;
PROCEDURE DoStornoParts(loc_HDLNR VARCHAR2,
loc_AUFTRNR INTEGER) IS
CURSOR currechsplits IS
SELECT RECHART, RECHNR
FROM RECHNUNG
WHERE HDLNR =loc_HDLNR
AND AUFTRNR =loc_AUFTRNR
AND GUTLAST ='F'
AND (RLNUMMER IS NULL OR NVL(RLNUMMER,0)>0)
-- AND ZWIRECH ='F'
AND STNFLAG IS NULL
ORDER BY RECHNR;
BEGIN
FOR Rec_Rech IN currechsplits LOOP
SELECT *
INTO Rec_Rechnung
FROM RECHNUNG
WHERE HDLNR =loc_HDLNR
AND RECHNR =Rec_Rech.RECHNR
AND RECHART=Rec_Rech.RECHART;
--my_SplitRechNr:=Rec_Rech.RECHNR;
DoStorno;
END LOOP;
END;
BEGIN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin(p_HDLNR => p_HDLNR);
RETURN;
END IF;
IF p_GRUND IS NULL
THEN ShowRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, p_RECHNR, p_RECHART, p_USERNR,'rechstnfrage',NULL,'10',NULL,'* *' || Xtool.OutMeldung(p_HDLNR,'generell',24,''));
RETURN;
END IF;
DELETE
FROM STORNOPAYMENT
WHERE HDLNR =p_HDLNR
AND USERNR=p_USERNR;
COMMIT;
SELECT *
INTO Rec_Rechnung
FROM RECHNUNG
WHERE HDLNR =p_HDLNR
AND RECHNR =TO_NUMBER(p_RECHNR)
AND RECHART=p_RECHART;
IF Rec_Rechnung.GDVFLAG='*'
THEN Xtool.Meldung(p_HDLNR,Xtool.OutMeldung(p_HDLNR,'rechinfo',1,'RechStorno'));
RETURN;
END IF;
IF Rec_Rechnung.StnFlag IS NOT NULL
THEN ShowRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, p_RECHNR, p_RECHART, p_USERNR,'rechstnfrage',NULL,'10',NULL,'* ' || Xtool.OutMeldung(p_HDLNR,'rechstnfrage',1,''));
RETURN;
END IF;
DoStorno;
IF p_STORNOALL='W'
THEN DoStornoParts(loc_HDLNR => Rec_Rechnung.HDLNR,
loc_AUFTRNR=> Rec_Rechnung.AUFTRNR);
END IF;
IF rec_rechnung.RLNUMMER=0
THEN UPDATE RECHNUNG
SET RLNUMMER=NULL
WHERE HDLNR =Rec_Rechnung.HDLNR
AND RECHART ='L'
AND RLNUMMER=Rec_Rechnung.RECHNR;
END IF;
/* IF NVL(Rec_Rechnung.SPLITREFRECHNR,0)>0
THEN BEGIN
SELECT *
INTO Rec_Rechnung
FROM RECHNUNG
WHERE HDLNR =p_HDLNR
AND RECHNR =Rec_Rechnung.SPLITREFRECHNR
AND RECHART=p_RECHART;
my_SplitRechNr:=my_RechNr;
DoStorno;
EXCEPTION WHEN OTHERS THEN NULL;
END;
END IF;*/
IF (my_KENNUNG='C') AND
(p_NURBUCHEN IS NULL)-- AND
--(rec_Rechnung.RLNUMMER IS NULL)
THEN AUFTRTOOLS.DoArcAuftr(p_HDLNR,my_FilNr,my_Kennung,Rec_Rechnung.AUFTRNR,p_USERNR);
UPDATE AUFTRAG SET KENNUNG='B',
ERFASSER = p_USERNR,
ERFUHR = XTool.GetSysDate(p_HDLNR)
WHERE HDLNR =p_HDLNR AND
AUFTRNR=Rec_Rechnung.AUFTRNR;
UPDATE AUFTRZUB
SET KENNUNG ='B',
ISTSUMME=0.0,
ISTTAGE =0
WHERE HDLNR =p_HDLNR AND
AUFTRNR =Rec_Rechnung.AUFTRNR;
-- ToDo: ISTSUMME, ISTTAGE anhand der zugeh�rigen RECHZUBPOS subtrahieren, Thema Teilrechnung
END IF;
COMMIT;
IF p_NURBUCHEN IS NULL
THEN IF my_DoArvato='W'
THEN ZAHLUNG.BatchZahlweg(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR);
ELSE ShowRech(p_HDLNR, p_FILNR, p_HDLNR, p_FILNR, my_RECHNR, p_RECHART, p_USERNR, 'rechprint');
END IF;
END IF;
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END RechStorno;
/******************************************************************************
NAME: Rechnungen.FzUeberEx
PURPOSE: Grunderfassung Fahrzeug�berf�hrung
Date: 20.05.2003/24.06.2016
*******************************************************************************/
PROCEDURE FzUeberEx( p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_AHDLNR VARCHAR2 DEFAULT NULL,
p_AUFART VARCHAR2 DEFAULT NULL,
p_AUFTRKENN VARCHAR2 DEFAULT NULL,
p_AUFTRNR VARCHAR2 DEFAULT NULL,
p_FAHRGESTELL VARCHAR2,
p_ZULASSUNG VARCHAR2,
p_PARTNER VARCHAR2 DEFAULT NULL,
p_FAHRDL VARCHAR2 DEFAULT NULL,
p_VNAME VARCHAR2 DEFAULT NULL,
p_NAME VARCHAR2 DEFAULT NULL,
p_GEBDATUM VARCHAR2 DEFAULT NULL,
p_GEBORT VARCHAR2 DEFAULT NULL,
p_FSCHEIN VARCHAR2 DEFAULT NULL,
p_FDATUM VARCHAR2 DEFAULT NULL,
p_PARKPLATZ VARCHAR2 DEFAULT NULL,
p_KENNZ VARCHAR2 DEFAULT NULL,
p_INKA VARCHAR2 DEFAULT NULL,
x INTEGER DEFAULT NULL,
y INTEGER DEFAULT NULL) IS
my_ProgName VARCHAR2(20):='FzUeberEx';
m_Bez VARCHAR2(50);
m_km INTEGER;
m_kettenkopf VARCHAR2(08);
m_Konzernzugr VARCHAR2(08);
m_Free2Go VARCHAR2(01):='F';
m_Kennz VARCHAR2(20);
m_Cnt INTEGER;
m_B2BHDLNR VARCHAR2(08);
m_B2BName VARCHAR2(40);
m_Besitzer VARCHAR2(14);
m_BesitzerName VARCHAR2(40);
m_HatParkplatz VARCHAR2(01);
m_HatFahrDl VARCHAR2(01);
m_HatLogoScale VARCHAR2(01);
m_ParkPlatz VARCHAR2(10);
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
-- Loc_NLSTime VARCHAR2(10):=XTool.GetNLS(p_HDLNR,2);
-- Loc_NLSWert VARCHAR2(30):=XTool.GetNLS(p_HDLNR,3);
BEGIN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin(p_HDLNR => p_HDLNR);
RETURN;
END IF;
SELECT KETTENKOPF, KONZERNZUGR, HATPARKPLATZ, HATFAHRDIENST, HATLOGOSCALE
INTO m_kettenkopf, m_Konzernzugr, m_HatParkplatz, m_HatFahrDl, m_HatLogoScale
FROM FIRMA F, FIRMAPARAM FP
WHERE F.HDLNR=p_HDLNR AND FP.HDLNR=p_HDLNR;
SELECT BEZEICHNUNG, KMSTAND, KENNZ, BESITZER, PARKPLATZ
INTO m_Bez, m_Km, m_Kennz, m_Besitzer, m_ParkPlatz
FROM FAHRZEUG
WHERE FAHRGESTELL=p_FAHRGESTELL
AND ZULASSUNG =TO_DATE(p_ZULASSUNG,Loc_NLSDate);
SELECT MATCHCODE
INTO m_BesitzerName
FROM PARTNER
WHERE HDLNR=substr(m_Besitzer,1,3)||substr(m_Besitzer,5,5)
AND NR =m_Besitzer;
-- B2B pr�fen
SELECT COUNT(AUFTRNR)
INTO m_Cnt
FROM AUFTRAG
WHERE KENNUNG='A'
AND FAHRGESTELL=p_FAHRGESTELL
AND ZULASSUNG =TO_DATE(p_ZULASSUNG,Loc_NLSDate)
AND B2BHDLNR IS NOT NULL;
IF m_Cnt=1
THEN SELECT B2BHDLNR
INTO m_B2BHdlNr
FROM AUFTRAG
WHERE KENNUNG='A'
AND FAHRGESTELL=p_FAHRGESTELL
AND ZULASSUNG =TO_DATE(p_ZULASSUNG,Loc_NLSDate)
AND B2BHDLNR IS NOT NULL;
SELECT NAME_1
INTO m_B2BName
FROM FIRMA
WHERE HDLNR=m_B2BHdlNr;
END IF;
--
-- m_B2BHdlnr:='015E6006';
Xtool.XMLHeader('Fahrauftrag','fzgehen',p_HDLNR,p_USERNR,'FzUeberEx');
Xtool.OutFeldBez(p_HDLNR,'fzgehen');
Xtool.XMLStart('Fahrauft');
Xtool.htx('HDLNR' ,p_HDLNR);
Xtool.htx('FILNR' ,p_FILNR);
Xtool.htx('USERNR' ,p_USERNR);
Xtool.htx('AHDLNR' ,p_AHDLNR);
Xtool.htx('AUFART' ,p_AUFART);
Xtool.htx('AUFTRKENN' ,p_AUFTRKENN);
Xtool.htx('AUFTRNR' ,p_AUFTRNR);
Xtool.htx('LKC' ,SUBSTR(m_KonzernZugr,5,2));
Xtool.htx('FAHRGESTELL ',p_FAHRGESTELL);
Xtool.htx('ZULASSUNG' ,p_ZULASSUNG);
Xtool.htx('KENNZ' ,m_KENNZ);
Xtool.htx('FAHRZEUG' ,m_Bez);
IF p_PARKPLATZ IS NULL
THEN Xtool.htx('PARKPLATZ' ,m_Parkplatz);
ELSE Xtool.htx('PARKPLATZ' ,p_PARKPLATZ);
END IF;
Xtool.htx('KMSTAND' ,TO_CHAR(m_km));
Xtool.htx('FAHRDL' ,p_FAHRDL);
Xtool.htx('VNAME' ,p_VNAME);
Xtool.htx('NAME' ,p_NAME);
Xtool.htx('GEBDATUM' ,p_GEBDATUM);
Xtool.htx('GEBORT' ,p_GEBORT);
Xtool.htx('FSCHEIN' ,p_FSCHEIN);
Xtool.htx('FDATUM' ,p_FDATUM);
Xtool.htx('B2BHDLNR' ,m_B2BHdlNr);
Xtool.htx('B2BNAME' ,m_B2BName);
Xtool.htx('B2BPARTNER' ,SUBSTR(m_B2BHdlNr,1,3)||';'||SUBSTR(m_B2BHdlNr,4,5)||';0001');
Xtool.htx('HATPARKPLATZ',m_HatParkplatz);
Xtool.htx('HATFAHRDL' ,m_HatFahrDl);
Xtool.htx('HATLOGOSCALE',m_HatLogoScale);
IF m_Free2Go='W'
THEN IF p_PARTNER IS NULL
THEN Xtool.htx('FAHRZIEL' ,SUBSTR(p_HDLNR,1,3) || ';' || SUBSTR(p_HDLNR,4,5) || ';' || p_FILNR);
ELSE Xtool.htx('FAHRZIEL' ,p_PARTNER);
END IF;
AUFTRTOOLS.ShowPartnerF2G(p_HDLNR);
-- Plus ggf Besitzer des fahrzeugs
Xtool.XMLStart('Partner');
Xtool.htx('PANR',m_Besitzer);
Xtool.htx('PANREXT',substr(m_Besitzer,1,3)||substr(m_Besitzer,5,11));
Xtool.htx('MATCHCODE','- '||m_BesitzerName||' -');
Xtool.XMLEnd('Partner');
ELSE IF m_B2BHdlNr IS NULL
THEN IF p_PARTNER IS NULL
THEN Xtool.htx('FAHRZIEL' ,SUBSTR(p_HDLNR,1,3) || ';' || SUBSTR(p_HDLNR,4,5) || ';' || p_FILNR);
ELSE Xtool.htx('FAHRZIEL' ,p_PARTNER);
END IF;
AUFTRTOOLS.ShowPartner(p_HDLNR,m_kettenkopf);
ELSE IF m_B2BHdlNr=p_HDLNR
THEN IF p_PARTNER IS NULL
THEN Xtool.htx('FAHRZIEL' ,m_Besitzer);
ELSE Xtool.htx('FAHRZIEL' ,p_PARTNER);
END IF;
AUFTRTOOLS.ShowPartner(p_HDLNR,m_Kettenkopf);
AUFTRTOOLS.ShowPartner(SUBSTR(m_Besitzer,1,3)||SUBSTR(m_Besitzer,5,5),'');
ELSE IF p_PARTNER IS NULL
THEN Xtool.htx('FAHRZIEL' ,SUBSTR(m_B2BHdlNr,1,3) || ';' || SUBSTR(m_B2BHdlNr,4,5) || ';0001');
ELSE Xtool.htx('FAHRZIEL' ,p_PARTNER);
END IF;
AUFTRTOOLS.ShowPartner(p_HDLNR,m_kettenkopf);
AUFTRTOOLS.ShowPartner(m_B2BHdlNr,'');
END IF;
END IF;
END IF;
Xtool.XMLEnd('Fahrauft');
Xtool.XMLEnd('Fahrauftrag');
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END FzUeberEx;
/******************************************************************************
NAME: Rechnungen.FzUeber
PURPOSE: Fahrzeug�berf�hrung Ablage
Date: 20.05.2003/24.06.2016
*******************************************************************************/
PROCEDURE FzUeber ( p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_FAHRGESTELL VARCHAR2,
p_ZULASSUNG VARCHAR2,
p_KMSTAND VARCHAR2,
p_PARTNER VARCHAR2,
p_NAME VARCHAR2,
p_VNAME VARCHAR2,
p_GEBDATUM VARCHAR2,
p_GEBORT VARCHAR2,
p_FSCHEIN VARCHAR2,
p_FDATUM VARCHAR2,
p_FAHRDL VARCHAR2 DEFAULT NULL,
p_PARKPLATZ VARCHAR2 DEFAULT NULL,
p_AHDLNR VARCHAR2 DEFAULT NULL,
p_AUFTRNR VARCHAR2 DEFAULT NULL,
p_SUCHST1 VARCHAR2 DEFAULT NULL,
p_FUNC VARCHAR2 DEFAULT NULL,
x INTEGER DEFAULT NULL,
y INTEGER DEFAULT NULL) IS
my_ProgName VARCHAR2(20):='FzUeber';
m_DATUM DATE := XTool.GetSysDate(p_HDLNR);
m_UNFALL1 VARCHAR2(40) :='';
m_UNFALL2 VARCHAR2(40) :='';
m_cntAuf INTEGER :=0;
m_cntBlk INTEGER :=0;
m_cntBlkM INTEGER :=0;
m_cntBlkP INTEGER :=0;
m_AuftrNr INTEGER :=NVL(p_AUFTRNR,0);
m_Status VARCHAR2(1) :='>';
m_OldStatus VARCHAR2(1);
m_Standort VARCHAR2(14);
m_Kennz VARCHAR2(20);
m_FzgVerbr VARCHAR2(01):='F';
m_FzgAbhl VARCHAR2(01):='F';
m_TrpZentrale VARCHAR2(01):='F';
m_FzKmStand INTEGER;
m_KmStand INTEGER:=NVL(p_KMSTAND,0);
m_Cnt INTEGER;
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
Loc_NLSTime VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,2);
-- Loc_NLSWert VARCHAR2(30):=XTool.GetNLS(p_HDLNR,3);
BEGIN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin(p_HDLNR => p_HDLNR);
RETURN;
END IF;
IF p_FUNC='1'
THEN DELETE FROM GOBACKTBL WHERE HDLNR=p_HDLNR AND USERNR=p_USERNR;
INSERT INTO GOBACKTBL
(HDLNR,USERNR,FILNR,DATUMSTAMP,FUNKTION,LISTE,FAHRGESTELL,DATUM,AHDLNR,AUFTRNR,PARTNER,NAME1,NAME2,
GEBDATUM,GEBORT,FSCHEIN,FDATUM,PARKPLATZ)
VALUES
(p_HDLNR,p_USERNR,p_FILNR,SYSDATE,1511,0,p_FAHRGESTELL,p_ZULASSUNG,p_HDLNR,p_AUFTRNR,p_PARTNER,p_VNAME,p_NAME,
p_GEBDATUM,p_GEBORT,p_FSCHEIN,p_FDATUM,p_PARKPLATZ);
KUNDEN.KdnListe ( p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_ART => 'F',
p_PRIVAT => 'W',
p_FIRMA => 'W',
p_INTERN => 'W',
p_FUNC => 'DL');
RETURN;
END IF;
SELECT COUNT (AUFTRNR) INTO m_cntAuf FROM AUFTRAG
WHERE FAHRGESTELL=p_FAHRGESTELL
AND (AUFTRNR <> m_AuftrNr)
AND (B2BHDLNR IS NULL)
AND (KENNUNG='A' OR (KENNUNG='V' AND VERSCHIEB='W'));
SELECT COUNT (FAHRGESTELL) INTO m_cntBlkM FROM FAHRAUFT
WHERE HDLNR =p_HDLNR AND
FAHRGESTELL=p_FAHRGESTELL AND
ZUAB='-';
SELECT COUNT (FAHRGESTELL) INTO m_cntBlkP FROM FAHRAUFT
WHERE HDLNR =p_HDLNR AND
FAHRGESTELL=p_FAHRGESTELL AND
ZUAB='+';
SELECT COUNT (FAHRGESTELL) INTO m_cntBlk FROM FAHRAUFT
WHERE HDLNR =p_HDLNR AND
FAHRGESTELL=p_FAHRGESTELL AND
DATUM =ZEIT AND -- noch offen
ZUAB='!';
IF m_cntAuf+m_cntBlk+(m_cntBlkM-m_cntBlkP)>0
THEN Xtool.Meldung(p_HDLNR,Xtool.OutMeldung(p_HDLNR,'fzgehen',1,''));
RETURN;
END IF;
SELECT Status, UNFALL1, UNFALL2, STANDORT, KMSTAND, KENNZ
INTO m_OldStatus, m_UNFALL1, m_UNFALL2, m_Standort, m_FzKmStand, m_Kennz
FROM FAHRZEUG
WHERE FAHRGESTELL=p_FAHRGESTELL
AND ZULASSUNG =TO_DATE(p_ZULASSUNG,Loc_NLSDate);
IF m_OldStatus='V'
THEN m_Status:='x';
END IF;
IF m_KmStand=0
THEN m_KmStand:=m_FzKmStand;
END IF;
INSERT INTO FAHRAUFT
(HDLNR, FAHRGESTELL, DATUM, ZEIT, KENNZ, ZUAB, PARTNER, NAME, VNAME,
GEBDATUM, GEBORT, FSCHEIN, FDATUM, KMSTAND, UNFALL1, UNFALL2,
VONPARTNER, AHDLNR, AUFTRNR, PARKPLATZ, FAHRDL)
VALUES (p_HDLNR,p_FAHRGESTELL, m_DATUM, m_DATUM,
m_Kennz,'>',p_PARTNER, p_NAME, p_VNAME,
TO_DATE(p_GEBDATUM,Loc_NLSDate), p_GEBORT, p_FSCHEIN, TO_DATE(p_FDATUM,Loc_NLSDate), m_KMSTAND,
m_UNFALL1, m_UNFALL2,
m_Standort, p_AHDLNR, p_AUFTRNR, p_PARKPLATZ, p_FAHRDL);
-- SUBSTR(p_HDLNR,1,3)||';'||SUBSTR(p_HDLNR,4,5)||';'||p_FILNR);
UPDATE FAHRZEUG SET
KMSTAND = m_KmStand,
ZUSTANDORT = m_Standort,
STANDORT = p_PARTNER,
PARKPLATZ = p_PARKPLATZ,
DFU = 'F',
Status = m_Status
WHERE FAHRGESTELL=p_FAHRGESTELL
AND ZULASSUNG =TO_DATE(p_ZULASSUNG,Loc_NLSDate);
COMMIT;
-- IF p_AUFTRNR IS NOT NULL
-- THEN BEGIN
-- SELECT FZGVERBR, FZGABHL, TRPZENTRALE
-- INTO m_FzgVerbr, m_FzgAbhl, m_TrpZentrale
-- FROM AUFTRAG
-- WHERE HDLNR =p_AHDLNR
-- AND AUFTRNR=p_AUFTRNR;
-- EXCEPTION
-- WHEN OTHERS THEN NULL;
-- END;
-- END IF;
ShowFahrauf(p_HDLNR,p_FILNR,p_USERNR,p_FAHRGESTELL,
TO_CHAR(m_DATUM,Loc_NLSDate),TO_CHAR(m_DATUM,Loc_NLSTime),'fahrprint');
/* IF p_AUFTRNR IS NULL OR
m_FzgVerbr='F'
THEN ShowFahrauf(p_HDLNR,p_FILNR,p_USERNR,p_FAHRGESTELL,
TO_CHAR(m_DATUM,Loc_NLSDate),TO_CHAR(m_DATUM,Loc_NLSTime),'fahrprint');
ELSE AUFTRAEGE.ShowAuftr(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => p_AHDLNR,
p_AFILNR => p_FILNR,
p_AUFART => 'A',
p_KENNUNG => 'A',
p_AUFTRNR => p_AUFTRNR,
p_XSL => 'mietprint');
END IF;*/
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END FzUeber;
/******************************************************************************
NAME: Rechnungen.FzKommenEx
PURPOSE: Fahrzeug�berf�hrung kommen, Erfassung
Date: 02.11.2004
*******************************************************************************/
PROCEDURE FzKommenEx(p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_FAHRGESTELL VARCHAR2,
p_ZULASSUNG VARCHAR2,
x INTEGER DEFAULT NULL,
y INTEGER DEFAULT NULL) IS
Rec_Fahrzeug FAHRZEUG%ROWTYPE;
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
my_ProgName VARCHAR2(20):='FzKommenEx';
my_HatParkplatz VARCHAR2(01);
BEGIN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin(p_HDLNR => p_HDLNR);
RETURN;
END IF;
SELECT HATPARKPLATZ
INTO my_HatParkplatz
FROM FIRMA F, FIRMAPARAM FP
WHERE F.HDLNR=p_HDLNR AND FP.HDLNR=p_HDLNR;
SELECT *
INTO Rec_Fahrzeug
FROM FAHRZEUG
WHERE FAHRGESTELL=p_FAHRGESTELL AND
ZULASSUNG =TO_DATE(p_ZULASSUNG,Loc_NLSDate);
Xtool.XMLHeader('Fahrauftrag','fzkommen',p_HDLNR,p_USERNR,'FzKommenEx');
Xtool.OutFeldBez(p_HDLNR,'fzkommen');
Xtool.XMLStart('Fahrauft');
Xtool.htx('HDLNR' ,p_HDLNR);
Xtool.htx('FILNR' ,p_FILNR);
Xtool.htx('USERNR' ,p_USERNR);
Xtool.htx('FAHRGESTELL',p_FAHRGESTELL);
Xtool.htx('ZULASSUNG' ,p_ZULASSUNG);
Xtool.htx('KENNZ' ,Rec_Fahrzeug.kennz);
Xtool.htx('FAHRZEUG' ,Rec_Fahrzeug.bezeichnung);
Xtool.htx('KMSTAND' ,Rec_Fahrzeug.kmStand);
Xtool.htx('HATPARKPLATZ',my_HatParkplatz);
Xtool.XMLEnd('Fahrauft');
Xtool.XMLEnd('Fahrauftrag');
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END FzKommenEx;
/******************************************************************************
NAME: Rechnungen.FzKommen
PURPOSE: Fahrzeug�berf�hrung Ablage neuer KM-Stand und Standort
Date: 20.05.2003
*******************************************************************************/
PROCEDURE FzKommen ( p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_FAHRGESTELL VARCHAR2,
p_ZULASSUNG VARCHAR2,
p_KENNZ VARCHAR2,
p_KMSTAND VARCHAR2,
p_PARKPLATZ VARCHAR2 DEFAULT NULL,
p_KURZRUECK VARCHAR2 DEFAULT 'F') IS
my_ProgName VARCHAR2(20):='FzKommen';
m_DATUM DATE := XTool.GetSysDate(p_HDLNR);
m_Status VARCHAR2(1) :='0';
m_OldStatus VARCHAR2(1);
m_Standort VARCHAR2(14);
m_TrpZentrale VARCHAR2(01);
m_FzgVerbr VARCHAR2(01);
m_FzgAbhl VARCHAR2(01);
m_AHdlNr VARCHAR2(08);
m_HatParkplatz VARCHAR2(01);
m_AuftrNr INTEGER;
m_FaKmStand INTEGER;
m_Verbring BOOLEAN:=false;
m_Abholung BOOLEAN:=false;
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
Loc_NLSTime VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,2);
-- Loc_NLSWert VARCHAR2(30):=XTool.GetNLS(p_HDLNR,3);
PROCEDURE CheckVerbringung IS
CURSOR curfahrauft IS
SELECT AHDLNR, AUFTRNR, KMSTAND
FROM FAHRAUFT
WHERE FAHRGESTELL=p_FAHRGESTELL
AND ZUAB ='>'
-- AND AUFTRNR IS NOT NULL
ORDER BY DATUM DESC;
myIsLast BOOLEAN:=TRUE;
BEGIN
FOR rec_fa IN curfahrauft LOOP
IF myIsLast
THEN m_AHdlNr :=rec_fa.AHDLNR;
m_AuftrNr :=rec_fa.AUFTRNR;
m_FaKmStand:=rec_fa.KMSTAND;
END IF;
myIsLast:=FALSE;
END LOOP;
END;
PROCEDURE CheckAnAb IS
my_Cnt INTEGER;
BEGIN
SELECT FZGVERBR, FZGABHL, TRPZENTRALE
INTO m_FzgVerbr, m_FzgAbhl, m_TrpZentrale
FROM AUFTRAG
WHERE HDLNR =m_AHdlNr
AND AUFTRNR=m_AuftrNr;
SELECT COUNT(AUFTRNR)
INTO my_Cnt
FROM FAHRAUFT
WHERE HDLNR =m_AHDLNR
AND AUFTRNR=m_AuftrNr;
IF my_Cnt=1
THEN IF m_FzgVerbr='W'
THEN m_Verbring:=true;
ELSE m_Abholung:=true;
END IF;
END IF;
IF my_Cnt=3
THEN m_Abholung:=true;
END IF;
EXCEPTION
WHEN OTHERS THEN m_TrpZentrale:='-';
END;
BEGIN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin(p_HDLNR => p_HDLNR);
RETURN;
END IF;
SELECT HATPARKPLATZ
INTO m_HatParkplatz
FROM FIRMA F, FIRMAPARAM FP
WHERE F.HDLNR=p_HDLNR AND FP.HDLNR=p_HDLNR;
SELECT Status, STANDORT
INTO m_OldStatus, m_Standort
FROM FAHRZEUG
WHERE FAHRGESTELL=p_FAHRGESTELL AND
ZULASSUNG =TO_DATE(p_ZULASSUNG,Loc_NLSDate);
IF m_OldStatus='x'
THEN m_Status:='V';
END IF;
IF m_OldStatus IN ('>','x')
THEN CheckVerbringung;
CheckAnAb;
INSERT INTO FAHRAUFT
(HDLNR, FAHRGESTELL, DATUM, ZEIT, KENNZ, ZUAB, PARTNER, ANKMSTAND, AHDLNR, AUFTRNR, PARKPLATZ)
VALUES
(p_HDLNR,p_FAHRGESTELL, m_DATUM, m_DATUM,p_KENNZ,'<',m_Standort,--SUBSTR(p_HDLNR,1,3) || ';' || SUBSTR(p_HDLNR,4,5) || ';' || p_FILNR,
TO_NUMBER(p_KMSTAND,'999999'), m_AHdlNr, m_AuftrNr, p_PARKPLATZ);
UPDATE FAHRZEUG
SET KMSTAND = TO_NUMBER(NVL(p_KMSTAND,0),'999999'),
-- STANDORT = SUBSTR(p_HDLNR,1,3) || ';' || SUBSTR(p_HDLNR,4,5) || ';' || p_FILNR,
ZUSTANDORT = NULL,
DFU = 'F',
Status = m_Status
WHERE FAHRGESTELL=p_FAHRGESTELL AND
ZULASSUNG =TO_DATE(p_ZULASSUNG,Loc_NLSDate);
IF m_HatParkplatz='W'
THEN UPDATE FAHRZEUG
SET PARKPLATZ=p_PARKPLATZ
WHERE FAHRGESTELL=p_FAHRGESTELL
AND ZULASSUNG =TO_DATE(p_ZULASSUNG,Loc_NLSDate);
END IF;
INSERT INTO FAHRZSTDORT
(FAHRGESTELL, DATUM, HDLNR, FILNR)
VALUES
(p_FAHRGESTELL,SYSDATE,SUBSTR(m_Standort,1,3)||SUBSTR(m_Standort,5,5),SUBSTR(m_Standort,11,4));
IF NVL(m_AuftrNr,0)>0
THEN IF m_Verbring
THEN UPDATE AUFTRAG
SET ABKM = TO_NUMBER(p_KMSTAND,'999999')
WHERE HDLNR =m_AHdlNr
AND AUFTRNR=m_AuftrNr;
COMMIT;
-- Res in Mv, Daten sind vorbelegt
AUFTRAEGE.SHOWAUFTR(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => m_AHdlnr,
p_AFILNR => p_FILNR,
p_AUFART => 'A',
p_KENNUNG => 'D',
p_AUFTRNR => m_AuftrNr,
p_FUNC => '1',
p_XSL => 'erfauftr');
RETURN;
END IF;
IF m_Abholung
THEN --IF m_TrpZentrale='F'
-- THEN UPDATE AUFTRAG
-- SET ANKM = TO_NUMBER(NVL(p_KMSTAND,0),'999999') -- Ankunft AH
-- WHERE HDLNR =m_AHdlNr
-- AND AUFTRNR=m_AuftrNr;
--END IF;
--COMMIT;
AUFTRAEGE.SHOWAUFTR(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => m_AHdlnr,
p_AFILNR => p_FILNR,
p_AUFART => 'A',
p_KENNUNG => 'A',
p_AUFTRNR => m_AuftrNr,
p_XSL => 'mietkurz');
RETURN;
END IF;
END IF;
COMMIT;
END IF;
IF p_KURZRUECK='F'
THEN ShowFahrauf(p_HDLNR,p_FILNR,p_USERNR,p_FAHRGESTELL,
TO_CHAR(m_DATUM,Loc_NLSDate),TO_CHAR(m_DATUM,Loc_NLSTime),'fahrprint');
END IF;
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END FzKommen;
/******************************************************************************
NAME: Rechnungen.ShowFahrauf
PURPOSE: Fahrzeug�berf�hrung Anzeige Fahrauftrag
Date: 09.12.2003/08.06.2017
*******************************************************************************/
PROCEDURE ShowFahrauf(p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_FAHRGESTELL VARCHAR2,
p_DATUM VARCHAR2,
p_ZEIT VARCHAR2,
p_XSL VARCHAR2 DEFAULT 'drcfahrauf',
x INTEGER DEFAULT NULL,
y INTEGER DEFAULT NULL) IS
CURSOR curfahrzeuge IS
SELECT * FROM FAHRZEUG
WHERE -- HDLNR =p_HDLNR AND
FAHRGESTELL=p_FAHRGESTELL;
Rec_Fahrauf FAHRAUFT%ROWTYPE;
Rec_Firma FIRMA%ROWTYPE;
Rec_FirmaP FIRMAPARAM%ROWTYPE;
my_XMLLob CLOB;
my_ProgName VARCHAR2(20) :='ShowFahrauf';
my_RueckNr INTEGER;
my_HatPdfFo VARCHAR2(01);
m_vonadr VARCHAR2(40) :='';
m_vonstr VARCHAR2(40) :='';
m_vonhausnr VARCHAR2(10) :='';
m_vonplz VARCHAR2(10) :='';
m_vonort VARCHAR2(30) :='';
m_vontel VARCHAR2(30) :='';
m_vondatum DATE;
m_nachadr VARCHAR2(40) :='';
m_nachstr VARCHAR2(40) :='';
m_nachhausnr VARCHAR2(10) :='';
m_nachplz VARCHAR2(10) :='';
m_nachort VARCHAR2(30) :='';
m_nachtel VARCHAR2(30) :='';
m_nachdatum DATE;
m_error VARCHAR2(1) :='0';
m_ZULASSUNG VARCHAR2(10) :='';
m_BEZEICHNUNG VARCHAR2(50) :='';
m_BESITZER VARCHAR2(20) :='';
m_BESITZEREXT VARCHAR2(40) :='';
m_FARBE VARCHAR2(30) :='';
m_TREIBSTOFF INTEGER;
m_ENERGIELABEL VARCHAR2(05);
m_FZGRUPPE VARCHAR2(01);
m_KRAFTBEZ VARCHAR2(40);
m_CO2 FLOAT;
m_VERSWERT FLOAT;
m_ABMELDUNG DATE;
m_FNAME VARCHAR2(40);
m_FVNAME VARCHAR2(40);
m_FGEBDATUM VARCHAR2(10);
m_FGEBORT VARCHAR2(40);
m_FSCHEIN VARCHAR2(40);
m_FDATUM VARCHAR2(10);
m_AbDatum VARCHAR2(10);
m_AbUhr VARCHAR2(5);
m_Abkm VARCHAR2(10);
m_VonPartner VARCHAR2(20):=SUBSTR(p_HDLNR,1,3) || ';' || SUBSTR(p_HDLNR,4,5) || ';' || p_FILNR;
m_HDLNR VARCHAR2(8) :=p_HDLNR;
m_XSL VARCHAR2(30):=p_XSL;
m_KENNUNG VARCHAR2(01);
m_Bem11 VARCHAR2(30);
m_Bem12 VARCHAR2(30);
m_Bem13 VARCHAR2(30);
m_Bem21 VARCHAR2(30);
m_Bem22 VARCHAR2(30);
m_Bem23 VARCHAR2(30);
RueckXsl VARCHAR2(30):=NULL;
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
Loc_NLSTime VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,2);
Loc_NLSWert VARCHAR2(30):=XTool.GetNLS(p_HDLNR,3);
PROCEDURE SucheAbgang IS
CURSOR curfahrauf IS
SELECT * FROM FAHRAUFT
WHERE -- HDLNR =p_HDLNR AND
FAHRGESTELL=p_FAHRGESTELL AND
ZUAB ='>' AND
DATUM <= TO_DATE(p_DATUM || p_ZEIT,Loc_NLSDate || Loc_NLSTime)
ORDER BY DATUM DESC;
my_found BOOLEAN :=FALSE;
BEGIN
FOR rec_fa IN curfahrauf LOOP
IF NOT my_found
THEN m_FNAME :=rec_fa.NAME;
m_FVNAME :=rec_fa.VNAME;
m_FGEBDATUM :=TO_CHAR(rec_fa.GEBDATUM,Loc_NLSDate);
m_FGEBORT :=rec_fa.GEBORT;
m_FSCHEIN :=rec_fa.FSCHEIN;
m_FDATUM :=TO_CHAR(rec_fa.FDATUM,Loc_NLSDate);
m_AbDatum :=TO_CHAR(rec_fa.DATUM,Loc_NLSDate);
m_AbUhr :=TO_CHAR(rec_fa.DATUM,Loc_NLSTime);
m_AbKm :=TO_CHAR(rec_fa.KMSTAND);
m_VonPartner:=TO_CHAR(rec_fa.VONPARTNER);
IF m_VonPartner IS NULL
THEN m_VonPartner:=SUBSTR(rec_fa.HDLNR,1,3)||';'||SUBSTR(rec_fa.HDLNR,4,5)||';0001';
END IF;
my_found:=TRUE;
END IF;
END LOOP;
END;
BEGIN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin(p_HDLNR => p_HDLNR);
RETURN;
END IF;
m_error:='1';
BEGIN
SELECT *
INTO Rec_Firma
FROM FIRMA
WHERE HDLNR=m_HDLNR;
SELECT *
INTO Rec_FirmaP
FROM FIRMAPARAM
WHERE HDLNR=m_HDLNR;
EXCEPTION
WHEN OTHERS THEN m_vonadr:='?';
END;
my_HatPdfFo:=Rec_FirmaP.HATPDFFO;
SELECT * INTO Rec_Fahrauf FROM FAHRAUFT
WHERE HDLNR =p_HDLNR AND
FAHRGESTELL=p_FAHRGESTELL AND
TO_CHAR(DATUM,Loc_NLSDate)=p_DATUM AND
TO_CHAR(DATUM,Loc_NLSTime)=p_ZEIT AND
ROWNUM=1;
FOR rec_fahrzeug IN curfahrzeuge LOOP
IF (rec_FAHRZEUG.Status='0') OR
(rec_FAHRZEUG.Status='>') OR
(rec_FAHRZEUG.Status='V') OR
(rec_FAHRZEUG.Status='x')
THEN m_ABMELDUNG:=SYSDATE;
ELSE m_ABMELDUNG:=rec_fahrzeug.ABMELDUNG;
END IF;
IF (TO_DATE(p_DATUM,Loc_NLSDate)>=rec_fahrzeug.ZULASSUNG) AND
(TO_DATE(p_DATUM,Loc_NLSDate)<=m_ABMELDUNG)
THEN m_ZULASSUNG :=rec_fahrzeug.ZULASSUNG;
m_BEZEICHNUNG:=rec_fahrzeug.BEZEICHNUNG;
m_BESITZER :=rec_fahrzeug.BESITZER;
END IF;
m_Farbe :=rec_fahrzeug.FARBE;
m_TreibStoff :=rec_fahrzeug.TREIBSTOFF;
m_EnergieLabel:=rec_fahrzeug.ENERGIELABEL;
m_CO2 :=rec_fahrzeug.CO2;
m_VersWert :=rec_fahrzeug.VERSWERT;
m_FzGruppe :=rec_fahrzeug.TARIFTYP;
END LOOP;
BEGIN
SELECT INHALT INTO m_KraftBez
FROM MASKEN
WHERE HDLNR = SUBSTR(Rec_Firma.KONZERNZUGR,1,6)|| '00' AND
XMLNR = 0 AND
FELDNR= 2500+m_Treibstoff;
EXCEPTION
WHEN OTHERS THEN m_KraftBez:='?';
END;
IF Rec_Fahrauf.ZUAB='<' -- kommen
THEN SucheAbgang;
ELSE m_VonPartner:=Rec_Fahrauf.VONPARTNER;
END IF;
m_HDLNR :=SUBSTR(m_VonPartner,1,3)||SUBSTR(m_VonPartner,5,5);
BEGIN
SELECT MATCHCODE, STRASSE, HAUSNR, PLZ, ORT, TEL
INTO m_vonadr, m_vonstr, m_vonhausnr, m_vonplz, m_vonort, m_vontel
FROM PARTNER
WHERE HDLNR= m_HDLNR AND
NR = m_VonPartner;
EXCEPTION
WHEN OTHERS THEN
m_vonadr:='?';
END;
BEGIN
SELECT MATCHCODE, STRASSE, HAUSNR, PLZ, ORT, TEL
INTO m_nachadr, m_nachstr, m_nachhausnr, m_nachplz, m_nachort, m_nachtel
FROM PARTNER
WHERE HDLNR= SUBSTR(Rec_Fahrauf.PARTNER,1,3)||SUBSTR(Rec_Fahrauf.PARTNER,5,5) AND
NR = Rec_Fahrauf.PARTNER;
EXCEPTION
WHEN OTHERS THEN
m_nachadr:=SUBSTR(Rec_Fahrauf.PARTNER,1,3)||SUBSTR(Rec_Fahrauf.PARTNER,5,5) || ' ' || Rec_Fahrauf.PARTNER;
END;
BEGIN
IF NVL(Rec_Fahrauf.AUFTRNR,0)>0 -- Verbringungsauftrag
THEN -- wenn D, dann Verbringung zum Kunden, wenn A dann Abholung vom Kunden
SELECT KENNUNG
INTO m_KENNUNG
FROM AUFTRAG
WHERE HDLNR =Rec_Fahrauf.AHDLNR
AND AUFTRNR=Rec_Fahrauf.AUFTRNR;
IF m_KENNUNG='D'
THEN SELECT ZUDATUM, NAME1 || ' ' || NAME2, ZUSTRASSE, ZUPLZ, ZUORT, TELEFON, ZUBEM1, ZUBEM2, ZUBEM3
INTO m_nachdatum, m_nachadr, m_nachstr, m_nachplz, m_nachort, m_nachtel, m_Bem11, m_Bem12, m_Bem13
FROM AUFTRAG
WHERE HDLNR =Rec_Fahrauf.AHDLNR
AND AUFTRNR=Rec_Fahrauf.AUFTRNR;
ELSE SELECT ABHDATUM, NAME1 || ' ' || NAME2, ZUSTRASSE, ZUPLZ, ZUORT, TELEFON, ABHBEM1, ABHBEM2, ABHBEM3
INTO m_vondatum, m_vonadr, m_vonstr, m_vonplz, m_vonort, m_vontel, m_Bem11, m_Bem12, m_Bem13
FROM AUFTRAG
WHERE HDLNR =Rec_Fahrauf.AHDLNR
AND AUFTRNR=Rec_Fahrauf.AUFTRNR;
END IF;
END IF;
EXCEPTION
WHEN OTHERS THEN m_nachadr:='?';
END;
BEGIN
SELECT MATCHCODE INTO m_BESITZEREXT FROM PARTNER
WHERE HDLNR= SUBSTR(m_BESITZER,1,3)||SUBSTR(m_BESITZER,5,5) AND
NR = m_BESITZER;
EXCEPTION
WHEN OTHERS THEN
m_BESITZEREXT:='?';
END;
IF (SUBSTR(Rec_Firma.KONZERNZUGR,5,2)='15') AND -- NL, Sonderformular
(m_XSL='drcfahrauf')
THEN m_XSL:=m_XSL||'15';
END IF;
IF Rec_Firma.FORMTYP IS NOT NULL
THEN IF m_xsl='drckontroll' AND APP_CONST.c_Func_MvKtrlForm='W'
THEN m_xsl:=m_xsl||Rec_Firma.FORMTYP;
END IF;
END IF;
Xtool.XMLHeader(my_XMLLob,'Auftraege',m_xsl,p_HDLNR,p_USERNR,'ShowFahrauf');
Xtool.OutFeldBez(my_XMLLob,p_HDLNR,p_XSL);
Xtool.XMLStart(my_XMLLob,my_HatPdfFo,'Auftrag');
Xtool.htx(my_XMLLob,my_HatPdfFo,'HDLNR' ,p_HDLNR);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FILNR' ,p_FILNR);
Xtool.htx(my_XMLLob,my_HatPdfFo,'USERNR' ,p_USERNR);
Xtool.htx(my_XMLLob,my_HatPdfFo,'ABSHDLNR' ,TO_CHAR(Rec_Firma.VZ,'000',Loc_NLSWert)||TO_CHAR(Rec_Firma.HAENDLER,'900000',Loc_NLSWert));
-- ToDo Frank: Wagenkontrollkarte wenn kein MV vorliegt
-- Xtool.htx('AUFTRNR' ,'F'); -- F�r R�cksprung aus WgKontrollkarte
Xtool.htx(my_XMLLob,my_HatPdfFo,'FAHRGESTELL',p_FAHRGESTELL);
Xtool.htx(my_XMLLob,my_HatPdfFo,'ZULASSUNG' ,m_ZULASSUNG);
Xtool.htx(my_XMLLob,my_HatPdfFo,'KENNZ' ,Rec_Fahrauf.KENNZ);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FAHRZEUG' ,m_BEZEICHNUNG);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FARBE' ,m_Farbe);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FZGRUPPE' ,m_FzGruppe);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FZCO2' ,TO_CHAR(m_CO2));
Xtool.htx(my_XMLLob,my_HatPdfFo,'FZENERGIE' ,m_EnergieLabel);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FZTREIBST' ,m_KraftBez);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FZVERSWERT' ,TO_CHAR(m_VersWert,'999G999D99',Loc_NLSWert));
Xtool.htx(my_XMLLob,my_HatPdfFo,'BESITZER' ,m_BESITZER);
Xtool.htx(my_XMLLob,my_HatPdfFo,'BESITZEREXT',m_BESITZEREXT);
Xtool.htx(my_XMLLob,my_HatPdfFo,'ABSENDER' ,Rec_Firma.ABSENDER);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FINAME1' ,Rec_Firma.NAME_1);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FINAME2' ,Rec_Firma.NAME_2);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FINAME3' ,Rec_Firma.NAME_3);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FISTRASSE' ,TRIM(Rec_Firma.STRASSE||' '||Rec_Firma.HAUSNR));
Xtool.htx(my_XMLLob,my_HatPdfFo,'FIPLZ' ,Rec_Firma.PLZ);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FIORT' ,Rec_Firma.ORT);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FITELEFON' ,Rec_Firma.TELEFON);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FIFAX' ,Rec_Firma.FAX);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FIEMAIL' ,Rec_Firma.EMAIL);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FIWEBADR' ,Rec_Firma.WEBADRESSE);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FBANK1' ,Rec_Firma.BANK);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FBLZ1' ,Rec_Firma.BLZ);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FKONTO1' ,Rec_Firma.KONTO);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FBANK2' ,Rec_Firma.BANK2);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FBLZ2' ,Rec_Firma.BLZ2);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FKONTO2' ,Rec_Firma.KONTO2);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FEGSTEUER' ,Rec_Firma.EGSTEUER);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FSTEUERNR' ,Rec_Firma.STEUERNR);
Xtool.htx(my_XMLLob,my_HatPdfFo,'ANKMSTAND' ,Rec_Fahrauf.ANKMSTAND);
Xtool.htx(my_XMLLob,my_HatPdfFo,'PARTNER' ,Rec_Fahrauf.PARTNER);
Xtool.htx(my_XMLLob,my_HatPdfFo,'SCHADEN1' ,Rec_Fahrauf.UNFALL1);
Xtool.htx(my_XMLLob,my_HatPdfFo,'SCHADEN2' ,Rec_Fahrauf.UNFALL2);
Xtool.htx(my_XMLLob,my_HatPdfFo,'PARKPLATZ' ,Rec_Fahrauf.PARKPLATZ);
Xtool.htx(my_XMLLob,my_HatPdfFo,'VONADR' ,m_vonadr);
Xtool.htx(my_XMLLob,my_HatPdfFo,'VONSTR' ,m_vonstr||' '||m_vonhausnr);
-- Xtool.htx(my_XMLLob,'VONHAUSNR' ,m_vonhausnr);
Xtool.htx(my_XMLLob,my_HatPdfFo,'VONORT' ,m_vonplz || ' ' || m_vonort);
Xtool.htx(my_XMLLob,my_HatPdfFo,'VONTEL' ,m_vontel);
Xtool.htx(my_XMLLob,my_HatPdfFo,'VONDATUM' ,TO_CHAR(m_vondatum,Loc_NLSDate));
Xtool.htx(my_XMLLob,my_HatPdfFo,'VONZEIT' ,TO_CHAR(m_vondatum,Loc_NLSTime));
Xtool.htx(my_XMLLob,my_HatPdfFo,'NACHADR' ,m_nachadr);
Xtool.htx(my_XMLLob,my_HatPdfFo,'NACHSTR' ,m_nachstr||' '||m_nachhausnr);
-- Xtool.htx(my_XMLLob,'NACHHAUSNR' ,m_nachhausnr);
Xtool.htx(my_XMLLob,my_HatPdfFo,'NACHORT' ,m_nachplz || ' ' || m_nachort);
Xtool.htx(my_XMLLob,my_HatPdfFo,'NACHTEL' ,m_nachtel);
Xtool.htx(my_XMLLob,my_HatPdfFo,'NACHDATUM' ,TO_CHAR(m_nachdatum,Loc_NLSDate));
Xtool.htx(my_XMLLob,my_HatPdfFo,'NACHZEIT' ,TO_CHAR(m_nachdatum,Loc_NLSTime));
Xtool.htx(my_XMLLob,my_HatPdfFo,'DATUM' ,TO_CHAR(Rec_Fahrauf.DATUM,Loc_NLSDate));
Xtool.htx(my_XMLLob,my_HatPdfFo,'ZEIT' ,TO_CHAR(Rec_Fahrauf.DATUM,Loc_NLSTime));
Xtool.htx(my_XMLLob,my_HatPdfFo,'VPARTNER' ,m_VonPartner);
Xtool.htx(my_XMLLob,my_HatPdfFo,'AHDLNR' ,Rec_Fahrauf.AHDLNR);
Xtool.htx(my_XMLLob,my_HatPdfFo,'AUFTRNR' ,Rec_Fahrauf.AUFTRNR);
IF Rec_Fahrauf.ZUAB='>'
THEN Xtool.htx(my_XMLLob,my_HatPdfFo,'ZUAB' ,'1');
Xtool.htx(my_XMLLob,my_HatPdfFo,'KMSTAND' ,Rec_Fahrauf.KMSTAND);
Xtool.htx(my_XMLLob,my_HatPdfFo,'VNAME' ,Rec_Fahrauf.VNAME);
Xtool.htx(my_XMLLob,my_HatPdfFo,'NAME' ,Rec_Fahrauf.NAME);
Xtool.htx(my_XMLLob,my_HatPdfFo,'GEBDATUM' ,TO_CHAR(Rec_Fahrauf.GEBDATUM,Loc_NLSDate));
Xtool.htx(my_XMLLob,my_HatPdfFo,'GEBORT' ,Rec_Fahrauf.GEBORT);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FSCHEIN' ,Rec_Fahrauf.FSCHEIN);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FDATUM' ,TO_CHAR(Rec_Fahrauf.FDATUM,Loc_NLSDate));
Xtool.htx(my_XMLLob,my_HatPdfFo,'ABDATUM' ,TO_CHAR(Rec_Fahrauf.DATUM,Loc_NLSDate));
Xtool.htx(my_XMLLob,my_HatPdfFo,'ABZEIT' ,TO_CHAR(Rec_Fahrauf.DATUM,Loc_NLSTime));
Xtool.htx(my_XMLLob,my_HatPdfFo,'ANDATUM' ,'');
Xtool.htx(my_XMLLob,my_HatPdfFo,'ANZEIT' ,'');
ELSE Xtool.htx(my_XMLLob,my_HatPdfFo,'ZUAB' ,'0');
Xtool.htx(my_XMLLob,my_HatPdfFo,'KMSTAND' ,m_AbKm);
Xtool.htx(my_XMLLob,my_HatPdfFo,'VNAME' ,m_FVNAME);
Xtool.htx(my_XMLLob,my_HatPdfFo,'NAME' ,m_FNAME);
Xtool.htx(my_XMLLob,my_HatPdfFo,'GEBDATUM' ,m_FGEBDATUM);
Xtool.htx(my_XMLLob,my_HatPdfFo,'GEBORT' ,m_FGEBORT);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FSCHEIN' ,m_FSCHEIN);
Xtool.htx(my_XMLLob,my_HatPdfFo,'FDATUM' ,m_FDATUM);
Xtool.htx(my_XMLLob,my_HatPdfFo,'ABDATUM' ,m_AbDatum);
Xtool.htx(my_XMLLob,my_HatPdfFo,'ABZEIT' ,m_AbUhr);
Xtool.htx(my_XMLLob,my_HatPdfFo,'ANDATUM' ,TO_CHAR(Rec_Fahrauf.DATUM,Loc_NLSDate));
Xtool.htx(my_XMLLob,my_HatPdfFo,'ANZEIT' ,TO_CHAR(Rec_Fahrauf.DATUM,Loc_NLSTime));
END IF;
Xtool.htx(my_XMLLob,my_HatPdfFo,'BEM11' ,m_Bem11);
Xtool.htx(my_XMLLob,my_HatPdfFo,'BEM12' ,m_Bem12);
Xtool.htx(my_XMLLob,my_HatPdfFo,'BEM13' ,m_Bem13);
Xtool.htx(my_XMLLob,my_HatPdfFo,'BEM21' ,m_Bem21);
Xtool.htx(my_XMLLob,my_HatPdfFo,'BEM22' ,m_Bem22);
Xtool.htx(my_XMLLob,my_HatPdfFo,'BEM23' ,m_Bem23);
Xtool.htx(my_XMLLob,my_HatPdfFo,'LOGOFUSSDRUCK' ,Rec_Firma.LOGOFUSSDRUCK);
Xtool.htx(my_XMLLob,my_HatPdfFo,'LOGODRUCK' ,Rec_Firma.LOGODRUCK);
Xtool.htx(my_XMLLob,my_HatPdfFo,'HATPARKPLATZ' ,Rec_FirmaP.HATPARKPLATZ);
Xtool.htx(my_XMLLob,my_HatPdfFo,'HATSTR2' ,Rec_FirmaP.HATSTRASSE2);
Xtool.htx(my_XMLLob,my_HatPdfFo,'HATLOGODRUCK' ,Rec_FirmaP.HATLOGODRUCK);
Xtool.htx(my_XMLLob,my_HatPdfFo,'HATFUSSEINSPL' ,Rec_FirmaP.HATFUSSEINSPL);
Xtool.htx(my_XMLLob,my_HatPdfFo,'HATLOGOSCALE' ,Rec_FirmaP.HATLOGOSCALE);
Xtool.htx(my_XMLLob,my_HatPdfFo,'DRCLOGOHOEHE' ,Rec_FirmaP.DRCLOGOHOEHE);
Xtool.XMLEnd(my_XMLLob,my_HatPdfFo,'Auftrag');
Xtool.XMLEnd(my_XMLLob,my_HatPdfFo,'Auftraege');
IF Rec_FirmaP.HATPDFFO='W'
THEN XTOOL.ShowPdf(my_XMLLob,m_xsl);
END IF;
-- R�cksprung organisieren
DELETE FROM GOBACKTBL WHERE HDLNR=p_HDLNR AND USERNR=p_USERNR AND LISTE=0;
IF NVL(X,0)>0
THEN my_RueckNr:=2350; -- Liste alte fahrauftr�
RueckXSL:='-';
ELSE my_RueckNr:=1510; -- DruckVorstufe
RueckXSL:='fahrprint';
END IF;
IF RueckXsl IS NOT NULL THEN
INSERT INTO GOBACKTBL
(HDLNR,USERNR,FILNR,DATUMSTAMP,FUNKTION,LISTE,XSL,FUNC,FAHRGESTELL,DATUM,ZEIT)
VALUES
(p_HDLNR,p_USERNR,p_FILNR,SYSDATE,my_RueckNr,0,RueckXSL,NULL,p_FAHRGESTELL,p_DATUM,p_ZEIT);
END IF;
COMMIT;
-- Ende
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END ShowFahrauf;
/******************************************************************************
NAME: Rechnungen.PoolSammelAb
PURPOSE: Sammelabrechnung aus Poolmanagement
Date: 08.04.2010
*******************************************************************************/
PROCEDURE PoolSammelAb(p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_AUFTRNR VARCHAR2,
p_DATUM VARCHAR2,
p_ZEIT VARCHAR2) IS
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
Loc_NLSTime VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,2);
my_KmsOk BOOLEAN:=true;
my_ProgName VARCHAR2(20) :='PoolSammelAb';
my_KopfNr INTEGER;
my_AHdlNr VARCHAR2(08);
my_AFilNr VARCHAR2(04);
my_AbKm INTEGER;
my_AnKm INTEGER;
my_Debitor INTEGER;
my_BerechGrp VARCHAR2(01);
my_TarifTyp VARCHAR2(20);
my_Zahlungsart VARCHAR2(01);
my_BBeginn DATE;
my_BBUhr DATE;
my_MEnde VARCHAR2(10):=p_DATUM;
my_MEUhr VARCHAR2(05):=p_ZEIT;
my_errortext VARCHAR2(200):=NULL;
PROCEDURE DoCheckKms IS
CURSOR curpoolfz IS
SELECT * FROM AUFTRFZ
WHERE HDLNR =p_HDLNR AND
AUFTRNR=my_KopfNr
ORDER BY AUFTRNRKETT;
BEGIN
FOR rec_Pool IN curpoolfz LOOP
SELECT ANKM, ABKM
INTO my_AnKm, my_AbKm
FROM AUFTRAG
WHERE HDLNR=p_HDLNR
AND AUFTRNR=Rec_Pool.AUFTRNRKETT
AND KENNUNG='A';
IF NVL(my_AnKm,0)<NVL(my_AbKm,0)
THEN my_errortext:='* ' || Xtool.OutMeldung(p_HDLNR,'mietkurz',1,'');
my_KmsOk:=false;
END IF;
END LOOP;
END;
PROCEDURE DoCheckDatum IS
loc_MBeginn DATE;
loc_MBUhr DATE;
BEGIN
SELECT MBEGINN, MBUHR INTO loc_MBeginn, loc_MBUhr
FROM AUFTRAG
WHERE HDLNR=p_HDLNR
AND AUFTRNR=p_AUFTRNR;
IF TO_DATE(my_MENDE || my_MEUHR,loc_NLSDate || loc_NLSTime) <
TO_DATE(TO_CHAR(loc_MBEGINN,loc_NLSDate) || TO_CHAR(loc_MBUHR,loc_NLSTime),loc_NLSDate || loc_NLSTime)
THEN my_errortext:='* ' || Xtool.OutMeldung(p_HDLNR,'mietkurz',2,'') || ' ' || TO_CHAR(loc_MBEGINN,loc_NLSDate) || ' ' || TO_CHAR(loc_MBUHR,loc_NLSTime);
my_KmsOk:=false;
END IF;
IF TO_DATE(my_MENDE || my_MEUHR,loc_NLSDate || loc_NLSTime) > XTool.GetSysDate(p_HDLNR)
THEN my_errortext:='* ' || Xtool.OutMeldung(p_HDLNR,'mietkurz',3,'');
my_KmsOk:=false;
END IF;
END;
PROCEDURE DoCheckMieten IS
CURSOR curpoolfz IS
SELECT * FROM AUFTRFZ
WHERE HDLNR =p_HDLNR AND
AUFTRNR=my_KopfNr;
loc_errortext VARCHAR2(200);
loc_fahrgst VARCHAR2(17);
loc_mbeginn DATE;
loc_mbuhr DATE;
loc_mende DATE;
loc_meuhr DATE;
BEGIN
loc_mende:=TO_DATE(my_MENDE || my_MEUHR,loc_NLSDate || loc_NLSTime);
loc_meuhr:=TO_DATE(my_MENDE || my_MEUHR,loc_NLSDate || loc_NLSTime);
FOR rec_Pool IN curpoolfz LOOP
loc_errortext:='#';
BEGIN
SELECT MBEGINN, MBUHR, FAHRGESTELL
INTO loc_mbeginn, loc_mbuhr, loc_fahrgst
FROM AUFTRAG
WHERE HDLNR =p_HDLNR
AND AUFTRNR=Rec_Pool.AUFTRNRKETT;
EXCEPTION
WHEN OTHERS THEN loc_errortext:='* MV ' || Rec_Pool.AUFTRNRKETT;
END;
AUFTRTOOLS.ChkMiete(p_HDLNR,p_FILNR,p_USERNR,'A',Rec_Pool.AUFTRNRKETT,loc_fahrgst,'F',
loc_mbeginn, loc_mbuhr, loc_mende, loc_meuhr,
loc_ERRORTEXT);
IF loc_errortext<>'#'
THEN my_KmsOk:=false;
my_errortext:=loc_errortext;
END IF;
END LOOP;
END;
PROCEDURE DoSaveMvs IS
CURSOR curpoolfz IS
SELECT * FROM AUFTRFZ
WHERE HDLNR =p_HDLNR AND
AUFTRNR=my_KopfNr;
BEGIN
FOR rec_Pool IN curpoolfz LOOP
SELECT HDLNR, FILNR, ABKM, ANKM,
DEBITOR, BERECHGRP, TARIFTYP, ZAHLUNGSART, BBEGINN, BBUHR
INTO my_AHdlNr, my_AFilNr, my_AbKm, my_AnKm,
my_Debitor, my_BerechGrp, my_TarifTyp, my_Zahlungsart, my_BBeginn, my_BBUhr
FROM AUFTRAG
WHERE HDLNR=p_HDLNR
AND AUFTRNR=Rec_Pool.AUFTRNRKETT
AND KENNUNG='A';
KurzRueck (p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => my_AHdlNr,
p_AFILNR => my_AFilNr,
p_KENNUNG => 'A',
p_AUFTRNR => TO_CHAR(Rec_Pool.AUFTRNRKETT),
p_MENDE => my_MEnde,
p_MENDEUHR=> my_MEUhr,
p_ANKM => TO_CHAR(my_AnKm),
p_FUNC => '13');
ErfRechnung(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_FUNC => '0',
p_AHDLNR => my_AHdlNr,
p_AFILNR => my_AFilNr,
p_KENNUNG => 'B',
p_AUFTRNR => rec_Pool.AUFTRNRKETT,
p_DEBITOR => TO_CHAR(my_Debitor),
p_BBEGINN => TO_CHAR(my_BBeginn,Loc_NLSDate),
p_BBEGINNUHR => TO_CHAR(my_BBUhr,Loc_NLSTime),
p_BENDE => my_MEnde,
p_BENDEUHR => my_MEUhr,
p_ABKM => TO_CHAR(my_AbKm),
p_ANKM => TO_CHAR(my_AnKm),
p_TARIFFZART => SUBSTR(my_TarifTyp,1,1),
p_BERECHGRP => my_BerechGrp,
p_TARIFTYP => my_TarifTyp,
p_ZAHLUNGSART=> my_Zahlungsart,
p_MITZWI => 'W',
p_MITZUB => 'W',
p_MITLST => 'W',
p_MITANZ => 'W',
p_POOLFLAG => 'J');
-- htp.p(rec_Pool.AUFTRNRKETT);
END LOOP;
END;
BEGIN
BEGIN
SELECT AUFTRNR INTO my_KopfNr FROM AUFTRFZ
WHERE HDLNR=p_HDLNR
AND AUFTRNRKETT=p_AUFTRNR;
EXCEPTION
WHEN OTHERS THEN my_KopfNr:=0;
END;
DoCheckKms;
DoCheckDatum;
DoCheckMieten;
IF my_KmsOk
THEN DoSaveMvs;
AUFTRAEGE.FzAufliste(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AUFTRNR => p_AUFTRNR,
p_DATUM => p_DATUM,
p_ZEIT => p_ZEIT,
X => 1);
ELSE AUFTRAEGE.FzAufliste(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AUFTRNR => p_AUFTRNR,
p_DATUM => p_DATUM,
p_ZEIT => p_ZEIT,
p_ERRORTEXT=> my_errortext,
X => 1,
Y => 1); -- Editieren, km nicht ok
END IF;
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END;
/******************************************************************************
NAME: Rechnungen.ShowSammelRechnung
PURPOSE: Anzeige Sammelrechnung
Date: 06.02.2012/23.08.2017
*******************************************************************************/
PROCEDURE ShowSammelRechnung(p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_RECHNR INTEGER,
p_LOGO VARCHAR2 DEFAULT NULL,
p_DUPLIKAT VARCHAR2 DEFAULT NULL,
X INTEGER DEFAULT 0) IS
my_ProgName VARCHAR2(20) :='ShowSammelRechnung';
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
Loc_NLSTime VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,2);
Loc_NLSSort VARCHAR2(20):=Xtool.GetNLS(p_HDLNR,5);
Loc_NLSWert VARCHAR2(30):=Xtool.GetNLS(p_HDLNR,3);
Rec_Firma FIRMA%ROWTYPE;
Rec_FirmaP FIRMAPARAM%ROWTYPE;
Rec_Rechnung RECHNUNG%ROWTYPE;
m_FName1 VARCHAR2(40);
m_FName2 VARCHAR2(40);
m_FName3 VARCHAR2(40);
m_Kennz VARCHAR2(20);
m_Fahrgestell VARCHAR2(20);
m_LangZeit VARCHAR2(01);
m_Zulassung DATE;
m_MBeginn DATE;
m_MBUhr DATE;
m_MEnde DATE;
m_MEUhr DATE;
m_Privat VARCHAR2(01);
m_ReAnrede VARCHAR2(40);
m_ReName1 VARCHAR2(40);
m_ReName2 VARCHAR2(40);
m_ReStrasse VARCHAR2(40);
m_ReHausNr VARCHAR2(10);
m_RePLZ VARCHAR2(10);
m_ReOrt VARCHAR2(40);
m_ReLand VARCHAR2(40);
m_ReMwst VARCHAR2(01);
m_ZahlGrp INTEGER;
m_KdSEPADATUM DATE;
m_KdSepaMandat VARCHAR2(30);
m_KdBank VARCHAR2(60);
m_KdBlz VARCHAR2(20);
m_KdKonto VARCHAR2(20);
m_KdBIC VARCHAR2(11);
m_KdIBAN VARCHAR2(34);
m_Einzug VARCHAR2(1);
m_FussText VARCHAR2(1200):='';
m_FussTextM VARCHAR2(400):='';
m_FussTextR VARCHAR2(400):='';
m_FussTeil VARCHAR2(1200):='';
m_zubstr VARCHAR2(400) :='';
m_rezubstr VARCHAR2(400) :='';
m_zubstrP VARCHAR2(400) :='';
m_lststr VARCHAR2(400) :='';
m_relststr VARCHAR2(400) :='';
m_lststrP VARCHAR2(400) :='';
m_EchteTage INTEGER := 0;
m_AbrTyp VARCHAR2(2) := 'MF';
m_AnzStd INTEGER := 0;
m_Dauer INTEGER := 0;
m_Rest INTEGER := 0;
m_FreiKm VARCHAR2(10):='';
m_FreiKm1 VARCHAR2(10):='';
m_BerKm INTEGER := 0;
m_FzBez VARCHAR2(50);
m_AuftrNrExt VARCHAR2(40);
m_SammelKurz VARCHAR2(01);
m_SRKurz VARCHAR2(03):='';
m_Netto FLOAT:=0.0;
m_Nettoloc FLOAT:=0.0;
m_MwSt FLOAT:=0.0;
m_MwStSatz FLOAT:=0.0;
m_Summe FLOAT:=0.0;
m_Anzahlung FLOAT:=0.0;
m_SummeAnz FLOAT:=0.0;
m_SumAnz FLOAT:=0.0;
m_zubflag INTEGER:=0;
m_zubflagP INTEGER:=0;
my_RechNr INTEGER:=0;
my_PageNr INTEGER:=0;
my_BlockMax INTEGER:=18; -- maximale Zeilen in einem Rechnungsblock
my_BlockRes INTEGER:=8; -- werden immer gedruckt
my_BlockCnt INTEGER:=0; -- aktueller F�llgrad
my_BlockTmp INTEGER:=0;
my_BlockZwi INTEGER:=0;
i INTEGER:=0;
my_LfsSammel VARCHAR2(01);
my_Wechsel VARCHAR2(01);
PROCEDURE doAusgabe IS
CURSOR CurLfScheine IS
SELECT HDLNR,RECHNR,ZWIRECH,GUTLAST,RDATUM,AUFTRNR,BANFANG,BENDE,MANFANG,MENDE,ZWIRECHFIRST,RECHART,
SPLITREFRECHNR,TARIFTYP,TARIFBEZ,TRFMANUELL,MITZUB,
PREIS1,PREIS2,MEHRFACH,EINHEIT1,EINHEIT2,FAKTOR1,FAKTOR2,INCLKM1,VONKM,BISKM,BERKM,GEFKM,INCLANZKM1,INCLANZKM2,KULANZ,RABATT,
GRUNDBETRAG,DMKM,DMCDW,DMCDW2,DMPAI,
VERMUMSATZ,KMUMSATZ,ERLSCHMAL,VERSUMSATZPAI,VERSUMSATZCDW,VERSUMSATZTP,ERLSCHMAL1,KRAFTUMSATZ,BETANKUMSATZ,
SONSTUMSATZ,SONSTUMSATZFREI,DLUMSATZ,ZUBUMSATZ,DLUMSATZFREI,ZUBUMSATZFREI,ERLSCHMAL2,
VERMMWST,VERSMWSTCDW,VERSMWSTPAI,VERSMWSTTP,KRAFTMWST,SONSTMWST,LITER,SORTE,AUSLAGENTEXT,GEZAHLT,MITANZ,
(SELECT FILAUFTRAG FROM AUFTRAG WHERE HDLNR=R.HDLNR AND AUFTRNR=R.AUFTRNR) FILAUFTRAG
FROM RECHNUNG R
WHERE HDLNR = p_HDLNR
AND RECHART='L'
AND RLNUMMER=p_RECHNR
-- AND ROWNUM<=7
ORDER BY DECODE(NVL(Rec_FirmaP.HATSAMMELSORT,'F'),
'W',FILAUFTRAG||TO_CHAR(RECHNR),
'F',RECHNR);
my_GrpFiliale VARCHAR2(14):='-';
my_GrpSumme FLOAT:=0.0;
my_FilBez VARCHAR2(40);
PROCEDURE doZwischensumme IS
BEGIN
IF my_GrpFiliale IS NULL
THEN my_FilBez:=NULL;
ELSE SELECT NAME_1
INTO my_FilBez
FROM PARTNER
WHERE HDLNR=SUBSTR(my_GrpFiliale,1,3)||SUBSTR(my_GrpFiliale,5,5)
AND NR=my_GrpFiliale;
END IF;
my_BlockZwi:=1;
Xtool.XMLStart('Rechnung');
Xtool.htx('RECHNR','#G');
Xtool.htx('PAGENR',TO_CHAR(my_PageNr));
Xtool.htx('BEZEICHNUNG',my_FilBez);
Xtool.htx('BETRAG',TO_CHAR(my_GrpSumme,'999G990D00',Loc_NLSWert));
Xtool.XMLEnd('Rechnung');
my_GrpSumme:=0.0;
END;
BEGIN
FOR rec_LfSchein IN curlfscheine LOOP
IF rec_LfSchein.AUFTRNR IS NOT NULL
THEN SELECT MBEGINN, MBUHR, MENDE, MEUHR, KENNZ, FAHRGESTELL, ZULASSUNG, LANGZEIT, AUFTRNREXT, ANZAHLUNG
INTO m_MBeginn, m_MBUhr, m_MEnde, m_MEUhr, m_Kennz, m_Fahrgestell, m_Zulassung, m_LangZeit, m_AuftrNrExt, m_Anzahlung
FROM AUFTRAG
WHERE HDLNR =p_HDLNR
AND AUFTRNR=rec_LfSchein.AUFTRNR;
SELECT NAME1, NAME2, NAME3
INTO m_FName1, m_FName2, m_FName3
FROM FAHRER
WHERE HDLNR =p_HDLNR
AND AUFTRNR=rec_LfSchein.AUFTRNR
AND NR =1;
BEGIN
SELECT BEZEICHNUNG
INTO m_FzBez
FROM FAHRZEUG
WHERE FAHRGESTELL=m_Fahrgestell
AND ZULASSUNG =m_Zulassung;
EXCEPTION WHEN OTHERS THEN m_FzBez:='?';
END;
IF NVL(rec_LfSchein.MITANZ,'F')<>'W'
THEN m_Anzahlung:=0.0;
END IF;
ELSE m_FzBez:=NULL;
m_FName1:=NULL;
m_FName2:=NULL;
m_FName3:=NULL;
m_Kennz:=NULL;
m_LangZeit:='F';
m_Anzahlung:=0.0;
END IF;
AUFTRTOOLS.DoRechnen(p_BBEGINN => Rec_LfSchein.BANFANG,
p_BBUHR => TO_CHAR(rec_LfSchein.BANFANG,Loc_NLSTime),
p_BENDE => Rec_LfSchein.BENDE,
p_BEUHR => TO_CHAR(rec_LfSchein.BENDE,Loc_NLSTime),
p_MEHRFACH => Rec_LfSchein.MEHRFACH,
p_EINHEIT1 => Rec_LfSchein.EINHEIT1,
p_EINHEIT2 => Rec_LfSchein.EINHEIT2,
p_FAKTOR1 => Rec_LfSchein.FAKTOR1,
p_FAKTOR2 => Rec_LfSchein.FAKTOR2,
p_INCLKM1 => Rec_LfSchein.INCLKM1,
p_ANKM => Rec_LfSchein.BISKM,
p_ABKM => Rec_LfSchein.VONKM,
p_INCLANZKM1=> Rec_LfSchein.INCLANZKM1,
p_INCLANZKM2=> Rec_LfSchein.INCLANZKM2,
p_KULANZ => Rec_LfSchein.KULANZ,
p_LANGZEIT => m_LangZeit,
p_ZWIRECH => 'F',
p_ABRTYP => m_AbrTyp,
p_BERKM => m_BerKm,
p_ANZSTD => m_AnzStd,
p_ECHTETAGE => m_EchteTage,
p_DAUER => m_Dauer,
p_REST => m_Rest,
p_FREIKM => m_FreiKm,
p_FREIKM1 => m_FreiKm1);
IF Rec_LfSChein.EINHEIT1='3' AND -- Monatsrechnung
Rec_LfSchein.ZWIRECHFIRST='1' -- erste Rg, Anteilig auf Monat
THEN m_Dauer:=0;
m_Rest :=m_EchteTage;
END IF;
RECHNTOOLS.DoZubStr (p_HDLNR => Rec_LfSchein.HDLNR,
p_AUFTRNR => Rec_LfSchein.AUFTRNR,
p_PAUSCHAL => 'F',
p_MITMWST => 'F',
p_PRIVAT => m_PRIVAT,
p_MWST => Rec_LfSchein.SONSTMWST,
p_LST => 'F',
p_BBEGINN => Rec_LfSchein.BANFANG,
p_BENDE => Rec_LfSchein.BENDE,
p_ZUBLST => m_ZubFlag,
p_STRING => m_ZubStr);
RECHNTOOLS.DoZubStr (p_HDLNR => Rec_LfSchein.HDLNR,
p_AUFTRNR => Rec_LfSchein.AUFTRNR,
p_PAUSCHAL => 'F',
p_MITMWST => 'F',
p_PRIVAT => m_PRIVAT,
p_MWST => Rec_LfSchein.SONSTMWST,
p_LST => 'W',
p_BBEGINN => Rec_LfSchein.BANFANG,
p_BENDE => Rec_LfSchein.BENDE,
p_ZUBLST => m_ZubFlag,
p_STRING => m_LstStr);
IF (NVL(Rec_LfSchein.MITZUB,'W')='W')
THEN RECHNTOOLS.DoZubStr (p_HDLNR => Rec_LfSchein.HDLNR,
p_AUFTRNR => Rec_LfSchein.AUFTRNR,
p_PAUSCHAL => 'W',
p_ZWIRECHFIRST=> NVL(Rec_LfSchein.ZWIRECHFIRST,1),
p_MITMWST => 'F',
p_PRIVAT => m_PRIVAT,
p_MWST => Rec_LfSchein.SONSTMWST,
p_LST => 'F',
p_BBEGINN => Rec_LfSchein.BANFANG,
p_BENDE => Rec_LfSchein.BENDE,
p_ZUBLST => m_ZubFlag,
p_STRING => m_ZubStrP);
RECHNTOOLS.DoZubStr (p_HDLNR => Rec_LfSchein.HDLNR,
p_AUFTRNR => Rec_LfSchein.AUFTRNR,
p_PAUSCHAL => 'W',
p_ZWIRECHFIRST=> NVL(Rec_LfSchein.ZWIRECHFIRST,1),
p_MITMWST => 'F',
p_PRIVAT => m_PRIVAT,
p_MWST => Rec_LfSchein.SONSTMWST,
p_LST => 'W',
p_BBEGINN => Rec_LfSchein.BANFANG,
p_BENDE => Rec_LfSchein.BENDE,
p_ZUBLST => m_ZubFlag,
p_STRING => m_LstStrP);
IF m_ZubStr IS NOT NULL AND
m_ZubStrP IS NOT NULL
THEN m_ZubStr:=m_ZubStr || ', ';
END IF;
IF m_LstStr IS NOT NULL AND
m_LstStrP IS NOT NULL
THEN m_LstStr:=m_LstStr || ', ';
END IF;
m_ZubStr:=m_ZubStr || ' ' || m_ZubStrP;
m_LstStr:=m_LstStr || ' ' || m_LstStrP;
END IF;
IF m_zubflagP>m_zubflag
THEN m_zubflag:=m_zubflagP;
END IF;
RECHNTOOLS.DoReZubStr(p_HDLNR => Rec_LfSchein.HDLNR,
p_RECHNR => Rec_LfSchein.RECHNR,
p_RECHART => Rec_LfSchein.RECHART,
p_MITMWST => 'F',
p_PRIVAT => m_PRIVAT,
p_MWST => Rec_LfSchein.SONSTMWST,
p_LST => 'F',
p_BBEGINN => Rec_LfSchein.BANFANG,
p_BENDE => Rec_LfSchein.BENDE,
p_STRING => m_ReZubStr);
RECHNTOOLS.DoReZubStr(p_HDLNR => Rec_LfSchein.HDLNR,
p_RECHNR => Rec_LfSchein.RECHNR,
p_RECHART => Rec_LfSchein.RECHART,
p_MITMWST => 'F',
p_PRIVAT => m_PRIVAT,
p_MWST => Rec_LfSchein.SONSTMWST,
p_LST => 'W',
p_BBEGINN => Rec_LfSchein.BANFANG,
p_BENDE => Rec_LfSchein.BENDE,
p_STRING => m_ReLstStr);
IF m_ZubStr IS NOT NULL AND
m_ReZubStr IS NOT NULL
THEN m_ZubStr:=m_ZubStr || ', ';
END IF;
IF m_LstStr IS NOT NULL AND
m_ReLstStr IS NOT NULL
THEN m_LstStr:=m_LstStr || ', ';
END IF;
m_ZubStr:=m_ZubStr || ' ' || m_ReZubStr;
m_LstStr:=m_LstStr || ' ' || m_ReLstStr;
my_BlockCnt:=my_BlockCnt+my_BlockRes;
my_BlockTmp:=0;
my_BlockZwi:=0;
-- GGF Gruppenwechsel, Zwischensumme auf Filiale
IF Rec_FirmaP.HATSAMMELSORT='W' AND
my_GrpFiliale<>'-' AND
my_GrpFiliale<>NVL(Rec_LfSchein.FILAUFTRAG,'+')
THEN doZwischensumme;
END IF;
--
Xtool.XMLStart('Rechnung');
IF rec_LfSchein.GRUNDBETRAG>0.0
THEN my_BlockTmp:=my_BlockTmp+1;
Xtool.htx('PRNGRUND','W');
END IF;
IF m_Dauer>0 OR
rec_LfSchein.VERMUMSATZ<>0.0
THEN my_BlockTmp:=my_BlockTmp+1;
Xtool.htx('PRN1TAG','W');
ELSE Xtool.htx('PRN1TAG','F');
END IF;
IF m_Rest>0
THEN my_BlockTmp:=my_BlockTmp+1;
Xtool.htx('PRN2TAG','W');
ELSE Xtool.htx('PRN2TAG','F');
END IF;
IF rec_LfSchein.BERKM<>0 OR
rec_LfSchein.KMUMSATZ<>0
THEN my_BlockTmp:=my_BlockTmp+1;
Xtool.htx('PRNKM','W');
ELSE Xtool.htx('PRNKM','F');
END IF;
IF rec_LfSchein.RABATT <>0.0 OR
rec_LfSchein.ERLSCHMAL<>0.0
THEN my_BlockTmp:=my_BlockTmp+1;
Xtool.htx('PRNRABATT','W');
ELSE Xtool.htx('PRNRABATT','F');
END IF;
IF rec_LfSchein.VERSUMSATZCDW<>0.0
THEN my_BlockTmp:=my_BlockTmp+1;
Xtool.htx('PRNCDW','W');
IF m_Rest>0
THEN my_BlockTmp:=my_BlockTmp+1;
Xtool.htx('PRNCDW2','W');
ELSE Xtool.htx('PRNCDW2','F');
END IF;
ELSE Xtool.htx('PRNCDW2','F');
END IF;
IF rec_LfSchein.VERSUMSATZPAI<>0.0
THEN my_BlockTmp:=my_BlockTmp+1;
Xtool.htx('PRNPAI','W');
IF m_Rest>0
THEN my_BlockTmp:=my_BlockTmp+1;
Xtool.htx('PRNPAI2','W');
ELSE Xtool.htx('PRNPAI2','F');
END IF;
ELSE Xtool.htx('PRNPAI2','F');
END IF;
IF rec_LfSchein.VERSUMSATZTP<>0.0
THEN my_BlockTmp:=my_BlockTmp+1;
Xtool.htx('PRNTRP','W');
END IF;
IF rec_LfSchein.KRAFTUMSATZ<>0.0
OR rec_LfSchein.BETANKUMSATZ<>0.0
THEN my_BlockTmp:=my_BlockTmp+1;
Xtool.htx('PRNKRAFT','W');
END IF;
IF rec_LfSchein.SONSTUMSATZ<>0.0
OR rec_LfSchein.SONSTUMSATZFREI<>0.0
THEN my_BlockTmp:=my_BlockTmp+1;
Xtool.htx('PRNSONST','W');
END IF;
IF rec_LfSchein.ZUBUMSATZ<>0.0
OR rec_LfSchein.DLUMSATZ<>0.0
THEN my_BlockTmp:=my_BlockTmp+1;
Xtool.htx('PRNZUB','W');
ELSE Xtool.htx('PRNZUB','F');
END IF;
IF rec_LfSchein.ZUBUMSATZFREI<>0.0
OR rec_LfSchein.DLUMSATZFREI<>0.0
THEN my_BlockTmp:=my_BlockTmp+1;
Xtool.htx('PRNZUBFREI','W');
END IF;
Xtool.htx('PRNDEBUG','F');
IF Rec_FIRMA.FORMTYP IS NULL
THEN my_BlockTmp:=0; -- immer nur eine Zeile
END IF;
-- Restplatz pr�fen, wenn Lf nicht passt, dann Seitenwechsel
my_Wechsel:='F';
IF (my_BlockRes+my_BlockCnt+my_BlockTmp+my_BlockZwi>my_BlockMax) OR -- Bereits belegt+gerade gez�t>Max
(my_PageNr=0)
THEN my_Wechsel:='W';
my_PageNr :=my_PageNr+1;
my_BlockCnt:=my_BlockRes+my_BlockTmp+my_BlockZwi;
IF Rec_Firma.FORMTYP IN (1,7) AND
my_PageNr>1
THEN my_BlockMax:=44;
END IF;
END IF;
--
Xtool.htx('DOKOPF' ,my_Wechsel);
Xtool.htx('BLOCKCNT' ,TO_CHAR(my_BlockCnt));
Xtool.htx('BLOCKMAX' ,TO_CHAR(my_BlockMax));
Xtool.htx('BLOCKRES' ,TO_CHAR(my_BlockRes));
Xtool.htx('BLOCKTMP' ,TO_CHAR(my_BlockTmp));
Xtool.htx('PAGENR' ,TO_CHAR(my_PageNr));
Xtool.htx('RECHNR' ,rec_LfSchein.RECHNR);
Xtool.htx('ZWIRECH' ,rec_LfSchein.ZWIRECH);
Xtool.htx('SPLITNR' ,rec_LfSchein.SPLITREFRECHNR);
Xtool.htx('RDATUM' ,TO_CHAR(rec_LfSchein.RDATUM,Loc_NLSDate));
Xtool.htx('AUFTRNR' ,rec_LfSchein.AUFTRNR);
Xtool.htx('FAHRERNAME1',m_FName1);
Xtool.htx('FAHRERNAME2',m_FName2);
Xtool.htx('FAHRERNAME3',m_FName3);
Xtool.htx('KENNZ' ,m_Kennz);
Xtool.htx('BEZEICHNUNG',m_FzBez);
Xtool.htx('AUFTRNREXT' ,m_AuftrNrExt);
Xtool.htx('FAHRZKL' ,SUBSTR(rec_LfSchein.TARIFTYP,1,1)||SUBSTR(rec_LfSchein.TARIFTYP,7,1)||SUBSTR(rec_LfSchein.TARIFTYP,9,4));
Xtool.htx('MBEGINN' ,TO_CHAR(rec_LfSchein.MANFANG,Loc_NLSDate)||' '||TO_CHAR(rec_LfSchein.MANFANG,Loc_NLSTime));
Xtool.htx('MBEGINND' ,TO_CHAR(rec_LfSchein.MANFANG,Loc_NLSDate));
Xtool.htx('MENDE' ,TO_CHAR(rec_LfSchein.MENDE,Loc_NLSDate)||' '||TO_CHAR(rec_LfSchein.MENDE,Loc_NLSTime));
Xtool.htx('MENDED' ,TO_CHAR(rec_LfSchein.MENDE,Loc_NLSDate));
Xtool.htx('BBEGINN' ,TO_CHAR(rec_LfSchein.BANFANG,Loc_NLSDate)||' '||TO_CHAR(rec_LfSchein.BANFANG,Loc_NLSTime));
Xtool.htx('BENDE' ,TO_CHAR(rec_LfSchein.BENDE,Loc_NLSDate)||' '||TO_CHAR(rec_LfSchein.BENDE,Loc_NLSTime));
Xtool.htx('VONKM' ,TRIM(TO_CHAR(rec_LfSchein.VONKM,'999G999')));
Xtool.htx('BISKM' ,TRIM(TO_CHAR(rec_LfSchein.BISKM,'999G999')));
Xtool.htx('BERKM' ,TRIM(TO_CHAR(rec_LfSchein.BERKM,'999G999')));
Xtool.htx('GEFKM' ,TRIM(TO_CHAR(rec_LfSchein.GEFKM,'999G999')));
Xtool.htx('TARIFTYP' ,rec_LfSchein.TARIFTYP);
Xtool.htx('TARIFBEZ' ,rec_LfSchein.TARIFBEZ);
Xtool.htx('TRFMANU' ,rec_LfSchein.TRFMANUELL);
Xtool.htx('GRUNDPR' ,TO_CHAR(rec_LfSchein.GRUNDBETRAG,'999G990D99',Loc_NLSWert));
Xtool.htx('RABATT' ,TO_CHAR(rec_LfSchein.RABATT,'90D99',Loc_NLSWert));
Xtool.htx('ERLSCHMAL' ,TO_CHAR(rec_LfSchein.ERLSCHMAL,'999G990D99',Loc_NLSWert));
Xtool.htx('PREIS1' ,TO_CHAR(rec_LfSchein.PREIS1,'999G990D99',Loc_NLSWert));
Xtool.htx('PREIS2' ,TO_CHAR(rec_LfSchein.PREIS2,'999G990D99',Loc_NLSWert));
Xtool.htx('DMKM' ,TO_CHAR(rec_LfSchein.DMKM,'999G990D99',Loc_NLSWert));
Xtool.htx('VERMMWST' ,TO_CHAR(rec_LfSchein.VERMMWST,'90D99',Loc_NLSWert));
Xtool.htx('ANZ1' ,TRIM(TO_CHAR(m_Dauer,'99999')));
Xtool.htx('ANZ2' ,TRIM(TO_CHAR(m_Rest,'99999')));
Xtool.htx('ANZTAGE' ,TRIM(TO_CHAR(m_EchteTage,'99999')));
Xtool.htx('VERSMWSTCDW',TO_CHAR(rec_LfSchein.VERSMWSTCDW,'90D99',Loc_NLSWert));
Xtool.htx('VERSMWSTPAI',TO_CHAR(rec_LfSchein.VERSMWSTPAI,'90D99',Loc_NLSWert));
Xtool.htx('VERSMWSTTP' ,TO_CHAR(rec_LfSchein.VERSMWSTTP,'90D99',Loc_NLSWert));
Xtool.htx('DMCDW' ,TO_CHAR(rec_LfSchein.DMCDW,'999G990D99',Loc_NLSWert));
Xtool.htx('DMCDW2' ,TO_CHAR(rec_LfSchein.DMCDW2,'999G990D99',Loc_NLSWert));
Xtool.htx('DMPAI' ,TO_CHAR(rec_LfSchein.DMPAI,'999G990D99',Loc_NLSWert));
Xtool.htx('DMPAI2' ,TO_CHAR(rec_LfSchein.DMPAI,'999G990D99',Loc_NLSWert));
Xtool.htx('DMTRP' ,TO_CHAR(rec_LfSchein.VERSUMSATZTP,'999G990D99',Loc_NLSWert));
Xtool.htx('ERLSCHMAL1' ,TO_CHAR(rec_LfSchein.ERLSCHMAL1,'999G990D99',Loc_NLSWert));
Xtool.htx('ZUBSTR' ,TRIM(m_ZubStr||' '||m_LstStr));
Xtool.htx('SONSTMWST' ,TO_CHAR(rec_LfSchein.SONSTMWST,'90D99',Loc_NLSWert));
Xtool.htx('LITER' ,TO_CHAR(NVL(rec_LfSchein.LITER,0),'90D9',Loc_NLSWert));
RECHNTOOLS.ShowTreibstoff(p_HDLNR => p_HDLNR,
p_DEFAULT => rec_LfSchein.SORTE);
Xtool.htx('KRAFTMWST',TO_CHAR(rec_LfSchein.KRAFTMWST,'90D99',Loc_NLSWert));
Xtool.htx('SMKRAFTGES',TO_CHAR(rec_LfSchein.KRAFTUMSATZ+rec_LfSchein.BETANKUMSATZ,'999G990D99',Loc_NLSWert));
Xtool.htx('SONSTBEZ' ,rec_LfSchein.AUSLAGENTEXT);
IF rec_LfSchein.SONSTUMSATZ<>0.0
THEN Xtool.htx('MWSTSONSTMAN',TO_CHAR(rec_LfSchein.SONSTMWST,'90D99',Loc_NLSWert));
ELSE Xtool.htx('MWSTSONSTMAN',TO_CHAR(0.0,'90D99',Loc_NLSWert));
END IF;
Xtool.htx('ERLSCHMAL2' ,TO_CHAR(rec_LfSchein.ERLSCHMAL2,'999G990D99',Loc_NLSWert));
Xtool.htx('SBMIETE' ,TO_CHAR(rec_LfSchein.VERMUMSATZ+(rec_LfSchein.VERMUMSATZ / 100 * rec_LfSchein.VERMMWST),'999G990D99',Loc_NLSWert));
Xtool.htx('SBKM' ,TO_CHAR(rec_LfSchein.KMUMSATZ+(rec_LfSchein.KMUMSATZ / 100 * rec_LfSchein.VERMMWST),'999G990D99',Loc_NLSWert));
Xtool.htx('SBCDW' ,TO_CHAR(rec_LfSchein.VERSUMSATZCDW+(rec_LfSchein.VERSUMSATZCDW / 100 * rec_LfSchein.VERSMWSTCDW),'999G990D99',Loc_NLSWert));
Xtool.htx('SBPAI' ,TO_CHAR(rec_LfSchein.VERSUMSATZPAI+(rec_LfSchein.VERSUMSATZPAI / 100 * rec_LfSchein.VERSMWSTPAI),'999G990D99',Loc_NLSWert));
Xtool.htx('SBTRP' ,TO_CHAR(rec_LfSchein.VERSUMSATZTP+(rec_LfSchein.VERSUMSATZTP / 100 * rec_LfSchein.VERSMWSTTP),'999G990D99',Loc_NLSWert));
Xtool.htx('SBKRAFTGES',TO_CHAR(rec_LfSchein.KRAFTUMSATZ+rec_LfSchein.BETANKUMSATZ+((rec_LfSchein.KRAFTUMSATZ+rec_LfSchein.BETANKUMSATZ) / 100 * rec_LfSchein.KRAFTMWST),'999G990D99',Loc_NLSWert));
IF rec_LfSchein.SONSTUMSATZ<>0.0
THEN Xtool.htx('SBSONST' ,TO_CHAR(rec_LfSchein.SONSTUMSATZ+(rec_LfSchein.SONSTUMSATZ / 100 * rec_LfSchein.SONSTMWST),'999G990D99',Loc_NLSWert));
ELSE Xtool.htx('SBSONST' ,TO_CHAR(rec_LfSchein.SONSTUMSATZFREI,'999G990D99',Loc_NLSWert));
END IF;
Xtool.htx('SBZUBM' ,TO_CHAR(rec_LfSchein.ZUBUMSATZ+rec_LfSchein.DLUMSATZ+((rec_LfSchein.ZUBUMSATZ+rec_LfSchein.DLUMSATZ) / 100 * rec_LfSchein.SONSTMWST),'999G990D99',Loc_NLSWert));
Xtool.htx('SMMIETE' ,TO_CHAR(rec_LfSchein.VERMUMSATZ,'999G990D99',Loc_NLSWert));
Xtool.htx('SMKM' ,TO_CHAR(rec_LfSchein.KMUMSATZ,'999G990D99',Loc_NLSWert));
Xtool.htx('SMERLSCHMAL',TO_CHAR(rec_LfSchein.ERLSCHMAL+rec_LfSchein.ERLSCHMAL1+rec_LfSchein.ERLSCHMAL2,'999G990D99',Loc_NLSWert));
Xtool.htx('SMCDW' ,TO_CHAR(rec_LfSchein.VERSUMSATZCDW,'999G990D99',Loc_NLSWert));
Xtool.htx('SMPAI' ,TO_CHAR(rec_LfSchein.VERSUMSATZPAI,'999G990D99',Loc_NLSWert));
Xtool.htx('SMTRP' ,TO_CHAR(rec_LfSchein.VERSUMSATZTP,'999G990D99',Loc_NLSWert));
Xtool.htx('SMVERS' ,TO_CHAR(rec_LfSchein.VERSUMSATZCDW+rec_LfSchein.VERSUMSATZPAI+rec_LfSchein.VERSUMSATZTP,'999G990D99',Loc_NLSWert));
Xtool.htx('SMKRAFT' ,TO_CHAR(rec_LfSchein.KRAFTUMSATZ,'999G990D99',Loc_NLSWert));
Xtool.htx('SMSONST' ,TO_CHAR(rec_LfSchein.SONSTUMSATZ+rec_LfSchein.SONSTUMSATZFREI,'999G990D99',Loc_NLSWert));
Xtool.htx('SMBETANK' ,TO_CHAR(rec_LfSchein.BETANKUMSATZ,'999G990D99',Loc_NLSWert));
Xtool.htx('SMZUB' ,TO_CHAR(rec_LfSchein.ZUBUMSATZ+rec_LfSchein.ZUBUMSATZFREI,'999G990D99',Loc_NLSWert));
Xtool.htx('SMDL' ,TO_CHAR(rec_LfSchein.DLUMSATZ+rec_LfSchein.DLUMSATZFREI,'999G990D99',Loc_NLSWert));
Xtool.htx('SMZUBDL' ,TO_CHAR(rec_LfSchein.DLUMSATZ+rec_LfSchein.ZUBUMSATZ+rec_LfSchein.DLUMSATZFREI+rec_LfSchein.ZUBUMSATZFREI,'999G990D99',Loc_NLSWert));
Xtool.htx('SMZUBMW' ,TO_CHAR(rec_LfSchein.ZUBUMSATZ+rec_LfSchein.DLUMSATZ,'999G990D99',Loc_NLSWert));
Xtool.htx('SMZUBFR' ,TO_CHAR(rec_LfSchein.ZUBUMSATZFREI+rec_LfSchein.DLUMSATZFREI,'999G990D99',Loc_NLSWert));
Xtool.htx('BETRAG' ,TO_CHAR(rec_LfSchein.VERMUMSATZ +
rec_LfSchein.KMUMSATZ -
rec_LfSchein.ERLSCHMAL +
rec_LfSchein.VERSUMSATZPAI +
rec_LfSchein.VERSUMSATZCDW +
rec_LfSchein.VERSUMSATZTP -
rec_LfSchein.ERLSCHMAL1 +
rec_LfSchein.KRAFTUMSATZ +
rec_LfSchein.BETANKUMSATZ +
rec_LfSchein.SONSTUMSATZ +
rec_LfSchein.SONSTUMSATZFREI +
rec_LfSchein.DLUMSATZ +
rec_LfSchein.ZUBUMSATZ +
rec_LfSchein.DLUMSATZFREI +
rec_LfSchein.ZUBUMSATZFREI -
rec_LfSchein.ERLSCHMAL2,'999G999D99',Loc_NLSWert));
Xtool.htx('ANZAHLUNG' ,TO_CHAR(m_Anzahlung,'999G990D99',Loc_NLSWert));
Xtool.XMLEnd('Rechnung');
m_Nettoloc:=rec_LfSchein.VERMUMSATZ+
rec_LfSchein.KMUMSATZ-
rec_LfSchein.ERLSCHMAL+
rec_LfSchein.VERSUMSATZPAI+
rec_LfSchein.VERSUMSATZCDW+
rec_LfSchein.VERSUMSATZTP-
rec_LfSchein.ERLSCHMAL1+
rec_LfSchein.KRAFTUMSATZ+
rec_LfSchein.BETANKUMSATZ+
rec_LfSchein.SONSTUMSATZ+
rec_LfSchein.ZUBUMSATZ+
rec_LfSchein.DLUMSATZ+
rec_LfSchein.ZUBUMSATZFREI+
rec_LfSchein.DLUMSATZFREI+
rec_LfSchein.SONSTUMSATZFREI-
rec_LfSchein.ERLSCHMAL2;
m_Netto :=m_Netto+m_NettoLoc;
IF m_ReMwst IN ('0','2')
THEN m_Netto:=m_Netto+rec_LfSchein.GEZAHLT - m_NettoLoc;
ELSE m_MwSt :=m_MwSt +rec_LfSchein.GEZAHLT + m_Anzahlung - m_NettoLoc;
END IF;
m_Summe :=m_Summe+rec_LfSchein.GEZAHLT;
m_SummeAnz :=m_SummeAnz+m_Anzahlung;
m_MwstSatz :=rec_LfSchein.VERMMWST;
my_GrpFiliale :=rec_LfSchein.FILAUFTRAG;
my_GrpSumme :=my_GrpSumme+m_NettoLoc;
END LOOP;
-- GGF Gruppenwechsel, Zwischensumme auf Filiale
IF Rec_FirmaP.HATSAMMELSORT='W' AND
my_GrpSumme<>0.0
THEN doZwischensumme;
END IF;
--
END;
BEGIN
SELECT *
INTO Rec_Firma
FROM FIRMA
WHERE HDLNR=p_HDLNR;
SELECT *
INTO Rec_FirmaP
FROM FIRMAPARAM
WHERE HDLNR=p_HDLNR;
m_FussText :=Rec_Firma.FUSSTEXT;
m_FussTextM:=Rec_Firma.FUSSTEXTM;
m_FussTextR:=Rec_Firma.FUSSTEXTR;
SELECT *
INTO Rec_Rechnung
FROM RECHNUNG
WHERE HDLNR =p_HDLNR
AND RECHNR =p_RECHNR
AND RECHART='R';
SELECT TYP, ANREDE, NAME1, NAME2, STRASSE, HAUSNR, PLZ, ORT, LAND, ZAHLGRP, MWST,
EINZUG, BANK, KONTO, BLZ, IBAN, BIC, SEPADATUM, SEPAMANDATSID--, SAMMELKURZ
INTO m_Privat, m_ReAnrede, m_ReName1, m_ReName2, m_ReStrasse, m_ReHausNr, m_RePLZ, m_ReOrt, m_ReLand, m_ZahlGrp, m_ReMwst,
m_Einzug, m_KdBank, m_KdKonto, m_KdBlz, m_KdIBAN, m_KdBIC, m_KdSepaDatum, m_KdSepaMandat--, m_SammelKurz
FROM ADRESSEN
WHERE HDLNR =p_HDLNR
AND ART = 'K'
AND NUMMER =Rec_Rechnung.DEBITOR;
CASE Rec_Firma.FORMTYP
WHEN 1 THEN my_BlockMax :=36;
my_BlockRes :=7;
WHEN 7 THEN my_BlockMax :=36;
my_BlockRes :=7;
WHEN 15 THEN my_BlockMax :=14;
my_BlockRes :=8;
ELSE my_BlockRes :=1; -- zeilenweise
my_BlockMax :=36;
END CASE;
IF NVL(m_SammelKurz,'F')='W'
THEN my_BlockRes :=1; -- zeilenweise
my_BlockMax :=36;
m_SRKurz :='krz';
END IF;
my_BlockCnt:=0;
Xtool.XMLHeader('Rechnungen','drcsammelre'||m_SRKurz||TRIM(Rec_Firma.FORMTYP),p_HDLNR,p_USERNR,my_ProgName);
Xtool.OutFeldBez(p_HDLNR,'drcsammelre');
doAusgabe;
/* IF NVL(Rec_Firma.FORMTYP,0) NOT IN (1,7)
THEN
Xtool.XMLStart('Rechnung');
Xtool.htx('RECHNR','#1');
Xtool.htx('BETRAG',TO_CHAR(m_Netto,'999G990D00',Loc_NLSWert));
Xtool.XMLEnd('Rechnung');
Xtool.XMLStart('Rechnung');
Xtool.htx('RECHNR','#2');
Xtool.htx('MWSTSATZ',TO_CHAR(m_MwstSatz));
Xtool.htx('BETRAG',TO_CHAR(m_MwSt,'999G990D00',Loc_NLSWert));
Xtool.XMLEnd('Rechnung');
Xtool.XMLStart('Rechnung');
Xtool.htx('RECHNR','#3');
Xtool.htx('BETRAG',TO_CHAR(m_Summe,'999G990D00',Loc_NLSWert));
Xtool.XMLEnd('Rechnung');
Xtool.XMLStart('Rechnung');
Xtool.htx('DOFUSS','W');
Xtool.htx('NETTO',TO_CHAR(m_Netto,'999G990D00',Loc_NLSWert));
Xtool.htx('MWSTSATZ',TO_CHAR(m_MwstSatz));
Xtool.htx('MWST',TO_CHAR(m_MwSt,'999G990D00',Loc_NLSWert));
Xtool.htx('BRUTTO',TO_CHAR(m_Summe,'999G990D00',Loc_NLSWert));
Xtool.XMLEnd('Rechnung');
END IF;
--
*/
FOR I IN 1..my_PageNr LOOP
Xtool.XMLStart('Seiten');
Xtool.htx('SEITENNR' ,TO_CHAR(I));
Xtool.XMLEnd('Seiten');
END LOOP;
Xtool.XMLStart('Navigator');
Xtool.htx('TOTPAGES' ,TO_CHAR(my_PageNr));
Xtool.htx('NETTO' ,TO_CHAR(m_Netto,'999G990D00',Loc_NLSWert));
Xtool.htx('MWSTSATZ' ,TO_CHAR(m_MwstSatz));
Xtool.htx('MWST' ,TO_CHAR(m_MwSt,'999G990D00',Loc_NLSWert));
Xtool.htx('BRUTTO' ,TO_CHAR(m_Summe+m_SummeAnz,'999G990D00',Loc_NLSWert));
IF m_Anzahlung=0.0
THEN Xtool.htx('ANZAHLUNG' ,'');
Xtool.htx('RESTBETRAG' ,'');
ELSE Xtool.htx('ANZAHLUNG' ,TO_CHAR(m_SummeAnz,'999G990D00',Loc_NLSWert));
Xtool.htx('RESTBETRAG' ,TO_CHAR(m_Summe,'999G990D00',Loc_NLSWert));
END IF;
IF (SUBSTR(Rec_Rechnung.ZAHLWEG,1,1)='0') OR
(SUBSTR(Rec_Rechnung.ZAHLWEG,1,1)='1') OR
(SUBSTR(Rec_Rechnung.ZAHLWEG,1,1)='2')
THEN Xtool.htx('ZAHLZIEL' ,Rec_Firma.STDBARTEXT);
ELSE IF (SUBSTR(Rec_Rechnung.ZAHLWEG,1,1)='4')
THEN Xtool.htx('ZAHLZIEL' ,'');
ELSE IF NVL(Rec_Rechnung.ZAHLTAG,0)>0
THEN Xtool.htx('ZAHLZIEL' ,TO_CHAR(Rec_Rechnung.RDATUM + NVL(Rec_Rechnung.ZAHLTAG,0),Loc_NLSDate));
ELSE Xtool.htx('ZAHLZIEL' ,Rec_Firma.SOFORTTEXT);
END IF;
END IF;
END IF;
AUFTRTOOLS.ShowZahlArten(Rec_Rechnung.HDLNR,Rec_Rechnung.ZAHLWEG,TRUE,FALSE,TRUE,m_ZahlGrp);
IF Rec_Rechnung.ZAHLWEG<>'3'
THEN m_Einzug:='F';
END IF;
Xtool.htx('PHDLNR' ,p_HDLNR);
Xtool.htx('PFILNR' ,p_FILNR);
Xtool.htx('PUSERNR' ,p_USERNR);
Xtool.htx('ABSENDER' ,Rec_Firma.ABSENDER);
Xtool.htx('ABSHDLNR' ,TO_CHAR(Rec_Firma.VZ,'000',Loc_NLSWert)||TO_CHAR(Rec_Firma.HAENDLER,'900000',Loc_NLSWert));
Xtool.htx('FINAME1' ,Rec_Firma.NAME_1);
Xtool.htx('FINAME2' ,Rec_Firma.NAME_2);
Xtool.htx('FINAME3' ,Rec_Firma.NAME_3);
Xtool.htx('FISTRASSE' ,Rec_Firma.STRASSE || ' ' || Rec_Firma.HAUSNR);
Xtool.htx('FISTRASSE2' ,Rec_Firma.STRASSE2);
Xtool.htx('FILKZ' ,Rec_Firma.LKZ);
Xtool.htx('FIPLZ' ,Rec_Firma.PLZ);
Xtool.htx('FIORT' ,Rec_Firma.ORT);
Xtool.htx('FITELEFON' ,Rec_Firma.TELEFON);
Xtool.htx('FIFAX' ,Rec_Firma.FAX);
Xtool.htx('FIEMAIL' ,Rec_Firma.EMAIL);
Xtool.htx('FIWEBADR' ,Rec_Firma.WEBADRESSE);
Xtool.htx('FBANK1' ,Rec_Firma.BANK);
Xtool.htx('FBLZ1' ,Rec_Firma.BLZ);
Xtool.htx('FKONTO1' ,Rec_Firma.KONTO);
Xtool.htx('FBIC1' ,Rec_Firma.BIC);
Xtool.htx('FIBAN1' ,Rec_Firma.IBAN);
Xtool.htx('FBANK2' ,Rec_Firma.BANK2);
Xtool.htx('FBLZ2' ,Rec_Firma.BLZ2);
Xtool.htx('FKONTO2' ,Rec_Firma.KONTO2);
Xtool.htx('FBIC2' ,Rec_Firma.BIC2);
Xtool.htx('FIBAN2' ,Rec_Firma.IBAN2);
Xtool.htx('FEGSTEUER' ,Rec_Firma.EGSTEUER);
Xtool.htx('FSTEUERNR' ,Rec_Firma.STEUERNR);
Xtool.htx('FSEPAGLID' ,Rec_Firma.SEPAGLID);
Xtool.htx('REDATUM' ,TO_CHAR(Rec_Rechnung.RDATUM,Loc_NLSDate));
Xtool.htx('RECHNR' ,TO_CHAR(p_RECHNR));
-- Rechnungsadresse Kunde
Xtool.htx('DEBITOR' ,TO_CHAR(Rec_Rechnung.DEBITOR));
Xtool.htx('REANREDE' ,m_ReAnrede);
Xtool.htx('RENAME1' ,m_ReName1);
Xtool.htx('RENAME2' ,m_ReName2);
Xtool.htx('RESTRASSE' ,m_ReStrasse||' '||m_ReHausNr);
Xtool.htx('REPLZ' ,m_RePLZ);
Xtool.htx('REORT' ,m_ReOrt);
Xtool.htx('RELAND' ,m_ReLand);
Xtool.htx('EINZUG' ,NVL(m_Einzug,'F'));
Xtool.htx('KDBANK' ,m_KdBank);
Xtool.htx('KDKONTO' ,m_KdKonto);
Xtool.htx('KDBLZ' ,m_KdBlz);
Xtool.htx('KDIBAN' ,m_KdIBAN);
Xtool.htx('KDBIC' ,m_KdBIC);
IF (m_Einzug='W') AND
(m_KdSEPADatum<=rec_rechnung.RDATUM) AND
(m_KdSEPADatum>TO_DATE('20000101','yyyymmdd'))
THEN Xtool.htx('KDSEPADATUM',TO_CHAR(m_KdSEPADatum,Loc_NLSDate));
Xtool.htx('KDSEPAMANDAT',m_KdSEPAMandat);
ELSE Xtool.htx('KDSEPADATUM','');
Xtool.htx('KDSEPAMANDAT','');
END IF;
WHILE LENGTH(m_FussText)>0 LOOP
Xtool.ExtractLine(m_FussText,m_FussTeil,m_FussText);
IF LENGTH(m_FussTeil)>0
THEN Xtool.XMLStart('FussText');
Xtool.htx('FUSSZEILE',m_FussTeil,false);
Xtool.XMLEnd('FussText');
END IF;
END LOOP;
WHILE LENGTH(m_FussTextM)>0 LOOP
Xtool.ExtractLine(m_FussTextM,m_FussTeil,m_FussTextM);
IF LENGTH(m_FussTeil)>0
THEN Xtool.XMLStart('FussTextM');
Xtool.htx('FUSSZEILE',m_FussTeil,false);
Xtool.XMLEnd('FussTextM');
END IF;
END LOOP;
WHILE LENGTH(m_FussTextR)>0 LOOP
Xtool.ExtractLine(m_FussTextR,m_FussTeil,m_FussTextR);
IF LENGTH(m_FussTeil)>0
THEN Xtool.XMLStart('FussTextR');
Xtool.htx('FUSSZEILE',m_FussTeil,false);
Xtool.XMLEnd('FussTextR');
END IF;
END LOOP;
Xtool.htx('LOGODRUCK' ,Rec_Firma.LOGODRUCK);
Xtool.htx('LOGOFUSSDRUCK' ,Rec_Firma.LOGOFUSSDRUCK);
Xtool.htx('HATLOGODRUCK' ,Rec_FirmaP.HATLOGODRUCK);
Xtool.htx('HATFUSSEINSPL' ,Rec_FirmaP.HATFUSSEINSPL);
Xtool.htx('HATLOGOSCALE' ,Rec_FirmaP.HATLOGOSCALE);
Xtool.htx('DRCLOGOHOEHE' ,Rec_FirmaP.DRCLOGOHOEHE);
Xtool.htx('HATFUSSZUSTEXT',Rec_FirmaP.HATLOGOFUSS);
Xtool.htx('HATSTR2' ,Rec_FirmaP.HATSTRASSE2);
Xtool.htx('X',TO_CHAR(NVL(X,0))); -- Erkennung ob Duplikat, kommt aus Menue, -2 = kommt aus VAA
-- Xtool.htx('X','-2');
-- IF NVL(X,0)=0-- OR NVL(Y,0)=-2
-- THEN Xtool.htx('DUPL','F'); -- Kein Eindruck Duplikat
-- ELSE
-- IF NVL(X,0)>0
-- THEN Xtool.htx('DUPL','W'); -- Eindruck Duplikat
-- ELSE Xtool.htx('DUPL',rec_Firma.DUPLDRUCK); -- Kein Eindruck Duplikat, je nach FiStamm
-- END IF;
-- END IF;
IF p_DUPLIKAT IS NULL -- p_LOGO muss dann auch gesetzt sein
THEN Xtool.htx('X',TO_CHAR(NVL(X,0))); -- Erkennung ob Duplikat, kommt aus Menue, -2 = kommt aus VAA
--Xtool.htx('Y',TO_CHAR(NVL(Y,0))); -- Erkennung ob Duplikat, kommt aus Menue, -2 = kommt aus VAA
IF NVL(X,0)=0-- OR NVL(Y,0)=-2
THEN Xtool.htx('DUPL','F'); -- Kein Eindruck Duplikat
ELSE IF NVL(X,0)>0
THEN Xtool.htx('DUPL','W'); -- Eindruck Duplikat
ELSE Xtool.htx('DUPL',rec_Firma.DUPLDRUCK); -- Kein Eindruck Duplikat, je nach FiStamm
END IF;
END IF;
ELSE Xtool.htx('DUPL',p_DUPLIKAT);
CASE p_LOGO
WHEN 'W' THEN Xtool.htx('X','-2');
WHEN 'F' THEN Xtool.htx('X','-1');
ELSE Xtool.htx('X',TO_CHAR(NVL(X,0)));
END CASE;
END IF;
Xtool.XMLEnd('Navigator');
Xtool.XMLEnd('Rechnungen');
-- R�cksprung organisieren
IF X=0 -- aus DruckVorstufe
THEN DELETE FROM GOBACKTBL WHERE HDLNR=p_HDLNR AND USERNR=p_USERNR AND LISTE=0;
INSERT INTO GOBACKTBL
(HDLNR,USERNR,FILNR,DATUMSTAMP,FUNKTION,LISTE,XSL,AUFTRNR,KENNUNG)
VALUES
(p_HDLNR,p_USERNR,p_FILNR,SYSDATE,0002,0,'rechprint',p_RECHNR,'R');
END IF;
COMMIT;
-- Ende
END;
/******************************************************************************
NAME: Rechnungen.SammelKdn
PURPOSE: Sammelabrechnung, Liste aller Kunden mit SammelFlag und LfScheinen
Date: 27.01.2012/07.04.2017
*******************************************************************************/
PROCEDURE SammelKdn(p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_ART VARCHAR2 DEFAULT 'K',
p_FUNC VARCHAR2 DEFAULT '13',
p_SUCHFELD VARCHAR2 DEFAULT '0',
p_SUCHINHALT VARCHAR2 DEFAULT '?',
p_SORT INTEGER DEFAULT 2,
p_DESC INTEGER DEFAULT 0,
p_SKIP INTEGER DEFAULT 0,
p_NUMMER VARCHAR2 DEFAULT NULL,
p_VONDATUM VARCHAR2 DEFAULT NULL,
p_BISDATUM VARCHAR2 DEFAULT NULL,
p_LFSTOGGLE VARCHAR2 DEFAULT NULL,
p_AUTO VARCHAR2 DEFAULT 'F',
p_FZWMASTER VARCHAR2 DEFAULT NULL,
X INTEGER DEFAULT NULL,
Y INTEGER DEFAULT NULL) IS
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
Loc_NLSTime VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,2);
Loc_NLSSort VARCHAR2(20):=Xtool.GetNLS(p_HDLNR,5);
Loc_NLSWert VARCHAR2(30):=Xtool.GetNLS(p_HDLNR,3);
Loc_NLSBetrT VARCHAR2(12):=Xtool.GetNLS(p_HDLNR,6);
m_Vz INTEGER;
m_Haendler INTEGER;
m_NAME1 VARCHAR2(40);
m_NAME2 VARCHAR2(40);
m_STR VARCHAR2(40);
m_HNR VARCHAR2(10);
m_STR2 VARCHAR2(40);
m_PLZ VARCHAR2(10);
m_ORT VARCHAR2(40);
m_HATSAMMELSORT VARCHAR2(01);
m_LfAnz INTEGER;
m_LfsSammel VARCHAR2(01);
m_CashTyp INTEGER;
tmp_von DATE;
tmp_bis DATE;
my_ProgName VARCHAR2(20) :='SammelKdn';
CURSOR curadressen IS
SELECT ART, NUMMER, FILNR, TYP, MATCHCODE, NAME1, NAME2, NAME3, STRASSE, STRASSE2, HAUSNR, PLZ, ORT, ORTSTEIL, LAND, TELEFON1
FROM ADRESSEN
WHERE (HDLNR= p_HDLNR)
AND (SAMMELRG = 'W')
AND DECODE(p_SUCHFELD,
'0','?',--UPPER(p_SUCHINHALT),
'1',TO_CHAR(NUMMER,'9999999999'),
'2',UPPER(MATCHCODE),
'3',UPPER(NAME1),
'4',UPPER(NAME2),
'5',UPPER(STRASSE),
'6',PLZ,
'7',UPPER(ORT),
'8',UPPER(TELEFON1),
'9',FILNR) LIKE '%' || UPPER(p_SUCHINHALT) || '%'
ORDER BY DECODE(p_DESC,0,
DECODE(p_Sort,
'1',NLSSORT(TO_CHAR(NUMMER,'9999999999'),Loc_NLSSort),
'2',NLSSORT(NAME2,Loc_NLSSort),
'3',NLSSORT(NAME1,Loc_NLSSort),
'4',NLSSORT(STRASSE,Loc_NLSSort),
'5',NLSSORT(PLZ,Loc_NLSSort),
'6',NLSSORT(ORT,Loc_NLSSort),
'7',NLSSORT(TELEFON1,Loc_NLSSort),
'8',NLSSORT(FILNR,Loc_NLSSort),
'9',NLSSORT(MATCHCODE,Loc_NLSSort))),
DECODE(p_DESC,1,
DECODE(p_Sort,
'1',NLSSORT(TO_CHAR(NUMMER,'9999999999'),Loc_NLSSort),
'2',NLSSORT(NAME2,Loc_NLSSort),
'3',NLSSORT(NAME1,Loc_NLSSort),
'4',NLSSORT(STRASSE,Loc_NLSSort),
'5',NLSSORT(PLZ,Loc_NLSSort),
'6',NLSSORT(ORT,Loc_NLSSort),
'7',NLSSORT(TELEFON1,Loc_NLSSort),
'8',NLSSORT(FILNR,Loc_NLSSort),
'9',NLSSORT(MATCHCODE,Loc_NLSSort))) DESC;
PROCEDURE DoSammel IS
CURSOR CurLfScheine IS
SELECT HDLNR, RECHNR, RDATUM,VERMUMSATZ,KMUMSATZ,VERSUMSATZPAI,VERSUMSATZCDW, VERSUMSATZTP, KRAFTUMSATZ,BETANKUMSATZ,SONSTUMSATZ,SONSTUMSATZFREI,
DLUMSATZ,ZUBUMSATZ,DLUMSATZFREI,ZUBUMSATZFREI,ERLSCHMAL,ERLSCHMAL1,ERLSCHMAL2,LFSSAMMEL,
GEZAHLT,BERKM,GEFKM,
ERLKONTO,ERLKONTO1,ERLKONTO2,VERMKONTO,KMKONTO,VERSKONTO,SONSTKONTO,SONSTKONTOFREI,KRAFTKONTO,BETANKKONTO,
VERMMWST,VERSMWSTPAI,VERSMWSTCDW,VERSMWSTTP,KRAFTMWST,SONSTMWST,
RABATTZL,VTRSTEUER,VTRBETRAG,VTRKONTO,KTOMWST,KTOMWST2,
MWSTSL,MK,ST,KST,AK,KT,UST,KSTMOBI,KSTFIL,GESCHBEREICH,AUFTRNR,MVART,
(SELECT FILAUFTRAG FROM AUFTRAG WHERE HDLNR=R.HDLNR AND AUFTRNR=R.AUFTRNR) FILAUFTRAG,
(SELECT ANZAHLUNG FROM AUFTRAG WHERE HDLNR=R.HDLNR AND AUFTRNR=R.AUFTRNR) ANZAHLUNG,
(SELECT FZWECHSELMASTER FROM AUFTRAG WHERE HDLNR=R.HDLNR AND AUFTRNR=R.AUFTRNR) FZWECHSELMASTER
FROM RECHNUNG R
WHERE HDLNR = p_HDLNR
AND TRUNC(RDATUM) >=tmp_von
AND TRUNC(RDATUM) <=tmp_bis
AND DEBITOR=NVL(p_NUMMER,0)
AND RECHART='L'
AND ZAHLWEG='50'
AND RECHNR>0
AND RLNUMMER IS NULL
AND NVL(LFSSAMMEL,'W')='W'
ORDER BY DECODE(m_HatSammelSort,
'W',FILAUFTRAG||TO_CHAR(RECHNR),
'F',RECHNR);
my_RechNr INTEGER;
my_AuftrNr INTEGER;
my_VermUmsatz FLOAT:=0.0;
my_KmUmsatz FLOAT:=0.0;
my_mwstMiet FLOAT:=0.0;
my_ErlSchmal FLOAT:=0.0;
my_ErlSchmal1 FLOAT:=0.0;
my_ErlSchmal2 FLOAT:=0.0;
my_PAIUmsatz FLOAT:=0.0;
my_CDWUmsatz FLOAT:=0.0;
my_TrpUmsatz FLOAT:=0.0;
my_KraftUmsatz FLOAT:=0.0;
my_BetankUmsatz FLOAT:=0.0;
my_SonstUmsatz FLOAT:=0.0;
my_SonstUmsatzFr FLOAT:=0.0;
my_ZubUmsatz FLOAT:=0.0;
my_DlUmsatz FLOAT:=0.0;
my_ZubUmsatzFr FLOAT:=0.0;
my_DlUmsatzFr FLOAT:=0.0;
my_mwstverscdw FLOAT:=0.0;
my_mwstverspai FLOAT:=0.0;
my_mwstverstp FLOAT:=0.0;
my_mwstkraft FLOAT:=0.0;
my_mwstsonst FLOAT:=0.0;
my_Rechbetrag FLOAT:=0.0;
my_Anzahlung FLOAT:=0.0;
my_BerKm INTEGER:=0;
my_GefKm INTEGER:=0;
my_KST INTEGER;
my_KSTFil INTEGER;
my_GeschBer VARCHAR2(10);
my_VertrSatz FLOAT:=0.0;
my_VertrBetr FLOAT:=0.0;
my_VtrKonto INTEGER:=0;
my_MwStSL INTEGER;
my_AMK INTEGER;
my_AST INTEGER;
my_AKST INTEGER;
my_AAK INTEGER;
my_AKT INTEGER;
my_AUST INTEGER;
my_KstMobi INTEGER;
my_ErlKonto INTEGER;
my_ErlKonto1 INTEGER;
my_ErlKonto2 INTEGER;
my_VermKonto INTEGER;
my_KmKonto INTEGER;
my_SonstKonto INTEGER;
my_SonstKontoFr INTEGER;
my_VersKonto INTEGER;
my_KraftKonto INTEGER;
my_BetankKonto INTEGER;
my_KtoMwst INTEGER;
my_KtoMwst2 INTEGER;
my_RabattZl INTEGER;
my_ZahlTag INTEGER;
my_ZahlWeg INTEGER;
my_KdZahlTag INTEGER;
my_StatusExtern INTEGER:=NULL;
my_Ingis VARCHAR2(01);
my_PDF VARCHAR2(01);
my_MvArt VARCHAR2(04);
BEGIN
SELECT RECHNR, ZAHLTAG
INTO my_rechnr, my_ZahlTag
FROM FIRMA
WHERE HDLNR=p_HDLNR FOR UPDATE;
UPDATE FIRMA SET
RECHNR = RECHNR + 1
WHERE HDLNR=p_HDLNR;
FOR rec_LfSchein IN curLfScheine LOOP
IF p_FZWMASTER IS NULL OR p_FZWMASTER=rec_LfSChein.FZWECHSELMASTER
THEN
my_VermUmsatz :=my_VermUmsatz +rec_LfSchein.VERMUMSATZ;
my_KmUmsatz :=my_KmUmsatz +rec_LfSchein.KMUMSATZ;
my_ErlSchmal :=my_ErlSchmal +rec_LfSchein.ERLSCHMAL;
my_ErlSchmal1 :=my_ErlSchmal1 +rec_LfSchein.ERLSCHMAL1;
my_ErlSchmal2 :=my_ErlSchmal2 +rec_LfSchein.ERLSCHMAL2;
my_PAIUmsatz :=my_PAIUmsatz +rec_LfSchein.VERSUMSATZPAI;
my_CDWUmsatz :=my_CDWUmsatz +rec_LfSChein.VERSUMSATZCDW;
my_TrpUmsatz :=my_TrpUmsatz +rec_LfSchein.VERSUMSATZTP;
my_KraftUmsatz :=my_KraftUmsatz +rec_LfSchein.KRAFTUMSATZ;
my_BetankUmsatz :=my_BetankUmsatz +rec_LfSchein.BETANKUMSATZ;
my_DlUmsatz :=my_DlUmsatz +rec_LfSchein.DLUMSATZ;
my_ZubUmsatz :=my_ZubUmsatz +rec_LfSchein.ZUBUMSATZ;
my_DlUmsatzFr :=my_DlUmsatzFr +rec_LfSchein.DLUMSATZFREI;
my_ZubUmsatzFr :=my_ZubUmsatzFr +rec_LfSchein.ZUBUMSATZFREI;
my_SonstUmsatz :=my_SonstUmsatz +rec_LfSchein.SONSTUMSATZ;
my_SonstUmsatzFr:=my_SonstUmsatzFr+rec_LfSchein.SONSTUMSATZFREI;
my_Rechbetrag :=my_Rechbetrag +rec_LfSchein.GEZAHLT;
my_BerKm :=my_BerKm +rec_LfSchein.BERKM;
my_GefKm :=my_GefKm +rec_LfSchein.GEFKM;
my_Anzahlung :=my_Anzahlung +rec_LfSchein.ANZAHLUNG;
my_ErlKonto :=rec_LfSchein.ERLKONTO;
my_ErlKonto1 :=rec_LfSchein.ERLKONTO1;
my_ErlKonto2 :=rec_LfSchein.ERLKONTO2;
my_VermKonto :=rec_LfSchein.VERMKONTO;
my_KmKonto :=rec_LfSchein.KMKONTO;
my_VersKonto :=rec_LfSchein.VERSKONTO;
my_SonstKonto :=rec_LfSchein.SONSTKONTO;
my_SonstKontoFr:=rec_LfSchein.SONSTKONTOFREI;
my_KraftKonto :=rec_LfSchein.KRAFTKONTO;
my_BetankKonto :=rec_LfSchein.BETANKKONTO;
my_MwstMiet :=rec_LfSchein.VERMMWST;
my_mwstverspai :=rec_LfSchein.VERSMWSTPAI;
my_mwstverscdw :=rec_LfSchein.VERSMWSTCDW;
my_mwstverstp :=rec_LfSchein.VERSMWSTTP;
my_mwstkraft :=rec_LfSchein.KRAFTMWST;
my_mwstsonst :=rec_LfSchein.SONSTMWST;
my_ktomwst :=rec_LfSchein.KTOMWST;
my_ktomwst2 :=rec_LfSchein.KTOMWST2;
my_RabattZl :=rec_LfSChein.RABATTZL;
my_VertrSatz :=rec_LfSchein.VTRSTEUER;
my_VertrBetr :=my_VertrBetr+rec_LfSchein.VTRBETRAG;
my_VtrKonto :=rec_LfSchein.VTRKONTO;
my_MwStSL :=rec_LfSchein.MWSTSL;
my_AMK :=rec_LfSchein.MK;
my_AST :=rec_LfSchein.ST;
my_AKST :=rec_LfSchein.KST;
my_AAK :=rec_LfSchein.AK;
my_AKT :=rec_LfSchein.KT;
my_AUST :=rec_LfSchein.UST;
my_KstMobi :=rec_LfSchein.KSTMOBI;
my_KstFil :=rec_LfSchein.KSTFIL;
my_GeschBer :=rec_LfSchein.GESCHBEREICH;
my_AuftrNr :=rec_LfSchein.AUFTRNR;
my_ZahlWeg :=3;
IF NVL(rec_LfSchein.FZWECHSELMASTER,0)>0
THEN my_StatusExtern:=0;
SELECT ZAHLUNGSART
INTO my_ZahlWeg
FROM AUFTRAG
WHERE HDLNR =rec_LfSchein.HDLNR
AND AUFTRNR=rec_LfSchein.AUFTRNR;
END IF;
IF rec_LfSchein.MVART IS NOT NULL
THEN my_MvArt:=rec_LfSchein.MVART;
END IF;
UPDATE RECHNUNG
SET RLNUMMER = my_rechNr
WHERE HDLNR =p_HDLNR
AND RECHNR=rec_LfSChein.RECHNR
AND RECHART='L';
END IF;
END LOOP;
BEGIN
SELECT INGIS, PDFRECHNUNG, ZAHLTAG
INTO my_Ingis, my_PDF, my_KdZahltag
FROM ADRESSEN
WHERE HDLNR =p_HDLNR
AND ART ='K'
AND NUMMER =p_NUMMER;
EXCEPTION WHEN OTHERS THEN my_Ingis:='F'; my_PDF:='F'; my_KdZahltag:=0;
END;
IF my_KdZahlTag>0
THEN my_ZahlTag:=my_KdZahlTag;
END IF;
INSERT INTO RECHNUNG
(HDLNR,FILNR,RECHNR, GUTLAST, ZWIRECH, AUFTRNR, RECHART, DEBITOR, RDATUM, ZAHLBED,
VERMUMSATZ, KMUMSATZ, VERMMWST, ERLSCHMAL, ERLSCHMAL1, ERLSCHMAL2, ERLMWST,
ERLKONTO, ERLKONTO1, ERLKONTO2, VERMKONTO, KMKONTO,
VERSUMSATZPAI, VERSMWSTPAI, VERSUMSATZCDW, VERSMWSTCDW, VERSUMSATZTP,
VERSMWSTTP, VERSKONTO, KRAFTUMSATZ, KRAFTMWST, KRAFTKONTO, BETANKUMSATZ, BETANKKONTO, SONSTUMSATZ, ZUBUMSATZ, DLUMSATZ,
ZUBUMSATZFREI, DLUMSATZFREI, SONSTUMSATZFREI,
SONSTMWST, SONSTKONTO, SONSTKONTOFREI, BERKM, GEFKM, GEZAHLT, ZAHLWEG, KSTSTELLE, KSTFIL, GESCHBEREICH, AUFHDLNR,
FIBU, PROV, ERFHDLNR, ERFUSER, RABATTZL,
VTRSTEUER, VTRBETRAG, VTRKONTO, MWSTSL,KTOMWST,KTOMWST2,
MK,ST,KST,AK,KT,UST, KSTMOBI, RLNUMMER, ZAHLTAG, STATUSEXTERN, MVART)
VALUES (p_HdlNr,p_FILNR,my_RECHNR, 'F', 'F', NULL,'R', p_NUMMER, XTool.GetSysDate(p_HDLNR), my_ZahlWeg,
my_VermUmsatz,my_KmUmsatz,my_mwstmiet,my_ErlSchmal,my_ErlSchmal1,my_ErlSchmal2,my_mwstmiet,
my_erlkonto,my_erlkonto1,my_erlkonto2,my_vermkonto,my_kmkonto,
my_PAIUmsatz,my_mwstverspai,my_CDWUmsatz,my_mwstverscdw,my_TrpUmsatz,
my_mwstverstp,my_VersKonto,my_KraftUmsatz,my_mwstkraft,my_KraftKonto,my_BetankUmsatz,my_BetankKonto,my_SonstUmsatz,my_ZubUmsatz,my_DlUmsatz,
my_ZubUmsatzFr,my_DlUmsatzFr,my_SonstUmsatzFr,
my_mwstsonst,my_SonstKonto,my_SonstKontoFr,my_BerKm,my_GefKm, my_Rechbetrag-my_Anzahlung,my_ZahlWeg,my_KST,my_KSTFil,my_GeschBer,p_HDLNR,
'F','F',p_HDLNR, NVL(p_USERNR,0), my_RabattZl,
my_VertrSatz, my_VertrBetr, my_VtrKonto, my_MwStSL, my_KtoMwst, my_KtoMwst2,
my_AMK,my_AST,my_AKST,my_AAK,my_AKT,my_AUST, my_KstMobi,0, my_ZahlTag, my_StatusExtern, my_MvArt);
COMMIT;
XTOOL.SavePdfArchiv(p_HDLNR,p_FILNR,p_USERNR,p_HDLNR,NULL,0,'R',my_RechNr);
IF p_AUTO='F'
THEN IF (my_ZahlWeg=2) AND
(NVL(m_CashTyp,0)>0) AND
(my_RechBetrag>0.0)
THEN ZAHLUNG.OpenZahlWeg(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_KENNUNG=> 'C',
p_AUFTRNR=> my_Auftrnr,
p_BETRAG => my_RechBetrag,
p_FUNC => ZAHLUNG.c_EndZahlung);
RETURN;
END IF;
IF NVL(my_Ingis,'F')='W' OR
NVL(my_PDF,'F')='W'
THEN ShowRech(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AHDLNR => p_HDLNR,
p_AFILNR => p_FILNR,
p_RECHNR => my_RechNr,
p_XSL => 'rechprint');
ELSE ShowSammelRechnung(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_RECHNR => my_RechNr);
END IF;
END IF;
EXCEPTION
WHEN OTHERS THEN ROLLBACK;
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END;
PROCEDURE OutLieferscheine(p_DEBITOR INTEGER) IS
CURSOR CurLfScheine IS
SELECT HDLNR, RECHNR, RDATUM,VERMUMSATZ,KMUMSATZ,VERSUMSATZPAI,VERSUMSATZCDW, VERSUMSATZTP, KRAFTUMSATZ,BETANKUMSATZ,SONSTUMSATZ,
DLUMSATZ,ZUBUMSATZ,DLUMSATZFREI, ZUBUMSATZFREI,ERLSCHMAL,ERLSCHMAL1,ERLSCHMAL2,LFSSAMMEL,
(SELECT FILAUFTRAG FROM AUFTRAG WHERE HDLNR=R.HDLNR AND AUFTRNR=R.AUFTRNR) FILAUFTRAG
FROM RECHNUNG R
WHERE HDLNR = p_HDLNR
AND TRUNC(RDATUM) >=tmp_von
AND TRUNC(RDATUM) <=tmp_bis
AND DEBITOR=p_DEBITOR
AND RECHART='L'
AND ZAHLWEG='50'
AND RECHNR>0
AND RLNUMMER IS NULL
-- ORDER BY RDATUM;
ORDER BY DECODE(m_HatSammelSort,
'W',FILAUFTRAG||TO_CHAR(RECHNR),
'F',RECHNR);
BEGIN
FOR rec_lfs IN curLfScheine LOOP
Xtool.XMLStart('Lieferschein');
Xtool.htx('HDLNR',p_HDLNR);
Xtool.htx('FILNR',p_FILNR);
Xtool.htx('USERNR',p_USERNR);
Xtool.htx('FILAUFTR',rec_lfs.FILAUFTRAG);
Xtool.htx('RECHNR',rec_lfs.RECHNR);
Xtool.htx('RECHDATUM',TO_CHAR(rec_lfs.RDATUM,Loc_NLSDate));
Xtool.htx('RECHSUMME',TO_CHAR(rec_lfs.VERMUMSATZ+
rec_lfs.KMUMSATZ+
rec_lfs.VERSUMSATZPAI+
rec_lfs.VERSUMSATZCDW+
rec_lfs.VERSUMSATZTP+
rec_lfs.KRAFTUMSATZ+
rec_lfs.BETANKUMSATZ+
rec_lfs.SONSTUMSATZ+
rec_lfs.DLUMSATZ+
rec_lfs.ZUBUMSATZ+
rec_lfs.DLUMSATZFREI+
rec_lfs.ZUBUMSATZFREI-
rec_lfs.ERLSCHMAL-
rec_lfs.ERLSCHMAL1-
rec_lfs.ERLSCHMAL2,Loc_NLSBetrT,Loc_NLSWert));
Xtool.htx('LFSSAMMEL',NVL(rec_lfs.LFSSAMMEL,'W'));
Xtool.htx('SAMMELSORT',m_HatSammelSort);
Xtool.XMLEnd('Lieferschein');
END LOOP;
END;
BEGIN
IF p_AUTO='F' THEN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin(p_HDLNR => p_HDLNR);
RETURN;
END IF;
END IF;
SELECT VZ, HAENDLER, NAME_1, NAME_2, STRASSE, HAUSNR, STRASSE2, PLZ, ORT, NVL(HATSAMMELSORT,'F'), CASHTYP
INTO m_Vz, m_Haendler, m_NAME1, m_NAME2, m_STR, m_HNR, m_STR2, m_PLZ, m_ORT, m_HatSammelSort, m_CashTyp
FROM FIRMA F, FIRMAPARAM FP
WHERE F.HDLNR=p_HDLNR AND FP.HDLNR=p_HDLNR;
IF p_VONDATUM IS NULL
THEN tmp_von:=TO_DATE('01'||TO_CHAR(SYSDATE,'mmyyyy'),'ddmmyyyy');
ELSE tmp_von:=TO_DATE(p_VONDATUM,Loc_NLSDate); -- f�r exception bei ung�ltigem Datum;
END IF;
IF p_BISDATUM IS NULL
THEN tmp_bis:=TRUNC(SYSDATE);
ELSE tmp_bis:=TO_DATE(p_BISDATUM,Loc_NLSDate);
END IF;
IF p_NUMMER IS NOT NULL
THEN DoSammel;
RETURN;
END IF;
IF p_LFSTOGGLE IS NOT NULL
THEN BEGIN
SELECT LFSSAMMEL
INTO m_LfsSammel
FROM RECHNUNG
WHERE HDLNR =p_HDLNR
AND RECHNR=NVL(p_LFSTOGGLE,0)
AND RECHART='L';
EXCEPTION WHEN OTHERS THEN m_LfsSammel:='F';
END;
IF NVL(m_LfsSammel,'W')='W'
THEN m_LfsSammel:='F';
ELSE m_LfsSammel:='W';
END IF;
UPDATE RECHNUNG
SET LFSSAMMEL=m_LfsSammel
WHERE HDLNR =p_HDLNR
AND RECHNR=NVL(p_LFSTOGGLE,0)
AND RECHART='L';
COMMIT;
END IF;
Xtool.XMLHeader('Adressen','adrliste',p_HDLNR,p_USERNR,my_ProgName);
Xtool.OutFeldBez(p_HDLNR,'adrliste');
FOR rec_adresse IN curadressen LOOP
-- Pr�fen, ob LfScheine im Datumsbereich vorliegen, nur dann Ausgabe
SELECT COUNT(RECHNR)
INTO m_LfAnz
FROM RECHNUNG
WHERE HDLNR = p_HDLNR
AND TRUNC(RDATUM) >=tmp_von
AND TRUNC(RDATUM) <=tmp_bis
AND DEBITOR=rec_adresse.NUMMER
AND RECHART='L'
AND ZAHLWEG='50'
AND RECHNR>0
AND RLNUMMER IS NULL;
IF m_LfAnz > 0 THEN
Xtool.XMLStart('Adresse');
Xtool.htx('HDLNR',p_HDLNR);
Xtool.htx('FILNR',p_FILNR);
Xtool.htx('USERNR',p_USERNR);
Xtool.htx('ART',rec_adresse.ART);
Xtool.htx('FUNC',p_FUNC);
Xtool.htx('ZUGRIFF','1');
Xtool.htx('SPERRE','F');
Xtool.htx('NUMMER',rec_adresse.NUMMER);
Xtool.htx('ADRFIL',rec_adresse.FILNR);
IF rec_adresse.ART='K'
THEN IF rec_adresse.TYP IN ('P','F')
THEN Xtool.htx('TYP',rec_adresse.TYP);
ELSE Xtool.htx('TYP','G');
END IF;
ELSE Xtool.htx('TYP','');
END IF;
Xtool.htx('MATCHCODE',rec_adresse.MATCHCODE);
Xtool.htx('NAME1',rec_adresse.NAME1);
Xtool.htx('NAME2',rec_adresse.NAME2);
Xtool.htx('NAME3',rec_adresse.NAME3);
Xtool.htx('STRASSE',rec_adresse.STRASSE || ' ' || rec_adresse.HAUSNR);
Xtool.htx('STRASSE2',rec_adresse.STRASSE2);
Xtool.htx('PLZ',rec_adresse.PLZ);
Xtool.htx('ORT',rec_adresse.ORT || ' ' || rec_adresse.ORTSTEIL);
Xtool.htx('LAND',rec_adresse.LAND);
Xtool.htx('TELEFON1',rec_adresse.TELEFON1);
Xtool.htx('LFANZ',TO_CHAR(m_LfAnz));
OutLieferscheine(rec_adresse.NUMMER);
Xtool.XMLEnd('Adresse');
END IF;
END LOOP;
Xtool.XMLStart('Navigator');
Xtool.htx('PART',p_ART);
Xtool.htx('PFUNC',p_FUNC);
Xtool.htx('PHDLNR',p_HDLNR);
Xtool.htx('PFILNR',p_FILNR);
Xtool.htx('PUSERNR',p_USERNR);
Xtool.htx('PANLAGE','0');
Xtool.htx('PSORT',TO_CHAR(p_SORT));
Xtool.htx('PDESC',TO_CHAR(p_DESC));
Xtool.htx('PSUCHFELD',p_SUCHFELD);
Xtool.htx('PSUCHINHALT',p_SUCHINHALT);
Xtool.htx('FIRMA1','(' || to_char(m_Vz,'000',Loc_NLSWert)||to_char(m_Haendler,'00000',Loc_NLSWert)|| ') ' ||m_NAME1);
Xtool.htx('FIRMA2',m_NAME2);
Xtool.htx('STR',m_STR);
Xtool.htx('ORT',m_PLZ || ' ' || m_ORT);
Xtool.htx('PVONDATUM',TO_CHAR(tmp_von,Loc_NLSDate));
Xtool.htx('PBISDATUM',TO_CHAR(tmp_bis,Loc_NLSDate));
Xtool.XMLEnd('Navigator');
Xtool.OutSuchBez(p_HDLNR,'adrliste',p_SUCHFELD);
Xtool.XMLEnd('Adressen');
-- R�cksprung organisieren
DELETE FROM GOBACKTBL WHERE HDLNR=p_HDLNR AND USERNR=p_USERNR;
INSERT INTO GOBACKTBL
(HDLNR,USERNR,FILNR,DATUMSTAMP,FUNKTION,LISTE,XSL,FUNC,VONDATUM,BISDATUM,ART,SORT,SUCHFELD,SUCHINHALT)
VALUES
(p_HDLNR,p_USERNR,p_FILNR,SYSDATE,1480,0,'adrliste',p_FUNC,p_VONDATUM,p_BISDATUM,p_ART,p_SORT,p_SUCHFELD,p_SUCHINHALT);
COMMIT;
-- Ende
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END;
/******************************************************************************
NAME: Rechnungen.SammelAuto
PURPOSE: Liste aller sammelkunden zum H�ler, Erzeugt automatisch alle Sammelrechnungen
Date: 19.09.2013/27.01.2016
*******************************************************************************/
FUNCTION SammelAuto(p_KEY VARCHAR2) RETURN BOOLEAN IS
CURSOR curfirmen IS
SELECT HDLNR
FROM FIRMAPARAM
WHERE (HATSAMMELRECHAUTO='W')
ORDER BY HDLNR;
PROCEDURE doIt (p_HDLNR VARCHAR2) IS
CURSOR curadressen IS
SELECT NUMMER
FROM ADRESSEN
WHERE (HDLNR= p_HDLNR)
AND (SAMMELRG = 'W');
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
m_LfAnz INTEGER;
BEGIN
FOR rec_adresse IN curadressen LOOP
-- Pr�fen, ob LfScheine im Datumsbereich vorliegen, nur dann Ausgabe
SELECT COUNT(RECHNR)
INTO m_LfAnz
FROM RECHNUNG
WHERE HDLNR = p_HDLNR
AND TRUNC(RDATUM) >=TRUNC(SYSDATE)-365
AND TRUNC(RDATUM) <=TRUNC(SYSDATE)
AND DEBITOR=rec_adresse.NUMMER
AND RECHART='L'
AND ZAHLWEG='50'
AND RLNUMMER IS NULL;
IF m_LfAnz > 0
THEN SammelKdn(p_HDLNR => p_HDLNR,
p_FILNR => '0001',
p_USERNR => '00',
p_NUMMER => TO_CHAR(Rec_Adresse.NUMMER),
p_VONDATUM => TO_CHAR(SYSDATE-365,Loc_NLSDate),
p_BISDATUM => TO_CHAR(SYSDATE,Loc_NLSDate),
p_AUTO => 'W');
-- htp.p(rec_adresse.NUMMER);
END IF;
END LOOP;
END;
BEGIN
IF p_KEY=TO_CHAR(SYSDATE,'mm-dd-yy')
THEN FOR rec_firma IN curfirmen LOOP
doIt(rec_Firma.HDLNR);
END LOOP;
END IF;
RETURN TRUE;
-- htp.p('fertig');
END;
/******************************************************************************
NAME: Rechnungen.TerminAbrech
PURPOSE: Liste alles MVs mit Flag Langzeit.Sprung Zwischenrechnung
Date: 11.06.2012/13.07.2017
*******************************************************************************/
PROCEDURE TerminAbrech(p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_STATUS VARCHAR2 DEFAULT NULL,
p_AUFTRNR INTEGER DEFAULT 0,
p_MONAT INTEGER DEFAULT 0,
p_JAHR INTEGER DEFAULT 0,
p_SUCHFELD VARCHAR2 DEFAULT '0',
p_SUCHTYP VARCHAR2 DEFAULT '=',
p_SUCHINHALT VARCHAR2 DEFAULT '?',
p_MEDATUM VARCHAR2 DEFAULT NULL,
p_METYP VARCHAR2 DEFAULT NULL,
p_SORT VARCHAR2 DEFAULT '1',
p_DESC VARCHAR2 DEFAULT '0',
p_SELECTALL VARCHAR2 DEFAULT NULL,
x INTEGER DEFAULT 0,
y INTEGER DEFAULT 0) IS
my_ProgName VARCHAR2(20) :='TerminAbrech';
m_Vz INTEGER;
m_Haendler INTEGER;
m_NAME1 VARCHAR2(40);
m_NAME2 VARCHAR2(40);
m_STR VARCHAR2(40);
m_HNR VARCHAR2(10);
m_STR2 VARCHAR2(40);
m_PLZ VARCHAR2(10);
m_ORT VARCHAR2(40);
m_Delta INTEGER;
m_AnzZwi INTEGER;
m_LastZwi DATE;
m_SumZwi FLOAT;
m_MonTyp INTEGER;
m_Ausgabe BOOLEAN;
m_Monat INTEGER:=p_Monat;
m_Jahr INTEGER:=p_Jahr;
m_EchteTage INTEGER := 0;
m_AbrTyp VARCHAR2(2) := 'MF';
m_AnzStd INTEGER := 0;
m_Dauer INTEGER := 0;
m_Rest INTEGER := 0;
m_FreiKm VARCHAR2(10):='';
m_FreiKm1 VARCHAR2(10):='';
m_BerKm INTEGER := 0;
my_BBeginn DATE;
my_BEnde DATE;
my_BEUhr VARCHAR2(05);
m_PREIS1 FLOAT;
m_FAKTOR1 INTEGER;
m_EINHEIT1 INTEGER;
m_INCLANZKM1 INTEGER;
m_DMKM FLOAT;
m_DMCDW FLOAT;
m_DMPAI FLOAT;
m_PREIS2 FLOAT;
m_FAKTOR2 INTEGER;
m_EINHEIT2 INTEGER;
m_INCLANZKM2 INTEGER;
m_DMCDW2 FLOAT;
m_DMPAI2 FLOAT;
m_VermUmsatz FLOAT := 0.0;
m_KmUmsatz FLOAT := 0.0;
m_ErlSchmal FLOAT := 0.0;
m_ErlSchmal1 FLOAT := 0.0;
m_ErlSchmal2 FLOAT := 0.0;
m_CDWUmsatz FLOAT := 0.0;
m_PAIUmsatz FLOAT := 0.0;
m_TrpUmsatz FLOAT := 0.0;
m_DoZwirech VARCHAR2(01);
m_CashTyp VARCHAR2(01);
m_Zahlungsart VARCHAR2(02);
m_MeDatum VARCHAR2(10):=p_MEDATUM;
m_SelectAll VARCHAR2(01):='W';
m_TMLaeuft VARCHAR2(01);
m_TerminLfd INTEGER;
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
Loc_NLSTime VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,2);
Loc_NLSSort VARCHAR2(20):=Xtool.GetNLS(p_HDLNR,5);
Loc_NLSWert VARCHAR2(30):=Xtool.GetNLS(p_HDLNR,3);
PROCEDURE DoAusgabe IS
CURSOR curmieten IS
SELECT *
FROM AUFTRAG
WHERE (HDLNR = p_HDLNR)
AND (KENNUNG = 'A')
AND (LANGZEIT = 'W')
AND (p_METYP IS NULL OR (p_METYP='=' AND TO_DATE(m_MeDatum,Loc_NLSDate)=TRUNC(MENDE))
OR (p_METYP='-' AND TO_DATE(m_MeDatum,Loc_NLSDate)>TRUNC(MENDE))
OR (p_METYP='+' AND TO_DATE(m_MeDatum,Loc_NLSDate)<TRUNC(MENDE)))
AND ((p_SUCHFELD=10 AND FAHRGESTELL IS NULL AND p_SUCHINHALT='-') OR
(p_SUCHFELD=15 AND p_SUCHTYP='=' AND INSTR(p_SUCHINHALT,TO_CHAR(DEBITOR))>0) OR
(p_SUCHFELD=15 AND p_SUCHTYP='!' AND INSTR(p_SUCHINHALT,TO_CHAR(DEBITOR))=0) OR
(p_SUCHTYP='=' AND DECODE(p_SUCHFELD,
'0' ,UPPER(p_SUCHINHALT),
'1' ,AUFTRNR,
'2' ,LRECHNUNG,
'3' ,KENNZ,
'4' ,DEBITOR,
'5' ,UPPER(NAME1||' '||NAME2),
'6' ,UPPER(p_SUCHINHALT),
'7' ,TARIFTYP,
'8' ,UPPER(TELEFON),
'9' ,FILRECHNUNG,
'10',FAHRGESTELL,
'11',AUFTRNREXT,
'12',ROBKENNZ,
'13',ROBAUFSTATUS) LIKE '%' || UPPER(p_SUCHINHALT) || '%')
OR
(p_SUCHTYP='!' AND DECODE(p_SUCHFELD,
'0' ,UPPER(p_SUCHINHALT),
'1' ,AUFTRNR,
'2' ,LRECHNUNG,
'3' ,KENNZ,
'4' ,DEBITOR,
'5' ,UPPER(NAME1||' '||NAME2),
'6' ,UPPER(p_SUCHINHALT),
'7' ,TARIFTYP,
'8' ,UPPER(TELEFON),
'9' ,FILRECHNUNG,
'10',FAHRGESTELL,
'11',AUFTRNREXT,
'12',ROBKENNZ,
'13',ROBAUFSTATUS) NOT LIKE '%' || UPPER(p_SUCHINHALT) || '%'))
ORDER BY DEBITOR;
loc_PdfRe VARCHAR2(01);
loc_Ingis VARCHAR2(01);
loc_Which VARCHAR2(10);
loc_AnzZwi INTEGER;
loc_RgDebitor INTEGER;
loc_Cnt INTEGER;
loc_Zahlungsart VARCHAR2(02);
loc_SammelRg VARCHAR2(01);
loc_IsSelected VARCHAR2(01);
loc_MvBEnde VARCHAR2(10);
BEGIN
IF NVL(p_STATUS,'-')<>'V'
THEN Xtool.XMLHeader('Auftraege','langliste',p_HDLNR,p_USERNR,my_ProgName);
Xtool.OutFeldBez(p_HDLNR,'langliste');
ELSE UPDATE FIRMA
SET FREI_EURO='W'
WHERE HDLNR=p_HDLNR;
COMMIT;
END IF;
FOR rec_Auftrag IN curmieten LOOP
BEGIN
SELECT MONATSRG
INTO m_MonTyp
FROM ADRESSEN
WHERE HDLNR = p_HDLNR
AND ART = 'K'
AND NUMMER= Rec_Auftrag.DEBITOR;
EXCEPTION
WHEN OTHERS THEN m_MonTyp:=0;
END;
SELECT COUNT(RECHNR),
MAX(BENDE), SUM(VERMUMSATZ+KMUMSATZ-ERLSCHMAL+VERSUMSATZPAI+VERSUMSATZCDW+VERSUMSATZTP-ERLSCHMAL1+
KRAFTUMSATZ+BETANKUMSATZ+SONSTUMSATZ+ZUBUMSATZ+DLUMSATZ+DLUMSATZFREI+ZUBUMSATZFREI+SONSTUMSATZFREI-ERLSCHMAL2)
INTO m_AnzZwi, m_LastZwi, m_SumZwi
FROM RECHNUNG
WHERE HDLNR =p_HDLNR
AND RECHNR > 0
AND AUFTRNR=Rec_Auftrag.AUFTRNR
AND ZWIRECH='W';
SELECT MAX(BENDE)
INTO m_LastZwi
FROM RECHNUNG
WHERE HDLNR =p_HDLNR
AND RECHNR > 0
AND AUFTRNR=Rec_Auftrag.AUFTRNR
AND STNRECHNR IS NULL
AND ZWIRECH='W';
IF m_LastZwi IS NULL
THEN m_LastZwi:=Rec_Auftrag.BBEGINN;
loc_AnzZwi:=0; -- Stornos
ELSE loc_AnzZwi:=m_AnzZwi;
END IF;
-- Xtool.htx('AnzZwi',m_AnzZwi);
-- Xtool.htx('LastZwi',m_lastZwi);
m_Ausgabe:=false;
IF (m_MonTyp=1) AND -- Im Voraus
((TRIM(TO_CHAR(m_Jahr,'9999'))||TRIM(TO_CHAR(m_Monat,'09'))>TRIM(TO_CHAR(m_LastZwi,'YYYYMM'))) OR
(TRIM(TO_CHAR(m_Jahr,'9999'))||TRIM(TO_CHAR(m_Monat,'09'))=TRIM(TO_CHAR(m_LastZwi,'YYYYMM'))) AND (loc_AnzZwi=0))
THEN m_Ausgabe:=true;
END IF;
IF (m_MonTyp=2) AND -- Nachhinein
(((TRIM(TO_CHAR(m_Jahr,'9999'))||TRIM(TO_CHAR(m_Monat,'09')) >TRIM(TO_CHAR(m_LastZwi,'YYYYMM')))) OR
((TRIM(TO_CHAR(m_Jahr,'9999'))||TRIM(TO_CHAR(m_Monat,'09')) =TRIM(TO_CHAR(m_LastZwi,'YYYYMM')))) AND (TO_CHAR(SYSDATE,'DD')>=TRIM(TO_CHAR(m_Delta,'09'))))
THEN m_Ausgabe:=true;
END IF;
loc_MvBEnde:=TO_CHAR(Rec_Auftrag.BENDE,'mmyyyy');
IF TO_NUMBER(SUBSTR(loc_MvBEnde,1,2))=m_Monat AND TO_NUMBER(SUBSTR(loc_MvBEnde,3,4))=m_Jahr
THEN my_BEnde:=Rec_Auftrag.BENDE;
IF Rec_Auftrag.LANGZEIT='W'
THEN my_BEUhr:='23:59';
ELSE my_BEUhr:=TO_CHAR(Rec_Auftrag.BEUHR,Loc_NLSTime);
END IF;
ELSE my_BEUhr:='23:59';
my_BEnde:=LAST_DAY(TO_DATE('01'||TRIM(TO_CHAR(m_Monat,'09'))||TRIM(TO_CHAR(m_Jahr,'9999'))||' '||my_BEUhr,'ddmmyyyy HH24:MI'));
END IF;
IF m_Ausgabe AND
p_STATUS='V' AND
NVL(Rec_Auftrag.DOZWIRECH,'W')='W' AND
(Rec_Auftrag.ZAHLUNGSART<>'2' OR NVL(m_CashTyp,0)=0)
THEN loc_Zahlungsart:=Rec_Auftrag.ZAHLUNGSART;
BEGIN
SELECT PDFRECHNUNG, INGIS, SAMMELRG
INTO loc_PdfRe, loc_Ingis, loc_SammelRg
FROM ADRESSEN
WHERE HDLNR =p_HDLNR
AND ART ='K'
AND NUMMER=rec_Auftrag.DEBITOR;
EXCEPTION WHEN OTHERS THEN loc_PdfRe:='F'; loc_Ingis:='F'; loc_SammelRg:='F';
END;
SELECT COUNT(RECHNR)
INTO loc_Cnt
FROM RECHADR
WHERE HDLNR =Rec_Auftrag.HDLNR
AND RECHNR =Rec_Auftrag.AUFTRNR
AND RECHART='M';
IF loc_Cnt=1
THEN BEGIN
SELECT DEBITOR
INTO loc_RgDebitor
FROM RECHADR
WHERE HDLNR =Rec_Auftrag.HDLNR
AND RECHNR =Rec_Auftrag.AUFTRNR
AND RECHART='M';
SELECT PDFRECHNUNG, INGIS, SAMMELRG
INTO loc_PdfRe, loc_Ingis, loc_SammelRg
FROM ADRESSEN
WHERE HDLNR =p_HDLNR
AND ART ='K'
AND NUMMER=loc_RgDebitor;
EXCEPTION WHEN OTHERS THEN loc_PdfRe:='F'; loc_Ingis:='F'; loc_SammelRg:='F';
END;
END IF;
IF loc_SammelRg='W' -- Stammdaten nach MV auf SR ge�ert
THEN loc_ZahlungsArt:='50';
loc_PdfRe :='F';
END IF;
loc_Which:='RECH';
IF loc_PdfRe='W'
THEN loc_Which:='PDF';
END IF;
IF loc_Ingis='W'
THEN loc_Which:='INGIS';
END IF;
-- IF Rec_Auftrag.ZAHLUNGSART='50'
IF loc_ZahlungsArt IN ('50','51')
THEN loc_Which:='LF';
END IF;
-- ggf. angefangene Daten entfernen, damit die nicht versehentlich benutzt werden
DELETE FROM RECHADR
WHERE HDLNR =p_HDLNR
AND RECHNR =NVL(p_USERNR,0) * -1.0;
DELETE FROM RECHZUBPOS
WHERE HDLNR =p_HDLNR
AND RECHNR =NVL(p_USERNR,0) * -1.0;
-- INSERT INTO ERRORLOG
-- (HDLNR,USERNR,DATUM,PROGNAME,FEHLER)
-- VALUES
-- (p_HDLNR,p_USERNR,SYSTIMESTAMP,'_test1','in cursor');
COMMIT;
ErfZwi(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_KENNUNG => Rec_Auftrag.KENNUNG,
p_AUFTRNR => Rec_Auftrag.AUFTRNR,
p_OP => '0',
p_ZAHLUNGSART=> loc_ZahlungsArt,
p_BENDE => TO_CHAR(my_BEnde,loc_NLSDate),
p_BENDEUHR => my_BEUhr,
p_BERKM => '0',
p_DOAUTO => loc_Which,
p_BEMERKUNG1 => Rec_Auftrag.BEMERKUNG21,
p_BEMERKUNG2 => Rec_Auftrag.BEMERKUNG22,
p_BEMERKUNG3 => Rec_Auftrag.BEMERKUNG23,
p_BEMERKUNG4 => Rec_Auftrag.BEMERKUNG24,
p_BEMERKUNG5 => Rec_Auftrag.BEMERKUNG25,
p_BEMERKUNG6 => Rec_Auftrag.BEMERKUNG26);
END IF;
IF m_Ausgabe AND
NVL(p_STATUS,'-')<>'V'
THEN IF m_AnzZwi=0
THEN my_BBeginn:=TO_DATE(TO_CHAR(Rec_Auftrag.BBEGINN,'ddmmyyyy')||TO_CHAR(Rec_Auftrag.BBUHR,'HH24MI'),'ddmmyyyyHH24MI');
ELSE my_BBeginn:=m_LastZwi+(1/1440);
END IF;
AUFTRTOOLS.DoRechnen(p_BBEGINN =>my_BBeginn,
p_BBUHR =>TO_CHAR(my_BBeginn,Loc_NLSTime),
p_BENDE =>my_BEnde,
p_BEUHR =>TO_CHAR(my_BEnde,Loc_NLSTime),
p_MEHRFACH =>Rec_Auftrag.MEHRFACH,
p_EINHEIT1 =>Rec_Auftrag.EINHEIT1,
p_EINHEIT2 =>Rec_Auftrag.EINHEIT2,
p_FAKTOR1 =>Rec_Auftrag.FAKTOR1,
p_FAKTOR2 =>Rec_Auftrag.FAKTOR2,
p_INCLKM1 =>Rec_Auftrag.INCLKM1,
p_ANKM =>0,
p_ABKM =>0,
p_INCLANZKM1 =>0,
p_INCLANZKM2 =>0,
p_KULANZ =>Rec_Auftrag.KULANZ,
p_LANGZEIT =>Rec_Auftrag.LANGZEIT,
p_ZWIRECH =>loc_AnzZwi+1, -- ist 1, wenn erste ZwiRech bei Langzeit
p_ABRTYP =>m_AbrTyp,
p_BERKM =>m_BerKm,
p_ANZSTD =>m_AnzStd,
p_ECHTETAGE =>m_EchteTage,
p_DAUER =>m_Dauer,
p_REST =>m_Rest,
p_FREIKM =>m_FreiKm,
p_FREIKM1 =>m_FreiKm1);
m_PREIS1 :=Rec_Auftrag.PREIS1;
m_FAKTOR1 :=Rec_Auftrag.FAKTOR1;
m_EINHEIT1 :=Rec_Auftrag.EINHEIT1;
m_INCLANZKM1 :=Rec_Auftrag.INCLANZKM1;
m_DMKM :=Rec_Auftrag.DMKM;
m_DMCDW :=Rec_Auftrag.DMCDW;
m_DMPAI :=Rec_Auftrag.DMPAI;
m_PREIS2 :=Rec_Auftrag.PREIS2;
m_FAKTOR2 :=Rec_Auftrag.FAKTOR2;
m_EINHEIT2 :=Rec_Auftrag.EINHEIT2;
m_INCLANZKM2 :=Rec_Auftrag.INCLANZKM2;
m_DMCDW2 :=Rec_Auftrag.DMCDW2;
m_DMPAI2 :=Rec_Auftrag.DMPAI2;
IF Rec_Auftrag.LANGZEIT='W' AND
ROUND(Rec_Auftrag.MENDE-Rec_Auftrag.MBEGINN)>=30 AND
Rec_Auftrag.EINHEIT1='3' AND -- Monatsrechnung
loc_AnzZwi=0 -- erste Rg, Anteilig auf Monat
THEN m_Preis2 :=m_Preis1 / 30;
m_DMCDW2 :=m_DMCDW / 30;
m_DMPAI2 :=m_DMPAI / 30;
m_EINHEIT2:=0;
m_FAKTOR2 :=1;
END IF;
m_VermUmsatz := Rec_Auftrag.GRUNDBETRAG +
(m_Dauer * m_PREIS1) + (m_Rest * m_PREIS2);
m_KmUmsatz := m_BerKm * m_DMKM;
IF Rec_Auftrag.CDW='W'
THEN m_CDWUmsatz := (m_Dauer * m_DMCDW) + (m_Rest * m_DMCDW2);
ELSE m_CDWUmsatz := 0.0;
END IF;
IF Rec_Auftrag.PAI='W'
THEN m_PAIUmsatz := (m_Dauer * m_DMPAI) + (m_Rest * m_DMPAI2);
ELSE m_PAIUmsatz := 0.0;
END IF;
CASE NVL(Rec_Auftrag.RABATTZL,0)
WHEN 0 THEN m_VermUmsatz:=m_VermUmsatz - (m_VermUmsatz / 100 * Rec_Auftrag.RABATT);
m_KmUmsatz :=m_KmUmsatz - (m_KmUmsatz / 100 * Rec_Auftrag.RABATT);
WHEN 1 THEN m_CDWUmsatz :=m_CDWUmsatz - (m_CDWUmsatz / 100 * Rec_Auftrag.RABATT);
m_PAIUmsatz :=m_PAIUmsatz - (m_PAIUmsatz / 100 * Rec_Auftrag.RABATT);
ELSE NULL;
END CASE;
IF (Rec_Auftrag.ZAHLUNGSART='2') AND
(NVL(m_CashTyp,0)>0)
THEN loc_IsSelected:='F';
ELSE loc_IsSelected:=NVL(Rec_Auftrag.DOZWIRECH,'W');
END IF;
IF p_SELECTALL IN ('W','F')
THEN IF (Rec_Auftrag.ZAHLUNGSART='2') AND
(NVL(m_CashTyp,0)>0)
THEN loc_IsSelected:='F';
ELSE UPDATE AUFTRAG
SET DOZWIRECH=SUBSTR(p_SELECTALL,1,1)
WHERE HDLNR=p_HDLNR
AND KENNUNG='A'
AND AUFTRNR=Rec_Auftrag.AUFTRNR;
COMMIT;
loc_IsSelected:=p_SELECTALL;
END IF;
END IF;
Xtool.XMLStart('Auftrag');
Xtool.htx('HDLNR',p_HDLNR);
Xtool.htx('FILNR',p_FILNR);
Xtool.htx('USERNR',p_USERNR);
Xtool.htx('KENNUNG',rec_auftrag.KENNUNG);
Xtool.htx('AUFTRNR',rec_auftrag.AUFTRNR);
Xtool.htx('DEBITOR',rec_auftrag.DEBITOR);
Xtool.htx('NAME1',rec_auftrag.NAME1);
Xtool.htx('NAME2',rec_auftrag.NAME2);
Xtool.htx('NAME3',rec_auftrag.NAME3);
IF Rec_Auftrag.PRIVAT='P'
THEN Xtool.htx('NAMEGES',rec_auftrag.NAME2);
ELSE Xtool.htx('NAMEGES',rec_auftrag.NAME1);
END IF;
Xtool.htx('KENNZ',rec_auftrag.KENNZ);
Xtool.htx('MBEGINN',TO_CHAR(rec_auftrag.MBEGINN,Loc_NLSDate));
Xtool.htx('MENDE',TO_CHAR(rec_auftrag.MENDE,Loc_NLSDate));
Xtool.htx('MBEGINNNUM',TO_CHAR(rec_auftrag.MBEGINN,'yyyymmdd'));
Xtool.htx('MENDENUM',TO_CHAR(rec_auftrag.MENDE,'yyyymmdd'));
Xtool.htx('ANZZWI',TO_CHAR(m_AnzZwi));
IF m_AnzZwi=0
THEN Xtool.htx('DATUMZWI','');
Xtool.htx('DATUMZWINUM','');
ELSE Xtool.htx('DATUMZWI',TO_CHAR(m_LastZwi,Loc_NLSDate));
Xtool.htx('DATUMZWINUM',TO_CHAR(m_LastZwi,'yyyymmdd'));
END IF;
Xtool.htx('SUMZWI',TO_CHAR(m_SumZwi,'999G990D99',Loc_NLSWert));
Xtool.htx('SUMZWINUM',TO_CHAR(round(m_SumZwi),'999990',Loc_NLSWert));
Xtool.htx('ABRTYP',TO_CHAR(m_MonTyp));
Xtool.htx('ROBKENNZ',rec_auftrag.ROBKENNZ);
Xtool.htx('DOZWIRECH',loc_IsSelected);
Xtool.htx('SUMMV',TO_CHAR(m_VermUmsatz+
m_KmUmsatz+
m_CDWUmsatz+
m_PAIUmsatz,'999G999D99',Loc_NLSWert));
Xtool.htx('SUMMVNUM',TO_CHAR(ROUND(m_VermUmsatz+
m_KmUmsatz+
m_CDWUmsatz+
m_PAIUmsatz),'999990',Loc_NLSWert));
IF (TRIM(TO_CHAR(m_Jahr,'9999'))||TRIM(TO_CHAR(m_Monat,'09'))=TO_CHAR(Rec_Auftrag.MENDE,'YYYYMM'))
--IF (TO_CHAR(SYSDATE,'YYYYMM')=TO_CHAR(Rec_Auftrag.MENDE,'YYYYMM'))
THEN Xtool.htx('AUSLAUF','W');
ELSE Xtool.htx('AUSLAUF','F');
END IF;
Xtool.XMLEnd('Auftrag');
IF loc_IsSelected='F'
THEN m_SelectAll:='F';
END IF;
END IF; -- m_Ausgabe
END LOOP;
END;
BEGIN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin;
RETURN;
END IF;
SELECT VZ, HAENDLER, NAME_1, NAME_2, STRASSE, HAUSNR, STRASSE2, PLZ, ORT, LANGZEITDELTA, CASHTYP, FREI_EURO
INTO m_Vz, m_Haendler, m_NAME1, m_NAME2, m_STR, m_HNR, m_STR2, m_PLZ, m_ORT, m_Delta , m_CashTyp, m_TMLaeuft
FROM FIRMA
WHERE HDLNR=p_HDLNR;
IF m_TMLaeuft='W'
THEN XTool.Meldung (p_HDLNR => p_HDLNR,
p_Meldung=> 'Terminabrechnung l�t derzeit, bitte warten');
RETURN;
END IF;
IF m_Monat=0
THEN m_Monat:=TO_NUMBER(TO_CHAR(SYSDATE,'MM'));
END IF;
IF m_Jahr=0
THEN m_Jahr:=TO_NUMBER(TO_CHAR(SYSDATE,'YYYY'));
END IF;
IF m_MeDatum IS NULL
THEN m_MeDatum:=TO_CHAR(SYSDATE,Loc_NLSDate);
END IF;
IF p_AUFTRNR>0
THEN BEGIN
SELECT DOZWIRECH, ZAHLUNGSART
INTO m_DoZwiRech, m_Zahlungsart
FROM AUFTRAG
WHERE HDLNR =p_HDLNR
AND KENNUNG='A'
AND AUFTRNR=p_AUFTRNR;
EXCEPTION WHEN OTHERS THEN m_DoZwiRech:='-';
END;
IF m_DoZwiRech='F'
THEN m_DoZwiRech:='W';
ELSE m_DoZwiRech:='F';
END IF;
IF (m_Zahlungsart='2') AND
(NVL(m_CashTyp,0)>0)
THEN m_DoZwiRech:='F';
END IF;
UPDATE AUFTRAG
SET DOZWIRECH=m_DoZwiRech
WHERE HDLNR=p_HDLNR
AND KENNUNG='A'
AND AUFTRNR=p_AUFTRNR;
COMMIT;
END IF;
DoAusgabe;
IF p_STATUS='V'
THEN SELECT TERMINLFD
INTO m_TerminLfd
FROM FIRMA
WHERE HDLNR=p_HDLNR
FOR UPDATE;
IF NVL(m_TerminLfd,0)=0
THEN UPDATE FIRMA
SET TERMINLFD=2,
FREI_EURO=NULL
WHERE HDLNR=p_HDLNR;
m_TerminLfd:=1;
ELSE UPDATE FIRMA
SET TERMINLFD=TERMINLFD+1,
FREI_EURO=NULL
WHERE HDLNR=p_HDLNR;
END IF;
UPDATE PDFSAMMEL
SET OK ='W',
TERMINNR=m_TerminLfd
WHERE HDLNR =p_HDLNR
AND USERNR =p_USERNR
AND TERMINNR IS NULL;
UPDATE MAILJOB
SET OK='W'
WHERE HDLNR =p_HDLNR
AND USERNR=p_USERNR;
UPDATE INGISJOB
SET OK='W'
WHERE HDLNR =p_HDLNR
AND USERNR=p_USERNR;
COMMIT;
INFOS.TagesInfo(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR);
ELSE Xtool.XMLStart('Navigator');
Xtool.htx('PHDLNR',p_HDLNR);
Xtool.htx('PFILNR',p_FILNR);
Xtool.htx('PUSERNR',p_USERNR);
Xtool.htx('PMONAT',TO_CHAR(m_Monat));
Xtool.htx('PJAHR',TO_CHAR(m_Jahr));
Xtool.htx('PSUCHFELD',p_SUCHFELD);
Xtool.htx('PSUCHTYP',p_SUCHTYP);
Xtool.htx('PSUCHINHALT',p_SUCHINHALT);
Xtool.htx('PMETYP',p_METYP);
IF p_METYP IS NULL
THEN Xtool.htx('PMEDATUM','');
ELSE Xtool.htx('PMEDATUM',p_MEDATUM);
END IF;
Xtool.htx('PSELECTALL',m_SelectAll);
Xtool.htx('PSORT',NVL(p_SORT,1));
Xtool.htx('PDESC',NVL(p_DESC,0));
Xtool.htx('FIRMA1','(' || to_char(m_Vz,'000',Loc_NLSWert)||to_char(m_Haendler,'00000',Loc_NLSWert)|| ') ' ||m_NAME1);
Xtool.htx('FIRMA2',m_NAME2);
Xtool.htx('STR',m_STR);
Xtool.htx('ORT',m_PLZ || ' ' || m_ORT);
INFOS.ShowSuchbegriffe(p_HDLNR,p_SUCHFELD,'A',TRUE,TRUE);
Xtool.htx('SUCHTERMIN',APP_CONST.c_Func_SuchTermin);
Xtool.XMLEnd('Navigator');
Xtool.XMLEnd('Auftraege');
END IF;
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END;
/******************************************************************************
NAME: Rechnungen.FreieRechnung
PURPOSE: Sicherheitscall Freie rechnung
Date: 18.09.2013/28.06.2016
*******************************************************************************/
PROCEDURE FreieRechnung(p_HDLNR VARCHAR2,
p_FILNR VARCHAR2,
p_USERNR VARCHAR2,
p_FUNC VARCHAR2 DEFAULT '9',
p_FAHRGESTELL VARCHAR2 DEFAULT NULL,
p_ZULASSUNG DATE DEFAULT NULL) IS
my_ProgName VARCHAR2(20) :='FreieRechnung';
my_xsl VARCHAR2(20) :='mietgula';
my_Debitor INTEGER :=NULL;
my_Zubehoer INTEGER :=NULL;
my_RestWert FLOAT;
my_Bez1 VARCHAR2(40);
my_Bez2 VARCHAR2(40);
my_Bez3 VARCHAR2(40);
my_Bez4 VARCHAR2(40);
my_Bez5 VARCHAR2(40);
my_Bez6 VARCHAR2(40);
fz_EKEuro FLOAT;
fz_Nachlass FLOAT;
fz_Praemie FLOAT;
fz_Einbauten FLOAT;
fz_Ueberf FLOAT;
fz_RueckProz FLOAT;
fz_AbschrProz FLOAT;
fz_Laufzeit INTEGER;
Loc_NLSDate VARCHAR2(10):=Xtool.GetNLS(p_HDLNR,1);
FUNCTION CalcFz RETURN FLOAT IS
m_Nachlass FLOAT;
m_GesamtEin FLOAT;
m_RueckDM FLOAT;
m_AbschrDM FLOAT;
BEGIN
m_Nachlass :=fz_EKEURO / 100 * fz_NACHLASS;
m_GesamtEin :=fz_EKEURO - m_Nachlass -
fz_PRAEMIE +
fz_EINBAUTEN +
fz_UEBERF;
m_RueckDM :=fz_EKEURO / 100 * fz_RUECKPROZ;
m_AbschrDM :=m_GesamtEin / 100 * fz_ABSCHRPROZ * fz_LAUFZEIT;
RETURN m_GesamtEin - m_AbschrDM - m_RueckDM;
END;
BEGIN
IF NOT LOGIN.CheckCookie(p_HDLNR => p_HDLNR,
p_USER => p_USERNR)
THEN Login.FirstLogin(p_HDLNR => p_HDLNR);
RETURN;
END IF;
DELETE FROM RECHNUNG
WHERE HDLNR=p_HDLNR AND
RECHNR='-' || p_USERNR;
DELETE FROM RECHADR
WHERE HDLNR=p_HDLNR AND
RECHNR='-' || p_USERNR;
DELETE FROM RECHZUB
WHERE HDLNR=p_HDLNR AND
RECHNR='-' || p_USERNR;
IF p_FAHRGESTELL IS NOT NULL
THEN SELECT FREI-176,
EKEURO, NACHLASS, PRAEMIE, EINBAUTEN, UEBERF, RUECKPROZ, ABSCHRPROZ, LAUFZEIT,
SUBSTR(BEZEICHNUNG,1,40),FAHRGESTELL,TO_CHAR(ERSTZUL,Loc_NLSDATE), FARBE, TO_CHAR(KMSTAND)
INTO my_Debitor,
fz_EKEuro, fz_Nachlass, fz_Praemie, fz_Einbauten, fz_Ueberf, fz_RueckProz, fz_AbschrProz, fz_Laufzeit,
my_Bez1, my_Bez2, my_Bez3, my_Bez4, my_Bez5
FROM FAHRZEUG
WHERE HDLNR =p_HDLNR
AND FAHRGESTELL=p_FAHRGESTELL
AND ZULASSUNG =p_ZULASSUNG;
SELECT FZGVKZUBEHOER
INTO my_Zubehoer
FROM FIRMA
WHERE HDLNR=p_HDLNR;
my_Bez2:=SUBSTR(XTool.Outmeldung(p_HDLNR,my_XSL,-1949,NULL),1,12)||' '||my_Bez2;
my_Bez3:=XTool.Outmeldung(p_HDLNR,my_XSL,-1948,NULL)||' '||my_Bez3;
my_Bez4:=XTool.Outmeldung(p_HDLNR,my_XSL,-1947,NULL)||' '||my_Bez4;
my_Bez5:=XTool.Outmeldung(p_HDLNR,my_XSL,-1946,NULL)||' '||my_Bez5;
END IF;
INSERT INTO RECHNUNG
(HDLNR,FILNR,RECHNR, GUTLAST, ZWIRECH, RECHART, RDATUM,
BEMERKUNG1,BEMERKUNG2,BEMERKUNG3,BEMERKUNG4,BEMERKUNG5,BEMERKUNG6)
VALUES (p_HDLNR,p_FILNR,'-'||p_USERNR, 'W', 'F', 'R', XTool.GetSysDate(p_HDLNR),
my_Bez1,my_Bez2,my_Bez3,my_Bez4,my_Bez5,my_Bez6);
COMMIT;
IF NVL(my_Debitor,0)>0
THEN IF NVL(my_Zubehoer,0)>0
THEN AUFTRAEGE.ZubInAuftr(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AUFART => 'FZG',
p_KENNUNG=> NULL,
p_AUFTRNR=> NULL,
p_FUNC => NULL,
p_NR => TO_CHAR(my_Zubehoer));
my_RestWert:=CalcFz;
UPDATE RECHZUB
SET PREIS = my_RestWert,
PAUSCHAL= 'W'
WHERE HDLNR =p_HDLNR
AND RECHNR='-'||p_USERNR;
END IF;
KdInRechn(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_USERNR => p_USERNR,
p_AUFART => NULL,
p_KENNUNG => NULL,
p_AUFTRNR => NULL,
p_FUNC => p_FUNC,
p_ART => 'K',
p_NUMMER => TO_CHAR(my_Debitor));
ELSE ShowRech(p_HDLNR => p_HDLNR,
p_FILNR => p_FILNR,
p_AHDLNR => p_HDLNR,
p_AFILNR => p_FILNR,
p_RECHNR => '-'||p_USERNR,
p_RECHART => 'R',
p_USERNR => p_USERNR,
p_XSL => my_XSL,
p_AUFART => NULL,
p_FUNC => p_FUNC, --9= Lastschrift
p_ART => NULL);
END IF;
EXCEPTION
WHEN OTHERS THEN
XTool.DoErrorLog(p_HDLNR,p_USERNR,my_ProgName,SQLERRM || ' ' ||dbms_utility.format_error_backtrace(),Xtool.OutMeldung(p_HDLNR,'generell',2,my_ProgName));
END;
END Rechnungen;