Strona 1 z 3
RKZ faktury
: 31 mar 2008, 23:12
autor: Kyniu
Hej,
Jak się zagląda w fakturę to można podejrzeć taką zakładkę jak RKZ - rozliczenie kosztu zakupu. Podana jest tam marża na dokumencie i koszty na dokumencie. Jak to jest liczone? Bo mnie zaraz coś trafi - podglądam raport w systemie i wynika jakoby koszt był liczony z elementów transakcji TraElem.TrE_KosztKsiegowy. Tylko dlaczego jak ja liczę sumę z tej kolumny to mi wychodzi kupa. Pomóżcie bo zaraz komputer przez okno wywalę i się na kopanie rowów przekwalifikuje.
Kyniu
P.S. Jednak zdecydowanie wolę sieci. Tam wszystko jest takie logiczne i oczywiste.
Re: RKZ faktury
: 01 kwie 2008, 08:19
autor: S0Cool
Napisz konkretniej co Ci nie wychodzi, może coś wymyślimy.
P.S.
Stopień subiektywnie postrzeganej logiki jest wprost proporcjonalny do stopnia zgłębienia tematu.
Dla mnie sieć to ta chmurka połączona kreską z kodem aplikacji

Re: RKZ faktury
: 01 kwie 2008, 08:40
autor: marceynowa
W tabeli TraElem dla każdej pozycji podana jest wartość księgowa oraz koszt księgowy. U mnie te wartości pokrywają się z zakładką RKZ. Marża jest liczona jako różnica między sprzedaża, a zakupem, natomiat procentowo to jest wzór na to - poza tym zależy od konfiguracji - może być marża "do 100" i "od 100". O dziwo oba wzory podane są w pomocy do CDN XL w rozdziale administrator.
U mnie jest księgowość zewnętrzna, więc może po zaksięgowaniu dokumentó dzieją sie jakieś rzeczy w tabeli. Najlepiej byłoby gdybyś przedstawił jakiś przykład.
Re: RKZ faktury
: 01 kwie 2008, 09:30
autor: Kyniu
S0Cool pisze:Napisz konkretniej co Ci nie wychodzi, może coś wymyślimy.
Nie wychodzi mi łączenie tabel. Chcę tak (oczywiście kolejność jest zbieżna z rozumowaniem a nie z tym jak to powinno wyglądać w języku SQL):
1. Wybrać z tabeli TraNag transakcje sprzedaży (WHERE CDN.TraNag.TrN_TrNTyp = 3),
2. Wyszukać odpowiadające transakcji wiersze w tabeli TraElem (jak rozumiem zapisując to w postaciu warunku brzmiałoby to tak WHERE CDN.TraElem.TrE_GIDTyp = CDN.TraNag.TrN_GIDTyp AND CDN.TraElem.TrE_GIDNumer = CDN.TraNag.TrN_GIDNumer
3. Zrobić grupowanie po CDN.TraElem.TrE_GIDNumer a sumy w ten sposób SUM(CDN.TraElem.TrE_KsiegowaNetto) AS 'Sprzedaż netto', SUM(CDN.TraElem.TrE_KosztKsiegowy) AS 'Koszt zakupu'.
Tylko tyle a jak się w praktyce okazuje aż tyle.
Kyniu
Re: RKZ faktury
: 01 kwie 2008, 10:12
autor: wojtini
Kod: Zaznacz cały
SELECT
CDN.NumerDokumentuTRN(TrN_GIDTyp, TrN_SpiTyp, TrN_TrNTyp, TrN_TrNNumer, TrN_TrNRok, TrN_TrNSeria) AS Trn_NumerPelny,
Knt_Akronim,
Knt_Miasto,
TrE_TwrNazwa,
TrE_JmZ,
TrE_Ilosc,
TrE_Cena,
TrE_KsiegowaNetto,
TrE_KsiegowaBrutto,
TrE_KosztKsiegowy,
(TrE_KsiegowaNetto-TrE_KosztKsiegowy) as MARZA_wartosc,
((TrE_KsiegowaNetto-TrE_KosztKsiegowy) * 100)/TrE_KsiegowaNetto as MARZA_procent
from CDN.TraElem
JOIN CDN.TraNag ON TrN_GIDTyp=TrE_GIDTyp AND TrN_GIDNumer=TrE_GIDNumer
JOIN CDN.KntKarty ON Knt_GIDNumer=TrN_KntNumer
where
TrN_GIDTyp=[b]2033[/b] AND TrN_GIDFirma=[b]206849[/b] AND TrN_GIDNumer=[b]363320[/b]
Tu masz zapytanie podające dane dla jakiegoś przykładowego dokumentu (podstaw właściwe dane w
POGRUBIONE miejsca)
Re: RKZ faktury
: 01 kwie 2008, 10:14
autor: wojtini
Kod: Zaznacz cały
SELECT
TrN_GIDNumer,
-- Knt_Akronim,
-- Knt_Miasto,
-- TrE_TwrNazwa,
-- TrE_JmZ,
-- TrE_Ilosc,
-- TrE_Cena,
SUM (TrE_KsiegowaNetto) AS WartoscSprzedNetto,
SUM (TrE_KosztKsiegowy) AS WartoscKosztNetto,
SUM (TrE_KsiegowaNetto-TrE_KosztKsiegowy) as MARZA_wartosc,
(SUM (TrE_KsiegowaNetto-TrE_KosztKsiegowy) * 100)/SUM (TrE_KsiegowaNetto) as MARZA_procent
from CDN.TraElem
JOIN CDN.TraNag ON TrN_GIDTyp=TrE_GIDTyp AND TrN_GIDNumer=TrE_GIDNumer
JOIN CDN.KntKarty ON Knt_GIDNumer=TrN_KntNumer
where
TrN_GIDTyp=2033 AND TrN_GIDFirma=206849 AND TrN_GIDNumer=363320
Group by TrN_GIDNumer
A tu masz dane już
"poskładane" dla tego dokumentu w
"całość".
Jak by co to pytaj dalej bo nie jestem pewien czy dokładnie o to Ci chodzi

)
Re: RKZ faktury
: 01 kwie 2008, 10:20
autor: Kyniu
wojtini pisze:Jak by co to pytaj dalej bo nie jestem pewien czy dokładnie o to Ci chodzi

)
Nie, nie o to. Dla jednego dokumentu wiem jak to policzyć. Pytanie jak zrobić to dla wszystkich dokumentów. Czyli jeszcze raz - wyławiam wszystkie dokumenty transakcji sprzedaży. Dla każdego z tych dokumentów odszukuję jego elementy transakcji i sumuję kolumny KsiegowaNetto oraz KosztKsiegowy. Zbieram te dane i otrzymuję tabelę zawierającą kolumny:
1. Dokument sprzedaży
2. Data sprzedaży
3. Wartość netto dokumentu sprzedaży (suma kolumny KsiegowaNetto z tabeli TraElem)
4. Koszt na dokumencie sprzedaży (suma kolumny KosztKsiegowy z tabeli TraElem)
5. Marża kwotowo (jak różnica między punktem 3 i 4)
6. Marża procentowo (jako stosunek punktu 3 i 5)
Wiem że muszę wyjść od selekcji wszystkich elementów transakcji, pogrupować je po GIDNumerach elementów transakcji i sumować kolumny KsigowaNetto oraz KosztKsiegowy. I to umiem zrobić. Schody się zaczynają jak chce to pogodzić z tabelę nagłówków transakcji bo wychodzą dziwa.
Kyniu
Re: RKZ faktury
: 01 kwie 2008, 10:31
autor: Kyniu
Jak zrobię tak:
Kod: Zaznacz cały
SELECT
CDN.TraElem.TrE_GIDNumer,
SUM(CDN.TraElem.TrE_KsiegowaNetto) AS FIELD_1,
SUM(CDN.TraElem.TrE_KosztKsiegowy) AS FIELD_2
FROM
CDN.TraElem
GROUP BY
CDN.TraElem.TrE_GIDNumer
ORDER BY
CDN.TraElem.TrE_GIDNumer
To do tego miejsca mi wychodzi. A otrzymuję ponad 2000 wierszy. Co prawda nie wiem czemu jest taka różnica w porównaniu do nagłówków transakcji (tych jest ponad 3500) ale na razie przyjmuję że tak jest. Prawdopodobnie wynika to z tego że w nagłówkach są jeszcze spinacze które nie mają elementów.
I w tym momencie mnie olśniło

Cholerne spinacze

Przecież spinacz nie ma elementów. Czyli po odszukaniu dokumentów (S)FS muszę znaleźć właściwe im WZ i dopiero z WZ pobrać elementy transakcji.
Kyniu
Re: RKZ faktury
: 01 kwie 2008, 10:38
autor: wojtini
Czyli musisz zrobić złączenie TraNag z nią samą

)
Re: RKZ faktury
: 01 kwie 2008, 10:46
autor: Kyniu
wojtini pisze:Czyli musisz zrobić złączenie TraNag z nią samą

)
Wracamy do dyskusji. Mam wybrane elementy, pogrupowane pod GIDNumerach, policzone sumy. Teraz muszę na podstawie GIDNumeru wskazać "tatusia" tych elementów czyli transakcję z której pochodzą - rozumiem że GIDNumer wskaże mi jako tatusia FS albo WZ. Dobrze myślę? Zaraz coś wyklikam bo lepiej mi się myśli jak działam niż tak abstrakcyjnie.
UPDATE:
Dorobiłem kontrolnie wyświetlanie dokumentu "tatusia" i na razie jest dobrze, kierunek właściwy:
Kod: Zaznacz cały
SELECT
CDN.TraElem.TrE_GIDNumer,
SUM(CDN.TraElem.TrE_KsiegowaNetto) AS FIELD_1,
SUM(CDN.TraElem.TrE_KosztKsiegowy) AS FIELD_2,
CDN.TraNag.TrN_DokumentObcy
FROM
CDN.TraElem
INNER JOIN CDN.TraNag ON (CDN.TraElem.TrE_GIDTyp = CDN.TraNag.TrN_GIDTyp)
AND (CDN.TraElem.TrE_GIDNumer = CDN.TraNag.TrN_GIDNumer)
GROUP BY
CDN.TraElem.TrE_GIDNumer,
CDN.TraNag.TrN_DokumentObcy
ORDER BY
CDN.TraElem.TrE_GIDNumer
UPDATE:
Ograniczmy się do FS i WZ bo inne dokumenty mnie nie interesują:
Kod: Zaznacz cały
SELECT
CDN.TraElem.TrE_GIDNumer,
SUM(CDN.TraElem.TrE_KsiegowaNetto) AS FIELD_1,
SUM(CDN.TraElem.TrE_KosztKsiegowy) AS FIELD_2,
CDN.TraNag.TrN_DokumentObcy
FROM
CDN.TraElem
INNER JOIN CDN.TraNag ON (CDN.TraElem.TrE_GIDTyp = CDN.TraNag.TrN_GIDTyp)
AND (CDN.TraElem.TrE_GIDNumer = CDN.TraNag.TrN_GIDNumer)
WHERE
CDN.TraElem.TrE_GIDTyp IN (2033,2001)
GROUP BY
CDN.TraElem.TrE_GIDNumer,
CDN.TraNag.TrN_DokumentObcy
ORDER BY
CDN.TraElem.TrE_GIDNumer
Kyniu