WMS.net jest autorskim programem magazynowym marki SoftwareStudio, dostępnym w wersji chmurowej i lokalnej. Ten artykuł opisuje konkretny produkt, a nie klasę oprogramowania. Ogólną definicję i granicę wobec modułu ERP zawiera tekst system WMS - zakres funkcji i budowa, a podział rynku na rodzaje strona systemy WMS.

Poniżej opisano, z czego program się składa, jakie środowisko wymaga i jak wygląda jego wdrożenie. Przykłady kodu są poglądowe: pokazują mechanizm, a nie fragment źródeł produktu.

Czym jest system magazynowy WMS.net jako produkt

Nazwa Studio WMS.net odnosi się do platformy .NET, na której SoftwareStudio rozwija oprogramowanie od wielu lat. Rodzina Studio obejmuje także systemy do awizacji i reklamacji oraz do obsługi narzędziowni i palet, o czym mówią pozostałe działy serwisu. Wspólne komponenty pozwalają utrzymywać te produkty na jednym stosie technologicznym: C# i T-SQL po stronie serwera oraz JavaScript z biblioteką jQuery w przeglądarce.

Program jest przeznaczony dla firm, które prowadzą własny magazyn i potrzebują narzędzia dopasowanego do asortymentu. Korzystają z niego zarówno firmy produkcyjne i handlowe, jak i sklepy internetowe wysyłające paczki do klienta końcowego. W jednym z wdrożeń z 2009 roku aplikacja obsługiwała jednocześnie około 300 użytkowników pracujących w przeglądarce, co potwierdziło zachowanie systemu przy dużej liczbie równoległych sesji. Historię i ogólny opis produktu zawiera strona Studio WMS.net.

Architektura na SQL Server i platformie .NET

System składa się z bazy danych i serwera aplikacji, a nad nimi pracują klienci trzech typów. Logika biznesowa, taka jak rezerwacje i kolejność kompletacji, wykonuje się po stronie serwera, a nie na stacjach roboczych. Weryfikację dokumentów i uprawnień również przejmuje serwer. Dzięki temu poprawka reguły obowiązuje wszystkie warianty klienta jednocześnie.

Baza Microsoft SQL Server

Dane magazynu leżą w bazie Microsoft SQL Server w wersji 2012 lub nowszej. Dla mniejszych wdrożeń wystarcza edycja Express, dla większych stosuje się Standard. Instancja może działać na serwerze fizycznym, maszynie wirtualnej albo w środowisku chmurowym, a wybór zależy od polityki bezpieczeństwa firmy. Reguły kontroli, na przykład sprawdzenie ilości przed wydaniem, są zapisane w procedurach składowanych, które wywołują wszyscy klienci. Baza zawiera cały stan magazynu, więc plan kopii zapasowych ustala się już w analizie przedwdrożeniowej, a nie po pierwszej awarii.

Serwer aplikacji ASP.NET

Serwer aplikacji jest zbudowany na technologii ASP.NET i pracuje na Windows Server pod kontrolą serwera IIS. Odbiera żądania od przeglądarek i terminali, wywołuje procedury w bazie i zwraca wynik. Klient nie łączy się z bazą wprost, tylko przez tę warstwę, która pilnuje uprawnień i ogranicza liczbę połączeń. Ogólne informacje o platformie zawiera dokumentacja ASP.NET w Microsoft Learn.

Ilustracja platformy Microsoft .NET, na której działa serwer aplikacji i klient desktopowy
Platforma .NET obsługuje serwer aplikacji oraz klienta na stacji Windows, co pozwala współdzielić kod dostępu do danych

Wywołanie procedury z kodu C# sprowadza się do polecenia typu StoredProcedure z jawnie typowanymi parametrami. Przykład pokazuje wydanie towaru z lokacji (nazwy są poglądowe, to nie schemat produktu):

using System.Data;
using System.Data.SqlClient;

public static void WydajZLokacji(string polaczenie, int lokacjaId, int towarId, decimal ilosc)
{
    using (var conn = new SqlConnection(polaczenie))
    using (var cmd = new SqlCommand("dbo.WydajZLokacji", conn))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@LokacjaId", SqlDbType.Int).Value = lokacjaId;
        cmd.Parameters.Add("@TowarId", SqlDbType.Int).Value = towarId;

        var p = cmd.Parameters.Add("@Ilosc", SqlDbType.Decimal);
        p.Precision = 18;
        p.Scale = 3;
        p.Value = ilosc;

        conn.Open();
        cmd.ExecuteNonQuery();
    }
}

Parametry są przekazywane jako wartości, a nie sklejane w tekst zapytania, więc dane wpisane przez użytkownika nie zmienią treści instrukcji SQL. Blok using zamyka połączenie także po błędzie, dzięki czemu pula połączeń nie wyczerpuje się przy szczycie ruchu.

Reguła: aplikacja nie składa zapytań z tekstu wpisanego przez użytkownika, zawsze przekazuje wartości jako parametry.

Warianty klienta na jednej bazie danych

Ten sam rdzeń funkcjonalny jest dostępny w trzech środowiskach pracy. Każdy wariant zapisuje operacje w tej samej bazie, więc biuro i magazynier widzą jednakowy stan. Podział aplikacji według stanowisk, w tym starsze kolektory, opisuje artykuł aplikacje WMS.

WariantŚrodowisko pracyTypowe zastosowanie
FrameworkProgram na stacji Windows, interfejs zbliżony do pakietu OfficePraca wielookienkowa w biurze magazynu
WebPrzeglądarka, także w modelu magazynu w chmurzeDostęp z wielu lokalizacji bez instalacji
AndroidTerminal lub skaner z czytnikiem kodówPrzyjęcia i kompletacja przy regale

Klient desktopowy dla Windows

Klient desktopowy Framework działa na bibliotekach .NET Framework 3.5 i utrzymuje stałe połączenie z serwerem aplikacji. Pobiera z niego dane w czasie rzeczywistym i nie przechowuje własnej kopii bazy. Wymaga instalacji i aktualizacji komponentu na każdej stacji roboczej, więc sprawdza się w biurze o stałej liczbie stanowisk.

Wersja web

Wersja webowa nie wymaga instalacji, a nową wersję wgrywa się raz na serwerze. Interfejs korzysta z JavaScriptu i jQuery, a listy stanów odświeżają się asynchronicznie. Poniższy fragment pobiera stany lokacji z usługi zwracającej JSON (adres i nazwy pól są poglądowe):

$.ajax({
  url: '/api/stany',
  data: { lokacja: 'A-03-02-1' },
  dataType: 'json'
}).done(function (wiersze) {
  var $tbody = $('#stany tbody').empty();
  $.each(wiersze, function (i, w) {
    $('<tr>').append(
      $('<td>').text(w.kod),
      $('<td>').text(w.ilosc)
    ).appendTo($tbody);
  });
});

Dane trafiają do tabeli metodą .text(), a nie przez sklejanie znaczników, dlatego nazwa towaru zawierająca kod HTML nie zostanie wykonana w przeglądarce. Wersja web sprawdza się przy pracy z kilku lokalizacji i w modelu chmurowym, gdzie infrastruktura pozostaje po stronie dostawcy.

Aplikacja na terminale Android

Aplikacja mobilna obsługuje operacje przy regale: potwierdza przyjęcie i kompletację skanem lokacji oraz towaru. Dane trafiają do systemu w czasie rzeczywistym. Przy braku zasięgu Wi-Fi moduł zapisuje operacje lokalnie i synchronizuje je z serwerem po odzyskaniu połączenia, a serwer odrzuca operację, która dałaby stan ujemny. Starsze kolektory z Windows CE można wymienić na Androida bez zmiany bazy danych.

Dobór terminala zależy od strefy pracy. W chłodni liczy się odporność obudowy i akumulatora na niską temperaturę, a na rampie zasięg czytnika do etykiet na wysokiej palecie. Czytnik 2D odczytuje kody GS1-128 i DataMatrix z etykiet logistycznych, a wersja Androida decyduje o okresie wsparcia poprawkami bezpieczeństwa i o zgodności z narzędziem do zarządzania urządzeniami mobilnymi.

Ilustracja programu magazynowego Studio WMS.net pracującego na stanowiskach biurowych i terminalach
Trzy warianty klienta pracują na jednej bazie SQL Server obsługiwanej przez serwer aplikacji

Moduły funkcjonalne WMS.net

Program jest zbudowany z modułów odpowiadających kolejnym etapom przepływu towaru. Firma może zacząć od podstawowego zestawu i dokładać kolejne moduły, gdy rośnie skala pracy.

  • Przyjęcia - rejestracja dostaw na podstawie awizacji, zamówienia zakupu lub dokumentu PZ z kontrolą zgodności przy rampie.
  • Kompletacja - trasy zbiórki i strategie kompletacji, w tym falowa i strefowa, a po zbiórce dokument WZ z etykietami wysyłkowymi.
  • Lokalizacje i zapasy - adres strefy i regału oraz poziomu, partie z datami ważności i raporty rozbieżności.
  • Raportowanie - zestawienia rotacji i wydajności oraz poziomu zapasów oparte na SQL Server Reporting Services.

Moduł przyjęć porównuje skan z pozycją dokumentu i od razu przypisuje towar do lokacji, więc stan jest aktualny po zakończeniu rozładunku. Opis procesu zawiera artykuł przyjęcie towaru do magazynu, a dokumenty PZ i WZ omawia strona o dokumentach magazynowych. Moduł kompletacji prowadzi magazyniera po najkrótszej trasie i wymaga potwierdzenia skanem przed zamknięciem pozycji, co opisuje tekst kompletacja zamówień.

Moduł lokalizacji obsługuje daty ważności i numery partii, co jest istotne przy zasadzie FEFO. Raporty rozbieżności ułatwiają przygotowanie inwentaryzacji bez zatrzymywania pracy magazynu. Raportowanie zbiera dane ze wszystkich modułów, a zasady liczenia wskaźników i widoków opisuje artykuł o raportowaniu w systemie WMS.

Zastosowania w różnych profilach firm

Rdzeń programu jest wspólny, ale moduły przekładają się na inne korzyści zależnie od profilu działalności. Poniższe zestawienie wskazuje, który moduł ma największe znaczenie w danym typie firmy.

Profil firmyNajważniejszy modułZadanie w praktyce
ProdukcjaLokalizacje i zapasyRezerwacja surowców pod zlecenia i śledzenie partii w seriach wyrobu
Handel hurtowyKompletacjaJednoczesna obsługa wielu zamówień w jednej fali
Dystrybucja regionalnaLokalizacje i zapasyWspólny widok stanów kilku magazynów i przenoszenie towaru między nimi
Sklep internetowyKompletacja i integracjeEtykiety wysyłkowe po zakończeniu zbiórki i synchronizacja stanów ze sklepem

W magazynie zaopatrującym linie produkcyjne przestój z powodu brakującego komponentu kosztuje więcej niż utrzymanie systemu, dlatego rezerwacja surowców i planowanie uzupełnień według harmonogramu mają pierwszeństwo przed szybkością kompletacji. W firmie handlowej odwrotnie: o wyniku decyduje czas przygotowania wysyłek w godzinach szczytu, który skraca kompletacja falowa. Ogólne różnice między rodzajami systemów opisuje strona o systemach WMS.

Wymagania techniczne i licencjonowanie

Wymagania zależą od liczby stanowisk i zakresu integracji. Poniższa tabela podaje minimalną specyfikację środowiska dla instalacji lokalnej.

ElementWymaganie
Serwer aplikacjiWindows Server, procesor co najmniej 4-rdzeniowy, 8 GB RAM (zalecane 16 GB przy większej liczbie stanowisk)
Baza danychMicrosoft SQL Server 2012 lub nowszy, edycja Standard albo Express dla mniejszych wdrożeń
Stacja robocza (Framework)Windows 10 lub 11, .NET Framework 3.5 lub nowszy, co najmniej 4 GB RAM
PrzeglądarkaAktualna wersja Chrome lub Edge, stałe łącze do serwera aplikacji
Urządzenia mobilneTerminale i skanery z Androidem, sieć Wi-Fi w obrębie magazynu
Silnik raportowySQL Server Reporting Services, definicje raportów w formacie RDL

Definicje raportów są zapisane w plikach RDL, więc SoftwareStudio zaleca przechowywanie ich kopii w zabezpieczonym folderze na dysku NTFS poza serwerem raportów. Po awarii albo migracji środowiska pozwala to ponownie opublikować wszystkie raporty bez odtwarzania ich od podstaw. Edycja Express programu SQL Server ogranicza wielkość bazy do 10 GB i nie zawiera SQL Server Agent, więc zadania kopii zapasowych uruchamia się w niej z Harmonogramu zadań Windows.

Komunikacja między klientem a serwerem aplikacji jest zabezpieczona protokołem SSL/TLS, który chroni dane logowania i informacje magazynowe podczas transmisji. Magazyn z kilkunastoma stanowiskami obsłuży jeden serwer średniej klasy, a sieć wielomagazynowa z integracją ERP wymaga infrastruktury dobranej w analizie przedwdrożeniowej. Szczegóły specyfikacji zawiera artykuł o programie WMS.net.

SoftwareStudio udostępnia dwa modele licencjonowania. Licencja na stanowisko rośnie razem z liczbą użytkowników, a licencja na serwer obejmuje nieograniczoną liczbę stanowisk w jednej instalacji, co bywa korzystniejsze przy pracy zmianowej. Do wskazania modelu należy uwzględnić plany rozwoju magazynu, ponieważ dokupienie stanowisk zmienia koszt tylko w pierwszym modelu.

Integracje i praca wielomagazynowa

Program wymienia dane z systemami ERP oraz księgowymi. Przekazuje im stany i rezerwacje oraz dokumenty magazynowe, bez ręcznego przepisywania. Zakres i sposób integracji zależą od architektury wdrożenia oraz od możliwości systemu po drugiej stronie. Warianty połączeń omawia artykuł o integracji systemów magazynowych.

Sklep internetowy korzysta z połączenia z platformami sprzedażowymi i systemami kurierskimi: po zakończeniu kompletacji system generuje etykiety wysyłkowe, a synchronizacja stanów ogranicza ryzyko sprzedaży towaru, którego już nie ma. Firma z kilkoma lokalizacjami obsługuje wiele magazynów z jednej instalacji, zachowując odrębne uprawnienia i raporty dla każdej z nich. Interfejs może pracować w kilku językach, co dotyczy magazynów z pracownikami spoza kraju i opisuje tekst wielojęzyczny program magazynowy WMS.

Wielomagazynowość opiera się na uprawnieniach. Użytkownik przypisany do jednej lokalizacji widzi jej stany i raporty, a kierownik sieci porównuje wyniki magazynów na jednym ekranie. Taki układ ułatwia wskazanie lokalizacji, w której czas kompletacji albo liczba pomyłek odbiega od reszty sieci, i pozwala przenosić towar między magazynami zamiast informować klienta o braku dostępności.

Przebieg wdrożenia WMS.net

Wdrożenie przebiega według stałego schematu, niezależnie od branży klienta. Standardowe uruchomienie trwa od kilku do kilkunastu tygodni, zależnie od liczby magazynów i zakresu integracji.

EtapZakres pracWynik
Analiza przedwdrożeniowaPoznanie procesów oraz asortymentuZakres modułów i plan integracji
KonfiguracjaDobór modułów i mapowanie lokacji magazynuSkonfigurowane środowisko testowe
IntegracjaPołączenie z ERP lub platformą sprzedażowąDziałająca wymiana dokumentów
Szkolenia i startPrzygotowanie zespołu i uruchomienie, często w jednej strefiePraca produkcyjna z pilotażem

Firmy, które dopiero testują program, mogą zacząć od jednego modułu i jednej strefy, a resztę funkcji włączać stopniowo. Przebieg etapów opisuje artykuł wdrożenie systemu WMS. Produkt można obejrzeć na stronie Studio WMS.net albo w demo magazynu online, a pytania o konfigurację można zadać pod numerem +48 533 322 626.