
/****** Object:  View [dbo].[ApiDevicesView]    Script Date: 13.09.2021 14:54:16 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


CREATE VIEW [dbo].[ApiDevicesView] as
 select 
u.ID Id, 
ISNULL(u.Towar,0) ItemId,
ISNULL(c.Id,0)  CustId,
ISNULL(c.Name,'') CustName,
ISNULL(l.Id,0) CustLocationId,
ISNULL(l.Name,'') CustLocationName,
 u.Nazwa Name,
ISNULL(m.Symbol,'') /*+' '+ ISNULL(kp1.DataKey,'')+' '+  ISNULL(kp2.DataKey,'')+ ' '+ ISNULL(kp3.DataKey,'') +' '+ ISNULL(kp4.DataKey,'') +' ' + ISNULL(kp5.DataKey,'')*/ Code,
 u.Identyfikator SerialNumber, '' SerialNumber2,
 ISNULL(u.Opis,'') Description,
  isnull(cast(RokProdukcji.DataKey AS INT)  , 0 ) ManufactureYear,
 CONVERT(varchar(10), adresy.AdresKodPocztowy) +' '+ adresy.AdresMiejscowosc+' '+ 
                      adresy.AdresUlica+' '+ adresy.AdresNrDomu +' '+ adresy.AdresNrLokalu Adress,
					   cast(0 as float)  geolat,cast(0 as float) AS geolong, 
u.DataSprzedazy inUseFrom,
ISNULL(CAST(Motogodziny.DataKey as int) ,0) Counters,
CURRENT_TIMESTAMP CountersDate,
u.PrzegladOkres InspectionFrequency  ,
u.DataSprzedazy InspectionDate,
cast ( 0 as decimal) Price, cast ( 0 as decimal) Price2,
cast( 0 as decimal) InventoryValue
,0 as Attachments
 ,'' WarrantyType, 0 WarrantyCounter, CURRENT_TIMESTAMP WarrantyDate,
 
--,*
-- pola trudne


ISNULL(m.Symbol,'') GroupName1, ISNULL(u.ModelUrz,0)  GroupId1, -- model urządzenia jest grupą
---ISNULL(g2Dict.Value,'') GroupName2,  ISNULL(g2Dict.Id,0)   GroupId2,  -- nowe używane
 '' GroupName2, CAST(0 as int)   GroupId2, 
'' GroupName3, CAST(0 as int)   GroupId3, -- nie używamy

-- Stan
 
 case when( u.Wypozyczane=1) then ISNULL(opef.ID,ISNULL(op.Operator,0)) else  ISNULL(op.Operator,0) end VendorId, 
 -- sprzedane wg kontrahenta - w wypożyczalni wg przypisania
 0 Product, -- nie używamy
 case when( u.Wypozyczane=1) then 23 else 24 end  Type, -- wypożyczalnia - supersnow, Sprzedane

 -- KATEGORIA
 --case when( u.Wypozyczane=1) then ISNULL(catDict.Id,0) else 0 end  Category -- przeznaczenie sprzedaż, wypożyczenie, testy dotyczy tylko tych w wypożyczalni
 -- case when([dbo].[ApiSnSeasonAge](isnull(cast(RokProdukcji.DataKey AS INT)  , 0 )) >=2) then 55 else 54 end Category
 0 Category
 
 

 ,0 as OfficeId, 0 RemindDaysBefore, 0 DepartamentId,
 0 ProducerId, 0 DocumentId, 0 LineId, CURRENT_TIMESTAMP NextInspectionDate, 0 NextInspectionTaskId
-- newused.Data, fgroup.Data
--, vendorGroup.Data, fgroup.Data,opef.Name
,ISNULL (States.Id,0 ) StateId,  ISNULL(States.Value,'') StateName
--StateTaskCat.Value
,ISNULL(StateTab.StateId,0) StateTabStateId , ISNULL(StateTaskCategory.Id,0) StateTaskCategory,
StateTab.TaskId StateTabTaskId
 from  dbo.Urzadzenia u 
 --JOIN dbo.Towary t ON u.Towar = t.ID
LEFT OUTER JOIN dbo.ModeleUrz m ON u.ModelUrz = m.ID
LEFT OUTER JOIN dbo.TypyUrzadzen typ ON u.TypUrzadzenia = typ.ID
--LEFT OUTER JOIN dbo.Opiekunowie op On op.Kontrahent = u.Kontrahent and op.Typ = 0 and op.Aktywny=1
LEFT OUTER JOIN dbo.ApiCustomers c ON u.Kontrahent = c.ErpId
LEFT OUTER JOIN dbo.ApiCustomerLocations l ON u.Lokalizacja = l.ErpId
LEFT OUTER JOIN dbo.Adresy  adresy 
ON ( 
(ISNULL(u.Lokalizacja,0)=0  AND adresy.Host = u.Kontrahent AND adresy.HostType = 'Kontrahenci' AND adresy.Typ = 1 )
OR 
(ISNULL(u.Lokalizacja,0)<>0  AND adresy.Host = l.ID AND adresy.HostType = 'Lokalizacje' AND adresy.Typ = 1 )
)
-- 


-- cechy
LEFT OUTER JOIN dbo.Features vendorGroup ON vendorGroup.ParentType='Urzadzenia' and vendorGroup.Name = 'Vendor' and vendorGroup.Lp=0 and vendorGroup.Parent = u.ID 
LEFT OUTER JOIN dbo.Operators opef ON opef.Name = vendorGroup.Data
LEFT OUTER JOIN dbo.Opiekunowie op On (op.Kontrahent = u.Kontrahent and op.Typ = 0 and op.Aktywny=1 and u.Kontrahent<>1)-- or u.Kontrahent=831

LEFT OUTER JOIN dbo.Features Motogodziny ON Motogodziny.ParentType='Urzadzenia' and Motogodziny.Name = 'MotoGodziny' and Motogodziny.Lp=0 and Motogodziny.Parent = u.ID 
LEFT OUTER JOIN dbo.Features RokProdukcji ON RokProdukcji.ParentType='Urzadzenia' and RokProdukcji.Name = 'RokProdukcji' and RokProdukcji.Lp=0 and RokProdukcji.Parent = u.ID 

--LEFT OUTER JOIN dbo.Features fgroup ON fgroup.ParentType='Urzadzenia' and fgroup.Name = 'Group' and fgroup.Lp=0 and fgroup.Parent = u.ID 
--LEFT OUTER JOIN dbo.ApiDictionaries catDict ON (case when([dbo].[ApiSnSeasonAge](isnull(cast(RokProdukcji.DataKey AS INT)  , 0 )) >=2) then 2 else 1 end )= catDict.ErpId and catDict.ParentDefId=230


--LEFT OUTER JOIN dbo.Features newused ON newused.ParentType='Urzadzenia' and newused.Name = 'NewUsed' and newused.Lp=0 and newused.Parent = u.ID 
--LEFT OUTER JOIN dbo.ApiDictionaries g2Dict ON g2Dict.Value = newused.Data and g2Dict.ParentDefId=212

-- NAJTRUDNIEJSZE Wyliczanie stanu armatki
LEFT OUTER JOIN 
( select l.DeviceId, MAX(l.StateId) StateId, MAX(l.TaskId) TaskId from dbo.ApiDeviceLines l
 where l.ReservationType>0 and l.ReservationFrom<= CURRENT_TIMESTAMP and l.ReservationTo >= CURRENT_TIMESTAMP
 GROUP BY l.DeviceId
 ) StateTab ON StateTab.DeviceId = u.ID

 -- stan tego zadania
 LEFT OUTER JOIN dbo.ApiCrmTasks StateTask ON StateTask.Id =StateTab.TaskId 
 --LEFT OUTER JOIN dbo.ApiDictionaries StateTaskStates ON  StateTaskStates.Id = StateTab.StateId
 LEFT OUTER JOIN dbo.ApiDictionaries StateTaskCategory ON  StateTaskCategory.Id = StateTask.CategoryId

 -- Stany zadan
 LEFT OUTER JOIN dbo.ApiDictionaries States ON  States.ParentDefId = 201
 and States.NumberValue = 
 case when( u.Wypozyczane=1) then 
   case  when(ISNULL(StateTab.StateId,0) = 0) 
     then 1 -- wolne
	 else case when(ISNULL(StateTab.StateId,0) = 2) 
	     then 2  -- rezeracja
	     else ISNULL( StateTaskCategory.NumberValue,0)
	   end
	end
	else
	10 -- sprzedne
	end
/*
select * from dbo.ApiDictionaries

update dbo.ApiDictionaries set Value='Sold'  where Id =13
*/



GO


