Transakcja MENU_DPMAG.ASPX?typdok=P wyświetla submenu z opcjami dokumentów przychodowych. Z jego poziomu operator przechodzi do dokumentów awiza dostawy, czyli zleceń przyjęcia, oraz do przyjęć z zewnątrz PZ. Parametr w adresie wybiera typ dokumentów, które pokaże strona.
Spis treści
Budowa adresu transakcji
Adres składa się z nazwy strony i parametru zapytania. Strona jest elementem witryny internetowej programu magazynowego, więc działa w przeglądarce tak jak pozostałe ekrany Studio WMS.net. Parametr po znaku zapytania przekazuje do strony wartość, od której zależy zawartość submenu.
| Część adresu | Znaczenie |
|---|---|
| MENU_DPMAG | nazwa strony z submenu dokumentów magazynowych |
| .ASPX | rozszerzenie strony aplikacji internetowej ASP.NET |
| ?typdok=P | parametr zapytania, który wskazuje dokumenty przychodowe |
| Wynik wywołania | submenu z opcjami awiza dostawy i przyjęcia z zewnątrz PZ |
Taki zapis pozwala jednej stronie obsługiwać różne typy dokumentów, bo o zawartości decyduje wartość parametru. Dla dokumentów przychodowych parametr przyjmuje wartość P, a wartości dla innych typów nie są przedmiotem tej strony.
Opcje submenu dokumentów przychodowych
Awizo dostawy i zlecenie przyjęcia
Dokument zlecenia przyjęcia ZPZ zapowiada dostawę, zanim towar dotrze na rampę. Nagłówek formularza zawiera cztery pola, które operator wypełnia przed przejściem do pozycji.
- Kontrahent. Dostawca wybierany z kartoteki, z podpowiedzią podczas pisania.
- Nr awizo. Numer zapowiedzi dostawy, który łączy zlecenie z planem rampy.
- Uwagi. Pole tekstowe na informacje dla zespołu przyjęć.
- Wysoki priorytet. Pole wyboru oznaczające pilne zlecenie.
Awizacja dostaw porządkuje przyjazdy pojazdów w oknach czasowych, a zasady planowania rampy opisuje strona o awizacji dostaw.
Przyjęcie z zewnątrz PZ
Dokument PZ rejestruje fizyczne przyjęcie towaru na magazyn. Powstaje na podstawie wcześniejszego zlecenia ZPZ, a przyjęcie bezpośrednie bez zlecenia ma osobny dokument PZB. Lista przyjęć pokazuje oba typy z datą i statusem realizacji.
Reguła: ZPZ zapowiada dostawę, a PZ potwierdza ją ilością i lokalizacją odłożenia. Dopóki towar nie zostanie przyjęty dokumentem PZ, stan magazynowy się nie zmienia.
Przebieg przyjęcia opisuje strona o przyjęciu do magazynu, a pełny obieg papierów strona o dokumentach magazynowych.
Dokumenty przychodowe w kolejności zdarzeń
Submenu zbiera dokumenty, które w magazynie następują po sobie. Każdy z nich zamyka inny etap przyjęcia i zostawia inny ślad w bazie. Zestawienie poniżej pokazuje, który dokument odpowiada za jaki skutek.
| Etap | Dokument | Skutek w systemie |
|---|---|---|
| Zapowiedź dostawy | awizo, zlecenie ZPZ | plan przyjęcia z kontrahentem i numerem awizo, bez zmiany stanu |
| Przyjęcie na podstawie zlecenia | PZ | wzrost stanu, przypisanie lokalizacji odłożenia |
| Przyjęcie bez zlecenia | PZB | wzrost stanu bez wcześniejszego planu |
| Kontrola listy | lista przyjęć | przegląd dokumentów z datą i statusem realizacji |
Oba typy przyjęcia kończą się tym samym skutkiem magazynowym, ale różnią się przygotowaniem. Przyjęcie na podstawie zlecenia pozwala porównać dostawę z planem. Przyjęcie bez zlecenia takiego porównania nie ma, więc wymaga większej uwagi przy kontroli ilości. Przy dużej liczbie dostaw dziennie różnica ta jest widoczna w czasie pracy zespołu: dostawa awizowana przechodzi przez rampę szybciej, bo operator zna oczekiwane pozycje przed otwarciem naczepy, a dostawa bez zlecenia trzeba najpierw opisać od zera.
Dwa znaczenia słowa transakcja
W programie słowo transakcja występuje w dwóch znaczeniach, które łatwo pomylić. Transakcja menu to wywołanie ekranu, na przykład submenu dokumentów przychodowych. Transakcja bazy danych to blok operacji, który SQL Server zatwierdza albo cofa jako całość. Zapis dokumentu PZ korzysta z tego drugiego mechanizmu.
BEGIN TRAN;
INSERT INTO dbo.PZNaglowki (KontrahentId, DataPrzyjecia) VALUES (@KontrahentId, SYSDATETIME());
DECLARE @PZId int = SCOPE_IDENTITY();
INSERT INTO dbo.PZPozycje (PZId, AsortymentId, Ilosc, LokalizacjaId)
VALUES (@PZId, @AsortymentId, @Ilosc, @LokalizacjaId);
UPDATE dbo.StanyLokalizacji SET Ilosc = Ilosc + @Ilosc
WHERE LokalizacjaId = @LokalizacjaId AND AsortymentId = @AsortymentId;
COMMIT;
Przykład jest ilustracyjny i nie odwzorowuje tabel produktu. Gdy któraś z instrukcji się nie powiedzie, silnik cofa wszystkie trzy zapisy, więc w bazie nie zostaje nagłówek bez pozycji ani zmiana stanu bez dokumentu. Zasady transakcji opisuje dokumentacja BEGIN TRANSACTION.
Transakcja jako wpis w tabeli administratora
Program pozwala wywoływać elementy systemu, które nazywa transakcjami. Transakcją jest dowolne wywołanie elementu witryny programu magazynowego. Może nią być także dowolna inna strona z innej witryny internetowej, na przykład dokumentacja udostępniana przez dostawcę.
Administrator ma wgląd w tabelę dostępnych transakcji. Może ją edytować oraz dopisywać nowe wpisy. Na podstawie tej tabeli konfiguruje MENU dla użytkowników programu. Warianty prezentacji menu opisuje strona o konfiguracji menu, a przykład transakcji z tabelą kontrahentów strona o transakcji KNKON_GRID.ASPX.
Parametr z adresu w zapytaniu do bazy
Wartość parametru pochodzi od klienta, więc nie wolno wklejać jej do tekstu zapytania. Przykład poniżej jest ilustracyjny i nie pokazuje schematu produktu. Procedura składowana przyjmuje typ dokumentu jako parametr i zwraca tylko te pozycje submenu, do których użytkownik ma prawo.
CREATE PROCEDURE dbo.PobierzPozycjeSubmenu
@UzytkownikId int,
@TypDok char(1)
AS
BEGIN
SET NOCOUNT ON;
SELECT t.Kod, t.Opis, t.Adres
FROM dbo.Transakcje AS t
JOIN dbo.UprawnieniaTransakcji AS u ON u.TransakcjaId = t.TransakcjaId
WHERE u.UzytkownikId = @UzytkownikId
AND t.TypDok = @TypDok
ORDER BY t.Kolejnosc;
END;
- Typ char(1). Parametr przyjmuje jeden znak, więc dłuższy ciąg w adresie zostaje odrzucony przez silnik.
- Złączenie z uprawnieniami. Menu pokazuje wyłącznie transakcje dozwolone dla zalogowanego użytkownika.
- Kolejność. Klauzula ORDER BY układa pozycje według ustalonej kolejności, a nie według numeru wpisu.
- Indeks. Indeks na kolumnach TypDok i Kolejnosc ogranicza koszt zapytania wykonywanego przy każdym otwarciu menu.
Składnię procedur opisuje dokumentacja CREATE PROCEDURE w SQL Server.
Ostrzeżenie techniczne: ukrycie pozycji w menu nie zastępuje kontroli uprawnień. Użytkownik może wpisać adres transakcji ręcznie, więc strona sprawdza prawo dostępu przy każdym wywołaniu, a nie tylko przy budowie menu. Podział ról opisuje strona o rolach i użytkownikach w systemie WMS.
Utrzymanie tabeli transakcji
Tabela dostępnych transakcji rośnie wraz z wdrożeniem. Każdy wpis ma kod oraz adres wywołania, a przy transakcjach z parametrem także jego wartość. Opis wyjaśnia, co otwiera dana pozycja. Porządek w tej tabeli decyduje o tym, czy menu pozostaje czytelne po kilku latach pracy.
- Kod transakcji. Powinien być krótki i stały, bo użytkownik może wpisać go w menu typu Transakcje zamiast szukać pozycji w drzewie.
- Opis. Mówi, co otwiera pozycja, i odróżnia podobne ekrany, na przykład dokumenty przychodowe od rozchodowych.
- Adres z parametrem. Zapisany w całości, na przykład ze wskazaniem typu dokumentu, żeby ten sam ekran dało się zarejestrować więcej niż raz.
- Test po zmianie. Nowy wpis sprawdza się na koncie o ograniczonych uprawnieniach, bo konto administratora pokaże pozycję nawet wtedy, gdy zwykły użytkownik jej nie zobaczy.
Najczęściej używane transakcje użytkownik może zebrać we własnym panelu. Opisuje to strona o menu ulubionym, a dostęp do transakcji z urządzeń mobilnych strona o aplikacji na terminal. Przy większej liczbie wpisów pomaga też stały schemat nazw, który odróżnia przyjęcia od wydań już po samym kodzie.
Submenu nie zmienia danych samo w sobie. Jest punktem wejścia do formularzy, a zapis powstaje dopiero po zatwierdzeniu dokumentu. Dlatego błąd w adresie transakcji kończy się pustym lub niewłaściwym menu, ale nie uszkadza stanów magazynowych.
Licencjonowanie i identyfikacja towaru
Licencja na procesor zamiast na użytkownika
Przy aplikacjach o dużej lub zmiennej liczbie użytkowników opłaca się rozważyć licencjonowanie na procesor. Stanowi ono alternatywę dla tradycyjnej licencji liczonej od użytkownika.
- Licencja na użytkownika. Wymaga określenia konkretnej liczby osób, które będą korzystać z programu.
- Licencja na procesor. Nie wymaga tej liczby, więc dopasowuje się do zmieniających się potrzeb przedsiębiorstwa.
Kody kreskowe i terminal Android
Aplikacja obsługuje dowolną liczbę towarów i dokumentów magazynowych. Kod kreskowy może być dowolnym ciągiem znaków, więc magazyn nie musi zmieniać własnych oznaczeń, aby zacząć skanowanie. Magazyn, w którym obok kodów EAN funkcjonują oznaczenia własne, obsługuje je w jednym procesie i w jednej bazie. Przy przyjęciu skan zastępuje ręczne przepisywanie symbolu, więc pomyłka w jednym znaku nie trafia do dokumentu PZ. Zasady kodowania opisuje strona o kodach kreskowych, a pracę na terminalu strona o WMS na Androidzie.
Ogólny opis systemu klasy WMS znajduje się na stronie System WMS producenta. Pojęcia z tego obszaru porządkuje słownik pojęć CSCMP.
Pytania i odpowiedzi o transakcję MENU_DPMAG.ASPX
Przekazuje do strony typ dokumentów, które ma pokazać submenu. Wartość P oznacza dokumenty przychodowe.
ZPZ jest zleceniem przyjęcia i zapowiada dostawę. PZ rejestruje fizyczne przyjęcie towaru na magazyn i dopiero on zmienia stan magazynowy.
Glosariusz pojęć związanych z transakcjami w menu
- Transakcja menu
- Wywołanie elementu witryny programu magazynowego albo innej strony internetowej, uruchamiane z poziomu menu.
- MENU_DPMAG.ASPX
- Strona submenu dokumentów magazynowych. Parametr typdok wybiera typ dokumentów pokazanych w submenu.
- Parametr zapytania
- Wartość przekazana w adresie po znaku zapytania, na przykład typdok=P, od której zależy działanie strony.
- Awizo dostawy
- Zapowiedź przyjazdu dostawy z numerem, kontrahentem i terminem, na której opiera się zlecenie przyjęcia.
- ZPZ
- Zlecenie przyjęcia do magazynu. Zapowiada dostawę i jest podstawą do wystawienia dokumentu PZ.
- PZ
- Przyjęcie zewnętrzne, dokument rejestrujący fizyczne przyjęcie towaru na magazyn.
- PZB
- Przyjęcie zewnętrzne bezpośrednie, realizowane bez wcześniejszego zlecenia ZPZ.
- Tabela transakcji
- Zbiór wpisów dostępnych transakcji, który administrator edytuje i z którego buduje menu użytkowników.
- Licencja na procesor
- Model licencjonowania zależny od liczby procesorów serwera, a nie od liczby użytkowników aplikacji.