Advertisement
ravencs

feladas_ki

Jun 17th, 2018
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 7.62 KB | None | 0 0
  1. create or alter procedure FELADAS_KI (
  2.     P_FELADSEMA integer,
  3.     P_DATUM1 date,
  4.     P_DATUM2 date,
  5.     P_TELEPHELY integer = 0,
  6.     P_LASTSYNC integer = -1)
  7. returns (
  8.     R_BIZONYLAT integer,
  9.     R_BIZSZAM varchar(20),
  10.     R_TELJESITES date,
  11.     R_DATUM date,
  12.     R_FIZHATAR date,
  13.     R_UGYFELID integer,
  14.     R_UGYFELNEV varchar(81),
  15.     R_UGYFELIRSZAM integer,
  16.     R_UGYFELHELYSEG varchar(40),
  17.     R_UGYFELCIM varchar(40),
  18.     R_UGYFELADO varchar(15),
  19.     R_UGYFELBANK varchar(34),
  20.     R_DEVIZA integer,
  21.     R_DEVIZANEV varchar(3),
  22.     R_ARFOLYAM double precision,
  23.     R_BIZ_NETTO double precision,
  24.     R_BIZ_BRUTTO double precision,
  25.     R_BIZ_BESZNETTO double precision,
  26.     R_BIZ_BESZBRUTTO double precision,
  27.     R_AFA double precision,
  28.     R_TETEL_NETTOERTEK double precision,
  29.     R_TETEL_AFAERTEK double precision,
  30.     R_TETEL_BRUTTOERTEK double precision,
  31.     R_TETEL_BESZERTEK double precision,
  32.     R_AZONOSITO varchar(20),
  33.     R_UGYFELEUADO varchar(20),
  34.     R_TETEL_GYUJTO integer,
  35.     R_TETEL_GYUJTO_NEV varchar(30),
  36.     R_FOKSZAM1 varchar(10),
  37.     R_FOKSZAM2 varchar(10),
  38.     R_GYUJTO_ID integer,
  39.     R_GYUJTO_NEV varchar(20),
  40.     R_GYUJTOTETEL_ID integer,
  41.     R_GYUJTOTETEL_KOD varchar(4),
  42.     R_GYUJTOTETEL_NEV varchar(30),
  43.     R_AFAGYUJTO smallint,
  44.     R_VTSZ varchar(10),
  45.     R_TOMEG double precision,
  46.     R_UGYFELBES_TIPUS varchar(20),
  47.     R_UGYFELBES_ERTEK varchar(40),
  48.     R_TELEPHELY integer,
  49.     R_SYNC integer)
  50. as
  51. declare variable V_FIZMOD_KP smallint;
  52. declare variable V_FIZMOD_UT smallint;
  53. declare variable V_FIZMOD_CSEKK smallint;
  54. declare variable V_SORSZAM integer;
  55. declare variable V_BIZSZAMUTOTAG integer;
  56. declare variable V_AKT integer;
  57. declare variable V_COUNT integer;
  58. declare variable V_OSSZ_TETEL_NETTO integer;
  59. declare variable V_OSSZ_TETEL_BRUTTO integer;
  60. declare variable V_VEVO_FORDITOTT smallint;
  61. declare variable V_FORDITOTT smallint;
  62. declare variable V_BIZ_BRUTTO double precision;
  63. declare variable V_DEFAULT_AFA double precision;
  64. declare variable V_ID_TERMEK integer;
  65. declare variable V_ID_SZAMLATETEL integer;
  66. begin
  67.   V_FIZMOD_KP = 0;
  68.   V_FIZMOD_UT = 0;
  69.   R_DEVIZA = 1;
  70.   R_DEVIZANEV = 'HUF';
  71.   R_ARFOLYAM = 1;
  72.   R_TETEL_BESZERTEK = 0;
  73.   R_BIZ_BESZNETTO = 0;
  74.   R_BIZ_BESZBRUTTO = 0;
  75.   R_UGYFELBES_TIPUS = 'ĂśzletkötĹ‘';
  76.   select FIZMOD_KP, FIZMOD_UT, FIZMOD_CSEKK
  77.   from FELADSEMA
  78.   where ID_FELADSEMA = :P_FELADSEMA
  79.   into :V_FIZMOD_KP, :V_FIZMOD_UT, :V_FIZMOD_CSEKK;
  80.   select first 1 AFA
  81.   from AFAERVENY
  82.   where ID_AFA = 1 and
  83.         BEALLITVA = 1
  84.   into :V_DEFAULT_AFA;
  85.   for select SZ.ID_SZAMLA, SZ.SORSZAM, SZ.TELJESITES, SZ.DATUM, SZ.FIZHATAR, SZ.ID_VEVO, V.NEV, V.IRSZAM, V.VAROS,
  86.              V.CIM, SUBSTR(V.ADOSZAM, 1, 15), V.SZAMLASZAM, SZ.NETTO, SZ.BRUTTO, V.KONYVELESI_AZONOSITO,
  87.              SZ.EREDETI_BIZSZAM, coalesce(V.FORDITOTT, 0),
  88.              (select NEV
  89.               from UZLETKOTO
  90.               where ID_UZLETKOTO = coalesce(SZ.ID_UZLETKOTO, V.ID_UZLETKOTO)), SZ.ID_ORIG_TELEPHELY, SZ.ID_SYNC,
  91.              coalesce(SZ.FORDITOTT, 0)
  92.       from SZAMLA SZ, VEVO V
  93.       where V.ID_VEVO = SZ.ID_VEVO and
  94.             ((:P_LASTSYNC = -1 and
  95.             SZ.TELJESITES between :P_DATUM1 and :P_DATUM2 and
  96.             SZ.ID_ORIG_TELEPHELY in (select ID_ERTEK
  97.                                      from FELADSEMATETEL
  98.                                      where ID_FELADSEMA = :P_FELADSEMA and
  99.                                            ID_TULAJDONSAG = 1)) or (:P_LASTSYNC > -1 and
  100.             SZ.ID_TELEPHELYSYNC = :P_TELEPHELY and
  101.             SZ.ID_ORIG_TELEPHELY = :P_TELEPHELY and
  102.             SZ.ID_SYNC > :P_LASTSYNC)) and
  103.             coalesce(SZ.EREDETI_BIZSZAM, '') <> '' and
  104.             ((:V_FIZMOD_KP = 1 and
  105.             SZ.FIZMOD = 0) or (:V_FIZMOD_UT = 1 and
  106.             SZ.FIZMOD = 1) or (:V_FIZMOD_CSEKK = 1 and
  107.             SZ.FIZMOD = 2))
  108.       into :R_BIZONYLAT, :V_SORSZAM, :R_TELJESITES, :R_DATUM, :R_FIZHATAR, :R_UGYFELID, :R_UGYFELNEV, :R_UGYFELIRSZAM,
  109.            :R_UGYFELHELYSEG, :R_UGYFELCIM, :R_UGYFELADO, :R_UGYFELBANK, :R_BIZ_NETTO, :R_BIZ_BRUTTO, :R_AZONOSITO,
  110.            :R_BIZSZAM, :V_VEVO_FORDITOTT, :R_UGYFELBES_ERTEK, :R_TELEPHELY, :R_SYNC, :V_FORDITOTT
  111.   do
  112.   begin
  113.     V_AKT = 1;
  114.     V_OSSZ_TETEL_NETTO = 0;
  115.     V_OSSZ_TETEL_BRUTTO = 0;
  116.     if (V_FORDITOTT = 1) then
  117.     begin
  118.       R_AFAGYUJTO = 1;
  119.       V_BIZ_BRUTTO = R_BIZ_NETTO;
  120.     end
  121.     else
  122.     begin
  123.       R_AFAGYUJTO = 0;
  124.       V_BIZ_BRUTTO = R_BIZ_BRUTTO;
  125.     end
  126.     V_COUNT = 0;
  127.  
  128.     select count(*)
  129.     from szamlatetel szt
  130.     where szt.id_szamla = :r_bizonylat and szt.id_termek is null
  131.     into :V_count;
  132.  
  133.     for select iif(:R_AFAGYUJTO = 1, V.NEV, '')
  134.         from SZAMLATETEL SZT
  135.         join TERMEK T on SZT.ID_TERMEK = T.ID_TERMEK and SZT.ID_SZAMLA = :R_BIZONYLAT
  136.         left join AFAERVENY E on E.ID_AFA = T.ID_AFA and E.DATUM1 <= :R_TELJESITES and (E.DATUM2 is null or E.DATUM2 >= :R_TELJESITES)
  137.         left join CSOPORT CS on CS.ID_CSOPORT = T.ID_CSOPORT
  138.         left outer join VTSZ V on V.ID_VTSZ = T.ID_VTSZ
  139.         group by 1, coalesce(E.AFA, :V_DEFAULT_AFA), CS.ID_GYUJTO
  140.         into :R_VTSZ
  141.     do
  142.       V_COUNT = V_COUNT + 1;
  143.  
  144.     R_VTSZ = null;
  145.  
  146.     for select szt.id_termek, szt.id_szamlatetel, cast(sum(SZT.ELADAR * SZT.MENNYISEG) as integer),
  147.         cast(sum(SZT.ELADAR * SZT.MENNYISEG * (1.0 + iif(:R_AFAGYUJTO = 1, 0, :V_DEFAULT_AFA) / 100.0)) as integer), 0
  148.         from szamlatetel szt
  149.         where szt.id_szamla = :R_bizonylat
  150.         group by szt.id_termek, szt.id_szamlatetel
  151.         into :V_ID_termek, :v_id_szamlatetel, :r_tetel_nettoertek, :r_tetel_bruttoertek, :r_tomeg
  152.     do
  153.     begin
  154.         if(v_id_termek is not null) then
  155.         begin
  156.             select distinct iif(:R_AFAGYUJTO = 1, V.NEV, ''), iif(:R_AFAGYUJTO = 1, 0, coalesce(E.AFA, :V_DEFAULT_AFA)),
  157.                cast(sum(SZT.ELADAR * SZT.MENNYISEG) as integer),
  158.                cast(sum(SZT.ELADAR * SZT.MENNYISEG * (1.0 + iif(:R_AFAGYUJTO = 1, 0, coalesce(E.AFA, :V_DEFAULT_AFA)) / 100.0)) as integer),
  159.                CS.ID_GYUJTO, iif(:R_AFAGYUJTO = 1, sum(SZT.MENNYISEG *
  160.                case
  161.                  when T.EGYSEG = 'KG' then 1.0
  162.                  when T.EGYSEG = 'Q' then 100.0
  163.                  when T.EGYSEG = 'T' then 1000.0
  164.                  when T.EGYSEG = 'GR' then 0.001
  165.                  else coalesce(T.TOMEG, 0)
  166.                end), 0)
  167.             from SZAMLATETEL SZT
  168.             join TERMEK T on SZT.ID_TERMEK = T.ID_TERMEK and SZT.ID_SZAMLA = :R_BIZONYLAT
  169.             left join AFAERVENY E on E.ID_AFA = T.ID_AFA and E.DATUM1 <= :R_TELJESITES and (E.DATUM2 is null or E.DATUM2 >= :R_TELJESITES)
  170.             left outer join CSOPORT CS on CS.ID_CSOPORT = T.ID_CSOPORT
  171.             left outer join VTSZ V on V.ID_VTSZ = T.ID_VTSZ
  172.             where szt.id_szamlatetel = :v_id_szamlatetel and szt.id_termek = :v_id_termek
  173.             group by 1, coalesce(E.AFA, :V_DEFAULT_AFA), CS.ID_GYUJTO
  174.             into :R_VTSZ, :R_AFA, :R_TETEL_NETTOERTEK, :R_TETEL_BRUTTOERTEK, :R_TETEL_GYUJTO, :R_TOMEG;
  175.         end
  176.  
  177.         if (V_AKT = V_COUNT) then
  178.         begin
  179.            R_TETEL_NETTOERTEK = R_BIZ_NETTO - V_OSSZ_TETEL_NETTO;
  180.            R_TETEL_BRUTTOERTEK = V_BIZ_BRUTTO - V_OSSZ_TETEL_BRUTTO;
  181.         end
  182.  
  183.         R_TETEL_AFAERTEK = R_TETEL_BRUTTOERTEK - R_TETEL_NETTOERTEK;
  184.         R_TETEL_GYUJTO_NEV = null;
  185.  
  186.       select NEV
  187.       from GYUJTO
  188.       where ID_GYUJTO = :R_TETEL_GYUJTO
  189.       into :R_TETEL_GYUJTO_NEV;
  190.  
  191.       suspend;
  192.  
  193.       V_AKT = V_AKT + 1;
  194.       V_OSSZ_TETEL_NETTO = V_OSSZ_TETEL_NETTO + R_TETEL_NETTOERTEK;
  195.       V_OSSZ_TETEL_BRUTTO = V_OSSZ_TETEL_BRUTTO + R_TETEL_BRUTTOERTEK;
  196.     end
  197.   end
  198. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement