Gniazda rozszerzeń
Jest to funkcja dedykowana dla wariantu Prestiż Plus – umożliwia ona rozszerzenia systemu magazynowo handlowego WAPRO Mag. Gniazda to nic innego jak zdarzenia, na które program reaguje w momencie ich wystąpienia. W momencie aktywacji gniazda następuje aktywacja jakiegoś kodu zdefiniowanego przez użytkownika przy spełnieniu warunków.
Filtr własny
W wersji 8.40.4 dodano możliwość definiowania w gniazdach dodatkowych filtrów, które będą „doklejone” do standardowych filtrów, które użytkownik zdefiniował na wybranym ekranie. Pozwala to administratorowi systemu na bardzo precyzyjne ograniczanie widoczności rekordów na wybranych oknach poprzez nałożenie na niego odgórnych kryteriów tego co może oglądać.
Okna, w których można wykonać takie ustawienia filtra to:
- dokumenty handlowe
- dokumenty magazynowe
- oferty handlowe
- zamówienia
- kartoteka artykułów
- kartoteka kontrahentów
- zlecenia serwisowe
- zlecenia produkcyjne
Procedury SQL
Aby ustawić filtr na danym oknie trzeba uruchomić procedurę składowaną SQL w gnieździe PRZED OTWARCIEM OKNA.
Procedura zasadniczo jest bardzo prosta i może wyglądać tak jak przykład poniżej:
if exists (select 1 from sysobjects where name = 'MAGSRC_UstawFiltrSQLDokM' and type = 'P')
drop procedure MAGSRC_UstawFiltrSQLDokM
go
create procedure MAGSRC_UstawFiltrSQLDokM
@FiltrDodatkowySQL varchar(255) OUTPUT, @PodlegaKasowaniuFiltrDodatkowySQL tinyint OUTPUT
as
declare @errmsg varchar(255)
begin
set @FiltrDodatkowySQL='A.KONTRAHENT_NAZWA like ''%AGD%''' set @PodlegaKasowaniuFiltrDodatkowySQL = 1 return
end
go
Procedura po uruchomieniu wykonuje ustawienie filtra, który zawsze doklejony będzie do pozostałych filtrów (np. filtr daty, magazynu, inne filtry wybrane w filtrze dokumentów w oknie F8). Filtr z założenia umożliwia użytkownikom wyświetlanie tylko i wyłącznie dokumentów, którzy wystawieni są na kontrahenta, który w nazwie ma AGD (przykład pochodzi z bazy WAPRO_DEMO gdzie występują np. kontrahenci Duża hurtownia AGD itp.)
Aby procedura działała należy ją wgrać do bazy danych – oczywiście najwygodniej jest to wykonać z poziomu narzędzia SQL Server Management Tools lub SQL Data Tools w zależności od tego z jakiej wersji SQL Server się korzysta. Wymaga to dostępu do serwera na konto SA lub inne, które posiada uprawnienia do zakładania procedur w bazie danych aplikacji do zarządzania przedsiębiorstwem WAPRO ERP.
Definiowanie gniazda w programie
Podstawowa zasada obsługi gniazd to oczywiście posiadanie licencji na wariant Prestiż PLUS. Drugi warunek to „przeklikanie” okien, na których chcemy definiować gniazda a następnie ponownie uruchomienie programu. Wynika to z faktu, że program nie ładuje od razu wszystkich zmiennych do obsługi gniazd, tylko doładowuje je w momencie uruchamiania poszczególnych funkcji ze względów wydajnościowych. Jeśli już to wykonaliśmy to w oknie dokumenty magazynowe (nasz przykład) po uruchomieniu okna można wybrać na koncie administratora kombinację klawiszy Ctrl + Shift + F12 co powoduje wyświetlenie listy gniazd rozszerzeń w systemie WAPRO Mag ale tylko dla tego okna. Lista domyślnie będzie zawierała tylko miejsca wywołań poszczególnych gniazd. Nas interesuje na dole listy w drzewie „Otwarcie okna listy dokumentów magazynowych” – PRZED.
Gniazdo ustawiamy przed załadowaniem ekranu aby obowiązywało. Nasz przypadek nie zakłada dodatkowych warunków wejściowych np. uzależnienie filtra od użytkownika, który uruchomił gniazdo poprzez wejście do danego okna.
Definiowanie gniazda PRZED
Podświetl wskazane gniazdo i wybierz Dodaj
Pojawi się okno definiowania gniazda, w którym należy podać co gniazdo ma uruchomić oraz jakie zmienne ma mieć do dyspozycji.
Wpisz nazwę gniazda oraz typ funkcji wybierz z listy jako Procedura SQL (zakładam, że procedura już została wgrana do bazy, jeśli nie możesz wybrać opcję Pokaż schemat procedury SQL i do okna wkleić kod z listingu powyżej a następnie możesz wybrać opcję Wykonaj SQL aby ją uruchomić z programu bez dostępu do narzędzia SQL Server Management Studio.
W polu Lista parametrów możesz przepisać zmienne widoczne na zrzucie poniżej lub wybrać je korzystając z opcji Wybierz zmienne aplikacji. Zmienne to po prostu wartości, które zostaną podstawione (w tym przypadku) do procedury składowanej SQL. W tym przypadku zmienne są OUTPUT co oznacza, że w kodzie procedury programista może nadpisać stan zmiennej swoją wartością a program ją odbierze i zinterpretuje. W naszym przypadku będzie to nadpisanie zmiennej $FiltrDodatkowySQL oraz doklejenie tego warunku do filtra utworzonego przez okno dokumentów magazynowych.
Zakres filtra
W naszym przykładzie filtr jest globalny bo nie warunkuje swojego wykonania w zależności od tego, kto go „uruchamia” – celowo napisałem to w cudzysłowiu ponieważ gniazdo uruchamia się samo na zdarzenie. Zdarzeniem jest tu zainicjowanie uruchomienia okna dokumentów magazynowych.
Jeśli chcielibyśmy to uwarunkować należałoby zapewne przekazać do procedury zmienną @IdUzytkownika i zrobić w procedurze stosowny warunek SQL.
Weryfikacja działania
Aby sprawdzić działanie wystarczy zapisać zmiany i ponownie wejść do okna dokumentów magazynowych, filtr powinien obowiązywać. W zależności co ustawione zostało w zmiennej $PodlegaKasowaniuFiltrDodatkowySQL można wpłynąć na to czy ten filtr będzie skasowany przy wybraniu opcji Skasuj wszystkie filtry na oknie.