������� ���������
�������� | ��� | �������� |
---|---|---|
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
![]() ![]() ![]() |