Forum Użytkownikow Subiekt GT

InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: quadro.ql w Wrzesień 11, 2020, 09:45:06

Tytuł: Zestawienie SQL błędna ilość sprzedanych towarów
Wiadomość wysłana przez: quadro.ql w Wrzesień 11, 2020, 09:45:06
Cześć, dzień dobry,

na początku dziękuję wszystkim za tyle rzeczy, które znalazłem na forum i mega mi pomogły. Jednak dotarłem do ściany, której chwilowo nie mogę przeskoczyć. Mam taki kod jak poniżej

SELECT
tw_Symbol [Symbol towaru],
tw_Nazwa [Nazwa towaru],
SUM (ob_Ilosc) [Ilość],
MAX(st_Stan) [Stan],
SUM (ob_WartNetto) [Netto],
SUM (ob_WartVat) [Vat],
SUM (ob_WartBrutto) [Brutto]
FROM dok_Pozycja
join dok__Dokument ON ob_DokHanId = dok_Id
join tw__Towar ON ob_TowId = tw_Id
join tw_Stan on tw_Id = st_TowId and st_MagId = dok_MagId
SELECT
tw_Symbol [Symbol towaru],
tw_Nazwa [Nazwa towaru],
SUM (ob_Ilosc) [Ilość],
MAX(st_Stan) [Stan],
SUM (ob_WartNetto) [Netto],
SUM (ob_WartVat) [Vat],
SUM (ob_WartBrutto) [Brutto]
FROM dok_Pozycja
join dok__Dokument ON ob_DokHanId = dok_Id
join tw__Towar ON ob_TowId = tw_Id
join tw_Stan on tw_Id = st_TowId and st_MagId = dok_MagId
WHERE (dok__Dokument.dok_Typ IN({CHL:faktura sprzedaży#2#paragon#21#korekta#6#:Typ dokumentu:2,21,6:Faktura sprzedaży, Paragon,Korekta}))
and dok_Status =1
and  dok_DataWyst BETWEEN {DR:Data:2011-01-01:2011-12-31}
and dok_MagId IN ({CHL_DB: SELECT mag_Id, mag_Nazwa FROM sl_Magazyn :Magazyn})
and (dok__Dokument.dok_KatId IN ({CHL_DB: SELECT kat_Id, kat_Nazwa FROM sl_Kategoria:Kategoria}))
GROUP BY tw_Symbol, tw_Nazwa
and dok_Status =1
and  dok_DataWyst BETWEEN {DR:Data:2020-01-01:2020-01-31}
and dok_MagId IN ({CHL_DB: SELECT mag_Id, mag_Nazwa FROM sl_Magazyn :Magazyn})
and (dok__Dokument.dok_KatId IN ({CHL_DB: SELECT kat_Id, kat_Nazwa FROM sl_Kategoria:Kategoria}))
GROUP BY tw_Symbol, tw_Nazwa

I niby wszystko dobrze działa, podaje ilość sprzedanych towarów i aktualny stan magazynowy. Tutaj jednak pojawia się problem, mianowicie ilość towarów nie zgadza się z opcją dla danego produktu, mianowicie klikam informator -> sprzedaż, zaznaczam identyczny okres czasu np. styczeń jak dla zapytania i różnica w sprzedanych sztukach to często 30-50%.

Dodam, że w wbudowanych w subiekt zestawieniach jest to liczone poprawnie, mianowicie ilość sprzedanych = to co w informatorze. Dlaczego w tym sql tak nie jest? Bardzo proszę o podpowiedź.
Tytuł: Odp: Zestawienie SQL błędna ilość sprzedanych towarów
Wiadomość wysłana przez: maniootek w Wrzesień 11, 2020, 09:58:53
Sprawdź to zapytanie:
SELECT
    tw_Symbol
    ,SUM(ob_IloscMag * ob_Znak) as [Ilość sprzedanych sztuk]
FROM
vwZstSprzWgKhnt VW
LEFT JOIN tw__Towar ON ob_TowId = tw_Id
WHERE
dok_Status <> 2
AND dok_DataWyst >= '2020-09-01' AND dok_DataWyst < '2020-09-10'
AND dbo.fnMAKE_DOKPARAM(dok_Typ, dok_Podtyp) NOT IN (131073, 393216, 393217) -- 131073=FSd, 393216=KFS, 393217=KFSn
AND dok_MagId = 1
AND ob_TowRodzaj in (1,8)
GROUP BY
dok_Id
,tw_Symbol
,tw_Rodzaj
,ob_Id
Tytuł: Odp: Zestawienie SQL błędna ilość sprzedanych towarów
Wiadomość wysłana przez: yemet w Wrzesień 11, 2020, 10:01:18
@quadro.ql Coś pomieszałeś przy wklejaniu tego zapytania - jest ono nieprawidłowe. Po tym wkleiłeś widać, że jest źle napisane, np. w ogóle nie jest uwzględnione pole dp.ob_znak co będzie powodować błędy w raportowanej ilości sprzedaży. Nie zostaną obsłużone prawidłowo zbiorcze faktury sprzedaży etc etc.