

CREATE VIEW [dbo].[ApiProdOperationsAllBaseView] AS


SELECT ope.[ID] Id
      --, case when (ISNULL(poprz.Poprzedzajaca,0) <>0) then ISNULL(prev.ID,0) else -1 end PrevID
	  
	  
	  , case when ( ISNULL(poprz.Poprzedzajaca,0)<>0 and dok.[RealizacjaStan] not in (0,50)) then
		ISNULL((select SUM(Quantity) from dbo.ApiProdActivities where  Confirmed=1 and StateId in (30,50) and   OperationId= poprz.Poprzedzajaca ), cast ( 0 as decimal))
	  else
	  ISNULL(cast(poz.IloscValue as decimal), cast( 0 as decimal))
	  end ActivQuantity 
	  ,ISNULL(poprz.Poprzedzajaca,0) PrevID
	  ,ope.[Kod] Code
      ,ope.[Nazwa] Name
      ,cast(ope.[Opis]  as nvarchar) Description   
	  , ISNULL(techOrg.Id,0) OrgTechnologyId   
	  , ISNULL(tech.Id,0) TechnologyId   
      , dok.NumerPelny ProdDocNumber
	  
	  , dok.Id ProdDocId
	  , dok.[RealizacjaStan] ProdDocStateId 
	  , t.ID ProductId
	  , t.Kod ProductCode
	  , t.Nazwa ProductName
	  , ISNULL( ( select  top 1 ptt.ID from dbo.PozycjeTechn ptt where ptt.Technologia = tech.ID and ptt.Rodzaj = 1),0) ProductTechnLineId
	  , poz.IloscValue ProductQuantity
	  , poz.IloscSymbol ProductUM
	  -- Main
	  
	  , ISNULL(zlecNadrzedne.NumerPelny,'') MainProdDocNumber
	  , ISNULL(zlecNadrzedne.Id,0) MainProdDocId
	  , ISNULL(zlecNadrzedne.[RealizacjaStan],0) MainProdDocStateId 
	  , ISNULL(technNadrz.ID,0) MainTechnologyId
	  
	  
	  , ''  MainProductCode
	 
	  , ISNULL(pozNadrz.Nazwa,'') MainProductName
	  , ISNULL(pozNadrz.IloscValue,0) MainProductQuantity
	  , ISNULL(pozNadrz.IloscSymbol,'') MainProductUM
	  
	 
      , /*ISNULL(pan.ID,0)*/ 0  LastActivityId    
	   -- Wyciągamy na poziom wyżej
	   -- , case when (dok.[RealizacjaStan]<>0) then ISNULL(pan.StateId,10) else 0 end StateId
	   /*
	  , case  
	        when( ISNULL(pan.StateId,0) =0 ) 
	       then 
		      -- jeśi poprzednia zakończona lub nie istnieje to daj 10
				case when (ISNULL(prev.StateId,0)=50 OR ISNULL(poprz.Poprzedzajaca,0) =0)
				then 10
				else 0
				end
		    else 
			ISNULL(pan.StateId,0) end 
	    StateId
		*/

      -- , /*ISNULL(pan.OperatorId,0)*/ 0 OperatorId      
	  ,/*ISNULL(prev.StateId,0)*/0 PrevStateId
	  
	  , dok.Data Date
	  , dok.DostawaTermin DueDate
	  , cast( 0 as int) TimeSpend
	  , cast( 0 as int ) NormativeTime
	  
	   --, ISNULL(pan.SumQuant,0) SumQuantity
	  , ISNULL(ope.OperacjaWzor,0) ReferenceOpeId
	  -- , ISNULL(pan.TS, '2000-01-01') TS
	  ,  ISNULL(nastOperacja.Id,0) NextOperationId 
       ,ISNULL(nastOperacja.Nazwa,'') NextOperationName 
	   ,ISNULL(nastOperacja.OperacjaWzor,0) NextOperationRefId 
	   , ISNULL(knt.ID,0) CustId
	   ,ISNULL(knt.Kod,'') CustInfo
	   ,cast (ISNULL(grubosc.DataKey,'0') as decimal(16,4)) Size
	   ,ISNULL(blacha.DataKey,'') Material	   
	   , ope.ID ErpId
	   , cast ( t.MasaNettoValue as decimal) Weight
	   
  FROM [dbo].[Operacje] ope 
 
  JOIN 
  dbo.Technologie tech ON ope.Technologia = tech.ID
  LEFT OUTER JOIN dbo.Technologie techOrg ON tech.TechnologiaWzor = techOrg.ID
   JOIN dbo.DokHandlowe dok ON tech.Zlecenie = dok.ID  and dok.[RealizacjaStan]>0 and dok.RealizacjaStan<50 and dok.Stan <3
 LEFT OUTER JOIN dbo.OperacjePoprzed poprz ON poprz.Operacja = ope.ID
  LEFT OUTER JOIN dbo.OperacjePoprzed nast ON nast.Poprzedzajaca = ope.ID
  LEFT OUTER JOIN dbo.Operacje nastOperacja ON nastOperacja.ID = nast.Operacja
  --LEFT OUTER JOIN  dbo.ApiPP_Info pan ON ope.ID = pan.OperationId
  --LEFT OUTER JOIN  dbo.ApiPP_Info prev ON poprz.Poprzedzajaca = prev.OperationId 
  LEFT OUTER JOIN dbo.PozycjeDokHan poz ON poz.Id = [dbo].[ApiFirstPosition](dok.Id)
  LEFT OUTER JOIN dbo.Towary t ON poz.Towar = t.ID
  LEFT OUTER JOIN dbo.Kontrahenci knt ON knt.ID = dok.Kontrahent
  LEFT OUTER JOIN dbo.Features fzlecNadrz ON fzlecNadrz.ParentType='DokHandlowe' and fzlecNadrz.Name = 'ZlecenieNadrz' and fzlecNadrz.Parent = dok.Id
  LEFT OUTER JOIN dbo.DokHandlowe zlecNadrzedne ON fzlecNadrz.Data = zlecNadrzedne.Id
  LEFT OUTER JOIN dbo.PozycjeDokHan pozNadrz ON pozNadrz.Id = [dbo].[ApiFirstPosition](zlecNadrzedne.Id)
  LEFT OUTER JOIN dbo.Features grubosc ON grubosc.ParentType = 'Operacje' and grubosc.Name = 'Grubosc' and grubosc.Lp=0 and grubosc.Parent = ope.ID
  LEFT OUTER JOIN dbo.Features blacha ON blacha.ParentType = 'Towary' and blacha.Name = 'Blacha' and blacha.Lp=0 and blacha.Parent = t.ID
  LEFT OUTER  JOIN dbo.Technologie technNadrz ON technNadrz.Zlecenie = zlecNadrzedne.ID 
  
 
  UNION ALL
  -- to sa operacje klikane..
  SELECT -ope.Id [Id], ope.ActivQuantity,[PrevId], [Code],[Name],ope.[Description],[OrgTechnologyId],[TechnologyId],ope.[ProdDocNumber]
      
	  ,[ProdDocId], ProdDocStateId,ope.[ProductId],
	  ope.[ProductCode],ope.[ProductName],
	  	 ProductTechnLineId,
	  [ProductQuantity],[ProductUM]
      
	  ,[MainProdDocNumber],[MainProdDocId],0 MainProdDocStateId, MainTechnologyId,
	  
	  [MainProductCode]
	  ,[MainProductName]
	  ,[MainProductQuantity]
      
	  ,[MainProductUM]
	  , ISNULL(pan.ID,0) LastActivityId     
	  --, ISNULL(pan.StateId, ope.StateId) StateId	  
      --, ISNULL(pan.OperatorId,0) OperatorId     
	  /*
	  ,[LastActivityId],[StateId],[OperatorId]
	  */
      ,[PrevStateId], [Date],[DueDate] , 
	  [TimeSpend],[NormativeTime],
	  
      --[SumQuantity],
	  [ReferenceOpeId],
	  --ope.[TS],
      ope.[NextOperationId],ope.[NextOperationName],ope.[NextOperationRefId],ope.[CustId],ope.[CustInfo],ope.[Size], ope.Material  ,ope.[ErpId],
	  ope.Weight
	  
  FROM [dbo].[ApiProdOperations] ope
  LEFT OUTER JOIN  dbo.ApiPP_Info pan ON ope.ID = -pan.OperationId
   where ope.ErpId=0
  

  --select * from dbo.OperacjePoprzed

  
  /*
        Brak = 0,
        Planowana = 10,
        Rozpoczęta = 20,
        Wstrzymana = 30,
        Wznowiona = 40,
        Zakończona = 50,
        Wszystkie = 999
  */
GO


