if exists(select  1 from sys.procedures where name = 'p_plug_Farma_tipoRegistro_Dez')
    begin 
		drop procedure p_plug_Farma_tipoRegistro_Dez;
    end;
go

--p_plug_Farma_tipoRegistro_Dez 3,'20190319'
create procedure p_plug_Farma_tipoRegistro_Dez (@filial int, @data  date, @cd_emp INT= 1)
as
declare @contador int;
IF Object_id('tempDB..#TmpResVendas', 'U') IS NOT NULL
	DROP TABLE #TmpResVendas;

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

	CREATE TABLE #TmpResVendas (tiporegistro			INT
								, numeroRegistroVenda	INT
								, datareferenciavenda		DATETIME
								, valortotalvendaliquido	MONEY
								, horareferenciavenda	DATETIME
								, numeronota			INT
								, tipopagamento			INT
								, numeroRegistroPessoa	INT
								, tiponotavenda			INT
								, serienota				VARCHAR(50)
								, serieecf				VARCHAR(50)
								, cd_vd					INT
								, uf					VARCHAR(2)
								, cod_cli				INT
								, cd_vend				int)
 
	INSERT INTO  #TmpResVendas			
	EXEC p_plug_Farma_tipoRegistro_nove	@filial, @data, @cd_emp;

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

	CREATE TABLE #TmpRsItens (tiporegistro	int	
								,numeroregistroitemvenda	bigint
								,numeroregistrovenda	int
								,codigobarrasproduto	varchar(50)
								,quantidadeproduto	money
								,valorunitariobrutoproduto	money
								,valorunitarioliquidoproduto	money
								,valortotalliquidoitensregistro	money
								,valorcmv	money
								,tipoestoque	int
								,quantidadeestoque	money
								,pbmvenda	int
								,numeroregistrocolaborador	int
								,produtoprescrito	int	
								,codigobarrasvendido	varchar	(50)
								,cd_prod	int
								,numreg	varchar	(100)
								,cd_vd	int	)

/*********************************************************************************************/	
-- Vendas por cupom
 
	insert into #TmpRsItens
	SELECT
		   tiporegistro
		 , numeroregistroitemvenda
		 , numeroregistrovenda
		 , codigobarrasproduto
		 , quantidadeproduto
		 , valorunitariobrutoproduto
		 , valorunitarioliquidoproduto
		 , valortotalliquidoitensregistro
		 , valorcmv
		 , tipoestoque
		 , quantidadeestoque
		 , pbmvenda
		 , numeroregistrocolaborador
		 , produtoprescrito
		 , codigobarrasproduto codigobarrasvendido
		 , cd_prod
		 , numreg
		 , cd_vd
	FROM
		(SELECT
			10 AS tipoRegistro
			, ROW_NUMBER() OVER(ORDER BY IT.cd_vd ASC) AS numeroRegistroItemVenda
			, t.numeroRegistroVenda AS numeroRegistroVenda
			, COALESCE((SELECT TOP 1 cd_barra FROM est_prod_cd_barra WHERE ean_caixa_fechada = 0 
																AND EAN_VALIDO=1
										AND cd_emp = PROD.cd_emp AND cd_prod = PROD.cd_prod ORDER BY cd_barra),
											case when cpl.tp_prod = 10 then '88888888888888' else '99999999999999' end ) AS codigoBarrasProduto
			, IT.qt_it AS quantidadeProduto
			, IT.vlr_it AS valorUnitarioBrutoProduto
			, ((CASE WHEN (it.TOT_IT - it.VLR_DESC_TOT_RAT) > 0 THEN 
				it.TOT_IT - it.VLR_DESC_TOT_RAT ELSE 	0 END)  / IT.qt_it) AS valorUnitarioLiquidoProduto
			, (CASE WHEN (it.TOT_IT - it.VLR_DESC_TOT_RAT) > 0 THEN 
				it.TOT_IT - it.VLR_DESC_TOT_RAT ELSE 	0 END) AS valorTotalLiquidoItensRegistro
			, IT.vlr_custo_medio AS valorCmv
			, case when IT.qt_est_ant >= 0 then 1 else 0 end AS tipoEstoque
			, IT.qt_est_ant AS quantidadeEstoque
			 , case when CONV.ds_conv IS NULL then 0
				else (CASE CONV.ds_conv WHEN 'VIDALINK' THEN 1
												 WHEN 'ORIZON/PREVSAUDE' THEN 2
												 WHEN 'EPHARMA' THEN 3
												 WHEN 'FARMACIA POPULAR' THEN 4
												 WHEN 'PHARMA SYSTEM' THEN 5
												 WHEN 'FUNCIONAL CARD' THEN 6
												 WHEN 'NOVARTIS' THEN 7
												 ELSE 99
											 END ) end AS pbmVenda
			 , IT.cd_vend AS numeroRegistroColaborador
			 ,case when PROD.controle_sngpc = 1 then 2
					  when PROD.antibiotico = 1 then 1
					else 99 end AS produtoPrescrito
			 , it.cd_barra AS codigoBarrasVendido
			 , PROD.cd_prod
			 , convert(varchar(20), PROD.cd_prod) +  '-' + convert(varchar(20),IT.cd_it) +  '-' + convert(varchar(20), IT.cd_vd) AS numReg
			 , IT.cd_vd
		FROM
			 pdv_vd_it IT
			INNER JOIN est_prod_cpl cpl ON   CPL.cd_emp  = IT.cd_emp
										 AND CPL.cd_prod = IT.cd_prod
										 AND CPL.cd_FILIAL = IT.cd_FILIAL
			 INNER JOIN est_prod PROD ON PROD.cd_emp = IT.cd_emp
										 AND PROD.cd_prod = IT.cd_prod
			 JOIN #TmpResVendas t ON IT.cd_vd = t.cd_vd
									 AND IT.cd_filial = @filial
									 AND IT.cd_emp = 1
									 AND T.tiponotavenda <> 4--Nota Fiscal
			 LEFT JOIN pdv_vd_it_vd_pbm PBM ON PBM.cd_emp = IT.cd_emp
											   AND PBM.cd_filial = IT.cd_filial
											   AND PBM.cd_vd = IT.cd_vd
											   AND PBM.cd_it = IT.cd_it
			 LEFT JOIN rc_cli_conv CONV ON CONV.cd_emp = PBM.cd_emp
										   AND CONV.cd_filial = PBM.cd_filial
										   AND CONV.cd_cli = PBM.cd_cli_pbm
		WHERE it.cd_emp = @cd_emp
			  AND IT.cd_filial = @filial
			  and it.st_it=1
	) AS VENDASITENS
	
/*********************************************************************************************/
 --Vendas nota fiscal
/*********************************************************************************************/
	Set @contador =isnull((select max(numeroRegistroItemVenda) from #TmpRsItens),0) 



	insert into #TmpRsItens
	SELECT
			tiporegistro
			, @contador+numeroregistroitemvenda
			, numeroregistrovenda
			, codigobarrasproduto
			, quantidadeproduto
			, valorunitariobrutoproduto
			, valorunitarioliquidoproduto
			, valortotalliquidoitensregistro
			, valorcmv
			, tipoestoque
			, quantidadeestoque
			, pbmvenda
			, numeroregistrocolaborador
			, produtoprescrito
			, codigobarrasproduto codigobarrasvendido
			, cd_prod
			, numreg
			, cd_nf
	FROM
		(SELECT
			10 AS tipoRegistro
			, ROW_NUMBER() OVER(ORDER BY IT.cd_NF ASC) AS numeroRegistroItemVenda
			, t.numeroRegistroVenda AS numeroRegistroVenda
			, COALESCE((SELECT TOP 1 cd_barra FROM est_prod_cd_barra WHERE ean_caixa_fechada = 0 
																AND EAN_VALIDO=1
										AND cd_emp = PROD.cd_emp AND cd_prod = PROD.cd_prod ORDER BY cd_barra),
											case when cpl.tp_prod = 10 then '88888888888888' else '99999999999999' end ) AS codigoBarrasProduto
			, IT.qt_it AS quantidadeProduto
			, IT.vlr_it AS valorUnitarioBrutoProduto

			, IT.VLR_TOT_IT/IT.qt_it AS valorUnitarioLiquidoProduto
			, VLR_TOT_IT AS valorTotalLiquidoItensRegistro
			, IT.vlr_custo_md AS valorCmv
			, case when IT.qt_est_ant >= 0 then 1 else 0 end AS tipoEstoque
			, IT.qt_est_ant AS quantidadeEstoque
			,  99    AS pbmVenda
			, t.cd_vend AS numeroRegistroColaborador
			, 99 AS produtoPrescrito
			, COALESCE((SELECT TOP 1 cd_barra FROM est_prod_cd_barra WHERE ean_caixa_fechada = 0 
																AND EAN_VALIDO=1
										AND cd_emp = PROD.cd_emp AND cd_prod = PROD.cd_prod ORDER BY cd_barra),
											case when cpl.tp_prod = 10 then '88888888888888' else '99999999999999' end ) AS codigoBarrasVendido
			, PROD.cd_prod
			, convert(varchar(20), PROD.cd_prod) +  '-' + convert(varchar(20),IT.cd_it) +  '-' + convert(varchar(20), IT.cd_nf) AS numReg
			, IT.cd_nf
		FROM
			est_nf_sai_it it
			INNER JOIN est_prod_cpl cpl ON   CPL.cd_emp  = IT.cd_emp
										 AND CPL.cd_prod = IT.cd_prod
										 AND CPL.cd_FILIAL = IT.cd_FILIAL
			INNER JOIN est_prod PROD ON PROD.cd_emp = IT.cd_emp
										AND PROD.cd_prod = IT.cd_prod

			JOIN #TmpResVendas t ON		IT.cd_nf	 = t.cd_vd
									AND IT.cd_filial = @filial
									AND IT.cd_emp	 = 1
									AND T.tiponotavenda = 4--Nota Fiscal
										 
		WHERE it.cd_emp = @cd_emp
				AND IT.cd_filial = @filial 
	) AS VENDASITENS;


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

	SELECT * 
	FROM 
		#TmpRsItens
	ORDER BY numeroregistroitemvenda;