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

DROP PROCEDURE IF EXISTS `e_dekl_print_tools`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `e_dekl_print_tools`(
	IN _MODE 	VARCHAR(100), 
	IN _FROM        VARCHAR(50),
	IN _RecGUID     VARCHAR(38), 
	IN _OkresOd     VARCHAR(50),	
	IN _OkresDo     VARCHAR(50),	 
	IN _NaDzien     VARCHAR(50),	
	IN _doc_ID      VARCHAR(38), 
	IN _RepContent LONGTEXT,
	IN _Param_A 	VARCHAR(250),	  
	IN _Param_B 	VARCHAR(250),
	IN _Param_C 	VARCHAR(250)	 
)

/*
wywolania sekwencyjne dla pit 11 i wydruku ips
CALL e_dekl_print_tools('e_dekl.print','PIT_11' ,'09719b25-6e9d-11ef-a222-00155dc88905','','','','','','','','ips');
CALL e_dekl_print_tools('e_dekl.print.one','PIT_11' ,'09719b25-6e9d-11ef-a222-00155dc88905','','','','','','','','ips');
CALL e_dekl_print_tools('e_dekl.print.one.to.ips','PIT_11' ,'09719b25-6e9d-11ef-a222-00155dc88905','','','','','','','','ips');

select * from t_print_pit_11;
SELECT * FROM t_dekl_def_print;

SELECT  CONCAT(IFNULL(@txt_nag,''),IFNULL(@txt_all,'')) AS txt;
select @txt_all;

uwaga przekodowanie pol z (nazwa nasza na kod ips np p124 na podstawie tabeli e_dekl_def_po)
*/

SPROC: BEGIN
 DECLARE _SQLText TEXT;
 SET SESSION group_concat_max_len = 1024*1024;
		-- zamienic wywolania jak zostanie ustalona konfiguracja
		IF _Param_C='xml' THEN 
			SET
			@dekl_PIT11_xml =1,
			@dekl_PIT11_pdf	=0,
			@dekl_PIT11_ips =0;
		END IF;	
		IF _Param_C='pdf' THEN 
			SET
			@dekl_PIT11_xml =0,
			@dekl_PIT11_pdf	=1,
			@dekl_PIT11_ips =0;
		END IF;	
		IF _Param_C='' or _Param_C='ips' THEN 
			SET
			@dekl_PIT11_xml =0,
			@dekl_PIT11_pdf	=0,
			@dekl_PIT11_ips =1;
		END IF;	
		IF _MODE= 'e_dekl.print' THEN
			SET @txt_nag='', @txt_all='',@txt_dane='', @txt_nag='';
			IF _RecGUID <>'' THEN
				SET @ile_form=0;
				CALL e_dekl_print_tools('e_dekl.print.one',_FROM ,_RecGUID,'','','','','','','',_Param_C);
				IF @dekl_PIT11_ips THEN	
				SET @txt_nag=(SELECT CONCAT('[Formularze]','\n',
				           'Count=',@ile_form,'\n',
				           'XMLImported=2','\n','\n'));
				END IF;
				-- tutaj jest to, co dostaje program do wypelnienia pliku 1IPSForm.DTA, kluczowe do wydruku ips
				SELECT  CONCAT(IFNULL(@txt_nag,''),IFNULL(@txt_all,'')) AS txt;
			ELSE 	
				SET @ile_form=0;
				BEGIN
				DECLARE _Local_SRCGUID VARCHAR(38);
				DECLARE _done BOOL DEFAULT FALSE;
				DECLARE _c_proc CURSOR FOR
					SELECT 
						guid
					FROM t_e_dekl_print order by lp;
				DECLARE CONTINUE HANDLER FOR NOT FOUND SET _done = TRUE;
				OPEN _c_proc;
				loop_for_all: LOOP
					FETCH _c_proc INTO
						_Local_SRCGUID
					;
					IF _done THEN
						LEAVE loop_for_all;
					ELSE
					SET @RG='2';
					SET @txt_dane='';
					CALL e_dekl_print_tools('e_dekl.print.one',_FROM ,_Local_SRCGUID,'','','','','','','',_Param_C);   
				END IF;
				END LOOP;
				CLOSE _c_proc;
				END; 
				IF @dekl_PIT11_ips THEN 
				SET @IPS_symbol = 'P11_29',@IPS_edit = '1',@IPS_calc = '0';
				SET @txt_nag=(SELECT CONCAT('[Formularze]','\n',
								'Count=',@ile_form,'\n','\n'));
				END IF;
			SELECT  CONCAT(IFNULL(@txt_nag,''),IFNULL(@txt_all,'')) AS txt;
		END IF;
	END IF;

	IF _MODE LIKE 'e_dekl.print.one' THEN
		IF @dekl_PIT11_ips THEN
			CALL e_dekl_print_tools('e_dekl.print.one.to.ips',_FROM ,_RecGUID,'','','','','','','',_Param_C);
		END IF;
		IF @dekl_PIT11_pdf THEN	
			CALL e_dekl_print_tools('e_dekl.print.one.to.pdf',_FROM ,_RecGUID,'','','','','','','',_Param_C);	
		END IF;
		IF @dekl_PIT11_xml THEN	
			CALL e_dekl_print_tools('e_dekl.print.one.to.xml',_FROM ,_RecGUID,'','','','','','','',_Param_C);	
		END IF;
	END IF;	

	IF _MODE LIKE 'e_dekl.print.one.to%' THEN
		-- wszystkie wartosci _modów FROM przeniesc do e_dekl_def_ng dla kazdej z deklaracji inny zestaw
		IF _FROM = 'PIT_11' THEN
			SET @zalaczniki='';
			SET @zalaczniki = (SELECT if(typ_zgloszenia=2,'ORD_ZU(3)_v9_0E','') FROM Pit_11_8B WHERE guid=_RecGUID);
			SET @doc_ID = (SELECT e_Doc_Def_ID FROM Pit_11_8B WHERE guid=_RecGUID);
			SET @doc_ID_table = 'Pit_11_8B' ;
			SET @IPS_symbol = 'P11_29',@IPS_edit = '1',@IPS_calc = '0';
			SET @txt_nag_one=(SELECT CONCAT(
							'\n',
							'symbol=',@IPS_symbol,'\n',
							'edit=',@IPS_edit,'\n',
							'calc=',@IPS_calc,'\n'));
		        CALL _IReg_Get('DaneFirmy', 'Rodzaj_platnika', '0', 'int', @Rodzaj_platnika , '0'); 
			DROP TEMPORARY TABLE  IF EXISTS t_print_pit_11;
			CREATE TEMPORARY TABLE t_print_pit_11 
			SELECT _RecGUID AS GUID,
			IF(p.rok<0,YEAR(p.OkresDo),p.rok) AS rok,
			IF(p.typ_zgloszenia=1,'x','') AS cel_zlozenie,
			IF(p.typ_zgloszenia=2,'x','') AS cel_korekta,
			IF(p.typ_zgloszenia=2,'ORD-ZU','') AS ORD_ZU,
			IF(p.typ_zgloszenia=2,3,'') AS WariantORD_ZU,
			IF(p.Info_o_kosztach=0,if(_param_c='xml','1','x'),'') AS jeden_st_pracy,
			IF(p.Info_o_kosztach=1,if(_param_c='xml','2','x'),'') AS wiele_st_pracy,
			IF(p.Info_o_kosztach=2,if(_param_c='xml','3','x'),'') AS jeden_st_pracy_dojazd,
			IF(p.Info_o_kosztach=3,if(_param_c='xml','4','x'),'') AS wiele_st_pracy_dojazd,
			IF(@Rodzaj_platnika=1,'x','') AS rodzaj_fizyczna,
			IF(@Rodzaj_platnika=0,'x','') AS rodzaj_nie_fizyczna,
			IF(@Rodzaj_platnika=1,p.Nazwa1,'') AS Nazwa1,
			IF(@Rodzaj_platnika=1,p.Nazwa2,'') AS Nazwa2,
			IF(@Rodzaj_platnika=1,p.Nazwa3,'') AS Nazwa3,
			IF(@Rodzaj_platnika=1,p.NIP,'') AS Nazwa4,
			IF(@Rodzaj_platnika=1,CONCAT(p.Nazwa1,' ',p.Nazwa2,' ',p.Nazwa3),'') AS Nazwa5,
			IF(@Rodzaj_platnika=0,p.NazwaPlatnika,'') as NazwaPlatnika,
			IF(_PARAM_C='xml',(SELECT kod_urzedu FROM `US` u WHERE guid=p.US),(SELECT CONCAT(u.nazwa,', ',u.KodPocztowy,' ',u.MIasto,', ',u.Ulica,' ',u.NrDomu) FROM `US` u WHERE guid=p.US)) AS US,
			IF(p.rezydent=1,'x','') AS rezydent,
			IF(p.rezydent=2,'x','') AS nie_rezydent ,
			-- '' AS identyfikator_podatkowy,
			IF(p.PIT_PESEL_NIP=1,IF(_param_c='xml',o.NrNIP,'------'),'') AS pod_ident_nip,
			IF(p.PIT_PESEL_NIP=0,IF(_param_c='xml',o.NrPESEL,'------'),'') AS pod_ident_pesel,
			if(p.PIT_PESEL_NIP=1,o.NrNIP,o.NrPESEL)  as Podatnik_ident,
			IF(p.PitR=1,if(_param_c='xml','1','x'),'') AS Pit_R_TAK,
			IF(p.PitR=0,if(_param_c='xml','2','x'),'') AS Pit_R_NIE,
			-- CONCAT(p.Nazwisko,' ',p.Imie) AS osoba_wyliczenia, -- tutaj trzeba dodac stanowisko

			IF(_param_c='ips',CONCAT(p.Nazwisko,' ',p.Imie,IF(p.stanowisko='','',concat(' ',p.stanowisko))),CONCAT(p.Nazwisko,' ',p.Imie)) AS osoba_wyliczenia,

			'PIT-11' AS KodFormularzaxml,
			'29' as WariantFormularza,
			IF(_PARAM_C='xml',(SELECT gc.code FROM geo_country gc  WHERE gc.name = p.podatnik_kraj),p.podatnik_kraj) as Podatnik_Kraj,
			1 as pouczenie, -- zawsze jestesmy swiadomi odpowiedzialnosci karnej
			'' AS osoba_sporzadzanie,
			(select ob.Code from obywatelstwa ob where ob.obywatelstwo=o.obywatelstwo and ob.obywatelstwo not in ('','polskie')) AS KodKrajuWydaniaDokZagr,
			IF(_PARAM_C='xml',p.zagr_rodzaj_ident,p.zagr_rodzaj_ident_str) as zagr_rodzaj_ident
			FROM Pit_11_8B p , osoby o  WHERE p.pracGUID=o.GUID and  p.GUID=_RecGUID; 
		END IF;	
		IF _FROM LIKE 'ORDZU%' THEN	
			SET @doc_ID = 'ORD_ZU(3)_v9_0E';
			SET @doc_ID_table = 't_print_ORD_ZU';
			SET @IPS_symbol = 'ORZU_3',@IPS_edit = '1',@IPS_calc = '0';
			SET @txt_nag_one=(SELECT CONCAT(
							'\n',
							'symbol=',@IPS_symbol,'\n',
							'edit=',@IPS_edit,'\n',
							'calc=',@IPS_calc,'\n'));
			IF _FROM LIKE '%pit11' THEN  
				CALL _IReg_Get('DaneFirmy', 'Rodzaj_platnika', '0', 'int', @Rodzaj_platnika , '0'); 
				DROP TEMPORARY TABLE  IF EXISTS t_print_ORD_ZU;
				CREATE TEMPORARY TABLE t_print_ORD_ZU
					SELECT _RecGUID AS GUID,
						p.NIP AS ident_1,
						IF(p.PIT_PESEL_NIP=1,o.NrNIP,o.NrPESEL)  AS ident_2,
						IF(@Rodzaj_platnika=0,p.NazwaPlatnika,p.Nazwa1) AS  Nazwa_nazwisko_1,
						IF(@Rodzaj_platnika=1,p.Nazwa2,'') AS Nazwa_imie_1,
						IF(@Rodzaj_platnika=1,p.Nazwa3,'') AS Data_ur_1,
						IF(@Rodzaj_platnika=0,p.Nazwa2,'') AS Regon_1,
						p.Podatnik_Nazwisko AS Nazwa_nazwisko_2,
						p.Podatnik_Imie AS Nazwa_imie_2,
						p.Podatnik_DataUrodzenia AS Data_ur_2,
						'' AS Regon_2,
						REPLACE(REPLACE(IFNULL(p.PowodKorekty,''),'\n','<br>'),'\r','')  as uzasadnienie
				FROM Pit_11_8B p , osoby o  WHERE p.pracGUID=o.GUID AND  p.GUID=_RecGUID; 
			END IF;
			IF _FROM LIKE '%pit8ar' THEN  
				CALL _IReg_Get('DaneFirmy', 'Rodzaj_platnika', '0', 'int', @Rodzaj_platnika , '0'); 
				DROP TEMPORARY TABLE  IF EXISTS t_print_ORD_ZU;
				CREATE TEMPORARY TABLE t_print_ORD_ZU
						SELECT _RecGUID AS GUID,
						(SELECT valuea FROM IReg WHERE idkey ='NIP' AND idpath LIKE '%DaneFirmy'  LIMIT 1) AS ident_1,
						''  AS ident_2,
						(SELECT valuea FROM IReg WHERE idkey ='Pelna_nazwa' AND idpath LIKE '%DaneFirmy'  LIMIT 1)  AS  Nazwa_nazwisko_1,
						(SELECT valuea FROM IReg WHERE idkey ='Nazwa_skrocona' AND idpath LIKE '%DaneFirmy'  LIMIT 1) AS Nazwa_imie_1,
						'' AS Data_ur_1,
						(SELECT valuea FROM IReg WHERE idkey='REGON' AND idpath LIKE '%DaneFirmy'  LIMIT 1) AS Regon_1,
						'' AS Nazwa_nazwisko_2,
						'' AS Nazwa_imie_2,
						'' AS Data_ur_2,
						'' AS Regon_2,
						REPLACE(REPLACE(IFNULL(p.przyczyna_ORD_ZU,''),'\n','<br>'),'\r','')  as uzasadnienie
				FROM pit_8ar p WHERE p.GUID=_RecGUID; 
			END IF;
			IF _FROM LIKE '%pit4r' THEN  
				CALL _IReg_Get('DaneFirmy', 'Rodzaj_platnika', '0', 'int', @Rodzaj_platnika , '0'); 
				DROP TEMPORARY TABLE  IF EXISTS t_print_ORD_ZU;
				CREATE TEMPORARY TABLE t_print_ORD_ZU
						SELECT _RecGUID AS GUID,
						(SELECT valuea FROM IReg WHERE idkey ='NIP' AND idpath LIKE '%DaneFirmy'  LIMIT 1) AS ident_1,
						''  AS ident_2,
						(SELECT valuea FROM IReg WHERE idkey ='Pelna_nazwa' AND idpath LIKE '%DaneFirmy'  LIMIT 1)  AS  Nazwa_nazwisko_1,
						(SELECT valuea FROM IReg WHERE idkey ='Nazwa_skrocona' AND idpath LIKE '%DaneFirmy'  LIMIT 1) AS Nazwa_imie_1,
						'' AS Data_ur_1,
						(SELECT valuea FROM IReg WHERE idkey='REGON' AND idpath LIKE '%DaneFirmy'  LIMIT 1) AS Regon_1,
						'' AS Nazwa_nazwisko_2,
						'' AS Nazwa_imie_2,
						'' AS Data_ur_2,
						'' AS Regon_2,
						REPLACE(IFNULL(GROUP_CONCAT( IF(uzasadnienie<>'',CONCAT(msc,': ',uzasadnienie),'') ORDER BY msc SEPARATOR '\n' ),''),'\n','<br>') as uzasadnienie
				FROM pit_4 p where   p.GUID=_RecGUID; 
			END IF;
			IF _FROM LIKE '%pit40' THEN  
				CALL _IReg_Get('DaneFirmy', 'Rodzaj_platnika', '0', 'int', @Rodzaj_platnika , '0'); 
				DROP TEMPORARY TABLE  IF EXISTS t_print_ORD_ZU;
				CREATE TEMPORARY TABLE t_print_ORD_ZU
						SELECT _RecGUID AS GUID,
						(SELECT valuea FROM IReg WHERE idkey ='NIP' AND idpath LIKE '%DaneFirmy'  LIMIT 1) AS ident_1,
						IF(p.PIT_PESEL_NIP=0, o.NrPesel, o.NrNIP)  AS ident_2,
						(SELECT valuea FROM IReg WHERE idkey ='Pelna_nazwa' AND idpath LIKE '%DaneFirmy'  LIMIT 1)  AS  Nazwa_nazwisko_1,
						(SELECT valuea FROM IReg WHERE idkey ='Nazwa_skrocona' AND idpath LIKE '%DaneFirmy'  LIMIT 1) AS Nazwa_imie_1,
						'' AS Data_ur_1,
						(SELECT valuea FROM IReg WHERE idkey='REGON' AND idpath LIKE '%DaneFirmy'  LIMIT 1) AS Regon_1,
						p.Nazwisko_podatnika AS Nazwa_nazwisko_2,
						p.Imie_podatnika AS Nazwa_imie_2,
						o.DataUrodzenia AS Data_ur_2,
						'' AS Regon_2,
						REPLACE(REPLACE(IFNULL(p.przyczyna_ORD_ZU,''),'\n','<br>'),'\r','') as uzasadnienie
				FROM pit_40 p , osoby o  WHERE p.GUID_pracownika=o.GUID AND  p.GUID=_RecGUID; 
			END IF;
			IF _FROM LIKE '%pit8c' THEN  
			CALL _IReg_Get('DaneFirmy', 'Rodzaj_platnika', '0', 'int', @Rodzaj_platnika , '0'); 
				DROP TEMPORARY TABLE  IF EXISTS t_print_ORD_ZU;
				CREATE TEMPORARY TABLE t_print_ORD_ZU
						SELECT _RecGUID AS GUID,
						(SELECT valuea FROM IReg WHERE idkey ='NIP' AND idpath LIKE '%DaneFirmy'  LIMIT 1) AS ident_1,
						IF(0=0, o.NrPesel, o.NrNIP)  AS ident_2,
						(SELECT valuea FROM IReg WHERE idkey ='Pelna_nazwa' AND idpath LIKE '%DaneFirmy'  LIMIT 1)  AS  Nazwa_nazwisko_1,
						(SELECT valuea FROM IReg WHERE idkey ='Nazwa_skrocona' AND idpath LIKE '%DaneFirmy'  LIMIT 1) AS Nazwa_imie_1,
						'' AS Data_ur_1,
						(SELECT valuea FROM IReg WHERE idkey='REGON' AND idpath LIKE '%DaneFirmy'  LIMIT 1) AS Regon_1,
						p.Podatnik_Nazwisko AS Nazwa_nazwisko_2,
						p.Imie_podatnika AS Nazwa_imie_2,
						o.DataUrodzenia AS Data_ur_2,
						'' AS Regon_2,
						REPLACE(REPLACE(IFNULL(p.przyczyna_ORD_ZU,''),'\n','<br>'),'\r','') as uzasadnienie
				FROM pit8c p , osoby o  WHERE p.pracGUID=o.GUID AND  p.GUID=_RecGUID; 
			END IF;
			IF _FROM LIKE '%pit4r2' THEN  
			CALL _IReg_Get('DaneFirmy', 'Rodzaj_platnika', '0', 'int', @Rodzaj_platnika , '0'); 
				DROP TEMPORARY TABLE  IF EXISTS t_print_ORD_ZU;
				CREATE TEMPORARY TABLE t_print_ORD_ZU
						SELECT _RecGUID AS GUID,
						(SELECT valuea FROM IReg WHERE idkey ='NIP' AND idpath LIKE '%DaneFirmy'  LIMIT 1) AS ident_1,
						''  AS ident_2,
						(SELECT valuea FROM IReg WHERE idkey ='Pelna_nazwa' AND idpath LIKE '%DaneFirmy'  LIMIT 1)  AS  Nazwa_nazwisko_1,
						(SELECT valuea FROM IReg WHERE idkey ='Nazwa_skrocona' AND idpath LIKE '%DaneFirmy'  LIMIT 1) AS Nazwa_imie_1,
						'' AS Data_ur_1,
						(SELECT valuea FROM IReg WHERE idkey='REGON' AND idpath LIKE '%DaneFirmy'  LIMIT 1) AS Regon_1,
						'' AS Nazwa_nazwisko_2,
						'' AS Nazwa_imie_2,
						'' AS Data_ur_2,
						'' AS Regon_2,
						REPLACE(IFNULL(GROUP_CONCAT( IF(uzasadnienie<>'',CONCAT(msc,': ',uzasadnienie),'') ORDER BY msc SEPARATOR '\n' ),''),'\n','<br>') as uzasadnienie
				FROM pit_4 p where   p.GUID=_RecGUID; 
			END IF;
			IF _FROM LIKE '%IFT1' THEN  
			CALL _IReg_Get('DaneFirmy', 'Rodzaj_platnika', '0', 'int', @Rodzaj_platnika , '0'); 
				DROP TEMPORARY TABLE  IF EXISTS t_print_ORD_ZU;
				CREATE TEMPORARY TABLE t_print_ORD_ZU
						SELECT _RecGUID AS GUID,
						(SELECT valuea FROM IReg WHERE idkey ='NIP' AND idpath LIKE '%DaneFirmy'  LIMIT 1) AS ident_1,
						IF(pr.PIT_PESEL_NIP=0, o.NrPesel, o.NrNIP)  AS ident_2,
						(SELECT valuea FROM IReg WHERE idkey ='Pelna_nazwa' AND idpath LIKE '%DaneFirmy'  LIMIT 1)  AS  Nazwa_nazwisko_1,
						(SELECT valuea FROM IReg WHERE idkey ='Nazwa_skrocona' AND idpath LIKE '%DaneFirmy'  LIMIT 1) AS Nazwa_imie_1,
						'' AS Data_ur_1,
						(SELECT valuea FROM IReg WHERE idkey='REGON' AND idpath LIKE '%DaneFirmy'  LIMIT 1) AS Regon_1,
						p.odbiorca_nazwisko AS Nazwa_nazwisko_2,
						p.odbiorca_imie AS Nazwa_imie_2,
						p.odbiorca_dataurodzenia AS Data_ur_2,
						'' AS Regon_2,
						REPLACE(REPLACE(IFNULL(p.przyczyna_ORD_ZU,''),'\n','<br>'),'\r','') as uzasadnienie
				FROM ift1 p , osoby o , Pracownicy pr WHERE p.pracGUID=o.GUID AND pr.GUID=p.pracGUID and  p.GUID=_RecGUID; 
			END IF;
		END IF;	
		IF _FROM='IFT_cos_tam'THEN	
			select "przykładowy select dla wywolania IFT do przeniesienia kiedyś do tabeli nagłówkowej";
		END IF;	
		IF _FROM='RZiS'THEN	
		    select "przykładowy select dla wywolania rachunku do przeniesienia kiedyś do tabeli nagłówkowej";
		END IF;	
		IF _MODE LIKE '%pdf' THEN
			DROP TABLE IF EXISTS  t_dekl_def_print;
				CREATE TABLE t_dekl_def_print
				SELECT _RecGUID AS deklGUID,doc_ID,LP,
				nr_readable,
				opis_readable,
				nazwa_pola_t,
				IFNULL(temp_table_name,@doc_ID_table) AS temp_table_name,
				pdf_wsp_l ,
				pdf_wsp_2,
				pdf_typ,
				pdf_strona,
				IFNULL(pdf_czcionka,@default_pdf_czcionka) AS czcionka,
				IFNULL(pdf_txt_kolor, @default_pdf_txt_kolor) AS kolor 
			FROM e_dekl_def_po WHERE doc_ID=@doc_ID AND pdf_typ>0 AND nie_obslugujemy=0 ORDER BY lp;
			ALTER TABLE t_dekl_def_print ADD COLUMN wartosc VARCHAR(100)  NOT NULL DEFAULT '' AFTER nazwa_pola_t ;
		END IF;
		IF _MODE LIKE '%ips' THEN
			DROP TABLE IF EXISTS  t_dekl_def_print;
				CREATE  TABLE t_dekl_def_print
				SELECT _RecGUID AS deklGUID,doc_ID,lp,
				nr_readable,
				opis_readable,
				nazwa_pola_t,
				IFNULL(temp_table_name,@doc_ID_table) AS temp_table_name,
				ips_nr_pola,
				ips_symbol_pola,
				ips_nazwa_pola,
				ips_typ
			FROM e_dekl_def_po WHERE doc_ID=@doc_ID AND ips_typ>0 AND nie_obslugujemy=0 ORDER BY lp;
			ALTER TABLE t_dekl_def_print ADD COLUMN wartosc VARCHAR(100)  NOT NULL DEFAULT '' AFTER nazwa_pola_t ;
		END IF;
		IF _MODE LIKE '%xml' THEN
			DROP TABLE IF EXISTS t_dekl_def_print;
				CREATE TABLE t_dekl_def_print
					SELECT t.doc_ID,t.guid,t.opis_readable,t.nazwa_pola_t,t.xml_nazwa,t.nie_obslugujemy,t.xml_var,
						IFNULL(t.temp_table_name,@doc_ID_table) AS temp_table_name,
						t.xml_typ,t.xml_symbol,t.xml_child,t.xml_grupa,ifnull(t.xml_atrybut,'') as xml_atrybut,t.xml_lp AS lp,t.xml_parent,t.xml_sequence,0 AS poziom 
					FROM e_dekl_def_po t 
					WHERE 
						t.xml_symbol='Deklaracja' and t.doc_ID in (@doc_ID,@zalaczniki) AND t.xml_typ>0  ORDER BY xml_lp;
				INSERT INTO t_dekl_def_print
					SELECT t.doc_ID,t.guid,t.opis_readable,
						t.nazwa_pola_t,t.xml_nazwa,t.nie_obslugujemy,t.xml_var,
						IFNULL(t.temp_table_name,@doc_ID_table) AS temp_table_name,
						t.xml_typ,t.xml_symbol,t.xml_child,t.xml_grupa,ifnull(t.xml_atrybut,'') as xml_atrybut,t.xml_lp,t.xml_parent,t.xml_sequence,1 AS poziom 
					FROM e_dekl_def_po t, t_dekl_def_print tw 
					WHERE 
						t.xml_parent=tw.xml_grupa AND tw.poziom=0 
						AND t.xml_typ>0 and t.doc_ID in (@doc_ID,@zalaczniki) ORDER BY t.xml_lp;
				INSERT INTO t_dekl_def_print
					SELECT t.doc_ID,t.guid,t.opis_readable,
						t.nazwa_pola_t,t.xml_nazwa,t.nie_obslugujemy,t.xml_var,
						IFNULL(t.temp_table_name,@doc_ID_table) AS temp_table_name,t.xml_typ,t.xml_symbol,t.xml_child,t.xml_grupa,ifnull(t.xml_atrybut,'') as xml_atrybut,t.xml_lp,t.xml_parent,t.xml_sequence,2 AS poziom 
					FROM e_dekl_def_po t, t_dekl_def_print tw 
					WHERE 
						t.xml_parent=tw.xml_grupa AND tw.poziom=1 
						AND t.xml_typ>0 and t.doc_ID in (@doc_ID,@zalaczniki) ORDER BY t.xml_lp;
				INSERT INTO t_dekl_def_print
					SELECT t.doc_ID,t.guid,t.opis_readable,
						t.nazwa_pola_t,t.xml_nazwa,t.nie_obslugujemy,t.xml_var,
						IFNULL(t.temp_table_name,@doc_ID_table) AS temp_table_name,t.xml_typ,t.xml_symbol,t.xml_child,t.xml_grupa,ifnull(t.xml_atrybut,'') as xml_atrybut,t.xml_lp,t.xml_parent,t.xml_sequence,3 AS poziom 
					FROM e_dekl_def_po t, t_dekl_def_print tw 
					WHERE 
						t.xml_parent=tw.xml_grupa AND tw.poziom=2 
						AND t.xml_typ>0 and t.doc_ID in (@doc_ID,@zalaczniki) ORDER BY t.xml_lp;
				INSERT INTO t_dekl_def_print
					SELECT t.doc_ID,t.guid,t.opis_readable,
						t.nazwa_pola_t,t.xml_nazwa,t.nie_obslugujemy,t.xml_var,
						IFNULL(t.temp_table_name,@doc_ID_table) AS temp_table_name,t.xml_typ,t.xml_symbol,t.xml_child,t.xml_grupa,ifnull(t.xml_atrybut,'') as  xml_atrybut,t.xml_lp,t.xml_parent,t.xml_sequence,4 AS poziom 
					FROM e_dekl_def_po t, t_dekl_def_print tw 
					WHERE 
						t.xml_parent=tw.xml_grupa AND tw.poziom=3 
						AND t.xml_typ>0 and t.doc_ID in (@doc_ID,@zalaczniki) ORDER BY t.xml_lp;
			ALTER TABLE t_dekl_def_print ADD COLUMN wartosc VARCHAR(100)  NOT NULL DEFAULT '' AFTER nazwa_pola_t ;
		END IF;
		BEGIN
		DECLARE _Local_SRCGUID VARCHAR(38);
		DECLARE _done BOOL DEFAULT FALSE;
		DECLARE _c_proc CURSOR FOR
			SELECT 
				nazwa_pola_t
			FROM t_dekl_def_print WHERE nazwa_pola_t IS NOT NULL ORDER BY lp;
			DECLARE CONTINUE HANDLER FOR NOT FOUND SET _done = TRUE;
		OPEN _c_proc;
			loop_for_all: LOOP
				FETCH _c_proc INTO
					_Local_SRCGUID
				;
				IF _done THEN
					LEAVE loop_for_all;
				ELSE
		CALL e_dekl_print_tools('GET_DATA','',_RecGUID,'','','','','','',_Local_SRCGUID,_Param_C);     
			END IF;
			END LOOP;
		CLOSE _c_proc;
	END; 
		IF _MODE LIKE '%.pdf' THEN
			 UPDATE t_dekl_def_print SET wartosc='x' WHERE pdf_typ=2 AND wartosc<>0;
			 DELETE FROM t_dekl_def_print  WHERE pdf_typ=2 AND wartosc='';
			-- create table ta_pdf_dekl_print
			 INSERT IGNORE INTO ta_pdf_dekl_print
			 SELECT 0 AS STATUS,t.* FROM t_dekl_def_print t WHERE  IF(_Param_C='TEST',TRUE,IFNULL(pdf_wsp_l,'') <>'' AND IFNULL(pdf_wsp_l,'') <>'' )  AND
			 IF(@default_drukowac_0,TRUE,wartosc<>0); 
			 SET @txt_all='by_python';
			END IF; 
		IF _MODE LIKE '%.ips' THEN
		--	 SELECT * FROM t_dekl_def_print WHERE  
		 --	 IF(@default_drukowac_0,TRUE,wartosc<>0); 
			 SELECT GROUP_CONCAT(ips_symbol_pola,'=',IF(wartosc IN ('x','------'),1,wartosc) ORDER BY lp SEPARATOR '\n')
			  INTO @txt_dane
			 FROM t_dekl_def_print WHERE wartosc<>''
			 GROUP BY deklGUID;
			 SET @ile_form:=@ile_form+1;
			 SET @txt_all=CONCAT(IFNULL(@txt_all,1),
			 '[Form_',@ile_form,']\n',
			 @txt_nag_one,
			 @txt_dane,'\n','\n');
		END IF; 
		IF _MODE LIKE '%.xml' THEN
		-- na wszelki wypadek zerowanie @
			SET 
				@var_TKwota2Nieujemna='',
				@var_TKwota2Nieujemna_opis='',
				@znacznik_xml='',
				@txt='';
		-- dodanie wartosci 0 dla nieobslugiwanych przez nas pol wymaganych przez xml
			UPDATE t_dekl_def_print set wartosc=0 where nie_obslugujemy;
		-- usuwanie wszystkich danych sekwencji jezeli glowne jest puste 
			DROP TEMPORARY TABLE IF EXISTS t_xml_def_sequence;
			CREATE TEMPORARY TABLE t_xml_def_sequence
			SELECT DISTINCT(xml_sequence)AS xml_sequence ,0 AS delete_sequence FROM t_dekl_def_print WHERE ifnull(xml_sequence,'')<>'';
			UPDATE t_xml_def_sequence ts,t_dekl_def_print t
			SET ts.delete_sequence=IF(t.wartosc='',1,0) WHERE ts.xml_sequence=t.xml_symbol  OR ts.xml_sequence=t.xml_grupa;
			DELETE t.* FROM t_xml_def_sequence ts,t_dekl_def_print t WHERE ts.xml_sequence=t.xml_sequence AND ts.delete_sequence;
		-- Czyszczenie pol wyboru i danych bez wartosci na ktore nie ma ograniczenia ewentualny format do wymagan xsd
			DELETE FROM t_dekl_def_print WHERE xml_typ=2 AND wartosc='';
			DELETE from t_dekl_def_print where xml_var='TWybor1' and wartosc not in (1);
			DELETE from t_dekl_def_print where xml_var='TWybor1_2' and wartosc not in (1,2);
			DELETE from t_dekl_def_print where xml_var='TWybor1_3' and wartosc not in (1,2,3);
			DELETE from t_dekl_def_print where xml_var='TZnakowy' and wartosc =''; 
			UPDATE  t_dekl_def_print set wartosc=replace(wartosc,'-','') where xml_var='TNrNIP';
			UPDATE  t_dekl_def_print set wartosc=_rnd2(wartosc) where  xml_var='TKwota2Nieujemna';
			UPDATE  t_dekl_def_print set wartosc=_VarINT(wartosc) where  xml_var='TKwotaCNieujemna';
		-- na wszelki wypadek sprawdzanie 	pol ktore nie moga byc mniejsze od 0 kiedys moze bedzie przeniesione do sekcji walidacji...
			SELECT COUNT(t.xml_symbol) AS ile, GROUP_CONCAT('symbol: ',t.xml_symbol,' wartosc: ',t.wartosc,' opis: ',opis_readable SEPARATOR '\n' ) 
   INTO @var_TKwota2Nieujemna,@var_TKwota2Nieujemna_opis
			FROM t_dekl_def_print t WHERE xml_var in ('TKwota2Nieujemna','TKwotaCNieujemna') AND  t.wartosc <0;
			IF @var_TKwota2Nieujemna THEN
    SELECT concat( 'W ponizszych polach znajduje sie niedozwolona kwota mniejsza od zera \n',
								@var_TKwota2Nieujemna_opis) INTO @txt ;
			ELSE
    SELECT   CONCAT('<',t.xml_symbol,IF(t.xml_atrybut<>'',CONCAT(' ',t.xml_atrybut),''),'>\n' ,IF(t.xml_child>0,
    (SELECT   GROUP_CONCAT('\n  <',t2.xml_symbol,IF(t2.xml_atrybut<>'',CONCAT(' ',t2.xml_atrybut),''),'>' ,IF(t2.xml_child>0,
    (SELECT   GROUP_CONCAT('\n    <',t3.xml_symbol,IF(t3.xml_atrybut<>'',CONCAT(' ',t3.xml_atrybut),''),'>' ,IF(t3.xml_child>0,
    (SELECT   GROUP_CONCAT('\n      <',t4.xml_symbol,IF(t4.xml_atrybut<>'',CONCAT(' ',t4.xml_atrybut),''),'>' ,IF(t4.xml_child>0,
    (SELECT   GROUP_CONCAT('\n        <',t5.xml_symbol,IF(t5.xml_atrybut<>'',CONCAT(' ',t5.xml_atrybut),''),'>' ,IF(t5.xml_child>0,
    (SELECT   GROUP_CONCAT('\n           <',t6.xml_symbol,IF(t6.xml_atrybut<>'',CONCAT(' ',t6.xml_atrybut),''),'>' ,IF(t6.xml_child>0,
    'dalej nie ma i tak trzeba zrobic petle'
    ,t6.wartosc) ,'</',t6.xml_symbol,'>' SEPARATOR '\n')  FROM t_dekl_def_print t6 WHERE   poziom=5 AND t6.xml_parent=t5.xml_grupa )
    ,t5.wartosc) ,IF(t5.xml_child>0,'      </','</'),t5.xml_symbol,'>\n' SEPARATOR '\n')FROM t_dekl_def_print t5 WHERE   poziom=4 AND t5.xml_parent=t4.xml_grupa )
    ,t4.wartosc) ,IF(t4.xml_child>0,'      </','</'),t4.xml_symbol,'>\n' SEPARATOR '\n')  FROM t_dekl_def_print t4 WHERE   poziom=3 AND t4.xml_parent=t3.xml_grupa )
    ,t3.wartosc) ,IF(t3.xml_child>0,'    </','</'),t3.xml_symbol,'>\n' SEPARATOR '\n')  FROM t_dekl_def_print t3 WHERE   poziom=2 AND t3.xml_parent=t2.xml_grupa )
    ,t2.wartosc) ,IF(t2.xml_child>0,'  </','</'),t2.xml_symbol,'>\n' SEPARATOR '\n')  FROM t_dekl_def_print t2 WHERE   poziom=1 AND t2.xml_parent=t.xml_grupa )
    ,t.wartosc) ,'</',t.xml_symbol,'>' ) AS txt_xml
    INTO @txt
    FROM t_dekl_def_print t WHERE poziom=0;
			END IF;
			-- wwszystko ponizsze do przerobienia  - lipa_na_szybko
			SET @znacznik_xml = '<?xml version="1.0" encoding="UTF-8"?>\n';
			SET @txt=REPLACE(@txt,'>\n','lipa_na_szybko') ;
			SET @txt=REPLACE(@txt,'\n','') ;
			SET @txt=REPLACE(@txt,'lipa_na_szybko','>\n') ;
			SET @txt=concat(@znacznik_xml,@txt) ;
			SELECT @txt;
		END IF; 
	END IF;
	IF _MODE ='GET_DATA' THEN
		SET _PARAM_A= (SELECT temp_table_name FROM t_dekl_def_print WHERE nazwa_pola_t=_Param_B);
		SET _SQLText =' 
		update t_dekl_def_print td, #tabela# t
		set td.wartosc=t.#nazwa_pola_t#
	 	where td.nazwa_pola_t="#nazwa_pola_t#"
		and 
	 	t.guid="#recguid#"';	
		SET _SQLText =	REPLACE(_SQLText, '#tabela#', _PARAM_A);
		SET _SQLText =	REPLACE(_SQLText, '#nazwa_pola_t#', _PARAM_B);
		SET _SQLText =	REPLACE(_SQLText, '#recguid#', _RecGUID);
	SET @_SQLText =	_SQLText;
		CALL _ExecuteCmd(_SQLText, @Error);
	END IF;
END$$

DELIMITER ;
