Входные параметры
Параметр  | Тип  | Описание  | 
|---|---|---|
CONTRACTID  | 
    INTEGER  | 
    
  | 
  
Выходные параметры
Параметр  | Тип  | Описание  | 
|---|---|---|
CROPCLASS  | 
    VARCHAR(100)  | 
    
  | 
  
DECLARED  | 
    INTEGER  | 
    
  | 
  
INCOME  | 
    INTEGER  | 
    
  | 
  
OUTCOME  | 
    INTEGER  | 
    
  | 
  
PERCENT  | 
    NUMERIC(5,2)  | 
    
  | 
  
Описание
Отслеживание выполнения договоров
Определение
CREATE PROCEDURE CONTRACT_TRACE(
    CONTRACTID INTEGER)
RETURNS (
    CROPCLASS VARCHAR(100),
    DECLARED INTEGER,
    INCOME INTEGER,
    OUTCOME INTEGER,
    PERCENT NUMERIC(5,2))
AS
declare variable classid integer;
begin
 for
 SELECT coalesce(sum(CONTRACTCOSTS.weight),0) weight,
 qn.cropfullname, quality.classid
 FROM CONTRACTCOSTS
   LEFT JOIN QUALITY ON (CONTRACTCOSTS.QUALITYID = QUALITY.QUALITYID)
   left join quality_cropfullname(quality.cropid, quality.classid, null, 1) qn on (0=0)
--   left join crop on (quality.cropid = crop.cropid)
--   left join class on (quality.classid = class.classid)
  where contractcosts.serviceid = 1 and contractcosts.contractid = :contractid
  group by
   qn.cropfullname, quality.classid
 into
 :DECLARED,
 :CROPCLASS,
 :CLASSID
 do
  begin
  select coalesce(sum(it.net),0) from it
  left join operation on (it.operationid = operation.operationid)
  LEFT JOIN QUALITY ON (it.buhqualityid = QUALITY.QUALITYID)
  where it.contractid = :contractid
  and it.net is not null
  and operation.operationsubtype = 0
  and it.storingid = 1
  and quality.classid = :classid
  into
  :INCOME;
  select coalesce(sum(it.net),0) from it
  left join operation on (it.operationid = operation.operationid)
  LEFT JOIN QUALITY ON (it.buhqualityid = QUALITY.QUALITYID)
  where it.contractid = :contractid
   and it.net is not null
   and operation.operationsubtype = 1
   and quality.classid = :classid
  into
  :OUTCOME;
  if (:declared = 0) then
    percent = 0;
  else
   PERCENT = cast(:INCOME as numeric(13,2))*100/cast(:DECLARED as numeric(13,2));
   suspend;
 end
end
         
         
         
       |