Witam.
Borykam się z pewnym problemem wyciągnięcia dokumentów możliwych do zrealizowania. Chodzi o oprogramowanie Comarch Optima, ale to jakiegoś wielkiego znaczenia nie ma.
Są 3 tabele
TraNag
- lista dokumentów
TrN_TrNID | TrN_NumerPelny |
---|---|
123 | FA/1234/03/2019 |
TraElem
- lista pozycji na dokumentach
TrE_TrEID | TrE_TrNId | TrE_TwrId | TrE_TwrKod | TrE_Ilosc |
---|---|---|---|---|
12342 | 123 | 4 | Towar1 | 12 |
TwrIlosci
- lista ilości towarów
TwI_TwIId | TwI_TwrId | TwI_Data | TwI_Ilosc |
---|---|---|---|
25 | 4 | 2019-03-21 | 123 |
26 | 4 | 2019-03-22 | 156 |
Stany magazynowe towarów są brane na podstawie daty. Czyli jakbym chciał wystawiać dokument z dniem 2019-03-21
to stan jest 123, ale dla dokumentów z dnia 2019-03-22
stan już będzie o 33 szt. większy.
Potrzebuje wyciągnąć dokumenty, których stany na magazynie są >=
od ilości na dokumencie.
Zapytanie, które ja mam miesza mi gdzieś te stany i pokazuje dokumenty, które nie mają towarów na stanie.
select
TrN_TrNID,
TrN_NumerPelny
from CDN.TraNag
left join CDN.TraElem on TrN_TrNID = TrE_TrNId
where TrN_TypDokumentu = 308
and TrN_Bufor = 1
and (select top 1 TwI_Ilosc from CDN.TwrIlosci where convert(date, TwI_Data) <= convert(date, getdate()) and TwI_TwrId = TrE_TwrId) >= TrE_Ilosc
group by TrN_TrNID, TrN_NumerPelny, TrN_DataDok
order by TrN_DataDok desc
Oczywiście baza jest na SQL Server 2017 Express. System to Windows 10.