BEGIN
FOR
SELECT Store_ID, StoreCard_ID, StoreBatch_ID, SUM(Quantity) FROM
(
-- Načteme aktuální stav
SELECT SSB.Store_ID, SB.StoreCard_ID, SSB.StoreBatch_ID, SSB.Quantity FROM StoreBatches SB
JOIN StoreSubBatches SSB ON SSB.StoreBatch_ID = SB.ID
WHERE
SB.StoreCard_ID = :AStoreCard_ID AND
SSB.Store_ID = :AStore_ID
UNION ALL
-- Načteme sumu z pohybů realizovaných po zvoleném datu. U pohybů obrátíme znaménka.
SELECT SD2.Store_ID, SD2.StoreCard_ID, DRB.StoreBatch_ID,
-SUM(DRB.Quantity * SD2.FlowSign)
FROM
StoreDocuments SD
JOIN StoreDocuments2 SD2 ON SD2.Parent_ID = SD.ID
JOIN DocRowBatches DRB ON DRB.Parent_ID = SD2.ID
JOIN PMStates PMS ON SD2.PMState_ID = PMS.ID
JOIN StoreCards SC ON SD2.StoreCard_ID = SC.ID
WHERE
(SD.DocDate$DATE > :ADate OR ((SD.DocDate$DATE = :ADate) AND (SD2.OrderFlow > :AOrderFlow AND :AOrderFlow <> 0))) AND
SD2.RowType = 3 AND
SD2.StoreCard_ID = :AStoreCard_ID AND
SD2.Store_ID = :AStore_ID AND
PMS.SystemState = 3 AND
SC.NonStockType = 'N'
GROUP BY SD2.Store_ID, SD2.StoreCard_ID, DRB.StoreBatch_ID
) A
GROUP BY Store_ID, StoreCard_ID, StoreBatch_ID
HAVING SUM(Quantity) <> 0
INTO :Store_ID, :StoreCard_ID, :StoreBatch_ID, :Quantity
DO
BEGIN
SUSPEND;
END
END;