 DELIMITER $$

DROP PROCEDURE IF EXISTS `fr_ht_zest`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `fr_ht_zest`(
    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 _WHERE_SQL TEXT,
    IN _Param_A VARCHAR(50),
    IN _Param_B VARCHAR(50),
    IN _Param_C VARCHAR(50),
    IN _Param_D VARCHAR(50)
    )
SPROC: BEGIN
    DECLARE _S TEXT DEFAULT '';
    DECLARE _WHERE TEXT DEFAULT '';
    DECLARE _DataBO, _DataOd DATE;
    DECLARE _st01,_st02,_st03,_st04,_st05,_st06,_st07,_st08,_st09,_st10 DOUBLE(10,4); -- stawki dla KR
    DECLARE _datasprzed INT; -- klucz dla rodzaju dat branych na wydruk, domyslnie datawplywu
    
    DECLARE _XML LONGTEXT;

    SET _WHERE_SQL = IFNULL(_WHERE_SQL, '');
    SET _GUID = IFNULL(_GUID, '');

    

/*
Procedura zbierajaca rozne zestawienia wykonywane w programie ht (analogicznie jak w placach i produkcji)

_MODE = 'SERWIS.ROZLICZENIE' - zestawienie zerwisowe dla Wegi, przygotowanie danych, tabeli pomocniczej, pod wydruk
				podawane parametry to tylko zakres dat, tabela jest naliczana dla wszystkich kontrahentow od zera
				istotne jest wylapanie instancji (ciuchow) serwisowanych w danym okresie czasu, czyli po wydaniu i bez zwrotow i depozytow
_MODE = 'DEPOZYTY' - wyliczenie ile dni dany towar przebywal w depozycie w danym okresie czasu
 
 CALL fr_ht_zest('SERWIS.ROZLICZENIE','',2013,5,'','','','','','','','');
 CALL fr_ht_zest('SERWIS.ROZLICZENIE','{250A3617-7AF8-462F-A3A9-7367BE058F9D}',2013,5,'','','','','','','','');
 CALL fr_ht_zest('SERWIS.ROZLICZENIE','5890006529',2013,6,'','','','','','','','');  - kasacja

 CALL fr_ht_zest('SERWIS.ROZLICZENIE','{ED51A4A7-A66B-499A-BCD0-4CFD4E68627C}',2013,8,'','','','','','','','');
 CALL fr_ht_zest('SERWIS.ROZLICZENIE','{8EAE6B9B-D4DE-4C0E-8622-FA2B3BE36312}',2013,10,'','','','','','','','');
 
 CALL fr_ht_zest('ZEST_SUM_OBR_ZA_OKR', '', '', '', '', '2014-11-05','2015-11-05', '', '', '', '-1','1');

 
 CALL fr_ht_zest('KPIR', '', '', '', '', '2022-07-01','2022-07-31', '', '', '', '-1','1'); // ksiazka przychodow i rozchodow
*/

IF (_MODE = 'KR') THEN -- ksiega ryczaltowa

	SET _DataOd = CONCAT(YEAR(_DoDnia),'-01-01');
	SET _st01 = 0.03;

	select
	'fr_ht_zest_KR' AS fr_ht_zest_KR,
	YEAR(_DoDnia) AS rok,
	MONTH(n.datawplywu) AS mc,
	-- SUM(_Rnd2(_st01 * n.netto)) AS p01,
	-- zmiana po rozmowie z panią MM z formento, tutaj maja byc pelne kwoty, tylko grupowane wg stawek
	SUM(_Rnd2(n.netto)) AS p01,

	0 AS p02, 0 AS p03, 0 AS p04, 0 AS p05, 0 AS p06, 0 AS p07, 0 AS p08, 0 AS p09,

	SUM(_Rnd2(n.netto)) AS prazem,
	sum(n.netto) as netto
	from opng n
	where deleted = 0 AND kolumnaKPR <> 0
	and datawplywu between _DataOd and _DoDnia
	and rodzaj in (0,1,2,3,50,80,85,90)
	GROUP BY MONTH(n.datawplywu)
	order by mc;


END IF; -- MODE = 'KR'

IF (_MODE = 'KPIR') THEN

	IF _OdDnia >= '2026-01-01' THEN

	SELECT valueb
	into _datasprzed
	from IReg where idkey = 'KPiR_zest_wg_datasprzed' limit 1;

		SELECT
			'fr_ht_zest_KPIR' AS fr_ht_zest_KPIR,
			LpKpr,
			if(_datasprzed=1, datasprzed, datawplywu) as datawplywu,
			-- datawplywu,
			numerKSeF,
			nrDokfin,
			kontrnip,
			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,IF(koszty_sam_KPR<>0,koszty_sam_KPR,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd),0) AS col12,
			IF (kolumnaKPR = 13,IF(koszty_sam_KPR<>0,koszty_sam_KPR,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd),0) AS col13,
			IF (kolumnaKPR = 14,IF(koszty_sam_KPR<>0,koszty_sam_KPR,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
			IF (kolumnaKPR = 16, _varStr(_Rnd2(netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd)), '') AS uwagi
		FROM
			opng
		WHERE kolumnaKPR <> 0 AND deleted = 0
		AND MONTH(if(_datasprzed=1, datasprzed, datawplywu)) = MONTH(_OdDnia) AND YEAR(if(_datasprzed=1, datasprzed, datawplywu)) = YEAR(_DoDnia)
		ORDER BY
			LpKpr, if(_datasprzed=1, datasprzed, datawplywu)
		;

		IF (_GUID = 'NARAST') THEN  -- # 45054
			SELECT DataBO INTO @fr.DataBO FROM lata_obrachunkowe WHERE _OdDnia BETWEEN DataBO AND DataBZ;
			DROP TEMPORARY TABLE IF EXISTS t_kpir_narast;
			CREATE TEMPORARY TABLE t_kpir_narast AS
			SELECT -- LpKpr, datawplywu, nrDokfin, kontrnazwa, kontradres, 		opis,
				_OdDnia AS od_dnia, _DoDnia AS do_dnia,
				SUM(IF (kolumnaKPR = 7,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd, 0)) AS col7,
				SUM(IF (kolumnaKPR = 8,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd, 0)) AS col8,
				SUM(IF (kolumnaKPR = 10,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0)) AS col10,
				SUM(IF (kolumnaKPR = 11,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0)) AS col11,
				SUM(IF (kolumnaKPR = 12,IF(koszty_sam_KPR<>0,koszty_sam_KPR,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd),0)) AS col12,
				SUM(IF (kolumnaKPR = 13,IF(koszty_sam_KPR<>0,koszty_sam_KPR,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd),0)) AS col13,
				SUM(IF (kolumnaKPR = 14,IF(koszty_sam_KPR<>0,koszty_sam_KPR,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd),0)) AS col14,
				SUM(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 kolumnaKPR <> 0 AND deleted = 0
			-- AND MONTH(datawplywu) = MONTH(_OdDnia) AND YEAR(datawplywu) = YEAR(_DoDnia)
			-- AND datawplywu BETWEEN @fr.DataBO AND _varDATE(_DoDnia);
		-- AND datawplywu >= @fr.DataBO AND datawplywu < _varDATE(_OdDnia);
		AND if(_datasprzed=1, datasprzed, datawplywu) >= @fr.DataBO AND if(_datasprzed=1, datasprzed, datawplywu) <= _varDATE(_DoDnia);

		END IF;

	END IF; -- _OdDnia >= '2026-02-01'


	IF _OdDnia >= '2023-01-01' AND _OdDnia < '2026-01-01' THEN

		SELECT
			'fr_ht_zest_KPIR' AS fr_ht_zest_KPIR,
			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,IF(koszty_sam_KPR<>0,koszty_sam_KPR,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd),0) AS col12,
			IF (kolumnaKPR = 13,IF(koszty_sam_KPR<>0,koszty_sam_KPR,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd),0) AS col13,
			IF (kolumnaKPR = 14,IF(koszty_sam_KPR<>0,koszty_sam_KPR,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 kolumnaKPR <> 0 AND deleted = 0
		AND MONTH(datawplywu) = MONTH(_OdDnia) AND YEAR(datawplywu) = YEAR(_DoDnia)
		ORDER BY
			LpKpr, datawplywu
		;

		IF (_GUID = 'NARAST') THEN  -- # 45054
			SELECT DataBO INTO @fr.DataBO FROM lata_obrachunkowe WHERE _OdDnia BETWEEN DataBO AND DataBZ;
			DROP TEMPORARY TABLE IF EXISTS t_kpir_narast;
			CREATE TEMPORARY TABLE t_kpir_narast AS
			SELECT -- LpKpr, datawplywu, nrDokfin, kontrnazwa, kontradres, 		opis,
				_OdDnia AS od_dnia, _DoDnia AS do_dnia,
				SUM(IF (kolumnaKPR = 7,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd, 0)) AS col7,
				SUM(IF (kolumnaKPR = 8,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd, 0)) AS col8,
				SUM(IF (kolumnaKPR = 10,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0)) AS col10,
				SUM(IF (kolumnaKPR = 11,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0)) AS col11,
				SUM(IF (kolumnaKPR = 12,IF(koszty_sam_KPR<>0,koszty_sam_KPR,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd),0)) AS col12,
				SUM(IF (kolumnaKPR = 13,IF(koszty_sam_KPR<>0,koszty_sam_KPR,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd),0)) AS col13,
				SUM(IF (kolumnaKPR = 14,IF(koszty_sam_KPR<>0,koszty_sam_KPR,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd),0)) AS col14,
				SUM(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 kolumnaKPR <> 0 AND deleted = 0
			-- AND MONTH(datawplywu) = MONTH(_OdDnia) AND YEAR(datawplywu) = YEAR(_DoDnia)
			-- AND datawplywu BETWEEN @fr.DataBO AND _varDATE(_DoDnia);
		AND datawplywu >= @fr.DataBO AND datawplywu < _varDATE(_OdDnia);
		END IF;

	END IF;
	
	IF _OdDnia < '2023-01-01' THEN
	-- to jest starsza wersja, ktora wstawia pelna kwote netto do kolumn col12, col13, col14

		SELECT
		'fr_ht_zest_KPIR' AS fr_ht_zest_KPIR,
		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 kolumnaKPR <> 0 AND deleted = 0
		AND MONTH(datawplywu) = MONTH(_OdDnia) AND YEAR(datawplywu) = YEAR(_DoDnia)
		ORDER BY
			LpKpr, datawplywu
		;

		IF (_GUID = 'NARAST') THEN  -- # 45054
			SELECT DataBO INTO @fr.DataBO FROM lata_obrachunkowe WHERE _OdDnia BETWEEN DataBO AND DataBZ;
			DROP TEMPORARY TABLE IF EXISTS t_kpir_narast;
			CREATE TEMPORARY TABLE t_kpir_narast AS
			SELECT -- LpKpr, datawplywu, nrDokfin, kontrnazwa, kontradres, 		opis,
				_OdDnia AS od_dnia, _DoDnia AS do_dnia,
				SUM(IF (kolumnaKPR = 7,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd, 0)) AS col7,
				SUM(IF (kolumnaKPR = 8,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd, 0)) AS col8,
				SUM(IF (kolumnaKPR = 10,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0)) AS col10,
				SUM(IF (kolumnaKPR = 11,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0)) AS col11,
				SUM(IF (kolumnaKPR = 12,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0)) AS col12,
				SUM(IF (kolumnaKPR = 13,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0)) AS col13,
				SUM(IF (kolumnaKPR = 14,netto+bezodliczen+vat_bez_odliczenia_paliwo+vat_bez_odliczenia_pojazd,0)) AS col14,
				SUM(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 kolumnaKPR <> 0 AND deleted = 0
			-- AND MONTH(datawplywu) = MONTH(_OdDnia) AND YEAR(datawplywu) = YEAR(_DoDnia)
			-- AND datawplywu BETWEEN @fr.DataBO AND _varDATE(_DoDnia);
		AND datawplywu >= @fr.DataBO AND datawplywu < _varDATE(_OdDnia);
		END IF;

	END IF;

END IF;  -- _MODE = 'KPIR'
	
	IF (_MODE = 'ZEST_SUM_OBR_ZA_OKR') THEN  -- "Zestawienie sumaryczne obrotow za okres od...."  CScenPRN_ZESTSUMARYCZNEOBRZAOKR = 'ZEST_SUM_OBR_ZA_OKR'
		
		-- _Param_C <= MagazynId (-1 = "wszystkie magazyny")
		-- _Param_D <= 'Uslugi  [0,1]
		
		SET @obr.magID = _VarINT(_Param_C);
		SET @obr.usl   = _VarINT(_Param_D);
		
		SELECT 
			IFNULL(MAX(datawplywu),'0000-00-00') AS datawp INTO _DataBO
		FROM 
			oppo 
		WHERE rodzaj = 51 AND datawplywu <= _OdDnia
		;
						
		DROP TEMPORARY TABLE IF EXISTS t_zest_ng;
		CREATE TEMPORARY TABLE t_zest_ng AS
		SELECT  
			SUM(IF( (o.datawplywu < _OdDnia) OR (o.datawplywu= _DataBO AND o.rodzaj=51), om.ilosc, 0)) AS ilbo,  
			SUM(IF( (o.datawplywu < _OdDnia) OR (o.datawplywu= _DataBO AND o.rodzaj=51), IF(om.przychod,o.wartmag,-o.wartmag), 0)) AS wartbo,  
			SUM(om.ilosc) AS ilbz,  SUM(IF(om.przychod,o.wartmag,-o.wartmag)) AS wartbz  
		FROM oppo_mag om  
		JOIN oppo o ON o.guid = om.guid  
		WHERE om.datawplywu BETWEEN _DataBO AND _DoDnia
		  AND om.tymczasowa = 0
		  AND o.usluga IN(0, @obr.usl)
		  AND IF(@obr.magID = -1, TRUE, om.magazyn = @obr.magID)
		;
		  
		DROP TEMPORARY TABLE IF EXISTS t_zest_poz;
	IF(@session.globals.Owner IN ('WEGA')) 
		-- dla WEGI �eby w zestawieniu nie by�o dokument�w instanycjnych
	THEN
		CREATE TEMPORARY TABLE t_zest_poz AS  
		SELECT  
		   om.przychod, 
		   CONCAT(t.nazwa, 
		   IF(o.rodzaj=9, 
		   IF(om.przychod,CONCAT(' z mag.', o.zmagazynu), CONCAT(' do mag.', o.domagazynu)), ''), 
		   IF(o.rodzaj IN (10,12) AND idnwz='', ' niefakturowane ', '')) AS rodzaj_nazwa,  -- maks # 08685
		   SUM(IF(om.przychod, om.ilosc, 0)) AS ilp, 
		   SUM(IF(om.przychod, 0, -om.ilosc)) AS ilr, 
		   SUM(IF(om.przychod, o.wartmag, 0)) AS wmp, 
		   SUM(IF(om.przychod, 0, o.wartmag)) AS wmr, 
		   SUM(IF(om.przychod XOR (o.rodzaj IN (3,4,7,8)), o.wartnet, 0)) AS wnp, 
		   SUM(IF(om.przychod XOR (o.rodzaj IN (3,4,7,8)), 0, o.wartnet)) AS wnr 
		FROM oppo_mag om 
		JOIN oppo o ON o.guid = om.guid 
		LEFT JOIN operdoc_typy t ON t.rodzaj=o.rodzaj AND t.typ = o.rodzaj_typ 
		LEFT JOIN operdoc d ON t.rodzaj=d.rodzaj 
		WHERE o.rodzaj <> 51 
			 AND om.datawplywu BETWEEN _OdDnia AND _DoDnia   -- od ... do
			 AND o.usluga IN(0, @obr.usl)
			 AND om.tymczasowa = 0
			 AND IF(@obr.magID = -1, TRUE, om.magazyn = @obr.magID)
		GROUP BY om.przychod, rodzaj_nazwa 
		ORDER BY om.przychod DESC, d.grupa, rodzaj_nazwa;
		
	ELSE
		
		CREATE TEMPORARY TABLE t_zest_poz AS  
		SELECT  
		   om.przychod, 
		   CONCAT(t.nazwa, 
		   IF(o.rodzaj=9, 
		   IF(om.przychod,CONCAT(' z mag.', o.zmagazynu), CONCAT(' do mag.', o.domagazynu)), ''), 
		   IF(o.rodzaj IN (10,12) AND idnwz='', ' niefakturowane ', '')) AS rodzaj_nazwa,  -- maks # 08685
		   SUM(IF(om.przychod, om.ilosc, 0)) AS ilp, 
		   SUM(IF(om.przychod, 0, -om.ilosc)) AS ilr, 
		   SUM(IF(om.przychod, o.wartmag, 0)) AS wmp, 
		   SUM(IF(om.przychod, 0, o.wartmag)) AS wmr, 
		   SUM(IF(om.przychod XOR (o.rodzaj IN (3,4,7,8)), o.wartnet, 0)) AS wnp, 
		   SUM(IF(om.przychod XOR (o.rodzaj IN (3,4,7,8)), 0, o.wartnet)) AS wnr 
		FROM oppo_mag om 
		JOIN oppo o ON o.guid = om.guid 
		LEFT JOIN operdoc_typy t ON t.rodzaj=o.rodzaj -- AND t.typ = o.rodzaj_typ -- ( RG :tak przeszlo z delphi nikt nie pamieta po co)
		LEFT JOIN operdoc d ON t.rodzaj=d.rodzaj 
		WHERE o.rodzaj <> 51 
			 AND om.datawplywu BETWEEN _OdDnia AND _DoDnia   -- od ... do
			 AND om.tymczasowa = 0
			 AND o.usluga IN(0, @obr.usl)
			 AND IF(@obr.magID = -1, TRUE, om.magazyn = @obr.magID)
		GROUP BY om.przychod, rodzaj_nazwa 
		ORDER BY om.przychod DESC, d.grupa, rodzaj_nazwa;
		END IF;	
		
		
	END IF;  -- _MODE = 'ZEST_SUM_OBR_ZA_OKR'
	

    IF (_MODE = 'SERWIS.ROZLICZENIE') THEN
	
		-- kontrahenci, dla ktorych naliczono juz fakture
		DROP TABLE IF EXISTS t_rozliczone;
		CREATE TEMPORARY TABLE t_rozliczone AS 
		SELECT DISTINCT GUID_kontrah AS GUID, oddzial FROM temp_serwis_rozliczenie 
		WHERE rok = _Rok AND miesiac = _miesiac AND idnoper <> ''
			AND IF(_GUID = '', TRUE, GUID_kontrah = _GUID);

        -- tabela z guidami kontrahentow, dla ktorych robione jest zestawienie 
		-- uzupelniona danymi wczesniejszych kontrahentow (jezeli byly przejscia)
		DROP TABLE IF EXISTS tt_kontrah;
		CREATE TEMPORARY TABLE tt_kontrah (GUID VARCHAR(38) NOT NULL DEFAULT '', KEY `GUID` (`GUID`));

		INSERT INTO tt_kontrah
		SELECT GUID 
		FROM kontrah
		WHERE 
		  IF(_GUID = '', TRUE, GUID = _GUID)
		  AND deleted = 0 
		  AND serwis_rozlicz = 1 AND GUID NOT IN (SELECT GUID FROM t_rozliczone) ;

 		INSERT INTO tt_kontrah
		SELECT kp.guid_kontr_pop 
		FROM kontrah_przejscie kp 
		INNER JOIN kontrah k ON k.GUID=kp.guid_kontr_nast
		WHERE k.GUID = _GUID AND k.deleted = 0 AND k.serwis_rozlicz = 1 AND GUID NOT IN (SELECT GUID FROM t_rozliczone) ;

/*		
		SET _OdDnia = CONCAT(_rok,'-',_miesiac,'-15');
		SET _DoDnia = DATE_ADD(LAST_DAY(_OdDnia), INTERVAL 14 DAY);
*/
		SET _DoDnia = CONCAT(_rok,'-',IF(LENGTH(_miesiac)=1,CONCAT('0',_miesiac),_miesiac),'-15');
		SET _OdDnia = DATE_ADD(DATE_ADD(CONCAT(_rok,'-',_miesiac,'-01'), INTERVAL -1 MONTH), INTERVAL 15 DAY);  

		SET @a1 = _DoDnia;
		SET @a2 = _OdDnia;

# przygotowanie zawezonej tabeli opng, dodatkowo z przekodowanymi kontrahentami
		DROP TABLE IF EXISTS tt_opng;
		CREATE TEMPORARY TABLE tt_opng LIKE opng;
		INSERT INTO tt_opng
		SELECT n.*
		FROM opng n		
		INNER JOIN tt_kontrah tk ON tk.GUID=n.kontrGUID
		WHERE n.datawystaw<=_DoDnia 
		AND ((n.rodzaj=47 AND n.rodzaj_typ IN (0,1,2))  OR (n.rodzaj=9 AND n.rodzaj_typ=3)  
		OR (n.rodzaj=46 AND n.rodzaj_typ=3) OR (n.rodzaj=9 AND n.rodzaj_typ=1 AND n.domagazynu IN (15,34)) 
		OR (n.rodzaj=46 AND n.rodzaj_typ=1 AND n.domagazynu IN (15,34)))
		;

# kasacje wszystkie, bo bez kontrahentow
		INSERT INTO tt_opng
		SELECT n.*
		FROM opng n		
		WHERE n.datawystaw<=_DoDnia 
		AND (n.rodzaj=11 AND n.rodzaj_typ=1) 
		;



		UPDATE tt_opng tt, kontrah_przejscie kp
		SET tt.kontrGUID = kp.guid_kontr_nast
		WHERE tt.kontrGUID = kp.guid_kontr_pop;


# zawezona tabela oppo_instancje
		DROP TABLE IF EXISTS tt_oppo_instancje;
		CREATE TEMPORARY TABLE tt_oppo_instancje LIKE oppo_instancje;
		INSERT INTO tt_oppo_instancje
		SELECT oi.*
		FROM oppo_instancje oi
		INNER JOIN oppo o ON o.guid=oi.guid_oppo
		INNER JOIN tt_opng n ON n.GUID=o.idnoper
		INNER JOIN tt_kontrah tk ON tk.GUID=n.kontrGUID
		WHERE n.datawystaw<=_DoDnia AND oi.deleted=0 AND oi.guid_instancji<>'' AND oi.ilosc <> 0 AND oi.ignoruj_rozlicz_serwisu = 0
		AND ((n.rodzaj=47 AND n.rodzaj_typ IN (0,1,2)) OR (n.rodzaj=11 AND n.rodzaj_typ=1) OR (n.rodzaj=9 AND n.rodzaj_typ=3)  
		OR (n.rodzaj=46 AND n.rodzaj_typ=3) OR (n.rodzaj=9 AND n.rodzaj_typ=1 AND n.domagazynu IN (15,34)) OR (n.rodzaj=46 AND n.rodzaj_typ=1 AND n.domagazynu IN (15,34)))
		;

		DROP TABLE IF EXISTS tt_instancje;
		CREATE TEMPORARY TABLE tt_instancje
		SELECT oi.guid_instancji AS GUID_instancji, 
		MAX(IF(n.rodzaj=47 AND n.rodzaj_typ IN (1,2),
		   CONCAT(LPAD(n.datasprzed,10,' '),':',LPAD(n.lpkpr+100,3,'0'),':',LPAD(n.idn,10,' ')),
		  '1901-01-01:00:0000000000')) AS max_data_lpkpr_idn, 
		REPEAT(' ',10) AS data_wydania, _varint(0) AS lpkpr, _varint(0) AS idn,
		MAX(IF((n.rodzaj=11 AND n.rodzaj_typ=1) OR (n.rodzaj=9 AND n.rodzaj_typ=3 ),n.datasprzed,'')) AS data_kasacji,
		REPEAT(' ',38) AS GUID_kontrah,
		REPEAT(' ',38) AS GUID_oppo_instancji,
		REPEAT(' ',38) AS osobaguid,
		'2100-01-01' AS data_zwrotu
		FROM tt_oppo_instancje oi
		INNER JOIN oppo o ON o.guid=oi.guid_oppo
		INNER JOIN tt_opng n ON n.GUID=o.idnoper
		INNER JOIN tt_kontrah tk ON tk.GUID=n.kontrGUID
		WHERE n.datawystaw<=_DoDnia AND oi.deleted=0 AND oi.guid_instancji<>''  AND oi.ilosc <> 0 AND oi.ignoruj_rozlicz_serwisu = 0
		AND ((n.rodzaj=47 AND n.rodzaj_typ IN (1,2)) OR (n.rodzaj=11 AND n.rodzaj_typ=1) OR (n.rodzaj=9 AND n.rodzaj_typ=3))
		GROUP BY guid_instancji
		;

		ALTER TABLE tt_instancje ADD INDEX GUID_instancji(GUID_instancji),
		ADD INDEX GUID_kontrah(GUID_kontrah),
		ADD INDEX data_wydania(data_wydania),
		ADD INDEX max_data_lpkpr_idn(max_data_lpkpr_idn);

		UPDATE tt_instancje 
		SET data_wydania = MID(max_data_lpkpr_idn, 1,10), lpkpr = MID(max_data_lpkpr_idn, 12,3)-100, idn = MID(max_data_lpkpr_idn, 17,10);


# kasacje bez kontrahenta (a takich jest wiekszosc)

		DROP TABLE IF EXISTS tt_instancje_kas;
		CREATE TEMPORARY TABLE tt_instancje_kas
		SELECT oi.guid_instancji AS GUID_instancji, 	

		MAX(IF((n.rodzaj=11 AND n.rodzaj_typ=1) OR (n.rodzaj=9 AND n.rodzaj_typ=3 ),n.datasprzed,'')) AS data_kasacji

		FROM oppo_instancje oi
		INNER JOIN oppo o ON o.guid=oi.guid_oppo
		INNER JOIN tt_opng n ON n.GUID=o.idnoper
		WHERE n.datawystaw<=_DoDnia AND oi.deleted=0 AND oi.guid_instancji<>''  AND oi.ilosc <> 0 -- tu nie sprawdzamy czy ten egz ma byc brany do rozliczen bo dla kasacji nie ma to znaczenia
		AND ((n.rodzaj=11 AND n.rodzaj_typ=1) OR (n.rodzaj=9 AND n.rodzaj_typ=3))
		GROUP BY guid_instancji
		;

		ALTER TABLE tt_instancje_kas ADD INDEX GUID_instancji(GUID_instancji);

		UPDATE tt_instancje tt, tt_instancje_kas tt2
		SET tt.data_kasacji = tt2.data_kasacji
		WHERE tt.guid_instancji = tt2.guid_instancji
		;

		DELETE FROM tt_instancje WHERE (data_kasacji < _OdDnia AND data_kasacji<>'') OR data_wydania='1901-01-01';

# wydania
	 UPDATE tt_instancje t, tt_oppo_instancje oi, oppo o, tt_opng n
	 SET t.GUID_kontrah = n.kontrGUID,
		  t.GUID_oppo_instancji = oi.guid
	 WHERE n.datawystaw=t.data_wydania AND t.GUID_instancji=oi.guid_instancji
	 AND oi.deleted=0  AND oi.ilosc <> 0 AND n.rodzaj=47 AND n.rodzaj_typ IN (1,2) AND oi.ignoruj_rozlicz_serwisu = 0
	 AND n.GUID=o.idnoper AND o.guid=oi.guid_oppo;

#zwroty 
	 DROP TABLE IF EXISTS tt2_instancje;
	 CREATE TEMPORARY TABLE tt2_instancje -- tabela ze zwrotami
	 SELECT oi.guid_instancji AS GUID_instancji, 	 
	 MAX(CONCAT(LPAD(n.datasprzed,10,' '),':',LPAD(n.lpkpr+100,3,'0'),':',LPAD(n.idn,10,' '))) AS max_data_lpkpr_idn, 
	 REPEAT(' ',10) AS data_zwrotu, _varint(0) AS lpkpr, _varint(0) AS idn, 
	 tt.GUID_kontrah AS GUID_kontrah
	 FROM tt_oppo_instancje oi
	 INNER JOIN oppo o ON o.guid=oi.guid_oppo
	 INNER JOIN tt_opng n ON n.GUID=o.idnoper
	 INNER JOIN tt_kontrah tk ON tk.GUID=n.kontrGUID
	 INNER JOIN tt_instancje tt ON tt.guid_instancji=oi.guid_instancji AND tt.GUID_kontrah=n.kontrGUID
	 WHERE n.datawystaw>=tt.data_wydania AND 
	 oi.deleted=0  AND oi.ilosc <> 0 AND oi.guid_instancji<>''  AND oi.ignoruj_rozlicz_serwisu = 0
	 AND ((n.rodzaj=46 AND n.rodzaj_typ=3) OR (n.rodzaj=9 AND n.rodzaj_typ=1 AND n.domagazynu IN (15,34)) OR (n.rodzaj=46 AND n.rodzaj_typ=1 AND n.domagazynu IN (15,34)))
	 GROUP BY guid_instancji
	 ;

	 ALTER TABLE tt2_instancje 
	 ADD INDEX GUID_instancji(GUID_instancji),
	 ADD INDEX GUID_kontrah(GUID_kontrah),
	 ADD INDEX max_data_lpkpr_idn(max_data_lpkpr_idn);

# wyszukanie ostatniej operacji w zakresie dat, potrzebnej do przypisania wlasciwej osoby, dla danego kontrahenta
	 DROP TABLE IF EXISTS tt3_instancje;
	 CREATE TEMPORARY TABLE tt3_instancje
	 SELECT oi.guid_instancji AS GUID_instancji, 	 
	 MAX(CONCAT(LPAD(n.datasprzed,10,' '),':',LPAD(n.lpkpr+100,3,'0'),':',LPAD(n.idn,10,' '),':',oi.osobaguid)) AS max_data_lpkpr_idn, 
	 -- REPEAT(' ',10) AS data_zwrotu, _varint(0) AS lpkpr, _varint(0) AS idn, 
	 REPEAT(' ',38) AS osobaguid,
	 tt.GUID_kontrah AS GUID_kontrah
	 FROM tt_oppo_instancje oi
	 INNER JOIN oppo o ON o.guid=oi.guid_oppo
	 INNER JOIN tt_opng n ON n.GUID=o.idnoper
	 INNER JOIN tt_kontrah tk ON tk.GUID=n.kontrGUID
	 INNER JOIN tt_instancje tt ON tt.guid_instancji=oi.guid_instancji AND tt.GUID_kontrah=n.kontrGUID
	 WHERE n.datawystaw>=tt.data_wydania AND 
	 oi.deleted=0  AND oi.ilosc <> 0 AND oi.guid_instancji<>''  AND oi.ignoruj_rozlicz_serwisu = 0
	 GROUP BY guid_instancji
	 ;

	 ALTER TABLE tt3_instancje 
	 ADD INDEX GUID_instancji(GUID_instancji),
	 ADD INDEX GUID_kontrah(GUID_kontrah),
	 ADD INDEX max_data_lpkpr_idn(max_data_lpkpr_idn);

	 UPDATE tt3_instancje 
	 SET -- data_zwrotu = MID(max_data_lpkpr_idn, 1,10), 
		  -- lpkpr = MID(max_data_lpkpr_idn, 12,2), 
		  -- idn = MID(max_data_lpkpr_idn, 16,10),
		  osobaguid = MID(max_data_lpkpr_idn, 27,38);

/*
# podmiana guidow kontrahentow
	 UPDATE tt_instancje tt, kontrah_przejscie kp
	 SET tt.GUID_kontrah = kp.guid_kontr_nast
	 WHERE tt.GUID_kontrah = kp.guid_kontr_pop;
		
	 UPDATE tt2_instancje tt, kontrah_przejscie kp
	 SET tt.GUID_kontrah = kp.guid_kontr_nast
	 WHERE tt.GUID_kontrah = kp.guid_kontr_pop;

	 UPDATE tt3_instancje tt, kontrah_przejscie kp
	 SET tt.GUID_kontrah = kp.guid_kontr_nast
	 WHERE tt.GUID_kontrah = kp.guid_kontr_pop;
# koniec podmianki
*/

	 UPDATE tt2_instancje 
	 SET data_zwrotu = MID(max_data_lpkpr_idn, 1,10), 
		  lpkpr = MID(max_data_lpkpr_idn, 12,3)-100, 
		  idn = MID(max_data_lpkpr_idn, 17,10);

	 UPDATE tt_instancje t, tt2_instancje t2
	 SET t.data_zwrotu = t2.data_zwrotu
	 WHERE t.GUID_instancji = t2.GUID_instancji AND t.GUID_kontrah = t2.GUID_kontrah

	 -- AND t2.data_zwrotu>t.data_wydania; -- nowy dopisek;
	 -- jeszcze nowszy dopisek, bo jednak sa dokumenty z jednego dnia
	 AND (t2.data_zwrotu>t.data_wydania 
		  OR (t2.data_zwrotu=t.data_wydania AND t2.lpkpr>t.lpkpr) 
		  OR (t2.data_zwrotu=t.data_wydania AND t2.lpkpr=t.lpkpr AND t2.idn>t.idn))  -- sortowanie wg daty, lpkpr, idnu operacji
	 ; 


-- obsluga samej tabeli wynikowej
	 DELETE FROM temp_serwis_rozliczenie 
	 WHERE rok = _rok AND miesiac = _miesiac 
			 AND IF(_GUID='',TRUE,GUID_kontrah = _GUID)
			 AND idnoper='';

	 INSERT INTO temp_serwis_rozliczenie (rok,miesiac,GUID_kontrah,GUID_instancji,GUID_osoby,oddzial,cena,wart_mc)
	 SELECT _rok, _miesiac, tt.GUID_kontrah, tt.GUID_instancji, oi.osobaguid, 
	 IF(k.serwis_rozlicz_lokalizacje <> 0, o.nodeguid,'') AS oddzial, IFNULL(of.cena,0) AS cena, IFNULL(of.cena,0)*4.33 AS wart_mc
	 FROM tt_instancje tt
	 INNER JOIN tt3_instancje oi ON oi.GUID_instancji=tt.GUID_instancji AND oi.GUID_kontrah = tt.GUID_kontrah
	 INNER JOIN towrng_instancje ti ON ti.guid=tt.guid_instancji
	 LEFT JOIN oferty of ON of.idntowr=ti.idntowr AND tt.GUID_kontrah=of.kontrGUID
	 LEFT JOIN osoby o ON oi.osobaguid=o.GUID
	 LEFT JOIN kontrah k ON k.GUID = tt.GUID_kontrah
	 WHERE tt.data_wydania <= _DoDnia AND tt.data_zwrotu > _DoDnia;
	 


	 DROP TABLE IF EXISTS tt2_instancje;
	 DROP TABLE IF EXISTS tt_instancje;
	 DROP TABLE IF EXISTS tt_instancje_kas;
	 DROP TABLE IF EXISTS tt_kontrah;
	 DROP TABLE IF EXISTS tt_oppo_instancje;
	 DROP TABLE IF EXISTS tt_opng;


    END IF;    --    IF _MODE = 'SERWIS.ROZLICZENIE'


/*

CREATE TABLE temp_serwis_rozliczenie (
idn INT(11) NOT NULL AUTO_INCREMENT,
alocaltime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
idnoper VARCHAR(38) NOT NULL DEFAULT '',
rok INT(11) NOT NULL DEFAULT 0,
miesiac INT(11) NOT NULL DEFAULT 0,
GUID_kontrah VARCHAR(38) NOT NULL DEFAULT '',
GUID_instancji VARCHAR(38) NOT NULL DEFAULT '',
GUID_osoby VARCHAR(38) NOT NULL DEFAULT '',
oddzial VARCHAR(100) NOT NULL DEFAULT '',
cena DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
wart_mc DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
PRIMARY KEY (idn),
KEY GUID_kontrah (GUID_kontrah),
KEY GUID_instancji (GUID_instancji),
KEY GUID_osoby (GUID_osoby),
KEY rok (rok),
KEY miesiac (miesiac)
) ENGINE=MYISAM AUTO_INCREMENT=0 DEFAULT CHARSET=cp1250;



SELECT ti.kod_kreskowy, o.nazwisko, o.imiona, t.* 
FROM temp_serwis_rozliczenie t
INNER JOIN osoby o ON o.guid=t.guid_osoby
INNER JOIN towrng_instancje ti ON ti.guid = t.guid_instancji
WHERE rok=2013 AND miesiac=8 AND guid_kontrah = '{ED51A4A7-A66B-499A-BCD0-4CFD4E68627C}'
AND o.nazwisko = 'bartkowski' AND o.imiona = 'witold'
;

SELECT * FROM tt_kontrah;

SELECT n.idn, ot.nazwa, ot.opis, n.kontrguid, n.datawystaw, n.lpkpr, n.rodzaj, n.rodzaj_typ, oi.*
FROM oppo_instancje oi
INNER JOIN oppo o ON oi.guid_oppo=o.guid
INNER JOIN opng n ON n.guid=o.idnoper
INNER JOIN operdoc_typy ot ON ot.rodzaj=n.rodzaj AND ot.typ=n.rodzaj_typ
WHERE guid_instancji='{2353D026-F485-43F6-B759-6B775067BA3D}'
ORDER BY n.datawystaw, n.idn; 

*/

/*
pomocnicze

SELECT * FROM towrng_instancje WHERE kod_kreskowy='1001586190';


SELECT n.idn, ot.nazwa, ot.opis, n.kontrguid, n.datawystaw, n.rodzaj, n.rodzaj_typ, oi.* 
FROM oppo_instancje oi 
INNER JOIN oppo o ON oi.guid_oppo=o.guid
INNER JOIN opng n ON n.guid=o.idnoper
INNER JOIN operdoc_typy ot ON ot.rodzaj=n.rodzaj AND ot.typ=n.rodzaj_typ
WHERE guid_instancji='{30AD5222-A6A0-407E-8BB5-FBB187FC8B33}'
ORDER BY n.datawystaw, n.idn;

*/


#### zestaw sledczy
/*
CALL fr_ht_zest('SERWIS.ROZLICZENIE','{FD9D643E-769A-48B2-BCE7-5F3FE030162F}',2013,10,'','','','','','','','');

SELECT * FROM kontrah WHERE nazwa LIKE 'al piekarnia%';
SELECT * FROM towrng_instancje WHERE kod_kreskowy='1002194990';

SELECT @a1, @a2;

SELECT * FROM tt_kontrah;

SELECT * FROM tt_opng WHERE guid = '{A875239D-55B4-4885-ADC4-46C5B7625095}';

SELECT * FROM tt_instancje WHERE guid_instancji='{0DABDCE3-B1F4-4F15-B23B-9DE68115D637}';
SELECT * FROM tt2_instancje WHERE guid_instancji='{0DABDCE3-B1F4-4F15-B23B-9DE68115D637}';


SELECT n.idn, ot.nazwa, ot.opis, n.kontrguid, n.datawystaw, n.lpkpr, n.rodzaj, n.rodzaj_typ, oi.*
FROM oppo_instancje oi
INNER JOIN oppo o ON oi.guid_oppo=o.guid
INNER JOIN opng n ON n.guid=o.idnoper
INNER JOIN operdoc_typy ot ON ot.rodzaj=n.rodzaj AND ot.typ=n.rodzaj_typ
WHERE guid_instancji='{0DABDCE3-B1F4-4F15-B23B-9DE68115D637}'
ORDER BY n.datawystaw, n.idn; 

SELECT * FROM temp_serwis_rozliczenie
WHERE rok=2013 AND miesiac=10 AND guid_kontrah='{FD9D643E-769A-48B2-BCE7-5F3FE030162F}'
AND guid_instancji='1002194990';
*/



IF (_MODE = 'RAPORT_ODZIEZY') THEN
-- CALL fr_ht_zest('DEPOZYTY','{FD9D643E-769A-48B2-BCE7-5F3FE030162F}','','','2014-04-09','','','','','','','');


  DROP TABLE IF EXISTS tt_kontrah;
  CREATE TEMPORARY TABLE tt_kontrah (GUID VARCHAR(38) NOT NULL DEFAULT '', KEY GUID (GUID));

  INSERT INTO tt_kontrah
  SELECT GUID 
  FROM kontrah
  WHERE IF(_GUID = '', TRUE, GUID = _GUID) AND deleted = 0;	 

  INSERT INTO tt_kontrah
  SELECT kp.guid_kontr_pop 
  FROM kontrah_przejscie kp 
  INNER JOIN kontrah k ON k.GUID=kp.guid_kontr_nast
  WHERE k.GUID = _GUID AND k.deleted = 0;



CREATE TEMPORARY TABLE t_instancje
SELECT
TI.guid AS guid_instancji,
k.symbol AS kontrsymbol, k.nazwa AS kontrnazwa,
t.symbol, t.nazwa,
(SELECT IFNULL(SUM(oi2.ilosc),0)
FROM oppo_instancje oi2 INNER JOIN oppo o2 ON o2.guid=oi2.guid_oppo
INNER JOIN opng n2 ON n2.guid=o2.idnoper
WHERE guid_instancji=TI.guid AND n2.rodzaj=46 AND n2.rodzaj_typ=0
AND n2.deleted=0 AND oi2.deleted=0)
AS ilosc_pran,

CONCAT(O.Nazwisko,' ',O.Imiona) AS osobaImieNazwisko,
O.GUID AS osobaGUID,
O.info1 AS nrewid, O.info2, O.nazwa_dzialu,
TI.kod_kreskowy, TI.nr_seryjny, LEFT(TI.uwagi,200) AS uwagi, TI.opis,
O.Nazwisko, O.Imiona, ROUND(t.CenaEwid,2) AS cenaewid,
IF(TI.status=0,'W Wedze','U klienta') AS STATUS,
TI.magazyn,
TI.lastOplustGUID,
t.min_ord_quant AS czas_wymiany_odziezy
FROM towrng_instancje TI
INNER JOIN TowrNg t ON t.guid=TI.idntowr
INNER JOIN osoby O ON O.GUID = TI.osobaGUID_przypisana
INNER JOIN tt_kontrah tk ON tk.GUID=O.kontrGUID
LEFT JOIN kontrah k ON k.GUID = O.kontrGUID
WHERE t.usluga=0  AND TI.status IN (0,1)
ORDER BY O.Nazwisko, O.Imiona, t.symbol;


CREATE TEMPORARY TABLE tt_instancje
SELECT oi.guid_instancji, 
MIN(IF(n.rodzaj=47 AND n.rodzaj_typ=0,n.datasprzed,'2100-01-01')) AS data_pierwszego_prania,
MAX(IF(n.rodzaj=47 AND n.rodzaj_typ=0,n.datasprzed,'1900-01-01')) AS data_ostatniego_prania,
MAX(IF(n.rodzaj=47 AND n.rodzaj_typ=1,n.datasprzed,'1901-01-01')) AS data_wydania,
MAX(IF(n.rodzaj=47 AND n.rodzaj_typ=1,n.datasprzed,'')) AS data_wydania_zdok,
MAX(IF((n.rodzaj=11 AND n.rodzaj_typ=1) OR (n.rodzaj=9 AND n.rodzaj_typ=3 ),n.datasprzed,'')) AS data_kasacji,
MIN(IF(n.rodzaj=47 AND n.rodzaj_typ=1,ROUND(o.cenamag,2),'brak')) AS cena,
MIN(IF(n.rodzaj=9 AND n.domagazynu=18,ROUND(o.cenamag,2),'brak')) AS cena_b,
' ' AS X,
MAX(IF(n.rodzaj=47 AND n.rodzaj_typ=1,n.datasprzed,'1901-01-01')) AS data1,
'1900-01-01' AS data2,
(SELECT zerod FROM zero) AS amortyzacja
FROM oppo_instancje oi
INNER JOIN oppo o ON o.guid=oi.guid_oppo
INNER JOIN opng n ON n.GUID=o.idnoper
INNER JOIN tt_kontrah tk ON tk.GUID=n.kontrGUID
WHERE n.datawystaw<= _NaDzien AND oi.deleted=0
GROUP BY guid_instancji;

ALTER TABLE t_instancje 
ADD INDEX guid_instancji(guid_instancji),
ADD INDEX lastOplustGUID(lastOplustGUID);

ALTER TABLE tt_instancje ADD INDEX guid_instancji(guid_instancji);

DELETE FROM tt_instancje WHERE data_kasacji <>'';

UPDATE tt_instancje tt
SET data_wydania=
DATE_ADD(tt.data_pierwszego_prania, INTERVAL -1 WEEK),
X='X'
WHERE tt.data_wydania='1901-01-01';

-- update tt_instancje tt
-- set tt.cena=tt.cena_b
-- where tt.cena='brak' and tt.cena_b<>'brak';

-- update tt_instancje tt, t_instancje t
-- set tt.cena=round(t.cenaewid,2)
-- where tt.guid_instancji=t.guid_instancji
-- and tt.cena='brak' and t.cenaewid is not null;

UPDATE tt_instancje
SET data1=DATE_ADD(LAST_DAY(data_wydania), INTERVAL 1 DAY),
data2= IF(LAST_DAY(_NaDzien) = _NaDzien,_NaDzien,DATE_ADD(LAST_DAY(_NaDzien), INTERVAL -1 MONTH));

UPDATE tt_instancje tt
SET data_pierwszego_prania=''
WHERE tt.data_pierwszego_prania='2100-01-01';

UPDATE tt_instancje tt
SET data_ostatniego_prania=''
WHERE tt.data_ostatniego_prania='1900-01-01';

UPDATE tt_instancje tt
SET data_wydania=''
WHERE tt.data_wydania='2099-12-25';

UPDATE tt_instancje tt, t_instancje t
SET tt.amortyzacja=ROUND(tt.cena/24*(DATEDIFF(tt.data2,tt.data1) DIV 30),2)
WHERE tt.guid_instancji=t.guid_instancji
AND tt.data_wydania<>''
AND kontrsymbol='5272525794';

UPDATE tt_instancje tt, t_instancje t
SET tt.amortyzacja=ROUND(tt.cena/24*(DATEDIFF(tt.data2,tt.data1) DIV 30),2)
WHERE tt.guid_instancji=t.guid_instancji
AND tt.data_wydania<>''
AND kontrsymbol<>'5272525794'
AND tt.data_wydania>='2010-01-01' AND tt.data2>='2010-01-01';

UPDATE tt_instancje tt, t_instancje t
SET tt.amortyzacja=ROUND(tt.cena/12*(DATEDIFF(tt.data2,tt.data1) DIV 30),2)
WHERE tt.guid_instancji=t.guid_instancji
AND tt.data_wydania<>''
AND kontrsymbol<>'5272525794'
AND tt.data_wydania<='2010-01-01' AND tt.data2<='2010-01-01';

UPDATE tt_instancje tt, t_instancje t
SET tt.amortyzacja=
ROUND(tt.cena/12*(DATEDIFF('2010-01-01',tt.data1) DIV 30),2)+
ROUND(tt.cena/24*(DATEDIFF(tt.data2,'2010-01-01') DIV 30),2)
WHERE tt.guid_instancji=t.guid_instancji
AND tt.data_wydania<>''
AND kontrsymbol<>'5272525794'
AND tt.data_wydania<='2010-01-01' AND tt.data2>='2010-01-01';
 


#przyjecia i wydania depozytowe 
	 DROP TABLE IF EXISTS tt3_instancje;
	 CREATE TEMPORARY  TABLE tt3_instancje -- tabela z przyjeciami i wydaniami depozytowymi
	 SELECT oi.guid_instancji AS GUID_instancji, 	 
	 -- MAX(CONCAT(LPAD(n.datasprzed,10,' '),':',LPAD(n.lpkpr+100,3,'0'),':',LPAD(n.idn,10,' '))) AS max_data_lpkpr_idn, 
	 -- REPEAT(' ',10) AS data_dokumentu, _varint(0) AS lpkpr, _varint(0) AS idn, 
	 n.rodzaj, n.datasprzed, n.lpkpr, n.idn,
	 n.kontrGUID AS GUID_kontrah
	 FROM oppo_instancje oi
	 INNER JOIN oppo o ON o.guid=oi.guid_oppo
	 INNER JOIN opng n ON n.GUID=o.idnoper
	 INNER JOIN tt_kontrah tk ON tk.GUID=n.kontrGUID
	 INNER JOIN tt_instancje tt ON tt.guid_instancji=oi.guid_instancji -- AND tt.GUID_kontrah=n.kontrGUID
	 WHERE n.datawystaw>=tt.data_wydania AND  n.datawystaw <= _NaDzien AND
	 oi.deleted=0  AND oi.ilosc <> 0 AND oi.guid_instancji<>''  AND oi.ignoruj_rozlicz_serwisu = 0
	 AND ((n.rodzaj=46 AND n.rodzaj_typ=1 AND n.domagazynu IN (15,34)) OR (n.rodzaj=47 AND n.rodzaj_typ=2 AND n.zmagazynu IN (15,34)))
	 ORDER BY guid_instancji, n.datasprzed, n.lpkpr, n.idn
	 ;

	 ALTER TABLE tt3_instancje 
	 ADD INDEX GUID_instancji(GUID_instancji),
	 ADD INDEX GUID_kontrah(GUID_kontrah)
	 ;
	 -- ADD INDEX max_data_lpkpr_idn(max_data_lpkpr_idn);

	 DROP TABLE IF EXISTS tt3a_instancje;
	 CREATE TEMPORARY TABLE tt3a_instancje LIKE tt3_instancje;
	 INSERT INTO tt3a_instancje SELECT * FROM tt3_instancje;

  DROP TABLE IF EXISTS tt3b_instancje;
  CREATE TEMPORARY 
			TABLE  tt3b_instancje
	 SELECT tt3.guid_instancji, tt3.datasprzed AS data_p,
	 (SELECT MIN(datasprzed) FROM tt3a_instancje WHERE datasprzed>tt3.datasprzed AND rodzaj=47 AND guid_instancji=tt3.guid_instancji) AS data_w
	 FROM tt3_instancje tt3 
	 WHERE rodzaj=46
	 GROUP BY tt3.guid_instancji, tt3.idn
	 ORDER BY tt3.guid_instancji, tt3.idn;
  
	 DROP TABLE IF EXISTS tt_instancje_depozyty;
		CREATE TEMPORARY 
				TABLE  tt_instancje_depozyty
		SELECT 
		guid_instancji, 
		SUM(DATEDIFF(IFNULL(data_w,_NaDzien),data_p)) AS dni_depozytu
		FROM tt3b_instancje
		GROUP BY guid_instancji;

		ALTER TABLE tt_instancje_depozyty ADD INDEX guid_instancji(guid_instancji);

# koniec depozytow


/*
SELECT
t.kontrsymbol, t.kontrnazwa,
t.symbol, t.nazwa,
t.ilosc_pran,
data_wydania as wydanie,
data_wydania_zdok,
tt.data_ostatniego_prania as ostatnie_pranie,
t.osobaImieNazwisko,
t.nrewid, t.info2, t.nazwa_dzialu,
t.kod_kreskowy, t.nr_seryjny, t.uwagi, t.opis, t.status, t.magazyn,
concat(n.datawystaw,' ',op.nazwa) as ostatni_dokument,
tt.cena as cena,
tt.cena-tt.amortyzacja AS wart_po_amortyzacji,
tt.amortyzacja AS amortyzacja,
round(datediff('#NaDzien#',tt.data_wydania) div 7,0) as dlugosc_zycia,
t.czas_wymiany_odziezy*30 - datediff('#NaDzien#',tt.data_wydania) + ifnull(td.dni_depozytu,0) as dni_do_wymiany,

tt.X as X,
'        ' as pokw_odbioru
 FROM  t_instancje t
 left join tt_instancje tt on tt.guid_instancji=t.guid_instancji
 left join  oppo_instancje oi on t.lastOplustGUID=oi.guid
 left join tt_instancje_depozyty td on td.guid_instancji=t.guid_instancji
 INNER JOIN oppo o ON o.guid=oi.guid_oppo
 inner join opng n ON n.GUID=o.idnoper
 inner join operdoc_typy op ON op.rodzaj=n.rodzaj and op.typ=n.rodzaj_typ
  
  ORDER BY  t.kontrnazwa, t.Nazwisko, t.Imiona, t.symbol
;


*/

/*
*/










/*
-- czas pauz
SET @guidng_pop = ''; 
SET @valuedescr_pop = '';
SET @droidtime_pop = '';

CREATE TEMPORARY TABLE t20
SELECT 
tt.login,
DATE(tt.droidtime) AS dzien,
@guidng_pop AS guidng_pop,
@guidng_pop := p.guidng AS guidng,
@valuedescr_pop AS valuedescr_pop,
@valuedescr_pop := p.valuedescr AS valuedescr,
@droidtime_pop AS droidtime_pop,
@droidtime_pop := p.droidtime AS droidtime

FROM droid_ankiety_dane_po p
INNER JOIN tt_ankiety tt ON tt.guid = p.guidng
;

DELETE FROM t20 WHERE NOT (valuedescr_pop = 'pauza' AND guidng_pop = guidng);

CREATE TEMPORARY TABLE t21
SELECT login, dzien, 
SUM(TIMESTAMPDIFF(MINUTE,droidtime_pop,droidtime)) AS czas_pauz
FROM t20
GROUP BY login, dzien;


UPDATE tt_wynik tt, t21
SET tt.czas_pauz = t21.czas_pauz
WHERE tt.login = t21.login AND tt.dzien = t21.dzien
;
*/


END IF;    --    IF _MODE = 'RAPORT_ODZIEZY'



IF (_MODE = 'DEPOZYTY') THEN
--  jest to sekcja zachowana tylko dla zestawienia Wega_RaportOdziezy_nowy3.sqd - starsza wersja, na wszelki wypadek
-- CALL fr_ht_zest('DEPOZYTY','{FD9D643E-769A-48B2-BCE7-5F3FE030162F}','','','2014-04-09','','','','','','','');

#przyjecia i wydania depozytowe
	 DROP TABLE IF EXISTS tt3_instancje;
	 CREATE  TEMPORARY  TABLE tt3_instancje -- tabela z przyjeciami i wydaniami depozytowymi
	 SELECT oi.guid_instancji AS GUID_instancji, 	 
	 -- MAX(CONCAT(LPAD(n.datasprzed,10,' '),':',LPAD(n.lpkpr+100,3,'0'),':',LPAD(n.idn,10,' '))) AS max_data_lpkpr_idn, 
	 -- REPEAT(' ',10) AS data_dokumentu, _varint(0) AS lpkpr, _varint(0) AS idn, 
	 n.rodzaj, n.datasprzed, n.lpkpr, n.idn,
	 n.kontrGUID AS GUID_kontrah
	 FROM oppo_instancje oi
	 INNER JOIN oppo o ON o.guid=oi.guid_oppo
	 INNER JOIN opng n ON n.GUID=o.idnoper
	 INNER JOIN tt_kontrah tk ON tk.GUID=n.kontrGUID
	 INNER JOIN tt_instancje tt ON tt.guid_instancji=oi.guid_instancji -- AND tt.GUID_kontrah=n.kontrGUID
	 WHERE n.datawystaw>=tt.data_wydania AND  n.datawystaw <= _NaDzien AND
	 oi.deleted=0  AND oi.ilosc <> 0 AND oi.guid_instancji<>''  AND oi.ignoruj_rozlicz_serwisu = 0
	 AND ((n.rodzaj=46 AND n.rodzaj_typ=1 AND n.domagazynu IN (15,34)) OR (n.rodzaj=47 AND n.rodzaj_typ=2 AND n.zmagazynu IN (15,34)))
	 ORDER BY guid_instancji, n.datasprzed, n.lpkpr, n.idn
	 ;

	 ALTER TABLE tt3_instancje 
	 ADD INDEX GUID_instancji(GUID_instancji),
	 ADD INDEX GUID_kontrah(GUID_kontrah)
	 ;
	 -- ADD INDEX max_data_lpkpr_idn(max_data_lpkpr_idn);

	 DROP TABLE IF EXISTS tt3a_instancje;
	 CREATE TEMPORARY TABLE tt3a_instancje LIKE tt3_instancje;
	 INSERT INTO tt3a_instancje SELECT * FROM tt3_instancje;

  DROP TABLE IF EXISTS tt3b_instancje;
  CREATE TEMPORARY 
			TABLE  tt3b_instancje
	 SELECT tt3.guid_instancji, tt3.datasprzed AS data_p,
	 (SELECT MIN(datasprzed) FROM tt3a_instancje WHERE datasprzed>tt3.datasprzed AND rodzaj=47 AND guid_instancji=tt3.guid_instancji) AS data_w
	 FROM tt3_instancje tt3 
	 WHERE rodzaj=46
	 GROUP BY tt3.guid_instancji, tt3.idn
	 ORDER BY tt3.guid_instancji, tt3.idn;
  
	 DROP TABLE IF EXISTS tt_instancje_depozyty;
		CREATE TEMPORARY 
				TABLE  tt_instancje_depozyty
		SELECT 
		guid_instancji, 
		SUM(DATEDIFF(IFNULL(data_w,_NaDzien),data_p)) AS dni_depozytu
		FROM tt3b_instancje
		GROUP BY guid_instancji;

		ALTER TABLE tt_instancje_depozyty ADD INDEX guid_instancji(guid_instancji);

# koniec depozytow


END IF;    --    IF _MODE = 'DEPOZYTY'




/* zestawienie pierwszych wydan pogrupowane wg kart towarowych i z suma wartmag 

*/

IF (_MODE = 'RAPORT_WYDAN') THEN
-- CALL fr_ht_zest('RAPORT_WYDAN','{D83B16FD-AEEA-4FDF-A94C-71713303A25F}','','','2014-07-30','','','','','','','');


  DROP TABLE IF EXISTS tt_kontrah;
  CREATE TEMPORARY TABLE tt_kontrah (GUID VARCHAR(38) NOT NULL DEFAULT '', KEY GUID (GUID));

  INSERT INTO tt_kontrah
  SELECT GUID 
  FROM kontrah
  WHERE IF(_GUID = '', TRUE, GUID = _GUID) AND deleted = 0;	 

  INSERT INTO tt_kontrah
  SELECT kp.guid_kontr_pop 
  FROM kontrah_przejscie kp 
  INNER JOIN kontrah k ON k.GUID=kp.guid_kontr_nast
  WHERE k.GUID = _GUID AND k.deleted = 0;





CREATE TEMPORARY TABLE tt_instancje
SELECT 
n.kontrGUID,
o.idntowr,
COUNT(oi.guid_instancji) AS ilosc_sztuk, 
o.wartmag

FROM oppo_instancje oi
INNER JOIN oppo o ON o.guid=oi.guid_oppo
INNER JOIN opng n ON n.GUID=o.idnoper
INNER JOIN tt_kontrah tk ON tk.GUID=n.kontrGUID
WHERE n.datawystaw<= _NaDzien AND oi.deleted=0 AND n.deleted=0
AND n.rodzaj=47 AND n.rodzaj_typ=1 -- (tylko pierwsze wydania)
AND n.datawystaw >= '2011-01-01'
GROUP BY n.kontrGUID, o.idntowr, o.guid
;


ALTER TABLE tt_instancje -- add index guid_instancji(guid_instancji),
ADD INDEX idntowr(idntowr),
ADD INDEX kontrGUID(kontrGUID);

/*
select k.symbol as symbol_kontrah,
k.nazwa as nazwa_kontrah,
t.symbol as symbol_towaru,
t.nazwa as nazwa_towaru,
sum(tt.wartmag) as wartosc,
sum(tt.ilosc_sztuk) as ilosc

from tt_instancje tt
inner join TowrNg t ON t.guid = tt.idntowr
inner join kontrah k ON k.guid = tt.kontrGUID
group by tt.kontrguid, tt.idntowr
order by symbol_kontrah, symbol_towaru;
*/

END IF;    --    IF _MODE = 'RAPORT_WYDAN'



IF (_MODE = 'SPEDCUST') THEN

/*
SET @od='2018-04-23',@do='2018-04-26',@oddzial='JAS';
CALL fr_ht_zest('SPEDCUST', '', '', '', '', @od,@do, '', @oddzial, '', '','');
*/

	SET NAMES "utf8";

  DROP TABLE IF EXISTS t_sped;
	CREATE TEMPORARY TABLE t_sped (
		guid VARCHAR(38),
		nag LONGTEXT,
		nag2 LONGTEXT,
	KEY guid (guid)) DEFAULT CHARSET=utf8;

	DROP TABLE IF EXISTS t_zam;
	CREATE TEMPORARY TABLE t_zam (
		guid VARCHAR(38),
		idnmagazyn INT(11),
		ugrpguid VARCHAR(38),
		ilosc DOUBLE(16,4),
		waga_jednostkowa DOUBLE(16,4),
		waga_laczna DOUBLE(16,4),
		nrzamw VARCHAR(30),
		adr VARCHAR(100),
		adr_un VARCHAR(50),
		adr_jednostka VARCHAR(50),
		d_akronim VARCHAR(50),
		d_nazwa VARCHAR(200),
		d_kod VARCHAR(10),
		d_miasto VARCHAR(100),
		d_ulica VARCHAR(100),
		d_nip VARCHAR(15),
		nag3 LONGTEXT,
		poz1 LONGTEXT,
		poz2 LONGTEXT,
		poz3 LONGTEXT,
	KEY guid (guid)) DEFAULT CHARSET=utf8;

	INSERT INTO t_zam
	SELECT n.guid, n.idnmagazyn, n.ugrpguid,
	CEIL(ROUND(SUM(IF(t.opakowanie_zbiorcze_d = 0, 0, (GREATEST(p.Ilosc, 0))/t.opakowanie_zbiorcze_d)), 2)) AS ilosc,
	SUM(GREATEST(p.Ilosc, 0) * t.waga)/
	CEIL(ROUND(SUM(IF(t.opakowanie_zbiorcze_d = 0, 0, (GREATEST(p.Ilosc, 0))/t.opakowanie_zbiorcze_d)), 2)) AS waga_jednostkowa, 
	SUM(GREATEST(p.Ilosc, 0) * t.waga) AS waga_laczna,
	nrzamw AS referencja_wartosc,
	IF(t.klasyfikacja_adr=0,0,1) AS adr,
	IFNULL(adr.numery_un,'') AS adr_un,
	IF(t.klasyfikacja_adr=0,'','opakowanie lekkie metalowe') AS adr_jednostka,
	k.symbol AS d_akronim,
	k.nazwa AS d_nazwa,
	_varSTR(IFNULL((SELECT _FetchParams_Quick('',al.adr_MASKS, '<Z>','&') FROM `geo_int_adr_link` al WHERE al.ObjGUID = n.GUID AND al.ObjTable =
	'zmng' AND al.AdrTyp LIKE '%Dost%' ORDER BY LENGTH(al.AdrTyp) LIMIT 1),
	(SELECT _FetchParams_Quick('',al.adr_MASKS, '<Z>','&') FROM `geo_int_adr_link` al WHERE al.ObjGUID = k.GUID 
	AND al.AdrTyp LIKE '%W%' ORDER BY LENGTH(al.AdrTyp) LIMIT 1))) AS d_kod,
	_varSTR(IFNULL((SELECT _FetchParams_Quick('',al.adr_MASKS, '<M>','&') FROM `geo_int_adr_link` al WHERE al.ObjGUID = n.GUID AND al.ObjTable =
	'zmng' AND al.AdrTyp LIKE '%Dost%' ORDER BY LENGTH(al.AdrTyp) LIMIT 1),
	(SELECT _FetchParams_Quick('',al.adr_MASKS, '<M>','&') FROM `geo_int_adr_link` al WHERE al.ObjGUID = k.GUID 
	AND al.AdrTyp LIKE '%W%' ORDER BY LENGTH(al.AdrTyp) LIMIT 1))) AS d_miasto,
	_varSTR(IFNULL((SELECT _FetchParams_Quick('',al.adr_MASKS, '<UM N>','&') FROM `geo_int_adr_link` al WHERE al.ObjGUID = n.GUID AND al.ObjTable =
	'zmng' AND al.AdrTyp LIKE '%Dost%' ORDER BY LENGTH(al.AdrTyp) LIMIT 1),
	(SELECT _FetchParams_Quick('',al.adr_MASKS, '<UM N>','&') FROM `geo_int_adr_link` al WHERE al.ObjGUID = k.GUID 
	AND al.AdrTyp LIKE '%W%' ORDER BY LENGTH(al.AdrTyp) LIMIT 1))) AS d_ulica,
	k.nip AS d_nip,
	'','','',''
	FROM zmng n
	INNER JOIN kontrah k ON k.guid=n.kontrguid
	INNER JOIN zmpo p ON n.guid=p.idnng
	INNER JOIN TowrNg t ON t.guid=p.idntowr
	LEFT JOIN klasyfikacja_adr adr ON t.klasyfikacja_adr = adr.idn
	LEFT JOIN katcols kt4 ON kt4.klucz = n.katcol4 AND kt4.typ=0 AND kt4.colnr=5
	LEFT JOIN osoby O ON n.idnuser = O.idnuser AND O.idnuser <>''
	WHERE n.rodzaj IN (27, 52) AND n.deleted=0 
	AND kt4.valuex LIKE '%schenker%'
	AND n.datawystaw >= _OdDnia AND n.datawystaw <= _DoDnia
	AND IF(_Param_A <> '',n.ugrpguid = _Param_A, TRUE)
	GROUP BY n.guid;

	UPDATE t_zam t, Magazyny m SET t.ugrpguid=
	CASE WHEN m.kategoria LIKE '%JAS%' THEN 'JAS'
	WHEN m.kategoria LIKE '%GDY%' THEN 'GDY'
	WHEN m.kategoria LIKE '%Gdansk%' THEN 'GDA'
	WHEN m.kategoria LIKE '%Skarszewy%' THEN 'IZOLEX'
	END 
	WHERE t.idnmagazyn = m.idnmagazynu AND t.ugrpguid = 'ALL';

	UPDATE t_zam SET 
	d_akronim = LEFT(d_akronim,20),
	d_nazwa = LEFT(d_nazwa,35),
  d_miasto = LEFT(IFNULL(d_miasto,''),35),
	d_ulica = LEFT(IFNULL(d_ulica,''),35);

	SET @data = REPLACE(CURRENT_DATE(),'-','');
	SET @data2 = REPLACE(DATE_ADD(CURRENT_DATE(),INTERVAL 1 DAY),'-','');
	UPDATE t_zam SET nag3=	CONCAT(d_akronim,'^',d_nazwa,'^',IFNULL(d_kod,''),'^',IFNULL(d_miasto,''),'^',IFNULL(d_ulica,''),'^', 
		d_nip,'^','^^^','^^','6^',@data,'^','10:00^16:00^',@data2,'^','10:00^16:00^','^^^');

	UPDATE t_zam SET poz1= 
		CONCAT('ASSORTMENTDATA^','chemia bud./mat. rolowe^','XP1^','folia + taśma firmowa^', 
		ROUND(ilosc,0),'^',
		REPLACE(IFNULL(waga_jednostkowa,''),'.',','),'^',
		REPLACE(waga_laczna,'.',','),'^',
		'1,0^',
		'1,2^',
		'1,5^',
		'1,44'
		-- 'ADRDATA^',adr,'^',adr_un,'^',adr_jednostka
		);

	UPDATE t_zam SET poz2= 
		CONCAT('REFERENCEDATA^','6^',nrzamw);

	INSERT INTO t_sped SELECT DISTINCT ugrpguid,'','' FROM t_zam;
	UPDATE t_sped SET nag='SC5_01^^^';

	UPDATE t_sped SET nag2=
	CASE WHEN guid='JAS' THEN CONCAT('JASŁO^','Zakład Produkcyjny w Jaśle^^','38-200^','Jasło^','ul. 3-Maja 101^','^^',
	'(58) 781 45 85','^^^')
	WHEN guid='GDY' THEN CONCAT('POMIECZYNO^','Zakład Produkcyjny Pomieczyno^^','83-305^','Pomieczyno^','ul. Spacerowa 26^','^^',
	'(58) 781 45 85','^^^')
	WHEN guid='GDA' THEN CONCAT('GDAŃSK^','Zakład Produkcyjny w Gdańsku^^','80-051^','Gdańsk^','ul. Sandomierska 38^','^^',
	'(58) 781 45 85','^^^')
	WHEN guid='IZOLEX' THEN CONCAT('SKARSZEWY^','Zakład Produkcyjny w Skarszewach^^','83-250^','Skarszewy^','ul. Górna 5^','^^',
	'(58) 781 45 85','^^^')
	ELSE CONCAT('Izohan Sp. z o.o.^^','81-963^','Gdynia^','Łużycka 2^','^^',
	'(58) 781 45 85','^^^') END;


	SELECT CONVERT(CONCAT(n.nag,n.nag2,p.nag3) USING cp1250),CONVERT(p.poz1 USING cp1250),CONVERT(poz2 USING cp1250)
	INTO OUTFILE '/var/lib/mysql/spedcust_jas.csv' FIELDS TERMINATED BY '\n' LINES TERMINATED BY '\n'
	FROM t_sped n, t_zam p
	WHERE n.guid = p.ugrpguid
	AND n.guid='JAS'
	GROUP BY p.guid
	;

	SELECT CONVERT(CONCAT(n.nag,n.nag2,p.nag3) USING cp1250),CONVERT(p.poz1 USING cp1250),CONVERT(poz2 USING cp1250)
	INTO OUTFILE '/var/lib/mysql/spedcust_gdy.csv' FIELDS TERMINATED BY '\n' LINES TERMINATED BY '\n'
	FROM t_sped n, t_zam p
	WHERE n.guid = p.ugrpguid
	AND n.guid='GDY'
	GROUP BY p.guid
	;

	SELECT CONVERT(CONCAT(n.nag,n.nag2,p.nag3) USING cp1250),CONVERT(p.poz1 USING cp1250),CONVERT(poz2 USING cp1250)
	INTO OUTFILE '/var/lib/mysql/spedcust_gda.csv' FIELDS TERMINATED BY '\n' LINES TERMINATED BY '\n'
	FROM t_sped n, t_zam p
	WHERE n.guid = p.ugrpguid
	AND n.guid='GDA'
	GROUP BY p.guid
	;

	SELECT CONVERT(CONCAT(n.nag,n.nag2,p.nag3) USING cp1250),CONVERT(p.poz1 USING cp1250),CONVERT(poz2 USING cp1250)
	INTO OUTFILE '/var/lib/mysql/spedcust_izolex.csv' FIELDS TERMINATED BY '\n' LINES TERMINATED BY '\n'
	FROM t_sped n, t_zam p
	WHERE n.guid = p.ugrpguid
	AND n.guid='IZOLEX'
	GROUP BY p.guid
	;


/*
SELECT 
'SC5_01' as naglowek,
'' as zleceniodawca,
'' as nr_db_nadania,
'' as podjecie_akronim,
'a' AS podjecie_nazwa1,
'' as podjecie_nazwa2,
'a' AS podjecie_kod,
'a' AS podjecie_miasto, 
'a' AS podjecie_ulica,
'' as podjecie_nip,
'' AS podjecie_osoba, -- do uzupelnienia
'(58) 781 45 85' AS podjecie_telefon,
'' as podjecie_mail,

'' as d_akronim,
k.nazwa AS d_nazwa,
'' as d_nazwa2,
'a' AS d_kod,
'a' AS d_miasto,
'a' AS d_ulica,
k.nip as d_nip,
'' as d_osoba, '' as d_telefon, '' as d_mail,
'' as platnik_rodzaj,
-- 'Izohan Sp. z o.o.' AS platnik,
'' as nr_db,
6 AS kod_produktu,

CURRENT_DATE() AS podjecie_data,
'13:00' AS podejcie_godzina_od,
'16:00' AS podejcie_godzina_do,
'' as data_dostawy,
'' as godzina_dostawy_od, 
'' as godzina_dostawy_do, 
'' as uwagi,
'' as instrukcje,
'' as palety1, '' as palety2, '' as palety3, '' as palety4,

'ASSORTMENTDATA',
'chemia budowlana/materiały rolowe' AS nazwa_asortymentu,
'XP1' AS jednostka,
'folia+taśma' AS zabezpieczenia,
CEIL(ROUND(SUM(IF(t.opakowanie_zbiorcze_d = 0, 0, (GREATEST(p.Ilosc, 0))/t.opakowanie_zbiorcze_d)), 2)) AS ilosc,
SUM(GREATEST(p.Ilosc, 0) * t.waga)/
CEIL(ROUND(SUM(IF(t.opakowanie_zbiorcze_d = 0, 0, (GREATEST(p.Ilosc, 0))/t.opakowanie_zbiorcze_d)), 2)) AS waga_jednostkowa, 
SUM(GREATEST(p.Ilosc, 0) * t.waga) AS waga_laczna,
_vardouble(0.8) AS szerokosc,
_vardouble(1.2) AS dlugosc,
_vardouble(1.5) AS wysokosc,
_vardouble(1.44) AS objetosc,

'REFERENCEDATA',
6 AS referencja_kod,
nrzamw AS referencja_wartosc,

'ADRDATA',
IF(t.klasyfikacja_adr=0,0,1) AS adr,
adr.numery_un AS adr_un,
IF(t.klasyfikacja_adr=0,'','opakowanie lekkie metalowe') AS adr_jednostka,
'' AS adr_ilosc,
'' AS adr_waga,
'' as uwagi,
'' as grupa_pakowania,
'' as nazwa_techniczna
FROM zmng n
INNER JOIN kontrah k ON k.guid=n.kontrguid
INNER JOIN zmpo p ON n.guid=p.idnng
INNER JOIN TowrNg t ON t.guid=p.idntowr
LEFT JOIN klasyfikacja_adr adr ON t.klasyfikacja_adr = adr.idn
LEFT JOIN katcols kt4 ON kt4.klucz = n.katcol4 AND kt4.typ=0 AND kt4.colnr=5
LEFT JOIN osoby O ON n.idnuser = O.idnuser AND O.idnuser <>''

WHERE n.rodzaj IN (27, 52) AND n.deleted=0 
and n.datawystaw >= _OdDnia and n.datawystaw <= _DoDnia

GROUP BY n.GUID

into outfile '/var/lib/mysql/spedcust.csv' FIELDS TERMINATED BY '^'
-- into outfile '/tmp/spedcust.csv' FIELDS TERMINATED BY '^'
-- into outfile '/home/users/intssh/spedcust.csv' FIELDS TERMINATED BY '^'
;
*/
                

END IF;    --    IF _MODE = SPEDCUST


IF (_MODE = 'STAN_PARTIE') THEN  -- "Zestawienie sumaryczne obrotow za okres od...."  CScenPRN_ZESTSUMARYCZNEOBRZAOKR = 'ZEST_SUM_OBR_ZA_OKR'
		
		SET @BO= (SELECT MAX(datawplywu) FROM oppo op WHERE op.rodzaj=51);
	
		DROP TEMPORARY TABLE IF EXISTS `oppo_mag_dost`;
			CREATE TEMPORARY TABLE `oppo_mag_dost` (
			`GUID` VARCHAR(38) NOT NULL DEFAULT '',
			`magazyn` INT(11) NOT NULL DEFAULT '0',
			`idntowr` VARCHAR(38) NOT NULL DEFAULT '',
			`datawplywu` DATE NOT NULL,
			`ilosc` DOUBLE(16,4) NOT NULL DEFAULT '0.0000',
			`tymczasowa` INT(11) NOT NULL DEFAULT '0',
			`przychod` INT(11) NOT NULL DEFAULT '0',
			`IdnOper` VARCHAR(38) NOT NULL DEFAULT '',
			`dost` VARCHAR(38) NOT NULL DEFAULT '',
			`dataprodukcji` DATE NOT NULL,
			`GUIDdost` VARCHAR(38) NOT NULL DEFAULT '',
		UNIQUE KEY `mag_guid` (`magazyn`,`datawplywu`,`GUID`),
		KEY `idntowr` (`idntowr`,`magazyn`,`datawplywu`,`przychod`),
		KEY `data` (`datawplywu`,`magazyn`,`idntowr`),
		KEY `GUID_mag` (`GUID`,`magazyn`),
		KEY `IdnOper` (`IdnOper`)   
		);                           
		
		 INSERT IGNORE INTO `oppo_mag_dost`
			(`GUID`,`magazyn`,`idntowr`,`datawplywu`,`ilosc`,`tymczasowa`,`przychod`,`IdnOper`,dost)
		SELECT 
			guid, domagazynu, idntowr, datawplywu, ABS(ilosc), tymczasowa, 1, idnoper ,guid
			FROM oppo o 
			WHERE 
			domagazynu <> 0 
			AND usluga = 0
			AND (ilosc <> 0 OR wartnet <> 0 OR wartbrt <> 0)
			AND datawplywu >= @BO;      
        
			INSERT IGNORE INTO `oppo_mag_dost`
			(`GUID`,`magazyn`,`idntowr`,`datawplywu`,`ilosc`,`tymczasowa`,`przychod`,`IdnOper`,dost)
			SELECT 
			guid, zmagazynu, idntowr, datawplywu, -ABS(ilosc), tymczasowa, 0, idnoper,GUID_dostawy
			FROM oppo o 
			WHERE 
			zmagazynu <> 0 
			AND usluga = 0
			AND (ilosc <> 0 OR wartnet <> 0 OR wartbrt <> 0)
			AND datawplywu >= @BO;
        
        
			UPDATE oppo_mag_dost d,oppo o SET    d.dataprodukcji=o.datawplywu WHERE o.guid=d.dost AND o.rodzaj=13;
			UPDATE oppo_mag_dost d,oppo o SET    d.GUIDdost=o.guid_dostawy WHERE o.guid=d.dost AND d.dataprodukcji='0000-00-00';
	
	
		BEGIN
		DECLARE ile INT DEFAULT 1;
		WHILE ile > 0 DO
		SET ile= (SELECT COUNT(*) FROM oppo_mag_dost d,oppo o  WHERE o.guid=d.GUIDdost AND o.rodzaj=13 AND  d.dataprodukcji='0000-00-00');
			UPDATE oppo_mag_dost d,oppo o SET    d.dataprodukcji=o.datawplywu WHERE o.guid=d.GUIDdost AND o.rodzaj=13;
	        UPDATE oppo_mag_dost d,oppo o SET    d.GUIDdost=o.guid_dostawy WHERE o.guid=d.GUIDdost AND d.dataprodukcji='0000-00-00'; 
		
		END WHILE;
		END;
		
	 SELECT COUNT(*) FROM oppo_mag_dost;
	 	
	END IF;  -- _MODE = 'STAN_PARTIE'

-- Zestawienie ilosci wg partii dostaw, dla Izohanu i SQB ilosci_po_partaich.sqb (blad w nazwie p liku)	
-- CALL fr_ht_zest('ILOSCI_WG_PARTII','','','',#NaDzien#,'','','','','','','');
-- CALL fr_ht_zest('ILOSCI_WG_PARTII','','','','2018-12-19','','','','','','','');   
-- CALL fr_ht_zest('ILOSCI_WG_PARTII','','','','2018-12-19','','','','','','','KONTROLA_');   
IF (_MODE = 'ILOSCI_WG_PARTII') THEN  

	SET @NaDzien = _NaDzien;

	DROP TABLE IF EXISTS kontrola;
	CREATE TEMPORARY TABLE kontrola
	SELECT magazyn, idntowr, t.symbol, t.wyroznik, SUM(ilosc) AS ilosc 
	FROM oppo_mag m
	INNER JOIN TowrNg t ON m.idntowr=t.guid
	WHERE tymczasowa=0 AND datawplywu>='2019-01-01'
	AND datawplywu <= @NaDzien
	GROUP BY magazyn, idntowr
	HAVING ilosc<>0
	;
	ALTER TABLE kontrola ADD INDEX magazyn(magazyn), ADD INDEX idntowr(idntowr);


	DROP TABLE IF EXISTS datybo;
	CREATE TEMPORARY TABLE datybo
	SELECT IF(n.domagazynu>0,n.domagazynu,n.zmagazynu) AS magazyn,
	p.idntowr, 
	MAX(n.datawplywu) AS databo
	FROM opng n
	INNER JOIN oppo p ON n.guid=p.idnoper
	WHERE n.datawplywu>='2019-01-01'
	AND n.datawplywu <= @NaDzien
	AND n.deleted=0 AND n.tymczasowa=0 AND p.usluga=0
	AND n.rodzaj IN (51,39)
	GROUP BY IF(n.domagazynu>0,n.domagazynu,n.zmagazynu), p.idntowr;

	ALTER TABLE datybo ADD COLUMN idn INT(11);
	ALTER TABLE datybo ADD INDEX magazyn(magazyn), ADD INDEX idntowr(idntowr), ADD INDEX databo(databo), ADD INDEX idn(idn);
	UPDATE datybo SET idn=0;

	DROP TABLE IF EXISTS datybo2;
	CREATE TEMPORARY TABLE datybo2
	SELECT d.magazyn, d.databo, d.idntowr, 
	MAX(n.idn) AS idn, 
	COUNT(n.guid) AS ilosc
	FROM datybo d
	INNER JOIN oppo p ON p.domagazynu=d.magazyn AND p.idntowr=d.idntowr AND p.datawplywu=d.databo AND p.iloscjest>0
	INNER JOIN opng n ON n.guid=p.idnoper
	GROUP BY d.magazyn, d.databo, d.idntowr
	HAVING ilosc>1
	;

	UPDATE datybo d, datybo2 d2
		SET d.idn = d2.idn
	WHERE d2.magazyn=d.magazyn AND d2.idntowr=d.idntowr
	;



	DROP TABLE IF EXISTS wyd;
	CREATE TEMPORARY TABLE wyd
	SELECT 
	o.zmagazynu AS magazyn,
	o.datawplywu,
	o.rodzaj,o.guidzm,o.idntowr,
	o.guid_dostawy,
	-- o.ilosc AS wydano,
	-- SUM(IF(o.rodzaj IN (67,68),o.iloscjest,o.ilosc)) AS wydano,
	SUM(IF(o.rodzaj IN (68),-o.iloscjest,o.ilosc)) AS wydano,
	IFNULL(z.idn,'brak') AS idn_pozycji_zlecenia,
	IFNULL(n.nrzamw,'brak') AS nr_zlecenia
	FROM oppo o
	INNER JOIN kontrola k ON k.magazyn = o.zmagazynu AND k.idntowr = o.idntowr
	LEFT JOIN zmpo z ON z.guid=o.guid_dostawy
	LEFT JOIN zmng n ON n.guid=z.idnNg
	WHERE o.usluga=0
	-- guid_dostawy<>'' AND
	AND o.datawplywu>= IFNULL((SELECT databo FROM datybo WHERE magazyn=o.zmagazynu AND idntowr=o.idntowr),'2019-01-01')
	AND o.datawplywu <= @NaDzien
	AND o.zmagazynu>0 
	AND o.rodzaj NOT IN (67,68)
 GROUP BY guid_dostawy,o.idntowr, o.zmagazynu
 HAVING wydano<>0;

     
	DROP TABLE IF EXISTS przyjecia;
	CREATE TEMPORARY TABLE przyjecia
	SELECT 
	g.rodzaj,g.datawplywu, o.guidzm,o.idntowr,
	IF(o.domagazynu>0,o.domagazynu,o.zmagazynu) AS magazyn,
	o.guid_dostawy,t.symbol,t.nazwa,
	IFNULL(z.idn,'brak') AS idn_pozycji_zlecenia,
	IFNULL(n.nrzamw,'brak') AS nr_zlecenia,
	SUM(ABS(IF(o.rodzaj IN (67,68),o.iloscjest,o.ilosc))) AS dostawy,
	o.wartmag
	FROM oppo o
	INNER JOIN kontrola k ON k.magazyn = IF(o.domagazynu>0,o.domagazynu,o.zmagazynu) AND k.idntowr = o.idntowr
	LEFT JOIN opng g ON o.idnoper=g.guid
	LEFT JOIN zmpo z ON z.guid=o.guid_dostawy
	LEFT JOIN zmng n ON n.guid=z.idnNg
	LEFT JOIN TowrNg t ON o.idntowr=t.guid
	WHERE IF(o.rodzaj IN (67,68),o.iloscjest>0,o.domagazynu>0)
	AND o.datawplywu >= IFNULL((SELECT databo FROM datybo WHERE magazyn= IF(o.domagazynu>0,o.domagazynu,o.zmagazynu) AND idntowr=o.idntowr),'2019-01-01')
	AND g.idn >= IFNULL((SELECT idn FROM datybo WHERE magazyn= IF(o.domagazynu>0,o.domagazynu,o.zmagazynu) AND idntowr=o.idntowr),0)
	AND o.datawplywu <= @NaDzien
	AND g.deleted=0 AND o.usluga=0
	AND IF(o.rodzaj IN (67,68),o.iloscjest>0,TRUE)

	-- and o.domagazynu=110 and t.symbol='MW_DN_20' and g.rodzaj=13
	-- and o.domagazynu=110 and t.symbol='MI_ID_05_BRĄZOWY'

	GROUP BY guid_dostawy,o.idntowr,IF(o.domagazynu>0,o.domagazynu,o.zmagazynu)
	;

	ALTER TABLE przyjecia 
	ADD INDEX idn_pozycji_zlecenia(idn_pozycji_zlecenia),
	ADD INDEX idntowr(idntowr),
	ADD INDEX magazyn(magazyn);



	UPDATE przyjecia t
	SET t.nr_zlecenia=IFNULL((SELECT zn.nrzamw FROM zmpo zp, zmng zn WHERE zn.GUID = zp.IdnNg AND  zp.guid=t.GUIDzm),'brak2'),
	t.idn_pozycji_zlecenia=IFNULL((SELECT _varSTR(zp.idn) FROM zmpo zp, zmng zn WHERE zn.GUID = zp.IdnNg AND zp.guid=t.GUIDzm),'brak2')
	WHERE t.idn_pozycji_zlecenia='brak' AND t.rodzaj=13 AND t.guid_dostawy='';


	UPDATE przyjecia t
	SET t.nr_zlecenia=IFNULL((SELECT zn.nrzamw FROM oppo d, zmpo zp, zmng zn WHERE zp.GUID = d.GUIDzm AND zn.GUID = zp.IdnNg AND d.guid=t.GUID_Dostawy),'brak3'),
	t.idn_pozycji_zlecenia=IFNULL((SELECT _varSTR(zp.idn) FROM oppo d, zmpo zp, zmng zn WHERE zp.GUID = d.GUIDzm AND zn.GUID = zp.IdnNg AND d.guid=t.GUID_Dostawy AND d.guid=t.GUID_Dostawy AND zp.idntowr=t.idntowr),'brak3')
	WHERE t.idn_pozycji_zlecenia IN ('brak','brak2',NULL) AND t.guid_dostawy<>'';


	UPDATE przyjecia t
	SET 
	t.nr_zlecenia=IFNULL((SELECT zn.nrzamw FROM zmpo zp, zmng zn WHERE zp.GUID = t.GUID_dostawy AND zn.GUID = zp.IdnNg),'brak4'),
	t.idn_pozycji_zlecenia=IFNULL((SELECT _varSTR(zp.idn) FROM zmpo zp, zmng zn WHERE zp.GUID = t.GUID_dostawy AND zn.GUID = zp.IdnNg AND zp.idntowr=t.idntowr),'brak4')
	WHERE t.idn_pozycji_zlecenia IN ('brak','brak2','brak3',NULL) AND t.guid_dostawy<>'';


	DROP TABLE IF EXISTS stany;
	CREATE TEMPORARY TABLE stany

	SELECT 
	p.magazyn,p.datawplywu,
	p.guid_dostawy,t.symbol,t.nazwa,p.idntowr, t.idn, t.wyroznik, j.nazwa AS jm, t.opakowanie_d AS il_opak,
	SZ.nazwa AS status,
	p.idn_pozycji_zlecenia,
	p.nr_zlecenia,
	SUM(ABS(p.dostawy)) AS dostawy,
	IFNULL(w.wydano,0) AS wydano,
	SUM(ABS(p.dostawy))-IFNULL(w.wydano,0) AS pozostalo,
	p.wartmag
	FROM  przyjecia p
	LEFT JOIN TowrNg t ON p.idntowr=t.guid
	LEFT JOIN wyd w ON p.idn_pozycji_zlecenia=w.idn_pozycji_zlecenia AND w.magazyn=p.magazyn AND p.idntowr=w.idntowr
	INNER JOIN Jednostki j ON j.idn = t.jednostka
	LEFT JOIN status_zapisu SZ ON SZ.idn=t.promocja_status and SZ.rodzaj=0 
	GROUP BY  p.idn_pozycji_zlecenia, p.idntowr,p.magazyn
	HAVING pozostalo <> 0
	;                                

	INSERT INTO stany
	SELECT magazyn,p.datawplywu,
	p.guid_dostawy,t.symbol,t.nazwa,p.idntowr, t.idn, t.wyroznik, j.nazwa AS jm, t.opakowanie_d AS il_opak,
	SZ.nazwa AS status,
	p.idn_pozycji_zlecenia,
	p.nr_zlecenia,
	0 AS dostawy,
	SUM(p.wydano) AS wydano,
	0 AS pozostalo,
	0 AS wartmag
	FROM wyd p
	INNER JOIN TowrNg t ON t.guid=p.idntowr
	INNER JOIN Jednostki j ON j.idn = t.jednostka
	LEFT JOIN status_zapisu SZ ON SZ.idn=t.promocja_status and SZ.rodzaj=0 
	WHERE CONCAT(idn_pozycji_zlecenia,magazyn,idntowr) NOT IN (SELECT CONCAT(idn_pozycji_zlecenia,magazyn,idntowr) FROM przyjecia)
	-- OR idn_pozycji_zlecenia LIKE 'brak%')
	AND wydano<>0
	GROUP BY  p.idn_pozycji_zlecenia, p.idntowr,p.magazyn
	;

	IF _Param_D = 'KONTROLA' THEN

		DROP TABLE IF EXISTS stany2;
		CREATE TEMPORARY TABLE stany2
		SELECT 
		magazyn, symbol, idntowr, wyroznik, 
		SUM(dostawy)-SUM(wydano) AS pozostalo
		FROM stany
		GROUP BY magazyn, idntowr
		;

		SELECT 
			k.ilosc AS kontrola_ilosc, 
			s.pozostalo AS pozostalo,
			s.* 
			FROM stany2 s
			LEFT JOIN kontrola k ON k.magazyn=s.magazyn AND k.idntowr=s.idntowr
			WHERE (k.ilosc)<>(s.pozostalo)
			-- AND (s.magazyn = 110) 
			-- AND (s.symbol = 'MI_ID_05_BRĄZOWY' OR s.symbol='MW_DN_20' OR s.symbol='_EEDA' OR s.symbol='MR_DK_10_RYTM_TRADE'
			-- OR s.symbol='ZH_TAŚMA_BIT_100/10_CZARNY') 
		;


	END IF; -- kontrola

END IF;  -- _MODE = 'ILOSCI_WG_PARTII'


IF (_MODE = 'KONTROLA_kalkulacji') THEN  
		SELECT 
	IF(SZ.niewidoczny <> 1,'aktywna','nieaktywna') AS stan_karty,IF(n.nieaktywna<>0,'niaktywna','aktywna') AS stan_receptury,IF(r.idnng_merge<>'','receptura_skladowa','') AS podreceptura,	
		k1.valuex AS `Dział`,n.nazwa AS `Nazwa receptury`,r.cena_kalulacyjna, t.cenazkpnet,t.symbol , t.cenazkpnet-r.cena_kalulacyjna AS roznica ,
			r.idntowr,r.guid 
			FROM rcpo r 
		LEFT JOIN rcng n ON n.guid=r.idnng 
		LEFT JOIN TowrNg t ON t.guid=r.idntowr 
		LEFT JOIN `v_ktw1` k1 ON k1.klucz=t.katcol1 
		LEFT JOIN status_zapisu SZ ON SZ.idn=t.promocja_status AND SZ.rodzaj=0 
		WHERE
		 IF(_PARAM_D<>'',t.katcol1=_PARAM_D,TRUE)
		AND  IF(_PARAM_B=1,n.nieaktywna=0,TRUE)
		AND  IF(_PARAM_C=1,r.idnng_merge='',TRUE)
		AND  IF(_PARAM_A=1,SZ.niewidoczny <> 1,TRUE)
HAVING ABS(roznica)>'0.00999';
	

END IF;  -- _MODE = 'ILOSCI_WG_PARTII'

IF _MODE IN ('check.wersje') THEN
		
	DROP TABLE IF EXISTS t_wersje_nieaktualne;	
	CREATE TABLE t_wersje_nieaktualne
		SELECT 
			con_ID AS sesja,Connect_at AS czas,log_USER,CONCAT(o.nazwisko,' ',o.imie1) AS osoba ,log_HOST,log_HOST_NAME,log_MACADDRESS,
		
			IFNULL(log_APP_ver,
				(SELECT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(info,"Wersja:",-1)," ",2)) AS wersja FROM `log` l
				WHERE l.czynnosc=-1 AND DATE(l.czas)=DATE(s.Connect_at) AND l.osobaguid=s.log_USER_GUID 
				AND l.sessionid=s.con_ID AND info LIKE "%HT2003%" AND info NOT LIKE "%App=%"  AND info LIKE "%Wersja%"
			GROUP BY sessionid )) AS wersja
			
		FROM `_sys_db_logons` s 
		LEFT JOIN osoby o ON s.log_USER_GUID =o.guid 
		
		WHERE log_APPNAME=_GUID AND DATE(Connect_at) = _NaDzien  AND DATE(Logged_at)= _NaDzien  HAVING wersja<>_Param_D
		ORDER BY czas DESC ;
		
END IF;

-- zestawienie sprzedazy dla Aste - sprzedaz powyzej 100k zł z dodatkowymi danymi
-- CALL fr_ht_zest('SPRZED_100K', '', '', '', '', '2026-01-01','2026-12-31', '', '', '', '','');
IF _MODE IN ('SPRZED_100K') THEN
	DROP TABLE IF EXISTS tt_sprzed100;
	CREATE TEMPORARY TABLE tt_sprzed100 (
	 kontrGUID varchar(38) NOT NULL DEFAULT '',
	 netto DECIMAL(16,2),
  kredyt DECIMAL(16,2),
  wart_zam_nz DECIMAL(16,2),
  wart_niezapl DECIMAL(16,2),
  wart_przet DECIMAL(16,2),
  KEY kontrGUID (kontrGUID)
 ) DEFAULT CHARSET=cp1250;

	insert into tt_sprzed100 (kontrGUID, netto, kredyt)
	SELECT k.guid,
 SUM(n.netto) AS sprzed,
 k.kredyt
 FROM kontrah k
 JOIN opng n ON k.guid = n.kontrguid
 join operdoc op ON n.rodzaj = op.rodzaj
 WHERE n.deleted = 0
 AND n.datawplywu >= _OdDnia  -- '2026-01-01'
 AND n.datawplywu <= _DoDnia  -- '2026-12-31'
 AND op.grupa = 0
 GROUP BY k.guid
 HAVING sprzed >= 100000
 ORDER BY k.symbol
 ;

	UPDATE tt_sprzed100 t SET
	t.wart_zam_nz =
	(SELECT
	SUM(_Rnd2((ilosc - zrealizowano) * cenanet * n.kurs)) AS wart_niezreal
	FROM zmng n, zmpo p
	WHERE n.guid = p.idnng
	AND n.deleted = 0 AND n.rodzaj IN (27,52)
	AND n.datawplywu >= _OdDnia  -- '2026-01-01'
 AND n.datawplywu <= _DoDnia  -- '2026-12-31'
 AND p.ilosc <> p.zrealizowano
	AND n.kontrguid = t.kontrGUID
	GROUP BY n.kontrguid)
	;

	UPDATE tt_sprzed100 t SET
	t.wart_niezapl =
	(select sum(IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone) AS CPozostalo
	FROM opng O
	join operdoc op ON O.rodzaj = op.rodzaj
	INNER JOIN kontrah KK ON O.platnikGUID=KK.GUID
	WHERE
		O.PlatnikGUID IN (SELECT kontrGUID FROM tt_sprzed100)
		AND op.grupa = 0
		-- AND O.CWN = 1 AND O.CKwota <> 0
		-- AND O.deleted = 0 AND O.rozrachunek = 1 AND O.gruparozrach IN (1,2)
		AND ABS(IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone) > 0.009
	AND O.kontrguid = t.kontrGUID
	GROUP BY O.kontrguid)
	;

	UPDATE tt_sprzed100 t SET
	t.wart_przet =
	(select sum(IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone) AS CPozostalo
	FROM opng O
	join operdoc op ON O.rodzaj = op.rodzaj
	INNER JOIN kontrah KK ON O.platnikGUID=KK.GUID
	WHERE
		O.PlatnikGUID IN (SELECT kontrGUID FROM tt_sprzed100)
		AND op.grupa = 0
		-- AND O.CWN = 1 AND O.CKwota <> 0
		-- AND O.deleted = 0 AND O.rozrachunek = 1 AND O.gruparozrach IN (1,2)
		AND ABS(IF(O.CWN, O.CKwota, -O.CKwota)- O.CRozliczone) > 0.009
		AND TO_DAYS(1*CURRENT_DATE)-TO_DAYS(1*O.dataplatnosci) >= 0
	AND O.kontrguid = t.kontrGUID
	GROUP BY O.kontrguid)
	;



END IF;

END$$

DELIMITER ;
