 /*!40101 SET NAMES utf8 */;
DELIMITER $$

DROP PROCEDURE IF EXISTS `pl_zus_xml_import`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `pl_zus_xml_import`(
	IN _MODE VARCHAR(150),
	IN _XML LONGTEXT,
	IN _Param_A VARCHAR(255),
	IN _Param_B VARCHAR(255),
	IN _Param_C TEXT, 
	IN _Param_D VARCHAR(255)
    )
SPROC: BEGIN 
/*
procedura importujaca dane z plikow xml z zusu
na pocztaek import zwolnienia lekarskiego

CALL pl_zus_xml_import('ZUSZLA','','2026','5','','');
DELETE FROM absencje WHERE guid LIKE 'IM%';
select * FROM t_xml;
SELECT * FROM t_zuszla;

CALL pl_zus_xml_import('ZUSZLA','<?xml version="1.0" encoding="UTF-8"?>
<zaswiadczeniaLekarskieUbezpieczonychPlatnika>
  <dane>
    <ubezpieczony>ARTUR KITOWSKI 93092202739</ubezpieczony>
    <seriaINrZasw>ZM 1492830</seriaINrZasw>
    <dataWyst>2023-03-22</dataWyst>
    <od>2023-03-22</od>
    <do>2023-03-22</do>
    <identLekarza>3455860</identLekarza>
    <naOpieke>NIE</naOpieke>
    <pobytWSzpitalu>NIE</pobytWSzpitalu>
    <statusZasw>Wystawione</statusZasw>
  </dane>
  <dane>
    <ubezpieczony>ARTUR KITOWSKI 93092202739</ubezpieczony>
    <seriaINrZasw>ZM 1492836</seriaINrZasw>
    <dataWyst>2023-03-22</dataWyst>
    <od>2023-03-22</od>
    <do>2023-03-22</do>
    <identLekarza>3455860</identLekarza>
    <naOpieke>NIE</naOpieke>
    <pobytWSzpitalu>NIE</pobytWSzpitalu>
    <statusZasw>Wystawione</statusZasw>
  </dane>
</zaswiadczeniaLekarskieUbezpieczonychPlatnika>
','2023','3','','');
podobne do procedury ht_import_ihurt.sql, zeby zachowac zgodnosc obslugi w programie

*/
		DECLARE _S LONGTEXT;
		DECLARE _XMLnag LONGTEXT;
		DECLARE _XMLnag2 LONGTEXT;
		DECLARE _XMLpoz LONGTEXT;
		DECLARE _XMLpoz1 LONGTEXT;
		DECLARE _XMLpoz_s LONGTEXT;
		DECLARE _XMLpoz_z LONGTEXT;
		DECLARE _XMLpoz_p LONGTEXT;

		DECLARE _GUID, _guidpr VARCHAR(38);
		DECLARE _seria, _numer, _statusZasw, _seriaINrZasw VARCHAR(50); -- ostatnia zmienna dla poprzedniej wersji
		DECLARE _od, _do VARCHAR(10);
		DECLARE _rokmc VARCHAR(7);

		DECLARE _LP, _l1, _l2, _l3, _l4 INT(11);
		DECLARE _liczba_wierszy INT;
		DECLARE _wiersz TEXT;

		-- kursor definiowany juz tutaj, potem uzywany w procedurze,
		-- importujemy dane w zakresie podanego roku i miesiaca
		DECLARE done BOOL; --  default False;
		DECLARE c_guidy CURSOR FOR
						SELECT guid FROM t_zuszla WHERE guidpr IS NOT NULL AND LEFT(od,7) = CONCAT(_Param_A,'-', LPAD(_Param_B,2,'0'));
		DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

		SET SESSION group_concat_max_len = 1024*1024*1024;
		SET _rokmc = CONCAT(_Param_A,'-', LPAD(_Param_B,2,'0'));

-- wersja od poczatku roku 2026, dziala podobnie jak stara wersja, ale importuje dane z pliku csv, wiec nazwy pol i zmiennych sa teraz mylace, poprawka tabeli pl_zuszla poszla osobna sqlzmiana
IF (_MODE = 'ZUSZLA') THEN

	DROP TEMPORARY TABLE IF EXISTS t_xml;
	CREATE TEMPORARY TABLE t_xml (xmltext LONGTEXT);
	INSERT INTO t_xml VALUES(_XML);

	DROP TEMPORARY TABLE IF EXISTS t_zuszla;
	CREATE TEMPORARY TABLE t_zuszla (
		seria VARCHAR(50),
		numer VARCHAR(50),
		pesel VARCHAR(50),
		ubezpieczony VARCHAR(80),
		od VARCHAR(10), -- Data początku niezdolności
		do VARCHAR(10), -- Data końca niezdolności
		od_szpital VARCHAR(10), -- Data początku pobytu w szpitalu
		do_szpital VARCHAR(10), -- Data końca pobytu w szpitalu
		wskazanie VARCHAR(50), -- wskazanie lekarskie
		kod_choroby VARCHAR(10),
		nr_stat VARCHAR(10), -- numer statystyczny chorby
		kod_pokrew VARCHAR(10), -- Kod pokrewieństwa
		data_ur_opieka VARCHAR(10), -- Data urodzenia osoby pod opieką
		identLekarza VARCHAR(50),
		dataWyst VARCHAR(10),
		statusZasw VARCHAR(20),
		wiersz TEXT
		) DEFAULT CHARSET=utf8;

		-- Liczymy ile w ogóle mamy wierszy w pliku (liczba znaków \n + 1)
		SET _liczba_wierszy = (SELECT (LENGTH(xmltext) - LENGTH(REPLACE(xmltext, '\n', '')) + 1) FROM t_xml limit 1);
		-- pierwsza linia to naglowek, zaczynamy od drugiego wiersza
 	SET _LP = 2;


	WHILE _LP <= _liczba_wierszy DO
					-- Wyciagamy konkretny wiersz
					SET _wiersz = SUBSTRING_INDEX(SUBSTRING_INDEX(_XML, '\n', _LP), '\n', -1);
					SET _wiersz = REPLACE(_wiersz, '\r', ''); -- czyszczenie z koncowek windows

					-- Jeśli wiersz nie jest pusty (np. ostatnia pusta linia w pliku)
					IF LENGTH(TRIM(_wiersz)) > 0 THEN
									INSERT INTO t_zuszla -- (pesel, seria_numer, data_od, data_do)
									VALUES (
													TRIM(SUBSTRING_INDEX(_wiersz, ',', 1)),
													TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(_wiersz, ',', 2), ',', -1)),
													TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(_wiersz, ',', 3), ',', -1)),

													concat(TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(_wiersz, ',', 5), ',', -1)), ' ',TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(_wiersz, ',', 4), ',', -1))),

													TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(_wiersz, ',', 14), ',', -1)),
													TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(_wiersz, ',', 15), ',', -1)),

													TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(_wiersz, ',', 16), ',', -1)),
													TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(_wiersz, ',', 17), ',', -1)),
													TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(_wiersz, ',', 18), ',', -1)),

													TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(_wiersz, ',', 19), ',', -1)),
													TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(_wiersz, ',', 20), ',', -1)),

													TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(_wiersz, ',', 21), ',', -1)),
													TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(_wiersz, ',', 22), ',', -1)),

													TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(_wiersz, ',', 31), ',', -1)),

													TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(_wiersz, ',', 34), ',', -1)),
													TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(_wiersz, ',', 35), ',', -1)),
													_wiersz
									);
					END IF;

					SET _LP = _LP + 1;
	END WHILE;


	ALTER TABLE t_zuszla ADD COLUMN guidpr VARCHAR(38), ADD COLUMN FrekwGUID VARCHAR(38),
	ADD COLUMN guid VARCHAR(38), ADD COLUMN status_importu varchar(20);
	ALTER TABLE t_zuszla ADD INDEX guid(guid);

	UPDATE t_zuszla t, osoby o SET t.guidpr = o.guid WHERE t.pesel=o.nrpesel AND o.deleted=0;
	UPDATE t_zuszla t SET t.frekwguid = (SELECT guid FROM frekw WHERE rok=YEAR(od) AND miesiac=MONTH(od) AND pracGUID=t.guidpr AND deleted=0);
	UPDATE t_zuszla t SET guid = CONCAT('IM_',MD5(CONCAT(guidpr,seria,numer,od,do,statusZasw)));

	UPDATE t_zuszla SET status_importu = 'BRAK PRACOWNIKA' WHERE guidpr IS NULL;
	UPDATE t_zuszla SET status_importu = 'POZA ZAKRESEM' WHERE guidpr IS NOT NULL AND LEFT(od,7) <> _rokmc;


	-- sprawdzenie jaki status nadac zwolnieniu
	OPEN c_guidy;
        loop1: LOOP
            FETCH c_guidy INTO _GUID;
            IF done THEN
                LEAVE loop1;
            END IF;

            SET _l1 = 0; -- duplikat
            SET _l2 = 0; -- konflikt terminowy

            select od, do, guidpr, seria, numer, statusZasw into _od, _do, _guidpr, _seria, _numer, _statusZasw
            from t_zuszla where guid = _GUID;

            -- lapanie powtorek bez zmian
            select count(*) INTO _l1 from absencje where guid = _GUID; -- w guid zawarty jest pracownik, nr zwolnienia i daty

            -- gdy zwolienie nachodzi na inna absencje (obojetnie jaka, moze byc z systemu, moze byc importowana)
            IF _l1 = 0 THEN
                select count(*) INTO _l2 from absencje where guidpr = _guidpr
                    and ((absencjaod between _od and _do) OR (absencjado BETWEEN _od and _do));
            END IF;


            UPDATE t_zuszla SET status_importu =
                CASE WHEN _l1 > 0 THEN 'DUPLIKAT'
                     WHEN _l2 > 0 THEN 'KONFLIKT'
                     ELSE _statusZasw
                END
            WHERE guid = _GUID;


        END LOOP;
    CLOSE c_Guidy;

    INSERT INTO pl_zuszla
					SELECT
					0 as idn,
					ubezpieczony as ubezpieczony,
					concat(seria, ' ', numer),
					datawyst, od, do, identlekarza,
					IF(kod_pokrew <> '', 'TAK', 'NIE')as naOpieke,
					IF(od_szpital <> '', 'TAK', 'NIE') as pobytWSzpitalu,
					statusZasw,
					pesel,
					guidpr, frekwGUID,
					guid as absencjaGUID,
					status_importu,
					wiersz, NOW()
    FROM t_zuszla t;

 -- LEAVE SPROC;


	INSERT IGNORE INTO absencje (guid, guidpr, absencjaod, absencjado, rodzaj, poprzokres, miesiac, frekwguid, pelnaabsencjaod, pelnaabsencjado, nrzwolnienia, seriazwolnienia, yyyy_mm)
	SELECT
	guid,
	guidpr,
	t.od,
	-- IF(last_day(t.od) < t.do, last_day(t.od), t.do),
	t.do,
	CASE WHEN od_szpital <> '' THEN 4
	WHEN kod_pokrew <> '' THEN 5
	ELSE 1
	END AS rodzaj,
	0 AS poprzokres,
	MONTH(t.od),
	frekwGUID,
	t.od, t.do,
	numer,
	seria,
	CONCAT(YEAR(t.od),MONTH(t.od))
	FROM t_zuszla t WHERE status_importu IN ('Wystawione')
	;

	-- LEAVE SPROC;

    --  ta czesc porzadkuje zapisy pozycji frekwencji oraz wylacza info o pracy (kolumna pracowal w programie, ehhhh - pole deleted w hr_events)
    UPDATE frekw_po p, t_zuszla t, absencje a SET
        p.godziny = 0,
        p.absencja = CASE WHEN a.rodzaj = 5 THEN 'K'
                    WHEN a.rodzaj = 4 THEN 'L'
                    WHEN a.rodzaj = 1 THEN 'C'
                    END,
        p.rodzaj_abs = a.rodzaj,
        p.godz_absencji = p.kp_godziny,
        p.godz_wej = null,
        p.godz_wyj = null,
        p.duration_min = 0,
        p.all_day = 1,
        p.dni_absencji = 1,
        p.data_wej = '0000-00-00 00:00:00',
        p.data_wyj = '0000-00-00 00:00:00',
        p.alert = ''
    where t.FrekwGUID = p.FrekwGUID and a.guid = t.guid
    and t.status_importu = 'Wystawione'
    -- and dzien in (1,20)
    and p.rok_msc_dzien between t.od and t.do
    ;

				UPDATE frekw_po p, t_zuszla t, absencje a, hr_events h SET
        h.deleted = 1
    where t.FrekwGUID = p.FrekwGUID and a.guid = t.guid and p.guid = h.SrcGUID
    and t.status_importu = 'Wystawione'
    -- and dzien in (1,20)
    and p.rok_msc_dzien between t.od and t.do
    ;


    -- przeliczenie naglowka
    UPDATE frekw f, t_zuszla t SET
        f.PracowalDni = (select count(*) from frekw_po where frekwguid = f.guid and godziny <> 0),
        f.godz100prac = (select sum(godziny) from frekw_po where frekwguid = f.guid and godziny <> 0),
        f.C_godz = (select count(*)*8 from frekw_po where frekwguid = f.guid and absencja = 'C'),
        f.L_godz = (select count(*)*8 from frekw_po where frekwguid = f.guid and absencja = 'L'),
        f.K_godz = (select count(*)*8 from frekw_po where frekwguid = f.guid and absencja = 'K')
    where t.FrekwGUID = f.GUID and t.status_importu = 'Wystawione'
    ;

	-- wpis do logu
	INSERT INTO `log` (useridn, ip, miejsce, czynnosc, GUIDlink, table_link, info, osobaguid)
	SELECT @session.CurrLogin, @session.CurrMyIPOnly, 5077, 2, GUID, 'absencje', 'Import zwolnienia lekarskiego', -- kartoteka zleceń, Export
	(SELECT guid FROM osoby WHERE idnuser = @session.CurrLogin LIMIT 1)
	FROM t_zuszla WHERE status_importu IN ('Wystawione');


/*	tabela archiwizujaca importowane zlecenia

   DROP TABLE pl_zuszla;
   CREATE TABLE `pl_zuszla` (
  `idn` int(11) NOT NULL AUTO_INCREMENT,
  `ubezpieczony` varchar(100) DEFAULT NULL,
  `seriaINrZasw` varchar(100) DEFAULT NULL,
  `dataWyst` varchar(10) DEFAULT NULL,
  `oddnia` varchar(10) DEFAULT NULL,
  `dodnia` varchar(10) DEFAULT NULL,
  `identLekarza` varchar(100) DEFAULT NULL,
  `naOpieke` varchar(10) DEFAULT NULL,
  `pobytWSzpitalu` varchar(10) DEFAULT NULL,
  `statusZasw` varchar(20) DEFAULT NULL,
  `pesel` varchar(20) DEFAULT NULL,
  `GUIDpr` varchar(38) DEFAULT NULL,
  `FrekwGUID` varchar(38) DEFAULT NULL,
  `absencjaGUID` varchar(38) DEFAULT NULL, -- -- guid rekordu, potem guid absencji, ktora ewentualnie powstala z rekordu
  `status_importu` varchar(20) DEFAULT NULL,
  `plik_xml` MEDIUMTEXT,
  `local_time` timestamp,
  PRIMARY KEY (`idn`),
  KEY `oddnia` (`oddnia`),
  KEY `dodnia` (`dodnia`)
) DEFAULT CHARSET=utf8;

poprawki do sqlziany, u gory jest juz poprawna tabela
DELETE FROM pl_zuszla WHERE oddnia < '2026-01-01';

ALTER TABLE pl_zuszla
ADD COLUMN idn INT AUTO_INCREMENT PRIMARY KEY FIRST;

ALTER TABLE pl_zuszla MODIFY COLUMN local_time TIMESTAMP;
ALTER TABLE pl_zuszla MODIFY COLUMN plik_xml MEDIUMTEXT;

ALTER TABLE pl_zuszla ADD INDEX oddnia(oddnia), ADD INDEX dodnia(dodnia);

*/
END IF;	--	IF _MODE = ''




-- import zwlonien lekarskich, stara wersja, do roku 2025
IF (_MODE = 'ZUSZLA_OLD') THEN
	
	DROP TEMPORARY TABLE IF EXISTS t_xml2;
	CREATE TEMPORARY TABLE t_xml2 (xmltext LONGTEXT);
	INSERT INTO t_xml2 VALUES(_XML);
	
	DROP TEMPORARY TABLE IF EXISTS t_xml;
	CREATE TEMPORARY TABLE t_xml (xmltext LONGTEXT);
	INSERT INTO t_xml
	-- select From_base64(xmltext) FROM t_xml2;
	select xmltext FROM t_xml2;
	
	-- update t_xml set xmltext = From_base64(xmltext);
	
	UPDATE t_xml SET xmltext = REPLACE(xmltext, '<od>','<oddnia>');
	UPDATE t_xml SET xmltext = REPLACE(xmltext, '</od>','</oddnia>');
	UPDATE t_xml SET xmltext = REPLACE(xmltext, '<do>','<dodnia>');
	UPDATE t_xml SET xmltext = REPLACE(xmltext, '</do>','</dodnia>');
	
	
	DROP TEMPORARY TABLE IF EXISTS t_zuszla;
	CREATE TEMPORARY TABLE t_zuszla (
		ubezpieczony VARCHAR(50),
		seriaINrZasw VARCHAR(50),
		dataWyst VARCHAR(10),
		od VARCHAR(10),
		do VARCHAR(10),
		identLekarza VARCHAR(50),
		naOpieke VARCHAR(10),
		pobytWSzpitalu VARCHAR(10),
		statusZasw VARCHAR(20)
		) DEFAULT CHARSET=utf8;
	
	SELECT ifnull(ExtractValue(xmltext,'count(//dane)'),0) INTO @ilepoz FROM t_xml;
	SET @xp ='zaswiadczeniaLekarskieUbezpieczonychPlatnika/dane';
	SET _LP =1;
	-- SELECT @ilepoz as ile_pozycji;
	
	REPEAT
		INSERT INTO t_zuszla
		SELECT 
		ExtractValue(xmltext,concat(@xp,'[',_LP,']/ubezpieczony')) as ubezpieczony,
		ExtractValue(xmltext,concat(@xp,'[',_LP,']/seriaINrZasw')) as seriaINrZasw,
		ExtractValue(xmltext,concat(@xp,'[',_LP,']/dataWyst')),
		ExtractValue(xmltext,concat(@xp,'[',_LP,']/oddnia')),
		ExtractValue(xmltext,concat(@xp,'[',_LP,']/dodnia')),
		ExtractValue(xmltext,concat(@xp,'[',_LP,']/identLekarza')),
		ExtractValue(xmltext,concat(@xp,'[',_LP,']/naOpieke')),
		ExtractValue(xmltext,concat(@xp,'[',_LP,']/pobytWSzpitalu')),
		ExtractValue(xmltext,concat(@xp,'[',_LP,']/statusZasw')) as statusZasw
		FROM t_xml;
		
		SET _LP = _LP+1;
	
	UNTIL _LP > @ilepoz 
	END REPEAT;
	
	ALTER TABLE t_zuszla ADD COLUMN pesel VARCHAR(20), ADD COLUMN guidpr VARCHAR(38), ADD COLUMN FrekwGUID VARCHAR(38),
	ADD COLUMN guid VARCHAR(38), ADD COLUMN status_importu varchar(20);
    ALTER TABLE t_zuszla ADD INDEX guid(guid);

	UPDATE t_zuszla SET pesel = SUBSTRING_INDEX(ubezpieczony,' ',-1);
	UPDATE t_zuszla t, osoby o SET t.guidpr = o.guid WHERE t.pesel=o.nrpesel AND o.deleted=0;
	UPDATE t_zuszla t SET t.frekwguid = (SELECT guid FROM frekw WHERE rok=YEAR(od) AND miesiac=MONTH(od) AND pracGUID=t.guidpr AND deleted=0);
	UPDATE t_zuszla t SET guid = CONCAT('IM_',MD5(CONCAT(guidpr,seriainrzasw,od,do,statusZasw)));

	UPDATE t_zuszla SET status_importu = 'BRAK PRACOWNIKA' WHERE guidpr IS NULL;
	UPDATE t_zuszla SET status_importu = 'POZA ZAKRESEM' WHERE guidpr IS NOT NULL AND LEFT(od,7) <> _rokmc;


	-- TODO dodac do archiwum nazwe pliku xml?

	-- sprawdzenie jaki status nadac zwolnieniu
	OPEN c_guidy;
        loop1: LOOP
            FETCH c_guidy INTO _GUID;
            IF done THEN
                LEAVE loop1;
            END IF;

            SET _l1 = 0; -- duplikat
            SET _l2 = 0; -- konflikt terminowy

            select od, do, guidpr, seriaINrZasw, statusZasw into _od, _do, _guidpr, _seriaINrZasw, _statusZasw
            from t_zuszla where guid = _GUID;

            -- lapanie powtorek bez zmian
            select count(*) INTO _l1 from absencje where guid = _GUID; -- w guid zawarty jest pracownik, nr zwolnienia i daty

            -- gdy zwolienie nachodzi na inna absencje (obojetnie jaka, moze byc z systemu, moze byc importowana)
            IF _l1 = 0 THEN
                select count(*) INTO _l2 from absencje where guidpr = _guidpr
                    and ((absencjaod between _od and _do) OR (absencjado BETWEEN _od and _do));
            END IF;


            UPDATE t_zuszla SET status_importu =
                CASE WHEN _l1 > 0 THEN 'DUPLIKAT'
                     WHEN _l2 > 0 THEN 'KONFLIKT'
                     ELSE _statusZasw
                END
            WHERE guid = _GUID;


        END LOOP;
    CLOSE c_Guidy;


    INSERT INTO pl_zuszla
        SELECT t.*, _XML, CURRENT_TIMESTAMP()
    FROM t_zuszla t;


	INSERT IGNORE INTO absencje (guid, guidpr, absencjaod, absencjado, rodzaj, poprzokres, miesiac, frekwguid, pelnaabsencjaod, pelnaabsencjado, nrzwolnienia, seriazwolnienia, yyyy_mm)
	SELECT 
	guid,
	guidpr,
	t.od,
	-- IF(last_day(t.od) < t.do, last_day(t.od), t.do),
	t.do,
	CASE WHEN pobytwszpitalu='TAK' THEN 4
	WHEN naopieke='TAK' THEN 5
	ELSE 1
	END AS rodzaj,
	0 AS poprzokres,
	MONTH(t.od),
	frekwGUID,
	t.od, t.do,
	SUBSTRING_INDEX(seriainrzasw, ' ',-1),
	SUBSTRING_INDEX(seriainrzasw, ' ',1),
	CONCAT(YEAR(t.od),MONTH(t.od))
	FROM t_zuszla t WHERE status_importu IN ('Wystawione')
	;

    --  ta czesc porzadkuje zapisy pozycji frekwencji oraz wylacza info o pracy (kolumna pracowal w programie, ehhhh - pole deleted w hr_events)
    UPDATE frekw_po p, t_zuszla t, absencje a SET
        p.godziny = 0,
        p.absencja = CASE WHEN a.rodzaj = 5 THEN 'K'
                    WHEN a.rodzaj = 4 THEN 'L'
                    WHEN a.rodzaj = 1 THEN 'C'
                    END,
        p.rodzaj_abs = a.rodzaj,
        p.godz_absencji = p.kp_godziny,
        p.godz_wej = null,
        p.godz_wyj = null,
        p.duration_min = 0,
        p.all_day = 1,
        p.dni_absencji = 1,
        p.data_wej = '0000-00-00 00:00:00',
        p.data_wyj = '0000-00-00 00:00:00',
        p.alert = ''
    where t.FrekwGUID = p.FrekwGUID and a.guid = t.guid
    and t.status_importu = 'Wystawione'
    -- and dzien in (1,20)
    and p.rok_msc_dzien between t.od and t.do
    ;

     UPDATE frekw_po p, t_zuszla t, absencje a, hr_events h SET
        h.deleted = 1
    where t.FrekwGUID = p.FrekwGUID and a.guid = t.guid and p.guid = h.SrcGUID
    and t.status_importu = 'Wystawione'
    -- and dzien in (1,20)
    and p.rok_msc_dzien between t.od and t.do
    ;


    -- przeliczenie naglowka
    UPDATE frekw f, t_zuszla t SET
        f.PracowalDni = (select count(*) from frekw_po where frekwguid = f.guid and godziny <> 0),
        f.godz100prac = (select sum(godziny) from frekw_po where frekwguid = f.guid and godziny <> 0),
        f.C_godz = (select count(*)*8 from frekw_po where frekwguid = f.guid and absencja = 'C'),
        f.L_godz = (select count(*)*8 from frekw_po where frekwguid = f.guid and absencja = 'L'),
        f.K_godz = (select count(*)*8 from frekw_po where frekwguid = f.guid and absencja = 'K')
    where t.FrekwGUID = f.GUID and t.status_importu = 'Wystawione'
    ;

	-- wpis do logu
	INSERT INTO `log` (useridn, ip, miejsce, czynnosc, GUIDlink, table_link, info, osobaguid) 
	SELECT @session.CurrLogin, @session.CurrMyIPOnly, 5077, 2, GUID, 'absencje', 'Import zwolnienia lekarskiego', -- kartoteka zleceń, Export
	(SELECT guid FROM osoby WHERE idnuser = @session.CurrLogin LIMIT 1)
	FROM t_zuszla WHERE status_importu IN ('Wystawione');


END IF;	--	IF _MODE = 'ZUSZLA_OLD'
/*
raport z importu zwolonien lekarskich
call pl_zus_xml_import('ZUSZLA_RAPORT','','2022-08-01','2022-08-31','','status_importu');
*/
IF (_MODE = 'ZUSZLA_RAPORT') THEN

    SELECT * FROM pl_zuszla;


END IF; -- _MODE = 'ZUSZLA_RAPORT'


END$$

DELIMITER ;
