Procedura-StoreBatchesQuantityByDate

Popis:
Zjistí stav na šaržích k zadanému datu.

Parametry:

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

Návratové hodnoty:

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

Tělo:

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;

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