Procedura-LogStoreQuantityByDate

Popis:
Zjistí stav na pozici k zadanému datu.

Parametry:

NázevPopisDatový typ
AStorePosition_IDChar(10)
ADateFloat(0, 0)
AOrderFlowInteger

Návratové hodnoty:

NázevPopisDatový typ
StorePosition_IDChar(10)
StoreCard_IDChar(10)
StoreBatch_IDChar(10)
QuantityNumeric(15, 6)
QUnitJednotka
Unit

Tělo:

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;

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