Import zlecenia wydania z pliku przebiega w opisywanym wdrożeniu w dwóch etapach: plik z listą palet trafia najpierw do tabeli tymczasowej, czyli pośredniej tabeli roboczej, a zlecenie powstaje dopiero po sprawdzeniu. Operator magazynu wybiera plik z listą palet do wydania i uruchamia przycisk „Importuj dane”. Program czyta z każdego wiersza numer palety i numer partii, a resztę ustala sam.
W opisywanym wdrożeniu wiersze pliku rozpoznane przez system trafiają najpierw do tabeli tymczasowej, gdzie wiersz dostaje opis błędu albo przechodzi dalej. Zlecenie wydania w buforze powstaje tylko wtedy, gdy żaden zapisany wiersz nie ma flagi błędu. Ilość i miejsce składowania program ustala sam z systemu, więc plik wskazuje paletę i partię, a nie to, ile z niej wydać.
Wiersze pliku, które program rozpoznaje, trafiają do tabeli tymczasowej, a wiersz dostaje tam opis błędu albo przechodzi dalej. Gdy choć jeden zapisany wiersz ma flagę błędu, do dokumentu nie trafia nic, a ekran pokazuje komunikat i przycisk „Pokaż raport”. Gdy flag nie ma, zlecenie powstaje w buforze.
Plik wskazuje paletę i partię, a nie ilość
Okno importu ma dwie etykiety („Numer referencyjny” i „Wybierz plik”) i jeden przycisk „Importuj dane”. Numer referencyjny jest numerem wewnętrznym, który program nadaje przy wejściu do okna. Rozszerzenie pliku sprawdza przeglądarka: przy niewłaściwym pokazuje okno „Niewłaściwy plik” i nie odsłania przycisku „Importuj dane”.
Z każdego wiersza pliku program czyta dwie informacje: numer palety i numer partii. Artykułu i ilości z pliku nie czyta. Właściciel towaru zawęża każde sprawdzenie palety i partii.
Program ustala cztery wartości: artykuł, termin ważności, rodzaj palety i miejsce składowania. Robi to na podstawie trzech danych: numeru palety, numeru partii i właściciela towaru. Ilość zapisana w wierszu pochodzi z zapytania do systemu i jest zapisywana ze znakiem minus. Osoba przygotowująca plik wskazuje więc, która paleta i która partia mają zostać wydane, a ilość zna już system.
Plik wskazuje, która paleta i która partia; ilość i miejsce składowania zna już system.
Wiersze znane systemowi trafiają najpierw do tabeli tymczasowej
Do tabeli tymczasowej trafia każdy wiersz, dla którego pierwsze zapytanie zwróciło dane. Wiersz jest tam kopią przyszłego wiersza zlecenia. Ma stan „bufor”, a oddział i magazyn pochodzą z konta użytkownika. Numer importu jest numerem dokumentu, a ilość jest ujemna. Tabela tymczasowa jest w tym opisie pośrednią tabelą roboczą, w której wiersze czekają na dwa sprawdzenia. Dopiero po nich program decyduje, czy zapisać zlecenie.
Według dokumentacji wdrożenia import ma dwa etapy: zapis do tabeli tymczasowej z weryfikacją, a potem zapis zlecenia, gdy dla żadnej pozycji nie zapisano błędu. Ten sam typ zlecenia można dopisać w programie, o czym pisze strona o zleceniu wydania i rezerwacji palety.
Dwa sprawdzenia oznaczają wiersz flagą błędu
Pierwsze sprawdzenie dotyczy palety i partii u właściciela towaru. Gdy zapytanie o stan nie zwróci dokładnie jednego wiersza dla trzech wartości: palety, partii i właściciela towaru, wiersz dostaje opis „Brak numeru palety lub numeru partii.” i flagę błędu. Drugie sprawdzenie następuje po wczytaniu pliku i szuka powtórzonych numerów palet. Każdy wiersz z powtórzonym numerem dostaje opis „Powtórzony numer palety” i flagę błędu.
W pliku, w którym jeden numer palety występuje dwa razy, flagę dostają więc oba wiersze z tym numerem, a nie jeden z nich. Tabela zestawia cztery momenty importu wraz z komunikatami i skutkami.
| Moment | Co program sprawdza lub robi | Komunikat | Skutek |
|---|---|---|---|
| Wiersz pliku rozpoznany przez system | paleta i partia u właściciela towaru | „Brak numeru palety lub numeru partii.” | flaga błędu na wierszu |
| Cały plik | powtórzony numer palety | „Powtórzony numer palety” | flaga na wszystkich wierszach z tym numerem |
| Wynik z flagą | co najmniej jedna flaga | „Występują różnice pomiędzy danymi. Import WZ nie został wykonany.” | nic nie trafia do dokumentu |
| Wynik bez flag | brak flag | „Ilość rekordów zapisanych: [n]” | zlecenie w buforze i raport pozycji |
Zlecenie powstaje tylko wtedy, gdy żaden wiersz nie ma błędu
Gdy są duplikaty albo choć jeden wiersz z flagą błędu, do dokumentu nie trafia nic. Użytkownik widzi komunikat „Występują różnice pomiędzy danymi. Import WZ nie został wykonany.” i przycisk „Pokaż raport”. Według dokumentacji wdrożenia błąd choć jednej pozycji blokuje zapis zlecenia.
Zasada „wszystko albo nic” obejmuje wiersze zapisane w tabeli tymczasowej. Wiersze, dla których pierwsze zapytanie nic nie zwróciło, do tej tabeli nie trafiają. Zasada dotyczy więc zapisanych wierszy pliku, a nie każdego wiersza, który plik zawiera.
Po zapisie ekran podaje liczbę rekordów i przycisk raportu pozycji
Gdy błędów nie ma, program kopiuje wiersze z tabeli tymczasowej do dokumentu i nadaje im nowe klucze pozycji. Numer importu staje się numerem referencyjnym i numerem dokumentu, a pozycje dostają stan „bufor”. Potem program odsłania przycisk „Raport pozycji zaimportowanych” i pokazuje „Ilość rekordów zapisanych: [n]”, liczoną z dokumentu w buforze.
Dwa przyciski raportów są ukryte, dopóki import nie zakończy się odpowiednio błędem albo powodzeniem. Po błędzie operator widzi „Pokaż raport”, po zapisie „Raport pozycji zaimportowanych”.
- Pokaż raport. Przycisk widoczny po zakończeniu importu błędem.
- Raport pozycji zaimportowanych. Przycisk widoczny po zakończeniu importu powodzeniem.
Zapisane zlecenie czeka w buforze bez odbiorcy i uwag
Zapisane zlecenie nie ma trzech elementów: odbiorcy, numeru dokumentu kontrahenta i uwag. Wiersze nie mają też trybu pozycji. Zlecenie czeka więc w buforze w takiej postaci, w jakiej zapisał je import. Potwierdzanie palet z takiego zlecenia na terminalu opisuje strona o wydaniu ze zlecenia na terminalu, a korektę pozycji zlecenia strona o korekcie wydania ruchem odwrotnym.
- Wypełnione. Numer referencyjny i numer dokumentu pochodzą z numeru importu.
- Puste. Trzy pola: odbiorca, numer dokumentu kontrahenta i uwagi.
Wzorzec T-SQL tego samego mechanizmu, na przykładowych tabelach, pokazuje artykuł o walidacji wsadu w tabeli roboczej.
Przykład (dane wymyślone) w pięciu krokach. Nazwy i numery w nim są fikcyjne.
- Operator A wczytuje Plik A, w którym pięć wierszy ma numery palet: Paleta A, Paleta B, Paleta C, ponownie Paleta B i Paleta D, wszystkie z Partią A. Czwarty wiersz powtarza numer z drugiego.
- Program zapisuje wszystkie pięć wierszy rozpoznanych przez system w tabeli tymczasowej i oznacza oba wiersze z numerem Paleta B opisem „Powtórzony numer palety”.
- Pokazuje komunikat o różnicach i nie zapisuje zlecenia.
- Po poprawieniu pliku operator wczytuje go ponownie, a numer referencyjny jest nowy.
- Żaden wiersz nie ma wtedy flagi, więc zlecenie trafia do bufora, a program pokazuje „Ilość rekordów zapisanych: 5”.
Pytania do analizy
- Czy zlecenie ma powstać tylko wtedy, gdy cały plik jest poprawny, czy dopuszczacie zapis części pozycji?
- Kto po stronie właściciela towaru poprawia plik po komunikacie o różnicach i w jakim czasie odpowiada?
- Czy lista palet w pliku ma zawsze zawierać numer partii obok numeru palety?
- Kto po imporcie uzupełnia pola zlecenia, które import zostawia puste?