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

ADDITIONFORAKTCROP

 

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

Параметр

Тип

Описание

DATE1

DATE

 

DATE2

DATE

 

CROPID

INTEGER

 

PARTYID

INTEGER

 

PARTYDATE

DATE

 

CLASSID

INTEGER

 

CLIENTID

INTEGER

 

CONTRACTID

INTEGER

 

POBPROD

INTEGER

 

MELKOE

INTEGER

 

DOCROP

INTEGER

 

 

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

Параметр

Тип

Описание

REGDATE

DATE

 

SUMNET

INTEGER

 

DB

NUMERIC(4,2)

 

DA

NUMERIC(4,2)

 

OPERATIONN

VARCHAR(30)

 

K12

INTEGER

 

K3

INTEGER

 

OPERATIONTYPE

INTEGER

 

INVOICENUMBER

VARCHAR(31)

 

 

Описание

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

 

Определение

CREATE PROCEDURE ADDITIONFORAKTCROP(
    DATE1 DATE,
    DATE2 DATE,
    CROPID INTEGER,
    PARTYID INTEGER,
    PARTYDATE DATE,
    CLASSID INTEGER,
    CLIENTID INTEGER,
    CONTRACTID INTEGER,
    POBPROD INTEGER,
    MELKOE INTEGER,
    DOCROP INTEGER)
RETURNS (
    REGDATE DATE,
    SUMNET INTEGER,
    DB NUMERIC(4,2),
    DA NUMERIC(4,2),
    OPERATIONN VARCHAR(30),
    K12 INTEGER,
    K3 INTEGER,
    OPERATIONTYPE INTEGER,
    INVOICENUMBER VARCHAR(31))
AS
declare variable tempdate date;
begin
 tempdate = :date1;
for
  select it.regdate, sum(it.net), invoices.invoicenumber from it
  inner join operation on (it.operationid = operation.operationid)
  inner join quality on (it.buhqualityid = quality.qualityid)
  left join invoices on (it.invoiceid = invoices.invoiceid)
  where operation.operationtype =1
  and (it.operationid  not in (42) or :pobprod =1)
  and (it.operationid  not in (43) or :melkoe =1)
  and (it.operationid  = 42 or :pobprod =0)
  and (it.operationid = 43 or :melkoe =0)
  and it.regdate between :date1 and :date2
  and it.partyid = (select partyid from getpartyid(:PARTYID,:PARTYDATE, quality.cropid, quality.classid, it.storageid))
  and it.state >= 0
  and it.net <> 0
  and it.net is not null
  and it.parentid >= 0
  and (((quality.cropid = :cropid) and (:DOCROP = 1)) or ((quality.classid = :classid) and (:DOCROP = 0)))
  and ((it.ownerid = :clientid) or (:clientid  = -1))
  and ((it.contractid = :contractid) or (:contractid  = -1))
  group by it.regdate, invoicenumber
  into
  :regdate,
  :k12,
  :INVOICENUMBER
 do
 begin
   select  sum(it.net), sum(qb.dirt*it.net)/sum(it.net) db, sum(qa.dirt*it.net)/sum(it.net) da
 from it
 inner join quality_select(it.buhqualityid) qt on (0=0)
 inner join operation on (it.operationid = operation.operationid)
 inner join uwoutacts on (it.invoiceid = uwoutacts.invoiceid)
 left join quality_select(uwoutacts.beforequalityid) qb on (0=0)
 left join quality_select(uwoutacts.afterqualityid) qa on (0=0)
 and it.regdate between :tempdate and :regdate
 and uwoutacts.state = 0
 and it.partyid = (select partyid from getpartyid(:PARTYID,:PARTYDATE, qt.cropid, qt.classid, it.storageid))
 and it.state >= 0
 and it.parentid >= 0
 and it.net is not null
 and it.net <> 0
 and (((qt.cropid = :cropid) and (:DOCROP = 1)) or ((qt.classid = :classid) and (:DOCROP = 0)))
 and ((it.ownerid = :clientid) or (:clientid  = -1))
 and ((it.contractid = :contractid) or (:contractid  = -1))
 into
  :sumnet,
  :db,
  :da;

  tempdate = :regdate;
  if ((:pobprod = 0) and (:melkoe = 0)) then
  begin
    operationn = 'отходы 2 кат';
    operationtype = 2;
  end
  if (:pobprod = 1) then
  begin
    operationn = 'побочный продукт';
    operationtype = 4;
  end
  if (:melkoe = 1) then
  begin
    operationn = 'мелкое зерно';
    operationtype = 5;
  end
  suspend;
 end
end

 

     Previous topic Chapter index Next topic