Lagerumbuchung / Rohwarenlieferschein
In diesem Feld kann eine private Prozedur hinterlegt werden, die steuert, ob eine Lagerumbuchung anstelle eines Rohwarenlieferscheins erzeugt werden soll. Diese Funktion wird benötigt, wenn die Ware eigentlich auf Lager 99 angeliefert werden sollte, diese aber stattdessen auf Lager 7 angeliefert worden ist.
Als Übergabe Parameter wird die OWaage_Id erwartet.
|
Eingabe Parameter |
Feldtyp |
|
in_owaage_id |
integer |
Die Prozedur muss folgende Parameter zurückliefern.
|
Parameter |
Feldtyp |
|
Klasse |
integer |
|
Unterklasse |
integer |
|
Ursprungslager |
Integer |
|
BuchungsTyp |
integer |
|
Planlieferdatum |
date |
|
BewertungsPreis |
numeric(15,4) |
Klasse
Wird die Klasse mit einer 0 zurückgegeben so wird ein Lieferschein erstellt, wird die Klasse mit 5110 zurückgegeben, so wird die Lagerumbuchung erstellt.
Unterklasse
Hier wird die Unterklasse der Lagerumbuchung zurückgegeben.
Ursprungslager
Das Ursprungslager ist das Lager, auf dem eigentlich die Ware angeliefert werden sollte. Das Ziel Lager ist das Lager aus dem Waagen Satz.
Buchungstyp
Der Buchungstyp für die Lagerumbuchung.
•0 für Angebot
•1 für Auftrag
•2 für Rechnung
Planlieferdatum
Hier kann ein spezielles Planungslieferdatum angegeben werden bleibt dieser Parameter leer so wird das Tagesdatum genommen.
Bewertungspreis
Wird ein Bewertungspreis > 0 zurückgegeben so wird dieser Bewertungspreis genommen. Ansonsten startet die normale Preisfindung des Beleges.
Beispielprozedur
CREATE PROCEDURE p_liefer_lagerumbuch (
in in_owaage_id integer
)
Result (
Klasse integer
,Unterklasse integer
,Ursprungslager integer
,BuchungsTyp integer
,Planlieferdatum date
,BewertungsPreis numeric(15,4)
)
//
BEGIN
// Kommentar
// -------------------------
//
if in_owaage_id > 0then
select 5110 as Klasse
,0 as Unterklasse
,666 as Ursprungslager
,1 as BuchungsTyp
,today() as Planlieferdatum
,3.5 as BewertungsPreis
from dummy;
else
select 0 as Klasse
,0 as Unterklasse
,0 as Ursprungslager
,1 as BuchungsTyp
,today() as Planlieferdatum
,3.5 as BewertungsPreis
from dummy;
end if;
end
Private Prüfprozedur
Hier kann eine private Prozedur hinterlegt werden, die das Abschließen einer Wiegung aktiv verhindert. Die Prozedur liefert zwei Werte zurück einmal das Feld Fehler und den Fehlertext.
Der Fehler kann zwei Zustände annehmen.
•Zustand 0 ist kein Fehler Wiegung kann abgeschlossen werden es erfolgt keine Meldung.
•Zustand 1 ist ein Fehler und die Fehlermeldung wird angezeigt.
Sollte in der Prozedur ein technischer Fehler auftreten (wie z.B. ein Feld wurde nicht deklariert), so muss auch ein Fehler samt Fehlertext zurückgegeben werden, damit der Benutzer eine Meldung erhält, warum die Wiegung nicht abgeschlossen werden konnte. Dies bedeutet in der Exception muss es eine Fehler-Behandlung geben.
Als Übergabe Parameter wird die OWaage_Id erwartet.
|
Eingabe Parameter |
Feldtyp |
|
in_owaage_id |
integer |
Die Prozedur muss folgende Parameter zurückliefern.
|
Parameter |
Feldtyp |
|
Fehler |
integer |
|
Fehlertext |
char(255) |
Beispiel für eine Private Prozedur:
REATE PROCEDURE p_owaage_private ( in in_owaage_id integer )
Result (
fehler integer
,fehlertext char(255)
)
BEGIN
declare dc_Fehler integer;
declare dc_FehlerText char(255);
declare dc_kunde integer;
declare ECX_ERR_NOTFOUND EXCEPTION FOR SQLSTATE '02000';
declare dc_ErrorMsg LONG VARCHAR;
declare dc_SQLCODE integer;
declare dc_SQLSTATE CHAR(10);
--
--
if in_owaage_id = 13321 then
set dc_Fehler = 1;
set dc_FehlerText = 'Es ist ein Fehler ist aufgetreten';
else
set dc_Fehler = 0;
end if;
set dc_kunde = 1;
select dc_Fehler as Fehler, dc_FehlerText as fehlertext from dummy;
EXCEPTION
when others then
Select ERRORMSG()
,SQLCODE
,SQLSTATE
into dc_ErrorMsg
,dc_SQLCODE
,dc_SQLSTATE;
--
call AMIC_FEHLERPROT( 20
,amic_func_sprachtexte ('a', 'b', 'Prozedur', -1)
,amic_func_sprachtexte ('a','b','Beim Ausführen der Prozedur %s ist ein Fehler aufgetreten.', -1, 'p_owaage_private')
|| '\n'
|| amic_func_sprachtexte('a','b','Parameter (%s):: %s', -1, 'in_owaage_id', in_owaage_id )
|| '\n\n'
|| 'SQLCODE:: ' || dc_SQLCODE
|| ' [' || dc_SQLSTATE || ']'
|| '\n'
|| dc_ErrorMsg
,null
);
select 2 as fehler, dc_ErrorMsg ||' ' || dc_SQLCODE || ' ' || dc_SQLSTATE as fehlertext from dummy;
END
Private Prüfprozedur Siloverwaltung
In diesem Feld kann eine Private Prozedur hinterlegt werden, die in der Validierungsfunktion des Ladeträgers / Silo wirkt. Liefert die Prozedur ein 0 (FALSE) zurück, so wird das Feld nicht validiert, bei dem Rückgabewert 1 (True) wird das Feld validiert.
Übergabeparameter an die Prozedur
Die Parameter müssen genauso heißen wie die Parameter in der nachfolgenden Tabelle.
|
Parameter |
Bedeutung |
|
In_ArtikelId |
Artikel der aktuellen Wiegung |
|
In_OwaageId |
OwaageId der aktuellen Wiegung |
|
In_Ladeträger |
Aktueller Ladeträger / Silo |
|
In_PartieId |
Die Partie-Id der aktuellen Wiegung. Ist keine Partie vorhanden, wird eine 0 übermittelt |
Rückgabewerte der Prozedur
|
Parameter |
Bedeutung |
|
retval |
Gibt an, ob das Feld validiert werden darf 1. 0 False 2. 1 True |
|
retvaltext |
Hier kann noch ein Fehlertext angegeben werden, der im False-Fall mit ausgegeben werden soll. |
Beispiel Einer privaten Prozedur, diese gibt immer ein TRUE zurück.
CREATE procedure p_silo_prozedure ( in in_ArtikelId integer
,in in_OwaageID integer
,in in_Ladetraegernr integer
,in in_PartieID integer
)
result ( retval integer
,retvaltext char(255)
)
--
BEGIN
--Sollten stehen gelassen werden, Variablen werden im WHEN OTHERS verwendet
declare ECX_ERR_NOTFOUND EXCEPTION FOR SQLSTATE '02000';
declare dc_ErrorMsg LONG VARCHAR;
declare dc_SQLCODE integer;
declare dc_SQLSTATE CHAR(10);
declare dc_retval integer;
declare dc_retvaltext char(255);
set dc_retval = 1;
if in_Ladetraegernr = 501 then
set dc_RetvalText = 'Fehler Juhu';
set dc_retval = 0;
end if;
select dc_retval as retval, dc_RetvalText as retvaltext
EXCEPTION
when others then
Select ERRORMSG(), SQLCODE, SQLSTATE into dc_ErrorMsg, dc_SQLCODE, dc_SQLSTATE;
call AMIC_FEHLERPROT( 20, amic_func_sprachtexte('a', 'b', 'Prozedur', -1) , amic_func_sprachtexte('a','b','Beim Ausführen der Prozedur %s ist ein Fehler aufgetreten.', -1, 'p_silo_prozedure')
|| '\n\n'|| 'SQLCODE:: ' || dc_SQLCODE|| ' [' || dc_SQLSTATE || ']'|| '\n'|| dc_ErrorMsg, null);
END
Mengenbestimmungsprozedur für die Rohwarenbelege
In diesem Feld ist es möglich, eine Funktion zu hinterlegen, welche eine alternative Menge zurückgibt. Die Prozedur wird nach dem Eintragen der Wiegedaten in die Relationen Rohwarehauptsatz_Waage und RohwareZusatzQualität_Waage aufgerufen. Gibt diese Funktion eine Menge größer als 0 zurück, wird die Menge in der Relation Rohwarehauptsatz_Waage überschrieben. In das Feld WaagenOriMenge wird das Originalgewicht der Waage eingetragen. Sollte die Menge in Abhängigkeit von schon erfassten Qualitätswerten stehen, so müssen diese Qualitäten in der Relation Rohwarehauptsatz_Waage auf 0 gesetzt werden, da diese ansonsten bei der Rohwarenbelegerzeugung wieder abgerechnet werden.
Folgende Übergabeparameter muss die Funktion haben
|
Parameter |
Bedeutung |
|
In_OwaageId |
OwaageId der aktuellen Wiegung |
|
In_SatzId |
SatzId der Daten in der Relation RohwareHauptSatz_Waage |
Als Rückgabewert wird ein Wert des Typs Numeric(15,4) erwartet.
Eigene Qualitätsanzeige
Hier kann eine Prozedur hinterlegt werden, welche die Qualitätstabellen mit Wert füllt. Die Standartprozedur ist OWaageArtikelDaten.
Folgende Übergabe Parameter muss die Funktion haben
|
Parameter |
Bedeutung |
|
In_OwaageId |
OwaageId der aktuellen Wiegung |
Rückgabewerte der Prozedur
|
Parameter |
Datentyp |
Bedeutung |
|
Nummer |
integer |
|
|
Bezeichnung |
Char(40) |
Bezeichnung der Qualität |
|
UntererBasisWert |
Numeric(15,4) |
|
|
ObererBasisWert |
Numeric(15,4) |
|
|
Typ |
intger |
|
|
Einheit |
Char(10) |
|
|
UntererBasisWertDefault |
Numeric(15,4) |
|
|
ObererBasisWertDefault |
Numeric(15,4) |
|
|
QualitaetsWert |
Numeric(15,4) |
|
|
RohSorQuWaagPos |
integer |
|
|
Sortierung |
Numeric(15,4) |
|
|
Bestandteilnutzung |
integer |
|
Eigene Speicherprozedur
In diesem Feld kann eine Prozedur hinterlegt werden, die nach dem Speichern des Waagensatzes aufgerufen wird. Nach dem Aufruf der Prozedur wird die Waagenmaske neu geladen.
Folgende Übergabe Parameter muss die Funktion haben
|
Parameter |
Bedeutung |
|
In_OwaageId |
OwaageId der aktuellen Wiegung |
Hinweisfeld
In diesem Feld kann eine Prozedur hinterlegt werden, welche das Hinweisfeld auf der Waagenmaske befüllt. Die Beispielprozedur ist OwaageHinweis.
Der Text kann mehrzeilig zurückgegeben werden.
Die Prozedur wird an folgende Stellen aufgerufen.
1. Nach der Eingabe des Kontraktes
2. Nach der Eingabe des Artikels
3. Nach der Eingabe des Kunden
4. Nach jeder Wiegung
5. Nach der Eingabe des Ladeträgers
6. Nach der Eingabe der Partie
7. Nach dem Öffnen der Maske im Bearbeiten Modus
Folgende Übergabe Parameter muss die Funktion haben
|
Parameter |
Bedeutung |
|
In_OwaageId |
OwaageId der aktuellen Wiegung |
|
In_KtrId |
Hier wird die Kontraktid des Waagensatzes übergeben |
|
In_Kundeid |
Kundid des Waagensatzes |
|
in_ArtikelId |
Artikelid des Waagensatzes |
Rückgabewerte der Prozedur
|
Parameter |
Datentyp |
Bedeutung |
|
Hinweis |
Char(1000) |
Auszugebender Text |
|
Farbe |
Char(20) |
Hintergrundfarbe |
|
Schriftfarbe |
Char(40) |
Farbe der Schrift |
|
Bitmap |
integer |
•0 zeigt das Ampelbild nicht an •1 zeigt das Ampelbild an |
Private Prozedur Verkaufsbeschränkung
In diesem Feld kann eine private Prozedur hinterlegt werden, die in der Validierungsfunktion des Artikels wirkt. Ermittelt wird der Status und die Meldung für die Verkaufsbeschränkung.
Wenn keine Prozedur ausgewählt wurde, wird die Prozedur „Amic_WaageVerkaufsbeschraenkung“ angesprochen.