Описание
(Нет описания для триггера RouteSCh_InsertSQ)
Определение
CREATE TRIGGER "RouteSCh_InsertSQ" FOR ROUTESILAGECHEMA
ACTIVE AFTER INSERT POSITION 0
AS
declare variable itClassID Integer;
declare variable OldPersentWeight Integer;
declare variable newSilageQualityID Integer;
declare variable oldSQID Integer;
declare variable itNet Integer;
declare variable partNet Integer;
declare variable oldInventoryID Integer;
declare variable tInventoryID Integer;
begin
select it.inventoryid from it where it.routeid = new.routechemaid into :tInventoryID;
if (:tInventoryID > 0) then
for
select
IT.net,
Quality.ClassID,
routesilagechema.percentweight,
SilagePacks.silagequalityid,
it.inventoryid
from IT
join Quality on (IT.samplerqualityid = Quality.qualityid)
join routesilagechema on (IT.routeid = routesilagechema.routechemaid
and routesilagechema.silageid = new.silageid)
join Silage on (new.silageid = Silage.silageid)
join silagepacks on (SilagePacks.silagepackid = Silage.silagepackid)
where IT.inventoryid = :tInventoryID
and IT.state <> -1
and IT.operationid = 5
group by
IT.net,
Quality.ClassID,
routesilagechema.percentweight,
SilagePacks.silagequalityid,
it.inventoryid
into :itNet,
:itclassid,
:oldpersentweight,
:newSilageQualityID,
:oldInventoryID
do begin
partNet = cast( cast(:itNet * :oldpersentweight as numeric (15,2))/ 100 as integer);
update silage
set silage.weight = silage.weight - :partNet,
silage.inventoryid = :oldInventoryID
where silage.silageid = new.SilageID and silage.weight is not null;
select
SilageQuality.QualityID
from SilageQuality
join Quality on (SilageQuality.QualityID = Quality.QualityID)
where SilageQuality.silagequalityid = :newSilageQualityID
and Quality.ClassID = :itClassID
into :oldSQID;
update silagequality set weight = weight - :partNet
where silagequality.silagequalityid = :newSilageQualityID
and silagequality.qualityid = :oldSQID;
end
end