You are on page 1of 78

AS

function format_str_1002(str in varchar2, nmb in number) return varchar2


as
v_out varchar2(240);
BEGIN
v_out:=substr(LPAD('0',nmb,'0'),1, nmb -
length(replace(trim(to_char(str,'99999999999999999999D90')),'.','')))||
replace(trim(to_char(str,'99999999999999999999D90')),'.','');
return v_out;
end format_str_1002;

function format_number_1002(str in number) return varchar2


as
v_out varchar2(240);
BEGIN
v_out := trim(to_char(str, '999999990.99'));
return v_out;
end format_number_1002;

--funkcija koja formatira datum u stilu 1002 obrasca


function format_date_1002(datum in date) return varchar2
as
v_month varchar2(10);
v_day varchar2(10);
v_year varchar2(10);
v_date_string varchar2(10);
begin
v_day := lpad(to_char(extract(day from datum)),2,'0');
v_month := lpad(to_char(extract(month from datum)),2,'0');
v_year := to_char(extract(year from datum));
v_date_string :=v_year||v_month||v_day;
return v_date_string;
exception
when others then
v_date_string :='XXXXXXXX';
return v_date_string;
end format_date_1002;

function get_org_dis_payer_status(org_id in number) return varchar2


as
dp_status varchar2(2);
begin
select nvl(attribute14,'D') into dp_status from hr_all_organization_units where
ORGANIZATION_ID=org_id;
return dp_status;
exception
WHEN NO_DATA_FOUND THEN
dp_status:='D';
return dp_status;
when others then
dp_status :='X';
return dp_status;

end get_org_dis_payer_status;

function get_org_address(org_jib in varchar2) return varchar2


AS
loc_id number;
org_address varchar2(240);
BEGIN
select LOCATION_ID INTO LOC_ID from HR_ALL_ORGANIZATION_UNITS WHERE
ATTRIBUTE10=org_jib;
SELECT ADDRESS_LINE_1||' '||ADDRESS_LINE_2||', '||POSTAL_CODE||' '||
SUBSTR(TOWN_OR_CITY,5) into org_address
FROM HR_LOCATIONS_ALL WHERE LOCATION_ID=LOC_ID;
return org_address;
EXCEPTION
WHEN NO_DATA_FOUND THEN
org_address:='Nema podatka o adresi';
return org_address;
END get_org_address;
--funkcija koja vraća adresu lokacije za dati org_id
function get_org_address(org_id in number) return varchar2
AS
loc_id number;
org_address varchar2(240);
BEGIN
select LOCATION_ID INTO LOC_ID from HR_ALL_ORGANIZATION_UNITS WHERE
ORGANIZATION_ID=ORG_ID;
SELECT ADDRESS_LINE_1||' '||ADDRESS_LINE_2||', '||POSTAL_CODE||' '||
SUBSTR(TOWN_OR_CITY,5) into org_address
FROM HR_LOCATIONS_ALL WHERE LOCATION_ID=LOC_ID;
return org_address;
EXCEPTION
WHEN NO_DATA_FOUND THEN
org_address:='Nema podatka o adresi';
return org_address;
END get_org_address;

function get_org_name(org_jib in varchar2) return varchar2


AS
loc_id number;
org_name varchar2(240);
BEGIN
select LOCATION_ID INTO LOC_ID from HR_ALL_ORGANIZATION_UNITS WHERE
ATTRIBUTE10=org_jib;
SELECT DESCRIPTION into org_name
FROM HR_LOCATIONS_ALL WHERE LOCATION_ID=LOC_ID;
return org_name;
EXCEPTION
WHEN NO_DATA_FOUND THEN
org_name:='Nema punog naziva institucije';
return org_name;
END get_org_name;

function get_org_name(org_id in number) return varchar2


as
loc_id number;
org_name varchar2(240);
BEGIN
select LOCATION_ID INTO LOC_ID from HR_ALL_ORGANIZATION_UNITS WHERE
ORGANIZATION_ID=ORG_ID;
SELECT DESCRIPTION into org_name
FROM HR_LOCATIONS_ALL WHERE LOCATION_ID=LOC_ID;
return org_name;
EXCEPTION
WHEN NO_DATA_FOUND THEN
org_name:='Nema punog naziva institucije';
END get_org_name;

--funkcija koja generiše naziv fajla


function c_file_name(p_jib in varchar2, p_datum in date, p_vrsta in varchar2,
p_file_version in varchar2) return varchar2
as
v_month varchar2(2);
v_year varchar2(4);
v_file_name varchar2(29);
v_vrsta varchar2(1);
begin
v_month := lpad(to_char(extract(month from p_datum)),2,'0');
v_year := substr(to_char(extract(year from p_datum)),3,2);

if p_vrsta = 'POREZ' then


v_vrsta := 'P';
else
v_vrsta := 'D';
end if;

v_file_name := p_jib||'-'||v_year||v_month||'-'||v_vrsta||'-'||
p_file_version||'.xml';
return v_file_name;
exception
when others then
v_file_name := 'Greska';
return v_file_name;
end c_file_name;

--funkcija koja vraca jib za dati org_id


function get_org_jib(org_id in number) return varchar2
as
jib varchar2(240);
begin
select HR_ALL_ORGANIZATION_UNITS.ATTRIBUTE10 into jib from
HR_ALL_ORGANIZATION_UNITS where HR_ALL_ORGANIZATION_UNITS.ORGANIZATION_ID=org_id
AND ROWNUM=1;
return jib;
exception
WHEN others THEN
jib:='Nema JIB-a';
return jib;
end get_org_jib;

--funkcija koja vraca org_id za dati jib


function get_org_id(org_jib in varchar2) return number
as
org_id number;
begin
select ORGANIZATION_ID into org_id from HR_ALL_ORGANIZATION_UNITS where
ATTRIBUTE10=org_jib;
return org_id;
exception
WHEN others THEN
org_id:=0;
return org_id;
end get_org_id;

--funkcija koja vraca tip ugovora


function get_cont_type(assi_id in number, datum in DATE) return varchar2
as
conc_type varchar2(240);
begin
select EMPLOYMENT_CATEGORY into conc_type from PER_ALL_ASSIGNMENTS_F where
ASSIGNMENT_ID=assi_id and datum BETWEEN EFFECTIVE_START_DATE and
EFFECTIVE_END_DATE;
return conc_type;
exception
WHEN others THEN
conc_type:='Nema tipa ugovora';
return conc_type;
end get_cont_type;

--funkcija koja vraca opstinu organizacije


function get_org_municip(org_id in number) return varchar2
AS
loc_id number;
org_municip varchar2(240);
BEGIN
select LOCATION_ID INTO LOC_ID from HR_ALL_ORGANIZATION_UNITS WHERE
ORGANIZATION_ID=ORG_ID;
SELECT SUBSTR(TOWN_OR_CITY,0,3) into org_municip
FROM HR_LOCATIONS_ALL WHERE LOCATION_ID=LOC_ID;
return org_municip;
EXCEPTION
WHEN NO_DATA_FOUND THEN
org_municip:='Nema podatka o adresi';
return org_municip;
END get_org_municip;

function get_work_days(p_org_id in number, p_datum_od in date, p_datum_do in date,


p_jmbg in varchar2) return number
AS
v_days number;
v_date_od date;
v_date_do date;
BEGIN

select decode(min(effective_start_date), null, p_datum_od,


min(effective_start_date)) into v_date_od from per_all_assignments_f
where person_id = (select distinct person_id from per_all_people_f where
national_identifier = p_jmbg) and organization_id = p_org_id and
effective_start_date BETWEEN p_datum_od and p_datum_do;

select decode(max(effective_end_date), null, p_datum_do, max(effective_end_date))


into v_date_do from per_all_assignments_f
where person_id = (select distinct person_id from per_all_people_f where
national_identifier = p_jmbg) and organization_id = p_org_id and effective_end_date
BETWEEN p_datum_od and p_datum_do;

--v_days := per_accrual_calc_functions.get_working_days(v_date, p_datum_do);

--select p_datum_do - v_date into v_days from dual;

select v_date_do - v_date_od into v_days from dual;

--dbms_output.put_line('p_jmbg -> ' || p_jmbg);


--dbms_output.put_line('v_days -> ' || to_char(v_days));

return v_days + 1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_days := 0;
return v_days;
END get_work_days;

function get_tax_return_base(assi_id in number, datum in date) return varchar2


as
pay_id number;
link_id number;
el_entry_id number;
tax_return varchar2(240);
emp_cat varchar2(240);
begin
select payroll_id into pay_id from PER_ALL_ASSIGNMENTS_F where
assignment_id=assi_id and datum BETWEEN EFFECTIVE_START_DATE and
EFFECTIVE_END_DATE;

--DANIJEL 17.08.2017. Ispravka zbog linkovanja


--START
select EMPLOYMENT_CATEGORY into emp_cat from PER_ALL_ASSIGNMENTS_F where
assignment_id=assi_id and datum BETWEEN EFFECTIVE_START_DATE and
EFFECTIVE_END_DATE;

--select element_link_id into link_id from PAY_ELEMENT_LINKS_F where


element_type_id=794 and payroll_id=pay_id and datum BETWEEN EFFECTIVE_START_DATE
and EFFECTIVE_END_DATE;

select element_link_id into link_id from PAY_ELEMENT_LINKS_F where


EMPLOYMENT_CATEGORY = emp_cat and element_type_id=794 and payroll_id=pay_id and
datum BETWEEN EFFECTIVE_START_DATE and EFFECTIVE_END_DATE;
--END

select element_entry_id into el_entry_id from PAY_ELEMENT_ENTRIES_F where


element_link_id=link_id and assignment_id=assi_id and datum BETWEEN
EFFECTIVE_START_DATE and EFFECTIVE_END_DATE;

select SCREEN_ENTRY_VALUE into tax_return from PAY_ELEMENT_ENTRY_VALUES_F


where input_value_id=1428 and ELEMENT_ENTRY_ID=el_entry_id and
datum BETWEEN EFFECTIVE_START_DATE and EFFECTIVE_END_DATE;
return tax_return;
/*exception
WHEN OTHERS THEN
tax_return:='GRESKA';
return tax_return;*/
end get_tax_return_base;
function get_ben_coef(assi_id in number, datum IN DATE) return varchar2
as
ben_coef varchar2(240);
begin
select ass_attribute1 into ben_coef from PER_ALL_ASSIGNMENTS_F where
assignment_id=assi_id and datum BETWEEN EFFECTIVE_START_DATE and
EFFECTIVE_END_DATE;
CASE ben_coef
WHEN 'BENEFICIRANI_STAZ_12_12' THEN ben_coef:='1.0000';
WHEN 'BENEFICIRANI_STAZ_13_12' THEN ben_coef:='1.0834';
WHEN 'BENEFICIRANI_STAZ_14_12' THEN ben_coef:='1.1667';
WHEN 'BENEFICIRANI_STAZ_15_12' THEN ben_coef:='1.2500';
WHEN 'BENEFICIRANI_STAZ_16_12' THEN ben_coef:='1.3334';
WHEN 'BENEFICIRANI_STAZ_18_12' THEN ben_coef:='1.5000';
ELSE ben_coef:='1.0000';
END CASE;
return ben_coef;
EXCEPTION
WHEN NO_DATA_FOUND THEN
ben_coef:='1.0000';
return ben_coef;
end get_ben_coef;

function get_ben_job_code(assi_id in number, datum IN DATE) return varchar2


as
ben_job_code varchar2(240);
begin
select ass_attribute2 into ben_job_code from PER_ALL_ASSIGNMENTS_F where
assignment_id=assi_id and datum BETWEEN EFFECTIVE_START_DATE and
EFFECTIVE_END_DATE;
return ben_job_code;
EXCEPTION
WHEN NO_DATA_FOUND THEN
ben_job_code:='0000';
return ben_job_code;
end get_ben_job_code;

function get_tax_return_ugo(assi_id number, datum date, tip varchar2) return


varchar2
as
r_num number;
pay_id number;
el_name varchar2(50);
el_type_id number;
link_id number;
el_entry_id number;
input_val_id number;
tax_return varchar2(240);
entry_name varchar2(240);
v_log NUMBER;

begin

nts_common.insert_log_record(p_source =>
'XX_CREATE_1002_XML_2022.get_tax_return_ugo',
p_type => 'Er',
p_message => 'el_type_id_1'||'-'||'start');
case tip
when 'Z' then entry_name:='Zakonsko umanjenje';
when 'M' then entry_name:='Mjesecno umanjenje poreska kartica';
end case;

select payroll_id,
decode(EMPLOYMENT_CATEGORY,
'BA_U_04','Ugovor o PIP I',
'BA_U_05','Ugovor o djelu I',
'BA_U_06','Ugovor o autorskom djelu I',
'BA_U_10','Komisija I',
'Ugovor o zakupu I'
)
into pay_id, el_name
from PER_ALL_ASSIGNMENTS_F
where ASSIGNMENT_ID=assi_id and
datum between EFFECTIVE_START_DATE and EFFECTIVE_END_DATE;

select element_type_id into el_type_id


from PAY_ELEMENT_TYPES_F
where ELEMENT_NAME=el_name;

nts_common.insert_log_record(p_source =>
'XX_CREATE_1002_XML_2022.get_tax_return_ugo',
p_type => 'Er',
p_message => 'el_type_id_1'||'-'||el_type_id);

v_log := insert_log('el_type_id', to_char(el_type_id));


v_log := insert_log('pay_id', to_char(pay_id));
v_log := insert_log('datum', to_char(datum));

select ELEMENT_LINK_ID into link_id


from PAY_ELEMENT_LINKS_F
where element_type_id=el_type_id and
PAYROLL_ID=pay_id
and datum between EFFECTIVE_START_DATE and EFFECTIVE_END_DATE;

begin

select element_entry_id into el_entry_id


from PAY_ELEMENT_ENTRIES_F
where element_link_id=link_id
and assignment_id=assi_id
and datum between EFFECTIVE_START_DATE and EFFECTIVE_END_DATE
AND ROWNUM=1;

exception
when no_data_found then
if el_name='Ugovor o djelu I' then

el_name:='Ugovor o djelu PDS I';


select element_type_id into el_type_id
from PAY_ELEMENT_TYPES_F
where ELEMENT_NAME=el_name;

select ELEMENT_LINK_ID into link_id


from PAY_ELEMENT_LINKS_F
where element_type_id=el_type_id and
PAYROLL_ID=pay_id
and datum between EFFECTIVE_START_DATE and EFFECTIVE_END_DATE;

select element_entry_id into el_entry_id


from PAY_ELEMENT_ENTRIES_F
where element_link_id=link_id
and assignment_id=assi_id
and datum between EFFECTIVE_START_DATE and EFFECTIVE_END_DATE
AND ROWNUM=1;

elsif el_name='Ugovor o PIP I' then

el_name:='Ugovor o PIP PDS I';


select element_type_id into el_type_id
from PAY_ELEMENT_TYPES_F
where ELEMENT_NAME=el_name;

select ELEMENT_LINK_ID into link_id


from PAY_ELEMENT_LINKS_F
where element_type_id=el_type_id and
PAYROLL_ID=pay_id
and datum between EFFECTIVE_START_DATE and EFFECTIVE_END_DATE;

select element_entry_id into el_entry_id


from PAY_ELEMENT_ENTRIES_F
where element_link_id=link_id
and assignment_id=assi_id
and datum between EFFECTIVE_START_DATE and EFFECTIVE_END_DATE
AND ROWNUM=1;

end if;
end;

select INPUT_VALUE_ID into input_val_id


from pay_input_values_f
where ELEMENT_TYPE_ID=el_type_id and name=entry_name
and datum between EFFECTIVE_START_DATE and EFFECTIVE_END_DATE;

nts_common.insert_log_record(p_source =>
'XX_CREATE_1002_XML_2022.get_tax_return_ugo',
p_type => 'Er',
p_message => el_type_id||'-'||input_val_id||'-'||entry_name);

select SCREEN_ENTRY_VALUE into tax_return


from PAY_ELEMENT_ENTRY_VALUES_F
where input_value_id=input_val_id and ELEMENT_ENTRY_ID=el_entry_id
and datum between EFFECTIVE_START_DATE and EFFECTIVE_END_DATE;

return tax_return;

/*exception
when others then
tax_return:='XXX';
return tax_return;*/
end get_tax_return_ugo;

function get_dl_by_assignment(p_ass_id in number, p_date in date) return varchar2


as
v_return varchar2(240);
begin

select case when paaf.payroll_id in (8275, 8094) then '3' else '1' end into
v_return FROM PER_ALL_ASSIGNMENTS_F paaf where paaf.assignment_id = p_ass_id and
p_date between effective_start_date and effective_end_date;

return v_return;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_return := '1';
return v_return;
end get_dl_by_assignment;

function fill_main_tmp_table(p_org_jib in varchar2,


p_datum_od IN DATE,
p_datum_do IN DATE) return varchar2 as
v_return varchar2(240);

begin

execute immediate ' ALTER SESSION SET NLS_NUMERIC_CHARACTERS=''. ''';

v_return := '0';

delete from XX_OBRAZAC1002_MAIN_TT;


commit;

insert into XX_OBRAZAC1002_MAIN_TT(ASSI_ID, JMBG, IME, PREZIME, RADNI_SATI,


BRUTO, PIO, ZO, DZ,
ZN, TROSKOVI, DOHODAK, UMANJENJE_ZAKON,
POREZ_UMANJENJE_ZAKON,
PORESKA_KARTICA, POVRAT_POREZA,
OSNOVICA_POREZ, POREZ, NETO, EMP_CAT_S, OPST_PIO, OPST_ZO, OPST_DZ, OPST_ZN,
ENTITET, OPST_POREZ, SOLID, EMP_CAT
,OSTALE_NAKNADE, NEOPOR_NAKNADE
)
WITH LICNI AS
(select assignment_id ASSI_ID,
action_information13 JMBG,
UPPER(action_information1) IME,
TRIM(UPPER(action_information2)) PREZIME,
action_information15 ENTITET_ZDRAVSTVA,
action_information16 OPST_ZO,
action_information17 OPST_POREZ,
action_information18 OPST_NZ,
action_information19 OPST_PIO,
action_information20 OPST_DZ,
effective_date,
action_context_id
from pay_action_information
where action_information_category = 'RS EMPLOYEE ADDL DETAILS'),
TIP_UGOVORA AS
(SELECT ASSIGNMENT_ID ASSI_ID,
DECODE(EMPLOYMENT_CATEGORY,
'BA_U_01',
'1',
'BA_U_02',
'1',
'BA_U_03',
'3',
'BA_U_04',
'3',
'BA_U_05',
'3',
'BA_U_06',
'2',
'BA_U_07',
'1',
'BA_U_08',
'3',
'BA_U_09',
'1',
'BA_U_10',
'3',
'BA_U_11',
'6',
'BA_U_12',
--'1',
get_dl_by_assignment(ASSIGNMENT_ID, p_datum_do),
'BA_U_13',
'1',
'BA_U_14',
'4',
'BA_U_15',
'3',
'BA_U_16',
'3',
'BA_U_17',
'3',
'BA_U_18',
'1',
'BA_U_19',
'3',
'BA_U_20',
'3',
'BA_U_21',
'3',
'BA_U_22',
'3',
'X') EMP_CAT_S,
EMPLOYMENT_CATEGORY EMP_CAT,
EFFECTIVE_START_DATE ESD,
EFFECTIVE_END_DATE EED
FROM PER_ALL_ASSIGNMENTS_F),
--PODACI O ORG ZA 1002
ORG_INFO AS
(select pai.assignment_id ASSI_ID,
HAOU.ATTRIBUTE10 ORG_JIB,
pai.action_information2 ORG_ID,
pai.action_context_id
from pay_action_information pai
left outer join HR_ALL_ORGANIZATION_UNITS HAOU
ON PAI.action_information2 = HAOU.ORGANIZATION_ID
where action_information_category = 'EMPLOYEE DETAILS'),
--UPIT ZA BRUTO1
B1 AS
(select assignment_id ASSI_ID,
SUM(DECODE(action_information3,
--'BRUTO 1 plata',
--action_information16,
'Doprinos PIO Poslanički dodatak',
action_information17,
'Doprinos PIO Naknada za rad',
action_information17,
--'Doprinos za PIO',
--action_information17,
'BRUTO plata',
action_information16,
'BRUTO 1 Ostale naknade',
action_information16,
'Doprinos PIO',
action_information18,
'Doprinos PIO senatorski dodatak',
action_information18,
'Doprinos za PIO FD',
action_information18,
'Ugovor o zakupu',
round(action_information16/0.92,2),
'Nacionalna sportska priznanja',
round(action_information16/0.9,2),
/*'Doprinos za PIO SAR misija',
action_information17,*/
0)) BRUTO1,
action_context_id
from pay_action_information
where action_information3 like '%BRUTO plata%'
OR action_information3 like 'Doprinos za PIO'
OR action_information3 like 'Doprinos PIO Poslanički dodatak'
OR action_information3 like 'Doprinos PIO Naknada za rad'
OR action_information3 like 'Doprinos PIO'
OR action_information3 like 'BRUTO 1 Ostale naknade'
OR action_information3 like 'Doprinos PIO senatorski dodatak'
OR action_information3 like 'Doprinos za PIO FD'
or action_information3 like 'Ugovor o zakupu'
or action_information3 like 'Nacionalna sportska priznanja'
--or action_information3 like 'Doprinos za PIO SAR misija'
GROUP BY assignment_id, action_context_id
),
--UPIT ZA BRUTO2
B2 AS
(select assignment_id ASSI_ID,
SUM(DECODE(action_information3,
'Doprinos PIO Poslanički dodatak',
action_information17,
'Doprinos PIO Naknada za rad',
action_information17,
'BRUTO 2 plata',
action_information16,
'BRUTO 2 Ostale naknade',
action_information16,
'Doprinos PIO',
action_information18,
/*'Doprinos za PIO SAR misija',
action_information17,*/
0)) BRUTO2,
action_context_id
from pay_action_information
where action_information3 like '%BRUTO 2 plata%'
OR action_information3 like 'Doprinos PIO'
OR action_information3 like 'Doprinos PIO Poslanički dodatak'
OR action_information3 like 'Doprinos PIO Naknada za rad'
OR action_information3 like 'BRUTO 2 Ostale naknade'
--OR action_information3 like 'Doprinos za PIO SAR misija'
GROUP BY assignment_id, action_context_id
),
--UPIT ZA DOP PIO
PIO AS
(select assignment_id ASSI_ID,
SUM(action_information16) DOP_PIO,
action_context_id
from pay_action_information
where action_information3 like 'Doprinos za PIO'
or action_information3 like 'Doprinos PIO'
OR action_information3 like 'Doprinos PIO Poslanički dodatak'
OR action_information3 like 'Doprinos PIO Naknada za rad'
or action_information3 like 'Doprinos za PIO Ostale naknade'
or action_information3 like 'Doprinos PIO senatorski dodatak'
or action_information3 like 'Doprinos za PIO FD'
--or action_information3 like 'Doprinos za PIO SAR misija'
GROUP BY assignment_id, action_context_id
),
--UPIT ZA DOP ZO
ZO AS
(select assignment_id ASSI_ID,
SUM(action_information16) DOP_ZO,
action_context_id
from pay_action_information
where action_information3 like 'Doprinos za ZO'
or action_information3 like 'Doprinos ZO'
OR action_information3 like 'Doprinos ZO Poslanički dodatak'
OR action_information3 like 'Doprinos ZO Naknada za rad'
or action_information3 like 'Doprinos za ZO Ostale naknade'
or action_information3 like 'Doprinos ZO SD'
or action_information3 like 'Doprinos za ZO FD'
--or action_information3 like 'Doprinos za ZO SAR misija'
GROUP BY assignment_id, action_context_id
),
--UPIT ZA DOP DZ
DZ AS
(select assignment_id ASSI_ID,
SUM(action_information16) DOP_DZ,
action_context_id
from pay_action_information
where action_information3 like 'Doprinos za DZ'
or action_information3 like 'Doprinos DZ'
OR action_information3 like 'Doprinos DZ Poslanički dodatak'
OR action_information3 like 'Doprinos DZ Naknada za rad'
or action_information3 like 'Doprinos za DZ Ostale naknade'
or action_information3 like 'Doprinos DZ senatorski dodatak'
or action_information3 like 'Doprinos za DZ FD'
--or action_information3 like 'Doprinos za DZ SAR misija'
GROUP BY assignment_id, action_context_id),
--UPIT ZA DOP NZ
NZ AS
(select assignment_id ASSI_ID,
SUM(action_information16) DOP_NZ,
action_context_id
from pay_action_information
where action_information3 like 'Doprinos za ZN'
or action_information3 like 'Doprinos ZN'
OR action_information3 like 'Doprinos ZN Poslanički dodatak'
OR action_information3 like 'Doprinos ZN Naknada za rad'
or action_information3 like 'Doprinos za ZN Ostale naknade'
or action_information3 like 'Doprinos ZN SD'
or action_information3 like 'Doprinos za ZN FD'
--or action_information3 like 'Doprinos za ZN SAR misija'
GROUP BY assignment_id, action_context_id
),
--UPIT ZA NETO I SATE U MJESECU
NIS AS
(SELECT assignment_id ASSI_ID,
SUM(DECODE(action_information3,
'Poslanički dodatak',
action_information16,
'Naknada za rad',
action_information16,
'NETO plata',
action_information16,
'NETO ostale naknade',
action_information16,
'Ugovor o djelu',
action_information18,
'Imenovana lica - stručne usluge',
action_information16,
'Komisija',
action_information18,
'Ugovor o zakupu',
action_information18,
'Nacionalna sportska priznanja',
action_information18,
'Ugovor o PIP',
action_information18,
'Eticki odbor',
action_information16,
'Ugovor o dopunskom radu',
action_information16,
'Ugovor o autorskom djelu',
action_information16,
'Funkcionalni dodatak',
action_information16,
'Senatorski dodatak',
action_information16,
'Upravni odbor',
action_information16,
/*'SAR misija',
action_information16,*/
0)) NETO_PLATA,
SUM(DECODE(action_information3,
'NETO plata',
action_information18,
'0')) SATI_MJESEC,
action_context_id
from pay_action_information
where action_information3 like 'NETO plata'
OR action_information4 like 'Ugovori i komisije'
OR action_information3 like 'NETO ostale naknade'
OR action_information3 like 'Poslanički dodatak'
OR action_information3 like 'Naknada za rad'
--OR action_information3 like 'SAR misija'
OR action_information3 like 'Imenovana lica - stručne usluge'
group by assignment_id, action_context_id
),
NAK AS
(
SELECT assignment_id ASSI_ID,
SUM(action_information16) OST_NAK,
action_context_id
from pay_action_information
WHERE action_information3 like 'BRUTO 1 Ostale naknade'
group by assignment_id, action_context_id
),
NON as
(
SELECT
ASSIGNMENT_ID ASSI_ID,
action_context_id,
sum(decode(action_information3,'Ukupno ostale naknade
plate',action_information16,0))-sum(decode(action_information3,'NETO ostale
naknade',action_information16,0)) NON
from pay_action_information
WHERE
1=1
and (action_information3 like '%Ukupno ostale naknade plate%'
or action_information3 like '%NETO ostale naknade%')
--and EFFECTIVE_DATE='30-APR-2016'
group by
ASSIGNMENT_ID,
action_context_id
),
SOLID AS
(select assignment_id ASSI_ID,
sum(action_information16) DOP_SOLID,
action_context_id
from pay_action_information
where action_information3 like 'Poseban doprinos za solidarnost'
or action_information3 like 'Poseban doprinos za solidarnost Ostale naknade'
or action_information3 like 'Poseban doprinos za solidarnost ugovori'
or action_information3 like 'Poseban doprinos za solidarnost SD'
group by assignment_id, action_context_id),
--upit za troskove
TROS as
(
select
assignment_id ASSI_ID,
sum(
decode(
action_information3,
'POMOCNI_1002_UGO',
action_information20,
'Ugovor o zakupu',
action_information19,
0)) TROS,
action_context_id
from pay_action_information
where ACTION_INFORMATION3='POMOCNI_1002_UGO'
or ACTION_INFORMATION3='Ugovor o zakupu'
group by assignment_id, action_context_id
),
--UPIT ZA POREZ
POREZ AS
(
select
ASSI_ID,
IZNOS_POREZ,
case
when IZNOS_POREZ<='0' then '0'
when IZNOS_POREZ>'0' then to_char(OSNOVICA_POREZ)
end OSNOVICA_POREZ,
action_context_id
from(
SELECT assignment_id ASSI_ID,
SUM(action_information16) IZNOS_POREZ,
SUM(decode(action_information3,
'Porez Poslanički dodatak',
action_information17,
'Porez Naknada za rad',
action_information17,
'Porez na platu',
action_information17,
'Porez ostale naknade',
action_information17,
'Porez ugovori',
action_information18,
'Porez FD',
action_information18,
'Porez SD',
action_information18,
/*'Porez SAR misija',
action_information17,*/
'0')) OSNOVICA_POREZ,
action_context_id
from pay_action_information
where action_information3 like 'Porez na platu'
or action_information3 like 'Porez ugovori'
or action_information3 like 'Porez ostale naknade'
or action_information3 like 'Porez FD'
or action_information3 like 'Porez SD'
or action_information3 like 'Porez Poslanički dodatak'
or action_information3 like 'Porez Naknada za rad'
--or action_information3 like 'Porez SAR misija'
group by assignment_id, action_context_id)
),
--UPIT ZA PORESKU KARTICU
POR_KARTICA AS
(SELECT assignment_id ASSI_ID,
round(to_number(action_information19) * 0.1, 2) POVRAT_POREZ_OLD,
action_information19 MJESECNO_UMANJENJE_OLD,
case
when to_number(action_information20) > 1000 then 1000
else to_number(action_information20) end ISKORISTENO_UMANJENJE_OLD2,

case when action_information3 = 'Doprinos za PIO SAR misija'


then 0
else to_number(action_information21) end ISKORISTENO_UMANJENJE,

case
when to_number(action_information20) > 1000 then
to_number(action_information20) - 1000
else 0 end MJESECNO_UMANJENJE_OLD2,

to_number(action_information22) MJESECNO_UMANJENJE,

case
when to_number(action_information20) > 1000 then
round((to_number(action_information20) - 1000) * 0.1, 2)
else 0 end POVRAT_POREZ,

/*case
when to_number(action_information19) > 0 then
case when round(round(to_number(action_information20) /
(to_number(action_information18) + to_number(action_information19)), 4) *
to_number(action_information18), 2) > 500 then 500
else round(round(to_number(action_information20) /
(to_number(action_information18) + to_number(action_information19)), 4) *
to_number(action_information18), 2) end
else to_number(action_information20) end ISKORISTENO_UMANJENJE,

case when to_number(action_information19) > 0 then


case when to_number(action_information20) -
round(round(to_number(action_information20) / (to_number(action_information18) +
to_number(action_information19)), 4) * to_number(action_information18), 2) >
to_number(action_information19) then to_number(action_information19)
else to_number(action_information20) -
round(round(to_number(action_information20) / (to_number(action_information18) +
to_number(action_information19)), 4) * to_number(action_information18), 2) end
else 0 end MJESECNO_UMANJENJE,

case when to_number(action_information19) > 0 then


case when to_number(action_information20) -
round(round(to_number(action_information20) / (to_number(action_information18) +
to_number(action_information19)), 4) * to_number(action_information18), 2) >
to_number(action_information19) then round(to_number(action_information19) * 0.1,
2)
else round((to_number(action_information20) -
round(round(to_number(action_information20) / (to_number(action_information18) +
to_number(action_information19)), 4) * to_number(action_information18), 2)) * 0.1,
2) end
else 0 end POVRAT_POREZ,*/

action_context_id
from pay_action_information
where action_information3 like 'BRUTO plata'
/*or action_information3 like 'Doprinos za PIO SAR misija'*/)

--glavni select
SELECT
ASSI_ID,
JMBG,
IME,
PREZIME,
round(RADNI_SATI,0),
BRUTO,
PIO,
ZO,
DZ,
ZN,
TROSKOVI,
DOHODAK,

case
when (to_number(dohodak)>=1000 and emp_cat_s=1) then UMANJENJE_ZAKON
--when (to_number(dohodak)<500 and emp_cat_s=1) then DOHODAK
else UMANJENJE_ZAKON
end UMANJENJE_ZAKON,

POREZ_UMANJENJE_ZAKON,
PORESKA_KARTICA,
POVRAT_POREZA,
OSNOVICA_POREZ,
POREZ,
NETO,
--case when PAYROLL in ('IMENOVANA LICA - SPOLJNI CLANOVI RADNIH TIJELA',
'IMENOVANA LICA - NEPROFESIONALNI POSLANICI') then '3' else EMP_CAT_S end
EMP_CAT_S,
OPST_PIO,
OPST_ZO,
OPST_DZ,
OPST_ZN,
ENTITET,
OPST_POREZ,
SOLID,
EMP_CAT,
OSTALE_NAKNADE,
NEOPOR_NAKNADE
FROM
(SELECT 1 ASSI_ID,
LICNI.JMBG JMBG,
--LICNI2.PAYROLL,
TRIM(SUBSTR(UPPER(LICNI.IME), 0, 20)) IME,
UPPER(LICNI.PREZIME) PREZIME,
SUM(DECODE(TIP_UGOVORA.EMP_CAT_S,'3','0',
NVL(NIS.SATI_MJESEC, '0'))) RADNI_SATI,
SUM(NVL(B1.BRUTO1, '0')) BRUTO,
SUM(NVL(PIO.DOP_PIO, '0')) PIO,
SUM(NVL(ZO.DOP_ZO, '0')) ZO,
SUM(NVL(DZ.DOP_DZ, '0')) DZ,
SUM(NVL(NZ.DOP_NZ, '0')) ZN,
sum(NVL(TROS.TROS, '0')) TROSKOVI,
SUM(to_char(TO_NUMBER(NVL(B1.BRUTO1, '0')) - TO_NUMBER(NVL(PIO.DOP_PIO,
'0')) -
TO_NUMBER(NVL(DZ.DOP_DZ, '0')) - TO_NUMBER(NVL(ZO.DOP_ZO, '0')) -
TO_NUMBER(NVL(NZ.DOP_NZ, '0'))-TO_NUMBER(NVL(TROS.TROS, '0')))) DOHODAK,

SUM(DECODE(TIP_UGOVORA.EMP_CAT_S,

'3',NVL(XX_CREATE_1002_XML_2022.GET_TAX_RETURN_UGO(LICNI.ASSI_ID,p_datum_do,'Z'),'0
'),

'2',NVL(XX_CREATE_1002_XML_2022.GET_TAX_RETURN_UGO(LICNI.ASSI_ID,p_datum_do,'Z'),'0
'),
'4','0',
to_char(NVL(POR_KARTICA.ISKORISTENO_UMANJENJE,'1000'))))
UMANJENJE_ZAKON,
--
to_char(NVL(XX_CREATE_1002_XML_2022.GET_TAX_RETURN_BASE(LICNI.ASSI_ID,p_datum_do),'
500')))) UMANJENJE_ZAKON,
--nvl(sum(POR_KARTICA.MJESECNO_UMANJENJE), 0) UMANJENJE_ZAKON,

SUM(DECODE(TIP_UGOVORA.EMP_CAT_S,

'3',NVL(XX_CREATE_1002_XML_2022.GET_TAX_RETURN_UGO(LICNI.ASSI_ID,p_datum_do,'Z')*0.
1,'0'),

'2',NVL(XX_CREATE_1002_XML_2022.GET_TAX_RETURN_UGO(LICNI.ASSI_ID,p_datum_do,'Z')*0.
1,'0'),
'0')) POREZ_UMANJENJE_ZAKON,

SUM(DECODE(TIP_UGOVORA.EMP_CAT_S,

'3',NVL(XX_CREATE_1002_XML_2022.GET_TAX_RETURN_UGO(LICNI.ASSI_ID,p_datum_do,'M'),'0
'),

'2',NVL(XX_CREATE_1002_XML_2022.GET_TAX_RETURN_UGO(LICNI.ASSI_ID,p_datum_do,'M'),'0
'),
to_char(NVL(POR_KARTICA.MJESECNO_UMANJENJE,'0')))) PORESKA_KARTICA,

SUM(DECODE(TIP_UGOVORA.EMP_CAT_S,

'3',NVL(XX_CREATE_1002_XML_2022.GET_TAX_RETURN_UGO(LICNI.ASSI_ID,p_datum_do,'M')*0.
1,'0'),

'2',NVL(XX_CREATE_1002_XML_2022.GET_TAX_RETURN_UGO(LICNI.ASSI_ID,p_datum_do,'M')*0.
1,'0'),
to_char(NVL(POR_KARTICA.POVRAT_POREZ, '0')))) POVRAT_POREZA,
SUM(NVL(POREZ.OSNOVICA_POREZ, '0')) OSNOVICA_POREZ,

SUM(NVL(POREZ.IZNOS_POREZ, '0')) POREZ,


SUM(NVL(NIS.NETO_PLATA, '0')) NETO,
TIP_UGOVORA.EMP_CAT_S EMP_CAT_S,
LICNI.OPST_PIO OPST_PIO,
LICNI.OPST_ZO OPST_ZO,
LICNI.OPST_DZ OPST_DZ,
LICNI.OPST_NZ OPST_ZN,
LICNI.ENTITET_ZDRAVSTVA ENTITET,
LICNI.OPST_POREZ OPST_POREZ,
SUM(NVL(SOLID.DOP_SOLID, '0')) SOLID,
TIP_UGOVORA.EMP_CAT EMP_CAT,
SUM(NVL(NAK.OST_NAK, '0')) OSTALE_NAKNADE,
SUM(NVL(NON.NON, '0')) NEOPOR_NAKNADE
FROM LICNI
/*LEFT OUTER JOIN LICNI2
ON LICNI.ASSI_ID = LICNI2.ASSI_ID
and LICNI.action_context_id = LICNI2.action_context_id*/
LEFT OUTER JOIN ORG_INFO
ON LICNI.ASSI_ID = ORG_INFO.ASSI_ID
and LICNI.action_context_id = ORG_INFO.action_context_id
LEFT OUTER JOIN B1
ON LICNI.ASSI_ID = B1.ASSI_ID
and LICNI.action_context_id = B1.action_context_id
LEFT OUTER JOIN B2
ON LICNI.ASSI_ID = B2.ASSI_ID
and LICNI.action_context_id = B2.action_context_id
LEFT OUTER JOIN PIO
ON LICNI.ASSI_ID = PIO.ASSI_ID
and LICNI.action_context_id = PIO.action_context_id
LEFT OUTER JOIN ZO
ON LICNI.ASSI_ID = ZO.ASSI_ID
and LICNI.action_context_id = ZO.action_context_id
LEFT OUTER JOIN DZ
ON LICNI.ASSI_ID = DZ.ASSI_ID
and LICNI.action_context_id = DZ.action_context_id
LEFT OUTER JOIN NZ
ON LICNI.ASSI_ID = NZ.ASSI_ID
and LICNI.action_context_id = NZ.action_context_id
LEFT OUTER JOIN TROS
ON LICNI.ASSI_ID = TROS.ASSI_ID
and LICNI.action_context_id = TROS.action_context_id
LEFT OUTER JOIN SOLID
ON LICNI.ASSI_ID = SOLID.ASSI_ID
and LICNI.action_context_id = SOLID.action_context_id
LEFT OUTER JOIN NIS
ON LICNI.ASSI_ID = NIS.ASSI_ID
and LICNI.action_context_id = NIS.action_context_id
LEFT OUTER JOIN POREZ
ON LICNI.ASSI_ID = POREZ.ASSI_ID
and LICNI.action_context_id = POREZ.action_context_id
LEFT OUTER JOIN POR_KARTICA
ON LICNI.ASSI_ID = POR_KARTICA.ASSI_ID
and LICNI.action_context_id = POR_KARTICA.action_context_id
LEFT OUTER JOIN NAK
ON LICNI.ASSI_ID = NAK.ASSI_ID
and LICNI.action_context_id = NAK.action_context_id
LEFT OUTER JOIN NON
ON LICNI.ASSI_ID = NON.ASSI_ID
and LICNI.action_context_id = NON.action_context_id
LEFT OUTER JOIN TIP_UGOVORA
ON LICNI.ASSI_ID = TIP_UGOVORA.ASSI_ID
AND LICNI.effective_date BETWEEN TIP_UGOVORA.ESD AND TIP_UGOVORA.EED
WHERE licni.effective_date BETWEEN p_datum_od and p_datum_do --TO_DATE('01-02-
2015', 'dd-mm-yyyy') AND
-- to_date('28-02-2015', 'dd-mm-yyyy')
and org_info.org_jib = p_org_jib
GROUP BY
--LICNI.ASSI_ID,
LICNI.JMBG,
--LICNI2.PAYROLL,
TRIM(SUBSTR(UPPER(LICNI.IME), 0, 20)),
UPPER(LICNI.PREZIME),
TIP_UGOVORA.EMP_CAT_S,
LICNI.OPST_PIO,
LICNI.OPST_ZO,
LICNI.OPST_DZ,
LICNI.OPST_NZ,
LICNI.ENTITET_ZDRAVSTVA,
LICNI.OPST_POREZ,
TIP_UGOVORA.EMP_CAT) where (BRUTO > 0 or EMP_CAT = 'BA_U_19')
;-- '4401571310006';
--and org_info.ORG_ID=186;
--and emp_cat_s='3'
--;
--where licni.jmbg = 1307994153953
--
--AND XX_CREATE_1002_XML_2022.GET_ORG_JIB(ORG_ID)='4401571310006';
commit;

return v_return;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_return := '4';
return v_return;
end fill_main_tmp_table;

function fill_bol_tmp_table(p_org_jib in varchar2,


p_datum_od IN DATE,
p_datum_do IN DATE) return varchar2 as
v_return varchar2(240);

begin
execute immediate 'ALTER SESSION SET NLS_NUMERIC_CHARACTERS=''. ''';
v_return := '0';
delete from XX_OBRAZAC1002_BOL_TT;
commit;
insert into
XX_OBRAZAC1002_BOL_TT(ASSI_ID,JMBG,IME,PREZIME,RADNI_SATI,IZNOS_NAKNADE_BOL,RAZLIKA
_PLATE)
WITH LICNI AS (
select
assignment_id ASSI_ID,
action_information13 JMBG,
UPPER(action_information1) IME,
UPPER(action_information2) PREZIME,
action_information15 ENTITET_ZDRAVSTVA,
action_information16 OPST_POREZ,
action_information17 OPST_PIO,
action_information18 OPST_ZO,
action_information19 OPST_DZ,
action_information20 OPST_NZ,
effective_date,
action_context_id
from pay_action_information
where action_information_category ='RS EMPLOYEE ADDL DETAILS'),
ORG_INFO AS (select pai.assignment_id ASSI_ID,
HAOU.ATTRIBUTE10 ORG_JIB,
pai.action_information2 ORG_ID,
pai.action_context_id
from pay_action_information pai
left outer join HR_ALL_ORGANIZATION_UNITS HAOU ON
PAI.action_information2=HAOU.ORGANIZATION_ID
where action_information_category ='EMPLOYEE DETAILS'),
BOLOVANJE AS (
SELECT
ASSI_ID,
case when TIP_BOLOVANJA = 'Bolovanje 100%' then 'Bolovanje 100'
when TIP_BOLOVANJA = 'Bolovanje 90% preko 30 dana' then 'Bolovanje 90 preko 30
dana'
else TIP_BOLOVANJA end TIP_BOLOVANJA,
IZNOS_NAKANADE_BOLOVANJE/*+MINULI_BOLOVANJE_1+MINULI_BOLOVANJE_2*/
IZNOS_NAKANADE_BOLOVANJE,
MINULI_BOLOVANJE_1,
MINULI_BOLOVANJE_2,
SATI,
action_context_id
FROM (SELECT
assignment_id ASSI_ID,
ACTION_INFORMATION3 TIP_BOLOVANJA,
action_information16 IZNOS_NAKANADE_BOLOVANJE,
nvl(action_information25,'0') MINULI_BOLOVANJE_1,
nvl(action_information26,'0') MINULI_BOLOVANJE_2,
decode(action_information3,
'Porodiljsko do 30 dana',action_information19,
'Porodiljsko preko 30 dana',action_information19,
'Porodiljsko do 30 dana fiksno',action_information17,
'Porodiljsko preko 30 dana fiksno',action_information17,
action_information19) SATI,
action_context_id
FROM PAY_ACTION_INFORMATION
WHERE (ACTION_INFORMATION3 LIKE '%olovanje%'
OR ACTION_INFORMATION3 LIKE '%Porodiljsko%')
and ACTION_INFORMATION3 not like 'Porodiljsko refundacija' and
ACTION_INFORMATION3 not like 'Minuli rad bolovanje refundacija' and
ACTION_INFORMATION3 not like 'Porodiljsko poslodavac' and
ACTION_INFORMATION3 not like 'Porodiljsko poslodavac minuli rad' and
ACTION_INFORMATION3 not like 'Minuli rad bolovanje' and
ACTION_INFORMATION3 not like '%NOP' and
action_information16 > '0')
),
BOLOVANJE_NOP AS (
SELECT
ASSI_ID,
TIP_BOLOVANJA,
IZNOS_NAKANADE_BOLOVANJE IZNOS_NAKANADE_BOLOVANJE,
IZNOS_NAK_BOL_SA_POREZOM,
action_context_id
FROM (SELECT
assignment_id ASSI_ID,
decode(ACTION_INFORMATION3, 'Porodiljsko refundacija fiksno NOP', 'Porodiljsko
preko 30 dana fiksno NOP', 'Porodiljsko refundacija NOP', 'Porodiljsko preko 30
dana NOP',
'Porodiljsko poslodavac fiksno NOP', 'Porodiljsko do 30 dana fiksno NOP',
'Porodiljsko poslodavac NOP', 'Porodiljsko do 30 dana NOP', ACTION_INFORMATION3)
TIP_BOLOVANJA,
action_information16 IZNOS_NAKANADE_BOLOVANJE,
action_information17 IZNOS_NAK_BOL_SA_POREZOM,
action_context_id
FROM PAY_ACTION_INFORMATION
WHERE (ACTION_INFORMATION3 LIKE '%olovanje%NOP'
OR ACTION_INFORMATION3 LIKE '%Porodiljsko%NOP')
and ACTION_INFORMATION3 not like 'Porodiljsko refundacija' and
--ACTION_INFORMATION3 not like 'Porodiljsko refundacija NOP' and
--ACTION_INFORMATION3 not like 'Porodiljsko refundacija fiksno NOP' and
ACTION_INFORMATION3 not like 'Minuli rad bolovanje refundacija' and
ACTION_INFORMATION3 not like 'Minuli rad bolovanje refundacija NOP' and
ACTION_INFORMATION3 not like 'Porodiljsko poslodavac' and
--ACTION_INFORMATION3 not like 'Porodiljsko poslodavac NOP' and
--ACTION_INFORMATION3 not like 'Porodiljsko poslodavac fiksno NOP' and
ACTION_INFORMATION3 not like 'Porodiljsko poslodavac minuli rad' and
ACTION_INFORMATION3 not like 'Porodiljsko poslodavac minuli rad NOP' and
ACTION_INFORMATION3 not like 'Porodiljsko poslodavac minuli rad fiksno NOP' and
ACTION_INFORMATION3 not like 'Minuli rad bolovanje' and
ACTION_INFORMATION3 not like 'Minuli rad bolovanje NOP' and
action_information16 > '0')
)
SELECT
1 ASSI_ID,
LICNI.JMBG JMBG,
TRIM(SUBSTR(LICNI.IME, 0, 20)) IME,
LICNI.PREZIME PREZIME,
sum(BOLOVANJE.SATI) RADNI_SATI,
sum(BOLOVANJE_NOP.IZNOS_NAKANADE_BOLOVANJE) + sum(BOLOVANJE.MINULI_BOLOVANJE_1) +
sum(BOLOVANJE.MINULI_BOLOVANJE_2) IZNOS_NAKNADE_BOL,
round(sum(CASE BOLOVANJE.TIP_BOLOVANJA
WHEN 'Porodiljsko preko 30 dana fiksno' THEN 0
WHEN 'Porodiljsko preko 30 dana' THEN 0
WHEN 'Bolovanje do 30 dana' THEN
to_number(BOLOVANJE_NOP.IZNOS_NAKANADE_BOLOVANJE)/0.7-
to_number(BOLOVANJE_NOP.IZNOS_NAKANADE_BOLOVANJE)
WHEN 'Bolovanje do 42 dana' THEN
to_number(BOLOVANJE_NOP.IZNOS_NAKANADE_BOLOVANJE)/0.7-
to_number(BOLOVANJE_NOP.IZNOS_NAKANADE_BOLOVANJE)
WHEN 'Porodiljsko do 30 dana fiksno' THEN 0
WHEN 'Bolovanje preko 30 dana' THEN
to_number(BOLOVANJE_NOP.IZNOS_NAKANADE_BOLOVANJE)/0.7-
to_number(BOLOVANJE_NOP.IZNOS_NAKANADE_BOLOVANJE)
WHEN 'Bolovanje preko 42 dana' THEN
to_number(BOLOVANJE_NOP.IZNOS_NAKANADE_BOLOVANJE)/0.7-
to_number(BOLOVANJE_NOP.IZNOS_NAKANADE_BOLOVANJE)
WHEN 'Bolovanje PIO' THEN to_number(BOLOVANJE_NOP.IZNOS_NAKANADE_BOLOVANJE)/0.7-
to_number(BOLOVANJE_NOP.IZNOS_NAKANADE_BOLOVANJE)
WHEN 'Porodiljsko do 30 dana' THEN 0
WHEN 'Bolovanje 100' THEN 0
WHEN 'Bolovanje 90%' THEN to_number(BOLOVANJE_NOP.IZNOS_NAKANADE_BOLOVANJE)/0.9-
to_number(BOLOVANJE_NOP.IZNOS_NAKANADE_BOLOVANJE)
WHEN 'Bolovanje 90 preko 30 dana' THEN
to_number(BOLOVANJE_NOP.IZNOS_NAKANADE_BOLOVANJE)/0.9-
to_number(BOLOVANJE_NOP.IZNOS_NAKANADE_BOLOVANJE)
WHEN 'Bolovanje 90 do 30 dana' THEN
to_number(BOLOVANJE_NOP.IZNOS_NAKANADE_BOLOVANJE)/0.9-
to_number(BOLOVANJE_NOP.IZNOS_NAKANADE_BOLOVANJE)
END),2) RAZLIKA_PLATE
FROM LICNI
LEFT OUTER JOIN ORG_INFO ON LICNI.ASSI_ID=ORG_INFO.ASSI_ID and
LICNI.action_context_id=ORG_INFO.action_context_id
RIGHT OUTER JOIN BOLOVANJE ON LICNI.ASSI_ID=BOLOVANJE.ASSI_ID and
LICNI.action_context_id=BOLOVANJE.action_context_id
RIGHT JOIN BOLOVANJE_NOP ON BOLOVANJE.ASSI_ID=BOLOVANJE_NOP.ASSI_ID and
BOLOVANJE.action_context_id=BOLOVANJE_NOP.action_context_id
and BOLOVANJE.TIP_BOLOVANJA || ' NOP'=BOLOVANJE_NOP.TIP_BOLOVANJA and
BOLOVANJE.IZNOS_NAKANADE_BOLOVANJE = BOLOVANJE_NOP.IZNOS_NAK_BOL_SA_POREZOM
WHERE
--licni.ENTITET_ZDRAVSTVA='REPUBLIKA SRPSKA' AND
licni.effective_date BETWEEN p_datum_od AND p_datum_DO
and org_info.ORG_JIB=p_org_jib
group by /*LICNI.ASSI_ID*/ LICNI.JMBG, LICNI.IME, LICNI.PREZIME
ORDER BY LICNI.PREZIME;
commit;

return v_return;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_return := '1';
return v_return;
END fill_bol_tmp_table;

function fill_por_bol_tmp_table(p_org_jib in varchar2,


p_datum_od IN DATE,
p_datum_do IN DATE) return varchar2 as
v_return varchar2(240);

begin
execute immediate 'ALTER SESSION SET NLS_NUMERIC_CHARACTERS=''. ''';
v_return := '0';
delete from XX_OBRAZAC1002_POR_BOL_TT;
commit;
insert into
XX_OBRAZAC1002_POR_BOL_TT(ASSI_ID,JMBG,IME,PREZIME,RADNI_SATI,IZNOS_NAKNADE_BOL,RAZ
LIKA_PLATE)
WITH LICNI AS (
select
assignment_id ASSI_ID,
action_information13 JMBG,
UPPER(action_information1) IME,
UPPER(action_information2) PREZIME,
action_information15 ENTITET_ZDRAVSTVA,
action_information16 OPST_POREZ,
action_information17 OPST_PIO,
action_information18 OPST_ZO,
action_information19 OPST_DZ,
action_information20 OPST_NZ,
effective_date,
action_context_id
from pay_action_information
where action_information_category ='RS EMPLOYEE ADDL DETAILS'),
ORG_INFO AS (select pai.assignment_id ASSI_ID,
HAOU.ATTRIBUTE10 ORG_JIB,
pai.action_information2 ORG_ID,
pai.action_context_id
from pay_action_information pai
left outer join HR_ALL_ORGANIZATION_UNITS HAOU ON
PAI.action_information2=HAOU.ORGANIZATION_ID
where action_information_category ='EMPLOYEE DETAILS'),
BOLOVANJE AS (
SELECT
ASSI_ID,
TIP_BOLOVANJA,
IZNOS_NAKANADE_BOLOVANJE+MINULI_BOLOVANJE_1+MINULI_BOLOVANJE_2
IZNOS_NAKANADE_BOLOVANJE,
SATI,
action_context_id
FROM (SELECT
assignment_id ASSI_ID,
ACTION_INFORMATION3 TIP_BOLOVANJA,
action_information16 IZNOS_NAKANADE_BOLOVANJE,
nvl(action_information25,'0') MINULI_BOLOVANJE_1,
nvl(action_information26,'0') MINULI_BOLOVANJE_2,
decode(action_information3,
'Porodiljsko do 30 dana',action_information19,
'Porodiljsko preko 30 dana',action_information19,
'Porodiljsko do 30 dana fiksno',action_information17,
'Porodiljsko preko 30 dana fiksno',action_information17,
action_information19) SATI,
action_context_id
FROM PAY_ACTION_INFORMATION
WHERE ACTION_INFORMATION3 LIKE '%Porodiljsko%'
and ACTION_INFORMATION3 not like 'Porodiljsko refundacija' and
ACTION_INFORMATION3 not like 'Minuli rad bolovanje refundacija' and
ACTION_INFORMATION3 not like 'Porodiljsko poslodavac' and
ACTION_INFORMATION3 not like 'Porodiljsko poslodavac minuli rad' and
ACTION_INFORMATION3 not like 'Minuli rad bolovanje' and
ACTION_INFORMATION3 not like '%NOP' and
action_information16 > '0')
)
SELECT
1 ASSI_ID,
LICNI.JMBG JMBG,
TRIM(SUBSTR(LICNI.IME, 0, 20)) IME,
LICNI.PREZIME PREZIME,
/*sum(BOLOVANJE.SATI)*/ 0 RADNI_SATI,
--sum(BOLOVANJE.IZNOS_NAKANADE_BOLOVANJE) IZNOS_NAKNADE_BOL,
XX_RS_BRUTO_PRIJE_POROD(ASSI_ID, p_datum_od) IZNOS_NAKNADE_BOL,
round(sum(CASE TIP_BOLOVANJA
WHEN 'Porodiljsko preko 30 dana fiksno' THEN 0
WHEN 'Porodiljsko preko 30 dana' THEN 0
WHEN 'Porodiljsko do 30 dana fiksno' THEN 0
WHEN 'Porodiljsko do 30 dana' THEN 0
END),2) RAZLIKA_PLATE
FROM LICNI
LEFT OUTER JOIN ORG_INFO ON LICNI.ASSI_ID=ORG_INFO.ASSI_ID and
LICNI.action_context_id=ORG_INFO.action_context_id
RIGHT OUTER JOIN BOLOVANJE ON LICNI.ASSI_ID=BOLOVANJE.ASSI_ID and
LICNI.action_context_id=BOLOVANJE.action_context_id
WHERE
--licni.ENTITET_ZDRAVSTVA='REPUBLIKA SRPSKA' AND
licni.effective_date BETWEEN p_datum_od AND p_datum_DO
and org_info.ORG_JIB=p_org_jib
group by /*LICNI.ASSI_ID*/ LICNI.JMBG, LICNI.IME, LICNI.PREZIME,
XX_RS_BRUTO_PRIJE_POROD(ASSI_ID, p_datum_od)
ORDER BY LICNI.PREZIME;
commit;

return v_return;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_return := '1';
return v_return;
END fill_por_bol_tmp_table;

function fill_ben_tmp_table(p_org_jib in varchar2,


p_datum_od IN DATE,
p_datum_do IN DATE) return varchar2 as
v_return varchar2(240);

begin
execute immediate ' ALTER SESSION SET NLS_NUMERIC_CHARACTERS=''. ''';
v_return := '0';
delete from XX_OBRAZAC1002_BEN_TT;
commit;
insert into
XX_OBRAZAC1002_BEN_TT(ASSI_ID,JMBG,IME,PREZIME,BRUTO,PIO_BEN,RADNI_SATI,KOEF_UVECAN
JA,SIFRA_MJESTA)
WITH LICNI AS (
select
ASSIGNMENT_ID ASSI_ID,
action_information13 JMBG,
UPPER(action_information1) IME,
UPPER(action_information2) PREZIME,
action_information15 ENTITET_ZDRAVSTVA,
action_information16 OPST_POREZ,
action_information17 OPST_PIO,
action_information18 OPST_ZO,
action_information19 OPST_DZ,
action_information20 OPST_NZ,
effective_date,
action_context_id
from pay_action_information
where action_information_category ='RS EMPLOYEE ADDL DETAILS'),
ORG_INFO AS (
select pai.assignment_id ASSI_ID,
HAOU.ATTRIBUTE10 JIB,
pai.action_information2 ORG_ID,
pai.action_context_id
from pay_action_information pai
left outer join HR_ALL_ORGANIZATION_UNITS HAOU ON
PAI.action_information2=HAOU.ORGANIZATION_ID
where action_information_category ='EMPLOYEE DETAILS'),
PIO_BEN AS (
SELECT
ASSIGNMENT_ID ASSI_ID,
ACTION_CONTEXT_ID,
EFFECTIVE_DATE DATUM,
XX_CREATE_1002_XML_2022.get_ben_COEF(ASSIGNMENT_ID, EFFECTIVE_DATE) KOEF,
XX_CREATE_1002_XML_2022.get_ben_JOB_CODE(ASSIGNMENT_ID, EFFECTIVE_DATE) JOB,
sum(ACTION_INFORMATION16) PIO_BEN,
sum(ACTION_INFORMATION17) OSNOVICA
--,XX_RS_RADNI_SATI_BEZ_BOL_SUSP(ASSIGNMENT_ID,p_datum_od,p_datum_DO) RADNI_SATI
from PAY_ACTION_INFORMATION where
(ACTION_INFORMATION3 like 'Doprinos za PIO BEN'
or ACTION_INFORMATION3 like 'Doprinos za PIO BEN Ostale naknade')
and action_information16>0
group by
ASSIGNMENT_ID,
ACTION_CONTEXT_ID,
EFFECTIVE_DATE
--,XX_RS_RADNI_SATI_BEZ_BOL_SUSP(ASSIGNMENT_ID,p_datum_od,p_datum_DO)
),
U_SA AS
(SELECT assignment_id ASSI_ID,
SUM(DECODE(action_information3,
'NETO plata',
action_information18,
'0')) S_MJE,
action_context_id
from pay_action_information
where action_information3 like 'NETO plata'
OR action_information4 like 'Ugovori i komisije'
OR action_information3 like 'NETO ostale naknade'
group by assignment_id, action_context_id
),
SU_SA AS
(
select
ASSIGNMENT_ID ASSI_ID,
ACTION_CONTEXT_ID,
sum(ACTION_INFORMATION19) S_SU
from PAY_ACTION_INFORMATION where
(action_information3 like '%Suspenzija%'
or action_information3 like '%olovanje%'
or ACTION_INFORMATION3 LIKE '%Porodiljsko%')
and action_information3 not like '%NOP'
group by ASSIGNMENT_ID, ACTION_CONTEXT_ID
)
/*PIO_BEN2 as
(
SELECT
PIO_BEN.ASSI_ID ASSI_ID,
PIO_BEN.ACTION_CONTEXT_ID ACTION_CONTEXT_ID,
PIO_BEN.EFFECTIVE_DATE DATUM,
PIO_BEN.KOEF KOEF,
PIO_BEN.JOB JOB,
PIO_BEN.PIO_BEN PIO_BEN,
PIO_BEN.OSNOVICA OSNOVICA,
SU_SA.S_MJE,
U_SA.S_SU
FROM PIO_BEN
left outer join U_SA on PIO_BEN.ASSI_ID=U_SA.ASSI_ID and
PIO_BEN.action_context_id=U_SA.action_context_id
left outer join SU_SA on PIO_BEN.ASSI_ID=SU_SA.ASSI_ID and
PIO_BEN.action_context_id=SU_SA.action_context_id
)*/
SELECT
1 ASSI_ID,
LICNI.JMBG JMBG,
TRIM(SUBSTR(LICNI.IME, 0, 20)) IME,
LICNI.PREZIME PREZIME,
SUM(PIO_BEN.OSNOVICA) BRUTO,
SUM(PIO_BEN.PIO_BEN) PIO_BEN,
--'0' RADNI_SATI,
SUM(U_SA.S_MJE-NVL(SU_SA.S_SU,0)) RADNI_SATI,
PIO_BEN.KOEF KOEF_UVECANJA,
NVL(PIO_BEN.JOB,'5815') SIFRA_MJESTA
FROM LICNI
LEFT OUTER JOIN ORG_INFO ON LICNI.ASSI_ID=ORG_INFO.ASSI_ID and
LICNI.action_context_id=ORG_INFO.action_context_id
RIGHT OUTER JOIN PIO_BEN ON LICNI.ASSI_ID=PIO_BEN.ASSI_ID and
LICNI.action_context_id = PIO_BEN.action_context_id
LEFT OUTER JOIN U_SA ON LICNI.ASSI_ID=U_SA.ASSI_ID and
LICNI.action_context_id=U_SA.action_context_id
LEFT OUTER JOIN SU_SA ON LICNI.ASSI_ID=SU_SA.ASSI_ID and
LICNI.action_context_id=SU_SA.action_context_id
WHERE ORG_INFO.JIB=p_org_jib AND PIO_BEN.DATUM BETWEEN p_datum_od AND p_datum_DO
GROUP BY
LICNI.JMBG,
LICNI.IME,
LICNI.PREZIME,
PIO_BEN.KOEF,
NVL(PIO_BEN.JOB,'5815');

commit;

return v_return;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_return := '1';
return v_return;
END fill_BEN_tmp_table;

function fill_dpf_tmp_table(p_org_jib in varchar2,


p_period in varchar2) return varchar2 as
v_return varchar2(240);

begin
execute immediate ' ALTER SESSION SET NLS_NUMERIC_CHARACTERS=''. ''';
v_return := '0';
delete from XX_OBRAZAC1002_DPF_TT_20;
commit;
insert into XX_OBRAZAC1002_DPF_TT_20(JMBG,IZNOS_POS,IZNOS_RAD,OPST_POREZ)
select t.JMBG, sum(t.UPL_POSL) UPL_POSL, sum(t.LICNA_UPL) LICNA_UPL, t.OPST_POREZ
from
(select pai.action_information4 JMBG,
case when pai2.action_information3 = 'Uplata u DPF -
poslodavac' then pai2.action_information16 else '0' end UPL_POSL,
case when pai2.action_information3 != 'Uplata u DPF -
poslodavac' then pai2.action_information16 else '0' end LICNA_UPL,
pai3.action_information17 OPST_POREZ
from pay_action_information pai
--join hr_all_organization_units hr on
hr.organization_id = pai.action_information2
join pay_action_information pai2 on
pai2.action_context_id = pai.action_context_id
join pay_action_information pai3 on pai3.action_context_id =
pai.action_context_id
where 1=1
--and to_char(pai.effective_date, 'mm.yyyy') =
p_period
and pai.effective_date between to_date('01.' || p_period,
'dd.mm.yyyy') and last_day(to_date('01.' || p_period, 'dd.mm.yyyy'))
--and pai.action_information2 = p_org_id
and pai.action_information2 in (select distinct
hr.organization_id from hr_all_organization_units hr where hr.attribute10 =
p_org_jib)
--and hr.attribute10 = p_org_jib
and pai.action_information_category = 'EMPLOYEE
DETAILS'
and pai2.action_information3 like '%DPF%'
and pai3.action_information_category = 'RS EMPLOYEE ADDL
DETAILS') t
where t.UPL_POSL + t.LICNA_UPL > 0
GROUP BY t.JMBG, t.OPST_POREZ;

commit;
return v_return;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_return := '1';
return v_return;
END fill_dpf_tmp_table;

function fill_pred_sind_tmp_table(p_org_jib in varchar2,


p_datum_od IN DATE,
p_datum_do IN DATE) return varchar2 as
v_return varchar2(240);

begin

execute immediate ' ALTER SESSION SET NLS_NUMERIC_CHARACTERS=''. ''';

v_return := '0';

delete from XX_OBRAZAC1002_PRED_SIND_TT;


commit;

insert into XX_OBRAZAC1002_PRED_SIND_TT(ASSI_ID, JMBG, IME, PREZIME, BRUTO, PIO,


ZO, DZ,
ZN, DOHODAK, UMANJENJE_ZAKON,
POREZ_UMANJENJE_ZAKON,
PORESKA_KARTICA, POVRAT_POREZA,
OSNOVICA_POREZ, POREZ,
NETO, EMP_CAT_S, OPST_PIO, OPST_ZO, OPST_DZ,
OPST_ZN, ENTITET, OPST_POREZ, EMP_CAT
)
WITH LICNI AS
(select assignment_id ASSI_ID,
action_information13 JMBG,
UPPER(action_information1) IME,
UPPER(action_information2) PREZIME,
action_information15 ENTITET_ZDRAVSTVA,
action_information16 OPST_ZO,
action_information17 OPST_POREZ,
action_information18 OPST_NZ,
action_information19 OPST_PIO,
action_information20 OPST_DZ,
effective_date,
action_context_id
from pay_action_information
where action_information_category = 'RS EMPLOYEE ADDL DETAILS'),
TIP_UGOVORA AS
(SELECT ASSIGNMENT_ID ASSI_ID,
'3' EMP_CAT_S,
EMPLOYMENT_CATEGORY EMP_CAT,
EFFECTIVE_START_DATE ESD,
EFFECTIVE_END_DATE EED
FROM PER_ALL_ASSIGNMENTS_F),
--PODACI O ORG ZA 1002
ORG_INFO AS
(select pai.assignment_id ASSI_ID,
HAOU.ATTRIBUTE10 ORG_JIB,
pai.action_information2 ORG_ID,
pai.action_context_id
from pay_action_information pai
left outer join HR_ALL_ORGANIZATION_UNITS HAOU
ON PAI.action_information2 = HAOU.ORGANIZATION_ID
where action_information_category = 'EMPLOYEE DETAILS'),
--UPIT ZA BRUTO1
B1 AS
(select assignment_id ASSI_ID,
SUM(DECODE(action_information3,
'Doprinos PIO Naknada za predsjednika sindikata',
action_information17,
0)) BRUTO1,
action_context_id
from pay_action_information
where action_information3 like 'Doprinos PIO Naknada za predsjednika
sindikata'
GROUP BY assignment_id, action_context_id
),
--UPIT ZA DOP PIO
PIO AS
(select assignment_id ASSI_ID,
SUM(action_information16) DOP_PIO,
action_context_id
from pay_action_information
where action_information3 like 'Doprinos PIO Naknada za predsjednika
sindikata'
GROUP BY assignment_id, action_context_id
),
--UPIT ZA DOP ZO
ZO AS
(select assignment_id ASSI_ID,
SUM(action_information16) DOP_ZO,
action_context_id
from pay_action_information
where action_information3 like 'Doprinos ZO Naknada za predsjednika
sindikata'
GROUP BY assignment_id, action_context_id
),
--UPIT ZA DOP DZ
DZ AS
(select assignment_id ASSI_ID,
SUM(action_information16) DOP_DZ,
action_context_id
from pay_action_information
where action_information3 like 'Doprinos DZ Naknada za predsjednika
sindikata'
GROUP BY assignment_id, action_context_id),
--UPIT ZA DOP NZ
NZ AS
(select assignment_id ASSI_ID,
SUM(action_information16) DOP_NZ,
action_context_id
from pay_action_information
where action_information3 like 'Doprinos ZN Naknada za predsjednika
sindikata'
GROUP BY assignment_id, action_context_id
),
--UPIT ZA NETO I SATE U MJESECU
NIS AS
(SELECT assignment_id ASSI_ID,
SUM(DECODE(action_information3,
'Naknada za predsjednika sindikata',
action_information16)) NETO_PLATA,
SUM(DECODE(action_information3,
'Naknada za predsjednika sindikata',
'0',
'0')) SATI_MJESEC,
action_context_id
from pay_action_information
where action_information3 like 'Naknada za predsjednika sindikata'
group by assignment_id, action_context_id
),
--UPIT ZA POREZ
POREZ AS
(
select
ASSI_ID,
IZNOS_POREZ,
case
when IZNOS_POREZ<='0' then '0'
when IZNOS_POREZ>'0' then to_char(OSNOVICA_POREZ)
end OSNOVICA_POREZ,
action_context_id
from(
SELECT assignment_id ASSI_ID,
SUM(action_information16) IZNOS_POREZ,
SUM(decode(action_information3,
'Porez Naknada za predsjednika sindikata',
action_information17,
'0')) OSNOVICA_POREZ,
action_context_id
from pay_action_information
where action_information3 like 'Porez Naknada za predsjednika sindikata'
group by assignment_id, action_context_id)
)
--glavni select
SELECT
ASSI_ID,
JMBG,
IME,
PREZIME,
BRUTO,
PIO,
ZO,
DZ,
ZN,
DOHODAK,
UMANJENJE_ZAKON,
POREZ_UMANJENJE_ZAKON,
PORESKA_KARTICA,
POVRAT_POREZA,
OSNOVICA_POREZ,
POREZ,
NETO,
EMP_CAT_S,
OPST_PIO,
OPST_ZO,
OPST_DZ,
OPST_ZN,
ENTITET,
OPST_POREZ,
EMP_CAT
FROM
(SELECT 1 ASSI_ID,
LICNI.JMBG JMBG,
--LICNI2.PAYROLL,
TRIM(SUBSTR(UPPER(LICNI.IME), 0, 20)) IME,
UPPER(LICNI.PREZIME) PREZIME,
SUM(DECODE(TIP_UGOVORA.EMP_CAT_S,'3','0',
NVL(NIS.SATI_MJESEC, '0'))) RADNI_SATI,
SUM(NVL(B1.BRUTO1, '0')) BRUTO,
SUM(NVL(PIO.DOP_PIO, '0')) PIO,
SUM(NVL(ZO.DOP_ZO, '0')) ZO,
SUM(NVL(DZ.DOP_DZ, '0')) DZ,
SUM(NVL(NZ.DOP_NZ, '0')) ZN,
SUM(to_char(TO_NUMBER(NVL(B1.BRUTO1, '0')) - TO_NUMBER(NVL(PIO.DOP_PIO,
'0')) -
TO_NUMBER(NVL(DZ.DOP_DZ, '0')) - TO_NUMBER(NVL(ZO.DOP_ZO, '0')) -
TO_NUMBER(NVL(NZ.DOP_NZ, '0')))) DOHODAK,
0 UMANJENJE_ZAKON,
0 POREZ_UMANJENJE_ZAKON,
0 PORESKA_KARTICA,
0 POVRAT_POREZA,
SUM(NVL(POREZ.OSNOVICA_POREZ, '0')) OSNOVICA_POREZ,
SUM(NVL(POREZ.IZNOS_POREZ, '0')) POREZ,
SUM(NVL(NIS.NETO_PLATA, '0')) NETO,
TIP_UGOVORA.EMP_CAT_S EMP_CAT_S,
LICNI.OPST_PIO OPST_PIO,
LICNI.OPST_ZO OPST_ZO,
LICNI.OPST_DZ OPST_DZ,
LICNI.OPST_NZ OPST_ZN,
LICNI.ENTITET_ZDRAVSTVA ENTITET,
LICNI.OPST_POREZ OPST_POREZ,
TIP_UGOVORA.EMP_CAT EMP_CAT
FROM LICNI
LEFT OUTER JOIN ORG_INFO
ON LICNI.ASSI_ID = ORG_INFO.ASSI_ID
and LICNI.action_context_id = ORG_INFO.action_context_id
LEFT OUTER JOIN B1
ON LICNI.ASSI_ID = B1.ASSI_ID
and LICNI.action_context_id = B1.action_context_id
LEFT OUTER JOIN PIO
ON LICNI.ASSI_ID = PIO.ASSI_ID
and LICNI.action_context_id = PIO.action_context_id
LEFT OUTER JOIN ZO
ON LICNI.ASSI_ID = ZO.ASSI_ID
and LICNI.action_context_id = ZO.action_context_id
LEFT OUTER JOIN DZ
ON LICNI.ASSI_ID = DZ.ASSI_ID
and LICNI.action_context_id = DZ.action_context_id
LEFT OUTER JOIN NZ
ON LICNI.ASSI_ID = NZ.ASSI_ID
and LICNI.action_context_id = NZ.action_context_id
LEFT OUTER JOIN NIS
ON LICNI.ASSI_ID = NIS.ASSI_ID
and LICNI.action_context_id = NIS.action_context_id
LEFT OUTER JOIN POREZ
ON LICNI.ASSI_ID = POREZ.ASSI_ID
and LICNI.action_context_id = POREZ.action_context_id
LEFT OUTER JOIN TIP_UGOVORA
ON LICNI.ASSI_ID = TIP_UGOVORA.ASSI_ID
AND LICNI.effective_date BETWEEN TIP_UGOVORA.ESD AND TIP_UGOVORA.EED
WHERE licni.effective_date BETWEEN p_datum_od and p_datum_do
and org_info.org_jib = p_org_jib
GROUP BY
LICNI.JMBG,
TRIM(SUBSTR(UPPER(LICNI.IME), 0, 20)),
UPPER(LICNI.PREZIME),
TIP_UGOVORA.EMP_CAT_S,
LICNI.OPST_PIO,
LICNI.OPST_ZO,
LICNI.OPST_DZ,
LICNI.OPST_NZ,
LICNI.ENTITET_ZDRAVSTVA,
LICNI.OPST_POREZ,
TIP_UGOVORA.EMP_CAT) where BRUTO > 0;
commit;

return v_return;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_return := '4';
return v_return;
end fill_pred_sind_tmp_table;

function create_dls(doc in xmldom.DOMDocument,


root_node in xmldom.DOMNode) return BOOLEAN
as
v_status BOOLEAN := true;
begin

return v_status;
EXCEPTION
WHEN others THEN
v_status := false;
return v_status;
end create_dls;

procedure create_1002_xml_fs(errbuf OUT varchar2,


retcode OUT number,
p_org_id in number,
p_jib in varchar2,
p_opstina in varchar2,
p_period_od in varchar2,
p_period_do in varchar2,
i_period_od in varchar2,
i_period_do in varchar2,
p_vrsta in varchar2,
p_isplata in varchar2,
p_nalog_inspektora in varchar2
)
IS
org_id number;
--XML START
doc xmldom.DOMDocument;
doc_final xmldom.DOMDocument;
main_node xmldom.DOMNode;
main_node_final xmldom.DOMNode;

root_node xmldom.DOMNode;
root_elmt xmldom.DOMElement;
root_node_final xmldom.DOMNode;
root_elmt_final xmldom.DOMElement;

zaglavlje_root_node xmldom.DOMNode;
zaglavlje_root_elmt xmldom.DOMElement;
zaglavlje_node xmldom.DOMNode;
zaglavlje_elmt xmldom.DOMElement;
zaglavlje_text xmldom.DOMText;
zaglavlje_value_int integer;
zaglavlje_value_varchar varchar2(2);

obaveza_root_node xmldom.DOMNode;
obaveza_root_elmt xmldom.DOMElement;
obaveza_node xmldom.DOMNode;
obaveza_elmt xmldom.DOMElement;
obaveza_text xmldom.DOMText;

stavka_root_node xmldom.DOMNode;
stavka_root_elmt xmldom.DOMElement;

dl1_root_node_created BOOLEAN := FALSE;


dl1_root_node xmldom.DOMNode;
dl1_root_elmt xmldom.DOMElement;

dl1b_root_node_created BOOLEAN := FALSE;


dl1b_root_node xmldom.DOMNode;
dl1b_root_elmt xmldom.DOMElement;

dl2_root_node_created BOOLEAN := FALSE;


dl2_root_node xmldom.DOMNode;
dl2_root_elmt xmldom.DOMElement;

dl3_root_node_created BOOLEAN := FALSE;


dl3_root_node xmldom.DOMNode;
dl3_root_elmt xmldom.DOMElement;

dl4_root_node_created BOOLEAN := FALSE;


dl4_root_node xmldom.DOMNode;
dl4_root_elmt xmldom.DOMElement;

dl5_root_node_created BOOLEAN := FALSE;


dl5_root_node xmldom.DOMNode;
dl5_root_elmt xmldom.DOMElement;

dl6_root_node_created BOOLEAN := FALSE;


dl6_root_node xmldom.DOMNode;
dl6_root_elmt xmldom.DOMElement;

dl_node xmldom.DOMNode;
dl_elmt xmldom.DOMElement;
dl_text xmldom.DOMText;

v_clob CLOB :=empty_clob();


v_clob_char VARCHAR2(4000);
v_clob_len INTEGER;
v_clob_value INTEGER;
--XML END

VP713113 VARCHAR(240); --VRSTA PRIHODA POREZ NA LICNA PRIMANJA


VP711112 VARCHAR(240); --VRSTA PRIHODA POREZ NA PRIHOD OD AUTORSKIH PRAVA
VP711311 VARCHAR(240); --VRSTA PRIHODA POREZ NA ZAKUP
VP711118 VARCHAR(240); --VRSTA PROHODA POREZ NA OSTALI DOHODAK
VP711118_PRED_SIND VARCHAR(240);

VP712199 VARCHAR(240); --VRSTA PRIHODA DOPRINOSI


VP712199_PRED_SIND VARCHAR(240);
VP712113 VARCHAR(240); --VRSTA PRIHODA DOPRINOSI ZA PIO BEN
VP712129 VARCHAR(240); --VRSTA PRIHODA DOPRINOSI PIO KAD JE ZDRAVSTVO FBIH ILI
BRCKO
VP712129_PRED_SIND VARCHAR(240);
VP712149 VARCHAR(240); --VRSTA PRIHODA DOPRINOSI ZO VOLONTER
VP712149_PRED_SIND VARCHAR(240);
VP712159 VARCHAR(240); --VRSTA PRIHODA DOPRINOSI ZA ZAPOSLJAVANJE KAD JE ZDRAVSTVO
FBIH ILI BRCKO
VP712159_PRED_SIND VARCHAR(240);
VP712169 VARCHAR(240); --VRSTA PRIHODA DOPRINOSI ZA DJECIJU ZASTITU KAD JE
ZDRAVSTVO FBIH ILI BRCKO
VP712169_PRED_SIND VARCHAR(240);

VP712171 VARCHAR(240); --VRSTA PRIHODA DOPRINOSI ZA REHAB INVALIDA


VP712172 VARCHAR(240); --VRSTA PRIHODA DOPRINOSI ZA SOLIDARNOST
DOP_SLOLID_BEZ_KOM VARCHAR(240);
UK_SOLID VARCHAR(240);
DOP_SLOLID_KOM VARCHAR(240);

v_vrsta_isplate vrste_isplata;
v_vrsta_isplate_1 vrste_isplata;
uk_ostale_isplate number;

PORESKI_P_OD DATE;
PORESKI_P_DO DATE;
ISPLATNI_P_OD DATE;
ISPLATNI_P_DO DATE;
STATUS_MAIN varchar2(10);
STATUS_BOL varchar2(10);
STATUS_BEN varchar2(10);
SIFRA_OPSTINE varchar2(240);
SIFRA_OPSTINE_3 varchar2(240);
ADRESA_INSTITUCIJE varchar2(250);
NAZIV_INSTITUCIJE varchar2(250);
NAZIV_INSTITUCIJE_K varchar2(250);
V_FILE_NAME varchar2(240);
V_DIR varchar2(240);
V_FILE_HANDLER UTL_FILE.FILE_TYPE;
UK_BRUTO_ZAP NUMBER;
OST_NAKNADE_BRUTO NUMBER;
UK_NETO varchar2(240);
UK_NETO_KOM varchar2(240);
STATUS_INV varchar2(240);

V_DPF NUMBER;
V_DPF_RAD NUMBER;
V_DPF_POS NUMBER;
V_DPF_IZNOS_NEOP NUMBER;

STATUS_DPF varchar2(10);
STATUS_PRED_SIND varchar2(10);

v_temp_var number;

v_req_status boolean;

V_PRED_SIND NUMBER := 0;
V_PRED_SIND_BRUTO NUMBER;
V_PRED_SIND_DOHODAK NUMBER;
V_PRED_SIND_NETO NUMBER;
V_PRED_SIND_OSN_POREZ NUMBER;
V_PRED_SIND_POREZ NUMBER;
V_PRED_SIND_PIO NUMBER;
V_PRED_SIND_ZO NUMBER;
V_PRED_SIND_DZ NUMBER;
V_PRED_SIND_ZN NUMBER;

V_NETO_ISPLATA NUMBER;

v_broj_ben INTEGER := 0;

nl xmldom.DOMNodeList;
n xmldom.DOMNode;
len number;
e xmldom.DOMElement;

cursor c_dist_opst is select distinct(OPST_POREZ) FROM XX_OBRAZAC1002_MAIN_TT where


EMP_CAT_S != 6;

cursor d_sl(sifra_opst in varchar2) is select JMBG,


IME,
PREZIME,
SUM(RADNI_SATI) RADNI_SATI,
SUM(BRUTO) BRUTO,
SUM(PIO) PIO,
SUM(ZO) ZO,
SUM(DZ) DZ,
SUM(ZN) ZN,
SUM(TROSKOVI) TROSKOVI,
SUM(DOHODAK) DOHODAK,
SUM(UMANJENJE_ZAKON) UMANJENJE_ZAKON,
SUM(POREZ_UMANJENJE_ZAKON) POREZ_UMANJENJE_ZAKON,
SUM(PORESKA_KARTICA) PORESKA_KARTICA,
SUM(POVRAT_POREZA) POVRAT_POREZA,
SUM(OSNOVICA_POREZ) OSNOVICA_POREZ,
SUM(POREZ) POREZ,
SUM(NETO) NETO,
EMP_CAT_S,
SUM(NEOPOR_NAKNADE) NEOPOR_NAKNADE
FROM XX_OBRAZAC1002_MAIN_TT where EMP_CAT_S !='6' and
OPST_POREZ=sifra_opst
group by JMBG, IME, PREZIME, EMP_CAT_S
order by EMP_CAT_S;

cursor d_sl_pred_sind(sifra_opst in varchar2) is select JMBG,


IME,
PREZIME,
BRUTO,
PIO,
ZO,
DZ,
ZN,
DOHODAK,
UMANJENJE_ZAKON,
POREZ_UMANJENJE_ZAKON,
PORESKA_KARTICA,
POVRAT_POREZA,
OSNOVICA_POREZ,
POREZ,
NETO,
EMP_CAT_S
FROM XX_OBRAZAC1002_PRED_SIND_TT where EMP_CAT_S ='3' and
OPST_POREZ=sifra_opst
order by EMP_CAT_S;

cursor d_sl_dop is select


JMBG,
IME,
PREZIME,
SUM(RADNI_SATI) RADNI_SATI,
SUM(BRUTO) BRUTO,
SUM(PIO) PIO,
SUM(ZO) ZO,
SUM(DZ) DZ,
SUM(ZN) ZN,
SUM(TROSKOVI) TROSKOVI,
SUM(DOHODAK) DOHODAK,
SUM(UMANJENJE_ZAKON) UMANJENJE_ZAKON,
SUM(POREZ_UMANJENJE_ZAKON) POREZ_UMANJENJE_ZAKON,
SUM(PORESKA_KARTICA) PORESKA_KARTICA,
SUM(POVRAT_POREZA) POVRAT_POREZA,
SUM(OSNOVICA_POREZ) OSNOVICA_POREZ,
SUM(POREZ) POREZ,
SUM(NETO) NETO,
EMP_CAT_S,
OPST_ZO,
OPST_PIO,
OPST_DZ,
OPST_ZN,
SUM(SOLID) SOLID--,
--EMP_CAT
FROM XX_OBRAZAC1002_MAIN_TT where EMP_CAT_S !='6' and PIO>0
GROUP BY JMBG, IME, PREZIME, EMP_CAT_S, OPST_ZO, OPST_PIO,
OPST_DZ, OPST_ZN
order by EMP_CAT_S;

cursor d_sl_dop_pred_sind is select


JMBG,
IME,
PREZIME,
BRUTO,
PIO,
ZO,
DZ,
ZN,
DOHODAK,
UMANJENJE_ZAKON,
POREZ_UMANJENJE_ZAKON,
PORESKA_KARTICA,
POVRAT_POREZA,
OSNOVICA_POREZ,
POREZ,
NETO,
EMP_CAT_S,
OPST_ZO,
OPST_PIO,
OPST_DZ,
OPST_ZN,
EMP_CAT
FROM XX_OBRAZAC1002_PRED_SIND_TT where EMP_CAT_S ='3' and
PIO>0
order by EMP_CAT_S;

cursor d_sl_vol is select JMBG,


IME,
PREZIME,
RADNI_SATI,
BRUTO,
PIO,
ZO,
DZ,
ZN,
TROSKOVI,
DOHODAK,
UMANJENJE_ZAKON,
POREZ_UMANJENJE_ZAKON,
PORESKA_KARTICA,
POVRAT_POREZA,
OSNOVICA_POREZ,
POREZ,
NETO,
EMP_CAT_S,
OPST_ZO,
OPST_PIO,
OPST_DZ,
OPST_ZN
FROM XX_OBRAZAC1002_MAIN_TT where EMP_CAT_S='6'
order by EMP_CAT_S;

CURSOR D_SL_BOL IS SELECT JMBG,


IME,
PREZIME,
RADNI_SATI,
IZNOS_NAKNADE_BOL,
RAZLIKA_PLATE
FROM XX_OBRAZAC1002_BOL_TT;

CURSOR D_SL_BEN IS SELECT JMBG,


IME,
PREZIME,
RADNI_SATI,
BRUTO,
PIO_BEN,
KOEF_UVECANJA,
SIFRA_MJESTA
FROM XX_OBRAZAC1002_BEN_TT;

CURSOR RAZ_ZO_ZN IS
select JMBG from XX_OBRAZAC1002_MAIN_TT where TRIM(OPST_ZO) != TRIM(OPST_ZN);

BEGIN
V_DIR :='OBRAZAC_1002';
NAZIV_INSTITUCIJE := XX_CREATE_1002_XML_2022.GET_ORG_NAME(p_org_id);
NAZIV_INSTITUCIJE_K := SUBSTR(NAZIV_INSTITUCIJE,1,29);
ADRESA_INSTITUCIJE := XX_CREATE_1002_XML_2022.GET_ORG_ADDRESS(p_org_id);
STATUS_INV:=get_org_dis_payer_status(p_org_id);
PORESKI_P_OD :=FND_DATE.CANONICAL_TO_DATE(P_PERIOD_OD);
PORESKI_P_DO :=FND_DATE.CANONICAL_TO_DATE(P_PERIOD_DO);
ISPLATNI_P_OD :=FND_DATE.CANONICAL_TO_DATE(I_PERIOD_OD);
ISPLATNI_P_DO :=FND_DATE.CANONICAL_TO_DATE(I_PERIOD_DO);
STATUS_MAIN:=XX_CREATE_1002_XML_2022.FILL_MAIN_TMP_TABLE(P_JIB,ISPLATNI_P_OD,ISPLAT
NI_P_DO);
STATUS_BOL:=XX_CREATE_1002_XML_2022.FILL_BOL_TMP_TABLE(P_JIB,ISPLATNI_P_OD,ISPLATNI
_P_DO);
STATUS_BEN:=XX_CREATE_1002_XML_2022.FILL_BEN_TMP_TABLE(P_JIB,ISPLATNI_P_OD,ISPLATNI
_P_DO);
STATUS_DPF:=XX_CREATE_1002_XML_2022.FILL_DPF_TMP_TABLE(P_JIB,to_char(ISPLATNI_P_OD,
'mm.yyyy'));
STATUS_PRED_SIND:=XX_CREATE_1002_XML_2022.fill_pred_sind_tmp_table(P_JIB,ISPLATNI_P
_OD,ISPLATNI_P_DO);

doc := xmldom.newDOMDocument;
main_node := xmldom.makeNode(doc);

root_elmt := xmldom.createElement(doc, 'PRIJAVA_1002');


--xmldom.setAttribute(root_elmt, 'xmlns', 'urn:PaketniUvozObrazaca_V1_0.xsd');
root_node := xmldom.appendChild(main_node, xmldom.makeNode(root_elmt));
--<ZAGLAVLJE>
zaglavlje_root_elmt := xmldom.createElement(doc, 'ZAGLAVLJE');
zaglavlje_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(zaglavlje_root_elmt));

--<VRSTA_PRIJAVE>
zaglavlje_elmt := xmldom.createElement(doc, 'VRSTA_PRIJAVE');
zaglavlje_node := xmldom.appendChild(zaglavlje_root_node,
xmldom.makeNode(zaglavlje_elmt));
zaglavlje_text := xmldom.createTextNode(doc, 'MPO1');
zaglavlje_node := xmldom.appendChild(zaglavlje_node,
xmldom.makeNode(zaglavlje_text));

--<TIP_PRIJAVE>
zaglavlje_elmt := xmldom.createElement(doc, 'TIP_PRIJAVE');
zaglavlje_node := xmldom.appendChild(zaglavlje_root_node,
xmldom.makeNode(zaglavlje_elmt));
zaglavlje_text := xmldom.createTextNode(doc, 'O');
zaglavlje_node := xmldom.appendChild(zaglavlje_node,
xmldom.makeNode(zaglavlje_text));

--<JIB>
zaglavlje_elmt := xmldom.createElement(doc, 'JIB');
zaglavlje_node := xmldom.appendChild(zaglavlje_root_node,
xmldom.makeNode(zaglavlje_elmt));
zaglavlje_text := xmldom.createTextNode(doc, p_jib);
zaglavlje_node := xmldom.appendChild(zaglavlje_node,
xmldom.makeNode(zaglavlje_text));

--<SIFRA_OPSTINE>
zaglavlje_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
zaglavlje_node := xmldom.appendChild(zaglavlje_root_node,
xmldom.makeNode(zaglavlje_elmt));
zaglavlje_text := xmldom.createTextNode(doc, substr(p_opstina,1,3));
zaglavlje_node := xmldom.appendChild(zaglavlje_node,
xmldom.makeNode(zaglavlje_text));

--<PORESKI_PERIOD_OD>
zaglavlje_elmt := xmldom.createElement(doc, 'PORESKI_PERIOD_OD');
zaglavlje_node := xmldom.appendChild(zaglavlje_root_node,
xmldom.makeNode(zaglavlje_elmt));
zaglavlje_text := xmldom.createTextNode(doc, to_char(PORESKI_P_OD, 'dd.mm.yyyy'));
zaglavlje_node := xmldom.appendChild(zaglavlje_node,
xmldom.makeNode(zaglavlje_text));

--<PORESKI_PERIOD_DO>
zaglavlje_elmt := xmldom.createElement(doc, 'PORESKI_PERIOD_DO');
zaglavlje_node := xmldom.appendChild(zaglavlje_root_node,
xmldom.makeNode(zaglavlje_elmt));
zaglavlje_text := xmldom.createTextNode(doc, to_char(PORESKI_P_DO, 'dd.mm.yyyy'));
zaglavlje_node := xmldom.appendChild(zaglavlje_node,
xmldom.makeNode(zaglavlje_text));

--<ISPLATNI_PERIOD_OD>
zaglavlje_elmt := xmldom.createElement(doc, 'ISPLATNI_PERIOD_OD');
zaglavlje_node := xmldom.appendChild(zaglavlje_root_node,
xmldom.makeNode(zaglavlje_elmt));
zaglavlje_text := xmldom.createTextNode(doc, to_char(ISPLATNI_P_OD, 'dd.mm.yyyy'));
zaglavlje_node := xmldom.appendChild(zaglavlje_node,
xmldom.makeNode(zaglavlje_text));

--<ISPLATNI_PERIOD_DO>
zaglavlje_elmt := xmldom.createElement(doc, 'ISPLATNI_PERIOD_DO');
zaglavlje_node := xmldom.appendChild(zaglavlje_root_node,
xmldom.makeNode(zaglavlje_elmt));
zaglavlje_text := xmldom.createTextNode(doc, to_char(ISPLATNI_P_DO, 'dd.mm.yyyy'));
zaglavlje_node := xmldom.appendChild(zaglavlje_node,
xmldom.makeNode(zaglavlje_text));

--<POSLODAVAC_KTI>
zaglavlje_elmt := xmldom.createElement(doc, 'POSLODAVAC_KTI');
zaglavlje_node := xmldom.appendChild(zaglavlje_root_node,
xmldom.makeNode(zaglavlje_elmt));
zaglavlje_text := xmldom.createTextNode(doc, '');
zaglavlje_node := xmldom.appendChild(zaglavlje_node,
xmldom.makeNode(zaglavlje_text));

--<NAMJENA_PRIJAVE>
zaglavlje_elmt := xmldom.createElement(doc, 'NAMJENA_PRIJAVE');
zaglavlje_node := xmldom.appendChild(zaglavlje_root_node,
xmldom.makeNode(zaglavlje_elmt));
if p_vrsta = 'POREZ' then
zaglavlje_value_int := 1;
else
zaglavlje_value_int := 2;
end if;
zaglavlje_text := xmldom.createTextNode(doc, zaglavlje_value_int);
zaglavlje_node := xmldom.appendChild(zaglavlje_node,
xmldom.makeNode(zaglavlje_text));

--<ISPLATA_PRIMANJA>
zaglavlje_elmt := xmldom.createElement(doc, 'ISPLATA_PRIMANJA');
zaglavlje_node := xmldom.appendChild(zaglavlje_root_node,
xmldom.makeNode(zaglavlje_elmt));

if p_vrsta = 'POREZ' then


zaglavlje_value_varchar := '';
else
if p_isplata = 'ISPLACENO' then
zaglavlje_value_varchar := '1';
elsif p_isplata = 'DJELIMICNO ISPLACENO' then
zaglavlje_value_varchar := '2';
else
zaglavlje_value_varchar := '3';
end if;
end if;
zaglavlje_text := xmldom.createTextNode(doc, zaglavlje_value_varchar);
zaglavlje_node := xmldom.appendChild(zaglavlje_node,
xmldom.makeNode(zaglavlje_text));

--<NACIN_OBAVLJANJA_SDJELATNOSTI>
zaglavlje_elmt := xmldom.createElement(doc, 'NACIN_OBAVLJANJA_SDJELATNOSTI');
zaglavlje_node := xmldom.appendChild(zaglavlje_root_node,
xmldom.makeNode(zaglavlje_elmt));
zaglavlje_text := xmldom.createTextNode(doc, '');
zaglavlje_node := xmldom.appendChild(zaglavlje_node,
xmldom.makeNode(zaglavlje_text));

--<PO_NALOGU_INSPEKTORA>
zaglavlje_elmt := xmldom.createElement(doc, 'PO_NALOGU_INSPEKTORA');
zaglavlje_node := xmldom.appendChild(zaglavlje_root_node,
xmldom.makeNode(zaglavlje_elmt));

if p_nalog_inspektora = 'DA' then


zaglavlje_text := xmldom.createTextNode(doc, 'X');
else
zaglavlje_text := xmldom.createTextNode(doc, '');
end if;

zaglavlje_node := xmldom.appendChild(zaglavlje_node,
xmldom.makeNode(zaglavlje_text));

--<OBAVEZA>
obaveza_root_elmt := xmldom.createElement(doc, 'OBAVEZA');
obaveza_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(obaveza_root_elmt));

IF p_vrsta='POREZ' THEN

UPDATE XX_OBRAZAC1002_MAIN_TT SET OPST_ZO = OPST_PIO, OPST_ZN = OPST_PIO,


OPST_POREZ = OPST_PIO, ENTITET = 'REPUBLIKA SRPSKA' WHERE ENTITET = 'FEDERACIJA
BIH' AND (EMP_CAT='BA_U_10' OR EMP_CAT='BA_U_03' OR EMP_CAT='BA_U_04' OR
EMP_CAT='BA_U_05' OR EMP_CAT='BA_U_06' OR EMP_CAT='BA_U_11' OR EMP_CAT='BA_U_14');
--UPDATE XX_OBRAZAC1002_MAIN_TT SET POVRAT_POREZA = ROUND(PORESKA_KARTICA *
0.1, 2) WHERE PORESKA_KARTICA != (POVRAT_POREZA * 10);

--UPDATE XX_OBRAZAC1002_MAIN_TT SET UMANJENJE_ZAKON = DOHODAK WHERE


TO_NUMBER(DOHODAK) < TO_NUMBER(UMANJENJE_ZAKON);

--UPDATE XX_OBRAZAC1002_MAIN_TT SET PORESKA_KARTICA = BRUTO - UMANJENJE_ZAKON,


POVRAT_POREZA = ROUND((BRUTO - UMANJENJE_ZAKON) * 0.1, 2) WHERE PORESKA_KARTICA >
(BRUTO - UMANJENJE_ZAKON);

UPDATE XX_OBRAZAC1002_MAIN_TT SET PORESKA_KARTICA = BRUTO - UMANJENJE_ZAKON,


POVRAT_POREZA = ROUND((BRUTO - UMANJENJE_ZAKON) * 0.1, 2) WHERE POVRAT_POREZA > 0
AND PORESKA_KARTICA = 0;

FOR dist_opst in c_dist_opst LOOP


SIFRA_OPSTINE := dist_opst.OPST_POREZ;
SIFRA_OPSTINE_3 := substr(dist_opst.OPST_POREZ,1,3);

V_DPF_IZNOS_NEOP:=0;

SELECT SUM(POREZ) INTO VP713113 FROM XX_OBRAZAC1002_MAIN_TT WHERE


OPST_POREZ=SIFRA_OPSTINE AND EMP_CAT_S='1';
SELECT SUM(POREZ) INTO VP711118 FROM XX_OBRAZAC1002_MAIN_TT WHERE
OPST_POREZ=SIFRA_OPSTINE AND EMP_CAT_S='3';
SELECT SUM(POREZ) INTO VP711118_PRED_SIND FROM XX_OBRAZAC1002_PRED_SIND_TT
WHERE OPST_POREZ=SIFRA_OPSTINE AND EMP_CAT_S='3';
SELECT SUM(POREZ) INTO VP711112 FROM XX_OBRAZAC1002_MAIN_TT WHERE
OPST_POREZ=SIFRA_OPSTINE AND EMP_CAT_S='2';
SELECT SUM(POREZ) INTO VP711311 FROM XX_OBRAZAC1002_MAIN_TT WHERE
OPST_POREZ=SIFRA_OPSTINE AND EMP_CAT_S='4';

IF VP713113 IS NOT NULL THEN


--<STAVKA>
stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');
stavka_root_node := xmldom.appendChild(obaveza_root_node,
xmldom.makeNode(stavka_root_elmt));

--<VRSTA_PRIHODA>
obaveza_elmt := xmldom.createElement(doc, 'VRSTA_PRIHODA');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, '713113');
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<IZNOS_OBAVEZE>
obaveza_elmt := xmldom.createElement(doc, 'IZNOS_OBAVEZE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));

if VP711118_PRED_SIND IS NOT NULL THEN


obaveza_text := xmldom.createTextNode(doc,
format_number_1002(VP713113 - VP711118_PRED_SIND));
else
obaveza_text := xmldom.createTextNode(doc,
format_number_1002(VP713113));
end if;
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<SIFRA_OPSTINE>
obaveza_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));
END IF;

IF VP711118 IS NOT NULL THEN


--<STAVKA>
stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');
stavka_root_node := xmldom.appendChild(obaveza_root_node,
xmldom.makeNode(stavka_root_elmt));

--<VRSTA_PRIHODA>
obaveza_elmt := xmldom.createElement(doc, 'VRSTA_PRIHODA');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, '711118');
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<IZNOS_OBAVEZE>
obaveza_elmt := xmldom.createElement(doc, 'IZNOS_OBAVEZE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));

if VP711118_PRED_SIND IS NOT NULL THEN


obaveza_text := xmldom.createTextNode(doc,
format_number_1002(VP711118 + VP711118_PRED_SIND));
ELSE
obaveza_text := xmldom.createTextNode(doc,
format_number_1002(VP711118));
END IF;
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<SIFRA_OPSTINE>
obaveza_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));
ELSE
IF VP711118_PRED_SIND IS NOT NULL THEN
--<STAVKA>
stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');
stavka_root_node := xmldom.appendChild(obaveza_root_node,
xmldom.makeNode(stavka_root_elmt));

--<VRSTA_PRIHODA>
obaveza_elmt := xmldom.createElement(doc, 'VRSTA_PRIHODA');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, '711118');
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<IZNOS_OBAVEZE>
obaveza_elmt := xmldom.createElement(doc, 'IZNOS_OBAVEZE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc,
format_number_1002(VP711118_PRED_SIND));
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<SIFRA_OPSTINE>
obaveza_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));
END IF;
END IF;

IF VP711112 IS NOT NULL THEN


--<STAVKA>
stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');
stavka_root_node := xmldom.appendChild(obaveza_root_node,
xmldom.makeNode(stavka_root_elmt));

--<VRSTA_PRIHODA>
obaveza_elmt := xmldom.createElement(doc, 'VRSTA_PRIHODA');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, '711112');
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<IZNOS_OBAVEZE>
obaveza_elmt := xmldom.createElement(doc, 'IZNOS_OBAVEZE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc,
format_number_1002(VP711112));
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<SIFRA_OPSTINE>
obaveza_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));
END IF;

IF VP711311 IS NOT NULL THEN


--<STAVKA>
stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');
stavka_root_node := xmldom.appendChild(obaveza_root_node,
xmldom.makeNode(stavka_root_elmt));

--<VRSTA_PRIHODA>
obaveza_elmt := xmldom.createElement(doc, 'VRSTA_PRIHODA');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, '711311');
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<IZNOS_OBAVEZE>
obaveza_elmt := xmldom.createElement(doc, 'IZNOS_OBAVEZE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc,
format_number_1002(VP711311));
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<SIFRA_OPSTINE>
obaveza_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

END IF;

FOR D_SL_L in D_SL(SIFRA_OPSTINE) LOOP


stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');

if D_SL_L.EMP_CAT_S = '1' then


if dl1_root_node_created = FALSE then
dl1_root_elmt := xmldom.createElement(doc, 'DL1');
dl1_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl1_root_elmt));
dl1_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl1_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '2' then
if dl2_root_node_created = FALSE then
dl2_root_elmt := xmldom.createElement(doc, 'DL2');
dl2_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl2_root_elmt));
dl2_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl2_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '3' then
if dl3_root_node_created = FALSE then
dl3_root_elmt := xmldom.createElement(doc, 'DL3');
dl3_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl3_root_elmt));
dl3_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl3_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '4' then
if dl4_root_node_created = FALSE then
dl4_root_elmt := xmldom.createElement(doc, 'DL4');
dl4_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl4_root_elmt));
dl4_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl4_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '5' then
if dl5_root_node_created = FALSE then
dl5_root_elmt := xmldom.createElement(doc, 'DL5');
dl5_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl5_root_elmt));
dl5_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl5_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '6' then
if dl6_root_node_created = FALSE then
dl6_root_elmt := xmldom.createElement(doc, 'DL6');
dl6_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl6_root_elmt));
dl6_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl6_root_node,
xmldom.makeNode(stavka_root_elmt));
end if;

--<IME_PREZIME>
dl_elmt := xmldom.createElement(doc, 'IME_PREZIME');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L.IME || ' ' ||
D_SL_L.PREZIME);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<JMBG>
dl_elmt := xmldom.createElement(doc, 'JMBG');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L.JMBG);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<SIFRA_OPSTINE>
dl_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

if D_SL_L.EMP_CAT_S = '4' then


--<TIP_PRIHODA>
dl_elmt := xmldom.createElement(doc, 'TIP_PRIHODA');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, '02');
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;
if D_SL_L.EMP_CAT_S != '2' and D_SL_L.EMP_CAT_S != '3' and
D_SL_L.EMP_CAT_S != '4' then
--<RADNI_SATI>
dl_elmt := xmldom.createElement(doc, 'RADNI_SATI');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, '0');
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<BRUTO>
dl_elmt := xmldom.createElement(doc, 'BRUTO');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));

/*select count(*) into V_PRED_SIND from XX_OBRAZAC1002_PRED_SIND_TT


where JMBG = D_SL_L.JMBG and OPST_POREZ = SIFRA_OPSTINE;
if V_PRED_SIND > 0 and D_SL_L.EMP_CAT_S = 1 then
select sum(BRUTO) into V_PRED_SIND_BRUTO from
XX_OBRAZAC1002_PRED_SIND_TT where JMBG = D_SL_L.JMBG and OPST_POREZ =
SIFRA_OPSTINE;
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.BRUTO - V_PRED_SIND_BRUTO));
else*/
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.BRUTO));
--end if;

dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));


end if;

if D_SL_L.EMP_CAT_S = '4' then


--<TROSKOVI>
dl_elmt := xmldom.createElement(doc, 'TROSKOVI');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.TROSKOVI));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '4' and D_SL_L.EMP_CAT_S != '5' then


--<DOPRINOS_PIO>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_PIO');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_ZO>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_ZO');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_DZ>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_DZ');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_ZN>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_ZN');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<UKUPNI_DOPRINOSI>
dl_elmt := xmldom.createElement(doc, 'UKUPNI_DOPRINOSI');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));

/*if V_PRED_SIND > 0 and D_SL_L.EMP_CAT_S = 1 then


select sum(PIO) into V_PRED_SIND_PIO from
XX_OBRAZAC1002_PRED_SIND_TT where JMBG = D_SL_L.JMBG;
select sum(ZO) into V_PRED_SIND_ZO from
XX_OBRAZAC1002_PRED_SIND_TT where JMBG = D_SL_L.JMBG;
select sum(DZ) into V_PRED_SIND_DZ from
XX_OBRAZAC1002_PRED_SIND_TT where JMBG = D_SL_L.JMBG;
select sum(ZN) into V_PRED_SIND_ZN from
XX_OBRAZAC1002_PRED_SIND_TT where JMBG = D_SL_L.JMBG;

dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.PIO + D_SL_L.ZO + D_SL_L.DZ + D_SL_L.ZN -
(V_PRED_SIND_PIO + V_PRED_SIND_ZO + V_PRED_SIND_DZ + V_PRED_SIND_ZN)));
else*/
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.PIO + D_SL_L.ZO + D_SL_L.DZ + D_SL_L.ZN));
--end if;

--dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.PIO + D_SL_L.ZO + D_SL_L.DZ + D_SL_L.ZN));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S = '2' then


--<TROSKOVI>
dl_elmt := xmldom.createElement(doc, 'TROSKOVI');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.TROSKOVI));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<DOHODAK>
dl_elmt := xmldom.createElement(doc, 'DOHODAK');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));

/*if V_PRED_SIND > 0 and D_SL_L.EMP_CAT_S = 1 then


select sum(DOHODAK) into V_PRED_SIND_DOHODAK from
XX_OBRAZAC1002_PRED_SIND_TT where JMBG = D_SL_L.JMBG and OPST_POREZ =
SIFRA_OPSTINE;
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.DOHODAK - V_PRED_SIND_DOHODAK));
else*/
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.DOHODAK));
--end if;

dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));


end if;

if D_SL_L.EMP_CAT_S = '1' then


--<LICNI_ODBITAK>
dl_elmt := xmldom.createElement(doc, 'LICNI_ODBITAK');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.UMANJENJE_ZAKON));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<UMANJENJE>
dl_elmt := xmldom.createElement(doc, 'UMANJENJE');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.PORESKA_KARTICA));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '1' and D_SL_L.EMP_CAT_S != '5' and


D_SL_L.EMP_CAT_S != '6' then
--<POVRAT_POREZA>
dl_elmt := xmldom.createElement(doc, 'POVRAT_POREZA');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.POVRAT_POREZA));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<OSNOVICA_POREZ>
dl_elmt := xmldom.createElement(doc, 'OSNOVICA_POREZ');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));

/*if V_PRED_SIND > 0 and D_SL_L.EMP_CAT_S = 1 then


select sum(OSNOVICA_POREZ) into V_PRED_SIND_OSN_POREZ from
XX_OBRAZAC1002_PRED_SIND_TT where JMBG = D_SL_L.JMBG and OPST_POREZ =
SIFRA_OPSTINE;
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.OSNOVICA_POREZ - V_PRED_SIND_OSN_POREZ));
else*/
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.OSNOVICA_POREZ));
--end if;
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<POREZ>
dl_elmt := xmldom.createElement(doc, 'POREZ');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));

/*if V_PRED_SIND > 0 and D_SL_L.EMP_CAT_S = 1 then


select sum(POREZ) into V_PRED_SIND_POREZ from
XX_OBRAZAC1002_PRED_SIND_TT where JMBG = D_SL_L.JMBG and OPST_POREZ =
SIFRA_OPSTINE;
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.POREZ - V_PRED_SIND_POREZ));
else*/
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.POREZ));
--end if;

dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));


end if;

if D_SL_L.EMP_CAT_S = '1' then


select count(*) into V_DPF from XX_OBRAZAC1002_DPF_TT_20 where JMBG
= D_SL_L.JMBG and OPST_POREZ = SIFRA_OPSTINE;
if V_DPF > 0 and D_SL_L.EMP_CAT_S = 1 then
select sum(IZNOS_RAD) into V_DPF_RAD from
XX_OBRAZAC1002_DPF_TT_20 where JMBG = D_SL_L.JMBG and OPST_POREZ = SIFRA_OPSTINE;
select sum(IZNOS_POS) into V_DPF_POS from
XX_OBRAZAC1002_DPF_TT_20 where JMBG = D_SL_L.JMBG and OPST_POREZ = SIFRA_OPSTINE;
else
V_DPF_RAD := 0;
V_DPF_POS := 0;
end if;
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<ISPLACENO_PRIMANJE>
dl_elmt := xmldom.createElement(doc, 'ISPLACENO_PRIMANJE');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));

/*fnd_file.put_line(fnd_file.LOG, 'ISPLACENO_PRIMANJE_1');
fnd_file.put_line(fnd_file.LOG, 'D_SL_L.JMBG' || ' = ' ||
D_SL_L.JMBG);
fnd_file.put_line(fnd_file.LOG, 'D_SL_L.NETO' || ' = ' ||
to_char(D_SL_L.NETO));*/

/*if V_PRED_SIND > 0 and D_SL_L.EMP_CAT_S = 1 then


select sum(NETO) into V_PRED_SIND_NETO from
XX_OBRAZAC1002_PRED_SIND_TT where JMBG = D_SL_L.JMBG and OPST_POREZ =
SIFRA_OPSTINE;
if (V_DPF_RAD + V_DPF_POS > 100) then
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.NETO - V_PRED_SIND_NETO + (V_DPF_RAD + V_DPF_POS -
100)));
else
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.NETO - V_PRED_SIND_NETO));
end if;
else*/
if (V_DPF_RAD + V_DPF_POS > 100) then
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.NETO + (V_DPF_RAD + V_DPF_POS - 100)));
else
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.NETO));
end if;
--end if;

dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));


end if;

if D_SL_L.EMP_CAT_S = '1' then


/*select count(*) into V_DPF from XX_OBRAZAC1002_DPF_TT_20 where
JMBG = D_SL_L.JMBG and OPST_POREZ = SIFRA_OPSTINE;
if V_DPF > 0 and D_SL_L.EMP_CAT_S = 1 then
select sum(IZNOS_RAD) into V_DPF_RAD from
XX_OBRAZAC1002_DPF_TT_20 where JMBG = D_SL_L.JMBG and OPST_POREZ = SIFRA_OPSTINE;
select sum(IZNOS_POS) into V_DPF_POS from
XX_OBRAZAC1002_DPF_TT_20 where JMBG = D_SL_L.JMBG and OPST_POREZ = SIFRA_OPSTINE;
else
V_DPF_RAD := 0;
V_DPF_POS := 0;
end if;*/

--<NEOPOREZIVO_PRIMANJE>
dl_elmt := xmldom.createElement(doc, 'NEOPOREZIVO_PRIMANJE');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));

--if D_SL_L.EMP_CAT_S = 1 then


if V_DPF_RAD = 0 and V_DPF_POS > 0 then
V_DPF_IZNOS_NEOP:= V_DPF_IZNOS_NEOP + V_DPF_POS;
dl_text := xmldom.createTextNode(doc,
format_number_1002(nvl(D_SL_L.NEOPOR_NAKNADE + V_DPF_POS,0)));
elsif V_DPF_RAD > 0 and V_DPF_POS > 0 and (V_DPF_RAD +
V_DPF_POS) <= 100 then
V_DPF_IZNOS_NEOP:= V_DPF_IZNOS_NEOP + V_DPF_POS +
V_DPF_RAD;
dl_text := xmldom.createTextNode(doc,
format_number_1002(nvl(D_SL_L.NEOPOR_NAKNADE + V_DPF_POS + V_DPF_RAD,0)));
elsif V_DPF_RAD > 0 and V_DPF_POS > 0 and (V_DPF_RAD +
V_DPF_POS) > 100 then
V_DPF_IZNOS_NEOP:= V_DPF_IZNOS_NEOP + 100;
dl_text := xmldom.createTextNode(doc,
format_number_1002(nvl(D_SL_L.NEOPOR_NAKNADE + 100,0)));
elsif V_DPF_RAD > 0 and V_DPF_POS = 0 and V_DPF_RAD <= 100 then
V_DPF_IZNOS_NEOP:= V_DPF_IZNOS_NEOP + V_DPF_RAD;
dl_text := xmldom.createTextNode(doc,
format_number_1002(nvl(D_SL_L.NEOPOR_NAKNADE + V_DPF_RAD,0)));
elsif V_DPF_RAD > 0 and V_DPF_POS = 0 and V_DPF_RAD > 100 then
V_DPF_IZNOS_NEOP:= V_DPF_IZNOS_NEOP + 100;
dl_text := xmldom.createTextNode(doc,
format_number_1002(nvl(D_SL_L.NEOPOR_NAKNADE + 100,0)));
else
dl_text := xmldom.createTextNode(doc,
format_number_1002(nvl(D_SL_L.NEOPOR_NAKNADE,0)));
end if;
--else
--dl_text := xmldom.createTextNode(doc, format_number_1002(0));
--end if;

dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));


end if;
END LOOP;

FOR D_SL_L in d_sl_pred_sind(SIFRA_OPSTINE) LOOP


stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');

if D_SL_L.EMP_CAT_S = '1' then


if dl1_root_node_created = FALSE then
dl1_root_elmt := xmldom.createElement(doc, 'DL1');
dl1_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl1_root_elmt));
dl1_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl1_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '2' then
if dl2_root_node_created = FALSE then
dl2_root_elmt := xmldom.createElement(doc, 'DL2');
dl2_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl2_root_elmt));
dl2_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl2_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '3' then
if dl3_root_node_created = FALSE then
dl3_root_elmt := xmldom.createElement(doc, 'DL3');
dl3_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl3_root_elmt));
dl3_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl3_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '4' then
if dl4_root_node_created = FALSE then
dl4_root_elmt := xmldom.createElement(doc, 'DL4');
dl4_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl4_root_elmt));
dl4_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl4_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '5' then
if dl5_root_node_created = FALSE then
dl5_root_elmt := xmldom.createElement(doc, 'DL5');
dl5_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl5_root_elmt));
dl5_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl5_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '6' then
if dl6_root_node_created = FALSE then
dl6_root_elmt := xmldom.createElement(doc, 'DL6');
dl6_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl6_root_elmt));
dl6_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl6_root_node,
xmldom.makeNode(stavka_root_elmt));
end if;

--<IME_PREZIME>
dl_elmt := xmldom.createElement(doc, 'IME_PREZIME');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L.IME || ' ' ||
D_SL_L.PREZIME);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<JMBG>
dl_elmt := xmldom.createElement(doc, 'JMBG');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L.JMBG);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<SIFRA_OPSTINE>
dl_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

if D_SL_L.EMP_CAT_S != '2' and D_SL_L.EMP_CAT_S != '3' and


D_SL_L.EMP_CAT_S != '4' then
--<RADNI_SATI>
dl_elmt := xmldom.createElement(doc, 'RADNI_SATI');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, '0');
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<BRUTO>
dl_elmt := xmldom.createElement(doc, 'BRUTO');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.BRUTO));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '4' and D_SL_L.EMP_CAT_S != '5' then


--<DOPRINOS_PIO>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_PIO');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_ZO>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_ZO');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_DZ>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_DZ');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_ZN>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_ZN');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<UKUPNI_DOPRINOSI>
dl_elmt := xmldom.createElement(doc, 'UKUPNI_DOPRINOSI');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(D_SL_L.PIO
+ D_SL_L.ZO + D_SL_L.DZ + D_SL_L.ZN));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<DOHODAK>
dl_elmt := xmldom.createElement(doc, 'DOHODAK');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.DOHODAK));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S = '1' then


--<LICNI_ODBITAK>
dl_elmt := xmldom.createElement(doc, 'LICNI_ODBITAK');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.UMANJENJE_ZAKON));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<UMANJENJE>
dl_elmt := xmldom.createElement(doc, 'UMANJENJE');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.PORESKA_KARTICA));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<OSNOVICA_POREZ>
dl_elmt := xmldom.createElement(doc, 'OSNOVICA_POREZ');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.OSNOVICA_POREZ));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<POREZ>
dl_elmt := xmldom.createElement(doc, 'POREZ');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.POREZ));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<ISPLACENO_PRIMANJE>
dl_elmt := xmldom.createElement(doc, 'ISPLACENO_PRIMANJE');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.NETO));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S = '1' then


--<NEOPOREZIVO_PRIMANJE>
dl_elmt := xmldom.createElement(doc, 'NEOPOREZIVO_PRIMANJE');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;
END LOOP;

if SIFRA_OPSTINE_3=substr(P_OPSTINA,1,3) then
if STATUS_INV='D' then
if ISPLATNI_P_OD<to_date('01.12.2015','dd.mm.yyyy') then
v_vrsta_isplate := vrste_isplata(18,42,43,44);
elsif ISPLATNI_P_OD>=to_date('01.12.2015','dd.mm.yyyy') and
ISPLATNI_P_OD<to_date('01.12.2016','dd.mm.yyyy') then
v_vrsta_isplate := vrste_isplata(18,43,44);
elsif ISPLATNI_P_OD>=to_date('01.12.2016','dd.mm.yyyy') and
ISPLATNI_P_OD<to_date('01.01.2018','dd.mm.yyyy') then
v_vrsta_isplate := vrste_isplata(18);
else
--v_vrsta_isplate := vrste_isplata(18,54);
v_vrsta_isplate := vrste_isplata(18);
end if;
else
if ISPLATNI_P_OD<to_date('01.12.2015','dd.mm.yyyy') then
v_vrsta_isplate := vrste_isplata(42,43,44);
elsif ISPLATNI_P_OD>=to_date('01.12.2015','dd.mm.yyyy') and
ISPLATNI_P_OD<to_date('01.12.2016','dd.mm.yyyy') then
v_vrsta_isplate := vrste_isplata(43,44);
elsif ISPLATNI_P_OD>=to_date('01.12.2016','dd.mm.yyyy') and
ISPLATNI_P_OD<to_date('01.01.2018','dd.mm.yyyy') then
v_vrsta_isplate := vrste_isplata();
else
--v_vrsta_isplate := vrste_isplata(54);
v_vrsta_isplate := vrste_isplata();
end if;
end if;

SELECT nvl(SUM(SOLID),0) INTO DOP_SLOLID_BEZ_KOM FROM


XX_OBRAZAC1002_MAIN_TT WHERE EMP_CAT !='BA_U_10';
SELECT NVL(SUM(SOLID),'0') INTO DOP_SLOLID_KOM FROM
XX_OBRAZAC1002_MAIN_TT WHERE EMP_CAT='BA_U_10';

IF STATUS_INV='D' THEN
SELECT nvl(SUM(BRUTO),0) INTO UK_BRUTO_ZAP FROM
XX_OBRAZAC1002_MAIN_TT where emp_cat_s='1';
SELECT NVL(SUM(OSTALE_NAKNADE),0) INTO OST_NAKNADE_BRUTO FROM
XX_OBRAZAC1002_MAIN_TT where emp_cat_s='1';
ELSE
UK_BRUTO_ZAP:=0;
END IF;

IF UK_BRUTO_ZAP IS NOT NULL and STATUS_INV='D' THEN


stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');
stavka_root_node := xmldom.appendChild(obaveza_root_node,
xmldom.makeNode(stavka_root_elmt));

obaveza_elmt := xmldom.createElement(doc, 'VRSTA_PRIHODA');


obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, '712171');
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

obaveza_elmt := xmldom.createElement(doc, 'IZNOS_OBAVEZE');


obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc,
format_number_1002((UK_BRUTO_ZAP-OST_NAKNADE_BRUTO)*0.002));
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

obaveza_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');


obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));
END IF;

IF VP712172 IS NOT NULL THEN


--<STAVKA>
stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');
stavka_root_node := xmldom.appendChild(obaveza_root_node,
xmldom.makeNode(stavka_root_elmt));

--<VRSTA_PRIHODA>
obaveza_elmt := xmldom.createElement(doc, 'VRSTA_PRIHODA');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, '712172');
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<IZNOS_OBAVEZE>
obaveza_elmt := xmldom.createElement(doc, 'IZNOS_OBAVEZE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
if ISPLATNI_P_OD<to_date('01.12.2015','dd.mm.yyyy') then
obaveza_text := xmldom.createTextNode(doc,
format_number_1002(TO_NUMBER(VP712172) + TO_NUMBER(DOP_SLOLID_BEZ_KOM)));
else
obaveza_text := xmldom.createTextNode(doc,
format_number_1002(TO_NUMBER(VP712172)));
end if;
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<SIFRA_OPSTINE>
obaveza_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));
END IF;

uk_ostale_isplate := v_vrsta_isplate.count;
select NVL(sum(NETO),0) into UK_NETO FROM XX_OBRAZAC1002_MAIN_TT where
emp_cat!='BA_U_10' and emp_cat!='BA_U_06' AND SOLID>0;
select NVL(sum(NETO),0) into UK_NETO_KOM FROM XX_OBRAZAC1002_MAIN_TT
where emp_cat='BA_U_10';

--loop za ostale ISPLATE


FOR i in 1..uk_ostale_isplate LOOP
stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');

if dl6_root_node_created = FALSE then


dl6_root_elmt := xmldom.createElement(doc, 'DL6');
dl6_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl6_root_elmt));
dl6_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl6_root_node,
xmldom.makeNode(stavka_root_elmt));

--<IME_PREZIME>
dl_elmt := xmldom.createElement(doc, 'IME_PREZIME');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, NAZIV_INSTITUCIJE);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
--<JMBG>
dl_elmt := xmldom.createElement(doc, 'JMBG');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, P_JIB);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<SIFRA_OPSTINE>
dl_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<RADNI_SATI>
dl_elmt := xmldom.createElement(doc, 'RADNI_SATI');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, '0');
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<OSNOVICA_ZA_VI6>
dl_elmt := xmldom.createElement(doc, 'OSNOVICA_ZA_VI6');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));

IF v_vrsta_isplate(i)=18 then
dl_text := xmldom.createTextNode(doc,
format_number_1002(uk_bruto_zap-OST_NAKNADE_BRUTO));
elsif v_vrsta_isplate(i)=42 then
dl_text := xmldom.createTextNode(doc,
format_number_1002(UK_NETO));
elsif v_vrsta_isplate(i)=43 then
dl_text := xmldom.createTextNode(doc,
format_number_1002(UK_NETO));
elsif v_vrsta_isplate(i)=44 then
IF DOP_SLOLID_KOM IS NOT NULL THEN
dl_text := xmldom.createTextNode(doc,
format_number_1002(UK_NETO_KOM));
ELSE
dl_text := xmldom.createTextNode(doc,
format_number_1002(0));
END IF;
end if;

dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_PIO>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_PIO');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));

IF v_vrsta_isplate(i)=18 then
dl_text := xmldom.createTextNode(doc,
format_number_1002(round((UK_BRUTO_ZAP-OST_NAKNADE_BRUTO)*0.002, 2)));
elsif v_vrsta_isplate(i)=42 then
dl_text := xmldom.createTextNode(doc,
format_number_1002(DOP_SLOLID_BEZ_KOM));
elsif v_vrsta_isplate(i)=43 then
dl_text := xmldom.createTextNode(doc,
format_number_1002(DOP_SLOLID_BEZ_KOM));
elsif v_vrsta_isplate(i)=44 then
IF DOP_SLOLID_KOM IS NOT NULL THEN
dl_text := xmldom.createTextNode(doc,
format_number_1002(DOP_SLOLID_KOM));
ELSE
dl_text := xmldom.createTextNode(doc,
format_number_1002(0));
END IF;
end if;

dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_ZO>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_ZO');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_DZ>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_DZ');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_ZN>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_ZN');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<UKUPNI_DOPRINOSI>
dl_elmt := xmldom.createElement(doc, 'UKUPNI_DOPRINOSI');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));

IF v_vrsta_isplate(i)=18 then
dl_text := xmldom.createTextNode(doc,
format_number_1002(round((UK_BRUTO_ZAP-OST_NAKNADE_BRUTO)*0.002, 2)));
elsif v_vrsta_isplate(i)=42 then
dl_text := xmldom.createTextNode(doc,
format_number_1002(DOP_SLOLID_BEZ_KOM));
elsif v_vrsta_isplate(i)=43 then
dl_text := xmldom.createTextNode(doc,
format_number_1002(DOP_SLOLID_BEZ_KOM));
elsif v_vrsta_isplate(i)=44 then
IF DOP_SLOLID_KOM IS NOT NULL THEN
dl_text := xmldom.createTextNode(doc,
format_number_1002(DOP_SLOLID_KOM));
ELSE
dl_text := xmldom.createTextNode(doc,
format_number_1002(0));
END IF;
end if;
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<TIP_POSEBNE_ISPLATE>
dl_elmt := xmldom.createElement(doc, 'TIP_POSEBNE_ISPLATE');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, to_char(v_vrsta_isplate(i)));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
END LOOP;
end if;
END LOOP PETLJA_ZA_KREIRANJE_FAJLOVA;
/
***********************************************************************************
***************************************/
/* Ovde počinje dio koji kreira EPP fajl za prijavu doprinosa. Kreira se fajl za
opštinu sjedišta */
/* Fajl obuhvata sve radnike i ugovorce.
*/
/
***********************************************************************************
***************************************/
ELSIF p_vrsta='DOPRINOSI' THEN
v_temp_var := 0;

SIFRA_OPSTINE_3 := substr(P_OPSTINA, 1, 3);

select count(JMBG) into v_temp_var from XX_OBRAZAC1002_MAIN_TT where


TRIM(OPST_ZO) != TRIM(OPST_ZN);

if v_temp_var > 0 then


fnd_file.put_line(fnd_file.LOG, 'UPOZORENJE: Radnici koji imaju razlicite
opstine ZO i ZN:');
FOR RAZ IN RAZ_ZO_ZN LOOP
fnd_file.put_line(fnd_file.LOG, RAZ.JMBG);
END LOOP;
end if;

UPDATE XX_OBRAZAC1002_MAIN_TT SET OPST_ZO = OPST_PIO, OPST_ZN = OPST_PIO,


ENTITET = 'REPUBLIKA SRPSKA' WHERE ENTITET = 'FEDERACIJA BIH' AND
(EMP_CAT='BA_U_10' OR EMP_CAT='BA_U_03' OR EMP_CAT='BA_U_04' OR EMP_CAT='BA_U_05'
OR EMP_CAT='BA_U_06' OR EMP_CAT='BA_U_11' OR EMP_CAT='BA_U_14');

SELECT SUM(PIO)+SUM(ZO)+SUM(DZ)+SUM(ZN) INTO VP712199 FROM


XX_OBRAZAC1002_MAIN_TT WHERE OPST_ZO=P_OPSTINA AND EMP_CAT_S='1' OR
EMP_CAT='BA_U_10' /*OR EMP_CAT='BA_U_04'*/ OR EMP_CAT='BA_U_15' OR
EMP_CAT='BA_U_17' OR (EMP_CAT_S='3' AND (EMP_CAT='BA_U_12' OR EMP_CAT='BA_U_21' OR
EMP_CAT='BA_U_22'));--OVAJ ZADNJI USLOV JE DODAT ZA NARODNU SKUPSTINU i UPRAVNI
ODBOR
SELECT SUM(PIO)+SUM(ZO)+SUM(DZ)+SUM(ZN) INTO VP712199_PRED_SIND FROM
XX_OBRAZAC1002_PRED_SIND_TT WHERE OPST_ZO=P_OPSTINA AND EMP_CAT_S='3';

SELECT SUM(PIO) INTO VP712129 FROM XX_OBRAZAC1002_MAIN_TT WHERE OPST_ZO !


=P_OPSTINA OR EMP_CAT='BA_U_05' OR EMP_CAT='BA_U_11' OR EMP_CAT='BA_U_16' OR
EMP_CAT='BA_U_06' OR EMP_CAT='BA_U_04' OR EMP_CAT='BA_U_03';
SELECT SUM(PIO) INTO VP712129_PRED_SIND FROM XX_OBRAZAC1002_PRED_SIND_TT WHERE
OPST_ZO !=P_OPSTINA AND EMP_CAT_S='3';

SELECT SUM(PIO_BEN) INTO VP712113 FROM XX_OBRAZAC1002_BEN_TT;


SELECT SUM(ZO) INTO VP712149 FROM XX_OBRAZAC1002_MAIN_TT WHERE EMP_CAT_S='6' OR
EMP_CAT='BA_U_06' OR EMP_CAT='BA_U_04';
SELECT SUM(ZO) INTO VP712149_PRED_SIND FROM XX_OBRAZAC1002_PRED_SIND_TT WHERE
EMP_CAT_S='3';

SELECT SUM(DZ) INTO VP712169 FROM XX_OBRAZAC1002_MAIN_TT WHERE OPST_ZO !


=P_OPSTINA;
SELECT SUM(DZ) INTO VP712169_PRED_SIND FROM XX_OBRAZAC1002_PRED_SIND_TT WHERE
OPST_ZO !=P_OPSTINA;

SELECT SUM(ZN) INTO VP712159 FROM XX_OBRAZAC1002_MAIN_TT WHERE OPST_ZO !


=P_OPSTINA AND ENTITET = 'REPUBLIKA SRPSKA';
SELECT SUM(ZN) INTO VP712159_PRED_SIND FROM XX_OBRAZAC1002_PRED_SIND_TT WHERE
OPST_ZO !=P_OPSTINA AND ENTITET = 'REPUBLIKA SRPSKA';

IF VP712199 IS NOT NULL THEN


stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');
stavka_root_node := xmldom.appendChild(obaveza_root_node,
xmldom.makeNode(stavka_root_elmt));

--<VRSTA_PRIHODA>
obaveza_elmt := xmldom.createElement(doc, 'VRSTA_PRIHODA');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, '712199');
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<IZNOS_OBAVEZE>
obaveza_elmt := xmldom.createElement(doc, 'IZNOS_OBAVEZE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, format_number_1002(VP712199));
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<SIFRA_OPSTINE>
obaveza_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));
END IF;

IF VP712113 IS NOT NULL THEN


stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');
stavka_root_node := xmldom.appendChild(obaveza_root_node,
xmldom.makeNode(stavka_root_elmt));

--<VRSTA_PRIHODA>
obaveza_elmt := xmldom.createElement(doc, 'VRSTA_PRIHODA');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, '712113');
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<IZNOS_OBAVEZE>
obaveza_elmt := xmldom.createElement(doc, 'IZNOS_OBAVEZE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, format_number_1002(VP712113));
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<SIFRA_OPSTINE>
obaveza_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));
END IF;

IF VP712129 IS NOT NULL THEN


stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');
stavka_root_node := xmldom.appendChild(obaveza_root_node,
xmldom.makeNode(stavka_root_elmt));

--<VRSTA_PRIHODA>
obaveza_elmt := xmldom.createElement(doc, 'VRSTA_PRIHODA');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, '712129');
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<IZNOS_OBAVEZE>
obaveza_elmt := xmldom.createElement(doc, 'IZNOS_OBAVEZE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, format_number_1002(VP712129));
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<SIFRA_OPSTINE>
obaveza_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));
END IF;

IF VP712149 IS NOT NULL THEN


stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');
stavka_root_node := xmldom.appendChild(obaveza_root_node,
xmldom.makeNode(stavka_root_elmt));

--<VRSTA_PRIHODA>
obaveza_elmt := xmldom.createElement(doc, 'VRSTA_PRIHODA');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, '712149');
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));
--<IZNOS_OBAVEZE>
obaveza_elmt := xmldom.createElement(doc, 'IZNOS_OBAVEZE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, format_number_1002(VP712149));
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<SIFRA_OPSTINE>
obaveza_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));
END IF;

IF VP712159 IS NOT NULL THEN


stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');
stavka_root_node := xmldom.appendChild(obaveza_root_node,
xmldom.makeNode(stavka_root_elmt));

--<VRSTA_PRIHODA>
obaveza_elmt := xmldom.createElement(doc, 'VRSTA_PRIHODA');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, '712159');
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<IZNOS_OBAVEZE>
obaveza_elmt := xmldom.createElement(doc, 'IZNOS_OBAVEZE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, format_number_1002(VP712159));
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<SIFRA_OPSTINE>
obaveza_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));
END IF;

IF VP712169 IS NOT NULL THEN


stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');
stavka_root_node := xmldom.appendChild(obaveza_root_node,
xmldom.makeNode(stavka_root_elmt));

--<VRSTA_PRIHODA>
obaveza_elmt := xmldom.createElement(doc, 'VRSTA_PRIHODA');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, '712169');
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));
--<IZNOS_OBAVEZE>
obaveza_elmt := xmldom.createElement(doc, 'IZNOS_OBAVEZE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, format_number_1002(VP712169));
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));

--<SIFRA_OPSTINE>
obaveza_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
obaveza_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(obaveza_elmt));
obaveza_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
obaveza_node := xmldom.appendChild(obaveza_node,
xmldom.makeNode(obaveza_text));
END IF;

--SELECT count(*) into v_broj_ben FROM XX_OBRAZAC1002_BEN_TT;

--loop za dl1,dl2 i dl3


FOR D_SL_L in D_SL_DOP LOOP
stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');

/*if dl1_root_node_created = TRUE and v_broj_ben > 0 then


if dl1b_root_node_created = FALSE then
dl1b_root_elmt := xmldom.createElement(doc, 'DL1B');
dl1b_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl1b_root_elmt));
dl1b_root_node_created := TRUE;
stavka_root_node := xmldom.appendChild(dl1b_root_node,
xmldom.makeNode(stavka_root_elmt));
end if;
end if;*/

if D_SL_L.EMP_CAT_S = '1' then


if dl1_root_node_created = FALSE then
dl1_root_elmt := xmldom.createElement(doc, 'DL1');
dl1_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl1_root_elmt));
dl1_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl1_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '2' then
if dl2_root_node_created = FALSE then
dl2_root_elmt := xmldom.createElement(doc, 'DL2');
dl2_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl2_root_elmt));
dl2_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl2_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '3' then
if dl3_root_node_created = FALSE then
dl3_root_elmt := xmldom.createElement(doc, 'DL3');
dl3_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl3_root_elmt));
dl3_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl3_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '4' then
if dl4_root_node_created = FALSE then
dl4_root_elmt := xmldom.createElement(doc, 'DL4');
dl4_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl4_root_elmt));
dl4_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl4_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '5' then
if dl5_root_node_created = FALSE then
dl5_root_elmt := xmldom.createElement(doc, 'DL5');
dl5_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl5_root_elmt));
dl5_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl5_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '6' then
if dl6_root_node_created = FALSE then
dl6_root_elmt := xmldom.createElement(doc, 'DL6');
dl6_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl6_root_elmt));
dl6_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl6_root_node,
xmldom.makeNode(stavka_root_elmt));
end if;

--<IME_PREZIME>
dl_elmt := xmldom.createElement(doc, 'IME_PREZIME');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L.IME || ' ' ||
D_SL_L.PREZIME);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<JMBG>
dl_elmt := xmldom.createElement(doc, 'JMBG');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L.JMBG);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<SIFRA_OPSTINE>
dl_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

if D_SL_L.EMP_CAT_S != '2' and D_SL_L.EMP_CAT_S != '3' and


D_SL_L.EMP_CAT_S != '4' then
--<RADNI_SATI>
dl_elmt := xmldom.createElement(doc, 'RADNI_SATI');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L.RADNI_SATI);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

select count(*) into V_PRED_SIND from XX_OBRAZAC1002_PRED_SIND_TT where


JMBG = D_SL_L.JMBG;

--fnd_file.put(fnd_file.LOG, D_SL_L.JMBG);
--fnd_file.put(fnd_file.LOG, D_SL_L.EMP_CAT_S);

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<BRUTO>
dl_elmt := xmldom.createElement(doc, 'BRUTO');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));

--fnd_file.put(fnd_file.LOG, to_char(V_PRED_SIND));

--select count(*) into V_PRED_SIND from XX_OBRAZAC1002_PRED_SIND_TT


where JMBG = D_SL_L.JMBG and OPST_POREZ = SIFRA_OPSTINE;
/*if V_PRED_SIND > 0 and D_SL_L.EMP_CAT_S = 1 then
select sum(BRUTO) into V_PRED_SIND_BRUTO from
XX_OBRAZAC1002_PRED_SIND_TT where JMBG = D_SL_L.JMBG; --and OPST_POREZ =
SIFRA_OPSTINE;
--fnd_file.put(fnd_file.LOG, to_char(V_PRED_SIND_BRUTO));
--fnd_file.put(fnd_file.LOG, to_char(D_SL_L.BRUTO));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.BRUTO - V_PRED_SIND_BRUTO));
else*/
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.BRUTO));
--end if;

dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));


end if;

if D_SL_L.EMP_CAT_S != '4' and D_SL_L.EMP_CAT_S != '5' then


--<DOPRINOS_PIO>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_PIO');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));

/*if V_PRED_SIND > 0 and D_SL_L.EMP_CAT_S = 1 then


select sum(PIO) into V_PRED_SIND_PIO from
XX_OBRAZAC1002_PRED_SIND_TT where JMBG = D_SL_L.JMBG;
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.PIO - V_PRED_SIND_PIO));
else*/
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.PIO));
--end if;

dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_ZO>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_ZO');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
IF D_SL_L.OPST_ZO=P_OPSTINA THEN
/*if V_PRED_SIND > 0 and D_SL_L.EMP_CAT_S = 1 then
select sum(ZO) into V_PRED_SIND_ZO from
XX_OBRAZAC1002_PRED_SIND_TT where JMBG = D_SL_L.JMBG;
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.ZO - V_PRED_SIND_ZO));
else*/
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.ZO));
--end if;
ELSE
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
END IF;

dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_DZ>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_DZ');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));

/*if V_PRED_SIND > 0 and D_SL_L.EMP_CAT_S = 1 then


select sum(DZ) into V_PRED_SIND_DZ from
XX_OBRAZAC1002_PRED_SIND_TT where JMBG = D_SL_L.JMBG;
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.DZ - V_PRED_SIND_DZ));
else*/
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.DZ));
--end if;

dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_ZN>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_ZN');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));

IF D_SL_L.OPST_ZN=P_OPSTINA THEN
/*if V_PRED_SIND > 0 and D_SL_L.EMP_CAT_S = 1 then
select sum(ZN) into V_PRED_SIND_ZN from
XX_OBRAZAC1002_PRED_SIND_TT where JMBG = D_SL_L.JMBG;
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.ZN - V_PRED_SIND_ZN));
else*/
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.ZN));
--end if;
ELSE
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
END IF;

dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<UKUPNI_DOPRINOSI>
dl_elmt := xmldom.createElement(doc, 'UKUPNI_DOPRINOSI');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
/*if V_PRED_SIND > 0 and D_SL_L.EMP_CAT_S = 1 then
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.PIO + D_SL_L.ZO + D_SL_L.DZ + D_SL_L.ZN -
(V_PRED_SIND_PIO + V_PRED_SIND_ZO + V_PRED_SIND_DZ + V_PRED_SIND_ZN)));
else*/
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.PIO + D_SL_L.ZO + D_SL_L.DZ + D_SL_L.ZN));
--end if;

dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));


end if;

if D_SL_L.EMP_CAT_S = '2' or D_SL_L.EMP_CAT_S = '4'then


--<TROSKOVI>
dl_elmt := xmldom.createElement(doc, 'TROSKOVI');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.TROSKOVI));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<DOHODAK>
dl_elmt := xmldom.createElement(doc, 'DOHODAK');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));

/*if V_PRED_SIND > 0 and D_SL_L.EMP_CAT_S = 1 then


select sum(DOHODAK) into V_PRED_SIND_DOHODAK from
XX_OBRAZAC1002_PRED_SIND_TT where JMBG = D_SL_L.JMBG;
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.DOHODAK - V_PRED_SIND_DOHODAK));
else*/
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.DOHODAK));
--end if;

dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));


end if;

if D_SL_L.EMP_CAT_S = '1' then


--<LICNI_ODBITAK>
dl_elmt := xmldom.createElement(doc, 'LICNI_ODBITAK');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<UMANJENJE>
dl_elmt := xmldom.createElement(doc, 'UMANJENJE');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;
if D_SL_L.EMP_CAT_S != '1' and D_SL_L.EMP_CAT_S != '5' and
D_SL_L.EMP_CAT_S != '6' then
--<POVRAT_POREZA>
dl_elmt := xmldom.createElement(doc, 'POVRAT_POREZA');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<OSNOVICA_POREZ>
dl_elmt := xmldom.createElement(doc, 'OSNOVICA_POREZ');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<POREZ>
dl_elmt := xmldom.createElement(doc, 'POREZ');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<ISPLACENO_PRIMANJE>
dl_elmt := xmldom.createElement(doc, 'ISPLACENO_PRIMANJE');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));

/*fnd_file.put(fnd_file.LOG, 'ISPLACENO_PRIMANJE');
fnd_file.put(fnd_file.LOG, D_SL_L.JMBG);
fnd_file.put(fnd_file.LOG, D_SL_L.EMP_CAT_S); */

if D_SL_L.EMP_CAT_S = '1' then


select count(*) into V_DPF from XX_OBRAZAC1002_DPF_TT_20 where
JMBG = D_SL_L.JMBG;
if V_DPF > 0 and D_SL_L.EMP_CAT_S = 1 then
select sum(IZNOS_RAD) into V_DPF_RAD from
XX_OBRAZAC1002_DPF_TT_20 where JMBG = D_SL_L.JMBG;
select sum(IZNOS_POS) into V_DPF_POS from
XX_OBRAZAC1002_DPF_TT_20 where JMBG = D_SL_L.JMBG;
else
V_DPF_RAD := 0;
V_DPF_POS := 0;
end if;
end if;

/*fnd_file.put(fnd_file.LOG, 'V_DPF = ' || to_char(V_DPF));


fnd_file.put(fnd_file.LOG, 'V_PRED_SIND = ' ||
to_char(V_PRED_SIND));

fnd_file.put(fnd_file.LOG, 'V_DPF_RAD = ' || to_char(V_DPF_RAD));


fnd_file.put(fnd_file.LOG, 'V_DPF_POS = ' || to_char(V_DPF_POS));*/
/*if V_PRED_SIND > 0 and D_SL_L.EMP_CAT_S = 1 then
select sum(NETO) into V_PRED_SIND_NETO from
XX_OBRAZAC1002_PRED_SIND_TT where JMBG = D_SL_L.JMBG;
if (V_DPF_RAD + V_DPF_POS > 100) then
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.NETO - V_PRED_SIND_NETO + (V_DPF_RAD + V_DPF_POS -
100)));
else
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.NETO - V_PRED_SIND_NETO));
end if;
else*/
if (V_DPF_RAD + V_DPF_POS > 100) then
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.NETO + (V_DPF_RAD + V_DPF_POS - 100)));
else
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.NETO));
end if;
--end if;

dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));


end if;

if D_SL_L.EMP_CAT_S = '1' then


--<NEOPOREZIVO_PRIMANJE>
dl_elmt := xmldom.createElement(doc, 'NEOPOREZIVO_PRIMANJE');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;
END LOOP;

FOR D_SL_L in d_sl_dop_pred_sind LOOP


stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');

if D_SL_L.EMP_CAT_S = '1' then


if dl1_root_node_created = FALSE then
dl1_root_elmt := xmldom.createElement(doc, 'DL1');
dl1_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl1_root_elmt));
dl1_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl1_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '2' then
if dl2_root_node_created = FALSE then
dl2_root_elmt := xmldom.createElement(doc, 'DL2');
dl2_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl2_root_elmt));
dl2_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl2_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '3' then
if dl3_root_node_created = FALSE then
dl3_root_elmt := xmldom.createElement(doc, 'DL3');
dl3_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl3_root_elmt));
dl3_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl3_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '4' then
if dl4_root_node_created = FALSE then
dl4_root_elmt := xmldom.createElement(doc, 'DL4');
dl4_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl4_root_elmt));
dl4_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl4_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '5' then
if dl5_root_node_created = FALSE then
dl5_root_elmt := xmldom.createElement(doc, 'DL5');
dl5_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl5_root_elmt));
dl5_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl5_root_node,
xmldom.makeNode(stavka_root_elmt));
elsif D_SL_L.EMP_CAT_S = '6' then
if dl6_root_node_created = FALSE then
dl6_root_elmt := xmldom.createElement(doc, 'DL6');
dl6_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl6_root_elmt));
dl6_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl6_root_node,
xmldom.makeNode(stavka_root_elmt));
end if;

--<IME_PREZIME>
dl_elmt := xmldom.createElement(doc, 'IME_PREZIME');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L.IME || ' ' || D_SL_L.PREZIME);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<JMBG>
dl_elmt := xmldom.createElement(doc, 'JMBG');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L.JMBG);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<SIFRA_OPSTINE>
dl_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

if D_SL_L.EMP_CAT_S != '2' and D_SL_L.EMP_CAT_S != '3' and D_SL_L.EMP_CAT_S


!= '4' then
--<RADNI_SATI>
dl_elmt := xmldom.createElement(doc, 'RADNI_SATI');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, '0');
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<BRUTO>
dl_elmt := xmldom.createElement(doc, 'BRUTO');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.BRUTO));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '4' and D_SL_L.EMP_CAT_S != '5' then


--<DOPRINOS_PIO>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_PIO');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(D_SL_L.PIO));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_ZO>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_ZO');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));

IF D_SL_L.OPST_ZO=P_OPSTINA THEN
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.ZO));
ELSE
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
END IF;

dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_DZ>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_DZ');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(D_SL_L.DZ));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_ZN>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_ZN');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));

IF D_SL_L.OPST_ZN=P_OPSTINA THEN
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.ZN));
ELSE
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
END IF;

dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<UKUPNI_DOPRINOSI>
dl_elmt := xmldom.createElement(doc, 'UKUPNI_DOPRINOSI');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(D_SL_L.PIO +
D_SL_L.ZO + D_SL_L.DZ + D_SL_L.ZN));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<DOHODAK>
dl_elmt := xmldom.createElement(doc, 'DOHODAK');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L.DOHODAK));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S = '1' then


--<LICNI_ODBITAK>
dl_elmt := xmldom.createElement(doc, 'LICNI_ODBITAK');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<UMANJENJE>
dl_elmt := xmldom.createElement(doc, 'UMANJENJE');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<OSNOVICA_POREZ>
dl_elmt := xmldom.createElement(doc, 'OSNOVICA_POREZ');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<POREZ>
dl_elmt := xmldom.createElement(doc, 'POREZ');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S != '5' and D_SL_L.EMP_CAT_S != '6' then


--<ISPLACENO_PRIMANJE>
dl_elmt := xmldom.createElement(doc, 'ISPLACENO_PRIMANJE');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(D_SL_L.NETO));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;

if D_SL_L.EMP_CAT_S = '1' then


--<NEOPOREZIVO_PRIMANJE>
dl_elmt := xmldom.createElement(doc, 'NEOPOREZIVO_PRIMANJE');
dl_node := xmldom.appendChild(stavka_root_node,
xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
end if;
END LOOP;

--loop za bolovanje
FOR D_SL_L_BOL in D_SL_BOL LOOP
stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');

if dl5_root_node_created = FALSE then


dl5_root_elmt := xmldom.createElement(doc, 'DL5');
dl5_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl5_root_elmt));
dl5_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl5_root_node,
xmldom.makeNode(stavka_root_elmt));

--<IME_PREZIME>
dl_elmt := xmldom.createElement(doc, 'IME_PREZIME');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L_BOL.IME || ' ' ||
D_SL_L_BOL.PREZIME);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<JMBG>
dl_elmt := xmldom.createElement(doc, 'JMBG');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L_BOL.JMBG);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<SIFRA_OPSTINE>
dl_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<RADNI_SATI>
dl_elmt := xmldom.createElement(doc, 'RADNI_SATI');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L_BOL.RADNI_SATI);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<NETO_BOLOVANJE>
dl_elmt := xmldom.createElement(doc, 'NETO_BOLOVANJE');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));

select sum(NETO) into V_NETO_ISPLATA from XX_OBRAZAC1002_MAIN_TT where JMBG


= D_SL_L_BOL.JMBG;

if V_NETO_ISPLATA > D_SL_L_BOL.IZNOS_NAKNADE_BOL then


dl_text := xmldom.createTextNode(doc, D_SL_L_BOL.IZNOS_NAKNADE_BOL);
else
dl_text := xmldom.createTextNode(doc, V_NETO_ISPLATA);
end if;

dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<NETO_RAZLIKA_BOL>
dl_elmt := xmldom.createElement(doc, 'NETO_RAZLIKA_BOL');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L_BOL.RAZLIKA_PLATE);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
END LOOP;

--loop za beneficirani
FOR D_SL_L_BEN in D_SL_BEN LOOP
stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');

if dl1b_root_node_created = FALSE then


dl1b_root_elmt := xmldom.createElement(doc, 'DL1B');
dl1b_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl1b_root_elmt));
dl1b_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl1b_root_node,
xmldom.makeNode(stavka_root_elmt));

--<IME_PREZIME>
dl_elmt := xmldom.createElement(doc, 'IME_PREZIME');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L_BEN.IME || ' ' ||
D_SL_L_BEN.PREZIME);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<JMBG>
dl_elmt := xmldom.createElement(doc, 'JMBG');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L_BEN.JMBG);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<SIFRA_OPSTINE>
dl_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<RADNI_SATI>
dl_elmt := xmldom.createElement(doc, 'RADNI_SATI');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L_BEN.RADNI_SATI);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<SIFRA_RADNOG_MJESTA>
dl_elmt := xmldom.createElement(doc, 'SIFRA_RADNOG_MJESTA');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L_BEN.SIFRA_MJESTA);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<KOEF_UVECANJA>
dl_elmt := xmldom.createElement(doc, 'KOEF_UVECANJA');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L_BEN.KOEF_UVECANJA);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<BRUTO>
dl_elmt := xmldom.createElement(doc, 'BRUTO');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L_BEN.BRUTO));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_PIO>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_PIO');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L_BEN.PIO_BEN));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
END LOOP;

--loop za volontere
FOR D_SL_L_VOL in D_SL_VOL LOOP
stavka_root_elmt := xmldom.createElement(doc, 'STAVKA');

if dl6_root_node_created = FALSE then


dl6_root_elmt := xmldom.createElement(doc, 'DL6');
dl6_root_node := xmldom.appendChild(root_node,
xmldom.makeNode(dl6_root_elmt));
dl6_root_node_created := TRUE;
end if;
stavka_root_node := xmldom.appendChild(dl6_root_node,
xmldom.makeNode(stavka_root_elmt));

--<IME_PREZIME>
dl_elmt := xmldom.createElement(doc, 'IME_PREZIME');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L_VOL.IME || ' ' ||
D_SL_L_VOL.PREZIME);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<JMBG>
dl_elmt := xmldom.createElement(doc, 'JMBG');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L_VOL.JMBG);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<SIFRA_OPSTINE>
dl_elmt := xmldom.createElement(doc, 'SIFRA_OPSTINE');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, SIFRA_OPSTINE_3);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<RADNI_SATI>
dl_elmt := xmldom.createElement(doc, 'RADNI_SATI');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, D_SL_L_VOL.RADNI_SATI);
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<OSNOVICA_ZA_VI6>
dl_elmt := xmldom.createElement(doc, 'OSNOVICA_ZA_VI6');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc,
format_number_1002(D_SL_L_VOL.BRUTO));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_PIO>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_PIO');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(D_SL_L_VOL.PIO));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_ZO>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_ZO');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(D_SL_L_VOL.ZO));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_DZ>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_DZ');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<DOPRINOS_ZN>
dl_elmt := xmldom.createElement(doc, 'DOPRINOS_ZN');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(0));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<UKUPNI_DOPRINOSI>
dl_elmt := xmldom.createElement(doc, 'UKUPNI_DOPRINOSI');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, format_number_1002(D_SL_L_VOL.PIO +
D_SL_L_VOL.ZO));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));

--<TIP_POSEBNE_ISPLATE>
dl_elmt := xmldom.createElement(doc, 'TIP_POSEBNE_ISPLATE');
dl_node := xmldom.appendChild(stavka_root_node, xmldom.makeNode(dl_elmt));
dl_text := xmldom.createTextNode(doc, to_char('16'));
dl_node := xmldom.appendChild(dl_node, xmldom.makeNode(dl_text));
END LOOP;

if v_temp_var > 0 then


v_req_status := FND_CONCURRENT.SET_COMPLETION_STATUS('WARNING', '');
end if;
ELSE
retcode:=1;
fnd_file.put_line(FND_FILE.LOG, 'KREIRANJE ZBIRNE PRIJAVE POREZA I DOPRINOSA
TRENUTNO NIJE MOGUCE');
END IF;

doc_final := xmldom.newDOMDocument;

main_node_final := xmldom.makeNode(doc_final);

root_elmt_final := xmldom.createElement(doc_final, 'PRIJAVA_1002');


root_node_final := xmldom.appendChild(main_node_final,
xmldom.makeNode(root_elmt_final));

nl := xmldom.getElementsByTagName(doc, 'ZAGLAVLJE');
n := DBMS_XMLDOM.clonenode(xmldom.item(nl, 0), true);
n := DBMS_XMLDOM.importnode(doc_final, n, true);
n := DBMS_XMLDOM.appendChild(root_node_final, n);

nl := xmldom.getElementsByTagName(doc, 'OBAVEZA');
len := xmldom.getLength(nl);

if len > 0 then


n := DBMS_XMLDOM.clonenode(xmldom.item(nl, 0), true);
n := DBMS_XMLDOM.importnode(doc_final, n, true);
n := DBMS_XMLDOM.appendChild(root_node_final, n);
end if;

nl := xmldom.getElementsByTagName(doc, 'DL1');
len := xmldom.getLength(nl);

if len > 0 then


n := DBMS_XMLDOM.clonenode(xmldom.item(nl, 0), true);
n := DBMS_XMLDOM.importnode(doc_final, n, true);
n := DBMS_XMLDOM.appendChild(root_node_final, n);
end if;

nl := xmldom.getElementsByTagName(doc, 'DL1B');
len := xmldom.getLength(nl);

if len > 0 then


n := DBMS_XMLDOM.clonenode(xmldom.item(nl, 0), true);
n := DBMS_XMLDOM.importnode(doc_final, n, true);
n := DBMS_XMLDOM.appendChild(root_node_final, n);
end if;

nl := xmldom.getElementsByTagName(doc, 'DL2');
len := xmldom.getLength(nl);

if len > 0 then


n := DBMS_XMLDOM.clonenode(xmldom.item(nl, 0), true);
n := DBMS_XMLDOM.importnode(doc_final, n, true);
n := DBMS_XMLDOM.appendChild(root_node_final, n);
end if;

nl := xmldom.getElementsByTagName(doc, 'DL3');
len := xmldom.getLength(nl);

if len > 0 then


n := DBMS_XMLDOM.clonenode(xmldom.item(nl, 0), true);
n := DBMS_XMLDOM.importnode(doc_final, n, true);
n := DBMS_XMLDOM.appendChild(root_node_final, n);
end if;

nl := xmldom.getElementsByTagName(doc, 'DL4');
len := xmldom.getLength(nl);

if len > 0 then


n := DBMS_XMLDOM.clonenode(xmldom.item(nl, 0), true);
n := DBMS_XMLDOM.importnode(doc_final, n, true);
n := DBMS_XMLDOM.appendChild(root_node_final, n);
end if;

nl := xmldom.getElementsByTagName(doc, 'DL5');
len := xmldom.getLength(nl);

if len > 0 then


n := DBMS_XMLDOM.clonenode(xmldom.item(nl, 0), true);
n := DBMS_XMLDOM.importnode(doc_final, n, true);
n := DBMS_XMLDOM.appendChild(root_node_final, n);
end if;

nl := xmldom.getElementsByTagName(doc, 'DL6');
len := xmldom.getLength(nl);

if len > 0 then


n := DBMS_XMLDOM.clonenode(xmldom.item(nl, 0), true);
n := DBMS_XMLDOM.importnode(doc_final, n, true);
n := DBMS_XMLDOM.appendChild(root_node_final, n);
end if;

dbms_lob.createtemporary(v_clob,true);
XMLDOM.WRITETOCLOB(doc_final, v_clob);
v_clob_len := length(v_clob);
v_clob_value := 0;

LOOP
v_clob_value := v_clob_value + 3000;
v_clob_char := NULL;
v_clob_char := dbms_lob.substr(v_clob, 3000, v_clob_value - 3000 + 1);
fnd_file.put(fnd_file.LOG, to_char(v_clob_char));
EXIT WHEN v_clob_value > v_clob_len;
END LOOP;

v_dir :='OBRAZAC_1002';
v_file_name := c_file_name(p_jib, PORESKI_P_OD, p_vrsta, '01');
xmldom.writeToFile(doc_final, v_dir || '/' || v_file_name || '.xml');
xmldom.freeDocument(doc);
xmldom.freeDocument(doc_final);

EXCEPTION
WHEN OTHERS THEN
fnd_file.put_line(fnd_file.LOG, 'GRESKA -> ' || SQLERRM);
xmldom.freeDocument(doc);
END create_1002_xml_fs;
END XX_CREATE_1002_XML_2022;

You might also like