USE [TryNFeOnline]
GO
ALTER TABLE [dbo].[Servico] ADD 
[idnHabilitaCampoPrecoAppOSTransporte] [bit] NULL
GO
ALTER TABLE [dbo].[parceiro] ADD 
[cnae] [varchar] (15) COLLATE Latin1_General_CI_AS NULL
GO
ALTER TABLE [dbo].[produto] ALTER COLUMN [qtdProdutoOrigem] [decimal] (18,10) NULL
GO
ALTER TABLE [dbo].[NFseItens] ADD 
[tipoBenefMunicipal] [varchar] (50) COLLATE Latin1_General_CI_AS NULL,
[idBenefMunicipal] [varchar] (50) COLLATE Latin1_General_CI_AS NULL,
[valorRedBCBenefMunicipal] [decimal] (18,4) NULL,
[percRedBCBenefMunicipal] [decimal] (18,4) NULL
GO
ALTER TABLE [dbo].[estoqueAjustes] ADD 
[idTecnico] [int] NULL
GO
ALTER TABLE [dbo].[emitente] ADD 
[indAmbienteGeracaoNFSe] [int] NULL,
[idnUtilizarACBrLibNFSe] [bit] NULL
GO
ALTER TABLE [dbo].[CondicionalProduto] ADD 
[precoCusto] [decimal] (18,4) NULL
GO
ALTER TABLE [dbo].[notafiscal] ADD 
[NFSeCodigoCancelamentoString] [varchar] (10) COLLATE Latin1_General_CI_AS NULL
GO
CREATE TABLE [dbo].[ACBrEvento]
(
	[id] [int] IDENTITY (1,1) NOT NULL,
	[dscMetodo] [varchar] (50) COLLATE Latin1_General_CI_AS NOT NULL,
	[idNotaFiscal] [int] NOT NULL,
	[codVerificacao] [varchar] (200) COLLATE Latin1_General_CI_AS NULL,
	[link] [varchar] (1000) COLLATE Latin1_General_CI_AS NULL,
	[data] [varchar] (50) COLLATE Latin1_General_CI_AS NULL,
	[lote] [varchar] (200) COLLATE Latin1_General_CI_AS NULL,
	[protocolo] [varchar] (200) COLLATE Latin1_General_CI_AS NULL,
	[situacao] [varchar] (20) COLLATE Latin1_General_CI_AS NULL,
	[xmlEnvio] [varchar] (max) COLLATE Latin1_General_CI_AS NULL,
	[xmlRetorno] [varchar] (max) COLLATE Latin1_General_CI_AS NULL,
	[codigoErro] [varchar] (50) COLLATE Latin1_General_CI_AS NULL,
	[correcaoErro] [varchar] (500) COLLATE Latin1_General_CI_AS NULL,
	[descricaoErro] [varchar] (1000) COLLATE Latin1_General_CI_AS NULL,
	CONSTRAINT [PK_ACBrEvento] PRIMARY KEY CLUSTERED
	(
		[id] ASC
	) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY  = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

ALTER FUNCTION [dbo].[CurvaABC]
(
	@dataIni datetime,
	@dataFin datetime,
	@idEmitente int = 0,
	@porcTipoAInf decimal(18,4),
	@porcTipoBInf decimal (18,4)
)
RETURNS 
@Resultado TABLE 
(
		produto_id int,
		produtoClasse_id int,
		emitente varchar(500),
		descricaoProduto varchar(500),
		unidadeMedida varchar(30),
		quantidade decimal(18,4),
		valorProduto decimal(18,4),
		tipoABC char,
		saldoEstoque decimal(18,4)
)
AS
BEGIN	
	
	declare @ABC TABLE
	(
		idProduto int,
		idProdutoclasse int,
		emitente varchar(500),
		descricaoProduto varchar(500),
		unidadeMedida varchar(30),
		quantidade decimal(18,4),
		valorProduto decimal(18,4),
		tipoABC char,
		contadorLinhas int,
		totalLinhas int
	)
	
	declare @lista ListaProdutos

	insert into @ABC 
		select nfp.idProduto, nfp.idProdutoClassificacao,nfem.razaosocial, 
		--case when nf.dataCompetencia is not null then nf.dataCompetencia when nf.dataEmissaoNotaFiscal is not null then nf.dataEmissaoNotaFiscal else nf.dataEmissao END, 
		nfp.descricao, nfp.ucom, sum(nfp.qcom), sum(nfp.vprod),
		null, ROW_NUMBER() OVER (ORDER BY sum(nfp.qcom) DESC) AS RowNumber, 0
		from nfproduto nfp
		inner join notafiscal nf on nf.id = nfp.idNotaFiscal
		inner join operacao op on op.id = nf.idOperacao
		inner join nfEmitente nfem on nfem.idNotaFiscal = nf.id
		where cast(nf.dataEmissao as date) between @dataIni and @dataFin
		and (nf.tipodocumento = 1)
		and (op.idnCompraVenda = 1)
		and (nf.nfeCstat in (100,150))
		and (nf.nfetpamb = 1)
		group by nfp.idProduto, nfp.idProdutoClassificacao,nfp.descricao, nfp.ucom, nfem.razaosocial
		order by sum(nfp.qcom) DESC
	
	update @ABC set totalLinhas = (select max(contadorLinhas) from @ABC)
	update @ABC set tipoABC = 'A' where contadorLinhas <= (select totalLinhas * @porcTipoAInf /100)
	update @ABC set tipoABC = 'B' where contadorLinhas <= (select totalLinhas * (@porcTipoBInf+ @porcTipoAInf) /100) and tipoABC is null
	update @ABC set tipoABC = 'C' where tipoABC is null

	insert into @Resultado select idProduto, idProdutoclasse, emitente, descricaoProduto, unidadeMedida, quantidade, valorProduto, tipoABC, 0 from @ABC

	insert into @lista select produto_id, produtoClasse_id from @Resultado

	update @Resultado set saldoEstoque = (select coalesce(qtd,0) from EstoqueProdutos2(null,@idEmitente,0,0,0,0,0,1,@lista,1,0) ep where ep.idProduto = produto_id and coalesce(ep.idProdutoClassificacao,0) = coalesce(produtoClasse_id,0))

	RETURN 
	
END
GO
INSERT [dbo].[configuracaoNovo] ([nomeParametro], [descricaoSimplificada], [descricaoDetalhada], [tipoValor], [valor], [grupo], [subgrupo], [tamanhoValorMaximo], [idnParametroMultilinhas], [idnParametroRadio], [idnParametroSelecaoPasta], [idnPermiteAlteracaoApenasPorAdmins], [idnCampoSenha], [tabelaSelecao], [filtroSelecao], [validacaoRegularExpression], [idnPermiteSelecaoMultiplaOpcoes]) VALUES (N'idnSalvarArquivosACBrIni', N'Salvar na pasta do sistema os arquivos INI gerados referente ao ACBr', N'', N'bool', N'True', N'Geral', N'Configurações Gerais', NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL)
INSERT INTO [dbo].[configuracaoNovo]([nomeParametro],[descricaoSimplificada],[descricaoDetalhada],[tipoValor],[valor],[grupo],[subgrupo],[tamanhoValorMaximo],[idnParametroMultilinhas],[idnParametroRadio],[idnParametroSelecaoPasta],[idnPermiteAlteracaoApenasPorAdmins],[idnCampoSenha],[tabelaSelecao],[filtroSelecao],[validacaoRegularExpression],[idnPermiteSelecaoMultiplaOpcoes]) VALUES ('apiTokenReceitaWS', 'Token API ReceitaWS', 'Token da API ReceitaWS que permite a consulta do CNPJ retornando as informações da empresa', 'varchar', '490c82895d7924262e17a748abf418dd772edaeb95c0cbebff78357c254957b1', 'Geral', 'Configurações do Parceiro',null,0,0,0,1,1,null,null,null,0)
GO
INSERT INTO VERSAO(VERSAO, VERSAOATUALIZACAO, DATAATUALIZACAO, REVISAO) VALUES(503, 761, GETDATE(),1);
