OBS/Preislisten/Preislisten per Macro füllen: Unterschied zwischen den Versionen

Aus OBS Wiki
Zur Navigation springen Zur Suche springen
K (Korrektur)
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Kostenpflichtige Module}}
{{Kostenpflichtige Module}}
Diese Seite bezieht sich auf das Kommando [[OBS/Stammdaten/Artikel/Preislistenverwaltung/AutoPflege#F.C3.BCllen_einer_Preisliste_.C3.BCber_ein_Formel-Macro|'''Füllen einer Preisliste über ein Formel-Macro''']]  und erklärt Ihnen ausführlich, wie Sie Preislisten mit diesem Kommando über ein Makro füllen können.


==Preislisten per Macro füllen==
=Voraussetzungen für Ausführung des Kommandos=
==Die Preisliste==
Die im Kommando eingetragene Preisliste muss existieren und aktiv sein. Legen Sie bei Bedarf eine neue Preisliste in der [[OBS/Kostenpflichtige_Module/Preislisten|Preislistenverwaltung]] an.
==Formelmacro==
{{Hinweis|Eine Beschreibung der Formelverwaltung finden Sie [[OBS/Kostenpflichtige_Module/Preislisten/Formeln|'''hier''']].}}
{{Hinweis|Da das Macro zum befüllen von Preislisten ebenso wie die Macros zur Kalkulation über die Formelverwaltung der Preislisten verwaltet werden, haben Sie den Vorteil, dass die beim Füllen von Preislisten über ein Macro auch gleich Kalkulieren können. So können Sie sich eine zusätzliche Automatik für die Kalkulation sparen.}}
Für die Bestimmung, ob eine Artikel übernommen werden soll, wird von OBS im Macro die Funktion IsArtikelInPreisliste aufgerufen. Das Macro muss also mindestens folgenden Code enthalten:
<syntaxhighlight lang="Delphi">
//Preisliste füllen aus Macro
function IsArtikelInPreisliste(): string;
begin
    Result := 'ok'; //Wichtig, damit Artikel auch übernommen wird!
end;
</syntaxhighlight>
Wichtig ist die Angabe '''Result'''. Damit ein Artikel auch übernommen wird, muss der Wert '''ok''' als String (Text) zurückgegeben werden. Sie können die Rückgabe entsprecehnd an Bedingungen knüpfen, damit unerwünschte Artikel nicht in die Preisliste übernommen werden.<br />
Folgendes Makro würde dafür sorgen, dass nur Artikel meinen VK größer 0 in die Preisliste übernommen werden:
<syntaxhighlight lang="Delphi">
//Preisliste füllen aus Macro
function IsArtikelInPreisliste(): string;
begin
    Result := '';
    //Nur Artikel der Warengruppe 001 in Preisliste übernehmen
    if (VKNetto > 0) then begin
        Result := 'ok'; //Wichtig, damit Artikel auch übernommen wird!
    end;
end;
</syntaxhighlight>
<br />
Wenn Sie das Macro ebenfalls für die Kalkulation verwenden möchten, so können Sie zusätzlich auch noch die Funktion '''Berechnung''' in das Makro einfügen.<br />
'''Tip''': Fügen Sie die Funktion '''Berechnung''' vor '''IsArtikelInPreisliste''' im Makro ein, und Sie können die Kalkulation eines Artikelpreises bereits in der Übernahme ausführen.
===Beispiel 1: Nur Artikel aus Warengruppe 001===
Das folgende Makro übernimmt alle artikel der Warengruppe 001 und kalkuiert Brutto und Netto.
<syntaxhighlight lang="Delphi">
//Preisliste kalkulieren
function Berechnung() : String;
begin
    if (VKNetto = 0) then begin
        VKNetto := ArtVK1;
    end;
    //Falls Ek größer VK Netto, dann VK Netto = Ek + 10%
    if (EKKalk > VKNetto) then begin
        VKNetto := EKKalk * 1.1;
    end;
    BerechneBrutto();
    //letzte Kommastelle bei Brutto immer 9
    VKBrutto := (Trunc((VKBrutto+0.005)*10)/10)+0.09;
    BerechneNetto();
    Result := 'ok';
end;


//------------------------------------------------------------------------------
//Preisliste füllen aus Macro
function IsArtikelInPreisliste(): string;
begin
    Result := '';
    //Nur Artikel der Warengruppe 001 in Preisliste übernehmen
    if (WGR = '001') then begin
        Berechnung(); //Preise auch gleich kalkulieren
        Result := 'ok'; //Wichtig, damit Artikel auch übernommen wird!
    end;
end;
</syntaxhighlight>


Eine Preisliste lässt sich über den Preislisten Scheduler (C Pflege der automatischen Übernahme/Kalkulation ...)mit Hilfe eines Macros füllen.
=Kommando anlegen=
 
Öffnen Sie zunächst die [[OBS/Stammdaten/Artikel/Preislistenverwaltung/AutoPflege#Liste|Liste der Preislistenautomatiken]] über die [[OBS/Kostenpflichtige_Module/Preislisten|Preislistenverwaltung]] unter den weiteren Funktionen Punkt ''C Pflege der Automatische Übernahme/Kalkulation von Artikel VK1-VK9 aus Preislisten''. Danach öffnen Sie in mit {{Einfg}} die [[OBS/Stammdaten/Artikel/Preislistenverwaltung/AutoPflege#Eingabemaske|Eingabemaske]], um einen neuen Eintrag anzulegen. Tragen Sie die gewünschte Preisliste in das Feld ''Preisliste'' ein und wählen anschließend das Kommando ''Füllen einer Preisliste über ein Formel-Macro'' aus. Die letzte Pflichtangabe ist die Nummer des [[#Formelmacro|Formelmacros]]. Die Nummer des Formelmacros tragen Sie in das Feld ''Parameter'' ein.<br />
Folgende drei Dinge müssen dafür vorbereitet werden:<br />
<br />
1. Es muss die zu befüllende Preisliste im System angelegt werden, hier sind keine besonderen Einstellungen notwendig.<br />
Für dieses Kommando können Sie im Feld ''Parameter'' drei Werte (Trennzeichen Semikolon) angeben. Dies sind:
2. Die Formel, die zur Befüllung der Preisliste herangezogen wird, muss in der Formelsammlung hinterlegt werden.<br />
#Nummer Formelmacro '''*Pflicht*'''
3. Es muss im Preislisten Scheduler (C Pflege der automatischen Übernahme/Kalkulation ...) ein Eintrag für die Befüllung hinterlegt werden. Hier wird nun das Kommando 'Füllen einer Preisliste über ein Formal-Macro' ausgewählt - als Parameter wird die Formelnummer und mit Semikolon getrennt die Lieferantennummer angegeben. Dieser Preislisten Scheduler Eintrag wird nachts ausgeführt, wenn 'Aktiv im Scheduler' angehakt ist. Mit Administrator Rechten kann das Kommando auch direkt per 'F9 Übernahme' ausgeführt werden.
#Personennummer Lieferant
 
#Preislistennummer
Nachstehendes Beispiel zeigt die Übernahme der Artikel eines ausgewählten Lieferanten einer bestimmten Warengruppe. Dabei wird auch gleich die Kalkulation des VK-Preises vorgenommen.<br /><br />
Wie schon beschrieben muss das Macro angegeben werden, damit das Kommando funnktioniert. Lieferant und PReisliste sind lediglich zwei optionale Parameter über die sich die Datenbasis eingrenzen lässt, bevor die Artikel mit dem Makro weiter gefiltert werden.
1. Es wird die zu befüllende Preisliste angelegt:
 
[[Image:Pl666777.PNG]]<br /><br />
 
2. Es werden die Artikel des angegebenen Lieferanten einer bestimmten Warengruppe für die Preisliste herausgefiltert und auch gleich kalkuliert:
 
[[Image:Isartikelinpreisliste.PNG]]<br /><br />
 
3. Hier der entsprechende Eintrag im Preislisten Scheduler:
 
[[Image:F%C3%BCllen_einer_pl_per_macro.PNG]]<br />
 

Aktuelle Version vom 4. November 2020, 10:56 Uhr

Kostenpflichtige Module

ZUGFeRD
UPS
IMS Professional
SMS
Mehrlager-Verwaltung
Mehrsprachen Modul
Multilanguage Modul
EVA Marketing Tool
Termin-Projekte
Edifact-Schnittstelle
Backup Überwachung Email
OBS Geo Daten
DeliSprint / DPD
Filialen
Cashback
Moebelschnittstelle
Dokumenten Manager
DocuWare-Schnittstelle
OFML-Kalkulation
Versicherungsschaden
Gutschriftsanzeigen
Kameraverwaltung
DataInOut


Diese Seite bezieht sich auf das Kommando Füllen einer Preisliste über ein Formel-Macro und erklärt Ihnen ausführlich, wie Sie Preislisten mit diesem Kommando über ein Makro füllen können.

Voraussetzungen für Ausführung des Kommandos

Die Preisliste

Die im Kommando eingetragene Preisliste muss existieren und aktiv sein. Legen Sie bei Bedarf eine neue Preisliste in der Preislistenverwaltung an.

Formelmacro

HINWEIS: Eine Beschreibung der Formelverwaltung finden Sie hier.
HINWEIS: Da das Macro zum befüllen von Preislisten ebenso wie die Macros zur Kalkulation über die Formelverwaltung der Preislisten verwaltet werden, haben Sie den Vorteil, dass die beim Füllen von Preislisten über ein Macro auch gleich Kalkulieren können. So können Sie sich eine zusätzliche Automatik für die Kalkulation sparen.

Für die Bestimmung, ob eine Artikel übernommen werden soll, wird von OBS im Macro die Funktion IsArtikelInPreisliste aufgerufen. Das Macro muss also mindestens folgenden Code enthalten:

//Preisliste füllen aus Macro
function IsArtikelInPreisliste(): string;
begin
    Result := 'ok'; //Wichtig, damit Artikel auch übernommen wird!
end;

Wichtig ist die Angabe Result. Damit ein Artikel auch übernommen wird, muss der Wert ok als String (Text) zurückgegeben werden. Sie können die Rückgabe entsprecehnd an Bedingungen knüpfen, damit unerwünschte Artikel nicht in die Preisliste übernommen werden.
Folgendes Makro würde dafür sorgen, dass nur Artikel meinen VK größer 0 in die Preisliste übernommen werden:

//Preisliste füllen aus Macro
function IsArtikelInPreisliste(): string;
begin
    Result := '';
    //Nur Artikel der Warengruppe 001 in Preisliste übernehmen
    if (VKNetto > 0) then begin
        Result := 'ok'; //Wichtig, damit Artikel auch übernommen wird!
    end;
end;


Wenn Sie das Macro ebenfalls für die Kalkulation verwenden möchten, so können Sie zusätzlich auch noch die Funktion Berechnung in das Makro einfügen.
Tip: Fügen Sie die Funktion Berechnung vor IsArtikelInPreisliste im Makro ein, und Sie können die Kalkulation eines Artikelpreises bereits in der Übernahme ausführen.

Beispiel 1: Nur Artikel aus Warengruppe 001

Das folgende Makro übernimmt alle artikel der Warengruppe 001 und kalkuiert Brutto und Netto.

//Preisliste kalkulieren
function Berechnung() : String;
begin
    if (VKNetto = 0) then begin
        VKNetto := ArtVK1;
    end;
    //Falls Ek größer VK Netto, dann VK Netto = Ek + 10%
    if (EKKalk > VKNetto) then begin
        VKNetto := EKKalk * 1.1;
    end;
    BerechneBrutto();
    //letzte Kommastelle bei Brutto immer 9
    VKBrutto := (Trunc((VKBrutto+0.005)*10)/10)+0.09;
    BerechneNetto();
    Result := 'ok';
end;

//------------------------------------------------------------------------------
//Preisliste füllen aus Macro
function IsArtikelInPreisliste(): string;
begin
    Result := '';
    //Nur Artikel der Warengruppe 001 in Preisliste übernehmen
    if (WGR = '001') then begin
        Berechnung(); //Preise auch gleich kalkulieren
        Result := 'ok'; //Wichtig, damit Artikel auch übernommen wird!
    end;
end;

Kommando anlegen

Öffnen Sie zunächst die Liste der Preislistenautomatiken über die Preislistenverwaltung unter den weiteren Funktionen Punkt C Pflege der Automatische Übernahme/Kalkulation von Artikel VK1-VK9 aus Preislisten. Danach öffnen Sie in mit Einfg die Eingabemaske, um einen neuen Eintrag anzulegen. Tragen Sie die gewünschte Preisliste in das Feld Preisliste ein und wählen anschließend das Kommando Füllen einer Preisliste über ein Formel-Macro aus. Die letzte Pflichtangabe ist die Nummer des Formelmacros. Die Nummer des Formelmacros tragen Sie in das Feld Parameter ein.

Für dieses Kommando können Sie im Feld Parameter drei Werte (Trennzeichen Semikolon) angeben. Dies sind:

  1. Nummer Formelmacro *Pflicht*
  2. Personennummer Lieferant
  3. Preislistennummer

Wie schon beschrieben muss das Macro angegeben werden, damit das Kommando funnktioniert. Lieferant und PReisliste sind lediglich zwei optionale Parameter über die sich die Datenbasis eingrenzen lässt, bevor die Artikel mit dem Makro weiter gefiltert werden.