Numery seryjne w towarach - jak ma wyglądać struktura

0

Witam wszystkich

Mam bazę gospodarki magazynowej, w której do chwili obecnej interesowały mnie ilości przychodów, rozchodów oraz stan magazynowy.
Powiedzmy, że są to 3 tabele.
Teraz potrzebuję umieścić informacje w przypadku niektórych produktów o numerach seryjnych. Tu sprawa jest dość prosta tworzę dodatkową tabelę, którą wiążę id_towaru, nr seryjny.

I teraz przechodząc do sedna sprawy.

Towar często występuje jako grupa (druki numeryczne), które pakowane są bloczkami po 25, 50 100 i 1000 szt. Każda kartka ma swój nr. Muszę wiedzieć ile i jakie druki przyjąłem oraz ile i jakie druki wydałem oraz ile i jakie druki są w magazynie.
Nielogiczne jest wpisywanie każdego druku jako nr seryjny tylko przyjmowane to musi być partiami. Przykładowo druki seria AG od nr 451000 do 461000.

Tu moje pytanie jak z sensem zaprojektować bazę danych aby nie komplikować sobie oprogramowania całości zagadnienia?

0

Nielogiczne jest wpisywanie każdego druku jako nr seryjny tylko przyjmowane to musi być partiami. Przykładowo druki seria AG od nr 451000 do 461000.

A co jak wydasz druk o numerze seryjnym pośrodku? To sie ma magicznie "podzielić na dwie części"? Wydaje mi się że jednak logicznie i najprościej będzie to wpisywać po jednym.

0

Na poziomie bazy masz każdy nr osobno. A w aplikacji możesz sobie zrobić że podajesz serię i jakieś zakresy, a aplikacja wygeneruje ci odpowiednie wpisy do bazy.
Bo inaczej faktycznie jak zajdzie sytuacja o jakiej wspomniał Shalom to leżysz. Chyba że umiesz przewidzieć wszystkie takie dziwne przypadki i jasno określić rozwiązanie problemu, to wtedy da się to oprogramować.

0

Myślałem o tym żeby magazynierowi narzucić z góry jakie druki ma wydawać. W momencie wystawienia dokumentu wydrukowane zostaną numery jakie trzeba wydać. Uprości to w pewien sposób oprogramowanie bazy danych gdzie mogę stworzyć pomocniczą tabelę, w której zapisuję jakie nr pozostały w magazynie i zmieniać tą wartość podczas tworzenia dokumentu wydania.

W przypadku zapisu każdego nr z osobna baza będzie rozrastać się w kosmicznym tempie i dodatkowo komplikuje się zliczanie co wydane co pozostało do tego dochodzi prezentacja danych.
Nie ukrywam, że mam mało czasu a przy zapisywaniu każdego nr z osobna a nie partiami zmusza do napisania sporego kawałka kodu przy, którym łatwo o błąd a biegłym programistą nie jestem. Stąd moja prośba o radę żeby nie wmontować się w ślepą uliczkę.

0

Ale ja nadal nie widzę problemu. Do systemu mozesz wprowadzić to hurtem, ale potem w procedurze która będzie to zapisywać do bazy wszystko zostanie dopisane pojedynczo, nie bardzo widzę tu ten "spory kawałek kodu". A takie rozwiązanie znacznie uprości operacje na danych. Możesz przybliżyć nieco gdzie widzisz problem?

0

Przedstawię to na mój chłopski rozum.
Jest formularz gdzie wpisuje się w jakimś polu edit serię i w kolejnych dwóch nr od oraz nr do.
Żeby zapisać to do bazy najpierw muszę w pętli przeszukać bazę czy takie nr już nie wystąpiły wcześniej. Jeżeli nie to zapisuję do bazy danych. Jeżeli tak mówię użytkownikowi że ma to poprawić.
Chcąc sprawdzić ile jest druków w magazynie muszę wiedzieć ile jest wydanych i które są wydane hmmm.... chyba sam odpowiedziałem sobie na pytanie. Mogę przy każdym nr seryjnym wpisać nr dokumentu, którym został wydany będę dzięki temu wiedział co nie jest wydane. Zapisywać ile występuję druków w bloczku muszę w tabeli towaru. Kontrolowanie ile ma być wydanych i które mogę przez odczyt kolejno z bazy danych aż uzyskam ilość druków jaka jest zaznaczona w dokumencie do wydania z tym, że wyświetlić będę musiał nr pierwszy i ostatni z danej partii bo nie mogę na dokument wrzucić 1000 nr seryjnych.
Czy dobrze myślę?

0

Ja poproszę o kilka wyjaśnień co do danych, bo nie wiem czy dobrze rozumiem.

  1. Towary występują w bloczkach (po 25, 50, 100, 1000 szt.).
  2. Każdy towar ma inny numer.
  3. Towary można wydawać w mniejszych ilościach niż bloczki (nawet 1 szt.).
  4. Przyjmujesz w bloczkach, zawsze? Czy możesz przyjąć np. tylko 1 szt. towaru?
  5. Czy informacja że jakaś partia towaru to część jakiegoś bloczka jest istotna? Czy bloczek ma jakiś nr, czy inną tego typu właściwość, która w jakiś sposób bo identyfikuje?
  6. Co to druk numeryczny, kartka, dokumnet - bo takie pojęcia się pojawiają i mają numery, ale nie do końca rozumiem jaki jest między nimi związek
0

Nie bardzo widzę co w tym poscie jest twoim głośnym myśleniem a co pytaniem ;]
Z tą konsolidacją numerów to możesz ją sobie przeprwadzić już po wyciągnięciu danych z bazy.

0

Massther odpowiadając na pytanie:

  1. Towary występują w sztukach lub bloczkach. Towary, które występują w bloczkach po n sztuk wydawane są bloczkami. W bloczku każda kartka ma swój indywidualny numer, które to numery trzeba kontrolować. Czyli bloczek mający 25 kartek ma 25 nr seryjnych i wydawany jest cały bloczek.
  2. Towarem dla mnie jest "typ", "nazwa" i jakiś "opis" w tej tabeli również zapisywana jest aktualna ilość sztuk. Odrębną tabele chce stworzyć dla numerów seryjnych tych druków tym bardziej, że tylko niektóre z druków są numeryczne.
  3. Towar wydany na szt. czyli druk, który jest przyjęty jako pojedyncza sztuka i nie występuje on z bloczkach. Kartki są luzem i każda kartka ma swój nr seryjny.
  4. W bloczkach przyjmuje te, które w bloczka występują jeżeli jakiś druk występuje jako sztuka przyjmuje 1 szt czytaj jedna kartka. Jeżeli towar występuje w bloczkach przyjmuje jedną sztukę bloczku przy czym jeżeli w tym bloczku jest 25 kartek ma on 25 nr seryjnych. To czy towar jest w bloczkach czy w sztukach oraz ile kartek ma bloczek jest wartością stałą. Nie może jeden typ druku występować raz w bloczku po 25 innym razem po 100. Dal przykładu jeżeli jest to towar o nazwie AAA to ma on zawsze 25 kartek i 25 nr seryjnych , towar BBB będzie miał zawsze 100 kartek i 100 nr seryjnych a towar CCC będzie w sztukach i będzie to zawsze jedna kartka z jednym nr seryjnym.
  5. Nie bloczek nie jest identyfikowany po żadnym numerze. Identyfikowana jest jego zawartość jako nr seryjne na bloczku napisane może być zakres nr znajdujących się w środku.
  6. druk numeryczny jest to jedna kartka, która ma swój niepowtarzalny numer. w bloczkach, które mają po 25 kartek jest 25 kartek z niepowtarzalnym numerem, w przypadku kartek, które zdefiniowane są jako sztuka i tak wydawane każda kartka ma swój nr.

Shalom pytaniem było ostatnie zdanie.
Na początku chciałem w zasadzie myślałem i te myśli zostawiłem do zweryfikowania przez mądrzejszych ode mnie :)

0

No i pięknie, teraz rozumiem jakie informacje posiadasz i jak je interpretujesz.
W takiej sytuacji uważam że trzymanie nr od-do dla bloczka ma sens.
Czyli kartka, bloczek proponuję postrzegać jako towar w magazynie, który podlega przyjęciu i wydaniu. Oczywiście kartka ma konkretny numer, a bloczek możemy charakteryzować albo nr od-do, albo nr od i liczebność bloczka. Towar posiada status mówiący czy jest w magazynie, czy już nie (czyli został wydany). Bo zakładam, że jeśli ktoś wprowadza towar do bazy z konkretnym numerem, tzn. że przyjął go na stan.

Wg mojego schamtu lecisz po MagazynTowarów i wybierasz te ze statusem 'w magazynie' żeby wiedzieć jakie możesz wydać towary.
Jeśli wybierzesz te ze statusem 'wydane' dostaniesz co wyszło z magazynu.
Hmmm, TypTowaru to chyba zła nazwa, bo to raczej określa typ opakowania, czy jakieś zgrupowanie towaru (w bloczki), ale juz nie chce mi się poprawiać rysunku.
Wprowadzając dany towar na stan od razu wiesz czy to kartka (generujesz jeden textbox na nr) - l.sztuk = 1, czy zgrupowany w bloczek (generujesz dwa textboxy na nr od i nr do) - l.szt. > 1.
Jeśli chodzi o walidację żeby nie dodać ponownie towaru o tych samych nr to oczywiście sprawdzić trzeba czy serie są takie same i czy nr od wprowadzanego nie jest między od-do istniejących lub czy nr do wproadzanego nie jest między od-do istniejących, jeśli tak, tzn. że mamy jakiś błąd.

0

Dodatkowym tematem do oprogramowania tu będzie fakt, że na dokumencie przyjęcia jest wpisane druk AAA seria AG od nr 0 do nr 1000. Z tym, że druki te są w bloczkach po np 25 kartek w każdym. Na dokumencie przyjęcia nie ma informacji ile jest bloczków to trzeba sobie policzyć. W tym przypadku musiałby to policzyć system.

Stąd zastanawiam się czy nie lepiej byłoby wpisywać nr seryjnych każdego z osobna do tabeli. Wyglądałaby ona wtedy w ten sposób:

id id_towaru seria seryjny dok_przyjecia dok_wydania
1 13 AG 100
2 13 AG 101
itd.

natomiast w tabela towaru

id nazwa jedn_miary ilosc_w_opakowaniu il_w_magazynie
13 AAA bloczek 25 4
12 BBB bloczek 100 3

Wtedy zapisuję dane każdego druku z osobna ale ilość seryjnych będę znał po ilości w opakowaniu.
Czy to dobry pomysł?

0

Ja podszedłbym do tego tak:

  • w aplikacji wpisujesz towar AAA, seria Ag, nr od 0, nr do 1000
  • wstawiając do bazy wiesz (z danych w bazie) że towar AAA występuje w bloczkach po 25, więc walidujesz czy (NrDo-NrOd) % 25 == 0, następnie rozdzielasz to na 40 wpisów:
    AAA, AG, 0-24
    AAA, AG, 25-49
    AAA, AG, 50-74
    ...
    poźniej wydając bloczek AAA, AG, 25-49 zmieniasz mu status na 'wydany'
    jeśli chcesz liczbę towarów AAA w magazynie to wybierasz tylko te w statusie 'w magazynie' i zliczasz, nie potrzeba wg mnie do tego osobnej tabeli, tym utrudniasz sobie życie, bo musisz dbać o jej aktualność (tabeli, czy kolumny w tabeli z towarami, ten sam problem)

Moja koncepcja jest bardzo prosta i łatwo uzyskać z niej wymagane informacje, bez obazy o rozspójnienie danych. Przy założeniu że wydawany (i przyjmowany) jest bloczek jako całość, wpisywanie nr każdej kartki traci sens.

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