Skocz do zawartości

Zasada zapisywania danych w AdresSzczegolyHistorie

Polecane posty

Planuję przygotować rozwiązanie Sferyczne, które pozwoli wpisywać pełne dane adresowe, dla Adresu dostawy, wprowadzonego na dokumencie, ale generalnie zbierając dane, zauważyłem dziwną kwestię z tabelą AdresSzczegolyHistorie. Otóż jej zapisy, nie zawsze się pojawiają, mimo tego samego MiejsceDostawyTyp, w w przypadku poniższego zrzutu - Domyslny - 1 - Adres wybierany jest w sposób zależny od dokumentu. Jakie są zasady uzupełniania tej tablicy, gdyż analizując dane, mimo tego samego typu, raz te dane mam, raz nie. Podobną zależność też zauważyłem dla typu 8, 16, 32.

image.thumb.png.b67a9f460c5c96252b674c2efc1b7436.png

Zastanawia mnie jeszcze, czy jakbym Sobie podszedł od strony Sfery do Adresu wpisywanego ręcznie i uzupełnił podłączył do niego obiekt AdresSzczegoly, to byłbym w stanie zapisać Sobie te dane? Nie jest to i tak za dobre rozwiązanie dla użytkownika, bo i tak dla pewności to w pola własne wyprowadzę, ale szukam metody na wprowadzanie danych dostawy, aby były ładne, jednolite, z wydzielonymi polami kodów, województw itp.

Link to postu

Ogólnie adresy są przechowywane w kilku tabelach. Główny aktualny adres przechowywany jest w tabeli Adresy i jest tam zapisywany w formie liniowej. Każdy adres wpisywany do tabeli adresów jest również zapisywany w formie szczegółowej z podziałem na ulicę, miejscowość etc. w tabeli AdresySzczegoly. Wpisy głównej tabeli adresów są również historiowane (tzn. każda edycja adresu zapisuje nowy wpis historyczny) w tabeli AdresHistorie również w postaci liniowej. Dodatkowo w wersji 32 InsERT nexo zostało dodane historiowanie również adresów w postaci szczegółowej i od tej wersji po edycji adresu powstaje również wpis w AdresSzczegolyHistorie.

 

Powyższy opis dotyczy obiektów, które mają powiązanie z encją typu Adres (tabela Adresy) - są to obiekty takie jak Podmiot, Magazyn, Oddział etc. Teraz przechodząc do obsługi adresów dostawy na dokumentach można rozróżnić dwa przypadki. Adres dostawy może być pobierany z jakiegoś zewnętrznego obiektu w systemie powiązanego z dokumentem (tzn. klienta, magazynu, oddziału etc). Wtedy na dokumencie w polu MiejsceDostawyTyp w tabeli Dokumenty jest ustawiona wartość z typu wyliczeniowego InsERT.Moria.Dokumenty.Logistyka.MiejsceDostawyTyp inna niż Reczny (64), a w polu MiejsceDostawyZewnetrzneId jest wskazanie na odpowiedni wpis historyczny z tabeli AdresHistorie. Zakładając, że mamy do czynienia z obiektem dodawanym w wersji późniejszej niż 32 to od tego wpisu w AdresHistorie można dojść do historycznego wpisu szczegółowego w tabeli AdresSzczegolyHistorie (obiekty dodawane PRZED wersją 32 nie mają wpisu historycznego ze szczegółami). Dodatkowo takie powiązanie  adresem dostawy powoduje, że dokument nie może takiego adresu edytować - jest on możliwy do zmodyfikowania tylko poprzez obiekt, którego ten adres dotyczy.

 

Szczególnym przypadkiem adresu dostawy na dokumencie jest adres wpisany ręcznie (MiejsceDostawyTyp = InsERT.Moria.Dokumenty.Logistyka.MiejsceDostawyTyp.Reczny = 64). Wtedy w tabeli Dokumenty w odróżnieniu od powyższego przypadku adresu "zewnętrznego" jest tworzony nowy wpis historyczny w tabeli AdresHistorie, który NIE ma powiązania z głównym adresem (AdresHistorie.Adres_Id IS NULL), a także nie tworzy się dla niego wpis historyczny w tabeli AdresSzczegolyHistorie. Taki adres wpisany ręcznie na dokumencie jest już możliwy do modyfikacji tylko i wyłącznie od strony dokumentu, który go stworzył.

 

Teraz spróbuję odpowiedzieć na postawione przez Pana pytania:

17 godzin temu, Radomił Ząbik napisał:

zauważyłem dziwną kwestię z tabelą AdresSzczegolyHistorie. Otóż jej zapisy, nie zawsze się pojawiają, mimo tego samego MiejsceDostawyTyp, w w przypadku poniższego zrzutu - Domyslny - 1 - Adres wybierany jest w sposób zależny od dokumentu.

Ciężko tutaj powiedzieć jaki jest dokładnie powód takiego stanu rzeczy, ale może mieć na to wpływ to co napisałem wcześniej - obiekty "zewnętrzne" (klient, oddział, magazyn etc), z których został pobrany adres dostawy zostały dodane do nexo PRZED wersją 32 i dla nich po prostu w tej tabeli nie ma odpowiedniego wpisu. W takim przypadku proszę spróbować edytować np. klienta z którego został pobrany adres, zmienić "coś" w adresie, zapisać i wystawić na tego klienta nowy dokument - wpis w AdresSzczegolyHistorie powinien się pojawić. Jeśli nie to będziemy potrzebowali więcej szczegółów do przeanalizowania tego przypadku.

17 godzin temu, Radomił Ząbik napisał:

Zastanawia mnie jeszcze, czy jakbym Sobie podszedł od strony Sfery do Adresu wpisywanego ręcznie i uzupełnił podłączył do niego obiekt AdresSzczegoly

To nie zadziała. Dokument z adresem wpisanym ręcznie tworzy jak wspomniałem wcześniej wpis w tabeli AdresHistorie BEZ powiązania z adresem głównym (Adresy) tym samym nie ma możliwości powiązania go z rekordem w AdresSzczegoly. Nie zadziała również sferyczna próba podłączenia do utworzonego na dokumencie adresu dostawy wpisu w AdresSzczegolyHistorie z prostego powodu - dokumenty po prostu nie mają zaimplementowanej obsługi parsowania adresu liniowego na szczegóły.

  • Dziękuję 1
Link to postu
51 minut temu, Wojciech Szopiński napisał:

Ciężko tutaj powiedzieć jaki jest dokładnie powód takiego stanu rzeczy, ale może mieć na to wpływ to co napisałem wcześniej - obiekty "zewnętrzne" (klient, oddział, magazyn etc), z których został pobrany adres dostawy zostały dodane do nexo PRZED wersją 32 i dla nich po prostu w tej tabeli nie ma odpowiedniego wpisu. W takim przypadku proszę spróbować edytować np. klienta z którego został pobrany adres, zmienić "coś" w adresie, zapisać i wystawić na tego klienta nowy dokument - wpis w AdresSzczegolyHistorie powinien się pojawić. Jeśli nie to będziemy potrzebowali więcej szczegółów do przeanalizowania tego przypadku.

Przejrzałem rekordy i chyba kwestia dodania w starej wersji, jest przyczyną. Pracujemy z wami od wersji 13tej, i po nazwach widzę, że to kilkunastoletni klienci. No dobrze, to wiem chociaż na czym stoję. Poprawianie klientów, było by teraz żmudnym procesem, a skoro i tak planuję przechowywać szczegółowe dane dostawy, na polach własnych, aby dać wsparcie dla typu 64, to równie dobrze, mogę przenosić zdarzeniową przy każdej zmianie typu i w ten sposób zachowam sobie dane do późniejszego użycia w procesach logistycznych.

 

Dziękuje bardzo, za tak rozszerzoną i wyczerpującą odpowiedź. Doceniam :)

 

Ogólnie troszkę nie rozumiem, czemu aż tak bardzo uprościliście te adresy do tej liniowości, uniemożliwiając czasem nawet wprowadzenie danych szczegółowych, co potem jest potrzebne dla realizacji, np. nadania kurierem. No ale to są kwestie projektu systemu, 10 lat temu ;)

Link to postu
38 minut temu, Radomił Ząbik napisał:

troszkę nie rozumiem, czemu aż tak bardzo uprościliście te adresy do tej liniowości

Jak sam Pan zauważył:

38 minut temu, Radomił Ząbik napisał:

kwestie projektu systemu, 10 lat temu

 

38 minut temu, Radomił Ząbik napisał:

uniemożliwiając czasem nawet wprowadzenie danych szczegółowych

Tu jak rozumiem chodzi o brak możliwości wprowadzenia danych szczegółowych na ręcznie wpisanym adresie dostawy na dokumencie? Bo inne miejsca wpisywania adresu są wolne od tego typu ograniczeń.

Link to postu
22 minuty temu, Wojciech Szopiński napisał:

Tu jak rozumiem chodzi o brak możliwości wprowadzenia danych szczegółowych na ręcznie wpisanym adresie dostawy na dokumencie? Bo inne miejsca wpisywania adresu są wolne od tego typu ograniczeń.

No inne działają na podstawie danych systemowych na szczęście, więc można dobić do nich, ale właśnie ten adres dostawy na dokumencie, to już chyba nie raz wam zgłaszany problem. Ale Sobie ja jakoś z tym poradzę, zbierając dane do jednego miejsca. I tak dobrze, że mogę :)

Link to postu

Wiem, pamiętam, że zgłaszałem wam, ale obawiam się, że taki "dynamit" w tej części kodu, trochę wam zajmie, zanim go wprowadzicie, a spory między działami Logistyki i Handlowym, muszę rozwiązać szybciej, dlatego działa już teraz z uzyskaniem dobrych danych, dla integracji z firmami logistycznymi :D

Link to postu
×
×
  • Dodaj nową pozycję...