konto usunięte

Temat: Pozycje faktury korekty - tabela w bazie danych

Witam,
Stanąłem ostatnio przed wyborem metody przechowywania korekt pozycji faktury w bazie danych.

Przykład:
Faktura 01
Towar 1
ilość: 5 szt
cena netto: 10
cena vat: 2.2
cena brutto: 12.2
wartość netto: 50
wartość vat: 11
wartość brutto: 61
stawka vat 0.22

Teraz gdy przychodzi korekta takiej faktury (sytuacja ekstremalna):
(dane po korekcie)
Towar 1
ilość: 4 szt
cena netto: 11
cena vat: 0.77
cena brutto: 11.77
wartosc netto: 44
wartosc vat: 3.08
wartosc brutto: 47.08
stawka vat: 0.07

Moim pierwszym pomysłem było przechowywanie danych jako danych po korekcie i zaznaczenie, że dany wpis jest korektą wpisu o określonym ID.
Niestety gdy doszedłem do raportów, takie podejście okazuje się błędne księgowo (sytuacja gdy faktura jest z jednego miesiąca, a korekta z innego).

Czy ktoś z was zajmował się podobnym problemem?
W jaki sposób przechowujecie takie dane? Problem oczywiście nie dotyczy tylko faktur ale też innych dokumentów które mogą być korygowane.
Pozdrawiam

konto usunięte

Temat: Pozycje faktury korekty - tabela w bazie danych

Krzysztof Konieczny:
Witam,
Stanąłem ostatnio przed wyborem metody przechowywania korekt pozycji faktury w bazie danych.

bla, bla, bla
>

tabela FAKTURA + tabela FAKTURA_MA_KOREKTE, gdzie FAKTURA_MA_KOREKTE jest czymś takim:

faktura_id - identyfikator faktury
korekta_id - identyfikator korekty / w tabeli FAKTURA /
komentarz - dodatkowy komentarz do korekty

/ ew. kto skorygował, datę wprowadzenia korekcji do bazy etc.

Dzięki temu że faktura i korekta będą w jednej tabeli /encji/ łatwo będzie można je porównać, wprowadzenie dodatkowej tabeli łączącej zapobiega powstaniu chaosu i nadmiernej redundancji danych.

Prościej?

tabela faktura posiada dodatkowe pole "korekta_id" które prowadzi do kolejnej faktury będącej korektą, ew. drugie pole is_korekta które oznacza, że dany rekord to korekta.

konto usunięte

Temat: Pozycje faktury korekty - tabela w bazie danych

Nie do końca mi o to chodzi, sposób znajdywania korekt faktur już mam, dokładnie taki jak pisałeś (dodatkowe pole id_correct i is_correct)

Moje pytanie dotyczy samych pozycji faktur, w których może być korygowana ilość, cena, stawka vat.
Chciałbym tak je przechowywać, żeby przy raportach nie mieć problemu.
Bartosz Raczek

Bartosz Raczek .NET Software
Developer

Temat: Pozycje faktury korekty - tabela w bazie danych

Wszystko zależy, podam przykład jak jest zbudowany jeden system ERP dla którego robiłem różne dodatki:

Dla korekt i faktur istnieje w bazie 1 tabela danych nagłówkowych powiedzmy ND i tabela pozycji PD.
W ND przechowywane są dane kontrahenta, wszelkie nagłówki sumy brutto itp no i między innymi pole TYP_DOK.
PD przechowuje wszelkie informacje o pojedynczej pozycji w zamówieniu/korekcie vat ilość sztuk PZ źródłowy, nr pozycji... .

Tam podział został zrobiony tak że numer dokumentu faktury to F /.... korekty KF/.... (1).
Dalej w ND jest pole TYP_DOK (oczywiście ND zawiera też numer dokumentu jak i ID_DOK po którym się wiążą), TYP_DOK to enumeracja znakowa { F - faktura, K - korekta, M - MMka ipt} (2).
Dalej w ND mamy kolumnę w rodzaju KF_DO - tu zawarty jest numer dokumentu źródłowego (faktury) do jakiej jest robiona korekta(3).

Biorąc (1),(2) i (3) nie było problemów z raportowaniem.

Wszelkie dane - oryginalne faktury i korekty powinny być zapisane ze względu na księgowość jak i przeliczenie faktycznych stanów magazynowych ze względu na przychody i rozchody towarów (no i jeszcze rozchody niedoborów itp).

Tak to było tam rozwiązane mam nadzieję że zrozumiesz o co mi chodziło ;)

konto usunięte

Temat: Pozycje faktury korekty - tabela w bazie danych

Nadal nie do końca mi o to chodzi.

Spoglądając na przykład który podałem, chodzi mi głównie o to czy:
pozycje towarową(bądź usługową) korekty przechować jako:

ilość: 4 szt
cena netto: 11
cena vat: 0.77
cena brutto: 11.77
wartosc netto: 44
wartosc vat: 3.08
wartosc brutto: 47.08
stawka vat: 0.07

czy jako:
ilość: -1
cena netto: 1
cena vat: -1.43
cena brutto: -0.43
wartość netto: -6
wartość vat: -7.92
wartość brutto: -13.92
stawka vat: -0.15
?

Czy może pod fakturę korektę podpiąć dwa wpisy
1. wpis korygowany, ale wszystkie wartości ujemne
2. wpis korekty (kwoty po korekcie), wartości dodatnie

Z tych dwóch wpisów po zsumowaniu wychodzi kwota korekty danej pozycji.
Piotr Krajewski

Piotr Krajewski web application
programmer

Temat: Pozycje faktury korekty - tabela w bazie danych

Ja to u siebie robie tak że mając tabelkę w bazie danych np. invoices dodaje kolejny wpis dla faktury korygującej już z poprawionymi danymi i dodatkową flagą abym mógł rozpoznac ze to korekta. Chyba najprościej i łatwo da sie manipulowac danymi
Bartosz Raczek

Bartosz Raczek .NET Software
Developer

Temat: Pozycje faktury korekty - tabela w bazie danych

Nie możesz zrobić korekty jako nowy wpis do tabeli? Np dla twojego przykładu:

Faktura 01
Towar 1
ilość: 5 szt
cena netto: 10
cena vat: 2.2
cena brutto: 12.2
wartość netto: 50
wartość vat: 11
wartość brutto: 61
stawka vat 0.22

Korekta 01
Towar1
ilość: 1 szt
.
.

Komentarz do podanych przez Ciebie przykładów
Zakładając że korekta jest na 1 sztukę, to tworzysz dokument korekty na 1 sztukę (nie na 4szt jakby to wychodziło z podanego przykładu) jak również nie na -1 sztukę.

Ale w sumie to może zależeć od księgowej/go u mnie był wymóg że ma być zapisywane tak jaki dokument korekty ma być.

konto usunięte

Temat: Pozycje faktury korekty - tabela w bazie danych

Bartosz R.:
Komentarz do podanych przez Ciebie przykładów
Zakładając że korekta jest na 1 sztukę, to tworzysz dokument korekty na 1 sztukę (nie na 4szt jakby to wychodziło z podanego przykładu) jak również nie na -1 sztukę.

Ale w sumie to może zależeć od księgowej/go u mnie był wymóg że ma być zapisywane tak jaki dokument korekty ma być.

No tak ale muszę jakoś zaznaczyć czy jest korekta na + czy na -. Korekta przecież może zwiększyć ilość, jednocześnie zmienić stawkę VAT i cenę pozycji. Dlatego też boję się zapisu:
ilość: -1
cena netto: 1
cena vat: -1.43
cena brutto: -0.43
wartość netto: -6
wartość vat: -7.92
wartość brutto: -13.92
stawka vat: -0.15

bo z ilość*netto nie wynika wartość. Aczkolwiek taki zapis wydaje się być wymagany żeby operacje sumowania (do raportów) dawały dobre wyniki :/

----------------------
a co do wypowiedzi Piotra K.
Też o tym myślałem. Ale będę miał np w miesiącu kwietniu wpis na 50 netto (z zaznaczeniem, że jest korygowany), oraz w miesiącu maju wpis na 44 netto (z zaznaczeniem, że to korekta). Tylko, że podsumowanie samego miesiąca maja nie może zawierać 44 netto tylko powinno zawierać -6.
Wiem, że wszystko można policzyć bazą czy php, ale muszę liczyć wiele innych bardziej skomplikowanych rzeczy w raportach i wolałbym taką podstawową informację mieć wprost.Krzysztof Konieczny edytował(a) ten post dnia 11.05.10 o godzinie 16:31
Jakub L.

Jakub L. Programista

Temat: Pozycje faktury korekty - tabela w bazie danych

IMHO powinieneś pogadać z księgowością dla której to piszesz, bo masz szanse dostać od razu przypadki użycia, prawdopodobnie nawet rzeczywiste i jak mają być rozwiązane, a i księgowość ostatecznie dostanie to co chce.
Bartosz Raczek

Bartosz Raczek .NET Software
Developer

Temat: Pozycje faktury korekty - tabela w bazie danych

Widzisz u mnie w tym systemie ERP korekta zawsze mogła oznaczać zwrot towaru (do mnie) a nie zwiększanie sprzedaży bo chyba o to Ci chodzi o ile dobrze rozumiem, od tego była kolejna faktura/pozycja.
Co do korekt wartościowych to już była całkiem inna bajka

Dlatego na początku napisałem że wszystko zależy od wymogów/aktualnego systemu.

konto usunięte

Temat: Pozycje faktury korekty - tabela w bazie danych

System musi być uniwersalny jak Symfonia Handel, albo Subiekt.
Co do księgowości dla której piszę, jest ich parę, i właśnie jedna zwróciła mi uwagę na źle działające korekty, dlatego je przerabiam.
Wymyśliłem już, że przechowam wartości przed korektą (jako ujemne) + wartości po korekcie.
Z sumowania wyjdzie kwota korekty. Wpisy odpowiednio oznaczone pozwolą pobrać to co trzeba w danym momencie.

Pozdrawiam KK

konto usunięte

Temat: Pozycje faktury korekty - tabela w bazie danych

Krzysztof Konieczny:
Wymyśliłem już, że przechowam wartości przed korektą (jako ujemne) + wartości po korekcie.
Z sumowania wyjdzie kwota korekty. Wpisy odpowiednio oznaczone pozwolą pobrać to co trzeba w danym momencie.

Przykład, który podałeś nie zadziała dla korekty w postaci rabatu. Na Twoim miejscu trzymałbym rzeczywiste wartości w tabeli faktury. Faktura lub nota korygująca, czy nawet anulowanie faktury korygują zawsze wybrane pola z faktury, stąd stosowałbym tabelę generyczną do korygowanych pól z tabeli faktury. Przeczytaj w wolnej chwili: http://www.vat.pl/faktura-korekta/index.php, rozjaśnia co może być poprawione.

konto usunięte

Temat: Pozycje faktury korekty - tabela w bazie danych

Krzysztof Konieczny:
...
wartość netto: 50
wartość vat: 11
wartość brutto: 61

Tak zupełnie na marginesie: po co te wartości w tabeli skoro są one iloczynem innych wartości z tej samej tabeli ?
Alan Gabriel B.

Alan Gabriel B. Software Engineer,
IFX

Temat: Pozycje faktury korekty - tabela w bazie danych

Robert B.:
Tak zupełnie na marginesie: po co te wartości w tabeli skoro są one iloczynem innych wartości z tej samej tabeli ?

Abyś dodatkowo nie obciążał bazy przy wszelkiego rodzaju zestawieniach. Statystyka potrafi zarżnąć bazę.

Temat: Pozycje faktury korekty - tabela w bazie danych

A jak zapisać korektę korekty (korektę faktury skorygowanej) przemyślałeś ?
Adrian Z.

Adrian Z. IT Project Manager &
PHP Programmer

Temat: Pozycje faktury korekty - tabela w bazie danych

Piotr Wolański:
A jak zapisać korektę korekty (korektę faktury skorygowanej) przemyślałeś ?

Też nad tym siedzę dzisiaj , między innymi dlatego ten temat czytam .

Fakturę wystawiamy na 5 sztuk po 1zł netto -> 6.10 brutto

Korektę wystawiamy na 4 sztuki po 50gr netto -> 2.44 - 6.10 = -3.66 brutto

Korektę korekty wystawiamy na 5 sztuk po 80gr netto -> 4.88 - 2.44 = 2.44 brutto

Tym sposobem wystawiając korektę na 4 sztuki a nie na -1 sztukę a później na 5 sztuk a nie +1 sztukę po każdej następnej korekcie cofamy się tylko o 1 fakturę do tyłu mając nie wiem ile korekt do jednego zakupu .

konto usunięte

Temat: Pozycje faktury korekty - tabela w bazie danych

Do tego wszystkiego...

Wystawiając następną korektę do FV, która już była korygowana należy powołać sie na tę FV i na jej korektę.

Idąc dalej tym tropem - jeśli korekt do jrdnej FV będzie 5 to na szóstej korekcie należy wymienić zawsze ostatnią korektę, której tyczy się bieżąca korekta.

Czyli rozpatrując przykład kilku korekt i 4 pozycji na pierwotnej FV wg przykładu:

towar z poz.1 -> korekta1-> korekta2.
towar z poz.2 -> korekta1-> korekta2-> korekta3
towar z poz.3 -> korekta3
towar z poz.4 -> brak korekty

wystawiając czwartą korektę, która będzie uwzględniała wszystkie 4 pozycje należy powołać się na:

ad. poz.1 -> korekta2
ad. poz.2 -> korekta3
ad. poz.3 -> korekta3
ad. poz.4 -> fv pierwotna

Patrząc na mało realny powyższy przykład a także uwzględniając potrzeby księgowości należy przyjąć, że najlepszą formą będzie jednak zapis korekty jednego towaru w dwóch rekordach:

-ilość (jak było)
+ilość (jak powinno być)Robert B. edytował(a) ten post dnia 01.06.10 o godzinie 11:01

konto usunięte

Temat: Pozycje faktury korekty - tabela w bazie danych

Moim pierwszym pomysłem było przechowywanie danych jako danych po korekcie i zaznaczenie, że dany wpis jest korektą wpisu o określonym ID.

do bardzo dobre rozwiązanie, widzę ze temat poszedł w inna stronę, napisz dokładnie z czym masz problem

koledzy trochę się rozpisali a przecież nie korygujesz faktury tylko POZYCJE na fakturze

korektę pozycji możesz zrobić na 2 sposoby
1. korygujesz wszystkie pozycje i wszystkie umieszczasz na korekcie
2. korygujesz tylko 1 pozycje która została źle wpisana

ad 1. jest łatwiejsze do ogarnięcia przez programistę ale nie sprawdza się przy fakturach z dużą ilością pozycji np fv ma 10 stron to korekta też ma 10 stron, zaśmiecasz bazę tymi samymi danymi,

ad 2. jest trudniejsze do zaprogramowania ale wydruk łatwiejszy bo pokazujesz tylko to co naprawdę się zmieniło i baza ma mniej wpisów

napisz do mnie to ci pomogę

ja czasem robię faktury po 25 stron i korekty do korekty-korekty-korekty-korekty jakiejś faktury vat ;)
pod to mam podpięty raport przychodów i rejestr VAT i wszystko działa :)Sebastian Krajewski edytował(a) ten post dnia 01.06.10 o godzinie 21:32

Temat: Pozycje faktury korekty - tabela w bazie danych

Przepraszam za OT, być może to co napiszę jest oczywiste dla autora wątku, ale chyba lepiej niepotrzebnie napisać, ale mieć pewność że kolega nie wpuści się w maliny.

Sugeruję zwrócić także uwagę na etapie projektowania bazy na aspekt danych teleadresowych kontrahentów - jeśli pan kowalski który ma w bazie faktury z ostatnich 5 lat zmieni adres, to przy scenariuszu gdzie łączysz tabele użytkownika (nip, imię, nazwisko, adres) z tabelą faktur (np. po id klienta, klucza głównego pierwszej tabeli) zmianie ulegną także dane na fakturach z minionego okresu, wystawionych przecież na stary adres.
W takim wypadku bez tabel łączących raczej się nie obejdzie (zakładam że chcesz jak najbardziej ograniczyć redundancję).Marcin K. edytował(a) ten post dnia 02.06.10 o godzinie 02:47

konto usunięte

Temat: Pozycje faktury korekty - tabela w bazie danych

Marcin K.:
... jeśli pan kowalski który ma w bazie faktury z ostatnich 5 lat zmieni adres ...

Z tym się wiąże zupełnie inna sprawa. Otóż FV musisz wydrukować w niezmienionej formie (np. duplikat). Co za tym idzie albo nie możesz usuwać/zmieniać danych kontrahenta (co bardzo często jest nierealne) i nie możesz usuwać/zmieniać nazw artykułów, jednostek miar, pkwiu, etc. albo dane kontrahenta przy wystawianiu FV zapisujesz do tabeli z nagłówkiem FV (tam gdzie data, nr, itp.) a nazwę towaru/usługi, pkwiu, etc. zapisujesz do tabeli pozycji.

Wtedy też masz rozwiązany problem z "brakiem Kowalskiego" po 5 latach.Robert B. edytował(a) ten post dnia 02.06.10 o godzinie 07:55



Wyślij zaproszenie do