Hallo,
wer hat Erfahrung mit den Industriezahlungsbedingungen?
Ich habe in der Maske Zahlungsbedingungen folgende Einträge:
Zahlungs-KZ : 25FM
Bez. am 25. des der Lieferung folgenden Monates
Zahlungsziel: 0
Fenster Industriezahlungsbedingungen
bei RG bis zum Tag im Monat: 31
% Skonto: 0 %
bis zum Tag des Folgemonat: 25
Folgemonat: 1
Die Berechnung des Fälligkeitsdatums ist immer gleich den Rechnungsdatum.
Sind hier noch zusätzliche Eintragungen möglich.
Bsp. RG-Datum 2.10.2008 z.Z Fälligkeit 2.10.2008
Richtig wäre aber 25.11.2008
Frage: Kann zusätzlich die Bedingung erweiteret werden " bei Lieferung bis zum Tag im Monat:"
Danke
Industrie-Zahlungsbedingung
Moderator: SYNERPY
-
TE999
- Beiträge: 126
- Registriert: Sa Jul 28, 2007 8:49 pm
- Wohnort: Gera
-
TE999
- Beiträge: 126
- Registriert: Sa Jul 28, 2007 8:49 pm
- Wohnort: Gera
-
TE999
- Beiträge: 126
- Registriert: Sa Jul 28, 2007 8:49 pm
- Wohnort: Gera
Hallo,
habe heute in der Hilfe für die Industrie-Zahlungsbedingung gelesen, das diese noch nicht implementiert sind.
Hat jemand das schon einmal realisiert? Wir würden das gern in die aktuelle Version einpflegen.
An welcher Stelle und in welcher Prozedur wird die Fälligkeit berechnet?
Danke
Datenbank 2009-A0.1
habe heute in der Hilfe für die Industrie-Zahlungsbedingung gelesen, das diese noch nicht implementiert sind.
Hat jemand das schon einmal realisiert? Wir würden das gern in die aktuelle Version einpflegen.
An welcher Stelle und in welcher Prozedur wird die Fälligkeit berechnet?
Danke
Datenbank 2009-A0.1
-
NPLADMIN
- Beiträge: 163
- Registriert: Di Okt 07, 2008 7:54 am
- Wohnort: Oxbüll / Wees
Hallo zusammen,
da ich auch in der Datenbank "2010-B09" noch keine Änderung für die Zahlungsbedingungen finden konnte
und aus gegebenen Anlass gebraucht wurde habe ich eine bis jetzt funktionierende Lösung entwickelt.
In BZAHBE unter Bezeichnung "Zahlung @DD@ @S@ ! 15. Folgemonat 3%" ergibt:
Bestellung: "Zahlung bis zum 15. des Folgemonats mit 3% Skonto"
Auftrag: "Zahlung bis zum 15. des Folgemonats mit 3% Skonto"
Rechnung: Bei Zahlbarab-Datum= xx.02.2010 und Gesamtbetrag= 100,- Euro
"Zahlung bis zum 15.03.2010 mit 3.00% Skonto (3.00) = 97.00 EUR"
Dazu habe ich die Prozedur "P_REP_BRRC_ZAHBE" wie folgt überarbeitet:
und die Prozedur "P_REP_ZAHBE" vollständig überarbeitet:
!!!ACHTUNG!! Ist noch nicht auf die Version 2010 abgestimmt!!!
Für Verbesserungsvorschläge bin ich gerne offen.
da ich auch in der Datenbank "2010-B09" noch keine Änderung für die Zahlungsbedingungen finden konnte
und aus gegebenen Anlass gebraucht wurde habe ich eine bis jetzt funktionierende Lösung entwickelt.
In BZAHBE unter Bezeichnung "Zahlung @DD@ @S@ ! 15. Folgemonat 3%" ergibt:
Bestellung: "Zahlung bis zum 15. des Folgemonats mit 3% Skonto"
Auftrag: "Zahlung bis zum 15. des Folgemonats mit 3% Skonto"
Rechnung: Bei Zahlbarab-Datum= xx.02.2010 und Gesamtbetrag= 100,- Euro
"Zahlung bis zum 15.03.2010 mit 3.00% Skonto (3.00) = 97.00 EUR"
Dazu habe ich die Prozedur "P_REP_BRRC_ZAHBE" wie folgt überarbeitet:
Code: Alles auswählen
SET TERM ^ ;
create or alter procedure P_REP_BRRC_ZAHBE (
DATUM date,
BZAHBE_ID integer)
returns (
ZTERMIN date,
PROZENT numeric(15,2),
RSKONTO numeric(15,2),
ZAHLZIEL integer,
ART char(1),
MONATANZAHL integer)
as
declare variable TAG integer;
declare variable MONAT integer;
declare variable DIFF integer;
declare variable RFOLGEMON integer;
declare variable RF_TAG integer;
declare variable RTAG integer;
begin
/* LETZTER STAND: 06.06.2004 13:27:16 GK */
/* Protokollieren, dass Aktion hier durchgelaufen ist */
IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('P_REP_BRRC_ZAHBEH');
IF ((DATUM IS NULL) OR (BZAHBE_ID IS NULL)) THEN EXIT;
/* Zahlungsbedingung auslesen */
SELECT RFOLGEMON, RF_TAG, RTAG, PROZENT, RSKONTO, ZAHLZIEL
FROM BZAHBE
WHERE ID = :BZAHBE_ID
INTO :RFOLGEMON, :RF_TAG, :RTAG, :PROZENT, :RSKONTO, :ZAHLZIEL;
IF ((RF_TAG > 0) AND (RTAG > 0)) THEN
BEGIN
/* GK 06.06.2005
wenn Rechnungstag größer als definierter Tag in Zahlbed., dann
noch einen Monat hinzufügen */
IF (RTAG < EXTRACT(DAY FROM DATUM)) THEN
RFOLGEMON = RFOLGEMON +1;
ART = 'I'; /* Industriezahlungsbedingung */
ZAHLZIEL = :RF_TAG; /*Für Andruck der Tage - 09.02.2010 KTS*/
MONATANZAHL = :RFOLGEMON; /*Für richtigen Monatsandruck in Belegen - 09.02.2010 KTS*/
ZTERMIN = CAST( F_ADDMONTH(DATUM, RFOLGEMON) AS DATE); /* Monate aufaddieren */
TAG = F_DAYOFMONTH(ZTERMIN); /* Tag und Monat merken */
MONAT = F_MONTH(ZTERMIN);
DIFF = RF_TAG - TAG; /* soviele Tage aufaddieren */
ZTERMIN = ZTERMIN + DIFF;
/* falls er in nächsten Monat springt z.B. RF_TAG=31 im Februar */
/* kann im Dezember nicht passieren */
IF (MONAT < F_MONTH(ZTERMIN)) THEN
ZTERMIN = ZTERMIN - F_DAYOFMONTH(ZTERMIN);
ZAHLZIEL = ZTERMIN - DATUM;
PROZENT = :RSKONTO;
END
ELSE
BEGIN
ZTERMIN = DATUM + ZAHLZIEL;
END
SUSPEND;
END^
SET TERM ; ^
DESCRIBE PROCEDURE P_REP_BRRC_ZAHBE
'Ausdruck: Zahlungstermin in Rechnungsausdruck bestimmen';
GRANT INSERT ON A_WASMACHTIB TO PROCEDURE P_REP_BRRC_ZAHBE;
GRANT SELECT ON BZAHBE TO PROCEDURE P_REP_BRRC_ZAHBE;
GRANT EXECUTE ON PROCEDURE P_REP_BRRC_ZAHBE TO PROCEDURE P_REP_BRRC;
GRANT EXECUTE ON PROCEDURE P_REP_BRRC_ZAHBE TO PROCEDURE P_REP_ZAHBE;
GRANT EXECUTE ON PROCEDURE P_REP_BRRC_ZAHBE TO "PUBLIC";
GRANT EXECUTE ON PROCEDURE P_REP_BRRC_ZAHBE TO SYSDBA;
und die Prozedur "P_REP_ZAHBE" vollständig überarbeitet:
Code: Alles auswählen
SET TERM ^ ;
create or alter procedure P_REP_ZAHBE (
ID integer,
WOHER varchar(10))
returns (
MYZAHLBEDINGUNG varchar(1000),
WELCHE smallint,
ZAHLZIEL integer)
as
declare variable NSPRACHE integer;
declare variable BZAHBE_ID1 integer;
declare variable BZAHBE_ID2 integer;
declare variable BZAHBE_ID3 integer;
declare variable BZAHBE_ID4 integer;
declare variable MONATANZAHL integer; /* Für Industriezahlbed. */
declare variable RF_TAG integer; /* Für Industriezahlbed. */
declare variable BEZ varchar(200);
declare variable WAER varchar(15);
declare variable MYDATUM date;
declare variable KURSDF numeric(15,6);
declare variable MYDAYS varchar(20);
declare variable MYDAY varchar(20);
declare variable MIT varchar(20);
declare variable SKONTO varchar(20);
declare variable BISZUM varchar(20); /* Neu 01.02.2010 - KTS */
declare variable INNERHALB varchar(20); /* Neu 01.02.2010 - KTS */
declare variable REINNETTO varchar(20);
declare variable MYDAYS_RETURN varchar(254);
declare variable MYDAY_RETURN varchar(254);
declare variable MIT_RETURN varchar(254);
declare variable SKONTO_RETURN varchar(254);
declare variable BISZUM_RETURN varchar(254); /* Neu 01.02.2010 - KTS */
declare variable INNERHALB_RETURN varchar(254);
declare variable REINNETTO_RETURN varchar(254); /* Neu 01.02.2010 - KTS */
declare variable MYSKONTO numeric(15,2);
declare variable MYSKONTODIFF numeric(15,2); /* Neu 01.02.2010 - KTS */
declare variable MYSKONTOBETRAG numeric(15,2);
declare variable GESAMT numeric(15,2);
declare variable MYBEZ varchar(200);
declare variable KOMMENTAR varchar(100);
declare variable POS1 integer;
declare variable ENDE integer;
declare variable SYN_KUNDE varchar(40);
declare variable BETRAG_HW numeric(15,2);
declare variable NMWST_HW numeric(15,2);
BEGIN
/* Letzter Stand 14.07.2009 10:32:48 MG */
/* Erster Stand 03.08.2008 10:08:03 MG */
/* Protokollieren, dass Aktion hier durchgelaufen ist */
IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('P_REP_ZAHBE');
/* Zahlungsbedingungen im Ausdruck übersetzen */
/* Bezeichnung aus Zahlungsbedingungen wird zurückgegeben */
/* mit @D@ -> wird das Zahlziel eingebaut */
/* mit @S@ -> wird das Skonto eingebaut */
/* mit @DD@ -> wird das Zahlziel (Datum) eingebaut */
/* WICHTIG: Die beiden Datumswerte müssen jeweils in den Ausdrucken in das
entsprechende Format umgewandelt werden */
MyZahlbedingung = '';
KURSDF = 1;
-- Kundenspezifisch
SELECT F_LRTRIM(A.SYNERPY_KUNR)
FROM BFIRMA A
INTO :SYN_KUNDE;
IF (SYN_KUNDE IS NULL) THEN SYN_KUNDE = '';
IF (ID IS NULL) THEN EXIT;
ELSE
BEGIN
IF (WOHER = 'BRRC') THEN
-- Gesamt-GESAMT
SELECT (X.GESAMT + X.MWST),
X.BZAHBE_ID_ZAHLBED1K, X.BZAHBE_ID_ZAHLBED2K,
X.BZAHBE_ID_ZAHLBED3K, X.BZAHBE_ID_ZAHLBED4K,
Z.A_SPRACHE_ID, X.KURSDF, W.MASKENKEY, X.ZAHLBARAB
FROM BRRC X
LEFT OUTER JOIN BADR Y ON X.BADR_ID_RADRCODE = Y.ID
LEFT OUTER JOIN BSPRA Z ON Y.BSPRA_ID_DRUSPRA = Z.ID
LEFT OUTER JOIN BWAER W ON X.BWAER_ID_WAEHRUNGK = W.ID
WHERE X.ID = :ID AND
NULLIF('G', X.GUTSCHRART) = 'G' -- keine Zahlungsbedingung auf Gutschrift
INTO :GESAMT, :BZAHBE_ID1, :BZAHBE_ID2, :BZAHBE_ID3, :BZAHBE_ID4, :NSPRACHE,
:KURSDF, :WAER, :MYDATUM;
ELSE IF (WOHER = 'BAUF') THEN
BEGIN
FOR SELECT A.BETRAG_HW
FROM P_REP_BAUF_MWST(:ID) A
INTO :BETRAG_HW
DO
nMWST_HW = nMWST_HW + BETRAG_HW;
SELECT A.BZAHBE_ID_ZAHLBED1K, A.BZAHBE_ID_ZAHLBED2K,
A.BZAHBE_ID_ZAHLBED3K, A.BZAHBE_ID_ZAHLBED4K, A.KLTERMIN,
(A.GESAMT + :nMWST_HW),
D.A_SPRACHE_ID
FROM BAUF A
LEFT OUTER JOIN BKUNDE B ON A.BKUNDE_ID_KUNR = B.ID
LEFT OUTER JOIN BADR C ON B.BADR_ID_ADRNR = C.ID
LEFT OUTER JOIN BSPRA D ON C.BSPRA_ID_DRUSPRA = D.ID
LEFT OUTER JOIN BWAER E ON A.BWAER_ID_WAEHRUNGK = E.ID
WHERE A.ID = :ID
INTO :BZAHBE_ID1, :BZAHBE_ID2, :BZAHBE_ID3, :BZAHBE_ID4,
:MyDATUM, :GESAMT, :NSPRACHE;
END
ELSE IF (WOHER = 'BBES') THEN
SELECT A.BZAHBE_ID_ZAHL1K, A.BZAHBE_ID_ZAHL2K, A.BZAHBE_ID_ZAHL3K,
A.BZAHBE_ID_ZAHL4K, A.BESTDATUM, A.GESAMT, D.A_SPRACHE_ID
FROM BBES A
LEFT OUTER JOIN BLIEF B ON A.BLIEF_ID_LIEFNR = B.ID
LEFT OUTER JOIN BADR C ON B.BADR_ID_ADRNR = C.ID
LEFT OUTER JOIN BSPRA D ON C.BSPRA_ID_DRUSPRA = D.ID
WHERE A.ID = :ID
INTO :BZAHBE_ID1, :BZAHBE_ID2, :BZAHBE_ID3, :BZAHBE_ID4,
:MyDATUM, :GESAMT, :NSPRACHE;
IF (MYDATUM IS NULL) THEN
MYDATUM = CURRENT_DATE;
-- Sprach_ID
IF (NSPRACHE IS NULL) THEN
BEGIN
SELECT A_SPRACHE_ID
FROM A_USER
WHERE MASKENKEY = USER
INTO :NSPRACHE;
IF (NSPRACHE IS NULL) THEN NSPRACHE = 3;
END
-- Übersetzungen
-- Tagen
EXECUTE PROCEDURE P_SMREPORTLABEL(:NSPRACHE,'LB_Tagen','Tagen')
RETURNING_VALUES(:MyDays_return);
-- Tag
EXECUTE PROCEDURE P_SMREPORTLABEL(:NSPRACHE,'LB_Tag','Tag')
RETURNING_VALUES(:MyDay_return);
-- mit
EXECUTE PROCEDURE P_SMREPORTLABEL(:NSPRACHE,'LB_Mit','mit')
RETURNING_VALUES(:Mit_return);
-- Skonto
EXECUTE PROCEDURE P_SMREPORTLABEL(:NSPRACHE,'LB_Skonto','Skonto')
RETURNING_VALUES(:SKONTO_return);
-- bis zum
EXECUTE PROCEDURE P_SMREPORTLABEL(:NSPRACHE,'LB_BISZUM','bis zum')
RETURNING_VALUES(:BISZUM_return);
-- innerhalb
EXECUTE PROCEDURE P_SMREPORTLABEL(:NSPRACHE,'LB_INNERHALB','innerhalb')
RETURNING_VALUES(:INNERHALB_return);
-- rein netto
EXECUTE PROCEDURE P_SMREPORTLABEL(:NSPRACHE,'REIN NETTO','rein netto')
RETURNING_VALUES(:REINNETTO_return);
MyDays = F_LEFT(MyDays_return, 20);
MyDay = F_LEFT(MyDay_return, 20);
Mit = F_LEFT(Mit_return, 20);
SKONTO = F_LEFT(SKONTO_return, 20);
BISZUM = F_LEFT(BISZUM_return,20);
INNERHALB = F_LEFT(INNERHALB_return, 20);
REINNETTO = F_LEFT(REINNETTO_return,20);
IF ((KURSDF = 0) OR (KURSDF IS NULL)) THEN KURSDF = 1;
-- Zahlbedingung 1
IF(BZAHBE_ID1 IS NOT NULL) THEN
BEGIN
SELECT C.TRANS, B.PROZENT, B.ZAHLZIEL, B.MONATANZAHL, A.RF_TAG
FROM BZAHBE A
LEFT OUTER JOIN P_REP_BRRC_ZAHBE(:MYDATUM,:BZAHBE_ID1) B ON A.ID = A.ID
LEFT OUTER JOIN P_SMREPORTLABEL(:NSPRACHE,A.BEZ,A.BEZ) C ON A.ID = A.ID
WHERE A.ID = :BZAHBE_ID1
INTO :BEZ, :MYSKONTO, :ZAHLZIEL, :MONATANZAHL, :RF_TAG;
BEZ = F_REPLACESTRING(BEZ,'@d@','@D@',1,0);
BEZ = F_REPLACESTRING(BEZ,'@s@','@S@',1,0);
-- Übersetzung nur in Rechnung
IF (WOHER = 'BRRC') THEN
BEGIN
BEZ = F_REPLACESTRING(BEZ,'@dd@','@DD@',1,0);
BEZ = F_REPLACESTRING(BEZ,'@dD@','@DD@',1,0);
BEZ = F_REPLACESTRING(BEZ,'@Dd@','@DD@',1,0);
END
ELSE
BEGIN
BEZ = F_REPLACESTRING(BEZ,'@dd@','',1,0);
BEZ = F_REPLACESTRING(BEZ,'@dD@','',1,0);
BEZ = F_REPLACESTRING(BEZ,'@Dd@','',1,0);
END
IF ((BEZ CONTAINING '@D@') OR (BEZ CONTAINING '@S@') OR
(BEZ CONTAINING '@DD@')) THEN
BEGIN
-- eventuellen Kommentar entfernen
Pos1 = F_SUBSTR('!',:BEZ);
Ende = F_STRINGLENGTH(:BEZ);
Kommentar = F_COPY(:BEZ,Pos1,Ende);
IF (Pos1 >= 0) THEN
BEZ = F_REPLACESTRING(:BEZ,:Kommentar,'',1,0);
-- wenn irgendwo "innerhalb" oder "zum" enthalten ist aber kein Datum
IF (((F_ANSIUPPERCASE(BEZ) CONTAINING F_ANSIUPPERCASE(BISZUM)) OR
(F_ANSIUPPERCASE(BEZ) CONTAINING F_ANSIUPPERCASE(INNERHALB))) AND
(F_ANSIUPPERCASE(BEZ) NOT CONTAINING '@D@') AND (SYN_KUNDE <> 'AR03')) THEN
BEGIN
BEZ = F_REPLACESTRING(BEZ,BISZUM,'',1,0);
BEZ = F_REPLACESTRING(BEZ,INNERHALB,'',1,0);
END
IF (F_ANSIUPPERCASE(BEZ) CONTAINING F_ANSIUPPERCASE(MIT)) THEN
BEZ = F_REPLACESTRING(BEZ,MIT,'',1,0);
-- Datum (bis zum DATE)
IF (BEZ CONTAINING '@DD@') THEN
-- Für Auftragsbestätigung und Bestellung nur Zahlungsbedingungen angeben. 18.01.2010 - KTS
IF ((WOHER = 'BAUF') OR (WOHER = 'BBES')) THEN
BEGIN
IF (MONATANZAHL = 1) THEN
MyBez = F_REPLACESTRING(BEZ, '@DD@', BISZUM || ' ' || RF_TAG || '. des Folgemonats',1,0);
ELSE IF (MONATANZAHL = 2) THEN
MyBez = F_REPLACESTRING(BEZ, '@DD@', BISZUM || ' ' || RF_TAG || '. des uebern. Monats',1,0);
ELSE
MyBez = F_REPLACESTRING(BEZ, '@DD@',INNERHALB || ' ' || '@D@',1,0);
END
ELSE
MyBez = F_REPLACESTRING(BEZ, '@DD@', BISZUM || ' ' || '&DATE?',1,0);
IF ((MyBEZ IS NULL) OR (MyBEZ = '')) THEN MyBEZ = BEZ;
-- Skonto einsetzen
IF (MYSKONTO = '0') THEN
MyBEZ = F_REPLACESTRING(MyBEZ,'@S@',REINNETTO,1,0);
IF (WOHER = 'BRRC') THEN
BEGIN
MYSKONTODIFF = (GESAMT * MySKONTO / 100);
MySKONTOBETRAG = GESAMT - MYSKONTODIFF;
IF (KURSDF <> 0) THEN
MYSKONTODIFF = MYSKONTODIFF * KURSDF;
MySKONTOBETRAG = MySKONTOBETRAG * KURSDF;
MyBEZ = F_REPLACESTRING(MyBEZ,'@S@',
(Mit || ' ' || MySkonto || '%' || ' ' || SKONTO || ' (' || MYSKONTODIFF || ') ' ||
' = ' || MYSKONTOBETRAG || ' ' || WAER),1,0);
END
ELSE
MyBEZ = F_REPLACESTRING(MyBEZ,'@S@',
(Mit || ' ' || MySkonto || '%' || ' ' || SKONTO),1,0);
IF (ZAHLZIEL = 1) THEN
BEGIN
MyBEZ = F_REPLACESTRING(MyBEZ,'@D@',(ZAHLZIEL || ' ' || MyDAY),1,0);
MyZahlbedingung = MyZahlbedingung || ' ' || MyBEZ;
END
ELSE IF (ZAHLZIEL > 1) THEN
MyZahlbedingung = MyZahlbedingung || ' ' ||
F_REPLACESTRING(MyBEZ,'@D@',(ZAHLZIEL || ' ' || MyDAYS),1,0);
ELSE IF (ZAHLZIEL = 0) THEN
BEGIN
IF (F_ANSIUPPERCASE(MyBEZ) CONTAINING F_ANSIUPPERCASE(INNERHALB)) THEN
MyBEZ = F_REPLACESTRING(MyBEZ,INNERHALB,BISZUM,1,0);
IF (F_ANSIUPPERCASE(MyBEZ) NOT CONTAINING F_ANSIUPPERCASE(BISZUM)) THEN
MyBEZ = F_REPLACESTRING(MyBEZ,'@D@',(BISZUM || ' ' || '#DATE*'),1,0);
MyBEZ = F_REPLACESTRING(MyBEZ,'@D@','#DATE*',1,0);
MyZahlbedingung = MyZahlbedingung || ' ' || MyBEZ;
END
WELCHE = 1;
IF (MYZAHLBEDINGUNG IS NOT NULL AND MYZAHLBEDINGUNG <> '') THEN
SUSPEND;
MyBEZ = '';
MyZahlbedingung = '';
END
ELSE
BEGIN
MYZAHLBEDINGUNG = BEZ;
SUSPEND;
MYZAHLBEDINGUNG = '';
END
END
-- Zahlbedingung 2
IF (BZAHBE_ID2 IS NOT NULL) THEN
BEGIN
SELECT C.TRANS, B.PROZENT, B.ZAHLZIEL, B.MONATANZAHL, A.RF_TAG
FROM BZAHBE A
LEFT OUTER JOIN P_REP_BRRC_ZAHBE(:MYDATUM,:BZAHBE_ID2) B ON A.ID = A.ID
LEFT OUTER JOIN P_SMREPORTLABEL(:NSPRACHE,A.BEZ,A.BEZ) C ON A.ID = A.ID
WHERE A.ID = :BZAHBE_ID2
INTO :BEZ, :MYSKONTO, :ZAHLZIEL, :MONATANZAHL, :RF_TAG;
BEZ = F_REPLACESTRING(BEZ,'@d@','@D@',1,0);
BEZ = F_REPLACESTRING(BEZ,'@s@','@S@',1,0);
-- Übersetzung nur in Rechnung
IF (WOHER = 'BRRC') THEN
BEGIN
BEZ = F_REPLACESTRING(BEZ,'@dd@','@DD@',1,0);
BEZ = F_REPLACESTRING(BEZ,'@dD@','@DD@',1,0);
BEZ = F_REPLACESTRING(BEZ,'@Dd@','@DD@',1,0);
END
ELSE
BEGIN
BEZ = F_REPLACESTRING(BEZ,'@dd@','',1,0);
BEZ = F_REPLACESTRING(BEZ,'@dD@','',1,0);
BEZ = F_REPLACESTRING(BEZ,'@Dd@','',1,0);
END
IF ((BEZ CONTAINING '@D@') OR (BEZ CONTAINING '@S@') OR
(BEZ CONTAINING '@DD@')) THEN
BEGIN
-- eventuellen Kommentar entfernen
Pos1 = F_SUBSTR('!',:BEZ);
Ende = F_STRINGLENGTH(:BEZ);
Kommentar = F_COPY(:BEZ,Pos1,Ende);
IF (Pos1 >= 0) THEN
BEZ = F_REPLACESTRING(:BEZ,:Kommentar,'',1,0);
-- wenn irgendwo "innerhalb" oder "zum" enthalten ist aber kein Datum
IF (((F_ANSIUPPERCASE(BEZ) CONTAINING F_ANSIUPPERCASE(BISZUM)) OR
(F_ANSIUPPERCASE(BEZ) CONTAINING F_ANSIUPPERCASE(INNERHALB))) AND
(F_ANSIUPPERCASE(BEZ) NOT CONTAINING '@D@') AND (SYN_KUNDE <> 'AR03')) THEN
BEGIN
BEZ = F_REPLACESTRING(BEZ,BISZUM,'',1,0);
BEZ = F_REPLACESTRING(BEZ,INNERHALB,'',1,0);
END
IF (F_ANSIUPPERCASE(BEZ) CONTAINING F_ANSIUPPERCASE(MIT)) THEN
BEZ = F_REPLACESTRING(BEZ,MIT,'',1,0);
-- Datum (bis zum DATE)
IF (BEZ CONTAINING '@DD@') THEN
-- Für Auftragsbestätigung und Bestellung nur Zahlungsbedingungen angeben. 18.01.2010 - KTS
IF ((WOHER = 'BAUF') OR (WOHER = 'BBES')) THEN
BEGIN
IF (MONATANZAHL = 1) THEN
MyBez = F_REPLACESTRING(BEZ, '@DD@', BISZUM || ' ' || RF_TAG || '. des Folgemonats',1,0);
ELSE IF (MONATANZAHL = 2) THEN
MyBez = F_REPLACESTRING(BEZ, '@DD@', BISZUM || ' ' || RF_TAG || '. des uebern. Monats',1,0);
ELSE
MyBez = F_REPLACESTRING(BEZ, '@DD@',INNERHALB || ' ' || '@D@',1,0);
END
ELSE
MyBez = F_REPLACESTRING(BEZ, '@DD@', BISZUM || ' ' || '&DATE?',1,0);
IF ((MyBEZ IS NULL) OR (MyBEZ = '')) THEN MyBEZ = BEZ;
-- Skonto einsetzen
IF (MYSKONTO = '0') THEN
MyBEZ = F_REPLACESTRING(MyBEZ,'@S@',REINNETTO,1,0);
IF (WOHER = 'BRRC') THEN
BEGIN
MYSKONTODIFF = (GESAMT * MySKONTO / 100);
MySKONTOBETRAG = GESAMT - MYSKONTODIFF;
IF (KURSDF <> 0) THEN
MYSKONTODIFF = MYSKONTODIFF * KURSDF;
MySKONTOBETRAG = MySKONTOBETRAG * KURSDF;
MyBEZ = F_REPLACESTRING(MyBEZ,'@S@',
(Mit || ' ' || MySkonto || '%' || ' ' || SKONTO || ' (' || MYSKONTODIFF || ') ' ||
' = ' || MYSKONTOBETRAG || ' ' || WAER),1,0);
END
ELSE
MyBEZ = F_REPLACESTRING(MyBEZ,'@S@',
(Mit || ' ' || MySkonto || '%' || ' ' || SKONTO),1,0);
IF (ZAHLZIEL = 1) THEN
BEGIN
MyBEZ = F_REPLACESTRING(MyBEZ,'@D@',(ZAHLZIEL || ' ' || MyDAY),1,0);
MyZahlbedingung = MyZahlbedingung || ' ' || MyBEZ;
END
ELSE IF (ZAHLZIEL > 1) THEN
MyZahlbedingung = MyZahlbedingung || ' ' ||
F_REPLACESTRING(MyBEZ,'@D@',(ZAHLZIEL || ' ' || MyDAYS),1,0);
ELSE IF (ZAHLZIEL = 0) THEN
BEGIN
IF (F_ANSIUPPERCASE(MyBEZ) CONTAINING F_ANSIUPPERCASE(INNERHALB)) THEN
MyBEZ = F_REPLACESTRING(MyBEZ,INNERHALB,BISZUM,1,0);
IF (F_ANSIUPPERCASE(MyBEZ) NOT CONTAINING F_ANSIUPPERCASE(BISZUM)) THEN
MyBEZ = F_REPLACESTRING(MyBEZ,'@D@',(BISZUM || ' ' || '#DATE*'),1,0);
MyBEZ = F_REPLACESTRING(MyBEZ,'@D@','#DATE*',1,0);
MyZahlbedingung = MyZahlbedingung || ' ' || MyBEZ;
END
WELCHE = 2;
IF (MYZAHLBEDINGUNG IS NOT NULL AND MYZAHLBEDINGUNG <> '') THEN
SUSPEND;
MyBEZ = '';
MyZahlbedingung = '';
END
ELSE
BEGIN
MYZAHLBEDINGUNG = BEZ;
SUSPEND;
MYZAHLBEDINGUNG = '';
END
END
-- Zahlbedingung 3
IF (BZAHBE_ID3 IS NOT NULL) THEN
BEGIN
SELECT C.TRANS, B.PROZENT, B.ZAHLZIEL, B.MONATANZAHL, A.RF_TAG -- Für Industriezahlbed.
FROM BZAHBE A
LEFT OUTER JOIN P_REP_BRRC_ZAHBE(:MYDATUM,:BZAHBE_ID3) B ON A.ID = A.ID
LEFT OUTER JOIN P_SMREPORTLABEL(:NSPRACHE,A.BEZ,A.BEZ) C ON A.ID = A.ID
WHERE A.ID = :BZAHBE_ID3
INTO :BEZ, :MYSKONTO, :ZAHLZIEL, :MONATANZAHL, :RF_TAG; -- Für Industriezahlbed.
BEZ = F_REPLACESTRING(BEZ,'@d@','@D@',1,0);
BEZ = F_REPLACESTRING(BEZ,'@s@','@S@',1,0);
-- Übersetzung nur in Rechnung
IF (WOHER = 'BRRC') THEN
BEGIN
BEZ = F_REPLACESTRING(BEZ,'@dd@','@DD@',1,0);
BEZ = F_REPLACESTRING(BEZ,'@dD@','@DD@',1,0);
BEZ = F_REPLACESTRING(BEZ,'@Dd@','@DD@',1,0);
END
ELSE
BEGIN
BEZ = F_REPLACESTRING(BEZ,'@dd@','',1,0);
BEZ = F_REPLACESTRING(BEZ,'@dD@','',1,0);
BEZ = F_REPLACESTRING(BEZ,'@Dd@','',1,0);
END
IF ((BEZ CONTAINING '@D@') OR (BEZ CONTAINING '@S@') OR
(BEZ CONTAINING '@DD@')) THEN
BEGIN
-- eventuellen Kommentar entfernen
Pos1 = F_SUBSTR('!',:BEZ);
Ende = F_STRINGLENGTH(:BEZ);
Kommentar = F_COPY(:BEZ,Pos1,Ende);
IF (Pos1 >= 0) THEN
BEZ = F_REPLACESTRING(:BEZ,:Kommentar,'',1,0);
-- wenn irgendwo "innerhalb" oder "zum" enthalten ist aber kein Datum
IF (((F_ANSIUPPERCASE(BEZ) CONTAINING F_ANSIUPPERCASE(BISZUM)) OR
(F_ANSIUPPERCASE(BEZ) CONTAINING F_ANSIUPPERCASE(INNERHALB))) AND
(F_ANSIUPPERCASE(BEZ) NOT CONTAINING '@D@') AND (SYN_KUNDE <> 'AR03')) THEN
BEGIN
BEZ = F_REPLACESTRING(BEZ,BISZUM,'',1,0);
BEZ = F_REPLACESTRING(BEZ,INNERHALB,'',1,0);
END
IF (F_ANSIUPPERCASE(BEZ) CONTAINING F_ANSIUPPERCASE(MIT)) THEN
BEZ = F_REPLACESTRING(BEZ,MIT,'',1,0);
-- Datum (bis zum DATE)
IF (BEZ CONTAINING '@DD@') THEN
-- Für Auftragsbestätigung und Bestellung nur Zahlungsbedingungen angeben. 18.01.2010 - KTS
IF ((WOHER = 'BAUF') OR (WOHER = 'BBES')) THEN
BEGIN
IF (MONATANZAHL = 1) THEN
MyBez = F_REPLACESTRING(BEZ, '@DD@', BISZUM || ' ' || RF_TAG || '. des Folgemonats',1,0);
ELSE IF (MONATANZAHL = 2) THEN
MyBez = F_REPLACESTRING(BEZ, '@DD@', BISZUM || ' ' || RF_TAG || '. des uebern. Monats',1,0);
ELSE
MyBez = F_REPLACESTRING(BEZ, '@DD@',INNERHALB || ' ' || '@D@',1,0);
END
ELSE
MyBez = F_REPLACESTRING(BEZ, '@DD@', BISZUM || ' ' || '&DATE?',1,0);
IF ((MyBEZ IS NULL) OR (MyBEZ = '')) THEN MyBEZ = BEZ;
-- Skonto einsetzen
IF (MYSKONTO = '0') THEN
MyBEZ = F_REPLACESTRING(MyBEZ,'@S@',REINNETTO,1,0);
IF (WOHER = 'BRRC') THEN
BEGIN
MYSKONTODIFF = (GESAMT * MySKONTO / 100);
MySKONTOBETRAG = GESAMT - MYSKONTODIFF;
IF (KURSDF <> 0) THEN
MYSKONTODIFF = MYSKONTODIFF * KURSDF;
MySKONTOBETRAG = MySKONTOBETRAG * KURSDF;
MyBEZ = F_REPLACESTRING(MyBEZ,'@S@',
(Mit || ' ' || MySkonto || '%' || ' ' || SKONTO || ' (' || MYSKONTODIFF || ') ' ||
' = ' || MYSKONTOBETRAG || ' ' || WAER),1,0);
END
ELSE
MyBEZ = F_REPLACESTRING(MyBEZ,'@S@',
(Mit || ' ' || MySkonto || '%' || ' ' || SKONTO),1,0);
IF (ZAHLZIEL = 1) THEN
BEGIN
MyBEZ = F_REPLACESTRING(MyBEZ,'@D@',(ZAHLZIEL || ' ' || MyDAY),1,0);
MyZahlbedingung = MyZahlbedingung || ' ' || MyBEZ;
END
ELSE IF (ZAHLZIEL > 1) THEN
MyZahlbedingung = MyZahlbedingung || ' ' ||
F_REPLACESTRING(MyBEZ,'@D@',(ZAHLZIEL || ' ' || MyDAYS),1,0);
ELSE IF (ZAHLZIEL = 0) THEN
BEGIN
IF (F_ANSIUPPERCASE(MyBEZ) CONTAINING F_ANSIUPPERCASE(INNERHALB)) THEN
MyBEZ = F_REPLACESTRING(MyBEZ,INNERHALB,BISZUM,1,0);
IF (F_ANSIUPPERCASE(MyBEZ) NOT CONTAINING F_ANSIUPPERCASE(BISZUM)) THEN
MyBEZ = F_REPLACESTRING(MyBEZ,'@D@',(BISZUM || ' ' || '#DATE*'),1,0);
MyBEZ = F_REPLACESTRING(MyBEZ,'@D@','#DATE*',1,0);
MyZahlbedingung = MyZahlbedingung || ' ' || MyBEZ;
END
WELCHE = 3;
IF (MYZAHLBEDINGUNG IS NOT NULL AND MYZAHLBEDINGUNG <> '') THEN
SUSPEND;
MyBEZ = '';
MyZahlbedingung = '';
END
ELSE
BEGIN
MYZAHLBEDINGUNG = BEZ;
SUSPEND;
MYZAHLBEDINGUNG = '';
END
END
-- Zahlbedingung 4
IF (BZAHBE_ID4 IS NOT NULL) THEN
BEGIN
SELECT C.TRANS, B.PROZENT, B.ZAHLZIEL, B.MONATANZAHL, A.RF_TAG -- Für Industriezahlbed.
FROM BZAHBE A
LEFT OUTER JOIN P_REP_BRRC_ZAHBE(:MYDATUM,:BZAHBE_ID4) B ON A.ID = A.ID
LEFT OUTER JOIN P_SMREPORTLABEL(:NSPRACHE,A.BEZ,A.BEZ) C ON A.ID = A.ID
WHERE A.ID = :BZAHBE_ID4
INTO :BEZ, :MYSKONTO, :ZAHLZIEL, :MONATANZAHL, :RF_TAG; -- Für Industriezahlbed.
BEZ = F_REPLACESTRING(BEZ,'@d@','@D@',1,0);
BEZ = F_REPLACESTRING(BEZ,'@s@','@S@',1,0);
-- Übersetzung nur in Rechnung
IF (WOHER = 'BRRC') THEN
BEGIN
BEZ = F_REPLACESTRING(BEZ,'@dd@','@DD@',1,0);
BEZ = F_REPLACESTRING(BEZ,'@dD@','@DD@',1,0);
BEZ = F_REPLACESTRING(BEZ,'@Dd@','@DD@',1,0);
END
ELSE
BEGIN
BEZ = F_REPLACESTRING(BEZ,'@dd@','',1,0);
BEZ = F_REPLACESTRING(BEZ,'@dD@','',1,0);
BEZ = F_REPLACESTRING(BEZ,'@Dd@','',1,0);
END
IF ((BEZ CONTAINING '@D@') OR (BEZ CONTAINING '@S@') OR
(BEZ CONTAINING '@DD@')) THEN
BEGIN
-- eventuellen Kommentar entfernen
Pos1 = F_SUBSTR('!',:BEZ);
Ende = F_STRINGLENGTH(:BEZ);
Kommentar = F_COPY(:BEZ,Pos1,Ende);
IF (Pos1 >= 0) THEN
BEZ = F_REPLACESTRING(:BEZ,:Kommentar,'',1,0);
-- wenn irgendwo "innerhalb" oder "zum" enthalten ist aber kein Datum
IF (((F_ANSIUPPERCASE(BEZ) CONTAINING F_ANSIUPPERCASE(BISZUM)) OR
(F_ANSIUPPERCASE(BEZ) CONTAINING F_ANSIUPPERCASE(INNERHALB))) AND
(F_ANSIUPPERCASE(BEZ) NOT CONTAINING '@D@') AND (SYN_KUNDE <> 'AR03')) THEN
BEGIN
BEZ = F_REPLACESTRING(BEZ,BISZUM,'',1,0);
BEZ = F_REPLACESTRING(BEZ,INNERHALB,'',1,0);
END
IF (F_ANSIUPPERCASE(BEZ) CONTAINING F_ANSIUPPERCASE(MIT)) THEN
BEZ = F_REPLACESTRING(BEZ,MIT,'',1,0);
-- Datum (bis zum DATE)
IF (BEZ CONTAINING '@DD@') THEN
-- Für Auftragsbestätigung und Bestellung nur Zahlungsbedingungen angeben. 18.01.2010 - KTS
IF ((WOHER = 'BAUF') OR (WOHER = 'BBES')) THEN
BEGIN
IF (MONATANZAHL = 1) THEN
MyBez = F_REPLACESTRING(BEZ, '@DD@', BISZUM || ' ' || RF_TAG || '. des Folgemonats',1,0);
ELSE IF (MONATANZAHL = 2) THEN
MyBez = F_REPLACESTRING(BEZ, '@DD@', BISZUM || ' ' || RF_TAG || '. des uebern. Monats',1,0);
ELSE
MyBez = F_REPLACESTRING(BEZ, '@DD@',INNERHALB || ' ' || '@D@',1,0);
END
ELSE
MyBez = F_REPLACESTRING(BEZ, '@DD@', BISZUM || ' ' || '&DATE?',1,0);
IF ((MyBEZ IS NULL) OR (MyBEZ = '')) THEN MyBEZ = BEZ;
-- Skonto einsetzen
IF (MYSKONTO = '0') THEN
MyBEZ = F_REPLACESTRING(MyBEZ,'@S@',REINNETTO,1,0);
IF (WOHER = 'BRRC') THEN
BEGIN
MYSKONTODIFF = (GESAMT * MySKONTO / 100);
MySKONTOBETRAG = GESAMT - MYSKONTODIFF;
IF (KURSDF <> 0) THEN
MYSKONTODIFF = MYSKONTODIFF * KURSDF;
MySKONTOBETRAG = MySKONTOBETRAG * KURSDF;
MyBEZ = F_REPLACESTRING(MyBEZ,'@S@',
(Mit || ' ' || MySkonto || '%' || ' ' || SKONTO || ' (' || MYSKONTODIFF || ') ' ||
' = ' || MYSKONTOBETRAG || ' ' || WAER),1,0);
END
ELSE
MyBEZ = F_REPLACESTRING(MyBEZ,'@S@',
(Mit || ' ' || MySkonto || '%' || ' ' || SKONTO),1,0);
IF (ZAHLZIEL = 1) THEN
BEGIN
MyBEZ = F_REPLACESTRING(MyBEZ,'@D@',(ZAHLZIEL || ' ' || MyDAY),1,0);
MyZahlbedingung = MyZahlbedingung || ' ' || MyBEZ;
END
ELSE IF (ZAHLZIEL > 1) THEN
MyZahlbedingung = MyZahlbedingung || ' ' ||
F_REPLACESTRING(MyBEZ,'@D@',(ZAHLZIEL || ' ' || MyDAYS),1,0);
ELSE IF (ZAHLZIEL = 0) THEN
BEGIN
IF (F_ANSIUPPERCASE(MyBEZ) CONTAINING F_ANSIUPPERCASE(INNERHALB)) THEN
MyBEZ = F_REPLACESTRING(MyBEZ,INNERHALB,BISZUM,1,0);
IF (F_ANSIUPPERCASE(MyBEZ) NOT CONTAINING F_ANSIUPPERCASE(BISZUM)) THEN
MyBEZ = F_REPLACESTRING(MyBEZ,'@D@',(BISZUM || ' ' || '#DATE*'),1,0);
MyBEZ = F_REPLACESTRING(MyBEZ,'@D@','#DATE*',1,0);
MyZahlbedingung = MyZahlbedingung || ' ' || MyBEZ;
END
WELCHE = 4;
IF (MYZAHLBEDINGUNG IS NOT NULL AND MYZAHLBEDINGUNG <> '') THEN
SUSPEND;
MyBEZ = '';
MyZahlbedingung = '';
END
ELSE
BEGIN
MYZAHLBEDINGUNG = BEZ;
SUSPEND;
MYZAHLBEDINGUNG = '';
END
END
END
END^
SET TERM ; ^
GRANT INSERT ON A_WASMACHTIB TO PROCEDURE P_REP_ZAHBE;
GRANT SELECT ON BFIRMA TO PROCEDURE P_REP_ZAHBE;
GRANT SELECT ON BRRC TO PROCEDURE P_REP_ZAHBE;
GRANT SELECT ON BADR TO PROCEDURE P_REP_ZAHBE;
GRANT SELECT ON BSPRA TO PROCEDURE P_REP_ZAHBE;
GRANT SELECT ON BWAER TO PROCEDURE P_REP_ZAHBE;
GRANT EXECUTE ON PROCEDURE P_REP_BAUF_MWST TO PROCEDURE P_REP_ZAHBE;
GRANT SELECT ON BAUF TO PROCEDURE P_REP_ZAHBE;
GRANT SELECT ON BKUNDE TO PROCEDURE P_REP_ZAHBE;
GRANT SELECT ON BBES TO PROCEDURE P_REP_ZAHBE;
GRANT SELECT ON BLIEF TO PROCEDURE P_REP_ZAHBE;
GRANT SELECT ON A_USER TO PROCEDURE P_REP_ZAHBE;
GRANT EXECUTE ON PROCEDURE P_SMREPORTLABEL TO PROCEDURE P_REP_ZAHBE;
GRANT SELECT ON BZAHBE TO PROCEDURE P_REP_ZAHBE;
GRANT EXECUTE ON PROCEDURE P_REP_BRRC_ZAHBE TO PROCEDURE P_REP_ZAHBE;
GRANT EXECUTE ON PROCEDURE P_REP_ZAHBE TO "PUBLIC";
GRANT EXECUTE ON PROCEDURE P_REP_ZAHBE TO SYSDBA; Für Verbesserungsvorschläge bin ich gerne offen.
Gruß
KTS
AvERP-Exe: 4.2.1.6
Datenbank: AvERP2009-A.01
_________________________
Suchen heißt finden und je mehr man sucht um so mehr findet man.
KTS
AvERP-Exe: 4.2.1.6
Datenbank: AvERP2009-A.01
_________________________
Suchen heißt finden und je mehr man sucht um so mehr findet man.