"localhost:/firebird/data/ILICHEVSK2.FDB". Процедуры Previous topic Chapter index Next topic

FORWARDER_OUTACTREP

 

Входные параметры

Параметр

Тип

Описание

AEXPORTACTID

INTEGER

 

AVTO

INTEGER

 

 

Выходные параметры

Параметр

Тип

Описание

ACTDATE

DATE

 

ACTINCOMENUMBER

VARCHAR(10)

 

TRANSPORTNUMBER

VARCHAR(31)

 

INVOICENUMBER

VARCHAR(31)

 

STATIONFULLNAME

VARCHAR(128)

 

WEIGHT

INTEGER

 

COMMENTS

VARCHAR(300)

 

EXPORTACTITEMID

INTEGER

 

EXPORTACTID

INTEGER

 

TRANSPORTSUBTYPEID

INTEGER

 

PROVIDERFULLNAME

VARCHAR(100)

 

HARVESTYEAR

INTEGER

 

 

Описание

(Нет описания для процедуры FORWARDER_OUTACTREP)

 

Определение

CREATE PROCEDURE FORWARDER_OUTACTREP(
    AEXPORTACTID INTEGER,
    AVTO INTEGER)
RETURNS (
    ACTDATE DATE,
    ACTINCOMENUMBER VARCHAR(10),
    TRANSPORTNUMBER VARCHAR(31),
    INVOICENUMBER VARCHAR(31),
    STATIONFULLNAME VARCHAR(128),
    WEIGHT INTEGER,
    COMMENTS VARCHAR(300),
    EXPORTACTITEMID INTEGER,
    EXPORTACTID INTEGER,
    TRANSPORTSUBTYPEID INTEGER,
    PROVIDERFULLNAME VARCHAR(100),
    HARVESTYEAR INTEGER)
AS
declare variable ORDERITEMID integer;
declare variable OPERATIONID integer;
declare variable TMP_WEIGHT integer;
declare variable TMP_OPERATIONNAME varchar(30);
declare variable WEXPORTACTITEMID integer;
declare variable PARENT integer;
begin
  select EXPORTACTS.ORDERITEMID, EXPORTACTS.OPERATIONID
    from EXPORTACTS
    where (EXPORTACTS.EXPORTACTID = :AEXPORTACTID)
  into :ORDERITEMID, :OPERATIONID;

  for
    select
        EASEC.ACTDATE, EAISEC.EXPORTACTITEMID, EASEC.TRANSPORTSUBTYPEID,
        EASEC.EXPORTACTID, PROVIDER.CLIENTFULLNAME, EASEC.ACTNUMBER ACTINCOMENUMBER,
        case
          when (:AVTO = 0) then
            case
              when (EASEC.TRANSPORTSUBTYPEID = 0) then
                'авто'
              when (EASEC.TRANSPORTSUBTYPEID = 1) then
                ITTRANSPORT.TRANSPORTNUMBER
            end
          ELSE ITTRANSPORT.TRANSPORTNUMBER
        end TRANSPORTNUMBER,
        case
          when ((:AVTO = 1) or (EASEC.TRANSPORTSUBTYPEID = 1)) then
            INVOICES.INVOICENUMBER
          else cast(null as varchar(31))
        end INVOICENUMBER,
        cast((select QUALITYDATA.QUALITYVALUE
                from QUALITYDATA
                where (QUALITYDATA.QUALITYID = IT1.LABQUALITYID)
                  and (QUALITYDATA.QUALITYTYPEID = 6)
             ) as integer) HARVESTYEAR,
        STATIONS.STATIONFULLNAME, EAI.EXPORTACTITEMID, EAI.WEIGHT
      from EXPORTACTS EA
        left join EXPORTACTITEMS EAI on (EAI.EXPORTACTID = EA.EXPORTACTID)
        left join ITTRANSPORT on (ITTRANSPORT.INVENTORYID = EAI.INVENTORYID)
        left join EXPORTACTITEMS EAISEC on (EAISEC.EXPORTACTITEMID = EAI.PARENTITEMID)
        left join EXPORTACTS EASEC on (EASEC.EXPORTACTID = EAISEC.EXPORTACTID)
        left join CLIENTS PROVIDER on (PROVIDER.CLIENTID = EASEC.PROVIDERID)
        left join IT IT1 on (IT1.INVENTORYID = EAISEC.INVENTORYID)
        left join INVOICES on (INVOICES.INVOICEID = IT1.INVOICEID)
        left join STATIONS on (STATIONS.STATIONID = EASEC.STATIONID)
      where (EA.ORDERITEMID = :ORDERITEMID) and (EAI.WEIGHT > 0)
    order by PROVIDER.CLIENTFULLNAME, ACTINCOMENUMBER
    into :ACTDATE, :PARENT, :TRANSPORTSUBTYPEID, :EXPORTACTID, :PROVIDERFULLNAME,
         :ACTINCOMENUMBER, :TRANSPORTNUMBER, :INVOICENUMBER, :HARVESTYEAR,
         :STATIONFULLNAME, :EXPORTACTITEMID, :WEIGHT
  do begin
    COMMENTS = null;

    for
      select -EAIW.WEIGHT, EAIW.EXPORTACTITEMID,
          case
            when (EAIW.OPERATIONID = 64) then
              'Пред. списания'
            when ((IT2.OPERATIONID = 22) and (IT2.STATE = -10)) then
              OPERATION.OPERATIONNAME || '.'
            else OPERATION.OPERATIONNAME
          end
        from EXPORTACTITEMS EAIW
          left join IT IT2 on (IT2.INVENTORYID = EAIW.INVENTORYID)
          left join EXPORTACTITEMS EAIWSEC on (EAIWSEC.EXPORTACTITEMID = EAIW.PARENTITEMID)
          left join EXPORTACTITEMS EAIWTH on (EAIWTH.EXPORTACTITEMID = EAIWSEC.PARENTITEMID)
          left join EXPORTACTS EAS on (EAS.EXPORTACTID = EAIWTH.EXPORTACTID)
          left join OPERATION on (OPERATION.OPERATIONID = IT2.OPERATIONID)
        where (EAIW.EXPORTACTID = :AEXPORTACTID)
              and (((:OPERATIONID <> -17)
                    and (((:TRANSPORTNUMBER = 'авто') and (EAIWTH.EXPORTACTID = :EXPORTACTID))
                         or ((:TRANSPORTNUMBER <> 'авто') and (EAIW.PARENTITEMID = :EXPORTACTITEMID))
                         or ((EAIW.OPERATIONID = 64)
                             and (((EAIWSEC.EXPORTACTID = :EXPORTACTID) and (:TRANSPORTNUMBER = 'авто'))
                                  or ((:TRANSPORTNUMBER <> 'авто') and (EAIW.PARENTITEMID = :PARENT)))
                            )
                        )
                   )
                   or ((:OPERATIONID = -17)
                       and (((:TRANSPORTNUMBER = 'авто') and (EAIWTH.EXPORTACTID = :EXPORTACTID))
                            or ((:TRANSPORTNUMBER <> 'авто') and (EAIWSEC.PARENTITEMID = :PARENT))
                            or ((EAIW.OPERATIONID = 64)
                                and (((EAIWSEC.EXPORTACTID = :EXPORTACTID) and (:TRANSPORTNUMBER = 'авто'))
                                     or ((:TRANSPORTNUMBER <> 'авто') and (EAIW.PARENTITEMID = :PARENT)))
                               )
                           )
                      )
                  )
              and (EAIW.WEIGHT < 0)
      into :TMP_WEIGHT, :WEXPORTACTITEMID, :TMP_OPERATIONNAME
    do begin
      if (:COMMENTS is null) then
        COMMENTS = coalesce(TMP_OPERATIONNAME,'') || ': ' || coalesce(TMP_WEIGHT,'');
      else COMMENTS = coalesce(COMMENTS,'') || ascii_char(13) || coalesce(TMP_OPERATIONNAME,'') || ': ' || coalesce(TMP_WEIGHT,'');
    end

    suspend;
  end
end

 

     Previous topic Chapter index Next topic