Входные параметры
Параметр  | Тип  | Описание  | 
|---|---|---|
REGDATE  | 
    DATE  | 
    
  | 
  
OWNERID  | 
    INTEGER  | 
    
  | 
  
CONTRACTID  | 
    INTEGER  | 
    
  | 
  
PROVIDERID  | 
    INTEGER  | 
    
  | 
  
STORAGEID  | 
    INTEGER  | 
    
  | 
  
OPERATIONID  | 
    INTEGER  | 
    
  | 
  
STORINGID  | 
    INTEGER  | 
    
  | 
  
PACKID  | 
    INTEGER  | 
    
  | 
  
PARTYID  | 
    INTEGER  | 
    
  | 
  
PARTYDATE  | 
    DATE  | 
    
  | 
  
CROPID  | 
    INTEGER  | 
    
  | 
  
CLASSID  | 
    INTEGER  | 
    
  | 
  
SORTID  | 
    INTEGER  | 
    
  | 
  
HUMIDITY  | 
    NUMERIC(5,2)  | 
    
  | 
  
DIRT  | 
    NUMERIC(5,2)  | 
    
  | 
  
QUALITYNUMBER  | 
    INTEGER  | 
    
  | 
  
TRANSPORTSUBTYPE  | 
    INTEGER  | 
    
  | 
  
ORDERLOADID  | 
    INTEGER  | 
    
  | 
  
NEWORDERLOADITEMID  | 
    INTEGER  | 
    
  | 
  
NEWOWNERID  | 
    INTEGER  | 
    
  | 
  
NEWPROVIDERID  | 
    INTEGER  | 
    
  | 
  
NEWCONTRACTID  | 
    INTEGER  | 
    
  | 
  
NEWSTORAGEID  | 
    INTEGER  | 
    
  | 
  
NEWSTORINGID  | 
    INTEGER  | 
    
  | 
  
NEWPACKID  | 
    INTEGER  | 
    
  | 
  
UPDATEQUALITY  | 
    SMALLINT  | 
    
  | 
  
NEWPARTYID  | 
    INTEGER  | 
    
  | 
  
NEWCROPID  | 
    INTEGER  | 
    
  | 
  
NEWCLASSID  | 
    INTEGER  | 
    
  | 
  
NEWSORTID  | 
    INTEGER  | 
    
  | 
  
NEWHUM  | 
    NUMERIC(5,2)  | 
    
  | 
  
NEWDIRT  | 
    NUMERIC(5,2)  | 
    
  | 
  
NEWQNUM  | 
    INTEGER  | 
    
  | 
  
NEWBUHQUALITYID  | 
    INTEGER  | 
    
  | 
  
NEWHARVESTYEAR  | 
    INTEGER  | 
    
  | 
  
Выходные параметры
(Нет выходных параметров)
Описание
(Нет описания для процедуры ACC_OUTCOMEGROUPS_UPDATE)
Определение
CREATE PROCEDURE ACC_OUTCOMEGROUPS_UPDATE(
    REGDATE DATE,
    OWNERID INTEGER,
    CONTRACTID INTEGER,
    PROVIDERID INTEGER,
    STORAGEID INTEGER,
    OPERATIONID INTEGER,
    STORINGID INTEGER,
    PACKID INTEGER,
    PARTYID INTEGER,
    PARTYDATE DATE,
    CROPID INTEGER,
    CLASSID INTEGER,
    SORTID INTEGER,
    HUMIDITY NUMERIC(5,2),
    DIRT NUMERIC(5,2),
    QUALITYNUMBER INTEGER,
    TRANSPORTSUBTYPE INTEGER,
    ORDERLOADID INTEGER,
    NEWORDERLOADITEMID INTEGER,
    NEWOWNERID INTEGER,
    NEWPROVIDERID INTEGER,
    NEWCONTRACTID INTEGER,
    NEWSTORAGEID INTEGER,
    NEWSTORINGID INTEGER,
    NEWPACKID INTEGER,
    UPDATEQUALITY SMALLINT,
    NEWPARTYID INTEGER,
    NEWCROPID INTEGER,
    NEWCLASSID INTEGER,
    NEWSORTID INTEGER,
    NEWHUM NUMERIC(5,2),
    NEWDIRT NUMERIC(5,2),
    NEWQNUM INTEGER,
    NEWBUHQUALITYID INTEGER,
    NEWHARVESTYEAR INTEGER)
AS
declare variable INVENTORYID integer;
declare variable SAMPLERQUALITYID integer;
declare variable LABQUALITYID integer;
begin
  for
    select IT.INVENTORYID, IT.SAMPLERQUALITYID, coalesce(IT.LABQUALITYID,:NEWBUHQUALITYID)
      from IT
        join GETWORKPARTIES(:PARTYID, :PARTYDATE, null, null, null) on (GETWORKPARTIES.PARTYID = IT.PARTYID)
        left join INVOICES on (INVOICES.INVOICEID = IT.INVOICEID)
        left join ITTRANSPORT on (ITTRANSPORT.INVENTORYID = IT.INVENTORYID)
        left join ORDERLOADITEMS on (ORDERLOADITEMS.ORDERLOADITEMID = IT.ORDERLOADITEMID)
        left join ORDERLOAD on (ORDERLOAD.ORDERLOADID = ORDERLOADITEMS.ORDERLOADID)
        left join STATIONS on (STATIONS.STATIONID = INVOICES.STATIONID)
        left join OPERATION on (OPERATION.OPERATIONID = IT.OPERATIONID)
        left join QUALITY Q on (Q.QUALITYID = IT.SAMPLERQUALITYID)
        left join QUALITY_CROPFULLNAME(Q.CROPID, Q.CLASSID, null, 1) FULLNAME on (0=0)
        left join QUALITYDATA_SELECT_MIN(IT.BUHQUALITYID) QLAB on (0=0)
        left join CROPSORT on (CROPSORT.SORTID = Q.SORTID)
        left join CLIENTS OWNER on (OWNER.CLIENTID = IT.OWNERID)
        left join CONTRACTS on (CONTRACTS.CONTRACTID = IT.CONTRACTID)
        left join PACKS on (PACKS.PACKID = IT.PACKID)
        left join STORAGE on (STORAGE.STORAGEID = IT.STORAGEID)
        left join STORING on (STORING.STORINGID = IT.STORINGID)
        left join TRANSPORTTYPE on (TRANSPORTTYPE.TRANSPORTTYPEID = ITTRANSPORT.TRANSPORTTYPEID)
        left join CLIENTS PROVIDER on (PROVIDER.CLIENTID = IT.PROVIDERID)
      where (IT.REGDATE = :REGDATE) and (IT.PARENTID >= 0) and (IT.STATE >= 0)
        and (IT.OPERATIONID = :OPERATIONID) and (IT.STORAGEID = :STORAGEID)
        and (coalesce(IT.STORINGID,0) = :STORINGID)
        and (coalesce(IT.OWNERID,0) = :OWNERID)
        and (coalesce(IT.CONTRACTID,0) = :CONTRACTID)
        and (coalesce(IT.PROVIDERID,0) = :PROVIDERID)
        and (coalesce(IT.PACKID,0) = :PACKID)
        and (Q.CROPID = :CROPID) and (coalesce(Q.CLASSID,0) = :CLASSID)
        and (coalesce(Q.SORTID,0) = :SORTID)
        and (coalesce(QLAB.HUMIDITY,0) = :HUMIDITY)
        and (coalesce(QLAB.DIRT,0) = :DIRT)
        and (coalesce(QLAB.QUALITYNUMBER,0) = :QUALITYNUMBER)
        and (coalesce(TRANSPORTTYPE.TRANSPORTSUBTYPE,0) = :TRANSPORTSUBTYPE)
        and (coalesce(ORDERLOAD.ORDERLOADID,0) = :ORDERLOADID)
--   and cs.STORAGEID is null
    into :INVENTORYID, :SAMPLERQUALITYID, :LABQUALITYID
  do begin
    update IT
      set PARTYID = :NEWPARTYID,
          ORDERLOADITEMID = :NEWORDERLOADITEMID,
          OWNERID = :NEWOWNERID,
          PROVIDERID = :NEWPROVIDERID,
          CONTRACTID = :NEWCONTRACTID,
          STORAGEID = :NEWSTORAGEID,
          STORINGID = :NEWSTORINGID,
          PACKID = :NEWPACKID,
          LABQUALITYID = :LABQUALITYID
      where (INVENTORYID = :INVENTORYID);
    if (:UPDATEQUALITY = 1) then begin
      update QUALITY
        set CROPID = :NEWCROPID,
            CLASSID = :NEWCLASSID,
            SORTID = :NEWSORTID
        where (QUALITYID = :SAMPLERQUALITYID);
      if (:LABQUALITYID is not null) then begin
        update QUALITY
          set CROPID = :NEWCROPID,
              CLASSID = :NEWCLASSID,
              SORTID = :NEWSORTID
          where (QUALITYID = :LABQUALITYID);
        if (row_count = 0) then
          insert into QUALITY(QUALITYID, CROPID, CLASSID, SORTID)
            values (:LABQUALITYID, :NEWCROPID, :NEWCLASSID, :NEWSORTID);
        if (:NEWQNUM is null) then
          delete from QUALITYDATA
            where ((QUALITYDATA.QUALITYID = :LABQUALITYID) and (QUALITYDATA.QUALITYTYPEID = 1));
        else begin
          update QUALITYDATA
            set QUALITYVALUE = :NEWQNUM
            where ((QUALITYID = :LABQUALITYID) and (QUALITYTYPEID = 1));
          if (row_count = 0) then
            insert into QUALITYDATA(QUALITYID, QUALITYTYPEID, QUALITYVALUE)
              values (:LABQUALITYID, 1, :NEWQNUM);
        end
        if (:NEWHUM is null) then
          delete from QUALITYDATA
            where ((QUALITYDATA.QUALITYID = :LABQUALITYID) and (QUALITYDATA.QUALITYTYPEID = 2));
        else begin
          update QUALITYDATA
            set QUALITYVALUE = :NEWHUM
            where ((QUALITYID = :LABQUALITYID) and (QUALITYTYPEID = 2));
          if (row_count = 0) then
            insert into QUALITYDATA(QUALITYID, QUALITYTYPEID, QUALITYVALUE)
              values (:LABQUALITYID, 2, :NEWHUM);
        end
        if (:NEWDIRT is null) then
          delete from QUALITYDATA
            where ((QUALITYDATA.QUALITYID = :LABQUALITYID) and (QUALITYDATA.QUALITYTYPEID = 13));
        else begin
          update QUALITYDATA
            set QUALITYVALUE = :NEWDIRT
            where ((QUALITYID = :LABQUALITYID) and (QUALITYTYPEID = 13));
          if (row_count = 0) then
            insert into QUALITYDATA(QUALITYID, QUALITYTYPEID, QUALITYVALUE)
              values (:LABQUALITYID, 13, :NEWDIRT);
        end
        if (:NEWHARVESTYEAR is null) then
          delete from QUALITYDATA
            where ((QUALITYDATA.QUALITYID = :LABQUALITYID) and (QUALITYDATA.QUALITYTYPEID = 6));
        else begin
          update QUALITYDATA
            set QUALITYVALUE = :NEWHARVESTYEAR
            where ((QUALITYID = :LABQUALITYID) and (QUALITYTYPEID = 6));
          if (row_count = 0) then
            insert into QUALITYDATA(QUALITYID, QUALITYTYPEID, QUALITYVALUE)
              values (:LABQUALITYID, 6, :NEWHARVESTYEAR);
        end
      end
    end
  end
end
         
         
         
       |