Transakcja KNKON_GRID.ASPX wyświetla tabelę wszystkich kartotek kontrahentów według ustawień domyślnych. Z tej tabeli operator otwiera kartę dostawcy albo odbiorcy. Zapisane w karcie dane trafiają potem do dokumentów magazynowych.

Tabela kontrahentów otwierana z menu

Program magazynowy pozwala wywoływać z menu elementy zwane transakcjami. Transakcja to dowolne wywołanie elementu witryny internetowej programu albo dowolna inna strona z innej witryny. KNKON_GRID.ASPX jest wpisem, który otwiera siatkę z listą kontrahentów.

Część nazwyZnaczenie
KNKONczłon nazwy wskazujący kartotekę kontrahentów
_GRIDwidok tabelaryczny z listą wierszy
.ASPXrozszerzenie strony aplikacji internetowej ASP.NET
Ustawienia domyślnelista obejmuje wszystkie kartoteki kontrahentów

Administrator programu ma wgląd w tabelę dostępnych transakcji. Może ją edytować oraz dopisywać wpisy, a na jej podstawie konfiguruje menu użytkowników. Ten sam mechanizm opisuje strona o transakcji MENU_DPMAG.ASPX, a warianty prezentacji menu strona o konfiguracji menu.

Dane w karcie kontrahenta

Karta kontrahenta ma trzy zakładki. Każda zbiera inny rodzaj informacji, więc operator wypełnia tylko te, które są potrzebne w danym momencie. Kartoteki towarowe i kontrahentów omawia strona o kartotekach magazynowych.

ZakładkaPrzykładowe polaZastosowanie
Dane ewidencyjnenazwa i nazwa skrócona, adres, NIP, Regon, kraj, osoba kontaktowa, telefony, e-mail, pole Aktywneidentyfikacja firmy i dane teleadresowe
Dane uzupełniającestatus, grupa, numer GLN, analityka, sposób wydawania i dostawy, warunki płatności, waluta, spedytorparametry handlowe i logistyczne
Innenasz numer u klienta, handlowiec, godziny pracy, ubezpieczenie, e-mail autopowiadomienia, kolorparametry operacyjne i powiadomienia
Studio WMS.net - formularz nowego kontrahenta zakładka dane ewidencyjne z polami NIP, adres i dane kontaktowe firmy
Formularz kontrahenta WMS.net - zakładka Dane ewidencyjne z danymi identyfikacyjnymi, adresowymi i kontaktowymi firmy

Numer GLN jest niezbędny do integracji EDI, więc karta partnera objętego taką wymianą musi go zawierać. Pole Spedytor przypisuje domyślnego przewoźnika, a pole z kolorem wyróżnia kontrahenta na widokach magazynu.

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 kontrahenta - klasyfikacja handlowa, numer GLN, reguły wydawania i dostawy oraz warunki płatności

Zakładka z parametrami handlowymi zawiera także listy wyboru. Sposób wydawania i dostawy oraz warunki płatności wybiera się z list. Dzięki liście dwa dokumenty dla tego samego klienta nie zawierają różnych zapisów tego samego warunku. Pole wyboru Cennik indywidualny włącza dedykowany cennik usług magazynowych dla danego kontrahenta.

Zakładka Inne zawiera dane, które operator rampy sprawdza przed przyjazdem pojazdu. Godziny pracy w formacie H:M - H:M wskazują, kiedy odbiorca przyjmuje towar. Adres e-mail autopowiadomienia konfiguruje automatyczne raporty dla klienta magazynu. Rodzaj ubezpieczenia razem z datą jego ważności pozwala pilnować terminów polis.

Stronicowanie dużej tabeli kontrahentów

Tabela wszystkich kartotek rośnie z każdym nowym klientem. Przy tysiącach wierszy przeglądarka nie powinna dostawać całego zbioru naraz, bo wydłuża to odpowiedź i zużywa pamięć serwera. Strona pobiera więc jedną porcję wierszy i dopiero na żądanie kolejną.

Poniższe zapytanie jest ilustracyjne i nie pokazuje kodu produktu. Wyszukuje aktywnych kontrahentów po początku nazwy skróconej i zwraca wskazaną stronę wyników.

CREATE INDEX IX_Kontrahenci_Nazwa
ON dbo.Kontrahenci (Aktywny, NazwaSkrocona) INCLUDE (NIP);

SELECT KontrahentId, NazwaSkrocona, NIP
FROM dbo.Kontrahenci
WHERE Aktywny = 1 AND NazwaSkrocona LIKE @Fraza + N'%'
ORDER BY NazwaSkrocona, KontrahentId
OFFSET (@Strona - 1) * @RozmiarStrony ROWS
FETCH NEXT @RozmiarStrony ROWS ONLY;

Opcje indeksów opisuje dokumentacja CREATE INDEX w SQL Server, a sposób odczytu planu zapytania dokumentacja planów wykonania.

Operator często zna tylko fragment nazwy, a nie jej początek. Wzorzec ze znakiem % na początku nie wykorzysta wtedy indeksu, więc silnik przeczyta wszystkie wiersze. Przy kilku tysiącach kontrahentów różnica jest niezauważalna, a przy kilkuset tysiącach wierszy w tabeli historii wyraźna. Rozwiązaniem bywa osobna kolumna z nazwą w postaci uproszczonej albo wyszukiwanie po NIP, który ma stałą długość.

Reguła: filtr i sortowanie wykonuje baza danych, a nie przeglądarka. Pobranie wszystkich kartotek do pamięci strony i przeszukiwanie ich skryptem działa przy małej tabeli, a przestaje działać, gdy tabela urośnie.

Dezaktywacja zamiast usuwania kontrahenta

Kontrahent, który przestał być klientem, nie znika z bazy. Dokumenty przyjęć i wydań odwołują się do jego karty, więc usunięcie wiersza zniszczyłoby historię operacji. Baza chroni przed tym kluczem obcym: zapis dokumentu wskazuje identyfikator kontrahenta, a silnik odrzuca usunięcie karty, do której istnieją odwołania.

ALTER TABLE dbo.WydaniaNaglowki
ADD CONSTRAINT FK_Wydania_Kontrahenci
FOREIGN KEY (KontrahentId) REFERENCES dbo.Kontrahenci (KontrahentId);

UPDATE dbo.Kontrahenci SET Aktywny = 0 WHERE KontrahentId = @KontrahentId;

Przykład jest ilustracyjny i nie odwzorowuje schematu produktu. Pierwsza instrukcja tworzy ograniczenie, a druga wyłącza kartę bez naruszania historii. Dokumentacja kluczy obcych w SQL Server opisuje składnię i zachowanie przy usuwaniu.

Uprawnienia do kartoteki kontrahentów

Karta kontrahenta zawiera dane handlowe, które nie powinny być widoczne dla każdego użytkownika. Cennik indywidualny i warunki płatności interesują kierownika oraz dział handlowy, ale nie operatora terminala. Dlatego transakcja z tabelą kontrahentów jest przydzielana rolom, a nie wszystkim kontom.

Menu pokazuje użytkownikowi tylko te transakcje, które zostały mu nadane. Ukrycie pozycji nie wystarcza jednak jako jedyne zabezpieczenie, bo adres strony można wpisać ręcznie. Strona sprawdza więc uprawnienie przy każdym otwarciu. Podział ról omawia strona o rolach i użytkownikach w systemie WMS.

Kolor kontrahenta z zakładki Inne ułatwia odróżnienie klientów na widokach magazynu, gdy kilku z nich składuje towar w tych samych alejkach. Paleta obejmuje odcienie od 50 do 900 w kilku barwach, więc każdy klient dostaje wyraźny znacznik bez dodatkowej legendy.

Kontrahent w dokumentach magazynowych

Kartoteka kontrahentów jest źródłem pola Kontrahent w dokumentach. W zleceniu przyjęcia ZPZ pole podpowiada nazwę podczas pisania, a w zleceniu wydania ZWZ wskazuje odbiorcę towaru. Każda operacja magazynowa jest więc powiązana z konkretnym klientem lub dostawcą.

Studio WMS.net - pusty formularz nagłówka ZWZ zlecenie wydania z magazynu z polami kontrahent i termin realizacji
Formularz nagłówka ZWZ - zlecenie wydania towaru z magazynu z polem kontrahenta, odbiorcy i terminu realizacji

Powiązanie ma szczególne znaczenie w magazynie, który obsługuje wielu właścicieli towaru. Zasady takiej obsługi opisuje strona o magazynie klienta, a model rozliczeń strona o 3PL - co to jest. Dokumenty, w których pojawia się kontrahent, opisuje strona o dokumentach magazynowych.

Kontrahenci przy integracji z ERP

Kartoteka kontrahentów należy do pierwszych zbiorów, które wymienia się z systemem ERP. Wymiana dotyczy kartotek i dokumentów, a wśród nich danych kontrahentów, w trybie OnLine albo OffLine. Przy łączeniu dwóch baz najczęściej pojawiają się duplikaty, bo ten sam kontrahent bywa zapisany w obu systemach pod różną nazwą.

Najpewniejszym kluczem porównania jest NIP, a przy kontrahentach zagranicznych numer GLN. Zapytanie z grupowaniem po NIP wskazuje karty do scalenia jeszcze przed pierwszą wymianą. Integrację z SAP opisuje strona o integracji z SAP, a z Subiekt nexo PRO strona o integracji z Subiekt nexo PRO.

Duplikaty NIP przed pierwszą wymianą

Ten sam NIP zapisany z myślnikiem w jednej bazie i bez myślnika w drugiej wygląda jak dwie różne firmy. Porównanie wymaga więc normalizacji, czyli usunięcia znaków dodatkowych. Zapytanie poniżej jest ilustracyjne i wskazuje numery, które występują więcej niż raz.

SELECT REPLACE(REPLACE(NIP, '-', ''), ' ', '') AS NipZnormalizowany, COUNT(*) AS Liczba
FROM dbo.Kontrahenci
GROUP BY REPLACE(REPLACE(NIP, '-', ''), ' ', '')
HAVING COUNT(*) > 1;

Wynik niepusty trzeba przejrzeć ręcznie. Dwie karty o tym samym NIP bywają uzasadnione, na przykład gdy oddział ma osobny adres dostaw, ale w większości przypadków oznaczają błąd, który po wymianie z ERP rozmnoży się w obu systemach.

Częsty dostęp do tabeli kontrahentów można skrócić, zapisując transakcję w menu osobistym. Opisuje to strona o menu ulubionym. Pełny opis programu zawiera strona producenta program magazynowy.

Pytania i odpowiedzi o transakcję KNKON_GRID.ASPX

Wyświetla tabelę wszystkich kartotek kontrahentów według ustawień domyślnych. Z tej tabeli operator otwiera kartę wybranego kontrahenta.

Jest dowolnym wywołaniem elementu witryny programu albo dowolnej innej strony z innej witryny. Menu uruchamia takie transakcje, a administrator rejestruje je w tabeli dostępnych transakcji.

Karta ma trzy zakładki. Dane ewidencyjne zawierają identyfikację i adres, a dane uzupełniające parametry handlowe z numerem GLN. Zakładka Inne zawiera godziny pracy oraz adres e-mail autopowiadomień.

Jest identyfikatorem partnera w wymianie EDI. Bez niego automatyczna wymiana dokumentów z danym kontrahentem nie jest możliwa.

Przy tysiącach wierszy pobranie całego zbioru wydłuża odpowiedź strony i zużywa pamięć serwera. Stronicowanie po stronie bazy zwraca tylko jedną porcję wyników, a indeks na nazwie przyspiesza wyszukiwanie.

Glosariusz pojęć związanych z kartoteką kontrahentów

KNKON_GRID.ASPX
Transakcja programu magazynowego wyświetlająca tabelę kartotek kontrahentów według ustawień domyślnych.
Kartoteka kontrahentów
Zbiór kart dostawców i odbiorców z danymi identyfikacyjnymi i handlowymi, a także logistycznymi.
Transakcja menu
Wywołanie elementu witryny programu albo innej strony internetowej, uruchamiane z poziomu menu.
GLN
Globalny numer lokalizacji, który identyfikuje firmę lub miejsce w wymianie dokumentów EDI.
EDI
Elektroniczna wymiana dokumentów między systemami partnerów, w ustalonym formacie.
Stronicowanie
Pobieranie wyników zapytania w porcjach, z użyciem klauzul OFFSET i FETCH w T-SQL.
Index Seek
Operacja w planie wykonania, która odnajduje wiersze przez indeks zamiast czytać całą tabelę.
Spedytor
Pole w karcie kontrahenta, które przypisuje domyślnego przewoźnika.

Warto przeczytać

Rejestr gniazd paletowych w regałach wysokiego składowania - status i historia adresu
Rejestr miejsc składowania w regałach wysokiego składowania: pola lokalizacji, status gniazda, skorowidze oraz stany i historia obrotów pod adresem w WMS.
Czytaj artykuł →
Prognoza popytu i czas rozładunku w magazynie wysokiego składowania - zadania dla AI
Sztuczna inteligencja w magazynie wysokiego składowania: prognoza popytu, czas rozładunku, trasy dostaw i algorytm genetyczny. Dane i kontrola wyników.
Czytaj artykuł →
Usługi magazynowania i transportu towarów - rozliczanie, fakturowanie i system WMS
Usługi magazynowania i transportu towarów: moment wykonania usługi, termin faktury i stawka VAT. Przykład T-SQL naliczania opłat i rozliczenia w Studio WMS.net.
Czytaj artykuł →
System WMS na urządzenia mobilne z Androidem
Aplikacja WMS na Androida w Studio WMS.net: skanowanie kodów 1D i 2D, praca online na wspólnej bazie SQL, logowanie kartą i zarządzanie flotą terminali.
Czytaj artykuł →
Aplikacja magazynowa online dla wysokiego składowania - stan lokalizacji z biura i z hali
Aplikacja magazynowa online Studio WMS.net pokazuje stan lokalizacji w magazynie wysokiego składowania z biura i z hali. Wymagania sprzętowe i logowanie.
Czytaj artykuł →
Zajętość poziomów regałów w magazynie wysokiego składowania - zapełnienie stref i przesunięcia konsolidacyjne
Zajętość poziomów regałów w magazynie wysokiego składowania: wskaźnik zapełnienia stref, kryteria rozmieszczenia i przesunięcia konsolidacyjne. Przykład T-SQL.
Czytaj artykuł →