

CREATE PROCEDURE [dbo].[ApiProdTechnLinesGetDocProc] 
@ObjectType int,
 @ObjectId int,
  @ItemId int,
-- @ProdTechId int,
 @ResObjectType int
as 
BEGIN

/*
declare @ObjectType int;
declare @ObjectId int;
declare @ItemId int;
declare @ProdTechId int;
declare @ResObjectType int;

set @ObjectType = 501; -- operacja
set @ObjectId = 742;
set @ResObjectType = 10;
set @ProdTechId = 520;
set @ItemId = 7;
*/

IF ( @ResObjectType = 40) 
BEGIN
IF @ObjectType = 501
BEGIN
select wl.Id ElementId, wl.ItemId,wl.ItemCode, wl.ItemName, wl.ErpId TechnLine, wd.NumberString,  wd.Direction , wl.UM, 
case when(wd.StateId=0) then wl.OrgQuantity else wl.Quantity end  Quantity,
wl.DocumentId ObjectId, @ResObjectType ObjectType 

 from dbo.ApiWmsDocLines wl 
 JOIN dbo.ApiWmsDocuments wd 
 ON wd.StateId<3 and  wl.DocumentId = wd.Id and wd.ObjectType = 501 and  wd.ObjectId = @ObjectId 
 and wl.ItemId =@ItemId;
END
ELSE IF (@ObjectType = 500)
BEGIN
select wl.Id ElementId, wl.ItemId,wl.ItemCode, wl.ItemName, wl.ErpId TechnLine, wd.NumberString,  wd.Direction , wl.UM, 
case when(wd.StateId=0) then wl.OrgQuantity else wl.Quantity end  Quantity,
wl.DocumentId ObjectId, @ResObjectType ObjectType 
from dbo.ApiWmsDocLines wl 
 JOIN dbo.ApiWmsDocuments wd 
 ON wd.StateId<3 and  wl.DocumentId = wd.Id and 
 (
 (wd.ObjectType = 501 and  wd.ObjectId = @ObjectId)
 OR
 (
 (wd.ObjectType = 500 and wd.ObjectId = @ObjectId)
 OR
 (wd.ObjectType = 501 and wd.ObjectId in  (select ID from dbo.Operacje where Technologia = @ObjectId ))
 )
 )
 and wl.ItemId =@ItemId;

END
END
ELSE IF (@ResObjectType = 10) 
BEGIN

IF ( @ObjectType = 501)
BEGIN
select
poz.Id ElementId, poz.Towar ItemId ,'' ItemCode,  poz.Nazwa ItemName, pt.Id TechnLine, dok.NumerPelny,
 dok.KierunekMagazynu  Direction ,  poz.IloscSymbol  UM, 
cast(poz.IloscValue as decimal(16,4))  Quantity,
poz.Dokument ObjectId, @ResObjectType ObjectType 
from dbo.PozycjeDokHan poz JOIN dbo.DokHandlowe dok on dok.ID = poz.Dokument and dok.Definicja in ( 92,93)
JOIN dbo.PozRelHandlowej prh ON prh.PodrzednyDok = dok.ID and prh.PodrzednaIdent = poz.Ident
JOIN dbo.PozycjeTechn pt ON prh.ProdukcjaInfoIdentyfikatorElementuPowiazanego = pt.Guid
where pt.Operacja = @ObjectId and poz.IloscValue>0
-- doajemy te które nie są w żadnej relacji
UNION ALL
select 
poz.Id ElementId, poz.Towar ItemId ,'' ItemCode,  poz.Nazwa ItemName,0  TechnLine, dok.NumerPelny,
 dok.KierunekMagazynu  Direction ,  poz.IloscSymbol  UM, 
cast(poz.IloscValue as decimal(16,4))  Quantity,
poz.Dokument ObjectId, @ResObjectType ObjectType 
 from dbo.PozycjeDokHan poz JOIN dbo.DokHandlowe dok on dok.ID = poz.Dokument and dok.Definicja in ( 92,93)
JOIN dbo.Features f ON f.Name='Operacja' and f.ParentType ='DokHandlowe' and f.lp=0 and f.Parent = dok.ID and f.Data = @ObjectId
-- nie są w żadnej relacji produkcyjnej na pozycjach)
where NOT EXISTS ( select * from dbo.PozRelHandlowej prh 
		JOIN  dbo.PozycjeTechn pt ON prh.ProdukcjaInfoIdentyfikatorElementuPowiazanego = pt.Guid 
		where prh.PodrzednyDok = dok.ID and prh.PodrzednaIdent = poz.Ident )
		and poz.IloscValue>0
END
ELSE IF ( @ObjectType = 500)
BEGIN
select 
 poz.Id ElementId, poz.Towar ItemId ,'' ItemCode,  poz.Nazwa ItemName, pt.Id TechnLine, dok.NumerPelny,
 dok.KierunekMagazynu  Direction ,  poz.IloscSymbol  UM, 
cast(poz.IloscValue as decimal(16,4))  Quantity,
poz.Dokument ObjectId, @ResObjectType ObjectType 
from dbo.PozycjeDokHan poz JOIN dbo.DokHandlowe dok on dok.ID = poz.Dokument and dok.Definicja in ( 92,93)
JOIN dbo.PozRelHandlowej prh ON prh.PodrzednyDok = dok.ID and prh.PodrzednaIdent = poz.Ident
JOIN dbo.PozycjeTechn pt ON prh.ProdukcjaInfoIdentyfikatorElementuPowiazanego = pt.Guid
where pt.Technologia = @ObjectId and poz.IloscValue>0

UNION ALL
select
poz.Id ElementId, poz.Towar ItemId ,'' ItemCode,  poz.Nazwa ItemName, 0 TechnLine, dok.NumerPelny,
 dok.KierunekMagazynu  Direction ,  poz.IloscSymbol  UM, 
cast(poz.IloscValue as decimal(16,4))  Quantity,
poz.Dokument ObjectId, @ResObjectType ObjectType    
from dbo.PozycjeDokHan poz JOIN dbo.DokHandlowe dok on dok.ID = poz.Dokument and dok.Definicja in ( 92,93)
-- są w relacji ze zleceniem
JOIN dbo.RelacjeHandlowe rh ON rh.Podrzedny = dok.ID 
JOIN dbo.DokHandlowe zlec ON zlec.ID = rh.Nadrzedny 
JOIN dbo.Technologie techn ON techn.Zlecenie = zlec.ID and techn.ID = @ObjectId
-- nie są w żadnej relacji produkcyjnej na pozycjach)
where NOT EXISTS ( select * from dbo.PozRelHandlowej prh 
		JOIN  dbo.PozycjeTechn pt ON prh.ProdukcjaInfoIdentyfikatorElementuPowiazanego = pt.Guid 
		where prh.PodrzednyDok = dok.ID and prh.PodrzednaIdent = poz.Ident )
		and poz.IloscValue>0


END
END


END
