begin
For
Select
LSC.ID,
SP.ID Position_ID,
SP.Code Position_Code,
SP.Accessibility Position_Accessibility,
SP.Frozen Position_Frozen,
(LSC.Quantity - LSC.QuantityReserved) Quantity,
LSC.QUnit,
LSC.UnitRate,
/* LSC.Quantity i LSC.QuantityReserved jsou v jednotkach se vztahem jedna, tj. i nedelitelne mnozstvi jednotky musi byt prevedeno na jednotku se vztahem jedna */
SU.IndivisibleQuantity * SU.UnitRate,
(Case When SB.ID is null then LSC.DateOfStorage$DATE
Else SB.ExpirationDate$DATE end
) as CompareStorageDate$DATE,
SB.Name StoreBatch_Name,
SP.PositionType
from
LogStorePositionsForStrat_VIEW SP
join LogStoreContentsForStrat_VIEW LSC on LSC.Parent_ID = SP.ID
join StoreUnits SU on LSC.StoreCard_ID = SU.Parent_ID
left join StoreBatches SB on LSC.StoreBatch_ID = SB.ID
where
SP.Hidden = 'N' and
((SP.Accessibility < :AAccessibilityLimit) or (:AIsAccessibilityLimitFilter = 'N')) and
SP.Store_ID = :AStore_ID and
LSC.StoreCard_ID = :AStoreCard_ID and
(
(LSC.StoreBatch_ID = :AStoreBatch_ID) or
(:ASBatch_ID_Null = 'A')
) and
(SU.Code = LSC.QUnit) and
(:AQuantity >= Cast((SU.IndivisibleQuantity * SU.UnitRate) as Numeric(15,6))
) and
( ( (:ARespectIndivisibleQuantity = 'N') AND ((LSC.Quantity - LSC.QuantityReserved) > 0) ) OR
( (:ARespectIndivisibleQuantity = 'A') AND (SU.IndivisibleQuantity = 0) AND ((LSC.Quantity - LSC.QuantityReserved) > 0) ) OR
/* LSC.Quantity i LSC.QuantityReserved jsou v jednotkach se vztahem jedna, tj. i nedelitelne mnozstvi jednotky musi byt prevedeno na jednotku se vztahem jedna */
( (:ARespectIndivisibleQuantity = 'A') AND (SU.IndivisibleQuantity > 0) AND ((LSC.Quantity - LSC.QuantityReserved) >= SU.IndivisibleQuantity * SU.UnitRate) )
) and
(SP.ReservedForDoc_ID is Null) and
((SP.PositionType <> 2) or (:ANotDefectGoods = 'N'))
Into
:ID,
:Position_ID,
:Position_Code,
:Position_Accessibility,
:Position_Frozen,
:Quantity,
:QUnit,
:UnitRate,
:IndivisibleQuantity,
:CompareStorageDate$DATE,
:StoreBatch_Name,
:PositionType
do
suspend;
end;