Входные параметры
Параметр | Тип | Описание |
---|---|---|
TODATE |
DATE |
|
OWNERID |
INTEGER |
|
CLASSIDCROP |
INTEGER |
|
OPERATIONID |
INTEGER |
|
BEGPARTYDATE |
DATE |
|
TRANSPORTSUBTYPE |
INTEGER |
|
Выходные параметры
Параметр | Тип | Описание |
---|---|---|
COMMENT |
VARCHAR(15) |
|
CLIENTNAME |
VARCHAR(30) |
|
TRANSPORTNUMBER |
VARCHAR(30) |
|
WEIGHT |
INTEGER |
|
LABQUALITYID |
INTEGER |
|
DIRT |
NUMERIC(9,2) |
|
HUMIDITY |
NUMERIC(9,2) |
|
SCREENING |
NUMERIC(9,2) |
|
GRAINUNIT |
INTEGER |
|
PROTEIN |
NUMERIC(9,2) |
|
GLUTEN |
NUMERIC(9,2) |
|
GLUTENQUALITY |
NUMERIC(9,2) |
|
DROPNUMBER |
INTEGER |
|
GLASSNESS |
NUMERIC(9,2) |
|
TURTLEBUG |
NUMERIC(9,2) |
|
SMALLGRAIN |
NUMERIC(9,2) |
|
SPOILT |
NUMERIC(9,2) |
|
ACIDITY |
NUMERIC(9,2) |
|
BEATEN |
NUMERIC(9,2) |
|
DEFECTIVE |
NUMERIC(9,2) |
|
Описание
(Нет описания для процедуры IT_AVG_QUALITY_WEIGTH_SUMMARY)
Определение
CREATE PROCEDURE IT_AVG_QUALITY_WEIGTH_SUMMARY(
TODATE DATE,
OWNERID INTEGER,
CLASSIDCROP INTEGER,
OPERATIONID INTEGER,
BEGPARTYDATE DATE,
TRANSPORTSUBTYPE INTEGER)
RETURNS (
COMMENT VARCHAR(15),
CLIENTNAME VARCHAR(30),
TRANSPORTNUMBER VARCHAR(30),
WEIGHT INTEGER,
LABQUALITYID INTEGER,
DIRT NUMERIC(9,2),
HUMIDITY NUMERIC(9,2),
SCREENING NUMERIC(9,2),
GRAINUNIT INTEGER,
PROTEIN NUMERIC(9,2),
GLUTEN NUMERIC(9,2),
GLUTENQUALITY NUMERIC(9,2),
DROPNUMBER INTEGER,
GLASSNESS NUMERIC(9,2),
TURTLEBUG NUMERIC(9,2),
SMALLGRAIN NUMERIC(9,2),
SPOILT NUMERIC(9,2),
ACIDITY NUMERIC(9,2),
BEATEN NUMERIC(9,2),
DEFECTIVE NUMERIC(9,2))
AS
declare variable SORTING integer;
begin
if (:BEGPARTYDATE is null) then begin
select first 1 PARTIES.PARTYID
from PARTIES
where (PARTIES.STATE > 0)
and (PARTIES.CROPID = (select CROPID from CLASS where (CLASS.CLASSID = :CLASSIDCROP)))
and (PARTIES.STORAGEID = 1)
order by coalesce(PARTIES.CLASSID, 100000)
into :BEGPARTYDATE;
end
for
select 1, ' на начало', '', '', cast(sum(IT.NET) as integer), null,
sum(IT.NET * QUALITY_SELECT.DIRT) / nullif(sum(IT.NET + QUALITY_SELECT.DIRT - QUALITY_SELECT.DIRT), 0),
sum(IT.NET * QUALITY_SELECT.HUMIDITY) / nullif(sum(IT.NET + QUALITY_SELECT.HUMIDITY - QUALITY_SELECT.HUMIDITY), 0),
-- sum(IT.NET * QUALITY_SELECT.SCREENING) / nullif(sum(IT.NET + QUALITY_SELECT.SCREENING - QUALITY_SELECT.SCREENING), 0),
case
when (min(CROP.CROPTYPEID) <> 5) then
sum(IT.NET * QUALITY_SELECT.SCREENING) / nullif(sum(IT.NET + QUALITY_SELECT.SCREENING - QUALITY_SELECT.SCREENING), 0)
else sum(IT.NET * QUALITY_SELECT.OILSEED) / nullif(sum(IT.NET + QUALITY_SELECT.OILSEED - QUALITY_SELECT.OILSEED), 0)
end,
sum(IT.NET * QUALITY_SELECT.GLUTEN) / nullif(sum(IT.NET + QUALITY_SELECT.GLUTEN - QUALITY_SELECT.GLUTEN), 0),
sum(IT.NET * QUALITY_SELECT.GLUTENQUALITY) / nullif(sum(IT.NET + QUALITY_SELECT.GLUTENQUALITY - QUALITY_SELECT.GLUTENQUALITY), 0),
sum(IT.NET * QUALITY_SELECT.GRAINUNIT) / nullif(sum(IT.NET + QUALITY_SELECT.GRAINUNIT - QUALITY_SELECT.GRAINUNIT), 0),
sum(IT.NET * QUALITY_SELECT.PROTEIN) / nullif(sum(IT.NET + QUALITY_SELECT.PROTEIN - QUALITY_SELECT.PROTEIN), 0),
sum(IT.NET * QUALITY_SELECT.DROPNUMBER) / nullif(sum(IT.NET + QUALITY_SELECT.DROPNUMBER - QUALITY_SELECT.DROPNUMBER), 0),
sum(IT.NET * QUALITY_SELECT.GLASSNESS) / nullif(sum(IT.NET + QUALITY_SELECT.GLASSNESS - QUALITY_SELECT.GLASSNESS), 0),
sum(IT.NET * QUALITY_SELECT.TURTLEBUG) / nullif(sum(IT.NET + QUALITY_SELECT.TURTLEBUG - QUALITY_SELECT.TURTLEBUG), 0),
sum(IT.NET * QUALITY_SELECT.SMALLGRAIN) / nullif(sum(IT.NET + QUALITY_SELECT.SMALLGRAIN - QUALITY_SELECT.SMALLGRAIN), 0),
sum(IT.NET * QUALITY_SELECT.SPOILT) / nullif(sum(IT.NET + QUALITY_SELECT.SPOILT - QUALITY_SELECT.SPOILT), 0),
sum(IT.NET * QUALITY_SELECT.ACIDITY) / nullif(sum(IT.NET + QUALITY_SELECT.ACIDITY - QUALITY_SELECT.ACIDITY), 0),
sum(IT.NET * QUALITY_SELECT.BEATEN) / nullif(sum(IT.NET + QUALITY_SELECT.BEATEN - QUALITY_SELECT.BEATEN), 0),
sum(IT.NET * QUALITY_SELECT.DEFECTIVE) / nullif(sum(IT.NET + QUALITY_SELECT.DEFECTIVE - QUALITY_SELECT.DEFECTIVE), 0)
from IT
left join QUALITY on (coalesce(IT.LABQUALITYID, IT.SAMPLERQUALITYID) = QUALITY.QUALITYID)
left join QUALITY_SELECT(coalesce(IT.LABQUALITYID, IT.SAMPLERQUALITYID)) on (0 = 0)
left join CROP on CROP.CROPID = QUALITY_SELECT.CROPID
left join PARTIES on PARTIES.PARTYID = IT.PARTYID
left join ITTRANSPORT on ITTRANSPORT.INVENTORYID = IT.INVENTORYID
left join TRANSPORTTYPE on TRANSPORTTYPE.TRANSPORTTYPEID = ITTRANSPORT.TRANSPORTTYPEID
where (IT.STATE <> -1)
and ((IT.REGDATE < :TODATE) and (IT.REGDATE >= :BEGPARTYDATE))
and ((IT.OWNERID = :OWNERID) or (:OWNERID is null))
and (QUALITY.CLASSID = :CLASSIDCROP)
and (IT.OPERATIONID = :OPERATIONID)
and ((TRANSPORTTYPE.TRANSPORTSUBTYPE = :TRANSPORTSUBTYPE) or (:TRANSPORTSUBTYPE is null))
and (PARTIES.STATE > 0)
union all
select 2, '',Clients.clientname,
ITTRANSPORT.TRANSPORTNUMBER || coalesce(', ' || (select ITTRANSPORT.TRANSPORTNUMBER
from IT IT2
left join ITTRANSPORT on (ITTRANSPORT.INVENTORYID = IT2.INVENTORYID)
where (IT2.INVOICEID = IT.INVOICEID)
and (coalesce(IT2.NET,0) = 0) and (ITTRANSPORT.TRANSPORTTYPEID = 1)
and (not (IT2.STATE in (-1,-3)))
),''),
IT.NET, IT.LABQUALITYID,
(IT.NET * QUALITY_SELECT.DIRT) / nullif(IT.NET + QUALITY_SELECT.DIRT - QUALITY_SELECT.DIRT, 0) ,
(IT.NET * QUALITY_SELECT.HUMIDITY) / nullif(IT.NET + QUALITY_SELECT.HUMIDITY - QUALITY_SELECT.HUMIDITY, 0),
-- (IT.NET * QUALITY_SELECT.SCREENING) / nullif(IT.NET + QUALITY_SELECT.SCREENING - QUALITY_SELECT.SCREENING, 0),
case
when (CROP.CROPTYPEID <> 5) then
(IT.NET * QUALITY_SELECT.SCREENING) / nullif(IT.NET + QUALITY_SELECT.SCREENING - QUALITY_SELECT.SCREENING, 0)
else (IT.NET * QUALITY_SELECT.OILSEED) / nullif(IT.NET + QUALITY_SELECT.OILSEED - QUALITY_SELECT.OILSEED, 0)
end,
(IT.NET * QUALITY_SELECT.GLUTEN) / nullif(IT.NET + QUALITY_SELECT.GLUTEN - QUALITY_SELECT.GLUTEN, 0),
(IT.NET * QUALITY_SELECT.GLUTENQUALITY) / nullif(IT.NET + QUALITY_SELECT.GLUTENQUALITY - QUALITY_SELECT.GLUTENQUALITY, 0),
(IT.NET * QUALITY_SELECT.GRAINUNIT) / nullif(IT.NET + QUALITY_SELECT.GRAINUNIT - QUALITY_SELECT.GRAINUNIT, 0),
(IT.NET * QUALITY_SELECT.PROTEIN) / nullif(IT.NET + QUALITY_SELECT.PROTEIN - QUALITY_SELECT.PROTEIN, 0),
(IT.NET * QUALITY_SELECT.DROPNUMBER) / nullif(IT.NET + QUALITY_SELECT.DROPNUMBER - QUALITY_SELECT.DROPNUMBER, 0),
(IT.NET * QUALITY_SELECT.GLASSNESS) / nullif(IT.NET + QUALITY_SELECT.GLASSNESS - QUALITY_SELECT.GLASSNESS, 0),
(IT.NET * QUALITY_SELECT.TURTLEBUG) / nullif(IT.NET + QUALITY_SELECT.TURTLEBUG - QUALITY_SELECT.TURTLEBUG, 0),
(IT.NET * QUALITY_SELECT.SMALLGRAIN) / nullif((IT.NET + QUALITY_SELECT.SMALLGRAIN - QUALITY_SELECT.SMALLGRAIN), 0),
(IT.NET * QUALITY_SELECT.SPOILT) / nullif((IT.NET + QUALITY_SELECT.SPOILT - QUALITY_SELECT.SPOILT), 0),
(IT.NET * QUALITY_SELECT.ACIDITY) / nullif(IT.NET + QUALITY_SELECT.ACIDITY - QUALITY_SELECT.ACIDITY, 0),
(IT.NET * QUALITY_SELECT.BEATEN) / nullif(IT.NET + QUALITY_SELECT.BEATEN - QUALITY_SELECT.BEATEN, 0),
(IT.NET * QUALITY_SELECT.DEFECTIVE) / nullif(IT.NET + QUALITY_SELECT.DEFECTIVE - QUALITY_SELECT.DEFECTIVE, 0)
from IT
left join QUALITY on (coalesce(IT.LABQUALITYID,IT.SAMPLERQUALITYID) = QUALITY.QUALITYID)
left join QUALITY_SELECT(coalesce(IT.LABQUALITYID,IT.SAMPLERQUALITYID)) on (0=0)
left join CROP on (CROP.CROPID = QUALITY_SELECT.CROPID)
left join PARTIES on (PARTIES.PARTYID = IT.PARTYID)
left join ITTRANSPORT on (ITTRANSPORT.INVENTORYID = IT.INVENTORYID)
left join clients on (clients.clientid=IT.providerid)
left join TRANSPORTTYPE on (TRANSPORTTYPE.TRANSPORTTYPEID = ITTRANSPORT.TRANSPORTTYPEID)
where (IT.STATE <> -1) and(coalesce(IT.NET,0) <> 0)
and (IT.REGDATE = :TODATE)
and ((IT.OWNERID = :OWNERID) or (:OWNERID is null))
and (QUALITY.CLASSID = :CLASSIDCROP)
and (IT.OPERATIONID = :OPERATIONID)
and ((TRANSPORTTYPE.TRANSPORTSUBTYPE = :TRANSPORTSUBTYPE) or (:TRANSPORTSUBTYPE is null))
and (PARTIES.STATE > 0)
order by 6
into :SORTING, :COMMENT, :CLIENTNAME,:TRANSPORTNUMBER, :WEIGHT, :LABQUALITYID,
:DIRT, :HUMIDITY, :SCREENING, :GLUTEN, :GLUTENQUALITY, :GRAINUNIT,
:PROTEIN, :DROPNUMBER, :GLASSNESS, :TURTLEBUG, :SMALLGRAIN, :SPOILT,
:ACIDITY, :BEATEN, :DEFECTIVE
do
if (WEIGHT > 0) then
suspend;
end