Входные параметры
Параметр  | Тип  | Описание  | 
|---|---|---|
BEGINDATE  | 
    DATE  | 
    
  | 
  
ENDDATE  | 
    DATE  | 
    
  | 
  
PARTYID  | 
    INTEGER  | 
    
  | 
  
PARTYDATE  | 
    DATE  | 
    
  | 
  
Выходные параметры
Параметр  | Тип  | Описание  | 
|---|---|---|
INITIAL_NET  | 
    INTEGER  | 
    
  | 
  
INCOMENETAVTO  | 
    INTEGER  | 
    
  | 
  
INCOMENETRW  | 
    INTEGER  | 
    
  | 
  
INCOMENETSH  | 
    INTEGER  | 
    
  | 
  
INCOMENET  | 
    INTEGER  | 
    
  | 
  
OUTCOMENETAVTO  | 
    INTEGER  | 
    
  | 
  
OUTCOMENETRW  | 
    INTEGER  | 
    
  | 
  
OUTCOMENETSH  | 
    INTEGER  | 
    
  | 
  
OUTCOMENET  | 
    INTEGER  | 
    
  | 
  
WRITTENWASTE  | 
    INTEGER  | 
    
  | 
  
AVALIABLE_NET  | 
    INTEGER  | 
    
  | 
  
CROPFULLNAME  | 
    VARCHAR(100)  | 
    
  | 
  
ACROPID  | 
    INTEGER  | 
    
  | 
  
CROPNAME  | 
    VARCHAR(20)  | 
    
  | 
  
Описание
(Нет описания для процедуры ACC_MOVE_REPORT)
Определение
CREATE PROCEDURE ACC_MOVE_REPORT(
    BEGINDATE DATE,
    ENDDATE DATE,
    PARTYID INTEGER,
    PARTYDATE DATE)
RETURNS (
    INITIAL_NET INTEGER,
    INCOMENETAVTO INTEGER,
    INCOMENETRW INTEGER,
    INCOMENETSH INTEGER,
    INCOMENET INTEGER,
    OUTCOMENETAVTO INTEGER,
    OUTCOMENETRW INTEGER,
    OUTCOMENETSH INTEGER,
    OUTCOMENET INTEGER,
    WRITTENWASTE INTEGER,
    AVALIABLE_NET INTEGER,
    CROPFULLNAME VARCHAR(100),
    ACROPID INTEGER,
    CROPNAME VARCHAR(20))
AS
declare variable ACLASSID integer;
begin
  ACLASSID = null;
  ACROPID = null;
  for
    select CROPNAME, CLASS.CROPID, CLASS.CLASSID, QUALITY_CROPFULLNAME.CROPFULLNAME
      from CROP
        left join CLASS on (CLASS.CROPID = CROP.CROPID)
        left join QUALITY_CROPFULLNAME(CROP.CROPID, CLASS.CLASSID, null, 0) on (0 = 0)
      where (CROP.CROPTYPEID in (1, 5))
    order by QUALITY_CROPFULLNAME.CROPFULLNAME
    into :CROPNAME, :ACROPID, :ACLASSID, :CROPFULLNAME
  do begin
    INITIAL_NET = 0;
    INCOMENETAVTO = 0;
    INCOMENETRW = 0;
    INCOMENETSH = 0;
    OUTCOMENETAVTO = 0;
    OUTCOMENETRW = 0;
    OUTCOMENETSH = 0;
    WRITTENWASTE = 0;
    AVALIABLE_NET = 0;
    for
      select
        coalesce(sum(case
                       when ((IT.OPERATIONID = 1) and (ITTRANSPORT.TRANSPORTTYPEID in (0, 1)) and (IT.REGDATE >= :BEGINDATE)) then
                         IT.NET
                     end), 0) INCOMENETAVTO,
        coalesce(sum(case
                       when ((IT.OPERATIONID = 1) and (ITTRANSPORT.TRANSPORTTYPEID = 2) and (IT.REGDATE >= :BEGINDATE)) then
                          IT.NET
                     end), 0) INCOMENETRW,
        coalesce(sum(case
                       when ((IT.OPERATIONID = 5) and (ITTRANSPORT.TRANSPORTTYPEID in (0, 1)) and (IT.REGDATE >= :BEGINDATE)) then
                         IT.NET
                     end), 0) OUTCOMENETAVTO,
        coalesce(sum(case
                       when ((IT.OPERATIONID = 5) and (ITTRANSPORT.TRANSPORTTYPEID = 2) and (IT.REGDATE >= :BEGINDATE)) then
                          IT.NET
                     end), 0) OUTCOMENETRW,
        coalesce(sum(case
                       when ((IT.OPERATIONID = 5) and (ITTRANSPORT.TRANSPORTTYPEID = 3) and (IT.REGDATE >= :BEGINDATE)) then
                          IT.NET
                     end), 0) OUTCOMENETSH,
        coalesce(sum(case
                       when ((IT.OPERATIONID in (9, 22)) and (IT.REGDATE >= :BEGINDATE)) then
                          IT.NET
                     end), 0) WRITTENWASTE,
        coalesce(sum(case
                       when ((IT.OPERATIONID in (1, 18)) and (IT.REGDATE < :BEGINDATE)) then
                         IT.NET
                       when ((IT.OPERATIONID in (5, 9, 22)) and (IT.REGDATE < :BEGINDATE)) then
                         -IT.NET
                     end), 0) INITIAL_NET
        from IT
          join GETWORKPARTIES(:PARTYID, :PARTYDATE, :ACROPID, :ACLASSID, null) on (GETWORKPARTIES.PARTYID = IT.PARTYID)
          left join QUALITY on (QUALITY.QUALITYID = IT.SAMPLERQUALITYID)
          left join ITTRANSPORT on (ITTRANSPORT.INVENTORYID = IT.INVENTORYID)
        where (IT.REGDATE <= :ENDDATE)
          and ((QUALITY.CROPID = :ACROPID) and (QUALITY.CLASSID = :ACLASSID))
          and (IT.STATE >= 0)
          and (IT.PARENTID >= 0)
          and ((not IT.NET is null) and (IT.NET <> 0))
          and (IT.OPERATIONID in (1, 5, 9, 18, 22))
      into :INCOMENETAVTO, :INCOMENETRW,
           :OUTCOMENETAVTO, :OUTCOMENETRW, :OUTCOMENETSH, :WRITTENWASTE,
           :INITIAL_NET
      do begin
        AVALIABLE_NET = :INITIAL_NET + :INCOMENETAVTO + :INCOMENETRW + :INCOMENETSH - :OUTCOMENETAVTO - :OUTCOMENETRW - :OUTCOMENETSH - :WRITTENWASTE;
        INCOMENET = :INCOMENETAVTO + :INCOMENETRW + :INCOMENETSH;
        OUTCOMENET = :OUTCOMENETAVTO + :OUTCOMENETRW + :OUTCOMENETSH;
        if ((:INITIAL_NET + :INCOMENETAVTO + :INCOMENETRW + :INCOMENETSH + :OUTCOMENETAVTO + :OUTCOMENETRW + :OUTCOMENETSH) <> 0) then
         suspend;
      end
   end
end
         
         
         
       |