Debitorbezogene Artikel VK-Preise

Mit der 3.6-Version hat sich vieles geändert. Eine der großen Neuerungen ist die Preisgestaltung. Mit ihr ist es erstmalig vom Standard möglich, für einen Debitor einen Sonderpreis zu hinterlegen. Der dort eingetragene VK-Preis hat Vorrang vor einem aus einer angeknüpften Preisgruppe ermittelten VK-Preis. Dieses Tutorial zeigt, wie du diese Funktion für eine ältere Navision-Version nachprogrammieren kannst.

Als erstes legst du über den ObjectDesigner eine neue Tabelle mit der Bezeichnung „Debitoren Artikel VK-Preis” an. Diese Tabelle ist identisch aufgebaut wie die Tabelle „Artikel VK-Preis”. Einzige Ausnahme ist das Feld „Debitorennr.” mit einer Relation auf die Tabelle „Debitor”, das das Feld „Preisgruppencode” ersetzt.

Nach der Speicherung und Kompilierung der neuen Tabelle musst du noch ein passendes Formular entwerfen. Die nachfolgende Abbildung zeigt das neue Formular welches du mit der ID: 50000 und der Bezeichnung „Debitoren Artikel VK-Preis” speicherst und kompilierst.

Da der Benutzer später dieses Formular über die Debitorenkarte öffnet können wir die Eigenschaft „Visible” der Spalte „Debitorennr.” auf „False” setzen. Somit ist es standardmäßig ausgeblendet und kann ggf. durch den Benutzer wieder eingeblendet werden.

Wie gerade erwähnt soll das neue Formular über die Debitorenkarte und dann über den Verkaufsbutton geöffnet werden können. Dazu öffnest du die Debitorenkarten im Design-Modus und fügst dem Button einen neuen Menüeintrag mit der Bezeichnung „Artikel VK-Preis” hinzu. Die Eigenschaft „RunObject” geben wir den Wert „Form Debitor Artikel VK-Preis” und die Eigenschaft „RunFormLink” geben wir „Debitorennr.=FIELD(Nr.)”. Somit ist sichergestellt, dass sich das neue Formular öffnet und wir nur die VK-Preise des gewählten Debitors sehen. Jetzt können die neuen Artikel VK-Preise für unsere Debitoren gepflegt werden.

Nachdem jetzt die Sonderpreise gepflegt werden können, musst du dich darum kümmern, dass diese auch bei der Preisfindung berücksichtigt werden. In der Tabelle „Verkaufszeile” existiert dazu die Funktion „VKPreisAktual()”, die die Ermittlung des VK-Preises durchführt. Diese Funktion ist nun anzupassen.

Um am Navision-Standard sowenig wie möglich zu ändern, müssen die folgenden - in fett markierten - Codezeilen in die Funktion „VKPreisAktua()” hinzugefügt werden.

Art::Artikel:
BEGIN
ArtVKPreis.INIT;
ArtVKPreis."Artikelnr." := "Nr.";
ArtVKPreis.Preisgruppencode := Preisgruppencode;
ArtVKPreis.Währungscode := VerkKopf.Währungscode;
ArtVKPreis.Einheitencode := Einheitencode;
IF Belegart IN [Belegart::Angebot,Belegart::Auftrag] THEN
ArtVKPreis.Startdatum := VerkKopf.Auftragsdatum
ELSE
ArtVKPreis.Startdatum := VerkKopf.Buchungsdatum;
WITH DebitorArtikelVKPreis DO BEGIN
SETCURRENTKEY ( "Artikelnr.","Debitorennr.",Einheitencode,Währungscode,Startdatum );
SETRANGE ( "Artikelnr.", ArtVKPreis."Artikelnr." );
SETRANGE ( "Debitorennr.", Rec."Verk. an Deb.-Nr." );
SETFILTER ( Einheitencode, '%1|%2', ArtVKPreis.Einheitencode, '' );
SETFILTER ( Währungscode, '%1|%2', ArtVKPreis.Währungscode, '' );
SETRANGE ( Startdatum, 0D, ArtVKPreis.Startdatum );
IF DebitorArtikelVKPreis.FIND ( '+' ) THEN BEGIN
ArtVKPreis."VK-Preis" := "VK-Preis";
ArtVKPreis."VK-Preis inkl. MWSt" := "VK-Preis inkl. MWSt";
ArtVKPreis."MWSt Geschäftsbuch.-Gr.(Preis)" := "MWSt Geschäftsbuch.-Gr.(Preis)";
ArtVKPreis."Mengenrabatt zulassen" := "Mengenrabatt zulassen";
ArtVKPreis."Deb.-/Artikelrab. zulassen" := "Deb.-/Artikelrab. zulassen";
ArtVKPreis."Rech.-Rabatt zulassen" := "Rech.-Rabatt zulassen";
END;
END;

"VK-Preis" := ArtVKPreis."VK-Preis";
Artikel."MWSt Geschäftsbuch.-Gr.(Preis)" := ArtVKPreis."MWSt
Geschäftsbuch.-Gr.(Preis)";
"Mengenrabatt zulassen" := ArtVKPreis."Mengenrabatt zulassen";
"Rech.-Rabatt zulassen" := ArtVKPreis."Rech.-Rabatt zulassen";
IF ArtVKPreis."Deb.-/Artikelrab. zulassen" THEN BEGIN
IF DebArtRab.GET(VerkKopf."Deb.-/Artikelrabattgr.",Artikel."Deb.-/Artikelrabattgr.") THEN
"Deb.-/Artikelrabatt %" := DebArtRab."Rabatt %";
END ELSE
"Deb.-/Artikelrabatt %" := 0;
VKPreisInWähr := ArtVKPreis.Währungscode <> '';
ArtVKPreisInklMWSt := ArtVKPreis."VK-Preis inkl. MWSt";
END;

Da wir für die neuprogrammierte Prüfung die neue Tabelle „Debitor Artikel VK-Preis” benötigen, legen wir eine globale Record-Variable mit der Bezeichnung „DebitorArtikelVKPreis” an. Diese Record-Variable hat eine Relation auf die neue Tabelle.


 

Zurück zur Tutorialübersicht.