-- Schema: C6MartPeriodico
-- Stored Procedure: Segnala_ProdottiNonCensiti





-- exec [C6MartPeriodico].[Segnala_ProdottiNonCensiti]
CREATE procedure [C6MartPeriodico].[Segnala_ProdottiNonCensiti]
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 @contaLimiter int

	select @contaLimiter = count(*) from [C6StagingPeriodico].[APPO_CONTRATTI_LIMITER]

	if @contaLimiter = 0
		begin
			declare cur cursor for			
				SELECT rete, codiceFiscale, idTipoControllo
				FROM [C6StampeCentralizzate].[C6MartPeriodico].[tb_SegnalazioniDataQuality]			
				where idTipoControllo in (1, 2)
		end
	else
		begin
			declare cur cursor for
				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)
		end
	  --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