WMS

Tłumaczenia etykiet: import dopisuje, aktualizacja zmienia

Import tłumaczeń etykiet w opisywanym wdrożeniu ma dwa przyciski, które robią różne rzeczy. Pomyłka w wyborze przycisku zmienia zawartość tabeli tłumaczeń w inny sposób, dlatego plik warto sprawdzić przed wysłaniem.

W skrócie

W opisywanym wdrożeniu Studio WMS.net import tłumaczeń etykiet dopisuje nowe pary, a Import - update zmienia treść istniejących tłumaczeń. Wiersz bez pary w aktualizacji zostaje odrzucony z komunikatem o braku tłumaczenia. Każdy wiersz zapisuje wynik, a dziennik zachowuje treść sprzed zmiany, więc omyłkowy import da się cofnąć.

Narzędzie importu w opisywanym wdrożeniu ma dwa przyciski: Import dopisuje brakujące pary, a Import - update zmienia treść tylko wtedy, gdy para już istnieje. Każdy wiersz zapisuje wynik, a poprzednia treść zostaje w dzienniku, więc omyłkowy import da się cofnąć.

Wyróżnikiem tego wdrożenia jest to, że aktualizacja nie tworzy nowych wpisów, a wiersz bez pary zostaje odrzucony. Przed wyborem przycisku trzeba więc wiedzieć, czy wiersze z pliku już istnieją w bazie.

Dwa przyciski, dwa różne zadania

Pasek opisu dodatkowego asortymentu ma dwa przyciski importu. Przycisk Import dopisuje nowe tłumaczenia, a przycisk Import - update aktualizuje istniejące. Przed wysłaniem pliku przez Import - update pojawia się okno potwierdzenia.

Dla przycisku Import działa zasada dopisywania: para, która już istnieje, jest odrzucana, bo indeks tabeli nie dopuszcza drugiego wpisu o tym samym kluczu.

  • Import - dopisuje nowe wpisy z pliku, a para istniejąca zostaje odrzucona.
  • Import - update - aktualizuje treść istniejących wpisów, po potwierdzeniu w oknie.

Różnica między przyciskami ma znaczenie przy każdym pliku. Plik z nowymi parami uruchamia się przyciskiem Import, a plik z korektą istniejących opisów przyciskiem Import - update. Oba przyciski pracują na tej samej tabeli tłumaczeń, dlatego ich wybór zmienia skutek w jednym miejscu.

Schemat: przycisk Import dopisuje nowe wpisy, a przycisk Import - update zmienia treść istniejących tłumaczeń etykiet.
Dwa przyciski importu pracują na jednej tabeli tłumaczeń, ale z innym zakresem zmian.
Makieta okna potwierdzenia nad listą wierszy pliku, widocznego przed wysłaniem pliku przyciskiem Import - update.
Makieta poglądowa, dane przykładowe. Okno potwierdzenia nad listą wierszy pliku.

Co robi import, a co aktualizacja

Aktualizacja zmienia tekst na etykiecie i datę zmiany. Nazwa zmienia się tylko wtedy, gdy w pliku jest niepusta. Wpis, którego treść się nie zmienia, dostaje wynik oznaczający brak zmian i nie jest zapisywany. Dla porównania import dopisuje nowe pary i nie zmienia wpisów, które już istnieją.

PrzyciskPara już istnieje w baziePary nie ma w bazie
Importwiersz odrzucony, wpis zostaje bez zmiannowa para dopisana do tabeli
Import - updatetreść i data zmiany zmienione; bez zmiany treści wynik oznacza brak zmianwiersz odrzucony z komunikatem o braku tłumaczenia

Zmiana treści wpisu nie zmienia jego kodu języka ani numeru artykułu, bo klucz pozostaje ten sam.

  • Zmiana - tekst i data zmiany, a nazwa tylko wtedy, gdy jest niepusta.
  • Brak zmiany - trzy pola zostają bez zmian: aktywność wpisu, jego magazyn i kod języka.

Jak wiersze pliku trafiają do bazy

Plik z Import - update trafia najpierw do tabeli pośredniej, a wyzwalacz po wstawieniu aktualizuje tabelę tłumaczeń. Przebieg ma cztery kroki:

  1. Plik trafia do tabeli pośredniej.
  2. Po wstawieniu wierszy uruchamia się wyzwalacz.
  3. Wyzwalacz porównuje klucz każdego wiersza z istniejącymi tłumaczeniami.
  4. Tylko wiersz z pasującym kluczem zmienia tabelę tłumaczeń.

Wiersz pasuje do istniejącego tłumaczenia, gdy zgadza się klucz, czyli kod języka i numer artykułu w danym magazynie. Wiersz bez klucza tłumaczenia kończy się błędem 50001, a pusty tekst błędem 50002. Plik z kluczem, który nie pasuje do żadnego wpisu, nie zmienia tabeli docelowej, bo zmiana następuje tylko tam, gdzie klucz się zgadza.

Pary wiąże się więc po całym kluczu, a nie po samym numerze artykułu. Ten sam numer w innym magazynie albo z innym kodem języka nie trafia do tego samego wpisu. Klucz ma trzy części: kod języka, numer artykułu i magazyn, więc ten sam numer artykułu w dwóch magazynach to dwie różne pary. Wiersz, który nie przeszedł kontroli klucza, nie zmienia żadnej wartości w tabeli tłumaczeń.

Ten sam wzorzec od strony samej bazy, na przykładowych danych, pokazuje artykuł o wyzwalaczu w T-SQL.

Co się dzieje z duplikatami i brakami

Wiersz bez pary w tabeli tłumaczeń jest odrzucany z komunikatem o braku tłumaczenia. Nowe tłumaczenia dodaje przycisk Import. Komunikat brzmi tak:

Import - update etykiet: brak tego tłumaczenia w bazie (kod języka + numer artykułu + magazyn) - wiersz odrzucony. Nowe tłumaczenia dodaj przyciskiem Import.

Przy powtórzonym kluczu w jednym pliku zostaje wiersz wstawiony ostatnio, a pozostałe dostają wynik oznaczający pominięcie duplikatu w pliku. Duplikat wykrywa się więc w obrębie jednego pliku, a nie w całej bazie. Wiersz odrzucony nie dostaje wartości w polu wyniku.

Przykład (dane wymyślone): zespół przygotowuje plik z dwoma poprawionymi opisami i jedną parą, której w bazie jeszcze nie ma. Pierwszy import wybiera przycisk Import - update, potwierdza okno i dostaje wynik zaktualizowano dla dwóch wierszy. Trzeci wiersz, bez pary w tabeli, zostaje odrzucony z komunikatem o braku tłumaczenia. Nowa para trafia do tabeli dopiero po imporcie przyciskiem Import.

Jak cofnąć omyłkowy import

Każdy wiersz zapisuje wartość w polu wyniku, a wartość sprzed zmiany jest zapisywana przed aktualizacją. Cofnięcie wymaga jednej instrukcji UPDATE, która przywraca zapisany tekst. Zanim ktokolwiek ją uruchomi, warto odczytać wiersze, w których wynik pokazuje zmianę, i porównać je z zapisaną wartością sprzed zmiany. Dopiero wtedy widać, które wpisy wymagają przywrócenia.

WynikCo się dzieje z tabelą tłumaczeńCo zostaje w dzienniku
zaktualizowanoopis i nazwa (gdy niepusta) zmienione, data zmiany ustawionatreść sprzed zmiany
bez zmianbrak zmianwynik
pominięto jako duplikat w plikubrak zmianwynik

Dziennik rośnie z każdym importem, a nie czyści się sam. Tabela pokazuje, że każdy wynik zostawia inny ślad w dzienniku, więc przed cofnięciem trzeba ustalić, które wiersze dały wynik zmiany.

Gdzie kończy się zakres importu

Pole nazwy w tabeli nie przyjmuje wartości pustej, więc wiersz bez nazwy nie zapisze się przez przycisk Import. Aktualizacja nie zmienia magazynu ani kodu języka, a przycisk Import nie zmienia wpisów, które już istnieją.

  • Nazwa - w aktualizacji zmienia się tylko wtedy, gdy wartość w pliku jest niepusta.
  • Dziennik - zachowuje treść sprzed zmiany i nie czyści się automatycznie.

Zakres importu nie obejmuje magazynu ani aktywności wpisu, więc przy przygotowaniu pliku nie trzeba ich dopisywać do wierszy. Ta zasada wymaga potwierdzenia przed pierwszym importem, bo zespół przygotowujący plik i zespół obsługujący import mogą mieć różne oczekiwania. Ten zakres obejmuje tylko opis i nazwę, a nie inne pola wpisu.

Brak etykiety po imporcie, mimo że tłumaczenie istnieje, wyjaśnia artykuł o etykiecie w języku odbiorcy. Kolejność zdjęcia i wydruku wyjaśnia artykuł o wydruku po zdjęciu ilości. Sam plik etykiety opisuje artykuł o etykiecie jako pliku PDF. Ogólny opis obsługi wielu języków w programie znajduje się na stronie o wielojęzyczności w systemie WMS.

Pytania do analizy

  1. Czy operatorzy wiedzą, że Import - update nie tworzy nowych wpisów?
  2. Czy instrukcja pokazuje, jak cofnąć omyłkowy import, zanim ktoś zacznie go szukać w bazie?
  3. Czy dziennik importu pokazuje wiersze odrzucone, czy tylko zapisane?
  4. Czy magazyn tłumaczeń powinien być częścią pliku, czy wynikać z konta importu?
FAQ

Pytania i odpowiedzi o import tłumaczeń etykiet

01

Czy import zmieni tłumaczenie, którego nie ma w bazie?

Nie w Import - update. Wiersz bez pary jest odrzucany. Nowe tłumaczenia dodaje przycisk Import.

02

Co się dzieje, gdy plik ma ten sam indeks dwa razy?

Zostaje wiersz wstawiony ostatnio. Pozostałe dostają wynik oznaczający pominięcie duplikatu w pliku.

03

Czy da się cofnąć omyłkowy import?

Tak. Dziennik trzyma treść sprzed zmiany. Cofnięcie wymaga jednej instrukcji UPDATE po dzienniku.

04

Czy import zmienia magazyn albo aktywność wpisu?

Nie. Aktualizacja zmienia tylko opis i nazwę. Magazyn i kod języka zostają bez zmian, tak samo aktywność.

05

Czy dziennik importu sam się czyści?

Nie. Dziennik rośnie z każdym importem i nie czyści się sam.

Słownik

Słownik pojęć

IImport (przycisk)
Dopisuje nowe tłumaczenia z pliku. Pary istniejące są odrzucane.
IImport - update (przycisk)
Aktualizuje treść istniejących tłumaczeń z pliku. Nie dopisuje nowych.
TTabela pośrednia
Tabela, do której trafia plik w trybie aktualizacji, zanim zmieni tłumaczenia.
WWyzwalacz
Procedura bazy uruchamiana po wstawieniu wierszy do tabeli pośredniej.
PPara tłumaczenia
Klucz wpisu, czyli kod języka i numer artykułu w danym magazynie.
DDziennik importu
Tabela z wynikiem każdego wiersza i treścią sprzed zmiany.