Inwentaryzacja Świata E: Różnice pomiędzy wersjami

Z Motława
(Sprawdzenie czy dokument nie jest zablokowany)
(Korzystanie ze Świata E na przykładzie tworzenia/edycji zamówienia)
 
Linia 13: Linia 13:
 
== Korzystanie ze Świata E na przykładzie tworzenia/edycji zamówienia ==  
 
== Korzystanie ze Świata E na przykładzie tworzenia/edycji zamówienia ==  
  
=== Sprawdzenie czy dokument nie jest zablokowany ===
+
=== Sprawdzenie stanu dokumentu (czy nie jest edytowany) ===
  
 
  CALL _ng_e_rec_init('Check.before.handle', _FROM, _Key, _UserGUID, ``, ``);
 
  CALL _ng_e_rec_init('Check.before.handle', _FROM, _Key, _UserGUID, ``, ``);
Linia 38: Linia 38:
  
 
'''Kontekst = 'OP''''
 
'''Kontekst = 'OP''''
<code>
+
 
 
  CALL opng_E_init('EDIT', _Key, _Param_A, ``, ``);
 
  CALL opng_E_init('EDIT', _Key, _Param_A, ``, ``);
 
  CALL opng_E_Run('before.run', _Key, ``, ``, ``);
 
  CALL opng_E_Run('before.run', _Key, ``, ``, ``);
 
  CALL opng_E_Run(``, _Key, ``, ``, ``);
 
  CALL opng_E_Run(``, _Key, ``, ``, ``);
 
  CALL opng_E_Run('after.run', _Key, ``, ``, ``);
 
  CALL opng_E_Run('after.run', _Key, ``, ``, ``);
</code>
+
 
  
 
gdzie:
 
gdzie:
 
  '''_Key''' - GUID dokumentu,
 
  '''_Key''' - GUID dokumentu,
 
  '''_UserGUID''' - GUID użytkownika
 
  '''_UserGUID''' - GUID użytkownika
 +
 +
=== Dodawanie nowej pozycji ===
 +
'''Kontekst = 'ZM''''
 +
 +
CALL zmpo_E_Let_Insert('IdnTowr', _GUID, _Key, _IdnTowr, _Ilosc, 0, ``, ``, ``, ``);
 +
 +
gdzie:
 +
'''_GUID''' - nowy GUID pozycji,
 +
'''_Key''' - GUID nagłówka dokumentu (z tab. zmng_e)
 +
''''_IdnTowr''' - GUID towaru
 +
'''_Ilosc''' - Ilość w pozycji do dodania
 +
 +
=== Zapis zmian ===
 +
'''Kontekst = 'ZM''''
 +
 +
Tylko ZAPIS
 +
  CALL zmng_E_Let('Apply', '_Key', ``, ``);
 +
 +
ZAPIS i WYJŚCIE
 +
CALL zmng_E_Let('ApplyAndClear', '_Key', ``, ``);
 +
gdzie:
 +
'''_Key''' - GUID nagłówka dokumentu (z tab. zmng_e)
 +
 +
 +
=== Odrzucenie zmian ===
 +
'''Kontekst = 'ZM''''
 +
 +
CALL zmng_E_Let('Clear', '_Key', ``, ``);
 +
gdzie:
 +
'''_Key''' - GUID nagłówka dokumentu (z tab. zmng_e)

Aktualna wersja na dzień 13:46, 8 paź 2015

W przypadku wielu operacji na dokumentach jest wykorzystywany Świat E, każdy programista w firmie INT na pewno słyszał tą magiczną nazwę, ale nie do końca wie co się pod nią kryje i jak to właściwie działa, także postaram się trochę o tym opowiedzieć i przedstawić konkretny przykład zastosowania.

Zacznijmy od rysunku:

SwiatEszkic.jpg


Jak widać z powyższego szkicu Świat E jest tymczasowym środowiskiem pracy, przypisanym do konkretnego użytkownika.

  1. Użytkownik otwiera dokument w celu edycji -> Następuje sprawdzenie czy dokument nie jest blokowany (otwarty) przez innego użytkownika, jeśli nie to system nakłada blokadę na dokument (Wpis do tabeli locks), a następnie kopiuje dokument do Świata E z GUID'em danego użytkownika (Tylko on ma dostęp do tego dokumentu w Świecie E). Jeśli dokument byłby zablokowany, to użytkownik otrzyma komunikat z informacja kto edytuje dany dokument i nie będzie mógł kontynuować
  2. Wszystkie zmiany w dokumencie wykonywane przez użytkownika są zapisywane w kopii utworzonej w Świecie E. Oryginalny dokument pozostaje nie naruszony, aż do momentu, gdy użytkownik nie kliknie opcji zapisz i wyjdź, wówczas oryginalny dokument zostaje zastąpiony zmienioną wersją ze Świata E. Po udanej zmianie dokument jest odblokowywany, a kopia ze Świata E jest usuwana. Gdy użytkownik NIE zdecyduję się na zapis zmian (kliknie Anuluj), następuje wyczyszczenie Świata E i odblokowanie dokumentu.

Korzystanie ze Świata E na przykładzie tworzenia/edycji zamówienia

Sprawdzenie stanu dokumentu (czy nie jest edytowany)

CALL _ng_e_rec_init('Check.before.handle', _FROM, _Key, _UserGUID, ``, ``);
CALL _ng_e_rec_msg_select(``, _Key, 'handle.init', ``);	

gdzie:

_FROM = context (np. ZM - zamowenia, OP - operacje),
_Key - GUID dokumentu,
_UserGUID - GUID użytkownika


Jeśli dokument nie jest przez nikogo blokowany nie otrzymamy żadnego rekordu, natomiast w przypadku istnienia blokady otrzymamy rekord zwrotny z komunikatem, typem komunikatu oraz efektem. Np.

Wynik1swiatE.PNG

Inicjacja Świata E

Kontekst = 'ZM'

CALL zmng_E_init('EDIT', _Key, _UserGUID, ``, ``);
CALL zmng_E_Run('before.run', _Key, ``, ``, ``);
CALL zmng_E_Run(``, _Key, ``, ``, ``);
CALL zmng_E_Run('after.run', _Key, ``, ``, ``);


Kontekst = 'OP'

CALL opng_E_init('EDIT', _Key, _Param_A, ``, ``);
CALL opng_E_Run('before.run', _Key, ``, ``, ``);
CALL opng_E_Run(``, _Key, ``, ``, ``);
CALL opng_E_Run('after.run', _Key, ``, ``, ``);


gdzie:

_Key - GUID dokumentu,
_UserGUID - GUID użytkownika

Dodawanie nowej pozycji

Kontekst = 'ZM'

CALL zmpo_E_Let_Insert('IdnTowr', _GUID, _Key, _IdnTowr, _Ilosc, 0, ``, ``, ``, ``);

gdzie:

_GUID - nowy GUID pozycji,
_Key - GUID nagłówka dokumentu (z tab. zmng_e)
'_IdnTowr - GUID towaru
_Ilosc - Ilość w pozycji do dodania

Zapis zmian

Kontekst = 'ZM'

Tylko ZAPIS

 CALL zmng_E_Let('Apply', '_Key', ``, ``);

ZAPIS i WYJŚCIE

CALL zmng_E_Let('ApplyAndClear', '_Key', ``, ``);

gdzie: _Key - GUID nagłówka dokumentu (z tab. zmng_e)


Odrzucenie zmian

Kontekst = 'ZM'

CALL zmng_E_Let('Clear', '_Key', ``, ``);

gdzie: _Key - GUID nagłówka dokumentu (z tab. zmng_e)