Magazyn kończy pracę na wydaniu towaru, a spedycja zaczyna od przesyłki. Studio WMS.net współpracuje ze Studio Spedycja.net przy przygotowaniu i wysyłaniu przesyłek kurierskich. Każda z aplikacji ma własną bazę, a dane przechodzą między nimi bez przepisywania.

Dwie bazy i wymiana online

Spedycja.net działa na osobnej bazie Microsoft SQL Server, a Studio WMS.net na własnej. Dane są między bazami czytane i zapisywane OnLine, czyli w chwili zdarzenia. Zamówienie i paleta mają więc jedno źródło, a operator nie wprowadza tych samych informacji w dwóch programach.

Wymiana OffLine wygląda inaczej. Dane trafiają do drugiego systemu porcjami, na przykład w pliku albo w zadaniu uruchamianym cyklicznie. Studio WMS.net obsługuje oba tryby przy integracji z innymi systemami, a wybór zależy od tego, co udostępnia strona po drugiej stronie połączenia.

CechaStudio WMS.netSpedycja.net
Zakresprzyjęcia, lokalizacje, wydania towaruprzygotowanie i wysyłka przesyłek kurierskich
Baza danychMicrosoft SQL Serverosobna baza Microsoft SQL Server
Dane wspólnezamówienia i paletyzamówienia i przesyłki
Moment wymianyodczyt i zapis OnLineodczyt i zapis OnLine
Studio WMS.net - formularz kontrahenta zakładka dane uzupełniające ze statusem, grupą, GLN, sposobem wydawania i warunkami
Zakładka Dane uzupełniające w karcie kontrahenta - pole Spedytor przypisuje domyślnego przewoźnika

Pole Spedytor w karcie kontrahenta wskazuje domyślnego przewoźnika dla danego odbiorcy. Sama kartoteka kontrahentów jest opisana na stronie o kartotekach magazynowych.

Od wydania towaru do przesyłki

Wydanie z magazynu kończy się dokumentem WZ z odbiorcą i numerami palet. Te same dane są potrzebne do przygotowania przesyłki, więc ich ponowne wpisywanie w Spedycja.net nie ma sensu. Przebieg wydania opisuje strona o wydaniu z magazynu, a harmonogram odbiorów przewoźników strona o planowaniu wysyłek.

Studio WMS.net - sekcja Magazyn, lista dokumentów wydania WZ i WZB z datą i statusem realizacji
Lista dokumentów wydania WZ i WZB w Studio WMS.net - przegląd wydań z filtrem statusu i kontrahenta

Lista wydań pokazuje status każdego dokumentu, od oczekującego na kompletację po wydany i zamknięty. Przesyłkę ma sens przygotować dopiero dla dokumentów w ostatnim z tych stanów. Pełny obraz integracji z przewoźnikami daje strona o firmach kurierskich.

Kolejność operacji ma znaczenie

Przesyłka nie zmienia stanu magazynu, więc kolejność zdarzeń powinna być stała. Najpierw skan pobrania pomniejsza stan lokalizacji, potem dokument WZ zamyka kompletację, a dopiero na końcu zlecenie wysyłki trafia do drugiej bazy. Odwrócenie tej kolejności daje przesyłkę dla towaru, który jeszcze leży na regale.

Ten sam porządek ułatwia reklamacje. Gdy przewoźnik zgłasza brak paczki, w bazie widać czas skanu oraz numer dokumentu. Do tego dochodzi znacznik przekazania zlecenia. Każdy z tych śladów należy do innego etapu, więc łatwo wskazać, gdzie proces się zatrzymał, a reklamację można rozstrzygnąć na podstawie zapisu, nie pamięci operatora.

Zapis do dwóch baz w jednej transakcji

Wymiana między bazami nie może zostawić operacji w połowie. Przykład poniżej jest ilustracyjny i nie pokazuje kodu produktu. Procedura oznacza wydanie jako przekazane i zakłada zlecenie w bazie spedycyjnej, a wynik jest wszystko albo nic.

SET XACT_ABORT ON;
BEGIN TRY
    BEGIN TRAN;
    UPDATE dbo.Wydania SET StatusWysylki = 'PRZEKAZANE'
    WHERE WydanieId = @WydanieId AND StatusWysylki = 'NOWE';
    IF @@ROWCOUNT = 1
        INSERT INTO SpedycjaDB.dbo.ZleceniaWysylki (NumerWydania, OdbiorcaId, LiczbaPalet)
        SELECT NumerWydania, OdbiorcaId, LiczbaPalet
        FROM dbo.Wydania WHERE WydanieId = @WydanieId;
    COMMIT;
END TRY
BEGIN CATCH
    IF @@TRANCOUNT > 0 ROLLBACK;
    THROW;
END CATCH;

Składnię i zachowanie bloku opisuje dokumentacja TRY...CATCH w T-SQL.

Reguła: wydanie nie może być oznaczone jako przekazane bez zlecenia po stronie spedycji. Połowa operacji oznacza paczkę, której przewoźnik nie odbierze, a magazyn uzna ją za wysłaną.

Kontrola rozbieżności między bazami

Każdy kontrahent ma inny identyfikator w obu bazach, więc wymiana wymaga tabeli odwzorowania. Zawiera ona numer odbiorcy w Studio WMS.net i odpowiadający mu numer w Spedycja.net. Brak wpisu w tej tabeli jest najczęstszą przyczyną zlecenia, które nie powstało.

Zgodność baz sprawdza zapytanie wyszukujące wydania oznaczone jako przekazane, dla których zlecenie w bazie spedycyjnej nie istnieje. Zapytanie jest ilustracyjne. Wynik niepusty oznacza przerwaną wymianę i trzeba go wyjaśnić przed zamknięciem zmiany.

SELECT w.NumerWydania, w.DataWydania
FROM dbo.Wydania AS w
LEFT JOIN SpedycjaDB.dbo.ZleceniaWysylki AS z ON z.NumerWydania = w.NumerWydania
WHERE w.StatusWysylki = 'PRZEKAZANE' AND z.NumerWydania IS NULL;

Koszt takiego zapytania zależy od indeksu na kolumnie NumerWydania po obu stronach. Bez niego silnik czyta obie tabele w całości, co plan wykonania pokazuje jako Table Scan. Opcje indeksów opisuje dokumentacja CREATE INDEX w SQL Server.

Gdy baza spedycyjna jest niedostępna

Zapis wprost do drugiej bazy ma jedną wadę: wydanie czeka, dopóki baza odpowiada. Przy przerwie w łączności operator nie powinien zatrzymywać pracy na rampie. Magazyn zapisuje wtedy zlecenie w kolejce po swojej stronie, a osobne zadanie przenosi je do Spedycja.net po przywróceniu łączności.

Wybór zależy od tego, jak często łączność zawodzi i czy przesyłka musi powstać w chwili wydania. W układzie z jedną instancją SQL Server zapis synchroniczny jest prostszy, a w układzie z dwoma serwerami często lepsza okazuje się kolejka.

Lista kontrolna przed uruchomieniem wymiany

ObszarCo sprawdzićSkutek błędu
Uprawnieniakonto aplikacji ma dostęp do tabel drugiej bazyzapis kończy się błędem odmowy dostępu
Odwzorowanie kontrahentówkażdy odbiorca ma numer w obu bazachzlecenie nie powstaje, wydanie wisi w statusie
Indeksyklucz wymiany jest indeksowany po obu stronachzapytania kontrolne czytają całe tabele
Zegar serwerówobie bazy używają tej samej strefy czasowejdaty wydania i odbioru są rozjechane
Kopia bazylustrzana kopia obejmuje obie bazyprzełączenie na serwer zapasowy rozdziela wymianę

Najczęściej pomijany jest ostatni punkt. Jeśli tylko jedna z baz ma kopię lustrzaną, po awarii dwa systemy wskazują różne serwery, a wymiana OnLine przestaje być spójna.

Integracje z systemami ERP i innymi bazami

Ta sama zasada obowiązuje przy wymianie z systemami klasy ERP. Najczęściej wymienia się dwa rodzaje danych: kartoteki towarowe i dokumenty magazynowe. Tryb to OnLine albo OffLine. Zakres zależy od interfejsu, który udostępnia system po drugiej stronie, a przy bazach komercyjnych także od licencji na dostęp do nich. Dlatego pierwszym krokiem jest ustalenie, które tabele i widoki producent ERP dopuszcza do odczytu i zapisu.

Silnik bazySystemy, z którymi działa wymianaUwaga techniczna
Microsoft SQL ServerSage Symfonia, Enova, Hermes, Comarch CDN, Exactta sama platforma co baza WMS, więc odwołania między bazami są bezpośrednie
OracleSAP R3, WMS Qguarwymaga osobnego sterownika i mapowania typów danych
FirebirdTMS Speed Interlanpołączenie przez sterownik bazy, bez wspólnej transakcji z SQL Server
Btrieve i DBFSage Symfonia w wariancie plikowym, źródła DBFbrak serwera SQL, więc wymiana odbywa się zwykle porcjami

Połączenie z SAP omawia strona o integracji z SAP. Wymianę z Hermes SQL opisuje strona o integracji z Humansoft Hermes. Realizowano też połączenia z JD Edwards i WAPRO Asseco.

Dostępność bazy i praca na terminalach

Lustrzana kopia bazy SQL Server

Wymiana OnLine działa tylko wtedy, gdy obie bazy odpowiadają. Studio WMS.net może pracować z lustrzaną kopią bazy: po awarii serwera głównego system przełącza się automatycznie na serwer zapasowy. W nowszych wersjach SQL Server podobną rolę pełnią grupy dostępności Always On.

Terminale Android i nowe miejsca składowania

Operator wózka pracuje na urządzeniu z Androidem, a skan potwierdza operację w bazie od razu. Obsługę terminali opisuje strona o WMS na Androidzie. Gdy układ magazynu się zmienia, nowe lokalizacje dopisuje się według instrukcji o dopisaniu miejsca składowania.

Opis systemu jako całości znajduje się na stronie oprogramowania WMS oraz na stronie producenta Studio WMS.net. Terminologię logistyczną porządkuje słownik pojęć CSCMP.

Pytania i odpowiedzi o integrację ze spedycją

Nie. Każda aplikacja ma własną bazę SQL Server, a wymiana odbywa się między bazami. Układ na jednej instancji pozwala użyć nazw trójczłonowych, a układ na dwóch serwerach wymaga serwera połączonego i transakcji rozproszonej.

Między Studio WMS.net i Spedycja.net dane są czytane i zapisywane OnLine. Przy innych systemach wybór trybu zależy od interfejsu drugiej strony, a wymiana OffLine przekazuje dane porcjami.

Wśród systemów, z którymi wymiana działa, są SAP R3 z bazą Oracle oraz Sage Symfonia z bazą MS SQL lub Btrieve. Pozostałe systemy z listy grupuje tabela w tekście według silnika bazy.

Przy lustrzanej kopii bazy SQL Server system przełącza się na serwer zapasowy automatycznie. Operator pracuje dalej na terminalu, a transakcje przerwane w chwili awarii zostają cofnięte.

Nie. Dane zamówień i przesyłek są czytane z baz OnLine, więc ręczne przepisywanie odpada. Domyślnego przewoźnika wskazuje pole Spedytor w karcie kontrahenta.

Glosariusz pojęć związanych z integracją ze spedycją

Spedycja.net
Aplikacja Studio do przygotowania i wysyłania przesyłek kurierskich, pracująca na osobnej bazie Microsoft SQL Server.
Wymiana OnLine
Odczyt i zapis danych w bazie drugiego systemu w chwili zdarzenia, bez pośredniego pliku.
Wymiana OffLine
Przekazywanie danych porcjami, na przykład w pliku albo w zadaniu cyklicznym.
Baza lustrzana
Kopia bazy SQL Server utrzymywana na serwerze zapasowym, na który system przełącza się po awarii serwera głównego.
Nazwa trójczłonowa
Odwołanie do tabeli w postaci baza.schemat.tabela, które pozwala użyć danych z innej bazy tej samej instancji.
Serwer połączony
Definicja w SQL Server umożliwiająca zapytania do innego serwera z użyciem nazwy czteroczłonowej.
Transakcja rozproszona
Transakcja obejmująca więcej niż jeden serwer, zatwierdzana albo cofana jako całość.
Kartoteka kontrahentów
Zbiór kart odbiorców i dostawców z danymi adresowymi i logistycznymi, w tym z domyślnym przewoźnikiem.

Warto przeczytać