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

DROP PROCEDURE IF EXISTS `fr_pass`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `fr_pass`(
	IN _MODE VARCHAR(38),
	IN _GUID VARCHAR(38),
	IN _Scenario VARCHAR(50),
	IN _WHERE_SQL TEXT, 
	IN _Param_A VARCHAR(50),
	IN _Param_B VARCHAR(50),
	IN _Param_C VARCHAR(50),
	IN _Param_D VARCHAR(50)
)
-- wydruki z modulu przepustkownia, 
-- takze duze zestawienie plac/faktur/zus

SPROC: BEGIN 
	DECLARE _S TEXT DEFAULT '';
	DECLARE _WHERE TEXT DEFAULT '';
	DECLARE _rok, _mc INT;
	DECLARE _od, _do date;
	DECLARE _baza VARCHAR(50);
	
	SET _WHERE_SQL = IFNULL(_WHERE_SQL, '');
	
/********************************************************************************
	Zestawienia generalnie dla crist, w tym dla czaspracy
	PASS_OBIEGOWKA
	(wydruk danych )
	call fr_pass('PASS_OBIEGOWKA',id karty,'','','','','','');
********************************************************************************/
	IF _MODE = 'PASS_OBIEGOWKA' THEN
          SELECT 
			'CRIST' AS firma,
			CURRENT_TIMESTAMP AS DataWydruku,
			c.ID, 
			DATE(c.datefrom) AS datefrom,
			DATE(c.dateto) AS dateto,
			o.nazwisko, o.imiona, o.nrpesel, o.nrnip, 
			IF(c.info<>'',CONCAT('Nr rej: ',c.info),'') AS nr_rej,
			IF(c.OsobaZapraszajacaGuid<>'',CONCAT('Zaprasza: ',o2.imiona,' ',o2.nazwisko),'') AS zaprasza,
			'Zatrudniony z ... (tekst do ustalenia)' as kontrah
          FROM hr_cards c 
          JOIN osoby o ON c.osobaGUID = o.GUID
          LEFT JOIN osoby o2 ON c.OsobaZapraszajacaGuid = o2.GUID
          WHERE c.ID = _GUID
          ;	

	END IF; 


/*
*******************************************************************************
	PASS_JEDNORAZOWA
	(wydruk przepustki jednorazowej)
	CALL fr_pass('PASS_JEDNORAZOWA','X','','','','','','');
*******************************************************************************
 */
	IF _MODE = 'PASS_JEDNORAZOWA' THEN
          SELECT 
			'CRIST' AS firma,
			CURRENT_TIMESTAMP AS DataWydruku,
			IF(c.kind='PASS','PRZEPUSTKA TYMCZASOWA','PRZEPUSTKA') AS rodzaj,
			c.ID, 
			DATE_FORMAT(c.datefrom,'%d-%m-%Y') AS datefrom,
			if(DATE(c.dateto)>'2100-01-01','bezterminowo',DATE_FORMAT(c.dateto,'%d-%m-%Y')) AS dateto,
			o.nazwisko, o.imiona, o.nrpesel, o.nrnip, 
			IF(c.info<>'',CONCAT('Nr rej: ',c.info),'') AS nr_rej,
			IF(c.OsobaZapraszajacaGuid<>'',CONCAT('Zaprasza: ',o2.imiona,' ',o2.nazwisko),'') AS zaprasza,
			'Zatrudniony z ... (tekst do ustalenia)' as kontrah
          FROM hr_cards c 
          JOIN osoby o ON c.osobaGUID = o.GUID
          LEFT JOIN osoby o2 ON c.OsobaZapraszajacaGuid = o2.GUID
          WHERE c.ID = _GUID
	  ;
	END IF;


/*
*******************************************************************************
	PASS_ZEST01
	(zestawienie 01, )
	CALL fr_pass('PASS_ZEST01','X','','','','','','');
*******************************************************************************
 */
	IF _MODE = 'PASS_ZEST01' THEN
          SELECT 
			'CRIST' AS firma,
			CURRENT_TIMESTAMP AS DataWydruku,
			IF(c.kind='PASS','PRZEPUSTKA TYMCZASOWA','PRZEPUSTKA') AS rodzaj,
			c.ID, 
			DATE_FORMAT(c.datefrom,'%d-%m-%Y') AS datefrom,
			DATE_FORMAT(c.dateto,'%d-%m-%Y') AS dateto,
			o.nazwisko, o.imiona, o.nrpesel, o.nrnip, 
			IF(c.info<>'',CONCAT('Nr rej: ',c.info),'') AS nr_rej,
			IF(c.OsobaZapraszajacaGuid<>'',CONCAT('Zaprasza: ',o2.imiona,' ',o2.nazwisko),'') AS zaprasza,
			'Zatrudniony z ... (tekst do ustalenia)' as kontrah,
			p.we, p.gate_we
		  FROM `erp_pass_we_wy` p
		  INNER JOIN hr_cards c ON p.id_pass=c.ID
		  INNER JOIN osoby o ON o.guid=c.osobaguid
		  LEFT JOIN osoby o2 ON c.OsobaZapraszajacaGuid = o2.GUID
		  WHERE p.wy='0000-00-00 00:00:00' 
		  AND DATEDIFF(CURRENT_TIMESTAMP,p.we)>0
		  ORDER BY o.nazwisko, o.imiona;

	END IF;

/*
*******************************************************************************
	PASS_ZEST02
	(zestawienie 02, )
	CALL fr_pass('PASS_ZEST02','X','','','','','','');
*******************************************************************************
 */
	IF _MODE = 'PASS_ZEST02' THEN
	  SELECT DISTINCT 
		'CRIST' AS firma,
		CURRENT_TIMESTAMP AS DataWydruku,
		IF(c.kind='PASS','PRZEPUSTKA TYMCZASOWA','PRZEPUSTKA') AS rodzaj,
		c.ID, 
		DATE_FORMAT(c.datefrom,'%d-%m-%Y') AS datefrom,
		DATE_FORMAT(c.dateto,'%d-%m-%Y') AS dateto,
		o.nazwisko, o.imiona, o.nrpesel, o.nrnip, 
		IF(c.info<>'',CONCAT('Nr rej: ',c.info),'') AS nr_rej,
		'Zatrudniony z ... (tekst do ustalenia)' as kontrah,
		DATE_FORMAT(_Param_A,'%d-%m-%Y') as oddnia,
		DATE_FORMAT(_Param_B,'%d-%m-%Y') as dodnia
		FROM osoby o
		INNER JOIN hr_cards c ON o.guid=c.osobaguid
		WHERE c.ID NOT IN (SELECT DISTINCT Id_pass FROM erp_pass_we_wy WHERE we >= _Param_A AND we <= _Param_B)
		ORDER BY o.nazwisko, o.imiona;

	END IF;

/*
*******************************************************************************
	PASS_ZEST03
	(zestawienie 03, )
	call fr_pass('PASS_ZEST03','Q123','PASS_ZEST03','','2012-07-01','2012-08-03','Prac1150','2')
*******************************************************************************
 */
	IF _MODE = 'PASS_ZEST03' THEN
	  SELECT DISTINCT 
		'CRIST' AS firma,
		CURRENT_TIMESTAMP AS DataWydruku,
		IF(c.kind='PASS','PRZEPUSTKA TYMCZASOWA','PRZEPUSTKA') AS rodzaj,
		c.ID, 
		DATE_FORMAT(c.datefrom,'%d-%m-%Y') AS datefrom,
		DATE_FORMAT(c.dateto,'%d-%m-%Y') AS dateto,
		o.nazwisko, o.imiona, o.nrpesel, o.nrnip, 
		IF(c.info<>'',CONCAT('Nr rej: ',c.info),'') AS nr_rej,
		'Zatrudniony z ... (tekst do ustalenia)' as kontrah,
		
		oc.opis, 
		IF(okc.ma_date1,IF((ISNULL(u.DataNadania) OR u.DataNadania='0000-00-00'),'brak', u.DataNadania), 'nie dotyczy') AS DataNadania, 
		IF(okc.ma_date2,IF((ISNULL(u.DataWaznosci) OR u.DataWaznosci='0000-00-00'),'brak',u.DataWaznosci), 'nie dotyczy') AS DataWaznosci,
		DATEDIFF(DataWaznosci, CURRENT_DATE) AS przeterminowanie
		FROM osoby o
		INNER JOIN hr_cards c ON o.guid=c.osobaguid
		INNER JOIN umiejetnosci u ON u.GUID_Pracownika=o.GUID
		INNER JOIN osoby_cechy oc ON u.IdnDetalu = oc.idn 
		INNER JOIN osoby_klasy_cech okc ON oc.klasa_cech = okc.idn
		WHERE (CASE WHEN _Param_D=0 THEN u.idndetalu=402 WHEN _Param_D=1 THEN u.idndetalu=301 WHEN _Param_D=2 THEN u.idndetalu=1000 END)
		HAVING przeterminowanie<30   
		ORDER BY o.nazwisko, o.imiona;

	END IF;



/*
*******************************************************************************
	PASS_ZEST04
	(zestawienie 04, )
	CALL fr_pass('PASS_ZEST04','X','','','','','','');
*******************************************************************************
 */
	IF _MODE = 'PASS_ZEST04' THEN
          SELECT 
			'CRIST' AS firma,
			CURRENT_TIMESTAMP AS DataWydruku,
			IF(c.kind='PASS','PRZEPUSTKA TYMCZASOWA','PRZEPUSTKA') AS rodzaj,
			c.ID, 
			DATE_FORMAT(c.datefrom,'%d-%m-%Y') AS datefrom,
			DATE_FORMAT(c.dateto,'%d-%m-%Y') AS dateto,
			o.nazwisko, o.imiona, o.nrpesel, o.nrnip, 
			IF(c.info<>'',CONCAT('Nr rej: ',c.info),'') AS nr_rej,
			IF(c.OsobaZapraszajacaGuid<>'',CONCAT('Zaprasza: ',o2.imiona,' ',o2.nazwisko),'') AS zaprasza,
			'Zatrudniony z ... (tekst do ustalenia)' as kontrah,
			p.we, p.gate_we
		  FROM `erp_pass_we_wy` p
		  INNER JOIN hr_cards c ON p.id_pass=c.ID
		  INNER JOIN osoby o ON o.guid=c.osobaguid
		  LEFT JOIN osoby o2 ON c.OsobaZapraszajacaGuid = o2.GUID
		  WHERE p.wy='0000-00-00 00:00:00' 
		  -- AND DATEDIFF(CURRENT_TIMESTAMP,p.we)>0;
		  ORDER BY o.nazwisko, o.imiona;

	END IF;

/*
*******************************************************************************
	PASS_ZEST05
	(zestawienie 05, )
	CALL fr_pass('PASS_ZEST05','X','','','','','','');
*******************************************************************************
 */
	IF _MODE = 'PASS_ZEST05' THEN
       SELECT 
		'CRIST' AS firma,
		CURRENT_TIMESTAMP AS DataWydruku,
		group_concat(c.ID) as ID, 
		o.nazwisko, o.imiona, o.nrpesel, o.nrnip, 
		'Zatrudniony z ... (tekst do ustalenia)' as kontrah,
		DATE_FORMAT(_Param_A,'%d-%m-%Y') as oddnia,
		DATE_FORMAT(_Param_B,'%d-%m-%Y') as dodnia,
			SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(p.wy,p.we)))) AS czas
		FROM `erp_pass_we_wy` p
		INNER JOIN hr_cards c ON p.id_pass=c.ID
		INNER JOIN osoby o ON o.guid=c.osobaguid
		WHERE p.we>= _Param_A AND p.wy<= _Param_B
		GROUP BY o.guid
		ORDER BY o.nazwisko, o.imiona;

	END IF;


/*
*******************************************************************************
	PASS_ZEST06
	(zestawienie 06, )
	CALL fr_pass('PASS_ZEST06','','PASS_ZEST06','','2012-07-02','2012-08-02','a','a');
*******************************************************************************
 */
	IF _MODE = 'PASS_ZEST06' THEN
	  SELECT DISTINCT 
		'CRIST' AS firma,
		CURRENT_TIMESTAMP AS DataWydruku,
		IF(c.kind='PASS','PRZEPUSTKA TYMCZASOWA','PRZEPUSTKA') AS rodzaj,
		c.ID, 
		DATE_FORMAT(c.datefrom,'%d-%m-%Y') AS datefrom,
		DATE_FORMAT(c.dateto,'%d-%m-%Y') AS dateto,
		o.nazwisko, o.imiona, o.nrpesel, o.nrnip, 
		IF(c.info<>'',CONCAT('Nr rej: ',c.info),'') AS nr_rej,
		'Zatrudniony z kadr' AS kontrah,
		DATE_FORMAT(_Param_A,'%d-%m-%Y') as oddnia,
		DATE_FORMAT(_Param_B,'%d-%m-%Y') as dodnia,
		(select GROUP_CONCAT(t.nazwa)
		  from oppo_instancje oi inner join towrng_instancje ti ON ti.GUID=oi.guid_instancji INNER JOIN TowrNg t ON t.GUID=ti.idntowr
		  WHERE oi.deleted=0 and oi.osobaguid=o.GUID) AS narzedzia
		FROM osoby o
		INNER JOIN hr_cards c ON o.guid=c.osobaguid
		WHERE c.ID NOT IN (SELECT DISTINCT Id_pass FROM erp_pass_we_wy WHERE we >= _Param_A AND we <= _Param_B)
		HAVING narzedzia IS NOT NULL		
		ORDER BY o.nazwisko, o.imiona;

	END IF;


/***********************************************************************************
	PASS_ZEST07 - zestawienie na razie w sqd, (filtry na rok, miesiac i rodzaj zatrudnienia)
	rodzaj zatrudnienia: 1-pracownicy, 2-zleceniobiorcy, 3-firmy

	CALL fr_pass('PASS_ZEST07','','','','2012','07','1','');
	CALL fr_pass('PASS_ZEST07','','','','2023','04','','');
*************************************************************************************/
IF _MODE = 'PASS_ZEST07' THEN

SET _Param_A = DATE(CONCAT(_Param_A, '-', _Param_B, '-', '01')); 
SET _Param_B = LAST_DAY(_Param_A); 

SET _rok = YEAR(_Param_A);
SET _mc = MONTH(_Param_A);

SET _WHERE = 
  CASE WHEN _Param_C='1' THEN 'WHERE t2.placa_ht is not null or t2.placa_ship is not null or t2.placa_off is not null or t2.placa_kadry is not null'
		 WHEN _Param_C='2' THEN 'WHERE t2.zlec_ht is not null or t2.zlec_ship is not null or t2.zlec_off is not null or t2.zlec_kadry is not null' 
		 WHEN _Param_C='3' THEN 'WHERE t2.fakt_ht is not null or t2.fakt_ship is not null or t2.fakt_off is not null or t2.fakt_kadry is not null' 
		 WHEN _Param_C='' THEN '' END;


CREATE TEMPORARY TABLE `t1_osoby` (
  `osobaGUID` varchar(38) NOT NULL DEFAULT '',
  nrpesel varchar(11),
  autoid varchar(50),
  `zatr1` int(1) NOT NULL,
  `zatr2` int(1) NOT NULL,
  `zatr3` int(1) NOT NULL,
  `zatr4` int(1) NOT NULL,
  `dzial_f1` varchar(150) DEFAULT NULL,
  `dzial_f2` varchar(150) DEFAULT NULL,
  `dzial_f3` varchar(150) DEFAULT NULL,
  `dzial_f4` varchar(150) DEFAULT NULL,
  `dzial_p1` varchar(100) DEFAULT NULL,
  `dzial_p2` varchar(100) DEFAULT NULL,
  `dzial_p3` varchar(100) DEFAULT NULL,
  `dzial_p4` varchar(100) DEFAULT NULL,
  `stanowisko_dzialalnosc` varchar(250) DEFAULT NULL,
  pz_p1 DOUBLE(16,4) DEFAULT NULL,
  pz_p2 DOUBLE(16,4) DEFAULT NULL,
  pz_p3 DOUBLE(16,4) DEFAULT NULL,
  pz_p4 DOUBLE(16,4) DEFAULT NULL,
  ppk_p1 varchar(3) DEFAULT '',
  ppk_p2 varchar(3) DEFAULT '',
  ppk_p3 varchar(3) DEFAULT '',
  ppk_p4 varchar(3) DEFAULT '',
  KEY `osobaGUID` (`osobaGUID`),
  KEY nrpesel (nrpesel)
) ENGINE=MyISAM DEFAULT CHARSET=cp1250;


INSERT INTO t1_osoby
(osobaGUID,nrpesel,autoid,zatr1,zatr2,zatr3,zatr4,dzial_f1,dzial_f2,dzial_f3,dzial_f4,dzial_p1,dzial_p2,dzial_p3,dzial_p4,stanowisko_dzialalnosc,pz_p1, pz_p2, pz_p3, pz_p4,ppk_p1, ppk_p2, ppk_p3, ppk_p4)
select distinct o.GUID as osobaGUID, if(o.nrpesel='',o.NrPaszportu, o.nrpesel) as nrpesel,
o.info2 AS autoid,
if(f1.guid is null,0,1) as zatr1,
if(f2.guid is null,0,1) as zatr2,
if(f3.guid is null,0,1) as zatr3,
if(f4.guid is null,0,1) as zatr4,
(select n1.extraA from ht.kontrah n1 inner join ht.hr_kontrah_links hr1 on hr1.kontrGUID = n1.GUID 
where hr1.osobaGUID = o.GUID and hr1.kontekst like '%(KTR)%' LIMIT 1) as dzial_f1,
(select n1.extraA from ht_ship.kontrah n1 inner join ht_ship.hr_kontrah_links hr1 on hr1.kontrGUID = n1.GUID 
where hr1.osobaGUID = o.GUID and hr1.kontekst like '%(KTR)%' LIMIT 1) as dzial_f2,
(select n1.extraA from offshore.kontrah n1 inner join offshore.hr_kontrah_links hr1 on hr1.kontrGUID = n1.GUID 
where hr1.osobaGUID = o.GUID and hr1.kontekst like '%(KTR)%' LIMIT 1) as dzial_f3,
(select n1.extraA from kadry.kontrah n1 inner join kadry.hr_kontrah_links hr1 on hr1.kontrGUID = n1.GUID 
where hr1.osobaGUID = o.GUID and hr1.kontekst like '%(KTR)%' LIMIT 1) as dzial_f4,
if(f1.guid is null,null,d1.opis) as dzial_p1,
if(f2.guid is null,null,d2.opis) as dzial_p2,
if(f3.guid is null,null,d3.opis) as dzial_p3,
if(f4.guid is null,null,d4.opis) as dzial_p4,
o.stanowisko as stanowisko_dzialalnosc,
/*
p1.PlacaZasadnicza as pz_p1,
p2.PlacaZasadnicza as pz_p2,
p3.PlacaZasadnicza as pz_p3,
p4.PlacaZasadnicza as pz_p4,
*/
(select PlacaZasadnicza from ht.historia_pracy WHERE GUIDpr = o.GUID
-- and zmiany like '%PlacaZasadnicza%'
AND OdDnia <= _Param_B ORDER BY OdDnia DESC LIMIT 1) as pz_p1,
(select PlacaZasadnicza from ht_ship.historia_pracy WHERE GUIDpr = o.GUID
-- and zmiany like '%PlacaZasadnicza%'
AND OdDnia <= _Param_B ORDER BY OdDnia DESC LIMIT 1) as pz_p2,
(select PlacaZasadnicza from offshore.historia_pracy WHERE GUIDpr = o.GUID
-- and zmiany like '%PlacaZasadnicza%'
AND OdDnia <= _Param_B ORDER BY OdDnia DESC LIMIT 1) as pz_p3,
(select PlacaZasadnicza from kadry.historia_pracy WHERE GUIDpr = o.GUID
-- and zmiany like '%PlacaZasadnicza%'
AND OdDnia <= _Param_B ORDER BY OdDnia DESC LIMIT 1) as pz_p4,


IFNULL((SELECT IF(pppk.aktywnyPPK=1, 'T', '') FROM ht.pracownicy_ppk pppk WHERE pppk.GUID_Pracownika = o.GUID AND pppk.deleted = 0 ORDER BY pppk.OdDnia DESC LIMIT 1), '') AS ppk_p1,
IFNULL((SELECT IF(pppk.aktywnyPPK=1, 'T', '') FROM ht_ship.pracownicy_ppk pppk WHERE pppk.GUID_Pracownika = o.GUID AND pppk.deleted = 0 ORDER BY pppk.OdDnia DESC LIMIT 1), '') AS ppk_p2,
IFNULL((SELECT IF(pppk.aktywnyPPK=1, 'T', '') FROM offshore.pracownicy_ppk pppk WHERE pppk.GUID_Pracownika = o.GUID AND pppk.deleted = 0 ORDER BY pppk.OdDnia DESC LIMIT 1), '') AS ppk_p3,
IFNULL((SELECT IF(pppk.aktywnyPPK=1, 'T', '') FROM kadry.pracownicy_ppk pppk WHERE pppk.GUID_Pracownika = o.GUID AND pppk.deleted = 0 ORDER BY pppk.OdDnia DESC LIMIT 1), '') AS ppk_p4

from osoby o 
left join ht.frekw f1 ON f1.PracGUID = o.guid and f1.rok = _rok and f1.miesiac = _mc
left join ht_ship.frekw f2 ON f2.PracGUID = o.guid and f2.rok = _rok and f2.miesiac = _mc
left join offshore.frekw f3 ON f3.PracGUID = o.guid and f3.rok = _rok and f3.miesiac = _mc
left join kadry.frekw f4 ON f4.PracGUID = o.guid and f4.rok = _rok and f4.miesiac = _mc
left join ht.Pracownicy p1 ON p1.guid = o.guid 
left join ht_ship.Pracownicy p2 ON p2.guid = o.guid 
left join offshore.Pracownicy p3 ON p3.guid = o.guid 
left join kadry.Pracownicy p4 ON p4.guid = o.guid 
left join ht.dzialy d1 ON d1.idn = p1.dzial
left join ht_ship.dzialy d2 ON d2.idn = p2.dzial
left join offshore.dzialy d3 ON d3.idn = p3.dzial
left join kadry.dzialy d4 ON d4.idn = p4.dzial

where o.GUID is not NULL and o.rodzaj=1 and o.deleted=0
;


-- SELECT osobaGUID, 
-- SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(p.wy,p.we)))) AS czas
-- FROM erp_pass_we_wy p WHERE p.we>= _Param_A AND p.wy<= _Param_B AND p.wy>p.we
-- group by osobaGUID;


-- zbieramy dane o wyroznikach list plac/zlecen
-- DROP TABLE IF EXISTS t_gratyf_wyrozniki_pvdelta;

-- pl_hr_wyrozniki

CREATE TEMPORARY TABLE t_gratyf_wyrozniki_ht
  (PracGUID VARCHAR(38), 
   kier_zlec VARCHAR(255),
   kier_place VARCHAR(200),
   PracaStr VARCHAR(255),
   INDEX `GUID` (`PracGUID`)   
  );
  
CREATE TEMPORARY TABLE t_gratyf_wyrozniki_ht_ship
  (PracGUID VARCHAR(38), 
   kier_zlec VARCHAR(255),
   kier_place VARCHAR(200),
   PracaStr VARCHAR(255),
   INDEX `GUID` (`PracGUID`)   
  );

CREATE TEMPORARY TABLE t_gratyf_wyrozniki_off
  (PracGUID VARCHAR(38), 
   kier_zlec VARCHAR(255),
   kier_place VARCHAR(200),
   PracaStr VARCHAR(255),
   INDEX `GUID` (`PracGUID`)   
  );

CREATE TEMPORARY TABLE t_gratyf_wyrozniki_kadry
  (PracGUID VARCHAR(38), 
   kier_zlec VARCHAR(255),
   kier_place VARCHAR(200),
   PracaStr VARCHAR(255),
   INDEX `GUID` (`PracGUID`)   
  );  

/*
CREATE TEMPORARY TABLE t_gratyf_wyrozniki_pvdelta
  (PracGUID VARCHAR(38),
   kier_zlec VARCHAR(255),
   kier_place VARCHAR(200),
   PracaStr VARCHAR(255),
   INDEX `GUID` (`PracGUID`)
  );
*/
  
INSERT INTO t_gratyf_wyrozniki_ht (kier_zlec, pracguid, kier_place)
SELECT  GROUP_CONCAT(DISTINCT w.wyroznik) AS kierownik, guid_pracownika, h.nazwa
FROM ht.place g 
JOIN ht.osoby o ON o.guid = o.guid
 LEFT JOIN ht.listy_plac t  ON g.nrlisty = t.idn
 LEFT JOIN ht.pl_wyrozn_list_plac w ON w.guid = t.GUID_wyrozn 
 LEFT JOIN ht.pl_hr_wyrozniki h ON h.idn = g.dozor
 WHERE g.rok = year(_Param_A) AND g.miesiac = month(_Param_A) -- and g.GUID_Pracownika = o.osobaGUID
 GROUP BY guid_pracownika;
 
INSERT INTO t_gratyf_wyrozniki_ht (kier_zlec, pracguid, PracaStr)
SELECT  GROUP_CONCAT(DISTINCT  w.wyroznik) AS kierownik, guid_pracownika, GROUP_CONCAT(DISTINCT  g.PracaStr) AS PracaStr
FROM ht.prace_zlecone g 
JOIN ht.osoby o ON o.guid = o.guid
 LEFT JOIN ht.listy_plac t  ON g.nrlisty = t.idn
 LEFT JOIN ht.pl_wyrozn_list_plac w ON w.guid = t.GUID_wyrozn 
 WHERE g.rok = year(_Param_A) AND g.miesiac = month(_Param_A) -- and g.GUID_Pracownika = o.osobaGUID
 GROUP BY guid_pracownika;  
 
 INSERT INTO t_gratyf_wyrozniki_ht_ship (kier_zlec, pracguid, kier_place)
SELECT  GROUP_CONCAT(DISTINCT w.wyroznik) AS kierownik, guid_pracownika, h.nazwa 
FROM ht_ship.place g 
JOIN ht_ship.osoby o ON o.guid = o.guid
 LEFT JOIN ht_ship.listy_plac t  ON g.nrlisty = t.idn
 LEFT JOIN ht_ship.pl_wyrozn_list_plac w ON w.guid = t.GUID_wyrozn 
 LEFT JOIN ht_ship.pl_hr_wyrozniki h ON h.idn = g.dozor
 WHERE g.rok = year(_Param_A) AND g.miesiac = month(_Param_A) -- and g.GUID_Pracownika = o.osobaGUID
 GROUP BY guid_pracownika;
 
INSERT INTO t_gratyf_wyrozniki_ht_ship (kier_zlec, pracguid, PracaStr)
SELECT  GROUP_CONCAT(DISTINCT  w.wyroznik) AS kierownik, guid_pracownika, GROUP_CONCAT(DISTINCT  g.PracaStr) AS PracaStr
FROM ht_ship.prace_zlecone g 
JOIN ht_ship.osoby o ON o.guid = o.guid
 LEFT JOIN ht_ship.listy_plac t  ON g.nrlisty = t.idn
 LEFT JOIN ht_ship.pl_wyrozn_list_plac w ON w.guid = t.GUID_wyrozn 
 WHERE g.rok = year(_Param_A) AND g.miesiac = month(_Param_A) -- and g.GUID_Pracownika = o.osobaGUID
 GROUP BY guid_pracownika;  
 
 
INSERT INTO t_gratyf_wyrozniki_off (kier_zlec, pracguid, kier_place)
SELECT  GROUP_CONCAT(DISTINCT w.wyroznik) AS kierownik, guid_pracownika, h.nazwa 
FROM offshore.place g 
JOIN offshore.osoby o ON o.guid = o.guid
 LEFT JOIN offshore.listy_plac t  ON g.nrlisty = t.idn
 LEFT JOIN offshore.pl_wyrozn_list_plac w ON w.guid = t.GUID_wyrozn 
 LEFT JOIN offshore.pl_hr_wyrozniki h ON h.idn = g.dozor
 WHERE g.rok = year(_Param_A) AND g.miesiac = month(_Param_A) -- and g.GUID_Pracownika = o.osobaGUID
 GROUP BY guid_pracownika;
 
INSERT INTO t_gratyf_wyrozniki_off (kier_zlec, pracguid, PracaStr)
SELECT  GROUP_CONCAT(DISTINCT  w.wyroznik) AS kierownik, guid_pracownika, GROUP_CONCAT(DISTINCT  g.PracaStr) AS PracaStr
FROM offshore.prace_zlecone g 
JOIN offshore.osoby o ON o.guid = o.guid
 LEFT JOIN offshore.listy_plac t  ON g.nrlisty = t.idn
 LEFT JOIN offshore.pl_wyrozn_list_plac w ON w.guid = t.GUID_wyrozn 
 WHERE g.rok = year(_Param_A) AND g.miesiac = month(_Param_A) -- and g.GUID_Pracownika = o.osobaGUID
 GROUP BY guid_pracownika;   
  
INSERT INTO t_gratyf_wyrozniki_kadry (kier_zlec, pracguid, kier_place)
SELECT  GROUP_CONCAT(DISTINCT w.wyroznik) AS kierownik, guid_pracownika, h.nazwa 
FROM kadry.place g 
JOIN kadry.osoby o ON o.guid = o.guid
 LEFT JOIN kadry.listy_plac t  ON g.nrlisty = t.idn
 LEFT JOIN kadry.pl_wyrozn_list_plac w ON w.guid = t.GUID_wyrozn 
 LEFT JOIN kadry.pl_hr_wyrozniki h ON h.idn = g.dozor
 WHERE g.rok = year(_Param_A) AND g.miesiac = month(_Param_A) -- and g.GUID_Pracownika = o.osobaGUID
 GROUP BY guid_pracownika;
 
INSERT INTO t_gratyf_wyrozniki_kadry (kier_zlec, pracguid, PracaStr)
SELECT  GROUP_CONCAT(DISTINCT  w.wyroznik) AS kierownik, guid_pracownika, GROUP_CONCAT(DISTINCT  g.PracaStr) AS PracaStr
FROM kadry.prace_zlecone g 
JOIN kadry.osoby o ON o.guid = o.guid
 LEFT JOIN kadry.listy_plac t  ON g.nrlisty = t.idn
 LEFT JOIN kadry.pl_wyrozn_list_plac w ON w.guid = t.GUID_wyrozn 
 WHERE g.rok = year(_Param_A) AND g.miesiac = month(_Param_A) -- and g.GUID_Pracownika = o.osobaGUID
 GROUP BY guid_pracownika;  

SET @PASS_ZEST07.ptr = 'AFTER INSERT t_gratyf_wyrozniki';
  
-- kolumna "placa" inicjalnie jest wypelniana suma kwot brutto z zapisow placowych,
-- nastepnie nadpisujemy jej wartosc suma lacznych kosztow pracodawcy
CREATE TEMPORARY TABLE t2_osoby
select
o.osobaGUID,
/*
(SELECT _VarStr(GROUP_CONCAT(io.uID)) AS NrPrzepustki
  FROM `opti_int`.`io_persons` io WHERE io.`OsobaGUID` = o.osobaGUID
GROUP BY o.osobaGUID)  AS IdUNIS,
*/
	'' AS IdUNIS,
	pz_p1 as pz_ht,pz_p2 AS pz_ship, pz_p3 as pz_off, pz_p4 as pz_kadry,
	ppk_p1 as ppk_ht, ppk_p2 as ppk_ship, ppk_p3 as ppk_off, ppk_p4 as ppk_kadry,

  (select sum(KwotaWolnaOdPodatku) from ht.place where rok= _rok and miesiac= _mc and GUID_Pracownika=o.osobaGUID and deleted=0) as kw_ht,
  (select sum(KwotaWolnaOdPodatku) from ht_ship.place where rok= _rok and miesiac= _mc and GUID_Pracownika=o.osobaGUID and deleted=0) as kw_ship,
  (select sum(KwotaWolnaOdPodatku) from offshore.place where rok= _rok and miesiac= _mc and GUID_Pracownika=o.osobaGUID and deleted=0) as kw_off,
  (select sum(KwotaWolnaOdPodatku) from kadry.place where rok= _rok and miesiac= _mc and GUID_Pracownika=o.osobaGUID and deleted=0) as kw_kadry,

  (select sum(KosztyUzyskania) from ht.place where rok= _rok and miesiac= _mc and GUID_Pracownika=o.osobaGUID and deleted=0) as koszt_ht,
  (select sum(KosztyUzyskania) from ht_ship.place where rok= _rok and miesiac= _mc and GUID_Pracownika=o.osobaGUID and deleted=0) as koszt_ship,
  (select sum(KosztyUzyskania) from offshore.place where rok= _rok and miesiac= _mc and GUID_Pracownika=o.osobaGUID and deleted=0) as koszt_off,
  (select sum(KosztyUzyskania) from kadry.place where rok= _rok and miesiac= _mc and GUID_Pracownika=o.osobaGUID and deleted=0) as koszt_kadry,

 (select sum(kwotabrutto) from ht.place where rok=year(_Param_A) and miesiac=month(_Param_A) and GUID_Pracownika=o.osobaGUID and deleted=0) 
	as placa_ht,
 (select sum(kwotabrutto) from ht_ship.place where rok=year(_Param_A) and miesiac=month(_Param_A) and GUID_Pracownika=o.osobaGUID and deleted=0) 
	as placa_ship,
 (select sum(kwotabrutto) from offshore.place where rok=year(_Param_A) and miesiac=month(_Param_A) and GUID_Pracownika=o.osobaGUID and deleted=0) 
	as placa_off,
 (SELECT SUM(kwotabrutto) FROM kadry.place WHERE rok=YEAR(_Param_A) AND miesiac=MONTH(_Param_A) AND GUID_Pracownika=o.osobaGUID and deleted=0) 
    AS placa_kadry,

	(select sum(kwotanetto) from ht.place where rok=year(_Param_A) and miesiac=month(_Param_A) and GUID_Pracownika=o.osobaGUID and deleted=0) 
	as placa_netto_ht,
 (select sum(kwotanetto) from ht_ship.place where rok=year(_Param_A) and miesiac=month(_Param_A) and GUID_Pracownika=o.osobaGUID and deleted=0) 
	as placa_netto_ship,
 (select sum(kwotanetto) from offshore.place where rok=year(_Param_A) and miesiac=month(_Param_A) and GUID_Pracownika=o.osobaGUID and deleted=0) 
	as placa_netto_off,
 (SELECT SUM(kwotanetto) FROM kadry.place WHERE rok=YEAR(_Param_A) AND miesiac=MONTH(_Param_A) AND GUID_Pracownika=o.osobaGUID and deleted=0) 
    AS placa_netto_kadry,


(select sum(ZaZlecenie + SklFemerytalnyZleceniod + SklFrentowyZleceniod + SklFwypadkowyZleceniod + SklFundPracy + SklFGSP + wynagr_prokurent + PPKskladkaPracod) from ht.prace_zlecone where rok = year(_Param_A) and miesiac = month(_Param_A) and GUID_Pracownika=o.osobaGUID and deleted=0)
as zlec_ht,
(select sum(ZaZlecenie + SklFemerytalnyZleceniod + SklFrentowyZleceniod + SklFwypadkowyZleceniod + SklFundPracy + SklFGSP + wynagr_prokurent + PPKskladkaPracod) from ht_ship.prace_zlecone where rok=year(_Param_A) and miesiac=month(_Param_A) and GUID_Pracownika=o.osobaGUID and deleted=0)
as zlec_ship,
(select sum(ZaZlecenie + SklFemerytalnyZleceniod + SklFrentowyZleceniod + SklFwypadkowyZleceniod + SklFundPracy + SklFGSP + wynagr_prokurent + PPKskladkaPracod) from offshore.prace_zlecone where rok=year(_Param_A) and miesiac=month(_Param_A) and GUID_Pracownika=o.osobaGUID and deleted=0)
as zlec_off,
(SELECT SUM(ZaZlecenie + SklFemerytalnyZleceniod + SklFrentowyZleceniod + SklFwypadkowyZleceniod + SklFundPracy + SklFGSP + wynagr_prokurent + PPKskladkaPracod) FROM kadry.prace_zlecone WHERE rok=YEAR(_Param_A) AND miesiac=MONTH(_Param_A) AND GUID_Pracownika=o.osobaGUID and deleted=0)
AS zlec_kadry,


(select sum(KwotaNetto) from ht.prace_zlecone where rok = year(_Param_A) and miesiac = month(_Param_A) and GUID_Pracownika=o.osobaGUID and deleted=0) 
as zlec_netto_ht,
(select sum(KwotaNetto) from ht_ship.prace_zlecone where rok= year(_Param_A) and miesiac= month(_Param_A) and GUID_Pracownika=o.osobaGUID and deleted=0) 
as zlec_netto_ship,
(select sum(KwotaNetto) from offshore.prace_zlecone where rok= year(_Param_A) and miesiac= month(_Param_A) and GUID_Pracownika=o.osobaGUID and deleted=0) 
as zlec_netto_off,
(SELECT SUM(KwotaNetto) FROM kadry.prace_zlecone WHERE rok= YEAR(_Param_A) AND miesiac= MONTH(_Param_A) AND GUID_Pracownika=o.osobaGUID and deleted=0) 
AS zlec_netto_kadry,


/*
(select S.stanowisko from ht.stanowiska S, ht.Pracownicy P where P.GUID = o.osobaGUID AND P.stanowisko = S.GUID LIMIT 1) AS stanowisko_ht,
(select S.stanowisko from ht_ship.stanowiska S, ht_ship.Pracownicy P where P.GUID = o.osobaGUID AND P.stanowisko = S.GUID LIMIT 1) AS stanowisko_ship,
(select S.stanowisko from offshore.stanowiska S, offshore.Pracownicy P where P.GUID = o.osobaGUID AND P.stanowisko = S.GUID LIMIT 1) AS stanowisko_off,
(select S.stanowisko from kadry.stanowiska S, kadry.Pracownicy P where P.GUID = o.osobaGUID AND P.stanowisko = S.GUID LIMIT 1) AS stanowisko_kadry,

(select KP.nazwa from ht.kategorie_pracownikow KP, ht.Pracownicy P where P.GUID = o.osobaGUID AND P.KategoriaPracownicza = KP.idn LIMIT 1) AS kategoria_ht,
(select KP.nazwa from ht_ship.kategorie_pracownikow KP, ht_ship.Pracownicy P where P.GUID = o.osobaGUID AND P.KategoriaPracownicza = KP.idn LIMIT 1) AS kategoria_ship,
(select KP.nazwa from offshore.kategorie_pracownikow KP, offshore.Pracownicy P where P.GUID = o.osobaGUID AND P.KategoriaPracownicza = KP.idn LIMIT 1) AS kategoria_off,
(select KP.nazwa from kadry.kategorie_pracownikow KP, kadry.Pracownicy P where P.GUID = o.osobaGUID AND P.KategoriaPracownicza = KP.idn LIMIT 1) AS kategoria_kadry,
*/

stanowisko_dzialalnosc,

(select S.stanowisko from ht.stanowiska S, ht.historia_pracy h where h.GUIDPr = o.osobaGUID AND h.stanowisko = S.GUID AND o.zatr1 = 1
  AND h.OdDnia<=_Param_B ORDER BY h.OdDnia DESC LIMIT 1) AS stanowisko_ht,
(select S.stanowisko from ht_ship.stanowiska S, ht_ship.historia_pracy h where h.GUIDPr = o.osobaGUID AND h.stanowisko = S.GUID AND o.zatr2 = 1
  AND h.OdDnia<=_Param_B ORDER BY h.OdDnia DESC LIMIT 1) AS stanowisko_ship,
(select S.stanowisko from offshore.stanowiska S, offshore.historia_pracy h where h.GUIDPr = o.osobaGUID AND h.stanowisko = S.GUID AND o.zatr3 = 1
  AND h.OdDnia<=_Param_B ORDER BY h.OdDnia DESC LIMIT 1) AS stanowisko_off,
(select S.stanowisko from kadry.stanowiska S, kadry.historia_pracy h where h.GUIDPr = o.osobaGUID AND h.stanowisko = S.GUID AND o.zatr4 = 1
  AND h.OdDnia<=_Param_B ORDER BY h.OdDnia DESC LIMIT 1) AS stanowisko_kadry,

(select KP.nazwa from ht.kategorie_pracownikow KP, ht.historia_pracy h where h.GUIDPr = o.osobaGUID AND h.KategoriaPracownicza = KP.idn AND o.zatr1 = 1
  AND h.OdDnia<=_Param_B ORDER BY h.OdDnia DESC LIMIT 1) AS kategoria_ht,
(select KP.nazwa from ht_ship.kategorie_pracownikow KP, ht_ship.historia_pracy h where h.GUIDPr = o.osobaGUID AND h.KategoriaPracownicza = KP.idn AND o.zatr2 = 1
  AND h.OdDnia<=_Param_B ORDER BY h.OdDnia DESC LIMIT 1) AS kategoria_ship,
(select KP.nazwa from offshore.kategorie_pracownikow KP, offshore.historia_pracy h where h.GUIDPr = o.osobaGUID AND h.KategoriaPracownicza = KP.idn AND o.zatr3 = 1
  AND h.OdDnia<=_Param_B ORDER BY h.OdDnia DESC LIMIT 1) AS kategoria_off,
(select KP.nazwa from kadry.kategorie_pracownikow KP, kadry.historia_pracy h where h.GUIDPr = o.osobaGUID AND h.KategoriaPracownicza = KP.idn AND o.zatr4 = 1
  AND h.OdDnia<=_Param_B ORDER BY h.OdDnia DESC LIMIT 1) AS kategoria_kadry,


-- dzialy z faktur (umowy z podwykonawcami) i plac (razem zlecenia i zatrudnienie)
-- o.dzial_f1, dzial_f2, o.dzial_f3, o.dzial_f4, 
-- o.dzial_p1, dzial_p2, o.dzial_p3, o.dzial_p4,
 REPEAT(' ',60) as dzial_z_faktur,
 REPEAT(' ',60) as dzial_z_plac,
-- _varSTR(CONCAT_WS(',',o.dzial_f1, dzial_f2, o.dzial_f3, o.dzial_f4)) as dzial_z_faktur,
-- _varSTR(CONCAT_WS(',',o.dzial_p1, dzial_p2, o.dzial_p3, o.dzial_p4)) as dzial_z_plac,

-- sekcja kierownikow zlecen
(SELECT   _varSTR(GROUP_CONCAT(IFNULL(kier_zlec, ''))) AS kierownik 
	FROM t_gratyf_wyrozniki_ht
	WHERE pracguid = o.osobaGUID
	GROUP BY pracguid
) 
	AS kierownik_ht,
(SELECT   _varSTR(GROUP_CONCAT(IFNULL(kier_zlec, ''))) AS kierownik 
	FROM t_gratyf_wyrozniki_ht_ship
	WHERE pracguid = o.osobaGUID
	GROUP BY pracguid
) 
	AS kierownik_ship,
(SELECT   _varSTR(GROUP_CONCAT(IFNULL(kier_zlec, ''))) AS kierownik 
	FROM t_gratyf_wyrozniki_off
	WHERE pracguid = o.osobaGUID
	GROUP BY pracguid
) 
	AS kierownik_off,	
(SELECT   _varSTR(GROUP_CONCAT(IFNULL(kier_zlec, ''))) AS kierownik 
	FROM t_gratyf_wyrozniki_kadry
	WHERE pracguid = o.osobaGUID
	GROUP BY pracguid
) 
	AS kierownik_kadry,	
	
-- sekcja kierownikow plac	(GROUP_CONCAT raczej nie jest potzebny)
  SPACE(200) AS kier_place_ht,
  SPACE(200) AS kier_place_ship,
  SPACE(200) AS kier_place_off,
  SPACE(200) AS kier_place_kadry,


-- kwoty faktur	(rodzaj = 5 <- zakup towarow; rodzaj = 6 <- rachunki;  23, 24: zakup pozostaly     to nie -> 104 = zakup kancelaria)
(select sum(netto) from ht.opng n1 inner join ht.hr_kontrah_links hr1 on hr1.kontrGUID=n1.kontrGUID 
  where year(n1.datawystaw)=year(_Param_A) and month(n1.datawystaw)=month(_Param_A) and (n1.rodzaj IN (5, 6, 7, 8, 23, 24)) and hr1.osobaGUID=o.osobaGUID and  hr1.kontekst LIKE '%(KTR)%') as fakt_ht,
(select sum(netto) from ht_ship.opng n2 inner join ht_ship.hr_kontrah_links hr2 on hr2.kontrGUID=n2.kontrGUID 
  where year(n2.datawystaw)=year(_Param_A) and month(n2.datawystaw)=month(_Param_A) and (n2.rodzaj IN (5, 6, 7, 8, 23, 24)) and hr2.osobaGUID=o.osobaGUID and  hr2.kontekst LIKE '%(KTR)%') as fakt_ship,
(select sum(netto) from offshore.opng n3 inner join offshore.hr_kontrah_links hr3 on hr3.kontrGUID=n3.kontrGUID 
  where year(n3.datawystaw)=year(_Param_A) and month(n3.datawystaw)=month(_Param_A) and (n3.rodzaj IN (5, 6, 7, 8, 23, 24)) and hr3.osobaGUID=o.osobaGUID and  hr3.kontekst LIKE '%(KTR)%') as fakt_off,
(SELECT SUM(netto) FROM kadry.opng n4 INNER JOIN kadry.hr_kontrah_links hr4 ON hr4.kontrGUID=n4.kontrGUID 
  WHERE YEAR(n4.datawystaw)=YEAR(_Param_A) AND MONTH(n4.datawystaw)=MONTH(_Param_A) and (n4.rodzaj IN (5, 6, 7, 8, 23, 24)) AND hr4.osobaGUID=o.osobaGUID and  hr4.kontekst LIKE '%(KTR)%') AS fakt_kadry,

-- kwoty vat faktur	(rodzaj = 5 <- zakup towarow; rodzaj = 6 <- rachunki;  23, 24: zakup pozostaly     to nie -> 104 = zakup kancelaria)
(select sum(vat) from ht.opng n1 inner join ht.hr_kontrah_links hr1 on hr1.kontrGUID=n1.kontrGUID 
  where year(n1.datawystaw)=year(_Param_A) and month(n1.datawystaw)=month(_Param_A) and (n1.rodzaj IN (5, 6, 7, 8, 23, 24)) and hr1.osobaGUID=o.osobaGUID and  hr1.kontekst LIKE '%(KTR)%') as fakt_vat_ht,
(select sum(vat) from ht_ship.opng n2 inner join ht_ship.hr_kontrah_links hr2 on hr2.kontrGUID=n2.kontrGUID 
  where year(n2.datawystaw)=year(_Param_A) and month(n2.datawystaw)=month(_Param_A) and (n2.rodzaj IN (5, 6, 7, 8, 23, 24)) and hr2.osobaGUID=o.osobaGUID and  hr2.kontekst LIKE '%(KTR)%') as fakt_vat_ship,
(select sum(vat) from offshore.opng n3 inner join offshore.hr_kontrah_links hr3 on hr3.kontrGUID=n3.kontrGUID 
  where year(n3.datawystaw)=year(_Param_A) and month(n3.datawystaw)=month(_Param_A) and (n3.rodzaj IN (5, 6, 7, 8, 23, 24)) and hr3.osobaGUID=o.osobaGUID and  hr3.kontekst LIKE '%(KTR)%') as fakt_vat_off,
(SELECT SUM(vat) FROM kadry.opng n4 INNER JOIN kadry.hr_kontrah_links hr4 ON hr4.kontrGUID=n4.kontrGUID 
  WHERE YEAR(n4.datawystaw)=YEAR(_Param_A) AND MONTH(n4.datawystaw)=MONTH(_Param_A) and (n4.rodzaj IN (5, 6, 7, 8, 23, 24)) AND hr4.osobaGUID=o.osobaGUID and  hr4.kontekst LIKE '%(KTR)%') AS fakt_vat_kadry,

  
-- sekcja kierownikow faktur  
(select odp_za_zam from ht.kontrah n1 inner join ht.hr_kontrah_links hr1 on hr1.kontrGUID = n1.GUID 
  where hr1.osobaGUID = o.osobaGUID LIMIT 1) as kier_fakt_ht,  -- LIMIT 1 do czasu uporzadkowania tematu przez klienta
(select odp_za_zam from ht_ship.kontrah n2 inner join ht_ship.hr_kontrah_links hr2 on hr2.kontrGUID = n2.GUID 
  where hr2.osobaGUID = o.osobaGUID LIMIT 1) as kier_fakt_ship,
(select odp_za_zam from offshore.kontrah n3 inner join offshore.hr_kontrah_links hr3 on hr3.kontrGUID = n3.GUID 
  where hr3.osobaGUID = o.osobaGUID LIMIT 1) as kier_fakt_off,
(SELECT odp_za_zam FROM kadry.kontrah n4 INNER JOIN kadry.hr_kontrah_links hr4 ON hr4.kontrGUID = n4.GUID 
  WHERE hr4.osobaGUID = o.osobaGUID LIMIT 1) AS kier_fakt_kadry,
  
-- sekcja rodzaju dzialalnosci
 /* SPACE(255) AS rodz_dz_ht,
  SPACE(255) AS rodz_dz_ship,
  SPACE(255) AS rodz_dz_off,
  SPACE(255) AS rodz_dz_kadry,  */
  (select poz1.towrnazwa from ht.opng n1 join ht.oppo poz1 on poz1.idnoper = n1.guid 
          join ht.hr_kontrah_links hr1 on hr1.kontrGUID=n1.kontrGUID 
          where year(n1.datawystaw)=year(_Param_A) and month(n1.datawystaw)=month(_Param_A) 
		  and (n1.rodzaj IN (5, 6, 23, 24)) and hr1.osobaGUID=o.osobaGUID order by poz1.idn limit 1) as rodz_dz_ht,
  (select poz2.towrnazwa from ht_ship.opng n2  join ht_ship.oppo poz2 on poz2.idnoper = n2.guid 
         join ht_ship.hr_kontrah_links hr2 on hr2.kontrGUID=n2.kontrGUID 
         where year(n2.datawystaw)=year(_Param_A) and month(n2.datawystaw)=month(_Param_A) 
		 and (n2.rodzaj IN (5, 6, 23, 24)) and hr2.osobaGUID=o.osobaGUID order by poz2.idn limit 1) as rodz_dz_ship,
  (select poz3.towrnazwa from offshore.opng n3  join offshore.oppo poz3 on poz3.idnoper = n3.guid 
         join offshore.hr_kontrah_links hr3 on hr3.kontrGUID=n3.kontrGUID 
		 where year(n3.datawystaw)=year(_Param_A) and month(n3.datawystaw)=month(_Param_A) 
		 and (n3.rodzaj IN (5, 6, 23, 24)) and hr3.osobaGUID=o.osobaGUID order by poz3.idn limit 1) as rodz_dz_off,
  (SELECT poz4.towrnazwa FROM kadry.opng n4  join kadry.oppo poz4 on poz4.idnoper = n4.guid 
         JOIN kadry.hr_kontrah_links hr4 ON hr4.kontrGUID=n4.kontrGUID 
         WHERE YEAR(n4.datawystaw)=YEAR(_Param_A) AND MONTH(n4.datawystaw)=MONTH(_Param_A) 
		 and (n4.rodzaj IN (5, 6, 23, 24)) AND hr4.osobaGUID=o.osobaGUID order by poz4.idn limit 1) AS rodz_dz_kadry,
  
(select SUM(duration_min) from `ht`.`erp_pass_we_wy` ww
		  where ww.osobaGUID = o.osobaGUID and ww.we BETWEEN _Param_A and _Param_B  
		  group by ww.osobaGUID)/60 AS czas
  
from t1_osoby o
HAVING IFNULL(placa_ht,0)+IFNULL(placa_ship,0)+IFNULL(placa_off,0)+IFNULL(placa_kadry,0)
       +IFNULL(zlec_ht,0)+IFNULL(zlec_ship,0) +IFNULL(zlec_off,0) +IFNULL(zlec_kadry, 0)
       +IFNULL(fakt_ht,0)+IFNULL(fakt_ship,0) +IFNULL(fakt_off,0)
       +IFNULL(fakt_kadry,0) +IFNULL(zlec_netto_ht,0) +IFNULL(zlec_netto_ship,0)  +IFNULL(zlec_netto_off,0) +IFNULL(zlec_netto_kadry,0)
	   > 0 
;

ALTER TABLE t2_osoby ADD INDEX osobaGUID(osobaGUID);
ALTER TABLE t2_osoby
    ADD COLUMN opis_zlec_ht VARCHAR(255),
    ADD COLUMN opis_zlec_ship VARCHAR(255),
    ADD COLUMN opis_zlec_off VARCHAR(255),
    ADD COLUMN opis_zlec_kadry VARCHAR(255)
    ;


SET @PASS_ZEST07.ptr = 'AFTER CREATE t2_osoby';

-- porzadki w kierownikach faktur, ma byc tak, ze jak w danym miesiacu w danej firmie faktur nie ma, to kierownik tez powinien nie byc widoczny
update t2_osoby set kier_fakt_ht = '' where ifnull(fakt_ht,0) = 0;
update t2_osoby set kier_fakt_ship = '' where ifnull(fakt_ship,0) = 0;
update t2_osoby set kier_fakt_off = '' where ifnull(fakt_off,0) = 0;
update t2_osoby set kier_fakt_kadry = '' where ifnull(fakt_kadry,0) = 0;

-- jw dla dzialow z faktur, ma byc tak, ze jak w danym miesiacu w danej firmie faktur nie ma, to dzial tez powinien nie byc widoczny
update t2_osoby o2, t1_osoby o set o2.dzial_z_faktur = 
		_varSTR(CONCAT_WS(',',if(ifnull(o2.fakt_ht,0) = 0,null,o.dzial_f1), if(ifnull(o2.fakt_ship,0) = 0,null,o.dzial_f2), 
													if(ifnull(o2.fakt_off,0) = 0,null,o.dzial_f3), if(ifnull(o2.fakt_kadry,0) = 0,null,o.dzial_f4)
			)) where o2.osobaGUID = o.osobaGUID;

-- jw dla dzialow z plac, ma byc tak, ze jak w danym miesiacu w danej firmie plac+zlec nie ma, to dzial tez powinien nie byc widoczny
update t2_osoby o2, t1_osoby o set o2.dzial_z_plac = 
		_varSTR(CONCAT_WS(',',if(ifnull(o2.placa_ht,0)+ifnull(o2.zlec_ht,0) = 0,null,o.dzial_p1), 
													if(ifnull(o2.placa_ship,0)+ifnull(o2.zlec_ship,0) = 0,null,o.dzial_p2), 
													if(ifnull(o2.placa_off,0)+ifnull(o2.zlec_off,0) = 0,null,o.dzial_p3), 
													if(ifnull(o2.placa_kadry,0)+ifnull(o2.zlec_kadry,0) = 0,null,o.dzial_p4)
			)) where o2.osobaGUID = o.osobaGUID;


-- przepisujemy kier_place
UPDATE t2_osoby z, t_gratyf_wyrozniki_ht g
SET z.kier_place_ht = g.kier_place
WHERE z.osobaguid = g.PracGUID;

UPDATE t2_osoby z, t_gratyf_wyrozniki_off g
SET z.kier_place_off = g.kier_place
WHERE z.osobaguid = g.PracGUID;

UPDATE t2_osoby z, t_gratyf_wyrozniki_ht_ship g
SET z.kier_place_ship = g.kier_place
WHERE z.osobaguid = g.PracGUID;

UPDATE t2_osoby z, t_gratyf_wyrozniki_kadry g
SET z.kier_place_kadry = g.kier_place
WHERE z.osobaguid = g.PracGUID;


-- przepisujemy opisy prac zleconych
UPDATE t2_osoby z, t_gratyf_wyrozniki_ht g
SET z.opis_zlec_ht = g.PracaStr
WHERE z.osobaguid = g.PracGUID;

UPDATE t2_osoby z, t_gratyf_wyrozniki_off g
SET z.opis_zlec_off = g.PracaStr
WHERE z.osobaguid = g.PracGUID;

UPDATE t2_osoby z, t_gratyf_wyrozniki_ht_ship g
SET z.opis_zlec_ship = g.PracaStr
WHERE z.osobaguid = g.PracGUID;

UPDATE t2_osoby z, t_gratyf_wyrozniki_kadry g
SET z.opis_zlec_kadry = g.PracaStr
WHERE z.osobaguid = g.PracGUID;



SET @PASS_ZEST07.ptr = 'AFTER UPDATE kier_place';

-- 1. kwota plac z ht

-- pobranie kwot lacznych kosztow pracodawcy
create TEMPORARY TABLE t_ht_koszty_pracod
SELECT
  PL.guid_pracownika AS pracGUID,
-- z.osobaGUID, PL.GUID AS placaGUID,
 IF((SELECT IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM place_skladniki W LEFT JOIN 
definicja_skladnika_placy DSP1 ON W.GUID_definicja_skladnika_placy = DSP1.GUID 
WHERE W.RodzajSkladnika IN (2,5) AND DSP1.ZnaczenieSkladnika IN (7,
19) AND DSP1.deleted = 0 AND W.GUID_zapisu_placowego = PL.GUID ) <1,
 SUM(IF( DSP.GUID IN ('C_0', 'C_3', 'C_4', 'C_5' ,'C_1', 'C_2', 'C_6', 'C_7',
 'C_8', 'C_14') ,PS.kwota + PS.ZmniejszZwieksz,
 0)) + PL.ChoroboweFirma +
 (SELECT IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM place_skladniki W WHERE 
W.RodzajSkladnika IN (3) AND W.GUID_zapisu_placowego = PL.GUID ) + 
PL.SklFemerytalnyPracod + PL.SklFrentowyPracod + PL.SklFwypadkowyPracod + 
PL.ZusFunduszPracy + PL.ZusFunduszGwarancyjny + PL.SkladkaFEP + PL.PPKskladkaPracod
- (SELECT
IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM place_skladniki W LEFT JOIN 
definicja_skladnika_placy DSP1 ON W.GUID_definicja_skladnika_placy = DSP1.GUID 
AND DSP1.deleted = 0 WHERE W.RodzajSkladnika = 2 AND DSP1.ZnaczenieSkladnika = 
7 AND W.GUID_zapisu_placowego = PL.GUID ) ,
 (PL.DoWyplaty + PL.SklFemerytalnyPracod + PL.SklFrentowyPracod + 
PL.SklFwypadkowyPracod + PL.ZusFunduszPracy + PL.ZusFunduszGwarancyjny + PL.PPKskladkaPracod)) +
((SELECT IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM place_skladniki W WHERE 
W.RodzajSkladnika = 2 AND W.GUID_zapisu_placowego = PL.GUID ) + (SELECT 
IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM place_skladniki W WHERE 
W.RodzajSkladnika = 1 AND W.GUID_zapisu_placowego = PL.GUID )) 
AS 
KosztyPracodRazem
FROM
  ht.place PL  --  , t2_osoby z
  JOIN t2_osoby z ON PL.GUID_pracownika = z.osobaGUID 
-- JOIN osoby O ON PL.GUID_pracownika = O.GUID 
LEFT JOIN ht.place_skladniki PS ON PL.GUID = PS.GUID_zapisu_placowego 
LEFT JOIN ht.definicja_skladnika_placy DSP ON PS.GUID_definicja_skladnika_placy = DSP.GUID AND DSP.deleted = 0 
WHERE
  -- PL.guid_pracownika IN (select osobaGUID from t2_osoby) AND
  -- PL.guid_pracownika = z.osobaGUID AND 
  PL.rok = YEAR(_Param_A) AND (PL.miesiac = MONTH(_Param_A))  AND PL.deleted = 0  
GROUP BY
  PL.GUID; 
  
-- tworzymy tabele z sumami kosztow dla poszczegolnych pracownikow  

-- pobranie kwot lacznych kosztow pracodawcy
create TEMPORARY TABLE t_ht_koszty_pracod_grp
select pracGUID, SUM(KosztyPracodRazem) AS koszty_pracod
from t_ht_koszty_pracod
group by pracGUID;
  
-- wstawiamy kwote lacznych kosztow pracodawcy do odp. kolumny  :
UPDATE t2_osoby z, t_ht_koszty_pracod_grp g
SET z.placa_ht = g.koszty_pracod
WHERE z.osobaguid = g.pracguid;

-- 2. kwota plac z ht_ship

-- pobranie kwot lacznych kosztow pracodawcy
create TEMPORARY TABLE t_ht_ship_koszty_pracod
SELECT
  PL.guid_pracownika AS pracGUID,  
-- z.osobaGUID, PL.GUID AS placaGUID,
 IF((SELECT IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM ht_ship.place_skladniki W LEFT JOIN 
ht_ship.definicja_skladnika_placy DSP1 ON W.GUID_definicja_skladnika_placy = DSP1.GUID 
WHERE W.RodzajSkladnika IN (2,5) AND DSP1.ZnaczenieSkladnika IN(7,
19) AND DSP1.deleted = 0 AND W.GUID_zapisu_placowego = PL.GUID ) <1,
 SUM(IF( DSP.GUID IN ('C_0', 'C_3', 'C_4', 'C_5' ,'C_1', 'C_2', 'C_6', 'C_7',
 'C_8', 'C_14') ,PS.kwota + PS.ZmniejszZwieksz,
 0)) + PL.ChoroboweFirma + (SELECT IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM ht_ship.place_skladniki W WHERE 
W.RodzajSkladnika IN (3) AND W.GUID_zapisu_placowego = PL.GUID ) + 
PL.SklFemerytalnyPracod + PL.SklFrentowyPracod + PL.SklFwypadkowyPracod + 
PL.ZusFunduszPracy + PL.ZusFunduszGwarancyjny + PL.SkladkaFEP + PL.PPKskladkaPracod - (SELECT
IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM ht_ship.place_skladniki W LEFT JOIN 
ht_ship.definicja_skladnika_placy DSP1 ON W.GUID_definicja_skladnika_placy = DSP1.GUID 
AND DSP1.deleted = 0 WHERE W.RodzajSkladnika = 2 AND DSP1.ZnaczenieSkladnika = 
7 AND W.GUID_zapisu_placowego = PL.GUID ) ,
 (PL.DoWyplaty + PL.SklFemerytalnyPracod + PL.SklFrentowyPracod + 
PL.SklFwypadkowyPracod + PL.ZusFunduszPracy + PL.ZusFunduszGwarancyjny + PL.PPKskladkaPracod)) +
((SELECT IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM ht_ship.place_skladniki W WHERE 
W.RodzajSkladnika = 2 AND W.GUID_zapisu_placowego = PL.GUID ) + (SELECT 
IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM ht_ship.place_skladniki W WHERE 
W.RodzajSkladnika = 1 AND W.GUID_zapisu_placowego = PL.GUID )) 
AS 
KosztyPracodRazem
FROM
  ht_ship.place PL  --  , t2_osoby z
  JOIN t2_osoby z ON PL.GUID_pracownika = z.osobaGUID 
-- JOIN osoby O ON PL.GUID_pracownika = O.GUID 
LEFT JOIN ht_ship.place_skladniki PS ON PL.GUID = PS.GUID_zapisu_placowego 
LEFT JOIN ht_ship.definicja_skladnika_placy DSP ON PS.GUID_definicja_skladnika_placy = DSP.GUID AND DSP.deleted = 0 
WHERE
  -- PL.guid_pracownika IN (select osobaGUID from t2_osoby) AND
  -- PL.guid_pracownika = z.osobaGUID AND 
  PL.rok = YEAR(_Param_A) AND (PL.miesiac = MONTH(_Param_A))  AND PL.deleted = 0  
GROUP BY
  PL.GUID; 
  
-- tworzymy tabele z sumami kosztow dla poszczegolnych pracownikow  

-- pobranie kwot lacznych kosztow pracodawcy
create TEMPORARY TABLE t_ht_ship_koszty_pracod_grp
select pracGUID, SUM(KosztyPracodRazem) AS koszty_pracod
from t_ht_ship_koszty_pracod
group by pracGUID;
  
-- wstawiamy kwote lacznych kosztow pracodawcy do odp. kolumny  :
UPDATE t2_osoby z, t_ht_ship_koszty_pracod_grp g
SET z.placa_ship = g.koszty_pracod
WHERE z.osobaguid = g.pracguid;


-- 3. kwota plac z offshore

-- pobranie kwot lacznych kosztow pracodawcy
create TEMPORARY TABLE t_offshore_koszty_pracod
SELECT
  PL.guid_pracownika AS pracGUID,
-- z.osobaGUID, PL.GUID AS placaGUID,
 IF((SELECT IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM offshore.place_skladniki W LEFT JOIN 
offshore.definicja_skladnika_placy DSP1 ON W.GUID_definicja_skladnika_placy = DSP1.GUID 
WHERE W.RodzajSkladnika IN (2,5) AND DSP1.ZnaczenieSkladnika IN(7,
19) AND DSP1.deleted = 0 AND W.GUID_zapisu_placowego = PL.GUID ) <1,
 SUM(IF( DSP.GUID IN ('C_0', 'C_3', 'C_4', 'C_5' ,'C_1', 'C_2', 'C_6', 'C_7',
 'C_8', 'C_14') ,PS.kwota + PS.ZmniejszZwieksz,
 0)) + PL.ChoroboweFirma + (SELECT IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM offshore.place_skladniki W WHERE 
W.RodzajSkladnika IN (3) AND W.GUID_zapisu_placowego = PL.GUID ) + 
PL.SklFemerytalnyPracod + PL.SklFrentowyPracod + PL.SklFwypadkowyPracod + 
PL.ZusFunduszPracy + PL.ZusFunduszGwarancyjny + PL.SkladkaFEP + PL.PPKskladkaPracod - (SELECT
IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM offshore.place_skladniki W LEFT JOIN 
offshore.definicja_skladnika_placy DSP1 ON W.GUID_definicja_skladnika_placy = DSP1.GUID 
AND DSP1.deleted = 0 WHERE W.RodzajSkladnika = 2 AND DSP1.ZnaczenieSkladnika = 
7 AND W.GUID_zapisu_placowego = PL.GUID ) ,
 (PL.DoWyplaty + PL.SklFemerytalnyPracod + PL.SklFrentowyPracod + 
PL.SklFwypadkowyPracod + PL.ZusFunduszPracy + PL.ZusFunduszGwarancyjny + PL.PPKskladkaPracod)) +
((SELECT IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM offshore.place_skladniki W WHERE 
W.RodzajSkladnika = 2 AND W.GUID_zapisu_placowego = PL.GUID ) + (SELECT 
IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM offshore.place_skladniki W WHERE 
W.RodzajSkladnika = 1 AND W.GUID_zapisu_placowego = PL.GUID )) 
AS 
KosztyPracodRazem
FROM
  offshore.place PL  --  , t2_osoby z
  JOIN t2_osoby z ON PL.GUID_pracownika = z.osobaGUID 
-- JOIN osoby O ON PL.GUID_pracownika = O.GUID 
LEFT JOIN offshore.place_skladniki PS ON PL.GUID = PS.GUID_zapisu_placowego 
LEFT JOIN offshore.definicja_skladnika_placy DSP ON PS.GUID_definicja_skladnika_placy = DSP.GUID AND DSP.deleted = 0 
WHERE
  -- PL.guid_pracownika IN (select osobaGUID from t2_osoby) AND
  -- PL.guid_pracownika = z.osobaGUID AND 
  PL.rok = YEAR(_Param_A) AND (PL.miesiac = MONTH(_Param_A))  AND PL.deleted = 0  
GROUP BY
  PL.GUID; 
  
-- tworzymy tabele z sumami kosztow dla poszczegolnych pracownikow  

-- pobranie kwot lacznych kosztow pracodawcy
create TEMPORARY TABLE t_offshore_koszty_pracod_grp
select pracGUID, SUM(KosztyPracodRazem) AS koszty_pracod
from t_offshore_koszty_pracod
group by pracGUID;
  
-- wstawiamy kwote lacznych kosztow pracodawcy do odp. kolumny  :
UPDATE t2_osoby z, t_offshore_koszty_pracod_grp g
SET z.placa_off = g.koszty_pracod
WHERE z.osobaguid = g.pracguid;


-- 4. kwota plac z kadry

-- pobranie kwot lacznych kosztow pracodawcy
create TEMPORARY TABLE t_kadry_koszty_pracod
SELECT
  PL.guid_pracownika AS pracGUID,
-- z.osobaGUID, PL.GUID AS placaGUID,
 IF((SELECT IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM kadry.place_skladniki W LEFT JOIN 
kadry.definicja_skladnika_placy DSP1 ON W.GUID_definicja_skladnika_placy = DSP1.GUID 
WHERE W.RodzajSkladnika IN (2,5) AND DSP1.ZnaczenieSkladnika IN(7,
19) AND DSP1.deleted = 0 AND W.GUID_zapisu_placowego = PL.GUID ) <1,
 SUM(IF( DSP.GUID IN ('C_0', 'C_3', 'C_4', 'C_5' ,'C_1', 'C_2', 'C_6', 'C_7',
 'C_8', 'C_14') ,PS.kwota + PS.ZmniejszZwieksz,
 0)) + PL.ChoroboweFirma + (SELECT IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM kadry.place_skladniki W WHERE 
W.RodzajSkladnika IN (3) AND W.GUID_zapisu_placowego = PL.GUID ) + 
PL.SklFemerytalnyPracod + PL.SklFrentowyPracod + PL.SklFwypadkowyPracod + 
PL.ZusFunduszPracy + PL.ZusFunduszGwarancyjny + PL.SkladkaFEP + PL.PPKskladkaPracod - (SELECT
IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM kadry.place_skladniki W LEFT JOIN 
kadry.definicja_skladnika_placy DSP1 ON W.GUID_definicja_skladnika_placy = DSP1.GUID 
AND DSP1.deleted = 0 WHERE W.RodzajSkladnika = 2 AND DSP1.ZnaczenieSkladnika = 
7 AND W.GUID_zapisu_placowego = PL.GUID ) ,
 (PL.DoWyplaty + PL.SklFemerytalnyPracod + PL.SklFrentowyPracod + 
PL.SklFwypadkowyPracod + PL.ZusFunduszPracy + PL.ZusFunduszGwarancyjny + PL.PPKskladkaPracod)) +
((SELECT IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM kadry.place_skladniki W WHERE 
W.RodzajSkladnika = 2 AND W.GUID_zapisu_placowego = PL.GUID ) + (SELECT 
IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM kadry.place_skladniki W WHERE 
W.RodzajSkladnika = 1 AND W.GUID_zapisu_placowego = PL.GUID )) 
AS 
KosztyPracodRazem
FROM
  kadry.place PL  --  , t2_osoby z
  JOIN t2_osoby z ON PL.GUID_pracownika = z.osobaGUID 
-- JOIN osoby O ON PL.GUID_pracownika = O.GUID 
LEFT JOIN kadry.place_skladniki PS ON PL.GUID = PS.GUID_zapisu_placowego 
LEFT JOIN kadry.definicja_skladnika_placy DSP ON PS.GUID_definicja_skladnika_placy = DSP.GUID AND DSP.deleted = 0 
WHERE
  -- PL.guid_pracownika IN (select osobaGUID from t2_osoby) AND
  -- PL.guid_pracownika = z.osobaGUID AND 
  PL.rok = YEAR(_Param_A) AND (PL.miesiac = MONTH(_Param_A))  AND PL.deleted = 0  
GROUP BY
  PL.GUID; 
  
-- tworzymy tabele z sumami kosztow dla poszczegolnych pracownikow  

-- pobranie kwot lacznych kosztow pracodawcy
create TEMPORARY TABLE t_kadry_koszty_pracod_grp
select pracGUID, SUM(KosztyPracodRazem) AS koszty_pracod
from t_kadry_koszty_pracod
group by pracGUID;
  
-- wstawiamy kwote lacznych kosztow pracodawcy do odp. kolumny  :
UPDATE t2_osoby z, t_kadry_koszty_pracod_grp g
SET z.placa_kadry = g.koszty_pracod
WHERE z.osobaguid = g.pracguid;


SET @PASS_ZEST07.ptr = 'AFTER UPDATE koszty_pracod';

-- t1.czas

/*
-- drop TABLE IF EXISTS temp_place;
CREATE TABLE `temp_place` (
  `firma` varchar(7) NOT NULL,
  `DataWydruku` datetime NOT NULL,
  `nazwisko` varchar(50) DEFAULT '',
  `imiona` varchar(45) DEFAULT '',
  `nrpesel` varchar(11) DEFAULT NULL,
  autoid varchar(50) DEFAULT '',
  `nrnip` varchar(10) DEFAULT NULL,
  `kontrah` char(50) NOT NULL,
  `oddnia` varchar(10) DEFAULT NULL,
  `dodnia` varchar(10) DEFAULT NULL,
  `osobaGUID` varchar(38) NOT NULL DEFAULT '',
  `IdUNIS` char(5) CHARACTER SET utf8 NOT NULL,
  pz_ht double(21,4) DEFAULT NULL,
  pz_ship double(21,4) DEFAULT NULL,
  pz_off double(21,4) DEFAULT NULL,
  pz_kadry double(21,4) DEFAULT NULL,

  ppk_ht varchar(3) DEFAULT '',
  ppk_ship varchar(3) DEFAULT '',
  ppk_off varchar(3) DEFAULT '',
  ppk_kadry varchar(3) DEFAULT '',

  kw_ht double(21,4) DEFAULT NULL,
  kw_ship double(21,4) DEFAULT NULL,
  kw_off double(21,4) DEFAULT NULL,
  kw_kadry double(21,4) DEFAULT NULL,
  koszt_ht double(21,4) DEFAULT NULL,
  koszt_ship double(21,4) DEFAULT NULL,
  koszt_off double(21,4) DEFAULT NULL,
  koszt_kadry double(21,4) DEFAULT NULL,

  `placa_ht` double(21,4) DEFAULT NULL,
  `placa_ship` double(21,4) DEFAULT NULL,
  `placa_off` double(21,4) DEFAULT NULL,
  `placa_kadry` double(21,4) DEFAULT NULL,
  `placa_netto_ht` double(21,4) DEFAULT NULL,
  `placa_netto_ship` double(21,4) DEFAULT NULL,
  `placa_netto_off` double(21,4) DEFAULT NULL,
  `placa_netto_kadry` double(21,4) DEFAULT NULL,
  `zlec_ht` double(21,4) DEFAULT NULL,
  `zlec_ship` double(21,4) DEFAULT NULL,
  `zlec_off` double(21,4) DEFAULT NULL,
  `zlec_kadry` double(21,4) DEFAULT NULL,
  `zlec_netto_ht` double(21,4) DEFAULT NULL,
  `zlec_netto_ship` double(21,4) DEFAULT NULL,
  `zlec_netto_off` double(21,4) DEFAULT NULL,
  `zlec_netto_kadry` double(21,4) DEFAULT NULL,
  `stanowisko_dzialalnosc` varchar(80) DEFAULT NULL,
  `stanowisko_ht` varchar(80) DEFAULT NULL,
  `stanowisko_ship` varchar(80) DEFAULT NULL,
  `stanowisko_off` varchar(80) DEFAULT NULL,
  `stanowisko_kadry` varchar(80) DEFAULT NULL,
  `kategoria_ht` varchar(100) DEFAULT NULL,
  `kategoria_ship` varchar(100) DEFAULT NULL,
  `kategoria_off` varchar(100) DEFAULT NULL,
  `kategoria_kadry` varchar(100) DEFAULT NULL,
  `dzial_z_faktur` varchar(60) CHARACTER SET utf8 NOT NULL,
  `dzial_z_plac` varchar(60) CHARACTER SET utf8 NOT NULL,
  `kierownik_ht` varchar(80) DEFAULT NULL,
  `kierownik_ship` varchar(80) DEFAULT NULL,
  `kierownik_off` varchar(80) DEFAULT NULL,
  `kierownik_kadry` varchar(80) DEFAULT NULL,
  `kier_place_ht` varchar(80) CHARACTER SET utf8 NOT NULL,
  `kier_place_ship` varchar(80) CHARACTER SET utf8 NOT NULL,
  `kier_place_off` varchar(80) CHARACTER SET utf8 NOT NULL,
  `kier_place_kadry` varchar(80) CHARACTER SET utf8 NOT NULL,
  `fakt_ht` double(21,4) DEFAULT NULL,
  `fakt_ship` double(21,4) DEFAULT NULL,
  `fakt_off` double(21,4) DEFAULT NULL,
  `fakt_kadry` double(21,4) DEFAULT NULL,
  `fakt_vat_ht` double(21,4) DEFAULT NULL,
  `fakt_vat_ship` double(21,4) DEFAULT NULL,
  `fakt_vat_off` double(21,4) DEFAULT NULL,
  `fakt_vat_kadry` double(21,4) DEFAULT NULL,
  `kier_fakt_ht` varchar(50) DEFAULT NULL,
  `kier_fakt_ship` varchar(50) DEFAULT NULL,
  `kier_fakt_off` varchar(50) DEFAULT NULL,
  `kier_fakt_kadry` varchar(50) DEFAULT NULL,
  `rodz_dz_ht` varchar(150) DEFAULT NULL,
  `rodz_dz_ship` varchar(150) DEFAULT NULL,
  `rodz_dz_off` varchar(150) DEFAULT NULL,
  `rodz_dz_kadry` varchar(150) DEFAULT NULL,
  `czas` decimal(42,8) DEFAULT NULL,
  `opis_zlec_ht` varchar(255) DEFAULT NULL,
  `opis_zlec_ship` varchar(255) DEFAULT NULL,
  `opis_zlec_off` varchar(255) DEFAULT NULL,
  `opis_zlec_kadry` varchar(255) DEFAULT NULL,
  `placa` double(21,4) NOT NULL,
  `zlec` double(21,4) NOT NULL,
  `fakt` double(21,4) NOT NULL,
  KEY `nrpesel` (`nrpesel`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1250;
*/


truncate table temp_place;

SET _S =
"insert into temp_place
select
	'CRIST' AS firma,
		CURRENT_TIMESTAMP AS DataWydruku,
		o.nazwisko, o.imiona, t1.nrpesel, t1.autoid, o.nrnip,
		'' as kontrah,
		DATE_FORMAT('#Param_A#','%d-%m-%Y') as oddnia,
		DATE_FORMAT('#Param_B#','%d-%m-%Y') as dodnia,
	 t2.*,
	 ifnull(t2.placa_ht,0) + ifnull(t2.placa_ship,0) + ifnull(t2.placa_off,0) + ifnull(t2.placa_kadry,0) as placa,
	 ifnull(t2.zlec_ht,0) + ifnull(t2.zlec_ship,0) + ifnull(t2.zlec_off,0) + ifnull(t2.zlec_kadry,0) as zlec,
	 ifnull(t2.fakt_ht,0) + ifnull(t2.fakt_ship,0) + ifnull(t2.fakt_off,0) + ifnull(t2.fakt_kadry,0) as fakt
from t1_osoby t1
inner join t2_osoby t2 on t1.osobaGUID=t2.osobaGUID
left join osoby o on t1.osobaGUID=o.guid
#WHERE#
ORDER BY o.nazwisko, o.imiona;
";

SET _S =	REPLACE(_S, '#WHERE#', _WHERE);
SET _S =	REPLACE(_S, '#Param_A#', _Param_A);
SET _S =	REPLACE(_S, '#Param_B#', _Param_B);
SET @SQLText = _S;			
CALL _ExecuteCmd(_S, @Error);
-- select _S;

-- sekcja uzupelniania nip-u z danych kontrah
update temp_place t, ht.hr_kontrah_links hr, ht.kontrah k
SET t.nrnip = k.nip
where t.osobaGUID = hr.osobaGUID and k.GUID = hr.kontrGUID and hr.kontekst like '%(KTR)%'
and ifnull(t.nrnip,'') = '';

update temp_place t, ht_ship.hr_kontrah_links hr, ht_ship.kontrah k
SET t.nrnip = k.nip
where t.osobaGUID = hr.osobaGUID and k.GUID = hr.kontrGUID and hr.kontekst like '%(KTR)%'
and ifnull(t.nrnip,'') = '';

update temp_place t, kadry.hr_kontrah_links hr, kadry.kontrah k
SET t.nrnip = k.nip
where t.osobaGUID = hr.osobaGUID and k.GUID = hr.kontrGUID and hr.kontekst like '%(KTR)%'
and ifnull(t.nrnip,'') = '';

update temp_place t, offshore.hr_kontrah_links hr, offshore.kontrah k
SET t.nrnip = k.nip
where t.osobaGUID = hr.osobaGUID and k.GUID = hr.kontrGUID and hr.kontekst like '%(KTR)%'
and ifnull(t.nrnip,'') = '';


-- SELECT * FROM temp_place;

create temporary table temp_place_pesele
select distinct nrpesel from ht.temp_place;
insert into temp_place_pesele
select distinct nrpesel from pvdelta.temp_place where nrpesel not in (select nrpesel from ht.temp_place);

alter table temp_place_pesele add index nrpesel(nrpesel);

truncate table temp_place_razem;
insert into temp_place_razem (firma ,DataWydruku, nazwisko, imiona, nrpesel, autoid, nrnip, kontrah, oddnia, dodnia, osobaGUID, IdUNIS)
select
firma ,DataWydruku, nazwisko, imiona, t.nrpesel, tc.autoid, nrnip, kontrah, oddnia, dodnia, osobaGUID, IdUNIS
from ht.temp_place_pesele t
left join ht.temp_place tc ON tc.nrpesel = t.nrpesel
-- left join pvdelta.temp_place tpv ON tpv.nrpesel = t.nrpesel
-- group by t.nrpesel
ORDER by tc.nazwisko
;

update temp_place_razem t, pvdelta.temp_place tpv
SET t.firma = tpv.firma,
t.DataWydruku = tpv.DataWydruku,
t.nazwisko = tpv.nazwisko,
t.imiona = tpv.imiona,
t.nrnip = tpv.nrnip,
t.kontrah = tpv.kontrah,
t.oddnia = tpv.oddnia,
t.dodnia = tpv.dodnia,
t.osobaGUID = tpv.osobaGUID,
t.IdUNIS = tpv.IdUNIS,
t.autoid = tpv.autoid
WHERE tpv.nrpesel = t.nrpesel AND t.osobaGUID IS NULL;

/*
-- drop TABLE IF EXISTS temp_place_razem;
CREATE TABLE temp_place_razem (
  firma varchar(20),
  DataWydruku datetime,
  nazwisko varchar(30) DEFAULT NULL,
  imiona varchar(45) DEFAULT NULL,
  nrpesel varchar(11) DEFAULT NULL,
  autoid varchar(50) DEFAULT NULL,
  nrnip varchar(10) DEFAULT NULL,
  kontrah char(20),
  oddnia varchar(10) DEFAULT NULL,
  dodnia varchar(10) DEFAULT NULL,
  osobaGUID varchar(38) DEFAULT NULL,
  IdUNIS char(3),

  pz_ht double(21,4) DEFAULT NULL,
  pz_ship double(21,4) DEFAULT NULL,
  pz_off double(21,4) DEFAULT NULL,
  pz_kadry double(21,4) DEFAULT NULL,
  pz_pvdelta double(21,4) DEFAULT NULL,

  ppk_ht varchar(3) DEFAULT '',
  ppk_ship varchar(3) DEFAULT '',
  ppk_off varchar(3) DEFAULT '',
  ppk_kadry varchar(3) DEFAULT '',
  ppk_pvdelta varchar(3) DEFAULT '',

  kw_ht double(21,4) DEFAULT NULL,
  kw_ship double(21,4) DEFAULT NULL,
  kw_off double(21,4) DEFAULT NULL,
  kw_kadry double(21,4) DEFAULT NULL,
  kw_pvdelta double(21,4) DEFAULT NULL,

  koszt_ht double(21,4) DEFAULT NULL,
  koszt_ship double(21,4) DEFAULT NULL,
  koszt_off double(21,4) DEFAULT NULL,
  koszt_kadry double(21,4) DEFAULT NULL,
  koszt_pvdelta double(21,4) DEFAULT NULL,

  placa_ht double(21,4) DEFAULT NULL,
  placa_ship double(21,4) DEFAULT NULL,
  placa_off double(21,4) DEFAULT NULL,
  placa_kadry double(21,4) DEFAULT NULL,

  placa_pvdelta double(21,4) DEFAULT NULL,

  placa_netto_ht double(21,4) DEFAULT NULL,
  placa_netto_ship double(21,4) DEFAULT NULL,
  placa_netto_off double(21,4) DEFAULT NULL,
  placa_netto_kadry double(21,4) DEFAULT NULL,

  placa_netto_pvdelta double(21,4) DEFAULT NULL,

  zlec_ht double(21,4) DEFAULT NULL,
  zlec_ship double(21,4) DEFAULT NULL,
  zlec_off double(21,4) DEFAULT NULL,
  zlec_kadry double(21,4) DEFAULT NULL,

  zlec_pvdelta double(21,4) DEFAULT NULL,

  zlec_netto_ht double(21,4) DEFAULT NULL,
  zlec_netto_ship double(21,4) DEFAULT NULL,
  zlec_netto_off double(21,4) DEFAULT NULL,
  zlec_netto_kadry double(21,4) DEFAULT NULL,

  zlec_netto_pvdelta double(21,4) DEFAULT NULL,

  stanowisko_dzialalnosc varchar(250) DEFAULT NULL,
  stanowisko_ht varchar(80) DEFAULT NULL,
  stanowisko_ship varchar(80) DEFAULT NULL,
  stanowisko_off varchar(80) DEFAULT NULL,
  stanowisko_kadry varchar(80) DEFAULT NULL,

  stanowisko_pvdelta varchar(80) DEFAULT NULL,

  kategoria_ht varchar(100) DEFAULT NULL,
  kategoria_ship varchar(100) DEFAULT NULL,
  kategoria_off varchar(100) DEFAULT NULL,
  kategoria_kadry varchar(100) DEFAULT NULL,

  kategoria_pvdelta varchar(100) DEFAULT NULL,

  dzial_z_faktur varchar(60) CHARACTER SET utf8,
  dzial_z_plac varchar(60) CHARACTER SET utf8,
  kierownik_ht varchar(256) DEFAULT NULL,
  kierownik_ship varchar(256) DEFAULT NULL,
  kierownik_off varchar(256) DEFAULT NULL,
  kierownik_kadry varchar(256) DEFAULT NULL,

  kierownik_pvdelta varchar(256) DEFAULT NULL,

  kier_place_ht varchar(200),
  kier_place_ship varchar(200),
  kier_place_off varchar(200),
  kier_place_kadry varchar(200),

  kier_place_pvdelta varchar(200),

  fakt_ht double(21,4) DEFAULT NULL,
  fakt_ship double(21,4) DEFAULT NULL,
  fakt_off double(21,4) DEFAULT NULL,
  fakt_kadry double(21,4) DEFAULT NULL,

  fakt_pvdelta double(21,4) DEFAULT NULL,

  fakt_vat_ht double(21,4) DEFAULT NULL,
  fakt_vat_ship double(21,4) DEFAULT NULL,
  fakt_vat_off double(21,4) DEFAULT NULL,
  fakt_vat_kadry double(21,4) DEFAULT NULL,

  fakt_vat_pvdelta double(21,4) DEFAULT NULL,

  kier_fakt_ht varchar(50) DEFAULT NULL,
  kier_fakt_ship varchar(50) DEFAULT NULL,
  kier_fakt_off varchar(50) DEFAULT NULL,
  kier_fakt_kadry varchar(50) DEFAULT NULL,

  kier_fakt_pvdelta varchar(50) DEFAULT NULL,

  rodz_dz_ht varchar(150) DEFAULT NULL,
  rodz_dz_ship varchar(150) DEFAULT NULL,
  rodz_dz_off varchar(150) DEFAULT NULL,
  rodz_dz_kadry varchar(150) DEFAULT NULL,

  rodz_dz_pvdelta varchar(150) DEFAULT NULL,

  czas decimal(42,8) DEFAULT NULL,
  opis_zlec_ht varchar(255) DEFAULT NULL,
  opis_zlec_ship varchar(255) DEFAULT NULL,
  opis_zlec_off varchar(255) DEFAULT NULL,
  opis_zlec_kadry varchar(255) DEFAULT NULL,

  opis_zlec_pvdelta varchar(255) DEFAULT NULL,

  placa double(21,4),
  zlec double(21,4),
  fakt double(21,4),
  KEY nrpesel(nrpesel)
) ENGINE=MyISAM DEFAULT CHARSET=cp1250;

*/

UPDATE temp_place_razem tr, temp_place t SET

  tr.pz_ht = t.pz_ht,
  tr.pz_ship = t.pz_ship,
  tr.pz_off = t.pz_off,
  tr.pz_kadry = t.pz_kadry,

  tr.ppk_ht = t.ppk_ht,
  tr.ppk_ship = t.ppk_ship,
  tr.ppk_off = t.ppk_off,
  tr.ppk_kadry = t.ppk_kadry,

  tr.kw_ht = t.kw_ht,
  tr.kw_ship = t.kw_ship,
  tr.kw_off = t.kw_off,
  tr.kw_kadry = t.kw_kadry,

  tr.koszt_ht = t.koszt_ht,
  tr.koszt_ship = t.koszt_ship,
  tr.koszt_off = t.koszt_off,
  tr.koszt_kadry = t.koszt_kadry,

  tr.placa_ht = t.placa_ht,
  tr.placa_ship = t.placa_ship,
  tr.placa_off = t.placa_off,
  tr.placa_kadry = t.placa_kadry,

--  placa_pvdelta = ,

  tr.placa_netto_ht = t.placa_netto_ht,
  tr.placa_netto_ship = t.placa_netto_ship,
  tr.placa_netto_off = t.placa_netto_off,
  tr.placa_netto_kadry = t.placa_netto_kadry,

  -- placa_netto_pvdelta = ,

  tr.zlec_ht = t.zlec_ht,
  tr.zlec_ship = t.zlec_ship,
  tr.zlec_off = t.zlec_off,
  tr.zlec_kadry = t.zlec_kadry,

  -- zlec_pvdelta = ,

  tr.zlec_netto_ht = t.zlec_netto_ht,
  tr.zlec_netto_ship = t.zlec_netto_ship,
  tr.zlec_netto_off = t.zlec_netto_off,
  tr.zlec_netto_kadry = t.zlec_netto_kadry,

  -- zlec_netto_pvdelta = ,

  tr.stanowisko_dzialalnosc = t.stanowisko_dzialalnosc,
  tr.stanowisko_ht = t.stanowisko_ht,
  tr.stanowisko_ship = t.stanowisko_ship,
  tr.stanowisko_off = t.stanowisko_off,
  tr.stanowisko_kadry = t.stanowisko_kadry,

  -- stanowisko_pvdelta = ,

  tr.kategoria_ht = t.kategoria_ht,
  tr.kategoria_ship = t.kategoria_ship,
  tr.kategoria_off = t.kategoria_off,
  tr.kategoria_kadry = t.kategoria_kadry,

  -- kategoria_pvdelta = ,

  tr.dzial_z_faktur = t.dzial_z_faktur,
  tr.dzial_z_plac = t.dzial_z_plac,
  tr.kierownik_ht = t.kierownik_ht,
  tr.kierownik_ship = t.kierownik_ship,
  tr.kierownik_off = t.kierownik_off,
  tr.kierownik_kadry = t.kierownik_kadry,

  -- kierownik_pvdelta varchar(256) DEFAULT NULL,

  tr.kier_place_ht = t.kier_place_ht,
  tr.kier_place_ship = t.kier_place_ship,
  tr.kier_place_off = t.kier_place_off,
  tr.kier_place_kadry = t.kier_place_kadry,

  -- kier_place_pvdelta varchar(200),

  tr.fakt_ht = t.fakt_ht,
  tr.fakt_ship = t.fakt_ship,
  tr.fakt_off = t.fakt_off,
  tr.fakt_kadry = t.fakt_kadry,

  -- fakt_pvdelta = ,

  tr.fakt_vat_ht = t.fakt_vat_ht,
  tr.fakt_vat_ship = t.fakt_vat_ship,
  tr.fakt_vat_off = t.fakt_vat_off,
  tr.fakt_vat_kadry = t.fakt_vat_kadry,

  -- fakt_vat_pvdelta = ,

  tr.kier_fakt_ht = t.kier_fakt_ht,
  tr.kier_fakt_ship = t.kier_fakt_ship,
  tr.kier_fakt_off = t.kier_fakt_off,
  tr.kier_fakt_kadry = t.kier_fakt_kadry,

  -- kier_fakt_pvdelta varchar(50) DEFAULT NULL,

  tr.rodz_dz_ht = t.rodz_dz_ht,
  tr.rodz_dz_ship = t.rodz_dz_ship,
  tr.rodz_dz_off = t.rodz_dz_off,
  tr.rodz_dz_kadry = t.rodz_dz_kadry,

  -- rodz_dz_pvdelta varchar(150) DEFAULT NULL,

  tr.czas = t.czas,
  tr.opis_zlec_ht = t.opis_zlec_ht,
  tr.opis_zlec_ship = t.opis_zlec_ship,
  tr.opis_zlec_off = t.opis_zlec_off,
  tr.opis_zlec_kadry = t.opis_zlec_kadry

  -- opis_zlec_pvdelta varchar(255) DEFAULT NULL,
WHERE t.nrpesel = tr.nrpesel;



UPDATE temp_place_razem tr, pvdelta.temp_place t SET

  tr.pz_pvdelta = t.pz_pvdelta,
  tr.ppk_pvdelta = t.ppk_pvdelta,
  tr.kw_pvdelta = t.kw_pvdelta,
  tr.koszt_pvdelta = t.koszt_pvdelta,

  tr.placa_pvdelta = t.placa_pvdelta,
  tr.placa_netto_pvdelta = t.placa_netto_pvdelta,
  tr.zlec_pvdelta = t.zlec_pvdelta,
  tr.zlec_netto_pvdelta = t.zlec_netto_pvdelta,

  tr.stanowisko_dzialalnosc = CONCAT_WS(tr.stanowisko_dzialalnosc, t.stanowisko_dzialalnosc),

  tr.stanowisko_pvdelta = t.stanowisko_pvdelta,
  tr.kategoria_pvdelta = t.kategoria_pvdelta,

  tr.dzial_z_faktur = CONCAT_WS(tr.dzial_z_faktur, t.dzial_z_faktur),
  tr.dzial_z_plac = CONCAT_WS(tr.dzial_z_plac, t.dzial_z_plac),

  tr.kierownik_pvdelta = t.kierownik_pvdelta,
  tr.kier_place_pvdelta = t.kier_place_pvdelta,
  tr.fakt_pvdelta = t.fakt_pvdelta,
  tr.fakt_vat_pvdelta = t.fakt_vat_pvdelta,
  tr.kier_fakt_pvdelta = t.kier_fakt_pvdelta,
  tr.rodz_dz_pvdelta = t.rodz_dz_pvdelta,

  tr.czas = t.czas,

  tr.opis_zlec_pvdelta = t.opis_zlec_pvdelta

WHERE t.nrpesel = tr.nrpesel;

UPDATE temp_place_razem SET
placa = ifnull(placa_ht,0) + ifnull(placa_ship,0) + ifnull(placa_off,0) + ifnull(placa_kadry,0) + ifnull(placa_pvdelta,0),
zlec = ifnull(zlec_ht,0) + ifnull(zlec_ship,0) + ifnull(zlec_off,0) + ifnull(zlec_kadry,0) + ifnull(zlec_pvdelta,0),
fakt = ifnull(fakt_ht,0) + ifnull(fakt_ship,0) + ifnull(fakt_off,0) + ifnull(fakt_kadry,0) + ifnull(fakt_pvdelta,0)
;


-- TIME_FORMAT( (select SUM(duration_min) from `ht`.`erp_pass_we_wy`
--		  where osobaGUID = t1.GUID and we BETWEEN '#Param_A#' and '#Param_B#'),'%H:%i:%s') as czas, 

/*
SELECT o.* 
FROM opng n
INNER JOIN hr_kontrah_links hr ON hr.kontrGUID=n.kontrGUID
INNER JOIN osoby o ON o.guid=hr.osobaguid
WHERE n.rodzaj=5 AND datawystaw BETWEEN '2012-07-01' AND '2012-07-31';




SELECT o.* 
FROM prace_zlecone n
INNER JOIN osoby o ON o.guid=n.guid_pracownika
WHERE rok=2012 AND miesiac=7;

_VarStr(GROUP_CONCAT(io.ID)) AS NrPrzepustki
LEFT JOIN `opti_int`.`io_persons` io ON io.`OsobaGUID` = ....
GROUP BY ....


*/


END IF;

-- przygotowanie danych z delty na serwerze delty i podlaczenie tylko tabeli wynikowej do zestawienia ogolnego wyzej
-- CALL fr_pass('PASS_ZEST07_PV','','','','2023','04','','');
IF _MODE = 'PASS_ZEST07_PV' THEN


SET _Param_A = DATE(CONCAT(_Param_A, '-', _Param_B, '-', '01'));
SET _Param_B = LAST_DAY(_Param_A);

SET _rok = YEAR(_Param_A);
SET _mc = MONTH(_Param_A);

SET _WHERE =
  CASE WHEN _Param_C='1' THEN 'WHERE t2.placa_pvdelta is not null or t2.placa_ship is not null or t2.placa_off is not null or t2.placa_kadry is not null or t2.placa_pvdelta is not null'
		 WHEN _Param_C='2' THEN 'WHERE t2.zlec_ht is not null or t2.zlec_ship is not null or t2.zlec_off is not null or t2.zlec_kadry is not null or t2.zlec_pvdelta is not null'
		 WHEN _Param_C='3' THEN 'WHERE t2.fakt_ht is not null or t2.fakt_ship is not null or t2.fakt_off is not null or t2.fakt_kadry is not null or t2.fakt_pvdelta is not null'
		 WHEN _Param_C='' THEN '' END;

-- osoby z delty
CREATE TEMPORARY TABLE `t1_osoby` (
  `osobaGUID` varchar(38) NOT NULL DEFAULT '',
  nrpesel varchar(11),
  autoid varchar(50),
  `zatr5` int(1) NOT NULL,
  `dzial_f5` varchar(100) DEFAULT NULL,
  `dzial_p5` varchar(100) DEFAULT NULL,
  `stanowisko_dzialalnosc` varchar(100) DEFAULT NULL,
  pz_p5 DOUBLE(16,4) DEFAULT NULL,
  ppk_p5 varchar(3) DEFAULT '',
  KEY `osobaGUID` (`osobaGUID`),
  KEY nrpesel (nrpesel)
) ENGINE=MyISAM DEFAULT CHARSET=cp1250;



INSERT INTO t1_osoby
(osobaGUID,nrpesel, autoid, zatr5, dzial_f5, dzial_p5, stanowisko_dzialalnosc, pz_p5, ppk_p5)
select distinct o.GUID as osobaGUID,
if(o.nrpesel='',o.NrPaszportu, o.nrpesel) as nrpesel, o.info2 AS autoid,
if(f5.guid is null,0,1) as zatr5,
(select n5.extraA from pvdelta.kontrah n5 inner join pvdelta.hr_kontrah_links hr5 on hr5.kontrGUID = n5.GUID
where hr5.osobaGUID = o.GUID and hr5.kontekst like '%(KTR)%' LIMIT 1) as dzial_f5,
if(f5.guid is null,null,d5.opis) as dzial_p5,
o.stanowisko as stanowisko_dzialalnosc,
-- p5.PlacaZasadnicza AS pz_p5,
(select PlacaZasadnicza from pvdelta.historia_pracy WHERE GUIDpr = o.GUID
-- and zmiany like '%PlacaZasadnicza%'
AND OdDnia <= _Param_B ORDER BY OdDnia DESC LIMIT 1) as pz_p5,

IFNULL((SELECT IF(pppk.aktywnyPPK=1, 'T', '') FROM pracownicy_ppk pppk WHERE pppk.GUID_Pracownika = o.GUID AND pppk.deleted = 0 ORDER BY pppk.OdDnia DESC LIMIT 1), '') AS ppk_p5

from pvdelta.osoby o
left join pvdelta.frekw f5 ON f5.PracGUID = o.guid and f5.rok = _rok and f5.miesiac = _mc
left join pvdelta.Pracownicy p5 ON p5.guid = o.guid
left join pvdelta.dzialy d5 ON d5.idn = p5.dzial
where o.GUID is not NULL and o.rodzaj=1 and o.deleted=0
;


-- LEAVE SPROC;

-- zbieramy dane o wyroznikach list plac/zlecen

-- pl_hr_wyrozniki
CREATE TEMPORARY TABLE t_gratyf_wyrozniki_pvdelta
  (PracGUID VARCHAR(38),
   kier_zlec VARCHAR(255),
   kier_place VARCHAR(200),
   PracaStr VARCHAR(255),
   INDEX `GUID` (`PracGUID`)
  );

INSERT INTO t_gratyf_wyrozniki_pvdelta (kier_zlec, pracguid, kier_place)
SELECT  GROUP_CONCAT(DISTINCT w.wyroznik) AS kierownik, guid_pracownika, h.nazwa
FROM pvdelta.place g
JOIN pvdelta.osoby o ON o.guid = o.guid
 LEFT JOIN pvdelta.listy_plac t  ON g.nrlisty = t.idn
 LEFT JOIN pvdelta.pl_wyrozn_list_plac w ON w.guid = t.GUID_wyrozn
 LEFT JOIN pvdelta.pl_hr_wyrozniki h ON h.idn = g.dozor
 WHERE g.rok = year(_Param_A) AND g.miesiac = month(_Param_A) -- and g.GUID_Pracownika = o.osobaGUID
 GROUP BY guid_pracownika;

INSERT INTO t_gratyf_wyrozniki_pvdelta (kier_zlec, pracguid, PracaStr)
SELECT  GROUP_CONCAT(DISTINCT  w.wyroznik) AS kierownik, guid_pracownika, GROUP_CONCAT(DISTINCT  g.PracaStr) AS PracaStr
FROM pvdelta.prace_zlecone g
JOIN pvdelta.osoby o ON o.guid = o.guid
 LEFT JOIN pvdelta.listy_plac t  ON g.nrlisty = t.idn
 LEFT JOIN pvdelta.pl_wyrozn_list_plac w ON w.guid = t.GUID_wyrozn
 WHERE g.rok = year(_Param_A) AND g.miesiac = month(_Param_A) -- and g.GUID_Pracownika = o.osobaGUID
 GROUP BY guid_pracownika;


SET @PASS_ZEST07.ptr = 'AFTER INSERT t_gratyf_wyrozniki';

-- kolumna "placa" inicjalnie jest wypelniana suma kwot brutto z zapisow placowych,
-- nastepnie nadpisujemy jej wartosc suma lacznych kosztow pracodawcy
CREATE TEMPORARY TABLE t2_osoby
select
o.osobaGUID,
/*
(SELECT _VarStr(GROUP_CONCAT(io.uID)) AS NrPrzepustki
  FROM `opti_int`.`io_persons` io WHERE io.`OsobaGUID` = o.osobaGUID
GROUP BY o.osobaGUID)  AS IdUNIS,
*/
	'' AS IdUNIS,
  pz_p5 as pz_pvdelta,

  ppk_p5 as ppk_pvdelta,

 (select sum(KwotaWolnaOdPodatku) from pvdelta.place where rok=year(_Param_A) and miesiac=month(_Param_A) and GUID_Pracownika=o.osobaGUID and deleted=0)
	as kw_pvdelta,

 (select sum(KosztyUzyskania) from pvdelta.place where rok=year(_Param_A) and miesiac=month(_Param_A) and GUID_Pracownika=o.osobaGUID and deleted=0)
	as koszt_pvdelta,


 (select sum(kwotabrutto) from pvdelta.place where rok=year(_Param_A) and miesiac=month(_Param_A) and GUID_Pracownika=o.osobaGUID and deleted=0)
	as placa_pvdelta,

	(select sum(kwotanetto) from pvdelta.place where rok=year(_Param_A) and miesiac=month(_Param_A) and GUID_Pracownika=o.osobaGUID and deleted=0)
	as placa_netto_pvdelta,

(select sum(ZaZlecenie + SklFemerytalnyZleceniod + SklFrentowyZleceniod + SklFwypadkowyZleceniod + SklFundPracy + SklFGSP + wynagr_prokurent + PPKskladkaPracod) from pvdelta.prace_zlecone where rok = year(_Param_A) and miesiac = month(_Param_A) and GUID_Pracownika=o.osobaGUID and deleted=0)
as zlec_pvdelta,

(select sum(KwotaNetto) from pvdelta.prace_zlecone where rok = year(_Param_A) and miesiac = month(_Param_A) and GUID_Pracownika=o.osobaGUID and deleted=0)
as zlec_netto_pvdelta,

stanowisko_dzialalnosc,

(select S.stanowisko from pvdelta.stanowiska S, pvdelta.historia_pracy h where h.GUIDPr = o.osobaGUID AND h.stanowisko = S.GUID AND o.zatr5 = 1
  AND h.OdDnia<=_Param_B ORDER BY h.OdDnia DESC LIMIT 1) AS stanowisko_pvdelta,

(select KP.nazwa from pvdelta.kategorie_pracownikow KP, pvdelta.historia_pracy h where h.GUIDPr = o.osobaGUID AND h.KategoriaPracownicza = KP.idn AND o.zatr5 = 1
  AND h.OdDnia<=_Param_B ORDER BY h.OdDnia DESC LIMIT 1) AS kategoria_pvdelta,

 REPEAT(' ',60) as dzial_z_faktur,
 REPEAT(' ',60) as dzial_z_plac,

-- sekcja kierownikow zlecen
(SELECT   _varSTR(GROUP_CONCAT(IFNULL(kier_zlec, ''))) AS kierownik
	FROM t_gratyf_wyrozniki_pvdelta
	WHERE pracguid = o.osobaGUID
	GROUP BY pracguid
)
	AS kierownik_pvdelta,

-- sekcja kierownikow plac	(GROUP_CONCAT raczej nie jest potzebny)
  SPACE(200) AS kier_place_pvdelta,

-- kwoty faktur	(rodzaj = 5 <- zakup towarow; rodzaj = 6 <- rachunki;  23, 24: zakup pozostaly     to nie -> 104 = zakup kancelaria)
(select sum(netto) from pvdelta.opng n1 inner join pvdelta.hr_kontrah_links hr1 on hr1.kontrGUID=n1.kontrGUID
  where year(n1.datawystaw)=year(_Param_A) and month(n1.datawystaw)=month(_Param_A) and (n1.rodzaj IN (5, 6, 7, 8, 23, 24)) and hr1.osobaGUID=o.osobaGUID and  hr1.kontekst LIKE '%(KTR)%') as fakt_pvdelta,

-- kwoty vat faktur	(rodzaj = 5 <- zakup towarow; rodzaj = 6 <- rachunki;  23, 24: zakup pozostaly     to nie -> 104 = zakup kancelaria)
(select sum(vat) from pvdelta.opng n1 inner join pvdelta.hr_kontrah_links hr1 on hr1.kontrGUID=n1.kontrGUID
  where year(n1.datawystaw)=year(_Param_A) and month(n1.datawystaw)=month(_Param_A) and (n1.rodzaj IN (5, 6, 7, 8, 23, 24)) and hr1.osobaGUID=o.osobaGUID and  hr1.kontekst LIKE '%(KTR)%') as fakt_vat_pvdelta,

-- sekcja kierownikow faktur
(select odp_za_zam from pvdelta.kontrah n1 inner join pvdelta.hr_kontrah_links hr1 on hr1.kontrGUID = n1.GUID
  where hr1.osobaGUID = o.osobaGUID LIMIT 1) as kier_fakt_pvdelta,  -- LIMIT 1 do czasu uporzadkowania tematu przez klienta

-- sekcja rodzaju dzialalnosci
 /* SPACE(255) AS rodz_dz_ht,
  SPACE(255) AS rodz_dz_ship,
  SPACE(255) AS rodz_dz_off,
  SPACE(255) AS rodz_dz_kadry,  */
  (select poz1.towrnazwa from pvdelta.opng n1 join pvdelta.oppo poz1 on poz1.idnoper = n1.guid
          join pvdelta.hr_kontrah_links hr1 on hr1.kontrGUID=n1.kontrGUID
          where year(n1.datawystaw)=year(_Param_A) and month(n1.datawystaw)=month(_Param_A)
		  and (n1.rodzaj IN (5, 6, 23, 24)) and hr1.osobaGUID=o.osobaGUID order by poz1.idn limit 1) as rodz_dz_pvdelta,


(select SUM(duration_min) from pvdelta.erp_pass_we_wy ww
		  where ww.osobaGUID = o.osobaGUID and ww.we BETWEEN _Param_A and _Param_B
		  group by ww.osobaGUID)/60 AS czas

from t1_osoby o
HAVING IFNULL(placa_pvdelta,0)+IFNULL(zlec_pvdelta,0)+IFNULL(fakt_pvdelta,0)+IFNULL(zlec_netto_pvdelta,0)  > 0
;

ALTER TABLE t2_osoby ADD INDEX osobaGUID(osobaGUID);
ALTER TABLE t2_osoby
    ADD COLUMN opis_zlec_pvdelta VARCHAR(255)
    ;


SET @PASS_ZEST07.ptr = 'AFTER CREATE t2_osoby';

-- porzadki w kierownikach faktur, ma byc tak, ze jak w danym miesiacu w danej firmie faktur nie ma, to kierownik tez powinien nie byc widoczny
update t2_osoby set kier_fakt_pvdelta = '' where ifnull(fakt_pvdelta,0) = 0;

-- jw dla dzialow z faktur, ma byc tak, ze jak w danym miesiacu w danej firmie faktur nie ma, to dzial tez powinien nie byc widoczny
update t2_osoby o2, t1_osoby o set o2.dzial_z_faktur =
		_varSTR(CONCAT_WS(',',if(ifnull(o2.fakt_pvdelta,0) = 0,null,o.dzial_f5))) where o2.osobaGUID = o.osobaGUID;

-- jw dla dzialow z plac, ma byc tak, ze jak w danym miesiacu w danej firmie plac+zlec nie ma, to dzial tez powinien nie byc widoczny
update t2_osoby o2, t1_osoby o set o2.dzial_z_plac =
		_varSTR(CONCAT_WS(',',if(ifnull(o2.placa_pvdelta,0)+ifnull(o2.zlec_pvdelta,0) = 0,null,o.dzial_p5)
			)) where o2.osobaGUID = o.osobaGUID;


-- przepisujemy kier_place
UPDATE t2_osoby z, t_gratyf_wyrozniki_pvdelta g
SET z.kier_place_pvdelta = g.kier_place
WHERE z.osobaguid = g.PracGUID;


-- przepisujemy opisy prac zleconych
UPDATE t2_osoby z, t_gratyf_wyrozniki_pvdelta g
SET z.opis_zlec_pvdelta = g.PracaStr
WHERE z.osobaguid = g.PracGUID;


SET @PASS_ZEST07.ptr = 'AFTER UPDATE kier_place';

-- 1. kwota plac z ht

-- pobranie kwot lacznych kosztow pracodawcy
create TEMPORARY TABLE t_pvdelta_koszty_pracod
SELECT
  PL.guid_pracownika AS pracGUID,
-- z.osobaGUID, PL.GUID AS placaGUID,
 IF((SELECT IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM place_skladniki W LEFT JOIN
definicja_skladnika_placy DSP1 ON W.GUID_definicja_skladnika_placy = DSP1.GUID
WHERE W.RodzajSkladnika IN (2,5) AND DSP1.ZnaczenieSkladnika IN(7,
19) AND DSP1.deleted = 0 AND W.GUID_zapisu_placowego = PL.GUID ) <1,
 SUM(IF( DSP.GUID IN ('C_0', 'C_3', 'C_4', 'C_5' ,'C_1', 'C_2', 'C_6', 'C_7',
 'C_8', 'C_14') ,PS.kwota + PS.ZmniejszZwieksz,
 0)) + PL.ChoroboweFirma + (SELECT IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM place_skladniki W WHERE
W.RodzajSkladnika IN (3) AND W.GUID_zapisu_placowego = PL.GUID ) +
PL.SklFemerytalnyPracod + PL.SklFrentowyPracod + PL.SklFwypadkowyPracod +
PL.ZusFunduszPracy + PL.ZusFunduszGwarancyjny + PL.SkladkaFEP + PL.PPKskladkaPracod - (SELECT
IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM place_skladniki W LEFT JOIN
definicja_skladnika_placy DSP1 ON W.GUID_definicja_skladnika_placy = DSP1.GUID
AND DSP1.deleted = 0 WHERE W.RodzajSkladnika = 2 AND DSP1.ZnaczenieSkladnika =
7 AND W.GUID_zapisu_placowego = PL.GUID ) ,
 (PL.DoWyplaty + PL.SklFemerytalnyPracod + PL.SklFrentowyPracod +
PL.SklFwypadkowyPracod + PL.ZusFunduszPracy + PL.ZusFunduszGwarancyjny + PL.PPKskladkaPracod)) +
((SELECT IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM place_skladniki W WHERE
W.RodzajSkladnika = 2 AND W.GUID_zapisu_placowego = PL.GUID ) + (SELECT
IF(ISNULL(SUM(W.kwota)), 0.00,
 SUM(W.kwota + W.ZmniejszZwieksz)) FROM place_skladniki W WHERE
W.RodzajSkladnika = 1 AND W.GUID_zapisu_placowego = PL.GUID ))
AS
KosztyPracodRazem
FROM
  pvdelta.place PL  --  , t2_osoby z
  JOIN t2_osoby z ON PL.GUID_pracownika = z.osobaGUID
-- JOIN osoby O ON PL.GUID_pracownika = O.GUID
LEFT JOIN pvdelta.place_skladniki PS ON PL.GUID = PS.GUID_zapisu_placowego
LEFT JOIN pvdelta.definicja_skladnika_placy DSP ON PS.GUID_definicja_skladnika_placy = DSP.GUID AND DSP.deleted = 0
WHERE
  -- PL.guid_pracownika IN (select osobaGUID from t2_osoby) AND
  -- PL.guid_pracownika = z.osobaGUID AND
  PL.rok = YEAR(_Param_A) AND (PL.miesiac = MONTH(_Param_A))  AND PL.deleted = 0
GROUP BY
  PL.GUID;

-- tworzymy tabele z sumami kosztow dla poszczegolnych pracownikow

-- pobranie kwot lacznych kosztow pracodawcy
create TEMPORARY TABLE t_pvdelta_koszty_pracod_grp
select pracGUID, SUM(KosztyPracodRazem) AS koszty_pracod
from t_pvdelta_koszty_pracod
group by pracGUID;

-- wstawiamy kwote lacznych kosztow pracodawcy do odp. kolumny  :
UPDATE t2_osoby z, t_pvdelta_koszty_pracod_grp g
SET z.placa_pvdelta = g.koszty_pracod
WHERE z.osobaguid = g.pracguid;


SET @PASS_ZEST07.ptr = 'AFTER UPDATE koszty_pracod';

-- t1.czas
/*
CREATE TABLE `temp_place` (
  `firma` varchar(7) CHARACTER SET utf8 NOT NULL,
  `DataWydruku` datetime NOT NULL,
  `nazwisko` varchar(50) DEFAULT '',
  `imiona` varchar(45) DEFAULT '',
  `nrpesel` varchar(11) DEFAULT NULL,
  autoid varchar(50) DEFAULT '',
  `nrnip` varchar(10) DEFAULT NULL,
  `kontrah` char(50) CHARACTER SET utf8 NOT NULL,
  `oddnia` varchar(10) CHARACTER SET utf8 DEFAULT NULL,
  `dodnia` varchar(10) CHARACTER SET utf8 DEFAULT NULL,
  `osobaGUID` varchar(38) NOT NULL DEFAULT '',
  `IdUNIS` char(5) CHARACTER SET utf8 NOT NULL,
  pz_pvdelta double(21,4) DEFAULT NULL,   -- placa zasadnicza z kart. pracownika
  ppk_pvdelta varchar(3) DEFAULT '',
  kw_pvdelta double(21,4) DEFAULT NULL,   -- kwota wolna z plac
  koszt_pvdelta double(21,4) DEFAULT NULL, -- chodzi o koszt uzyskania przychodu z plac
  `placa_pvdelta` double(21,4) DEFAULT NULL,
  `placa_netto_pvdelta` double(21,4) DEFAULT NULL,
  `zlec_pvdelta` double(21,4) DEFAULT NULL,
  `zlec_netto_pvdelta` double(21,4) DEFAULT NULL,
  `stanowisko_dzialalnosc` varchar(80) DEFAULT NULL,
  `stanowisko_pvdelta` varchar(80) DEFAULT NULL,
  `kategoria_pvdelta` varchar(80) DEFAULT NULL,
  `dzial_z_faktur` varchar(60) CHARACTER SET utf8 NOT NULL,
  `dzial_z_plac` varchar(60) CHARACTER SET utf8 NOT NULL,
  `kierownik_pvdelta` varchar(80) DEFAULT NULL,
  `kier_place_pvdelta` varchar(80) CHARACTER SET utf8 NOT NULL,
  `fakt_pvdelta` double(21,4) DEFAULT NULL,
  `fakt_vat_pvdelta` double(21,4) DEFAULT NULL,
  `kier_fakt_pvdelta` varchar(80) DEFAULT NULL,
  `rodz_dz_pvdelta` varchar(80) DEFAULT NULL,
  `czas` decimal(42,8) DEFAULT NULL,
  `opis_zlec_pvdelta` varchar(255) DEFAULT NULL,
  `placa` double(21,4) NOT NULL,
  `zlec` double(21,4) NOT NULL,
  `fakt` double(21,4) NOT NULL,
  KEY `nrpesel` (`nrpesel`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1250;
*/
truncate table temp_place;
insert into temp_place
select
	'PVDELTA' AS firma,
		CURRENT_TIMESTAMP AS DataWydruku,
		o.nazwisko, o.imiona, t1.nrpesel, t1.autoid, o.nrnip,
		'' as kontrah,
		DATE_FORMAT(_Param_A,'%d-%m-%Y') as oddnia,
		DATE_FORMAT(_Param_B,'%d-%m-%Y') as dodnia,

	 t2.*,
	 ifnull(t2.placa_pvdelta,0) as placa,
	 ifnull(t2.zlec_pvdelta,0) as zlec,
	 ifnull(t2.fakt_pvdelta,0) as fakt
from t1_osoby t1
inner join t2_osoby t2 on t1.osobaGUID=t2.osobaGUID
left join osoby o on t1.osobaGUID=o.guid
ORDER BY o.nazwisko, o.imiona;

-- uzupelnianie nipu
update temp_place t, hr_kontrah_links hr, kontrah k
SET t.nrnip = k.nip
where t.osobaGUID = hr.osobaGUID and k.GUID = hr.kontrGUID and hr.kontekst like '%(KTR)%'
and ifnull(t.nrnip,'') = '';

-- SELECT * FROM temp_place;

END IF;



/*
zestawienie dochodow pracownikow w danej spolce. Dochody z plac, zlecen i faktur
CALL fr_pass('ZEST08','','','','od dnia','do dnia','','');
CALL fr_pass('ZEST08','','','','2025-04-01','2025-05-31','','');
*/
IF (_MODE = 'ZEST08') THEN

 SET _od = DATE(CONCAT(YEAR(_Param_A), '-', month(_Param_A), '-', '01'));
 SET _do = LAST_DAY(_Param_B);

 SELECT DATABASE() INTO _baza;

 DROP TABLE IF EXISTS tt_01place;
 CREATE TEMPORARY TABLE tt_01place (
  osobaGUID varchar(38) NOT NULL DEFAULT '',
  stanowisko1 varchar(200) NOT NULL DEFAULT '',
  stanowisko2 varchar(200) NOT NULL DEFAULT '',
  rok int,
  mc int,
  kwota double(16,4),
  godziny double(16,4),
  stawka double(16,4),
  KEY osobaGUID (osobaGUID)
) DEFAULT CHARSET=cp1250;

 DROP TABLE IF EXISTS tt_01place_godz;
 CREATE TEMPORARY TABLE tt_01place_godz (
  osobaGUID varchar(38) NOT NULL DEFAULT '',
  rok int,
  mc int,
  SymbolKalendarza varchar(10),
  godziny double(16,4),
  KEY osobaGUID (osobaGUID),
  KEY rok(rok),
  KEY mc(mc)
) DEFAULT CHARSET=cp1250;

 DROP TABLE IF EXISTS tt_02zlec;
 CREATE TEMPORARY TABLE tt_02zlec (
  osobaGUID varchar(38) NOT NULL DEFAULT '',
  stanowisko1 varchar(200) NOT NULL DEFAULT '',
  stanowisko2 varchar(200) NOT NULL DEFAULT '',
  rok int,
  mc int,
  kwota double(16,4),
  godziny double(16,4),
  stawka double(16,4),
  KEY osobaGUID (osobaGUID)
) DEFAULT CHARSET=cp1250;

 DROP TABLE IF EXISTS tt_03fv;
 CREATE TEMPORARY TABLE tt_03fv (
  osobaGUID varchar(38) NOT NULL DEFAULT '',
  stanowisko1 varchar(200) NOT NULL DEFAULT '',
  stanowisko2 varchar(200) NOT NULL DEFAULT '',
  rok int,
  mc int,
  kwota double(16,4),
  godziny double(16,4),
  stawka double(16,4),
  KEY osobaGUID (osobaGUID)
) DEFAULT CHARSET=cp1250;


 insert into tt_01place
 select GUID_pracownika,
 group_concat(distinct s.stanowisko) as stanowisko1,
 group_concat(distinct c.opis) as stanowisko2,
 pl.rok as rok,
 pl.miesiac as mc,
 -- sum(pl.kwotabrutto) as kwota,
 max((select PlacaZasadnicza from historia_pracy where guidpr = pl.GUID_pracownika and oddnia <= LAST_DAY(concat(pl.rok,'-',lpad(pl.miesiac,2,'0'),'-01')) order by oddnia desc limit 1)) as kwota,
 -- sum(kp.godziny/60) as godziny,
 0 as godziny,
 0 as stawka
 FROM place pl
 -- INNER JOIN Pracownicy p on pl.GUID_pracownika = p.GUID
 LEFT JOIN stanowiska s on s.GUID = pl.stanowisko
 left join klasyfikacja_stanowisk ks on ks.GUID_stanowiska = s.GUID
 left JOIN cechy_stanowisk c ON c.GUID = ks.cecha
 left JOIN klasy_stanowisk kl ON kl.GUID = ks.klasa_cech and kl.nazwa_klasy = 'ESG'
 -- left join kalendpracy k on k.symbol = p.symbolkalendarza and k.rok= pl.rok and k.deleted=0
 -- left join kalendpracy_po kp on kp.guidNg = k.guid and kp.miesiac = pl.miesiac
 where pl.deleted=0
 -- and datawyplaty >= _od and datawyplaty <= _do
 and concat(pl.rok,'-',lpad(pl.miesiac,2,'0'),'-01') >= _od and concat(pl.rok,'-',lpad(pl.miesiac,2,'0'),'-01') <= _do
 group by GUID_pracownika, pl.rok, pl.miesiac -- year(datawyplaty), month(datawyplaty)
 ;

 insert into tt_01place_godz (osobaGUID, rok, mc, SymbolKalendarza)
 select osobaGUID, rok, mc, SymbolKalendarza from tt_01place t, Pracownicy p where p.guid = t.osobaGUID;

 update tt_01place_godz t set t.godziny =
 (SELECT SUM(kp.godziny/60) FROM kalendpracy_po kp, kalendpracy k WHERE
 t.symbolkalendarza = k.symbol AND k.rok= t.rok AND k.deleted=0 AND kp.guidNg = k.guid AND kp.miesiac = t.mc)
 ;

 /*
 update tt_01place t set t.godziny =
 (select sum(kp.godziny/60) from kalendpracy_po kp, kalendpracy k, Pracownicy p
 where t.osobaGUID = p.GUID
 and p.symbolkalendarza and k.symbol and k.rok= t.rok and k.deleted=0 and kp.guidNg = k.guid and kp.miesiac = t.mc)
 ;
*/

 update tt_01place t, tt_01place_godz tt set t.godziny = tt.godziny
 where t.osobaGUID = tt.osobaGUID and t.rok = tt.rok and t.mc = tt.mc
 ;

 insert into tt_02zlec
 select pl.GUID_pracownika,
 group_concat(distinct s.stanowisko) as stanowisko1,
 group_concat(distinct c.opis) as stanowisko2,
 pl.rok as rok,
 pl.miesiac as mc,
 -- sum(pl.kwotabrutto) as kwota,
 sum(pl.zazlecenie) as kwota,
 sum(pl.godziny/60) as godziny,
 0 as stawka
 FROM prace_zlecone pl
 INNER JOIN Pracownicy p on pl.GUID_pracownika = p.GUID
 LEFT JOIN stanowiska s on s.GUID = p.stanowisko
 left join klasyfikacja_stanowisk ks on ks.GUID_stanowiska = s.GUID
 left JOIN cechy_stanowisk c ON c.GUID = ks.cecha
 left JOIN klasy_stanowisk kl ON kl.GUID = ks.klasa_cech and kl.nazwa_klasy = 'ESG'

 where pl.deleted=0
 -- and pl.datawyplaty >= _od and pl.datawyplaty <= _do
 and concat(pl.rok,'-',lpad(pl.miesiac,2,'0'),'-01') >= _od and concat(pl.rok,'-',lpad(pl.miesiac,2,'0'),'-01') <= _do
 and pl.GUID_storno = ''  -- wywalamy zapisy stornujace
 and pl.GUID not in (select guid_storno from prace_zlecone where guid_storno <> '') -- wywalamy zapisy stornowane
 group by pl.GUID_pracownika, pl.rok, pl.miesiac
 ;

 insert into tt_03fv
 select hr.osobaGUID,
 group_concat(distinct p.towrnazwa) as stanowisko1, -- opis z pozycji faktury
 group_concat(distinct b.treenode) as stanowisko2, -- branza kontrahenta
 year(n.datasprzed) as rok,
 month(n.datasprzed) as mc,
 sum(n.netto) as kwota,
 sum(n.ryczalt_stawka) as godziny,
 0 as stawka
 FROM opng n
 inner join oppo p on (n.guid=p.idnoperfin or n.guid=p.idnoper)
 inner join hr_kontrah_links hr on hr.kontrGUID=n.kontrGUID and hr.kontekst LIKE '%(KTR)%'
 left join kontrah_branze b ON b.kontrGUID = n.kontrGUID
 where n.deleted=0 and n.datasprzed >= _od and n.datasprzed <= _do
 and (n.rodzaj IN (5, 6, 7, 8, 23, 24))
 group by osobaGUID, year(n.datasprzed), month(n.datasprzed), b.treenode
 ;

 update tt_01place set stawka = _Rnd2(kwota/godziny) where godziny <> 0;
 update tt_02zlec set stawka = _Rnd2(kwota/godziny) where godziny <> 0;
 update tt_03fv set stawka = _Rnd2(kwota/godziny) where godziny <> 0;

 DROP TABLE IF EXISTS tt_zb;
 CREATE TEMPORARY TABLE tt_zb (
  osobaGUID varchar(38) NOT NULL DEFAULT '',
  stanowisko1 varchar(200) NOT NULL DEFAULT '',
  stanowisko2 varchar(200) NOT NULL DEFAULT '',
  rok int,
  mc int,
  kwota1 double(16,4),
  godziny1 double(16,4),
  stawka1 double(16,4),
  kwota2 double(16,4),
  godziny2 double(16,4),
  stawka2 double(16,4),
  kwota3 double(16,4),
  godziny3 double(16,4),
  stawka3 double(16,4),
  dataurodzenia date,
  datazatr_fv date,
  wiek int,
  forma varchar(10),
  spolka varchar(10),
  KEY osobaGUID (osobaGUID)
) DEFAULT CHARSET=cp1250;

 insert into tt_zb (osobaGUID, stanowisko1, stanowisko2, rok, mc, kwota1, godziny1, stawka1, forma)
 select t.*, 'uop' as forma from tt_01place t;

 insert into tt_zb (osobaGUID, stanowisko1, stanowisko2, rok, mc, kwota3, godziny3, stawka3, forma)
 select t.*, 'zlec' as forma from tt_02zlec t;

 insert into tt_zb (osobaGUID, stanowisko1, stanowisko2, rok, mc, kwota2, godziny2, stawka2, forma)
 select t.*, 'fv' as forma from tt_03fv t;

 update tt_zb set spolka =
 CASE when _baza in ('ht', 'httest') then 'Crist'
 when _baza in ('ht_ship', 'ht_shiptest') then 'Shipyard'
 when _baza in ('kadry', 'kadrytest') then 'Konstrukcje'
 when _baza in ('offshore') then 'Offshore'
 when _baza in ('pvdelta') then 'PVDelta'
 END
 ;

 update tt_zb t set t.datazatr_fv =
 (select min(n.datasprzed) from opng n inner join hr_kontrah_links hr on hr.kontrGUID=n.kontrGUID and hr.kontekst LIKE '%(KTR)%' where n.deleted=0 and (n.rodzaj IN (5, 6, 7, 8, 23, 24)) and t.osobaGUID = hr.osobaGUID)
 where t.forma = 'fv'
 ;

 update tt_zb t, Pracownicy p set t.datazatr_fv = p.DataZatrudnieniaWzakl
 where p.GUID = t.osobaGUID and t.forma in ('uop','zlec')
 ;

 update tt_zb t, osoby o set t.dataurodzenia = o.dataurodzenia
 where o.GUID = t.osobaGUID
 ;

 update tt_zb set wiek = year(_do) - year(dataurodzenia) - (if(right(_do,5) >= right(dataurodzenia,5),0,1));

END IF;

/*
zestawienie umów zleceń długoterminowych z uzupełnieniami innych dochodów - z plac, zlecen i faktur
CALL fr_pass('ZEST_UMZLEC','','','','','','',''); przygotowanie tabeli w jednej bazie
CALL fr_pass('ZEST_UMZLEC_ZB','','','','','','',''); przygotowanie tabeli zbiorczej w bazie ht
jest to zestawienie wykonywane cyklicznie raz na dobę, w kazdej bazie i potem składane w tabeli zbiorczej
temp_umzlec
temp_umzlec_zb
wywolywane w cronie w pvdelta, potem w kazdej bazie pozostalej i zbierane w bazie ht.temp_umzlec_zb
*/
IF (_MODE = 'ZEST_UMZLEC') THEN
    SELECT DATABASE() INTO _baza;
    TRUNCATE TABLE temp_umzlec;

    -- przygotowanie tabeli tt_um z aktualnymi umowami długoterminowymi w danej bazie - to zawsze jest stan na teraz
    -- _Param_B = 'akt' mowi o tym, ze maja byc brane tylko umowy aktualne wg znacznika
    -- od kwietnia 2026 zmiana, jednak maja byc nie tylko umowy, ale takze wygasle w ciagu 30 dni
    -- CALL fr_pl_zest('UMZLEC_DL_SQD','','','','','','akt');
    CALL fr_pl_zest('UMZLEC_DL_SQD','','','','','','');

    insert into temp_umzlec (umowaGUID, osobaGUID, NrZlecenia, 
    stawka_rgb_netto, stawka_rgb_brutto, wynag_netto, wynag_brutto, zwolnienie)
    select GUID, GUID_Pracownika, NrZlecenia, 
    stawka_rgb_netto, stawka_rgb_brutto, wynag_netto, wynag_brutto, DataDo
    FROM tt_um
    WHERE -- (CzyUmowaAkt = 1 and DataUmowy <= current_date() and DataDo >= current_date())
    (DataUmowy <= current_date() and DataDo >= current_date() - INTERVAL 30 DAY)
    ;

    -- tutaj trzeba zrobic kasowanie umow wygaslych, o ile jest umowa aktualna
    -- dlatego tutaj, gdyz potem do tych umow sa doklejane inne dane pracownika, wiec robi sie lipa

    -- tabela z najnowszymi umowami danego pracownika, jeżeli są aktualne (nie wygasłe) i jednosczesnie pracownik ma wygasle umowy
    DROP TABLE IF EXISTS tt_umzlec_grup;
    CREATE TEMPORARY TABLE tt_umzlec_grup
    SELECT  osobaGUID, MAX(zwolnienie) AS zwolnienie
    FROM temp_umzlec
    where zwolnienie >= current_date()
    and osobaGUID in
    (select osobaGUID from temp_umzlec where zwolnienie >= current_date() - INTERVAL 30 DAY AND zwolnienie <= current_date())
    GROUP BY osobaGUID
    ;
    ALTER TABLE tt_umzlec_grup ADD INDEX osobaGUID (osobaGUID), ADD INDEX zwolnienie (zwolnienie);

    -- kasowanie umow wygaslych
    DELETE from temp_umzlec
    where osobaGUID in (select osobaGUID from tt_umzlec_grup)
    and zwolnienie < current_date()
    ;

    /*
    insert into temp_umzlec (osobaGUID)
    select GUID from Pracownicy 
    where CzyObecniePracuje = 1 AND ToPracownik = 1 
    AND GUID NOT IN (select distinct osobaGUID FROM temp_umzlec)
    ;
    */

    drop table if exists tt_pracownicy;
    create temporary table tt_pracownicy (
    idn INT NOT NULL AUTO_INCREMENT,
    osobaGUID varchar(38) NOT NULL DEFAULT '',
    zatrudnienie DATE,
    zwolnienie DATE,
    PlacaZasadnicza double(16,4),
    PRIMARY KEY (idn),
    KEY osobaGUID (osobaGUID)
    ) DEFAULT CHARSET=cp1250;

    insert into tt_pracownicy (osobaGUID)
    select GUID from Pracownicy 
    where (CzyObecniePracuje = 1 AND ToPracownik = 1)
    OR (CzyObecniePracuje = 0 AND ToPracownik = 1 AND DataZwolnienia > CURRENT_DATE() - INTERVAL 30 DAY)
    having GUID IS NOT NULL
    -- AND GUID NOT IN (select distinct osobaGUID FROM temp_umzlec)
    ;

    UPDATE tt_pracownicy t SET 
    zatrudnienie = 
    (SELECT MAX(OdDnia) FROM historia_pracy WHERE GUIDpr = t.osobaGUID AND 
    (zmiany like '%zatrudnienie%' OR (zmiany like '%PlacaZasadnicza%' and ToPracownik = 1)) AND OdDnia <= current_date())
    ;

    UPDATE tt_pracownicy t SET 
    zwolnienie = 
    (SELECT MAX(OdDnia) FROM historia_pracy WHERE GUIDpr = t.osobaGUID AND zmiany like '%zwolnienie%' AND OdDnia < current_date() AND OdDnia > zatrudnienie)
    ;

    UPDATE tt_pracownicy t SET 
    PlacaZasadnicza = 
    (SELECT PlacaZasadnicza FROM historia_pracy WHERE GUIDpr = t.osobaGUID AND OdDnia <= current_date() ORDER BY OdDnia DESC LIMIT 1)
    ;

    update temp_umzlec t SET t.PlacaZasadnicza = (select PlacaZasadnicza from tt_pracownicy where osobaGUID = t.osobaGUID);

    insert into temp_umzlec (osobaGUID, PlacaZasadnicza, zwolnienie)
    select osobaGUID, PlacaZasadnicza, zwolnienie
    from tt_pracownicy t
    WHERE zatrudnienie <= current_date()
    -- AND if(zwolnienie is null, true, zwolnienie > current_date())
    AND (zwolnienie IS NULL OR zwolnienie > CURRENT_DATE() - INTERVAL 30 DAY)
    AND osobaGUID NOT IN (select distinct osobaGUID FROM temp_umzlec)
    ;


    /* stara wersja
    insert into temp_umzlec (osobaGUID)
    select hr.osobaGUID
    FROM opng n
    inner join hr_kontrah_links hr on hr.kontrGUID=n.kontrGUID and hr.kontekst LIKE '%(KTR)%'
    where n.deleted=0 and n.datasprzed >= DATE_ADD(CURRENT_DATE(), interval -3 month) and n.datasprzed <= current_date()
    and (n.rodzaj IN (5, 6, 7, 8, 23, 24))
    AND hr.osobaGUID NOT IN (select distinct osobaGUID FROM temp_umzlec)
    AND hr.osobaGUID IN (select guid from osoby)
    group by hr.osobaGUID
    ;
    */

    insert into temp_umzlec (osobaGUID)
    select hr.osobaGUID
    FROM kontrah k
    JOIN hr_kontrah_links hr on hr.kontrGUID = k.GUID and hr.kontekst LIKE '%(KTR)%'
    where k.deleted=0 
    and k.data_waznosci_umowy is not null and k.data_waznosci_umowy <= current_date()
    and if(k.data_waznosci_umowy_do is null, true, data_waznosci_umowy_do >= current_date() - INTERVAL 30 DAY)
    AND hr.osobaGUID NOT IN (select distinct osobaGUID FROM temp_umzlec)
    AND hr.osobaGUID IN (select guid from osoby where deleted=0)
    AND k.katcol0 = 1 -- to jest dzialanosc z kategorii kolumnowych
    group by hr.osobaGUID
    ;

    update temp_umzlec t, osoby o set
    t.nazwisko = o.nazwisko, 
    t.imiona = o.imiona,
    t.nr_przepustki = o.info2,
    t.nrpesel = o.nrpesel
    where o.GUID = t.osobaGUID
    ;

    UPDATE temp_umzlec t, hr_kontrah_links hr, kontrah k
    SET t.kwota_stala = k.kwota_stala, t.stawka_godz = k.stawka_godz
    WHERE t.osobaGUID = hr.osobaGUID 
    AND hr.kontrGUID= k.GUID and hr.kontekst LIKE '%(KTR)%' AND k.deleted = 0
    and k.data_waznosci_umowy is not null and k.data_waznosci_umowy <= current_date()
    and if(k.data_waznosci_umowy_do is null, true, data_waznosci_umowy_do >= current_date() - INTERVAL 30 DAY)
    AND k.katcol0 = 1 -- to jest dzialanosc z kategorii kolumnowych
    ;

    -- tabela z najnowszymi umowami danego pracownika, juz do koncowego czyszczenia danych
    DROP TABLE IF EXISTS tt_um_gr;
    CREATE TEMPORARY TABLE tt_um_gr
    SELECT guid_pracownika AS osobaGUID, MAX(dataumowy) AS dataumowy FROM tt_um GROUP BY guid_pracownika;
    ALTER TABLE tt_um_gr ADD INDEX osobaGUID (osobaGUID), ADD INDEX dataumowy (dataumowy);

    DROP TABLE IF EXISTS tt_um_gr2;
    CREATE TEMPORARY TABLE tt_um_gr2
    SELECT t.GUID AS umowaGUID FROM tt_um t, tt_um_gr tt WHERE tt.osobaGUID = t.GUID_pracownika AND tt.dataumowy = t.dataumowy;
    ALTER TABLE tt_um_gr2 ADD INDEX umowaGUID (umowaGUID);

    -- kasowanie danych w innych umowach niz najnowsze i tylko tam
    UPDATE temp_umzlec SET PlacaZasadnicza = NULL, kwota_stala = NULL, stawka_godz = NULL
    WHERE umowaGUID <> '' AND umowaGUID NOT IN (SELECT umowaGUID FROM tt_um_gr2);

    update temp_umzlec set spolka =
    CASE when _baza in ('ht', 'httest') then 'Crist'
    when _baza in ('ht_ship', 'ht_shiptest') then 'Shipyard'
    when _baza in ('kadry', 'kadrytest') then 'Konstrukcje'
    when _baza in ('offshore') then 'Offshore'
    when _baza in ('pvdelta') then 'PVDelta'
    END
    ;

/*
    drop table if exists temp_umzlec;
    create table temp_umzlec (
    idn INT NOT NULL AUTO_INCREMENT,
    umowaGUID varchar(38) NOT NULL DEFAULT '',
    osobaGUID varchar(38) NOT NULL DEFAULT '',
    nr_przepustki varchar(20) NOT NULL DEFAULT '', 
    nrpesel varchar(15) NOT NULL DEFAULT '',
    nazwisko varchar(30) NOT NULL DEFAULT '', 
    imiona varchar(45) NOT NULL DEFAULT '', 
    NrZlecenia varchar(20) NOT NULL DEFAULT '', 
    stawka_rgb_netto double(16,4),
    stawka_rgb_brutto double(16,4),
    wynag_netto double(16,4),
    wynag_brutto double(16,4),
    PlacaZasadnicza double(16,4),
    kwota_stala double(16,4),
    stawka_godz double(16,4),
    zwolnienie date,
    spolka varchar(15),
    PRIMARY KEY (idn),
    KEY umowaGUID (umowaGUID),
    KEY osobaGUID (osobaGUID)
    ) DEFAULT CHARSET=cp1250;
*/

END IF;

IF (_MODE = 'ZEST_UMZLEC_ZB') THEN
    
    TRUNCATE TABLE temp_umzlec_zb;

    insert into temp_umzlec_zb 
    SELECT 0, umowaGUID,osobaGUID,nr_przepustki,nrpesel,nazwisko,imiona,NrZlecenia,stawka_rgb_netto,stawka_rgb_brutto,wynag_netto,wynag_brutto,PlacaZasadnicza,kwota_stala,stawka_godz,zwolnienie,spolka
    from ht.temp_umzlec;

    insert into temp_umzlec_zb 
    SELECT 0, umowaGUID,osobaGUID,nr_przepustki,nrpesel,nazwisko,imiona,NrZlecenia,stawka_rgb_netto,stawka_rgb_brutto,wynag_netto,wynag_brutto,PlacaZasadnicza,kwota_stala,stawka_godz,zwolnienie,spolka
    from ht_ship.temp_umzlec;

    insert into temp_umzlec_zb 
    SELECT 0, umowaGUID,osobaGUID,nr_przepustki,nrpesel,nazwisko,imiona,NrZlecenia,stawka_rgb_netto,stawka_rgb_brutto,wynag_netto,wynag_brutto,PlacaZasadnicza,kwota_stala,stawka_godz,zwolnienie,spolka
    from kadry.temp_umzlec;

    insert into temp_umzlec_zb 
    SELECT 0, umowaGUID,osobaGUID,nr_przepustki,nrpesel,nazwisko,imiona,NrZlecenia,stawka_rgb_netto,stawka_rgb_brutto,wynag_netto,wynag_brutto,PlacaZasadnicza,kwota_stala,stawka_godz,zwolnienie,spolka
    from offshore.temp_umzlec;

    insert into temp_umzlec_zb 
    SELECT 0, umowaGUID,osobaGUID,nr_przepustki,nrpesel,nazwisko,imiona,NrZlecenia,stawka_rgb_netto,stawka_rgb_brutto,wynag_netto,wynag_brutto,PlacaZasadnicza,kwota_stala,stawka_godz,zwolnienie,spolka
    from pvdelta.temp_umzlec;

/*
    drop table if exists temp_umzlec_zb;
    create table temp_umzlec_zb (
    idn INT NOT NULL AUTO_INCREMENT,
    umowaGUID varchar(38) NOT NULL DEFAULT '',
    osobaGUID varchar(38) NOT NULL DEFAULT '',
    nr_przepustki varchar(20) NOT NULL DEFAULT '', 
    nrpesel varchar(15) NOT NULL DEFAULT '',
    nazwisko varchar(30) NOT NULL DEFAULT '', 
    imiona varchar(45) NOT NULL DEFAULT '', 
    NrZlecenia varchar(20) NOT NULL DEFAULT '', 
    stawka_rgb_netto double(16,4),
    stawka_rgb_brutto double(16,4),
    wynag_netto double(16,4),
    wynag_brutto double(16,4),
    PlacaZasadnicza double(16,4),
    kwota_stala double(16,4),
    stawka_godz double(16,4),
    zwolnienie date,
    spolka varchar(15),
    PRIMARY KEY (idn),
    KEY umowaGUID (umowaGUID),
    KEY osobaGUID (osobaGUID)
    ) DEFAULT CHARSET=cp1250;
*/


END IF;


END$$

DELIMITER ;
