MwSt Änderung ab 01.07.2020
Moderator: SYNERPY
-
- Beiträge: 515
- Registriert: Di Okt 19, 2004 5:45 am
- Wohnort: Diepholz
MwSt Änderung ab 01.07.2020
Hallo und guten Tag,
wird es zur zeitlichen Umstellung der Mehrwertsteuer vom 01.07.2020 . 31.12.2020 ein Script von Synerpy geben, um die Änderung in die DB zu übernehmen und die offenen Aufträge zum Stichtag umzustellen?
wird es zur zeitlichen Umstellung der Mehrwertsteuer vom 01.07.2020 . 31.12.2020 ein Script von Synerpy geben, um die Änderung in die DB zu übernehmen und die offenen Aufträge zum Stichtag umzustellen?
MfG
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
-
- Beiträge: 481
- Registriert: Di Mai 18, 2004 8:42 pm
- Wohnort: Pforzheim
Re: MwSt Änderung ab 01.07.2020
Hallo und guten Morgen,
Mir ist ein Gerücht zu Ohren gekommen das das Script etwa 1000€ pro Kunde kosten wird. Was genau damit gemeint oder getan wird ist mir nicht bekannt.
IN BFIRM kommt Mann in die Firmenstammdaten, mit BMAND in die Mandantenstammdaten. Dort kann man theoretisch den Mwst Schlüssel umstellen bzw einen Neuen erzeugen.
3.Artikel -> MwSt. und Mwst.Kz. 0%
der verringerte Mwst Satz habe ich erstmal nicht gefunden ist für mich auch nicht wichtig (hoffe ich)
BMWST verbirgt sich dahinter und dort das Utilitities FRUBMWST_NEU
Das bringt bei mir nach einigem Nachdenken dann eine Fehlermeldung...
Grüße ins Forum![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
nach Aussage von Synerpy taucht die Utilities nix,(funkktioniert nicht) ist halt noch drin.
das einfache Ändern des MWst Satz in BFIRMA funktioniert, (mit WarnungSmeldung)
Allerdings gehen auch die Neuausdrucke alter Rechnungen dann mit dem neuen Mwst Satz.
Entweder Synerpy ranlassen und umfangreiche änderungen einspielen (kostenpflichtig) oder die Nachteile in Kauf nehmen. Davon (den Nachteilen) könnten noch mehr programmiert sein. Ok ich bin frustriert....
r![Evil or Very Mad :evil:](./images/smilies/icon_evil.gif)
Mir ist ein Gerücht zu Ohren gekommen das das Script etwa 1000€ pro Kunde kosten wird. Was genau damit gemeint oder getan wird ist mir nicht bekannt.
IN BFIRM kommt Mann in die Firmenstammdaten, mit BMAND in die Mandantenstammdaten. Dort kann man theoretisch den Mwst Schlüssel umstellen bzw einen Neuen erzeugen.
3.Artikel -> MwSt. und Mwst.Kz. 0%
der verringerte Mwst Satz habe ich erstmal nicht gefunden ist für mich auch nicht wichtig (hoffe ich)
BMWST verbirgt sich dahinter und dort das Utilitities FRUBMWST_NEU
Das bringt bei mir nach einigem Nachdenken dann eine Fehlermeldung...
Grüße ins Forum
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
nach Aussage von Synerpy taucht die Utilities nix,(funkktioniert nicht) ist halt noch drin.
das einfache Ändern des MWst Satz in BFIRMA funktioniert, (mit WarnungSmeldung)
Allerdings gehen auch die Neuausdrucke alter Rechnungen dann mit dem neuen Mwst Satz.
Entweder Synerpy ranlassen und umfangreiche änderungen einspielen (kostenpflichtig) oder die Nachteile in Kauf nehmen. Davon (den Nachteilen) könnten noch mehr programmiert sein. Ok ich bin frustriert....
r
![Evil or Very Mad :evil:](./images/smilies/icon_evil.gif)
Lieblingsthema-> Dokumentation, das unbekannte Wesen
Ronald Werner
http://www.rws-automation.de
Averp lebensecht seit 13.08.2014 davor A.L.F. mit RWSFA seit 1991
Averp DB 2019.02 , EXE: 6.8.6.0 auf WinServer 2008
Ronald Werner
http://www.rws-automation.de
Averp lebensecht seit 13.08.2014 davor A.L.F. mit RWSFA seit 1991
Averp DB 2019.02 , EXE: 6.8.6.0 auf WinServer 2008
-
- Beiträge: 515
- Registriert: Di Okt 19, 2004 5:45 am
- Wohnort: Diepholz
Re: MwSt Änderung ab 01.07.2020
Hallo,
warum frustriert
Aus dem Utilitie FRUBMWST_NEU wird die Prozedur P_BMWST_MWST_NEU aufgerufen und diese ändert dann das MwSt-Kz auf den neuen Wert.
Leider hat Synerpy da einen kleinen Fehler eingebaut
Es wird nämlich versucht den MwSt-Satz von 0% auf den neuen Satz zu ändern, da das Feld BMWST_ID_KZ und nicht das richtige Feld BMWST_ID angesprochen wird.
Also diese Prozedure anpassen und dann sollte es laufen.
Zur Fehlermeldung
Wie lautet diese Fehlermeldung
Falls es sich um den Fehler "Die Positionen sind nicht mehr komplett im Rueckstand" handelt, habe ich auch einen Tipp dafür.
Ich habe auf einer Kopie meiner DB die Umstellung ohne Probleme durchgeführt.
Die Prozedur läuft je nach Server ca. 5-10 min.
Schönes Wochenende![Very Happy :D](./images/smilies/icon_biggrin.gif)
warum frustriert
![Question :?:](./images/smilies/icon_question.gif)
Aus dem Utilitie FRUBMWST_NEU wird die Prozedur P_BMWST_MWST_NEU aufgerufen und diese ändert dann das MwSt-Kz auf den neuen Wert.
Leider hat Synerpy da einen kleinen Fehler eingebaut
![Confused :?](./images/smilies/icon_confused.gif)
Also diese Prozedure anpassen und dann sollte es laufen.
Zur Fehlermeldung
Wie lautet diese Fehlermeldung
![Question :?:](./images/smilies/icon_question.gif)
Falls es sich um den Fehler "Die Positionen sind nicht mehr komplett im Rueckstand" handelt, habe ich auch einen Tipp dafür.
Ich habe auf einer Kopie meiner DB die Umstellung ohne Probleme durchgeführt.
Die Prozedur läuft je nach Server ca. 5-10 min.
Schönes Wochenende
![Very Happy :D](./images/smilies/icon_biggrin.gif)
MfG
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
-
- Beiträge: 149
- Registriert: Mi Mär 04, 2009 10:45 am
Re: MwSt Änderung ab 01.07.2020
Beschaffungsseitig muus man auch BLIEF, BSAL und die Eingangsrechnungsrückstände anpassen, das wird mit dem oberen Script nicht berücksichtigt.
Die Prozedur P_BMWST_MWST_NEU sieht so bei mir aus (die Änderung von festus ist auch bereits inkludiert):
Gruß
Thomas
Die Prozedur P_BMWST_MWST_NEU sieht so bei mir aus (die Änderung von festus ist auch bereits inkludiert):
Code: Alles auswählen
BEGIN
/* LETZTER STAND 24.03.2014 13:59:36 MM */
/* ERSTER STAND: 11.12.2007 18:18:41 AK */
/* PROTOKOLLIEREN, DASS AKTION HIER DURCHGELAUFEN IST */
IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('P_BMWST_MWST_NEU');
/* Mehrwertsteuersatz ändern
Außer Stammdaten wird der MwStSatz nur geändert, wenn
die Positionen noch nicht geliefert wurden, da der Tag der Lieferung
entscheidend ist. Sollte es trotzdem einmal anders sein, so kann der
Benutzer in den Positionen den Steuersatz noch einmal ändern */
EXECUTE PROCEDURE P_BFIRMA_JANEIN RETURNING_VALUES (:SJA, :SNEIN);
EXECUTE PROCEDURE P_BMAND_CHECK RETURNING_VALUES(:BMAND_ID);
NEU_MWSTSATZ = NULL;
IF ((COALESCE(NEU_BMWST_ID,0) = 0) OR
(COALESCE(OLD_BMWST_ID,0) = 0) OR
(NEU_BMWST_ID IS NOT DISTINCT FROM OLD_BMWST_ID)) THEN
EXIT;
SELECT PROZENT
FROM BMWST
WHERE ID = :NEU_BMWST_ID
INTO :NEU_MWSTSATZ;
UPDATE BFIRMA
SET BMWST_ID_MWSTKENNZ = :NEU_BMWST_ID
WHERE BMWST_ID_MWSTKENNZ = :OLD_BMWST_ID;
UPDATE BMAND
SET BMWST_ID = :NEU_BMWST_ID
WHERE BMWST_ID = :OLD_BMWST_ID;
UPDATE BSA
SET BMWST_ID_MWSTKZ = :NEU_BMWST_ID
WHERE BMWST_ID_MWSTKZ = :OLD_BMWST_ID;
UPDATE BSABMAND
SET BMWST_ID = :NEU_BMWST_ID
WHERE BMWST_ID = :OLD_BMWST_ID AND
BMAND_ID = :BMAND_ID;
-- Rechnungsrückstande, die noch nicht geliefert worden sind
UPDATE BAUFPO
SET BMWST_ID_MWSTKZ = :NEU_BMWST_ID
WHERE BMWST_ID_MWSTKZ = :OLD_BMWST_ID AND
LS_OFFEN > 0.0 AND
RG_OFFEN > 0.0;
-- Lieferanten
UPDATE BLIEF
SET BMWST_ID = :NEU_BMWST_ID
WHERE BMWST_ID = :OLD_BMWST_ID;
-- Lieferanten Artikelstamm
UPDATE BSAL
SET BMWST_ID = :NEU_BMWST_ID
WHERE BMWST_ID = :OLD_BMWST_ID;
-- Bestellpos.Rückstände
UPDATE BBESP
SET BMWST_ID = :NEU_BMWST_ID
WHERE BMWST_ID = :OLD_BMWST_ID AND
RE_OFFEN > 0.0;
END
Thomas
Software-Version: 6.6.10.0
DB-Version: AVERP2018.03
Server: Windows 10 Pro Intel Xeon E3-1230v6 - 16GB RAM
50 User
DB-Version: AVERP2018.03
Server: Windows 10 Pro Intel Xeon E3-1230v6 - 16GB RAM
50 User
-
- Beiträge: 515
- Registriert: Di Okt 19, 2004 5:45 am
- Wohnort: Diepholz
Re: MwSt Änderung ab 01.07.2020
Vielen Dank,
Lieferantenstamm, und Einkauf werde ich dementsprechend anpassen
Schönes Wochenende
Lieferantenstamm, und Einkauf werde ich dementsprechend anpassen
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Schönes Wochenende
MfG
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
-
- Beiträge: 515
- Registriert: Di Okt 19, 2004 5:45 am
- Wohnort: Diepholz
Re: MwSt Änderung ab 01.07.2020
Guten Morgen,
ich habe jetzt die Prozedur noch ein wenig erweitert in dem Sinne, dass jetzt bevor der neue MwSt-Satz in BSA aktualisiert wird, erst der neue MwSt-Satz in den Tabellen BARTG1FIBU(Warengruppe Verkauf) und BARTG2FIBU(Warengruppe Einkauf) eingefügt wird, falls noch nicht vorhanden.
Dadurch besteht die Möglichkeit ein anderes Sachkonto für diesen neuen MwSt-Satz anzugeben.
Falls der neue MwSt-Satz in den Tabellen schon vorhanden ist (bei Rückstellung von 16% wieder auf 19%), sind die vorherigen Einstellungen mit den dazugehörigen Konten wieder aktiv.
So sieht jetzt meine Prozedure P_BMWST_MWST_NEU_HVH(angepasste Kopie von P_BMWST_MWST_NEU) aus:
Das Utility im Artikelstamm wurde entsprechend der neuen Prozedur angepasst.
Falls jemand noch Verbesserungsvorschläge
hat, immer her damit
So, das wars.
Schönen Restsonntag
ich habe jetzt die Prozedur noch ein wenig erweitert in dem Sinne, dass jetzt bevor der neue MwSt-Satz in BSA aktualisiert wird, erst der neue MwSt-Satz in den Tabellen BARTG1FIBU(Warengruppe Verkauf) und BARTG2FIBU(Warengruppe Einkauf) eingefügt wird, falls noch nicht vorhanden.
Dadurch besteht die Möglichkeit ein anderes Sachkonto für diesen neuen MwSt-Satz anzugeben.
Falls der neue MwSt-Satz in den Tabellen schon vorhanden ist (bei Rückstellung von 16% wieder auf 19%), sind die vorherigen Einstellungen mit den dazugehörigen Konten wieder aktiv.
So sieht jetzt meine Prozedure P_BMWST_MWST_NEU_HVH(angepasste Kopie von P_BMWST_MWST_NEU) aus:
Code: Alles auswählen
BEGIN
/* Letzter Stand: 20.06.2020 08:17:53 by KDP */
/* Feld BMWST_ID_KZ auf BMWST_KZ geändert in BMAND */
/* IN BMWST_ID_KZ steht der Steuersatz von 0%!!! und sollte nicht geändert werden */
/* Letzter Stand: 26.06.2020 08:06:02 by KDP */
/* DS in Warengruppe Verkauf - Vorbelegung mit neuem MwSt-Satz anlegen, falls nicht vorhanden */
/* Prozedure kopiert und umbenannt ..._HVH */
/* LETZTER STAND 28.06.2018 08:53:43 JF */
/* ERSTER STAND: 11.12.2007 18:18:41 AK */
/* PROTOKOLLIEREN, DASS AKTION HIER DURCHGELAUFEN IST */
IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('P_BMWST_MWST_NEU_HVH');
/* Mehrwertsteuersatz ändern
Außer Stammdaten wird der MwStSatz nur geändert, wenn
die Positionen noch nicht geliefert wurden, da der Tag der Lieferung
entscheidend ist. Sollte es trotzdem einmal anders sein, so kann der
Benutzer in den Positionen den Steuersatz noch einmal ändern */
EXECUTE PROCEDURE P_BFIRMA_JANEIN RETURNING_VALUES (:SJA, :SNEIN);
EXECUTE PROCEDURE P_BMAND_CHECK RETURNING_VALUES(:BMAND_ID);
IF ((COALESCE(NEU_BMWST_ID,0) = 0) OR
(COALESCE(OLD_BMWST_ID,0) = 0) OR
(NEU_BMWST_ID IS NOT DISTINCT FROM OLD_BMWST_ID)) THEN
EXIT;
-- Warengruppe Verkauf durchlaufen und
-- je einen DS in BARTG1FIBU für neuen MwST-Satz anlegen
-- falls noch nicht vorhanden
-- falls ikontovk angegeben dieses verwenden, ansonsten Konto aus Kopie aus alten MwSt-Satz
FOR SELECT ID
FROM BARTG1
INTO
:warengruppeid
DO BEGIN
IF (NOT EXISTS(SELECT ID FROM BARTG1FIBU WHERE BARTG1_ID_LINKKEY = :warengruppeid AND BMWST_ID = :NEU_BMWST_ID)) THEN BEGIN
INSERT INTO BARTG1FIBU(
BARTG1_ID_LINKKEY,
BMWST_ID,
BMAND_ID,
BFIBUKTO_ID,
BKST_ID
)
SELECT
A.BARTG1_ID_LINKKEY,
:NEU_BMWST_ID,
A.BMAND_ID,
CASE WHEN
COALESCE(:ikontovk,0) = 0 THEN A.BFIBUKTO_ID
ELSE
:ikontovk
END,
A.BKST_ID
FROM BARTG1FIBU A
LEFT OUTER JOIN BMWST B ON B.ID = :NEU_BMWST_ID
WHERE A.BARTG1_ID_LINKKEY = :warengruppeid AND A.BMWST_ID = :OLD_BMWST_ID
;
END
END
-- Warengruppe Einkauf durchlaufen und
-- je einen DS in BARTG2FIBU für neuen MwST-Satz anlegen
-- falls noch nicht vorhanden
FOR SELECT ID
FROM BARTG2
INTO
:warengruppeid
DO BEGIN
IF (NOT EXISTS(SELECT ID FROM BARTG2FIBU WHERE BARTG2_ID_LINKKEY = :warengruppeid AND BMWST_ID = :NEU_BMWST_ID)) THEN BEGIN
INSERT INTO BARTG2FIBU(
BARTG2_ID_LINKKEY,
BMWST_ID,
BMAND_ID,
BFIBUKTO_ID,
BKST_ID
)
SELECT
A.BARTG2_ID_LINKKEY,
:NEU_BMWST_ID,
A.BMAND_ID,
CASE WHEN
COALESCE(:ikontoek,0) = 0 THEN A.BFIBUKTO_ID
ELSE
:ikontoek
END,
A.BKST_ID
FROM BARTG2FIBU A
LEFT OUTER JOIN BMWST B ON B.ID = :NEU_BMWST_ID
WHERE A.BARTG2_ID_LINKKEY = :warengruppeid AND A.BMWST_ID = :OLD_BMWST_ID
;
END
END
UPDATE BFIRMA
SET BMWST_ID_MWSTKENNZ = :NEU_BMWST_ID
WHERE BMWST_ID_MWSTKENNZ = :OLD_BMWST_ID;
UPDATE BMAND
SET BMWST_ID = :NEU_BMWST_ID
WHERE BMWST_ID = :OLD_BMWST_ID;
-- In BSAFIBUZW wird automatisch ein DS angelegt, falls noch nicht vorhanden
UPDATE BSA
SET BMWST_ID_MWSTKZ = :NEU_BMWST_ID
WHERE BMWST_ID_MWSTKZ = :OLD_BMWST_ID;
UPDATE BSABMAND
SET BMWST_ID = :NEU_BMWST_ID
WHERE BMWST_ID = :OLD_BMWST_ID AND
BMAND_ID = :BMAND_ID;
-- Rechnungsrückstande, die noch nicht geliefert worden sind
-- Nur Positionen ab dem Jahr 2020, da durch Update von AvERP2014 auf AvERP2020
-- bei alten Aufträgen evtl. Fehler kommt Exception "Rueckstand"
UPDATE BAUFPO
SET BMWST_ID_MWSTKZ = :NEU_BMWST_ID
WHERE BMWST_ID_MWSTKZ = :OLD_BMWST_ID AND
LS_OFFEN > 0.0 AND
RG_OFFEN > 0.0 AND
LLTERMIN_AN >= '01.01.2020';
-- Lieferantenstamm
UPDATE BLIEF
SET BMWST_ID = :NEU_BMWST_ID
WHERE BMWST_ID = :OLD_BMWST_ID AND
KZ_MWST = :SJA;
-- Artikelstamm Lieferanten
UPDATE BSAL
SET BMWST_ID = :NEU_BMWST_ID
WHERE BMWST_ID = :OLD_BMWST_ID;
-- Offene Bestellpositionen
UPDATE BBESP
SET BMWST_ID = :NEU_BMWST_ID
WHERE BMWST_ID = :OLD_BMWST_ID AND
RE_OFFEN > 0.0;
END
Falls jemand noch Verbesserungsvorschläge
![Idea :idea:](./images/smilies/icon_idea.gif)
![Very Happy :D](./images/smilies/icon_biggrin.gif)
So, das wars.
Schönen Restsonntag
MfG
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
-
- Beiträge: 515
- Registriert: Di Okt 19, 2004 5:45 am
- Wohnort: Diepholz
Re: MwSt Änderung ab 01.07.2020
Update am 30.06.2020
Die Prozedure habe ich nochmals überarbeitet.
Jetzt wird zuerst in der Tabelle BSAFIBUZW jeweils 1 Datensatz des alten MwSt-Satzes ausgelesen und dann als Kopie mit dem neuen MwSt-Satz eingefügt.
Danach werden die Datensätze in BARTG1FIBU und BARTG2FIBU angelegt.
Das Update der Tabelle BSA mit dem neuen MwSt-Satz ist mit Vorsicht auszuführen, da auch hier von Synerpy meines Erachtens nicht zu Ende gedacht hat.
Es wird nämlich im Trigger BSA_AU0 bei einem Update der MwSt die BSAFIBUZW neu aufgebaut und zwar mit den Vorbelegungen aus BARTG1FIBU bzw. BARTG2FIBU und somit werden alle selbst definierten Konten mit den Vorbelegungen überschrieben.
Hier der Quellcode zu den Prozeduren und den geänderten Trigger:
Das bezieht sich auf die Datenbank AVERP2020.01
Trigger BSA_AU0:
Prozedur PROCEDURE P_BSAFIBUZW_BMWST_NEU wird von Prozedur P_BSAFIBUZW_BMWST_NEU aufgerufen
Prozedur P_BSAFIBUZW_BMWST_NEU_HVH
Ich hoffe, ich konnte ein wenig Licht ins Dunkle bringen ![Idea :idea:](./images/smilies/icon_idea.gif)
Die Prozedure habe ich nochmals überarbeitet.
Jetzt wird zuerst in der Tabelle BSAFIBUZW jeweils 1 Datensatz des alten MwSt-Satzes ausgelesen und dann als Kopie mit dem neuen MwSt-Satz eingefügt.
Danach werden die Datensätze in BARTG1FIBU und BARTG2FIBU angelegt.
Das Update der Tabelle BSA mit dem neuen MwSt-Satz ist mit Vorsicht auszuführen, da auch hier von Synerpy meines Erachtens nicht zu Ende gedacht hat.
Es wird nämlich im Trigger BSA_AU0 bei einem Update der MwSt die BSAFIBUZW neu aufgebaut und zwar mit den Vorbelegungen aus BARTG1FIBU bzw. BARTG2FIBU und somit werden alle selbst definierten Konten mit den Vorbelegungen überschrieben.
Hier der Quellcode zu den Prozeduren und den geänderten Trigger:
Das bezieht sich auf die Datenbank AVERP2020.01
Trigger BSA_AU0:
Code: Alles auswählen
SET SQL DIALECT 3;
SET TERM ^ ;
CREATE OR ALTER TRIGGER BSA_AU0 FOR BSA
ACTIVE AFTER UPDATE POSITION 0
AS
DECLARE nAusgangID TYPE OF COLUMN BVORLAGE.ID;
DECLARE nEingangID TYPE OF COLUMN BVORLAGE.ID;
DECLARE nFertEingID TYPE OF COLUMN BVORLAGE.ID;
DECLARE nFertAusgID TYPE OF COLUMN BVORLAGE.ID;
DECLARE BSAP_ID TYPE OF COLUMN BVORLAGE.ID;
DECLARE BFA_ID TYPE OF COLUMN BVORLAGE.ID;
DECLARE BMAND_ID_TEMP TYPE OF COLUMN BVORLAGE.ID;
DECLARE HK1_BER_SCHEMA TYPE OF COLUMN BMAND.HK1_BER_SCHEMA;
DECLARE BARTPH_ID TYPE OF COLUMN BVORLAGE.ID;
DECLARE F_EKMPREIS TYPE OF COLUMN BARTG1.F_EKMPREIS;
DECLARE F_EKHPREIS TYPE OF COLUMN BARTG1.F_EKHPREIS;
DECLARE F_EKVKMIN TYPE OF COLUMN BARTG1.F_EKVKMIN;
DECLARE BSAPE_ID TYPE OF COLUMN BVORLAGE.ID;
DECLARE BARTLH_ID TYPE OF COLUMN BVORLAGE.ID;
DECLARE GESAMTGUSS_GEW TYPE OF COLUMN BSAP.GESAMTGUSS_GEW;
DECLARE MENGE TYPE OF COLUMN BSAP.MINDSTCK;
DECLARE ANGUSSGEW TYPE OF COLUMN BSAP.ANGUSS_GEW;
DECLARE BLAGER_ID TYPE OF COLUMN BVORLAGE.ID;
DECLARE BARTG2WF_ID TYPE OF COLUMN BVORLAGE.ID;
DECLARE BSAWEQU_ID TYPE OF COLUMN BVORLAGE.ID;
DECLARE BSAS_ID TYPE OF COLUMN BVORLAGE.ID;
DECLARE FREIGABE TYPE OF COLUMN BSAS.PREISNEU_JN;
DECLARE SYNERPY_KUNR TYPE OF COLUMN BFIRMA.SYNERPY_KUNR;
DECLARE SJA TYPE OF COLUMN BFIRMA.JA;
DECLARE SNEIN TYPE OF COLUMN BFIRMA.NEIN;
BEGIN
/* LETZTER STAND 20.11.2018 13:34:48 AS */
EXECUTE PROCEDURE P_BFIRMA_JANEIN RETURNING_VALUES(:sJa,:sNein);
EXECUTE PROCEDURE P_BFIRMA_SYNERPY_KUNR RETURNING_VALUES (:SYNERPY_KUNR);
IF (USER <> 'WORSTCASE') THEN
BEGIN
-- Wenn die Aktivität eines Artikels verändert wird, dann wird auch der Artikel in BFAM verändert
IF (NEW.AKTIV_JN <> OLD.AKTIV_JN) THEN
UPDATE BFAM
SET BSA_AKTIV_JN = NEW.AKTIV_JN
WHERE BSA_ID_MATNR = NEW.ID AND
STATUS IN ('P','A') AND
BSA_AKTIV_JN <> NEW.AKTIV_JN;
-- Wenn die Mehrwertsteuer verändert wurde, diese ggf. in den Mandantendaten
-- nachpflegen
IF (NEW.BMWST_ID_MWSTKZ <> OLD.BMWST_ID_MWSTKZ) THEN
UPDATE BSABMAND
SET BMWST_ID = NEW.BMWST_ID_MWSTKZ
WHERE BMWST_ID = OLD.BMWST_ID_MWSTKZ AND
BSA_ID_LINKKEY = NEW.ID;
-- Verkaufspreisdatensätze je Mandant erzeugen
IF ((NEW.HK1 IS DISTINCT FROM OLD.HK1) AND (NEW.K_VK IN (sJa, 'K'))) THEN
BEGIN
IF (NEW.HK1 = 0.0) THEN
BEGIN
-- automatische Kundenpreise löschen, die nicht für einen Kunden sind
DELETE FROM BARTPH
WHERE BSA_ID_LINKKEY = NEW.ID AND
AUTOPREIS = :sJA AND
BKUNDE_ID IS NULL;
END
ELSE
BEGIN
FOR SELECT B.ID, B.HK1_BER_SCHEMA
FROM BMAND B
WHERE B.ID >= 1
INTO :BMAND_ID_TEMP, :HK1_BER_SCHEMA
DO
BEGIN
IF (HK1_BER_SCHEMA = 0) THEN
-- eine Preisliste pro Mandant
EXECUTE PROCEDURE P_BSA_BARTPH_NEU(NEW.ID,3);
ELSE IF (HK1_BER_SCHEMA = 1) THEN
-- Margenpreisberechnung
EXECUTE PROCEDURE P_VK_MARGE_BERECHNUNG(NEW.ID, :BMAND_ID_TEMP);
ELSE IF (HK1_BER_SCHEMA = 2) THEN
-- alle Preislisten
EXECUTE PROCEDURE P_BSA_BARTPH_NEU(NEW.ID,1);
ELSE IF (HK1_BER_SCHEMA = 3) THEN
-- Alle Preise neu Berechnen. Prozente bei Staffelpreisen beachten.
EXECUTE PROCEDURE P_BSA_BARTPH_NEU(NEW.ID,4);
END
END
END
IF (((NEW.K_LPFL <> OLD.K_LPFL) OR
(NEW.K_DIENST <> OLD.K_LPFL) OR
(NEW.BARTG6_ID_WGR6K <> OLD.BARTG6_ID_WGR6K)) AND
(NEW.K_LPFL = sJA) AND (NEW.K_DIENST = sJA)) THEN
BEGIN
-- Standardlager erzeugen , wie Kz. Lagerpflegen steht wird in Procedure geprüft
SELECT BLAGER_ID_FV_AL, BLAGER_ID_FV_EL
FROM BFIRMA
WHERE ID = 1
INTO :nAusgangID, :nEingangID ;
IF (nAusgangID IS NOT NULL) THEN
EXECUTE PROCEDURE P_BARTLH_TEST(NEW.ID, :nAusgangID)
RETURNING_VALUES (:BARTLH_ID);
IF (nEingangID IS NOT NULL) THEN
EXECUTE PROCEDURE P_BARTLH_TEST(NEW.ID, :nEingangID)
RETURNING_VALUES (:BARTLH_ID);
SELECT A.BLAGER_ID_IN, A.BLAGER_ID_VON
FROM BARTG6 A
WHERE ID = NEW.BARTG6_ID_WGR6K
INTO :nFertAusgID, :nFertEingID;
IF (nFertAusgID IS NOT NULL) THEN
EXECUTE PROCEDURE P_BARTLH_TEST(NEW.ID, :nFertAusgID)
RETURNING_VALUES (:BARTLH_ID);
IF (nFertEingID IS NOT NULL) THEN
EXECUTE PROCEDURE P_BARTLH_TEST(NEW.ID, :nFertEingID)
RETURNING_VALUES (:BARTLH_ID);
-- Bei LA01 das Projektlager anlegen
IF ((SYNERPY_KUNR = 'LA01') AND (NEW.BARTG6_ID_WGR6K = 1)) THEN
EXECUTE PROCEDURE P_BARTLH_TEST(NEW.ID, 5)
RETURNING_VALUES(:BARTLH_ID);
BARTLH_ID = BARTLH_ID;
END
-- Neuberechnung aller abhängigen Teile durchführen
IF ((NEW.AKTIV_JN <> OLD.AKTIV_JN) AND (NEW.AKTIV_JN = 'A')) THEN
UPDATE BARTLH
SET BESTELLEN = :SNEIN,
LMIND = 0.0
WHERE BSA_ID_LINKKEY = NEW.ID AND
((BESTELLEN = :SJA) OR (LMIND <> 0.0));
-- Änderung oder von Kennzeichen -> beeinflusst Bestellvorschläge
IF ((NEW.K_LPFL <> OLD.K_LPFL) OR
(NEW.KANBAN_JN <> OLD.KANBAN_JN) OR
(NEW.K_DIENST <> OLD.K_DIENST) OR
(NEW.BESTELLEN <> OLD.BESTELLEN) OR
(NEW.BSAL_KZ <> OLD.BSAL_KZ)) THEN
UPDATE BARTLH
SET LLEBE = CURRENT_DATE,
LLEBE_TIMESTAMP = CURRENT_TIMESTAMP
WHERE BSA_ID_LINKKEY = NEW.ID;
-- Neubestimmung der Kalkulationsgrundlage und der Wiederbeschaffungszeit
IF ((NEW.FERTKZ <> OLD.FERTKZ) OR
(NEW.LLZEIT <> OLD.LLZEIT)) THEN
UPDATE BSAHK
SET ID = ID
WHERE BSA_ID_LINKKEY = OLD.ID;
IF ((NEW.BARTG2_ID_WGR2K IS DISTINCT FROM OLD.BARTG2_ID_WGR2K) OR
(NEW.BSAL_KZ <> OLD.BSAL_KZ)) THEN
BEGIN
-- Änderung des Lieferanten
IF (NEW.BSAL_KZ <> OLD.BSAL_KZ) THEN
EXECUTE PROCEDURE P_BSAL_ZU_BSA(NEW.ID, NULL);
-- Zukauf Arb.Gang neu kalkulieren
FOR SELECT ID
FROM BSAPE
WHERE BSA_ID = OLD.ID
INTO :BSAPE_ID
DO
EXECUTE PROCEDURE P_BSAPE_KALKPREIS(:BSAPE_ID);
END
-- Wenn inaktiv, dann auch alle Lager und Lieferanten und Webshopartikel inaktiv machen
IF ((NEW.AKTIV_JN = sNEIN) AND (OLD.AKTIV_JN <> sNEIN)) THEN
BEGIN
UPDATE BARTLH
SET AKTIV_JN = :sNEIN
WHERE BSA_ID_LINKKEY = NEW.ID AND
AKTIV_JN = :SJA;
UPDATE BSAL
SET L_STATUS = :SNEIN
WHERE BSA_ID_LINKKEY = NEW.ID AND
L_STATUS <> :sNEIN;
UPDATE BSAWS
SET AKTIV_JN = :SNEIN
WHERE BSA_ID_LINKKEY = NEW.ID AND
AKTIV_JN <> :sNEIN;
END
-- Wenn sich Herstellerangaben ändern, dann auch in BSAL ändern
IF ((NEW.HERSTARTBEZ IS DISTINCT FROM OLD.HERSTARTBEZ) OR
(NEW.HERSTARTNR IS DISTINCT FROM OLD.HERSTARTNR) OR
(NEW.BHERST_ID IS DISTINCT FROM NEW.BHERST_ID)) THEN
UPDATE BSAL
SET HERSTARTBEZ = NEW.HERSTARTBEZ,
HERSTARTNR = NEW.HERSTARTNR,
BHERST_ID = NEW.BHERST_ID
WHERE BSA_ID_LINKKEY = NEW.ID AND
((HERSTARTBEZ IS DISTINCT FROM NEW.HERSTARTBEZ) OR
(HERSTARTNR IS DISTINCT FROM NEW.HERSTARTNR) OR
(BHERST_ID IS DISTINCT FROM NEW.BHERST_ID));
-- Gewicht für Stückliste und Arbeitsplan - Materialposition berechnen
IF ((NEW.GKLVE_E IS DISTINCT FROM OLD.GKLVE_E) OR
(NEW.KLVE_E IS DISTINCT FROM OLD.KLVE_E) OR
(NEW.KLVE_V IS DISTINCT FROM OLD.KLVE_V) OR
(NEW.GEWICHT IS DISTINCT FROM OLD.GEWICHT) OR
(NEW.BSAS_GEWICHT IS DISTINCT FROM OLD.BSAS_GEWICHT) OR
(NEW.FAKTOR_LE IS DISTINCT FROM OLD.FAKTOR_LE) OR
(NEW.FAKTOR_LF IS DISTINCT FROM OLD.FAKTOR_LF) OR
(NEW.FAKTOR_LV IS DISTINCT FROM OLD.FAKTOR_LV)) THEN
BEGIN
-- MM: Wurde aus performancetechnischen Gründen in einen Job über Nacht ausgelagert
IF (SYNERPY_KUNR = 'FL08') THEN
INSERT INTO T_GKLVE_E (
BSA_ID)
VALUES (
NEW.ID);
ELSE
EXECUTE PROCEDURE P_BSA_GEWICHT_CHANGE(NEW.ID, NEW.GKLVE_E, NEW.KLVE_E, NEW.BSAS_GEWICHT,
NEW.GEWICHT, NEW.KLVE_V);
END
-- Arbeitsstammplan korrigieren
IF (NEW.BMENG_ID_ME_F <> OLD.BMENG_ID_ME_F) THEN
BEGIN
UPDATE BSAPM
SET BMENG_ID_MASSMENG = NEW.BMENG_ID_ME_F
WHERE BSA_ID_ARTNR = OLD.ID AND
BMENG_ID_MASSMENG <> NEW.BMENG_ID_ME_F;
UPDATE BSAP
SET BMENG_ID_ME_F = NEW.BMENG_ID_ME_F
WHERE BSA_ID_ARTNR = OLD.ID AND
BMENG_ID_ME_F <> NEW.BMENG_ID_ME_F;
END
IF (NEW.BMENG_ID_ME_L <> OLD.BMENG_ID_ME_L) THEN
UPDATE BSEF
SET BMENG_ID_ME_L = NEW.BMENG_ID_ME_L
WHERE BSA_ID_ARTNR = NEW.ID AND
BMENG_ID_ME_L <> NEW.BMENG_ID_ME_L;
IF (NEW.BMENG_ID_PE_E <> OLD.BMENG_ID_PE_E) THEN
UPDATE BSAPM
SET BMENG_ID_PREISHEIT = NEW.BMENG_ID_PE_E
WHERE BSA_ID_ARTNR = OLD.ID AND
BMENG_ID_PREISHEIT <> NEW.BMENG_ID_PE_E;
-- Änderung von Oberfläche/Farbe/WrGrp EK => Arbeitsplan sperren
IF ((NEW.BOBERF_ID IS DISTINCT FROM OLD.BOBERF_ID) OR
(NEW.BFARB_ID IS DISTINCT FROM OLD.BFARB_ID) OR
(NEW.BARTG2_ID_WGR2K IS DISTINCT FROM OLD.BARTG2_ID_WGR2K)) THEN
BEGIN
-- Artikel ist Kopfartikel
UPDATE BSAP
SET PREISNEU_JN = :SJA
WHERE BSA_ID_ARTNR = NEW.ID AND
PREISNEU_JN IS DISTINCT FROM :SJA;
-- Artikel ist Material
FOR SELECT B.ID
FROM BSAPM A
LEFT OUTER JOIN BSAP B ON A.BSAP_ID_LINKKEY = B.ID
WHERE A.BSA_ID_ARTNR = NEW.ID AND
B.PREISNEU_JN IS DISTINCT FROM :SJA
INTO :BSAP_ID
DO
UPDATE BSAP
SET PREISNEU_JN = :SJA
WHERE ID = :BSAP_ID;
END
-- Lagervorbelegung für Warengruppe EK
IF (NEW.BARTG2_ID_WGR2K IS DISTINCT FROM OLD.BARTG2_ID_WGR2K) THEN
BEGIN
-- Bestehende, nicht verwendete Lager löschen, die aus einer
-- Einkaufswarengruppenvorbelegung stammen
FOR SELECT BLAGER_ID
FROM BARTG2LAG
WHERE BARTG2_ID_LINKKEY = OLD.BARTG2_ID_WGR2K
INTO :BLAGER_ID
DO
DELETE FROM BARTLH A
WHERE A.BSA_ID_LINKKEY = NEW.ID AND
A.BLAGER_ID_LAGERNR = :BLAGER_ID AND
A.LIST = 0 AND
A.LVERF = 0 AND
A.LEIN = 0 AND
A.LLEAB IS NULL AND
A.LLEZU IS NULL AND
NOT EXISTS (SELECT FIRST 1 W.ID
FROM BARTLHBUX W
WHERE W.BARTLH_ID = A.ID) AND
NOT EXISTS (SELECT FIRST 1 X.ID
FROM BSAP X
WHERE X.BARTLH_ID_LAGERNR = A.ID) AND
NOT EXISTS (SELECT FIRST 1 Y.ID
FROM BSAS Y
WHERE Y.BARTLH_ID = A.ID) AND
NOT EXISTS (SELECT FIRST 1 Z.ID
FROM BSAPM Z
WHERE Z.BARTLH_ID_LAGERNR = A.ID) AND
NOT EXISTS (SELECT FIRST 1 W.ID
FROM BBVOX W
WHERE W.BARTLH_ID = A.ID) AND
NOT EXISTS (SELECT FIRST 1 U.ID
FROM BBVO U
WHERE U.BARTLH_ID = A.ID) AND
NOT EXISTS (SELECT FIRST 1 V.ID
FROM BAUFPO V
WHERE V.BARTLH_ID_LAGERNR = A.ID) AND
NOT EXISTS (SELECT FIRST 1 T.ID
FROM BBESP T
WHERE T.BARTLH_ID = A.ID) AND
NOT EXISTS (SELECT FIRST 1 AA.ID
FROM BRRCP AA
WHERE AA.BARTLH_ID_LAGERNR = A.ID) AND
NOT EXISTS (SELECT FIRST 1 AB.ID
FROM BRLSP AB
WHERE AB.BARTLH_ID_LAGERNR = A.ID) AND
NOT EXISTS (SELECT FIRST 1 AC.ID
FROM BLLCP AC
WHERE AC.BARTLH_ID_LAGERNR = A.ID) AND
NOT EXISTS (SELECT FIRST 1 AD.ID
FROM BLRCP AD
WHERE AD.BARTLH_ID = A.ID) AND
NOT EXISTS (SELECT FIRST 1 AE.ID
FROM BWALPO AE
WHERE AE.BARTLH_ID = A.ID) AND
NOT EXISTS (SELECT FIRST 1 AF.ID
FROM BKBTBESPO AF
WHERE AF.BARTLH_ID = A.ID) AND
NOT EXISTS (SELECT FIRST 1 AG.ID
FROM BKBTLLCP AG
WHERE AG.BARTLH_ID = A.ID) AND
NOT EXISTS (SELECT FIRST 1 AH.ID
FROM BLAGVE AH
WHERE ((AH.BARTLH_ID_INLAGER = A.ID) OR (AH.BARTLH_ID_VONLAGER = A.ID)) AND
NOT EXISTS (SELECT FIRST 1 AI.ID
FROM BLINV AI
WHERE AI.BARTLH_ID = A.ID) AND
NOT EXISTS (SELECT FIRST 1 AJ.ID
FROM BINVRK AJ
WHERE AJ.BARTLH_ID = A.ID) AND
NOT EXISTS (SELECT FIRST 1 AK.ID
FROM BLPINV AK
WHERE AK.BARTLH_ID = A.ID)) AND
NOT EXISTS (SELECT FIRST 1 AK.ID
FROM BLPINV AK
WHERE AK.BARTLHPO_ID IN (SELECT X.ID
FROM BARTLHPO X
WHERE X.BARTLH_ID_LINKKEY = A.ID));
-- Neue Lagervorbelegungen anlegen
IF ((SYNERPY_KUNR NOT IN ('KH05', 'LM02')) OR
((SYNERPY_KUNR IN ('KH05', 'LM02')) AND
(NOT EXISTS(SELECT FIRST 1 ID
FROM BARTLH
WHERE BSA_ID_LINKKEY = NEW.ID AND
AKTIV_JN = :SJA)))) THEN
FOR SELECT BLAGER_ID
FROM BARTG2LAG
WHERE BARTG2_ID_LINKKEY = NEW.BARTG2_ID_WGR2K
INTO :BLAGER_ID
DO
EXECUTE PROCEDURE P_BARTLH_TEST (NEW.ID, :BLAGER_ID)
RETURNING_VALUES (:BARTLH_ID);
END
-- Bei Änderung der Fibukonten Zuweisung löschen und nach neuen Vorgaben
-- anlegen
-- Letzter Stand: 30.06.2020 14:55:52 by KDP
-- Was hat Synerpy sich dabei gedacht, bei einem wechsel der MwSt die
-- komplette BSAFIBUZW neu aufzubauen
-- alle eigenen Anpassung werden durch die Vorlage überschrieben
IF ((NEW.BARTG1_ID_WGR1K IS DISTINCT FROM OLD.BARTG1_ID_WGR1K) OR
(NEW.BARTG2_ID_WGR2K IS DISTINCT FROM OLD.BARTG2_ID_WGR2K) OR
(NEW.BFIBUKTO_ID_VK IS DISTINCT FROM OLD.BFIBUKTO_ID_VK) OR
(NEW.BFIBUKTO_ID_EK IS DISTINCT FROM OLD.BFIBUKTO_ID_EK)) THEN -- OR
-- (NEW.BMWST_ID_MWSTKZ IS DISTINCT FROM OLD.BMWST_ID_MWSTKZ)) THEN
EXECUTE PROCEDURE P_BSA_BSAFIBUZW(NEW.ID);
-- Gussgewicht in Fertigungsauftrag und Arbeitsstammplan neu durchrechnen
IF ((NEW.BWERK_ID_WERKSTOFF <> OLD.BWERK_ID_WERKSTOFF) OR
((NEW.BWERK_ID_WERKSTOFF IS NOT NULL) AND (OLD.BWERK_ID_WERKSTOFF IS NULL)) OR
(NEW.VOLK_E <> OLD.VOLK_E) OR
((NEW.VOLK_E IS NOT NULL) AND (OLD.VOLK_E IS NULL)) OR
(NEW.GEWICHT <> OLD.GEWICHT) OR
((NEW.GEWICHT IS NOT NULL) AND (OLD.GEWICHT IS NULL))) THEN
BEGIN
-- Arbeitsstammplan
FOR SELECT A.ID, A.MINDSTCK, A.ANGUSS_GEW
FROM BSAP A
WHERE A.BSA_ID_ARTNR = NEW.ID AND
NEW.AKTIV_JN = :SJA AND
A.BMAND_ID IN (SELECT ID
FROM BMAND
WHERE ID >= 1 AND
GUSSGEW_BERECH = :SJA)
INTO :BSAP_ID, :MENGE, :ANGUSSGEW
DO
BEGIN
EXECUTE PROCEDURE P_BFA_BSAP_GUSS_NEU(:BSAP_ID, 'BSAP', :ANGUSSGEW, :MENGE)
RETURNING_VALUES(:GESAMTGUSS_GEW);
UPDATE BSAP
SET GESAMTGUSS_GEW = :GESAMTGUSS_GEW
WHERE ID = :BSAP_ID AND
GESAMTGUSS_GEW <> :GESAMTGUSS_GEW;
END
-- Fertigungsauftrag
FOR SELECT A.ID, A.STUECKZAHL, A.ANGUSS_GEW
FROM BFA A
WHERE A.BSA_ID_ARTNR = NEW.ID AND
NEW.AKTIV_JN = :SJA AND
A.BMAND_ID IN (SELECT ID
FROM BMAND
WHERE ID >= 1 AND
GUSSGEW_BERECH = :SJA)
INTO :BFA_ID, :MENGE, :ANGUSSGEW
DO
BEGIN
EXECUTE PROCEDURE P_BFA_BSAP_GUSS_NEU(:BFA_ID,'BFA', :ANGUSSGEW, :MENGE)
RETURNING_VALUES(:GESAMTGUSS_GEW);
UPDATE BFA
SET GESAMTGUSS_GEW = :GESAMTGUSS_GEW
WHERE ID = :BFA_ID AND
GESAMTGUSS_GEW <> :GESAMTGUSS_GEW AND
STATUS IN ('P', 'A', 'I');
END
END
-- Kundenpreislisten durchlaufen
FOR SELECT A.ID
FROM BARTPH A
LEFT OUTER JOIN BARTPHFHPR B ON B.BARTPH_ID_LINKKEY = A.ID
WHERE A.BSA_ID_LINKKEY = NEW.ID AND
B.ID IS NOT NULL
INTO :BARTPH_ID
DO
BEGIN
-- Kalkulationsfaktoren aus Verkaufswarengruppe berücksichtigen
IF (NEW.BARTG1_ID_WGR1K IS DISTINCT FROM OLD.BARTG1_ID_WGR1K AND
NEW.BARTG1_ID_WGR1K IS NOT NULL) THEN
BEGIN
SELECT COALESCE(B.F_EKMPREIS, 0.00),
COALESCE(B.F_EKHPREIS, 0.00),
COALESCE(B.F_EKVKMIN, 0.00)
FROM BARTG1 B
WHERE B.ID = NEW.BARTG1_ID_WGR1K
INTO :F_EKMPREIS,
:F_EKHPREIS,
:F_EKVKMIN;
-- Faktoren eintragen
UPDATE BARTPHFHPR
SET F_EK_HPREIS = :F_EKHPREIS,
F_EK_MPREIS = :F_EKMPREIS,
F_EK_VKMIN = :F_EKVKMIN
WHERE BARTPH_ID_LINKKEY = :BARTPH_ID AND
PREISAKT = :SJA;
END
-- DurchEK in Fachhandel neuberechnen
IF (NEW.DURCHEK IS DISTINCT FROM OLD.DURCHEK AND
NEW.DURCHEK IS NOT NULL) THEN
UPDATE BARTPHFHPR
SET BSA_EK = NEW.DURCHEK
WHERE BARTPH_ID_LINKKEY = :BARTPH_ID AND
PREISAKT = :SJA AND
KALK_NACH = 'D' AND
BSA_EK <> NEW.DURCHEK;
END
-- WE Qual. anlegen -> Vorbelegung aus WrGrp.Einkauf
IF (NEW.BARTG2_ID_WGR2K IS DISTINCT FROM OLD.BARTG2_ID_WGR2K AND
NEW.BARTG2_ID_WGR2K IS NOT NULL) THEN
BEGIN
-- WE Qual. anlegen, wenn noch keine vorhanden waren
IF (NOT EXISTS (SELECT FIRST 1 ID
FROM BSAWEQU
WHERE BSA_ID_LINKKEY = NEW.ID) AND
EXISTS (SELECT FIRST 1 ID
FROM BARTG2WF
WHERE BARTG2_ID_LINKKEY = NEW.BARTG2_ID_WGR2K)) THEN
BEGIN
FOR SELECT ID
FROM BARTG2WF
WHERE BARTG2_ID_LINKKEY = NEW.BARTG2_ID_WGR2K
INTO :BARTG2WF_ID
DO
BEGIN
BSAWEQU_ID = NULL;
INSERT INTO BSAWEQU (
BSA_ID_LINKKEY,
BMAND_ID,
STATUS,
AKTIV,
VERWENDUNG,
BPROPT_ID,
BEMERKUNG,
DATEI,
TEXT,
BUCHUNGSART)
SELECT
NEW.ID,
BMAND_ID,
STATUS,
:sJA,
VERWENDUNG,
BPROPT_ID,
BEMERKUNG,
DATEI,
TEXT,
BUCHUNGSART
FROM BARTG2WF
WHERE ID = :BARTG2WF_ID
RETURNING ID
INTO :BSAWEQU_ID;
INSERT INTO BSAWEQULU(
BSAWEQU_ID_LINKKEY,
BLAGER_ID_ZIEL)
SELECT
:BSAWEQU_ID,
BLAGER_ID_ZIEL
FROM BARTG2WFLU
WHERE BARTG2WF_ID_LINKKEY = :BARTG2WF_ID;
END
END
END
IF ((NEW.AKTIV_JN <> OLD.AKTIV_JN) AND (NEW.AKTIV_JN = 'A')) THEN
UPDATE BSAL A
SET A.L_STATUS = :SNEIN
WHERE A.BSA_ID_LINKKEY = NEW.ID AND
A.L_STATUS IS DISTINCT FROM :SNEIN;
IF (NEW.BZEI_ID IS NULL) THEN
BEGIN
-- die Änderung an der Zeichung nur weiter reichen, wenn diese nicht mit der
-- CAD-Zeichnungsverwaltung verknüpft ist
IF (((OLD.ZEICHNR IS DISTINCT FROM NEW.ZEICHNR) OR
(OLD.EPLANNR IS DISTINCT FROM NEW.EPLANNR) OR
(OLD.ZEICHNR_BLATT IS DISTINCT FROM NEW.ZEICHNR_BLATT) OR
(OLD.ZEICHNR_POS IS DISTINCT FROM NEW.ZEICHNR_POS) OR
(OLD.ZEICHNR_REV IS DISTINCT FROM NEW.ZEICHNR_REV) OR
(OLD.KZEICHNR IS DISTINCT FROM NEW.KZEICHNR) OR
(OLD.KZEICHNR_BLATT IS DISTINCT FROM NEW.KZEICHNR_BLATT) OR
(OLD.KZEICHNR_POS IS DISTINCT FROM NEW.KZEICHNR_POS) OR
(OLD.KZEICHNR_REV IS DISTINCT FROM NEW.KZEICHNR_REV)) AND
(SYNERPY_KUNR IS DISTINCT FROM 'ES14'))THEN
EXECUTE PROCEDURE P_BSA_ZEICHNR_UPDATE_ALLE(NEW.ID, NEW.BZEI_ID, NEW.BZEIAE_ID,
NEW.ZEICHNR,NEW.ZEICHNR_BLATT,
NEW.ZEICHNR_POS,NEW.ZEICHNR_REV,NEW.KZEICHNR,
NEW.KZEICHNR_BLATT,NEW.KZEICHNR_POS,
NEW.KZEICHNR_REV, NEW.EPLANNR,
NEW.BWERK_ID_WERKSTOFF, 1, :SJA, :SJA);
END
-- KL06 spezifisch das Kennzeichen EK-Preis skontierbar übertragen
IF (COALESCE(SYNERPY_KUNR,'') IS NOT DISTINCT FROM 'KL06') THEN
UPDATE BSAL
SET SKONTO_EK_JN = NEW.SKONTO_EK_JN
WHERE BSA_ID_LINKKEY = NEW.ID AND
SKONTO_EK_JN IS DISTINCT FROM NEW.SKONTO_EK_JN;
IF (SYNERPY_KUNR = 'ZE05') THEN
BEGIN
IF (NEW.BPROPT_ID IS DISTINCT FROM OLD.BPROPT_ID) THEN
BEGIN
UPDATE BSAS
SET BPROPT_ID = NEW.BPROPT_ID
WHERE BSA_ID_LINKKEY = NEW.ID AND
BPROPT_ID IS DISTINCT FROM NEW.BPROPT_ID;
END
END
-- Ändert sich die Zeichnungsnummer bei PS10, soll diese in alle Stücklistenpositionen übernommen werden
-- Ändert sich das Werkstoff.Kz. bei PS10, soll dieses auch in alle Stücklistenpositionen übernommen werden
IF ((SYNERPY_KUNR = 'PS10') AND ((NEW.ZEICHNR IS DISTINCT FROM OLD.ZEICHNR) OR
(NEW.BWERK_ID_WERKSTOFF IS DISTINCT FROM OLD.BWERK_ID_WERKSTOFF))) THEN
BEGIN
-- Änderung Zeichnungsnummer sperrt den Stücklistenkopf
FOR SELECT A.ID, A.PREISNEU_JN
FROM BSAS A
WHERE EXISTS (SELECT FIRST 1 B.ID
FROM BSASTL B
WHERE B.BSAS_ID_LINKKEY = A.ID AND
B.BSA_ID_ARTNR = NEW.ID)
INTO :BSAS_ID, :FREIGABE
DO
BEGIN
IF (NEW.ZEICHNR IS DISTINCT FROM OLD.ZEICHNR) THEN
UPDATE BSASTL
SET ZEICHNR = NEW.ZEICHNR
WHERE BSAS_ID_LINKKEY = :BSAS_ID AND
BSA_ID_ARTNR = NEW.ID;
IF (NEW.BWERK_ID_WERKSTOFF IS DISTINCT FROM OLD.BWERK_ID_WERKSTOFF) THEN
UPDATE BSASTL
SET BWERK_ID = NEW.BWERK_ID_WERKSTOFF
WHERE BSAS_ID_LINKKEY = :BSAS_ID AND
BSA_ID_ARTNR = NEW.ID;
UPDATE BSAS
SET PREISNEU_JN = :FREIGABE
WHERE ID = :BSAS_ID AND
PREISNEU_JN IS DISTINCT FROM :FREIGABE;
END
END
-- Energiemanagement aus der Produktfamilie vorbelegen
IF ((OLD.BSAFAM_ID IS NULL) AND (NEW.BSAFAM_ID IS NOT NULL)) THEN
INSERT INTO BSAEA(
BSA_ID_LINKKEY,
BENART_ID,
PRO_MENGE,
VERBRAUCH_PLAN,
VERBRAUCH_IST)
SELECT
NEW.ID,
BENART_ID,
1,
VERBRAUCH_PLAN,
0
FROM BSAFAMEA
WHERE BSAFAM_ID_LINKKEY = NEW.BSAFAM_ID;
IF ((OLD.BZEI_ID IS NULL) AND
(NEW.BZEI_ID IS NOT NULL) AND
EXISTS(SELECT FIRST 1 B.ID
FROM BZEI A
LEFT OUTER JOIN BZEIVERWKAT B ON A.BZEIVERWKAT_ID = B.ID
WHERE A.ID = NEW.BZEI_ID AND
B.ARTIKELBEZUG = :SJA)) THEN
UPDATE BZEI
SET BSA_ID_ARTNR = NEW.ID
WHERE ID = NEW.BZEI_ID AND
BSA_ID_ARTNR IS NULL;
END
END
^
SET TERM ; ^
Code: Alles auswählen
SET TERM ^ ;
CREATE OR ALTER PROCEDURE P_BSAFIBUZW_BMWST_NEU (
OLD_MWST INTEGER,
NEW_MWST INTEGER)
AS
DECLARE VARIABLE BSAIDLINKKEY INTEGER;
DECLARE VARIABLE BMANDID INTEGER;
DECLARE VARIABLE BKSTIDVERK INTEGER;
DECLARE VARIABLE BKSTIDEINK INTEGER;
DECLARE VARIABLE BFIBUKTOIDVERK INTEGER;
DECLARE VARIABLE BFIBUKTOIDEINK INTEGER;
begin
/* Erster Stand: 30.06.2020 13:34:57 by KDP */
/* Kopie von DS mit altem MwSt-Satz mit neuem MwSt-Satz anlegen */
FOR SELECT
BSA_ID_LINKKEY,
BMAND_ID,
BKST_ID_VERK,
BKST_ID_EINK,
BFIBUKTO_ID_VK,
BFIBUKTO_ID_EK
FROM BSAFIBUZW
WHERE BMWST_ID = :old_mwst
INTO
:bsaidlinkkey,
:bmandid,
:bkstidverk,
:bkstideink,
:bfibuktoidverk,
:bfibuktoideink
DO BEGIN
UPDATE OR INSERT INTO BSAFIBUZW(
BSA_ID_LINKKEY,
BMAND_ID,
BKST_ID_VERK,
BKST_ID_EINK,
BFIBUKTO_ID_VK,
BFIBUKTO_ID_EK,
BMWST_ID
)
VALUES(
:bsaidlinkkey,
:bmandid,
:bkstidverk,
:bkstideink,
:bfibuktoidverk,
:bfibuktoideink,
:new_mwst
) matching(bsa_id_linkkey, bmwst_id);
END
end
^
SET TERM ; ^
/* Folgende GRANT Anweisungen werden automatisch generiert */
GRANT SELECT,INSERT,UPDATE ON BSAFIBUZW TO PROCEDURE P_BSAFIBUZW_BMWST_NEU;
/* Aktuelle Priviligien auf dieser Prozedur */
GRANT EXECUTE ON PROCEDURE P_BSAFIBUZW_BMWST_NEU TO PROCEDURE P_BMWST_MWST_NEU_HVH;
GRANT EXECUTE ON PROCEDURE P_BSAFIBUZW_BMWST_NEU TO "PUBLIC";
GRANT EXECUTE ON PROCEDURE P_BSAFIBUZW_BMWST_NEU TO SYSDBA;
Code: Alles auswählen
SET TERM ^ ;
CREATE OR ALTER PROCEDURE P_BMWST_MWST_NEU_HVH (
NEU_BMWST_ID TYPE OF COLUMN BVORLAGE.ID,
OLD_BMWST_ID TYPE OF COLUMN BVORLAGE.ID,
IKONTOVK TYPE OF COLUMN BVORLAGE.ID,
IKONTOEK TYPE OF COLUMN BVORLAGE.ID)
AS
DECLARE VARIABLE MYID TYPE OF COLUMN BVORLAGE.ID;
DECLARE VARIABLE BMAND_ID TYPE OF COLUMN BVORLAGE.ID;
DECLARE VARIABLE SJA TYPE OF COLUMN BFIRMA.JA;
DECLARE VARIABLE SNEIN TYPE OF COLUMN BFIRMA.NEIN;
DECLARE VARIABLE WARENGRUPPEID TYPE OF COLUMN BVORLAGE.ID;
BEGIN
/* Letzter Stand: 20.06.2020 08:17:53 by KDP */
/* Feld BMWST_ID_KZ auf BMWST_KZ geändert in BMAND */
/* IN BMWST_ID_KZ steht der Steuersatz von 0%!!! und sollte nicht geändert werden */
/* Letzter Stand: 26.06.2020 08:06:02 by KDP */
/* DS in Warengruppe Verkauf - Vorbelegung mit neuem MwSt-Satz anlegen, falls nicht vorhanden */
/* Prozedure kopiert und umbenannt ..._HVH */
/* LETZTER STAND 28.06.2018 08:53:43 JF */
/* ERSTER STAND: 11.12.2007 18:18:41 AK */
/* PROTOKOLLIEREN, DASS AKTION HIER DURCHGELAUFEN IST */
IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('P_BMWST_MWST_NEU_HVH');
/* Mehrwertsteuersatz ändern
Außer Stammdaten wird der MwStSatz nur geändert, wenn
die Positionen noch nicht geliefert wurden, da der Tag der Lieferung
entscheidend ist. Sollte es trotzdem einmal anders sein, so kann der
Benutzer in den Positionen den Steuersatz noch einmal ändern */
EXECUTE PROCEDURE P_BFIRMA_JANEIN RETURNING_VALUES (:SJA, :SNEIN);
EXECUTE PROCEDURE P_BMAND_CHECK RETURNING_VALUES(:BMAND_ID);
IF ((COALESCE(NEU_BMWST_ID,0) = 0) OR
(COALESCE(OLD_BMWST_ID,0) = 0) OR
(NEU_BMWST_ID IS NOT DISTINCT FROM OLD_BMWST_ID)) THEN
EXIT;
-- Einen neuen DS in BSAFIBUZW anlegen aus Kopie alter MwSt-Satz
EXECUTE PROCEDURE P_BSAFIBUZW_BMWST_NEU(:old_bmwst_id,:neu_BMWST_ID);
-- Warengruppe Verkauf durchlaufen und
-- je einen DS in BARTG1FIBU für neuen MwST-Satz anlegen
-- falls noch nicht vorhanden
-- falls ikontovk angegeben dieses verwenden, ansonsten Konto aus Kopie aus alten MwSt-Satz
FOR SELECT ID
FROM BARTG1
INTO
:warengruppeid
DO BEGIN
IF (NOT EXISTS(SELECT ID FROM BARTG1FIBU WHERE BARTG1_ID_LINKKEY = :warengruppeid AND BMWST_ID = :NEU_BMWST_ID)) THEN BEGIN
INSERT INTO BARTG1FIBU(
BARTG1_ID_LINKKEY,
BMWST_ID,
BMAND_ID,
BFIBUKTO_ID,
BKST_ID
)
SELECT
A.BARTG1_ID_LINKKEY,
:NEU_BMWST_ID,
A.BMAND_ID,
CASE WHEN
COALESCE(:ikontovk,0) = 0 THEN A.BFIBUKTO_ID
ELSE
:ikontovk
END,
A.BKST_ID
FROM BARTG1FIBU A
LEFT OUTER JOIN BMWST B ON B.ID = :NEU_BMWST_ID
WHERE A.BARTG1_ID_LINKKEY = :warengruppeid AND A.BMWST_ID = :OLD_BMWST_ID
;
END
END
-- Warengruppe Einkauf durchlaufen und
-- je einen DS in BARTG2FIBU für neuen MwST-Satz anlegen
-- falls noch nicht vorhanden
FOR SELECT ID
FROM BARTG2
INTO
:warengruppeid
DO BEGIN
IF (NOT EXISTS(SELECT ID FROM BARTG2FIBU WHERE BARTG2_ID_LINKKEY = :warengruppeid AND BMWST_ID = :NEU_BMWST_ID)) THEN BEGIN
INSERT INTO BARTG2FIBU(
BARTG2_ID_LINKKEY,
BMWST_ID,
BMAND_ID,
BFIBUKTO_ID,
BKST_ID
)
SELECT
A.BARTG2_ID_LINKKEY,
:NEU_BMWST_ID,
A.BMAND_ID,
CASE WHEN
COALESCE(:ikontoek,0) = 0 THEN A.BFIBUKTO_ID
ELSE
:ikontoek
END,
A.BKST_ID
FROM BARTG2FIBU A
LEFT OUTER JOIN BMWST B ON B.ID = :NEU_BMWST_ID
WHERE A.BARTG2_ID_LINKKEY = :warengruppeid AND A.BMWST_ID = :OLD_BMWST_ID
;
END
END
UPDATE BFIRMA
SET BMWST_ID_MWSTKENNZ = :NEU_BMWST_ID
WHERE BMWST_ID_MWSTKENNZ = :OLD_BMWST_ID;
UPDATE BMAND
SET BMWST_ID = :NEU_BMWST_ID
WHERE BMWST_ID = :OLD_BMWST_ID;
-- In BSAFIBUZW wird automatisch ein DS angelegt, falls noch nicht vorhanden
UPDATE BSA
SET BMWST_ID_MWSTKZ = :NEU_BMWST_ID
WHERE BMWST_ID_MWSTKZ = :OLD_BMWST_ID;
UPDATE BSABMAND
SET BMWST_ID = :NEU_BMWST_ID
WHERE BMWST_ID = :OLD_BMWST_ID AND
BMAND_ID = :BMAND_ID;
-- Rechnungsrückstande, die noch nicht geliefert worden sind
-- Nur Positionen ab dem Jahr 2020, da durch Update von AvERP2014 auf AvERP2020
-- bei alten Aufträgen evtl. Fehler kommt Exception "Rueckstand"
UPDATE BAUFPO
SET BMWST_ID_MWSTKZ = :NEU_BMWST_ID
WHERE BMWST_ID_MWSTKZ = :OLD_BMWST_ID AND
LS_OFFEN > 0.0 AND
RG_OFFEN > 0.0 AND
LLTERMIN_AN >= '01.01.2020';
-- Lieferantenstamm
UPDATE BLIEF
SET BMWST_ID = :NEU_BMWST_ID
WHERE BMWST_ID = :OLD_BMWST_ID AND
KZ_MWST = :SJA;
-- Artikelstamm Lieferanten
UPDATE BSAL
SET BMWST_ID = :NEU_BMWST_ID
WHERE BMWST_ID = :OLD_BMWST_ID;
-- Offene Bestellpositionen
UPDATE BBESP
SET BMWST_ID = :NEU_BMWST_ID
WHERE BMWST_ID = :OLD_BMWST_ID AND
RE_OFFEN > 0.0;
END
^
SET TERM ; ^
/* Folgende GRANT Anweisungen werden automatisch generiert */
GRANT USAGE ON SEQUENCE GEN_ENTWICKLUNG TO PROCEDURE P_BMWST_MWST_NEU_HVH;
GRANT INSERT ON A_WASMACHTIB TO PROCEDURE P_BMWST_MWST_NEU_HVH;
GRANT EXECUTE ON PROCEDURE P_BFIRMA_JANEIN TO PROCEDURE P_BMWST_MWST_NEU_HVH;
GRANT EXECUTE ON PROCEDURE P_BMAND_CHECK TO PROCEDURE P_BMWST_MWST_NEU_HVH;
GRANT EXECUTE ON PROCEDURE P_BSAFIBUZW_BMWST_NEU TO PROCEDURE P_BMWST_MWST_NEU_HVH;
GRANT SELECT ON BARTG1 TO PROCEDURE P_BMWST_MWST_NEU_HVH;
GRANT SELECT,INSERT ON BARTG1FIBU TO PROCEDURE P_BMWST_MWST_NEU_HVH;
GRANT SELECT ON BMWST TO PROCEDURE P_BMWST_MWST_NEU_HVH;
GRANT SELECT ON BARTG2 TO PROCEDURE P_BMWST_MWST_NEU_HVH;
GRANT SELECT,INSERT ON BARTG2FIBU TO PROCEDURE P_BMWST_MWST_NEU_HVH;
GRANT SELECT,UPDATE ON BFIRMA TO PROCEDURE P_BMWST_MWST_NEU_HVH;
GRANT SELECT,UPDATE ON BMAND TO PROCEDURE P_BMWST_MWST_NEU_HVH;
GRANT SELECT,UPDATE ON BSA TO PROCEDURE P_BMWST_MWST_NEU_HVH;
GRANT SELECT,UPDATE ON BSABMAND TO PROCEDURE P_BMWST_MWST_NEU_HVH;
GRANT SELECT,UPDATE ON BAUFPO TO PROCEDURE P_BMWST_MWST_NEU_HVH;
GRANT SELECT,UPDATE ON BLIEF TO PROCEDURE P_BMWST_MWST_NEU_HVH;
GRANT SELECT,UPDATE ON BSAL TO PROCEDURE P_BMWST_MWST_NEU_HVH;
GRANT SELECT,UPDATE ON BBESP TO PROCEDURE P_BMWST_MWST_NEU_HVH;
/* Aktuelle Priviligien auf dieser Prozedur */
GRANT EXECUTE ON PROCEDURE P_BMWST_MWST_NEU_HVH TO "PUBLIC";
GRANT EXECUTE ON PROCEDURE P_BMWST_MWST_NEU_HVH TO SYSDBA;
![Idea :idea:](./images/smilies/icon_idea.gif)
MfG
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
-
- Beiträge: 74
- Registriert: Fr Jan 12, 2018 6:50 pm
Re: MwSt Änderung ab 01.07.2020
Hallo,
was ist letztlich zu tun? Ich habe die Codes als SQL-Scripts abgespeichert. Den Trigger kann ich ohne Fehlermeldung dann laufen lassen, am Mehrwertsteuerstamm hat sich danach aber nichts geändert. Wenn ich P_BSAFIBUZW_BMWST_NEU_HVH laufen lasse, findet das Script P_BSAFIBUZW_BMWST_NEU nicht, welches im gleichen Ordner liegt. Was mache ich falsch?
was ist letztlich zu tun? Ich habe die Codes als SQL-Scripts abgespeichert. Den Trigger kann ich ohne Fehlermeldung dann laufen lassen, am Mehrwertsteuerstamm hat sich danach aber nichts geändert. Wenn ich P_BSAFIBUZW_BMWST_NEU_HVH laufen lasse, findet das Script P_BSAFIBUZW_BMWST_NEU nicht, welches im gleichen Ordner liegt. Was mache ich falsch?
-
- Beiträge: 515
- Registriert: Di Okt 19, 2004 5:45 am
- Wohnort: Diepholz
Re: MwSt Änderung ab 01.07.2020
Hallo,
mit welcher DB-Version arbeiten Sie?
Die Prozedur P_BSAFIBUZW_BMWST_NEU sollte in der DB vorhanden sein. Das ist die Standard-Prozedur von Synerpy.
Die Prozedur P_BSAFIBUZW_BMWST_NEU_HVH muss in die DB eingespielt werden.
mit welcher DB-Version arbeiten Sie?
Die Prozedur P_BSAFIBUZW_BMWST_NEU sollte in der DB vorhanden sein. Das ist die Standard-Prozedur von Synerpy.
Die Prozedur P_BSAFIBUZW_BMWST_NEU_HVH muss in die DB eingespielt werden.
MfG
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
-
- Beiträge: 74
- Registriert: Fr Jan 12, 2018 6:50 pm
Re: MwSt Änderung ab 01.07.2020
Hallo,
die Datenbank müßte noch 2019-1 sein. Ich dachte, die Version sei aktueller. Dann liegen die Probleme wohl daran. Wo kann ich denn die genaue Version sehen? Sowohl bei meiner aktuellen Datenbank als auch bei meiner alten 2017-4-Datenbank wird als Datenbankversion WI-V2.5.8.27089 angegeben.
die Datenbank müßte noch 2019-1 sein. Ich dachte, die Version sei aktueller. Dann liegen die Probleme wohl daran. Wo kann ich denn die genaue Version sehen? Sowohl bei meiner aktuellen Datenbank als auch bei meiner alten 2017-4-Datenbank wird als Datenbankversion WI-V2.5.8.27089 angegeben.
-
- Beiträge: 515
- Registriert: Di Okt 19, 2004 5:45 am
- Wohnort: Diepholz
Re: MwSt Änderung ab 01.07.2020
Hallo,
dazu Averp aufrufen und auf den Menüpunkt Analyse/System wechseln. Von da aus den Button "Eigene Verbindung" klicken.
Dann erscheint folgendes Fenster:
![Bild](https://i.ibb.co/4T4D07c/Averp-Version.png)
dazu Averp aufrufen und auf den Menüpunkt Analyse/System wechseln. Von da aus den Button "Eigene Verbindung" klicken.
Dann erscheint folgendes Fenster:
![Bild](https://i.ibb.co/4T4D07c/Averp-Version.png)
MfG
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
KDP
----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
-
- Beiträge: 203
- Registriert: Fr Jul 01, 2005 6:33 pm
- Wohnort: Leipzig
Re: MwSt Änderung ab 01.07.2020
Hallo,
ich habe das Problem anders gelöst:
für den Verkauf ein Utility für den Auftrag, das die Steuersätze pro Auftrag, Position und Unterposition umschreibt
Dazu hab ich eine Prozedure geschrieben, die folgendes macht
Vorgang Auftrag oder
19 -> 16
7 -> 5
und in die Gegegenrichtung...
Und das gleiche hab ich für den Rechnungseingang beim Einkauf gemacht...
Damit kann ich beliebig hin und her schalten zwischen den Steuersätzen und muss nicht alles in einem Ruck umstellen.
Mann muss nur darauf achten, dass vor RG-Erzeugung oder RG-Eingang der Auftrag per Utility angepasst wird.
Die Steuerschlüssel müssen aber in BMWST vorhanden sein.
ich habe das Problem anders gelöst:
für den Verkauf ein Utility für den Auftrag, das die Steuersätze pro Auftrag, Position und Unterposition umschreibt
Dazu hab ich eine Prozedure geschrieben, die folgendes macht
Vorgang Auftrag oder
19 -> 16
7 -> 5
und in die Gegegenrichtung...
Und das gleiche hab ich für den Rechnungseingang beim Einkauf gemacht...
Damit kann ich beliebig hin und her schalten zwischen den Steuersätzen und muss nicht alles in einem Ruck umstellen.
Mann muss nur darauf achten, dass vor RG-Erzeugung oder RG-Eingang der Auftrag per Utility angepasst wird.
Die Steuerschlüssel müssen aber in BMWST vorhanden sein.
Schöne Grüße aus Leipzig
Denis
-
Linux - my life is too short for reboots
Denis
-
Linux - my life is too short for reboots