Входные параметры
Параметр | Тип | Описание |
---|---|---|
BEGINDATE |
DATE |
|
ENDDATE |
DATE |
|
ISCURRENT |
INTEGER |
|
PARTYDATE |
DATE |
|
AOWNERID |
INTEGER |
|
ACONTRACTID |
INTEGER |
|
STORAGEID |
INTEGER |
|
STORINGID |
INTEGER |
|
YEA |
INTEGER |
|
SHOWINGCROPYEAR |
INTEGER |
|
SHOWINGWRITEOFF |
INTEGER |
|
PRELIMINARYSHRINKAGE |
INTEGER |
|
Выходные параметры
Параметр | Тип | Описание |
---|---|---|
OWNERID |
INTEGER |
|
CLIENTFULLNAME |
VARCHAR(100) |
|
CLIENTNAME |
VARCHAR(30) |
|
PROVIDERID |
INTEGER |
|
PROVIDERFULLNAME |
VARCHAR(100) |
|
CROPID |
INTEGER |
|
CLASSID |
INTEGER |
|
CROPNAME |
VARCHAR(20) |
|
CROPFULLNAME |
VARCHAR(100) |
|
HARVESTYEAR |
INTEGER |
|
CROPTYPEID |
INTEGER |
|
PACKNAME |
VARCHAR(30) |
|
COMEBEFORENET |
INTEGER |
|
INCOMENETAVTO |
INTEGER |
|
INCOMEQUANTITYAVTO |
INTEGER |
|
INCOMENETRRW |
INTEGER |
|
INCOMEQUANTITYRRW |
INTEGER |
|
INCOMENET |
INTEGER |
|
INCOMERENEVALNET |
INTEGER |
|
OUTCOMENET |
INTEGER |
|
OUTCOMERENEVALNET |
INTEGER |
|
DECREASENET |
INTEGER |
|
WRITEOFFNET |
INTEGER |
|
COMEAFTERNET |
INTEGER |
|
INCOMEPACK |
INTEGER |
|
OUTCOMEPACK |
INTEGER |
|
COMEBEFOREWEIGHT |
INTEGER |
|
INCOMEWEIGHTAVTO |
INTEGER |
|
INCOMEWEIGHTRRW |
INTEGER |
|
INCOMEWEIGHT |
INTEGER |
|
INCOMEWEIGHTALL |
INTEGER |
|
OUTCOMEWEIGHT |
INTEGER |
|
WRITEOFFWEIGHT |
INTEGER |
|
COMEAFTERWEIGHT |
INTEGER |
|
HUMWEIGHT |
INTEGER |
|
PARTYID |
INTEGER |
|
OPERATIONID |
INTEGER |
|
CONTRACTID |
INTEGER |
|
Описание
(Нет описания для процедуры ACC_FORM37_CLIENT)
Определение
CREATE PROCEDURE ACC_FORM37_CLIENT(
BEGINDATE DATE,
ENDDATE DATE,
ISCURRENT INTEGER,
PARTYDATE DATE,
AOWNERID INTEGER,
ACONTRACTID INTEGER,
STORAGEID INTEGER,
STORINGID INTEGER,
YEA INTEGER,
SHOWINGCROPYEAR INTEGER,
SHOWINGWRITEOFF INTEGER,
PRELIMINARYSHRINKAGE INTEGER)
RETURNS (
OWNERID INTEGER,
CLIENTFULLNAME VARCHAR(100),
CLIENTNAME VARCHAR(30),
PROVIDERID INTEGER,
PROVIDERFULLNAME VARCHAR(100),
CROPID INTEGER,
CLASSID INTEGER,
CROPNAME VARCHAR(20),
CROPFULLNAME VARCHAR(100),
HARVESTYEAR INTEGER,
CROPTYPEID INTEGER,
PACKNAME VARCHAR(30),
COMEBEFORENET INTEGER,
INCOMENETAVTO INTEGER,
INCOMEQUANTITYAVTO INTEGER,
INCOMENETRRW INTEGER,
INCOMEQUANTITYRRW INTEGER,
INCOMENET INTEGER,
INCOMERENEVALNET INTEGER,
OUTCOMENET INTEGER,
OUTCOMERENEVALNET INTEGER,
DECREASENET INTEGER,
WRITEOFFNET INTEGER,
COMEAFTERNET INTEGER,
INCOMEPACK INTEGER,
OUTCOMEPACK INTEGER,
COMEBEFOREWEIGHT INTEGER,
INCOMEWEIGHTAVTO INTEGER,
INCOMEWEIGHTRRW INTEGER,
INCOMEWEIGHT INTEGER,
INCOMEWEIGHTALL INTEGER,
OUTCOMEWEIGHT INTEGER,
WRITEOFFWEIGHT INTEGER,
COMEAFTERWEIGHT INTEGER,
HUMWEIGHT INTEGER,
PARTYID INTEGER,
OPERATIONID INTEGER,
CONTRACTID INTEGER)
AS
declare variable ASTORAGEID integer;
declare variable AOPERATIONPARAM integer;
begin
if (:STORAGEID = -1) then
ASTORAGEID = null;
else ASTORAGEID = :STORAGEID;
for
select
IT.OWNERID, OWNER.CLIENTFULLNAME, OWNER.CLIENTNAME,
QUALITY.CROPID, QUALITY.CLASSID, CROP.CROPNAME,
case
when (:SHOWINGCROPYEAR = 1) then
QUALITY_CROPFULLNAME_FORAGE.CROPFULLNAME || ' урожая ' || coalesce(cast(YEARGR.QUALITYVALUE as integer),0) || ' г.'
else QUALITY_CROPFULLNAME_FORAGE.CROPFULLNAME
end CROPFULLNAME,
case
when (coalesce(:YEA,-1) = -1) then
0
else YEARGR.QUALITYVALUE
end YEARGR,
min(case
when (CROP.CROPTYPEID = 3) then
100
else CROP.CROPTYPEID
end) CROPTYPEID,
case
when (PACKS.PACKID is null) then
''
when (PACKS.PACKID = 1) then
''
else PACKS.PACKNAME
end PACKNAME,
coalesce(sum(case
when (IT.REGDATE < :BEGINDATE) then
case
when (((OPERATION.OPERATIONSUBTYPE = 0) and (OPERATION.OPERATIONTYPE in (0,4,6)))
and (IT.STATE > -1)
) then
IT.NET
when ((OPERATION.OPERATIONSUBTYPE = 1) and (OPERATION.OPERATIONTYPE in (0,1,2,4,5))
and (not (IT.OPERATIONID in (64,100))) and (IT.STATE > -1)
) then
-IT.NET
when ((IT.OPERATIONID = 64) and (:SHOWINGWRITEOFF = 1) and (IT.STATE > -1)) then
-abs(IT.NET)
end
end),0) COMEBEFORENET,
coalesce(sum(case
when ((IT.REGDATE >= :BEGINDATE) and (IT.STATE > -1) and (OPERATION.OPERATIONTYPE in (0,4))
and (OPERATION.OPERATIONSUBTYPE = 0) and (ITTRANSPORT.TRANSPORTTYPEID in (0,1))
) then
IT.NET
else 0
end),0) INCOMENETAVTO,
coalesce(count(case
when ((IT.REGDATE >= :BEGINDATE) and (IT.STATE > -1) and (OPERATION.OPERATIONTYPE in (0,4))
and (OPERATION.OPERATIONSUBTYPE = 0) and (ITTRANSPORT.TRANSPORTTYPEID in (0,1))
) then
IT.INVOICEID
end),0) INCOMEQUANTITYAVTO,
coalesce(sum(case
when ((IT.REGDATE >= :BEGINDATE) and (IT.STATE > -1) and (OPERATION.OPERATIONTYPE in (0,4))
and (OPERATION.OPERATIONSUBTYPE = 0) and (ITTRANSPORT.TRANSPORTTYPEID = 2)
) then
IT.NET
else 0
end),0) INCOMENETRRW,
coalesce(count(case
when ((IT.REGDATE >= :BEGINDATE) and (IT.STATE > -1) and (OPERATION.OPERATIONTYPE in (0,4))
and (OPERATION.OPERATIONSUBTYPE = 0) and (ITTRANSPORT.TRANSPORTTYPEID = 2)
) then
IT.INVOICEID
end),0) INCOMEQUANTITYRRW,
coalesce(sum(case
when ((IT.REGDATE >= :BEGINDATE) and (IT.OPERATIONID = 17)
and (IT.NET > 0) and (IT.OPERATIONPARAM is null)
) then
IT.NET
end),0) INCOMERENEVALNET,
coalesce(sum(case
when (((IT.REGDATE >= :BEGINDATE) and (OPERATION.OPERATIONSUBTYPE = 0)) and (IT.STATE > -1)
and ((OPERATION.OPERATIONTYPE in (0,4))
or ((OPERATION.OPERATIONTYPE = 6) and (not (IT.OPERATIONPARAM is null)))
)
) then
IT.NET
else 0
end),0) INCOMENET,
coalesce(sum(case
when ((IT.REGDATE >= :BEGINDATE) and ((OPERATION.OPERATIONSUBTYPE = 1)
and (OPERATION.OPERATIONTYPE in (0,1,2,4,5)) and (IT.OPERATIONID not in (9,22,64,71,100)))
) then
IT.NET
end),0) OUTCOMENET,
coalesce(sum(case
when ((IT.REGDATE >= :BEGINDATE) and (IT.OPERATIONID = 17) and (IT.NET < 0)
and (IT.OPERATIONPARAM is null)
) then
-IT.NET
end),0) OUTCOMERENEVALNET,
coalesce(sum(case
when ((IT.REGDATE >= :BEGINDATE) and (IT.OPERATIONID in (9,22,71)) and (IT.STATE > -1)) then
IT.NET
else 0
end),0) DECREASENET,
coalesce(sum(case
when ((IT.REGDATE >= :BEGINDATE) and (IT.OPERATIONID = 64) and (:SHOWINGWRITEOFF = 1)) then
abs(IT.NET)
else 0
end),0) WRITEOFFNET,
coalesce(sum(case
when (((OPERATION.OPERATIONSUBTYPE = 0) and (OPERATION.OPERATIONTYPE in (0,4,6)))
and (IT.STATE > -1)
) then
IT.NET
when ((OPERATION.OPERATIONSUBTYPE = 1) and (OPERATION.OPERATIONTYPE in (0,1,2,4,5))
and (not (IT.OPERATIONID in (64,100))) and (IT.STATE > -1)
) then
-IT.NET
when ((IT.OPERATIONID = 64) and (:SHOWINGWRITEOFF = 1) and (IT.STATE > -1)) then
-abs(IT.NET)
end),0) COMEAFTERNET,
coalesce(sum(case
when ((IT.REGDATE >= :BEGINDATE) and (OPERATION.OPERATIONSUBTYPE = 0)
and (OPERATION.OPERATIONTYPE in (0,4,6))
) then
IT.CARGOQUANTITY
end),0) INCOMEPACK,
coalesce(sum(case
when ((IT.REGDATE >= :BEGINDATE) and (OPERATION.OPERATIONSUBTYPE = 1)
and (OPERATION.OPERATIONTYPE in (0,1,2,4,5)) and (IT.OPERATIONID <> 100)
) then
IT.CARGOQUANTITY
end),0) OUTCOMEPACK,
coalesce(sum(case
when (IT.REGDATE < :BEGINDATE) then
case
when (((OPERATION.OPERATIONSUBTYPE = 0) and (OPERATION.OPERATIONTYPE in (0,4,6))
and (IT.STATE <> -999)
)
or ((IT.OPERATIONID = 64) and (:SHOWINGWRITEOFF = 1))
) then
IT.WEIGHT
when ((OPERATION.OPERATIONSUBTYPE = 1) and (OPERATION.OPERATIONTYPE in (0,1,2,4,5))
and (IT.OPERATIONID not in (9,22,64,100))
) then
-IT.WEIGHT
when (((IT.OPERATIONID in (22,100)) and (QUALITYWASTE.CLASSID = 141))
or (IT.OPERATIONID in (9))
) then
-IT.WEIGHT
end
end),0) COMEBEFOREWEIGHT,
coalesce(sum(case
when ((IT.REGDATE >= :BEGINDATE) and (OPERATION.OPERATIONTYPE in (0,4))
and (OPERATION.OPERATIONSUBTYPE = 0) and (ITTRANSPORT.TRANSPORTTYPEID in (0,1))
) then
IT.WEIGHT
else 0
end),0) INCOMEWEIGHTAVTO,
coalesce(sum(case
when ((IT.REGDATE >= :BEGINDATE) and (OPERATION.OPERATIONTYPE in (0,4))
and (OPERATION.OPERATIONSUBTYPE = 0) and (ITTRANSPORT.TRANSPORTTYPEID = 2)
) then
IT.WEIGHT
else 0
end),0) INCOMEWEIGHTRRW,
coalesce(sum(case
when ((IT.REGDATE >= :BEGINDATE) and (OPERATION.OPERATIONSUBTYPE = 0)
and ((OPERATION.OPERATIONTYPE in (0,4))
or ((OPERATION.OPERATIONTYPE = 6)
and (not (IT.OPERATIONPARAM is null))
)
)
and (IT.STATE <> -999)
) then
IT.WEIGHT
else 0
end),0) INCOMEWEIGHT,
coalesce(sum(case
when ((IT.REGDATE >= :BEGINDATE) and (OPERATION.OPERATIONSUBTYPE = 0)
and ((OPERATION.OPERATIONTYPE in (0,4))
or ((OPERATION.OPERATIONTYPE = 6) and (IT.WEIGHT > 0))
)
and (IT.STATE <> -999)
) then
IT.WEIGHT
else 0
end),0) INCOMEWEIGHTALL,
coalesce(sum(case
when ((IT.REGDATE >= :BEGINDATE) and (OPERATION.OPERATIONSUBTYPE = 1)
and (OPERATION.OPERATIONTYPE in (0,1,2,4,5)) and (IT.OPERATIONID not in (22,64,100))
) then
IT.WEIGHT
when ((IT.REGDATE >= :BEGINDATE) and (OPERATION.OPERATIONTYPE = 6) and (IT.WEIGHT < 0)) then
-IT.WEIGHT
end),0) OUTCOMEWEIGHT,
coalesce(sum(case
when ((IT.REGDATE >= :BEGINDATE) and (IT.OPERATIONID = 64) and (:SHOWINGWRITEOFF = 1)) then
-IT.WEIGHT
end),0) WRITEOFFWEIGHT,
coalesce(sum(case
when (((OPERATION.OPERATIONSUBTYPE = 0) and (OPERATION.OPERATIONTYPE in (0,4,6))
and (IT.STATE <> -999)
)
or ((IT.OPERATIONID = 64) and (:SHOWINGWRITEOFF = 1))
) then
IT.WEIGHT
when ((OPERATION.OPERATIONSUBTYPE = 1) and (OPERATION.OPERATIONTYPE in (0,1,2,4,5))
and (IT.OPERATIONID not in (9,22,64,100))
) then
-IT.WEIGHT
when ((IT.OPERATIONID in (9,22,100)) and (QUALITYWASTE.CLASSID = 141)
) then
-IT.WEIGHT
-- when ((IT.OPERATIONID in (9)) and (IT.STATE = -999)) then
-- -IT.WEIGHT
end),0) COMEAFTERWEIGHT,
sum(case
when ((:PRELIMINARYSHRINKAGE = 1) and (IT.OPERATIONID = 9) and (IT.STATE = -999)) then
IT.NET
when (:PRELIMINARYSHRINKAGE = 2) then
ITTRANSPORT.HUMWEIGHT
when ((:PRELIMINARYSHRINKAGE in (1,2)) and (IT.OPERATIONID = 101)) then
-IT.NET
else 0
end) HUMWEIGHT,
IT.PARTYID,
max(IT.CONTRACTID)
from IT
/*
join GETWORKPARTIES(:ISCURRENT,
case
when (:ISCURRENT = 0) then
IT.REGDATE
else :PARTYDATE
end, null, null, :ASTORAGEID) on (GETWORKPARTIES.PARTYID = IT.PARTYID)
*/
join OPERATION on (OPERATION.OPERATIONID = IT.OPERATIONID)
join PARTIES on (((PARTIES.PARTYID = IT.PARTYID) and (IT.PARTYID <> -1))
and ((((:BEGINDATE between PARTIES.BEGINDATE and coalesce(PARTIES.ENDDATE, current_date))
or (:ENDDATE between PARTIES.BEGINDATE and coalesce(PARTIES.ENDDATE, current_date))
or (PARTIES.BEGINDATE between :BEGINDATE and :ENDDATE)
or (coalesce(PARTIES.ENDDATE, current_date) between :BEGINDATE and :ENDDATE))
and (:ISCURRENT = 0))
or (((PARTIES.BEGINDATE between :BEGINDATE and :ENDDATE)
and (coalesce(PARTIES.ENDDATE, :ENDDATE) between :BEGINDATE and :ENDDATE))
and (:ISCURRENT = 0))
or ((PARTIES.STATE = 1) and (:ISCURRENT = 1))))
left join UWACTS on (UWACTS.UWORDERID = IT.UWORDERID)
left join ITTRANSPORT on (ITTRANSPORT.INVENTORYID = IT.INVENTORYID)
left join QUALITY on (QUALITY.QUALITYID = IT.SAMPLERQUALITYID)
left join CROP on (CROP.CROPID = QUALITY.CROPID)
left join QUALITY_SELECT(QUALITY.QUALITYID) on (0=0)
left join QUALITY_CROPFULLNAME_FORAGE(QUALITY.CROPID, QUALITY.CLASSID, null, QUALITY_SELECT.FORAGECROPID, QUALITY_SELECT.FORAGECLASSID, 1) on (0 = 0)
left join QUALITYDATA YEARGR on ((YEARGR.QUALITYID = IT.LABQUALITYID) and (YEARGR.QUALITYTYPEID = 6))
left join PACKS on (IT.PACKID = PACKS.PACKID)
left join CLIENTS OWNER on (OWNER.CLIENTID = IT.OWNERID)
left join CLIENTS PROVIDER on (PROVIDER.CLIENTID = IT.PROVIDERID)
left join QUALITY QUALITYWASTE on ((QUALITYWASTE.QUALITYID = IT.OPERATIONPARAM) and (IT.OPERATIONID = 22))
where (((not (IT.OPERATIONID in (45,46)))
and (((OPERATION.OPERATIONSUBTYPE = 0) and (OPERATION.OPERATIONTYPE in (0,4,6)))
or ((OPERATION.OPERATIONSUBTYPE = 1) and (OPERATION.OPERATIONTYPE in (0,1,2,4,5)))
)
)
or ((IT.OPERATIONID in (45,46,64)) and (IT.OPERATIONPARAM is null))
)
and (IT.REGDATE <= :ENDDATE) and (not (IT.STATE in (-5,-3,-1)))
and (not (coalesce(IT.NET,0) = 0)) and (coalesce(QUALITY.CLASSID,-1) <> 41)
and ((IT.OWNERID = :AOWNERID) or (coalesce(:AOWNERID,-1) = -1))
and ((IT.CONTRACTID = :ACONTRACTID) or (coalesce(:ACONTRACTID,-1) = -1))
and ((YEARGR.QUALITYVALUE = coalesce(:YEA,-1)) or (coalesce(:YEA,-1) = -1))
and ((IT.STORAGEID = :ASTORAGEID) or (coalesce(:ASTORAGEID,-1) = -1))
and ((IT.STORINGID = :STORINGID) or (coalesce(:STORINGID,-1) = -1))
group by IT.OWNERID, OWNER.CLIENTFULLNAME, OWNER.CLIENTNAME,
QUALITY.CROPID, QUALITY.CLASSID, CROP.CROPNAME, CROPFULLNAME, 10, 8,
IT.PARTYID
into :OWNERID, :CLIENTFULLNAME, :CLIENTNAME, :CROPID, :CLASSID, :CROPNAME,
:CROPFULLNAME, :HARVESTYEAR, :CROPTYPEID, :PACKNAME,
:COMEBEFORENET, :INCOMENETAVTO, :INCOMEQUANTITYAVTO, :INCOMENETRRW, :INCOMEQUANTITYRRW, :INCOMERENEVALNET, :INCOMENET,
:OUTCOMENET, :OUTCOMERENEVALNET, :DECREASENET, :WRITEOFFNET, :COMEAFTERNET,
:INCOMEPACK, :OUTCOMEPACK,
:COMEBEFOREWEIGHT, :INCOMEWEIGHTAVTO, :INCOMEWEIGHTRRW, :INCOMEWEIGHT, :INCOMEWEIGHTALL,
:OUTCOMEWEIGHT, :WRITEOFFWEIGHT, :COMEAFTERWEIGHT,
:HUMWEIGHT, :PARTYID, :CONTRACTID
do
if ((COMEBEFORENET <> 0) or (INCOMENET <> 0) or (INCOMERENEVALNET <> 0)
or (OUTCOMENET <> 0) or (OUTCOMERENEVALNET <> 0) or (DECREASENET <> 0)
or (COMEAFTERNET <> 0) or (COMEBEFOREWEIGHT <> 0) or (INCOMEWEIGHT <> 0)
or (OUTCOMEWEIGHT <> 0) or (COMEAFTERWEIGHT <> 0)) then
suspend;
end