Třídová akce

Popis:
Vrátí, zda-li je zadaná firma schválena pro zadanou skladovou kartu. Vstup: StoreCard_ID - Identifikátor skladové karty Firm_ID - Identifikátor firmy FromDate - Datum pro omezení doposud neschvalovaných oblastí Výstup: 1 - firma je schválena jinak firma není schválena
Kód:
7
Tělo:
SELECT 1 -- Schválení dodavatelé
FROM Firms F
JOIN ApprovedSuppliers S ON S.Firm_ID = F.ID
WHERE 
  -- Hledám v nepředchůdcích
  F.Firm_ID IS NULL AND
  -- Omezím si za nadřízenou firmu
  F.ID IN (SELECT COALESCE(FS.Firm_ID, FS.ID) AS Firm_ID FROM Firms FS WHERE FS.ID = :Firm_ID) AND
  S.IsApproved = 'A' AND
  S.ApprovingArea_ID IN 
  (
    SELECT AA.ID AS AA_ID
    FROM ApprovingAreas AA
    WHERE
      -- Všechny skladové karty
      AA.TypeDefinition = 0 AND
      AA.ApprovalFromDate <= :FromDate AND AA.ApprovalFromDate <> 0
    
    UNION
    
    SELECT AA.ID AS AA_ID
    FROM ApprovingAreaStoreCards AASC 
    JOIN ApprovingAreas AA ON AA.ID = AASC.Parent_ID
    WHERE
      AASC.StoreCard_ID = :StoreCard_ID AND
      -- Vybrané skladové karty 
      AA.TypeDefinition = 1 AND
      AA.ApprovalFromDate <= :FromDate AND AA.ApprovalFromDate <> 0
    
    UNION
    
    SELECT AA.ID AS AA_ID
    FROM StoreCardMenuItemLinks SCMIL
    JOIN ApprovingAreaStoreMenus AASM ON AASM.StoreMenuItem_ID = SCMIL.StoreMenuItem_ID
    JOIN ApprovingAreas AA ON AA.ID = AASM.Parent_ID
    WHERE
      SCMIL.StoreCard_ID = :StoreCard_ID AND
      --  Vybrané skladová menu 
      AA.TypeDefinition = 2 AND
      AA.ApprovalFromDate <= :FromDate AND AA.ApprovalFromDate <> 0  
  )
UNION
SELECT 1 -- Schválení dodavatelé ze schválených předků
FROM Firms F
JOIN Firms F2 ON F2.Firm_ID = F.ID
JOIN ApprovedSuppliers S2 ON F2.ID = S2.Firm_ID
WHERE 
  -- Hledám v nepředchůdcích
  F.Firm_ID IS NULL AND
  F.ID IN (SELECT COALESCE(FS.Firm_ID, FS.ID) AS Firm_ID FROM Firms FS WHERE FS.ID = :Firm_ID) AND
  NOT EXISTS (SELECT ID FROM ApprovedSuppliers S WHERE S.Firm_ID = F.ID AND S.ApprovingArea_ID = S2.ApprovingArea_ID) AND
  S2.ApprovingArea_ID IN 
  (
    SELECT AA.ID AS AA_ID
    FROM ApprovingAreas AA
    WHERE
      -- Všechny skladové karty
      AA.TypeDefinition = 0 AND
      AA.ApprovalFromDate <= :FromDate AND AA.ApprovalFromDate <> 0
    
    UNION
    
    SELECT AA.ID AS AA_ID
    FROM ApprovingAreaStoreCards AASC 
    JOIN ApprovingAreas AA ON AA.ID = AASC.Parent_ID
    WHERE
      AASC.StoreCard_ID = :StoreCard_ID AND
      -- Vybrané skladové karty 
      AA.TypeDefinition = 1 AND
      AA.ApprovalFromDate <= :FromDate AND AA.ApprovalFromDate <> 0
    
    UNION
    
    SELECT AA.ID AS AA_ID
    FROM StoreCardMenuItemLinks SCMIL
    JOIN ApprovingAreaStoreMenus AASM ON AASM.StoreMenuItem_ID = SCMIL.StoreMenuItem_ID
    JOIN ApprovingAreas AA ON AA.ID = AASM.Parent_ID
    WHERE
      SCMIL.StoreCard_ID = :StoreCard_ID AND
      --  Vybrané skladová menu 
      AA.TypeDefinition = 2 AND
      AA.ApprovalFromDate <= :FromDate AND AA.ApprovalFromDate <> 0  
  )
GROUP BY F.ID
HAVING 
  -- Musí být všichni předchůdci schváleni
SUM(CASE WHEN S2.IsApproved = 'A' THEN 1 ELSE 0 END) > 0 AND 
SUM(CASE WHEN S2.IsApproved = 'N' THEN 1 ELSE 0 END) = 0 

Generated by ABRA Software a.s. 27.10.2021 16:35:29