Входные параметры
Параметр  | Тип  | Описание  | 
|---|---|---|
DATEBEGIN  | 
    DATE  | 
    
  | 
  
DATEEND  | 
    DATE  | 
    
  | 
  
CROPID  | 
    INTEGER  | 
    
  | 
  
PARTYID  | 
    INTEGER  | 
    
  | 
  
PARTYDATE  | 
    DATE  | 
    
  | 
  
GROUPBYPROV  | 
    SMALLINT  | 
    
  | 
  
INCLASSID  | 
    INTEGER  | 
    
  | 
  
AZHS  | 
    INTEGER  | 
    
  | 
  
ASTORAGEID  | 
    INTEGER  | 
    
  | 
  
AUTONUMBERING  | 
    INTEGER  | 
    
  | 
  
NOTDIVIDENUMBERING  | 
    INTEGER  | 
    
  | 
  
Выходные параметры
Параметр  | Тип  | Описание  | 
|---|---|---|
BASHUM  | 
    NUMERIC(5,2)  | 
    
  | 
  
BASDIRT  | 
    NUMERIC(5,2)  | 
    
  | 
  
BASSC  | 
    NUMERIC(5,2)  | 
    
  | 
  
BUHQUALITYID  | 
    INTEGER  | 
    
  | 
  
HUM  | 
    NUMERIC(5,2)  | 
    
  | 
  
DIRT  | 
    NUMERIC(5,2)  | 
    
  | 
  
SCREEN  | 
    NUMERIC(5,2)  | 
    
  | 
  
PROVIDERNAME  | 
    VARCHAR(30)  | 
    
  | 
  
OWNERNAME  | 
    VARCHAR(30)  | 
    
  | 
  
CROPFULLNAME  | 
    VARCHAR(100)  | 
    
  | 
  
NET  | 
    INTEGER  | 
    
  | 
  
WEIGHT  | 
    INTEGER  | 
    
  | 
  
REGDATE  | 
    DATE  | 
    
  | 
  
REGNUM  | 
    INTEGER  | 
    
  | 
  
ACROPID  | 
    INTEGER  | 
    
  | 
  
CLASSID  | 
    INTEGER  | 
    
  | 
  
INCOMECOST  | 
    NUMERIC(12,4)  | 
    
  | 
  
DRYCOST  | 
    NUMERIC(12,4)  | 
    
  | 
  
CLEANCOST  | 
    NUMERIC(12,4)  | 
    
  | 
  
CONTRACTID  | 
    INTEGER  | 
    
  | 
  
CONTRACTNUMBER  | 
    VARCHAR(31)  | 
    
  | 
  
REGISTERID  | 
    INTEGER  | 
    
  | 
  
STORTICKNUM  | 
    INTEGER  | 
    
  | 
  
STORTICKBLANKNUM  | 
    VARCHAR(6)  | 
    
  | 
  
STORTICKBLANKSERIE  | 
    VARCHAR(2)  | 
    
  | 
  
OWNERID  | 
    INTEGER  | 
    
  | 
  
QUALITYNUMBER  | 
    INTEGER  | 
    
  | 
  
PROVIDER  | 
    INTEGER  | 
    
  | 
  
INVOICEID  | 
    INTEGER  | 
    
  | 
  
INVOICENUMBER  | 
    VARCHAR(31)  | 
    
  | 
  
TRANSPORTTYPE  | 
    INTEGER  | 
    
  | 
  
INNERRELOCATION  | 
    SMALLINT  | 
    
  | 
  
HUMWEIGHT  | 
    INTEGER  | 
    
  | 
  
DRYWEIGHT  | 
    INTEGER  | 
    
  | 
  
SCREENWEIGHT  | 
    INTEGER  | 
    
  | 
  
ZHS  | 
    SMALLINT  | 
    
  | 
  
STORAGEID  | 
    INTEGER  | 
    
  | 
  
STORAGENAME  | 
    VARCHAR(15)  | 
    
  | 
  
HUMIDITYSTATE  | 
    NUMERIC(4,2)  | 
    
  | 
  
DIRTSTATE  | 
    NUMERIC(4,2)  | 
    
  | 
  
Описание
(Нет описания для процедуры REGISTERS_SELECT_TTNS)
Определение
CREATE PROCEDURE REGISTERS_SELECT_TTNS(
    DATEBEGIN DATE,
    DATEEND DATE,
    CROPID INTEGER,
    PARTYID INTEGER,
    PARTYDATE DATE,
    GROUPBYPROV SMALLINT,
    INCLASSID INTEGER,
    AZHS INTEGER,
    ASTORAGEID INTEGER,
    AUTONUMBERING INTEGER,
    NOTDIVIDENUMBERING INTEGER)
RETURNS (
    BASHUM NUMERIC(5,2),
    BASDIRT NUMERIC(5,2),
    BASSC NUMERIC(5,2),
    BUHQUALITYID INTEGER,
    HUM NUMERIC(5,2),
    DIRT NUMERIC(5,2),
    SCREEN NUMERIC(5,2),
    PROVIDERNAME VARCHAR(30),
    OWNERNAME VARCHAR(30),
    CROPFULLNAME VARCHAR(100),
    NET INTEGER,
    WEIGHT INTEGER,
    REGDATE DATE,
    REGNUM INTEGER,
    ACROPID INTEGER,
    CLASSID INTEGER,
    INCOMECOST NUMERIC(12,4),
    DRYCOST NUMERIC(12,4),
    CLEANCOST NUMERIC(12,4),
    CONTRACTID INTEGER,
    CONTRACTNUMBER VARCHAR(31),
    REGISTERID INTEGER,
    STORTICKNUM INTEGER,
    STORTICKBLANKNUM VARCHAR(6),
    STORTICKBLANKSERIE VARCHAR(2),
    OWNERID INTEGER,
    QUALITYNUMBER INTEGER,
    PROVIDER INTEGER,
    INVOICEID INTEGER,
    INVOICENUMBER VARCHAR(31),
    TRANSPORTTYPE INTEGER,
    INNERRELOCATION SMALLINT,
    HUMWEIGHT INTEGER,
    DRYWEIGHT INTEGER,
    SCREENWEIGHT INTEGER,
    ZHS SMALLINT,
    STORAGEID INTEGER,
    STORAGENAME VARCHAR(15),
    HUMIDITYSTATE NUMERIC(4,2),
    DIRTSTATE NUMERIC(4,2))
AS
declare variable TEMPQ integer;
declare variable TEMPDATE date;
declare variable TEMPOWN integer;
declare variable TEMPCONTR integer;
declare variable TEMPPROV integer;
declare variable TEMPCLASS integer;
declare variable TEMPHUM numeric(5,2);
declare variable TEMPDIRT numeric(5,2);
declare variable MAXREGNUM integer;
declare variable MAXREGNUMZD integer;
declare variable MAXREGNUMAVTO integer;
declare variable REGID integer;
declare variable TEMPREGID integer;
declare variable STATIONID integer;
declare variable TEMPSTATIONID integer;
declare variable TEMPTRANSPORTTYPE integer;
declare variable TEMPHUMIDITYSTATE numeric(4,2);
declare variable TEMPDIRTSTATE numeric(4,2);
declare variable SORTINDEX integer;
begin
  TEMPQ = 0;
  TEMPOWN = 0;
  TEMPCONTR = 0;
  TEMPPROV = 0;
  TEMPDATE = null;
  TEMPCLASS = null;
  TEMPHUM = 0;
  TEMPDIRT = 0;
  TEMPREGID = 0;
  TEMPSTATIONID = 0;
  TEMPTRANSPORTTYPE = 0;
  if (:NOTDIVIDENUMBERING = 0) then begin
    select first 1
        INVOICEREGISTERS.REGISTERNUMBER REGISTERNUMBER, INVOICEREGISTERS.INVOICEREGISTERID INVOICEREGISTERID
      from IT
        join ITTRANSPORT on (ITTRANSPORT.INVENTORYID = IT.INVENTORYID)
        join INVOICEREGISTERS on ((INVOICEREGISTERS.INVOICEREGISTERID = IT.REGISTERID) and (INVOICEREGISTERS.REGISTERNUMBER is not null))
      where ((IT.STORAGEID = :ASTORAGEID) or (coalesce(:ASTORAGEID,-1) = -1)) -- new
        and (ITTRANSPORT.TRANSPORTTYPEID in (0,1))
        and (INVOICEREGISTERS.REGISTERNUMBER is not null)
    order by INVOICEREGISTERS.INVOICEREGISTERID desc
    into :MAXREGNUMAVTO, :REGID;
    select first 1
        INVOICEREGISTERS.REGISTERNUMBER, INVOICEREGISTERS.INVOICEREGISTERID
      from IT
        join ITTRANSPORT on (ITTRANSPORT.INVENTORYID = IT.INVENTORYID)
        join INVOICEREGISTERS on ((INVOICEREGISTERS.INVOICEREGISTERID = IT.REGISTERID) and (INVOICEREGISTERS.REGISTERNUMBER is not null))
      where ((IT.STORAGEID = :ASTORAGEID) or (coalesce(:ASTORAGEID,-1) = -1)) -- new
        and (not (ITTRANSPORT.TRANSPORTTYPEID in (0,1,3)))
        and (INVOICEREGISTERS.REGISTERNUMBER is not null)
--        and (ITTRANSPORT.TRANSPORTTYPEID = 2)
    order by INVOICEREGISTERS.INVOICEREGISTERID desc
    into :MAXREGNUMZD, :REGID;
  end
  else
    select first 1
        INVOICEREGISTERS.REGISTERNUMBER, INVOICEREGISTERS.INVOICEREGISTERID
      from IT
        join INVOICEREGISTERS on (INVOICEREGISTERS.INVOICEREGISTERID = IT.REGISTERID)
      where ((IT.STORAGEID = :ASTORAGEID) or (coalesce(:ASTORAGEID,-1) = -1))  -- new
        and (INVOICEREGISTERS.REGISTERNUMBER is not null)
      order by INVOICEREGISTERS.INVOICEREGISTERID desc
      into :MAXREGNUM, :REGID;
  for
    select IT.REGDATE, INVOICEREGISTERS.REGISTERNUMBER, TRANSPORTTYPE.TRANSPORTSUBTYPE,
        INVOICEREGISTERS.INVOICEREGISTERID, INVOICEREGISTERS.ZHS, IT.OWNERID,
        IT.CONTRACTID, FUL.CROPFULLNAME, IT.INVOICEID, IT.BUHQUALITYID, LABQD.QUALITYNUMBER,
        LABQD.HUMIDITY, GET_GRAINSTATE.HUMIDITYSTATE, LABQD.DIRT, GET_GRAINSTATE.DIRTSTATE,
        case
          when (CROP.CROPTYPEID = 5) then
            LABQD.OILSEED
          else LABQD.SCREENING
        end SCREENING,
        IT.PROVIDERID, PROVIDERS.CLIENTNAME, OWNERS.CLIENTNAME,
        sum(IT.NET), sum(IT.WEIGHT), LABQD.CROPID, LABQD.CLASSID,
        BASQ.HUMIDITY, BASQ.DIRT, BASQ.SCREENING,
        INVOICEREGISTERS.INCOMECOST, INVOICEREGISTERS.DRYCOST, INVOICEREGISTERS.UNDERWORKCOST,
        CONTRACTS.CONTRACTNUMBER, STORAGETICKETS.NUMBER, STORAGETICKETS.BLANKSERIES,
        STORAGETICKETS.BLANKNUMBER, INVOICES.INVOICENUMBER, INVOICES.STATIONID,
        case
          when (CS.STORAGEID is null) then
            0
          else 1
        end INNERRELOCATION,
        STORAGE.STORAGEID, STORAGE.STORAGESHORTNAME,                                              -- new
        sum(ITTRANSPORT.HUMWEIGHT), sum(ITTRANSPORT.DIRTWEIGHT), sum(ITTRANSPORT.SCREENWEIGHT),
        case
          when (IT.REGISTERID is not null) then
            1
          else 0
        end SORTINDEX
    from IT
        join GETWORKPARTIES(:PARTYID, :PARTYDATE, null, null, null) on (GETWORKPARTIES.PARTYID = IT.PARTYID)
        left join INVOICES on (IT.INVOICEID = INVOICES.INVOICEID)
        left join INVOICEREGISTERS on (INVOICEREGISTERS.INVOICEREGISTERID = IT.REGISTERID)
        left join QUALITY_SELECT(IT.BUHQUALITYID) LABQD on (0=0)
        left join QUALITYDATA_SELECT_MIN(INVOICEREGISTERS.QUALITYID) BASQ on (0=0)
        left join QUALITY_CROPFULLNAME(LABQD.CROPID, LABQD.CLASSID, null, 1) FUL on (0=0)
        left join STORAGE on (STORAGE.STORAGEID = IT.STORAGEID)
        left join CLIENTS OWNERS on (OWNERS.CLIENTID = IT.OWNERID)
        left join CLIENTS PROVIDERS on (PROVIDERS.CLIENTID = IT.PROVIDERID)
        left join CLIENTS CS on (CS.CLIENTID = INVOICES.SENDERID)
        Left Join OPERATION on (OPERATION.OPERATIONID = IT.OPERATIONID)
        left join CONTRACTS on (CONTRACTS.CONTRACTID = IT.CONTRACTID)
        left join STORAGETICKETS on (STORAGETICKETS.STORAGETICKETID = INVOICEREGISTERS.STORAGETICKETID)
        left join ITTRANSPORT on (ITTRANSPORT.INVENTORYID = IT.INVENTORYID)
        left join TRANSPORTTYPE on (TRANSPORTTYPE.TRANSPORTTYPEID = ITTRANSPORT.TRANSPORTTYPEID)
        left join CROP on (CROP.CROPID = LABQD.CROPID)
        left join GET_GRAINSTATE(LABQD.CROPID, LABQD.CLASSID, LABQD.HUMIDITY, LABQD.DIRT) on (0=0)
      where (IT.REGDATE between :DATEBEGIN and :DATEEND) and (IT.OPERATIONID not in (17,4,18,49,50))
        and (IT.NET is not null) and (IT.STATE >= 0) and (IT.PARENTID <> -1)
        and ((IT.STORAGEID = :ASTORAGEID) or (coalesce(:ASTORAGEID,-1) = -1))  -- new
        and (STORAGE.STORAGETYPEID = 1) and (OPERATION.OPERATIONSUBTYPE = 0)
        and ((LABQD.CROPID = :CROPID) or (coalesce(:CROPID,-1) = -1))
        and ((LABQD.CLASSID = :INCLASSID) or (coalesce(:INCLASSID,-1) = -1))
        and ((LABQD.HUMIDITY is not null) or (LABQD.DIRT is not null))
    group by IT.REGDATE, INVOICEREGISTERS.REGISTERNUMBER, TRANSPORTTYPE.TRANSPORTSUBTYPE,
        INVOICEREGISTERS.ZHS, INVOICEREGISTERS.INVOICEREGISTERID, IT.OWNERID, IT.CONTRACTID,
        FUL.CROPFULLNAME, IT.INVOICEID, IT.BUHQUALITYID, LABQD.QUALITYNUMBER, LABQD.DIRT,
        LABQD.HUMIDITY, GET_GRAINSTATE.HUMIDITYSTATE, GET_GRAINSTATE.DIRTSTATE, 16, IT.PROVIDERID,
        PROVIDERS.CLIENTNAME, OWNERS.CLIENTNAME, LABQD.CROPID, LABQD.CLASSID, BASQ.HUMIDITY, BASQ.DIRT,
        INVOICEREGISTERS.INCOMECOST, INVOICEREGISTERS.DRYCOST, INVOICEREGISTERS.UNDERWORKCOST,
        CONTRACTS.CONTRACTNUMBER, BASQ.SCREENING, STORAGETICKETS.NUMBER, STORAGETICKETS.BLANKSERIES,
        STORAGETICKETS.BLANKNUMBER, INVOICES.INVOICENUMBER, INVOICES.STATIONID, STORAGE.STORAGEID,
        STORAGE.STORAGESHORTNAME, INNERRELOCATION, SORTINDEX
    order by SORTINDEX, TRANSPORTTYPE.TRANSPORTSUBTYPE, IT.OWNERID, IT.CONTRACTID,
        LABQD.CROPID, LABQD.CLASSID, GET_GRAINSTATE.HUMIDITYSTATE, GET_GRAINSTATE.DIRTSTATE
    into :REGDATE, :REGNUM, :TRANSPORTTYPE, :REGISTERID, :ZHS, :OWNERID, :CONTRACTID,
         :CROPFULLNAME, :INVOICEID, :BUHQUALITYID, :QUALITYNUMBER, :HUM, :HUMIDITYSTATE,
         :DIRT, :DIRTSTATE, :SCREEN, :PROVIDER, :PROVIDERNAME, :OWNERNAME, :NET,
         :WEIGHT, :ACROPID, :CLASSID, :BASHUM, :BASDIRT, :BASSC, :INCOMECOST, :DRYCOST,
         :CLEANCOST, :CONTRACTNUMBER, :STORTICKNUM, :STORTICKBLANKSERIE, :STORTICKBLANKNUM,
         :INVOICENUMBER, :STATIONID, :INNERRELOCATION, :STORAGEID, :STORAGENAME,
         :HUMWEIGHT, :DRYWEIGHT, :SCREENWEIGHT, :SORTINDEX
  do begin
    if (:REGISTERID is null) then begin
      if (:AUTONUMBERING = 0) then
        REGNUM = QUALITYNUMBER;
      else begin
        if (((:TEMPOWN <> :OWNERID) or (:TEMPDATE <> :REGDATE)
             or ((:TEMPPROV <> :PROVIDER) and (:GROUPBYPROV = 1))
             or (coalesce(:TEMPCONTR,-1) <> coalesce(:CONTRACTID,-1))
             or (:CLASSID <> :TEMPCLASS)
             or (:TRANSPORTTYPE <> :TEMPTRANSPORTTYPE)
             or (((:MAXREGNUMAVTO is null) and (:TRANSPORTTYPE = 0))
                 and ((:MAXREGNUMZD is null) and (:TRANSPORTTYPE = 1)))
             or (coalesce(:REGISTERID,-1) <> coalesce(:TEMPREGID,-1)))
            or (((:TEMPQ <> :QUALITYNUMBER) or (:HUM <> :TEMPHUM) or (:DIRT <> :TEMPDIRT))
                and ((:TRANSPORTTYPE <> 1) and (coalesce(:AZHS,3) = 3)))
            or (((:HUMIDITYSTATE <> :TEMPHUMIDITYSTATE) or (:DIRTSTATE <> :TEMPDIRTSTATE))
                and (coalesce(:AZHS,3) = 4))
           ) then begin
          if (:NOTDIVIDENUMBERING = 0) then begin
            if (:TRANSPORTTYPE = 0) then begin
               if (:MAXREGNUMAVTO is null) then
                 MAXREGNUMAVTO = 0;
               MAXREGNUMAVTO = :MAXREGNUMAVTO + 1;
            end
            else
              if (:TRANSPORTTYPE = 1) then begin
                if (:MAXREGNUMZD is null) then
                  MAXREGNUMZD = 0;
                MAXREGNUMZD = :MAXREGNUMZD + 1;
              end
          end
          else begin
            if (:MAXREGNUM is null) then
              MAXREGNUM = 0;
            MAXREGNUM = :MAXREGNUM + 1;
          end
        end
        if (:NOTDIVIDENUMBERING = 0) then begin
          if (:TRANSPORTTYPE = 0) then
            REGNUM = :MAXREGNUMAVTO;
          else
            if (:TRANSPORTTYPE = 1) then
              REGNUM = :MAXREGNUMZD;
        end
        else REGNUM = :MAXREGNUM;
      end
    end
    TEMPDATE = :REGDATE;
    TEMPOWN = :OWNERID;
    TEMPQ = :QUALITYNUMBER;
    TEMPCONTR = :CONTRACTID;
    TEMPPROV = :PROVIDER;
    TEMPCLASS = :CLASSID;
    TEMPHUM = :HUM;
    TEMPHUMIDITYSTATE = :HUMIDITYSTATE;
    TEMPDIRT = :DIRT;
    TEMPDIRTSTATE = :DIRTSTATE;
    TEMPREGID = :REGISTERID;
    TEMPSTATIONID = :STATIONID;
    TEMPTRANSPORTTYPE = :TRANSPORTTYPE;
    if (:GROUPBYPROV = 2) then
      PROVIDER = 0;
    suspend;
  end
end
         
         
         
       |