 DELIMITER $$

DROP PROCEDURE IF EXISTS `fr_ht_zest_jpk`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `fr_ht_zest_jpk`(
    IN _MODE VARCHAR(38),
    IN _GUID VARCHAR(38),
    IN _rok VARCHAR(38),
    IN _miesiac VARCHAR(38),
    IN _NaDzien VARCHAR(10),
    IN _OdDnia VARCHAR(10),
    IN _DoDnia VARCHAR(10),
    IN _XML LONGTEXT,
    IN _Param_A VARCHAR(50),
    IN _Param_B VARCHAR(50), -- okresla numer pliku za dany okres dla JPK VAT3, okresla magazyn dla JPK MAG, okresla konto dla JPK WB
    IN _Param_C VARCHAR(50), -- okresla czy wybieramy opcje DEBUG czy generowanie zestawienia
    IN _Param_D VARCHAR(50)  -- okresla wybrane zestawienie JPK
    )
SPROC: BEGIN
    DECLARE _S LONGTEXT;
    DECLARE _XML LONGTEXT;
    DECLARE _XMLnag LONGTEXT;
    DECLARE _XMLnag2 LONGTEXT;
    DECLARE _XMLpoz LONGTEXT;
    DECLARE _XMLpoz1 LONGTEXT;
    DECLARE _XMLpoz_s LONGTEXT;
    DECLARE _XMLpoz_z LONGTEXT;
    DECLARE _XMLpoz_p LONGTEXT;
    DECLARE _KodUS VARCHAR(50);
    DECLARE _NIP VARCHAR(50);
    DECLARE _REGON VARCHAR(50);
    DECLARE _PelnaNazwa VARCHAR(255); -- nazwa podmiotu wystawiajacego jpk
    DECLARE _Adres VARCHAR(255); -- adres podmiotu wystawiajacego jpk (fa), co jest glupota zupelna
    DECLARE _zm01 VARCHAR(255);
    DECLARE cSL INT(11);
    DECLARE _liczba_wierszy INT(11);
    DECLARE _wartosc_faktur VARCHAR(18);
    DECLARE _wartosc_dok VARCHAR(18);
    DECLARE _wartosc_dok2 VARCHAR(18);
    DECLARE _podatek_s VARCHAR(18);
    DECLARE _podatek_z VARCHAR(18);
    DECLARE _proc_struktura DOUBLE(16,2);
    DECLARE _waluta VARCHAR(3);
    DECLARE _numer_rachunku VARCHAR(50);
    DECLARE _nrkasy INT(11);
    DECLARE _rokbo SMALLINT(11);
    DECLARE _saldo_poczatkowe VARCHAR(18);
    DECLARE _saldo_koncowe VARCHAR(18);

    DECLARE _stawka1 VARCHAR(6); -- Tprocentowy, 5 cyfr, 2 po przecinku, razem 6 znakow
    DECLARE _stawka2 VARCHAR(6);
    DECLARE _stawka3 VARCHAR(6);
    DECLARE _stawka4 VARCHAR(6);
    DECLARE _stawka5 VARCHAR(6);

    SET cSL := 2;

    SET _GUID = IFNULL(_GUID, '');
    SET SESSION group_concat_max_len = 1024*1024*1024;
               
/*
Procedura dla zestawien dla JPK (jednolity plik kontrolny) na potrzeby kontroli skarbowej
Zgodnie z: http://www.mf.gov.pl/kontrola-skarbowa/dzialalnosc/jednolity-plik-kontrolny

SET @session.globals.Owner='CRIST';
CALL fr_ht_zest_jpk('LISTA', '', '', '', '', '2016-05-01','2016-05-30', '', '', '', '','');
CALL fr_ht_zest_jpk('JPK_VAT', '', '', '', '', '2016-05-01','2016-05-30', '', '', '', '','');
CALL fr_ht_zest_jpk('JPK_VAT2', '', '', '', '', '2017-01-01','2017-01-31', '', 'RAPORT_', '', '','');
CALL fr_ht_zest_jpk('JPK_VAT3', '', '', '', '', '2019-01-01','2019-01-31', '', 'RAPORT_', '', '','');
CALL fr_ht_zest_jpk('JPK_FA', '', '', '', '', '2022-05-01','2022-05-31', '', 'RAPORT_', '978', '','');
CALL fr_ht_zest_jpk('JPK_MAG', '', '', '', '', '2018-05-01','2018-05-03', '', 'RAPORT_', '110', '','');
CALL fr_ht_zest_jpk('JPK_KR', '', '', '', '', '2021-01-01','2021-03-31', '', 'RAPORT', '', '','');
CALL fr_ht_zest_jpk('JPK_KR_PD', '', '', '', '', '2025-01-01','2025-03-31', '', 'RAPORT_', '', '','');

uprawnienia:
INSERT INTO uprawnienia_dict
SET miejsce='JPK|Execute', core_id='JPK|Execute', opis='Jednolite pliki kontrolne', rodzaj=11, poziom=0;

INSERT INTO uprawnienia (login, miejsce, poziom, rodzaj, opis, ValueList, upr_type, core_id, osobaguid)
VALUES('jmam','JPK|Execute','1','11','Jednolity plik kontroli','Nieaktywana\rTylko oglądanie\rWprowadzanie\rEdycja poz.własnych\rEdycja\rUsuwanie','.','JPK|Execute',
(SELECT guid FROM osoby WHERE idnuser='jmam'));

insert into `IReg` (`IdPath`, `IdKey`, `IdVal`, `SecureLevel`, `NotUsed`, `valuex`, `ValueN`, `ValueI`, `ValueB`, `ValueD`, `ValueT`, `ValueBlob`, `ValueA`, `guid`, `Opis`, `rok`)
values('INT\\SYSTEM\\MOTLAWA\\DeklaracjeVAT','JPK_definicja_z_VAT7','3','0','0',NULL,'0.0000','0','0',NULL,'00:00:00',NULL,'VAT-7 (17) / VAT-7K (11)','f2fd352d0435809bd0f983ec53c27a32',NULL,'0');


SELECT valuea, i.* FROM IReg i WHERE idpath LIKE '%owner%' OR idpath LIKE '%dane%firmy%'
OR idpath LIKE '%vat7%' ORDER BY idkey;

Jesli _Param_A = 'RAPORT' to dla vat2/vat3/mag/fa tworzone są tylko tabele tymczasowe z danymi, bez generowania pliku xml

Wykorzystwane zmmienne systemowe:
@session.globals.Owner - wlasciciel aplikacji, wpis z tabeli _db_globals

@session.HT.IR.RV_DodajBezOdliczenDoNetto - dodaj wartosci pozycji ze stawka "bez odliczen" (nr 18) do kwoty netto
w rejestrze vat. Decyduje o tym klucz "RV_DodajBezOdliczenDoNetto" domyslnie ustawiony na nie

####dodac wykorzystywanie nowej adresacji o czym decyduje klucz DOC_with_AdrLink z _db_globals

laczenie daneych z dwoch baz;
SET @session.globals.Owner='IZOHAN';

USE izolex;
CALL fr_ht_zest_jpk('JPK_VAT3', '', '', '', '', '2018-01-01','2018-01-31', '', 'RAPORT', '', '','');

USE ht;
CALL fr_ht_zest_jpk('JPK_VAT3', '', '', '', '', '2018-01-01','2018-01-31', '', 'SUMA', '', '','');

*/

IF (_MODE = 'LISTA') THEN

-- SET NAMES "cp1250";

	DROP TABLE IF EXISTS t_lista;
	CREATE TEMPORARY TABLE t_lista (
	_mode VARCHAR(20),
	_OdDnia VARCHAR(20),
	_DoDnia VARCHAR(20),
	_zmienna_koncowa VARCHAR(20),
	_opis VARCHAR(50),
	_nazwa_pliku VARCHAR(100)
	) DEFAULT CHARSET=utf8;

	INSERT INTO t_lista VALUES
	-- ('JPKV7M','OdDnia','DoDnia','_XML','Ewidencje zakupu i sprzedazy JPKV7M','JPKV7M'),
	-- ('JPKV7K','OdDnia','DoDnia','_XML','Ewidencje zakupu i sprzedazy JPKV7K','JPKV7K'),
	('JPK_KR','OdDnia','DoDnia','_XML','Ksiegi rachunkowe','JPK_KR'),
	('JPK_WB','OdDnia','DoDnia','_XML','Wyciag bankowy','JPK_WB'),
	('JPK_MAG','OdDnia','DoDnia','_XML','Magazyn','JPK_MAG'),
--                 ('JPK_VAT','OdDnia','DoDnia','_XML','Ewidencje zakupu i sprzedazy VAT','JPK_VAT'),
--                 ('JPK_VAT2','OdDnia','DoDnia','_XML','Ewidencje zakupu i sprzedazy VAT (2)','JPK_VAT2'),
	('JPK_VAT3','OdDnia','DoDnia','_XML','Ewidencje zakupu i sprzedazy VAT (3)','JPK_VAT3'),
	-- ('JPK_FA','OdDnia','DoDnia','_XML','Faktury VAT','JPK_FA (3)'),
	('JPK_FA4','OdDnia','DoDnia','_XML','Faktury VAT','JPK_FA (4)'),
	('JPK_PKPIR2','OdDnia','DoDnia','_XML','Podatkowa ksiega przychodow i rozchodow (2)','JPK_PKPIR2'),
	('JPK_KR_PD','OdDnia','DoDnia','_XML','Ksiegi rachunkowe - podatki','JPK_KR_PD')
;

	SELECT * FROM t_lista;

	DROP TABLE IF EXISTS t_lista;

END IF; -- LISTA

IF _MODE IN ('JPK_KR_PD') THEN

	CALL e_dekl_jpk_dane('JPK_KR_PD_DANE', '', '', '', '', _OdDnia, _DoDnia, '', '_RAPORT', '', '','');

END IF;




	
	IF _MODE IN ('JPKV7M','JPKV7K') THEN
	
		SET @test10 = concat('wywolanie jpk_v7m raport', _OdDnia, _DoDnia);
		CALL e_dekl_jpk('JPK_V7M', '', '','', '', _OdDnia,_DoDnia, '','', 'RAPORT', '', '', '');
	
	END IF;



	IF (_MODE = 'NAGLOWEK') THEN

	DROP TABLE IF EXISTS t_jpk;
	CREATE TEMPORARY TABLE t_jpk (
					guid VARCHAR(38),
					xmlnag LONGTEXT,
					xmlnag2 LONGTEXT,
					xmlpoz1 LONGTEXT,
					xmlpoz2 LONGTEXT,
					xmlpoz3 LONGTEXT,
					xmlpoz4 LONGTEXT,
	KEY guid (guid)) DEFAULT CHARSET=utf8;

	INSERT INTO t_jpk VALUES (_Param_D,'','','','','','');

	SET NAMES "utf8";

	SET @xml.IC = 1;
	SET _XMLnag = '<?xml version="1.0" encoding="UTF-8"?>\n';
    SET _XMLnag = CONCAT(_XMLnag,


	CASE WHEN _Param_D='JPK_EWP' THEN CONCAT('<JPK xmlns="http://jpk.mf.gov.pl/wzor/2016/03/09/03097/"\n'
																								'xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2016/01/25/eD/DefinicjeTypy/">\n')

	WHEN _Param_D='JPK_PKPIR2' THEN CONCAT('<JPK xmlns="http://jpk.mf.gov.pl/wzor/2016/10/26/10262/"\n'
																								'xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2016/01/25/eD/DefinicjeTypy/">\n')

	WHEN _Param_D='JPK_VAT' THEN CONCAT('<JPK xmlns="http://jpk.mf.gov.pl/wzor/2016/03/09/03094/"\n',
																								'xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2016/01/25/eD/DefinicjeTypy/"\n',
																								'xmlns:kck="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2013/05/23/eD/KodyCECHKRAJOW/"\n',
																								'xmlns:tns="http://jpk.mf.gov.pl/wzor/2016/03/09/03094/">\n')

	WHEN _Param_D='JPK_VAT2' THEN CONCAT('<JPK ',
																								'xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2016/01/25/eD/DefinicjeTypy/"\n',
																								'xmlns:kck="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2013/05/23/eD/KodyCECHKRAJOW/"\n',
																								'xmlns:tns="http://jpk.mf.gov.pl/wzor/2016/10/26/10261/"\n',
																								'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\n')

	WHEN _Param_D='JPK_VAT3' THEN CONCAT('<JPK xmlns="http://jpk.mf.gov.pl/wzor/2017/11/13/1113/"\n',
																								'xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2016/01/25/eD/DefinicjeTypy/"\n',
																								'xmlns:xsd="http://www.w3.org/2001/XMLSchema">\n')

	WHEN _Param_D='JPK_FA' THEN CONCAT('<JPK xmlns="http://jpk.mf.gov.pl/wzor/2019/09/27/09271/"\n',
																								'xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2018/08/24/eD/DefinicjeTypy/">\n')

	WHEN _Param_D='JPK_FA4' THEN CONCAT('<JPK xmlns="http://jpk.mf.gov.pl/wzor/2022/02/17/02171/"\n',
																								'xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2018/08/24/eD/DefinicjeTypy/">\n')


	WHEN _Param_D='JPK_MAG' THEN CONCAT('<JPK xmlns="http://jpk.mf.gov.pl/wzor/2016/03/09/03093/"\n',
																								'xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2016/01/25/eD/DefinicjeTypy/"\n', 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n', 'xsi:schemaLocation="http://jpk.mf.gov.pl/wzor/2016/03/09/03093/ Schemat_JPK_MAG(1)_v1-0.xsd">\n')

	WHEN _Param_D='JPK_KR' THEN CONCAT('<JPK xmlns="http://jpk.mf.gov.pl/wzor/2016/03/09/03091/"\n',
																								'xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2016/01/25/eD/DefinicjeTypy/">\n')

	WHEN _Param_D='JPK_WB' THEN CONCAT('<JPK xmlns="http://jpk.mf.gov.pl/wzor/2016/03/09/03092/"\n',
																								'xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2016/01/25/eD/DefinicjeTypy/">\n')

	END
	);

-- <Naglowek>
	SET _KodUS = '';
	SELECT _varSTR_NOTNULL(kod_urzedu) INTO _KodUS FROM US
					WHERE  guid = (SELECT valueA FROM IReg WHERE idpath='INT\\SYSTEM\\MOTLAWA\\DaneFirmy' AND idkey='Urzad_skarbowy');

	IF IFNULL(_KodUS,'') = '' THEN
					SELECT _varSTR_NOTNULL(kod_urzedu) INTO _KodUS FROM urzedy_skarbowe
					WHERE  kod_urzedu = (SELECT valueA FROM IReg WHERE idpath='INT\\SYSTEM\\MOTLAWA\\DaneFirmy' AND idkey='Urzad_skarbowy');
	END IF;

	IF _Param_D NOT IN ('JPK_FA','JPK_FA4','JPK_MAG','JPK_KR','JPK_WB','JPK_PKPIR2','JPK_EWP') THEN
		SET @xml.IC = 0;
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC), '<Naglowek>\n');
		SET @xml.IC = @xml.IC + 1;

		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC), '<KodFormularza kodSystemowy="',
						CASE WHEN _Param_D='JPK_PKPIR2' THEN 'JPK_PKPIR (2)'
								WHEN _Param_D='JPK_VAT' THEN 'JPK_VAT (1)'
								WHEN _Param_D='JPK_VAT2' THEN 'JPK_VAT (2)'
								WHEN _Param_D='JPK_VAT3' THEN 'JPK_VAT (3)'
						END,
						'" wersjaSchemy="',IF(_Param_D='JPK_VAT3','1-1', '1-0'), '">',IF(_Param_D IN ('JPK_VAT2','JPK_VAT3'),'JPK_VAT',_Param_D),'</KodFormularza>\n');

		IF _Param_D NOT IN ('JPK_VAT2','JPK_VAT3') THEN
			SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<WariantFormularza>', 1,'</WariantFormularza>\n');
		END IF;
		IF _Param_D IN ('JPK_VAT2') THEN
			SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<WariantFormularza>', 2,'</WariantFormularza>\n');
		END IF;
		IF _Param_D IN ('JPK_VAT3') THEN
			SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<WariantFormularza>', 3,'</WariantFormularza>\n');
		END IF;
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<CelZlozenia>', IF(_Param_B <> '', _Param_B, IF(_Param_D='JPK_VAT3',0,1)), '</CelZlozenia>\n');
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<DataWytworzeniaJPK>',CURRENT_DATE,'T',CURRENT_TIME,'</DataWytworzeniaJPK>\n');
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<DataOd>', _OdDnia, '</DataOd>\n');
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<DataDo>', _DoDnia, '</DataDo>\n');

		IF _Param_D IN ('JPK_VAT3') THEN
			SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<NazwaSystemu>', 'Pakiet Motława', '</NazwaSystemu>\n');
		ELSE
			SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<DomyslnyKodWaluty>', 'PLN', '</DomyslnyKodWaluty>\n');
			SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<KodUrzedu>', _KodUS, '</KodUrzedu>\n');
		END IF;

		SET @xml.IC = @xml.IC - 2;
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '</Naglowek>\n');
	END IF;


	IF _Param_D = 'JPK_FA' THEN
		SET _XMLnag = CONCAT(_XMLnag,'<Naglowek>\n',' <KodFormularza kodSystemowy="','JPK_FA (3)',
						'" wersjaSchemy="','1-0','">',_Param_D,'</KodFormularza>\n',
						' <WariantFormularza>', 3,'</WariantFormularza>\n',
						' <CelZlozenia>', 1,'</CelZlozenia>\n',
						' <DataWytworzeniaJPK>',CURRENT_DATE,'T',CURRENT_TIME,'</DataWytworzeniaJPK>\n',
						' <DataOd>', _OdDnia, '</DataOd>\n',
						' <DataDo>', _DoDnia, '</DataDo>\n',
						-- ' <DomyslnyKodWaluty>', _waluta, '</DomyslnyKodWaluty>\n',
						' <KodUrzedu>', _KodUS, '</KodUrzedu>\n',
						'</Naglowek>\n'
						);
	END IF;

	IF _Param_D = 'JPK_FA4' THEN
		SET _XMLnag = CONCAT(_XMLnag,'<Naglowek>\n',' <KodFormularza kodSystemowy="','JPK_FA (4)',
						'" wersjaSchemy="','1-0','">','JPK_FA','</KodFormularza>\n',
						' <WariantFormularza>', 4,'</WariantFormularza>\n',
						' <CelZlozenia>', 1,'</CelZlozenia>\n',
						' <DataWytworzeniaJPK>',CURRENT_DATE,'T',CURRENT_TIME,'</DataWytworzeniaJPK>\n',
						' <DataOd>', _OdDnia, '</DataOd>\n',
						' <DataDo>', _DoDnia, '</DataDo>\n',
						-- ' <DomyslnyKodWaluty>', _waluta, '</DomyslnyKodWaluty>\n',
						' <KodUrzedu>', _KodUS, '</KodUrzedu>\n',
						'</Naglowek>\n'
						);
	END IF;


	IF _Param_D = 'JPK_MAG' THEN
		SET _XMLnag = CONCAT(_XMLnag,'<Naglowek>\n',' <KodFormularza kodSystemowy="','JPK_MAG (1)',
						'" wersjaSchemy="','1-0','">',_Param_D,'</KodFormularza>\n',
						' <WariantFormularza>', 1,'</WariantFormularza>\n',
						' <CelZlozenia>', 1,'</CelZlozenia>\n',
						' <DataWytworzeniaJPK>',CURRENT_DATE,'T',CURRENT_TIME,'</DataWytworzeniaJPK>\n',
						' <DataOd>', _OdDnia, '</DataOd>\n',
						' <DataDo>', _DoDnia, '</DataDo>\n',
						' <DomyslnyKodWaluty>', 'PLN', '</DomyslnyKodWaluty>\n',
						' <KodUrzedu>', _KodUS, '</KodUrzedu>\n',
						'</Naglowek>\n'
						);
	END IF;

	IF _Param_D = 'JPK_KR' THEN
		SET _XMLnag = CONCAT(_XMLnag,'<Naglowek>\n',' <KodFormularza kodSystemowy="','JPK_KR (1)',
						'" wersjaSchemy="','1-0','">',_Param_D,'</KodFormularza>\n',
						' <WariantFormularza>', 1,'</WariantFormularza>\n',
						' <CelZlozenia>', 1,'</CelZlozenia>\n',
						' <DataWytworzeniaJPK>',CURRENT_DATE,'T',CURRENT_TIME,'</DataWytworzeniaJPK>\n',
						' <DataOd>', _OdDnia, '</DataOd>\n',
						' <DataDo>', _DoDnia, '</DataDo>\n',
						' <DomyslnyKodWaluty>', 'PLN', '</DomyslnyKodWaluty>\n',
						' <KodUrzedu>', _KodUS, '</KodUrzedu>\n',
						'</Naglowek>\n'
						);
	END IF;

	IF _Param_D = 'JPK_WB' THEN
		SELECT w.symbol, REPLACE(b.konto,' ',''), b.idn
		INTO _waluta, _numer_rachunku, _nrkasy
		FROM banki b INNER JOIN waluty w ON b.waluta = w.idn WHERE b.NazwaKonta = _Param_B;
		SET _XMLnag = CONCAT(_XMLnag,'<Naglowek>\n',' <KodFormularza kodSystemowy="','JPK_WB (1)',
						'" wersjaSchemy="','1-0','">',_Param_D,'</KodFormularza>\n',
						' <WariantFormularza>', 1,'</WariantFormularza>\n',
						' <CelZlozenia>', 1,'</CelZlozenia>\n',
						' <DataWytworzeniaJPK>',CURRENT_DATE,'T',CURRENT_TIME,'</DataWytworzeniaJPK>\n',
						' <DataOd>', _OdDnia, '</DataOd>\n',
						' <DataDo>', _DoDnia, '</DataDo>\n',
						' <DomyslnyKodWaluty>', _waluta, '</DomyslnyKodWaluty>\n',
						' <KodUrzedu>', _KodUS, '</KodUrzedu>\n',
						'</Naglowek>\n'
						);
	END IF;

	IF _Param_D = 'JPK_PKPIR2' THEN
		SELECT w.symbol INTO _waluta FROM waluty w WHERE w.idn = _Param_B;
		SET _XMLnag = CONCAT(_XMLnag,'<Naglowek>\n',' <KodFormularza kodSystemowy="','JPK_PKPIR (2)',
						-- '" wersjaSchemy="','1-0','">',_Param_D,'</KodFormularza>\n',
						'" wersjaSchemy="','1-0','">','JPK_PKPIR','</KodFormularza>\n',
						' <WariantFormularza>', 2,'</WariantFormularza>\n',
						' <CelZlozenia>', 1,'</CelZlozenia>\n',
						' <DataWytworzeniaJPK>',CURRENT_DATE,'T',CURRENT_TIME,'</DataWytworzeniaJPK>\n',
						' <DataOd>', _OdDnia, '</DataOd>\n',
						' <DataDo>', _DoDnia, '</DataDo>\n',
						' <DomyslnyKodWaluty>', IFNULL(_waluta,'PLN'), '</DomyslnyKodWaluty>\n',
						' <KodUrzedu>', _KodUS, '</KodUrzedu>\n',
						'</Naglowek>\n'
						);
	END IF;

	IF _Param_D = 'JPK_EWP' THEN
		SELECT w.symbol INTO _waluta FROM waluty w WHERE w.idn = _Param_B;
		SET _XMLnag = CONCAT(_XMLnag,'<Naglowek>\n',' <KodFormularza kodSystemowy="','JPK_EWP (1)',
						'" wersjaSchemy="','1-0','">',_Param_D,'</KodFormularza>\n',
						' <WariantFormularza>', 1,'</WariantFormularza>\n',
						' <CelZlozenia>', 1,'</CelZlozenia>\n',
						' <DataWytworzeniaJPK>',CURRENT_DATE,'T',CURRENT_TIME,'</DataWytworzeniaJPK>\n',
						' <DataOd>', _OdDnia, '</DataOd>\n',
						' <DataDo>', _DoDnia, '</DataDo>\n',
						' <DomyslnyKodWaluty>', IFNULL(_waluta,'PLN'), '</DomyslnyKodWaluty>\n',
						' <KodUrzedu>', _KodUS, '</KodUrzedu>\n',
						'</Naglowek>\n'
						);
	END IF;



--  </Naglowek>

-- <Podmiot1>
	IF _Param_D NOT IN ('JPK_VAT3','JPK_MAG','JPK_KR','JPK_WB','JPK_FA','JPK_FA4','JPK_PKPIR2') THEN
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<Podmiot1>\n');
			SET @xml.IC = @xml.IC + 1;        
			CALL _IReg_Get('DaneFirmy', 'NIP', '0', 'STRING', _NIP, '(brak danych)');
			SET _NIP = REPLACE(_NIP, '-', '');
			SET @NIP = _NIP;
			CALL _IReg_Get('DaneFirmy', 'REGON', '0', 'STRING', _REGON, '(brak danych)');
			CALL _IReg_Get('DaneFirmy', 'pelna_nazwa', '0', 'STRING', _PelnaNazwa, '');

			SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<IdentyfikatorPodmiotu>\n');
			SET @xml.IC = @xml.IC + 1;        
			SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:NIP>', _NIP, '</etd:NIP>\n');
			
			SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:PelnaNazwa>', REPLACE(_PelnaNazwa, CHAR(38), ' and '), '</etd:PelnaNazwa>\n');
			
			SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:REGON>', _REGON, '</etd:REGON>\n');
			SET @xml.IC = @xml.IC - 1;        
			SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '</IdentyfikatorPodmiotu>\n');

			SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<AdresPodmiotu>\n');
			SET _zm01 := '';

					IF _Param_D <> 'JPK_VAT2' THEN
									CALL _IReg_Get('DaneFirmy', 'Kraj', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:KodKraju>', _zm01, '</etd:KodKraju>\n');
									CALL _IReg_Get('Owner', 'Wojewodztwo', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:Wojewodztwo>', _zm01, '</etd:Wojewodztwo>\n');
									CALL _IReg_Get('Owner', 'Powiat', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:Powiat>', _zm01, '</etd:Powiat>\n');
									CALL _IReg_Get('Owner', 'Gmina', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:Gmina>', _zm01, '</etd:Gmina>\n');
									CALL _IReg_Get('DaneFirmy', 'Ulica', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:Ulica>', _zm01, '</etd:Ulica>\n');
									CALL _IReg_Get('Owner', 'Nr_Domu', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:NrDomu>', _zm01, '</etd:NrDomu>\n');
									CALL _IReg_Get('Owner', 'Nr_Lokalu', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = IF(IFNULL(_zm01,'')<>'',CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:NrLokalu>', _zm01, '</etd:NrLokalu>\n'),_XMLnag);
									CALL _IReg_Get('Owner', 'Miasto', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:Miejscowosc>', _zm01, '</etd:Miejscowosc>\n');
									CALL _IReg_Get('Owner', 'Code', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:KodPocztowy>', _zm01, '</etd:KodPocztowy>\n');
									CALL _IReg_Get('DaneFirmy', 'Poczta', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:Poczta>', _zm01, '</etd:Poczta>\n');
					ELSE -- tutaj wszedzie tns zamiast etd
									CALL _IReg_Get('DaneFirmy', 'Kraj', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<KodKraju>', _zm01, '</KodKraju>\n');
									CALL _IReg_Get('Owner', 'Wojewodztwo', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<Wojewodztwo>', _zm01, '</Wojewodztwo>\n');
									CALL _IReg_Get('Owner', 'Powiat', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<Powiat>', _zm01, '</Powiat>\n');
									CALL _IReg_Get('Owner', 'Gmina', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<Gmina>', _zm01, '</Gmina>\n');
									CALL _IReg_Get('DaneFirmy', 'Ulica', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<Ulica>', _zm01, '</Ulica>\n');
									CALL _IReg_Get('Owner', 'Nr_Domu', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<NrDomu>', _zm01, '</NrDomu>\n');
									CALL _IReg_Get('Owner', 'Nr_Lokalu', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = IF(IFNULL(_zm01,'')<>'',CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<NrLokalu>', _zm01, '</NrLokalu>\n'),_XMLnag);
									CALL _IReg_Get('Owner', 'Miasto', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<Miejscowosc>', _zm01, '</Miejscowosc>\n');
									CALL _IReg_Get('Owner', 'Code', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<KodPocztowy>', _zm01, '</KodPocztowy>\n');
									CALL _IReg_Get('DaneFirmy', 'Poczta', '0', 'STRING',_zm01, '(brak danych)');
									SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<Poczta>', _zm01, '</Poczta>\n');
					END IF;

					SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '</AdresPodmiotu>\n');
					SET @xml.IC = @xml.IC - 1;        
	SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '</Podmiot1>\n');
	END IF;

	IF _Param_D IN ('JPK_VAT3') THEN
					SET @xml.IC = 0;        
					SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<Podmiot1>\n');
							SET @xml.IC = @xml.IC + 1;        
									CALL _IReg_Get('DaneFirmy', 'NIP', '0', 'STRING', _NIP, '(brak danych)');
									SET _NIP = REPLACE(_NIP, '-', '');
									SET @NIP = _NIP;
									CALL _IReg_Get('DaneFirmy', 'pelna_nazwa', '0', 'STRING', _PelnaNazwa, '');

													SET @xml.IC = @xml.IC + 1;        
													SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<NIP>', _NIP, '</NIP>\n');
													
													SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<PelnaNazwa>', REPLACE(_PelnaNazwa, CHAR(38), ' and '), '</PelnaNazwa>\n');
													
													CALL _IReg_Get('DeklaracjeVAT', 'JPK_email', '0', 'STRING',_zm01, '(brak danych)');
													SET _XMLnag = IF(IFNULL(_zm01,'')<>'',CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<Email>', _zm01, '</Email>\n'),_XMLnag);

					SET @xml.IC = @xml.IC - 2;        
					SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '</Podmiot1>\n');
	END IF;

	IF _Param_D IN ('JPK_FA','JPK_MAG','JPK_KR','JPK_WB') THEN
		SET @xml.IC = 0;
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<Podmiot1>\n');
				SET @xml.IC = @xml.IC + 1;        
				CALL _IReg_Get('DaneFirmy', 'NIP', '0', 'STRING', _NIP, '(brak danych)');
				SET _NIP = REPLACE(_NIP, '-', '');
				SET @NIP = _NIP;
--                                 CALL _IReg_Get('DaneFirmy', 'REGON', '0', 'STRING', _REGON, '(brak danych)');
				CALL _IReg_Get('DaneFirmy', 'pelna_nazwa', '0', 'STRING', _PelnaNazwa, '');

				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<IdentyfikatorPodmiotu>\n');
				SET @xml.IC = @xml.IC + 1;        
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:NIP>', _NIP, '</etd:NIP>\n');
				
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:PelnaNazwa>', REPLACE(_PelnaNazwa, CHAR(38), ' and '), '</etd:PelnaNazwa>\n');
								
--                                 SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:REGON>', _REGON, '</etd:REGON>\n');
				SET @xml.IC = @xml.IC - 1;        
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '</IdentyfikatorPodmiotu>\n');

				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<AdresPodmiotu>\n');
				SET _zm01 := '';
				CALL _IReg_Get('DaneFirmy', 'Kraj', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:KodKraju>', _zm01, '</etd:KodKraju>\n');
				CALL _IReg_Get('Owner', 'Wojewodztwo', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:Wojewodztwo>', _zm01, '</etd:Wojewodztwo>\n');
				CALL _IReg_Get('Owner', 'Powiat', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:Powiat>', _zm01, '</etd:Powiat>\n');
				CALL _IReg_Get('Owner', 'Gmina', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:Gmina>', _zm01, '</etd:Gmina>\n');
				CALL _IReg_Get('DaneFirmy', 'Ulica', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:Ulica>', _zm01, '</etd:Ulica>\n');
				CALL _IReg_Get('Owner', 'Nr_Domu', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:NrDomu>', _zm01, '</etd:NrDomu>\n');
				CALL _IReg_Get('Owner', 'Nr_Lokalu', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = IF(IFNULL(_zm01,'')<>'',CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:NrLokalu>', _zm01, '</etd:NrLokalu>\n'),_XMLnag);
				CALL _IReg_Get('Owner', 'Miasto', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:Miejscowosc>', _zm01, '</etd:Miejscowosc>\n');
				CALL _IReg_Get('Owner', 'Code', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:KodPocztowy>', _zm01, '</etd:KodPocztowy>\n');
				
				IF _Param_D NOT IN ('JPK_FA','JPK_FA4') THEN
				CALL _IReg_Get('DaneFirmy', 'Poczta', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:Poczta>', _zm01, '</etd:Poczta>\n');
				END IF;
				
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '</AdresPodmiotu>\n');
		SET @xml.IC = @xml.IC - 1;        
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '</Podmiot1>\n');

		IF _Param_D IN ('JPK_MAG') THEN
				SET _zm01 = '';
				SELECT opis INTO _zm01 FROM Magazyny WHERE idnmagazynu = _Param_B;
				SET _XMLnag = CONCAT(_XMLnag, '<Magazyn>',IFNULL(_zm01,''),'</Magazyn>\n');
		END IF;

		IF _Param_D IN ('JPK_WB') THEN
				SET _numer_rachunku = IF(LENGTH(_numer_rachunku)=26,CONCAT('PL',_numer_rachunku),_numer_rachunku);
				SET _XMLnag = CONCAT(_XMLnag, '<NumerRachunku>',IFNULL(_numer_rachunku,''),'</NumerRachunku>\n');
		END IF;

	END IF;

    IF _Param_D IN ('JPK_FA4') THEN
		SET @xml.IC = 0;
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<Podmiot1>\n');
				SET @xml.IC = @xml.IC + 1;
				CALL _IReg_Get('DaneFirmy', 'NIP', '0', 'STRING', _NIP, '(brak danych)');
				SET _NIP = REPLACE(_NIP, '-', '');
				SET @NIP = _NIP;

				CALL _IReg_Get('DaneFirmy', 'pelna_nazwa', '0', 'STRING', _PelnaNazwa, '');

				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<IdentyfikatorPodmiotu>\n');
				SET @xml.IC = @xml.IC + 1;
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<NIP>', _NIP, '</NIP>\n');

				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<PelnaNazwa>', REPLACE(_PelnaNazwa, CHAR(38), ' and '), '</PelnaNazwa>\n');

				SET @xml.IC = @xml.IC - 1;
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '</IdentyfikatorPodmiotu>\n');

				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<AdresPodmiotu>\n');
				SET _zm01 := '';
				CALL _IReg_Get('DaneFirmy', 'Kraj', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:KodKraju>', _zm01, '</etd:KodKraju>\n');
				CALL _IReg_Get('Owner', 'Wojewodztwo', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:Wojewodztwo>', _zm01, '</etd:Wojewodztwo>\n');
				CALL _IReg_Get('Owner', 'Powiat', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:Powiat>', _zm01, '</etd:Powiat>\n');
				CALL _IReg_Get('Owner', 'Gmina', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:Gmina>', _zm01, '</etd:Gmina>\n');
				CALL _IReg_Get('DaneFirmy', 'Ulica', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:Ulica>', _zm01, '</etd:Ulica>\n');
				CALL _IReg_Get('Owner', 'Nr_Domu', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:NrDomu>', _zm01, '</etd:NrDomu>\n');
				CALL _IReg_Get('Owner', 'Nr_Lokalu', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = IF(IFNULL(_zm01,'')<>'',CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:NrLokalu>', _zm01, '</etd:NrLokalu>\n'),_XMLnag);
				CALL _IReg_Get('Owner', 'Miasto', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:Miejscowosc>', _zm01, '</etd:Miejscowosc>\n');
				CALL _IReg_Get('Owner', 'Code', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:KodPocztowy>', _zm01, '</etd:KodPocztowy>\n');

		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '</AdresPodmiotu>\n');
		SET @xml.IC = @xml.IC - 1;
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '</Podmiot1>\n');

	END IF;

	IF _Param_D IN ('JPK_PKPIR2') THEN
		SET @xml.IC = 0;
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<Podmiot1>\n');
				SET @xml.IC = @xml.IC + 1;        
				CALL _IReg_Get('DaneFirmy', 'NIP', '0', 'STRING', _NIP, '(brak danych)');
				SET _NIP = REPLACE(_NIP, '-', '');
				SET @NIP = _NIP;
--                                 CALL _IReg_Get('DaneFirmy', 'REGON', '0', 'STRING', _REGON, '(brak danych)');
				CALL _IReg_Get('DaneFirmy', 'pelna_nazwa', '0', 'STRING', _PelnaNazwa, '');

				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<IdentyfikatorPodmiotu>\n');
				SET @xml.IC = @xml.IC + 1;        
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:NIP>', _NIP, '</etd:NIP>\n');
				
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:PelnaNazwa>', REPLACE(_PelnaNazwa, CHAR(38), ' and '), '</etd:PelnaNazwa>\n');
								
--                                 SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<etd:REGON>', _REGON, '</etd:REGON>\n');
				SET @xml.IC = @xml.IC - 1;        
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '</IdentyfikatorPodmiotu>\n');

				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<AdresPodmiotu>\n');
				SET _zm01 := '';
				CALL _IReg_Get('DaneFirmy', 'Kraj', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<KodKraju>', _zm01, '</KodKraju>\n');
				CALL _IReg_Get('Owner', 'Wojewodztwo', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<Wojewodztwo>', _zm01, '</Wojewodztwo>\n');
				CALL _IReg_Get('Owner', 'Powiat', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<Powiat>', _zm01, '</Powiat>\n');
				CALL _IReg_Get('Owner', 'Gmina', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<Gmina>', _zm01, '</Gmina>\n');
				CALL _IReg_Get('DaneFirmy', 'Ulica', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<Ulica>', _zm01, '</Ulica>\n');
				CALL _IReg_Get('Owner', 'Nr_Domu', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<NrDomu>', _zm01, '</NrDomu>\n');
				CALL _IReg_Get('Owner', 'Nr_Lokalu', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = IF(IFNULL(_zm01,'')<>'',CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<NrLokalu>', _zm01, '</NrLokalu>\n'),_XMLnag);
				CALL _IReg_Get('Owner', 'Miasto', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<Miejscowosc>', _zm01, '</Miejscowosc>\n');
				CALL _IReg_Get('Owner', 'Code', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<KodPocztowy>', _zm01, '</KodPocztowy>\n');
				CALL _IReg_Get('DaneFirmy', 'Poczta', '0', 'STRING',_zm01, '(brak danych)');
				SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<Poczta>', _zm01, '</Poczta>\n');

		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '</AdresPodmiotu>\n');
		SET @xml.IC = @xml.IC - 1;        
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '</Podmiot1>\n');
	END IF;

--  </Podmiot1>
						
		-- SET @_XMLnag = _XMLnag;
		UPDATE t_jpk SET xmlnag = _XMLnag WHERE guid = _Param_D;

	END IF; -- NAGLOWEK


	IF (_MODE = 'NAGLOWEK2') THEN -- tutaj sa dane naglowkowe rozne dla roznych zestawien

		-- SET @_XMLnag2 = 'naglowek2';
			UPDATE t_jpk SET xmlnag2 = 'naglowek2' WHERE guid = _Param_D;

	END IF; -- NAGLOWEK2


        IF _MODE = 'JPK_VAT' THEN
 
        CALL fr_ht_zest_jpk('NAGLOWEK', '', '', '', '', _OdDnia,_DoDnia, '', '', '', '',_MODE);
 
        DROP TABLE IF EXISTS t10_guid;
        CREATE TEMPORARY TABLE t10_guid (guid VARCHAR(38), lp INT(11),KEY guid (guid));

        DROP TABLE IF EXISTS t_vat_s;
        CREATE TEMPORARY TABLE t_vat_s (
        guid VARCHAR(38),
        rv_id VARCHAR(38),
        LpSprzedazy INT(11),
        DataSprzedazy VARCHAR(10),
        DataWystawienia VARCHAR(10),
        NrDokumentu VARCHAR(50), -- sprawdzic dlugosc pola
        NazwaNabywcy VARCHAR(150),
        AdresNabywcy VARCHAR(150),
        K_10 VARCHAR(18) DEFAULT '',
        K_11 VARCHAR(18) DEFAULT '',
        K_12 VARCHAR(18) DEFAULT '',
        K_13 VARCHAR(18) DEFAULT '',
        K_14 VARCHAR(18) DEFAULT '',
        K_15 VARCHAR(18) DEFAULT '',
        K_16 VARCHAR(18) DEFAULT '',
        K_17 VARCHAR(18) DEFAULT '',
        K_18 VARCHAR(18) DEFAULT '',
        K_19 VARCHAR(18) DEFAULT '',
        K_20 VARCHAR(18) DEFAULT '',
        K_21 VARCHAR(18) DEFAULT '',
        K_22 VARCHAR(18) DEFAULT '',
        K_23 VARCHAR(18) DEFAULT '',
        K_24 VARCHAR(18) DEFAULT '',
        K_25 VARCHAR(18) DEFAULT '',
        K_26 VARCHAR(18) DEFAULT '',
        K_27 VARCHAR(18) DEFAULT '',
        K_28 VARCHAR(18) DEFAULT '',
        K_29 VARCHAR(18) DEFAULT '',
        K_30 VARCHAR(18) DEFAULT '',
        K_31 VARCHAR(18) DEFAULT '',
        K_32 VARCHAR(18) DEFAULT '',
        K_33 VARCHAR(18) DEFAULT '',
        K_34 VARCHAR(18) DEFAULT '',
        K_35 VARCHAR(18) DEFAULT '',
        K_36 VARCHAR(18) DEFAULT '',
        K_37 VARCHAR(18) DEFAULT '',
        K_38 VARCHAR(18) DEFAULT '',
        KEY guid (guid)) DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS t_vat_z;
        CREATE TEMPORARY TABLE t_vat_z (
        guid VARCHAR(38),
        rv_id VARCHAR(38),
        LpZakupu INT(11),
        NazwaWystawcy VARCHAR(150),
        AdresWystawcy VARCHAR(150),
        NrIdWystawcy VARCHAR(15),
        NrFaktury VARCHAR(50), -- sprawdzic dlugosc pola
        DataWplywuFaktury VARCHAR(10),
        K_42 VARCHAR(18),
        K_43 VARCHAR(18),
        K_44 VARCHAR(18),
        K_45 VARCHAR(18),
        K_46 VARCHAR(18),
        K_47 VARCHAR(18),
        K_48 VARCHAR(18),
        KEY guid (guid)) DEFAULT CHARSET=utf8;

        SET @a :=0;
        INSERT INTO t_vat_s
        SELECT guid, rv.rv_id_JPK, @a:=@a+1 AS LpSprzedazy,
                IF(datasprzed<>datawystaw,datasprzed,''),
                datawystaw,nrdokfin,
                REPLACE(REPLACE(kontrnazwa, CHAR(38), ' and '),'<',' ') AS kontrnazwa,
                kontradres,
                SUM(IF(rv.rv_id_JPK IN (2021,2029,2039,2063,2074) AND v.idvat IN (3),v.netto,'')) AS K_10, -- netto dostawa tow i uslug na ter. kraju zwolnione od podatku
                SUM(IF((rv.rv_id_JPK IN (2022,2023) AND v.idvat IN (3)) OR rv.rv_id_JPK IN (2042,2037,2038),v.netto,'')) AS K_11, -- netto dostawa tow i uslug poza ter. kraju zwolnione od podatku
                SUM(IF(rv.rv_id_JPK IN (2042),v.netto,'')) AS K_12, -- Kwota netto - w tym świadczenie usług, o których mowa w art. 100 ust. 1 pkt 4 ustawy
                SUM(IF((rv.rv_id_JPK IN (2021,2029,2039,2063,2074) AND v.idvat IN (2)) OR rv.rv_id_JPK IN (2043,2044,2045,2046),v.netto,'')) AS K_13,
                '' AS K_14, -- netto - w tym dostawa towarów, o której mowa w art. 129 ustawy
                _Rnd2(SUM(IF(rv.rv_id_JPK IN (2021,2029,2039,2063,2066,2067,2074) AND v.idvat IN (8),v.netto,''))) AS K_15,
                _Rnd2(SUM(IF(rv.rv_id_JPK IN (2021,2029,2039,2063,2066,2067,2074) AND v.idvat IN (8),v.vat,''))) AS K_16,
                _Rnd2(SUM(IF(rv.rv_id_JPK IN (2021,2029,2039,2063,2066,2067,2074) AND v.idvat IN (1,16),v.netto,''))) AS K_17,
                _Rnd2(SUM(IF(rv.rv_id_JPK IN (2021,2029,2039,2063,2066,2067,2074) AND v.idvat IN (1,16),v.vat,''))) AS K_18,
                _Rnd2(SUM(IF(rv.rv_id_JPK IN (2021,2029,2039,2063,2066,2067,2074) AND v.idvat IN (0,15),v.netto,''))) AS K_19,
                _Rnd2(SUM(IF(rv.rv_id_JPK IN (2021,2029,2039,2063,2066,2067,2074) AND v.idvat IN (0,15),v.vat,''))) AS K_20,
                -- SUM(IF(n.rodzaj in (80) AND rv.rv_id_JPK in (2023,2047),v.netto,'')) AS K_21,
                -- SUM(IF(n.rodzaj in (50) AND rv.rv_id_JPK in (2022,2048),v.netto,'')) AS K_22,
                SUM(IF(rv.rv_id_JPK IN (2023,2047),v.netto,'')) AS K_21, -- na prosbe Crist tylko rejestr decyduje (klonowanie dokumentow), ale to sliskie jest
                SUM(IF(rv.rv_id_JPK IN (2022,2048),v.netto,'')) AS K_22,

                SUM(IF(n.rodzaj IN (81) OR rv.rv_id_JPK IN (2040),v.netto, '')) AS K_23, -- netto WDT nabycie towarow
                SUM(IF(n.rodzaj IN (81) OR rv.rv_id_JPK IN (2040),v.vat,'')) AS K_24, -- vat WDT nabycie towarow
                SUM(IF(n.rodzaj IN (83) AND rv.rv_id_JPK IN (2068),v.netto,'')) AS K_25, -- netto - Import towarów podlegający rozliczeniu zgodnie z art.33a ustawy
                SUM(IF(n.rodzaj IN (83) AND rv.rv_id_JPK IN (2068),v.vat,'')) AS K_26, -- vat - Import towarów podlegający rozliczeniu zgodnie z art.33a ustawy
               
                CASE WHEN @session.globals.Owner IN ('SKOK') THEN
                        SUM(IF(n.rodzaj IN (82) OR rv.rv_id_JPK IN (2071,3010),v.netto,''))
                        ELSE
                        SUM(IF(n.rodzaj IN (82) OR rv.rv_id_JPK IN (2071),v.netto,''))
                END AS K_27, -- import uslug netto
                CASE WHEN @session.globals.Owner IN ('SKOK') THEN
                        SUM(IF(n.rodzaj IN (82) OR rv.rv_id_JPK IN (2071,3010),v.vat,''))
                        ELSE
                        SUM(IF(n.rodzaj IN (82) OR rv.rv_id_JPK IN (2071),v.vat,''))
                END AS K_28, -- import uslug vat

                CASE WHEN @session.globals.Owner IN ('SKOK') THEN
                        SUM(IF(rv.rv_id_JPK IN (2070,3020),v.netto,''))
                        ELSE
                        SUM(IF(rv.rv_id_JPK IN (2070),v.netto,''))
                END AS K_29, -- Kwota netto - Import usług nabywanych od podatników podatkuod wartości dodanej, do których stosuje się art. 28b ustawy
                CASE WHEN @session.globals.Owner IN ('SKOK') THEN
                        SUM(IF(rv.rv_id_JPK IN (2070,3020),v.vat,''))
                        ELSE
                        SUM(IF(rv.rv_id_JPK IN (2070),v.vat,''))
                END AS K_30, -- j.w.
                SUM(IF(rv.rv_id_JPK IN (2053),v.netto,'')) AS K_31, -- Kwota netto - Dostawa towarów oraz świadczenie usług, dla których podatnikiem jest nabywca zgodnie z art. 17 ust. 1 pkt 7 lub 8 ustawy (wypełnia dostawca)
                SUM(IF(rv.rv_id_JPK IN (2036),v.netto,'')) AS K_32, -- Sprzedaż wewnętrzna WNB podatnik - nabywca (art. 17 pkt. 1 ust. 5)
                SUM(IF(rv.rv_id_JPK IN (2036),v.vat,'')) AS K_33, -- jw
                CASE WHEN @session.globals.Owner IN ('CRIST') THEN
                                SUM(IF(rv.rv_id_JPK IN (2049),v.netto,''))
                        WHEN @session.globals.Owner IN ('SKOK') THEN
                                SUM(IF(rv.rv_id_JPK IN (2021,3030) AND v.IdVat=19, v.netto,''))
                        ELSE
                        SUM(IF(rv.rv_id_JPK IN (2021) AND v.IdVat=19, v.netto,''))
                END AS K_34, -- Kwota netto - Dostawa towarów oraz świadczenie usług, dla których podatnikiem jest nabywca zgodnie z art. 17 ust. 1 pkt 7 lub 8 ustawy (wypełnia nabywca)
                CASE WHEN @session.globals.Owner IN ('CRIST') THEN
                        SUM(IF(rv.rv_id_JPK IN (2049),v.vat,''))
                        WHEN @session.globals.Owner IN ('SKOK') THEN
                        SUM(IF(rv.rv_id_JPK IN (2021,3030) AND v.IdVat=19, v.vat,''))
                        ELSE
                        SUM(IF(rv.rv_id_JPK IN (2021) AND v.IdVat=19, v.vat,''))
                END AS K_35, -- jw
                '' AS K_36, --
                '' AS K_37, --
                '' AS K_38 --
        FROM `opng` n, `opng_vat` v, `operdoc` op, `v_rejestry_vat` rv
        WHERE
                v.idnoper = n.guid
                AND n.rodzaj = op.rodzaj
                AND op.grupa NOT IN (1,4)
                AND n.data_vat BETWEEN _OdDnia AND _DoDnia
                AND n.deleted = 0
                AND rv.Idn = n.rv_id
                AND rv.rv_id_JPK NOT IN (2020, 2030, 0, 2028) -- ostatni rejestr wyklucza sprzed. wew., klona zakupu
                AND v.idvat NOT IN (5) -- bez stawki NP
        GROUP BY n.guid
        ORDER BY n.datawplywu, n.idn;
        -- limit 5;

       
        INSERT INTO t10_guid
        SELECT guid, LpSprzedazy AS lp
        FROM t_vat_s
        ORDER BY LpSprzedazy;
 

  BEGIN
    DECLARE done BOOL DEFAULT FALSE;
    DECLARE _GUID VARCHAR(38) DEFAULT '';
    DECLARE c_proc CURSOR FOR
    SELECT guid FROM t10_guid ORDER BY lp;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    OPEN c_proc;
      loop2: LOOP
      SET done = FALSE;
      FETCH c_proc INTO _GUID;
      IF done THEN
         LEAVE loop2;
      ELSE
         CALL fr_ht_zest_jpk('JPK_VAT_ONE_S',_GUID,'','','','','','','','','','');
      END IF;
     END LOOP;
    CLOSE c_proc;    
  END;


        SELECT COUNT(*) INTO _liczba_wierszy FROM t_vat_s;
        SELECT SUM(_Rnd2(K_16+K_18+K_20+K_24+K_26+K_28+K_30+K_33+K_35)) INTO _podatek_s FROM t_vat_s;

        SET _XMLpoz = '';

        SET _XMLpoz = CONCAT(SPACE(@xml.IC*cSL), '<SprzedazCtrl>\n');
        SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<LiczbaWierszySprzedazy>',_liczba_wierszy,'</LiczbaWierszySprzedazy>\n');
        SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<PodatekNalezny>',_podatek_s,'</PodatekNalezny>\n');
        SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</SprzedazCtrl>\n');

        UPDATE t_jpk SET xmlpoz2 = CONCAT(xmlpoz2,IFNULL(_XMLpoz,'brak1'));


        -- sekcja zakupow
        SET @a :=0;
        INSERT INTO t_vat_z
        SELECT
                n.guid, n.rv_id, @a:=@a+1 AS LpZakupu,
                REPLACE(kontrnazwa, CHAR(38), ' and ') AS kontrnazwa,
                kontradres, kontrnip,
                nrdokfin, datawplywu,
                _Rnd2(SUM(IF(rv.rv_id_JPK IN (2030,2055,2072,2073),v.netto,''))) AS K_42, -- zakupy inwestycyjne, środki trwałe
                _Rnd2(SUM(IF(rv.rv_id_JPK IN (2030,2055,2072,2073),v.vat,''))) AS K_43,
                _Rnd2(SUM(IF(rv.rv_id_JPK NOT IN (2030,2055,2072,2073),v.netto,''))) AS K_44, -- zakupy uslug i towarow pozostalych
                _Rnd2(SUM(IF(rv.rv_id_JPK NOT IN (2030,2055,2072,2073),
                                                        v.vat-(n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd),''))) AS K_45,

                '' AS K_46, -- korekta podatku naliczonego od nabycia srodkow trwalych
                '' AS K_47, -- korekta podatku naliczonego od pozostalych nabyc
                '' AS K_48  -- korekta podatku naliczonego z art 89b ustawy

        FROM `opng` n, `opng_vat` v, `operdoc` op, `v_rejestry_vat` rv
        WHERE
                v.idnoper=n.guid AND n.rodzaj=op.rodzaj AND rv.Idn = n.rv_id
                AND n.rv_id NOT IN (0) -- wylacza pozycje poza ewidencja vat
                AND (rv.rv_id_JPK IN (2020,2030) OR op.grupa IN (1,4) OR (n.rodzaj IN (83,84) AND rv.rv_id_JPK IN (2028))) -- ostatni warunek to SW FV i SW-FV
                AND v.idvat NOT IN (2,3,5,18,19,6) -- bez stawki NP, zwolnione, zero, bez odliczen, odwrotne obciazenie, poza PL
                AND n.data_vat BETWEEN _OdDnia AND _DoDnia
                AND n.deleted = 0
        GROUP BY n.guid
        ORDER BY n.datawplywu, n.idn;
        -- limit 5;

       
        TRUNCATE t10_guid;
        INSERT INTO t10_guid
        SELECT guid, LpZakupu AS lp
        FROM t_vat_z
        ORDER BY LpZakupu;
 

        BEGIN
    DECLARE done BOOL DEFAULT FALSE;
    DECLARE _GUID VARCHAR(38) DEFAULT '';
    DECLARE c_proc CURSOR FOR
    SELECT guid FROM t10_guid ORDER BY lp;
                DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    OPEN c_proc;
      loop2: LOOP
      SET done = FALSE;
      FETCH c_proc INTO _GUID;
				IF done THEN
            LEAVE loop2;
				ELSE
						IF _PARAM_C LIKE '%DEBUG%' THEN
							SELECT * FROM opng WHERE guid=_GUID;
						END IF;
						CALL fr_ht_zest_jpk('JPK_VAT_ONE_Z',_GUID,'','','','','','','','','','');
			END IF;
     END LOOP;
    CLOSE c_proc;    
  END;

        SELECT COUNT(*) INTO _liczba_wierszy FROM t_vat_z;
        SELECT SUM(_Rnd2(K_43 + K_45)) INTO _podatek_z FROM t_vat_z;

        SET _XMLpoz = '';

        SET _XMLpoz = CONCAT(SPACE(@xml.IC*cSL), '<ZakupCtrl>\n');
        SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<LiczbaWierszyZakupow>',_liczba_wierszy,'</LiczbaWierszyZakupow>\n');
        SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<PodatekNaliczony>',_podatek_z,'</PodatekNaliczony>\n');
        SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</ZakupCtrl>\n');

        UPDATE t_jpk SET xmlpoz4 = CONCAT(xmlpoz4,IFNULL(_XMLpoz,'brak4'));


        SET _XML := (SELECT CONCAT(xmlnag,xmlpoz1,xmlpoz2,xmlpoz3,xmlpoz4,'</JPK>') FROM t_jpk);
        SELECT _XML;

        SET NAMES "cp1250";

    DROP TABLE IF EXISTS t_jpk;
    DROP TABLE IF EXISTS t10_guid;
    DROP TABLE IF EXISTS t_vat_s;
    DROP TABLE IF EXISTS t_vat_z;

END IF; -- _MODE = JPK_VAT



        IF _MODE = 'JPK_VAT_ONE_S' THEN

                SELECT CONCAT('<SprzedazWiersz typ="G">\n',
                        '<LpSprzedazy>',LpSprzedazy,'</LpSprzedazy>\n',
                        IF(DataSprzedazy='','',CONCAT('<DataSprzedazy>',DataSprzedazy,'</DataSprzedazy>\n')),
                        '<DataWystawienia>',datawystawienia,'</DataWystawienia>\n',
                        '<NrDokumentu>',NrDokumentu,'</NrDokumentu>\n',
                        '<NazwaNabywcy>',NazwaNabywcy,'</NazwaNabywcy>\n',
                        '<AdresNabywcy>',AdresNabywcy,'</AdresNabywcy>\n',
                        IF(K_10='','',CONCAT('<K_10>',K_10,'</K_10>\n')),
                        IF(K_11='','',CONCAT('<K_11>',K_11,'</K_11>\n')),
                        IF(K_12='','',CONCAT('<K_12>',K_12,'</K_12>\n')),
                        IF(K_13='','',CONCAT('<K_13>',K_13,'</K_13>\n')),
                        IF(K_14='','',CONCAT('<K_14>',K_14,'</K_14>\n')),
                        IF(K_15='','',CONCAT('<K_15>',K_15,'</K_15>\n')),
                        IF(K_16='','',CONCAT('<K_16>',K_16,'</K_16>\n')),
                        IF(K_17='','',CONCAT('<K_17>',K_17,'</K_17>\n')),
                        IF(K_18='','',CONCAT('<K_18>',K_18,'</K_18>\n')),
                        IF(K_19='','',CONCAT('<K_19>',K_19,'</K_19>\n')),
                        IF(K_20='','',CONCAT('<K_20>',K_20,'</K_20>\n')),
                        IF(K_21='','',CONCAT('<K_21>',K_21,'</K_21>\n')),
                        IF(K_22='','',CONCAT('<K_22>',K_22,'</K_22>\n')),
                        IF(K_23='','',CONCAT('<K_23>',K_23,'</K_23>\n')),
                        IF(K_24='','',CONCAT('<K_24>',K_24,'</K_24>\n')),
                        IF(K_25='','',CONCAT('<K_25>',K_25,'</K_25>\n')),
                        IF(K_26='','',CONCAT('<K_26>',K_26,'</K_26>\n')),
                        IF(K_27='','',CONCAT('<K_27>',K_27,'</K_27>\n')),
                        IF(K_28='','',CONCAT('<K_28>',K_28,'</K_28>\n')),
                        IF(K_29='','',CONCAT('<K_29>',K_29,'</K_29>\n')),
                        IF(K_30='','',CONCAT('<K_30>',K_30,'</K_30>\n')),
                        IF(K_31='','',CONCAT('<K_31>',K_31,'</K_31>\n')),
                        IF(K_32='','',CONCAT('<K_32>',K_32,'</K_32>\n')),
                        IF(K_33='','',CONCAT('<K_33>',K_33,'</K_33>\n')),
                        IF(K_34='','',CONCAT('<K_34>',K_34,'</K_34>\n')),
                        IF(K_35='','',CONCAT('<K_35>',K_35,'</K_35>\n')),
                        IF(K_36='','',CONCAT('<K_36>',K_36,'</K_36>\n')),
                        IF(K_37='','',CONCAT('<K_37>',K_37,'</K_37>\n')),
                        IF(K_38='','',CONCAT('<K_38>',K_38,'</K_38>\n')),
                        '</SprzedazWiersz>\n')
                INTO @_XMLpoz1
                FROM t_vat_s WHERE guid = _GUID;

        UPDATE t_jpk SET xmlpoz1 = CONCAT(xmlpoz1,IFNULL(@_XMLpoz1, 'brak VAT_ONE_S'));

        END IF; -- JPK_VAT_ONE_S


        IF _MODE = 'JPK_VAT_ONE_Z' THEN

                SELECT CONCAT('<ZakupWiersz typ="G">\n',
                        '<LpZakupu>',LpZakupu,'</LpZakupu>\n',
                        '<NazwaWystawcy>',NazwaWystawcy,'</NazwaWystawcy>\n',
                        -- '<AdresWystawcy>',IF(AdresWystawcy='','brak',AdresWystawcy),'</AdresWystawcy>\n',
                        '<AdresWystawcy>',AdresWystawcy,'</AdresWystawcy>\n',
                        -- '<NrIdWystawcy>',IF(NrIdWystawcy='','brak',NrIdWystawcy),'</NrIdWystawcy>\n',
                        '<NrIdWystawcy>',NrIdWystawcy,'</NrIdWystawcy>\n',
                        '<NrFaktury>',NrFaktury,'</NrFaktury>\n',
                        '<DataWplywuFaktury>',DataWplywuFaktury,'</DataWplywuFaktury>\n',
                        IF(K_42='','',CONCAT('<K_42>',K_42,'</K_42>\n')),
                        IF(K_43='','',CONCAT('<K_43>',K_43,'</K_43>\n')),
                        IF(K_44='','',CONCAT('<K_44>',K_44,'</K_44>\n')),
                        IF(K_45='','',CONCAT('<K_45>',K_45,'</K_45>\n')),
                        IF(K_46='','',CONCAT('<K_46>',K_46,'</K_46>\n')),
                        IF(K_47='','',CONCAT('<K_47>',K_47,'</K_47>\n')),
                        IF(K_48='','',CONCAT('<K_48>',K_48,'</K_48>\n')),
                        '</ZakupWiersz>\n')
                INTO @_XMLpoz1
                FROM t_vat_z WHERE guid = _GUID;

        UPDATE t_jpk SET xmlpoz3 = CONCAT(xmlpoz3,IFNULL(@_XMLpoz1, 'brak VAT_ONE_Z'));

        END IF; -- JPK_VAT_ONE_Z


/*
  CALL fr_ht_zest_jpk('JPK_VAT2', '', '', '', '', '2016-05-01','2016-05-30', '', 'RAPORT', '', '','');
        CALL fr_ht_zest_jpk('JPK_VAT3', '', '', '', '', '2018-01-01','2018-01-31', '', 'RAPORT', '', '','');
*/
IF _MODE IN ('JPK_VAT2','JPK_VAT3') THEN
 
        CALL fr_ht_zest_jpk('NAGLOWEK', '', '', '', '', _OdDnia,_DoDnia, '', '', _Param_B, '',_MODE);
 
        SELECT DATABASE() INTO @baza;
        
		-- zmiana dla skoku(od wybranej daty po nowemu )
		SELECT IF(valueI=1,1,valueB),ifnull(ValueD,'0000-00-00') INTO @vat7, @rokvat7
		FROM IReg
        WHERE idpath='INT\\SYSTEM\\MOTLAWA\\DeklaracjeVAT' AND idkey='JPK_definicja_z_VAT7' LIMIT 1;

		SELECT guid INTO @vat7_guid FROM ht_dekl_vat7_def WHERE DateFrom <=_OdDnia ORDER BY DateFrom DESC LIMIT 1;
				
        SET @platnik = 0;
        IF @session.globals.Owner IN ('MARPOL') THEN
                SET @platnik = 1;
        END IF;

    -- dodac wykorztsywanie _db_globals.DOC_with_AdrLink dla wlaczenia nowej adresacji, o ile w ogole warto to robic


        DROP TABLE IF EXISTS t10_guid;
        CREATE TEMPORARY TABLE t10_guid (guid VARCHAR(38), lp INT(11),KEY guid (guid));

        DROP TABLE IF EXISTS t_vat_s;
        CREATE TEMPORARY TABLE t_vat_s (
        guid VARCHAR(38),
        rv_id VARCHAR(38),
        rv_id_oper VARCHAR(38),
        LpSprzedazy INT(11),
        NrKontrahenta VARCHAR(15),
        NazwaKontrahenta VARCHAR(150),
        AdresKontrahenta VARCHAR(150),
        DowodSprzedazy VARCHAR(50), -- sprawdzic dlugosc pola, numer dowodu sprzedazy
        DataWystawienia VARCHAR(10),
        DataSprzedazy VARCHAR(10),
        K_10 DOUBLE(16,2) DEFAULT 0,
        K_11 DOUBLE(16,2) DEFAULT 0,
        K_12 DOUBLE(16,2) DEFAULT 0,
        K_13 DOUBLE(16,2) DEFAULT 0,
        K_14 DOUBLE(16,2) DEFAULT 0,
        K_15 DOUBLE(16,2) DEFAULT 0,
        K_16 DOUBLE(16,2) DEFAULT 0,
        K_17 DOUBLE(16,2) DEFAULT 0,
        K_18 DOUBLE(16,2) DEFAULT 0,
        K_19 DOUBLE(16,2) DEFAULT 0,
        K_20 DOUBLE(16,2) DEFAULT 0,
        K_21 DOUBLE(16,2) DEFAULT 0,
        K_22 DOUBLE(16,2) DEFAULT 0,
        K_23 DOUBLE(16,2) DEFAULT 0,
        K_24 DOUBLE(16,2) DEFAULT 0,
        K_25 DOUBLE(16,2) DEFAULT 0,
        K_26 DOUBLE(16,2) DEFAULT 0,
        K_27 DOUBLE(16,2) DEFAULT 0,
        K_28 DOUBLE(16,2) DEFAULT 0,
        K_29 DOUBLE(16,2) DEFAULT 0,
        K_30 DOUBLE(16,2) DEFAULT 0,
        K_31 DOUBLE(16,2) DEFAULT 0,
        K_32 DOUBLE(16,2) DEFAULT 0,
        K_33 DOUBLE(16,2) DEFAULT 0,
        K_34 DOUBLE(16,2) DEFAULT 0,
        K_35 DOUBLE(16,2) DEFAULT 0,
        K_36 DOUBLE(16,2) DEFAULT 0,
        K_37 DOUBLE(16,2) DEFAULT 0,
        K_38 DOUBLE(16,2) DEFAULT 0,
        K_39 DOUBLE(16,2) DEFAULT 0,
        KEY guid (guid)) DEFAULT CHARSET=utf8;

        DROP TABLE IF EXISTS t_vat_z;
        CREATE TEMPORARY TABLE t_vat_z (
        guid VARCHAR(38),
        rv_id VARCHAR(38),
        rv_id_oper VARCHAR(38),
        LpZakupu INT(11),
        NrDostawcy VARCHAR(15),
        NazwaDostawcy VARCHAR(150),
        AdresDostawcy VARCHAR(150),
        DowodZakupu VARCHAR(50), -- sprawdzic dlugosc pola
        DataZakupu VARCHAR(10),
        DataWplywu VARCHAR(10),
        K_43 DOUBLE(16,2) DEFAULT 0,
        K_44 DOUBLE(16,2) DEFAULT 0,
        K_45 DOUBLE(16,2) DEFAULT 0,
        K_46 DOUBLE(16,2) DEFAULT 0,
		K_46_pelny_vat DOUBLE(16,2) DEFAULT 0, -- dane potrzebne do wyliczenia proporcji
        K_46_nie_podl_vat DOUBLE(16,2) DEFAULT 0, -- dane potrzebne do wyliczenia proporcji
        K_47 DOUBLE(16,2) DEFAULT 0,
        K_48 DOUBLE(16,2) DEFAULT 0,
        K_49 DOUBLE(16,2) DEFAULT 0,
        K_50 DOUBLE(16,2) DEFAULT 0,
        KEY guid (guid)) DEFAULT CHARSET=utf8;

        SET @a :=0;
		IF (IFNULL(@vat7,0) = 1) AND _OdDnia>=@rokvat7 THEN
                INSERT INTO t_vat_s
                SELECT n.guid, rv.rv_id_JPK, n.rv_id, @a:=@a+1 AS LpSprzedazy,
                CASE WHEN @session.globals.Owner IN ('IZOHAN','JARZEBINSCY','POLAM','WEGA') AND n.rodzaj NOT IN (0,2,4,83)
                        AND n.kontrsymbol<> 'JEDNORAZOWI POZOSTALI' THEN (SELECT nip FROM kontrah WHERE guid = n.platnikGUID)
                WHEN @session.globals.Owner IN ('IZOHAN','JARZEBINSCY','POLAM','TRANSBUD') AND n.rodzaj IN (0,2,4,83) AND n.kontrnip = '' THEN 'brak'
                WHEN @session.globals.Owner IN ('MATELBUD') AND n.kontrsymbol = 'ZZG-Klient detaliczny' THEN 'brak'
                WHEN n.rodzaj IN (0,2) AND n.kontrnip = '' THEN 'brak'
                WHEN @platnik = 1 THEN (SELECT nip FROM kontrah WHERE guid = n.platnikGUID)
                ELSE IF(n.kontrnip = '','brak',n.kontrnip)
                END AS kontrnip,
                CASE WHEN @session.globals.Owner IN ('IZOHAN','JARZEBINSCY','POLAM','WEGA') AND n.rodzaj NOT IN (0,2,4,83)
                        AND n.kontrsymbol<> 'JEDNORAZOWI POZOSTALI' THEN
                        (SELECT REPLACE(REPLACE(REPLACE(nazwa, CHAR(38), ' and '),'<',' '), '&', ' and ') FROM kontrah WHERE guid = n.platnikGUID)
                WHEN @session.globals.Owner IN ('JARZEBINSCY','POLAM') AND n.rodzaj IN (0,2) THEN
                        (SELECT REPLACE(REPLACE(REPLACE(nazwa, CHAR(38), ' and '),'<',' '), '&', ' and ') FROM kontrah WHERE guid = n.kontrGUID)
                WHEN @platnik = 1 THEN (SELECT REPLACE(REPLACE(REPLACE(nazwa, CHAR(38), ' and '),'<',' '), '&', ' and ') FROM kontrah WHERE guid = n.platnikGUID)
                ELSE REPLACE(REPLACE(REPLACE(kontrnazwa, CHAR(38), ' and '),'<',' '), '&', ' and ')
                END AS kontrnazwa,
                CASE WHEN @session.globals.Owner IN ('IZOHAN','JARZEBINSCY','POLAM','WEGA') AND n.rodzaj NOT IN (0,2,4,83)
                        AND n.kontrsymbol<> 'JEDNORAZOWI POZOSTALI' THEN
                        (SELECT CONCAT(ulica,', ',zipcode,' ',nazwamiasta) FROM kontrah WHERE guid = n.platnikGUID)
                WHEN @session.globals.Owner IN ('JARZEBINSCY','POLAM') AND n.rodzaj IN (0,2) THEN
                        (SELECT CONCAT(ulica,', ',zipcode,' ',nazwamiasta) FROM kontrah WHERE guid = n.kontrGUID)
                WHEN @session.globals.Owner IN ('MATELBUD') AND n.kontrsymbol = 'ZZG-Klient detaliczny' THEN 'brak'
				WHEN @session.globals.Owner IN ('TRANSBUD') AND n.rodzaj IN (83) THEN 'brak'
                WHEN n.rodzaj IN (0,4) AND n.kontradres = '' THEN 'BRAK'
                WHEN @platnik = 1 THEN (SELECT CONCAT(ulica,', ',zipcode,' ',nazwamiasta) FROM kontrah WHERE guid = n.platnikGUID)
                ELSE REPLACE(REPLACE(REPLACE(n.kontradres, CHAR(38), ' and '),'<',' '), '&', ' and ')
                END AS kontradres,
                REPLACE(REPLACE(REPLACE(n.nrdokfin, CHAR(38), ' and '),'<',' '), '&', ' and ') AS nrdokfin,
                datawystaw, IF(datasprzed<>datawystaw,datasprzed,''),
                SUM(IF(n.rv_id IN (IFNULL(d.C1r1, -10), IFNULL(d.C1r2, -10)) AND v.idvat IN (3),v.netto, 0)) AS K_10,          -- C.1
                SUM(IF(n.rv_id IN (IFNULL(d.C2r1, -10), IFNULL(d.C2r2, -10), IFNULL(d.C2r3, -10)), v.netto, 0)) AS K_11,   -- C.2
                SUM(IF(n.rv_id IN (IFNULL(d.C2Ar1, -10), IFNULL(d.C2Ar2, -10), IFNULL(d.C2Ar3, -10)), v.netto, 0)) AS K_12,                     -- C.2a
                SUM(IF(n.rv_id IN (IFNULL(d.C3r1, -10), IFNULL(d.C3r2, -10), IFNULL(d.C3r3, -10), IFNULL(d.C3r4, -10)) AND v.idvat IN (2), v.netto, 0)) AS K_13,          -- C.3
                SUM(IF(n.rv_id IN (IFNULL(d.C3Ar1, -10), IFNULL(d.C3Ar2, -10)) AND v.idvat IN (2), v.netto, 0)) AS K_14,          -- C.3a

                SUM(IF(n.rv_id IN (IFNULL(d.C4r1, -10), IFNULL(d.C4r2, -10), IFNULL(d.C4r3, -10), IFNULL(d.C4r4, -10)) AND v.idvat IN (8), v.netto, 0)) AS K_15,          -- C.4   -- do 2016r. bylo 3% lub 5%, od 2016: tylko 5%  (tabwartnetto9 = 5%)
                SUM(IF(n.rv_id IN (IFNULL(d.C4r1, -10), IFNULL(d.C4r2, -10), IFNULL(d.C4r3, -10), IFNULL(d.C4r4, -10)) AND v.idvat IN (8), v.vat, 0)) AS K_16,          -- C.4 VAT
                SUM(IF(n.rv_id IN (IFNULL(d.C5r1, -10), IFNULL(d.C5r2, -10), IFNULL(d.C5r3, -10), IFNULL(d.C5r4, -10)) AND v.idvat IN (1,16), v.netto, 0)) AS K_17,          -- C.5
                SUM(IF(n.rv_id IN (IFNULL(d.C5r1, -10), IFNULL(d.C5r2, -10), IFNULL(d.C5r3, -10), IFNULL(d.C5r4, -10)) AND v.idvat IN (1,16), v.vat, 0)) AS K_18,          -- C.5 VAT
                SUM(IF(n.rv_id IN (IFNULL(d.C6r1, -10), IFNULL(d.C6r2, -10), IFNULL(d.C6r3, -10), IFNULL(d.C6r4, -10), IFNULL(d.C6r5, -10), IFNULL(d.C6r6, -10)) AND v.idvat IN (0,15,20), v.netto, 0)) AS K_19,          -- C.6
                SUM(IF(n.rv_id IN (IFNULL(d.C6r1, -10), IFNULL(d.C6r2, -10), IFNULL(d.C6r3, -10), IFNULL(d.C6r4, -10), IFNULL(d.C6r5, -10), IFNULL(d.C6r6, -10)) AND v.idvat IN (0,15,20), v.vat, 0)) AS K_20,   -- C.6 vat
               
               
               
               
                SUM(IF(n.rv_id IN (IFNULL(d.C7r1, -10), IFNULL(d.C7r2, -10)), v.netto, 0)) AS K_21,                     -- C.7 (WDT)
                SUM(IF(n.rv_id IN (IFNULL(d.C8r1, -10), IFNULL(d.C8r2, -10)), v.netto, 0)) AS K_22,                     -- C.8 (Eksport towar?
                SUM(IF(n.rv_id IN (IFNULL(d.C9r1, -10), IFNULL(d.C9r2, -10)), v.netto, 0)) AS K_23,                     -- C.9 (WNT)
                SUM(IF(n.rv_id IN (IFNULL(d.C9r1, -10), IFNULL(d.C9r2, -10)), v.vat, 0)) AS K_24,                     -- C.9 VAT (WNT)
                SUM(IF(n.rv_id IN (IFNULL(d.C10r1, -10), IFNULL(d.C10r2, -10)), v.netto, 0)) AS K_25,                     -- C.10
                SUM(IF(n.rv_id IN (IFNULL(d.C10r1, -10), IFNULL(d.C10r2, -10)), v.vat, 0)) AS K_26,                     -- C.10 VAT
                SUM(IF(n.rv_id IN (IFNULL(d.C11r1, -10), IFNULL(d.C11r2, -10)), v.netto, 0)) AS K_27,                     -- C.11
                SUM(IF(n.rv_id IN (IFNULL(d.C11r1, -10), IFNULL(d.C11r2, -10)), v.vat, 0)) AS K_28,                     -- C.11 VAT
                SUM(IF(n.rv_id IN (IFNULL(d.C12r1, -10), IFNULL(d.C12r2, -10)), v.netto, 0)) AS K_29,                     -- C.12
                SUM(IF(n.rv_id IN (IFNULL(d.C12r1, -10), IFNULL(d.C12r2, -10)), v.vat, 0)) AS K_30,                     -- C.12 VAT
                SUM(IF(n.rv_id IN (IFNULL(d.C13r1, -10), IFNULL(d.C13r2, -10)) AND v.IdVat=19, v.netto, 0)) AS K_31,  -- C.13
                SUM(IF(n.rv_id IN (IFNULL(d.C14r1, -10), IFNULL(d.C14r2, -10)), v.netto, 0)) AS K_32,                     -- C.14
                SUM(IF(n.rv_id IN (IFNULL(d.C14r1, -10), IFNULL(d.C14r2, -10)), v.vat, 0)) AS K_33,                     -- C.14
                SUM(IF(n.rv_id IN (IFNULL(d.C15r1, -10), IFNULL(d.C15r2, -10), IFNULL(d.C15r3, -10)), v.netto, 0)) AS K_34,
                SUM(IF(n.rv_id IN (IFNULL(d.C15r1, -10), IFNULL(d.C15r2, -10), IFNULL(d.C15r3, -10)), v.vat, 0)) AS K_35,        
                -- SUM(IF(@session.globals.Owner IN ('TRANSBUD') AND o.rv_id = 2030, o.vat, 0)) AS C_18,                     -- C.18 pole 38
                SUM(IF(n.rv_id IN (IFNULL(d.C16r1, -10), IFNULL(d.C16r2, -10) ), v.vat, 0)) AS K_36,                
                SUM(IF(n.rv_id IN (IFNULL(d.C17r1, -10), IFNULL(d.C17r2, -10) ), v.vat, 0)) AS K_37,
                SUM(IF(n.rv_id IN (IFNULL(d.C18r1, -10), IFNULL(d.C18r2, -10) ), v.vat, 0)) AS K_38,                
                SUM(IF(n.rv_id IN (IFNULL(d.C19r1, -10), IFNULL(d.C19r2, -10) ), v.vat, 0)) AS K_39                  -- C.19
                FROM opng n, opng_vat v, operdoc op, v_rejestry_vat rv, ht_dekl_vat7_def d
                WHERE
                        v.idnoper = n.guid AND rv.Idn = n.rv_id AND n.rodzaj = op.rodzaj
												AND n.deleted = 0
                        AND d.GUID = @vat7_guid
                        AND n.rv_id NOT IN (0) -- wylacza pozycje poza ewidencja vat zdefiniowane w rejestrach
                        AND n.data_vat BETWEEN _OdDnia AND _DoDnia
                        AND n.rv_id IN (IFNULL(d.C1r1, -10),IFNULL(d.C1r2, -10),IFNULL(d.C2r1, -10), IFNULL(d.C2r2, -10), IFNULL(d.C2r3, -10),
                                IFNULL(d.C2Ar1, -10), IFNULL(d.C2Ar2, -10), IFNULL(d.C2Ar3, -10),
																IFNULL(d.C3r1, -10), IFNULL(d.C3r2, -10), IFNULL(d.C3r3, -10), IFNULL(d.C3r4, -10),
                                IFNULL(d.C4r1, -10), IFNULL(d.C4r2, -10), IFNULL(d.C4r3, -10),IFNULL(d.C5r1, -10), IFNULL(d.C5r2, -10),
                                IFNULL(d.C6r1, -10), IFNULL(d.C6r2, -10), IFNULL(d.C6r3, -10), IFNULL(d.C6r4, -10), IFNULL(d.C6r5, -10), IFNULL(d.C6r6, -10),
																IFNULL(d.C7r1, -10), IFNULL(d.C7r2, -10),IFNULL(d.C8r1, -10), IFNULL(d.C8r2, -10),
                                IFNULL(d.C9r1, -10), IFNULL(d.C9r2, -10),IFNULL(d.C10r1, -10), IFNULL(d.C10r2, -10),IFNULL(d.C11r1, -10), IFNULL(d.C11r2, -10),
                                IFNULL(d.C12r1, -10), IFNULL(d.C12r2, -10),IFNULL(d.C13r1, -10), IFNULL(d.C13r2, -10),
                                IFNULL(d.C14r1, -10), IFNULL(d.C14r2, -10),IFNULL(d.C15r1, -10), IFNULL(d.C15r2, -10), IFNULL(d.C15r3, -10),
                                IFNULL(d.C16r1, -10), IFNULL(d.C16r2, -10), IFNULL(d.C17r1, -10), IFNULL(d.C17r2, -10),
                                IFNULL(d.C18r1, -10), IFNULL(d.C18r2, -10), IFNULL(d.C19r1, -10), IFNULL(d.C19r2, -10))
                        AND v.IdVat NOT IN (IFNULL(d.Cstawka1,-1),IFNULL(d.Cstawka2,-1),IFNULL(d.Cstawka3,-1))
                GROUP BY n.guid
                ORDER BY n.datawplywu, n.idn;
               
						IF @session.globals.Owner IN ('BYSEWO') THEN
							DROP TABLE IF EXISTS temp_nag_guid;
							CREATE TEMPORARY TABLE temp_nag_guid
											SELECT n.guid AS guid, LEFT(GROUP_CONCAT(DISTINCT tt.wyroznik),20) AS wyroznik
											FROM oppo p, opng n, TowrNg tt, t_vat_s t
											WHERE n.guid=p.idnoper AND tt.guid=p.idntowr AND t.guid=n.guid
											AND n.rv_id IN (2023,2054)
											GROUP BY n.guid;
							ALTER TABLE temp_nag_guid ADD INDEX guid(guid);

							DROP TABLE IF EXISTS temp_poz;
							CREATE TEMPORARY TABLE temp_poz
											SELECT n.guid, tt.wyroznik AS wyroznik, wartnet AS netto
											FROM oppo p, TowrNg tt, temp_nag_guid n
											WHERE n.guid = p.idnoper AND tt.guid = p.idntowr;
							ALTER TABLE temp_poz ADD INDEX guid(guid);
							
							DROP TABLE IF EXISTS temp_poz2;
							CREATE TEMPORARY TABLE temp_poz2
											SELECT guid, wyroznik, SUM(netto) AS netto
											FROM temp_poz
											GROUP BY guid,wyroznik;
							ALTER TABLE temp_poz2 ADD INDEX guid(guid);
							UPDATE t_vat_s SET K_21=0,K_11=0,K_12=0 WHERE rv_id IN (2023,2054) ;
							UPDATE t_vat_s t, temp_poz2 t2 SET
											K_21 = netto
							WHERE t.guid = t2.guid AND t.rv_id IN (2023,2054)AND t2.wyroznik IN  ('ST','T');

							UPDATE t_vat_s t, temp_poz2 t2 SET
											K_11 = netto,
											K_12 = netto
							WHERE t.guid = t2.guid AND t.rv_id  AND t2.wyroznik = 'U';
						END IF;
        END IF;
       
        IF (IFNULL(@vat7,0) = 0) OR _OdDnia<@rokvat7 THEN
		
        INSERT INTO t_vat_s
        SELECT guid, rv.rv_id_JPK, n.rv_id, @a:=@a+1 AS LpSprzedazy,
                CASE WHEN @session.globals.Owner IN ('IZOHAN','JARZEBINSCY','POLAM') AND n.rodzaj NOT IN (0,2,4,83)
                        AND n.kontrsymbol<> 'JEDNORAZOWI POZOSTALI' THEN (SELECT nip FROM kontrah WHERE guid = n.platnikGUID)
                WHEN @session.globals.Owner IN ('IZOHAN','JARZEBINSCY','POLAM','TRANSBUD') AND n.rodzaj IN (0,2,4,83) AND n.kontrnip = '' THEN 'brak'
                WHEN n.rodzaj IN (0,2) AND n.kontrnip = '' THEN 'brak'
                ELSE IF(n.kontrnip = '','brak',n.kontrnip)
                END AS kontrnip,
                CASE WHEN @session.globals.Owner IN ('IZOHAN','JARZEBINSCY','POLAM') AND n.rodzaj NOT IN (0,2,4,83)
                        AND n.kontrsymbol<> 'JEDNORAZOWI POZOSTALI' THEN
                        (SELECT REPLACE(REPLACE(REPLACE(nazwa, CHAR(38), ' and '),'<',' '), '&', ' and ') FROM kontrah WHERE guid = n.platnikGUID)
                ELSE REPLACE(REPLACE(REPLACE(kontrnazwa, CHAR(38), ' and '),'<',' '), '&', ' and ')
                END AS kontrnazwa,
                CASE WHEN @session.globals.Owner IN ('IZOHAN','JARZEBINSCY','POLAM') AND n.rodzaj NOT IN (0,2,4,83)
                        AND n.kontrsymbol NOT IN ('JEDNORAZOWI POZOSTALI') THEN
                        (SELECT CONCAT(ulica,', ',zipcode,' ',nazwamiasta) FROM kontrah WHERE guid = n.platnikGUID)
                WHEN @session.globals.Owner IN ('JARZEBINSCY','POLAM') AND n.rodzaj IN (0,2) THEN
                        (SELECT CONCAT(ulica,', ',zipcode,' ',nazwamiasta) FROM kontrah WHERE guid = n.kontrGUID)

                WHEN n.rodzaj IN (0,4) AND n.kontradres = '' THEN 'BRAK'
                ELSE REPLACE(REPLACE(REPLACE(n.kontradres, CHAR(38), ' and '),'<',' '), '&', ' and ')
                END AS kontradres,
                REPLACE(REPLACE(REPLACE(n.nrdokfin, CHAR(38), ' and '),'<',' '), '&', ' and ') AS nrdokfin,
                datawystaw, IF(datasprzed<>datawystaw,datasprzed,''),
                CASE WHEN @session.globals.Owner IN ('SKOK') THEN
                        SUM(IF(rv.rv_id_JPK IN (2021,2022,2029,2039,2063,2074) AND v.idvat IN (3),v.netto,0))
                WHEN @session.globals.Owner IN ('MARINE') AND @baza = 'MARINE' THEN
                        SUM(IF(rv.rv_id_JPK IN (2035),v.netto,0))
                ELSE
                        SUM(IF(rv.rv_id_JPK IN (2021,2029,2039,2063,2074) AND v.idvat IN (3),v.netto,0))
                END AS K_10, -- netto dostawa tow i uslug na ter. kraju zwolnione od podatku
                CASE WHEN @session.globals.Owner IN ('SKOK') THEN
                        SUM(IF((rv.rv_id_JPK IN (2023) AND v.idvat IN (3)) OR rv.rv_id_JPK IN (2042,2037,2038,3080),v.netto,0))
                WHEN @session.globals.Owner IN ('SEVENET') THEN
                        SUM(IF(rv.rv_id_JPK IN (2022,2035),v.netto,0))
                WHEN @session.globals.Owner IN ('HYDROMEGA') THEN
                        SUM(IF(rv.rv_id_JPK IN (2038),v.netto,0))
                WHEN @session.globals.Owner IN ('POLASZEK','ZREMB') THEN
                        SUM(IF(rv.rv_id_JPK IN (2027),v.netto,0))
                WHEN @session.globals.Owner IN ('OFFSHORE') THEN
                        SUM(IF(rv.rv_id_JPK IN (2025),v.netto,0))
                WHEN @session.globals.Owner IN ('IZOHAN') THEN
                        SUM(IF((rv.rv_id_JPK IN (2022,2023) AND v.idvat IN (3)) OR rv.rv_id_JPK IN (2042,2037,2032),v.netto,0))
                WHEN @session.globals.Owner IN ('IRKO') THEN
                        SUM(IF((rv.rv_id_JPK IN (2022,2023) AND v.idvat IN (3)) OR rv.rv_id_JPK IN (2042,2037),v.netto,0))
                WHEN @session.globals.Owner IN ('VENSKA') THEN
                        SUM(IF((rv.rv_id_JPK IN (2022,2023) AND v.idvat IN (3)) OR rv.rv_id_JPK IN (2042,2038,2032),v.netto,0))
                WHEN @session.globals.Owner IN ('SHIPYARD') THEN
                        SUM(IF((rv.rv_id_JPK IN (2022,2023) AND v.idvat IN (3)) OR rv.rv_id_JPK IN (2042,2032,2036),v.netto,0))  
                WHEN @session.globals.Owner IN ('MARINE') AND @baza = 'MARINE' THEN
                        SUM(IF(rv.rv_id_JPK IN (2032),v.netto,0))
                WHEN @session.globals.Owner IN ('ASTE') THEN
                        SUM(IF(rv.rv_id_JPK IN (2019),v.netto,0))
                WHEN @session.globals.Owner IN ('BYSEWO') THEN
                        SUM(IF((rv.rv_id_JPK IN (2022) AND v.idvat IN (3)) OR rv.rv_id_JPK IN (2042,2037,2038,2032),v.netto,0))
                ELSE
                        SUM(IF((rv.rv_id_JPK IN (2022,2023) AND v.idvat IN (3)) OR rv.rv_id_JPK IN (2042,2037,2038,2032),v.netto,0))
                END AS K_11, -- netto dostawa tow i uslug poza ter. kraju zwolnione od podatku; 2032 Axis
                CASE WHEN @session.globals.Owner IN ('SKOK') THEN
												SUM(IF(rv.rv_id_JPK IN (2042,2032,3080),v.netto,0))
								WHEN @session.globals.Owner IN ('SEVENET') THEN
                        SUM(IF(rv.rv_id_JPK IN (2022),v.netto,0))
                WHEN @session.globals.Owner IN ('PBUCH') THEN
                        SUM(IF(rv.rv_id_JPK IN (2042,2037),v.netto,0))
                WHEN @session.globals.Owner IN ('OFFSHORE') THEN
                        SUM(IF(rv.rv_id_JPK IN (2025) AND n.rodzaj = 80,v.netto,0))
                WHEN @session.globals.Owner IN ('IRKO') THEN
                        SUM(IF((rv.rv_id_JPK IN (2022,2023) AND v.idvat IN (3)) OR rv.rv_id_JPK IN (2042,2037),v.netto,0))
                WHEN @session.globals.Owner IN ('MARINE') AND @baza = 'MARINE' THEN
                        SUM(IF(rv.rv_id_JPK IN (2032),v.netto,0))
                WHEN @session.globals.Owner IN ('ASTE') THEN
                        SUM(IF(rv.rv_id_JPK IN (2019),v.netto,0))
                ELSE
                        SUM(IF(rv.rv_id_JPK IN (2042,2032),v.netto,0))
                END AS K_12, -- Kwota netto - w tym świadczenie usług, o których mowa w art. 100 ust. 1 pkt 4 ustawy; 2032 Axis
                CASE WHEN @session.globals.Owner IN ('CRIST','SHIPYARD','VENSKA','PBUCH') THEN
                        SUM(IF((rv.rv_id_JPK IN (2021,2029,2039,2063,2074,2075) AND v.idvat IN (2)) OR rv.rv_id_JPK IN (2043,2044,2045,2046),v.netto,0))
                ELSE
                SUM(IF((rv.rv_id_JPK IN (2021,2029,2039,2063,2074) AND v.idvat IN (2)) OR rv.rv_id_JPK IN (2043,2044,2045,2046,2037),v.netto,0))
                END AS K_13, -- 2037-Hydromega

                0 AS K_14, -- netto - w tym dostawa towarów, o której mowa w art. 129 ustawy
                CASE WHEN @session.globals.Owner IN ('VENSKA') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK IN (2021,2029,2039,2063,2066,2067,2074,2035,2033) AND v.idvat IN (8),v.netto,0)))
                ELSE
                        _Rnd2(SUM(IF(rv.rv_id_JPK IN (2021,2029,2039,2063,2066,2067,2074,2035,2075) AND v.idvat IN (8),v.netto,0)))
                END AS K_15,
       
                CASE WHEN @session.globals.Owner IN ('VENSKA') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK IN (2021,2029,2039,2063,2066,2067,2074,2035,2033) AND v.idvat IN (8),v.vat,0)))
                ELSE
                        _Rnd2(SUM(IF(rv.rv_id_JPK IN (2021,2029,2039,2063,2066,2067,2074,2035,2075) AND v.idvat IN (8),v.vat,0)))
                END AS K_16,
                CASE WHEN @session.globals.Owner IN ('VENSKA') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK IN (2021,2029,2039,2063,2066,2067,2074,2035,2033) AND v.idvat IN (1,16),v.netto,0)))
                ELSE
                _Rnd2(SUM(IF(rv.rv_id_JPK IN (2021,2029,2039,2063,2066,2067,2074,2035,2075) AND v.idvat IN (1,16),v.netto,0)))
                END AS K_17,
                CASE WHEN @session.globals.Owner IN ('VENSKA') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK IN (2021,2029,2039,2063,2066,2067,2074,2035,2033) AND v.idvat IN (1,16),v.vat,0)))
                ELSE
                _Rnd2(SUM(IF(rv.rv_id_JPK IN (2021,2029,2039,2063,2066,2067,2074,2035,2075) AND v.idvat IN (1,16),v.vat,0)))
                END AS K_18,
                CASE WHEN @session.globals.Owner IN ('HYDROMEGA','VOLT') THEN
                        SUM(IF(rv.rv_id_JPK IN (2021) AND v.idvat IN (0,15),v.netto,0))
                WHEN @session.globals.Owner IN ('PBUCH') THEN
                        SUM(IF(rv.rv_id_JPK IN (2021,2035) AND v.idvat IN (0,15),v.netto,0))
                WHEN @session.globals.Owner IN ('SEVENET','OFFSHORE') THEN
                        SUM(IF(rv.rv_id_JPK IN (2021,2032) AND v.idvat IN (0,15),v.netto,0))
                WHEN @session.globals.Owner IN ('AXIS','ATM') THEN
                        SUM(IF(rv.rv_id_JPK IN (2021,2031,2034) AND v.idvat IN (0,15),v.netto,0))
                WHEN @session.globals.Owner IN ('LACZPOL') THEN
                        SUM(IF(rv.rv_id_JPK IN (2021,2029) AND v.idvat IN (0,15),v.netto,0))
                WHEN @session.globals.Owner IN ('JARZEBINSCY') THEN
                        SUM(IF(rv.rv_id_JPK IN (2021,2039,2063,2066,2067,2074) AND v.idvat IN (0,15),v.netto,0))
                WHEN @session.globals.Owner IN ('COMEX') THEN
                        SUM(IF(rv.rv_id_JPK IN (2021,2039,2063,2066,2067,2074,2035) AND v.idvat IN (0,15),v.netto,0))
                WHEN @session.globals.Owner IN ('VENSKA') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK IN (2021,2029,2063,2066,2067,2074,2033) AND v.idvat IN (0,15),v.netto,0)))
                WHEN @session.globals.Owner IN ('KONKOL') AND @baza IN ('zoo', 'ht')  THEN
                        SUM(IF(rv.rv_id_JPK IN (2021,2039,2063,2066,2067,2074,2035) AND v.idvat IN (0,15),v.netto,0))
                ELSE
                        SUM(IF(rv.rv_id_JPK IN (2021,2029,2039,2063,2066,2067,2074,2035,2075) AND v.idvat IN (0,15),v.netto,0))
                END AS K_19,
                CASE WHEN @session.globals.Owner IN ('HYDROMEGA','VOLT','POLAM') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK IN (2021) AND v.idvat IN (0,15),v.vat,0)))
                WHEN @session.globals.Owner IN ('PBUCH') THEN
                        SUM(IF(rv.rv_id_JPK IN (2021,2035) AND v.idvat IN (0,15),v.vat,0))        
                WHEN @session.globals.Owner IN ('SEVENET','OFFSHORE') THEN
                        SUM(IF(rv.rv_id_JPK IN (2021,2032) AND v.idvat IN (0,15),v.vat,0))
                WHEN @session.globals.Owner IN ('AXIS','ATM') THEN
                        SUM(IF(rv.rv_id_JPK IN (2021,2031,2034) AND v.idvat IN (0,15),v.vat,0))
                WHEN @session.globals.Owner IN ('LACZPOL') THEN
                        SUM(IF(rv.rv_id_JPK IN (2021,2029) AND v.idvat IN (0,15),v.vat,0))
                WHEN @session.globals.Owner IN ('JARZEBINSCY') THEN
                        SUM(IF(rv.rv_id_JPK IN (2021,2039,2063,2066,2067,2074) AND v.idvat IN (0,15),v.vat,0))
                WHEN @session.globals.Owner IN ('COMEX') THEN
                        SUM(IF(rv.rv_id_JPK IN (2021,2039,2063,2066,2067,2074,2035) AND v.idvat IN (0,15),v.vat,0))
                WHEN @session.globals.Owner IN ('VENSKA') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK IN (2021,2029,2063,2066,2067,2074,2033) AND v.idvat IN (0,15),v.vat,0)))
                WHEN @session.globals.Owner IN ('KONKOL') AND @baza IN ('zoo', 'ht')  THEN
                        SUM(IF(rv.rv_id_JPK IN (2021,2039,2063,2066,2067,2074,2035) AND v.idvat IN (0,15),v.vat,0))
                ELSE
                        _Rnd2(SUM(IF(rv.rv_id_JPK IN (2021,2029,2039,2063,2066,2067,2074,2035,2075) AND v.idvat IN (0,15),v.vat,0)))
                END AS K_20,
                -- SUM(IF(n.rodzaj in (80) AND rv.rv_id_JPK in (2023,2047),v.netto,'')) AS K_21,
                -- SUM(IF(n.rodzaj in (50) AND rv.rv_id_JPK in (2022,2048),v.netto,'')) AS K_22,
                -- SUM(IF(rv.rv_id_JPK IN (2023,2047),v.netto,0)) AS K_21, -- na prosbe Crist tylko rejestr decyduje (klonowanie dokumentow), ale to sliskie jest
                CASE WHEN @session.globals.Owner IN ('VENSKA') THEN
                        SUM(IF(rv.rv_id_JPK IN (2023,2047,2025),v.netto,0))
                WHEN @session.globals.Owner IN ('BYSEWO') THEN
                        SUM(IF(rv.rv_id_JPK IN (2047),v.netto,0))
                ELSE
                        SUM(IF(rv.rv_id_JPK IN (2023,2047),v.netto,0))
                END AS K_21,
                CASE WHEN @session.globals.Owner IN ('SKOK','SEVENET') THEN
                        SUM(IF(rv.rv_id_JPK IN (2048),v.netto,0))
                WHEN @session.globals.Owner IN ('ASEKURACJA') THEN
                        SUM(IF(rv.rv_id_JPK IN (2048),v.netto,0))
                ELSE
                        SUM(IF(rv.rv_id_JPK IN (2022,2048),v.netto,0))
                END AS K_22,
                CASE WHEN @session.globals.Owner IN ('HYDROMEGA','SEVENET','PBUCH','ASTE') THEN
                        SUM(IF(rv.rv_id_JPK IN (2040,2029),v.netto, 0))
                WHEN @session.globals.Owner IN ('AXIS','ATM','OFFSHORE') THEN
                        SUM(IF(rv.rv_id_JPK IN (2029),v.netto, 0))
                WHEN @session.globals.Owner IN ('POLASZEK','STANPOL','POLAM','ZREMB','VOLT') THEN
                        SUM(IF(rv.rv_id_JPK IN (2024),v.netto, 0))
                WHEN @session.globals.Owner IN ('MARINE') AND @baza = 'CONRAD'  THEN
                        SUM(IF(rv.rv_id_JPK IN (2024),v.netto,0))
                WHEN @session.globals.Owner IN ('MARINE') AND @baza = 'MARINE'  THEN
                        SUM(IF(rv.rv_id_JPK IN (2036),v.netto,0))
                WHEN @session.globals.Owner IN ('BALTIMA') THEN
                        SUM(IF(rv.rv_id_JPK IN (2101),v.netto, 0))
                WHEN @session.globals.Owner IN ('IZOHAN') THEN
                        SUM(IF(rv.rv_id_JPK IN (2034),v.netto, 0))
                WHEN @session.globals.Owner IN ('COMEX') THEN
                        SUM(IF(rv.rv_id_JPK IN (2029),v.netto, 0))
                WHEN @session.globals.Owner IN ('KONKOL') THEN
                        SUM(IF(rv.rv_id_JPK IN (2024),v.netto, 0))
                WHEN @session.globals.Owner IN ('VENSKA') THEN
                        SUM(IF(rv.rv_id_JPK IN (2035),v.netto, 0))
                ELSE
                        SUM(IF(n.rodzaj IN (81) OR rv.rv_id_JPK IN (2040),v.netto, 0))
                END AS K_23, -- netto WDT nabycie towarow, 2029-Hydromega
                CASE WHEN @session.globals.Owner IN ('HYDROMEGA','SEVENET','PBUCH','ASTE') THEN
                        SUM(IF(rv.rv_id_JPK IN (2040,2029),v.vat,0))
                WHEN @session.globals.Owner IN ('AXIS','ATM','OFFSHORE') THEN
                        SUM(IF(rv.rv_id_JPK IN (2029),v.vat,0))
                WHEN @session.globals.Owner IN ('POLASZEK','STANPOL','POLAM','ZREMB','VOLT') THEN
                        SUM(IF(rv.rv_id_JPK IN (2024),v.vat, 0))
                WHEN @session.globals.Owner IN ('MARINE') AND @baza = 'CONRAD'  THEN
                        SUM(IF(rv.rv_id_JPK IN (2024),v.vat,0))
                WHEN @session.globals.Owner IN ('MARINE') AND @baza = 'MARINE'  THEN
                        SUM(IF(rv.rv_id_JPK IN (2036),v.vat,0))
                WHEN @session.globals.Owner IN ('BALTIMA') THEN
                        SUM(IF(rv.rv_id_JPK IN (2101),v.vat,0))
                WHEN @session.globals.Owner IN ('IZOHAN') THEN
                        SUM(IF(rv.rv_id_JPK IN (2034),v.vat, 0))
                WHEN @session.globals.Owner IN ('COMEX') THEN
                        SUM(IF(rv.rv_id_JPK IN (2029),v.vat, 0))
                WHEN @session.globals.Owner IN ('KONKOL') THEN
                        SUM(IF(rv.rv_id_JPK IN (2024),v.vat, 0))
                WHEN @session.globals.Owner IN ('VENSKA') THEN
                        SUM(IF(rv.rv_id_JPK IN (2035),v.vat, 0))
                ELSE
                        SUM(IF(n.rodzaj IN (81) OR rv.rv_id_JPK IN (2040),v.vat,0))
                END AS K_24, -- vat WDT nabycie towarow
                CASE WHEN @session.globals.Owner IN ('VOLT') THEN SUM(IF(rv.rv_id_JPK IN (2029),v.netto, 0))
                WHEN @session.globals.Owner IN ('ZREMB') THEN SUM(IF(rv.rv_id_JPK IN (2080),v.netto, 0))
                ELSE
                SUM(IF(n.rodzaj IN (83) AND rv.rv_id_JPK IN (2068),v.netto,0))
                END AS K_25, -- netto - Import towarów podlegający rozliczeniu zgodnie z art.33a ustawy
                CASE WHEN @session.globals.Owner IN ('VOLT') THEN SUM(IF(rv.rv_id_JPK IN (2029),v.vat, 0))
                WHEN @session.globals.Owner IN ('ZREMB') THEN SUM(IF(rv.rv_id_JPK IN (2080),v.vat, 0))
                ELSE
                SUM(IF(n.rodzaj IN (83) AND rv.rv_id_JPK IN (2068),v.vat,0))
                END AS K_26, -- vat - Import towarów podlegający rozliczeniu zgodnie z art.33a ustawy
                CASE WHEN @session.globals.Owner IN ('SKOK') THEN
                        SUM(IF((n.rodzaj IN (82) AND rv.rv_id_JPK NOT IN (2050,3020)) OR rv.rv_id_JPK IN (2071,3010),v.netto,0))
                        WHEN @session.globals.Owner IN ('HYDROMEGA') THEN SUM(IF(rv.rv_id_JPK IN (2035),v.netto,0))
                        WHEN @session.globals.Owner IN ('POLASZEK','STANPOL','POLAM','ZREMB','BYSEWO') THEN SUM(IF(rv.rv_id_JPK IN (2025),v.netto, 0))
                        WHEN @session.globals.Owner IN ('PBUCH') THEN SUM(IF(rv.rv_id_JPK IN (2033),v.netto, 0))
                        WHEN @session.globals.Owner IN ('MARINE') AND @baza = 'CONRAD' THEN SUM(IF(rv.rv_id_JPK  NOT IN (2021,2022,2024,2025,2033),v.netto, 0))
                        WHEN @session.globals.Owner IN ('ASTE') THEN SUM(IF(rv.rv_id_JPK IN (2032),v.netto, 0))
												WHEN @session.globals.Owner IN ('ASEKURACJA') THEN SUM(IF(rv.rv_id_JPK IN (2071,4),v.netto, 0))
                        ELSE
                        SUM(IF(n.rodzaj IN (82) OR rv.rv_id_JPK IN (2071),v.netto,0))
                END AS K_27, -- import uslug netto
                CASE WHEN @session.globals.Owner IN ('SKOK') THEN SUM(IF((n.rodzaj IN (82) AND rv.rv_id_JPK NOT IN (2050,3020)) OR rv.rv_id_JPK IN (2071,3010),v.vat,0))
                        WHEN @session.globals.Owner IN ('HYDROMEGA') THEN SUM(IF(rv.rv_id_JPK IN (2035),v.vat,0))
                        WHEN @session.globals.Owner IN ('POLASZEK','STANPOL','POLAM','ZREMB','BYSEWO') THEN SUM(IF(rv.rv_id_JPK IN (2025),v.vat, 0))
                        WHEN @session.globals.Owner IN ('PBUCH') THEN SUM(IF(rv.rv_id_JPK IN (2033),v.vat, 0))
                        WHEN @session.globals.Owner IN ('MARINE') AND @baza = 'CONRAD' THEN SUM(IF(rv.rv_id_JPK  NOT IN (2021,2022,2024,2025,2033),v.vat, 0))
                        WHEN @session.globals.Owner IN ('ASTE') THEN SUM(IF(rv.rv_id_JPK IN (2032),v.vat, 0))
												WHEN @session.globals.Owner IN ('ASEKURACJA') THEN SUM(IF(rv.rv_id_JPK IN (2071,4),v.vat, 0))
                        ELSE SUM(IF(n.rodzaj IN (82) OR rv.rv_id_JPK IN (2071),v.vat,0))
                END AS K_28, -- import uslug vat

                CASE WHEN @session.globals.Owner IN ('SKOK') THEN
                        SUM(IF(rv.rv_id_JPK IN (2070,3020),v.netto,0))
                        WHEN @session.globals.Owner IN ('SEVENET') THEN
                        SUM(IF(rv.rv_id_JPK IN (2073),v.netto,0))
                        WHEN @session.globals.Owner IN ('MARINE') AND @baza = 'CONRAD'  THEN
                        SUM(IF(rv.rv_id_JPK IN (2025),v.netto,0))
                        WHEN @session.globals.Owner IN ('IZOHAN') THEN
                        SUM(IF(rv.rv_id_JPK IN (2036),v.netto, 0))
                        WHEN @session.globals.Owner IN ('VENSKA') THEN
                        SUM(IF(rv.rv_id_JPK IN (2037),v.netto, 0))
                        ELSE
                        SUM(IF(rv.rv_id_JPK IN (2070),v.netto,0))
                END AS K_29, -- Kwota netto - Import usług nabywanych od podatników podatkuod wartości dodanej, do których stosuje się art. 28b ustawy
                CASE WHEN @session.globals.Owner IN ('SKOK') THEN
                        SUM(IF(rv.rv_id_JPK IN (2070,3020),v.vat,0))
                        WHEN @session.globals.Owner IN ('SEVENET') THEN
                        SUM(IF(rv.rv_id_JPK IN (2073),v.vat,0))
                        WHEN @session.globals.Owner IN ('MARINE') AND @baza = 'CONRAD'  THEN
                        SUM(IF(rv.rv_id_JPK IN (2025),v.vat,0))
                        WHEN @session.globals.Owner IN ('IZOHAN') THEN
                        SUM(IF(rv.rv_id_JPK IN (2036),v.vat, 0))
                        WHEN @session.globals.Owner IN ('VENSKA') THEN
                        SUM(IF(rv.rv_id_JPK IN (2037),v.vat, 0))
                        ELSE
                        SUM(IF(rv.rv_id_JPK IN (2070),v.vat,0))
                END AS K_30, -- j.w.
                CASE WHEN @session.globals.Owner IN ('HYDROMEGA') THEN SUM(IF(rv.rv_id_JPK IN (2039),v.netto,0))
                WHEN @session.globals.Owner IN ('JARZEBINSCY') THEN SUM(IF(rv.rv_id_JPK IN (-1),v.netto,0))
                WHEN @session.globals.Owner IN ('OFFSHORE') THEN SUM(IF(rv.rv_id_JPK IN (2036),v.netto,0))
                WHEN @session.globals.Owner IN ('ZREMB','LACZPOL','KONKOL') THEN SUM(IF(rv.rv_id_JPK IN (2021) AND v.IdVat=19 ,v.netto,0))
                WHEN @session.globals.Owner IN ('VOLT') THEN SUM(IF(rv.rv_id_JPK IN (2021) AND v.IdVat IN (19,5),v.netto,0))
                WHEN @session.globals.Owner IN ('POLIPOL') THEN SUM(IF(rv.rv_id_JPK IN (2033) AND v.IdVat=19 ,v.netto,0))
                WHEN @session.globals.Owner IN ('BYSEWO') THEN SUM(IF(rv.rv_id_JPK IN (2052,2021) AND v.IdVat=19 ,v.netto,0))
                WHEN @session.globals.Owner IN ('MARINE') AND @baza = 'MARINE' THEN SUM(IF(rv.rv_id_JPK IN (2034) AND v.IdVat=19 ,v.netto,0))
                WHEN @session.globals.Owner IN ('IZOHAN') THEN SUM(IF(rv.rv_id_JPK IN (2053,2100) AND v.IdVat=19 ,v.netto,0))
                ELSE SUM(IF(rv.rv_id_JPK IN (2053),v.netto,0))
                END AS K_31, -- Kwota netto - Dostawa towarów oraz świadczenie usług, dla których podatnikiem jest nabywca zgodnie z art. 17 ust. 1 pkt 7 lub 8 ustawy (wypełnia dostawca)
                CASE WHEN @session.globals.Owner IN ('OFFSHORE','HYDROMEGA','IZOHAN','SHIPYARD') THEN 0
                WHEN @session.globals.Owner IN ('MARINE') AND @baza = 'MARINE' THEN 0
                WHEN @session.globals.Owner IN ('SKOK') THEN SUM(IF(rv.rv_id_JPK IN (3070),v.netto,0))
                ELSE
                        SUM(IF(rv.rv_id_JPK IN (2036),v.netto,0))
                END AS K_32, -- Sprzedaż wewnętrzna WNB podatnik - nabywca (art. 17 pkt. 1 ust. 5)
                CASE WHEN @session.globals.Owner IN ('OFFSHORE','HYDROMEGA','IZOHAN','SHIPYARD') THEN 0
                WHEN @session.globals.Owner IN ('MARINE') AND @baza = 'MARINE' THEN 0
                WHEN @session.globals.Owner IN ('SKOK') THEN SUM(IF(rv.rv_id_JPK IN (3070),v.vat,0))
                ELSE
                        SUM(IF(rv.rv_id_JPK IN (2036),v.vat,0))
                END AS K_33, -- jw
                CASE WHEN @session.globals.Owner IN ('CRIST','CMT')         THEN SUM(IF(rv.rv_id_JPK IN (2049),v.netto,0))
                        WHEN @session.globals.Owner IN ('SKOK')                         THEN SUM(IF(rv.rv_id_JPK IN (2021,3030) AND v.IdVat=19, v.netto,0))
                        WHEN @session.globals.Owner IN ('HYDROMEGA')         THEN SUM(IF(rv.rv_id_JPK IN (-1),v.netto,0))
                        WHEN @session.globals.Owner IN ('AXIS','ATM','LACZPOL','VENSKA')         THEN SUM(IF(rv.rv_id_JPK IN (2039),v.netto,0))
                        WHEN @session.globals.Owner IN ('JARZEBINSCY','KONKOL')         THEN SUM(IF(rv.rv_id_JPK IN (2029),v.netto,0))
                        WHEN @session.globals.Owner IN ('POLASZEK','SPARMEBLE')         THEN SUM(IF(rv.rv_id_JPK IN (2034),v.netto,0))
                        WHEN @session.globals.Owner IN ('ENERGOREMONT') THEN SUM(IF(rv.rv_id_JPK IN (2036),v.netto,0))
                        WHEN @session.globals.Owner IN ('OFFSHORE','MPGK')         THEN SUM(IF(rv.rv_id_JPK IN (2033),v.netto,0))
                        WHEN @session.globals.Owner IN ('SEVENET')         THEN SUM(IF(rv.rv_id_JPK IN (2074),v.netto,0))
                        WHEN @session.globals.Owner IN ('POLAM')         THEN SUM(IF(rv.rv_id_JPK IN (2033),v.netto,0))
                        WHEN @session.globals.Owner IN ('MARINE') THEN SUM(IF(rv.rv_id_JPK IN (2033),v.netto,0))
                        WHEN @session.globals.Owner IN ('IZOHAN')         THEN SUM(IF(rv.rv_id_JPK IN (2038),v.netto,0))
                        WHEN @session.globals.Owner IN ('ZREMB')         THEN SUM(IF(rv.rv_id_JPK IN (2104),v.netto,0))
                        WHEN @session.globals.Owner IN ('IRKO')         THEN SUM(IF(rv.rv_id_JPK IN (2032),v.netto,0))
                        WHEN @session.globals.Owner IN ('ASEKURACJA')         THEN SUM(IF(rv.rv_id_JPK IN (2022),v.netto,0))
                        WHEN @session.globals.Owner IN ('BYSEWO') THEN SUM(IF(rv.rv_id_JPK IN (2050),v.netto,0))
                        WHEN @session.globals.Owner IN ('ENERGOREMONT_GD') THEN SUM(IF(rv.rv_id_JPK IN (2058),v.netto,0))
                        WHEN @session.globals.Owner IN ('VOLT') THEN 0
                        WHEN @session.globals.Owner IN ('SHIPYARD') THEN SUM(IF(rv.rv_id_JPK IN (2049,2038),v.netto,0))
                        WHEN @session.globals.Owner IN ('PBUCH') THEN SUM(IF(rv.rv_id_JPK IN (2031),v.netto,0))
                        ELSE SUM(IF(rv.rv_id_JPK IN (2021) AND v.IdVat=19, v.netto,0))
                END AS K_34, -- Kwota netto - Dostawa towarów oraz świadczenie usług, dla których podatnikiem jest nabywca zgodnie z art. 17 ust. 1 pkt 7 lub 8 ustawy (wypełnia nabywca)
                CASE WHEN @session.globals.Owner IN ('CRIST','CMT')         THEN SUM(IF(rv.rv_id_JPK IN (2049),v.vat,0))
                        WHEN @session.globals.Owner IN ('SKOK') THEN SUM(IF(rv.rv_id_JPK IN (2021,3030) AND v.IdVat=19, v.vat,0))
                        WHEN @session.globals.Owner IN ('HYDROMEGA')         THEN SUM(IF(rv.rv_id_JPK IN (-1),v.vat,0))
                        WHEN @session.globals.Owner IN ('AXIS','ATM','LACZPOL','VENSKA')         THEN SUM(IF(rv.rv_id_JPK IN (2039),v.vat,0))
                        WHEN @session.globals.Owner IN ('JARZEBINSCY','KONKOL')         THEN SUM(IF(rv.rv_id_JPK IN (2029),v.vat,0))
                        WHEN @session.globals.Owner IN ('POLASZEK','SPARMEBLE')         THEN SUM(IF(rv.rv_id_JPK IN (2034),v.vat,0))
                        WHEN @session.globals.Owner IN ('SEVENET')                 THEN SUM(IF(rv.rv_id_JPK IN (2074),v.vat,0))
                        WHEN @session.globals.Owner IN ('ENERGOREMONT') THEN SUM(IF(rv.rv_id_JPK IN (2036),v.vat,0))
                        WHEN @session.globals.Owner IN ('POLAM')                 THEN SUM(IF(rv.rv_id_JPK IN (2033),v.vat,0))  
                        WHEN @session.globals.Owner IN ('MARINE') THEN SUM(IF(rv.rv_id_JPK IN (2033),v.vat,0))
                        WHEN @session.globals.Owner IN ('OFFSHORE','MPGK')         THEN SUM(IF(rv.rv_id_JPK IN (2033),v.vat,0))
                        WHEN @session.globals.Owner IN ('IZOHAN')         THEN SUM(IF(rv.rv_id_JPK IN (2038),v.vat,0))
                        WHEN @session.globals.Owner IN ('ZREMB')         THEN SUM(IF(rv.rv_id_JPK IN (2104),v.vat,0))
                        WHEN @session.globals.Owner IN ('IRKO')         THEN SUM(IF(rv.rv_id_JPK IN (2032),v.vat,0))
                        WHEN @session.globals.Owner IN ('ASEKURACJA')         THEN SUM(IF(rv.rv_id_JPK IN (2022),v.vat,0))
                        WHEN @session.globals.Owner IN ('BYSEWO') THEN SUM(IF(rv.rv_id_JPK IN (2050),v.vat,0))
                        WHEN @session.globals.Owner IN ('ENERGOREMONT_GD') THEN SUM(IF(rv.rv_id_JPK IN (2058),v.vat,0))
                        WHEN @session.globals.Owner IN ('VOLT') THEN 0
                        WHEN @session.globals.Owner IN ('SHIPYARD') THEN SUM(IF(rv.rv_id_JPK IN (2049,2038),v.vat,0))
                        WHEN @session.globals.Owner IN ('PBUCH') THEN SUM(IF(rv.rv_id_JPK IN (2031),v.vat,0))
                        ELSE SUM(IF(rv.rv_id_JPK IN (2021) AND v.IdVat=19, v.vat,0))
                END AS K_35, -- jw
                0 AS K_36, --
                0 AS K_37, --
                CASE WHEN @session.globals.Owner IN ('KONKOL') THEN
                        SUM(IF(rv.rv_id_JPK IN (2038),v.netto,0))
                ELSE 0
                END AS K_38,  
                0 AS K_39 -- Kwota podatku od wewnątrzwspólnotowego nabycia paliw silnikowych, podlegająca wpłacie w terminach, o których mowa w art. 103 ust. 5a i 5b ustawy
        FROM `opng` n, `opng_vat` v, `operdoc` op, `v_rejestry_vat` rv
        WHERE
                v.idnoper = n.guid AND rv.Idn = n.rv_id AND n.rodzaj = op.rodzaj
                AND n.deleted = 0
                AND rv.idn_jpk NOT IN (0) -- wylacza pozycje poza ewidencja vat zdefiniowane w rejestrach
                AND n.data_vat BETWEEN _OdDnia AND _DoDnia
                -- AND v.idvat NOT IN (5) -- bez stawki NP, zakomentowane 28122016, raczej powinna byc zgodnosc z vat7
                AND (IF(@session.globals.Owner IN ('CRIST','SHIPYARD'), v.idvat NOT IN (5), TRUE))
                AND (IF(@session.globals.Owner IN ('JARZEBINSCY','BIJ'), n.rodzaj NOT IN (0,2,4), TRUE))
                AND (IF(@session.globals.Owner IN ('MARINE'), n.rodzaj NOT IN (104), TRUE))
                AND (IF(@session.globals.Owner IN ('MARINE') AND @baza = 'CONRAD', rv.rv_id_JPK NOT IN (2034), TRUE))
                AND (IF(@session.globals.Owner IN ('SKOK'), rv.rv_id_JPK NOT IN (3050,3060,2050), TRUE))
                AND (IF(@session.globals.Owner IN ('HYDROMEGA'), rv.rv_id_JPK NOT IN (2024,2025,2026,2027,2028,2031,2032,2033), TRUE))
                AND (IF(@session.globals.Owner IN ('VENSKA'), rv.rv_id_JPK NOT IN (2036,2034,2038), TRUE))
                AND (IF(@session.globals.Owner IN ('ENERGOREMONT_GD'), rv.rv_id_JPK NOT IN (2056), TRUE))
                AND (IF(@session.globals.Owner IN ('BYSEWO'), rv.rv_id_JPK NOT IN (2051,2032,2033), TRUE))
                AND (IF(@session.globals.Owner IN ('SHIPYARD'), rv.rv_id_JPK NOT IN (2037), TRUE))
                AND (IF(@session.globals.Owner IN ('PBUCH'), rv.rv_id_JPK NOT IN (2036), TRUE))
                AND (IF(@session.globals.Owner IN ('CRIST'), rv.rv_id_JPK NOT IN (2060,2065), TRUE))
                AND rv.rv_id_JPK NOT IN (2020, 2030, 0, 2028) -- ostatni rejestr wyklucza sprzed. wew., klona zakupu
                AND
                (op.grupa NOT IN (1,4)
                OR (@session.globals.Owner IN ('SEVENET') AND rv.rv_id_JPK IN (2025))
                OR (@session.globals.Owner IN ('SKOK') AND rv.rv_id_JPK IN (3020))
                OR (@session.globals.Owner IN ('POLAM','KAMA') AND rv.rv_id_JPK IN (2024))
                OR (@session.globals.Owner IN ('HYDROMEGA') AND rv.rv_id_JPK IN (2035,-1,2039))
                OR (@session.globals.Owner IN ('ZREMB') AND rv.rv_id_JPK IN (2024,2025,2029))
                OR (@session.globals.Owner IN ('ASTE') AND rv.rv_id_JPK IN (2040,2032))
                OR (@session.globals.Owner IN ('POLASZEK') AND rv.rv_id_JPK IN (2024,2025))
                OR (@session.globals.Owner IN ('MARINE') AND @baza = 'CONRAD' AND rv.rv_id_JPK IN (2024,2025))
                OR (@session.globals.Owner IN ('VENSKA') AND rv.rv_id_JPK IN (2033))
                OR (@session.globals.Owner IN ('BYSEWO') AND rv.rv_id_JPK IN (2025))
                OR (@session.globals.Owner IN ('ASTE') AND rv.rv_id_JPK IN (2032))
                )
        GROUP BY n.guid
        ORDER BY n.datawplywu, n.idn;
        -- limit 5;

-- pozycje faktur z wyroznikiem U maja trafiac do K_11, a z wyroznikiem T do K_21
-- pomijam stawke vat zero (idn=2) bo tak wyszlo z podanego przykladu, wszystko dla rejestru 2023
        IF @session.globals.Owner IN ('BYSEWO') THEN
                DROP TABLE IF EXISTS temp_nag_guid;
                CREATE TEMPORARY TABLE temp_nag_guid
                        SELECT n.guid AS guid, LEFT(GROUP_CONCAT(DISTINCT tt.wyroznik),20) AS wyroznik
                        FROM oppo p, opng n, TowrNg tt, t_vat_s t
                        WHERE n.guid=p.idnoper AND tt.guid=p.idntowr AND t.guid=n.guid
                        AND n.rv_id = 2023 -- AND p.idnvat NOT IN (2)
                        GROUP BY n.guid;
                ALTER TABLE temp_nag_guid ADD INDEX guid(guid);

                DROP TABLE IF EXISTS temp_poz;
                CREATE TEMPORARY TABLE temp_poz
                        SELECT n.guid, tt.wyroznik AS wyroznik, wartnet AS netto
                        FROM oppo p, TowrNg tt, temp_nag_guid n
                        WHERE n.guid = p.idnoper AND tt.guid = p.idntowr;
                ALTER TABLE temp_poz ADD INDEX guid(guid);
               
                DROP TABLE IF EXISTS temp_poz2;
                CREATE TEMPORARY TABLE temp_poz2
                        SELECT guid, wyroznik, SUM(netto) AS netto
                        FROM temp_poz
                        GROUP BY guid,wyroznik;
                ALTER TABLE temp_poz2 ADD INDEX guid(guid);
               
                UPDATE t_vat_s t, temp_poz2 t2 SET
                        K_21 = netto
                WHERE t.guid = t2.guid AND t.rv_id=2023 AND t2.wyroznik = 'T';

                UPDATE t_vat_s t, temp_poz2 t2 SET
                        K_11 = netto
                WHERE t.guid = t2.guid AND t.rv_id=2023 AND t2.wyroznik = 'U';

        END IF; -- kolor, sprzedaz uslug
       
        END IF;


        -- LEAVE SPROC;
        IF _Param_A = 'SUMA' THEN  -- gdy chcemy dodac dane z innej bazy
								SELECT count(*) INTO @aa FROM t_vat_s;
                UPDATE izolex.t_vat_s SET LpSprzedazy = LpSprzedazy + @aa;
                INSERT INTO t_vat_s
                SELECT * FROM izolex.t_vat_s;
        END IF;


        IF _Param_A <> 'RAPORT' THEN
                SELECT COUNT(*) INTO _liczba_wierszy FROM t_vat_s;
                SELECT IFNULL(SUM(_Rnd2(K_16+K_18+K_20+K_24+K_26+K_28+K_30+K_33+K_35+K_36+K_37 - K_38 - K_39)),0)
                INTO _podatek_s
                FROM t_vat_s;

                IF _liczba_wierszy > 0 THEN
                        INSERT INTO t10_guid
                        SELECT guid, LpSprzedazy AS lp
                        FROM t_vat_s
                        ORDER BY LpSprzedazy;
       
                        BEGIN
                                DECLARE done BOOL DEFAULT FALSE;
                                DECLARE _GUID VARCHAR(38) DEFAULT '';
                                DECLARE c_proc CURSOR FOR
                                SELECT guid FROM t10_guid ORDER BY lp;
                                DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

                                OPEN c_proc;
                                        loop2: LOOP
                                        SET done = FALSE;
                                        FETCH c_proc INTO _GUID;
                                        IF done THEN
                                                        LEAVE loop2;
                                        ELSE
                                                        CALL fr_ht_zest_jpk('JPK_VAT2_ONE_S',_GUID,'','','','','','','','','',_MODE);
                                                END IF;
                                        END LOOP;
                                CLOSE c_proc;    
                                END;
                ELSE
                        UPDATE t_jpk SET xmlpoz1 = CONCAT(IF(_MODE <> 'JPK_VAT3','<SprzedazWiersz typ="G">\n','<SprzedazWiersz>\n'),
                        '<LpSprzedazy>1</LpSprzedazy>\n',
                        '<NrKontrahenta>brak</NrKontrahenta>\n',
                        '<NazwaKontrahenta>brak</NazwaKontrahenta>\n',
                        '<AdresKontrahenta>brak</AdresKontrahenta>\n',
                        '<DowodSprzedazy>brak</DowodSprzedazy>\n',
                        '<DataWystawienia>',_OdDnia,'</DataWystawienia>\n',
                        '</SprzedazWiersz>\n');
                END IF;



                SET _XMLpoz = '';

                SET _XMLpoz = CONCAT(SPACE(@xml.IC*cSL), '<SprzedazCtrl>\n');
                SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<LiczbaWierszySprzedazy>',IF(_liczba_wierszy=0,1,_liczba_wierszy),'</LiczbaWierszySprzedazy>\n');
                SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<PodatekNalezny>',_podatek_s,'</PodatekNalezny>\n');
                SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</SprzedazCtrl>\n');

                UPDATE t_jpk SET xmlpoz2 = CONCAT(xmlpoz2,IFNULL(_XMLpoz,'brak1'));

        END IF;  -- IF _Param_A <> 'RAPORT' THEN

        -- sekcja zakupow
        SET @a :=0;
        IF IFNULL(@vat7,0) = 1 AND _OdDnia>=@rokvat7 THEN
        INSERT INTO t_vat_z
        SELECT
                n.guid, rv.rv_id_JPK, n.rv_id, @a:=@a+1 AS LpZakupu,
                IF(n.kontrnip='','brak',n.kontrnip) AS nrdostawcy,
                REPLACE(REPLACE(REPLACE(kontrnazwa, CHAR(38), ' and '),'<',' '), '&', ' and ') AS kontrnazwa,
                REPLACE(REPLACE(REPLACE(kontradres, CHAR(38), ' and '),'<',' '), '&', ' and ') AS kontradres,
                REPLACE(REPLACE(REPLACE(n.nrdokfin, CHAR(38), ' and '),'<',' '), '&', ' and ') AS nrdokfin,
                datawystaw, IF(@session.globals.Owner IN ('PROBIER') ,n.data_vat ,n.datawplywu) AS  datawplywu,
                SUM(IF(n.rv_id IN (IFNULL(d.D2_1r1, -10), IFNULL(d.D2_1r2, -10), IFNULL(d.D2_1r3, -10)), v.netto, 0)) AS K_43, -- D.2.43
                SUM(IF(n.rv_id IN (IFNULL(d.D2_1r1, -10), IFNULL(d.D2_1r2, -10), IFNULL(d.D2_1r3, -10)), v.vat,0))
                                - IF(n.rv_id IN (IFNULL(d.D2_1r1, -10), IFNULL(d.D2_1r2, -10), IFNULL(d.D2_1r3, -10)),(n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd),0) AS K_44, -- D.2.44

                _Rnd2(SUM(IF(n.rv_id IN (IFNULL(d.D2_2r1, -10), IFNULL(d.D2_2r2, -10), IFNULL(d.D2_2r3, -10), IFNULL(d.D2_2r4, -10),
                                                                                                IFNULL(d.D2_2r5, -10), IFNULL(d.D2_2r6, -10), IFNULL(d.D2_2r7, -10), IFNULL(d.D2_2r8, -10), IFNULL(d.D2_2r9, -10)  ),
                                        ( v.netto - n.bezodliczen), 0))) AS K_45,   -- D.2.45

                _Rnd2(SUM(IF(n.rv_id IN (IFNULL(d.D2_2r1, -10), IFNULL(d.D2_2r2, -10), IFNULL(d.D2_2r3, -10), IFNULL(d.D2_2r4, -10),
                                                                                        IFNULL(d.D2_2r5, -10), IFNULL(d.D2_2r6, -10), IFNULL(d.D2_2r7, -10),IFNULL(d.D2_2r8, -10), IFNULL(d.D2_2r9, -10)),v.vat, 0))
                                - IF(n.rv_id IN (IFNULL(d.D2_2r1, -10), IFNULL(d.D2_2r2, -10), IFNULL(d.D2_2r3, -10), IFNULL(d.D2_2r4, -10),
                                                                                        IFNULL(d.D2_2r5, -10), IFNULL(d.D2_2r6, -10), IFNULL(d.D2_2r7, -10),IFNULL(d.D2_2r8, -10), IFNULL(d.D2_2r9, -10)),
                                                                                        (n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd),0)) AS K_46,  -- D.2.46
																						
				_Rnd2(SUM(IF(n.rv_id IN (IFNULL(d.D2_2r1, -10), IFNULL(d.D2_2r2, -10), IFNULL(d.D2_2r3, -10), IFNULL(d.D2_2r4, -10),
                           IFNULL(d.D2_2r5, -10), IFNULL(d.D2_2r6, -10), IFNULL(d.D2_2r7, -10),IFNULL(d.D2_2r8, -10), IFNULL(d.D2_2r9, -10)),v.vat, 0))
                                ) AS K_46_pelny_vat, 
                (n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd) AS K_46_nie_podl_vat,																		
                -- sekcja D.3
                SUM(IF(n.rv_id IN (IFNULL(d.D3_1r1, -10), IFNULL(d.D3_1r2, -10) ), v.vat, 0)) AS K_47,                
                SUM(IF(n.rv_id IN (IFNULL(d.D3_2r1, -10), IFNULL(d.D3_2r2, -10) ), v.vat, 0)) AS K_48,        
                SUM(IF(n.rv_id IN (IFNULL(d.D3_3r1, -10), IFNULL(d.D3_3r2, -10) ), v.vat, 0)) AS K_49, 

				SUM(IF(n.rv_id IN (IFNULL(d.D3_4r1, -10), IFNULL(d.D3_4r2, -10) ), v.vat, 0))
                          - IF(n.rv_id IN (IFNULL(d.D3_4r1, -10), IFNULL(d.D3_2r2, -10)),(n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd),0) AS K_50   

				
            --    SUM(IF(n.rv_id IN (IFNULL(d.D3_4r1, -10), IFNULL(d.D3_4r2, -10) ), v.vat, 0)) AS K_50
                FROM opng n, opng_vat v, operdoc op, v_rejestry_vat rv, ht_dekl_vat7_def d
                WHERE
                        v.idnoper = n.guid AND rv.Idn = n.rv_id AND n.rodzaj = op.rodzaj
						AND n.rodzaj not in (104) -- dodane dla hydromegi tylko oni cofają dokumenty do NN
                        AND n.deleted = 0
                        AND d.GUID = @vat7_guid
                        AND n.rv_id NOT IN (0) -- wylacza pozycje poza ewidencja vat zdefiniowane w rejestrach
                        AND n.data_vat BETWEEN _OdDnia AND _DoDnia
                        AND n.rv_id IN (IFNULL(d.D2_1r1, -10), IFNULL(d.D2_1r2, -10), IFNULL(d.D2_1r3, -10),
                                IFNULL(d.D2_2r1, -10), IFNULL(d.D2_2r2, -10), IFNULL(d.D2_2r3, -10), IFNULL(d.D2_2r4, -10),
                                IFNULL(d.D2_2r5, -10), IFNULL(d.D2_2r6, -10), IFNULL(d.D2_2r7, -10), IFNULL(d.D2_2r8, -10), IFNULL(d.D2_2r9, -10),
                                IFNULL(d.D3_1r1, -10), IFNULL(d.D3_1r2, -10), IFNULL(d.D3_2r1, -10), IFNULL(d.D3_2r2, -10),
                                IFNULL(d.D3_3r1, -10), IFNULL(d.D3_3r2, -10), IFNULL(d.D3_4r1, -10), IFNULL(d.D3_4r2, -10))
                        AND v.IdVat NOT IN (IFNULL(d.Dstawka1,-1),IFNULL(d.Dstawka2,-1),IFNULL(d.Dstawka3,-1),
                                IFNULL(d.Dstawka4,-1),IFNULL(d.Dstawka5,-1),IFNULL(d.Dstawka6,-1),IFNULL(d.Dstawka7,-1))
                GROUP BY n.guid
                ORDER BY n.datawplywu, n.idn;

        END IF;

        IF (IFNULL(@vat7,0) = 0 OR  _OdDnia<@rokvat7) THEN
        INSERT INTO t_vat_z
        SELECT
                n.guid, rv.rv_id_JPK, n.rv_id, @a:=@a+1 AS LpZakupu,
                IF(n.kontrnip='','brak',n.kontrnip) AS nrdostawcy,
                REPLACE(REPLACE(REPLACE(kontrnazwa, CHAR(38), ' and '),'<',' '), '&', ' and ') AS kontrnazwa,
                REPLACE(REPLACE(REPLACE(kontradres, CHAR(38), ' and '),'<',' '), '&', ' and ') AS kontradres,
                REPLACE(REPLACE(REPLACE(n.nrdokfin, CHAR(38), ' and '),'<',' '), '&', ' and ') AS nrdokfin,
                datawystaw, datawplywu,
                CASE WHEN @session.globals.Owner IN ('SKOK') THEN
                _Rnd2(SUM(IF(rv.rv_id_JPK IN (3040),v.netto,0)))
                WHEN @session.globals.Owner IN ('IZOHAN') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK IN (2030,2055,2072,2073,3040,2049),v.netto,0)))
                ELSE
                _Rnd2(SUM(IF(rv.rv_id_JPK IN (2030,2055,2072,2073,3040),v.netto,0)))
                END AS K_43, -- zakupy inwestycyjne, środki trwałe
                CASE WHEN @session.globals.Owner IN ('SKOK','ASEKURACJA') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK IN (3040),(n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd),0)))
                WHEN @session.globals.Owner IN ('IZOHAN') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK IN (2030,2055,2072,2073,3040,2049),v.vat,0)))
                WHEN @session.globals.Owner IN ('VENSKA') THEN 0
                WHEN @session.globals.Owner IN ('ASTE','OFFSHORE','CRIST') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK IN (2030,2055),v.vat,0)))
                                        - IF(rv.rv_id_JPK IN (2030),n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd,0)
--                                         -(n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd)
                ELSE
                        _Rnd2(SUM(IF(rv.rv_id_JPK IN (2030,2055,2072,2073,3040),v.vat,0)))
                                         -(n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd)
                END AS K_44,
                CASE WHEN @session.globals.Owner IN ('SKOK') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK NOT IN (2030,2055,2072,2073,3040,2031,3050,3060),v.netto,0)))
                WHEN @session.globals.Owner IN ('ASEKURACJA') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK NOT IN (2030,2055,2072,2073,3040,2031,3050,3060),v.netto,0)))
                WHEN @session.globals.Owner IN ('IZOHAN') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK NOT IN (2030,2055,2072,2073,3040,2049),v.netto,0))
                                                -(n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd))
                WHEN @session.globals.Owner IN ('ZREMB') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK NOT IN (2030,2055,2072,2073,3040,2031,2060,2065,2101),v.netto,0)))
                ELSE
                        _Rnd2(SUM(IF(rv.rv_id_JPK NOT IN (2030,2055,2072,2073,3040,2031,2060,2065),v.netto,0)))
                END AS K_45, -- zakupy uslug i towarow pozostalych, 2031 Sevenet
               
                CASE WHEN @session.globals.Owner IN ('SKOK') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK NOT IN (2030,2055,2072,2073,3040),0,0))
                                                + IF(rv.rv_id_JPK NOT IN (2030,2055,2072,2073,3040),n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd,0))+IF(rv.rv_id_JPK  IN (2050) AND n.data_vat>'2018-01-01',n.vat,0)
                WHEN @session.globals.Owner IN ('ASEKURACJA') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK NOT IN (2055,2072,2073,3040),0,0))
                                                +(n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd))
                WHEN @session.globals.Owner IN ('IZOHAN') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK NOT IN (2030,2055,2072,2073,3040,2049),v.vat,0))
                                                -(n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd))
                WHEN @session.globals.Owner IN ('LACZPOL') THEN        
                        _Rnd2(SUM(IF(rv.rv_id_JPK IN (2020,2024),v.vat,0))
                                                -(n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd))
                WHEN @session.globals.Owner IN ('ZREMB') THEN
                        _Rnd2(SUM(IF(rv.rv_id_JPK NOT IN (2030,2055,2072,2073,3040,2031,2060,2065,2101),v.vat,0)))
                                - IF(rv.rv_id_JPK NOT IN (2030,2055,2072,2073,3040,2060,2065,2101),n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd,0)
                ELSE
                _Rnd2(SUM(IF(rv.rv_id_JPK NOT IN (2030,2055,2072,2073,3040,2060,2065),v.vat,0)))
                                - IF(rv.rv_id_JPK NOT IN (2030,2055,2072,2073,3040,2060,2065),n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd,0)

-- DANE Z NAGLOWKA NIE MOGA BYC WRZUCANE DO SUM, BO WSZYSTKO SZLAG TRAFIA JAK JEST KILKA POZYCJI W DOKUMENCIE!!!

--                         _Rnd2(SUM(IF(rv.rv_id_JPK NOT IN (2030,2055,2072,2073,3040),v.vat,0))
--                                                 -(n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd))
                END AS K_46,
				-- wyliczanie proporcji wylaczone dla JPK bez drefinicji vat
                0 AS K_46_pelny_vat, 
                0 AS K_46_nie_podl_vat,
                _Rnd2(SUM(IF(rv.rv_id_JPK IN (3050),v.netto,0))) AS K_47, -- korekta podatku naliczonego od nabycia srodkow trwalych
                _Rnd2(SUM(IF(rv.rv_id_JPK IN (3060),v.netto,0))) AS K_48, -- korekta podatku naliczonego od pozostalych nabyc
                CASE
                WHEN @session.globals.Owner IN ('ZREMB') THEN _Rnd2(SUM(IF(rv.rv_id_JPK  IN (2101),v.vat,0)))
                WHEN @session.globals.Owner IN ('CRIST') THEN _Rnd2(SUM(IF(rv.rv_id_JPK  IN (2060),v.vat,0)))
                ELSE 0
                END AS K_49,  -- korekta podatku naliczonego z art 89b ust. 1 ustawy
               
                CASE WHEN @session.globals.Owner IN ('LACZPOL') THEN _Rnd2(SUM(IF(rv.rv_id_JPK  IN (2052),v.vat,0)))
                WHEN @session.globals.Owner IN ('ZREMB') THEN _Rnd2(SUM(IF(rv.rv_id_JPK  IN (2102),v.vat,0)))
                WHEN @session.globals.Owner IN ('CRIST') THEN _Rnd2(SUM(IF(rv.rv_id_JPK  IN (2065),v.vat,0)))
                ELSE 0
                END AS K_50-- korekta podatku naliczonego z art 89b ust. 4 ustawy

        FROM `opng` n, `opng_vat` v, `operdoc` op, `v_rejestry_vat` rv
        WHERE
                v.idnoper=n.guid AND n.rodzaj=op.rodzaj AND rv.Idn = n.rv_id
                AND rv.idn_jpk NOT IN (0) -- wylacza pozycje poza ewidencja vat, takze z def rej vat
                AND (rv.rv_id_JPK IN (2020,2030) OR op.grupa IN (1,4)
                        OR (@session.globals.Owner IN ('SEVENET') AND rv.rv_id_JPK IN (2025))
                        OR (@session.globals.Owner IN ('AXIS') AND rv.rv_id_JPK IN (2040,2026))
                        OR (@session.globals.Owner IN ('MPGK','COMEX') AND rv.rv_id_JPK IN (2029))
                        OR (@session.globals.Owner IN ('LACZPOL') AND rv.rv_id_JPK IN (2052))
                        OR (@session.globals.Owner IN ('SKOK') AND rv.rv_id_JPK IN (3050,3060,2050))
                        OR (@session.globals.Owner IN ('HYDROMEGA') AND rv.rv_id_JPK IN (2019,2020,2033,2034,2036))
                        OR (@session.globals.Owner IN ('ZREMB') AND rv.rv_id_JPK IN (2104,2101,2102))
                        OR (@session.globals.Owner IN ('IZOHAN') AND rv.rv_id_JPK IN (2034,2035,2036))
                        OR (@session.globals.Owner IN ('JARZEBINSCY') AND rv.rv_id_JPK IN (2029))
                        OR (@session.globals.Owner IN ('POLASZEK') AND rv.rv_id_JPK IN (2034))
                        OR (@session.globals.Owner IN ('POLAM') AND rv.rv_id_JPK IN (2024))
                        OR (@session.globals.Owner IN ('PBUCH') AND rv.rv_id_JPK IN (2036))
                        OR (@session.globals.Owner IN ('OFFSHORE') AND rv.rv_id_JPK IN (2034))
                        OR (@session.globals.Owner IN ('MARINE') AND @baza='CONRAD' AND rv.rv_id_JPK IN (2033))
                        OR (@session.globals.Owner IN ('MARINE') AND @baza='MARINE' AND rv.rv_id_JPK IN (2033,2036))
                        OR (@session.globals.Owner IN ('IRKO') AND rv.rv_id_JPK IN (2033))
                        OR (@session.globals.Owner IN ('BYSEWO') AND rv.rv_id_JPK IN (2051))
                        OR (@session.globals.Owner IN ('ENERGOREMONT_GD') AND rv.rv_id_JPK IN (2056))
                        OR (@session.globals.Owner IN ('VENSKA') AND rv.rv_id_JPK IN (2036,2034,2038))
                        OR (@session.globals.Owner IN ('SHIPYARD') AND rv.rv_id_JPK IN (2037))
                        OR (@session.globals.Owner IN ('CRIST') AND rv.rv_id_JPK IN (2060,2065))
                        OR (n.rodzaj IN (83,84) AND rv.rv_id_JPK IN (2028))) -- ostatni warunek to SW FV i SW-FV
                -- AND v.idvat NOT IN (2,3,5,18,19,6) -- bez stawki NP (5), zwolnione, zero (2), bez odliczen, odwrotne obciazenie, poza PL
                AND (v.idvat NOT IN (2,3,5,18,19,6)
                        OR (@session.globals.Owner IN ('SEVENET','BIJ','JARZEBINSCY','ATM','AXIS', 'POLASZEK','OFFSHORE','IZOHAN','VOLT'))
                        OR (@session.globals.Owner IN ('SKOK') AND n.rodzaj IN (30))
                        OR (@session.globals.Owner IN ('PBUCH','HYDROMEGA') AND v.idvat IN (2)) -- chodzi o wlaczenie stawki zero%
                        OR (@session.globals.Owner IN ('KONKOL') AND v.idvat IN (19)) -- chodzi o wlaczenie stawki odwrotne obciazenie
                        OR (@session.globals.Owner IN ('MARINE') AND @baza='CONRAD' AND v.idvat IN (2,3,5))) -- chodzi o wlaczenie stawek zero, zw, np
                AND (IF(@session.globals.Owner IN ('BIJ','JARZEBINSCY','ATM','AXIS'), v.idvat NOT IN (18), TRUE))
                AND (IF(@session.globals.Owner IN ('OFFSHORE'), v.idvat NOT IN (5,18), TRUE)) -- bezodliczen i np
                AND (IF(@session.globals.Owner IN ('IZOHAN'), v.idvat NOT IN (3,18), TRUE))
                AND (IF(@session.globals.Owner IN ('HYDROMEGA'), rv.rv_id_JPK NOT IN (2024,2025,2026,2027,2028,2031,2032,2035), TRUE))
                AND (IF(@session.globals.Owner IN ('MARINE'), n.rodzaj NOT IN (104), TRUE))
                AND (IF(@session.globals.Owner IN ('VENSKA'), rv.rv_id_JPK NOT IN (2033), TRUE))
                AND (IF(@session.globals.Owner IN ('ZREMB'), rv.rv_id_JPK NOT IN (2031), TRUE))
                AND (IF(@session.globals.Owner IN ('MARINE') AND @baza='MARINE', rv.rv_id_JPK NOT IN (2031), TRUE))
                AND n.data_vat BETWEEN _OdDnia AND _DoDnia
                AND n.deleted = 0
        GROUP BY n.guid
        ORDER BY n.datawplywu, n.idn;
        -- limit 5;

        END IF;
		
		IF @session.globals.Owner IN ('BALTIMA','CDG','AZO') THEN
			UPDATE t_vat_z SET K_45= K_45*K_46/K_46_pelny_vat WHERE ifnull(K_46_nie_podl_vat,0)>0;
		END IF;
		
        IF @session.globals.Owner IN ('ASEKURACJA') THEN
                -- SET _proc_struktura = 0.83; -- zrobic odczyt z klucza, wartosc na dany rok
                SET @rok = (SELECT YEAR(_OdDnia));
                CALL _IReg_Get('', 'ProcentVAT_struktura', @rok, 'FLOAT', _proc_struktura, '0.83');

				-- SET @_proc_struktura = _proc_struktura;

               DROP TABLE IF EXISTS temp_nag_guid;
                CREATE TEMPORARY TABLE temp_nag_guid
                        SELECT n.guid AS guid, LEFT(GROUP_CONCAT(DISTINCT tt.wyroznik),20) AS wyroznik
                        FROM oppo p, opng n, TowrNg tt, t_vat_z t
                        WHERE n.guid=p.idnoper AND tt.guid=p.idntowr AND t.guid=n.guid
                        AND tt.wyroznik IN ('ZC','ZN','ZO','SAM ZC','SAM ZN')
                        GROUP BY n.guid;
                ALTER TABLE temp_nag_guid ADD INDEX guid(guid);

                DELETE t FROM t_vat_z t, temp_nag_guid tt WHERE tt.guid=t.guid AND tt.wyroznik IN ('ZN','SAM ZN');
                DELETE FROM temp_nag_guid WHERE wyroznik IN ('ZN','SAM ZN');


                DROP TABLE IF EXISTS temp_poz;
                CREATE TEMPORARY TABLE temp_poz
                        SELECT n.guid, tt.wyroznik AS wyroznik, p.idnvat AS idvat, v.value AS valuevat,
                        wartnet AS netto, wartvat AS vat
                        -- wartnetwal as nettowal, (bruttowal-wartnetwal) as vatwal
                        FROM oppo p, TowrNg tt, temp_nag_guid n, v_erp_vat v
                        WHERE n.guid=p.idnoper AND tt.guid=p.idntowr AND v.id = p.idnvat
                        AND tt.wyroznik NOT IN ('ZN','SAM ZN');
               
                ALTER TABLE temp_poz ADD INDEX guid(guid);

                UPDATE temp_poz SET netto = _Rnd2(netto * _proc_struktura) WHERE wyroznik IN ('ZC','SAM ZC');
                UPDATE temp_poz SET vat = _Rnd2(netto * valuevat) WHERE wyroznik IN ('ZC','SAM ZC');
               
                DROP TABLE IF EXISTS temp_poz2;
                CREATE TEMPORARY TABLE temp_poz2
                        SELECT guid, SUM(netto) AS netto, SUM(vat) AS vat
                        FROM temp_poz
                        GROUP BY guid;
                ALTER TABLE temp_poz2 ADD INDEX guid(guid);
               
                UPDATE t_vat_z t, temp_poz2 t2 SET
                        K_45 = netto,
                        K_46 = vat
                WHERE t.guid = t2.guid AND t.rv_id<>2030; -- docelowo zastapic `t.rv_id <> 2030` przez `t.rv_id in (d.D2_2r1 ... d.D2_2r7)`  (ht_dekl_vat7_def d)

                UPDATE t_vat_z t, temp_poz2 t2 SET
                        K_43 = netto,
                        K_44 = vat
                WHERE t.guid = t2.guid AND t.rv_id=2030;  -- docelowo zastapic `t.rv_id = 2030` przez `t.rv_id in (d.D2_1r1, d.D2_1r2)`  (ht_dekl_vat7_def d)

        END IF; -- asekuracja, struktura



        IF _Param_A = 'SUMA' THEN  -- gdy chcemy dodac dane z innej bazy
					SELECT count(*) INTO @aa FROM t_vat_z;
                UPDATE izolex.t_vat_z SET LpZakupu = LpZakupu + @aa;
                INSERT INTO t_vat_z
                SELECT * FROM izolex.t_vat_z;
        END IF;


        IF _Param_A <> 'RAPORT' THEN
                SELECT COUNT(*) INTO _liczba_wierszy FROM t_vat_z;
                SELECT IFNULL(SUM(_Rnd2(K_44 + K_46 + K_47 + K_48 + K_49 + K_50)),0) INTO _podatek_z FROM t_vat_z;

                IF _liczba_wierszy > 0 THEN
                        TRUNCATE t10_guid;
                        INSERT INTO t10_guid
                        SELECT guid, LpZakupu AS lp
                        FROM t_vat_z
                        ORDER BY LpZakupu;
                       
                        BEGIN
                                DECLARE done BOOL DEFAULT FALSE;
                                DECLARE _GUID VARCHAR(38) DEFAULT '';
                                DECLARE c_proc CURSOR FOR
                                SELECT guid FROM t10_guid ORDER BY lp;
                                        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

                                OPEN c_proc;
                                        loop2: LOOP
                                        SET done = FALSE;
                                        FETCH c_proc INTO _GUID;
                                        IF done THEN
                                                        LEAVE loop2;
                                        ELSE
                                                        IF _PARAM_C LIKE '%DEBUG%' THEN
                                                                SELECT * FROM opng WHERE guid=_GUID;
                                                        END IF;
                                                        CALL fr_ht_zest_jpk('JPK_VAT2_ONE_Z',_GUID,'','','','','','','','','',_MODE);
                                        END IF;
                                        END LOOP;
                                CLOSE c_proc;    
                        END;
                ELSE
                        UPDATE t_jpk SET xmlpoz3 = CONCAT(IF(_MODE <> 'JPK_VAT3','<ZakupWiersz typ="G">\n','<ZakupWiersz>\n'),
                        '<LpZakupu>1</LpZakupu>\n',
                        '<NrDostawcy>brak</NrDostawcy>\n',
                        '<NazwaDostawcy>brak</NazwaDostawcy>\n',
                        '<AdresDostawcy>brak</AdresDostawcy>\n',
                        '<DowodZakupu>brak</DowodZakupu>\n',
                        '<DataZakupu>',_OdDnia,'</DataZakupu>\n',
                        '<DataWplywu>',_OdDnia,'</DataWplywu>\n',
                        '</ZakupWiersz>\n');
                END IF;


                SET _XMLpoz = '';

                SET _XMLpoz = CONCAT(SPACE(@xml.IC*cSL), '<ZakupCtrl>\n');
                SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<LiczbaWierszyZakupow>',IF(_liczba_wierszy=0,1,_liczba_wierszy),'</LiczbaWierszyZakupow>\n');
                SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<PodatekNaliczony>',_podatek_z,'</PodatekNaliczony>\n');
                SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</ZakupCtrl>\n');

                UPDATE t_jpk SET xmlpoz4 = CONCAT(xmlpoz4,IFNULL(_XMLpoz,'brak4'));


                SET _XML := (SELECT CONCAT(xmlnag,xmlpoz1,xmlpoz2,xmlpoz3,xmlpoz4,'</JPK>') FROM t_jpk);
               
                CALL fr_ht_zest_jpk('ZAPIS', '', '', '', '', _OdDnia,_DoDnia, '', '', _Param_B, '',_MODE);

                SELECT _XML;

        ELSE        
                SELECT _Param_A; -- 'RAPORT'  (zwracamy cokolwiek, aby uniknać komunikatu `Cursor not returned from query`)

        END IF;  -- IF _Param_A <> 'RAPORT' THEN

        SET NAMES "cp1250";

    /* dupa, dla sumowania danych z baz nie mozna kasowac - todo kiedys
    DROP TABLE IF EXISTS t_jpk;
    DROP TABLE IF EXISTS t10_guid;
    DROP TABLE IF EXISTS t_vat_s;
    DROP TABLE IF EXISTS t_vat_z;
    */

END IF; -- _MODE = JPK_VAT2, JPK_VAT3


        IF _MODE = 'JPK_VAT2_ONE_S' THEN

                SELECT CONCAT(IF(_Param_D <> 'JPK_VAT3','<SprzedazWiersz typ="G">\n','<SprzedazWiersz>\n'),
                        '<LpSprzedazy>',LpSprzedazy,'</LpSprzedazy>\n',
                        -- '<NrKontrahenta>',NrKontrahenta,'</NrKontrahenta>\n',
                        '<NrKontrahenta>',IF(NrKontrahenta='','brak',NrKontrahenta),'</NrKontrahenta>\n',
                        '<NazwaKontrahenta>',NazwaKontrahenta,'</NazwaKontrahenta>\n',
                        '<AdresKontrahenta>',AdresKontrahenta,'</AdresKontrahenta>\n',
                        '<DowodSprzedazy>',DowodSprzedazy,'</DowodSprzedazy>\n',
                        '<DataWystawienia>',datawystawienia,'</DataWystawienia>\n',
                        IF(DataSprzedazy='','',CONCAT('<DataSprzedazy>',DataSprzedazy,'</DataSprzedazy>\n')),
                        IF(K_10=0,'',CONCAT('<K_10>',K_10,'</K_10>\n')),
                        IF(K_11=0,'',CONCAT('<K_11>',K_11,'</K_11>\n')),
                        IF(K_12=0,'',CONCAT('<K_12>',K_12,'</K_12>\n')),
                        IF(K_13=0,'',CONCAT('<K_13>',K_13,'</K_13>\n')),
                        IF(K_14=0,'',CONCAT('<K_14>',K_14,'</K_14>\n')),
                        IF(K_15=0 AND K_16=0,'',CONCAT('<K_15>',K_15,'</K_15>\n')),
                        IF(K_15=0 AND K_16=0,'',CONCAT('<K_16>',K_16,'</K_16>\n')),
                        IF(K_17=0 AND K_18=0,'',CONCAT('<K_17>',K_17,'</K_17>\n')),
                        IF(K_17=0 AND K_18=0,'',CONCAT('<K_18>',K_18,'</K_18>\n')),
                        IF(K_19=0 AND K_20=0,'',CONCAT('<K_19>',K_19,'</K_19>\n')),
                        IF(K_19=0 AND K_20=0,'',CONCAT('<K_20>',K_20,'</K_20>\n')),
                        IF(K_21=0,'',CONCAT('<K_21>',K_21,'</K_21>\n')),
                        IF(K_22=0,'',CONCAT('<K_22>',K_22,'</K_22>\n')),
                        IF(K_23=0 AND K_24=0,'',CONCAT('<K_23>',K_23,'</K_23>\n')),
                        IF(K_23=0 AND K_24=0,'',CONCAT('<K_24>',K_24,'</K_24>\n')),
                        IF(K_25=0 AND K_26=0,'',CONCAT('<K_25>',K_25,'</K_25>\n')),
                        IF(K_25=0 AND K_26=0,'',CONCAT('<K_26>',K_26,'</K_26>\n')),
                        IF(K_27=0 AND K_28=0,'',CONCAT('<K_27>',K_27,'</K_27>\n')),
                        IF(K_27=0 AND K_28=0,'',CONCAT('<K_28>',K_28,'</K_28>\n')),
                        IF(K_29=0 AND K_30=0,'',CONCAT('<K_29>',K_29,'</K_29>\n')),
                        IF(K_29=0 AND K_30=0,'',CONCAT('<K_30>',K_30,'</K_30>\n')),
                        IF(K_31=0,'',CONCAT('<K_31>',K_31,'</K_31>\n')),
                        IF(K_32=0 AND K_33=0,'',CONCAT('<K_32>',K_32,'</K_32>\n')),
                        IF(K_32=0 AND K_33=0,'',CONCAT('<K_33>',K_33,'</K_33>\n')),
                        IF(K_34=0 AND K_35=0,'',CONCAT('<K_34>',K_34,'</K_34>\n')),
                        IF(K_34=0 AND K_35=0,'',CONCAT('<K_35>',K_35,'</K_35>\n')),
                        IF(K_36=0,'',CONCAT('<K_36>',K_36,'</K_36>\n')),
                        IF(K_37=0,'',CONCAT('<K_37>',K_37,'</K_37>\n')),
                        IF(K_38=0,'',CONCAT('<K_38>',K_38,'</K_38>\n')),
                        '</SprzedazWiersz>\n')
                INTO @_XMLpoz1
                FROM t_vat_s WHERE guid = _GUID;

        UPDATE t_jpk SET xmlpoz1 = CONCAT(xmlpoz1,IFNULL(@_XMLpoz1, CONCAT('brak VAT2_ONE_S guid: ', _GUID)));

        END IF; -- JPK_VAT2_ONE_S


        IF _MODE = 'JPK_VAT2_ONE_Z' THEN

                SELECT CONCAT(IF(_Param_D <> 'JPK_VAT3','<ZakupWiersz typ="G">\n','<ZakupWiersz>\n'),
                        '<LpZakupu>',LpZakupu,'</LpZakupu>\n',
                        -- '<NrDostawcy>',NrDostawcy,'</NrDostawcy>\n',
                        '<NrDostawcy>',IF(NrDostawcy='','brak',NrDostawcy),'</NrDostawcy>\n',
                        '<NazwaDostawcy>',NazwaDostawcy,'</NazwaDostawcy>\n',
                        '<AdresDostawcy>',AdresDostawcy,'</AdresDostawcy>\n',
                        '<DowodZakupu>',IFNULL(DowodZakupu,''),'</DowodZakupu>\n',
                        '<DataZakupu>',DataZakupu,'</DataZakupu>\n',
                        '<DataWplywu>',DataWplywu,'</DataWplywu>\n',
                        IF(K_43=0 AND K_44=0,'',CONCAT('<K_43>',K_43,'</K_43>\n')),
                        IF(K_43=0 AND K_44=0,'',CONCAT('<K_44>',K_44,'</K_44>\n')),
                        IF(K_45=0 AND K_46=0,'',CONCAT('<K_45>',K_45,'</K_45>\n')),
                        IF(K_45=0 AND K_46=0,'',CONCAT('<K_46>',K_46,'</K_46>\n')),
                        IF(K_47=0,'',CONCAT('<K_47>',K_47,'</K_47>\n')),
                        IF(K_48=0,'',CONCAT('<K_48>',K_48,'</K_48>\n')),
                        IF(K_49=0,'',CONCAT('<K_49>',K_49,'</K_49>\n')),
                        IF(K_50=0,'',CONCAT('<K_50>',K_50,'</K_50>\n')),
                        '</ZakupWiersz>\n')
                INTO @_XMLpoz1
                FROM t_vat_z WHERE guid = _GUID;

        UPDATE t_jpk SET xmlpoz3 = CONCAT(xmlpoz3,IFNULL(@_XMLpoz1, CONCAT('brak VAT2_ONE_Z guid: ', _GUID) ));

        END IF; -- JPK_VAT2_ONE_Z



-- faktury vat
IF _MODE = 'JPK_FA' THEN
	/*
	CALL fr_ht_zest_jpk('JPK_FA', '', '', '', '', '2020-11-01','2020-11-30', '', 'RAPORT_', '0', '','');
	select * from t_faktura_poz;
	*/
	
	CALL fr_ht_zest_jpk('NAGLOWEK', '', '', '', '', _OdDnia,_DoDnia, '', '', _Param_B, '',_MODE);
	CALL _IReg_Get('DaneFirmy', 'pelna_nazwa', '0', 'STRING', _PelnaNazwa, '');
	CALL _IReg_Get('DaneFirmy', 'Address Info', '0', 'STRING', _Adres, '');

	DROP TABLE IF EXISTS t_faktura;
	CREATE TEMPORARY TABLE t_faktura (
	guid VARCHAR(38),
	rodzaj INT(11),
	kontrguid VARCHAR(38),
	rv_id VARCHAR(38),
	-- LpSprzedazy int(11),
	KodWaluty VARCHAR(3), -- kod waluty
	P_1 VARCHAR(10), -- data wystawienia
	P_2A VARCHAR(50), -- nr faktury, nrdokfin
	P_3A VARCHAR(256), -- nazwa nabywcy
	P_3B VARCHAR(256), -- adres nabywcy
	P_3C VARCHAR(256), -- nazwa sprzedawcy
	P_3D VARCHAR(256), -- adres sprzedawcy
	P_4A VARCHAR(2), -- prefiks nipu, symbol kraju
	P_4B VARCHAR(10), -- nip
	P_5A VARCHAR(2), -- prefiks nipu, symbol kraju nabywcy
	P_5B VARCHAR(10), -- nip nabywcy
	P_6 VARCHAR(10), -- data sprzedazy/wplywu
	P_13_1 DOUBLE(16,2) DEFAULT 0, -- suma netto stawki podstawowej 23 w walucie dokuemntu
	P_14_1 DOUBLE(16,2) DEFAULT 0, -- suma vat stawki podstawowej 23 w walucie dokumentu
	P_14_1W DOUBLE(16,2) DEFAULT 0, -- suma vat stawki podstawowej 23 przeliczona na pln
	P_13_2 DOUBLE(16,2) DEFAULT 0, -- suma netto stawki obnizonej 8
	P_14_2 DOUBLE(16,2) DEFAULT 0, -- suma vat stawki obnizonej 8
	P_14_2W DOUBLE(16,2) DEFAULT 0, -- suma vat stawki obnizonej 8 w pln
	P_13_3 DOUBLE(16,2) DEFAULT 0, -- suma netto stawki obnizonej drugiej 5
	P_14_3 DOUBLE(16,2) DEFAULT 0, -- suma vat stawki obnizonej drugiej 5
	P_14_3W DOUBLE(16,2) DEFAULT 0, -- suma vat stawki obnizonej drugiej 5
	P_13_4 DOUBLE(16,2) DEFAULT 0, -- suma netto stawki obnizonej trzeciej - odwrotne obciazenie i stawka 4%
	P_14_4 DOUBLE(16,2) DEFAULT 0, -- suma vat stawki obnizonej trzeciej
	P_14_4W DOUBLE(16,2) DEFAULT 0, -- suma vat stawki obnizonej trzeciej
	P_13_5 DOUBLE(16,2) DEFAULT 0, -- suma netto dostawy poza ter. kraju oraz swiadczenieuslug poza terytoruim kraju
	P_13_6 DOUBLE(16,2) DEFAULT 0, -- Suma wartości sprzedaży netto ze stawką 0%. Pole opcjonalne dla przypadków określonych w art. 106e ust.2 i 3 ustawy
																																									-- (gdy przynajmniej jedno z pól P_106E_2 i P_106E_3 przyjmuje wartość "true"), a także art. 106e ust. 4 pkt 3 i ust. 5 pkt
																																									-- 1-3 ustawy.
	P_13_7 DOUBLE(16,2) DEFAULT 0, -- Suma wartości sprzedaży zwolnionej. Pole opcjonalne dla przypadków określonych w art. 106e ust.2 i 3 ustawy (gdy
																																									-- przynajmniej jedno z pól P_106E_2 i P_106E_3 przyjmuje wartość "true"), a także art. 106e ust. 4 pkt 3 i ust. 5 pkt 1-3 ustawy.
	P_15 DOUBLE(16,2) DEFAULT 0, -- naleznosc ogolem
	P_16 VARCHAR(5), -- true/false, true jezeli "metoda kasowa" z ustawy
	P_17 VARCHAR(5), -- true/false, true jezeli samofakturowanie
	P_18 VARCHAR(5), -- true/false, true jezeli odwrotne obciazenie
	P_18A VARCHAR(5), -- true/false, true jezeli MPP
	P_19 VARCHAR(5), -- true/false, W przypadku dostawy towarów lub świadczenia usług zwolnionych od podatku na podstawie art. 43 ust. 1, art. 113 ust. 1
																																	-- i 9 albo przepisów wydanych na podstawie art. 82 ust. 3 należy podać wartość "true"; w przeciwnym przypadku - wartość- "false"
	P_19A VARCHAR(256), -- Jeśli pole P_19 równa się "true" - należy wskazać przepis ustawy albo aktu wydanego na podstawie ustawy, na
																																					-- podstawie którego podatnik stosuje zwolnienie od podatku
	P_19B VARCHAR(256), -- Jeśli pole P_19 równa się "true" - należy wskazać przepis dyrektywy 2006/112/WE, który zwalnia od podatku taką
																																									-- dostawę towarów lub takie świadczenie usług
	P_19C VARCHAR(256), -- Jeśli pole P_19 równa się "true" - należy wskazać inną podstawę prawną wskazującą na to, że dostawa towarów lub
																																									-- świadczenie usług korzysta ze zwolnienia
	P_20 VARCHAR(5), -- true/false, W przypadku, o którym mowa w art. 106c ustawy należy podać wartość "true"; w przeciwnym przypadku - wartość - "false"
	P_20A VARCHAR(256), -- Jeśli pole P_20 równa się "true" - należy podać nazwę organu egzekucyjnego lub imię i nazwisko komornika sądowego
	P_20B VARCHAR(256), -- Jeśli pole P_20 równa się "true" - należy podać adres organu egzekucyjnego lub imię i nazwisko komornika sądowego
	P_21  VARCHAR(5), -- true/false, W przypadku faktur wystawianych w imieniu i na rzecz podatnika przez jego przedstawiciela podatkowego należy podać wartość "true"; w przeciwnym przypadku - wartość - "false"
	P_21A VARCHAR(256), -- Jeśli pole P_21 równa się "true" - należy podać nazwę lub imię i nazwisko przedstawiciela podatkowego
	P_21B VARCHAR(256), -- Jeśli pole P_21 równa się "true" - należy podać adres przedstawiciela podatkowego
	P_21C VARCHAR(256), -- Jeśli pole P_21 równa się "true" - należy podać numer przedstawiciela podatkowego, za pomocą którego jest on zidentyfikowany na potrzeby podatku
	P_22 VARCHAR(10), -- dostawa nowego środka transportu d
	P_22A VARCHAR(10), -- data dopuszczenia nowego środka transportu do użytku
	P_22B VARCHAR(256), -- przebieg pojazdu  - w przypadku pojazdów lądowych, o których mowa w art. 2 pkt 10 lit. a ustawy
	P_22C VARCHAR(256), -- Liczba godzin roboczych używania nowego środka transportu - w przypadku jednostek pływających, o których mowa w
																																									-- art. 2 pkt 10 lit. b, oraz statków powietrznych, o których mowa w art. 2 pkt 10 lit. c ustawy
	P_23 VARCHAR(5), -- true/false, W przypadku faktur wystawianych przez drugiego w kolejności podatnika, o którym mowa w art. 135 ust. 1 pkt 4 lit. b i c,
																																	-- w wewnątrzwspólnotowej transakcji trójstronnej (procedurze uproszczonej) - dane określone w art. 136, należy podać wartość "true"; w przeciwnym przypadku - wartość - "false"
	P_106E_2 VARCHAR(5), -- true/false, W przypadku świadczenia usług turystyki, dla których podstawę opodatkowania stanowi zgodnie z art. 119 ust. 1 kwota
																													-- marży, faktura - w zakresie danych określonych w ust. 1 pkt 1-17 - powinna zawierać wyłącznie dane określone w ust. 1
																													-- pkt 1-8 i 15-17, a także wyrazy "procedura marży dla biur podróży", należy podać wartość "true"; w przeciwnym przypadku - wartość - "false"
	P_106E_3 VARCHAR(5), -- true/false, W przypadku dostawy towarów używanych, dzieł sztuki, przedmiotów kolekcjonerskich i antyków, dla których podstawę
																																	-- opodatkowania stanowi zgodnie z art. 120 ust. 4 i 5 marża, należy podać wartość "true"; w przeciwnym przypadku - wartość - "false"
	P_106E_3A VARCHAR(256), -- Jeżeli pole P_106E_3 równa się wartości "true", należy podać wyrazy: "procedura marży - towary używane" lub
																													-- "procedura marży - dzieła sztuki" lub "procedura marży - przedmioty kolekcjonerskie i antyki"
	RodzajFaktury VARCHAR(256), -- Rodzaj faktury: VAT - podstawowa; KOREKTA - korygująca; ZAL - faktura dokumentująca otrzymanie zapłaty lub jej
																									-- części przed dokonaniem czynności (art.106b ust. 1 pkt 4 ustawy)
	PrzyczynaKorekty VARCHAR(256),
	NrFaKorygowanej VARCHAR(256),
	OkresFaKorygowanej VARCHAR(256), -- Dla faktury korygującej - okres, do którego odnosi się udzielany opust lub obniżka, w przypadku gdy podatnik udziela
																													-- opustu lub obniżki ceny w odniesieniu do wszystkich dostaw towarów lub usług dokonanych lub świadczonych na rzecz jednego odbiorcy w danym okresie
	NrFaZaliczkowej VARCHAR(256), -- Dla faktury, o której mowa w art. 106f ust. 3 i 4 ustawy - numery poprzednich faktur zaliczkowych
	xml TEXT,
	KEY guid (guid),
	KEY kontrguid (kontrguid),
	KEY P_2A (P_2A)
	) DEFAULT CHARSET=utf8;


	DROP TABLE IF EXISTS t_faktura_poz;
	CREATE TEMPORARY TABLE t_faktura_poz (
	guid_poz VARCHAR(38), -- guid oppo
	guid VARCHAR(38), -- guid opng
	idntowr VARCHAR(38), -- guid towaru
	P_2B VARCHAR(256), -- nr faktury, nrdokfin
	P_7 VARCHAR(256), -- nazwa towaru
	P_8A VARCHAR(256), -- jednostka miary
	P_8B VARCHAR(18), -- ilosc towaru
	P_9A VARCHAR(18), -- cena netto
	P_9B VARCHAR(18), -- cena brutto
	P_10 VARCHAR(18), -- rabaty o ile nie sa w cenie netto
	P_11 DOUBLE(16,2) DEFAULT 0, -- wartosc netto
	P_11A DOUBLE(16,2) DEFAULT 0, -- wart brutto
	P_12 VARCHAR(18), -- stawka podatku
	xml TEXT,
	KEY guid_poz (guid_poz),
	KEY guid (guid)
	) DEFAULT CHARSET=utf8;


	INSERT INTO t_faktura
	SELECT n.guid, n.rodzaj, n.kontrguid, n.rv_id,
	w.symbol AS KodWaluty, 
	datawystaw AS P_1,
	nrdokfin AS P_2A,
	n.kontrnazwa AS P_3A,
	kontradres AS P_3B,
	_PelnaNazwa AS P_3C, -- nazwa sprzedawcy
	_Adres AS P_3D, -- adres sprzedawcy
	'' AS P_4A, -- prefiks nipu, symbol kraju sprzedawcy
	'' AS P_4B, -- nip sprzedawcy
	IF(LEFT(kontrnip,1) NOT REGEXP '^[0-9]',LEFT(kontrnip,2),'') AS P_5A, -- prefiks nipu, symbol kraju nabywcy
	kontrnip AS P_5B, -- nip nabywcy
	datawplywu AS P_6 , -- data sprzedazy/wplywu
	SUM(IF(v.idvat IN (15),v.nettowal,'')) AS P_13_1, -- suma netto stawki podstawowej 23
	SUM(IF(v.idvat IN (15),v.vatwal,'')) AS P_14_1, -- suma vat stawki podstawowej 23
	SUM(IF(v.idvat IN (15),v.vat,0)) AS P_14_1W, -- vat dla stawki podstawowej w pln
	SUM(IF(v.idvat IN (16),v.nettowal,'')) AS P_13_2, -- suma netto stawki obnizonej 8
	SUM(IF(v.idvat IN (16),v.vatwal,'')) P_14_2, -- suma vat stawki obnizonej 8
	SUM(IF(v.idvat IN (16),v.vat,0)) AS P_14_2W, -- vat dla stawki obnizonej w pln
	SUM(IF(v.idvat IN (8),v.nettowal,'')) AS P_13_3, -- suma netto stawki obnizonej drugiej 5
	SUM(IF(v.idvat IN (8),v.vatwal,'')) AS P_14_3, -- suma vat stawki obnizonej drugiej 5
	SUM(IF(v.idvat IN (8),v.vat,0)) AS P_14_3W, -- suma vat stawki obnizonej drugiej 5
	SUM(IF(v.idvat IN (17,19),v.nettowal,'')) AS P_13_4, -- suma netto stawki obnizonej trzeciej 4% oraz odwrotne obc.
	SUM(IF(v.idvat IN (17,19),v.vatwal,'')) AS P_14_4, -- suma vat stawki obnizonej trzeciej
	SUM(IF(v.idvat IN (17,19),v.vat,0)) AS P_14_4W, -- suma vat stawki obnizonej trzeciej w pln
	0 AS P_13_5, -- suma netto stawki dostawy towarow oraz swiadczenia uslug poza ter. kraju
	
	SUM(IF(v.idvat IN (2),v.netto,'')) AS P_13_6, -- Suma wartości sprzedaży netto ze stawką 0%. Pole opcjonalne dla przypadków określonych w art. 106e ust.2 i 3 ustawy (gdy przynajmniej jedno z pól P_106E_2 i P_106E_3 przyjmuje wartość "true"), a także art. 106e ust. 4 pkt 3 i ust. 5 pkt 1-3 ustawy.
	SUM(IF(v.idvat IN (3),v.netto,'')) AS P_13_7, -- Suma wartości sprzedaży zwolnionej. Pole opcjonalne dla przypadków określonych w art. 106e ust.2 i 3 ustawy (gdy przynajmniej jedno z pól P_106E_2 i P_106E_3 przyjmuje wartość "true"), a także art. 106e ust. 4 pkt 3 i ust. 5 pkt 1-3 ustawy.
	SUM(_Rnd2(v.bruttowal)) AS P_15, -- naleznosc ogolem
	FALSE AS P_16, -- true/false, true jezeli "metoda kasowa" z ustawy
	FALSE AS P_17, -- true/false, true jezeli samofakturowanie
	IF((SELECT COUNT(*) FROM opng_vat v1 WHERE v1.idvat=19 AND v1.idnoper = n.guid)>0,1,0) AS P_18, -- true/false, true jezeli odwrotne obciazenie
	split_payment AS P_18A, -- MPP
	IF(IFNULL(e1.jpkP19,0)>0,1,0) AS P_19,
	-- 0 AS P_19, -- true/false, W przypadku dostawy towarów lub świadczenia usług zwolnionych od podatku na podstawie art. 43 ust. 1, art. 113 ust. 1
																																	-- i 9 albo przepisów wydanych na podstawie art. 82 ust. 3 należy podać wartość "true"; w przeciwnym przypadku - wartość- "false"
	IFNULL(e1.jpkP19A,'') AS P_19A,
	-- '' AS P_19A, -- Jeśli pole P_19 równa się "true" - należy wskazać przepis ustawy albo aktu wydanego na podstawie ustawy, na
																																					-- podstawie którego podatnik stosuje zwolnienie od podatku
	IFNULL(e1.jpkP19B,'') AS P_19B,
	-- '' AS P_19B, -- Jeśli pole P_19 równa się "true" - należy wskazać przepis dyrektywy 2006/112/WE, który zwalnia od podatku taką
																																									-- dostawę towarów lub takie świadczenie usług
	IFNULL(e1.jpkP19C,'') AS P_19C, -- Jeśli pole P_19 równa się "true" - należy wskazać inną podstawę prawną wskazującą na to, że dostawa towarów lub
																																									-- świadczenie usług korzysta ze zwolnienia
	0 AS P_20, -- true/false, W przypadku, o którym mowa w art. 106c ustawy należy podać wartość "true"; w przeciwnym przypadku - wartość - "false"
	'' AS P_20A, -- Jeśli pole P_20 równa się "true" - należy podać nazwę organu egzekucyjnego lub imię i nazwisko komornika sądowego
	'' AS P_20B, -- Jeśli pole P_20 równa się "true" - należy podać adres organu egzekucyjnego lub imię i nazwisko komornika sądowego
	0 AS P_21, -- true/false, W przypadku faktur wystawianych w imieniu i na rzecz podatnika przez jego przedstawiciela podatkowego należy podać wartość "true"; w przeciwnym przypadku - wartość - "false"
	'' AS P_21A, -- Jeśli pole P_21 równa się "true" - należy podać nazwę lub imię i nazwisko przedstawiciela podatkowego
	'' AS P_21B,
	'' AS P_21C,
	'' AS P_22,
	IFNULL(e1.jpkP22A,'') AS P_22A,
	IFNULL(e1.jpkP22B,'') AS P_22B,
	IFNULL(e1.jpkP22C,'') AS P_22C,
	0 AS P_23,
	0 AS P_106E_2,
	0 AS P_106E_3,
	0 AS P_106E_3A,
	CASE WHEN n.rodzaj IN (1,2,50,80,69) THEN 'VAT' -- 69 to faktura spedycyjna
			WHEN n.rodzaj IN (3,4,85,90,105) THEN 'KOREKTA' -- 105 to korekta zbiorcza
	END AS RodzajFaktury,
	n.korektatytulem AS PrzyczynaKorekty,
	IFNULL(n.korektanrdokfin,'') AS NrFaKorygowanej,
	IFNULL(n.korektadata,'') AS OkresFaKorygowanej,
	'' AS NrFakturyZaliczkowej,
	'' AS xml
	FROM opng n
	INNER JOIN opng_vat v ON v.idnoper = n.guid
	INNER JOIN operdoc op ON op.rodzaj = n.rodzaj
	INNER JOIN waluty w ON w.idn = n.waluta
	LEFT JOIN opng_ext e1 ON e1.guid = n.guid
	WHERE op.grupa IN (0) AND n.rodzaj NOT IN (0,83,84) -- tylko sprzedaz, bez paragonow i faktur/korekt wewnetrznych
	AND datawplywu >= _OdDnia AND datawplywu <= _DoDnia
	AND n.deleted = 0
	GROUP BY n.guid
	ORDER BY n.datawplywu, n.idn;
	-- limit 5;
	
	UPDATE t_faktura SET
				P_3A = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(P_3A,'<',''),'>',''),'&','and'),'\n',''),CHAR(31),''),'\r',' '),
				P_3B = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(P_3B,'<',''),'>',''),'&','and'),'\n',''),CHAR(31),''),'\r',' '),
				P_3C = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(P_3C,'<',''),'>',''),'&','and'),'\n',''),CHAR(31),''),'\r',' '),
				P_3D = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(P_3D,'<',''),'>',''),'&','and'),'\n',''),CHAR(31),''),'\r',' '),
				P_5B = REPLACE(REPLACE(P_5B,' ',''),'-','')
	;
		UPDATE t_faktura SET
				P_5B = IF(LEFT(P_5B,1) NOT REGEXP '^[0-9]',RIGHT(P_5B, LENGTH(P_4B)-1),P_5B);
		UPDATE t_faktura SET
				P_5B = IF(LEFT(P_5B,1) NOT REGEXP '^[0-9]',RIGHT(P_5B, LENGTH(P_4B)-1),P_5B);

	-- przekodowanie prefiksow nipow wg krajow - tutaj problemem jest burdel w bazach krajow/miast w firmach
	UPDATE t_faktura t, kontrah k, Miasta m
		SET t.P_5A = m.idnkraju 
		WHERE m.nazwamiasta=k.nazwamiasta AND k.guid = kontrguid AND P_5A = '' AND P_5B <> ''; 

		UPDATE t_faktura SET
			P_5A = '', P_5B = ''
		WHERE P_5A NOT IN ('AT', 'BE', 'BG', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'EL', 'HR',
			'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'GB', 'IC', 'XI', 'XJ', 'MC');


	INSERT INTO t_faktura_poz
		SELECT p.guid AS guid_poz,
		t.guid AS guid,
		p.idntowr, 
		t.P_2A AS P_2B, -- nr faktury
		-- p.towrnazwa AS P_7, -- nazwa towaru
		REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(p.towrnazwa,'<',''),'>',''),'&','and'),'\n',''),CHAR(31),''),'\r',' ') AS P_7,
		j.nazwa AS P_8A, -- jednostka miary
		_Rnd(p.ilosc,4) AS P_8B, -- ilosc towaru
		IF(p.ilosc=0,_Rnd2(p.wartnetwal),_Rnd2(p.wartnetwal/p.ilosc)) AS P_9A, -- cena netto
		IF(p.ilosc=0,_Rnd2(p.wartbrtwal),_Rnd2(p.wartbrtwal/p.ilosc)) AS P_9B, -- cena brutto
		0 AS P_10, -- rabaty o ile nie sa w cenie netto
		_Rnd2(p.wartnetwal) AS P_11, -- wartosc netto
		_Rnd2(p.wartbrtwal) AS P_11A, -- wart brutto
		CASE WHEN ev.shortname='NP' THEN 'np'
			WHEN ev.shortname='odwr.obc.' THEN 'oo'
			ELSE LEFT(REPLACE(ev.shortname,'%',''),2) 
		END AS P_12, -- stawka podatku
		'' AS xml
		FROM oppo p, t_faktura t, Jednostki j, v_erp_vat ev
		WHERE (p.idnoper = t.guid OR p.idnoperfin = t.guid) AND p.jednostka = j.idn AND ev.ID = p.idnvat
		;
/*
uwzglednic korekty z oppo_corr - ceny i wartosci pozycji sa lepsze - no jednak nie warto isc w te strone
-- AND t.rodzaj NOT IN (3,4,85,90) -- bez korekt, dla korekt jest zlaczenie z oppo_corr
jednak nie warto isc ta droga - komplikacja duzo wieksza, a zysk w sumie zaden, jezeli chodzi tylko o korekte kwot i ilosci
*/

	-- faktury rodzaju zaliczkowego
	UPDATE t_faktura tt 
	SET tt.RodzajFaktury='ZAL'
	WHERE (SELECT count(p.guid) FROM t_faktura_poz p, TowrNg t 
					WHERE p.idntowr=t.guid and tt.guid=p.guid AND t.wyroznik = 'ZAL' AND p.P_9A > 0)>0;
	

	IF _Param_A <> 'RAPORT' THEN

		UPDATE t_faktura SET xml = 
			CONCAT('<Faktura>\n',
			'<KodWaluty>',KodWaluty,'</KodWaluty>\n',
			'<P_1>',P_1,'</P_1>\n',
			'<P_2A>',P_2A,'</P_2A>\n',
			'<P_3A>',P_3A,'</P_3A>\n',
			'<P_3B>',P_3B,'</P_3B>\n',
			'<P_3C>',P_3C,'</P_3C>\n',
			'<P_3D>',P_3D,'</P_3D>\n',
			IF(P_4A='','',CONCAT('<P_4A>',P_4A,'</P_4A>\n')),
			IF(P_4B='' OR P_4A<>'PL','',CONCAT('<P_4B>',P_4B,'</P_4B>\n')),
			IF(P_5A='','',CONCAT('<P_5A>',P_5A,'</P_5A>\n')),
			IF(P_5B='' OR P_5A<>'PL','',CONCAT('<P_5B>',P_5B,'</P_5B>\n')),
			'<P_6>',P_6,'</P_6>\n',
			'<P_13_1>',P_13_1,'</P_13_1>\n',
			'<P_14_1>',P_14_1,'</P_14_1>\n',
			IF(P_14_1W=0,'',CONCAT('<P_14_1W>',P_14_1W,'</P_14_1W>\n')),
			'<P_13_2>',P_13_2,'</P_13_2>\n',
			'<P_14_2>',P_14_2,'</P_14_2>\n',
			IF(P_14_2W=0,'',CONCAT('<P_14_2W>',P_14_2W,'</P_14_2W>\n')),
			'<P_13_3>',P_13_3,'</P_13_3>\n',
			'<P_14_3>',P_14_3,'</P_14_3>\n',
			IF(P_14_3W=0,'',CONCAT('<P_14_3W>',P_14_3W,'</P_14_3W>\n')),
			'<P_13_4>',P_13_4,'</P_13_4>\n',
			'<P_14_4>',P_14_4,'</P_14_4>\n',
			IF(P_14_4W=0,'',CONCAT('<P_14_4W>',P_14_4W,'</P_14_4W>\n')),
			'<P_13_5>',P_13_5,'</P_13_5>\n',
			'<P_13_6>',P_13_6,'</P_13_6>\n',
			'<P_13_7>',P_13_7,'</P_13_7>\n',
			'<P_15>',P_15,'</P_15>\n',
			'<P_16>',P_16,'</P_16>\n',
			'<P_17>',P_17,'</P_17>\n',
			'<P_18>',P_18,'</P_18>\n',
			'<P_18A>',P_18A,'</P_18A>\n',
			'<P_19>',P_19,'</P_19>\n',
			'<P_19A>',P_19A,'</P_19A>\n',
			'<P_19B>',P_19B,'</P_19B>\n',
			'<P_19C>',P_19C,'</P_19C>\n',
			'<P_20>',P_20,'</P_20>\n',
			IF(P_20=0,'',CONCAT('<P_20A>',P_20A,'</P_20A>\n')),
			IF(P_20=0,'',CONCAT('<P_20B>',P_20B,'</P_20B>\n')),
			'<P_21>',P_21,'</P_21>\n',
			IF(P_21=0,'',CONCAT('<P_21A>',P_21A,'</P_21A>\n')),
			IF(P_21=0,'',CONCAT('<P_21B>',P_21B,'</P_21B>\n')),
			IF(P_21=0,'',CONCAT('<P_21C>',P_21C,'</P_21C>\n')),
			'<P_22>',P_22,'</P_22>\n',
			IF(P_22A='','',CONCAT('<P_22A>',P_22A,'</P_22A>\n')),
			IF(P_22B='','',CONCAT('<P_22B>',P_22B,'</P_22B>\n')),
			IF(P_22C='','',CONCAT('<P_22C>',P_22C,'</P_22C>\n')),
			'<P_23>',P_23,'</P_23>\n',
			'<P_106E_2>',P_106E_2,'</P_106E_2>\n',
			'<P_106E_3>',P_106E_3,'</P_106E_3>\n',
			'<P_106E_3A>',P_106E_3A,'</P_106E_3A>\n',
			'<RodzajFaktury>',RodzajFaktury,'</RodzajFaktury>\n',
			IF(PrzyczynaKorekty='','',CONCAT('<PrzyczynaKorekty>',PrzyczynaKorekty,'</PrzyczynaKorekty>\n')),
			IF(NrFaKorygowanej='','',CONCAT('<NrFaKorygowanej>',NrFaKorygowanej,'</NrFaKorygowanej>\n')),
			IF(OkresFaKorygowanej=0,'',CONCAT('<OkresFaKorygowanej>',OkresFaKorygowanej,'</OkresFaKorygowanej>\n')),
			IF(NrFaZaliczkowej='','',CONCAT('<NrFaZaliczkowej>',NrFaZaliczkowej,'</NrFaZaliczkowej>\n')),
			'</Faktura>\n')
			;

			UPDATE t_jpk SET xmlpoz1 = (SELECT GROUP_CONCAT(xml SEPARATOR '') FROM t_faktura);


			SELECT COUNT(*) INTO _liczba_wierszy FROM t_faktura;
			SELECT SUM(_Rnd2(P_15)) INTO _wartosc_faktur FROM t_faktura;
			
			SET _XMLpoz = '';

			SET _XMLpoz = CONCAT(SPACE(@xml.IC*cSL), '<FakturaCtrl>\n');
			SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<LiczbaFaktur>',_liczba_wierszy,'</LiczbaFaktur>\n');
			SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<WartoscFaktur>',_wartosc_faktur,'</WartoscFaktur>\n');
			SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</FakturaCtrl>\n');
			
			UPDATE t_jpk SET xmlpoz1 = CONCAT('\n',xmlpoz1,IFNULL(_XMLpoz,'brak1'),'\n');

-- sekcja pozycji faktur
		UPDATE t_faktura_poz SET xml = 
			CONCAT('<FakturaWiersz>\n',
			'<P_2B>',P_2B,'</P_2B>\n',
			'<P_7>',P_7,'</P_7>\n',
			'<P_8A>',P_8A,'</P_8A>\n',
			'<P_8B>',P_8B,'</P_8B>\n',
			'<P_9A>',P_9A,'</P_9A>\n',
			'<P_9B>',P_9B,'</P_9B>\n',
			'<P_10>',P_10,'</P_10>\n',
			'<P_11>',P_11,'</P_11>\n',
			'<P_11A>',P_11A,'</P_11A>\n',
			'<P_12>',P_12,'</P_12>\n',
			'</FakturaWiersz>\n')
		;

			UPDATE t_jpk SET xmlpoz2 = (SELECT GROUP_CONCAT(xml ORDER BY P_2B SEPARATOR '') FROM t_faktura_poz);

			SELECT COUNT(*) INTO _liczba_wierszy FROM t_faktura_poz;
			SELECT SUM(_Rnd2(P_11)) INTO _wartosc_faktur FROM t_faktura_poz;

			SET _XMLpoz = '';

			SET _XMLpoz = CONCAT( SPACE(@xml.IC*cSL), '<FakturaWierszCtrl>\n');
			SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<LiczbaWierszyFaktur>',_liczba_wierszy,'</LiczbaWierszyFaktur>\n');
			SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<WartoscWierszyFaktur>',_wartosc_faktur,'</WartoscWierszyFaktur>\n');
			SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</FakturaWierszCtrl>\n');

			UPDATE t_jpk SET xmlpoz2 = CONCAT('\n',xmlpoz2,IFNULL(_XMLpoz,'brak2'),'\n');

			SET _XML := (SELECT CONCAT(xmlnag,xmlpoz1,xmlpoz2,xmlpoz3,xmlpoz4,'</JPK>') FROM t_jpk);

			CALL fr_ht_zest_jpk('ZAPIS', '', '', '', '', _OdDnia,_DoDnia, '', '', _Param_B, '',_MODE);

			SELECT _XML;

	ELSE
		SELECT _Param_A; -- 'RAPORT'  (zwracamy cokolwiek, aby uniknać komunikatu `Cursor not returned from query`)
	END IF;  -- IF _Param_A <> 'RAPORT'

	SET NAMES "cp1250";

	DROP TABLE IF EXISTS t_faktura;
	DROP TABLE IF EXISTS t_faktura_poz;

END IF; -- JPK_FA


-- faktury vat wersja 4, od kwietnia 2022
IF _MODE = 'JPK_FA4' THEN
	/*
	CALL fr_ht_zest_jpk('JPK_FA4', '', '', '', '', '2022-05-01','2022-05-30', '', 'RAPORT_', '0', '','');
	select * from t_faktura_poz;
	*/

	CALL fr_ht_zest_jpk('NAGLOWEK', '', '', '', '', _OdDnia,_DoDnia, '', '', _Param_B, '',_MODE);
	CALL _IReg_Get('DaneFirmy', 'pelna_nazwa', '0', 'STRING', _PelnaNazwa, '');
	CALL _IReg_Get('DaneFirmy', 'Address Info', '0', 'STRING', _Adres, '');

	DROP TABLE IF EXISTS t_faktura;
	CREATE TEMPORARY TABLE t_faktura (
	guid VARCHAR(38),
	rodzaj INT(11),
	kontrguid VARCHAR(38),
	rv_id VARCHAR(38),
	-- LpSprzedazy int(11),
	KodWaluty VARCHAR(3), -- kod waluty
	P_1 VARCHAR(10), -- data wystawienia
	P_2A VARCHAR(50), -- nr faktury, nrdokfin
	P_3A VARCHAR(256), -- nazwa nabywcy
	P_3B VARCHAR(256), -- adres nabywcy
	P_3C VARCHAR(256), -- nazwa sprzedawcy
	P_3D VARCHAR(256), -- adres sprzedawcy
	P_4A VARCHAR(2), -- prefiks nipu, symbol kraju
	P_4B VARCHAR(10), -- nip
	P_5A VARCHAR(2), -- prefiks nipu, symbol kraju nabywcy
	P_5B VARCHAR(10), -- nip nabywcy
	P_6 VARCHAR(10), -- data sprzedazy/wplywu
	P_13_1 DOUBLE(16,2) DEFAULT 0, -- suma netto stawki podstawowej 23 w walucie dokuemntu
	P_14_1 DOUBLE(16,2) DEFAULT 0, -- suma vat stawki podstawowej 23 w walucie dokumentu
	P_14_1W DOUBLE(16,2) DEFAULT 0, -- suma vat stawki podstawowej 23 przeliczona na pln
	P_13_2 DOUBLE(16,2) DEFAULT 0, -- suma netto stawki obnizonej 8
	P_14_2 DOUBLE(16,2) DEFAULT 0, -- suma vat stawki obnizonej 8
	P_14_2W DOUBLE(16,2) DEFAULT 0, -- suma vat stawki obnizonej 8 w pln
	P_13_3 DOUBLE(16,2) DEFAULT 0, -- suma netto stawki obnizonej drugiej 5
	P_14_3 DOUBLE(16,2) DEFAULT 0, -- suma vat stawki obnizonej drugiej 5
	P_14_3W DOUBLE(16,2) DEFAULT 0, -- suma vat stawki obnizonej drugiej 5
	P_13_4 DOUBLE(16,2) DEFAULT 0, -- suma netto stawki obnizonej trzeciej - odwrotne obciazenie i stawka 4%
	P_14_4 DOUBLE(16,2) DEFAULT 0, -- suma vat stawki obnizonej trzeciej
	P_14_4W DOUBLE(16,2) DEFAULT 0, -- suma vat stawki obnizonej trzeciej
	P_13_5 DOUBLE(16,2) DEFAULT 0, -- suma netto dostawy poza ter. kraju oraz swiadczenieuslug poza terytoruim kraju

	P_14_5 DOUBLE(16,2) DEFAULT 0, -- Kwota podatku od wartości dodanej w przypadku procedur szczególnych, o których mowa w dziale XII w rozdziałach 6a, 7 i 9 ustawy

	P_13_6 DOUBLE(16,2) DEFAULT 0, -- Suma wartości sprzedaży netto ze stawką 0%. Pole opcjonalne dla przypadków określonych w art. 106e ust.2 i 3 ustawy
																																									-- (gdy przynajmniej jedno z pól P_106E_2 i P_106E_3 przyjmuje wartość "true"), a także art. 106e ust. 4 pkt 3 i ust. 5 pkt
																																									-- 1-3 ustawy.
	P_13_7 DOUBLE(16,2) DEFAULT 0, -- Suma wartości sprzedaży zwolnionej. Pole opcjonalne dla przypadków określonych w art. 106e ust.2 i 3 ustawy (gdy
																																									-- przynajmniej jedno z pól P_106E_2 i P_106E_3 przyjmuje wartość "true"), a także art. 106e ust. 4 pkt 3 i ust. 5 pkt 1-3 ustawy.
	P_15 DOUBLE(16,2) DEFAULT 0, -- naleznosc ogolem
	P_16 VARCHAR(5), -- true/false, true jezeli "metoda kasowa" z ustawy
	P_17 VARCHAR(5), -- true/false, true jezeli samofakturowanie
	P_18 VARCHAR(5), -- true/false, true jezeli odwrotne obciazenie
	P_18A VARCHAR(5), -- true/false, true jezeli MPP
	P_19 VARCHAR(5), -- true/false, W przypadku dostawy towarów lub świadczenia usług zwolnionych od podatku na podstawie art. 43 ust. 1, art. 113 ust. 1
																																	-- i 9 albo przepisów wydanych na podstawie art. 82 ust. 3 należy podać wartość "true"; w przeciwnym przypadku - wartość- "false"
	P_19A VARCHAR(256), -- Jeśli pole P_19 równa się "true" - należy wskazać przepis ustawy albo aktu wydanego na podstawie ustawy, na
																																					-- podstawie którego podatnik stosuje zwolnienie od podatku
	P_19B VARCHAR(256), -- Jeśli pole P_19 równa się "true" - należy wskazać przepis dyrektywy 2006/112/WE, który zwalnia od podatku taką
																																									-- dostawę towarów lub takie świadczenie usług
	P_19C VARCHAR(256), -- Jeśli pole P_19 równa się "true" - należy wskazać inną podstawę prawną wskazującą na to, że dostawa towarów lub
																																									-- świadczenie usług korzysta ze zwolnienia
	P_20 VARCHAR(5), -- true/false, W przypadku, o którym mowa w art. 106c ustawy należy podać wartość "true"; w przeciwnym przypadku - wartość - "false"
	P_20A VARCHAR(256), -- Jeśli pole P_20 równa się "true" - należy podać nazwę organu egzekucyjnego lub imię i nazwisko komornika sądowego
	P_20B VARCHAR(256), -- Jeśli pole P_20 równa się "true" - należy podać adres organu egzekucyjnego lub imię i nazwisko komornika sądowego
	P_21  VARCHAR(5), -- true/false, W przypadku faktur wystawianych w imieniu i na rzecz podatnika przez jego przedstawiciela podatkowego należy podać wartość "true"; w przeciwnym przypadku - wartość - "false"
	P_21A VARCHAR(256), -- Jeśli pole P_21 równa się "true" - należy podać nazwę lub imię i nazwisko przedstawiciela podatkowego
	P_21B VARCHAR(256), -- Jeśli pole P_21 równa się "true" - należy podać adres przedstawiciela podatkowego
	P_21C VARCHAR(256), -- Jeśli pole P_21 równa się "true" - należy podać numer przedstawiciela podatkowego, za pomocą którego jest on zidentyfikowany na potrzeby podatku
	P_22 VARCHAR(10), -- dostawa nowego środka transportu d
	P_22A VARCHAR(10), -- data dopuszczenia nowego środka transportu do użytku
	P_22B VARCHAR(256), -- przebieg pojazdu  - w przypadku pojazdów lądowych, o których mowa w art. 2 pkt 10 lit. a ustawy
	P_22C VARCHAR(256), -- Liczba godzin roboczych używania nowego środka transportu - w przypadku jednostek pływających, o których mowa w
																																									-- art. 2 pkt 10 lit. b, oraz statków powietrznych, o których mowa w art. 2 pkt 10 lit. c ustawy
	P_23 VARCHAR(5), -- true/false, W przypadku faktur wystawianych przez drugiego w kolejności podatnika, o którym mowa w art. 135 ust. 1 pkt 4 lit. b i c,
																																	-- w wewnątrzwspólnotowej transakcji trójstronnej (procedurze uproszczonej) - dane określone w art. 136, należy podać wartość "true"; w przeciwnym przypadku - wartość - "false"
	P_106E_2 VARCHAR(5), -- true/false, W przypadku świadczenia usług turystyki, dla których podstawę opodatkowania stanowi zgodnie z art. 119 ust. 1 kwota
																													-- marży, faktura - w zakresie danych określonych w ust. 1 pkt 1-17 - powinna zawierać wyłącznie dane określone w ust. 1
																													-- pkt 1-8 i 15-17, a także wyrazy "procedura marży dla biur podróży", należy podać wartość "true"; w przeciwnym przypadku - wartość - "false"
	P_106E_3 VARCHAR(5), -- true/false, W przypadku dostawy towarów używanych, dzieł sztuki, przedmiotów kolekcjonerskich i antyków, dla których podstawę
																																	-- opodatkowania stanowi zgodnie z art. 120 ust. 4 i 5 marża, należy podać wartość "true"; w przeciwnym przypadku - wartość - "false"
	P_106E_3A VARCHAR(256), -- Jeżeli pole P_106E_3 równa się wartości "true", należy podać wyrazy: "procedura marży - towary używane" lub
																													-- "procedura marży - dzieła sztuki" lub "procedura marży - przedmioty kolekcjonerskie i antyki"
	RodzajFaktury VARCHAR(256), -- Rodzaj faktury: VAT - podstawowa; KOREKTA - korygująca; ZAL - Faktura dokumentująca otrzymanie zapłaty lub jej części przed dokonaniem czynności oraz faktura wystawiona w związku z art. 106f ust. 4 ustawy
	PrzyczynaKorekty VARCHAR(256),
	NrFaKorygowanej VARCHAR(256),
	OkresFaKorygowanej VARCHAR(256), -- Dla faktury korygującej - okres, do którego odnosi się udzielany opust lub obniżka, w przypadku gdy podatnik udziela opustu lub obniżki ceny w odniesieniu do wszystkich dostaw towarów lub usług dokonanych lub świadczonych na rzecz jednego odbiorcy w danym okresie
	NrFaZaliczkowej VARCHAR(256), -- Dla faktury, o której mowa w art. 106f ust. 3 i 4 ustawy - numery poprzednich faktur zaliczkowych
	xml TEXT,
	KEY guid (guid),
	KEY kontrguid (kontrguid),
	KEY P_2A (P_2A)
	) DEFAULT CHARSET=utf8;


	DROP TABLE IF EXISTS t_faktura_poz;
	CREATE TEMPORARY TABLE t_faktura_poz (
	guid_poz VARCHAR(38), -- guid oppo
	guid VARCHAR(38), -- guid opng
	idntowr VARCHAR(38), -- guid towaru
	P_2B VARCHAR(256), -- nr faktury, nrdokfin
	P_7 VARCHAR(256), -- nazwa towaru
	P_8A VARCHAR(256), -- jednostka miary
	P_8B VARCHAR(18), -- ilosc towaru
	P_9A VARCHAR(18), -- cena netto
	P_9B VARCHAR(18), -- cena brutto
	P_10 VARCHAR(18), -- rabaty o ile nie sa w cenie netto
	P_11 DOUBLE(16,2) DEFAULT 0, -- wartosc netto
	P_11A DOUBLE(16,2) DEFAULT 0, -- wart brutto
	P_12 VARCHAR(18), -- stawka podatku
	P_12_XII VARCHAR(18), -- Stawka podatku od wartości dodanej w przypadku procedur szczególnych, o których mowa w dziale XII w rozdziałach 6a, 7 i 9 ustawy VAT
	xml TEXT,
	KEY guid_poz (guid_poz),
	KEY guid (guid)
	) DEFAULT CHARSET=utf8;


	DROP TABLE IF EXISTS t_zamowienie;
	CREATE TEMPORARY TABLE t_zamowienie (
	guid_poz VARCHAR(38), -- guid zmpo
	guid VARCHAR(38), -- guid zmng
	guid_opng VARCHAR(38), -- guid faktury, do ktorej jest to zamowienie
	P_2AZ VARCHAR(50), -- nr faktury, nrdokfin
	WartoscZamowienia DOUBLE(16,2) DEFAULT 0, -- wartosc brutto calego zamowienia
	idntowr VARCHAR(38), -- guid towaru
	P_7Z VARCHAR(256), -- nazwa towaru
	P_8AZ VARCHAR(256), -- jednostka miary
	P_8BZ VARCHAR(18), -- ilosc towaru
	P_9AZ VARCHAR(18), -- cena netto
	P_11NettoZ VARCHAR(18), -- wartosc pozycji netto
	P_11VatZ VARCHAR(18), -- wartosc podatku
	P_12Z VARCHAR(18), -- stawka podatku
	P_12_XII VARCHAR(18), -- Stawka podatku od wartości dodanej w przypadku procedur szczególnych, o których mowa w dziale XII w rozdziałach 6a, 7 i 9 ustawy VAT
	xml TEXT,
	KEY guid_poz (guid_poz),
	KEY guid (guid)
	) DEFAULT CHARSET=utf8;


	INSERT INTO t_faktura
	SELECT n.guid, n.rodzaj, n.kontrguid, n.rv_id,
	w.symbol AS KodWaluty,
	datawystaw AS P_1,
	nrdokfin AS P_2A,
	n.kontrnazwa AS P_3A,
	kontradres AS P_3B,
	_PelnaNazwa AS P_3C, -- nazwa sprzedawcy
	_Adres AS P_3D, -- adres sprzedawcy
	'' AS P_4A, -- prefiks nipu, symbol kraju sprzedawcy
	'' AS P_4B, -- nip sprzedawcy
	IF(LEFT(kontrnip,1) NOT REGEXP '^[0-9]',LEFT(kontrnip,2),'') AS P_5A, -- prefiks nipu, symbol kraju nabywcy
	kontrnip AS P_5B, -- nip nabywcy
	datawplywu AS P_6 , -- data sprzedazy/wplywu
	SUM(IF(v.idvat IN (15),v.nettowal,'')) AS P_13_1, -- suma netto stawki podstawowej 23
	SUM(IF(v.idvat IN (15),v.vatwal,'')) AS P_14_1, -- suma vat stawki podstawowej 23
	SUM(IF(v.idvat IN (15),v.vat,0)) AS P_14_1W, -- vat dla stawki podstawowej w pln
	SUM(IF(v.idvat IN (16),v.nettowal,'')) AS P_13_2, -- suma netto stawki obnizonej 8
	SUM(IF(v.idvat IN (16),v.vatwal,'')) P_14_2, -- suma vat stawki obnizonej 8
	SUM(IF(v.idvat IN (16),v.vat,0)) AS P_14_2W, -- vat dla stawki obnizonej w pln
	SUM(IF(v.idvat IN (8),v.nettowal,'')) AS P_13_3, -- suma netto stawki obnizonej drugiej 5
	SUM(IF(v.idvat IN (8),v.vatwal,'')) AS P_14_3, -- suma vat stawki obnizonej drugiej 5
	SUM(IF(v.idvat IN (8),v.vat,0)) AS P_14_3W, -- suma vat stawki obnizonej drugiej 5
	SUM(IF(v.idvat IN (17,19),v.nettowal,'')) AS P_13_4, -- suma netto stawki obnizonej trzeciej 4% oraz odwrotne obc.
	SUM(IF(v.idvat IN (17,19),v.vatwal,'')) AS P_14_4, -- suma vat stawki obnizonej trzeciej
	SUM(IF(v.idvat IN (17,19),v.vat,0)) AS P_14_4W, -- suma vat stawki obnizonej trzeciej w pln
	0 AS P_13_5, -- suma netto stawki dostawy towarow oraz swiadczenia uslug poza ter. kraju


	0 AS P_14_5, -- Kwota podatku od wartości dodanej w przypadku procedur szczególnych, o których mowa w dziale XII w rozdziałach 6a, 7 i 9 ustawy


	SUM(IF(v.idvat IN (2),v.netto,'')) AS P_13_6, -- Suma wartości sprzedaży netto ze stawką 0%. Pole opcjonalne dla przypadków określonych w art. 106e ust.2 i 3 ustawy (gdy przynajmniej jedno z pól P_106E_2 i P_106E_3 przyjmuje wartość "true"), a także art. 106e ust. 4 pkt 3 i ust. 5 pkt 1-3 ustawy.
	SUM(IF(v.idvat IN (3),v.netto,'')) AS P_13_7, -- Suma wartości sprzedaży zwolnionej. Pole opcjonalne dla przypadków określonych w art. 106e ust.2 i 3 ustawy (gdy przynajmniej jedno z pól P_106E_2 i P_106E_3 przyjmuje wartość "true"), a także art. 106e ust. 4 pkt 3 i ust. 5 pkt 1-3 ustawy.
	SUM(_Rnd2(v.bruttowal)) AS P_15, -- naleznosc ogolem
	FALSE AS P_16, -- true/false, true jezeli "metoda kasowa" z ustawy
	FALSE AS P_17, -- true/false, true jezeli samofakturowanie
	IF((SELECT COUNT(*) FROM opng_vat v1 WHERE v1.idvat=19 AND v1.idnoper = n.guid)>0,1,0) AS P_18, -- true/false, true jezeli odwrotne obciazenie
	split_payment AS P_18A, -- MPP
	IF(IFNULL(e1.jpkP19,0)>0,1,0) AS P_19,
	-- 0 AS P_19, -- true/false, W przypadku dostawy towarów lub świadczenia usług zwolnionych od podatku na podstawie art. 43 ust. 1, art. 113 ust. 1
																																	-- i 9 albo przepisów wydanych na podstawie art. 82 ust. 3 należy podać wartość "true"; w przeciwnym przypadku - wartość- "false"
	IFNULL(e1.jpkP19A,'') AS P_19A,
	-- '' AS P_19A, -- Jeśli pole P_19 równa się "true" - należy wskazać przepis ustawy albo aktu wydanego na podstawie ustawy, na
																																					-- podstawie którego podatnik stosuje zwolnienie od podatku
	IFNULL(e1.jpkP19B,'') AS P_19B,
	-- '' AS P_19B, -- Jeśli pole P_19 równa się "true" - należy wskazać przepis dyrektywy 2006/112/WE, który zwalnia od podatku taką
																																									-- dostawę towarów lub takie świadczenie usług
	IFNULL(e1.jpkP19C,'') AS P_19C, -- Jeśli pole P_19 równa się "true" - należy wskazać inną podstawę prawną wskazującą na to, że dostawa towarów lub
																																									-- świadczenie usług korzysta ze zwolnienia
	0 AS P_20, -- true/false, W przypadku, o którym mowa w art. 106c ustawy należy podać wartość "true"; w przeciwnym przypadku - wartość - "false"
	'' AS P_20A, -- Jeśli pole P_20 równa się "true" - należy podać nazwę organu egzekucyjnego lub imię i nazwisko komornika sądowego
	'' AS P_20B, -- Jeśli pole P_20 równa się "true" - należy podać adres organu egzekucyjnego lub imię i nazwisko komornika sądowego
	0 AS P_21, -- true/false, W przypadku faktur wystawianych w imieniu i na rzecz podatnika przez jego przedstawiciela podatkowego należy podać wartość "true"; w przeciwnym przypadku - wartość - "false"
	'' AS P_21A, -- Jeśli pole P_21 równa się "true" - należy podać nazwę lub imię i nazwisko przedstawiciela podatkowego
	'' AS P_21B,
	'' AS P_21C,
	'' AS P_22,
	IFNULL(e1.jpkP22A,'') AS P_22A,
	IFNULL(e1.jpkP22B,'') AS P_22B,
	IFNULL(e1.jpkP22C,'') AS P_22C,
	0 AS P_23,
	0 AS P_106E_2,
	0 AS P_106E_3,
	0 AS P_106E_3A,
	CASE WHEN n.rodzaj IN (1,2,50,80,69) THEN 'VAT' -- 69 to faktura spedycyjna
			WHEN n.rodzaj IN (3,4,85,90,105) THEN 'KOREKTA' -- 105 to korekta zbiorcza
	END AS RodzajFaktury,
	n.korektatytulem AS PrzyczynaKorekty,
	IFNULL(n.korektanrdokfin,'') AS NrFaKorygowanej,
	IFNULL(n.korektadata,'') AS OkresFaKorygowanej,
	'' AS NrFakturyZaliczkowej,
	'' AS xml
	FROM opng n
	INNER JOIN opng_vat v ON v.idnoper = n.guid
	INNER JOIN operdoc op ON op.rodzaj = n.rodzaj
	INNER JOIN waluty w ON w.idn = n.waluta
	LEFT JOIN opng_ext e1 ON e1.guid = n.guid
	WHERE op.grupa IN (0) AND n.rodzaj NOT IN (0,83,84) -- tylko sprzedaz, bez paragonow i faktur/korekt wewnetrznych
	AND datawplywu >= _OdDnia AND datawplywu <= _DoDnia
	AND n.deleted = 0
	GROUP BY n.guid
	ORDER BY n.datawplywu, n.idn;
	-- limit 5;

	UPDATE t_faktura SET
				P_3A = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(P_3A,'<',''),'>',''),'&','and'),'\n',''),CHAR(31),''),'\r',' '),
				P_3B = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(P_3B,'<',''),'>',''),'&','and'),'\n',''),CHAR(31),''),'\r',' '),
				P_3C = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(P_3C,'<',''),'>',''),'&','and'),'\n',''),CHAR(31),''),'\r',' '),
				P_3D = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(P_3D,'<',''),'>',''),'&','and'),'\n',''),CHAR(31),''),'\r',' '),
				P_5B = REPLACE(REPLACE(P_5B,' ',''),'-','')
	;
		UPDATE t_faktura SET
				P_5B = IF(LEFT(P_5B,1) NOT REGEXP '^[0-9]',RIGHT(P_5B, LENGTH(P_4B)-1),P_5B);
		UPDATE t_faktura SET
				P_5B = IF(LEFT(P_5B,1) NOT REGEXP '^[0-9]',RIGHT(P_5B, LENGTH(P_4B)-1),P_5B);

	-- przekodowanie prefiksow nipow wg krajow - tutaj problemem jest burdel w bazach krajow/miast w firmach
	UPDATE t_faktura t, kontrah k, Miasta m
		SET t.P_5A = m.idnkraju
		WHERE m.nazwamiasta=k.nazwamiasta AND k.guid = kontrguid AND P_5A = '' AND P_5B <> '';

		UPDATE t_faktura SET
			P_5A = '', P_5B = ''
		WHERE P_5A NOT IN ('AT', 'BE', 'BG', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'EL', 'HR',
			'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'GB', 'IC', 'XI', 'XJ', 'MC');


	INSERT INTO t_faktura_poz
		SELECT p.guid AS guid_poz,
		t.guid AS guid,
		p.idntowr,
		t.P_2A AS P_2B, -- nr faktury
		-- p.towrnazwa AS P_7, -- nazwa towaru
		REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(p.towrnazwa,'<',''),'>',''),'&','and'),'\n',''),CHAR(31),''),'\r',' ') AS P_7,
		j.nazwa AS P_8A, -- jednostka miary
		p.ilosc AS P_8B, -- ilosc towaru
		IF(p.ilosc=0,_Rnd2(p.wartnetwal),_Rnd2(p.wartnetwal/p.ilosc)) AS P_9A, -- cena netto
		IF(p.ilosc=0,_Rnd2(p.wartbrtwal),_Rnd2(p.wartbrtwal/p.ilosc)) AS P_9B, -- cena brutto
		0 AS P_10, -- rabaty o ile nie sa w cenie netto
		_Rnd2(p.wartnetwal) AS P_11, -- wartosc netto
		_Rnd2(p.wartbrtwal) AS P_11A, -- wart brutto
		CASE WHEN ev.shortname='NP' THEN 'np'
			WHEN ev.shortname='odwr.obc.' THEN 'oo'
			ELSE LEFT(REPLACE(ev.shortname,'%',''),2)
		END AS P_12, -- stawka podatku

		0 AS P_12_XII, -- Stawka podatku od wartości dodanej w przypadku procedur szczególnych, o których mowa w dziale XII w rozdziałach 6a, 7 i 9 ustawy VAT

		'' AS xml
		FROM oppo p, t_faktura t, Jednostki j, v_erp_vat ev
		WHERE (p.idnoper = t.guid OR p.idnoperfin = t.guid) AND p.jednostka = j.idn AND ev.ID = p.idnvat
		;
/*
uwzglednic korekty z oppo_corr - ceny i wartosci pozycji sa lepsze - no jednak nie warto isc w te strone
-- AND t.rodzaj NOT IN (3,4,85,90) -- bez korekt, dla korekt jest zlaczenie z oppo_corr
jednak nie warto isc ta droga - komplikacja duzo wieksza, a zysk w sumie zaden, jezeli chodzi tylko o korekte kwot i ilosci
*/

	-- faktury rodzaju zaliczkowego
	UPDATE t_faktura tt
	SET tt.RodzajFaktury='ZAL'
	WHERE (SELECT count(p.guid) FROM t_faktura_poz p, TowrNg t
					WHERE p.idntowr=t.guid and tt.guid=p.guid AND t.wyroznik = 'ZAL' AND p.P_9A > 0)>0;


/*
    INSERT INTO t_zamowienie
		SELECT p.guid AS guid_poz,
		t.guid AS guid,
		p.idntowr,
		t.P_2A AS P_2B, -- nr faktury
		p.towrnazwa AS P_7, -- nazwa towaru
		j.nazwa AS P_8A, -- jednostka miary
		p.ilosc AS P_8B, -- ilosc towaru
		IF(p.ilosc=0,_Rnd2(p.wartnetwal),_Rnd2(p.wartnetwal/p.ilosc)) AS P_9A, -- cena netto
		IF(p.ilosc=0,_Rnd2(p.wartbrtwal),_Rnd2(p.wartbrtwal/p.ilosc)) AS P_9B, -- cena brutto
		0 AS P_10, -- rabaty o ile nie sa w cenie netto
		_Rnd2(p.wartnetwal) AS P_11, -- wartosc netto
		_Rnd2(p.wartbrtwal) AS P_11A, -- wart brutto
		CASE WHEN ev.shortname='NP' THEN 'np'
			WHEN ev.shortname='odwr.obc.' THEN 'oo'
			ELSE LEFT(REPLACE(ev.shortname,'%',''),2)
		END AS P_12, -- stawka podatku

		0 AS P_12_XII, -- Stawka podatku od wartości dodanej w przypadku procedur szczególnych, o których mowa w dziale XII w rozdziałach 6a, 7 i 9 ustawy VAT

		'' AS xml
		FROM zmpo p, t_faktura t, Jednostki j, v_erp_vat ev
		WHERE (p.idnoper = t.guid OR p.idnoperfin = t.guid) AND p.jednostka = j.idn AND ev.ID = p.idnvat
		;
*/




	IF _Param_A <> 'RAPORT' THEN

		UPDATE t_faktura SET xml =
			CONCAT('<Faktura>\n',
			'<KodWaluty>',KodWaluty,'</KodWaluty>\n',
			'<P_1>',P_1,'</P_1>\n',
			'<P_2A>',P_2A,'</P_2A>\n',
			-- '<P_3A>',P_3A,'</P_3A>\n',
			IF(P_3A='','',CONCAT('<P_3A>',P_3A,'</P_3A>\n')),
			-- '<P_3B>',P_3B,'</P_3B>\n',
			IF(P_3B='','',CONCAT('<P_3B>',P_3B,'</P_3B>\n')),
			'<P_3C>',P_3C,'</P_3C>\n',
			'<P_3D>',P_3D,'</P_3D>\n',
			IF(P_4A='','',CONCAT('<P_4A>',P_4A,'</P_4A>\n')),
			IF(P_4B='' OR P_4A<>'PL','',CONCAT('<P_4B>',P_4B,'</P_4B>\n')),
			IF(P_5A='','',CONCAT('<P_5A>',P_5A,'</P_5A>\n')),
			IF(P_5B='' OR P_5A<>'PL','',CONCAT('<P_5B>',P_5B,'</P_5B>\n')),
			'<P_6>',P_6,'</P_6>\n',
			'<P_13_1>',P_13_1,'</P_13_1>\n',
			'<P_14_1>',P_14_1,'</P_14_1>\n',
			IF(P_14_1W=0,'',CONCAT('<P_14_1W>',P_14_1W,'</P_14_1W>\n')),
			'<P_13_2>',P_13_2,'</P_13_2>\n',
			'<P_14_2>',P_14_2,'</P_14_2>\n',
			IF(P_14_2W=0,'',CONCAT('<P_14_2W>',P_14_2W,'</P_14_2W>\n')),
			'<P_13_3>',P_13_3,'</P_13_3>\n',
			'<P_14_3>',P_14_3,'</P_14_3>\n',
			IF(P_14_3W=0,'',CONCAT('<P_14_3W>',P_14_3W,'</P_14_3W>\n')),
			'<P_13_4>',P_13_4,'</P_13_4>\n',
			'<P_14_4>',P_14_4,'</P_14_4>\n',
			IF(P_14_4W=0,'',CONCAT('<P_14_4W>',P_14_4W,'</P_14_4W>\n')),
			'<P_13_5>',P_13_5,'</P_13_5>\n',

			IF(P_14_5=0,'',CONCAT('<P_14_5>',P_14_5,'</P_14_5>\n')),

			'<P_13_6>',P_13_6,'</P_13_6>\n',
			'<P_13_7>',P_13_7,'</P_13_7>\n',
			'<P_15>',P_15,'</P_15>\n',
			'<P_16>',P_16,'</P_16>\n',
			'<P_17>',P_17,'</P_17>\n',
			'<P_18>',P_18,'</P_18>\n',
			'<P_18A>',P_18A,'</P_18A>\n',
			'<P_19>',P_19,'</P_19>\n',
			'<P_19A>',P_19A,'</P_19A>\n',
			'<P_19B>',P_19B,'</P_19B>\n',
			'<P_19C>',P_19C,'</P_19C>\n',
			'<P_20>',P_20,'</P_20>\n',
			IF(P_20=0,'',CONCAT('<P_20A>',P_20A,'</P_20A>\n')),
			IF(P_20=0,'',CONCAT('<P_20B>',P_20B,'</P_20B>\n')),
			'<P_21>',P_21,'</P_21>\n',
			IF(P_21=0,'',CONCAT('<P_21A>',P_21A,'</P_21A>\n')),
			IF(P_21=0,'',CONCAT('<P_21B>',P_21B,'</P_21B>\n')),
			IF(P_21=0,'',CONCAT('<P_21C>',P_21C,'</P_21C>\n')),
			'<P_22>',P_22,'</P_22>\n',
			IF(P_22A='','',CONCAT('<P_22A>',P_22A,'</P_22A>\n')),
			IF(P_22B='','',CONCAT('<P_22B>',P_22B,'</P_22B>\n')),
			IF(P_22C='','',CONCAT('<P_22C>',P_22C,'</P_22C>\n')),
			'<P_23>',P_23,'</P_23>\n',
			'<P_106E_2>',P_106E_2,'</P_106E_2>\n',
			'<P_106E_3>',P_106E_3,'</P_106E_3>\n',
			'<P_106E_3A>',P_106E_3A,'</P_106E_3A>\n',
			'<RodzajFaktury>',RodzajFaktury,'</RodzajFaktury>\n',
			IF(PrzyczynaKorekty='','',CONCAT('<PrzyczynaKorekty>',PrzyczynaKorekty,'</PrzyczynaKorekty>\n')),
			IF(NrFaKorygowanej='','',CONCAT('<NrFaKorygowanej>',NrFaKorygowanej,'</NrFaKorygowanej>\n')),
			IF(OkresFaKorygowanej=0,'',CONCAT('<OkresFaKorygowanej>',OkresFaKorygowanej,'</OkresFaKorygowanej>\n')),
			IF(NrFaZaliczkowej='','',CONCAT('<NrFaZaliczkowej>',NrFaZaliczkowej,'</NrFaZaliczkowej>\n')),
			'</Faktura>\n')
			;

			UPDATE t_jpk SET xmlpoz1 = (SELECT GROUP_CONCAT(xml SEPARATOR '') FROM t_faktura);


			SELECT COUNT(*) INTO _liczba_wierszy FROM t_faktura;
			SELECT SUM(_Rnd2(P_15)) INTO _wartosc_faktur FROM t_faktura;

			SET _XMLpoz = '';

			SET _XMLpoz = CONCAT(SPACE(@xml.IC*cSL), '<FakturaCtrl>\n');
			SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<LiczbaFaktur>',_liczba_wierszy,'</LiczbaFaktur>\n');
			SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<WartoscFaktur>',_wartosc_faktur,'</WartoscFaktur>\n');
			SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</FakturaCtrl>\n');

			UPDATE t_jpk SET xmlpoz1 = CONCAT('\n',xmlpoz1,IFNULL(_XMLpoz,'brak1'),'\n');

-- sekcja pozycji faktur
		UPDATE t_faktura_poz SET xml =
			CONCAT('<FakturaWiersz>\n',
			'<P_2B>',P_2B,'</P_2B>\n',
			IF(P_7='','',CONCAT('<P_7>',P_7,'</P_7>\n')),
			IF(P_8A='','',CONCAT('<P_8A>',P_8A,'</P_8A>\n')),
			IF(P_8B='','',CONCAT('<P_8B>',P_8B,'</P_8B>\n')),
			IF(P_9A='','',CONCAT('<P_9A>',P_9A,'</P_9A>\n')),
			IF(P_9B='','',CONCAT('<P_9B>',P_9B,'</P_9B>\n')),
			IF(P_10='','',CONCAT('<P_10>',P_10,'</P_10>\n')),
			IF(P_11='','',CONCAT('<P_11>',P_11,'</P_11>\n')),
			IF(P_11A='','',CONCAT('<P_11A>',P_11A,'</P_11A>\n')),
			IF(P_12='','',CONCAT('<P_12>',P_12,'</P_12>\n')),
			IF(P_12_XII = 0,'',CONCAT('<P_12_XII>',P_12_XII,'</P_12_XII>\n')),
			'</FakturaWiersz>\n')
		;

			UPDATE t_jpk SET xmlpoz2 = (SELECT GROUP_CONCAT(xml ORDER BY P_2B SEPARATOR '') FROM t_faktura_poz);

			SELECT COUNT(*) INTO _liczba_wierszy FROM t_faktura_poz;
			SELECT SUM(_Rnd2(P_11)) INTO _wartosc_faktur FROM t_faktura_poz;

			SET _XMLpoz = '';

			SET _XMLpoz = CONCAT( SPACE(@xml.IC*cSL), '<FakturaWierszCtrl>\n');
			SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<LiczbaWierszyFaktur>',_liczba_wierszy,'</LiczbaWierszyFaktur>\n');
			SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<WartoscWierszyFaktur>',_wartosc_faktur,'</WartoscWierszyFaktur>\n');
			SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</FakturaWierszCtrl>\n');

			UPDATE t_jpk SET xmlpoz2 = CONCAT('\n',xmlpoz2,IFNULL(_XMLpoz,'brak2'),'\n');


-- sekcja zamowien
        SELECT COUNT(*) INTO _liczba_wierszy FROM t_zamowienie;

        IF _liczba_wierszy > 0 THEN
            SELECT SUM(_Rnd2(WartoscZamowienia)) INTO _wartosc_faktur FROM t_zamowienie;

            UPDATE t_zamowienie SET xml =
            CONCAT('<ZamowienieWiersz>\n',
            '<P_7Z>',P_7Z,'</P_7Z>\n',
            '<P_8AZ>',P_8AZ,'</P_8AZ>\n',
            '<P_8BZ>',P_8BZ,'</P_8BZ>\n',
            '<P_9AZ>',P_9AZ,'</P_9AZ>\n',
            '<P_11NettoZ>',P_11NettoZ,'</P_11NettoZ>\n',
            '<P_11VatZ>',P_11VatZ,'</P_11VatZ>\n',
            '<P_12Z>',P_12Z,'</P_12Z>\n',
            IF(P_12_XII = 0,'',CONCAT('<P_12_XII>',P_12_XII,'</P_12_XII>\n')),
            '</ZamowienieWiersz>\n')
            ;

            UPDATE t_jpk SET xmlpoz3 = (SELECT CONCAT('<Zamowienie>\n<P_2AZ>',P_2AZ,'</P_2AZ>\n','<WartoscZamowienia>',WartoscZamowienia,'</WartoscZamowienia>\n',
            GROUP_CONCAT(xml ORDER BY P_7Z SEPARATOR ''),
            '\n</Zamowienie>\n'
            ) FROM t_zamowienie GROUP BY P_2AZ);


            SET _XMLpoz = '';
            SET _XMLpoz = CONCAT( SPACE(@xml.IC*cSL), '<ZamowienieCtrl>\n');
            SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<LiczbaZamowien>',_liczba_wierszy,'</LiczbaZamowien>\n');
            SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<WartoscZamowien>',IFNULL(_wartosc_faktur,0),'</WartoscZamowien>\n');
            SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</ZamowienieCtrl>\n');

            UPDATE t_jpk SET xmlpoz3 = CONCAT('\n',xmlpoz3,IFNULL(_XMLpoz,'brak3'),'\n');

        ELSE
            UPDATE t_jpk SET xmlpoz3 = '';
        END IF;

-- sekcja laczaca pozycje i tworzaca wynik
			SET _XML := (SELECT CONCAT(xmlnag,xmlpoz1,xmlpoz2,xmlpoz3,xmlpoz4,'</JPK>') FROM t_jpk);

			CALL fr_ht_zest_jpk('ZAPIS', '', '', '', '', _OdDnia,_DoDnia, '', '', _Param_B, '',_MODE);

			SELECT _XML;

	ELSE
		SELECT _Param_A; -- 'RAPORT'  (zwracamy cokolwiek, aby uniknać komunikatu `Cursor not returned from query`)
	END IF;  -- IF _Param_A <> 'RAPORT'

	-- SET NAMES "cp1250";

	-- tabele sa otrzebne do przegladarki faktur (ktora na razie i tak nie dziala)

	-- DROP TABLE IF EXISTS t_faktura;
	-- DROP TABLE IF EXISTS t_faktura_poz;
	-- DROP TABLE IF EXISTS t_zamowienie;

END IF; -- JPK_FA4


-- CALL fr_ht_zest_jpk('JPK_MAG', '', '', '', '', '2025-01-01','2025-10-31', '', 'RAPORT_', '8', '','');
IF _MODE = 'JPK_MAG' THEN
-- W przypadku, jeśli kontrola dotyczyć będzie kilku magazynów, to należy dla każdego z nich wygenerować osobny plik JPK_MAG!
	CALL fr_ht_zest_jpk('NAGLOWEK', '', '', '', '', _OdDnia,_DoDnia, '', '', _Param_B, '',_MODE);

	DROP TABLE IF EXISTS t_dok;
	CREATE TEMPORARY TABLE t_dok (
	guid VARCHAR(38),
	idnoperfin VARCHAR(38), -- guid faktury zlaczonej z dokumentem
	magazyn VARCHAR(100), -- magazyn ktorego dotyczy zestawienie
	rodzajdok VARCHAR(2), -- rodzaj dokumentu (PZ, WZ, RW, MM)
	Numerdok VARCHAR(50), -- nrdok
	Datadok VARCHAR(10),  -- data wystawienia
	Wartosc DOUBLE(16,2) DEFAULT 0,
	DataOtrzymania VARCHAR(10),
	Dostawca VARCHAR(256), -- nazwa dostawcy
	NumerFa VARCHAR(256), -- nr faktury dostawy
	DataFa VARCHAR(10), -- data faktury do PZ
	Skad VARCHAR(256), -- miejsce wydania towaru
	Dokad VARCHAR(256), -- miejsce przeznaczenia towaru
	xml TEXT,
	KEY guid (guid),
	KEY idnoperfin (idnoperfin),
	KEY rodzajdok (rodzajdok),
	KEY Skad (Skad),
	KEY Dokad (Dokad)
	) DEFAULT CHARSET=utf8;

	DROP TABLE IF EXISTS t_dok_poz;
	CREATE TEMPORARY TABLE t_dok_poz (
	guid_poz VARCHAR(38), -- guid oppo
	guid VARCHAR(38), -- guid opng
	rodzajdok VARCHAR(2), -- rodzaj dokumentu (PZ, WZ, RW, MM)
	Numer2 VARCHAR(256), -- nr dok PZ
	KodTowaru VARCHAR(256), -- kod/symbol towaru
	NazwaTowaru VARCHAR(256), -- nazwa towaru
	IloscPrzyjeta DOUBLE(16,4) DEFAULT 0, -- ilosc towaru
	JednostkaMiary VARCHAR(256), -- jednostka miary
	CenaJedn DOUBLE(16,2) DEFAULT 0, -- cena towaru
	WartoscPozycji DOUBLE(16,2) DEFAULT 0, -- wart pozycji
	xml TEXT,
	KEY guid_poz (guid_poz),
	KEY guid (guid),
	KEY rodzajdok (rodzajdok)
	) DEFAULT CHARSET=utf8;


	SET _S = '
	INSERT INTO t_dok
	SELECT n.guid,
	MIN(p.idnoperfin) as idnoperfin,
	IF(p.zmagazynu>0,p.zmagazynu,p.domagazynu) AS magazyn,
	-- CASE WHEN n.rodzaj=9 THEN "MM" WHEN n.rodzaj=10 THEN "WZ" WHEN n.rodzaj=11 THEN "RW" WHEN n.rodzaj=12 THEN "PZ"
	CASE WHEN n.rodzaj=9 THEN "MM"
	WHEN n.rodzaj=10 OR n.grupaoper = 0 THEN "WZ"
	WHEN n.rodzaj=11 THEN "RW"
	WHEN n.rodzaj=12 OR n.grupaoper = 1 THEN "PZ"
	END AS rodzajdok,
	n.nrdokmag AS numerdok,
	n.datawystaw AS datadok,
	-- n.netto AS wartosc,
	sum(p.wartmag) as wartosc,
	n.datawplywu AS DataOtrzymania,
	REPLACE(REPLACE(REPLACE(n.kontrnazwa, CHAR(38), " and "),"<"," "), "&", " and ") AS dostawca,
	"" AS numerfa,
	"" as datafa,
	IF(n.zmagazynu>0,n.zmagazynu,"") AS skad,
	IF(n.domagazynu>0,n.domagazynu,"") AS dokad,
	"" AS xml
	FROM opng n
	inner join oppo p ON p.idnoper = n.guid
	INNER JOIN TowrNg t ON p.idntowr = t.guid
	-- WHERE n.rodzaj IN (9,10,11,12) -- MM, WZ, RW, PZ
	WHERE (n.rodzaj IN (9,10,11,12) OR n.grupaoper in (0,1)) -- dokumenty magazynowe albo zakup/sprzedaz

	AND n.datawplywu >= "#_OdDnia#" AND n.datawplywu <= "#_DoDnia#"
	AND IF(p.zmagazynu>0,p.zmagazynu,p.domagazynu) IN (#_Param_B#)
	AND n.deleted = 0
	AND t.usluga=0
	GROUP BY n.guid
	ORDER BY magazyn, n.datawplywu, n.idn;
	';
	
	SET _S = REPLACE(_S, '#_OdDnia#', _OdDnia);
	SET _S = REPLACE(_S, '#_DoDnia#', _DoDnia);
	SET _S = REPLACE(_S, '#_Param_B#', _Param_B);

	SET @_SQLText =        _S;
	CALL _ExecuteCmd(_S, @Error);


	UPDATE t_dok t, Magazyny m SET t.skad = m.opis WHERE t.skad = m.idnmagazynu;
	UPDATE t_dok t, Magazyny m SET t.dokad = m.opis WHERE t.dokad = m.idnmagazynu;

	UPDATE t_dok t, opng n
	SET t.numerfa = n.nrdokfin, t.datafa=n.datawystaw
	WHERE t.rodzajdok IN ('PZ','WZ') AND t.guid <> t.idnoperfin
	AND t.idnoperfin=n.guid;

-- sekcja pozycji dok
	INSERT INTO t_dok_poz
	SELECT p.guid AS guid_poz,
	t.guid AS guid,
	t.rodzajdok AS rodzajdok,
	t.numerdok AS numer2,
	p.towrsymb AS kodtowaru,
	p.towrnazwa AS NazwaTowaru, -- nazwa towaru
	p.ilosc AS iloscprzyjeta, -- ilosc towaru
	j.nazwa AS JednostkaMiary, -- jednostka miary
	-- _Rnd2(p.wartbrt/p.ilosc) AS cenajedn, -- cena
	-- _Rnd2(p.wartbrt) AS WartoscPozycji -- wart brutto
	_Rnd2(p.wartmag/p.ilosc) AS cenajedn, -- cena
	_Rnd2(p.wartmag) AS WartoscPozycji, -- wart
	'' AS xml
	FROM oppo p, t_dok t, Jednostki j
	WHERE (p.idnoper = t.guid OR p.idnoperfin = t.guid) AND p.jednostka = j.idn
	ORDER BY t.guid;

	UPDATE t_dok_poz SET
		NazwaTowaru = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(NazwaTowaru,'<',''),'>',''),'&','and'),'\n',''),CHAR(31),''),'\r',' '),
		KodTowaru = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(KodTowaru,'<',''),'>',''),'&','and'),'\n',''),CHAR(31),''),'\r',' ')
		;


	IF _Param_A <> 'RAPORT' THEN

		UPDATE t_dok SET xml = 
			CONCAT('<PZWartosc>\n',
			'<NumerPZ>',numerdok,'</NumerPZ>\n',
			'<DataPZ>',datadok,'</DataPZ>\n',
			'<WartoscPZ>',wartosc,'</WartoscPZ>\n',
			'<DataOtrzymaniaPZ>',dataotrzymania,'</DataOtrzymaniaPZ>\n',
			'<Dostawca>',dostawca,'</Dostawca>\n',
			IF(numerfa='','',CONCAT('<NumerFaPZ>',numerfa,'</NumerFaPZ>\n')),
			IF(DataFa='','',CONCAT('<DataFaPZ>',DataFa,'</DataFaPZ>\n')),
			'</PZWartosc>\n')
			WHERE rodzajdok = 'PZ';

		UPDATE t_dok SET xml =
			CONCAT('<WZWartosc>\n',
			'<NumerWZ>',numerdok,'</NumerWZ>\n',
			'<DataWZ>',datadok,'</DataWZ>\n',
			'<WartoscWZ>',wartosc,'</WartoscWZ>\n',
			'<DataWydaniaWZ>',dataotrzymania,'</DataWydaniaWZ>\n',
			'<OdbiorcaWZ>',dostawca,'</OdbiorcaWZ>\n',
			IF(numerfa='','',CONCAT('<NumerFaWZ>',numerfa,'</NumerFaWZ>\n')),
			IF(DataFa='','',CONCAT('<DataFaWZ>',DataFa,'</DataFaWZ>\n')),
			'</WZWartosc>\n')
			WHERE rodzajdok = 'WZ';

		UPDATE t_dok SET xml =
			CONCAT('<RWWartosc>\n',
			'<NumerRW>',numerdok,'</NumerRW>\n',
			'<DataRW>',datadok,'</DataRW>\n',
			'<WartoscRW>',wartosc,'</WartoscRW>\n',
			'<DataWydaniaRW>',dataOtrzymania,'</DataWydaniaRW>\n',
			'</RWWartosc>\n')
			WHERE rodzajdok = 'RW';

		UPDATE t_dok SET xml =
			CONCAT('<MMWartosc>\n',
			'<NumerMM>',numerdok,'</NumerMM>\n',
			'<DataMM>',datadok,'</DataMM>\n',
			'<WartoscMM>',wartosc,'</WartoscMM>\n',
			'<DataWydaniaMM>',dataOtrzymania,'</DataWydaniaMM>\n',
			'<SkadMM>',Skad,'</SkadMM>\n',
			'<DokadMM>',Dokad,'</DokadMM>\n',
			'</MMWartosc>\n')
			WHERE rodzajdok = 'MM';

		UPDATE t_jpk SET xmlpoz1 = (SELECT GROUP_CONCAT(xml SEPARATOR '') FROM t_dok WHERE rodzajdok = 'PZ');
		UPDATE t_jpk SET xmlpoz2 = (SELECT GROUP_CONCAT(xml SEPARATOR '') FROM t_dok WHERE rodzajdok = 'WZ');
		UPDATE t_jpk SET xmlpoz3 = (SELECT GROUP_CONCAT(xml SEPARATOR '') FROM t_dok WHERE rodzajdok = 'RW');
		UPDATE t_jpk SET xmlpoz4 = (SELECT GROUP_CONCAT(xml SEPARATOR '') FROM t_dok WHERE rodzajdok = 'MM');

		UPDATE t_dok_poz SET xml =
			CONCAT('<PZWiersz>\n',
			' <Numer2PZ>',Numer2,'</Numer2PZ>\n',
			' <KodTowaruPZ>',KodTowaru,'</KodTowaruPZ>\n',
			' <NazwaTowaruPZ>',NazwaTowaru,'</NazwaTowaruPZ>\n',
			' <IloscPrzyjetaPZ>',IloscPrzyjeta,'</IloscPrzyjetaPZ>\n',
			' <JednostkaMiaryPZ>',JednostkaMiary,'</JednostkaMiaryPZ>\n',
			' <CenaJednPZ>',CenaJedn,'</CenaJednPZ>\n',
			' <WartoscPozycjiPZ>',WartoscPozycji,'</WartoscPozycjiPZ>\n',
			'</PZWiersz>\n')
			WHERE rodzajdok = 'PZ';

		UPDATE t_dok_poz SET xml =
			CONCAT('<WZWiersz>\n',
			' <Numer2WZ>',Numer2,'</Numer2WZ>\n',
			' <KodTowaruWZ>',KodTowaru,'</KodTowaruWZ>\n',
			' <NazwaTowaruWZ>',NazwaTowaru,'</NazwaTowaruWZ>\n',
			' <IloscWydanaWZ>',IloscPrzyjeta,'</IloscWydanaWZ>\n',
			' <JednostkaMiaryWZ>',JednostkaMiary,'</JednostkaMiaryWZ>\n',
			' <CenaJednWZ>',CenaJedn,'</CenaJednWZ>\n',
			' <WartoscPozycjiWZ>',WartoscPozycji,'</WartoscPozycjiWZ>\n',
			'</WZWiersz>\n')
			WHERE rodzajdok = 'WZ';

		UPDATE t_dok_poz SET xml =
			CONCAT('<RWWiersz>\n',
			' <Numer2RW>',Numer2,'</Numer2RW>\n',
			' <KodTowaruRW>',KodTowaru,'</KodTowaruRW>\n',
			' <NazwaTowaruRW>',NazwaTowaru,'</NazwaTowaruRW>\n',
			' <IloscWydanaRW>',IloscPrzyjeta,'</IloscWydanaRW>\n',
			' <JednostkaMiaryRW>',JednostkaMiary,'</JednostkaMiaryRW>\n',
			' <CenaJednRW>',CenaJedn,'</CenaJednRW>\n',
			' <WartoscPozycjiRW>',WartoscPozycji,'</WartoscPozycjiRW>\n',
			'</RWWiersz>\n')
			WHERE rodzajdok = 'RW';

		UPDATE t_dok_poz SET xml =
			CONCAT('<MMWiersz>\n',
			' <Numer2MM>',Numer2,'</Numer2MM>\n',
			' <KodTowaruMM>',KodTowaru,'</KodTowaruMM>\n',
			' <NazwaTowaruMM>',NazwaTowaru,'</NazwaTowaruMM>\n',
			' <IloscWydanaMM>',IloscPrzyjeta,'</IloscWydanaMM>\n',
			' <JednostkaMiaryMM>',JednostkaMiary,'</JednostkaMiaryMM>\n',
			' <CenaJednMM>',CenaJedn,'</CenaJednMM>\n',
			' <WartoscPozycjiMM>',WartoscPozycji,'</WartoscPozycjiMM>\n',
			'</MMWiersz>\n')
			WHERE rodzajdok = 'MM';


		UPDATE t_jpk SET xmlnag2 = (SELECT GROUP_CONCAT(xml SEPARATOR '') FROM t_dok_poz WHERE rodzajdok = 'PZ');

		SELECT COUNT(*) INTO _liczba_wierszy FROM t_dok WHERE rodzajdok = 'PZ';
		SELECT SUM(_Rnd2(Wartosc)) INTO _wartosc_dok FROM t_dok WHERE rodzajdok = 'PZ';
		SET _XMLpoz = '';
		SET _XMLpoz = CONCAT( SPACE(@xml.IC*cSL), '<PZCtrl>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<LiczbaPZ>',_liczba_wierszy,'</LiczbaPZ>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<SumaPZ>',_wartosc_dok,'</SumaPZ>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</PZCtrl>\n');
		
		UPDATE t_jpk SET xmlpoz1 = CONCAT('<PZ>\n',xmlpoz1,xmlnag2,_XMLpoz,'</PZ>\n');


		UPDATE t_jpk SET xmlnag2 = (SELECT GROUP_CONCAT(xml SEPARATOR '') FROM t_dok_poz WHERE rodzajdok = 'WZ');

		SELECT COUNT(*) INTO _liczba_wierszy FROM t_dok WHERE rodzajdok = 'WZ';
		SELECT SUM(_Rnd2(Wartosc)) INTO _wartosc_dok FROM t_dok WHERE rodzajdok = 'WZ';
		SET _XMLpoz = '';
		SET _XMLpoz = CONCAT( SPACE(@xml.IC*cSL), '<WZCtrl>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<LiczbaWZ>',_liczba_wierszy,'</LiczbaWZ>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<SumaWZ>',_wartosc_dok,'</SumaWZ>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</WZCtrl>\n');
		
		UPDATE t_jpk SET xmlpoz2 = CONCAT('<WZ>\n',xmlpoz2,xmlnag2,_XMLpoz,'</WZ>\n');


		UPDATE t_jpk SET xmlnag2 = (SELECT GROUP_CONCAT(xml SEPARATOR '') FROM t_dok_poz WHERE rodzajdok = 'RW');

		SELECT COUNT(*) INTO _liczba_wierszy FROM t_dok WHERE rodzajdok = 'RW';
		SELECT SUM(_Rnd2(Wartosc)) INTO _wartosc_dok FROM t_dok WHERE rodzajdok = 'RW';
		SET _XMLpoz = '';
		SET _XMLpoz = CONCAT( SPACE(@xml.IC*cSL), '<RWCtrl>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<LiczbaRW>',_liczba_wierszy,'</LiczbaRW>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<SumaRW>',_wartosc_dok,'</SumaRW>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</RWCtrl>\n');
		
		UPDATE t_jpk SET xmlpoz3 = CONCAT('<RW>\n',xmlpoz3,xmlnag2,_XMLpoz,'</RW>\n');


		UPDATE t_jpk SET xmlnag2 = (SELECT GROUP_CONCAT(xml SEPARATOR '') FROM t_dok_poz WHERE rodzajdok = 'MM');

		SELECT COUNT(*) INTO _liczba_wierszy FROM t_dok WHERE rodzajdok = 'MM';
		SELECT SUM(_Rnd2(Wartosc)) INTO _wartosc_dok FROM t_dok WHERE rodzajdok = 'MM';
		SET _XMLpoz = '';
		SET _XMLpoz = CONCAT( SPACE(@xml.IC*cSL), '<MMCtrl>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<LiczbaMM>',_liczba_wierszy,'</LiczbaMM>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<SumaMM>',_wartosc_dok,'</SumaMM>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</MMCtrl>\n');
		
		UPDATE t_jpk SET xmlpoz4 = CONCAT('<MM>\n',xmlpoz4,xmlnag2,_XMLpoz,'</MM>\n');


		UPDATE t_jpk SET xmlnag2 = '';

		SET _XML := (SELECT CONCAT(xmlnag,IFNULL(xmlpoz1,''),IFNULL(xmlpoz2,''),IFNULL(xmlpoz3,''),IFNULL(xmlpoz4,''),'</JPK>') FROM t_jpk);

		CALL fr_ht_zest_jpk('ZAPIS', '', '', '', '', _OdDnia,_DoDnia, '', '', _Param_B, '',_MODE);

		SELECT _XML;

	ELSE        
		SELECT _Param_A; -- 'RAPORT'  (zwracamy cokolwiek, aby uniknać komunikatu `Cursor not returned from query`)
	END IF;  -- IF _Param_A <> 'RAPORT'

    SET NAMES "cp1250";

    DROP TABLE IF EXISTS t_dok;
    DROP TABLE IF EXISTS t_dok_poz;

END IF; -- JPK_MAG



/*
ksiegi rachunkowe
linia sprawdzająca
CALL fr_ht_zest_jpk('JPK_KR', '', '', '', '', '2023-02-01','2023-02-28', '', '_RAPORT', '', '','');
SET @session.globals.Owner='SKOK';
ograniczenie na wielkosc pliku to max_allowed_packet = 16777216 -  jest to zmienna, ktorej nie mozna zmienic w sesji
w cmt = 33554432, zmienilem na 99 MB, potem na 130M
dla slave_max_allowed_packet = 1073741824
zamkniecie okresu/miesiaca oznacza nadanie numerow w polu nr_pozycji w tabeli zapisy. Tam nie moga byc zera i nie moga byc duble.
*/
IF (_MODE = 'JPK_KR') THEN
	CALL fr_ht_zest_jpk('NAGLOWEK', '', '', '', '', _OdDnia,_DoDnia, '', '', _Param_B, '',_MODE);

	SET @databo = CONCAT(YEAR(_DoDnia),'-01-01');
	-- select ValueD from IReg where idkey="Data bilansu"
	SET _rokbo = YEAR(@databo);
	-- SELECT dl_potomka FROM plankont WHERE poziom = 0 AND rok = _rokbo INTO @kod1;
	-- IF @session.globals.Owner='PBUCH' THEN 	SET @kod1=3; END IF; 
	SELECT valueI INTO @kod1 FROM IReg WHERE idkey='Konta_pierwsze_znaki_bez_separatora';

	SET _liczba_wierszy = 0; -- chodzi o wiersze w dzienniku, ktore nie maja numerow, czy nie sa zamkniete
	
	DROP TABLE IF EXISTS t_zois;
	CREATE TEMPORARY TABLE t_zois (
		guid VARCHAR(38),
		konto VARCHAR(50),
		KodKonta VARCHAR(50),
		OpisKonta VARCHAR(100),
		TypKonta VARCHAR(20),
		KodZespolu VARCHAR(20),
		OpisZespolu VARCHAR(100),
		KodKategorii VARCHAR(20),
		OpisKategorii VARCHAR(100),
		KodPodkategorii VARCHAR(20),
		OpisPodkategorii VARCHAR(100),
		BilansOtwarciaWinien DOUBLE(16,2) DEFAULT 0,
		BilansOtwarciaMa DOUBLE(16,2) DEFAULT 0,
		ObrotyWinien DOUBLE(16,2) DEFAULT 0,
		ObrotyMa DOUBLE(16,2) DEFAULT 0,
		ObrotyWinienNarast DOUBLE(16,2) DEFAULT 0,
		ObrotyMaNarast DOUBLE(16,2) DEFAULT 0,
		SaldoWinien DOUBLE(16,2) DEFAULT 0,
		SaldoMa DOUBLE(16,2) DEFAULT 0,
		xml TEXT,
		KEY guid (guid),
		KEY konto (konto),
		KEY KodKonta (KodKonta),
		KEY KodKategorii (KodKategorii)
	) DEFAULT CHARSET=utf8;

	DROP TABLE IF EXISTS t_dziennik;
	CREATE TEMPORARY TABLE t_dziennik (
		guid VARCHAR(38),
		LpZapisuDziennika INT(11),
		NrZapisuDziennika VARCHAR(50),
		OpisDziennika VARCHAR(255),
		NrDowoduKsiegowego VARCHAR(50),
		RodzajDowodu VARCHAR(20),
		DataOperacji VARCHAR(10),
		DataDowodu VARCHAR(10),
		DataKsiegowania VARCHAR(10),
		KodOperatora VARCHAR(30),
		OpisOperacji VARCHAR(255),
		DziennikKwotaOperacji DOUBLE(16,2) DEFAULT 0,
		xml TEXT,
		KEY guid (guid)
	) DEFAULT CHARSET=utf8;

	DROP TABLE IF EXISTS t_kontozapis;
	CREATE TEMPORARY TABLE t_kontozapis (
		guid VARCHAR(38),
		LpZapisu INT(11),
		NrZapisu VARCHAR(50),
		KodKontaWinien VARCHAR(50),
		KwotaWinien DOUBLE(16,2) DEFAULT 0,
		KwotaWinienWaluta DOUBLE(16,2) DEFAULT 0,
		KodWalutyWinien VARCHAR(4),
		OpisZapisuWinien VARCHAR(255),
		KodKontaMa VARCHAR(50),
		KwotaMa DOUBLE(16,2) DEFAULT 0,
		KwotaMaWaluta DOUBLE(16,2) DEFAULT 0,
		KodWalutyMa VARCHAR(4),
		OpisZapisuMa VARCHAR(255),
		xml TEXT,
		KEY guid (guid)
	) DEFAULT CHARSET=utf8;

	DROP TABLE IF EXISTS t_salda;
	CREATE TEMPORARY TABLE `t_salda` (
		`SymbolKonta` VARCHAR(50) DEFAULT '',
		`konto` VARCHAR(50) DEFAULT '',
		`TypKonta` VARCHAR(13) CHARACTER SET utf8 DEFAULT NULL,
		`KodZespolu` VARCHAR(3) DEFAULT NULL,
		`KodKategorii` VARCHAR(50) NOT NULL,
		`BO_WN` DOUBLE(19,2) DEFAULT NULL,
		`BO_MA` DOUBLE(19,2) DEFAULT NULL,
		`OBR_OKR_WN` DOUBLE(19,2) DEFAULT NULL,
		`OBR_OKR_MA` DOUBLE(19,2) DEFAULT NULL,
		`OBR_NAR_WN` DOUBLE(19,2) DEFAULT NULL,
		`OBR_NAR_MA` DOUBLE(19,2) DEFAULT NULL,
		`SALDO_WN` DOUBLE(21,4) DEFAULT NULL,
		`SALDO_MA` DOUBLE(21,4) DEFAULT NULL,
		KEY `SymbolKonta` (`SymbolKonta`),
		KEY `KodZespolu` (`KodZespolu`),
		KEY `KodKategorii` (`KodKategorii`)
	-- ) DEFAULT CHARSET=cp1250 dlaczego tak bylo????
	) DEFAULT CHARSET=cp1250
	;

	DROP TABLE IF EXISTS t_zapisy;
	CREATE TEMPORARY TABLE t_zapisy LIKE zapisy;
	INSERT INTO t_zapisy
	SELECT Z.*
	FROM zapisy Z
	LEFT JOIN plankont P ON Z.konto = P.symbol AND P.rok = Z.rok
	WHERE Z.data_dowodu >= _OdDnia AND Z.data_dowodu <= _DoDnia
	AND IF(@session.globals.Owner='SKOK', P.pozabilans=0, TRUE) -- na podstawie rozmowy tel. z glowna ksiegowa SKOK
	;
	-- WHERE Z.data_dowodu >= _OdDnia AND Z.data_dowodu <= _DoDnia

		-- char(31) - chyba twarda spacja, crist
		UPDATE t_zapisy SET opis = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(opis,'<',''),'>',''),'&','and'),'\n',''),CHAR(31),''),'\r',' '); 

		UPDATE t_zapisy SET opis = 'brak' WHERE opis='';

		IF @session.globals.Owner='SKOK' THEN
			UPDATE t_zapisy SET opis = REPLACE(REPLACE(opis,char(25),'e'),char(5),'a');
		END IF;

		UPDATE t_zapisy SET uid = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(uid,'<',''),'>',''),'&','and'),'\n',''),CHAR(31),''),'\r',' ');


		INSERT INTO t_salda
		SELECT 
		P.symbol AS SymbolKonta, 
		P.symbol_fmt AS konto, 
		CASE WHEN P.pozabilans=1 THEN 'pozabilansowe'
				WHEN P.rozrach=1 THEN 'rozliczeniowe'
				ELSE 'bilansowe'
		END AS TypKonta,
		LEFT(symbol_fmt,@kod1) AS KodZespolu,
		-- SUBSTRING_INDEX(Z.konto,'|',3) AS KodKategorii,
		SUBSTRING_INDEX(P.symbol_fmt,'-',3) AS KodKategorii,
		SUM(IF((Z.rodzaj_fk IN (1,2)) AND (Z.stronaWN),Z.kwota,0)) AS BO_WN,
		SUM(IF((Z.rodzaj_fk IN (1,2)) AND NOT (Z.stronaWN),Z.kwota,0)) AS BO_MA,
		SUM(IF((Z.rodzaj_fk IN (3,4)) AND (Z.stronaWN) AND (Z.data_dowodu>= _OdDnia), Z.kwota,0)) AS OBR_OKR_WN,
		SUM(IF((Z.rodzaj_fk IN (3,4)) AND NOT (Z.stronaWN) AND (Z.data_dowodu>= _OdDnia), Z.kwota,0)) AS OBR_OKR_MA,
		SUM(IF( (Z.stronaWN) ,Z.kwota,0)) AS OBR_NAR_WN, 
		SUM(IF(NOT (Z.stronaWN) ,Z.kwota,0)) AS OBR_NAR_MA,
		ROUND(IF(ABS(SUM(IF(Z.stronaWN,Z.kwota,0)))>ABS(SUM(IF(Z.stronaWN,0,Z.kwota))) ,SUM(IF(Z.stronaWN,Z.kwota,-Z.kwota)),0),4) AS SALDO_WN,
		ROUND(IF(ABS(SUM(IF(Z.stronaWN,Z.kwota,0)))<=ABS(SUM(IF(Z.stronaWN,0,Z.kwota))) ,SUM(IF(Z.stronaWN,-Z.kwota,Z.kwota)),0),4) AS SALDO_MA
/*
		-- SUM(IF(Z.stronaWN,Z.kwota,0)) AS SALDO_WN_Strony, SUM(IF(NOT Z.stronaWN,Z.kwota,0)) AS SALDO_MA_Strony,
		IF(SUM(IF((Z.rodzaj_fk IN (3,4)) AND (Z.stronaWN) AND (Z.data_dowodu>=_OdDnia), Z.kwota,0)) >SUM(IF((Z.rodzaj_fk IN (3,4)) AND NOT (Z.stronaWN) AND (Z.data_dowodu>=@databo), Z.kwota,0)) ,SUM(IF((Z.rodzaj_fk IN (3,4)) AND (Z.stronaWN) AND (Z.data_dowodu>=@databo), Z.kwota,0)) -SUM(IF((Z.rodzaj_fk IN (3,4)) AND NOT (Z.stronaWN) AND (Z.data_dowodu>=@databo), Z.kwota,0)) ,0) AS SALDO_OKR_WN,
		IF(SUM(IF((Z.rodzaj_fk IN (3,4)) AND NOT (Z.stronaWN) AND (Z.data_dowodu>=@databo), Z.kwota,0)) >SUM(IF((Z.rodzaj_fk IN (3,4)) AND (Z.stronaWN) AND (Z.data_dowodu>=@databo), Z.kwota,0)) ,SUM(IF((Z.rodzaj_fk IN (3,4)) AND NOT (Z.stronaWN) AND (Z.data_dowodu>=@databo), Z.kwota,0)) -SUM(IF((Z.rodzaj_fk IN (3,4)) AND (Z.stronaWN) AND (Z.data_dowodu>=@databo), Z.kwota,0)) ,0) AS SALDO_OKR_MA
*/
		FROM  t_zapisy Z
		LEFT JOIN plankont P ON Z.konto = P.symbol AND P.rok = Z.rok
		WHERE Z.konto<>'' AND (Z.data_dowodu<= _DoDnia) AND (Z.data_dowodu>= @databo) AND Z.RodzajDowodu<>'BZ'
		-- AND IF(@session.globals.Owner='SKOK', P.pozabilans=0, TRUE) -- na podstawie rozmowy tel. z glowna ksiegowa SKOK
		GROUP BY P.symbol_fmt;

		-- ALTER TABLE t_salda ADD INDEX SymbolKonta(SymbolKonta), ADD INDEX KodZespolu(KodZespolu), ADD INDEX KodKategorii(KodKategorii);
		

		INSERT INTO t_zois
		SELECT
			SymbolKonta AS guid,
			konto AS konto,
			konto AS KodKonta,
			p0.nazwa AS OpisKonta,
			TypKonta AS TypKonta,
			KodZespolu AS KodZespolu,
			p1.nazwa AS OpisZespolu,
			KodKategorii AS KodKategorii,
			p2.nazwa AS OpisKategorii,
			'' AS KodPodkategorii,
			'' AS OpisPodkategorii,
			bo_wn AS BilansOtwarciaWinien,
			bo_ma AS BilansOtwarciaMa,
			obr_okr_wn AS ObrotyWinien,
			obr_okr_ma AS ObrotyMa,
			obr_nar_wn AS ObrotyWinienNarast,
			obr_nar_ma AS ObrotyMaNarast,
			saldo_wn AS SaldoWinien,
			saldo_ma AS SaldoMa,
			'' AS xml
		FROM t_salda s
		LEFT JOIN plankont p0 ON s.SymbolKonta = p0.symbol AND p0.rok = _rokbo
		LEFT JOIN plankont p1 ON s.KodZespolu = p1.symbol_fmt AND p1.rok = _rokbo
		LEFT JOIN plankont p2 ON s.KodKategorii = p2.symbol_fmt AND p2.rok = _rokbo
		ORDER BY konto;

		UPDATE t_zois SET 
			-- KodKonta = REPLACE(KodKonta,'-',''),
			-- KodKategorii = REPLACE(REPLACE(KodKategorii,'*|',''),'|',''),
			KodKategorii = REPLACE(REPLACE(KodKategorii,'*|',''),'|','-'),
			OpisKonta = REPLACE(REPLACE(REPLACE(OpisKonta,'<',''),'>',''),'&','and'),
			OpisZespolu = REPLACE(REPLACE(REPLACE(OpisZespolu,'<',''),'>',''),'&','and'),
			OpisKategorii = REPLACE(REPLACE(REPLACE(OpisKategorii,'<',''),'>',''),'&','and');

		UPDATE t_zois SET OpisKonta = 'brak' WHERE OpisKonta='';
		UPDATE t_zois SET OpisZespolu = 'brak' WHERE OpisZespolu='';
		UPDATE t_zois SET OpisKategorii = 'brak' WHERE OpisKategorii='';

		-- tutaj ewentualnei dodac wyrzucanie zakazanych znakow z nazw kont
		-- ROZLICZENIE KART PŁATNICZYCH_KRAJ char(31), select ascii('');
		-- update plankont set nazwa = replace(nazwa,char(31),'') where nazwa like concat('%',char(31),'%');

		update t_zois set OpisKonta = replace(OpisKonta,char(31),'') where OpisKonta like concat('%',char(31),'%');
		update t_zois set OpisZespolu = replace(OpisZespolu,char(31),'') where OpisZespolu like concat('%',char(31),'%');
		update t_zois set OpisKategorii = replace(OpisKategorii,char(31),'') where OpisKategorii like concat('%',char(31),'%');

		INSERT INTO t_dziennik
		SELECT
			idnoper AS guid,
			MIN(nr_pozycji) AS LpZapisuDziennika,
			nr_dekretu AS NrZapisuDziennika,
			opis AS OpisDziennika,
			numer_dok AS NrDowoduKsiegowego,
			rodzaj_fk AS RodzajDowodu,
			data_oper AS DataOperacji,
			data_dowodu AS DataDowodu,
			data_ksiegowania AS DataKsiegowania,
			-- IF(uid='',id_bazy,uid) AS KodOperatora,
			IF(uid='','ad',uid) AS KodOperatora, -- ad oznacza automatyczna dekretacje
			opis AS OpisOperacji,
			SUM(IF(stronawn=1,kwota,0)) AS DziennikKwotaOperacji,
			'' AS xml
		FROM t_zapisy
		GROUP BY idnoper, nr_dekretu;


		INSERT INTO t_kontozapis
		SELECT
			z.guid AS guid,
			z.nr_pozycji AS LpZapisu,
			z.nr_dekretu AS NrZapisu,
			-- IF(stronawn=1,REPLACE(REPLACE(konto,'*|',''),'|','-'),'') AS KodKontaWinien,
			IF(stronawn=1,p.symbol_fmt,'') AS KodKontaWinien,
			IF(stronawn=1,kwota,0) AS KwotaWinien,
			0 AS KwotaWinienWaluta,
			'' AS KodWalutyWinien,
			opis AS OpisZapisuWinien,
			-- IF(stronawn=0,REPLACE(REPLACE(konto,'*|',''),'|','-'),'') AS KodKontaMa,
			IF(stronawn=0,p.symbol_fmt,'') AS KodKontaMa,
			IF(stronawn=0,kwota,0) AS KwotaMa,
			0 AS KwotaMaWaluta,
			'' AS KodWalutyMa,
			opis AS OpisZapisuMa,
			'' AS xml
		FROM t_zapisy z
		LEFT JOIN plankont p ON z.konto = p.symbol AND p.rok = _rokbo
		;

	IF _Param_A <> 'RAPORT' THEN
		SET SESSION group_concat_max_len = 1024*1024*1024;

		UPDATE t_zois SET xml = 
		CONCAT('<ZOiS typ="G">\n',
		'<KodKonta>',KodKonta,'</KodKonta>\n',
		'<OpisKonta>',OpisKonta,'</OpisKonta>\n',
		'<TypKonta>',TypKonta,'</TypKonta>\n',
		'<KodZespolu>',KodZespolu,'</KodZespolu>\n',
		'<OpisZespolu>',OpisZespolu,'</OpisZespolu>\n',
		'<KodKategorii>',KodKategorii,'</KodKategorii>\n',
		'<OpisKategorii>',OpisKategorii,'</OpisKategorii>\n',
		IF(KodPodkategorii='','',CONCAT('<KodPodkategorii>',KodPodkategorii,'</KodPodkategorii>\n')),
		IF(OpisPodkategorii='','',CONCAT('<OpisPodkategorii>',OpisPodkategorii,'</OpisPodkategorii>\n')),
		'<BilansOtwarciaWinien>',BilansOtwarciaWinien,'</BilansOtwarciaWinien>\n',
		'<BilansOtwarciaMa>',BilansOtwarciaMa,'</BilansOtwarciaMa>\n',
		'<ObrotyWinien>',ObrotyWinien,'</ObrotyWinien>\n',
		'<ObrotyMa>',ObrotyMa,'</ObrotyMa>\n',
		'<ObrotyWinienNarast>',ObrotyWinienNarast,'</ObrotyWinienNarast>\n',
		'<ObrotyMaNarast>',ObrotyMaNarast,'</ObrotyMaNarast>\n',
		'<SaldoWinien>',SaldoWinien,'</SaldoWinien>\n',
		'<SaldoMa>',SaldoMa,'</SaldoMa>\n',
		'</ZOiS>\n')
		;

		UPDATE t_jpk SET xmlpoz1 = (SELECT GROUP_CONCAT(xml SEPARATOR '') FROM t_zois);

		UPDATE t_dziennik SET xml = 
		CONCAT('<Dziennik typ="G">\n',
		'<LpZapisuDziennika>',LpZapisuDziennika ,'</LpZapisuDziennika>\n',
		'<NrZapisuDziennika>',NrZapisuDziennika ,'</NrZapisuDziennika>\n',
		'<OpisDziennika>',OpisDziennika ,'</OpisDziennika>\n',
		'<NrDowoduKsiegowego>',NrDowoduKsiegowego ,'</NrDowoduKsiegowego>\n',
		'<RodzajDowodu>',RodzajDowodu ,'</RodzajDowodu>\n',
		'<DataOperacji>',DataOperacji ,'</DataOperacji>\n',
		'<DataDowodu>',DataDowodu ,'</DataDowodu>\n',
		'<DataKsiegowania>',DataKsiegowania ,'</DataKsiegowania>\n',
		'<KodOperatora>',KodOperatora ,'</KodOperatora>\n',
		'<OpisOperacji>',OpisOperacji ,'</OpisOperacji>\n',
		'<DziennikKwotaOperacji>',DziennikKwotaOperacji ,'</DziennikKwotaOperacji>\n',
		'</Dziennik>\n')
		;

		UPDATE t_jpk SET xmlpoz2 = (SELECT GROUP_CONCAT(xml ORDER BY NrZapisuDziennika SEPARATOR '') FROM t_dziennik);


		UPDATE t_kontozapis SET xml = 
			CONCAT('<KontoZapis typ="G">\n',
			'<LpZapisu>',LpZapisu,'</LpZapisu>\n',
			'<NrZapisu>',NrZapisu,'</NrZapisu>\n',
			-- IF(KodKontaWinien='','',CONCAT('<KodKontaWinien>',KodKontaWinien,'</KodKontaWinien>\n')),
			'<KodKontaWinien>',KodKontaWinien,'</KodKontaWinien>\n',
			-- IF(KwotaWinien=0,'',CONCAT('<KwotaWinien>',KwotaWinien,'</KwotaWinien>\n')),
			'<KwotaWinien>',KwotaWinien,'</KwotaWinien>\n',
			IF(KwotaWinienWaluta=0,'',CONCAT('<KwotaWinienWaluta>',KwotaWinienWaluta,'</KwotaWinienWaluta>\n')),
			IF(KodWalutyWinien='','',CONCAT('<KodWalutyWinien>',KodWalutyWinien,'</KodWalutyWinien>\n')),
			'<OpisZapisuWinien>',OpisZapisuWinien,'</OpisZapisuWinien>\n',
			-- IF(KodKontaMa='','',CONCAT('<KodKontaMa>',KodKontaMa,'</KodKontaMa>\n')),
			'<KodKontaMa>',KodKontaMa,'</KodKontaMa>\n',
			-- IF(KwotaMa=0,'',CONCAT('<KwotaMa>',KwotaMa,'</KwotaMa>\n')),
			'<KwotaMa>',KwotaMa,'</KwotaMa>\n',
			IF(KwotaMaWaluta=0,'',CONCAT('<KwotaMaWaluta>',KwotaMaWaluta,'</KwotaMaWaluta>\n')),
			IF(KodWalutyMa='','',CONCAT('<KodWalutyMa>',KodWalutyMa,'</KodWalutyMa>\n')),
			'<OpisZapisuMa>',OpisZapisuMa,'</OpisZapisuMa>\n',
			'</KontoZapis>\n')
		;

		UPDATE t_jpk SET xmlpoz3 = (SELECT GROUP_CONCAT(xml ORDER BY NrZapisu SEPARATOR '') FROM t_kontozapis);


		SELECT COUNT(*) INTO _liczba_wierszy FROM t_dziennik;
		SELECT SUM(_Rnd2(DziennikKwotaOperacji)) INTO _wartosc_dok FROM t_dziennik;
		SET _XMLpoz = '';
		SET _XMLpoz = CONCAT( SPACE(@xml.IC*cSL), '<DziennikCtrl>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<LiczbaWierszyDziennika>',_liczba_wierszy,'</LiczbaWierszyDziennika>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<SumaKwotOperacji>',_wartosc_dok,'</SumaKwotOperacji>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</DziennikCtrl>\n');

		UPDATE t_jpk SET xmlpoz2 = CONCAT('\n',xmlpoz2,IFNULL(_XMLpoz,'brak2'),'\n');

		SELECT COUNT(*) INTO _liczba_wierszy FROM t_kontozapis;
		SELECT SUM(_Rnd2(KwotaWinien)) INTO _wartosc_dok FROM t_kontozapis;
		SELECT SUM(_Rnd2(KwotaMa)) INTO _wartosc_dok2 FROM t_kontozapis;
		SET _XMLpoz = '';
		SET _XMLpoz = CONCAT( SPACE(@xml.IC*cSL), '<KontoZapisCtrl>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<LiczbaWierszyKontoZapisj>',_liczba_wierszy,'</LiczbaWierszyKontoZapisj>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<SumaWinien>',_wartosc_dok,'</SumaWinien>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<SumaMa>',_wartosc_dok2,'</SumaMa>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</KontoZapisCtrl>\n');

		UPDATE t_jpk SET xmlpoz3 = CONCAT('\n',xmlpoz3,IFNULL(_XMLpoz,'brak3'),'\n');

		-- badamy czy sa otwarte okresy ksiegowe
		SELECT COUNT(*) INTO _liczba_wierszy FROM t_dziennik WHERE IFNULL(LpZapisuDziennika,0) = 0;

		IF @session.globals.Owner <> 'AXIS' AND _liczba_wierszy > 0 THEN -- plik nie zostanie utworzony

			SET _XML = 'Brak mozliwosci utworzenia pliku JPK KR, sa okresy bez zamkniecia!';

		ELSE -- normalne generowanie pliku jpk_kr

			SET _XML := (SELECT CONCAT(xmlnag,xmlpoz1,xmlpoz2,xmlpoz3,xmlpoz4,'</JPK>') FROM t_jpk);

		END IF;

			-- CALL fr_ht_zest_jpk('ZAPIS', '', '', '', '', _OdDnia,_DoDnia, '', '', _Param_B, '',_MODE);
		SELECT _XML;
	ELSE
		SELECT _Param_A; -- 'RAPORT'  (zwracamy cokolwiek, aby uniknać komunikatu `Cursor not returned from query`)
	END IF;  -- IF _Param_A <> 'RAPORT'

	-- SET SESSION group_concat_max_len = 1024;
	SET NAMES "cp1250";
	/*
	DROP TABLE IF EXISTS t_zois;
	DROP TABLE IF EXISTS t_dziennik;
	DROP TABLE IF EXISTS t_kontozapis;
	DROP TABLE IF EXISTS t_salda;
	DROP TABLE IF EXISTS t_zapisy;
	*/

END IF; -- _MODE = JPK_KR




IF _MODE = 'JPK_WB' THEN
-- zestawiene jest dla jednego konta bankowego firmy
	CALL fr_ht_zest_jpk('NAGLOWEK', '', '', '', '', _OdDnia,_DoDnia, '', '', _Param_B, '',_MODE);

	SET @databo = CONCAT(YEAR(_OdDnia),'-01-01');
   -- select ValueD from IReg where idkey="Data bilansu"
	SELECT w.symbol, b.konto, b.idn INTO _waluta, _numer_rachunku, _nrkasy
	FROM banki b INNER JOIN waluty w ON b.waluta = w.idn WHERE b.NazwaKonta = _Param_B;

	SELECT IFNULL(SUM(_Rnd2(zaplacono)),0) INTO _saldo_poczatkowe FROM opng WHERE deleted=0 AND rodzaj IN (36,37,38,63) AND nrkasy= _nrkasy AND datawplywu >= @databo AND datawplywu < IF(_OdDnia=CONCAT(YEAR(_OdDnia),'-01-01'),_OdDnia + INTERVAL 1 DAY,_OdDnia);

	SELECT ifnull(SUM(_Rnd2(zaplacono)),0) INTO _saldo_koncowe FROM opng WHERE deleted=0 AND rodzaj IN (36,37,38,63) AND nrkasy= _nrkasy AND datawplywu >= @databo AND datawplywu <= _DoDnia;


	DROP TABLE IF EXISTS t_dok;
	CREATE TEMPORARY TABLE t_dok (
	guid VARCHAR(38),
	rodzaj INT(11), -- rodzaj dokumentu 
	nrraportu VARCHAR(50), -- nr wyciagu
	pozycjawyciagu INT(11), -- numer zapisu w wyciagu
	NumerWiersza INT(11), -- numer zapisu w zestawieniu
	DataOperacji VARCHAR(10),  -- 
	NazwaPodmiotu VARCHAR(256), -- nazwa kontrahenta
	OpisOperacji VARCHAR(256),
	KwotaOperacji DOUBLE(16,2) DEFAULT 0,
	SaldoOperacji DOUBLE(16,2) DEFAULT 0,
	KEY guid (guid),
	KEY rodzaj (rodzaj)
	) DEFAULT CHARSET=utf8;


	SET _S = '
		INSERT INTO t_dok
		SELECT n.guid,
		n.rodzaj,
		n.nrraportu,
		n.pozycjawyciagu,
		@a := @a+1 AS NumerWiersza,
		n.datawplywu AS dataoperacji,
		REPLACE(REPLACE(REPLACE(n.kontrnazwa, CHAR(38), " and "),"<"," "), "&", " and ") AS NazwaPodmiotu,
		REPLACE(REPLACE(REPLACE(n.opis, CHAR(38), " and "),"<"," "), "&", " and ") AS OpisOperacji,
		zaplacono as KwotaOperacji,
		@b := @b + zaplacono AS SaldoOperacji
		FROM opng n
		WHERE n.rodzaj IN (36,37,38,63) 
		AND n.datawplywu >= "#_OdDnia#" AND n.datawplywu <= "#_DoDnia#"
		AND n.nrkasy IN (#_nrkasy#)
		AND n.deleted = 0
		AND n.zaplacono <> 0
		ORDER BY n.datawplywu, n.nrraportu, n.pozycjawyciagu, n.idn;
		';
		
		SET _S = REPLACE(_S, '#_OdDnia#', _OdDnia);
		SET _S = REPLACE(_S, '#_DoDnia#', _DoDnia);
		SET _S = REPLACE(_S, '#_nrkasy#', _nrkasy);

		SET @_SQLText = _S;
		SET @a = 0;
		SET @b = _saldo_poczatkowe;
		CALL _ExecuteCmd(_S, @Error);

		UPDATE t_dok SET NazwaPodmiotu = 'BO' WHERE NazwaPodmiotu = '' AND OpisOperacji = 'BO';
		UPDATE t_dok SET NazwaPodmiotu = 'brak' WHERE NazwaPodmiotu = '' AND OpisOperacji <> 'BO';

	IF _Param_A <> 'RAPORT' THEN

		SET _XMLnag2 = CONCAT( SPACE(@xml.IC*cSL), '<Salda>\n');
		SET _XMLnag2 = CONCAT(_XMLnag2, SPACE(@xml.IC*cSL), '<SaldoPoczatkowe>',_saldo_poczatkowe,'</SaldoPoczatkowe>\n');
		SET _XMLnag2 = CONCAT(_XMLnag2, SPACE(@xml.IC*cSL), '<SaldoKoncowe>',_saldo_koncowe,'</SaldoKoncowe>\n');
		SET _XMLnag2 = CONCAT(_XMLnag2, SPACE(@xml.IC*cSL), '</Salda>\n');
		UPDATE t_jpk SET xmlnag2 = _XMLnag2;


		SET @_XMLpoz1 = '';
		BEGIN
			DECLARE done BOOL DEFAULT FALSE;
			DECLARE _GUID VARCHAR(38) DEFAULT '';
			DECLARE c_proc CURSOR FOR
			SELECT guid FROM t_dok ORDER BY NumerWiersza;
			DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

			OPEN c_proc;
				loop2: LOOP
				SET done = FALSE;
				FETCH c_proc INTO _GUID;
				IF done THEN
					LEAVE loop2;
				ELSE
					CALL fr_ht_zest_jpk('JPK_WB_ONE',_GUID,'','','','','','','','','','');
				END IF;
			END LOOP;
			CLOSE c_proc;    
		END;

		SELECT COUNT(*) INTO _liczba_wierszy FROM t_dok;
		SELECT SUM(_Rnd2(ABS(KwotaOperacji))) INTO _wartosc_dok FROM t_dok WHERE rodzaj IN (37,63);
		SELECT SUM(_Rnd2(KwotaOperacji)) INTO _wartosc_dok2 FROM t_dok WHERE rodzaj IN (36,38);
		
		SET _wartosc_dok = IFNULL(_wartosc_dok, 0);
		SET _wartosc_dok2 = IFNULL(_wartosc_dok2, 0);

		SET _XMLpoz = '';
		SET _XMLpoz = CONCAT( SPACE(@xml.IC*cSL), '<WyciagCtrl>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<LiczbaWierszy>',_liczba_wierszy,'</LiczbaWierszy>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<SumaObciazen>',_wartosc_dok,'</SumaObciazen>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<SumaUznan>',_wartosc_dok2,'</SumaUznan>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</WyciagCtrl>\n');
		UPDATE t_jpk SET xmlpoz2 = CONCAT(xmlpoz2,IFNULL(_XMLpoz,'brak2'));

		SET _XML := (SELECT CONCAT(xmlnag,xmlnag2,xmlpoz1,xmlpoz2,xmlpoz3,xmlpoz4,'</JPK>') FROM t_jpk);
		CALL fr_ht_zest_jpk('ZAPIS', '', '', '', '', _OdDnia,_DoDnia, '', '', _Param_B, '',_MODE);
		SELECT _XML;
	ELSE        

		SELECT CONCAT(_Param_A,', ',_Param_B); -- 'RAPORT'  (zwracamy cokolwiek, aby uniknać komunikatu `Cursor not returned from query`)
	END IF; -- <> RAPORT

	DROP TABLE IF EXISTS t_dok;


END IF; -- JPK_WB

IF _MODE = 'JPK_WB_ONE' THEN
	SELECT CONCAT('<WyciagWiersz typ="G">\n',
		'<NumerWiersza>',NumerWiersza,'</NumerWiersza>\n',
		'<DataOperacji>',DataOperacji,'</DataOperacji>\n',
		'<NazwaPodmiotu>',NazwaPodmiotu,'</NazwaPodmiotu>\n',
		'<OpisOperacji>',OpisOperacji,'</OpisOperacji>\n',
		'<KwotaOperacji>',KwotaOperacji,'</KwotaOperacji>\n',
		'<SaldoOperacji>',SaldoOperacji,'</SaldoOperacji>\n',
		'</WyciagWiersz>\n')
    INTO @_XMLpoz1
	FROM t_dok WHERE guid = _GUID;

	UPDATE t_jpk SET xmlpoz1 = CONCAT(xmlpoz1,IFNULL(@_XMLpoz1, CONCAT('brak WB_ONE ',_GUID)));
END IF; -- 'JPK_WB_ONE'


-- SET @session.globals.Owner ='WENCEL';
-- CALL fr_ht_zest_jpk('JPK_PKPIR2', '', '', '', '', '2018-04-01','2018-04-30', '', 'RAPORT', '', '','');
IF (_MODE IN ('JPK_PKPIR2')) THEN
	SET @databo = CONCAT(YEAR(_DoDnia),'-01-01');
	SET _rokbo = YEAR(@databo);

	CALL fr_ht_zest_jpk('NAGLOWEK', '', '', '', '', _OdDnia,_DoDnia, '', '', '', '',_MODE);

	DROP TABLE IF EXISTS t_info;
	CREATE TEMPORARY TABLE t_info (
		P_1 DOUBLE(16,2) DEFAULT 0,
		P_2 DOUBLE(16,2) DEFAULT 0,
		P_3 DOUBLE(16,2) DEFAULT 0,
		P_4 DOUBLE(16,2) DEFAULT 0,
		xml TEXT
	) DEFAULT CHARSET=utf8;

	DROP TABLE IF EXISTS t_spis;
	CREATE TEMPORARY TABLE t_spis (
		P_5A VARCHAR(10),
		P_5B DOUBLE(16,2) DEFAULT 0,
		xml TEXT
	) DEFAULT CHARSET=utf8;

	DROP TABLE IF EXISTS t_kpr;
	CREATE TEMPORARY TABLE t_kpr (
		guid VARCHAR(38),
		kontrguid VARCHAR(38),
		K_1 INT(11) DEFAULT 0,
		K_2 VARCHAR(10),
		K_3 VARCHAR(50),
		K_4 VARCHAR(250),
		K_5 VARCHAR(250),
		K_6 VARCHAR(250),
		K_7 DOUBLE(16,2) DEFAULT 0,
		K_8 DOUBLE(16,2) DEFAULT 0,
		K_9 DOUBLE(16,2) DEFAULT 0,
		K_10 DOUBLE(16,2) DEFAULT 0,
		K_11 DOUBLE(16,2) DEFAULT 0,
		K_12 DOUBLE(16,2) DEFAULT 0,
		K_13 DOUBLE(16,2) DEFAULT 0,
		K_14 DOUBLE(16,2) DEFAULT 0,
		K_15 DOUBLE(16,2) DEFAULT 0,
		K_16A VARCHAR(250),
		K_16B DOUBLE(16,2) DEFAULT 0,
		K_17 VARCHAR(250),
		xml TEXT,
	KEY guid (guid),
	KEY kontrguid (kontrguid)
	) DEFAULT CHARSET=utf8;

	-- sekcja dla tabeli t_spis nie jest obslugiwana, innymi slowy program nie obsluguje w ogole sytuacji inwentaryzacji w ciagu roku
	-- procedura obsluguje taki przypadek, jako brak danych

	INSERT INTO t_kpr
	SELECT guid, kontrguid, 
		lpkpr AS K_1,
		datawplywu AS K_2,
		nrdokfin AS K_3,
		kontrnazwa AS K_4,
		kontradres AS K_5,
		opis AS K_6,
		IF(kolumnaKPR = 7,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0) AS K_7,
		IF(kolumnaKPR = 8,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0) AS K_8,
		0 AS K_9, 
		IF(kolumnaKPR = 10,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0) AS K_10,
		IF(kolumnaKPR = 11,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0) AS K_11,
		IF(kolumnaKPR = 12,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0) AS K_12,
		IF(kolumnaKPR = 13,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0) AS K_13,
		IF(kolumnaKPR = 14,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0) AS K_14,
		0 AS K_15,
		IF(kolumnaKPR = 16,_varStr(_Rnd2(netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd)),'') AS K_16A, -- tego nie obslugujemy(?)
		IF(kolumnaKPR = 17,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0) AS K_16B,
		uwagi AS K_17,
		'' AS xml
	FROM opng 
	WHERE deleted=0 AND kolumnakpr>0
	AND datawplywu >= _OdDnia AND datawplywu <= _DoDnia
	ORDER BY lpKPR
	;

	UPDATE t_kpr SET
		K_9 = K_7 + K_8,
		K_3 = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(K_3,'<',''),'>',''),'&','and'),'\n',''),CHAR(31),''),'\r',' '),
		K_4 = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(K_4,'<',''),'>',''),'&','and'),'\n',''),CHAR(31),''),'\r',' '),
		K_5 = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(K_5,'<',''),'>',''),'&','and'),'\n',''),CHAR(31),''),'\r',' '),
		K_6 = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(K_6,'<',''),'>',''),'&','and'),'\n',''),CHAR(31),''),'\r',' '),
		K_17 = IFNULL(K_17,'')
	;

	INSERT INTO t_info
	SELECT 
		ifnull((select wart_remanent_na_bo from lata_obrachunkowe where idn= _rokbo),0) AS P1,
		ifnull((select wart_remanent_na_bz from lata_obrachunkowe where idn= _rokbo),0) AS P2,
		SUM(K_9) AS P3,
		SUM(K_10 + K_11 + K_14) AS P4,
		'' AS xml
	FROM t_kpr
	;

		IF _Param_A <> 'RAPORT' THEN

			UPDATE t_info SET xml = 
				CONCAT('<PKPIRInfo>\n',
				'<P_1>',P_1,'</P_1>\n',
				'<P_2>',P_2,'</P_2>\n',
				'<P_3>',P_3,'</P_3>\n',
				'<P_4>',P_4,'</P_4>\n',
				'</PKPIRInfo>\n')
			;

			UPDATE t_jpk SET xmlpoz1 = (SELECT GROUP_CONCAT(xml SEPARATOR '') FROM t_info);

			UPDATE t_spis SET xml = 
				CONCAT('<PKPIRSpis typ="G">\n',
				'<P_5A>',P_5A,'</P_5A>\n',
				'<P_5B>',P_5B,'</P_5B>\n',
				'</PKPIRSpis>\n')
			;

			UPDATE t_jpk SET xmlpoz2 = IFNULL((SELECT GROUP_CONCAT(xml SEPARATOR '') FROM t_spis),'');

		UPDATE t_kpr SET xml = 
			CONCAT('<PKPIRWiersz typ="G">\n',
			'<K_1>',K_1,'</K_1>\n',
			'<K_2>',K_2,'</K_2>\n',
			'<K_3>',K_3,'</K_3>\n',
			'<K_4>',K_4,'</K_4>\n',
			'<K_5>',K_5,'</K_5>\n',
			'<K_6>',K_6,'</K_6>\n',
			'<K_7>',K_7,'</K_7>\n',
			'<K_8>',K_8,'</K_8>\n',
			'<K_9>',K_9,'</K_9>\n',
			'<K_10>',K_10,'</K_10>\n',
			'<K_11>',K_11,'</K_11>\n',
			'<K_12>',K_12,'</K_12>\n',
			'<K_13>',K_13,'</K_13>\n',
			'<K_14>',K_14,'</K_14>\n',
			'<K_15>',K_15,'</K_15>\n',
			IF(K_16A='','',CONCAT('<K_16A>',K_16A,'</K_16A>\n')),
			IF(K_16B='','',CONCAT('<K_16B>',K_16B,'</K_16B>\n')),
			IF(K_17='','',CONCAT('<K_17>',K_17,'</K_17>\n')),
			'</PKPIRWiersz>\n')
			;

			UPDATE t_jpk SET xmlpoz3 = (SELECT GROUP_CONCAT(xml SEPARATOR '') FROM t_kpr);

			SELECT COUNT(*) INTO _liczba_wierszy FROM t_kpr;
			SELECT SUM(_Rnd2(K_9)) INTO _wartosc_faktur FROM t_kpr;

			SET _XMLpoz = '';

			SET _XMLpoz = CONCAT(SPACE(@xml.IC*cSL), '<PKPIRCtrl>\n');
			SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<LiczbaWierszy>',_liczba_wierszy,'</LiczbaWierszy>\n');
			SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<SumaPrzychodow>',_wartosc_faktur,'</SumaPrzychodow>\n');
			SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</PKPIRCtrl>\n');

			UPDATE t_jpk SET xmlpoz3 = CONCAT('\n',xmlpoz3,IFNULL(_XMLpoz,'brak_kpr'),'\n');

			SET _XML := (SELECT CONCAT(xmlnag,xmlpoz1,xmlpoz2,xmlpoz3,xmlpoz4,'</JPK>') FROM t_jpk);

			CALL fr_ht_zest_jpk('ZAPIS', '', '', '', '', _OdDnia,_DoDnia, '', '', _Param_B, '',_MODE);

			SELECT _XML;

		ELSE        
			SELECT _Param_A; -- 'RAPORT'  (zwracamy cokolwiek, aby uniknać komunikatu `Cursor not returned from query`)
		END IF;  -- IF _Param_A <> 'RAPORT'
        
        DROP TABLE IF EXISTS t_info;
        DROP TABLE IF EXISTS t_spis;
        DROP TABLE IF EXISTS t_kpr;

	END IF; -- _MODE = JPK_PKPIR2


-- SET @session.globals.Owner ='WENCEL';
-- CALL fr_ht_zest_jpk('JPK_EWP', '', '', '', '', '2018-04-01','2018-04-30', '', 'RAPORT', '', '','');
	IF (_MODE IN ('JPK_EWP')) THEN
		SET @databo = CONCAT(YEAR(_DoDnia),'-01-01');
		SET _rokbo = YEAR(@databo);

		CALL fr_ht_zest_jpk('NAGLOWEK', '', '', '', '', _OdDnia,_DoDnia, '', '', '', '',_MODE);

	DROP TABLE IF EXISTS t_ewp;
	CREATE TEMPORARY TABLE t_ewp (
		guid VARCHAR(38),
		kontrguid VARCHAR(38),
		K_1 INT(11) DEFAULT 0,
		K_2 VARCHAR(10),
		K_3 VARCHAR(10),
		K_4 VARCHAR(250),
		K_5 DOUBLE(16,2) DEFAULT 0,
		K_6 DOUBLE(16,2) DEFAULT 0,
		K_7 DOUBLE(16,2) DEFAULT 0,
		K_8 DOUBLE(16,2) DEFAULT 0,
		K_9 DOUBLE(16,2) DEFAULT 0,
		K_10 DOUBLE(16,2) DEFAULT 0,
		K_11 DOUBLE(16,2) DEFAULT 0,
		K_12 VARCHAR(10),
		xml TEXT,
	KEY guid (guid),
	KEY kontrguid (kontrguid)
	) DEFAULT CHARSET=utf8;

	INSERT INTO t_ewp
	SELECT guid, kontrguid, 
		lpkpr AS K_1,
		datawplywu AS K_2, -- data wpisu
		datasprzed AS K_3, -- data uzyskania przychodu
		nrdokfin AS K_4,
		IF(kolumnaKPR = 5,netto,0) AS K_5, -- kwota przychodu wg stawki 20%
		IF(kolumnaKPR = 6,netto,0) AS K_6, -- kwota przychodu wg stawki 17%
		IF(kolumnaKPR = 7,netto,0) AS K_7, -- kwota przychodu wg stawki 8,5%
		IF(kolumnaKPR = 8,netto,0) AS K_8, -- kwota przychodu wg stawki 5,5%
		IF(kolumnaKPR = 9,netto,0) AS K_9, -- kwota przychodu wg stawki 3%
		0 AS K_10,
		IF(kolumnaKPR = 11,netto,0) AS K_11, -- kwota przychodu wg stawki 10%
		uwagi AS K_12, -- ewentualna data otrzymania przychodu, dla rozliczeń kwartalnych
		'' AS xml
	FROM opng 
	WHERE deleted=0 AND kolumnakpr>0
	AND datawplywu >= _OdDnia AND datawplywu <= _DoDnia
	ORDER BY lpKPR
	;

	UPDATE t_ewp SET
		K_10 = K_5 + K_6 + K_7 + K_8 + K_9,
		K_12 = IFNULL(K_12,'')
	;


		IF _Param_A <> 'RAPORT' THEN

		UPDATE t_ewp SET xml = 
			CONCAT('<EWPWiersz typ="G">\n',
			'<K_1>',K_1,'</K_1>\n',
			'<K_2>',K_2,'</K_2>\n',
			'<K_3>',K_3,'</K_3>\n',
			'<K_4>',K_4,'</K_4>\n',
			'<K_5>',K_5,'</K_5>\n',
			'<K_6>',K_6,'</K_6>\n',
			'<K_7>',K_7,'</K_7>\n',
			'<K_8>',K_8,'</K_8>\n',
			'<K_9>',K_9,'</K_9>\n',
			'<K_10>',K_10,'</K_10>\n',
			'<K_11>',K_11,'</K_11>\n',
			IF(K_12='','',CONCAT('<K_12>',K_12,'</K_12>\n')),
			'</EWPWiersz>\n')
			;

			UPDATE t_jpk SET xmlpoz1 = (SELECT GROUP_CONCAT(xml SEPARATOR '') FROM t_ewp);

			SELECT COUNT(*) INTO _liczba_wierszy FROM t_ewp;
			SELECT SUM(_Rnd2(K_10)) INTO _wartosc_faktur FROM t_ewp;

			SET _XMLpoz = '';

			SET _XMLpoz = CONCAT(SPACE(@xml.IC*cSL), '<EWPCtrl>\n');
			SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<LiczbaWierszy>',_liczba_wierszy,'</LiczbaWierszy>\n');
			SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<SumaPrzychodow>',_wartosc_faktur,'</SumaPrzychodow>\n');
			SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</EWPCtrl>\n');

			UPDATE t_jpk SET xmlpoz3 = CONCAT('\n',xmlpoz1,IFNULL(_XMLpoz,'brak_ewp'),'\n');

			SET _XML := (SELECT CONCAT(xmlnag,xmlpoz1,xmlpoz2,xmlpoz3,xmlpoz4,'</JPK>') FROM t_jpk);

			CALL fr_ht_zest_jpk('ZAPIS', '', '', '', '', _OdDnia,_DoDnia, '', '', _Param_B, '',_MODE);

			SELECT _XML;

		ELSE        
			SELECT _Param_A; -- 'RAPORT'  (zwracamy cokolwiek, aby uniknać komunikatu `Cursor not returned from query`)
		END IF;  -- IF _Param_A <> 'RAPORT'

    DROP TABLE IF EXISTS t_ewp;


END IF; -- _MODE = JPK_EWP

-- zapis pliku jpk do tabeli w bazie - w celu archiwalno-kontrolnym
IF (_MODE = 'ZAPIS') THEN
            SET SESSION group_concat_max_len = 1024*1024*1024;
            INSERT INTO ht_dekl_jpk (KodFormularza, OdDaty, DoDaty, NrDok, Rok, Miesiac, osobaGUID, data_wypelnienia, plik_jpk)
            VALUES (_Param_D, _OdDnia, _DoDnia, _Param_B, YEAR(_OdDnia), MONTH(_OdDnia), IFNULL(@session.CheckLogonUser,''), CURRENT_DATE(),
                                            (SELECT COMPRESS(CONCAT(xmlnag,xmlpoz1,xmlpoz2,xmlpoz3,xmlpoz4,'</JPK>')) FROM t_jpk));

END IF; -- _MODE = ZAPIS





/*
SELECT LpKpr, datawplywu, nrDokfin, kontrnazwa, kontradres,
	opis,
	IF (kolumnaKPR = 7,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0) AS col7,
	IF (kolumnaKPR = 8,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0) AS col8,
	IF (kolumnaKPR = 10,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0) AS col10,
	IF (kolumnaKPR = 11,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0) AS col11,
	IF (kolumnaKPR = 12,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0) AS col12,
	IF (kolumnaKPR = 13,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0) AS col13,
	IF (kolumnaKPR = 14,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0) AS col14,
	IF (kolumnaKPR = 17,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0) AS col16,
	IF (kolumnaKPR = 16, _varStr(_Rnd2(netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd)), uwagi) AS uwagi


FROM opng
WHERE GUID = _GUID
INTO _XML;

*/


-- pomocnicze
/*

SET @session.globals.Owner ='WENCEL';

CALL fr_ht_zest_jpk('JPK_PKPIR2', '', '', '', '', '2018-04-01','2018-04-30', '', 'RAPORT_', '', '','');
SELECT * FROM t_jpk;
SELECT * FROM t_info;
SELECT * FROM t_spis;
SELECT * FROM t_kpr;


SET @session.globals.Owner ='IZOHAN';
CALL fr_ht_zest_jpk('JPK_KR', '', '', '', '', '2018-05-04','2018-05-04', '', 'RAPORT_', '', '','');
SELECT * FROM t_jpk;
SELECT * FROM t_zois;
SELECT * FROM t_dziennik;
SELECT * FROM t_kontozapis;


SELECT valuea, i.* FROM IReg i WHERE idpath LIKE '%owner%' OR idpath LIKE '%dane%firmy%' OR idkey like '%jpk%' ORDER BY idkey;

SET @session.globals.Owner ='SEVENET';

CALL fr_ht_zest_jpk('JPK_VAT3', '', '', '', '', '2018-02-01','2018-02-28', '', 'RAPORT', '', '','');

SELECT
SUM(K_43), SUM(K_44), SUM(K_45), SUM(K_46)
-- distinct rv_id
FROM t_vat_z t;
WHERE rv_id IN (2020, 2024, 2025, 2036, 2051, 2040)
-- K_23<>0 or
;


SELECT *
-- K_19, K_20, t.*
-- SUM(K_10), SUM(K_11), SUM(K_12), SUM(K_15),SUM(K_16),SUM(K_17), SUM(K_18), SUM(K_19), SUM(K_20), SUM(K_21),SUM(K_22),SUM(K_23),
-- SUM(K_24), SUM(K_27), SUM(K_28),SUM(K_29), SUM(K_30), SUM(K_31), SUM(K_34), SUM(K_35)
-- distinct rv_id
FROM t_vat_s t
;
WHERE rv_id IN (2023)

;

SELECT -- sum(v.netto), sum(v.vat),
rv.rv_id_JPK, n.data_vat, op.grupa, n.rodzaj, v.*, n.*
FROM opng n,  opng_vat v, operdoc op, v_rejestry_vat rv
WHERE v.idnoper = n.guid AND n.rodzaj = op.rodzaj AND rv.Idn = n.rv_id
AND n.deleted=0
-- AND v.idvat<>5
AND n.data_vat BETWEEN '2017-05-01' AND '2017-05-31'
AND rv.rv_id_jpk IN (2022, 2035)
;

select * from rejestry_vat;
select * from erp_vat;
*/

/*
14. Sekcje: SprzedazWiersz oraz ZakupWiersz. Obie sekcje są wymagane, co
wprowadzać w pliku jeśli w danym miesiącu sprzedaż lub zakup nie występuje.
W takiej sytuacji niezbędne jest struktury z wierszem o wartości „0”.
*/


END$$

DELIMITER ;
