BEGIN
FOR
SELECT StorePosition_ID, StoreCard_ID, StoreBatch_ID, QUnit, SUM(Quantity) as Quantity FROM
(
-- Načteme aktuální stav
SELECT LSC.Parent_ID AS StorePosition_ID, LSC.StoreCard_ID, LSC.StoreBatch_ID, LSC.QUnit, LSC.Quantity FROM LogStoreContents LSC
WHERE
LSC.Parent_ID = :AStorePosition_ID
UNION ALL
-- Načteme sumu z pohybů realizovaných po zvoleném datu. U pohybů obrátíme znaménka.
SELECT LSD2.StorePosition_ID, LSD2.StoreCard_ID, LSD2.StoreBatch_ID, LSD2.QUnit,
SUM(LSD2.Quantity *
CASE
WHEN (LSD.DocumentType = '31') OR (LSD.DocumentType = '33' AND LSD2.MasterRow_ID IS NULL) THEN
-1
ELSE
1
END)
FROM
LogStoreDocuments LSD
JOIN LogStoreDocuments2 LSD2 ON LSD2.Parent_ID = LSD.ID
WHERE
(LSD.Executed = 'A') AND
(LSD.DocDate$DATE > :ADate OR ((LSD.DocDate$DATE = :ADate) AND (LSD2.OrderFlow > :AOrderFlow AND :AOrderFlow <> 0))) AND
LSD2.StorePosition_ID = :AStorePosition_ID
GROUP BY LSD2.StorePosition_ID, LSD2.StoreCard_ID, LSD2.StoreBatch_ID, LSD2.QUnit
) A
GROUP BY StorePosition_ID, StoreCard_ID, StoreBatch_ID, QUnit
HAVING SUM(Quantity) <> 0
INTO :StorePosition_ID, :StoreCard_ID, :StoreBatch_ID, :QUnit, :Quantity
DO
BEGIN
Suspend;
END
END;