Autor Wątek: Sprawdzenie kodu - Aktualizacja Stanów  (Przeczytany 2414 razy)

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

Offline Lucus

  • Nowy użytkownik
  • *
  • Wiadomości: 48
  • Reputacja +0/-0
  • Wersja programu: Subiekt Gt 1.70
Sprawdzenie kodu - Aktualizacja Stanów
« dnia: Marzec 03, 2022, 15:10:27 »
Hej,

Potrzebowałem napisać zestawienie, którym z automatu aktualizowałbym stany minimalne towarów z możliwością wyboru:
- Ile miesięcy wstecz brać pod uwagę
- Wybór grup towarów
- Wybór cech towarów

Wszystko działa dobrze. Wstawiam w ramach edukacyjnych licząc na krytykę i sugestie co można by poprawić i co niepotrzebnie robię (a jednocześnie może komuś się takie zestawienie przyda)
SELECT 1


UPDATE tw__towar

SET tw__towar.tw_StanMin = (SELECT T_StanMin.StanMin
    FROM(
        SELECT T_T1.tw_Id,
            CASE WHEN (
                CASE WHEN DATEDIFF(MONTH, pwd_Data01, GETDATE()) < {I:Ile miesięcy wstecz}
                    THEN CEILING(SUM(T1.ob_IloscMag)/DATEDIFF(MONTH, pwd_Data01, GETDATE()))
                    ELSE CEILING(SUM(T1.ob_IloscMag)/{I:Ile miesięcy wstecz})
                END) IS NULL
            THEN 0
            ELSE (
                CASE WHEN DATEDIFF(MONTH, pwd_Data01, GETDATE()) < {I:Ile miesięcy wstecz}
                    THEN CEILING(SUM(T1.ob_IloscMag)/DATEDIFF(MONTH, pwd_Data01, GETDATE()))
                    ELSE CEILING(SUM(T1.ob_IloscMag)/{I:Ile miesięcy wstecz})
                END)
            END AS StanMin

        FROM tw__Towar AS T_T1


        LEFT JOIN pw_Dane ON pwd_IdObiektu = tw_Id
        LEFT JOIN
            (
            SELECT D_P1.ob_TowId, D_P1.ob_IloscMag
            FROM dok_Pozycja AS D_P1

            INNER JOIN dok__dokument AS D_D1 ON D_D1.dok_Id = D_P1.ob_DokHanId
           
            WHERE
                D_D1.dok_DataMag BETWEEN DATEADD(MONTH, -{I:Ile miesięcy wstecz},GETDATE()) AND GETDATE()
            AND
                (D_D1.dok_Typ in (2, 21 ) AND NOT D_D1.dok_podtyp IN (1))
            ) AS T1 ON T1.ob_TowId = tw_Id



        WHERE
            pwd_Data01 IS NOT NULL



        GROUP BY T_T1.tw_Id, pwd_Data01) AS T_StanMin



    WHERE tw__Towar.tw_Id = T_StanMin.tw_Id)

WHERE
tw__Towar.tw_id IN (
    SELECT K.tw_Id
    FROM tw__Towar AS K
    LEFT JOIN tw_Stan ON st_TowId = tw_id
    LEFT JOIN tw_CechaTw ON cht_IdTowar = tw_id
    WHERE
        tw_IdGrupa IN ({CHL_DB: SELECT grt_id,  grt_Nazwa FROM sl_grupatw ORDER BY grt_nazwa:Grupa})
    AND
        cht_IdCecha IN ({CHL_DB: SELECT ctw_Id, ctw_Nazwa as name FROM sl_CechaTw ORDER BY name:Cecha})
    AND
        st_MagId = 1
    AND
        tw_Zablokowany = 0
     )

Forum Użytkownikow Subiekt GT

Sprawdzenie kodu - Aktualizacja Stanów
« dnia: Marzec 03, 2022, 15:10:27 »