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

DROP PROCEDURE IF EXISTS `fr_ht_ST`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `fr_ht_ST`(
	IN _MODE VARCHAR(38),
	IN _GUID VARCHAR(38),
	IN _Scenario VARCHAR(50),
	IN _Rok INT(11),
	IN _Param_A VARCHAR(50),
	IN _Param_B VARCHAR(50),
	IN _Param_C VARCHAR(50),
	IN _Param_D VARCHAR(50)
)
BEGIN
	# w domysle i przyszlosci definicje wydrukow zwiazanych ze srodkami trwalymi
	# takze z danymi o amortyzacji - to jako osobne zestawy danych

	# KARTA1_NAGLOWEK - wydruk karty srodka trwalego - dane naglowkowe, z TowrNg
	# KARTA1_DANE - wydruk karty srodka trwalego - dane czyli tabele amortyzacyjne
	
	#SET @Symbol = UPPER(_Symbol);
	#SET @GUID = _GUID;

	DECLARE _st_datalikwidacji DATE;
	DECLARE _wer2 INT;
	DECLARE _rok INT;
	DECLARE _st_wartumozenia DOUBLE(16,2);
	DECLARE _st_wartumozenia_podatk DOUBLE(16,2);
	DECLARE _st_wartpocz DOUBLE(16,2);
	DECLARE _st_wartpocz_podatk DOUBLE(16,2);

	SET @Param_A = _Param_A;
	SET @Param_B = _Param_B;
	SET @Param_C = _Param_C;
	SET @Param_D = _Param_D;
	

	SELECT st_datalikwidacji into _st_datalikwidacji from TowrNg where GUID = _GUID;
	SELECT ValueB into _wer2 from IReg where idkey ='ST_WYDRUK_PO_LIKW_WER2';

	/********************************************************************************
KARTA1_NAGLOWEK- wydruk karty srodka trwalego - naglowek
select guid, st_datalikwidacji, st_pozost_fin,  t.* from TowrNg t where usluga=5 and sww like '1943/T%';

CALL fr_ht_ST('KARTA1_NAGLOWEK','{40DD1259-01DE-4B8C-80AD-003C287B7628}','','','','','','')
CALL fr_ht_ST('KARTA1_NAGLOWEK','{3EC3091A-77F5-49F5-BD39-319C0C216A90}','','','','','','')
********************************************************************************/
	IF _MODE = 'KARTA1_NAGLOWEK' THEN

		IF _wer2 = 0 OR _st_datalikwidacji is null THEN

		SELECT
		'fr_ht_ST_KARTA1_NAG' as fr_ht_ST_KARTA1_NAG,
		_Scenario as scenariusz,
		(select towrnazwa from oppo where rodzaj=93 and idntowr= _GUID limit 1) as likwidacja_opis,
			t.*,

			st_wartpocz as st_wartpocz2,
			st_wartpocz_podatk as st_wartpocz_podatk2,
			st_wartumozenia as st_wartumozenia2,
			st_wartumozenia_podatk as st_wartumozenia_podatk2,
			-- st_pozost_fin as st_pozost_fin2, tak powinno bc, ale pole nie jest wyliczone
			st_wartosc - st_wartumozenia as st_pozost_fin2,
			-- st_pozost_podatk as st_pozost_podatk2,
			st_wartosc_podatk - st_wartumozenia_podatk as st_pozost_podatk2,

			case when t.st_metody_amor=0 then 'liniowa'
						when t.st_metody_amor=1 then 'degresywna'
			end as metoda_amort,
			str.nazwa as rodzaj_nazwa,
			str.symbol as rodzaj_symbol,
			stat.nazwa as st_status,
			m.nazwa as miejsce,
			case when t.st_klasyfikacja = 0 then 'środek trwały'
						when t.st_klasyfikacja = 1 then 'wyposażenie'
						when t.st_klasyfikacja = 2 then 'składnik'
						when t.st_klasyfikacja = 3 then 'wart. niematerialna'
			end as klasyfikacja,
			OFPo.procent AS stawka_f,
			OPPo.procent AS stawka_p,
			OGPo.procent AS stawka_g,
			concat(os.imie1,' ',os.nazwisko) osobaname

			FROM TowrNg t
			LEFT JOIN st_rodzaje str ON str.idn = t.st_rodzaj
			LEFT JOIN st_status stat ON stat.idn = t.st_sprzedany
			LEFT JOIN st_miejsca m ON m.idn = t.st_miejsce

			LEFT JOIN tabeleodsetek of ON t.st_TabelaAmortF = of.idn
			LEFT JOIN tabeleodsetek op ON t.st_TabelaAmortP = op.idn
			LEFT JOIN tabeleodsetek og ON t.st_TabelaAmortG = og.idn
			LEFT JOIN tabodsetki OFPo ON of.GUID = OFPo.tabelaGUID AND OFPo.data = (SELECT MAX(sub_ofpo.data) FROM tabodsetki sub_ofpo WHERE sub_ofpo.tabelaGUID = of.GUID)
			LEFT JOIN tabodsetki OPPo ON op.GUID = OPPo.tabelaGUID AND OPPo.data = (SELECT MAX(sub_oppo.data) FROM tabodsetki sub_oppo WHERE sub_oppo.tabelaGUID = op.GUID)
			LEFT JOIN tabodsetki OGPo ON og.GUID = OGPo.tabelaGUID AND OGPo.data = (SELECT MAX(sub_ogpo.data) FROM tabodsetki sub_ogpo WHERE sub_ogpo.tabelaGUID = og.GUID)
			LEFT JOIN osoby os ON os.GUID=t.osobaGUID

			WHERE t.guid = _GUID
			AND t.usluga = 5
			;

		END IF;

		IF _wer2 = 1 AND _st_datalikwidacji is not null THEN

			-- select * from tabamort where idntowr = _GUID and rok = _rok;

			SET _rok = YEAR(_st_datalikwidacji);
			select WartInwBO, WartUmoZM INTO _st_wartpocz, _st_wartumozenia from tabamort where idntowr = _GUID and rok = _rok and rodzaj = 0 and plan = 0;
			select WartInwBO, WartUmoZM INTO _st_wartpocz_podatk, _st_wartumozenia_podatk from tabamort where idntowr = _GUID and rok = _rok and rodzaj = 1 and plan = 0;

			SELECT
		'fr_ht_ST_KARTA1_NAG' as fr_ht_ST_KARTA1_NAG,
		_Scenario as scenariusz,
		(select towrnazwa from oppo where rodzaj=93 and idntowr= _GUID limit 1) as likwidacja_opis,
			t.*,

			_st_wartpocz as st_wartpocz2,
			_st_wartpocz_podatk as st_wartpocz_podatk2,

			_st_wartumozenia as st_wartumozenia2,
			_st_wartumozenia_podatk as st_wartumozenia_podatk2,
			_st_wartpocz -  _st_wartumozenia as st_pozost_fin2,
			_st_wartpocz_podatk - _st_wartumozenia_podatk as st_pozost_podatk2,

			case when t.st_metody_amor=0 then 'liniowa'
						when t.st_metody_amor=1 then 'degresywna'
			end as metoda_amort,
			str.nazwa as rodzaj_nazwa,
			str.symbol as rodzaj_symbol,
			stat.nazwa as st_status,
			m.nazwa as miejsce,
			case when t.st_klasyfikacja = 0 then 'środek trwały'
						when t.st_klasyfikacja = 1 then 'wyposażenie'
						when t.st_klasyfikacja = 2 then 'składnik'
						when t.st_klasyfikacja = 3 then 'wart. niematerialna'
			end as klasyfikacja,
			OFPo.procent AS stawka_f,
			OPPo.procent AS stawka_p,
			OGPo.procent AS stawka_g,
			concat(os.imie1,' ',os.nazwisko) osobaname

			FROM TowrNg t
			LEFT JOIN st_rodzaje str ON str.idn = t.st_rodzaj
			LEFT JOIN st_status stat ON stat.idn = t.st_sprzedany
			LEFT JOIN st_miejsca m ON m.idn = t.st_miejsce

			LEFT JOIN tabeleodsetek of ON t.st_TabelaAmortF = of.idn
			LEFT JOIN tabeleodsetek op ON t.st_TabelaAmortP = op.idn
			LEFT JOIN tabeleodsetek og ON t.st_TabelaAmortG = og.idn
			LEFT JOIN tabodsetki OFPo ON of.GUID = OFPo.tabelaGUID AND OFPo.data = (SELECT MAX(sub_ofpo.data) FROM tabodsetki sub_ofpo WHERE sub_ofpo.tabelaGUID = of.GUID)
			LEFT JOIN tabodsetki OPPo ON op.GUID = OPPo.tabelaGUID AND OPPo.data = (SELECT MAX(sub_oppo.data) FROM tabodsetki sub_oppo WHERE sub_oppo.tabelaGUID = op.GUID)
			LEFT JOIN tabodsetki OGPo ON og.GUID = OGPo.tabelaGUID AND OGPo.data = (SELECT MAX(sub_ogpo.data) FROM tabodsetki sub_ogpo WHERE sub_ogpo.tabelaGUID = og.GUID)
			LEFT JOIN osoby os ON os.GUID=t.osobaGUID

			WHERE t.guid = _GUID
			AND t.usluga = 5
			;



		END IF;


	END IF;

/********************************************************************************
	KARTA1_DANE- wydruk karty srodka trwalego - dane, czyli tabele amortyzacyjne
	
	CALL fr_ht_ST('KARTA1_DANE','{40DD1259-01DE-4B8C-80AD-003C287B7628}','','','','','','')	
********************************************************************************/
	IF _MODE = 'KARTA1_DANE' THEN

	SELECT
	'fr_ht_ST_KARTA1_DANE' as fr_ht_ST_KARTA1_DANE,
	_Scenario as scenariusz,
		tab.*,
		if(zm01+ zm02+ zm03+ zm04+ zm05+ zm06+ zm07+ zm08+ zm09+ zm10+zm11+ zm12 <= 0, abs(zm01+ zm02+ zm03+ zm04+ zm05+ zm06+ zm07+ zm08+ zm09+ zm10+zm11+ zm12), 0)
		as zm,

		if(zm01+ zm02+ zm03+ zm04+ zm05+ zm06+ zm07+ zm08+ zm09+ zm10+zm11+ zm12 >= 0, abs(zm01+ zm02+ zm03+ zm04+ zm05+ zm06+ zm07+ zm08+ zm09+ zm10+zm11+ zm12), 0)
		as zw,

		case when tab.rodzaj=0 then 'finansowa'
		     when tab.rodzaj=1 then 'podatkowa'
		end as amortyzacja
		FROM tabamort tab
		
		WHERE tab.idntowr = _GUID 
		AND tab.plan=0
		order by tab.rok, tab.rodzaj; 


	END IF;

/**************************************************
Wydruk nalepek ze srodków trwałych, oparty na podobnym wydruku dla towarow

**************************************************/

  IF _MODE ='ST_NALEPKI' THEN -- and _Scenario='ST_NALEPKI_???'  THEN

		SELECT CONCAT(OS.Nazwisko,' ',OS.Imiona) AS osobaName, ST.st_grupa,
			ST.kod_kreskowy,
			S.nazwa AS status_srodka, ST.data_zalozenia, ST.st_datazamortyzowania,
			ST.st_datalikwidacji, ST.NazwaUProducenta, ST.uzytkownikNazwa, '0' AS checked,
			ST.st_WartInwNiepodlegaAmort, ST.st_WartInwNiepodlegaAmortP, ST.st_zmn_podstF,
			ST.st_zmn_podstP, ST.st_opis_miejsca, 
			case when ST.st_klasyfikacja = 0 then 'środek trwały'
			  when ST.st_klasyfikacja = 1 then 'wypoasażenie'
			  when ST.st_klasyfikacja = 2 then 'składnik'
			  when ST.st_klasyfikacja = 3 then 'wart. niematerialna'
			end as klasyfikacja,
			ST.NumerOT,
			ST.NumerSeryjny, ST.analitykaFK, ST.st_rata_amort, ST.st_rata_amort_podatk,
			ST.st_wyl_automat_amort, ST.idn, ST.GUID, ST.st_lp, ST.symbol, ST.Nazwa,
			ST.sww, ST.opis, K.nazwa AS dostawca_nazwa, 
			CONCAT(K.ulica,', ',K.NazwaMiasta) AS dostawca_adres, ST.st_numer_faktury AS faktura_nr,
			CONCAT(SUBSTRING(REPLACE(ST.opis,'\r\n',' '),1, 97),(IF(LENGTH(ST.opis)>97,'...',''))) AS trajler, 
			M.nazwa AS miejsce, R.nazwa AS rodzaj, ST.st_sprzedany,
			ST.st_ilosc, ST.st_cena, ST.st_datanabycia, ST.st_datawdrozenia,
			ST.st_wartpocz, ST.st_wartpocz_podatk, ST.st_wartosc, ST.st_wartosc_podatk,
			ST.st_wartumozenia, ST.st_wartumozenia_podatk,
			ST.st_wartosc - ST.st_wartumozenia AS st_pozost_fin,
			ST.st_wartosc_podatk - ST.st_wartumozenia_podatk AS st_pozost_podatk,
			_varINT_NOTNULL(S.naliczac_amort) AS amortyzowany,  IFNULL(ST.st_wzordekr, '') AS wzor_dekr,
			ST.nazwa_segment6,
			(SELECT SUM(wartnet) FROM oppo PP WHERE PP.idntowr=ST.GUID AND PP.rodzaj <>  92) AS zmniejsz_zwieksz,
			ST.st_opis_miejsca, 
			ST.st_lp_miejsce, ST.st_przewlaszcz,
			ST.deleted, ST.localtime, ST.st_pp_metraz, ST.st_pp_wartosc,
			ST.st_pp_data_podleg, ST.st_nowy_nr_inwent, ST.pop_nrinwet,
			KC0.Valuex AS katcol0, KC1.Valuex AS katcol1, ST.st_nieaktywny 
		FROM TowrNg ST 
		LEFT JOIN kontrah K ON K.GUID = ST.uzytkownikGUID 
		LEFT JOIN st_miejsca M ON ST.st_miejsce = M.idn 
		LEFT JOIN st_rodzaje R ON ST.st_rodzaj = R.idn 
		LEFT JOIN st_status S ON ST.st_sprzedany = S.idn 
		LEFT JOIN katcols KC0 ON ST.katcol0 = KC0.klucz AND KC0.colnr = 1 AND KC0.typ = 4 
		LEFT JOIN katcols KC1 ON ST.katcol1 = KC1.klucz AND KC1.colnr = 2 AND KC1.typ = 4 
		LEFT JOIN osoby OS ON OS.GUID=ST.osobaGUID 
		WHERE ST.usluga = 5
			AND ST.GUID = _GUID;

  END IF;  
  
  IF _MODE ='ST_NALEPKI_SERYJNIE' THEN -- and _Scenario='ST_NALEPKI_TW' 

		SELECT CONCAT(OS.Nazwisko,' ',OS.Imiona) AS osobaName, ST.st_grupa,
			ST.kod_kreskowy,
			S.nazwa AS status_srodka, ST.data_zalozenia, ST.st_datazamortyzowania,
			ST.st_datalikwidacji, ST.NazwaUProducenta, ST.uzytkownikNazwa, '0' AS checked,
			ST.st_WartInwNiepodlegaAmort, ST.st_WartInwNiepodlegaAmortP, ST.st_zmn_podstF,
			ST.st_zmn_podstP, ST.st_opis_miejsca, 
			case when ST.st_klasyfikacja = 0 then 'środek trwały'
			  when ST.st_klasyfikacja = 1 then 'wypoasażenie'
			  when ST.st_klasyfikacja = 2 then 'składnik'
			  when ST.st_klasyfikacja = 3 then 'wart. niematerialna'
			end as klasyfikacja,
			ST.NumerOT,
			ST.NumerSeryjny, ST.analitykaFK, ST.st_rata_amort, ST.st_rata_amort_podatk,
			ST.st_wyl_automat_amort, ST.idn, ST.GUID, ST.st_lp, ST.symbol, ST.Nazwa,
			ST.sww, ST.opis, K.nazwa AS dostawca_nazwa, 
			CONCAT(K.ulica,', ',K.NazwaMiasta) AS dostawca_adres, ST.st_numer_faktury AS faktura_nr,
			CONCAT(SUBSTRING(REPLACE(ST.opis,'\r\n',' '),1, 97),(IF(LENGTH(ST.opis)>97,'...',''))) AS trajler, 
			M.nazwa AS miejsce, R.nazwa AS rodzaj, ST.st_sprzedany,
			ST.st_ilosc, ST.st_cena, ST.st_datanabycia, ST.st_datawdrozenia,
			ST.st_wartpocz, ST.st_wartpocz_podatk, ST.st_wartosc, ST.st_wartosc_podatk,
			ST.st_wartumozenia, ST.st_wartumozenia_podatk,
			ST.st_wartosc - ST.st_wartumozenia AS st_pozost_fin,
			ST.st_wartosc_podatk - ST.st_wartumozenia_podatk AS st_pozost_podatk,
			_varINT_NOTNULL(S.naliczac_amort) AS amortyzowany,  IFNULL(ST.st_wzordekr, '') AS wzor_dekr,
			ST.nazwa_segment6,
			(SELECT SUM(wartnet) FROM oppo PP WHERE PP.idntowr=ST.GUID AND PP.rodzaj <>  92) AS zmniejsz_zwieksz,
			ST.st_opis_miejsca, 
			ST.st_lp_miejsce, ST.st_przewlaszcz,
			ST.deleted, ST.localtime, ST.st_pp_metraz, ST.st_pp_wartosc,
			ST.st_pp_data_podleg, ST.st_nowy_nr_inwent, ST.pop_nrinwet,
			KC0.Valuex AS katcol0, KC1.Valuex AS katcol1, ST.st_nieaktywny 
		FROM TowrNg ST 
		INNER JOIN tb_towrng w ON ST.GUID = w.GUID
		LEFT JOIN kontrah K ON K.GUID = ST.uzytkownikGUID 
		LEFT JOIN st_miejsca M ON ST.st_miejsce = M.idn 
		LEFT JOIN st_rodzaje R ON ST.st_rodzaj = R.idn 
		LEFT JOIN st_status S ON ST.st_sprzedany = S.idn 
		LEFT JOIN katcols KC0 ON ST.katcol0 = KC0.klucz AND KC0.colnr = 1 AND KC0.typ = 4 
		LEFT JOIN katcols KC1 ON ST.katcol1 = KC1.klucz AND KC1.colnr = 2 AND KC1.typ = 4 
		LEFT JOIN osoby OS ON OS.GUID=ST.osobaGUID 
		WHERE ST.usluga = 5
		;  -- ShlShell.CreateTableWithCDSOnlyKeyField('t_towr', False, True);

  END IF; 


END$$

DELIMITER ;
