Obsługa Inwentaryzacji w Aplikacji Mobilnej
Plik android_dpinw.js obsługuje proces inwentaryzacji w aplikacji mobilnej dla systemu magazynowego. Skrypt umożliwia użytkownikowi rejestrowanie i edycję pozycji inwentaryzacyjnych, obsługę skanowania kodów EAN oraz wprowadzanie ilości dla wybranych artykułów.
Funkcja MojaOnLoad()
Główna funkcja odpowiedzialna za inicjalizację formularza inwentaryzacji. W jej ramach:
- Tworzy dynamiczny interfejs użytkownika.
- Ładuje numer inwentaryzacji oraz listę dostępnych dokumentów.
- Obsługuje kolejne kroki rejestracji pozycji inwentaryzacyjnych.
- Dodaje funkcjonalność automatycznego wybierania pola do edycji.
Struktura formularza inwentaryzacji
Formularz składa się z kilku etapów:
STEP_REFNO – Wybór numeru inwentaryzacji
- Użytkownik wprowadza numer inwentaryzacji.
- System pobiera dostępne dokumenty powiązane z inwentaryzacją.
STEP0 – Wybór lokalizacji
- Wprowadzenie numeru lokalizacji.
- System weryfikuje, czy lokalizacja jest aktywna i dostępna do inwentaryzacji.
STEP1 – Skanowanie kodu EAN
- Wprowadzenie kodu EAN artykułu.
- System pobiera indeks i nazwę asortymentu.
STEP2 – Wprowadzenie numeru serii
- Jeśli produkt posiada numer serii, użytkownik musi go wprowadzić.
STEP3 – Wprowadzenie terminu ważności
- System pozwala na wybór terminu ważności produktu.
STEP4 – Wprowadzenie ilości
- Użytkownik wpisuje ilość artykułów w danej lokalizacji.
Obsługa zdarzeń użytkownika
Skrypt monitoruje interakcje użytkownika i reaguje na:
- Wpisanie numeru lokalizacji – sprawdza, czy lokalizacja jest aktywna.
- Wpisanie kodu EAN – pobiera informacje o produkcie.
- Wprowadzenie numeru serii – jeśli wymagane, otwiera kolejne kroki formularza.
- Wybór terminu ważności – automatycznie przechodzi do wpisania ilości.
- Wprowadzenie ilości – zapisuje pozycję w bazie.
Funkcja savePosition()
Obsługuje zapis danych inwentaryzacyjnych do bazy:
- Sprawdza, czy wszystkie wymagane pola są wypełnione.
- Weryfikuje, czy produkt jest na stanie.
- Generuje zapytanie SQL do zapisania pozycji.
- Jeśli zapis się powiódł, resetuje formularz i pozwala na wprowadzenie kolejnej pozycji.
Podsumowanie
Plik android_dpinw.js to kluczowy moduł aplikacji mobilnej do inwentaryzacji magazynowej. Umożliwia użytkownikom skanowanie kodów EAN, wprowadzanie ilości i numerów serii oraz zapis danych w systemie. Dzięki dynamicznemu interfejsowi ułatwia i przyspiesza proces inwentaryzacji.
Skrypt android_dpinw.js
Skrypt android_dpinw.js jest dedykowany interfejsowi mobilnemu, przeznaczonemu dla magazyniera korzystającego z systemu Studio WMS.net. Jego głównym celem jest ułatwienie rejestrowania operacji inwentaryzacyjnych poprzez wieloetapowy formularz, który umożliwia między innymi wprowadzanie numeru inwentaryzacji, lokalizacji magazynowej, kodu EAN asortymentu, a także danych dodatkowych, takich jak numer serii, termin ważności czy ilość. Poniżej przedstawiono szczegółowy opis działania skryptu.
1. Inicjalizacja i dynamiczne generowanie formularza
W momencie wywołania funkcji MojaOnLoad() skrypt:
- Tworzy strukturę formularza – za pomocą składanej zmiennej tekstowej
cTekst
dynamicznie generowany jest kod HTML, który jest następnie wstawiany do kontenera o identyfikatorzeformularz
. Formularz dzielony jest na kilka „kroków” (STEP), z których każdy odpowiada za zbieranie określonych informacji:- STEP_REFNO: Początkowy etap, w którym magazynier wprowadza numer inwentaryzacji (pole NRZLECENIA) oraz widzi listę dostępnych dokumentów (lista zleceń) pobieraną z bazy.
- STEP0: Etap związany z wprowadzeniem lokalizacji magazynowej (pole ADRES). Po weryfikacji wprowadzonych danych (np. czy lokalizacja istnieje, czy jest aktywna, czy objęta inwentaryzacją) zostaje zapisany identyfikator lokalizacji (pole NRIDWMS).
- STEP1: W tej części użytkownik podaje kod EAN asortymentu (EANASN), co pozwala na pobranie danych identyfikacyjnych produktu (np. numeru identyfikatora asortymentu – NRIDASN).
- STEP2: Formularz prezentuje dane asortymentu w trybie tylko do odczytu – nazwę asortymentu (NAZWAAS), indeks (INDEKS) – oraz umożliwia wprowadzenie numeru serii (NRSERII).
- STEP3: Umożliwia określenie terminu ważności asortymentu, wykorzystując mobilny kontroler typu DatePicker (TERMINWAZNOSCI).
- STEP4: Na koniec użytkownik wprowadza ilość asortymentu (ILOSC).
- Interfejs użytkownika – formularz kończy się przyciskiem „Zakończ”, który po kliknięciu wywołuje funkcję zamykającą formularz (funkcja closeWindow()), oraz specjalnym elementem preloadera, wyświetlanym podczas przetwarzania danych.
Po wygenerowaniu struktury formularza wykonywane są dodatkowe operacje:
- Wywoływana jest funkcja setOrderList(), która pobiera listę zleceń do realizacji z bazy danych i wyświetla ją w obszarze przeznaczonym na listę dokumentów.
- Funkcja ssTlumaczenie() odpowiada za przetłumaczenie interfejsu na odpowiedni język.
- Ustawiany jest focus na pole wprowadzania numeru inwentaryzacji, co usprawnia pierwsze kroki operacyjne magazyniera.
2. Obsługa zdarzeń i walidacja wprowadzanych danych
Skrypt intensywnie wykorzystuje mechanizm zdarzeń (event handling), aby zapewnić intuicyjną i responsywną obsługę formularza. Funkcja addEvents() przypisuje odpowiednie akcje do poszczególnych pól formularza:
- Numer inwentaryzacji (NRZLECENIA):
- Na zdarzenie
keyup
reaguje w szczególności naciśnięciem klawisza Enter. - Wprowadzone dane są weryfikowane – skrypt rozróżnia, czy numer został wpisany ręcznie, czy też pochodzi z odczytu (np. zeskanowany kod).
- Po zatwierdzeniu numeru wywoływane są zapytania do bazy (przy użyciu funkcji ssDataSQL()) w celu pobrania szczegółowych danych dokumentu. W wyniku poprawnej weryfikacji pole zostaje zablokowane, lista zleceń ukryta, a widoczny zostaje kolejny etap – wprowadzanie lokalizacji.
- Na zdarzenie
- Lokalizacja magazynowa (ADRES):
- Po wprowadzeniu lokalizacji i naciśnięciu Enter wykonywana jest seria zapytań w celu sprawdzenia, czy podany adres jest poprawny, aktywny oraz objęty inwentaryzacją.
- W przypadku pozytywnej weryfikacji, zapisywany jest identyfikator lokalizacji (pole NRIDWMS), a użytkownik przechodzi do etapu wprowadzania kodu EAN.
- Kod EAN asortymentu (EANASN):
- Po zatwierdzeniu kodu EAN, skrypt pobiera z bazy dane dotyczące asortymentu (takie jak indeks oraz nazwę asortymentu).
- Na podstawie dodatkowych zapytań określa się, czy pozycja była już wcześniej liczona – wówczas przełączany jest tryb aktualizacji (update mode), który pozwala na modyfikację już istniejących danych. W przeciwnym razie skrypt przechodzi do trybu wstawiania nowej pozycji.
- W zależności od wyniku operacji, użytkownik jest kierowany do etapu wprowadzania numeru serii lub bezpośrednio do kolejnych kroków (termin ważności oraz ilość).
- Numer serii (NRSERII), termin ważności (TERMINWAZNOSCI) i ilość (ILOSC):
- Każde z tych pól reaguje na naciśnięcie klawisza Enter, co powoduje wyświetlenie kolejnego etapu formularza oraz automatyczne przewinięcie zawartości, aby użytkownik miał dostęp do kolejnych pól.
- Po wprowadzeniu ilości, wywoływana jest funkcja savePosition(), która kończy proces wprowadzania danych dla danej pozycji.
3. Przetwarzanie i zapis danych
Funkcja savePosition() odgrywa kluczową rolę w finalizacji operacji:
- Weryfikacja danych:
- Skrypt sprawdza, czy wszystkie wymagane pola zostały poprawnie wypełnione (mechanizm walidacji z użyciem funkcji JqxTestWypelnienia()).
- Pobieranie dodatkowych danych:
- W oparciu o identyfikator asortymentu wykonywane są kolejne zapytania SQL (np. w celu pobrania numeru palety oraz kodu palety) – jest to niezbędne do prawidłowego zapisania operacji inwentaryzacyjnej.
- Kompilacja parametrów i zapis:
- Dane z poszczególnych pól (numer inwentaryzacji, identyfikatory dokumentu, lokalizacji, asortymentu, numer serii, termin ważności oraz ilość) są łączone w jeden ciąg parametrów.
- Następnie, przy użyciu funkcji ssExSQL(), wysyłane są do bazy danych odpowiednie zapytanie, które zapisuje lub aktualizuje pozycję inwentaryzacyjną.
- Obsługa wyniku operacji:
- W przypadku wystąpienia błędów system wyświetla komunikat za pomocą JqxAlert().
- Po pomyślnym zapisaniu danych formularz jest resetowany (za pomocą funkcji clearPage()), co umożliwia dalsze wprowadzanie kolejnych pozycji.
4. Obsługa trybu aktualizacji i wstawiania pozycji
Skrypt rozróżnia dwa główne scenariusze:
- Tryb wstawiania (insert mode):
- Gdy dany kod EAN nie został jeszcze zarejestrowany dla danej lokalizacji, użytkownik jest kierowany do wprowadzenia numeru serii, terminu ważności oraz ilości nowego asortymentu (funkcja insertPosition()).
- Tryb aktualizacji (update mode):
- Jeśli pozycja została już wcześniej policzona, skrypt automatycznie pobiera istniejące dane (np. ilość, numer serii, termin ważności) z bazy danych i wyświetla je użytkownikowi.
- W takiej sytuacji użytkownik ma możliwość potwierdzenia zmiany lub modyfikacji pozycji – w przypadku modyfikacji wywoływana jest funkcja changePosition(), która odpowiednio dostosowuje interfejs i wprowadza niezbędne zmiany.
5. Dodatkowe funkcjonalności i mechanizmy ułatwiające pracę
- Obsługa zdarzeń i prewencja wielokrotnego przetwarzania:
- Za pomocą zmiennej
isProcessing
skrypt kontroluje, aby kolejne zdarzenia (np. naciśnięcie klawisza Enter) nie były wykonywane równolegle, co zabezpiecza przed błędami wynikającymi z wielokrotnego wywołania tych samych operacji.
- Za pomocą zmiennej
- Automatyczne przewijanie formularza:
- Funkcja scrollToEndOfPage() zapewnia, że nowe pola formularza stają się widoczne na ekranie, co jest szczególnie istotne w interfejsie mobilnym.
- Resetowanie pól i czyszczenie formularza:
- Funkcja clearPage() umożliwia szybkie wyczyszczenie lub zresetowanie wybranych pól, co pomaga w obsłudze błędów lub w przypadku potrzeby ponownego wprowadzenia danych.
- Zakończenie operacji:
- Funkcja closeWindow() służy do zamknięcia interfejsu i odświeżenia strony głównej, umożliwiając magazynierowi kontynuowanie pracy po zakończeniu operacji.
Podsumowanie
Skrypt android_dpinw.js stanowi kompleksowe narzędzie wspierające pracę magazyniera w systemie Studio WMS.net. Dzięki niemu:
- Użytkownik wprowadza dane inwentaryzacyjne krok po kroku, korzystając z intuicyjnie zaprojektowanego interfejsu mobilnego.
- System weryfikuje poprawność wprowadzonych informacji (np. numer inwentaryzacji, lokalizacja, kod EAN) poprzez serię zapytań do bazy danych.
- Skrypt rozróżnia tryby wstawiania nowej pozycji oraz aktualizacji istniejącej, umożliwiając elastyczną obsługę operacji.
- Mechanizmy takie jak automatyczne przewijanie, blokowanie wielokrotnego przetwarzania oraz czytelne komunikaty błędów zapewniają wysoką użyteczność i efektywność pracy.
Dzięki zastosowaniu powyższych rozwiązań, system Studio WMS.net zapewnia magazynierowi nowoczesne i intuicyjne narzędzie do zarządzania inwentaryzacją, podnosząc tym samym efektywność oraz precyzję operacyjną w magazynie.
Czytaj więcej:
android_dpmag_mm_aso
Skrypt android_dpmag_mm_aso.js stanowi kluczowy element mobilnego interfejsu użytkownika w systemie Studio WMS.net, dedykowanym obsłudze dokumentów MM (magazynowych). Jego głównym zadaniem jest zarządzanie procesem przyjęcia lub wydania towaru w ramach operacji magazynowych, przy czym uwzględnia zarówno tryb przyjęcia, jak i wydania. Poniżej przedstawiono szczegółowy opis funkcjonalności oraz mechanizmów, jakie zostały zaimplementowane w tym module.
android_dpmag_pzb
Skrypt android_dpmag_pzb.js stanowi zaawansowany moduł mobilnego interfejsu w systemie Studio WMS.net, dedykowany operacjom przyjęcia towaru (PZB). Jego zadaniem jest umożliwienie magazynierowi kompleksowej obsługi dokumentu przyjęcia, począwszy od wprowadzenia numeru dokumentu, poprzez identyfikację asortymentu za pomocą kodu EAN
android_dpmag_zl_as
Skrypt android_dpmag_wzb.js to zaawansowany moduł mobilnego interfejsu w systemie Studio WMS.net, dedykowany obsłudze operacji wydania towaru w ramach dokumentów typu „WZB”. Jego głównym celem jest przeprowadzenie magazyniera przez proces realizacji dokumentu – od wprowadzenia numeru dokumentu, poprzez identyfikację pozycji przy użyciu kodu EAN, aż do zatwierdzenia operacji wraz z rejestracją szczegółowych danych dotyczących partii, palet
android_dpmag_zl_pal
android_dpmag_wzb.js umożliwia szybkie i przejrzyste wydanie towaru. System łączy w sobie dynamiczne wprowadzanie danych, aktywną walidację oraz intuicyjną nawigację. Dzięki temu magazynier pracuje sprawnie, a operacje wydania realizuje z minimalnym ryzykiem pomyłek.
jqs_dpinw_zamknij
Skrypt jqs_dpinw_zamknij.js realizuje kompleksowy proces zamykania inwentaryzacji. Na początku dynamicznie generuje interfejs, wyświetlając dane inwentaryzacji, takie jak numer i data. Następnie skrypt sprawdza, czy inwentaryzacja zawiera pozycje bez bilansu otwarcia, co może blokować zamknięcie.