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.
Spis treści
- Dwie bazy i wymiana online
- Od wydania towaru do przesyłki
- Zapis do dwóch baz w jednej transakcji
- Kontrola rozbieżności między bazami
- Gdy baza spedycyjna jest niedostępna
- Lista kontrolna przed uruchomieniem wymiany
- Integracje z systemami ERP i innymi bazami
- Dostępność bazy i praca na terminalach
- Pytania i odpowiedzi o integrację ze spedycją
- Glosariusz pojęć związanych z integracją ze spedycją
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.
| Cecha | Studio WMS.net | Spedycja.net |
|---|---|---|
| Zakres | przyjęcia, lokalizacje, wydania towaru | przygotowanie i wysyłka przesyłek kurierskich |
| Baza danych | Microsoft SQL Server | osobna baza Microsoft SQL Server |
| Dane wspólne | zamówienia i palety | zamówienia i przesyłki |
| Moment wymiany | odczyt i zapis OnLine | odczyt i zapis OnLine |
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.
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.
- Nazwa trójczłonowa. Zapis SpedycjaDB.dbo.ZleceniaWysylki działa w obrębie jednej instancji SQL Server.
- Serwer połączony. Przy bazach na różnych serwerach zapytanie używa nazwy czteroczłonowej, a transakcja staje się rozproszona.
- XACT_ABORT ON. Błąd w dowolnym miejscu cofa całą transakcję, także zapis w drugiej bazie.
- Warunek statusu. Aktualizacja z warunkiem StatusWysylki = 'NOWE' sprawia, że ponowne uruchomienie nie przekaże wydania dwa razy.
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.
- Zapis synchroniczny. Wydanie i zlecenie powstają w jednej transakcji, więc stan obu baz jest zawsze zgodny, ale przerwa w łączności blokuje przekazanie.
- Zapis przez kolejkę. Wydanie zapisuje się od razu, a zlecenie wysyłki trafia do drugiej bazy po chwili, więc magazyn nie czeka na spedycję.
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
| Obszar | Co sprawdzić | Skutek błędu |
|---|---|---|
| Uprawnienia | konto aplikacji ma dostęp do tabel drugiej bazy | zapis kończy się błędem odmowy dostępu |
| Odwzorowanie kontrahentów | każdy odbiorca ma numer w obu bazach | zlecenie nie powstaje, wydanie wisi w statusie |
| Indeksy | klucz wymiany jest indeksowany po obu stronach | zapytania kontrolne czytają całe tabele |
| Zegar serwerów | obie bazy używają tej samej strefy czasowej | daty wydania i odbioru są rozjechane |
| Kopia bazy | lustrzana kopia obejmuje obie bazy | przełą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 bazy | Systemy, z którymi działa wymiana | Uwaga techniczna |
|---|---|---|
| Microsoft SQL Server | Sage Symfonia, Enova, Hermes, Comarch CDN, Exact | ta sama platforma co baza WMS, więc odwołania między bazami są bezpośrednie |
| Oracle | SAP R3, WMS Qguar | wymaga osobnego sterownika i mapowania typów danych |
| Firebird | TMS Speed Interlan | połączenie przez sterownik bazy, bez wspólnej transakcji z SQL Server |
| Btrieve i DBF | Sage Symfonia w wariancie plikowym, źródła DBF | brak 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.