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