jak zapamietac dane na fakturze jesli sie zmienia w przyszlosci?

0

Jest w bazie 10 firm, kazda z tych firm ma swoja firme do fakturowania. Teraz dodajac zamowienie do bazy od danego klienta wybieram jego CUSTOMER_ID i w fakturze wybieram INVOICED_COMPANY_ID w ten sposob w zamowieniu wiem gdzie nasza firma ma wyslac fakture. Jezeli dzis przyjalem 3 zamowenia a w nocy zmieni sie adres firmy do fakturowania to jutro jak przyjme kolejny 4 zamowienia i wejde na liste zamowien to wszedzie zobacze NOWY ADRES. Jednak ja bym chcial zeby na fakturze byly zapamietane dane w momencie jej tworzenia.

Czy zatem mam zrobic pola textowe i wpisywac ten adres w te pola.
Czy w swoim programie dodac kolejny adres do firmy fakturujacej i ustawic go jako domyslny , jednoczesnie nie kasujac starego tylko wtedy powienienm podac nie INVOICED_CUSTOMER ID tylko chyba invoiced _address_ID a tam w tym adresie dopiero przypisac jaka to firma fakturujaca ?

jak to najlepiej zrobic ?

0

tabela historyczna, inaczej utracisz poprzednie wartosci lub operuj wartosciami tekstowymi a nie ID.

0

Historyczna to jest tylko jak chce zbadac jak byl jakis blad czy cos sie zdarzylo a tak na histroycznnych nie chce operowac czyli zostaje wartosc textowa. A co myslisz jesli np dodaje firme obslugujaca faktury ona ma ID = 5 i do niej dodaje adres firmy i jest on w tabeli firmy_fakturujace jako id = 7 i status domyslny. i teraz gdy dodam zamowieniei wyznacze firme fakturujaca to program wezmie wpisze w firmie fakturujacej ID a obok do pola firma fakturujaca adres id = 15 z domyslngeo. i wtedy jak juz jest jakis rekord to nie mozna skasowac adresu takiego tylko dodac nowy i ustawic nowy jako domyslny To nie lepsze niz operowanie na wart textowych?

0

O ile dobrze rozumiem problem, to przypomina mi on taki sklepik spożywczy gdzie tydzień temu mleko było po 2 zł, trzy dni póżniej 2,59 zł, a dzisiaj jest po 4,22 zł.
Nie stosowałbym atrybuty CZY_DOMYŚLNY, tylko zrobil sobie historię, gdzie trzymałbym Id produktu, cenę (wartość), datę od - do obowiązywania.
Wtedy mogę sprawdzić, dowolną cenę w zadanym okresie czasu.

0

Chodzi mi o to ze jezeli dzisiaj sprawdze fakture wystawiona rok temu to na liscie faktur chce zobaczyc adres na ktory dostarczylem wyslalem fakture. I chodzi teraz o to zeby nie trzymac tego adresu w polu textowym tylko pole ID gdzie laczy sie z tabela ze starymi adresami.

2

Moim zdaniem to jest jedna z tych sytuacji, w których lepiej porzucić szkolne marzenia o trzeciej postaci normalnej i w wystawionej fakturze trzymać konkretne wartości wszystkich danych zamiast kluczy obcych.
Może to i marnotrawstwo miejsca, za to znacznie większa pewność i niezawodność.

0
somekind napisał(a):

Moim zdaniem to jest jedna z tych sytuacji, w których lepiej porzucić szkolne marzenia o trzeciej postaci normalnej i w wystawionej fakturze trzymać konkretne wartości wszystkich danych zamiast kluczy obcych.
Może to i marnotrawstwo miejsca, za to znacznie większa pewność i niezawodność.

Sorry ale całkowicie nie rozumiem tego argumentu. Baza danych będzie trzymała i zwracała pewne i niezawodne dane, chyba, że programista się pomyli. Nie jest to na tyle skomplikowane, żeby nie dało się zrobić.

0

Nie przeczę, że się da zrobić, ale ja jestem pragmatykiem.
Narzędzia generujące PDF/wydruki i tak potrzebują dostać obiekt z danymi do faktury, więc taki obiekt i tak musimy mieć. A jak mamy, to możemy go łatwo zserializować i utrwalić. Dzięki temu w przyszłości wystawienie chociażby duplikatu nie będzie wymagało kilkudziesięciu joinów po tabelach (faktura, pozycje, produkty, ceny, rabaty, kontrahenci, adresy, i do tego wszystko wersjonowane, to jednak trochę jest).

0
somekind napisał(a):

Dzięki temu w przyszłości wystawienie chociażby duplikatu nie będzie wymagało kilkudziesięciu joinów po tabelach (faktura, pozycje, produkty, ceny, rabaty, kontrahenci, adresy, i do tego wszystko wersjonowane, to jednak trochę jest).

Z tymi kilkudziesięcioma joinami to trochę popłynąłeś... Ja na codzień pracuję z danymi, które mają okresy ważności, w dodatku daty z różnych kartotek nachodzą na siebie, wymuszając oddmienne działanie systemu, w zależności od tego w którym dniu przetwarzamy dane. Z tego też powodu dla mnie taka historia adresów to coś normalnego, codzienność.

1 użytkowników online, w tym zalogowanych: 0, gości: 1