Входные параметры
Параметр | Тип | Описание |
---|---|---|
BEGINDATE |
DATE |
|
ENDDATE |
DATE |
|
OPERATIONID |
INTEGER |
|
Выходные параметры
Параметр | Тип | Описание |
---|---|---|
LABQUALITYID |
INTEGER |
|
LABNUMBER |
INTEGER |
|
TRANSPORTTYPEID |
INTEGER |
|
HARVESTYEAR |
INTEGER |
|
NEW_LABNUMBER |
INTEGER |
|
LABQUALITYNUMBER |
INTEGER |
|
GENERATORNAME |
VARCHAR(31) |
|
Описание
(Нет описания для процедуры RENUMBERING_LABQUALITY)
Определение
CREATE PROCEDURE RENUMBERING_LABQUALITY(
BEGINDATE DATE,
ENDDATE DATE,
OPERATIONID INTEGER)
RETURNS (
LABQUALITYID INTEGER,
LABNUMBER INTEGER,
TRANSPORTTYPEID INTEGER,
HARVESTYEAR INTEGER,
NEW_LABNUMBER INTEGER,
LABQUALITYNUMBER INTEGER,
GENERATORNAME VARCHAR(31))
AS
declare variable AOPERATIONID integer = -1;
declare variable ATRANSPORTSUBTYPE integer = -1;
declare variable AHARVESTINGYEAR integer = -1;
declare variable AUTONUMBERINGANALYSES integer;
declare variable REGDATE date;
declare variable HARVESTINGYEAR integer;
begin
NEW_LABNUMBER = 0;
select coalesce(ENVIRONMENTOPTIONS.AUTONUMBERINGANALYSES,0)
from ENVIRONMENTOPTIONS
into :AUTONUMBERINGANALYSES;
for
select PARTIES.HARVESTINGYEAR
from PARTIES
where (PARTIES.STATE = 1)
group by PARTIES.HARVESTINGYEAR
into :HARVESTINGYEAR
do begin
if (AUTONUMBERINGANALYSES > 1) then begin
if (bin_and(AUTONUMBERINGANALYSES,2) = 2) then
AOPERATIONID = :OPERATIONID;
if (bin_and(AUTONUMBERINGANALYSES,4) = 4) then
ATRANSPORTSUBTYPE = 0;
if (bin_and(AUTONUMBERINGANALYSES,8) = 8) then
AHARVESTINGYEAR = :HARVESTINGYEAR;
end
while ((ATRANSPORTSUBTYPE < 3) and (AHARVESTINGYEAR > -100)) do begin
for
select IT.REGDATE, IT.LABQUALITYID, QUALITY_SELECT.QUALITYNUMBER,
min(QUALITY_SELECT.HARVESTYEAR), min(ITTRANSPORT.TRANSPORTTYPEID)
from IT
left join QUALITY_SELECT(IT.LABQUALITYID) on (0=0)
left join ITTRANSPORT on (ITTRANSPORT.INVENTORYID = IT.INVENTORYID)
left join OPERATION on (OPERATION.OPERATIONID = IT.OPERATIONID)
left join TRANSPORTTYPE on (TRANSPORTTYPE.TRANSPORTTYPEID = ITTRANSPORT.TRANSPORTTYPEID)
where (IT.REGDATE between :BEGINDATE and :ENDDATE)
and (IT.LABQUALITYID is not null) and (IT.STATE = 0)
and ((:AOPERATIONID = -1) or (IT.OPERATIONID = :AOPERATIONID))
and (OPERATION.OPERATIONSUBTYPE < 2)
and ((:ATRANSPORTSUBTYPE = -1)
or ((:ATRANSPORTSUBTYPE > -1) and (TRANSPORTTYPE.TRANSPORTSUBTYPE = :ATRANSPORTSUBTYPE)))
and ((:AHARVESTINGYEAR = -1) or (QUALITY_SELECT.HARVESTYEAR = :HARVESTINGYEAR))
group by IT.LABQUALITYID, QUALITY_SELECT.QUALITYNUMBER, IT.REGDATE
order by IT.REGDATE, QUALITY_SELECT.QUALITYNUMBER
into :REGDATE, :LABQUALITYID, :LABNUMBER, :HARVESTYEAR, :TRANSPORTTYPEID
do begin
if (NEW_LABNUMBER = 0) then
NEW_LABNUMBER = LABNUMBER;
else NEW_LABNUMBER = NEW_LABNUMBER + 1;
if (NEW_LABNUMBER <> LABNUMBER) then
update QUALITYDATA
set QUALITYVALUE = :NEW_LABNUMBER
where ((QUALITYID = :LABQUALITYID) and (QUALITYTYPEID = 1));
suspend;
end
if (NEW_LABNUMBER > 0) then
select GET_LABQUALITYNUMBER.LABQUALITYNUMBER, GET_LABQUALITYNUMBER.GENERATORNAME
from GET_LABQUALITYNUMBER(:OPERATIONID, :TRANSPORTTYPEID, 1, :NEW_LABNUMBER)
into :LABQUALITYNUMBER, :GENERATORNAME;
else GENERATORNAME = null;
suspend;
if (ATRANSPORTSUBTYPE <> -1) then begin
ATRANSPORTSUBTYPE = ATRANSPORTSUBTYPE + 1;
NEW_LABNUMBER = 0;
end
else ATRANSPORTSUBTYPE = 3;
if ((AHARVESTINGYEAR = -1) and (ATRANSPORTSUBTYPE = 3)) then
AHARVESTINGYEAR = -100;
end
end
end