Входные параметры
Параметр | Тип | Описание |
---|---|---|
BEGINDATE |
DATE |
|
ENDDATE |
DATE |
|
AOWNERID |
INTEGER |
|
ACROPID |
INTEGER |
|
ACLASSID |
INTEGER |
|
ISCURRENT |
INTEGER |
|
PARTYDATE |
DATE |
|
Выходные параметры
Параметр | Тип | Описание |
---|---|---|
REGDATE |
DATE |
|
PROVIDERNAME |
VARCHAR(30) |
|
CARNUMBER |
VARCHAR(31) |
|
TRAILERNUMBER |
VARCHAR(31) |
|
INVOICENUMBER |
VARCHAR(31) |
|
CROPFULLNAME |
VARCHAR(30) |
|
CLASSNAME |
VARCHAR(30) |
|
GROSS |
INTEGER |
|
TARE |
INTEGER |
|
NET |
INTEGER |
|
INVOICEGROSS |
INTEGER |
|
INVOICETARE |
INTEGER |
|
INVOICENET |
INTEGER |
|
HUMIDITY |
NUMERIC(5,2) |
|
DIRT |
NUMERIC(5,2) |
|
WEIGHT |
BIGINT |
|
REGISTERNUMBER |
INTEGER |
|
OWNERNAME |
VARCHAR(30) |
|
REGISTERSHUMIDITY |
NUMERIC(5,2) |
|
REGISTERSDIRT |
NUMERIC(5,2) |
|
SCREENING |
NUMERIC(5,2) |
|
SMALLGRAIN |
NUMERIC(5,2) |
|
GRAINUNIT |
INTEGER |
|
GLUTENQUALITY |
INTEGER |
|
GLUTEN |
NUMERIC(5,2) |
|
PROTEIN |
NUMERIC(5,2) |
|
TURTLEBUG |
NUMERIC(5,2) |
|
INFECTION |
VARCHAR(30) |
|
INCOMESUM |
NUMERIC(15,2) |
|
HUMWEIGHT |
BIGINT |
|
DRYSUM |
NUMERIC(15,2) |
|
DIRTWEIGHT |
BIGINT |
|
UNDERWORKSUM |
NUMERIC(15,2) |
|
TOTALSUM |
NUMERIC(15,2) |
|
TOTALNDS |
NUMERIC(15,2) |
|
TOTALSUMNDS |
NUMERIC(15,2) |
|
STATIONNAME |
VARCHAR(30) |
|
Описание
(Нет описания для процедуры ACC_INCOME_PROD_BORIVAJ)
Определение
CREATE PROCEDURE ACC_INCOME_PROD_BORIVAJ(
BEGINDATE DATE,
ENDDATE DATE,
AOWNERID INTEGER,
ACROPID INTEGER,
ACLASSID INTEGER,
ISCURRENT INTEGER,
PARTYDATE DATE)
RETURNS (
REGDATE DATE,
PROVIDERNAME VARCHAR(30),
CARNUMBER VARCHAR(31),
TRAILERNUMBER VARCHAR(31),
INVOICENUMBER VARCHAR(31),
CROPFULLNAME VARCHAR(30),
CLASSNAME VARCHAR(30),
GROSS INTEGER,
TARE INTEGER,
NET INTEGER,
INVOICEGROSS INTEGER,
INVOICETARE INTEGER,
INVOICENET INTEGER,
HUMIDITY NUMERIC(5,2),
DIRT NUMERIC(5,2),
WEIGHT BIGINT,
REGISTERNUMBER INTEGER,
OWNERNAME VARCHAR(30),
REGISTERSHUMIDITY NUMERIC(5,2),
REGISTERSDIRT NUMERIC(5,2),
SCREENING NUMERIC(5,2),
SMALLGRAIN NUMERIC(5,2),
GRAINUNIT INTEGER,
GLUTENQUALITY INTEGER,
GLUTEN NUMERIC(5,2),
PROTEIN NUMERIC(5,2),
TURTLEBUG NUMERIC(5,2),
INFECTION VARCHAR(30),
INCOMESUM NUMERIC(15,2),
HUMWEIGHT BIGINT,
DRYSUM NUMERIC(15,2),
DIRTWEIGHT BIGINT,
UNDERWORKSUM NUMERIC(15,2),
TOTALSUM NUMERIC(15,2),
TOTALNDS NUMERIC(15,2),
TOTALSUMNDS NUMERIC(15,2),
STATIONNAME VARCHAR(30))
AS
declare variable REGISTERID varchar(30);
declare variable INCOMECOST numeric(6,2);
declare variable DRYCOST numeric(6,2);
declare variable UNDERWORKCOST numeric(6,2);
declare variable INVOICEID integer;
declare variable TRANSPORTTYPEID integer;
begin
for
select
ITMAIN.REGDATE,
PROVIDER.CLIENTNAME,
ITTRANSPORT.TRANSPORTNUMBER,
INVOICES.INVOICENUMBER,
QUALITY_CROPFULLNAME_BYID.CROPFULLNAME,
CLASS.CLASSNAME,
ITMAIN.GROSS,
ITMAIN.TARE,
ITMAIN.NET,
ITTRANSPORT.INVOICEGROSS,
ITTRANSPORT.INVOICETARE,
ITTRANSPORT.INVOICENET,
QUALITY_SELECT.HUMIDITY,
QUALITY_SELECT.DIRT,
ITMAIN.REGISTERID,
INVOICEREGISTERS.REGISTERNUMBER,
OWNER.CLIENTNAME,
case
when (Q_SELECT.HUMIDITY < QUALITY_SELECT.HUMIDITY) then
Q_SELECT.HUMIDITY
else QUALITY_SELECT.HUMIDITY
end,
case
when (Q_SELECT.DIRT < QUALITY_SELECT.DIRT) then
Q_SELECT.DIRT
else QUALITY_SELECT.DIRT
end,
case
when (CROP.CROPTYPEID <> 5) then
QUALITY_SELECT.SCREENING
else QUALITY_SELECT.OILSEED
end,
QUALITY_SELECT.SMALLGRAIN,
QUALITY_SELECT.GRAINUNIT,
QUALITY_SELECT.GLUTENQUALITY,
QUALITY_SELECT.GLUTEN,
QUALITY_SELECT.PROTEIN,
QUALITY_SELECT.TURTLEBUG,
INFECTION.SELECTVALUE,
ITMAIN.WEIGHT,
INVOICEREGISTERS.INCOMECOST,
INVOICEREGISTERS.DRYCOST,
ITTRANSPORT.HUMWEIGHT,
INVOICEREGISTERS.UNDERWORKCOST,
ITTRANSPORT.DIRTWEIGHT,
ITTRANSPORT.TRANSPORTTYPEID,
ITMAIN.INVOICEID,
STATIONS.STATIONNAME
from IT ITMAIN
join GETWORKPARTIES(:ISCURRENT, :PARTYDATE, null, null, null) on (GETWORKPARTIES.PARTYID = ITMAIN.PARTYID)
left join CLIENTS OWNER on (OWNER.CLIENTID = ITMAIN.OWNERID)
left join CLIENTS PROVIDER on (PROVIDER.CLIENTID = ITMAIN.PROVIDERID)
left join QUALITY_SELECT(ITMAIN.BUHQUALITYID) on (0 = 0)
left join CROP on (CROP.CROPID = QUALITY_SELECT.CROPID)
left join CLASS on (CLASS.CLASSID = QUALITY_SELECT.CLASSID)
left join QUALITY_CROPFULLNAME_BYID(ITMAIN.BUHQUALITYID, 0) on (0 = 0)
left join INVOICEREGISTERS on (INVOICEREGISTERS.INVOICEREGISTERID = ITMAIN.REGISTERID)
left join QUALITY_SELECT(INVOICEREGISTERS.QUALITYID) Q_SELECT on (0 = 0)
left join ITTRANSPORT on (ITTRANSPORT.INVENTORYID = ITMAIN.INVENTORYID)
left join INVOICES on (INVOICES.INVOICEID = ITMAIN.INVOICEID)
left join STATIONS on (STATIONS.STATIONID = INVOICES.STATIONID)
left join QUALITY_SELECT_VALUES(19, QUALITY_SELECT.INFECTIONID, 0) INFECTION on (0 = 0)
where (ITMAIN.REGDATE between :BEGINDATE and :ENDDATE) and
(ITMAIN.OPERATIONID = 1) and
(ITMAIN.OWNERID = :AOWNERID or (coalesce(:AOWNERID, -1) = -1)) and
(QUALITY_SELECT.CROPID = :ACROPID or (coalesce(:ACROPID, -1) = -1)) and
(QUALITY_SELECT.CLASSID = :ACLASSID or (coalesce(:ACLASSID, -1) = -1)) and
(ITMAIN.STATE >= 0) and
(ITMAIN.PARENTID <> -1) and
(ITMAIN.NET is not null) and
(ITMAIN.NET <> 0)
order by
OWNER.CLIENTNAME,
QUALITY_CROPFULLNAME_BYID.CROPFULLNAME,
ITMAIN.REGDATE
into
:REGDATE,
:PROVIDERNAME,
:CARNUMBER,
:INVOICENUMBER,
:CROPFULLNAME,
:CLASSNAME,
:GROSS,
:TARE,
:NET,
:INVOICEGROSS,
:INVOICETARE,
:INVOICENET,
:HUMIDITY,
:DIRT,
:REGISTERID,
:REGISTERNUMBER,
:OWNERNAME,
:REGISTERSHUMIDITY,
:REGISTERSDIRT,
:SCREENING,
:SMALLGRAIN,
:GRAINUNIT,
:GLUTENQUALITY,
:GLUTEN,
:PROTEIN,
:TURTLEBUG,
:INFECTION,
:WEIGHT,
:INCOMECOST,
:DRYCOST,
:HUMWEIGHT,
:UNDERWORKCOST,
:DIRTWEIGHT,
:TRANSPORTTYPEID,
:INVOICEID,
:STATIONNAME
do begin
TRAILERNUMBER = '';
if (TRANSPORTTYPEID = 0) then begin
select
ITTRANSPORT.TRANSPORTNUMBER
from IT
left join ITTRANSPORT on (ITTRANSPORT.INVENTORYID = IT.INVENTORYID)
where
(IT.INVOICEID = :INVOICEID) and
(((IT.STATE = 0) or (IT.STATE = -5))) and
(ITTRANSPORT.TRANSPORTTYPEID = 1)
into
:TRAILERNUMBER;
end
else
if (TRANSPORTTYPEID = 1) then begin
TRAILERNUMBER = :CARNUMBER;
end
INCOMESUM = (NET * INCOMECOST) / 1000;
if ((HUMIDITY - REGISTERSHUMIDITY) > 0) then
DRYSUM = (((HUMIDITY - REGISTERSHUMIDITY) * NET) / 1000) * DRYCOST * 1.2;
else DRYSUM = 0;
if ((DIRT - REGISTERSDIRT) > 0) then
UNDERWORKSUM = (((DIRT - REGISTERSDIRT) * (NET - HUMWEIGHT)) / 1000) * UNDERWORKCOST * 1.2;
else UNDERWORKSUM = 0;
TOTALSUM = coalesce(INCOMESUM, 0) + coalesce(DRYSUM, 0) + coalesce(UNDERWORKSUM, 0);
TOTALNDS = TOTALSUM * 0.2;
TOTALSUMNDS = TOTALSUM + TOTALNDS;
suspend;
end
end