Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> System magazynowy, Rozdzielenie dokumentów otwartych od zaksiegowanych
hubertinio
post 27.05.2008, 20:00:30
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 1
Dołączył: 14.12.2007

Ostrzeżenie: (0%)
-----


Witam

Jestem w trakcie pracy nad budowa systemu dla magazynu.
Bedzie to moja praca dyplomowa i juz na wstepie napotkalem nastepujacy problem i jestem ciekaw jak Wy sobie byscie z nim poradzili...

Dokument moze miec status:
1. Otwarty - mozna nanosic zmiany, usunac, edytowac, dodawac towary
2. Zaksiegowany - nie mozna nanosic zmian, mozna go wydrukowac

Do kazdego dokumentu beda przypisane pozycje towarowe, od jednego do ...powiedzmy 99.
Tylko towary z dokumentow zaksiegowanych beda wliczane do bilansu, inwentaryzacji itd.
I tu nasow sie pytanie jak to rozplanowac w bazie?

Czy trzymac oby dwa rodzaje dokumentow w jednej tabeli, oznaczajac status pole boolinowskim?
Czy stworzyc osobne tabele, jedna dla dokumentow otwartych i druga, w ktorej nie bedzie mozna zmieniac danych (dodawanie i tylko odczyt)? ...ale za to wiecej klopotow przy prezentacji ich w jednym widoku...

Pozdrawiam H.
ps. nie mam polskich znakow


--------------------
"Bramy skarbnicy mądrości i wiedzy są zawsze otwarte"
Go to the top of the page
+Quote Post
piotrooo89
post 27.05.2008, 20:07:18
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




jedno i drugie rozwiązanie ma swoje plusy i minus... ja stworzył bym dwie tabele i bym miał jasność co jest co... to jest moje zdanie, co do tej prezentacji to nie wiem czy to był by kłopot jakaś relacja i powinno się wszystko bez problemu udać.


--------------------
Go to the top of the page
+Quote Post
scanner
post 27.05.2008, 21:45:38
Post #3





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Potrzebujesz dwie tabele - jedna to "Dokumenty" a druga "Pozycje" Typ, status i inne flagi oznaczasz w dokumencie.
Czy jeśli księgowa oznacza fakturę jako opłacona, to przepisuje ja na osobny druczek, czy przywala pieczątkę?

~piotrooo89: pokaż mi zalety drugiego rozwiązania - jakiekolwiek...


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
jarek_bolo
post 28.05.2008, 12:18:37
Post #4





Grupa: Zarejestrowani
Postów: 149
Pomógł: 12
Dołączył: 3.03.2008
Skąd: łódzkie

Ostrzeżenie: (0%)
-----


W tabeli "Pozycje" dajesz pole dokument.id aby wiązało dane pozycje (może być ich nieskończenie wiele) do dokumentów.


--------------------
"Jeden człowiek nie zmieni świata, ale jeden człowiek może przekazać informację która zmieni świat." - David Icke
| PAMIĘTAJ, JESTEŚ POLAKIEM !!! |
Jam jest Polska, Ojczyzna Twoja, ziemia Ojców, z której wzrosłeś. Wszystko, czym jesteś, po Bogu - mnie zawdzięczasz!!
Go to the top of the page
+Quote Post
hubertinio
post 29.05.2008, 13:23:11
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 1
Dołączył: 14.12.2007

Ostrzeżenie: (0%)
-----


Cytat(scanner @ 27.05.2008, 21:45:38 ) *
Czy jeśli księgowa oznacza fakturę jako opłacona, to przepisuje ja na osobny druczek, czy przywala pieczątkę?


Narazie nie doszedłem do tematu faktur... na początek chcę się skupic na zarządzaniu towarami i tak naprawdę nie wiem, czy będę projektował funkcjonalność sprzedażową. Czy jedno bez drugiego nie może istnieć?

Wracając do tematu, czyli dobrze będzie tak:

[Towary]

połączone z

[Pozycje na dokumentach]

połączone z

[Dokumenty]

i wątek się rozwija smile.gif
Przykładowa sytuacja: Dokument zamknięty, zablokowane powiązane rekordy w tabeli łączącej, a użytkownik chce zmienić nazwę towaru... po tej opracji drukuję dokument z tym samym numerem i datą, ale w jednej z pozycji z innym towarem...
Czy blokować również edycję towarów, które znajdują się na dokumentach zamkniętych?
Czy można to rozwiązać w inny sposób?

Dziękuję wszystkim za odpowiedzi (przeszłe i przyszłe)

Ten post edytował hubertinio 29.05.2008, 13:24:24


--------------------
"Bramy skarbnicy mądrości i wiedzy są zawsze otwarte"
Go to the top of the page
+Quote Post
scanner
post 29.05.2008, 13:45:48
Post #6





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Faktura to był przykład obrazujący Twoje pytanie
Cytat
Czy stworzyć osobne tabele, jedna dla dokumentow otwartych i druga, w ktorej nie bedzie mozna zmieniac danych

Co do dalszej części, to oczywiście dokument musi być powiązany (jeden-do-wielu) z pozycją, a pozycja - i tu masz dwie drogi:
  • Łączy się przez Id z Towarem
  • Nie łączy się z towarem, a podczas tworzenia nazwa towary jest kopiowana do pozycji
Osobiście, połączyłbym oba punktu czyli trzymałbym w pozycji zarówno ID towaru jaki ma na niej figurować, jak i nazwę (i cenę i inne kluczowe dane) - nadmiarowość danych to akurat nic strasznego.
W tym momencie, poprzez Id, możesz wyszukać wszystkie sprzedaże tego produktu, oryginał towaru może sobie zmieniać nazwę, a na dokumencie pozostaje nazwa z chwili zakupu.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
hubertinio
post 29.05.2008, 14:04:38
Post #7





Grupa: Zarejestrowani
Postów: 17
Pomógł: 1
Dołączył: 14.12.2007

Ostrzeżenie: (0%)
-----


Dzięki scanner, o to mi chodziło, jak to ugryźć.
Wkleję koncepcję jak będzie dopracowana.


--------------------
"Bramy skarbnicy mądrości i wiedzy są zawsze otwarte"
Go to the top of the page
+Quote Post
jarek_bolo
post 29.05.2008, 14:44:08
Post #8





Grupa: Zarejestrowani
Postów: 149
Pomógł: 12
Dołączył: 3.03.2008
Skąd: łódzkie

Ostrzeżenie: (0%)
-----


Scanner już zwrócił uwagę na cenę, ale właśnie to najważniejsze.
Może być tak, że cena danego towaru tuż po dodaniu go do pozycji ulegnie zmianie, wtedy mając kopię ceny z chwili dodawania towaru do pozycji mamy cenę jaka była.
To też pozwoli nam sprawdzić sobie po czasie jak się kształtowała cena danego towaru.


--------------------
"Jeden człowiek nie zmieni świata, ale jeden człowiek może przekazać informację która zmieni świat." - David Icke
| PAMIĘTAJ, JESTEŚ POLAKIEM !!! |
Jam jest Polska, Ojczyzna Twoja, ziemia Ojców, z której wzrosłeś. Wszystko, czym jesteś, po Bogu - mnie zawdzięczasz!!
Go to the top of the page
+Quote Post
dr_bonzo
post 29.05.2008, 16:36:44
Post #9





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Cytat
To też pozwoli nam sprawdzić sobie po czasie jak się kształtowała cena danego towaru.

Ale tylko wtedy jesli ten towar bedzie kupowany smile.gif


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Sedziwoj
post 2.06.2008, 10:13:19
Post #10





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(dr_bonzo @ 29.05.2008, 17:36:44 ) *
Ale tylko wtedy jesli ten towar bedzie kupowany smile.gif


Można wprowadzić wersjonowanie towaru, tzn. każda zmiana powoduje utworzenie nowej wersji, a wtedy łączymy dokument nie z id towaru, a z id wersji towaru. Wtedy nie dość że mamy wszystkie dane, to jeszcze można stworzyć statystyki zmian danego towaru.


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
scanner
post 2.06.2008, 10:36:30
Post #11





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




~Sedziwoj: Z doświadczenia wiem, ze to jest nieco uciążliwe w implementacji.

W mentax'owym CRMie stosujemy taką technikę, że każda tabela z typem danych ma swoją kopię z historią zmian - odpowiednio napisana procedura składowana w plpgsql i przeniesienie danych podczas edycji/usuwania dzieje się niejako automagicznie - a dzięki temu nie obciąża się tabeli głównej. Zaś samo dotarie do historii danego rekordu to tylko jedno zapytanie do tabeli historii. Oczywiście to tylko pobieżny opis, ale myślę, ze na razie wystarczy.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Sedziwoj
post 2.06.2008, 11:15:01
Post #12





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


@scanner
Zwróć na jedno uwagę, ja nic nie napisałem jak to realizować.
Ale umieszczanie w jednej tabeli aktualnych produktów i ich starszych wersji nie jest za ciekawe, chyba że to trochę inaczej rozwiąże. Ale to już zależy co chce się osiągnąć.
Na pewno dla dobra serwera z bazą, dostęp do aktualnych wersji produktów powinien być tak samo szybki jakby nie było wersjonowania.
Ten sposób co podałeś, jest i prosty i dobry.

P.S. Opis pobierze przy tym poziomie abstrakcji są dobre, jak już się coś wybierze, to wtedy wejście w konkretny sposób realizacji jest przydatny, teraz by tylko utrudniał.


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
hubertinio
post 10.07.2008, 16:43:20
Post #13





Grupa: Zarejestrowani
Postów: 17
Pomógł: 1
Dołączył: 14.12.2007

Ostrzeżenie: (0%)
-----



Czy to o to chodziło?


--------------------
"Bramy skarbnicy mądrości i wiedzy są zawsze otwarte"
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 12:30