Neuer Hauptlieferant

Manuel Goldschmidt

Aktives Mitglied
Hallo zusammen,

wir stehen aktuell vor der Frage, wie sich folgender Fall möglichst einfach umsetzen lässt:

In Sage ist bei etwa 2.000 Artikeln jeweils ein Hauptlieferant hinterlegt. Dieser Hauptlieferant soll nun durch einen anderen Lieferanten ersetzt werden. Die Änderung des Hauptlieferanten lässt sich grundsätzlich über die Schnelländerung in Sage durchführen.

Zusätzlich soll der neue Hauptlieferant bei allen betroffenen Artikeln als Lieferant angelegt werden. Dabei sollen sämtliche Einkaufspreise und Staffelpreise des bisherigen Hauptlieferanten unverändert übernommen werden, da der neue Lieferant diese Konditionen 1:1 weiterführt.

Gesucht wird daher eine möglichst einfache Möglichkeit, um:
  1. den bisherigen Hauptlieferanten durch den neuen Hauptlieferanten zu ersetzen (wahrscheinlich über Schnelländerung)
  2. den neuen Lieferanten bei allen betroffenen Artikeln als Artikellieferanten anzulegen und
  3. die vorhandenen Preise und Staffelpreise des bisherigen Lieferanten vollständig zu übernehmen.
Gibt es dafür eine Funktion innerhalb von Sage, einen geeigneten Importweg oder eventuell bereits ein Skript, mit dem sich dieser Vorgang durchführen lässt?
 
Man könnte dies über ein SQL-Skript lösen und die Datensätze mit den relevanten Daten auf Basis des alten Lieferanten für den neuen Lieferanten übernehmen. Wenn Du möchtest, schreibe ich Dir ein Skript?!
 
Gerne.

Oben bei der Deklaration der Variablen kannst Du die Kreditorennummern vom alten und neuen Lieferanten sowie die Mandantennummer eintragen.
Über das Skript wird bei allen Artikeln der alte Hauptlieferant durch den neuen ersetzt (Artikel könnten bei Bedarf noch eingeschränkt werden, wenn z.B. nur aktive Artikel berücksichtigt werden sollen) und die Einkaufskonditionen auf Basis des alten Lieferanten für den neuen Lieferanten dupliziert (Bestellnummer, Bezeichnungen, Mindestbestellmenge und Wiederbeschaffungszeit habe ich dabei ausgenommen, kann aber bei Bedarf vor der Ausführung noch einfach ergänzt werden).

SQL:
DECLARE @LieferantAlt AS VARCHAR(20) = 'K123456'
DECLARE @LieferantNeu AS VARCHAR(20) = 'K987654'
DECLARE @Mandant AS SMALLINT = 123

-- KHKArtikelVarianten: Hauptlieferant ändern:
UPDATE KHKArtikelVarianten
SET Hauptlieferant = @LieferantNeu
WHERE Mandant = @Mandant
    AND Hauptlieferant = @LieferantAlt

-- KHKArtikelLieferant: Übernahme der Einkaufskonditionen aus den lieferantenbezogenen Artikeldaten
INSERT INTO KHKArtikelLieferant (
    Lieferant
    ,Artikelnummer
    ,Mandant
    ,AuspraegungID
    ,Einkaufsmengeneinheit
    ,MengenberechnungEK
    ,DezimalstellenEK
    ,UmrechnungsfaktorEK
    ,UmrechnungsfaktorVPEK
    ,PreiseinheitEK
    ,Einzelpreis
    ,Rabattsatz
    )
SELECT @LieferantNeu AS Lieferant
    ,Artikelnummer
    ,Mandant
    ,AuspraegungID
    ,Einkaufsmengeneinheit
    ,MengenberechnungEK
    ,DezimalstellenEK
    ,UmrechnungsfaktorEK
    ,UmrechnungsfaktorVPEK
    ,PreiseinheitEK
    ,Einzelpreis
    ,Rabattsatz
FROM KHKArtikelLieferant
WHERE Mandant = @Mandant
    AND Lieferant = @LieferantAlt
    AND Artikelnummer NOT IN (
        SELECT Artikelnummer
        FROM KHKArtikelLieferant
        WHERE Lieferant = @LieferantNeu
            AND Artikelnummer = KHKArtikelLieferant.Artikelnummer
            AND Mandant = @Mandant
            AND AuspraegungID = KHKArtikelLieferant.AuspraegungID
        )

-- KHKArtikelLieferantPreise: Übernahme der Staffelpreise aus den lieferantenbezogenen Artikeldaten
INSERT INTO KHKArtikelLieferantPreise (
    Lieferant
    ,Artikelnummer
    ,Mandant
    ,AuspraegungID
    ,AbMenge
    ,Einzelpreis
    )
SELECT @LieferantNeu AS Lieferant
    ,Artikelnummer
    ,Mandant
    ,AuspraegungID
    ,AbMenge
    ,Einzelpreis
FROM KHKArtikelLieferantPreise
WHERE Mandant = @Mandant
    AND Lieferant = @LieferantAlt
    AND Artikelnummer NOT IN (
        SELECT Artikelnummer
        FROM KHKArtikelLieferantPreise
        WHERE Lieferant = @LieferantNeu
            AND Artikelnummer = KHKArtikelLieferantPreise.Artikelnummer
            AND Mandant = @Mandant
            AND AuspraegungID = KHKArtikelLieferantPreise.AuspraegungID
            AND AbMenge = KHKArtikelLieferantPreise.AbMenge
        )

-- KHKArtikelLieferantRabatte: Übernahme der Staffelrabatte aus den lieferantenbezogenen Artikeldaten
INSERT INTO KHKArtikelLieferantRabatte (
    Lieferant
    ,Artikelnummer
    ,Mandant
    ,AuspraegungID
    ,AbMenge
    ,Rabattsatz
    )
SELECT @LieferantNeu AS Lieferant
    ,Artikelnummer
    ,Mandant
    ,AuspraegungID
    ,AbMenge
    ,Rabattsatz
FROM KHKArtikelLieferantRabatte
WHERE Mandant = @Mandant
    AND Lieferant = @LieferantAlt
    AND Artikelnummer NOT IN (
        SELECT Artikelnummer
        FROM KHKArtikelLieferantRabatte
        WHERE Lieferant = @LieferantNeu
            AND Artikelnummer = KHKArtikelLieferantRabatte.Artikelnummer
            AND Mandant = @Mandant
            AND AuspraegungID = KHKArtikelLieferantRabatte.AuspraegungID
            AND AbMenge = KHKArtikelLieferantRabatte.AbMenge
        )
 
Gerne.

Oben bei der Deklaration der Variablen kannst Du die Kreditorennummern vom alten und neuen Lieferanten sowie die Mandantennummer eintragen.
Über das Skript wird bei allen Artikeln der alte Hauptlieferant durch den neuen ersetzt (Artikel könnten bei Bedarf noch eingeschränkt werden, wenn z.B. nur aktive Artikel berücksichtigt werden sollen) und die Einkaufskonditionen auf Basis des alten Lieferanten für den neuen Lieferanten dupliziert (Bestellnummer, Bezeichnungen, Mindestbestellmenge und Wiederbeschaffungszeit habe ich dabei ausgenommen, kann aber bei Bedarf vor der Ausführung noch einfach ergänzt werden).

SQL:
DECLARE @LieferantAlt AS VARCHAR(20) = 'K123456'
DECLARE @LieferantNeu AS VARCHAR(20) = 'K987654'
DECLARE @Mandant AS SMALLINT = 123

-- KHKArtikelVarianten: Hauptlieferant ändern:
UPDATE KHKArtikelVarianten
SET Hauptlieferant = @LieferantNeu
WHERE Mandant = @Mandant
    AND Hauptlieferant = @LieferantAlt

-- KHKArtikelLieferant: Übernahme der Einkaufskonditionen aus den lieferantenbezogenen Artikeldaten
INSERT INTO KHKArtikelLieferant (
    Lieferant
    ,Artikelnummer
    ,Mandant
    ,AuspraegungID
    ,Einkaufsmengeneinheit
    ,MengenberechnungEK
    ,DezimalstellenEK
    ,UmrechnungsfaktorEK
    ,UmrechnungsfaktorVPEK
    ,PreiseinheitEK
    ,Einzelpreis
    ,Rabattsatz
    )
SELECT @LieferantNeu AS Lieferant
    ,Artikelnummer
    ,Mandant
    ,AuspraegungID
    ,Einkaufsmengeneinheit
    ,MengenberechnungEK
    ,DezimalstellenEK
    ,UmrechnungsfaktorEK
    ,UmrechnungsfaktorVPEK
    ,PreiseinheitEK
    ,Einzelpreis
    ,Rabattsatz
FROM KHKArtikelLieferant
WHERE Mandant = @Mandant
    AND Lieferant = @LieferantAlt
    AND Artikelnummer NOT IN (
        SELECT Artikelnummer
        FROM KHKArtikelLieferant
        WHERE Lieferant = @LieferantNeu
            AND Artikelnummer = KHKArtikelLieferant.Artikelnummer
            AND Mandant = @Mandant
            AND AuspraegungID = KHKArtikelLieferant.AuspraegungID
        )

-- KHKArtikelLieferantPreise: Übernahme der Staffelpreise aus den lieferantenbezogenen Artikeldaten
INSERT INTO KHKArtikelLieferantPreise (
    Lieferant
    ,Artikelnummer
    ,Mandant
    ,AuspraegungID
    ,AbMenge
    ,Einzelpreis
    )
SELECT @LieferantNeu AS Lieferant
    ,Artikelnummer
    ,Mandant
    ,AuspraegungID
    ,AbMenge
    ,Einzelpreis
FROM KHKArtikelLieferantPreise
WHERE Mandant = @Mandant
    AND Lieferant = @LieferantAlt
    AND Artikelnummer NOT IN (
        SELECT Artikelnummer
        FROM KHKArtikelLieferantPreise
        WHERE Lieferant = @LieferantNeu
            AND Artikelnummer = KHKArtikelLieferantPreise.Artikelnummer
            AND Mandant = @Mandant
            AND AuspraegungID = KHKArtikelLieferantPreise.AuspraegungID
            AND AbMenge = KHKArtikelLieferantPreise.AbMenge
        )

-- KHKArtikelLieferantRabatte: Übernahme der Staffelrabatte aus den lieferantenbezogenen Artikeldaten
INSERT INTO KHKArtikelLieferantRabatte (
    Lieferant
    ,Artikelnummer
    ,Mandant
    ,AuspraegungID
    ,AbMenge
    ,Rabattsatz
    )
SELECT @LieferantNeu AS Lieferant
    ,Artikelnummer
    ,Mandant
    ,AuspraegungID
    ,AbMenge
    ,Rabattsatz
FROM KHKArtikelLieferantRabatte
WHERE Mandant = @Mandant
    AND Lieferant = @LieferantAlt
    AND Artikelnummer NOT IN (
        SELECT Artikelnummer
        FROM KHKArtikelLieferantRabatte
        WHERE Lieferant = @LieferantNeu
            AND Artikelnummer = KHKArtikelLieferantRabatte.Artikelnummer
            AND Mandant = @Mandant
            AND AuspraegungID = KHKArtikelLieferantRabatte.AuspraegungID
            AND AbMenge = KHKArtikelLieferantRabatte.AbMenge
        )
sehr geil von dir!
 
Zurück
Oben