Autor Wątek: Zestawienie - jakość zapasów magazynowych  (Przeczytany 1688 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 - jakość zapasów magazynowych
« dnia: Czerwiec 23, 2021, 12:01:06 »
Witam, piszę zestawienie które przedstawi "jakość magazynu". Zestawienie ma pokazać towary magazynowane powyżej 6 i 12 miesięcy. Napisałem kod i prosiłbym aby ktoś rzucił fachowym okiem czy takim kodem osiągnę zakładany cel. Chciałbym też dowiedzieć się jak w prosty sposób można sprawdzić czy takie zestawienie działa poprawnie.

Poniżej zamieszczam kod z wersji powyżej 12m-cy.

Z góry dziękuje za podpowiedzi.

SELECT

t.tw_Symbol AS [Symbol],
t.tw_Nazwa AS [Nazwa towaru],
r.mr_Data AS [Data przyjęcia],
r.mr_SeriaId AS [Id dostawy],
r.mr_Ilosc AS [Przyjęto],
r.mr_Pozostalo AS [Pozostało],
r.mr_Cena * r.mr_Pozostalo AS [Wartość],
m.mag_Nazwa AS [Magazyn]

FROM

dok_MagRuch r
LEFT JOIN tw__Towar t ON t.tw_Id = r.mr_TowId
LEFT JOIN sl_Magazyn m ON m.mag_Id = r.mr_MagId

WHERE

r.mr_MagId IS NOT NULL AND
r.mr_MagId IN ({CHL_DB:select -1, '(dowolny)' union all SELECT mag_Id, mag_Symbol FROM sl_Magazyn WHERE mag_status =1 order by 2:magazyn:(null):(nie wybrano)}) AND
r.mr_Pozostalo > 0 AND
r.mr_Data <= (SELECT DATEADD(dd, -365,{D:Data:}))

Offline Paweł Szczygiel

  • Aktywny użytkownik
  • ***
  • Wiadomości: 169
  • Reputacja +4/-0
Odp: Zestawienie - jakość zapasów magazynowych
« Odpowiedź #1 dnia: Czerwiec 23, 2021, 14:29:41 »
Proponuje uruchomić profilera i podsłuchać zestawienie remanent..
Paweł Szczygieł

Offline peter1031

  • Nowy użytkownik
  • *
  • Wiadomości: 16
  • Reputacja +0/-0
  • Wersja programu: 1.66 SP4
Odp: Zestawienie - jakość zapasów magazynowych
« Odpowiedź #2 dnia: Czerwiec 23, 2021, 14:50:38 »
Proponuje uruchomić profilera i podsłuchać zestawienie remanent..

Mam już to zestawienie podsłuchane i przerobione.

Offline peter1031

  • Nowy użytkownik
  • *
  • Wiadomości: 16
  • Reputacja +0/-0
  • Wersja programu: 1.66 SP4
Odp: Zestawienie - jakość zapasów magazynowych
« Odpowiedź #3 dnia: Czerwiec 29, 2021, 13:23:47 »
Przerabiam kod remanentu z rozbiciem na dostawy i chciałbym wyciągnąć numer dokumentu i datę ostatniego wydania. Próbuję od dłuższego czasu i coś mi nie wychodzi.

select
 
 t.tw_id,
 t.tw_symbol AS [Symbol],
 t.tw_nazwa AS [Nazwa towaru],
 t.tw_JednMiary AS [jm],
 (SELECT dok_MagRuch.mr_data FROM dok_MagRuch WHERE dok_MagRuch.mr_SeriaId = A.mr_SeriaId AND dok_MagRuch.mr_DoId IS NULL) AS [Data PZ/PW],
 max(a.mr_data) AS [Data wejścia na mag],
 (SELECT m.mag_Nazwa FROM sl_Magazyn m WHERE m.mag_Id = A.mr_magid) AS [Magazyn],
 (SELECT d.dok_NrPelny FROM dok__Dokument d, dok_Pozycja p WHERE p.ob_TowId = A.mr_TowId AND d.dok_Id = p.ob_DokMagId AND d.dok_Typ IN (9,10,12) AND p.ob_Id = A.mr_PozId) AS [Dokument przyjęcia],
 A.mr_ilosc AS [Przyjęto],
 A.mr_SeriaId,
 A.mr_PozId,
 A.mr_Id,
 sum(A.mr_ilosc-isnull(R.mr_ilosc,0))  AS [Pozostalo], 

 (SELECT MAX (r.mr_Data) FROM dok_MagRuch r WHERE r.mr_DoId = A.mr_SeriaId) AS [Data ost. wydania],
 
 (SELECT TOP 1 d.dok_NrPelny FROM dok__Dokument d, dok_Pozycja p, dok_MagRuch r WHERE d.dok_Id = p.ob_DokMagId AND p.ob_Id = r.mr_PozId AND r.mr_DoId = A.mr_SeriaId AND d.dok_Typ IN (9,11,13) ORDER BY r.mr_PozId DESC) AS [Dokument wydania],
 
 W.mw_cena AS [Cena jednostkowa], 
 sum(dbo.fnInsMul( (A.mr_ilosc-isnull(R.mr_ilosc,0))  , W.mw_cena, 2 ))  AS [Wartość]   
 
 from dok_magruch A
 inner join tw__towar T on A.mr_TowId = T.tw_Id 
 inner join vwDokMagWart W on A.mr_SeriaId = W.mw_SeriaId 
 left join ((select isnull( sum( C.mr_ilosc ), 0 ) mr_ilosc, C.mr_doId from dok_magruch C where C.mr_data<=(SELECT DATEADD(dd, 0,{D:Data:})) group by C.mr_doId)) R on R.mr_DoId = A.mr_id 
 left join (select mr_SeriaId, max(ob_NumerSeryjny) AS ob_NumerSeryjny, max(ob_Termin) AS ob_Termin, max(ob_Opis) AS ob_Opis from dok_Pozycja left join dok_MagRuch on mr_PozId = ob_Id  where mr_DoId IS NULL group by mr_SeriaId) P on P.mr_SeriaId = A.mr_SeriaId 
 
 where W.mw_pozid in (SELECT TOP 1 T.mw_pozid  FROM vwDokMagWart T  WHERE T.mw_SeriaId = W.mw_seriaid and T.mw_data<= (SELECT DATEADD(dd, CASE ({LI:Pow 6 m-cy#1#Pow 12 m-cy#2#Wybrana data#3#:Wybór okresu:1}) WHEN  1 THEN -182 WHEN  2 THEN -365 WHEN 3 THEN 0 END,{D:Data:})) 
 
 ORDER BY mw_data DESC, mw_pozid DESC) and  A.mr_magid in(3, 5, 18)
 
 and A.mr_data<= (SELECT DATEADD(dd, CASE ({LI:Pow 6 m-cy#1#Pow 12 m-cy#2#Wybrana data#3#:Wybór okresu:1}) WHEN  1 THEN -182 WHEN  2 THEN -365 WHEN 3 THEN 0 END,{D:Data:})) and  A.mr_ilosc > isnull(R.mr_ilosc,0) 
 
 group by t.tw_id, t.tw_symbol, t.tw_nazwa, t.tw_JednMiary, A.mr_DoId, A.mr_ilosc, W.mw_cena, A.mr_TowId, A.mr_MagId, A.mr_PozId, A.mr_SeriaId, A.mr_Id

Forum Użytkownikow Subiekt GT

Odp: Zestawienie - jakość zapasów magazynowych
« Odpowiedź #3 dnia: Czerwiec 29, 2021, 13:23:47 »