Punkty wejścia > Moduł Zapasy > Standardowy skrypt MTOLINKLIB 

MTOLINK_PRP: Dodawanie reguły

Ten entry point, wraz z entry point MTOLINK_RULES, służy do uruchamiania dodatkowych ograniczeń (reguł) w algorytmie obliczania przypisania.

Kontekst i tryb działania

Użyj

Zasada jest następująca:

a) Przy wczytywaniu tabel (pamięci) żądań i zasobów, możliwe jest dodanie do 3 pól użytkownika (łańcuchy zawierające maksymalnie 50 znaków).
TDEM_USRFLD1(index)
TDEM_USRFLD2(index)
TDEM_USRFLD3(index)
Oraz
TRESS_USRFLD1(index)
TRESS_USRFLD2(index)
TRESS_USRFLD3(index)

Wszystkie zlecenia uwzględniane przy obliczaniu są wczytywane do pamięci. Co więcej, dla celów wydajności zaleca się magazynowanie wszystkich elementów, które będą tu uwzględniane.
Zaleca się również dodanie pól użytkownika bezpośrednio do tabeli ORDERS w celu zwiększenia wydajności.

Entry point MTOLINK_PRP jest tu wywoływany w oparciu o dwa tryby: tryb dotyczący żądań (MTOLINK_PE_MODE = 'D' (D dla Żądania)) oraz tryb dotyczący zasobów ('R').
W poniższym przykładzie kodu, pole użytkownika XUSRFLD jest kopiowane do zmiennej pamięci USRFLD1.

b) Rozpoczęcie obliczania przypisania: wczytywanie do pamięci reguł priorytetyzacji zasobów (zobacz reguły przypisania).
Pierwsze wywołanie do entry point MTOLINK_RULES jest wykonywane w trybie 'aktywacji'. MTOLINK_PE_MODE = 'ACT'.
Celem jest poinformowanie przetwarzania obliczania, że istnieje określona reguła do przetworzenia poprzez ustawienie wartości zmiennej WUSRFLT(WNBRULE) na 2 oraz zwiększenie licznika reguły (WNBRULE).
Dzięki temu możliwe jest uruchomienie tego samego entry point w trybie 'aplikacji': MTOLINK_PE_MODE = « APP ».
Filtry użytkownika na żądaniach są dostępne w zmiennych R_USRFLDn

If WUSRFLT(I_RULE) = 2
R_USRFLD1 = TDEM_USRFLD1(I)
R_USRFLD2 = TDEM_USRFLD2(I)
R_USRFLD3 = TDEM_USRFLD3(I)
Endif

Wtedy filtr użytkownika na zasobie musi być porównany z filtrem na żądaniu, a wartość GPE należy ustawić na 1 w przypadku braku kompatybilności (różny XUSRFLD w przykładzie)

Komentarze:
- Specjalna reguła jest przetwarzana priorytetowo odnośnie tych, które są definiowane w regule przypisania danego artykułu.
- Ten mechanizm jest transparentny, gdyż wszystkie automatyczne kalkulacje przypisania (w tym przycisk 'Propozycja' w narzędziu przypisywania) używają tego samego algorytmu.

#----------------------------------------------------------------------------------------------------------
$ACTION
Case ACTION
Przy 'MTOLINK_PRP' : Gosub MTOLINK_PRP
When 'MTOLINK_RULES' : Gosub MTOLINK_RULES
Endcase

#----------------------------------------------------------------------------------
# Entry point uruchamiany przy ładowaniu list żądania(ń) i zasobu(ów)
# Można użyć albo do magazynowania danych użytkownika (do późniejszego wykorzystania przy stosowaniu reguł)
# Lub do pominięcia zlecenia (zwrot GPE = 1)
$MTOLINK_PRP
# w tym przykładzie magazynujemy XUSRFLD w polach użytkownika
GPE = 0
Case MTOLINK_PE_MODE
When 'D': TDEM_USRFLD1(NDEM) = [F:ORD1]XUSRFLD
When 'R': TRESS_USRFLD1(NRESS) = [F:ORD1]XUSRFLD
Endcase
Return


#----------------------------------------------------------------------------------
# Tutaj korzystamy z pól użytkownika magazynowanych z wykorzystaniem entry point MTOLINK_PRP
# Przypisania będą generowane tylko dla kompatybilnych pól użytkownika

$MTOLINK_RULES
Case MTOLINK_PE_MODE
When 'ACT': # aktywacja reguły
WUSRFLT(WNBRULE) = 2
WNBRULE += 1
When 'APP': # aplikacja reguły
# uzgodnione pola użytkownika
GPE = 0
If TRESS_USRFLD1(K) <> R_USRFLD1 : GPE = 1 Endif
Endcase
Return

MTOLINK_RULES: Dodawanie reguły

Ten entry point, wraz z entry point MTOLINK_PRP, służy do uruchamiania dodatkowych ograniczeń (reguł) w algorytmie obliczania przypisania.

Kontekst i tryb działania

Użyj

Zasada jest następująca:

a) Przy wczytywaniu tabel (pamięci) żądań i zasobów, możliwe jest dodanie do 3 pól użytkownika (łańcuchy zawierające maksymalnie 50 znaków).
TDEM_USRFLD1(index)
TDEM_USRFLD2(index)
TDEM_USRFLD3(index)
Oraz
TRESS_USRFLD1(index)
TRESS_USRFLD2(index)
TRESS_USRFLD3(index)

Wszystkie zlecenia uwzględniane przy obliczaniu są wczytywane do pamięci. Co więcej, dla celów wydajności zaleca się magazynowanie wszystkich elementów, które będą tu uwzględniane.
Zaleca się również dodanie pól użytkownika bezpośrednio do tabeli ORDERS w celu zwiększenia wydajności.

Entry point MTOLINK_PRP jest tu wywoływany w oparciu o dwa tryby: tryb dotyczący żądań (MTOLINK_PE_MODE = 'D' (D dla Żądania)) oraz tryb dotyczący zasobów ('R').
W poniższym przykładzie kodu, pole użytkownika XUSRFLD jest kopiowane do zmiennej pamięci USRFLD1.

b) Rozpoczęcie obliczania przypisania: wczytywanie do pamięci reguł priorytetyzacji zasobów (zobacz reguły przypisania).
Pierwsze wywołanie do entry point MTOLINK_RULES jest wykonywane w trybie 'aktywacji'. MTOLINK_PE_MODE = 'ACT'.
Celem jest poinformowanie przetwarzania obliczania, że istnieje określona reguła do przetworzenia poprzez ustawienie wartości zmiennej WUSRFLT(WNBRULE) na 2 oraz zwiększenie licznika reguły (WNBRULE).
Dzięki temu możliwe jest uruchomienie tego samego entry point w trybie 'aplikacji': MTOLINK_PE_MODE = « APP ».
Filtry użytkownika na żądaniach są dostępne w zmiennych R_USRFLDn

If WUSRFLT(I_RULE) = 2
R_USRFLD1 = TDEM_USRFLD1(I)
R_USRFLD2 = TDEM_USRFLD2(I)
R_USRFLD3 = TDEM_USRFLD3(I)
Koniec jeśli

Wtedy filtr użytkownika na zasobie musi być porównany z filtrem na żądaniu, a wartość GPE należy ustawić na 1 w przypadku braku kompatybilności (różny XUSRFLD w przykładzie)

Komentarze:
- Specjalna reguła jest przetwarzana priorytetowo odnośnie tych, które są definiowane w regule przypisania danego artykułu.
- Ten mechanizm jest transparentny, gdyż wszystkie automatyczne kalkulacje przypisania (w tym przycisk 'Propozycja' w narzędziu przypisywania) używają tego samego algorytmu.

#----------------------------------------------------------------------------------------------------------
$ACTION
Case ACTION
When 'MTOLINK_PRP' : Gosub MTOLINK_PRP
When 'MTOLINK_RULES' : Gosub MTOLINK_RULES
Endcase

#----------------------------------------------------------------------------------
# Entry point uruchamiany przy ładowaniu list żądania(ń) i zasobu(ów)
# Można użyć albo do magazynowania danych użytkownika (do późniejszego wykorzystania przy stosowaniu reguł)
# Lub do pominięcia zlecenia (zwrot GPE = 1)
$MTOLINK_PRP
# w tym przykładzie magazynujemy XUSRFLD w polach użytkownika
GPE = 0
Case MTOLINK_PE_MODE
When 'D': TDEM_USRFLD1(NDEM) = [F:ORD1]XUSRFLD
When 'R': TRESS_USRFLD1(NRESS) = [F:ORD1]XUSRFLD
Endcase
Return


#----------------------------------------------------------------------------------
# Tutaj korzystamy z pól użytkownika magazynowanych z wykorzystaniem entry point MTOLINK_PRP
# Przypisania będą generowane tylko dla kompatybilnych pól użytkownika

$MTOLINK_RULES
Case MTOLINK_PE_MODE
When 'ACT': # aktywacja reguły
WUSRFLT(WNBRULE) = 2
WNBRULE += 1
When 'APP': # aplikacja reguły
# uzgodnione pola użytkownika
GPE = 0
If TRESS_USRFLD1(K) <> R_USRFLD1 : GPE = 1 Endif
Endcase
Return