Autor Wątek: Zestawienie niechodów wg magazynu i dni bez ruchu  (Przeczytany 1999 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline peter1031

  • Nowy użytkownik
  • *
  • Wiadomości: 16
  • Reputacja +0/-0
  • Wersja programu: 1.66 SP4
Zestawienie niechodów wg magazynu i dni bez ruchu
« dnia: Maj 11, 2020, 11:57:06 »
Witam wszystkich formowiczów. Napisałem zestawienie pokazujące towary bez dokumentów z uwzględnieniem liczby dni i wyborem magazynów (obecnie ustawione na sztywno). Gdzieś popełniłem błąd ponieważ źle liczy mi datę ostatniej operacji. Sprawdzałem towar w informatorze i ostatni ruch był w 2017 tu pokazuję mi datę 2019. Może ktoś byłby w stanie coś podpowiedzieć.

Z góry dziękuję.

SELECT
sl_GrupaTw.grt_Nazwa AS [grupa towarowa],
tw__Towar.tw_Symbol AS [symbol],
tw__Towar.tw_Nazwa AS [nazwa towaru],
dok_MagRuch.mr_Cena AS [cena przyjęcia],
dok_MagRuch.mr_Data AS [data przyjęcia],
dok_MagRuch.mr_Pozostalo AS [stan],
dok_MagRuch.mr_Cena * dok_MagRuch.mr_Pozostalo AS [wartość],
(SELECT MAX(dok__Dokument.dok_DataWyst) FROM dok__Dokument, dok_Pozycja WHERE dok_Pozycja.ob_TowId = dok_MagRuch.mr_TowId AND dok__Dokument.dok_Id = dok_Pozycja.ob_DokMagId AND dok__Dokument.dok_MagId = dok_MagRuch.mr_MagId) AS [data ost.operacji]

FROM
dok_MagRuch
LEFT JOIN tw__Towar ON tw__Towar.tw_Id = dok_MagRuch.mr_TowId
LEFT JOIN sl_GrupaTw ON sl_GrupaTw.grt_Id = tw__Towar.tw_IdGrupa
LEFT JOIN sl_Magazyn ON dok_MagRuch.mr_MagId = sl_Magazyn.mag_Id

WHERE
dok_MagRuch.mr_MagId > 0 AND
dok_MagRuch.mr_Pozostalo > 0 AND
(getdate() - {I:Ilość dni dez dokumentu:365})>=
(SELECT MAX(dok__Dokument.dok_DataWyst) FROM dok__Dokument, dok_Pozycja WHERE dok_Pozycja.ob_TowId = dok_MagRuch.mr_TowId AND dok__Dokument.dok_Id = dok_Pozycja.ob_DokMagId AND dok__Dokument.dok_MagId = dok_MagRuch.mr_MagId) AND
(getdate() - {I:Ilość dni dez dokumentu:365})>=dok_MagRuch.mr_Data AND
sl_Magazyn.mag_Id = {DB: SELECT sl_Magazyn.mag_Id, sl_Magazyn.mag_Nazwa AS magazyn FROM sl_Magazyn ORDER BY magazyn:magazyn:3:"Mag.1 MATERIAŁY PODSTAWOWE"}

GROUP BY
sl_GrupaTw.grt_Nazwa,
tw__Towar.tw_Symbol,
dok_MagRuch.mr_TowId,
tw__Towar.tw_Nazwa,
dok_MagRuch.mr_Cena,
dok_MagRuch.mr_Data,
dok_MagRuch.mr_Pozostalo,
dok_MagRuch.mr_Cena * dok_MagRuch.mr_Pozostalo,
sl_Magazyn.mag_Nazwa,
dok_MagRuch.mr_MagId

Offline peter1031

  • Nowy użytkownik
  • *
  • Wiadomości: 16
  • Reputacja +0/-0
  • Wersja programu: 1.66 SP4
Odp: Zestawienie niechodów wg magazynu i dni bez ruchu
« Odpowiedź #1 dnia: Maj 11, 2020, 13:20:27 »
Chyba rozwiązałem problem. Zestawienie brało pod uwagę inwentaryzację.

Offline candy

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4876
  • Reputacja +172/-11
Odp: Zestawienie niechodów wg magazynu i dni bez ruchu
« Odpowiedź #2 dnia: Maj 11, 2020, 13:36:51 »
Nie chciało mi się analizować tego kodu, ale tak na pierwszy rzut oka to myślę że masz tam jeszcze trochę drobnych zgrzytów.
Np warunek dok_MagRuch.mr_MagId > 0W polu mr_MagId jest Id magazynu (zawsze > 0) albo NULL. Nie porównuje się NULLa z liczbami.

Inny problem: GETDATE() zwraca datę z godziną, a w Subiekcie wszystkie daty są zapisywane bez godzin.
Będą się źle liczyć dokumenty "na krawędzi".
Dla testów zrób sobie zestawienie dokumentów wystawionych dziś, a zobaczysz że wynik jest inny niż byś się spodziewał
SELECT * dok__Dokument.dok_DataWyst = GETDATE()
Nie pytaj co rząd może zrobić dla Ciebie. Spytaj czy mógłby tego nie robić.

Forum Użytkownikow Subiekt GT

Odp: Zestawienie niechodów wg magazynu i dni bez ruchu
« Odpowiedź #2 dnia: Maj 11, 2020, 13:36:51 »