Procedura-StoreQuantityByDate

Popis:
Zjistí stav skladové karty k zadanému datu.

Parametry:

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

Návratové hodnoty:

NázevPopisDatový typ
Store_IDChar(10)
StoreCard_IDChar(10)
QuantityNumeric(15, 6)

Tělo:

BEGIN
  FOR
    SELECT Store_ID, StoreCard_ID, SUM(Quantity) FROM 
    ( 
      -- Načteme aktuální stav
      SELECT SSC.Store_ID, SSC.StoreCard_ID, SSC.Quantity FROM StoreSubCards SSC
      WHERE 
        SSC.StoreCard_ID = :AStoreCard_ID AND
        SSC.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, 
        -SUM(SD2.Quantity * SD2.FlowSign)
      FROM
        StoreDocuments SD
        JOIN StoreDocuments2 SD2 ON SD2.Parent_ID = SD.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
    ) A
    GROUP BY Store_ID, StoreCard_ID
    HAVING SUM(Quantity) <> 0
    INTO :Store_ID, :StoreCard_ID, :Quantity 
  DO
  BEGIN
    SUSPEND;
  END
END;

Generated by ABRA Software a.s. 27.10.2021 16:34:18