 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),
    IN _Param_C VARCHAR(50),
    IN _Param_D VARCHAR(50)
    )
 

SPROC: BEGIN
    DECLARE _S LONGTEXT;
    DECLARE _XML LONGTEXT;
		DECLARE _XMLnag 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);
		DECLARE _zm01 VARCHAR(255);
		DECLARE cSL INT(11);
		DECLARE _liczba_wierszy INT(11);
		DECLARE _wartosc_faktur VARCHAR(18);
		DECLARE _podatek_s VARCHAR(18);
		DECLARE _podatek_z VARCHAR(18);
		DECLARE _proc_struktura DOUBLE(16,2);

		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, '');
		
/*
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

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_FA', '', '', '', '', '2016-05-01','2016-05-30', '', '', '', '','');
CALL fr_ht_zest_jpk('JPK_MAG', '', '', '', '', '2016-05-01','2016-05-30', '', '', '', '','');

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 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

*/

	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
		('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_FA','OdDnia','DoDnia','_XML','Faktury VAT','JPK_FA'),
		('JPK_PKPIR','OdDnia','DoDnia','_XML','Podatkowa ksiega przychodow i rozchodow','JPK_PKPIR'),
		('JPK_EWP','OdDnia','DoDnia','_XML','Ewidencja przychodow i rozchodow','JPK_EWP')
	;

	SELECT * FROM t_lista;

	END IF; -- LISTA


	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_PKPIR' THEN '<tns:JKP xmlns="http://jpk.mf.gov.pl/wzor/2016/03/09/03096/">\n'
				 WHEN _Param_D='JPK_VAT' THEN CONCAT('<tns: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('<tns: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_FA' THEN CONCAT('<tns:JPK xmlns="http://jpk.mf.gov.pl/wzor/2016/03/09/03095/"\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/03095/">\n')

				 WHEN _Param_D='JPK_MAG' THEN '<tns:JPK xmlns="http://jpk.mf.gov.pl/wzor/2016/03/09/03093/">\n\t'
		END
											);

-- <Naglowek> 
	SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<tns:Naglowek>\n');
		SET @xml.IC = @xml.IC + 1;
	
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<tns:KodFormularza kodSystemowy="',
			CASE WHEN _Param_D='JPK_PKPIR' THEN 'JPK_PKPIR (1)'
					 WHEN _Param_D='JPK_VAT' THEN 'JPK_VAT (1)'
					 WHEN _Param_D='JPK_VAT2' THEN 'JPK_VAT (2)'
					 WHEN _Param_D='JPK_FA' THEN 'JPK_FA (1)'
					 WHEN _Param_D='JPK_MAG' THEN 'JPK_MAG (1)'
			END,
			'" wersjaSchemy="', '1-0', '">',IF(_Param_D='JPK_VAT2','JPK_VAT',_Param_D),'</tns:KodFormularza>\n');
		IF _Param_D <> 'JPK_VAT2' THEN
			SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<tns:WariantFormularza>', 1,'</tns:WariantFormularza>\n');
		ELSE
			SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<tns:WariantFormularza>', 2,'</tns:WariantFormularza>\n');
		END IF;

		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<tns:CelZlozenia>', 1, '</tns:CelZlozenia>\n');
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<tns:DataWytworzeniaJPK>',CURRENT_DATE,'T',CURRENT_TIME,'</tns:DataWytworzeniaJPK>\n'); 
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<tns:DataOd>', _OdDnia, '</tns:DataOd>\n');
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<tns:DataDo>', _DoDnia, '</tns:DataDo>\n'); 
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<tns:DomyslnyKodWaluty>', 'PLN', '</tns:DomyslnyKodWaluty>\n'); 

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

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

		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<tns:KodUrzedu>', _KodUS, '</tns:KodUrzedu>\n');
		SET @xml.IC = @xml.IC - 1;						
	SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '</tns:Naglowek>\n');
--  </Naglowek> 



-- <Podmiot1> 
			SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '<tns: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), '<tns: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), '</tns:IdentyfikatorPodmiotu>\n');

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

			SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '</tns:AdresPodmiotu>\n');
			SET @xml.IC = @xml.IC - 1;	
		SET _XMLnag = CONCAT(_XMLnag, SPACE(@xml.IC*cSL), '</tns:Podmiot1>\n');
--  </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(*) FROM t_vat_s INTO _liczba_wierszy;
	SELECT SUM(_Rnd2(K_16+K_18+K_20+K_24+K_26+K_28+K_30+K_33+K_35)) FROM t_vat_s INTO _podatek_s;

	SET _XMLpoz = '';

	SET _XMLpoz = CONCAT(SPACE(@xml.IC*cSL), '<tns:SprzedazCtrl>\n');
	SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<tns:LiczbaWierszySprzedazy>',_liczba_wierszy,'</tns:LiczbaWierszySprzedazy>\n');
	SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<tns:PodatekNalezny>',_podatek_s,'</tns:PodatekNalezny>\n');
	SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</tns: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(*) FROM t_vat_z INTO _liczba_wierszy;
	SELECT SUM(_Rnd2(K_43 + K_45)) FROM t_vat_z INTO _podatek_z;

	SET _XMLpoz = '';

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

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


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

	SET NAMES "cp1250";

	END IF; -- _MODE = JPK_VAT



	IF _MODE = 'JPK_VAT_ONE_S' THEN

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

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

	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', '', '','');
*/
IF _MODE = 'JPK_VAT2' THEN
  
	CALL fr_ht_zest_jpk('NAGLOWEK', '', '', '', '', _OdDnia,_DoDnia, '', '', '', '',_MODE);
  
	SELECT DATABASE() INTO @baza;
	SELECT valueB, valueA FROM IReg 
		WHERE idpath='INT\\SYSTEM\\MOTLAWA\\DeklaracjeVAT' AND idkey='JPK_definicja_z_VAT7' LIMIT 1 
	INTO @vat7, @vat7_guid;

	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_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 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') 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') AND n.rodzaj IN (0,2,4,83) AND n.kontrnip = '' THEN 'brak'
		WHEN n.rodzaj IN (0,2) AND n.kontrnip = '' THEN @NIP
		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)
		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)
		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<> '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,''),
		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)) 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)) 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)) 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)) 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)) 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)) AND v.idvat IN (0,15), v.netto, 0)) AS K_19,	  -- C.6
		SUM(IF(n.rv_id IN (IFNULL(d.C6r1, -10), IFNULL(d.C6r2, -10)) AND v.idvat IN (0,15), 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)), 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 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.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.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;

	END IF;
	
	IF IFNULL(@vat7,0) = 0 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') AND n.rodzaj IN (0,2,4,83) AND n.kontrnip = '' THEN 'brak'
		WHEN n.rodzaj IN (0,2) AND n.kontrnip = '' THEN @NIP
		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))
		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 ('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) 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) 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) 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) 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) 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,2039,2063,2066,2067,2074,2033) AND v.idvat IN (0,15),v.netto,0))) 
		WHEN @session.globals.Owner IN ('KONKOL') AND @baza = 'zoo'  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) 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,2039,2063,2066,2067,2074,2033) AND v.idvat IN (0,15),v.vat,0))) 
		WHEN @session.globals.Owner IN ('KONKOL') AND @baza = 'zoo'  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) 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))
		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))
			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))
			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 ('VOLT','ZREMB','LACZPOL','KONKOL') THEN SUM(IF(rv.rv_id_JPK IN (2021) AND v.IdVat=19 ,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') 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') 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') 	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') 	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), 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), 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 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 <> 'RAPORT' THEN
		SELECT COUNT(*) FROM t_vat_s INTO _liczba_wierszy;
		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) 
			FROM t_vat_s INTO _podatek_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,'','','','','','','','','','');
						END IF;
					END LOOP;
				CLOSE c_proc;    
				END;
		ELSE
			UPDATE t_jpk SET xmlpoz1 = CONCAT('<tns:SprzedazWiersz typ="G">\n',
			'<tns:LpSprzedazy>1</tns:LpSprzedazy>\n',
			'<tns:NrKontrahenta>brak</tns:NrKontrahenta>\n',
			'<tns:NazwaKontrahenta>brak</tns:NazwaKontrahenta>\n',
			'<tns:AdresKontrahenta>brak</tns:AdresKontrahenta>\n',
			'<tns:DowodSprzedazy>brak</tns:DowodSprzedazy>\n',
			'<tns:DataWystawienia>',_OdDnia,'</tns:DataWystawienia>\n',
			'</tns:SprzedazWiersz>\n');
		END IF;



		SET _XMLpoz = '';

		SET _XMLpoz = CONCAT(SPACE(@xml.IC*cSL), '<tns:SprzedazCtrl>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<tns:LiczbaWierszySprzedazy>',IF(_liczba_wierszy=0,1,_liczba_wierszy),'</tns:LiczbaWierszySprzedazy>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<tns:PodatekNalezny>',_podatek_s,'</tns:PodatekNalezny>\n');
		SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</tns: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 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,
		SUM(IF(n.rv_id IN (IFNULL(d.D2_1r1, -10), IFNULL(d.D2_1r2, -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)), v.vat,0))
				- IF(n.rv_id IN (IFNULL(d.D2_1r1, -10), IFNULL(d.D2_1r2, -10)),(n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd),0) AS K_44, -- D.2.44 
		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)  ), 
					(IF(@session.globals.Owner IN ('DOS') , v.netto - n.bezodliczen - n.tabwartnetto13, v.netto - n.bezodliczen)), 0)) AS K_45,   -- D.2.45
		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)),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)),
											(n.vat_bez_odliczenia_paliwo + n.vat_bez_odliczenia_pojazd),0) AS K_46,  -- D.2.46
		-- 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)) 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 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_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.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 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 ('ASTE','OFFSHORE') THEN 
			_Rnd2(SUM(IF(rv.rv_id_JPK IN (2030),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))
		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,
		_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))
			OR (@session.globals.Owner IN ('SHIPYARD') AND rv.rv_id_JPK IN (2037))
			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;


	IF @session.globals.Owner IN ('ASEKURACJA') THEN 
		-- SET _proc_struktura = 0.83; -- zrobic odczyt z klucza, wartosc na dany rok
		CALL _IReg_Get('', 'ProcentVAT_struktura', _Year, 'FLOAT', _proc_struktura, '0.83');
		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')
			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 = 'ZN';
		DELETE FROM temp_nag_guid WHERE wyroznik = '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');
		
		ALTER TABLE temp_poz ADD INDEX guid(guid);

		UPDATE temp_poz SET netto = _Rnd2(netto * _proc_struktura) WHERE wyroznik='ZC';
		UPDATE temp_poz SET vat = _Rnd2(netto * valuevat) WHERE wyroznik='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

	END IF;


	IF _Param_A <> 'RAPORT' THEN
		SELECT COUNT(*) FROM t_vat_z INTO _liczba_wierszy;
		SELECT IFNULL(SUM(_Rnd2(K_44 + K_46 + K_47 + K_48 + K_49 + K_50)),0) FROM t_vat_z INTO _podatek_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,'','','','','','','','','','');
					END IF;
					END LOOP;
				CLOSE c_proc;    
			END;
		ELSE
			UPDATE t_jpk SET xmlpoz3 = CONCAT('<tns:ZakupWiersz typ="G">\n',
			'<tns:LpZakupu>1</tns:LpZakupu>\n',
			'<tns:NrDostawcy>brak</tns:NrDostawcy>\n',
			'<tns:NazwaDostawcy>brak</tns:NazwaDostawcy>\n',
			'<tns:AdresDostawcy>brak</tns:AdresDostawcy>\n',
			'<tns:DowodZakupu>brak</tns:DowodZakupu>\n',
			'<tns:DataZakupu>',_OdDnia,'</tns:DataZakupu>\n',
			'<tns:DataWplywu>',_OdDnia,'</tns:DataWplywu>\n',
			'</tns:ZakupWiersz>\n');
		END IF;


		SET _XMLpoz = '';

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

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


		SET _XML := (SELECT CONCAT(xmlnag,xmlpoz1,xmlpoz2,xmlpoz3,xmlpoz4,'</tns:JPK>') FROM t_jpk);
		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";

	END IF; -- _MODE = JPK_VAT2


	IF _MODE = 'JPK_VAT2_ONE_S' THEN

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

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

	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('NAGLOWEK', '', '', '', '', _OdDnia,_DoDnia, '', '', '', '',_MODE);
  -- SET _XMLnag = @_XMLnag;

	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_faktura;
	CREATE TEMPORARY TABLE t_faktura (
	guid VARCHAR(38), 
	rv_id VARCHAR(38),
	-- LpSprzedazy int(11),
	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 VARCHAR(18), -- suma netto stawki podstawowej 23
	P_14_1 VARCHAR(18), -- suma vat stawki podstawowej 23
	P_13_2 VARCHAR(18), -- suma netto stawki obnizonej 8
	P_14_2 VARCHAR(18), -- suma vat stawki obnizonej 8
	P_13_3 VARCHAR(18), -- suma netto stawki obnizonej drugiej 5
	P_14_3 VARCHAR(18), -- suma vat stawki obnizonej drugiej 5
	P_13_4 VARCHAR(18), -- suma netto stawki obnizonej trzeciej - rezerwa
	P_14_4 VARCHAR(18), -- suma vat stawki obnizonej trzeciej - rezerwa
	P_13_5 VARCHAR(18), -- suma netto stawki obnizonej czwartej - rezerwa
	P_14_5 VARCHAR(18), -- suma vat stawki obnizonej trzeciej - rezerwa
	P_13_6 VARCHAR(18), -- 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 VARCHAR(18), -- 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 VARCHAR(18), -- 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_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_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); POZ - pozostałe
	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
	ZALZaplata VARCHAR(18), -- Dla faktury zaliczkowej - otrzymana kwota zapłaty
	ZALPodatek VARCHAR(18), -- Dla faktury zaliczkowej - kwota podatku wyliczona według wzoru z art.106f ust. 1 pkt 3 ustawy
	KEY guid (guid));


	DROP TABLE IF EXISTS t_faktura_poz;
	CREATE TEMPORARY TABLE t_faktura_poz (
	guid_poz VARCHAR(38), -- guid oppo
	guid VARCHAR(38), -- guid opng
	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 VARCHAR(18), -- wartosc netto
	P_11A VARCHAR(18), -- wart brutto
	P_12 VARCHAR(18), -- stawka podatku
	KEY guid_poz (guid_poz),
	KEY guid (guid));



	INSERT INTO t_faktura
	SELECT n.guid, n.rv_id, 
	datawystaw AS P_1,
	nrdokfin AS P_2A,
	REPLACE(REPLACE(kontrnazwa, CHAR(38), ' and '),'<',' ') AS P_3A,
	kontradres AS P_3B,
	REPLACE(REPLACE(kontrnazwa, CHAR(38), ' and '),'<',' ') AS P_3C, -- nazwa sprzedawcy
	kontradres AS P_3D, -- adres sprzedawcy
	IF(LEFT(kontrnip,1) NOT REGEXP '^[0-9]',LEFT(kontrnip,2),'PL') AS P_4A, -- prefiks nipu, symbol kraju
	kontrnip AS P_4B, -- nip
	IF(LEFT(kontrnip,1) NOT REGEXP '^[0-9]',LEFT(kontrnip,2),'PL') 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.netto,'')) AS P_13_1, -- suma netto stawki podstawowej 23
	SUM(IF(v.idvat IN (15),v.vat,'')) AS P_14_1, -- suma vat stawki podstawowej 23
	SUM(IF(v.idvat IN (16),v.netto,'')) AS P_13_2, -- suma netto stawki obnizonej 8
	SUM(IF(v.idvat IN (16),v.vat,'')) P_14_2, -- suma vat stawki obnizonej 8
	SUM(IF(v.idvat IN (8),v.netto,'')) AS P_13_3, -- suma netto stawki obnizonej drugiej 5
	SUM(IF(v.idvat IN (8),v.vat,'')) AS P_14_3, -- suma vat stawki obnizonej drugiej 5
	0 AS P_13_4, -- suma netto stawki obnizonej trzeciej - rezerwa
	0 AS P_14_4, -- suma vat stawki obnizonej trzeciej - rezerwa
	0 AS P_13_5, -- suma netto stawki obnizonej czwartej - rezerwa
	0 AS P_14_5, -- suma vat stawki obnizonej trzeciej - rezerwa
	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.brutto)) 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
	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,
	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) THEN 'VAT'
			WHEN n.rodzaj IN (3,4,85,90) THEN 'KOREKTA' 
			-- WHEN n.rodzaj IN () THEN 'ZAL'
			ELSE 'POZ'
	END AS RodzajFaktury, 
	n.korektatytulem AS PrzyczynaKorekty,
	n.korektanrdokfin AS NrFaKorygowanej,
	IFNULL(n.korektadata,'') AS OkresFaKorygowanej,
	0 AS ZALZaplata,
	0 AS ZALPodatek 
	FROM opng n
	INNER JOIN opng_vat v ON v.idnoper = n.guid
	INNER JOIN operdoc op ON op.rodzaj = n.rodzaj
	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 deleted = 0
	GROUP BY n.guid
	ORDER BY n.datawplywu, n.idn;
	-- limit 5;

	UPDATE t_faktura SET 
			P_4B = IF(LEFT(P_4B,1) NOT REGEXP '^[0-9]',RIGHT(P_4B, LENGTH(P_4B)-1),P_4B),
			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_4B = IF(LEFT(P_4B,1) NOT REGEXP '^[0-9]',RIGHT(P_4B, LENGTH(P_4B)-1),P_4B),
			P_5B = IF(LEFT(P_5B,1) NOT REGEXP '^[0-9]',RIGHT(P_5B, LENGTH(P_4B)-1),P_5B);


	INSERT INTO t10_guid
	SELECT guid, P_2A AS nrfaktury
	FROM t_faktura
	ORDER BY P_2A;
  

	SET @_XMLpoz1 = '';

  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_FA_ONE',_GUID,'','','','','','','','','','');
			END IF;
     END LOOP;
    CLOSE c_proc;    
  END;



	SELECT COUNT(*) FROM t_faktura INTO _liczba_wierszy;
	SELECT REPLACE(SUM(_Rnd2(P_15)),'.',',') FROM t_faktura INTO _wartosc_faktur;
	
	SET _stawka1 = '0.23';
	SET _stawka2 = '0.08';
	SET _stawka3 = '0.05';
	SET _stawka4 = '0.00';
	SET _stawka5 = '0.00';

	SET _XMLpoz = '';

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

	SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<tns:StawkiPodatku>\n');
	SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<tns:Stawka1>',_stawka1,'</tns:Stawka1>\n');	
	SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<tns:Stawka2>',_stawka2,'</tns:Stawka2>\n');	
	SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<tns:Stawka3>',_stawka3,'</tns:Stawka3>\n');	
	SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<tns:Stawka4>',_stawka4,'</tns:Stawka4>\n');	
	SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '<tns:Stawka5>',_stawka5,'</tns:Stawka5>\n');	
	SET _XMLpoz = CONCAT(_XMLpoz, SPACE(@xml.IC*cSL), '</tns:StawkiPodatku>\n');

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


-- sekcja pozycji faktur

	INSERT INTO t_faktura_poz
	SELECT p.guid AS guid_poz, 
	t.guid AS guid,
	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
	_Rnd2(p.wartnet/p.ilosc) AS P_9A, -- cena netto
	_Rnd2(p.wartbrt/p.ilosc) AS P_9B, -- cena brutto
	0 AS P_10, -- rabaty o ile nie sa w cenie netto
	p.wartnet AS P_11, -- wartosc netto
	p.wartbrt AS P_11A, -- wart brutto
	LEFT(REPLACE(ev.shortname,'%',''),2) AS P_12 -- stawka podatku
	
	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
	ORDER BY t.P_2A;

	TRUNCATE t10_guid;
	INSERT INTO t10_guid
	SELECT guid_poz, P_2B AS nrfaktury
	FROM t_faktura_poz
	ORDER BY P_2B;

	SET @_XMLpoz1 = '';

	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_FA_ONE_P',_GUID,'','','','','','','','','','');
			END IF;
     END LOOP;
    CLOSE c_proc;    
  END;




	SELECT COUNT(*) FROM t_faktura_poz INTO _liczba_wierszy;
	SELECT REPLACE(SUM(_Rnd2(P_11)),'.',',') FROM t_faktura_poz INTO _wartosc_faktur;

	SET _XMLpoz = '';

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

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


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

	SET NAMES "cp1250";

END IF; -- JPK_FA

IF (_MODE = 'JPK_FA_ONE') THEN

	SELECT CONCAT('<tns:Faktura typ="G">\n',
		'<tns:P_1>',P_1,'</tns:P_1>\n',
		'<tns:P_2A>',P_2A,'</tns:P_2A>\n',
		'<tns:P_3A>',P_3A,'</tns:P_3A>\n',
		'<tns:P_3B>',P_3B,'</tns:P_3B>\n',
		'<tns:P_3C>',P_3C,'</tns:P_3C>\n',
		'<tns:P_3D>',P_3D,'</tns:P_3D>\n',
		IF(P_4A='','',CONCAT('<tns:P_4A>',P_4A,'</tns:P_4A>\n')),
		IF(P_4B='' OR P_4A<>'PL','',CONCAT('<tns:P_4B>',P_4B,'</tns:P_4B>\n')),
		IF(P_5A='','',CONCAT('<tns:P_5A>',P_5A,'</tns:P_5A>\n')),
		IF(P_5B='' OR P_5A<>'PL','',CONCAT('<tns:P_5B>',P_5B,'</tns:P_5B>\n')),
		'<tns:P_6>',P_6,'</tns:P_6>\n',
		'<tns:P_13_1>',P_13_1,'</tns:P_13_1>\n',
		'<tns:P_14_1>',P_14_1,'</tns:P_14_1>\n',
		'<tns:P_13_2>',P_13_2,'</tns:P_13_2>\n',
		'<tns:P_14_2>',P_14_2,'</tns:P_14_2>\n',
		'<tns:P_13_3>',P_13_3,'</tns:P_13_3>\n',
		'<tns:P_14_3>',P_14_3,'</tns:P_14_3>\n',
		'<tns:P_13_4>',P_13_4,'</tns:P_13_4>\n',
		'<tns:P_14_4>',P_14_4,'</tns:P_14_4>\n',
		'<tns:P_13_5>',P_13_5,'</tns:P_13_5>\n',
		'<tns:P_14_5>',P_14_5,'</tns:P_14_5>\n',
		'<tns:P_13_6>',P_13_6,'</tns:P_13_6>\n',
		'<tns:P_13_7>',P_13_7,'</tns:P_13_7>\n',
		'<tns:P_15>',P_15,'</tns:P_15>\n',
		'<tns:P_16>',P_16,'</tns:P_16>\n',
		'<tns:P_17>',P_17,'</tns:P_17>\n',
		'<tns:P_18>',P_18,'</tns:P_18>\n',
		'<tns:P_19>',P_19,'</tns:P_19>\n',
		'<tns:P_19A>',P_19A,'</tns:P_19A>\n',
		'<tns:P_19B>',P_19B,'</tns:P_19B>\n',
		'<tns:P_19C>',P_19C,'</tns:P_19C>\n',
		'<tns:P_20>',P_20,'</tns:P_20>\n',
		IF(P_20=0,'',CONCAT('<tns:P_20A>',P_20A,'</tns:P_20A>\n')),
		IF(P_20=0,'',CONCAT('<tns:P_20B>',P_20B,'</tns:P_20B>\n')),
		'<tns:P_21>',P_21,'</tns:P_21>\n',
		IF(P_21=0,'',CONCAT('<tns:P_21A>',P_21A,'</tns:P_21A>\n')),
		IF(P_21=0,'',CONCAT('<tns:P_21B>',P_21B,'</tns:P_21B>\n')),
		IF(P_21=0,'',CONCAT('<tns:P_21C>',P_21C,'</tns:P_21C>\n')),
		IF(P_22A='','',CONCAT('<tns:P_22A>',P_22A,'</tns:P_22A>\n')),
		IF(P_22B='','',CONCAT('<tns:P_22B>',P_22B,'</tns:P_22B>\n')),
		IF(P_22C='','',CONCAT('<tns:P_22C>',P_22C,'</tns:P_22C>\n')),
		'<tns:P_23>',P_23,'</tns:P_23>\n',
		'<tns:P_106E_2>',P_106E_2,'</tns:P_106E_2>\n',
		'<tns:P_106E_3>',P_106E_3,'</tns:P_106E_3>\n',
		'<tns:P_106E_3A>',P_106E_3A,'</tns:P_106E_3A>\n',
		'<tns:RodzajFaktury>',RodzajFaktury,'</tns:RodzajFaktury>\n',
		IF(PrzyczynaKorekty='','',CONCAT('<tns:PrzyczynaKorekty>',PrzyczynaKorekty,'</tns:PrzyczynaKorekty>\n')),
		IF(NrFaKorygowanej='','',CONCAT('<tns:NrFaKorygowanej>',NrFaKorygowanej,'</tns:NrFaKorygowanej>\n')),
		IF(OkresFaKorygowanej=0,'',CONCAT('<tns:OkresFaKorygowanej>',OkresFaKorygowanej,'</tns:OkresFaKorygowanej>\n')),
		'<tns:ZALZaplata>',ZALZaplata,'</tns:ZALZaplata>\n',
		'<tns:ZALPodatek>',ZALPodatek,'</tns:ZALPodatek>\n',
		'</tns:Faktura>\n')
	FROM t_faktura WHERE guid = _GUID  INTO @_XMLpoz1;

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

END IF; -- JPK_FA_ONE


IF _MODE = 'JPK_FA_ONE_P' THEN

	SELECT CONCAT('<tns:FakturaWiersz>\n',
		'<tns:P_2B>',P_2B,'</tns:P_2B>\n',
		'<tns:P_7>',P_7,'</tns:P_7>\n',
		'<tns:P_8A>',P_8A,'</tns:P_8A>\n',
		'<tns:P_8B>',P_8B,'</tns:P_8B>\n',
		'<tns:P_9A>',P_9A,'</tns:P_9A>\n',
		'<tns:P_9B>',P_9B,'</tns:P_9B>\n',
		'<tns:P_10>',P_10,'</tns:P_10>\n',
		'<tns:P_11>',P_11,'</tns:P_11>\n',
		'<tns:P_11A>',P_11A,'</tns:P_11A>\n',
		'<tns:P_12>',P_12,'</tns:P_12>\n',
		'</tns:FakturaWiersz>\n')
	FROM t_faktura_poz WHERE guid_poz = _GUID INTO @_XMLpoz1;
	
	UPDATE t_jpk SET xmlpoz3 = CONCAT(xmlpoz3,IFNULL(@_XMLpoz1, 'brak FA_ONE_P'));

END IF; -- JPK_FA_ONE_P





IF _MODE = 'JPK_MAG' THEN
  
	CALL fr_ht_zest_jpk('NAGLOWEK', '', '', '', '', _OdDnia,_DoDnia, '', '', '', '',_MODE);
  

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

	DROP TABLE IF EXISTS t_dok;
	CREATE TEMPORARY TABLE t_dok (
	guid VARCHAR(38), 
	magazyn VARCHAR(100), -- magazyn jest wazny bo grupuje sie dok wg magazynu
	rodzajdok VARCHAR(2), -- rodzaj dokumentu (PZ, WZ, RW, MM)
	Numerdok VARCHAR(50), -- nrdok
	Datadok VARCHAR(10),  -- data wystawienia
	Wartosc VARCHAR(18), 
	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
	KEY guid (guid),
	KEY magazyn (magazyn),
	KEY rodzajdok (rodzajdok));

	DROP TABLE IF EXISTS t_dok_poz;
	CREATE TEMPORARY TABLE t_dok_poz (
	guid_poz VARCHAR(38), -- guid oppo
	guid VARCHAR(38), -- guid opng
	Numer2 VARCHAR(256), -- nr dok PZ
	KodTowaru VARCHAR(256), -- kod/symbol towaru
	NazwaTowaru VARCHAR(256), -- nazwa towaru
	IloscPrzyjeta VARCHAR(18), -- ilosc towaru
	JednostkaMiary VARCHAR(256), -- jednostka miary
	CenaJedn VARCHAR(18), -- cena towaru
	WartoscPozycji VARCHAR(18), -- wart pozycji
	KEY guid_poz (guid_poz),
	KEY guid (guid));

	INSERT INTO t_dok
	SELECT n.guid, 
	IF(n.zmagazynu>0,n.zmagazynu,n.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'
	END AS rodzajdok,
	n.nrdokmag AS numerdok,
	n.datawystaw AS datadok,
	n.brutto AS wartosc,
	n2.kontrnazwa AS dostawca,
	n2.nrdokfin AS numerfa,
	n2.datawystaw AS datafa,
	IF(n.zmagazynu>0,n.zmagazynu,'') AS skad,
	IF(n.domagazynu>0,n.domagazynu,'') AS dokad
	FROM opng n 
	INNER JOIN Magazyny m ON m.idnmagazynu= IF(n.zmagazynu>0,n.zmagazynu,n.domagazynu)
	LEFT JOIN opng n2 ON n2.guid=n.idnwz
	WHERE n.rodzaj IN (9,10,11,12) -- MM, WZ, RW, PZ
	AND datawplywu >= _OdDnia AND datawplywu <= _DoDnia
	AND deleted = 0
	GROUP BY n.guid
	ORDER BY n.datawplywu, n.idn;

-- sekcja pozycji dok
	INSERT INTO t_dok_poz
	SELECT p.guid AS guid_poz, 
	t.guid AS guid,
	t.nrdok 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
	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;


-- naglowki i pozycje, najpierw mag, potem: PZ, pozycje, WZ, pozycje, RW, pozycje, MM, pozycje
-- po nagłowkach podsumowania, po pozycjach też

	TRUNCATE t10_guid;
	INSERT INTO t10_guid
	SELECT guid_poz, t.numer2 AS nrfaktury
	FROM t_dok_poz
	ORDER BY P_2B;

















	INSERT INTO t10_guid
	SELECT guid, P_2A AS nrfaktury
	FROM t_faktura
	ORDER BY P_2A;
  

	SET @_XMLpoz1 = '';

  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_DOK_ONE',_GUID,'','','','','','','','','','');
			END IF;
     END LOOP;
    CLOSE c_proc;    
  END;








/*

PZCtrl 
LiczbaPZ
SumaPZ



WZ sa identyczne

RW, MM - brak kilku kolumn, zamiast tego skad-dokad



*/

























END IF; -- JPK_MAG


IF _MODE = 'JPK_MAG_ONE' THEN

	SELECT CONCAT('<tns:FakturaWiersz>\n',
		'<tns:P_2B>',P_2B,'</tns:P_2B>\n',
		'<tns:P_7>',P_7,'</tns:P_7>\n',
		'<tns:P_8A>',P_8A,'</tns:P_8A>\n',
		'<tns:P_8B>',P_8B,'</tns:P_8B>\n',
		'<tns:P_9A>',P_9A,'</tns:P_9A>\n',
		'<tns:P_9B>',P_9B,'</tns:P_9B>\n',
		'<tns:P_10>',P_10,'</tns:P_10>\n',
		'<tns:P_11>',P_11,'</tns:P_11>\n',
		'<tns:P_11A>',P_11A,'</tns:P_11A>\n',
		'<tns:P_12>',P_12,'</tns:P_12>\n',
		'</tns:FakturaWiersz>\n')
	FROM t_dok WHERE guid = _GUID INTO @_XMLpoz1;
	
	UPDATE t_jpk SET xmlpoz3 = CONCAT(xmlpoz3,IFNULL(@_XMLpoz1, 'brak MAG_ONE'));

END IF; -- JPK_MAG_ONE




IF _MODE = 'JPK_MAG_ONE_P' THEN

	SELECT CONCAT('<tns:FakturaWiersz>\n',
		'<tns:P_2B>',P_2B,'</tns:P_2B>\n',
		'<tns:P_7>',P_7,'</tns:P_7>\n',
		'<tns:P_8A>',P_8A,'</tns:P_8A>\n',
		'<tns:P_8B>',P_8B,'</tns:P_8B>\n',
		'<tns:P_9A>',P_9A,'</tns:P_9A>\n',
		'<tns:P_9B>',P_9B,'</tns:P_9B>\n',
		'<tns:P_10>',P_10,'</tns:P_10>\n',
		'<tns:P_11>',P_11,'</tns:P_11>\n',
		'<tns:P_11A>',P_11A,'</tns:P_11A>\n',
		'<tns:P_12>',P_12,'</tns:P_12>\n',
		'</tns:FakturaWiersz>\n')
	FROM t_dok_poz WHERE guid_poz = _GUID INTO @_XMLpoz1;
	
	UPDATE t_jpk SET xmlpoz3 = CONCAT(xmlpoz3,IFNULL(@_XMLpoz1, 'brak MAG_ONE_P'));

END IF; -- JPK_MAG_ONE_P














IF (_MODE IN ('JPK_PKPIR')) THEN
  
	CALL fr_ht_zest_jpk('NAGLOWEK', '', '', '', '', _OdDnia,_DoDnia, '', '', '', '',_MODE);
	CALL fr_ht_zest_jpk('NAGLOWEK2', '', '', '', '', _OdDnia,_DoDnia, '', '', '', '',_MODE);

  SET _XMLnag = CONCAT(@_XMLnag,'\n',@_XMLnag2);

	DROP TABLE IF EXISTS t_guid;
	CREATE TEMPORARY TABLE t_guid (guid VARCHAR(38), KEY guid (guid));
	

	SET _S = CONCAT('insert into t_guid ',
		CASE WHEN _MODE = 'JPK_PKPIR' THEN
			'SELECT DISTINCT guid FROM opng WHERE kolumnaKPR <> 0 AND deleted = 0 AND MONTH(datawplywu) = MONTH("#_OdDnia#") AND YEAR(datawplywu) = YEAR("#_DoDnia#") ORDER BY LpKpr, datawplywu
						limit 10'
			WHEN _MODE = 'JPK_VAT' THEN
			'SELECT DISTINCT guid FROM opng WHERE rv_id=2021 AND deleted = 0 AND datawplywu >= "#_OdDnia#" AND datawplywu <= "#_DoDnia#" ORDER BY datawplywu
						limit 10'
		END);
	
	SET _S =	REPLACE(_S, '#_OdDnia#', _OdDnia);
	SET _S =	REPLACE(_S, '#_DoDnia#', _DoDnia);

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



  

  BEGIN
    DECLARE done BOOL DEFAULT FALSE;
    DECLARE _GUID VARCHAR(38) DEFAULT '';
    DECLARE c_proc CURSOR FOR
    SELECT guid FROM t_guid;
		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(CONCAT(_MODE,'_ONE'),_GUID,'','','','','','','','','','');
				SET _XMLpoz = CONCAT(_XMLpoz,@_XMLpoz);
			END IF;
     END LOOP;
    CLOSE c_proc;
     
  END;

		SET _XML := CONCAT(_XMLnag,@_XMLpoz);

		SELECT _XML;


	END IF; -- _MODE = JPK_PKPIR

/*
IF _MODE = 'JPK_PKPIR_ONE' THEN
--     IF _PARAM_C like '%DEBUG%' THEN
--      SELECT _ID;
--     END IF;
    SELECT CONCAT( _XML,'\t<invoice>\n\t\t<debtor>\n\t\t\t<number>',if(k.numer_na_trasie<>0,_VarStr(k.numer_na_trasie),'1'),'</number>\n\t\t\t<name>',k.nazwa,'</name>\n\t\t</debtor>\n\t\t<amount>',_VarStr(_Rnd2(n.brutto)),
    '</amount>\n\t\t<number>',n.nrdokfin,'</number>\n\t\t',
    if(n.rodzaj in (3,4),CONCAT('<corrNumber>',n.korektanrdokfin,'</corrNumber>\n\t\t'),''),
    '<date>',n.datawystaw,'</date>\n\t\t<dueDate>',n.dataplatnosci,'</dueDate>\n\t</invoice>\n') 
    FROM opng n, kontrah k WHERE n.kontrguid=k.guid AND n.guid=_ID INTO _XML;




		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;

END IF; -- _MODE = KPIR_ONE
*/


-- pomocnicze
/*
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_VAT2', '', '', '', '', '2017-05-01','2017-05-31', '', '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 ;




