Входные параметры
Параметр  | Тип  | Описание  | 
|---|---|---|
OWNERID  | 
    INTEGER  | 
    
  | 
  
INVENTORYID  | 
    INTEGER  | 
    
  | 
  
STARTDATE  | 
    DATE  | 
    
  | 
  
MINEXP  | 
    INTEGER  | 
    
  | 
  
BEGPARTYDATE  | 
    DATE  | 
    
  | 
  
BEGINDATE  | 
    DATE  | 
    
  | 
  
ENDDATE  | 
    DATE  | 
    
  | 
  
Выходные параметры
Параметр  | Тип  | Описание  | 
|---|---|---|
CURBEGINDATE  | 
    DATE  | 
    
  | 
  
CURENDDATE  | 
    DATE  | 
    
  | 
  
CURINCOME  | 
    INTEGER  | 
    
  | 
  
CUROUTCOME  | 
    INTEGER  | 
    
  | 
  
CURWEIGHT  | 
    INTEGER  | 
    
  | 
  
DESCRIPTION  | 
    VARCHAR(405)  | 
    
  | 
  
Описание
(Нет описания для процедуры AC_STORE_ILI_DATEWEIGHT)
Определение
CREATE PROCEDURE AC_STORE_ILI_DATEWEIGHT(
    OWNERID INTEGER,
    INVENTORYID INTEGER,
    STARTDATE DATE,
    MINEXP INTEGER,
    BEGPARTYDATE DATE,
    BEGINDATE DATE,
    ENDDATE DATE)
RETURNS (
    CURBEGINDATE DATE,
    CURENDDATE DATE,
    CURINCOME INTEGER,
    CUROUTCOME INTEGER,
    CURWEIGHT INTEGER,
    DESCRIPTION VARCHAR(405))
AS
declare variable OPERATIONNAME varchar(150);
declare variable ISFIRST integer = 1;
declare variable FLAGSAME integer;
declare variable RECORDCOUNT integer = 0;
declare variable OUTCOME integer;
declare variable INCOME integer;
declare variable WEIGHT integer;
declare variable CURDATE date;
declare variable D1 date;
begin
  select count(DESCRIPT)
    from (
      select
          case
            when (EAI.OPERATIONID in (22,70)) then
              IT.REGDATE
            else EA.REGDATE
          end REGDATE,
          AC_STORE_ILI_WEIGHT.ALLINCOME ALLINCOME, AC_STORE_ILI_WEIGHT.ALLOUTCOME ALLOUTCOME,
          AC_STORE_ILI_WEIGHT.SUMWEIGHT SUMWEIGHT, AC_STORE_ILI_WEIGHT.DESCRIPT DESCRIPT
        from EXPORTACTITEMS EAI
          left join EXPORTACTS EA on ((EA.EXPORTACTID = EAI.EXPORTACTID) and (EA.STATE in (0,1)))
          left join IT on ((IT.INVENTORYID = EAI.INVENTORYID) and (IT.STATE in (0,1,-20)))
          join AC_STORE_ILI_WEIGHT(:OWNERID, :MINEXP,
                                   case
                                     when (EAI.OPERATIONID in (22,70)) then
                                       IT.REGDATE
                                     else EA.REGDATE
                                   end) on (0=0)
        where ((EAI.INVENTORYID = :INVENTORYID)
               or ((EAI.PARENTITEMID = :MINEXP) and (EAI.OPERATIONID in (5,22,64,70))))
          and (((EAI.OPERATIONID in (22,70)) and (IT.REGDATE between :BEGPARTYDATE and :ENDDATE))
               or ((EAI.OPERATIONID not in (22,70)) and (EA.REGDATE between :BEGPARTYDATE and :ENDDATE)))
          and (EAI.OPERATIONID > 0)
      group by 1, 2, 3, 4, 5
    )
  into :RECORDCOUNT;
  for
    select
        case
          when (EAI.OPERATIONID in (22,70)) then
            IT.REGDATE
          else EA.REGDATE
        end,
        AC_STORE_ILI_WEIGHT.ALLINCOME, AC_STORE_ILI_WEIGHT.ALLOUTCOME,
        AC_STORE_ILI_WEIGHT.SUMWEIGHT, AC_STORE_ILI_WEIGHT.DESCRIPT
      from EXPORTACTITEMS EAI
        left join EXPORTACTS EA on ((EA.EXPORTACTID = EAI.EXPORTACTID) and (EA.STATE in (0,1)))
        left join IT on ((IT.INVENTORYID = EAI.INVENTORYID) and (IT.STATE in (0,1,-20)))
        join AC_STORE_ILI_WEIGHT(:OWNERID, :MINEXP,
                                 case
                                   when (EAI.OPERATIONID in (22,70)) then
                                     IT.REGDATE
                                   else EA.REGDATE
                                 end) on (0=0)
      where ((EAI.INVENTORYID = :INVENTORYID)
             or ((EAI.PARENTITEMID = :MINEXP) and (EAI.OPERATIONID in (5,22,64,70))))
        and (((EAI.OPERATIONID in (22,70)) and (IT.REGDATE between :BEGPARTYDATE and :ENDDATE))
             or ((EAI.OPERATIONID not in (22,70)) and (EA.REGDATE between :BEGPARTYDATE and :ENDDATE)))
        and (EAI.OPERATIONID > 0)
    group by 1, 2, 3, 4, 5
    order by 2 desc, 1
    into :CURDATE, :INCOME, :OUTCOME, :WEIGHT, :OPERATIONNAME
  do begin
    FLAGSAME = 0;
    CURENDDATE = null;
    CUROUTCOME = 0;
    if (:ISFIRST = 1) then begin
      CURINCOME = :INCOME;
      CURWEIGHT = :WEIGHT;
      CURBEGINDATE = :CURDATE;
      if (:RECORDCOUNT = 1) then
        CURENDDATE = :ENDDATE;
      D1 = :CURDATE;
      DESCRIPTION = OPERATIONNAME;
    end
    else begin
      if (CURDATE <> D1) then begin
        FLAGSAME = 0;
        D1 = :CURDATE;
      end
      else FLAGSAME = 1;
      if (:WEIGHT < 0) then begin
        if ((CURWEIGHT + WEIGHT) >= 0) then begin
          if (FLAGSAME = 0) then begin
            CUROUTCOME = :OUTCOME;
            if (DESCRIPTION <> '') then
              DESCRIPTION = DESCRIPTION || '; ';
            DESCRIPTION = DESCRIPTION || OPERATIONNAME;
            if ((CURDATE >= :BEGINDATE) and (CURDATE <= :ENDDATE)) then begin
              CURENDDATE = CURDATE;
              suspend;
            end
            CURBEGINDATE = :CURDATE;
          end
        end
        if (FLAGSAME = 1) then begin
          if ((CURDATE >= :BEGINDATE) and (CURDATE <= :ENDDATE)) then begin
            CURENDDATE = CURDATE;
            CUROUTCOME = :OUTCOME;
            DESCRIPTION = DESCRIPTION || '; "' || OPERATIONNAME || '"';
          end
          else begin
            CURINCOME = CURWEIGHT + WEIGHT;
            DESCRIPTION = 'Остаток от операции "' || OPERATIONNAME || '"';
          end
          CURWEIGHT = CURWEIGHT + :WEIGHT;
        end
        else
          if (FLAGSAME = 0) then begin
            if (((CURDATE >= :BEGINDATE) and (CURDATE <= :ENDDATE)) or (ISFIRST = RECORDCOUNT)) then
              if (((CURENDDATE is not null) and (CURBEGINDATE <> CURENDDATE)) or (ISFIRST = RECORDCOUNT)) then
                CURENDDATE = :ENDDATE;
              else CURENDDATE = null;
            CURINCOME = CURWEIGHT + WEIGHT;
            CUROUTCOME = 0;
            CURWEIGHT = CURWEIGHT + :WEIGHT;
            DESCRIPTION = 'Остаток от операции "' || OPERATIONNAME || '"';
        end
      end
    end
    ISFIRST = ISFIRST + 1;
    if ((CURENDDATE is not null) and (CURWEIGHT <> 0)) then
      suspend;
  end
end
         
         
         
       |