Входные параметры
Параметр  | Тип  | Описание  | 
|---|---|---|
BEGINDATE  | 
    DATE  | 
    
  | 
  
ENDDATE  | 
    DATE  | 
    
  | 
  
ASTORAGEID  | 
    INTEGER  | 
    
  | 
  
SHOWALLOWNERS  | 
    INTEGER  | 
    
  | 
  
SHOWNOTRECEIVED  | 
    INTEGER  | 
    
  | 
  
SHOWWEIGHTED  | 
    INTEGER  | 
    
  | 
  
SHOWREMOTERECORDS  | 
    INTEGER  | 
    
  | 
  
SHOWDELETED  | 
    INTEGER  | 
    
  | 
  
AOWNERID  | 
    INTEGER  | 
    
  | 
  
ASENDERID  | 
    INTEGER  | 
    
  | 
  
ASTATIONID  | 
    INTEGER  | 
    
  | 
  
ACROPID  | 
    INTEGER  | 
    
  | 
  
ATRANSPORTNUMBER  | 
    VARCHAR(10)  | 
    
  | 
  
AINVOICENUMBER  | 
    VARCHAR(10)  | 
    
  | 
  
Выходные параметры
Параметр  | Тип  | Описание  | 
|---|---|---|
OWNERNAME  | 
    VARCHAR(100)  | 
    Владелец  | 
  
PROVIDERNAME  | 
    VARCHAR(100)  | 
    Поставщик  | 
  
TRANSPORTNUMBER  | 
    VARCHAR(31)  | 
    Номер вагона  | 
  
INVOICENUMBER  | 
    VARCHAR(30)  | 
    Номер накладной  | 
  
INVOICEDATE  | 
    DATE  | 
    Дата накладной  | 
  
SAMPLEROUTDATE  | 
    DATE  | 
    Дата отгрузки  | 
  
SENDERNAME  | 
    VARCHAR(100)  | 
    Экспедитор (отправитель)  | 
  
STATIONNAME  | 
    VARCHAR(128)  | 
    Станция  | 
  
CROPFULLNAME  | 
    VARCHAR(100)  | 
    Культура  | 
  
GMOPRESENCE  | 
    VARCHAR(15)  | 
    Наличие ГМО  | 
  
CERTIFICATENUMBER  | 
    INTEGER  | 
    Сертификат качества  | 
  
CERTIFICATEDATE  | 
    TIMESTAMP  | 
    Дата внесения сертификата качества  | 
  
SNNUMBER  | 
    VARCHAR(30)  | 
    Протокол безопасности  | 
  
INVOICEGROSS  | 
    INTEGER  | 
    Брутто по накладной  | 
  
INVOICETARE  | 
    INTEGER  | 
    Тара по накладной  | 
  
INVOICENET  | 
    INTEGER  | 
    Нетто по накладной  | 
  
DEVIATIONTIME  | 
    VARCHAR(50)  | 
    Обнаружение несоответствия на ИЗТ  | 
  
TARETIME  | 
    TIMESTAMP  | 
    Взвешивание по таре  | 
  
GROSS  | 
    INTEGER  | 
    Брутто на ИЗТ  | 
  
TARE  | 
    INTEGER  | 
    Тара на ИЗТ  | 
  
NET  | 
    INTEGER  | 
    Нетто на ИЗТ  | 
  
GROSSDEFICITE  | 
    INTEGER  | 
    Разница по бруто  | 
  
NETDEFICITE  | 
    INTEGER  | 
    Разница по нетто  | 
  
SCALETYPENAME  | 
    VARCHAR(10)  | 
    Способ определения веса при отгрузке  | 
  
DEVIATIONDESCRIPTION  | 
    VARCHAR(100)  | 
    Причина задержки выгрузки вагона  | 
  
PERMISSIONDESCRIPTION  | 
    VARCHAR(100)  | 
    Принято решение  | 
  
PERMISSIONTIME  | 
    VARCHAR(50)  | 
    Дата и время принятия решения  | 
  
PERMISSIONUSERNAME  | 
    VARCHAR(100)  | 
    Ф.И.О. принявшего решение  | 
  
REMARK  | 
    VARCHAR(100)  | 
    Комментарий  | 
  
WAITINGTIME  | 
    VARCHAR(20)  | 
    Время ожидания решения  | 
  
OVERTIME  | 
    TIME  | 
    Время дополнительных маневровых работ  | 
  
CERTIFICATEPRESENCE  | 
    VARCHAR(10)  | 
    Наличие сертификата  | 
  
SNPRESENCE  | 
    VARCHAR(10)  | 
    Наличие ГМО  | 
  
CONFIRMATIONTIME  | 
    TIMESTAMP  | 
    Время раскредитации  | 
  
INVENTORYID  | 
    INTEGER  | 
    Идентификатор ТТН  | 
  
REGDATE  | 
    DATE  | 
    Дата приема  | 
  
INVOICEID  | 
    INTEGER  | 
    Идентификатор накладной  | 
  
GROSSTIME  | 
    TIMESTAMP  | 
    Время брутто  | 
  
OWNERID  | 
    INTEGER  | 
    Идентификатор владельца  | 
  
PROVIDERID  | 
    INTEGER  | 
    Идентификатор поставщика  | 
  
SAMPLERQUALITYID  | 
    INTEGER  | 
    Идентификатор предварительного анализа  | 
  
LABQUALITYID  | 
    INTEGER  | 
    Идентификатор лабораторного анализа  | 
  
STORAGEID  | 
    INTEGER  | 
    Идентификатор склада  | 
  
CONTRACTID  | 
    INTEGER  | 
    Идентификатор договора  | 
  
STATE  | 
    INTEGER  | 
    Состояние  | 
  
SENDERQUALITYID  | 
    INTEGER  | 
    Идентификатор качества отправителя  | 
  
EXPORTERID  | 
    INTEGER  | 
    Иденитификатор экспортера  | 
  
STATIONID  | 
    INTEGER  | 
    Иденитификатор станции  | 
  
SENDERID  | 
    INTEGER  | 
    Идентификатор отправителя  | 
  
AGREEMENTNUMBER  | 
    VARCHAR(10)  | 
    Номер контракта  | 
  
CROPID  | 
    INTEGER  | 
    Идентификатор культуры  | 
  
CLASSID  | 
    INTEGER  | 
    Идентификатор класса  | 
  
SORTID  | 
    INTEGER  | 
    Идентификатор сорта  | 
  
SCALESTYPEID  | 
    INTEGER  | 
    Тип весов  | 
  
GMOPRESENCEID  | 
    INTEGER  | 
    Идентификатор наличия ГМО  | 
  
TRANSPORTTYPEID  | 
    INTEGER  | 
    Тип транспорта  | 
  
FWAITINGDAYS  | 
    INTEGER  | 
    
  | 
  
Описание
Журнал модуля "Логистик"
Определение
CREATE PROCEDURE LOGISTICS_JOURNAL(
    BEGINDATE DATE,
    ENDDATE DATE,
    ASTORAGEID INTEGER,
    SHOWALLOWNERS INTEGER,
    SHOWNOTRECEIVED INTEGER,
    SHOWWEIGHTED INTEGER,
    SHOWREMOTERECORDS INTEGER,
    SHOWDELETED INTEGER,
    AOWNERID INTEGER,
    ASENDERID INTEGER,
    ASTATIONID INTEGER,
    ACROPID INTEGER,
    ATRANSPORTNUMBER VARCHAR(10),
    AINVOICENUMBER VARCHAR(10))
RETURNS (
    OWNERNAME VARCHAR(100),
    PROVIDERNAME VARCHAR(100),
    TRANSPORTNUMBER VARCHAR(31),
    INVOICENUMBER VARCHAR(30),
    INVOICEDATE DATE,
    SAMPLEROUTDATE DATE,
    SENDERNAME VARCHAR(100),
    STATIONNAME VARCHAR(128),
    CROPFULLNAME VARCHAR(100),
    GMOPRESENCE VARCHAR(15),
    CERTIFICATENUMBER INTEGER,
    CERTIFICATEDATE TIMESTAMP,
    SNNUMBER VARCHAR(30),
    INVOICEGROSS INTEGER,
    INVOICETARE INTEGER,
    INVOICENET INTEGER,
    DEVIATIONTIME VARCHAR(50),
    TARETIME TIMESTAMP,
    GROSS INTEGER,
    TARE INTEGER,
    NET INTEGER,
    GROSSDEFICITE INTEGER,
    NETDEFICITE INTEGER,
    SCALETYPENAME VARCHAR(10),
    DEVIATIONDESCRIPTION VARCHAR(100),
    PERMISSIONDESCRIPTION VARCHAR(100),
    PERMISSIONTIME VARCHAR(50),
    PERMISSIONUSERNAME VARCHAR(100),
    REMARK VARCHAR(100),
    WAITINGTIME VARCHAR(20),
    OVERTIME TIME,
    CERTIFICATEPRESENCE VARCHAR(10),
    SNPRESENCE VARCHAR(10),
    CONFIRMATIONTIME TIMESTAMP,
    INVENTORYID INTEGER,
    REGDATE DATE,
    INVOICEID INTEGER,
    GROSSTIME TIMESTAMP,
    OWNERID INTEGER,
    PROVIDERID INTEGER,
    SAMPLERQUALITYID INTEGER,
    LABQUALITYID INTEGER,
    STORAGEID INTEGER,
    CONTRACTID INTEGER,
    STATE INTEGER,
    SENDERQUALITYID INTEGER,
    EXPORTERID INTEGER,
    STATIONID INTEGER,
    SENDERID INTEGER,
    AGREEMENTNUMBER VARCHAR(10),
    CROPID INTEGER,
    CLASSID INTEGER,
    SORTID INTEGER,
    SCALESTYPEID INTEGER,
    GMOPRESENCEID INTEGER,
    TRANSPORTTYPEID INTEGER,
    FWAITINGDAYS INTEGER)
AS
declare variable FDEVIATIONTIME varchar(24);
declare variable FDEVIATIONDESCRIPTION varchar(50);
declare variable FPERMISSIONTIME varchar(24);
declare variable FPERMISSIONUSERNAME varchar(50);
declare variable FWAITING_DAYS integer;
declare variable FWAITINGSECONDS integer;
declare variable I integer;
declare variable HOURS integer;
declare variable MINUTES integer;
begin
  for
    select IT.INVENTORYID, IT.REGDATE, IT.INVOICEID, IT.GROSS, IT.TARE, IT.NET,
        IT.TARETIME, IT.GROSSTIME, IT.OWNERID, IT.PROVIDERID, IT.SAMPLERQUALITYID,
        IT.LABQUALITYID, IT.STORAGEID, IT.CONTRACTID, IT.STATE,
        ITTRANSPORT.SAMPLEROUTDATE, ITTRANSPORT.TRANSPORTNUMBER, ITTRANSPORT.INVOICEGROSS,
        ITTRANSPORT.INVOICETARE, ITTRANSPORT.INVOICENET, ITTRANSPORT.SENDERQUALITYID,
        ITTRANSPORT.TRANSPORTTYPEID,
        (IT.GROSS - ITTRANSPORT.INVOICEGROSS) GROSSDEFICITE,
        (IT.NET - ITTRANSPORT.INVOICENET) NETDEFICITE, CLIENTS.CLIENTFULLNAME
      from IT
        left join ITTRANSPORT on (ITTRANSPORT.INVENTORYID = IT.INVENTORYID)
        left join CLIENTS on (CLIENTS.CLIENTID = IT.OWNERID)
      where (IT.REGDATE between (:BEGINDATE - 10) and :ENDDATE)
            and ((coalesce(CLIENTS.DEVIATIONCONTROL,0) > 32767) or (:SHOWALLOWNERS = 1))
            and (ITTRANSPORT.TRANSPORTTYPEID = 2) and (IT.PARENTID <= 0) and (IT.OPERATIONID = 1)
            and ((IT.STORAGEID = :ASTORAGEID) or (:ASTORAGEID = -1))
            and ((IT.STATE <= -100)
                 or (((IT.STATE = 0) and (IT.NET is null))
                     or ((IT.REGDATE between :BEGINDATE and :ENDDATE)
                         and (((:SHOWWEIGHTED = 1) and (IT.STATE = 0) and (IT.NET is not null))
                              or ((:SHOWREMOTERECORDS = 1) and (IT.STATE in (-3,-2)))
                              or ((:SHOWDELETED = 1) and (IT.STATE = -1))
                             )
                        )
                    )
                    and (:SHOWNOTRECEIVED = 0)
                )
            and ((coalesce(:AOWNERID,-1) = -1) or (IT.OWNERID = :AOWNERID))
    order by IT.STATE, IT.NET, IT.REGDATE, IT.INVENTORYID
    into :INVENTORYID, :REGDATE, :INVOICEID, :GROSS, :TARE, :NET, :TARETIME,
         :GROSSTIME, :OWNERID, :PROVIDERID, :SAMPLERQUALITYID, :LABQUALITYID,
         :STORAGEID, :CONTRACTID, :STATE, :SAMPLEROUTDATE, :TRANSPORTNUMBER,
         :INVOICEGROSS, :INVOICETARE, :INVOICENET, :SENDERQUALITYID,
         :TRANSPORTTYPEID, :GROSSDEFICITE, :NETDEFICITE, :OWNERNAME
  do begin
    select INVOICES.INVOICENUMBER, INVOICES.INVOICEDATE, INVOICES.EXPORTERID,
        INVOICES.STATIONID, INVOICES.AGREEMENTNUMBER, INVOICES.SCALESTYPEID,
        INVOICES.CONFIRMATIONTIME,
        PROVIDER.CLIENTFULLNAME, SENDER.CLIENTID, SENDER.CLIENTFULLNAME,
        STATIONS.STATIONFULLNAME, QUALITY_CROPFULLNAME_BYID.CROPFULLNAME,
        QUALITY_SELECT.CROPID, QUALITY_SELECT.CLASSID, QUALITY_SELECT.SORTID,
        QUALITY_SELECT.QUALITYSERTIFICATE, QUALITY_SELECT.GMOPRESENCEID,
        (select QUALITYTYPEVALUES.QUALITYNAME
           from QUALITYTYPEVALUES
           where (QUALITYTYPEVALUES.QUALITYTYPEID = 3252)
               and (QUALITYTYPEVALUES.QUALITYVALUE = QUALITY_SELECT.GMOPRESENCEID)
        ),
        SENDERQUALITY.CREATETIME, SENDERQUALITY.SNNUMBER, SCALESTYPE.SCALESTYPENAME
      from INVOICES
        left join CLIENTS PROVIDER on (PROVIDER.CLIENTID = :PROVIDERID)
        left join CLIENTS SENDER on (SENDER.CLIENTID = INVOICES.SENDERID)
        left join STATIONS on (STATIONS.STATIONID = INVOICES.STATIONID)
        left join QUALITY_CROPFULLNAME_BYID(:SAMPLERQUALITYID, 1) on (0=0)
        left join QUALITY_SELECT(:SAMPLERQUALITYID) on (0=0)
        left join QUALITY on (QUALITY.QUALITYID = :LABQUALITYID)
        left join QUALITY SENDERQUALITY on (SENDERQUALITY.QUALITYID = :SENDERQUALITYID)
        left join SCALESTYPE on (SCALESTYPE.SCALESTYPEID = INVOICES.SCALESTYPEID)
      where (INVOICES.INVOICEID = :INVOICEID)
    into :INVOICENUMBER, :INVOICEDATE, :EXPORTERID,
         :STATIONID, :AGREEMENTNUMBER, :SCALESTYPEID, :CONFIRMATIONTIME,
         :PROVIDERNAME, :SENDERID, :SENDERNAME,
         :STATIONNAME, :CROPFULLNAME,
         :CROPID, :CLASSID, :SORTID,
         :CERTIFICATENUMBER, :GMOPRESENCEID, :GMOPRESENCE,
         :CERTIFICATEDATE, :SNNUMBER, :SCALETYPENAME;
    DEVIATIONTIME = '';
    DEVIATIONDESCRIPTION = '';
    PERMISSIONTIME = '';
    PERMISSIONUSERNAME = '';
    WAITINGTIME = '';
    FWAITINGDAYS = null;
    FWAITINGSECONDS = null;
    HOURS = null;
    MINUTES = null;
    I = 0;
    for
      select DEVIATIONTIME.DATESTR || ' ' || left(cast(cast(DEVIATION.DEVIATIONDATETIME as time) as char(13)),5),
          DEVIATIONTYPE.DEVIATIONTYPESHORTNAME,
          PERMISSIONTIME.DATESTR || ' ' || left(cast(cast(DEVIATION.PERMITDATETIME as time) as char(13)),5),
          coalesce(substring(PERMITUSER.USERNAME from 1 for 1) || '.','') || PERMITUSER.USERLASTNAME,
          case
            when (DEVIATION.PERMITDATETIME is not null) then
              cast(DEVIATION.PERMITDATETIME as date) - cast(DEVIATION.DEVIATIONDATETIME as date)
            else null
          end,
          case
            when (DEVIATION.PERMITDATETIME is not null) then
              cast(DEVIATION.PERMITDATETIME as time) - cast(DEVIATION.DEVIATIONDATETIME as time)
            else null
          end
        from DEVIATION
          left join DATE_TO_STR(DEVIATION.DEVIATIONDATETIME) DEVIATIONTIME on (0=0)
          left join DEVIATIONTYPE on (DEVIATIONTYPE.DEVIATIONTYPEID = DEVIATION.DEVIATIONTYPEID)
          left join DATE_TO_STR(DEVIATION.PERMITDATETIME) PERMISSIONTIME on (0=0)
          left join USERS PERMITUSER on (PERMITUSER.USERID = DEVIATION.PERMITUSERID)
        where (DEVIATION.INVOICEID = :INVOICEID)
      into :FDEVIATIONTIME, :FDEVIATIONDESCRIPTION, :FPERMISSIONTIME, :FPERMISSIONUSERNAME,
           :FWAITINGDAYS, :FWAITINGSECONDS
    do begin
      if (I > 0) then begin
        DEVIATIONTIME = DEVIATIONTIME || ascii_char(13);
        DEVIATIONDESCRIPTION = DEVIATIONDESCRIPTION || ascii_char(13);
        PERMISSIONTIME = PERMISSIONTIME || ascii_char(13);
        PERMISSIONUSERNAME = PERMISSIONUSERNAME || ascii_char(13);
        WAITINGTIME = WAITINGTIME || ascii_char(13);
      end
      I = I + 1;
      DEVIATIONTIME = DEVIATIONTIME || FDEVIATIONTIME;
      DEVIATIONDESCRIPTION = DEVIATIONDESCRIPTION || FDEVIATIONDESCRIPTION;
      PERMISSIONTIME = PERMISSIONTIME || FPERMISSIONTIME;
      PERMISSIONUSERNAME = PERMISSIONUSERNAME || FPERMISSIONUSERNAME;
      if (FWAITINGSECONDS <= 0) then
        FWAITINGSECONDS = FWAITINGSECONDS + ((FWAITINGDAYS * 24) * 3600);
      else
        if (FWAITINGDAYS > 0) then
          FWAITINGSECONDS = FWAITINGSECONDS + ((FWAITINGDAYS * 24) * 3600);
      HOURS = trunc(FWAITINGSECONDS / 3600);
      MINUTES = round((cast(FWAITINGSECONDS as numeric(12,3)) - (HOURS * 3600)) / 60);
      WAITINGTIME = WAITINGTIME || trim(trailing ' ' from cast(HOURS as char(5))) || ':';
      if (MINUTES < 10) then
        WAITINGTIME = WAITINGTIME || '0' || cast(MINUTES as char(2));
      else WAITINGTIME = WAITINGTIME || cast(MINUTES as char(3));
    end
    if (LABQUALITYID is not null) then
      if (CERTIFICATENUMBER is not null) then
        CERTIFICATEPRESENCE = '+';
      else CERTIFICATEPRESENCE = '—';
    else CERTIFICATEPRESENCE = '';
    if (LABQUALITYID is not null) then
      if (SNNUMBER is not null) then
        SNPRESENCE = '+';
      else SNPRESENCE = '—';
    else SNPRESENCE = '';
    if (((coalesce(:ASENDERID,-1) = -1) or (:SENDERID = :ASENDERID))
        and ((coalesce(:ASTATIONID,-1) = -1) or (:STATIONID = :ASTATIONID))
        and ((coalesce(:ACROPID,-1) = -1) or (:CROPID = :ACROPID))
        and ((:ATRANSPORTNUMBER = '') or (:TRANSPORTNUMBER containing :ATRANSPORTNUMBER))
        and ((AINVOICENUMBER = '') or (:INVOICENUMBER containing :AINVOICENUMBER))
       ) then
      suspend;
  end
end
         
         
         
       |