⚲
Project
General
Profile
Sign in
Register
Home
Projects
Help
Search
:
mojavoda.sk
All Projects
mojavoda.sk
Overview
Activity
Issues
Spent time
Gantt
Calendar
News
Documents
Wiki
Files
Download (2.31 KB)
Požadavek #93
» fce.sql
Vítězslav Dvořák
, 03/19/2025 09:09 PM
create
or
replace
function
dgetstavnaskladeaktualni
(
i_pocatecni
boolean
,
i_idstredisko
integer
,
i_idcenik
integer
,
i_idsklad
integer
,
i_datum
date
,
_idceniks
integer
[]
)
RETURNS
numeric
(
19
,
6
)
AS
$
$
declare
_iducetniobdobi
integer
;
_stavMj
numeric
(
19
,
6
);
_idSkladKarty
integer
;
_sadaItemCount
integer
;
_polozkaSady
record
;
_stavSkladuSady
numeric
(
19
,
6
);
_pocetPozadavku
numeric
(
19
,
6
);
_skladove
boolean
;
_idskladFinal
integer
;
begin
select
count
(
*
)
into
_sadaItemCount
from
csady
where
idceniksada
=
i_idCenik
and
idcenik
<>
csady
.
idceniksada
;
if
(
_sadaItemCount
=
0
)
then
select
skladove
into
_skladove
from
ccenik
where
idcenik
=
i_idcenik
;
if
(
_skladove
)
then
select
idUcetObdobi
into
_iducetniobdobi
from
nUcetObdobi
where
platiOdData
<=
i_datum
and
platiDoData
>=
i_datum
;
select
idKarty
into
_idSkladKarty
from
sKarty
where
idCenik
=
i_idCenik
and
idSkladu
=
i_idsklad
and
idUcetObdobi
=
_iducetniobdobi
;
if
i_pocatecni
then
select
pocatMj
into
_stavMj
from
skarty
where
idkarty
=
_idSkladKarty
;
else
select
stavMj
into
_stavMj
from
skarty
where
idkarty
=
_idSkladKarty
;
select
sum
(
mnozMjPlan
)
into
_pocetPozadavku
from
dpolsklad
where
mnozMjPlan
<>
0
.
0
and
mnozMj
=
0
.
0
and
idcenik
=
i_idCenik
and
idbspskl
=
i_idsklad
and
storno
=
false
;
if
(
_pocetPozadavku
is
not
null
)
then
_stavMj
=
_stavMj
-
_pocetPozadavku
;
end
if
;
end
if
;
else
_stavMj
=
9999999999
.
0
;
end
if
;
else
for
_polozkaSady
in
select
*
from
cSady
where
idCenikSada
=
i_idCenik
and
cSady
.
idcenik
<>
cSady
.
idceniksada
loop
perform
checkrekurzecenik
(
i_idcenik
,
_idceniks
);
select
getPrefIdSkladu
(
i_idstredisko
,
(
select
idSkupZboz
from
ccenik
where
idcenik
=
_polozkaSady
.
idCenik
),
_polozkaSady
.
idCenik
)
into
_idskladFinal
;
if
(
_idskladFinal
is
null
)
then
_idskladFinal
:
=
i_idsklad
;
end
if
;
select
dGetStavNaSkladeAktualni
(
i_pocatecni
,
i_idstredisko
,
_polozkaSady
.
idCenik
,
_idskladFinal
,
i_datum
,
_idceniks
||
i_idcenik
)
into
_stavSkladuSady
;
if
(
_polozkaSady
.
mnozMj
<>
0
)
then
_stavSkladuSady
=
_stavSkladuSady
/
_polozkaSady
.
mnozMj
;
if
(
_stavMj
is
null
)
then
_stavMj
:
=
9999999999
.
0
;
end
if
;
select
minValue
(
_stavMj
,
_stavSkladuSady
)
into
_stavMj
;
end
if
;
end
loop
;
end
if
;
if
(
_stavMj
is
null
)
then
_stavMj
:
=
0
;
end
if
;
RETURN
_stavMj
;
end
$
$
LANGUAGE
plpgsql
;
(1-1/1)
Loading...