Projektowanie dokumentu typu Faktura UML i Baza danych

07:13 Jakub Bauman 14 Comments

Prowadząc zajęcia często spotykam się u studentów z problemami ze zrozumieniem czym jest i jak powinno się zaprojektować w systemie informatycznym dokument taki jak Faktura.
Posłużę się przykładem faktury jednak idea jaką zaprezentuje dotyczy wszelkich dokumentów.


Budowa dokumentu Faktura

Po pierwsze należy sobie uświadomić co powinna zawierać faktura. Wymienię tu najważniejsze elementy:

W nagłówku:


  • Numer
  • Data wystawienia
  • Data sprzedaży
  • Dane kontrahenta
  • Termin płatności (*)
  • Kwota brutto do zapłaty (**)


(*) - W bardziej złożonych systemach możemy rozważać wiele terminów płatności
(**) - Kwota brutto faktury nie zawsze będzie tożsama z kwotą do zapłaty np. gdy występowały wcześniej zaliczki


Pozycje faktury:

  • Liczba porządkowa
  • Nazwa towaru/usługi
  • Cena jednostkowa
  • Ilość
  • Jednostka miary
  • Wartość


Pozostałe

  • Tabela VAT
  • Tabela zaliczek
  • Tabela płatności 


Jedna faktura - wiele pozycji

Projektując diagram klas UML czy diagram ERD dla baz należy przede wszystkim zwrócić uwagę na to, że na jednej fakturze może wystąpić wiele pozycji. Zatem projektując musimy rozważać dwie klasy i analogicznie dwie tabele bazy danych:


  • Nagłówek Faktury
  • Pozycje Faktury


Jak nietrudno się domyślić klasy te (jak i tabele) powinny być w relacji 1 do n. Jedna faktura ma n pozycji.

Dane kontrahenta w fakturze

Projektując tabelę nagłówkową można założyć, że znajdzie się w niej klucz obcy wskazujący na kontrahenta. Natomiast w UML klasa nagłówka będzie posiadała atrybut typu Kontrahent.
Warto tutaj zwrócić uwagę na to, że faktura jest dokumentem, który według przepisów należy przechowywać w niezmienionej formie. Zmiana danych adresowych kontrahenta nie może pociągać za sobą zmiany danych na zapisanej w bazie fakturze. Mamy tutaj dwie możliwości.

  1. Przepisać dane do dokumentu 
  2. Zwielokrotnić rekordy kontrahenta

W pierwszym rozwiązaniu naruszamy oczywiście drugą postać normalną bazy danych, jednak to rozwiązanie jest znacznie częściej wybierane przez projektantów systemów ERP i dodatkowo jest bardziej wydajne obliczeniowo oraz pozwala na realizację dostępu do danych za pomocą zapytań SQL o mniejszej złożoności składniowej.
Drugie rozwiązanie jest z punktu widzenia teorii baz danych bardziej poprawne jednak powoduje większą złożoność zapytań SQL jakich należy używać aby pobierać dane, a tym samym większą złożoność obliczeniową.

Zwiększenie mocy obliczeniowej jest znacznie droższe niż zwiększenie pamięci dyskowej komputera zatem ekonomia wskazuje również na pierwsze rozwiązanie.

Towary w pozycjach faktury

Kolejnym błędem jest interpretacja polegająca na tym, że pozycje faktury to towary. Nic bardziej mylnego.Towar to jeden z elementów pozycji. Pozycja zawiera również co najmniej informacje: o sprzedawanej ilości, o cenie sprzedaży...
Projektując system informatyczny mamy na celu usprawnienie pracy poprzez wybór towarów z tzw. kartoteki zatem klasa Towar, czy tabela Towary w bazie danych jest jak najbardziej zasadna jednak nie jest ona tożsama z pozycją.
Towary pozostają w relacji 1 do n do pozycji faktury. Jeden towar może wystąpić w wielu pozycjach dokumentów.

Inne elementy dokumentu

Dokumenty typu faktura powinny zawierać również informację o płatności. W prostych systemach można to rozwiązać wprowadzając pole termin płatności do nagłówka. Nie jest to jednak rozwiązanie zbyt dobre gdyż uniemożliwia wystawianie faktur zawierających wiele płatności. Na przykład przy zakupie jakaś wpłata gotówką, a pozostała kwota przelewem w określonym terminie. Inny przykład to plan wpłat. Dlatego należałoby utworzyć tabelę płatności w relacji 1 do n do nagłówka faktury.
Tabela taka powinna zawierać informacje takie jak:
- sposób płatności
- termin płatności
- kwota

Suma kwot płatności powinna być taka sama jak wartość brutto faktury.

Inny element jaki powinien być uwzględniony przy projektowaniu dokumentu typu faktura to informacja o zasobach (pozycjach przychodowych). Gdy stosujemy na przykład algorytm FIFO to przy sprzedaży rozchodujemy towar wg kolejności w jakiej pojawił się na magazynie. Zasadę tę wyjaśnia film . Gdy stosujemy taki algorytm magazynowy może się zdarzać, że gdy sprzedajemy towar pochodzi on z różnych partii zakupowych, które mogą mieć różne ceny. Wówczas na przykład na potrzeby kalkulacji marży powinniśmy powiązać pozycje faktury z pozycjami dokumentów zakupowych. Oczywiście to powiązanie jest bardziej zasadne w dokumencie PZ. Dlaczego? To zostanie wyjaśnione w osobnym artykule.

Autor zdaje sobie sprawę, że powyższy artykuł nie wyczerpuje tematu. Żywi jednak nadzieję, że chociaż w pewnym stopniu będzie pomocny dla projektujących systemy biznesowe.











14 komentarzy:

  1. Na samym początku prowadzenia działalności, również borykałem się z problemamy dotyczącymi wystawiania faktur. Dokładałem mimo wszystko dużo starania, by wystawiane były rzetelnie. Zależy mi na czystej karcie w Urzędzie Skarbowym i jak dotąd nie miałem z nim kłopotów podczas ewentualnych kontroli. Można sobie znacznie ułatwić wystawianie faktur darmowym programem. Skorzystaliśmy z dokładnie takiej opcji. Jeżeli poszukujecie dobrego wsparcia, uważam, że warto rozważyć - faktury vat. Powodzenia w prowadzeniu działalności!
    Pozdrawiam serdecznie!

    OdpowiedzUsuń
  2. Dzień dobry. Mam pytanie - rozumiem, że z tym programem można wystawiać faktury, ale czy potem pomoże on w ich ewidencjonowaniu, wyliczenia zaliczki na podatek dochodowy etc? Rozważam skorzystanie z EC Biuro Rachunkowe, ale gdybym miała samowystarczalny program do księgowości to może spróbowałabym samodzielnie to prowadzić za jakiś czas.

    OdpowiedzUsuń
  3. Bardzo fajny pomocny wpis. Jeśli ktoś z was szuka strona na której może zakupić taki potrzebny mu program to polecam ja tutaj zakupiłam. https://sellintegro.pl/15-prestashop polecam bardzo serdecznie.

    OdpowiedzUsuń
  4. Bardzo ciekawie napisane. Jestem pod wielkim wrażaniem.

    OdpowiedzUsuń
  5. Ja raczej z takich systemów jeszcze nie korzystam, ale również staram się wdrażać rozwiązania informatyczne u mnie w firmie. Dlatego odkąd posiadam elektroniczny obieg dokumentów https://www.connecto.pl/jak-elektroniczny-obieg-dokumentow-wplywa-na-dzialanie-firmy/ to moim zdaniem sama praca o wiele się poprawiła.

    OdpowiedzUsuń
  6. Myślę, że ułatwieniem będzie wdrożenie gotowego systemu, który będzie miał pod kontrolą prawidłowość wystawianych faktur. Dlatego też skorzystałam ze sprawdzonego rozwiązania, rekomendowanego przez wiele znanych firm i wdrożyłam system Ready_™ Faktury Bardzo ciekawe i funkcjonalne oprogramowanie. Polecam.

    OdpowiedzUsuń
  7. W fakturowaniu ważne jest to, żeby się nie mylić. Jeden błąd może być potem problemem i dla nas i dla naszego kontrahenta. Też nasze osobiste rozwiązania, takie jak faktoring Białystok https://kredytybialystok.com/faktoring-bialystok/ powinniśmy wybierać. To nam pozwoli na ratowanie finansów firmy.

    OdpowiedzUsuń
  8. Często zdarza się, że klienci nie spłacają faktur w terminie. Jeśli wasze przedsiębiorstwo często spotyka się z takim problemem, rozważcie skorzystanie z usługi faktoringu. Więcej informacji na ten temat znajdziecie na stronie https://smartfactoring.faktoringoferty.pl.

    OdpowiedzUsuń
  9. Jeśli faktycznie co miesiąc musisz wystawiać tę samą fakturę, to polecam robić to cyklicznie. Na stronie https://www.saldeosmart.pl/blog/co-miesiac-wystawiasz-te-same-faktury-zrob-to-cyklicznie-z-saldeo/ zostalo wszystko opisane.

    OdpowiedzUsuń
  10. U mnie w firmie również wytwarza się całą masę różnej dokumentacji i uważam, że właśnie następnie samo jej archiwizowanie jest niezwykle istotne. Do takich prac wiem, że bardzo fajnie jest skorzystać z usług firmy https://archiveo.pl/ i ja od początku tak robię.

    OdpowiedzUsuń
  11. WZ Partners jest bardzo dobrym rozwiązaniem. Oferują kompleksowe usługi, w tym księgowość, listę płac i doradztwo podatkowe. To pozwoli skupić się na rozwoju twojej firmy zamiast myśleć o bieżących obowiązkach biurowych.

    OdpowiedzUsuń
  12. Ranking kont bankowych to niezastąpiona pomoc przy wyborze, uwzględniająca opłaty, korzyści i dostępność usług. Kluczowy przewodnik finansowy. https://www.bank-ranking.pl/ranking-kont-firmowych

    OdpowiedzUsuń
  13. Jako przedsiębiorca, znalazłem spokój umysłu dzięki biuru rachunkowemu. Precyzyjne rozliczenia i profesjonalne doradztwo pomagają mi skupić się na biznesie. Wybieram pewność finansową - dołącz do mnie! https://kancelariagospodarcza.pl/

    OdpowiedzUsuń