﻿-- exec [C6MartPeriodico].[Segnala_ProdottiNonCensiti]
CREATE procedure [C6MartPeriodico].[Segnala_ProdottiNonCensiti_20190129]
as
	set nocount on
	declare @Rete varchar(1)
	declare @CodFis varchar(20)
	declare @idTipoControllo int
	declare @tipprod varchar(100)
	declare @codint varchar(100)
	declare @codprod varchar(100)
	declare @subprod varchar(100)
	declare @maf varchar(100)
	declare @codabi varchar(100)
	declare @isin varchar(100)
	--create table C6MartPeriodico.tSegnala_ProdottiNonCensiti_Result (dtTrim varchar(8), rete varchar(1), codiceFiscale varchar(20), TIPPROD varchar(100), CODINT varchar(100), CODPROD varchar(100), SUBPROD varchar(100), MAF varchar(100), CODABI varchar(100), ISIN varchar(100))
	declare @dtTrim varchar(8)
	set @dtTrim = [C6MartPeriodico].[getTrimestre](getdate(),0)
	exec dbo.CreaTabellaBackUp 'tSegnala_ProdottiNonCensiti_Result', 'C6MartPeriodico'
	truncate table C6MartPeriodico.tSegnala_ProdottiNonCensiti_Result
	declare cur cursor for
		SELECT rete, codiceFiscale, idTipoControllo
		FROM [C6StampeCentralizzate].[C6MartPeriodico].[tb_SegnalazioniDataQuality]			
		where idTipoControllo in (1, 2)
		--SELECT a.rete, a.codiceFiscale, a.idTipoControllo
		--FROM [C6StampeCentralizzate].[C6MartPeriodico].[tb_SegnalazioniDataQuality] a
		--	inner join [C6StagingPeriodico].[APPO_CONTRATTI_LIMITER] b
		--	on a.rete = b.rete
		--	and a.codiceFiscale = b.cod_fiscale
		--where a.idTipoControllo in (1, 2)
	  --and codiceFiscale = 'VNTGNN63D16D704Q'
	open cur
	fetch next from cur into @Rete, @CodFis, @idTipoControllo
	while @@fetch_status = 0
		begin
		select @tipprod = tipprod,
			@codint = codint,
			@codprod = codprod,
			@subprod = subprod,
			@maf = maf,
			@codabi = codabi,
			@isin = isin
		from C6StagingPeriodico.SPB_CONTR_SINTESI SPB
		where
			SPB.rete = @Rete and SPB.codfis = @CodFis
			and positionid is NULL
		order by tipprod, codint, subprod
		if @maf = ''
			set @maf = null
		if @idTipoControllo = 1
			begin
				-- 1. TipProd
				declare @TipoProdotto varchar(100)
				select distinct @TipoProdotto = TipoProdotto
				from C6StagingPeriodico.RP_CatalogoProdotti
				where TipoProdotto = @tipprod -- and codsottoprodotto = 'LSEL' and TipoProdotto = 'ASU2'-- AND CODMAF = '1499131' and codIsin = 'LU1829331989'
				--if @@rowcount = 0
				if @TipoProdotto is null
					begin
						insert into C6MartPeriodico.tSegnala_ProdottiNonCensiti_Result (dtTrim, rete, codiceFiscale, TIPPROD, CODPROD, MAF, CODABI ) values (@dtTrim, @Rete, @CodFis, @tipprod, @codprod, @maf, @codabi)
						--select 'Rete = ' + @Rete + ' CodiceFiscale = ' + @CodFis + ' NON CENSITO ' + 'TipoProdotto = ' + @tipprod --+ ', CodInterno = ' + @codint + ', CodSottoProdotto = ' + @subprod + ', CodIsin = ' + @isin
					end
				else
					begin
						-- 2. CodInt
						declare @CodInterno varchar(100)
						select distinct @CodInterno = codinterno
						from C6StagingPeriodico.RP_CatalogoProdotti
						where
							TipoProdotto = @tipprod
							and
							codinterno = @codint -- and codsottoprodotto = 'LSEL' and TipoProdotto = 'ASU2'-- AND CODMAF = '1499131' and codIsin = 'LU1829331989'
						--if @@rowcount = 0
						if @CodInterno is null
							begin
								insert into C6MartPeriodico.tSegnala_ProdottiNonCensiti_Result (dtTrim, rete, codiceFiscale, TIPPROD, CODINT, CODPROD, MAF, CODABI) values (@dtTrim, @Rete, @CodFis, @tipprod, @codint, @codprod, @maf, @codabi)
								--select 'Rete = ' + @Rete + ' CodiceFiscale = ' + @CodFis + ' NON CENSITO ' + 'TipoProdotto = ' + @tipprod + ', CodInterno = ' + @codint --+ ', CodSottoProdotto = ' + @subprod + ', CodIsin = ' + @isin
							end
						else
							begin
								-- 3. SubProd
								declare @CodSottoProdotto varchar(100)
								select distinct @CodSottoProdotto = codsottoprodotto
								from C6StagingPeriodico.RP_CatalogoProdotti
								where
									TipoProdotto = @tipprod
									and
									codinterno = @codint
									and
									codsottoprodotto = @subprod
								--if @@rowcount = 0
								if @CodSottoProdotto is null
									begin
										insert into C6MartPeriodico.tSegnala_ProdottiNonCensiti_Result (dtTrim, rete, codiceFiscale, TIPPROD, CODINT, CODPROD, SUBPROD, MAF, CODABI) values (@dtTrim, @Rete, @CodFis, @tipprod, @codint, @codprod, @subprod, @maf, @codabi)
										--select 'Rete = ' + @Rete + ' CodiceFiscale = ' + @CodFis + ' NON CENSITO ' + 'TipoProdotto = ' + @tipprod + ', CodInterno = ' + @codint + ', CodSottoProdotto = ' + @subprod --+ ', CodIsin = ' + @isin
									end
								else
									begin
										-- 4. Isin
										declare @CodIsin varchar(100)
										select distinct @CodIsin = codIsin
										from C6StagingPeriodico.RP_CatalogoProdotti
										where
											TipoProdotto = @tipprod
											and
											codinterno = @codint
											and
											codsottoprodotto = @subprod
											and
											codIsin = @isin
										--if @@rowcount = 0
										if @CodIsin is null
											begin
												insert into C6MartPeriodico.tSegnala_ProdottiNonCensiti_Result (dtTrim, rete, codiceFiscale, TIPPROD, CODINT, CODPROD, SUBPROD, MAF, CODABI, ISIN) values (@dtTrim, @Rete, @CodFis, @tipprod, @codint, @codprod, @subprod, @maf, @codabi, @isin)
												--select 'Rete = ' + @Rete + ' CodiceFiscale = ' + @CodFis + ' NON CENSITO ' + 'TipoProdotto = ' + @tipprod + ', CodInterno = ' + @codint + ', CodSottoProdotto = ' + @subprod + ', CodIsin = ' + @isin
											end
										else
											begin
												-- 5. Maf
												declare @CodMaf varchar(100)
												select distinct codmaf
												from C6StagingPeriodico.RP_CatalogoProdotti
												where
													TipoProdotto = @tipprod
													and
													codinterno = @codint
													and
													codsottoprodotto = @subprod
													and
													codIsin = @isin
													and
													CodMaf = @maf
												--if @@rowcount = 0
												if @CodMaf is null
													begin
														insert into C6MartPeriodico.tSegnala_ProdottiNonCensiti_Result (dtTrim, rete, codiceFiscale, TIPPROD, CODINT, CODPROD, SUBPROD, MAF, CODABI, ISIN) values (@dtTrim, @Rete, @CodFis, @tipprod, @codint, @codprod, @subprod, @maf, @codabi, @isin)
														--select 'Rete = ' + @Rete + ' CodiceFiscale = ' + @CodFis + ' NON CENSITO ' + 'TipoProdotto = ' + @tipprod + ', CodInterno = ' + @codint + ', CodSottoProdotto = ' + @subprod + ', CodIsin = ' + @isin + ', CodMaf = ' + @maf
													end
												else
													begin
														insert into C6MartPeriodico.tSegnala_ProdottiNonCensiti_Result (dtTrim, rete, codiceFiscale) values (@dtTrim, @Rete, @CodFis)
														--select 'CENSITO'
													end
											end
										end
									end
								end
							end
			else
				begin
					declare @DesProd varchar(200)
					declare @cod_interno varchar(100)
					declare @cod_sottoprodotto varchar(100)
					select @cod_interno = cod_interno, @cod_sottoprodotto = cod_sottoprodotto, @DesProd = DesProd from C6MartPeriodico.PROVENTI where rete = @Rete and cod_fiscale = @CodFis
					if @DesProd is null
						insert into C6MartPeriodico.tSegnala_ProdottiNonCensiti_Result (dtTrim, rete, codiceFiscale, CODINT, SUBPROD) values (@dtTrim, @Rete, @CodFis, @cod_interno, @cod_sottoprodotto)
				end
			--*************************
			set @TipoProdotto = null
			set @CodInterno = null
			set @CodSottoProdotto = null
			set @CodMaf = null
			set @CodIsin = null
			fetch next from cur into @Rete, @CodFis, @idTipoControllo
	end
	close cur
	deallocate cur
	select
		Rete,
		CodiceFiscale,
		isnull(TIPPROD, '') as TIPPROD,
		isnull(CODINT, '') as CODINT,
		isnull(CODPROD, '') as CODPROD,
		isnull(SUBPROD, '') as SUBPROD,
		isnull(MAF, '') as MAF,
		isnull(CODABI, '') as CODABI,
		isnull(ISIN, '') as ISIN
	from C6MartPeriodico.tSegnala_ProdottiNonCensiti_Result
	order by TIPPROD, CODINT, CODPROD, SUBPROD, MAF, CODABI, ISIN
	--drop table C6MartPeriodico.tSegnala_ProdottiNonCensiti_Result