stan magazynu z mmp

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

Awatar użytkownika
wacek
Posty: 714
Rejestracja: 27 paź 2008, 18:04
Rola: Administrator CDN XL
Lokalizacja: Łódzkie

Re: stan magazynu z mmp

Post autor: wacek »

elmiq pisze:Ja tylko dodam, że coś takiego będzie Ci działać tylko jeśli dla danej dostawy masz 1 dokument MMP. Załóżmy, że masz dostawę na 1000kg na MAG01 (np. dokument PW). Robisz przesunięcie 200kg na MAG02 dokumentem MMW -> MMP1. Następnie robisz przesunięcie 200kg na MAG02 dokumentem MMW - MMP2. W efekcie system końcowym w TwrZasoby będzie jeden wpis na 400kg, ponieważ to ta sama dostawa.
Chyba będzie działać i przy wielu MMP. Dodane zapytanie zwraca numer MMP, ilość przyjętą na magazyn numer 1 dla danej pozycji (zasobu) z raportu głównego. Będzie przez to wiele rekordów (tyle co było MMP z danego zasobu). Nie jestem pewien czy o to chodzi autorowi postu.

Jeżeli mają być ilości tylko z MMP to powinien wystarczyć taki prosty select:

Kod: Zaznacz cały

SELECT
 CDN.NumerDokumentuTRN(TrN_GIDTyp,TrN_SpiTyp,TrN_TrnTyp,TrN_TrnNumer,TrN_TrnRok,TrN_TrnSeria) AS [MMP]
 ,CDN.TsToDate(TrN_Data2,0) AS [Data MMP]
 ,SUM(TrS_Ilosc) AS [Ilość MMP]
 ,Twr_Kod AS [Kod]
 ,(SELECT SUM(A.TwZ_IlMag) FROM CDN.TwrZasoby A WHERE A.TwZ_TwrTyp=Twr_GIDTyp AND A.TwZ_TwrNumer=Twr_GIDNumer AND A.TwZ_MagNumer=1) AS [Ilość MAG] 
FROM CDN.TraNag
JOIN CDN.TraElem ON TrE_GIDTyp=TrN_GIDTyp AND TrE_GIDNumer=TrN_GIDNumer
JOIN CDN.TraSElem ON TrS_GIDTyp=TrE_GIDTyp AND TrS_GIDNumer=TrE_GIDNumer AND TrS_GIDLp=TrE_GIDLp
JOIN CDN.Dostawy ON Dst_GIDTyp=TrS_DstTyp AND Dst_GIDNumer=TrS_DstNumer
JOIN CDN.TwrZasoby ON TwZ_DstTyp=Dst_GIDTyp AND TwZ_DstNumer=Dst_GIDNumer
JOIN CDN.TwrKarty ON Twr_GIDtyp=TwZ_TwrTyp AND Twr_GIDNumer=TwZ_TwrNumer
WHERE TrN_GIDTyp=1604 AND TrN_MagDNumer=1 AND TwZ_MagNumer=1
GROUP BY TrN_GIDTyp,TrN_SpiTyp,TrN_TrnTyp,TrN_TrnNumer,TrN_TrnRok,TrN_TrnSeria,TrN_Data2,Twr_Kod,Twr_GIDTyp,Twr_GIDNumer
Pozdrawiam,
Robert

select convert(varchar(100),0x637a6173616d69207069737aea2074752067b375706f7479203a29)

elmiq
Posty: 1025
Rejestracja: 23 sie 2010, 10:04
Rola: Administrator CDN XL
Lokalizacja: Warszawa

Re: stan magazynu z mmp

Post autor: elmiq »

Zdarzają się sytuację w których nie będzie można określić które MMP rzeczywiście przyjęło towar znajdujący się na magazynie, chyba że mamy 100% pewność stosowania FIFO - wtedy możemy obliczyć czy wcześniejsze dokumenty MMP powinny się pojawić w zestawieniu, a jeśli tak to z jaką ilością. Może być tak, że na zasobie mamy 200kg, a z powiedzmy 3 dokumentów MMP uzbieramy 300kg - wtedy, w teorii, ten pierwszy nie powinien być uwzględniony. Ale takie kombinowanie zależy już od autora i tego co chce uzyskać :)

Pozdrawiam,
Mateusz
Mateusz Świerkosz

http://elmiq.blogspot.com/

max
Posty: 167
Rejestracja: 23 cze 2010, 12:17
Rola: Administrator CDN XL

Re: stan magazynu z mmp

Post autor: max »

wydaje mi się ze select będzie OK. Dam jeszcze znać tylko sobie go przeanalizuje na spokojnie. thx Wacek ;) zauważyłem tylko że jeżeli na MMP dostawa składa się z dwóch PZ to pobiera tylko tą ostatnią (np. 10 szt - 7 z PZ1 + 3 z PZ2 pokazuje tylko te 3 ) ale to chyba nie zrobi mi większego problemu ;)

ewentualnie czy można by wy filtrować aby pokazał tylko ostatni dokument mmp ?

Awatar użytkownika
wacek
Posty: 714
Rejestracja: 27 paź 2008, 18:04
Rola: Administrator CDN XL
Lokalizacja: Łódzkie

Re: stan magazynu z mmp

Post autor: wacek »

max pisze:zauważyłem tylko że jeżeli na MMP dostawa składa się z dwóch PZ to pobiera tylko tą ostatnią (np. 10 szt - 7 z PZ1 + 3 z PZ2 pokazuje tylko te 3 )
Pewnie zasobów z tej dostawy już nie ma. Zobacz dla tego towaru czy w jego kartotece na zakładce zasoby masz linie z tej dostawy.
Pozdrawiam,
Robert

select convert(varchar(100),0x637a6173616d69207069737aea2074752067b375706f7479203a29)

vigo
Posty: 156
Rejestracja: 25 maja 2010, 10:09
Rola: Administrator CDN XL
Wersja: 2023
Lokalizacja: Olsztyn

Re: stan magazynu z mmp

Post autor: vigo »

Dla tych co szukają rozwiązania, poniżej skrypt który pokazuje zasób ilość i datę oraz MMP na dany sklep z którego został przyjęty towar. Na 98% działa poprawnie:

Kod: Zaznacz cały

with CTE_MMPZasoby as
(
SELECT 
			TrE_Ilosc as IloscMMP
			,CDN.NumerDokumentuTRN(TrN_GIDTyp,TrN_SpiTyp,TrN_TrnTyp,TrN_TrnNumer,TrN_TrnRok,TrN_TrnSeria) as MMP
			,CDN.TSToDate(TrN_Data3,0)  as DataMMP
			,TwZ_DstTyp
			,TwZ_DstNumer
			,TrN_MagDNumer
			,TwZ_MagNumer
		FROM
			CDN.TraNag
			JOIN CDN.TraElem ON TrE_GIDTyp=TrN_GIDTyp AND TrE_GIDNumer=TrN_GIDNumer
			JOIN CDN.TraSElem ON TrS_GIDTyp=TrE_GIDTyp AND TrS_GIDNumer=TrE_GIDNumer AND TrS_GIDLp=TrE_GIDLp
			JOIN CDN.Dostawy ON Dst_GIDTyp=TrS_DstTyp AND Dst_GIDNumer=TrS_DstNumer
			JOIN CDN.TwrZasoby ON TwZ_DstTyp=Dst_GIDTyp AND TwZ_DstNumer=Dst_GIDNumer
		where
		TrN_GIDTyp=1604 

)

SELECT
	TwZ_Ilosc as 'Zasób ilość'
	,CDN.NumerDokumentuTRN(TrN_GIDTyp,TrN_SpiTyp,TrN_TrnTyp,TrN_TrnNumer,TrN_TrnRok,TrN_TrnSeria) AS PZ
	,convert(date,DATEADD( ss, TwZ_DataP,CONVERT(DATETIME,'19900101',11))) as 'PZ Zasób data'
	,IloscMMP
	,MMP
	,DataMMP
from 
	CDN.TwrZasoby tz
	inner join cdn.Dostawy ds on tz.TwZ_DstNumer=ds.Dst_GIDNumer
	inner join cdn.TraNag tn on ds.Dst_TrnTyp=tn.TrN_GIDTyp and ds.Dst_TrnNumer=tn.TrN_GIDNumer
	inner join CDN.TwrKarty ON Twr_GIDtyp=TwZ_TwrTyp AND Twr_GIDNumer=TwZ_TwrNumer
	inner join CTE_MMPZasoby cte on cte.TwZ_DstTyp=tz.TwZ_DstTyp and cte.TwZ_DstNumer=tz.TwZ_DstNumer and  cte.TrN_MagDNumer=tz.TwZ_MagNumer AND cte.TwZ_MagNumer=tz.TwZ_MagNumer
			and TwZ_TwrNumer=tz.TwZ_TwrNumer
where
	tz.TwZ_Ilosc>0 and
	tz.TwZ_MagNumer=ID_MAGZYNU
	and Twr_Kod=KOD_TOWARU

ODPOWIEDZ