update Versao
set PatchVersao = 3
where versao = 3
  and subversao = 1
GO

if not exists(select * from sysobjects where name like 'ProdutosANP')
begin
	Create Table ProdutosANP (
	  Codigo               bigint not null,
	  DescProduto          Varchar(200) Collate Latin1_General_CI_AS not null,
	  StatusTransacao      Smallint not null,
	  TransacaoEmpresas    Varchar(50) Collate Latin1_General_CI_AS not null 
		
	  CONSTRAINT PK_ProdutosANP PRIMARY KEY CLUSTERED 
	  (
		Codigo ASC
	  ) ON [PRIMARY]
	)
	exec sp_bindefault 'dbo.Numero',   'ProdutosANP.Codigo'
	exec sp_bindefault 'dbo.Caracter', 'ProdutosANP.DescProduto'	
	exec sp_bindefault 'dbo.Numero',   'ProdutosANP.StatusTransacao'
	exec sp_bindefault 'dbo.Caracter', 'ProdutosANP.TransacaoEmpresas'
end									
GO

--Gabriella - 370940
Alter table Produtos disable trigger all

if not exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[Produtos]') and 
                                                 Name Like 'CodProdutoANP' And
                                                 OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin
  Alter Table Produtos Add CodProdutoANP bigint
end
go

sp_bindefault 'dbo.Numero', 'Produtos.CodProdutoANP'
go
Update Produtos Set CodProdutoANP = -1
where CodProdutoANP is null
go 
Alter Table Produtos Alter Column CodProdutoANP bigint Not Null
go

Alter table Produtos enable trigger all

--Gabriella - 370940
if not exists(select * from ProdutosANP where DescProduto <> '')
begin
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(810201001,	'ÁLCOOL METÍLICO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101001,	'BIODIESEL B100', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101010,	'BIODIESEL FORA DE ESPECIFICAÇÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610101009,	'BRIGHT STOCK', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(210202003,	'BUTADIENO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(210202001,	'BUTANO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(210202002,	'BUTANO ESPECIAL', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620501002,	'CICLO DIESEL', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620501001,	'CICLO OTTO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610101005,	'CILINDRO I', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610101006,	'CILINDRO II', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620601003,	'CORRENTE DE MOTOSSERRA', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(340101002,	'DERIVADOS LEVES INTERMEDIÁRIOS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(560101002,	'DERIVADOS PESADOS INTERMEDIÁRIOS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101026,	'DIESEL B S1800 PARA GERAÇÃO DE ENERGIA ELÉTRICA', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101032,	'DIESEL B S50 PARA GERAÇÃO DE ENERGIA ELÉTRICA', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101027,	'DIESEL B S500 PARA GERAÇÃO DE ENERGIA ELÉTRICA', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101004,	'DIESEL B10', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101005,	'DIESEL B15', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101022,	'DIESEL B2 ESPECIAL - 200 PPM ENXOFRE', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101014,	'DIESEL B20 S1800 - ADITIVADO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101006,	'DIESEL B20 S1800 - COMUM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101031,	'DIESEL B20 S50 ADITIVADO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101030,	'DIESEL B20 S50 COMUM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101016,	'DIESEL B20 S500 - ADITIVADO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101015,	'DIESEL B20 S500 - COMUM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101025,	'DIESEL B30', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101007,	'DIESEL B4 S1800 - ADITIVADO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101002,	'DIESEL B4 S1800 - COMUM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101009,	'DIESEL B4 S500 - ADITIVADO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101008,	'DIESEL B4 S500 - COMUM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101017,	'DIESEL MARÍTIMO - DMA B2', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101018,	'DIESEL MARÍTIMO - DMA B5', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101019,	'DIESEL MARÍTIMO - DMB B2', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101020,	'DIESEL MARÍTIMO - DMB B5', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101021,	'DIESEL NÁUTICO B2 ESPECIAL - 200 PPM ENXOFRE', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(420201001,	'DMA - MGO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(420201003,	'DMB - MDO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620101002,	'ENGRENAGENS E SISTEMAS CIRCULATÓRIOS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620101007,	'ESTAMPAGEM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(210301001,	'ETANO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(810102001,	'ETANOL ANIDRO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(810102004,	'ETANOL ANIDRO COM CORANTE', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(810102002,	'ETANOL ANIDRO FORA DE ESPECIFICAÇÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(810102003,	'ETANOL ANIDRO PADRÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(810101002,	'ETANOL HIDRATADO ADITIVADO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(810101001,	'ETANOL HIDRATADO COMUM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(810101003,	'ETANOL HIDRATADO FORA DE ESPECIFICAÇÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(210301002,	'ETENO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(210302004,	'GÁS ÁCIDO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(210101001,	'GÁS COMBUSTÍVEL', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(210302003,	'GÁS DE XISTO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(210302002,	'GÁS INTERMEDIÁRIO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(210204001,	'GÁS LIQUEFEITO INTERMEDIÁRIO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(220101003,	'GÁS NATURAL COMPRIMIDO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(220101004,	'GÁS NATURAL LIQUEFEITO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(220101002,	'GÁS NATURAL SECO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(220101001,	'GÁS NATURAL ÚMIDO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(220101005,	'GÁS NATURAL VEICULAR', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(220101006,	'GÁS NATURAL VEICULAR PADRÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(520101001,	'GASÓLEOS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(320101001,	'GASOLINA A COMUM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(320101003,	'GASOLINA A FORA DE ESPECIFICAÇÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(320101002,	'GASOLINA A PREMIUM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(320103001,	'GASOLINA AUTOMOTIVA PADRÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(320102002,	'GASOLINA C ADITIVADA', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(320102001,	'GASOLINA C COMUM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(320102004,	'GASOLINA C FORA DE ESPECIFICAÇÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(320102003,	'GASOLINA C PREMIUM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(320201001,	'GASOLINA DE AVIAÇÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(320201002,	'GASOLINA DE AVIAÇÃO FORA DE ESPECIFICAÇÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(220102001,	'GASOLINA NATURAL (C5+)', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(320301002,	'GASOLINA PARA EXPORTAÇÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(210203001,	'GLP', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(210203002,	'GLP FORA DE ESPECIFICAÇÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(650101001,	'GRAXAS MINERAIS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620101001,	'HIDRÁULICO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610201001,	'HIDROGENADO LEVE', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610201002,	'HIDROGENADO MÉDIO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610201003,	'HIDROGENADO PESADO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620101004,	'ISOLANTE TIPO A', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620101005,	'ISOLANTE TIPO B', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(220102002,	'LÍQUIDO DE GÁS NATURAL', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(640201001,	'MACROOLEOSAS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(640101001,	'MICROOLEOSAS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620502001,	'MOTORES 2 TEMPOS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610101002,	'NEUTRO LEVE', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610401002,	'NEUTRO LEVE RR', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610101003,	'NEUTRO MÉDIO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610401003,	'NEUTRO MÉDIO RR', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610101004,	'NEUTRO PESADO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610401004,	'NEUTRO PESADO RR', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(510101003,	'ÓLEO COMBUSTÍVEL A FORA DE ESPECIFICAÇÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(510101001,	'ÓLEO COMBUSTÍVEL A1', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(510101002,	'ÓLEO COMBUSTÍVEL A2', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(510102003,	'ÓLEO COMBUSTÍVEL B FORA DE ESPECIFICAÇÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(510102001,	'ÓLEO COMBUSTÍVEL B1', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(510102002,	'ÓLEO COMBUSTÍVEL B2', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(510201001,	'ÓLEO COMBUSTÍVEL MARÍTIMO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(510201002,	'ÓLEO COMBUSTÍVEL MARÍTIMO FORA DE ESPECIFICAÇÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(510201003,	'ÓLEO COMBUSTÍVEL MARÍTIMO MISTURA (MF)', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(510301003,	'ÓLEO COMBUSTÍVEL PARA GERAÇÃO ELÉTRICA', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(560101001,	'ÓLEO DE XISTO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(420105001,	'ÓLEO DIESEL A S10', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(420101005,	'ÓLEO DIESEL A S1800 - ADITIVADO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(420101004,	'ÓLEO DIESEL A S1800 - COMUM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(420101003,	'ÓLEO DIESEL A S1800 - FORA DE ESPECIFICAÇÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(420102006,	'ÓLEO DIESEL A S50', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(420102005,	'ÓLEO DIESEL A S500 - ADITIVADO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(420102004,	'ÓLEO DIESEL A S500 - COMUM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(420102003,	'ÓLEO DIESEL A S500 - FORA DE ESPECIFICAÇÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(420104001,	'ÓLEO DIESEL AUTOMOTIVO ESPECIAL - ENXOFRE 200 PPM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101033,	'ÓLEO DIESEL B S10 - ADITIVADO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101034,	'ÓLEO DIESEL B S10 - COMUM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101011,	'ÓLEO DIESEL B S1800 - ADITIVADO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101003,	'ÓLEO DIESEL B S1800 - COMUM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101028,	'ÓLEO DIESEL B S50 - ADITIVADO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101029,	'ÓLEO DIESEL B S50 - COMUM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101013,	'ÓLEO DIESEL B S500 - ADITIVADO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(820101012,	'ÓLEO DIESEL B S500 - COMUM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(420301003,	'ÓLEO DIESEL FORA DE ESPECIFICAÇÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(420201002,	'ÓLEO DIESEL MARÍTIMO FORA DE ESPECIFICAÇÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(420202001,	'ÓLEO DIESEL NÁUTICO ESPECIAL - ENXOFRE 200 PPM', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(420301001,	'ÓLEO DIESEL PADRÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610601001,	'ÓLEOS BÁSICOS - GRUPO II', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610701001,	'ÓLEOS BÁSICOS - GRUPO III', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(510301002,	'ÓLEOS COMBUSTÍVEIS PARA EXPORTAÇÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620601001,	'ÓLEOS EXTENSORES E PLASTIFICANTES', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(660101001,	'ÓLEOS LUB. PARAF E GRAXAS INTERMEDIÁRIOS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620401001,	'ÓLEOS LUBRIFICANTES FERROVIÁRIOS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620301001,	'ÓLEOS LUBRIFICANTES MARÍTIMOS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620201001,	'ÓLEOS LUBRIFICANTES PARA AVIAÇÃO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(630101001,	'ÓLEOS LUBRIFICANTES USADOS OU CONTAMINADOS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(320301001,	'OUTRAS GASOLINAS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(320103002,	'OUTRAS GASOLINAS AUTOMOTIVAS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(650101002,	'OUTRAS GRAXAS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(640401001,	'OUTRAS PARAFINAS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(810201002,	'OUTROS ALCOÓIS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(340101003,	'OUTROS DERIVADOS LEVES', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(560101003,	'OUTROS DERIVADOS PESADOS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(210302001,	'OUTROS GASES', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(210204002,	'OUTROS GASES LIQUEFEITOS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610201004,	'OUTROS NAFTÊNICOS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(510301001,	'OUTROS ÓLEOS COMBUSTÍVEIS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(420301002,	'OUTROS ÓLEOS DIESEL', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620601004,	'OUTROS ÓLEOS LUBRIFICANTES ACABADOS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620505001,	'OUTROS ÓLEOS LUBRIFICANTES AUTOMOTIVOS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610501001,	'OUTROS ÓLEOS LUBRIFICANTES BÁSICOS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620101008,	'OUTROS ÓLEOS LUBRIFICANTES INDUSTRIAIS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610101010,	'OUTROS PARAFÍNICOS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610302001,	'OUTROS SINTÉTICOS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610301001,	'POLIALFAOLEFINA', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620101003,	'PROCESSO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(210201001,	'PROPANO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(210201002,	'PROPANO ESPECIAL', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(210201003,	'PROPENO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620601002,	'PULVERIZAÇÃO AGRÍCOLA', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(550101001,	'RESÍDUO AROMÁTICO (RARO)', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(550101005,	'RESÍDUO ASFÁLTICO(RASF)', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(550101002,	'RESÍDUO ATMOSFÉRICO (RAT)', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(550101003,	'RESÍDUO DE VÁCUO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(550101004,	'RESÍDUO DE VÁCUO DE ALTO TEOR DE ENXOGRE', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610101001,	'SPINDLE', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610401001,	'SPINDLE RR', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620101006,	'TÊXTIL / AMACIANTE DE FIBRAS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620504001,	'TRANSMISSÃO AUTOMÁTICA', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(620503001,	'TRANSMISSÕES E SISTEMAS HIDRÁULICOS', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610101007,	'TURBINA LEVE', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(610101008,	'TURBINA PESADO', 1, '')
	Insert Into ProdutosANP(Codigo, DescProduto, StatusTransacao, TransacaoEmpresas) 
	Values(640301001,	'VASELINA', 1, '')
end


if not exists(select * from syscolumns where name = 'TipoIndicadorIE')
begin
  Alter table Entidades add TipoIndicadorIE smallint
end
go

Update Entidades set 
  TipoIndicadorIE = 
    Case when (TipoPessoa = 'F') or 
        (isnull((select C.CodEstado from cidades C where c.codigo = Entidades.codcidade),'') = 'EX') then 9
         when TipoPessoa = 'N' then 2
         when dbo.SoNumeros(NumInscricao) <> '0' then 1
         else 2 end
Where tipoindicadorIE is null
go
						 
Update Entidades set 
  NumInscricao = ''
Where UPPER(NumInscricao) = 'ISENTO'
  or UPPER(NumInscricao) = 'ISENTA'
go

sp_bindefault 'dbo.Numero', 'Entidades.TipoIndicadorIE' 
go

Alter table Entidades alter column TipoIndicadorIE smallint not null                       
go

if not exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[MovEstoqueImposto]') and 
                                                 Name Like 'AliqFCP' And
                                                 OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin
	Alter Table MovEstoqueImposto Add 
	  AliqFCP decimal(5,2), 
	  ValorFCP decimal (11,2), 
	  AliqICMDestino decimal(5,2), 
	  PercPartilhaICMOrigem decimal (5,2), 
	  PercPartilhaICMDestino decimal (5,2), 
	  ValorPartilhaICMOrigem decimal (11,2), 
	  ValorPartilhaICMDestino decimal (11,2), 
	  CEST varchar(7) 
end
GO     

if not exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[TempPRCE050Itens]') and 
                                                 Name Like 'AliqFCP' And
                                                 OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin
	Alter Table TempPRCE050Itens Add 
	  AliqFCP decimal(5,2),
	  ValorFCP decimal (11,2),
	  AliqICMDestino decimal(5,2),
	  PercPartilhaICMOrigem decimal (5,2),
	  PercPartilhaICMDestino decimal (5,2),
	  ValorPartilhaICMOrigem decimal (11,2),
	  ValorPartilhaICMDestino decimal (11,2),
	  CEST varchar(7)    
end
GO

if not exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[MovComponente]') and 
                                                 Name Like 'AliqFCP' And
                                                 OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin
	Alter Table MovComponente Add 
	  AliqFCP decimal(5,2),
	  ValorFCP decimal (11,2),
	  AliqICMDestino decimal(5,2),
	  PercPartilhaICMOrigem decimal (5,2),
	  PercPartilhaICMDestino decimal (5,2),
	  ValorPartilhaICMOrigem decimal (11,2),
	  ValorPartilhaICMDestino decimal (11,2),
	  CEST varchar(7)      
end
GO

if not exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[TempPrce050Componentes]') and 
                                                 Name Like 'AliqFCP' And
                                                 OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin
	Alter Table TempPrce050Componentes Add 
	  AliqFCP decimal(5,2),
	  ValorFCP decimal (11,2),
	  AliqICMDestino decimal(5,2),
	  PercPartilhaICMOrigem decimal (5,2),
	  PercPartilhaICMDestino decimal (5,2),
	  ValorPartilhaICMOrigem decimal (11,2),
	  ValorPartilhaICMDestino decimal (11,2),
	  CEST varchar(7)    
end
GO

if not exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[NotasFiscais]') and 
                                                 Name Like 'ValorFCP' And
                                                 OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin                                                    
	Alter Table NotasFiscais Add 
	  ValorFCP decimal (11,2),
	  ValorPartilhaICMOrigem decimal (11,2),
	  ValorPartilhaICMDestino decimal (11,2)
end
GO

if not exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[ClassFiscais]') and 
                                                 Name Like 'CEST' And
                                                 OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin    
	Alter Table ClassFiscais 
	  Add CEST varchar(7)
end
GO

if not exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[Estados]') and 
                                                 Name Like 'AliqFCP' And
                                                 OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin   
	Alter Table Estados Add
		AliqFCP decimal(5,2)
end
GO

Alter table Empresas disable trigger all
GO

if not exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[Empresas]') and 
                                                 Name Like 'FlagCalcPartilhaICM' And
                                                 OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin   
	Alter Table Empresas Add
		FlagCalcPartilhaICM smallint,
		FlagAliqPartilhaICMAutomatica smallint
end
GO

sp_bindefault 'dbo.Numero', 'Empresas.FlagCalcPartilhaICM' 
go
sp_bindefault 'dbo.Numero', 'Empresas.FlagAliqPartilhaICMAutomatica' 
go

update Empresas set FlagCalcPartilhaICM = 1
where FlagCalcPartilhaICM is null
go   
   
update Empresas set FlagAliqPartilhaICMAutomatica = 0
where FlagAliqPartilhaICMAutomatica is null
go

Alter Table Empresas alter column FlagCalcPartilhaICM smallint Not Null
go

Alter Table Empresas alter column FlagAliqPartilhaICMAutomatica smallint Not Null
go

Alter table Empresas enable trigger all
GO

ALTER FUNCTION [dbo].[Calcular_ICM]                
(@Empresa numeric(2),                                                                                                                                                        
 @CodProduto numeric(7),                                                                                                                                                        
 @CodTributacao  char(5),                                                                                                                                                        
 @CodEntidade char(7),                                                                                                                                                        
 @CodOperacao numeric(5),                                                                                                                                                        
 @ValorTotal  decimal(11,2),                                                                                                                                                        
 @AcrescimoBaseICM decimal(11,2),                                                                                                                                                        
 @AcrescimoBaseSubTrib decimal(11,2),                                                                                                                                                    
 @RedBaseSubTrib decimal(4,2),                                                                                                                                                    
 @AliqIPI decimal(4,2),                                                                                                                                                        
 @CodClassFiscal varchar(15),                                                                                                                                                        
 @FlagEntrada numeric(1),                                                                                                                                                            
 @AcrescimoRedVenda decimal(11,2),                                                                                                                                                        
 @CodListaPreco numeric(7),                                                                                                                                                        
 @AliqICMFixo decimal(4,2),                                                                                                                                  
 @CodSubTributaria integer,                                               
-- Renato - 278440                                                                                         
 --@PerAcrescimoRedCusto decimal(15,8)                                            
 @PerRedDespesa decimal(15,8),                 
 --Gabriella - 333391                
 @AcrescimoBaseIPI decimal(11,2)                
)                                                                                                                                                          
Returns @Campos Table                                                                                                                                                        
      (AliqICM decimal(4,2),                                                                                                                                                        
       ValorBaseICM decimal (11,2),                                                                                                                                                        
       ValorICM decimal (11,2),      
       ValorIsentoICM decimal(11,2),            
       ValorOutrasICM decimal(11,2),                               
       ValorBaseSubTrib decimal(11,2),                                
       PerReducaoICM decimal(5,2),                                  
       PerRedBaseSubTrib decimal(4,2),                                             
       ValorSubTrib decimal (11,2),                                                                        
       ValorBaseSubTribCarga decimal(11,2),                                                                                  
       ValorSubTribCarga decimal(11,2),                                                                                               
       FatorRedCusto decimal (15,8),                                                                                      
       FatorRedVenda decimal (7,4),                                                                                                          
       NumCFOP char(10),                                                                                                          
       AliqPISCOFINS decimal (4,2),                                            
       -- Renato - Chamado 272165                                            
       ValorBasePisCofins decimal (11,2),                                            
       AliqPis decimal (4,2),                                    
       AliqCofins decimal (4,2),                                    
       NumCstICM varchar(3),                                    
       NumCstIPI varchar(2),                                    
       NumCstPisCofins varchar(2),                                    
       NumCsosn varchar(3),                              
       -- Renato - 297792                              
       NatReceitaPisCofins int,                
       -- Renato - 332318                
       NatBaseCalcCredito smallint,                
       --Ronaldo 343696    
       IndNaturezaFrete smallint,    
           
       --Gabriella - 333391                       
       ValorBaseIPI decimal (11,2),                                                                                                                                                                                                                           
       ValorIsentoIPI decimal(11,2),                                                                                                                                                        
       ValorOutrasIPI decimal(11,2),
       
       --Renato - 360358
       AliqICMSST decimal(5,2),
       PercMvaICMSST decimal(5,2),
       --Renato - 361650
       AliqComplICM Decimal(5,2),
       AliqComplPIS Decimal(5,2),
       AliqComplCOFINS Decimal(5,2),
                     
       --Gabriella - 471920  
		AliqFCP decimal(5,2),   
		ValorFCP decimal (11,2),   
		AliqICMDestino decimal(5,2),   
		PercPartilhaICMOrigem decimal (5,2),  
		PercPartilhaICMDestino decimal (5,2),  
		ValorPartilhaICMOrigem decimal (11,2),  
		ValorPartilhaICMDestino decimal (11,2),  
		CEST varchar(7)                  
       )                                
as                                                                 
                                                                          
begin                                                                                         
/*********************                                                                                      
   VERSÃO 3.01                                                                                     
*********************/                                                                                 
                                                                                                            
declare @CodEstadoLeitura char(2)                                                                                                               
declare @AliqICM decimal(4,2)                                                                                                                                    
declare @ValorBaseICM decimal (11,2)                                                                                                                                                        
declare @ValorICM decimal (11,2)                                                                                                                                                        
declare @ValorIsentoICM decimal(11,2)                             
declare @ValorOutrasICM decimal(11,2)                                      
declare @PerReducaoICM decimal(5,2)                
declare @ValorBaseSubTrib decimal(11,2)                                      
declare @ValorSubTrib decimal (11,2)                                                                                                                     
declare @ValorBaseSubTribCarga decimal(11,2)                                                                                                                             
declare @ValorSubTribCarga decimal(11,2)                                                                                                                         
declare @FatorRedCusto decimal (15,8)                                                                                                                        
declare @FatorRedVenda decimal (7,4)                                                                                                                    
declare @NumCFOP char(10)                                                                             
declare @AliqPISCOFINS decimal(4,2)                                  
declare @NumCstICM varchar(3)                                    
declare @NumCstIPI varchar(2)                                    
declare @NumCstPisCofins varchar(2)                                    
declare @NumCsosn varchar(3)                               
--Renato - 297792                              
declare @NatReceitaPisCofins Int                  
--Renato - 332318                                 
declare @NatBaseCalcCredito SmallInt     
--Ronaldo 343696    
Declare @OprIndNaturezaFrete SmallInt                
                                                                                                                                             
declare @AEmpMestre char(7)                                                                                                                                 
declare @VAuxValorIPI decimal(11,2)                                                                                                                                                        
declare @AuxCodTributacaoSubTrib Char(5)                                         
declare @AuxFlagSubTributaria numeric(1)                                                                                                                       
declare @AuxEntidade char(7)                                                                                                                                  
declare @ValorBaseSubTribDestino decimal(11,2)                                                                                                                                                              
                                                                                                                  
declare @CalcBaseSubTrib decimal(11,2)                                                                                           
declare @CalcValorSubTrib decimal (11,2)                                                                                                                                                        
declare @CalcBaseSubTribDestino decimal(11,2)                                                                                        
                                                                                               
                                                             
declare @ParTipoReducaoICM numeric(1)                                                                                                           
declare @ParAliqCPMF decimal(4,2)                                                                                                  
declare @ParTipoRegimeTributario smallint                                    
declare @ParAliqICMSimples decimal(4,2)                                    
                                    
declare @EntTipoPessoa char(1)                                                                                                                                  
declare @CidCodEstado char(2)                                                                             
declare @EstAliqContrib decimal(4,2)                               
declare @EstFlagConvSub numeric(1)                                                                                                              
declare @EstAliqInterna decimal(4,2)                                                                                                      
                                                  
declare @CidEmpCodEstado char(2)                                                                                                                                                
declare @TriAliqICM decimal(4,2)                                                   
declare @TriFlagIsentoProdutor numeric(1)                                                                                                                                              
declare @TriFlagSubTributaria numeric(1)                                                                                                                                                        
declare @TriMargemLucroSubst decimal(5,2)                                                                                                          
--Gabriella - 302581                
--declare @TriPerReducaoICM decimal(4,2)                
declare @TriPerReducaoICM decimal(6,4)                
declare @TriPerRedMargem decimal(4,2)                                                                                         
declare @TriTipoCFOP numeric(2)                                                                                                                              
declare @TriCodTributacaoSubTrib char(5)                                                    
declare @TriTipoValorNaoTributado numeric(1)                                                                                                                                                        
declare @TriPerReducaoSubTrib numeric(6,2)                                            
--Rafael chamado 272635                                            
declare @TriAliqInternaSubTrib numeric(5,2)                                                                                                                          
declare @TriNumCST_ICM smallint                                    
declare @TriNumCST_IPI smallint                                    
declare @TriNumCSOSN smallint                                    
                                    
declare @ClaFlagSubTributaria numeric(1)                                                         
declare @ClaAliqPISCOFINS decimal(4,2)                                                                                                            
declare @GruFlagSubTributaria numeric(1)                                                                                                                                           
                                                                                                                                                    
declare @LisPercAcrescimoAdm1 decimal(4,2)                                                                                                                                                        
declare @LisPercAcrescimoAdm2 decimal(4,2)                                                       
declare @LisPercAcrescimoAdm3 decimal(4,2)                                                                                               
                                                                                                                          
declare @SubAliquotaInterna decimal(5, 2)                                                
declare @SubMargemLucro decimal(5, 2)                                                      
declare @SubPercReducao decimal(5, 2)                                                                                                                                  
declare @SubIndiceReducao decimal(9, 6)                                                                                                                
declare @SubFlagAbaterICM smallint                                                    
declare @SubFlagSomaIPI smallint                                                                                                                            
                   
declare @OprTipoICM numeric(1)                                                                                             
declare @OprTipoIPI numeric(1)                                                    
declare @OprAliqICMFixo decimal(4,2)                                                                   
declare @OprPerRedICM decimal(4,2)                                                                                                           
declare @OprPerRedMargem decimal(4,2)                                                             
declare @OprCFOP1_Normal char(10)                                                                                                   
declare @OprCFOP1_Normal_NCFora char(10)                                                                            
declare @OprCFOP2_Industrializado char(10)                                                                                                                                                        
declare @OprCFOP2_Industrializado_NCFora char(10)                                                                         
declare @OprCFOP3_SubRevenda char(10)                                                                                                                                           
declare @OprCFOP3_SubRevenda_NC char(10)                                                                                                          
declare @OprCFOP4_SubRevendaML char(10)                                                                                                       
declare @OprCFOP4_SubRevendaML_NC char(10)                                                           
declare @OprCFOP5_SubFabricacao char(10)                                                                                                             
declare @OprCFOP5_SubFabricacao_NC char(10)                                                                            
declare @OprCFOP6_SubFabricacaoML char(10)                                                                                                                                                       
declare @OprCFOP6_SubFabricacaoML_NC char(10)                                   
declare @OprCFOP7_Importado char(10)                                                                                                                                                        
declare @OprCFOP_Servico    char(10)                                                                                                                              
declare @OprCFOP_Servico_NCFora char(10)                                                                                         
declare @OprCFOP9_Petroleo varchar(10)                                                                      
declare @OprCFOP9_Petroleo_NC varchar(10)                                                                                                                                 
declare @OprFlagCalcPIS_COFINS numeric(1)                                                                                                                                                        
declare @OprFlagDefaultLancamentoOutras numeric(1)                                              
declare @OprFlagSubTribIPI numeric(5)                                                                                     
declare @OprTipoMovimento smallint                                                                                                                                            
declare @OprTipoSubTributaria smallint                                
--Eder - Chamado 262460                                                    
declare @OprTipoSubTributariaCarga smallint                                                         
--Eder - 303720                                
declare @OprFlagIPISobrePisCofins smallint                 
--Gabriella - 256424                
declare @OprFlagIPISobreBaseICM smallint                                 
declare @ProOrigem smallint                                    
--MARCELO - CHAMADO 192283            
declare @RegiaoDestino varchar(10)                                                                                                                                                        
declare @RegiaoDestinoLeitura varchar(10)                                                                                                                                                    
--Eder - Chamado 243637                                                                   
declare @RegiaoOrigem varchar(10)                                                            
--Eder - Chamado 243557                                                                
declare @EmpId varchar(15)                     
                                                                
--JALDO - CHAMADO 248899                                                        
--JALDO - CHAMADO 243556                                                                    
--declare @TipoConsideraIPICalculoICM int                                                 
                                
--Eder - 303720                                            
declare @AcrDespesasPisCOFINS numeric(11,2)                                
-- Renato - Chamado 272165                                              
declare @ValorBasePisCofins numeric(11,2)                                            
declare @AliqPis numeric(4,2)                                         
declare @AliqCofins numeric(4,2)                                           
-- Renato - 278440                                          
declare @FlagDeduzirDespNaoInclNaMargem SmallInt                                            
-- Renato - 290579                                          
declare @PercSubTribCusto decimal(5,2)                                          
declare @PercICMCusto decimal(5,2)                            
--Ronaldo Chamado 313933                          
declare @RegTribPercIvaSimplicado decimal(5,2)                                                      
--Ronaldo Chamado 317536                
declare @TriFlagPrevalecerAliqIcm SmallInt                
--Gabriella - 333391                     
declare @ValorBaseIPI decimal (11,2)                                                                                                                                                                                                                                 
                                                                   
declare @ValorIsentoIPI decimal(11,2)                                                                                                                                                       
declare @ValorOutrasIPI decimal(11,2)                
declare @TriTipoValorNaoTributadoIPI numeric(1)                 
-- Renato - 341779                             
declare @OprFlagICMSSobreServicos SmallInt
--Gabriella - 471920  
declare @AliqFCP decimal(5,2)  
declare @ValorFCP decimal (11,2)  
declare @AliqICMDestino decimal(5,2)  
declare @PercPartilhaICMOrigem decimal (5,2)  
declare @PercPartilhaICMDestino decimal (5,2)  
declare @ValorPartilhaICMOrigem decimal (11,2)  
declare @ValorPartilhaICMDestino decimal (11,2)  
declare @CEST varchar(7)  
declare @TipoIndicadorIE smallint    
declare @AnoPartilha int          
declare @ValorICMDestino decimal (11,2)          
declare @ValorICMDiferencial decimal (11,2)   
declare @TipoProdEspecifico int     
declare @CodProdutoANP int      
declare @FlagCalcICMSInterestadualANP smallint   
declare @FlagCalcPartilhaICMEmpresa smallint  
declare @FlagAliqPartilhaICMAutomatica smallint  
declare @FlagCalcPartilhaICM smallint    
--Renato - 361650
declare @TriAliqComplICM Decimal(5,2)
declare @AliqComplPIS Decimal(5,2)
declare @AliqComplCOFINS Decimal(5,2)          
                                                                                                                           
set @VAuxValorIPI = 0                                                                                    
set @AliqICM = 0                                                                                                        
set @ValorBaseICM = 0                                                     
set @ValorICM = 0                                                                                                        
set @ValorIsentoICM = 0                                                                     
set @ValorOutrasICM = 0                                                                                                                                   
set @ValorBaseSubTrib = 0                                                                   
set @ValorSubTrib = 0             
set @ValorBaseSubTribCarga = 0                                
set @ValorSubTribCarga = 0                                                                                                                                                    
set @FatorRedCusto = 0                                 
set @FatorRedVenda = 0                                                                             
set @NumCFOP = ''                                                                                                                                          
Set @AliqPISCOFINS = 0                                              
                                       
--Renato - Chamado 272165                                                             
set @ValorBasePisCofins = 0                                            
set @AliqPis = 0                                            
set @AliqCofins = 0                                                 
                          
set @AEmpMestre = 'M' + Replicate('0',(6 - Len(@Empresa))) + Cast(@Empresa as varchar)                
                
--Gabriella - 333391                  
set @ValorBaseIPI = 0                                                                             
set @ValorIsentoIPI = 0                
set @ValorOutrasIPI = 0                
            
--JALDO - CHAMADO 353913      
set @CalcValorSubTrib = 0      
set @CalcBaseSubTrib = 0   
                                                                                                                                                        
  
--Eder - Chamado 243557                                                                
Select @EmpId = Id,     
       --Gabriella - 471920  
       @FlagCalcPartilhaICMEmpresa = FlagCalcPartilhaICM,  
       @FlagAliqPartilhaICMAutomatica = FlagAliqPartilhaICMAutomatica                                                           
From Empresas         
Where Codigo = @Empresa                                                                
                                                                                                                              
                                                                                                                               
select @ParTipoReducaoICM=TipoReducaoICM,                                    
       @ParAliqCPMF=AliqCPMF,                                    
       --Eder - Chamado 295853                                    
       @ParTipoRegimeTributario=TipoRegimeTributario,                                    
       @ParAliqICMSimples=AliqICMSimples                                    
  From ParamControle                                     
  where Empresa=@Empresa                                    
                                                                          
If (@ParTipoReducaoICM is null)                                                                                                                                                        
   Set @ParTipoReducaoICM = 0                    
If (@ParAliqCPMF is null)                                                          
   Set @ParAliqCPMF = 0                                                
If (@ParTipoRegimeTributario is null)                                    
   Set @ParTipoRegimeTributario = 0                                     
If (@ParAliqICMSImples = 0)                                    
   Set @ParAliqICMSImples = 0                                    
                                    --Renato - 278440                                           
Select @FlagDeduzirDespNaoInclNaMargem = FlagDeduzirDespNaoInclNaMargem                                            
From ConfiguracaoSistema                                                                                                                         
                      
                                                                                                                  
select @CidEmpCodEstado=Cidades.CodEstado,                                                            
       --Eder - Chamado 243637                                                            
       @RegiaoOrigem=Est.RegiaoDestino                                           
  from Entidades                                       
  Left Join Cidades on Cidades.Codigo = Entidades.CodCidade                                                          
  Left Join Estados Est on Est.CodOrigem = Cidades.CodEstado                                                            
                    and Est.CodDestino = Cidades.CodEstado                                                            
 where Entidades.Codigo = @AEmpMestre                    
                                                                                                             
                                                                  
select @EntTipoPessoa=TipoPessoa,                                                                          
       @CidCodEstado=Cidades.CodEstado,                                                   
       @CodEstadoLeitura=Cidades.CodEstado,
       --Gabriella - 471920  
       @TipoIndicadorIE=TipoIndicadorIE                                           
       --JALDO - CHAMADO 243556                                                               
       --JALDO - CHAMADO 243556                                                                    
       --@TipoConsideraIPICalculoICM=TipoConsideraIPICalculoICM                                                                    
       from Entidades                                                                      
       Left Join Cidades on Cidades.Codigo = Entidades.CodCidade                      
       where Entidades.Codigo = @CodEntidade                                                                                           
                                                                                                                                    
If isnull((Select FlagICMOrigem From Operacoes Where Codigo = @CodOperacao),0) = 1                                                                                                                                                        
   Set @CodEstadoLeitura=@CidEmpCodEstado                                                                                                                                                        
                                                                                                                                    
                                                                                             
--MARCELO - CHAMADO 192283                                                                    
select                                                                                       
  @RegiaoDestino = RegiaoDestino                                                                                      
from Estados                                                                              
where CodOrigem = @CidEmpCodEstado                                                                                      
  and CodDestino = @CidCodEstado                                                    
                                                                                      
if (@CodEstadoLeitura <> @CidEmpCodEstado)                                                                          
begin                                                                                      
  select                                                       
    @RegiaoDestinoLeitura = RegiaoDestino                                                                                      
  from Estados                                                                                      
  where CodOrigem = @CodEstadoLeitura                                                            
    and CodDestino = @CidCodEstado                                                                                      
  -- Eder - Chamado 269443                                                  
  If @RegiaoDestinoLeitura is null                                                  
     set @RegiaoDestinoLeitura = @RegiaoDestino                                                     
end                                                    
else                                                                                      
begin                                                                                      
  set @RegiaoDestinoLeitura = @RegiaoDestino                                                                                      
end                                                                                      
               
                                                                                                                                         
select                                                                         
    --MARCELO - CHAMADO 116008                                                                                                                           
--    @EstAliqContrib=EstSai.AliqContrib,                                                                                                                                                        
    @EstAliqContrib = Case When @FlagEntrada = 1 and EstSai.AliqContribCompra > 0 and Oper.TipoMovimento <> 1                                                                              
                           then EstSai.AliqContribCompra --ENTRADA POR COMPRA                                                                                                                                  
                           When @FlagEntrada = 0 and EstSai.AliqContribCompra > 0 and Oper.TipoMovimento = 1                                                                                        
                           then EstSai.AliqContribCompra --SAIDA POR DEVOLUCAO                                                                                        
              Else EstSai.AliqContrib End,                                                       
    @EstFlagConvSub=EstSai.FlagConvSub,                                                                                                                
-- Isaac - Chamado 191748                                                                                          
--  @EstAliqInterna= Case When @FlagEntrada = 0 then EstSai.AliqInterna Else EstEnt.AliqInterna End                                   
-- Eder - Chamado 219012                                                                      
--  @EstAliqInterna=   Case When @FlagEntrada = 0 then EstSai.AliqInterna                                                                                          
--         When @FlagEntrada = 1 and Oper.tipomovimento = 1 then EstSai.AliqInterna                                                        
--                     Else EstEnt.AliqInterna End                                                                                          
    @EstAliqInterna=   Case When @FlagEntrada = 0 and Oper.TipoMovimento <> 1 then EstSai.AliqInterna                                                                                          
                            When @FlagEntrada = 1 and Oper.tipomovimento = 1 then EstSai.AliqInterna                           
                       Else EstEnt.AliqInterna End,
    --Gabriella - 471920        
    @AliqFCP = Case When @FlagEntrada = 0 and Oper.TipoMovimento <> 1 then EstSai.AliqFCP                                                                                 
                    When @FlagEntrada = 1 and Oper.tipomovimento = 1 then EstSai.AliqFCP                                                                             
                    Else EstEnt.AliqFCP End                                                             
from Entidades                                                                                                                      
  Left Join Cidades on Cidades.Codigo = Entidades.CodCidade                                                                
  Left Join Estados EstSai on EstSai.CodOrigem = @CidEmpCodEstado                                                  
                   and EstSai.CodDestino = @CodEstadoLeitura                                              
  Left Join Estados EstEnt on EstEnt.CodOrigem = @CidEmpCodEstado                                                            
                          and EstEnt.CodDestino = @CidEmpCodEstado                                                                                                                                                         
  --MARCELO - CHAMADO 116008                                                                                             
  Left Join Operacoes Oper on Oper.Codigo = @CodOperacao                                                                                                                           
where Entidades.Codigo = @CodEntidade                                                                              
                                                                                                                                  
If (@EstAliqContrib is null)                                                                                        
   Set @EstAliqContrib = 0                                      
If (@EstFlagConvSub is null)                                                         
   Set @EstFlagConvSub = 0                                                                                             
If (@EstAliqInterna is null)                           
   Set @EstAliqInterna = 0  
--Gabriella - 471920                                                        
If (@AliqFCP is null)                                              
  Set @AliqFCP = 0                                                                                                                                                          
                                                                                                                                                      
                                                                   
set @ClaFlagSubTributaria = 1                                                                                                                                
Set @ClaAliqPISCOFINS = 0                                                     
                                                   
If ltrim(@CodClassFiscal) <> ''                                                                                                           
begin                                                                                                                                    
  Select @ClaFlagSubTributaria = FlagSubTributaria,                                                                                           
         @ClaAliqPISCOFINS = AliqPISCOFINS                                                                                                                                                        
    From ClassFiscais                                                                                                                     
    Where Codigo=@CodClassFiscal                                    
  If (@ClaFlagSubTributaria is null)                                                                                                                    
     Set @ClaFlagSubTributaria = 1                                                                                                                                                        
  If (@ClaAliqPISCOFINS is null)                                                    
     Set @ClaAliqPISCOFINS = 0                                                             
end                                                                                                                             
       
                                                                                          
select @OprTipoICM                      = TipoICM,                                                                                                                                                        
       @OprTipoIPI                      = TipoIPI,                                                                              
       @OprAliqICMFixo                  = AliqICMFixo,                                                                        
       @OprPerRedICM                    = PerRedICM,                                                                                                                                                        
       @OprPerRedMargem                 = PerRedMargem,          
       @OprCFOP1_Normal                 = CFOP1_Normal,                                                                                  
       @OprCFOP1_Normal_NCFora          = CFOP1_Normal_NCFora,                                                                                                                                                        
       @OprCFOP2_Industrializado        = CFOP2_Industrializado,                                                                                                                                                        
       @OprCFOP2_Industrializado_NCFora = CFOP2_Industrializado_NCFora,                                 
       @OprCFOP3_SubRevenda             = CFOP3_SubRevenda,                                                                                                                                                        
       @OprCFOP3_SubRevenda_NC          = CFOP3_SubRevenda_NC,                      
       @OprCFOP4_SubRevendaML           = CFOP4_SubRevendaML,                                                                                                      
       @OprCFOP4_SubRevendaML_NC        = CFOP4_SubRevendaML_NC,                                                                                                                               
       @OprCFOP5_SubFabricacao          = CFOP5_SubFabricacao,                                                                                           
       @OprCFOP5_SubFabricacao_NC       = CFOP5_SubFabricacao_NC,                                     
       @OprCFOP6_SubFabricacaoML        = CFOP6_SubFabricacaoML,                                                                                                                    
       @OprCFOP6_SubFabricacaoML_NC     = CFOP6_SubFabricacaoML_NC,                                                                                                                                              
       @OprCFOP7_Importado              = CFOP7_Importado,                                                                                                    
       @OprCFOP_Servico                 = CFOP_Servico,                                                              
       @OprCFOP_Servico_NCFora          = CFOP_Servico_NCFora,                                                                                                                                    
       @OprFlagCalcPIS_COFINS           = FlagCalcPIS_COFINS,                                                                      
       @OprFlagDefaultLancamentoOutras  = FlagDefaultLancamentoOutras,                                                                                                     
       @OprCFOP9_Petroleo               = CFOP9_Petroleo,                                                  
       @OprCFOP9_Petroleo_NC            = CFOP9_Petroleo_NC,                                                                                                                    
       @OprFlagSubTribIPI               = FlagSubTribIPI,                                      
       @OprTipoMovimento                = TipoMovimento,                                                                                                                                      
       @OprTipoSubTributaria            = TipoSubTributaria,                                                    
       --Eder - Chamado 262460                    
       @OprTipoSubTributariaCarga       = TipoSubTributariaCarga,                                
       --Eder 303720                                
       @OprFlagIPISobrePisCofins        = FlagIPISobrePisCofins,                  
       --Gabriella - 256424                
       @OprFlagIPISobreBaseICM          = FlagIPISobreBaseICM,                   
       -- Renato - 341779                             
       @OprFlagICMSSobreServicos        = FlagICMSSobreServicos,      
       --Ronaldo 343696    
       @OprIndNaturezaFrete             = IndNaturezaFrete    
  From Operacoes                                                                                                                
 where Codigo = @CodOperacao                                                                                             
                                                                                          
                                                                                             
If (@OprTipoICM is null)                                                                                          
   Set @OprTipoICM = 0                                                                                                                             
If (@OprTipoIPI is null)                                                                        
   Set @OprTipoIPI = 0                                                                    
If (@OprAliqICMFixo is null)                                     
   Set @OprAliqICMFixo = 0                                                                                                                                        
If (@OprPerRedICM is null)                                                                                                                          
   Set @OprPerRedICM = 0                                                                                                                                                        
If (@OprPerRedMargem is null)                                                                                                                                                        
   Set @OprPerRedMargem = 0                                                                                                                           
If (@OprFlagCalcPIS_COFINS is null)                                                                                                                                                        
Set @OprFlagCalcPIS_COFINS = 0                                
If @OprFlagCalcPIS_COFINS = 1                                                                                                                                                        
   Set @AliqPISCOFINS = @ClaAliqPISCOFINS                                       
If (@OprFlagDefaultLancamentoOutras is null)                                                                             
   Set @OprFlagDefaultLancamentoOutras = 0                                                                                                                              
If (@OprFlagSubTribIPI is null)                                                                                                                                                        
   Set @OprFlagSubTribIPI = 0                                                          
If (@OprTipoSubTributaria is null)                                                                                                       
   Set @OprTipoSubTributaria = 0                                                        
If (@OprTipoMovimento is null)                                                                                            
   Set @OprTipoMovimento = 0                  
--Eder - Chamado 262460                                                    
If (@OprTipoSubTributariaCarga is null)                                                    
   Set @OprTipoSubTributariaCarga = 0                                 
if (@OprFlagIPISobrePisCofins is null)                                
   Set @OprFlagIPISobrePisCofins = 0                 
--Gabriella - 256424                
if (@OprFlagIPISobreBaseICM is null)                                
   Set @OprFlagIPISobreBaseICM = 0                                                                                                                         
                                                                                                   
Set @GruFlagSubTributaria = 1                           
Select @GruFlagSubTributaria = Gru.FlagSubTributaria,                                    
     @ProOrigem = Pro.Origem,
  --Gabriella - 471920  
  @TipoProdEspecifico = Pro.TipoProdEspecifico,  
  @CodProdutoANP = Pro.CodProdutoANP                                           
  From Produtos Pro                                     
  Left Join Grupos Gru on Gru.Codigo = Pro.CodGrupo                                    
 Where Pro.Codigo = @CodProduto                                    
                                    
If (@GruFlagSubTributaria is null)                                               
   Set @GruFlagSubTributaria = 1                                                                                                                                                        
if (@ProOrigem is null)                                    
   Set @ProOrigem = 0  
   
--Gabriella - 471920  
if (@TipoProdEspecifico is null)                                          
  Set @TipoProdEspecifico = 0     
    
if (@CodProdutoANP is null)                                          
  Set @CodProdutoANP = 0    
    
if (@TipoProdEspecifico <> 4)  
 Set @FlagCalcICMSInterestadualANP = 1  
else  
begin  
 if (@CodProdutoANP in (820101001,820101010, 810102001, 810102004, 810102002,   
         810102003, 810101002, 810101001, 810101003, 220101003,   
         220101004, 220101002, 220101001, 220101005, 220101006))   
  Set @FlagCalcICMSInterestadualANP = 1  
 else if (@CodProdutoANP <= 0)     
  Set @FlagCalcICMSInterestadualANP = 1  
 else          
  Set @FlagCalcICMSInterestadualANP = 0   
end                                       
                                                                                 
                                                                                                                                                                                                                                                          
Select @LisPercAcrescimoAdm1=Ilp.PercAcrescimoAdm1,                                                                                                                 
       @LisPercAcrescimoAdm2=Ilp.PercAcrescimoAdm2,                                                                                                                                                        
       @LisPercAcrescimoAdm3=Ilp.PercAcrescimoAdm3,                                             
       --Renato - 290579                                             
       @PercSubTribCusto = Ilp.PercSubTrib,                                          
       @PercICMCusto   = Ilp.PercICMCusto                                                                                                                                       
  From ItemlistaPreco Ilp                                                                                                                             
  Left Join Empresas Emp on Emp.Codigo = @Empresa                                                                                                                              
 Where Ilp.CodLista=@CodListaPreco                                                                               
   and Ilp.CodProduto=@CodProduto                                                                      
   and Ilp.Empresa = Emp.EmpresaListaPreco                                                                                                                                                        
                                                                                                                                                        
If (@LisPercAcrescimoAdm1 is null)                                                                                                                                 
  Set @LisPercAcrescimoAdm1 = 0                                                                                                  
If (@LisPercAcrescimoAdm2 is null)                                                                                                                            
  Set @LisPercAcrescimoAdm2 = 0                                                                                                                                                        
If (@LisPercAcrescimoAdm3 is null)                                                                                                            
  Set @LisPercAcrescimoAdm3 = 0                                           
                                                                                              
                                                                                                                             
select @TriAliqICM=AliqICM,                                           
       @TriFlagIsentoProdutor=FlagIsentoProdutor,                                                                 
       @TriFlagSubTributaria=FlagSubTributaria,                                                                                                       
       @TriMargemLucroSubst=MargemLucroSubst,                                                                                                           
       @TriPerReducaoICM=PerReducaoICM,                                                                                                                                                        
       @TriPerRedMargem=PerRedMargem,                                  
       @TriTipoCFOP=TipoCFOP,                                                                                                                        
       @TriCodTributacaoSubTrib=CodTributacaoSubTrib,                                                                                                                                                        
       @TriTipoValorNaoTributado=TipoValorNaoTributado,                                                      
       @TriPerReducaoSubTrib = PerReducaoSubTrib,                                            
       --Rafael chamado 272635                                            
       @TriAliqInternaSubTrib= AliqInternaSubTrib,                                    
       @TriNumCST_ICM = NumCST_ICM,                                    
       @TriNumCST_IPI = NumCST_IPI,                                    
       @TriNumCSOSN = NumCSOSN,                
       --Ronaldo Chamado 317536                
       @TriFlagPrevalecerAliqIcm = flagPrevalecerAliqIcm,                
       --Gabriella - 333391                
       @TriTipoValorNaoTributadoIPI = TipoValorNaoTributadoIPI,
       --Renato - 361650
       @TriAliqComplICM = AliqComplICM             
                              
  From Tributacoes                                                                                                                                                        
 Where Codigo=@CodTributacao                                                                                        
   and IdLeitura = dbo.LeituraTributacao(@CodTributacao,@CodEntidade, @CodOperacao, @AEmpMestre)                                          
                                                                               
Set @AuxEntidade = @CodEntidade                                                                                                                                                 
                                                
                                                                                                                                                 
If (@FlagEntrada = 1) and                                                                                                                                        
   ((Select FlagSubTribEntradaEstado From ParamControle Where Empresa=@Empresa) = 1)                                                                                                    
begin                                                                                                                                                        
  select @AuxFlagSubTributaria=FlagSubTributaria,                                                                                                                                                  
         @AuxCodTributacaoSubTrib=CodTributacaoSubTrib                                                                                    
    From Tributacoes                                                                                                                                                        
    Where Codigo=@CodTributacao                                                  
      and IdLeitura = dbo.LeituraTributacao(@CodTributacao, @AEmpMestre, @CodOperacao, @AEmpMestre)                  
  If @AuxFlagSubTributaria is null                                                     
     Set @AuxFlagSubTributaria = 0                                                                                                                             
  If @AuxCodTributacaoSubTrib is null                                                                         
     Set @AuxCodTributacaoSubTrib = ''                                                     
  If (@AuxFlagSubTributaria = 1) and (@AuxCodTributacaoSubTrib <> '')                                                                                                                                        
  begin                                                                                                                   
    Set @TriCodTributacaoSubTrib = @AuxCodTributacaoSubTrib                                                                                                                  
    Set @TriFlagSubTributaria =  @AuxFlagSubTributaria                                     
    Set @AuxEntidade = @AEmpMestre                                       
  end                                                                              
end                                                                                                                                             
                                                                                                                                                        
If (@TriCodTributacaoSubTrib <> '') and                                           
   (@TriFlagSubTributaria = 1) and                                                                
   (@ClaFlagSubTributaria = 1) and                                                                                              
   (@GruFlagSubTributaria = 1) and                                                          
   ((@FlagEntrada = 0)  or                                                                                                                              
    (@FlagEntrada = 1 and (Select FlagSubTribEntradaEstado From ParamControle Where Empresa=@Empresa) = 1)                                                                                                                                                  
   )                           
begin                                                                                      
  select @TriAliqICM=AliqICM,                                                                                                   
         @TriFlagIsentoProdutor=FlagIsentoProdutor,                                                                                                                 
         @TriFlagSubTributaria=FlagSubTributaria,                                                    
 @TriMargemLucroSubst=MargemLucroSubst,                                
         @TriPerReducaoICM=PerReducaoICM,                                                                                                                                                       
         @TriPerRedMargem=PerRedMargem,                                                                                                          
         @TriTipoCFOP=TipoCFOP,                                                                                                                         
         @TriCodTributacaoSubTrib=CodTributacaoSubTrib,                                
         @TriTipoValorNaoTributado=TipoValorNaoTributado,                                              
         @TriPerReducaoSubTrib = PerReducaoSubTrib,                                            
         --Rafael chamado 272635                                            
         @TriAliqInternaSubTrib = AliqInternaSubTrib,                                    
         @TriNumCST_ICM = NumCST_ICM,                                    
         @TriNumCST_IPI = NumCST_IPI,                                    
         @TriNumCSOSN = NumCSOSN,                  
         --Gabriella - 333391                
         @TriTipoValorNaoTributadoIPI=TipoValorNaoTributadoIPI,
         --Renato - 361650
         @TriAliqComplICM = AliqComplICM                                                       
   From Tributacoes                                                    
    Where Codigo=@TriCodTributacaoSubTrib                                                                                                                 
      and IdLeitura = dbo.LeituraTributacao(@TriCodTributacaoSubTrib,@AuxEntidade, @CodOperacao, @AEmpMestre)                                         
  Set @CodTributacao = @TriCodTributacaoSubTrib                                
end                                                       
                                                                                          
If (@TriAliqICM is null)                                                                                                                                                        
   Set @TriAliqICM = 0                                                                                                              
If (@TriFlagIsentoProdutor is null)                                                                                                      
   Set @TriFlagIsentoProdutor = 0                                                                                                        
If (@TriFlagSubTributaria is null)                                                                           
   Set @TriFlagSubTributaria = 0                                                                                        
If (@TriMargemLucroSubst is null)                                                                                                                                                        
   Set @TriMargemLucroSubst = 0                                                                                                                                                        
If (@TriPerReducaoICM is null)                                                                                                                                                        
  Set @TriPerReducaoICM = 0                                                                                                          
If (@TriPerRedMargem is null)                                                                                                                                                        
   Set @TriPerRedMargem = 0                                                                                                                                                     
If (@TriTipoCFOP is null)                                                                                                                  
   Set @TriTipoCFOP = 0                                                          
If (@TriCodTributacaoSubTrib is null)                              
   Set @TriCodTributacaoSubTrib = ''                                                                                                                                                        
If (@TriPerReducaoSubTrib is null)                                              
   Set @TriPerReducaoSubTrib = 0                                             
--Rafael chamado 272635                                            
if (@TriAliqInternaSubTrib is null)                                            
   Set @TriAliqInternaSubTrib = 0                                            
if @TriNumCST_ICM is null                                    
  Set @TriNumCST_ICM = 0                                    
if @TriNumCST_IPI is null                                    
  Set @TriNumCST_IPI = 0                                    
if @TriNumCSOSN is null                                    
  Set @TriNumCSOSN = 0           
if @TriAliqComplICM is null
  Set @TriAliqComplICM = 0                             
                                    
If (@TriTipoValorNaoTributado is null)                                                                                  
begin                                                                                                      
  if (@CodProduto = 8888888)                                                                                                      
    Set @TriTipoValorNaoTributado = 1                                                                                                      
  else                  
    Set @TriTipoValorNaoTributado = 0                                                                                                      
end                   
                
--Gabriella - 333391                
If (@TriTipoValorNaoTributadoIPI is null)                                                                                  
begin                                                                
  if (@CodProduto = 8888888)                                                                                                      
    Set @TriTipoValorNaoTributadoIPI = 1                                                                                                      
  else                  
    Set @TriTipoValorNaoTributadoIPI = 0                                                                                                      
end                         
                                              
--Eder Chamado 271756                                              
If @TriPerReducaoSubTrib <> 0                            
  Set @RedBaseSubTrib = @TriPerReducaoSubTrib             
             
            
--JALDO/RONALDO - CHAMADO 309941                                 
--If @FlagEntrada = 0                                                                                                                                                     
If (@FlagEntrada = 0 or (@FlagEntrada = 1 and @OprTipoMovimento = 1))                              
   and @TriMargemLucroSubst <> 0                                                                                                                                                         
   and Exists(Select Codigo From Tributacoes                                                                                                                                                        
               Where EstadoOrigem=@CodEstadoLeitura                                   
                 and Codigo=@CodTributacao                                                                                 
                 --MARCELO - CHAMADO 192283                                                                                      
--                 and EstadoDestino=@CodEstadoLeitura                                                                                          
                 and RegiaoDestino = @RegiaoDestinoLeitura                                                                          
                 and AliqICM > 0)                                                                                                                                                        
begin                                                                                                        
  Select Top 1 @EstAliqInterna=AliqICM,                                      
               --MARCELO - CHAMADO 214200                                                                            
               --@RedBaseSubTrib=PerReducaoICM                        
               @RedBaseSubTrib = Case When @RedBaseSubTrib = 0 Then PerReducaoICM Else @RedBaseSubTrib End          
  From Tributacoes                                                                     
  Where EstadoOrigem=@CodEstadoLeitura                                                    
     and Codigo=@CodTributacao                                                                                        
     --MARCELO - CHAMADO 192283                                                          
--     and EstadoDestino=@CodEstadoLeitura                                                                                                                                
     and RegiaoDestino = @RegiaoDestinoLeitura         
     --Eder - 320407                
     and AliqICM > 0                
   Order By TipoPessoa                                                                                                  
end                                                                                   
If (@RedBaseSubTrib is null)                                                                                                                                                        
   Set @RedBaseSubTrib = 0                                                                                                                                                        
                                            
--Rafael chamado 272635                                           
--Sobrepoe a aliquota encontrada, se for informada na tributação                                            
If @TriAliqInternaSubTrib <> 0                                               
  Set @EstAliqInterna = @TriAliqInternaSubTrib                                                
          
If @FlagEntrada = 1                                                                                                         
   --Eder - Chamado 184973                                                                 
   and @OprTipoMovimento <> 1                          
   and @TriMargemLucroSubst <> 0                                                                                                                                             
   and Exists(Select Codigo From Tributacoes                                                                                                                                                        
               Where EstadoOrigem=@CidEmpCodEstado                                                                                                            
                 and Codigo=@CodTributacao                                                                   
               --MARCELO - CHAMADO 192283                                                                                      
--               and EstadoDestino=@CidEmpCodEstado                                                                   
               --Eder - Chamado 243637                                                            
               --and RegiaoDestino = @RegiaoDestino                                                            
     and RegiaoDestino = @RegiaoOrigem                                                            
                 and AliqICM > 0)                                                                                                            
begin                                                                                     
  Select Top 1 @EstAliqInterna=AliqICM,                                                                                                                                  
               @RedBaseSubTrib= Case When @RedBaseSubTrib = 0 Then PerReducaoICM Else @RedBaseSubTrib End                                                                                              
  From Tributacoes                                                                                                                                                 
  Where EstadoOrigem=@CidEmpCodEstado            
     and Codigo=@CodTributacao                                                                                                                                                        
     --MARCELO - CHAMADO 192283                                                                                      
--   and EstadoDestino=@CidEmpCodEstado                                                                                                                              
     --Eder - Chamado 243637                                                    
--   and RegiaoDestino = @RegiaoDestino                                                            
     and RegiaoDestino = @RegiaoOrigem                                    
     --Eder - 320407                  
     and AliqICM > 0                
   Order By TipoPessoa                                                                                                                  
end                                                                                                                                                        
If @EstAliqInterna is null                                                                                                                  
   Set @EstAliqInterna = 0                                                      
                                                                                                          
If @CodSubTributaria > 0                                                                                                                                  
begin                                                                                                             
  Select                                                                     
      @SubAliquotaInterna = AliquotaInterna,                                                 
      @SubMargemLucro = MargemLucro,                                                                                                                                  
      @SubPercReducao = PercReducao,                                                                                                                                  
      @SubIndiceReducao = IndiceReducao,                                                                                                                    
      @SubFlagAbaterICM = FlagAbaterICM,                                                                                                   
      @SubFlagSomaIPI = FlagSomaIPI                                                                                                                                  
  From SubstituicaoTributaria                                                              
  Where CodSubTributaria = @CodSubTributaria                                                                               
    and Empresa = @Empresa                                                                                                                                  
end                                                                                                       
                                                                                        
  If @SubAliquotaInterna is null                     
     Set @SubAliquotaInterna = 0                                                                                          
  If @SubMargemLucro is null                                                                 
     Set @SubMargemLucro = 0                                                          
  If @SubPercReducao is null                                                                                                                           
     Set @SubPercReducao = 0                                                                                                                          
  If @SubIndiceReducao is null                                                         
     Set @SubIndiceReducao = 0                                                      
  If @SubFlagAbaterICM is null                 
     Set @SubFlagAbaterICM = 0                                                                          
  If @SubFlagSomaIPI is null                                                                                             
     Set @SubFlagSomaIPI = 0                                                                                                                       
                                                            
--Calculo do CST de ICMS e IPI                                     
Select @NumCstICM = Case when Op.NumCST_ICM in (-1) then @TriNumCST_ICM                                     
                         else Op.NumCST_ICM End,                                    
       @NumCstIPI = Case when Op.NumCST_IPI not in (-1)                
        then Op.NumCST_IPI   --Operação fiscal prevalece sobre demais.                                    
                         when @AliqIPI > 0 and Op.TipoIPI = 0 --Item tributado de ipi sera sempre 00 ou 50 (entrada ou saida tributada)                                    
                         then Case When @FlagEntrada = 1 Then 00 Else 50 End                                    
                         when Cla.NumCST_IPI not in (-1,0) and (@AliqIPI = 0 or Op.TipoIPI <> 0)                                     
                              then Cla.NumCST_IPI -- Class. Fiscal prevalece sobre demais.                                    
                         when @TriNumCST_IPI not in (-1) and (@AliqIPI = 0 or Op.TipoIPI <> 0)                                     
                              then @TriNumCST_IPI    -- Item sem ipi pega da tributação se informado                                                             
                    End,                                    
       @NumCsosn  = Case When @ParTipoRegimeTributario in(1,2) --Calculo de CST para Simples nacional                                    
                       Then Case When Op.NumCSOSN not in(-1,0) then Op.NumCSOSN                                    
                   Else @TriNumCSOSN                                     
                              End                                    
                    End                                    
  From Produtos Pro                                    
  Left Join Operacoes Op on Op.Codigo = @CodOperacao                                    
  Left Join ClassFiscais Cla on Cla.Codigo = @CodClassFiscal                                    
Where Pro.Codigo = @CodProduto                                    
                                    
if @NumCstICM <> -1                                    
  Set @NumCstICM = Cast(@ProOrigem as varchar(1)) + Replicate('0', 2 - Len(@NumCstICM)) + Cast(@NumCstICM as varchar(2))                                    
else                                    
  Set @NumCstICM = null                                    
                                      
--Gabriella - 299680                                  
if @NumCstIPI <> -1 and @FlagEntrada = 1                                     
  Set @NumCstIPI = Replicate('0', 2 - Len(@NumCstIPI)) + Cast(@NumCstIPI as varchar(2))                                   
if @NumCstIPI <> -1 and @FlagEntrada = 0                                     
  Set @NumCstIPI = Replicate('5', 2 - Len(@NumCstIPI)) + Cast(@NumCstIPI as varchar(2))                                  
if @NumCstIPI = -1                                  
  Set @NumCstIPI = null                                     
                                  
if @NumCsosn <> -1 and @ParTipoRegimeTributario in (1,2) --CSOSN para Simples Nacional                                    
  Set @NumCsosn = Replicate('0', 3 - Len(@NumCsosn)) + Cast(@NumCsosn as varchar(3))                                    
else                                    
  Set @NumCsosn = null 
  
--Gabriella - 471920  
if (@CidCodEstado <> 'EX') and  
   (@CidEmpCodEstado <> @CidCodEstado) and   
   (@EntTipoPessoa in('F','C','N')) and  
   (@TipoIndicadorIE = 9) and  
   (@FlagEntrada = 0) and  
   (@FlagCalcICMSInterestadualANP = 1) and  
   (@FlagCalcPartilhaICMEmpresa = 1) and
   (@codproduto <> 8888888)    
  Set @FlagCalcPartilhaICM = 1  
else  
  Set @FlagCalcPartilhaICM = 0                                                                           
                                    
If (@FlagCalcPartilhaICM = 0) and 
   (@EntTipoPessoa = 'F' or @EntTipoPessoa = 'N')                                                                                                                                 
   Set @AliqIcm = @TriAliqICM                                                                                                                          
Else                                                                                                                       
 --Ronaldo Chamado 317536                  
 /*IF @TriAliqICM < @EstAliqContrib                                                                                                                                                        
      Set @AliqICM = @TriAliqICM                                                                                                                           
   Else                     
      Set @AliqICM = @EstAliqContrib*/                
  IF @TriFlagPrevalecerAliqIcm = 1                
    Set @AliqICM = @TriAliqICM                
  else                
    begin                
      IF @TriAliqICM < @EstAliqContrib                                                                                                                                                        
        Set @AliqICM = @TriAliqICM                                                                                                                                      
      Else                                                                                                                                                   
        Set @AliqICM = @EstAliqContrib                
    end     

--Gabriella - 471920  
/*  
Alíquota interestadual das UF envolvidas:  
- 4% alíquota interestadual para produtos importados;  
- 7% para os Estados de origem do Sul e Sudeste (exceto ES), destinado para os Estados do Norte, Nordeste, Centro-Oeste e Espírito Santo;  
- 12% para os demais casos.  
*/  
if (@FlagCalcPartilhaICM = 1)  and
   (@FlagAliqPartilhaICMAutomatica = 1)
begin  
 if (@ProOrigem in (1, 2, 3, 8))  
       Set @AliqICM = 4.00      
    else if ((@CidEmpCodEstado = 'PR') or  
    (@CidEmpCodEstado = 'SC') or  
    (@CidEmpCodEstado = 'RS') or  
    (@CidEmpCodEstado = 'MG') or  
    (@CidEmpCodEstado = 'RJ') or  
    (@CidEmpCodEstado = 'SP')) and  
   ((@CidCodEstado <> 'PR') and  
    (@CidCodEstado <> 'SC') and  
    (@CidCodEstado <> 'RS') and  
    (@CidCodEstado <> 'MG') and  
    (@CidCodEstado <> 'RJ') and  
    (@CidCodEstado <> 'SP'))  
  Set @AliqICM = 7.00  
 else  
  Set @AliqICM = 12.00   
end                   
                                                    
If @CidEmpCodEstado = @CodEstadoLeitura and @TriFlagIsentoProdutor = 1                                          
   If @EntTipoPessoa = 'P' or @EntTipoPessoa = 'J' or @EntTipoPessoa = 'C' OR                                                        
      @EntTipoPessoa = 'I' --JALDO - CHAMADO 248899                                                      
      Set @AliqICM = 0                                              
                                    
                                                                            
If (@OprTipoICM = 1) or                                                                                                                                                        
   (@OprTipoICM = 2 and @FlagEntrada = 0) or                                    
   (@OprTipoICM = 2 and @FlagEntrada = 1 and @OprFlagDefaultLancamentoOutras = 0)                                                                                                                                                        
   Set @AliqICM = 0                                                                                                                                                        
                                                                                      
If @OprAliqICMFixo <> 0                                         
   Set @AliqICM = @OprAliqICMFixo                                                                  
                                                
--Eder - Chamado 295277                                    
If @AliqICMFixo <> 0                                                                                                                                                        
begin                                    
  --O cálculo do ICMS para Simples deve ser feito após o calculo da ST pois a ST considera aliquotas internas normais de ICMS                                    
  If @ParTipoRegimeTributario in (1,2) and  --- Simples Nacional ou com excesso de sublimite receita bruta                                    
     (@FlagEntrada = 0 or (@FlagEntrada = 1 and @OprTipoMovimento = 1))  --Saida ou entrada por devolução                                    
     --Não pode fixar a aliquota de icms no simples senao nao calcula a ST                 
     Set @AliqICM = @AliqICM                                    
  else                       
     Set @AliqICM = @AliqICMFixo                                                 
end                  
                
                
--Gabriella - 333391                                                                                                                                                                                               
Set @ValorBaseIPI = @ValorTotal + @AcrescimoBaseIPI                                                                                                                                                                                          
                                                                                 
If @ValorBaseIPI > 0 and @AliqIPI > 0                                
   Set @VAuxValorIPI = (@ValorBaseIPI * @AliqIPI) / 100                
     
--Somente irá prevalecer o Tipo da Tributação quando a Aliquota de IPI for igual a Zero                 
-- e o Tipo do Ipi da Operação Fiscal for Tributado                   
if @AliqIPI = 0 and @OprTipoIPI = 0                
begin                
 if @TriTipoValorNaoTributadoIPI = 0                
   Set @ValorIsentoIPI = @ValorBaseIPI                  
 if @TriTipoValorNaoTributadoIPI = 1                
   Set @ValorOutrasIPI = @ValorBaseIPI                     
end                
                   
if @OprTipoIPI = 1                
  Set @ValorIsentoIPI = @ValorBaseIPI                 
                  
if @OprTipoIPI = 2                
  Set @ValorOutrasIPI = @ValorBaseIPI                 
                  
If @AliqIPI = 0                                                                                                                                                        
   Set @ValorBaseIPI = 0                   
                  
if @ValorIsentoIPI > 0 or @ValorOutrasIPI > 0                
  Set @ValorBaseIPI = 0                      
        
                                                                                                                              
---Chamado 114964                                                         
--If @OprTipoIPI = 0 or @OprTipoIPI = 3                                                                                                                                                        
--Begin             --Gabriella - 333391                                                         
--  If @ValorTotal > 0 and @AliqIPI > 0                                                                                                                                                        
--     Set @VAuxValorIPI = (@ValorTotal * @AliqIPI) / 100                                                                                 
--End                                                                           
                                                                            
                                                                                                                          
If @TriFlagSubTributaria = 1                                                            
   and @ClaFlagSubTributaria = 1                                                                                                                                                         
and @GruFlagSubTributaria = 1                                                                                                                                                        
   and @TriMargemLucroSubst <> 0                                                                                                  
   and @EstFlagConvSub = 1                                                                        
   and @OprTipoICM = 0                                                                                      
   and @OprTipoSubTributaria > 0                                                                                               
begin                                                                           
  Set @ValorBaseSubTrib = @ValorTotal + @AcrescimoBaseSubTrib                                                                                                              
    
      --teste Ronaldo  
  --set @ValorBaseSubTrib = cast('A  ' + cast(@AcrescimoBaseSubTrib  as varchar(20))   as int)   
       
  If @OprFlagSubTribIPI = 1                                                                                                                                                         
     Set @ValorBaseSubTrib = @ValorBaseSubTrib + @VAuxValorIPI                                                                                                                                                   
end                                             
                                                                                                                                                 
--Eder - Chamado 262460                                                    
If @OprTipoICM = 0 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1 and @TriMargemLucroSubst <> 0 and                                                    
   @OprTipoSubTributariaCarga = 0                                                     
begin                                                    
  Set @ValorBaseSubTribCarga = @ValorTotal + @AcrescimoBaseSubTrib                                                 
  If @OprFlagSubTribIPI = 1                                                                                                           
     Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga + @VAuxValorIPI                                                                                                                               
end                                                                                                                                                        
                                                                                                                    
                                              
If @CodSubTributaria > 0                                                                                                                              
   and @TriFlagSubTributaria = 1                                                                                                                                                         
   and @ClaFlagSubTributaria = 1                                              
   and @GruFlagSubTributaria = 1                                                               
   and @SubMargemLucro <> 0                                                                                                                                   
   and @EstFlagConvSub = 1                                                                                  
begin                                                                                   
  Set @CalcBaseSubTrib = @ValorTotal + @AcrescimoBaseSubTrib                                                           
  If @SubFlagSomaIPI = 1                                                                                                                        
     Set @CalcBaseSubTrib = @CalcBaseSubTrib + @VAuxValorIPI                                                                                                                            
end                                                                                                                                                     
                                                                                                               
Set @ValorBaseICM = @ValorTotal + @AcrescimoBaseICM                                                                                                                   
Set @ValorBaseSubTribDestino = @ValorTotal + @AcrescimoBaseICM                                                                       
Set @CalcBaseSubTribDestino = @ValorTotal + @AcrescimoBaseICM                                                                                                  
                                                                                           
                                                                    
--JALDO - CHAMADO 243556                                                                    
--O Tipo "2" não estão sendo verificando porque nunca será usado                                                                    
--If @EntTipoPessoa <> 'J'                                                  
--begin                                                                                    
-- Set @ValorBaseIcm = @ValorBaseIcm + @VAuxValorIPI                                                      
--  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino + @VAuxValorIPI                                                              
--  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino + @VAuxValorIPI                                                                                    
--end                                 
                                                            
--JALDO - CHAMADO 248899                                                        
--if ((@TipoConsideraIPICalculoICM = 0) and (@EntTipoPessoa <> 'J')) or                                                                     
--   (@TipoConsideraIPICalculoICM = 1)                                                                     
--begin                                                                    
--Set @ValorBaseIcm = @ValorBaseIcm + @VAuxValorIPI                                                                                                           
--  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino + @VAuxValorIPI                                                                             
--  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino + @VAuxValorIPI                                                 
--end                                                                    
                
--Gabriella - 256424                                                  
--if (@EntTipoPessoa not in ('J','I'))                                   
if (@EntTipoPessoa not in ('J','I')) or (@OprFlagIPISobreBaseICM = 1)                                   
begin                                                                    
  Set @ValorBaseIcm = @ValorBaseIcm + @VAuxValorIPI                                                               
  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino + @VAuxValorIPI                                                    
  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino + @VAuxValorIPI                                                                                      
end                                                   
                                                                                                      
Set @ValorIsentoICM = @ValorBaseIcm          
                                                                              
If @TriPerReducaoICM <> 0 and @ValorBaseIcm <> 0                             
begin                                                                                        
  Set @ValorBaseIcm = @ValorBaseIcm - ((@ValorBaseIcm * @TriPerReducaoICM) / 100)                                                                                                                       
  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino - ((@ValorBaseSubTribDestino * @TriPerReducaoICM) / 100)                                                                                                                                              
  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino - ((@CalcBaseSubTribDestino * @TriPerReducaoICM) / 100)                                                                  
end                                                                  
                                                                                                                    
                                                                      
If @ValorBaseIcm > 0 and @OprPerRedICM > 0                                                                                                                                                        
begin                                  
  Set @ValorBaseIcm = @ValorBaseIcm - ((@ValorBaseIcm * @OprPerRedICM) / 100)                                                                                                                                                        
  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino - ((@ValorBaseSubTribDestino * @OprPerRedICM) / 100)                                                                                                  
  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino - ((@CalcBaseSubTribDestino * @OprPerRedICM) / 100)                                                           
end                                       
                                                                                 
If @ValorBaseIcm > 0 and @AliqICM > 0                                
   Set @ValorICM = (@ValorBaseIcm * @AliqICM) / 100                             
                          
--Ronaldo Chamado 313933                          
select @RegTribPercIvaSimplicado = R.PercIvaSimplificado from regimetributario R                          
left join entidades E on R.Codigo = E.codRegimeTributario                          
where R.empresa = @Empresa and                          
      E.codigo  = @CodEntidade                          
                          
                                                                                                                                                       
If @TriFlagSubTributaria = 1 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                          
   and @TriMargemLucroSubst <> 0 and @EstFlagConvSub = 1 and @OprTipoICM = 0 and @OprTipoSubTributaria > 0                                                                                                    
Begin                                                                                                              
--Eder - Chamado 243557  -- Teste específico para o Cliente pois ainda não sabemos se outros clientes aceitarão a modificação                                                                
--Eder - Chamado 243557                                              
  if (@EmpId = 'ALPHA PNEUS') and @TriPerReducaoICM > 0                                          
     If @OprFlagSubTribIPI = 1                                                                                                                                                     
       Set @ValorBaseSubTrib = @ValorBaseSubTrib - (((@ValorBaseSubTrib - @VAuxValorIPI) * @TriPerReducaoICM) / 100)                                                                                                                     
     Else                                                          
       Set @ValorBaseSubTrib = @ValorBaseSubTrib - ((@ValorBaseSubTrib  * @TriPerReducaoICM) / 100)                                                                                                                                                        
                                                                
  If @RedBaseSubTrib <> 0 and @ValorBaseSubTrib <> 0                                                                                                                                  
     Set @ValorBaseSubTrib = @ValorBaseSubTrib - ((@ValorBaseSubTrib  * @RedBaseSubTrib) / 100)                                                                                                                                  
                            
  --Ronaldo Chamado 313933                          
  --If @TriMargemLucroSubst <> 999.99                                                                             
  --   Set @ValorBaseSubTrib = @ValorBaseSubTrib +  ((@ValorBaseSubTrib * @TriMargemLucroSubst) / 100)                                                                                                                                       
  --If @ValorBaseSubTrib > 0 and @EstAliqInterna > 0                                                                                                                                                        
  --   Set @ValorSubTrib = (@ValorBaseSubTrib * @EstAliqInterna) / 100                                                                                                                                       
  -- Set @ValorSubTrib = @ValorSubTrib - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                             
  if @RegTribPercIvaSimplicado > 0 and @EstAliqInterna > 0                          
     begin                          
        set @ValorSubTrib     = round(@ValorbaseSubTrib * @RegTribPercIvaSimplicado / 100,2)                          
        set @ValorBaseSubTrib = round((@ValorIcm + @ValorSubTrib) / @EstAliqInterna * 100,2)                          
     end                          
  else                          
     begin                           
 If @TriMargemLucroSubst <> 999.99                                                                                                       
         Set @ValorBaseSubTrib = @ValorBaseSubTrib +  ((@ValorBaseSubTrib * @TriMargemLucroSubst) / 100)                                                                                                                                       
        If @ValorBaseSubTrib > 0 and @EstAliqInterna > 0                                                                                                                                                        
           Set @ValorSubTrib = (@ValorBaseSubTrib * @EstAliqInterna) / 100                                                                                                 
        Set @ValorSubTrib = @ValorSubTrib - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                             
    end                           
End                                                                                               
                                                            
                                                                                      
--Eder - Chamado 262460                                                    
If @OprTipoICM = 0 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1 and @TriMargemLucroSubst <> 0 and                                                    
   @OprTipoSubTributariaCarga = 0                            begin                                  
--Eder - Chamado 243557 -- Teste específico para o Cliente pois ainda não sabemos se outros clientes aceitarão a modificação            
  if (@EmpId = 'ALPHA PNEUS') and @TriPerReducaoICM > 0                                                            
     If @OprFlagSubTribIPI = 1                                                                    
       Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga - (((@ValorBaseSubTribCarga - @VAuxValorIPI) * @TriPerReducaoICM) / 100)                                                                                                                                   
     Else                                                          
     Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga - ((@ValorBaseSubTribCarga  * @TriPerReducaoICM) / 100)                                                                                                                                               
  
    
      
        
         
                                                                            
  If @RedBaseSubTrib <> 0 and @ValorBaseSubTribCarga  <> 0                                                                                                                                  
     Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga - ((@ValorBaseSubTribCarga  * @RedBaseSubTrib) / 100)                                                                                                                                                 
 
     
      
        
          
            
              
                          
  --Ronaldo Chamado 313933                            
  --If @TriMargemLucroSubst <> 999.99                                                                                                                   
  --   Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga +  ((@ValorBaseSubTribCarga * @TriMargemLucroSubst) / 100)                                                                                                                                 
  --If @ValorBaseSubTribCarga > 0 and @EstAliqInterna > 0                                                                                                           
  --   Set @ValorSubTribCarga = (@ValorBaseSubTribCarga * @EstAliqInterna) / 100             
  --Set @ValorSubTribCarga = @ValorSubTribCarga - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                          
  if @RegTribPercIvaSimplicado > 0 and @EstAliqInterna > 0                          
     begin                          
        set @ValorSubTribCarga     = round(@ValorBaseSubTribCarga * @RegTribPercIvaSimplicado / 100,2)                          
        set @ValorBaseSubTribCarga = round((@ValorIcm + @ValorSubTribCarga) / @EstAliqInterna * 100,2)                          
     end                          
  else                          
     begin                           
       If @TriMargemLucroSubst <> 999.99                                                                                                                   
          Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga +  ((@ValorBaseSubTribCarga * @TriMargemLucroSubst) / 100)                                                                                                                                 
       If @ValorBaseSubTribCarga > 0 and @EstAliqInterna > 0                                                                                                           
          Set @ValorSubTribCarga = (@ValorBaseSubTribCarga * @EstAliqInterna) / 100                                                                                                                 
          Set @ValorSubTribCarga = @ValorSubTribCarga - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                                                                 
    end                           
end                                                                                                                                                        
                                        
                                                         
                                                                                                  
--Calculo da substituição tributaria pela tabela SubstituicaoTributaria                                         
If @CodSubTributaria > 0                                                                       
   and @TriFlagSubTributaria = 1 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                                                                                        
   and @SubMargemLucro <> 0 and @EstFlagConvSub = 1                                                                                                         
begin                                                                                                                              
  If @SubPercReducao <> 0                                                                                             
     Set @CalcBaseSubTrib  = @CalcBaseSubTrib - ((@CalcBaseSubTrib * @SubPercReducao) / 100)                                                                 
  If @SubMargemLucro <> 999.99                                                                                                                                
     Set @CalcBaseSubTrib = @CalcBaseSubTrib +  ((@CalcBaseSubTrib * @SubMargemLucro) / 100)                                                                                                                   
  If @SubIndiceReducao <> 0                                                                         
     Set @CalcBaseSubTrib = @CalcBaseSubTrib * @SubIndiceReducao                                                                                                                          
                                                                                                                          
  --Quando não tem aliquota interna na sub.trib, pega a do estado de origem                                                                         
  If @CalcBaseSubTrib > 0 and                                                                                      
     (@SubAliquotaInterna > 0 or @EstAliqInterna > 0)                                                           
  begin                                                  
    if @SubAliquotaInterna > 0                                                                                                                        
     Set @CalcValorSubTrib = (@CalcBaseSubTrib * @SubAliquotaInterna) / 100                                                                                                                  
    Else                                                                     
       Set @CalcValorSubTrib = (@CalcBaseSubTrib * @EstAliqInterna) / 100                                                                                          
  end                                                                                                                            
                                                                                                                          
  --Opção que permite abater o icms da operação na substituição tributaria                                                                                                                          
  If @SubFlagAbaterICM = 1                                                                                                                        
     Set @CalcValorSubTrib = @CalcValorSubTrib - Round((@CalcBaseSubTribDestino * @AliqICM) / 100,2)                                                                                                                    
                                                                        
  If @OprTipoICM = 0 and @OprTipoSubTributaria > 0                                                           
  begin                                                       
    Set @ValorBaseSubTrib = @CalcBaseSubTrib                                                               
    Set @ValorSubTrib = @CalcValorSubTrib                                                                                                                               
  end                                                                                                                              
                                
  --Eder - Chamado 262460                              
  If @OprTipoSubTributariaCarga = 0                                                    
  begin                                                                              
    Set @ValorBaseSubTribCarga = @CalcBaseSubTrib                                                                                       
    Set @ValorSubTribCarga = @CalcValorSubTrib                                                                                               
  end                                                    
end                                                                                                     
                                           
--MARCELO - CHAMADO 195051                                                                                
if (@ValorBaseSubTrib <> 0) or (@ValorSubTrib <> 0)                                                                                 
begin                                                                                
  set @ValorBaseSubTribCarga = 0                                                                                
  set @ValorSubTribCarga = 0                                                         
end                                                                                
                                    
                                    
--Eder - Chamado 295277                                    
--O cálculo do ICMS para Simples deve ser feito após o calculo da ST pois a ST considera aliquotas internas normais de ICMS                                    
If @ParTipoRegimeTributario in (1,2) and  --- Simples Nacional ou com excesso de sublimite receita bruta                                    
   (@FlagEntrada = 0 or (@FlagEntrada = 1 and @OprTipoMovimento = 1))  --Saida ou entrada por devolução   
   --471920
   and (@FlagCalcPartilhaICM = 0)                                    
begin                 
  If @TriAliqICM <= 0                                     
    Set @AliqICM = 0                                    
  else                                    
    Set @AliqICM = @ParAliqICMSimples                                    
  If (@OprTipoICM = 1) or                                                                                                                                                        
     (@OprTipoICM = 2 and @FlagEntrada = 0) or                                                                                                                                          
     (@OprTipoICM = 2 and @FlagEntrada = 1 and @OprFlagDefaultLancamentoOutras = 0)                                                                                                      
     Set @AliqICM = 0                                                                     
Set @ValorICM = (@ValorBaseIcm * @AliqICM) / 100                                    
end                                    
                                                                                             
If @AliqICM = 0                                                                                                                                                        
   Set @ValorBaseIcm = 0                                                                                             
Else                                                                                                                      
   Set @ValorIsentoICM = @ValorIsentoICM - @ValorBaseIcm                                                                                          
                                                                                                                         
                                                                   
If @OprTipoSubTributaria in(2,3) and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                   
   and @OprTipoICM = 0 and @EstFlagConvSub = 1                                           
   and (@TriFlagSubTributaria = 1 or @TriMargemLucroSubst <> 0 or @SubMargemLucro <> 0)                                                                                                     
begin                                                                                                                                          
  If @OprTipoSubTributaria = 2                                           
     Set @ValorIsentoICM = @ValorIsentoICM + @ValorBaseICM                                                                                             
  If @OprTipoSubTributaria = 3                                         
  begin                                              
     Set @ValorOutrasICM = @ValorOutrasICM + @ValorBaseICM + @ValorIsentoICM                                                                                              
Set @ValorIsentoICM = 0                                                                              
  end                                                                                                        
  Set @ValorBaseIcm = 0                                                                                                                                          
  Set @ValorICM = 0                                                                                                                                          
end         

--Gabriella - 471920   
if (@FlagCalcPartilhaICM = 1)  
begin  
 --Valor do ICMS relativo ao Fundo de Combate à Pobreza (FCP)  
 Set @ValorFCP = Round((@ValorBaseIcm * @AliqFCP) / 100, 2)  
 --Aliquota Interna do Estado de Destino  
 Set @AliqICMDestino = @EstAliqInterna - @AliqFCP 
   
 Set @AnoPartilha = Year(GetDate())  
 if (@AnoPartilha <= 2016)  
 begin  
  Set @PercPartilhaICMOrigem = 60.00  
  Set @PercPartilhaICMDestino = 40.00  
 end  
 else if (@AnoPartilha = 2017)  
 begin  
  Set @PercPartilhaICMOrigem = 40.00  
  Set @PercPartilhaICMDestino = 60.00  
 end  
 else if (@AnoPartilha = 2018)  
 begin  
  Set @PercPartilhaICMOrigem = 20.00  
  Set @PercPartilhaICMDestino = 80.00  
 end   
 else if (@AnoPartilha >= 2019)  
 begin  
  Set @PercPartilhaICMOrigem = 0.00  
  Set @PercPartilhaICMDestino = 100.00  
 end    
   
 if (@AliqICMDestino > 0)  
 begin  
  Set @ValorICMDestino = Round((@ValorBaseIcm * @AliqICMDestino) / 100, 2)    
  Set @ValorICMDiferencial = @ValorICMDestino - @ValorICM  
    
  Set @ValorPartilhaICMOrigem = Round((@ValorICMDiferencial * @PercPartilhaICMOrigem) / 100, 2)  
  Set @ValorPartilhaICMDestino = Round((@ValorICMDiferencial * @PercPartilhaICMDestino) / 100, 2)  
 end  
   
 Set @CEST = ''  
end  
else  
begin  
   Set @AliqFCP = 0  
   Set @ValorFCP = 0  
   Set @AliqICMDestino = 0  
   Set @PercPartilhaICMOrigem = 0  
   Set @PercPartilhaICMDestino = 0  
   Set @ValorPartilhaICMOrigem = 0   
   Set @ValorPartilhaICMDestino = 0  
   Set @CEST = ''  
end                                                                                                                                                             
                                                                                                                                                                                                                                                                                                                                           
Set @FatorRedCusto = 1                                                                     
If (@ParTipoReducaoICM = 1) and (Ltrim(@CodEntidade) <> '')                                                     
   and (@FlagEntrada = 0 or (@FlagEntrada=1 and @OprTipoMovimento = 1))                                                                                                                                            
--Eder Chamado 170325                                                                                              
   and (@CodProduto <> 8888888)                                                                                              
begin                                                                                                                    
--   If @OprTipoSubTributaria not in(2,3)   --não calcula quando a sub. tributaria é isenta/outras                                              
--   Isaac - Chamado 191232                                                                                
   If not (@OprTipoSubTributaria in(2,3) and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                             
      and @OprTipoICM = 0 and @EstFlagConvSub = 1                                                                                                                                       
      and (@TriFlagSubTributaria = 1 or @TriMargemLucroSubst <> 0 or @SubMargemLucro <> 0))                                                                               
      Set @FatorRedCusto = (100 - @TriAliqICM) / (100 - @AliqICM)                      
                                                                                                                                                
   If @OprPerRedMargem <> 0                                                                           
     Set @FatorRedCusto = @FatorRedCusto - (@OprPerRedMargem / 100)                                                                                                                          
   --Eder - Chamado 270320                                                
   --If (@TriPerRedMargem <> 0)                                                
   --  Set @FatorRedCusto = @FatorRedCusto - (@TriPerRedMargem / 100)                                                                  
end                                                                                                                           
--Eder - Chamado 270320                                                
if (@TriPerRedMargem <> 0) and (@CodProduto <> 8888888)                                                 
   Set @FatorRedCusto = @FatorRedCusto - (@TriPerRedMargem / 100)                            
                                                       
-- 298865                                                                           
--Eder - Chamado 195755                                                                                  
--Somente vai calcular DespesasNaoInclusas no fator quando for saída ou devolução                                                                                        
-- Renato - 278440                            
If (@FlagEntrada = 0) or                                                                                                                                       
   (@FlagEntrada = 1 and @OprTipoMovimento = 1)                                                                                                                                        
begin                                                                                  
  --Eder - Chamado 170325                                                                         
  --Adiciona o acrescimo de custo, que já deve vir passado como percentual                                                                                              
                                                 
  If (@PerRedDespesa <> 0) and (@ParTipoReducaoICM in (0,1)) and (@FlagDeduzirDespNaoInclNaMargem = 0)                                                                                             
  begin                                                                                              
    Set @FatorRedCusto = @FatorRedCusto + @PerRedDespesa                                                  
  end                                                    
end                                                                                   
                                                                                                                                          
                                                                    
--Calcula o fator de venda para as saídas e entradas por devolução.                                                                                                                                                        
--Retira o Valor do ICM, a Aliquota de CPMF, a Aliquota de PIS/COFINS e soma o acrescimo de vend                                                                                                                      
Set @FatorRedVenda = 1                                                                                                                         
If ((@FlagEntrada = 0) or                                                                                           
   (@FlagEntrada = 1 and @OprTipoMovimento = 1))                                          
   -- Renato - 278440                 
   and (@ParTipoReducaoICM = 2) -- 2 - Deduzir Impostos da Venda                                                            
begin                                                                                
                                            
  --Eder -Chamado 292832 - Evitar arredondamento desnecessario na aliquota do ICM (Vide Chamado)                                      
  If (@AliqICM > 0) and (@ValorTotal > 0)  
  begin                                               
     if @ValorBaseICM = @ValorTotal + @AcrescimoBaseICM     
       if (@FlagCalcPartilhaICM = 1) --471920
         Set @FatorRedVenda = @FatorRedVenda - ((@AliqICMDestino+@AliqFCP) / 100)
       else                                      
         Set @FatorRedVenda = @FatorRedVenda - (@AliqICM / 100)                                      
     Else 
       if (@FlagCalcPartilhaICM = 1) --471920
         Set @FatorRedVenda = @FatorRedVenda - Round((((@ValorICMDestino+@ValorFCP) * 100) / @ValorTotal) / 100,4)
       else                                
         Set @FatorRedVenda = @FatorRedVenda - Round(((@ValorICM * 100) / @ValorTotal) / 100,4)                                      
  end
                                      
  If @ParAliqCPMF > 0                                                                                                                                                        
     Set @FatorRedVenda = @FatorRedVenda - (@ParAliqCPMF / 100)                                                                                   
                                            
  If @AliqPISCOFINS > 0                                                                                                                                                        
   Set @FatorRedVenda = @FatorRedVenda - (@AliqPISCOFINS / 100)                                          
                                                                                             
                                            
  If (@LisPercAcrescimoAdm1 + @LisPercAcrescimoAdm2 + @LisPercAcrescimoAdm3) > 0                                                                                     
     Set @FatorRedVenda = @FatorRedVenda - ((@LisPercAcrescimoAdm1 + @LisPercAcrescimoAdm2 + @LisPercAcrescimoAdm3) / 100)                                                                                                                                    
                                                                                
  If (@AcrescimoRedVenda <> 0) and (@ValorTotal > 0)                                                                                                                                                        
    Set @FatorRedVenda = @FatorRedVenda - Round(((@AcrescimoRedVenda * 100) / @ValorTotal) / 100,4)                                                                            
                                        
  --Renato - 290579                                          
  -- Se for uma venda fora do estado com ICMS, e os Percentuais de ICMS e SubTrib da Compra estiverem informados                                          
  -- na Lista de Preco vai abater o ICMS da compra no Custo.                                          
  If ((@CidEmpCodEstado <> @CidCodEstado) and (@ValorICM > 0) and (@PercICMCusto > 0) and (@PercSubTribCusto > 0))                                          
    Set @FatorRedCusto = @FatorRedCusto - (@PercICMCusto / 100)                                           
                                        
end                                             
  --Renato - 278440                                          
If (@PerRedDespesa <> 0) and (@FlagDeduzirDespNaoInclNaMargem = 1) and (@ParTipoReducaoICM <> 2)                                                                                             
begin                                                                                              
  Set @FatorRedVenda = @FatorRedVenda - @PerRedDespesa                                                        
end                                                                                
                                    
                                    
--Eder - 303720                                            
Set @AcrDespesasPisCOFINS = @AcrescimoBaseICM                                
if (@OprFlagIPISobrePisCofins = 1)  --Calcula IPI sobre Pis e COFINS                                 
  Set @AcrDespesasPisCOFINS = @AcrDespesasPisCOFINS + @VAuxValorIPI                                
                                    
-- Renato - Chamado 272165                                             
Select @ValorBasePisCofins = ValorBasePisCofins,                                             
       @AliqPis = AliqPis,                                    
       @AliqCofins = AliqCofins,                                    
       @NumCstPisCofins = NumCstPisCofins,                               
       -- Renato - 297792                              
       @NatReceitaPisCofins = NatReceitaPisCofins,                  
       -- Renato - 332318                
       @NatBaseCalcCredito = NatBaseCalcCredito,
       -- Renato - 361650
       @AliqComplPis = AliqComplPis,                             
       @AliqComplCofins = AliqComplCofins                                    
                                          
From dbo.Calcular_PisCofins(@Empresa, @CodProduto, @CodEntidade, @CodTributacao, @CodOperacao,                                           
                            @CodClassFiscal, @ValorTotal, @AcrDespesasPisCOFINS,                              
                            -- Renato - 297792                                  
              @FlagEntrada)                                                                                                                                                        
                                                                         
if @CodProduto = 8888888                                                        
begin                                                                                                                                                        
  If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                                                                               
     and Ltrim(@OprCFOP_Servico_NCFora) <> ''                                                                                      
     Set @NumCFOP = @OprCFOP_Servico_NCFora                                                                                                                    
  Else                                                                                                               
     Set @NumCFOP = @OprCFOP_Servico                                                                                                                                
end                                                                                            
else                                                                                                                                    
  Begin                                                                                                  
      If @TriTipoCFOP = 1 or @TriTipoCFOP = 0                                                            
         begin                                                                                                 
           If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                                                                                       
 
              and Ltrim(@OprCFOP1_Normal_NCFora) <> ''                                                                                 
       Set @NumCFOP = @OprCFOP1_Normal_NCFora                                                                                                                                                        
           Else                                                                                                                                
              Set @NumCFOP = @OprCFOP1_Normal                                                   
         end                                                                                
      If @TriTipoCFOP = 2                                                                                                                                                        
         begin                                                                                                                         
           If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                                                                                      
  
              and Ltrim(@OprCFOP2_Industrializado_NCFora) <> ''                                                                                                                 
 Set @NumCFOP = @OprCFOP2_Industrializado_NCFora                                                            
                                                  
           Else                                                                                         
         Set @NumCFOP = @OprCFOP2_Industrializado                                      
         end                                                                                                                            
      If @TriTipoCFOP = 3                                                            
         begin                                                                                                                                              
           -- JALDO - CHAMADO 184880                                                                                          
           -- If @EntTipoPessoa in('F','N')                                                                                                     
           If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                            
              Set @NumCFOP = @OprCFOP3_SubRevenda_NC                                                                            
           Else                                                                                                 
             Set @NumCFOP = @OprCFOP3_SubRevenda                                                                                                                                                        
         end                                                   
      If @TriTipoCFOP = 4                                                                                                                                                        
         begin                               
           -- JALDO - CHAMADO 184880                                               
           --If @EntTipoPessoa in('F','N')                                                                                           
           If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                     
              Set @NumCFOP = @OprCFOP4_SubRevendaML_NC                                                                                                                                                        
           Else                                                                      
              Set @NumCFOP = @OprCFOP4_SubRevendaML                                                                                                                    
         end                                                                                                
      If @TriTipoCFOP = 5                                                                                                                
         begin               
           If @EntTipoPessoa in('F','N')                              
             Set @NumCFOP = @OprCFOP5_SubFabricacao_NC                                                                
           Else                                                                                                                                                        
              Set @NumCFOP = @OprCFOP5_SubFabricacao                                        
         end                                                                                                                         
      If @TriTipoCFOP = 6                                                                                             
         begin                                                                                                
           If @EntTipoPessoa in('F','N')                                                              
              Set @NumCFOP = @OprCFOP6_SubFabricacaoML_NC                                                                                         
           Else                                   
              Set @NumCFOP = @OprCFOP6_SubFabricacaoML                                                                                            
         end                                                                   
      If @TriTipoCFOP = 7                                                                                                                             
         begin                                                                                                                                          
           Set @NumCFOP = @OprCFOP7_Importado                                                                                                                               
         end                                                                                                                          
      If @TriTipoCFOP = 9                         
         begin                                                                                 
           If @EntTipoPessoa in('F','N','C','P')                                                                                                                             
           Set @NumCFOP = @OprCFOP9_Petroleo_NC                                                                                                                                                        
   Else                                                                                                                                                        
              Set @NumCFOP = @OprCFOP9_Petroleo                                                                                                             
         end end                                                                         
                                                                                                           
If Substring(@NumCFOP,1,1) in ('1','2','3') and @CidCodEstado <> @CidEmpCodEstado                                                                                                                    
   If @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado = 'EX'                                                                                                      
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'3')                                                                                                    
   Else                                                                          
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'2')                                                                                                                                                           
If Substring(@NumCFOP,1,1) in ('5','6','7') and @CidCodEstado <> @CidEmpCodEstado                                                                                                                                                         
 If @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado = 'EX'                                                                                                                       
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'7')                                                                 
   Else                                                                                     
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'6')                                                  
                                                                              
--MARCELO - CHAMADO 209798                                                         
/*                                                                              
CFOP 5.405 não existe o seu correlado 6.405 para vendas fora do estado,                                                                               
devendo ser utilizado em seu lugar o CFOP 6.404, conforme reunião defina                              
com Eder                                                    
*/                                                                            
--Rafael chamado 224824                                                     
  --6.405  -> 6.404                                                                        
  --6405  --> 6404                                                                        
                                                                        
--if (Replace(@NumCFOP,'.','') = '6405')                                      
  --set @NumCFOP = '6404'                                                                         
                                                                        
if (@NumCFOP  = '6.405')                                                                              
  set @NumCFOP = '6.404'                                                                              
                                                                         
if (@NumCFOP  = '6405')                                                                         
  set @NumCFOP = '6404'                                                                      
                                                                                                
If @NumCFOP is null                                                                                                                                          
   Set @NumCFOP = ''               
                                                                                                                                                         
If @AliqICM is null                                                                             
   Set @AliqICM=0               
                                                                                                                                                          
if @CodProduto = 8888888          
Begin                                                                                                          
  -- Renato - 341779               
  if (@OprFlagICMSSobreServicos = 0) or (@OprTipoIcm in (1,2))              
  begin              
    set @AliqICM = 0                                                                                                                                          
    set @ValorBaseIcm = 0                                                       
    set @ValorICM = 0                                                        
    set @ValorIsentoICM = 0                                                                                              
    set @ValorOutrasICM = 0                         
                                                       
    if (@OprFlagICMSSobreServicos = 0)              
    begin                
      -- Mantendo compatibilidade com versões antigas, ou seja, se o usuario não marcar o FlagICMSSobreServicos               
   -- o sistema não muda a forma de gerar os impostos dos serviços.                                                 
      if (@TriTipoValorNaoTributado = 0)                                                  
        set @ValorIsentoICM = @ValorTotal + @AcrescimoBaseICM                                                                                                  
      else                                                                                        
        set @ValorOutrasICM = @ValorTotal + @AcrescimoBaseICM                
    end              
    else              
    begin              
      if (@OprTipoIcm = 1)                                                  
        set @ValorIsentoICM = @ValorTotal + @AcrescimoBaseICM                                     
      else                                                                                        
        set @ValorOutrasICM = @ValorTotal + @AcrescimoBaseICM                
    end              
                                                                                                                  
  end              
  else if ((@OprFlagICMSSobreServicos = 1) and (@OprTipoIcm = 0) and ((@AliqICM = 0) or (@ValorBaseIcm = 0)) )              
  begin              
    if (@TriTipoValorNaoTributado = 0)               
      set @ValorIsentoICM = @ValorTotal + @AcrescimoBaseICM                                                                                                  
    else                                                                                        
      set @ValorOutrasICM = @ValorTotal + @AcrescimoBaseICM               
  end              
                  
  set @ValorBaseSubTrib = 0                                                                                                                                         
  set @ValorSubTrib = 0                                                                                                       
  set @ValorBaseSubTribCarga = 0                                                                                                               
  set @ValorSubTribCarga = 0                                                                                                                                          
  set @RedBaseSubTrib = 0                                    
--Eder - Chamado  170325                                                                                              
--  set @FatorRedCusto = 1                                                                                              
  set @FatorRedVenda = 1                                                                                                                                          
  set @AliqPISCOFINS = 0                
                                                                                                                             
end                                            
                                    
 
--Eder - 297029                                      
If (@ValorBaseICM > 0 and @ValorIsentoICM > 0)  
begin  
  --Renato - 361064 
  if (@TriPerReducaoICM = 0) and (@OprPerRedICM <> 0)  
    Set @PerReducaoICM = @OprPerRedICM
  else if (@TriPerReducaoICM <> 0) and (@OprPerRedICM = 0)  
    Set @PerReducaoICM = @TriPerReducaoICM 
  else
    Set @PerReducaoICM = Round(@ValorIsentoICM / (@ValorBaseICM + @ValorIsentoICM) * 100,2)                                                         
end 
else                                      
  Set @PerReducaoICM = 0    

     
                                                                           
--Define o valor de isento ou o valor de outras para o que não foi tributado                                                                                                                                    
if @CodProduto <> 8888888 and @ValorIsentoICM > 0                         
begin                                                           
  --Chamado 156315 - calculando errado valor de isentas com tributação com coluna de outras                                                                                                
 If @OprTipoICM = 2 or                                                             
    (@TriTipoValorNaoTributado = 1 and @OprTipoICM = 0)                                                                                                
  begin                                                                                                                                  
    If  not (@OprTipoSubTributaria in(2,3) and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                                                        
           and @EstFlagConvSub = 1                                                                                                                                     
            and (@TriFlagSubTributaria = 1 or @TriMargemLucroSubst <> 0))                                                                               
       or @OprTipoICM = 2                                                                
    begin                                                                                                                                        
      Set @ValorOutrasICM = @ValorIsentoICM                                            
      Set @ValorIsentoICM = 0                                                                                                                                                                         
    end                                                              
  end                                                                        
end  

if (@ValorBaseSubTrib = 0  and @ValorSubTrib = 0 and @ValorBaseSubTribCarga = 0 and @ValorSubTribCarga = 0)
begin
  set @EstAliqInterna = 0
  set @TriMargemLucroSubst = 0 
end                                              
                                                                            
Insert Into @Campos (AliqICM, ValorBaseICM, ValorICM, ValorIsentoICM, ValorOutrasICM, PerReducaoICM,                                    
               ValorBaseSubTrib, ValorSubTrib, FatorRedCusto, FatorRedVenda, NumCFOP,                                      
               ValorBaseSubTribCarga, ValorSubTribCarga, PerRedBaseSubTrib, AliqPISCOFINS,                                            
               -- Renato - Chamado 272165                                              
               ValorBasePisCofins, AliqPis, AliqCofins,                                    
               NumCstICM, NumCstIPI, NumCstPisCofins, NumCsosn,                               
               -- Renato - 297792                              
               NatReceitaPisCofins,                 
               -- Renato - 332318                
               NatBaseCalcCredito,                
               --Ronaldo 343696    
               IndNaturezaFrete,                      
               --Gabriella - 333391     
               ValorBaseIPI,                
               ValorIsentoIPI,                                                                                                                                                        
               ValorOutrasIPI,
               AliqICMSST,
               PercMvaICMSST,
               --Renato - 361650
               AliqComplICM,
               AliqComplPis,
               AliqComplCofins,
               --Gabriella - 471920        
		        AliqFCP,   
				ValorFCP,   
				AliqICMDestino,   
				PercPartilhaICMOrigem,  
				PercPartilhaICMDestino,  
				ValorPartilhaICMOrigem,  
				ValorPartilhaICMDestino,  
				CEST)               
                                                                                                                               
       Values (@AliqICM, @ValorBaseICM, @ValorICM, @ValorIsentoICM, @ValorOutrasICM, @PerReducaoICM,                       
               @ValorBaseSubTrib, @ValorSubTrib, @FatorRedCusto, @FatorRedVenda, @NumCFOP,                                                                                               
               @ValorBaseSubTribCarga, @ValorSubTribCarga, @RedBaseSubTrib, @AliqPISCOFINS,                                 
               -- Renato - Chamado 272165                                               
               @ValorBasePisCofins, @AliqPis, @AliqCofins,                                    
               @NumCstICM, @NumCstIPI, @NumCstPisCofins, @NumCsosn,                               
               -- Renato - 297792                              
               @NatReceitaPisCofins,                 
               -- Renato - 332318                
               @NatBaseCalcCredito,     
               --Ronaldo 343696    
               @OprIndNaturezaFrete,               
               --Gabriella - 333391                       
               @ValorBaseIPI,                
               @ValorIsentoIPI,                                                                                                                                                        
               @ValorOutrasIPI,
               --Renato - 360358
               @EstAliqInterna,
               @TriMargemLucroSubst,
			   --Renato - 361650
               @TriAliqComplICM,
               @AliqComplPis,
               @AliqComplCofins,               
               --Gabriella - 471920        
		        @AliqFCP,   
				@ValorFCP,   
				@AliqICMDestino,   
				@PercPartilhaICMOrigem,  
				@PercPartilhaICMDestino,  
				@ValorPartilhaICMOrigem,  
				@ValorPartilhaICMDestino,  
				@CEST)                 
Return                                    
                                    
end 

GO

ALTER procedure [dbo].[Stored_Prft110GeraNota] (                                                                  
@Ped_Sequencia int,                                                                                              
@Empresa numeric(2),                                                                                              
@TipoControle numeric(1),                                                                                              
@CodControle numeric(9),                                                                                              
@ContadorNota numeric(3))                                                                                              
as                                                                                              
/**********************                                      
VERSÃO 3.00                                      
**********************/                                      
--MARCELO - CHAMADO 195051                                      
--declare @SomaBaseSubTribCarga decimal(11,2)                                                                                              
--declare @SomaSubTribCarga decimal(11,2)                                                                                              
declare @SomaContabilNotaProdutos decimal(11,2)                                                                                              
declare @FlagEntrada numeric(1)                                                                                              
                                                                                              
declare @CodOperacao numeric(5)                                                                                              
declare @existe int                                                                                              
                                                                                                                                
declare @AuxEmpresa numeric(2)                                                                                              
Declare @AuxTipoItem int                                                                            
Declare @AuxNumSequencia int                                                                            
declare @AuxNumLancamento int                                                                                              
declare @AuxCodProduto numeric(7)                                                                                              
declare @AuxAliqICM decimal(4,2)                                                                                              
declare @AuxBaseICM decimal (11,2)                                                                                              
declare @AuxValorICM decimal (11,2)                                                                                              
declare @AuxValorIsentoICM decimal(11,2)                                                                                              
declare @AuxValorOutrasICM decimal(11,2)                                                                                              
declare @AuxPerReducaoICM decimal(5,2)          
declare @AuxBaseSubTrib decimal(11,2)                                                                                              
declare @AuxValorSubTrib decimal (11,2)                                                                                              
declare @AuxBaseSubTribCarga decimal(11,2)                                                                                              
declare @AuxValorSubTribCarga decimal (11,2)                                                                                              
declare @AuxAcrescimoBaseICM decimal(11,2)                                                                                              
declare @AuxAcrescimoBaseSubTrib decimal(11,2)                                                   
declare @AuxAcrescimoRedVenda decimal(11,2)                                         
-- Renato - 278440                    
--declare @AuxAcrescimoRedCusto decimal(15,8)                      
declare @AuxPerRedDespesa decimal(15,8)                      
                                                 
declare @AuxFatorRedCusto decimal (15,4)                                                                                              
declare @AuxFatorRedVenda  decimal (7,4)                                                    
declare @AuxValorLimiteOutrosCOFINS decimal(11,2)                                                                                              
declare @AuxCodTributacao char(5)                          
declare @AuxCodEntidade char(7)                                           
declare @AuxCodClassFiscal varchar(15)                                          
declare @AuxValorTotal decimal(11,2)                                                      
declare @AuxAliqIPI decimal(4,2)                                                              
declare @AuxNumCFOP char(10)                                                                
declare @AuxCodListaPreco numeric(7)                                                                  
declare @AuxAliqPISCOFINS decimal(4,2)                                                                    
declare @AuxValorCustoFor decimal(13,4)                                                                  
declare @AuxQuantAtendida decimal(10,3)                                                                  
                                                                          
declare @ValorTotalPedidos decimal(11,2)                                                                           
declare @ValorTotalSubTrib decimal(11,2)                                                                       
declare @ValorProdutosTotal decimal(11,2)                                                                
declare @ValorServicosTotal decimal(11,2)     
    
--327726      
declare @ValorProdutosNota decimal(11,2)                                                                
declare @ValorServicosNota decimal(11,2)    
                                                    
declare @ValorDesconto decimal(11,2)                                                                                              
declare @ValorDescontoServicos decimal(11,2)                                                                                              
declare @ValorFrete decimal(11,2)                                                                                              
declare @ValorSeguro decimal(11,2)                                                              
declare @ValorDespesas decimal(11,2)                                                                                              
declare @ValorTotalRetencoes decimal(11,2)     
--327726      
declare @ValorTotalRetencoesISS decimal(11,2)                                                                                              
declare @ValorTotalRetencoesICM decimal(11,2)      
    
                                                                                             
declare @ValorComplementar decimal(11,2)                                                                          
                                                                                              
                                                                                              
declare @SumValorProdutos decimal(11,2)                                                                                              
declare @SumValorBaseICM decimal(11,2)                                                                                              
declare @SumValorIPI decimal(11,2)                                                                                              
declare @SumValorICM decimal(11,2)                                                                 
declare @SumValorSubTrib decimal(11,2)                                                                                              
declare @SumValorBaseSubTrib decimal(11,2)                                                                             
--MARCELO - CHAMADO 195051                                      
declare @SumValorSubTribCarga decimal(11,2)                                                                                              
declare @SumValorBaseSubTribCarga decimal(11,2)                  
declare @SumValorServicos decimal(11,2)                                             
declare @SumValorDesconto decimal(11,2)                 
declare @SumValorDescontoServicos decimal(11,2)                                                                                              
declare @SumValorFrete decimal(11,2)                                                                                       
declare @SumValorSeguro decimal(11,2)                                                
declare @SumValorDespesas decimal(11,2)                                                                                              
declare @SumValorDespesasNaoInc decimal(11,2)                                                                                              
declare @SumValorFreteTransp decimal(11,2)                                                                                              
declare @SumValorTotalRetencoes decimal(11,2)                                                                                     
declare @SumValorBaseISS decimal(11,2)                                                                                              
declare @SumValorProdutosSemImpostos decimal(11,2)                                           
                      
declare @SumValorComplementar decimal(11,2)                                     
                                                                            
declare @AuxSumValorProdutos decimal(11,2)                                                        
declare @AuxSumValorBaseICM decimal(11,2)                                                                                              
declare @AuxSumValorIPI decimal(11,2)                                                                                              
declare @AuxSumValorICM decimal(11,2)                                                                                   
declare @AuxSumValorSubTrib decimal(11,2)                                      
declare @AuxSumValorBaseSubTrib decimal(11,2)                                                                                              
--MARCELO - CHAMADO 195051                                      
declare @AuxSumValorSubTribCarga decimal(11,2)                                                                                              
declare @AuxSumValorBaseSubTribCarga decimal(11,2)                                                                     
declare @AuxSumValorServicos decimal(11,2)                                                                                              
declare @AuxSumValorBaseISS decimal(11,2)                                                                                              
declare @AuxSumValorProdutosSemImpostos decimal(11,2)                                                                                              
                                                                            
                                                                                              
declare @ValorDespesasNaoInc decimal(11,2)                                                                                              
declare @ValorFreteTransp decimal(11,2)                                                                                              
       
Declare @FlagSubTribDespesas numeric(1)                                                                                                
Declare @CodSubTributaria integer                                                                       
declare @SubFlagSomaDespesas integer                                                                                            
--Gabriella - 333391  
--declare @ValorIPIDespesas decimal(11,2)                                                                                        
declare @FlagDespesasIPI int                                                                          
--145342                                                                    
declare @SomaICMProdutos     decimal(11,2)                                                                                  
declare @CompSomaICMProdutos decimal(11,2)                                                                   
--144459                                                                      
declare @SomaICMServicos     decimal(11,2)                                                     
declare @CompSomaICMServicos decimal(11,2)                                                                       
declare @SomaContabilNotaServicos decimal(11,2)                                                      
declare @Diferenca decimal(11,2)                                                            
declare @FlagTipoDiferenca numeric(1)                                       
--MARCELO - CHAMADO 182639                                                
declare @DiferencaProduto decimal(11,2)                                                            
declare @FlagTipoDiferencaProduto numeric(1)                                            
declare @DiferencaServico decimal(11,2)                                                            
declare @FlagTipoDiferencaServico numeric(1)                     
declare @Contador numeric(1)                            
                          
-- Renato - Chamado 272165                            
declare @ValorBasePisCofins numeric(11,2)                          
declare @AliqPis numeric(4,2)                          
declare @AliqCofins numeric(4,2)                     
              
declare @NumCstICM varchar(3)              
declare @NumCstIPI varchar(3)              
declare @NumCstPisCofins varchar(3)              
declare @NumCsosn varchar(3)              
-- Renato - 278440                    
declare @AuxValorUnitario decimal(13,4)                      
declare @FlagDeduzirDespNaoInclNaMargem smallint                    
declare @ValorDescontoAux decimal(11,2)                  
declare @ParTipoReducaoICM numeric(1)                  
--Rafael chamado 281202                  
declare @ValorProdutosTributados decimal(11,2)                  
declare @MaiorAliqIPI decimal(4,2)           
-- Renato - 297792      
declare @NatReceitaPisCofins Int      
-- Renato - 332318  
declare @NatBaseCalcCredito Smallint     
--Gabriella - 324462      
declare @EmpId varchar(15)    
--Gabriella - 333391  
declare @AuxAcrescimoBaseIPI decimal(11,2)   
declare @AuxValorBaseIPI decimal(11,2);                                                                        
declare @AuxValorIsentoIPI decimal(11,2);                                                                        
declare @AuxValorOutrasIPI decimal(11,2);    
-- Renato - 360358
declare @AliqICMSST decimal(5,2);
declare @PercMvaICMSST decimal(5,2);  
--Gabriella - 471920
declare @AliqFCP decimal(5,2);
declare @ValorFCP decimal (11,2);
declare @AliqICMDestino decimal(5,2);
declare @PercPartilhaICMOrigem decimal (5,2);
declare @PercPartilhaICMDestino decimal (5,2);
declare @ValorPartilhaICMOrigem decimal (11,2);
declare @ValorPartilhaICMDestino decimal (11,2);
declare @CEST varchar(7);  
declare @SumValorFCP decimal(18,2);   
declare @AuxSumValorFCP decimal(18,2); 
declare @SumValorPartilhaICMOrigem decimal(18,2);  
declare @AuxSumValorPartilhaICMOrigem decimal(18,2); 
declare @SumValorPartilhaICMDestino decimal(18,2);  
declare @AuxSumValorPartilhaICMDestino decimal(18,2);   
--Renato - 361650 
declare @AliqComplICM    Decimal(5,2)
declare @AliqComplPIS    Decimal(5,2)
declare @AliqComplCOFINS Decimal(5,2)                             
                                                                                       
                                                                                              
begin                                                                                              
--MARCELO - CHAMADO 195051                                                             
--Set @SomaBaseSubTribCarga=0                                                                                              
--Set @SomaSubTribCarga=0                      
                    
--Renato - 278440                     
Select @FlagDeduzirDespNaoInclNaMargem = FlagDeduzirDespNaoInclNaMargem                      
From ConfiguracaoSistema                     
--Renato - 278440                    
Select @ParTipoReducaoICM=TipoReducaoICM                                                                                                                                                                                                                       
 
From ParamControle where Empresa=@Empresa      
      
--Gabriella - 324462      
Select @EmpId = Id From Empresas                                                      
Where Codigo = @Empresa                                                      
                                                                                        
If @TipoControle=1                                                    
   Set @FlagEntrada = 1                                                                                              
Else                                                                                              
   Set @FlagEntrada = 0                                                                                              
                            
Select @FlagSubTribDespesas = Oper.FlagSubTribDespesas                                                                                              
  From NotasFiscais Nota                                                                                              
  Left Join Operacoes Oper on Oper.Codigo = Nota.CodOperacao                                                                                              
Where Nota.Empresa = @Empresa                                                                                              
  and Nota.TipoControle = @TipoControle                                          
  and Nota.CodControle = @CodControle                                                                                       
If (@FlagSubTribDespesas is null)             
  Set @FlagSubTribDespesas = 0                                                                                              
                                                                                      
Select @ValorProdutosTotal    = isnull(Sum(Ped.ValorProdutos),0),                           
       @ValorServicosTotal    = isnull(Sum(Ped.ValorServicos),0),                                                                                              
       @ValorDesconto         = isnull(Sum(Ped.ValorDesconto),0),                  
       @ValorDescontoServicos = isnull(Sum(Ped.ValorDescontoServicos),0),                                                                                              
       @ValorFrete            = isnull(Sum(Ped.ValorFrete),0),                                                                                              
       @ValorSeguro           = isnull(Sum(Ped.ValorSeguro),0),                                     
       @ValorDespesas         = isnull(Sum(Ped.ValorDespesas),0),                                                                                              
       @ValorDespesasNaoInc   = isnull(Sum(Ped.ValorDespesasNaoInc),0),                                                                      
       @ValorFreteTransp      = isnull(Sum(Ped.ValorFreteTransp),0),    
       --327726                                                                                               
       --@ValorTotalRetencoes   = isnull(Sum(Ped.ValorTotalRetencoes),0),                                                                                  
       @ValorComplementar     = isnull(Sum(Ped.ValorComplementar),0)                                                                                  
  from TempPrft110Pedido Temp, Pedidos Ped                          
 Where Temp.NumSequencia = @Ped_Sequencia                                                                     
   and Ped.Empresa = Temp.Empresa                                    
   and Ped.CodPedido = Temp.CodPedido     
       
       
--327726       
  Select                        
  @ValorTotalRetencoes    = isnull(Sum( Case when PR.TipoRetencao in(0,1,2,3,4)       
                                        Then PR.ValorRetencao end ),0),      
             
  @ValorTotalRetencoesISS = isnull(Sum(Case When PR.TipoRetencao = 5      
                                       Then PR.ValorRetencao end),0),      
                                       
  @ValorTotalRetencoesICM = isnull(Sum(Case when PR.TipoRetencao = 6      
                                           Then PR.ValorRetencao end ),0)                                       
                                              
  From TempPrft110Pedido T      
  Left join Pedidos P on  P.Empresa   =T.Empresa      
                      and P.CodPedido = T.CodPedido      
  Left Join PedidosRetencao PR on  PR.Empresa   = T.Empresa      
                               and PR.CodPedido = T.CodPedido                                                        
 Where T.NumSequencia = @Ped_Sequencia                                                                     
                               
--Gabriella - 333391                                                                                      
--Set @ValorIPIDespesas = 0                                                                
Set @AuxAcrescimoBaseIPI = 0  
  
-- Rafael chamado 281202                                                                
--Select @ValorIPIDespesas = Round((isnull(Max(M.AliqIPI),0) * (@ValorFrete + @ValorSeguro + @ValorDespesas)) /100,2)                  
/*Select                  
@ValorProdutosTributados = isnull(Sum(Case When M.AliqIpi <> 0 then M.ValorTotal end),0),                  
@MaiorAliqIPI            = Isnull(Max(M.AliqIPI),0)                                                                                                           
from MovEstoque M                                                                                                
Left Join Operacoes O on O.Codigo = M.CodOperacao                                                                                      
where M.Empresa = @Empresa                                                                      
  and M.TipoControle = @TipoControle                                                                                      
  and M.CodControle = @CodControle                             
  and M.CodProduto <> 8888888                                                                                        
  --MARCELO - CHAMADO 187905                                          
  and M.QuantAtendida > 0                                          
  and O.FlagDespesasIPI = 1 */                  
  
--Gabriella - 333391                  
--Rafael chamado 281202                  
/*if @ValorProdutosTotal > 0                  
  set @ValorIPIDespesas = Round((@ValorProdutosTributados/@ValorProdutosTotal * (@ValorFrete + @ValorSeguro + @ValorDespesas)) * (@MaiorAliqIPI / 100),2)                   
else                  
  set @ValorIPIDespesas =0   
                                                                                       
                                                                                    
If @ValorIPIDespesas is null                                                                                        
  Set @ValorIPIDespesas = 0 */                              
                               
                                                                        
-- Atualizacao o Icm dos itens da Nota Fiscal                                                                                              
Declare CursorItem cursor local FAST_FORWARD for                                                                        
     --Itens da nota fiscal, não carrega os itens que são "pai" dos componentes                                                                            
     Select 0 as TipoItem, Mov.NumLancamento, 0 as NumSequencia,                                                                             
            Mov.CodProduto, Mov.CodTributacao, Mov.CodEntidade,                                                                   
            Mov.ValorTotal, Mov.AliqIPI, Mov.CodClassFiscal, Mov.CodOperacao, Mov.CodListaPreco,                                                                                      
            Op.FlagDespesasIPI, Mov.CodSubTributaria, Sub.FlagSomaDespesas, Mov.ValorCustoFor, Mov.QuantAtendida,                     
            -- Renato - 278440                    
            Mov.ValorUnitario                   
     From MovEstoque Mov                                                                                              
     Left Join Operacoes Op on Op.Codigo = Mov.CodOperacao                      
     Left Join SubstituicaoTributaria Sub on Sub.CodSubTributaria = Mov.CodSubTributaria                                                                                  
                                         and Sub.Empresa = Mov.Empresa                                                                                            
     Where Mov.Empresa      = @Empresa                                           
       and Mov.TipoControle = @TipoControle                                                                        
       and Mov.CodControle  = @CodControle                                                                                              
                                                                            
     UNION ALL                                                                            
                                                                            
     --Componentes da nota fiscal                                                                            
     Select 1 as TipoItem, Comp.NumLancamento, Comp.NumSequencia,                                                                             
            Comp.CodProduto, Comp.CodTributacao, Mov.CodEntidade,                                                                                               
            Comp.ValorTotal, Comp.AliqIPI, Comp.CodClassFiscal, Mov.CodOperacao, Comp.CodListaPreco,                                                                                      
            0, Comp.CodSubTributaria, Sub.FlagSomaDespesas, Comp.ValorCustoFor, Comp.QuantAtendida,                    
            -- Renato - 278440                                
            Comp.ValorUnitario                                                                   
     From MovComponente Comp                                                                   
     Left Join MovEstoque Mov On Mov.Empresa = Comp.Empresa                                       
                             and Mov.NumLancamento = Comp.NumLancamento                                                                            
     Left Join SubstituicaoTributaria Sub on Sub.CodSubTributaria = Comp.CodSubTributaria                                                                           
                                         and Sub.Empresa = Comp.Empresa                                                                                         
     Where Comp.Empresa      = @Empresa                                                                                     
       and Comp.TipoControle = @TipoControle                                                                                              
       and Comp.CodControle  = @CodControle                         
                                                                                              
Open CursorItem                                                                                              
Fetch Next From CursorItem into @AuxTipoItem, @AuxNumLancamento, @AuxNumSequencia,      
              @AuxCodProduto, @AuxCodTributacao, @AuxCodEntidade,                                                                                           
              @AuxValorTotal, @AuxAliqIPI, @AuxCodClassFiscal, @CodOperacao, @AuxCodListaPreco,                                                                            
              @FlagDespesasIPI, @CodSubTributaria, @SubFlagSomaDespesas, @AuxValorCustoFor, @AuxQuantAtendida,                    
          -- Renato - 278440                    
              @AuxValorUnitario                                                                  
                                                                                              
While @@Fetch_Status = 0                                                                                              
Begin                                                                                        
    Set @AuxAcrescimoBaseICM = 0                             
    Set @AuxAcrescimoBaseSubTrib = 0                                                                                              
    Set @AuxAcrescimoRedVenda = 0                                                                                              
    -- Renato - 278440                    
    --Set @AuxAcrescimoRedCusto = 0                                                                 
    Set @AuxPerRedDespesa = 0                      
                    
    -- Renato - 278440                                                              
    --Eder - Chamado 170325                                                                  
    --Calcula o percentual de acrescimo no custo                                                                  
    --If (@AuxValorCustoFor > 0) and (@ValorDespesasNaoInc > 0) and ((@ValorProdutosTotal + @ValorServicosTotal) > 0)  and (@AuxQuantAtendida > 0)                                                              
    --begin                                                                  
    --  Set @AuxAcrescimoRedCusto = ((@ValorDespesasNaoInc * (@AuxValorTotal / (@ValorProdutosTotal + @ValorServicosTotal))) / @AuxQuantAtendida) / @AuxValorCustoFor                                                                  
    --end                      
    if (@FlagDeduzirDespNaoInclNaMargem = 1) and (@ParTipoReducaoICM <> 2)                     
      Set @ValorDescontoAux = @ValorDesconto                       
    else                    
      Set @ValorDescontoAux = 0                   
    /* 298865                  
    If (@AuxValorUnitario > 0) and ( (@ValorDespesasNaoInc > 0) or (@ValorDescontoAux > 0) ) and ((@ValorProdutosTotal + @ValorServicosTotal) > 0)  and (@AuxQuantAtendida > 0)                                                              
    begin                                                                       
      Set @AuxPerRedDespesa = (( (@ValorDespesasNaoInc + @ValorDescontoAux) * (@AuxValorTotal / (@ValorProdutosTotal + @ValorServicosTotal))) / @AuxQuantAtendida) / @AuxValorUnitario                                                                  
    end           
    */        
    If ( ((@ValorDespesasNaoInc > 0) or (@ValorDescontoAux > 0)) and ((@ValorProdutosTotal + @ValorServicosTotal) > 0)  and (@AuxQuantAtendida > 0))         
    begin        
      if ((@FlagDeduzirDespNaoInclNaMargem = 1) and (@AuxValorUnitario > 0))        
        Set @AuxPerRedDespesa = (( (@ValorDespesasNaoInc + @ValorDescontoAux) * (@AuxValorTotal / (@ValorProdutosTotal + @ValorServicosTotal))) / @AuxQuantAtendida) / @AuxValorUnitario;        
        
    else if ((@FlagDeduzirDespNaoInclNaMargem = 0) and (@AuxValorCustoFor > 0))        
        Set @AuxPerRedDespesa = (( @ValorDespesasNaoInc * (@AuxValorTotal / (@ValorProdutosTotal + @ValorServicosTotal))) / @AuxQuantAtendida) / @AuxValorCustoFor;        
    end            
                
                                 
    If (@AuxCodProduto <> 8888888) and (@ValorProdutosTotal > 0)                                                                         
    begin                                                                                              
      --Gabriella - 333391         
      if @FlagDespesasIPI = 1 and @AuxAliqIPI > 0                           
        set @AuxAcrescimoBaseIPI = Round((@AuxValorTotal/@ValorProdutosTotal * (@ValorFrete + @ValorSeguro + @ValorDespesas)),2)                   
      else                  
        set @AuxAcrescimoBaseIPI =0   
                                                                                                                                                                      
      if @AuxAcrescimoBaseIPI is null                                                                                        
        Set @AuxAcrescimoBaseIPI = 0       
      
       Set @AuxAcrescimoBaseICM = (@ValorFrete + @ValorSeguro + @ValorDespesas - @ValorDesconto) * (@AuxValorTotal / @ValorProdutosTotal)                                                                                              
                                                                                      
       Set @AuxAcrescimoBaseSubTrib = 0                                                       
       If (@FlagSubTribDespesas = 1 and @CodSubTributaria = 0) or                             
          (@SubFlagSomaDespesas = 1 and @CodSubTributaria > 0)                                                                                            
          Set @AuxAcrescimoBaseSubTrib = @ValorFrete + @ValorSeguro + @ValorDespesas          
       --Gabriella - 298263                     
       If @FlagDespesasIPI = 1 and @AuxAliqIPI > 0                         
       begin       
         --Gabriella - 333391                                                    
         --Set @AuxAcrescimoBaseSubTrib = @AuxAcrescimoBaseSubTrib + @ValorIPIDespesas                                                                                        
         Set @AuxAcrescimoBaseSubTrib = @AuxAcrescimoBaseSubTrib + ((@AuxAcrescimoBaseIPI * @AuxAliqIPI) / 100)                  
--       Eder - Chamado 174565                                                              
--       Set @ValorIPIDespesas = 0                                                                                        
       end                                                                                  
       Set @AuxAcrescimoBaseSubTrib = (@AuxAcrescimoBaseSubTrib - @ValorDesconto) * (@AuxValorTotal / @ValorProdutosTotal)                                                                 
                                                                                      
       Set @AuxAcrescimoRedVenda = @ValorDespesasNaoInc + @ValorDesconto      
       --Gabriella - 324462                                                                      
       if (@EmpId <> 'MOLYPLAST')      
       begin      
     If (@ValorFrete > 0) and (@ValorFreteTransp > 0)                                                                                              
     Set @AuxAcrescimoRedVenda = @AuxAcrescimoRedVenda + (@ValorFreteTransp - @ValorFrete)                                                                                            
     Else                                                                                           
     Set @AuxAcrescimoRedVenda = @AuxAcrescimoRedVenda + @ValorFreteTransp      
       end                                                                                              
       Set @AuxAcrescimoRedVenda = @AuxAcrescimoRedVenda * (@AuxValorTotal / @ValorProdutosTotal)                                                          
    end                                                                             
    If (@AuxCodProduto = 8888888) and (@ValorServicosTotal > 0) -- and (@ValorDescontoServicos > 0)                                                                                              
    begin                                                                              
      If @ValorProdutosTotal > 0                                                                                            
        Set @AuxAcrescimoBaseICM = (@ValorDescontoServicos * -1) * (@AuxValorTotal / @ValorServicosTotal)                                                                                              
      Else                                                                                            
        Set @AuxAcrescimoBaseICM = (@ValorFrete + @ValorSeguro + @ValorDespesas - @ValorDescontoServicos) * (@AuxValorTotal / @ValorServicosTotal)                                                              
      Set @AuxAcrescimoBaseSubTrib = 0                                               
      Set @AuxAcrescimoRedVenda = 0                                                      
    end                                                                                              
    Select @AuxAliqICM=AliqICM, @AuxBaseICM = ValorBaseICM, @AuxValorICM = ValorICM,                                                                                              
           @AuxValorIsentoICM=ValorIsentoICM, @AuxValorOutrasICM=ValorOutrasICM,                                       
       -- Eder - 284639              
           @AuxPerReducaoICM = PerReducaoICM,          
           @AuxBaseSubTrib = ValorBaseSubTrib,                                                                                              
           @AuxValorSubTrib = ValorSubTrib, @AuxFatorRedCusto=FatorRedCusto,                                                                                               
           @AuxFatorRedVenda = FatorRedVenda,                              
           @AuxNumCFOP=NumCFOP,                                
           @AuxBaseSubTribCarga = ValorBaseSubTribCarga,                                                           
           @AuxValorSubTribCarga = ValorSubTribCarga,                                                                                              
           @AuxAliqPISCOFINS = AliqPISCOFINS,                          
           -- Renato                           
           @AliqPis = AliqPis,                          
           @AliqCofins = AliqCofins,                          
           @ValorBasePisCofins = ValorBasePisCofins,              
       -- Eder - 284639              
           @NumCstICM = NumCstICM,              
           @NumCstIPI = NumCstIPI,              
           @NumCstPisCofins = NumCstPisCofins,            
           @NumCsosn = NumCsosn,        
           -- Renato - 297792      
           @NatReceitaPisCofins = NatReceitaPisCofins,    
           -- Renato - 332318     
           @NatBaseCalcCredito = NatBaseCalcCredito,    
			--Gabriella - 333391         
		   @AuxValorBaseIPI = ValorBaseIPI,  
		   @AuxValorIsentoIPI = ValorIsentoIPI,  
		   @AuxValorOutrasIPI = ValorOutrasIPI,
		   --Renato - 360358
		   @AliqICMSST = AliqICMSST,
		   @PercMvaICMSST = PercMvaICMSST,
		   --Renato - 361650 
		   @AliqComplICM    = AliqComplICM,
		   @AliqComplPIS    = AliqComplPIS, 
		   @AliqComplCOFINS = AliqComplCOFINS,		   
		   --Gabriella - 471920
		 @AliqFCP = AliqFCP,
		 @ValorFCP = ValorFCP,
		 @AliqICMDestino = AliqICMDestino,
		 @PercPartilhaICMOrigem = PercPartilhaICMOrigem,
		 @PercPartilhaICMDestino = PercPartilhaICMDestino,
		 @ValorPartilhaICMOrigem = ValorPartilhaICMOrigem,
		 @ValorPartilhaICMDestino = ValorPartilhaICMDestino,
		 @CEST = CEST                      
      From Dbo.Calcular_ICM(@Empresa, @AuxCodProduto, @AuxCodTributacao, @AuxCodEntidade,                                                        
                            @CodOperacao, @AuxValorTotal, @AuxAcrescimoBaseICM, @AuxAcrescimoBaseSubTrib, 0,                                                                
                            @AuxAliqIPI, @AuxCodClassFiscal, @FlagEntrada, @AuxAcrescimoRedVenda,                                                                                               
                            @AuxCodListaPreco,0,@CodSubTributaria,@AuxPerRedDespesa, @AuxAcrescimoBaseIPI)                                                                  
    If @AuxTipoItem = 0                                                                            
    begin                                                                            
      Update MovEstoque                                                                                              
         Set AliqICM=@AuxAliqICM,                                                                                       
             ValorBaseICM=@AuxBaseICM,                                                                                           
             ValorIsentoICM=@AuxValorIsentoICM,                                                                                   
             ValorOutrasICM=@AuxValorOutrasICM,                                                                                                         
             --MARCELO - CHAMADO 182639                                                         
             ValorBaseSubTrib= @AuxBaseSubTrib,                              
             ValorSubTrib=@AuxValorSubTrib,                                                                 
--MARCELO - CHAMADO 195051                                      
             ValorBaseSubTribCarga = @AuxBaseSubTribCarga,                                      
             ValorSubTribCarga = @AuxValorSubTribCarga,                                      
             NumCFOP=@AuxNumCFOP,                                                                                     
             FatorRedCusto=@AuxFatorRedCusto,                                                              
             FatorRedVenda=@AuxFatorRedVenda,                                                                                              
             AliqPISCOFINS=@AuxAliqPISCOFINS,                                                                                                            
             StatusTransacao=1                                                                                              
       Where Empresa=@Empresa                                                                                               
         and NumLancamento=@AuxNumLancamento              
              
      --Eder - Chamado 284639              
      Update MovEstoqueImposto              
         Set PerReducaoICM = @AuxPerReducaoICM,          
             NumCstICM = @NumCstICM,              
             NumCstIPI = @NumCstIPI,              
             NumCstPisCofins = @NumCstPisCofins,            
             NumCsosn = @NumCsosn,      
             -- Renato - 297792      
             NatReceitaPisCofins = @NatReceitaPisCofins,        
             --Renato - 332318  
             NatBaseCalcCredito = @NatBaseCalcCredito,   
             --Gabriella - 333391         
             ValorBaseIPI = @AuxValorBaseIPI,  
             ValorIsentoIPI = @AuxValorIsentoIPI,  
             ValorOutrasIPI = @AuxValorOutrasIPI,               
             
             --Renato - 360358
		     AliqICMSST = @AliqICMSST,
		     PercMvaICMSST = @PercMvaICMSST,
		     --Gabriella - 471920
		     AliqFCP = @AliqFCP,
		     ValorFCP = @ValorFCP,
		     AliqICMDestino = @AliqICMDestino,
		     PercPartilhaICMOrigem = @PercPartilhaICMOrigem,
		     PercPartilhaICMDestino = @PercPartilhaICMDestino,
		     ValorPartilhaICMOrigem = @ValorPartilhaICMOrigem,
		     ValorPartilhaICMDestino = @ValorPartilhaICMDestino,
		     CEST = @CEST,   
		     --Renato - 361650 
		     AliqComplICM    = @AliqComplICM,
		     AliqComplPIS    = @AliqComplPIS, 
		     AliqComplCOFINS = @AliqComplCOFINS,		       
             --Rafael chamado 306960      
             StatusTransacao =1                                     
       Where Empresa=@Empresa                                                                                               
         and NumLancamento=@AuxNumLancamento              
      if @@RowCount = 0              
         Insert into MovEstoqueImposto(Empresa, NumLancamento, PerReducaoICM, NumCstICm, NumCstIPI, NumCstPisCofins,NumCsosn,NatReceitaPisCofins,NatBaseCalcCredito,      
                                       --Gabriella - 333391  
                                       ValorBaseIPI,  
                                       ValorIsentoIPI,  
                                       ValorOutrasIPI,           
                                       --Renato - 360358
		                               AliqICMSST,
		                               PercMvaICMSST,
		                               --Renato - 361650
									   AliqComplICM,   
									   AliqComplPIS,   
									   AliqComplCOFINS,		                               
									   --Gabriella - 471920
									   AliqFCP,
									   ValorFCP,
									   AliqICMDestino,
									   PercPartilhaICMOrigem,
									   PercPartilhaICMDestino,
									   ValorPartilhaICMOrigem,
									   ValorPartilhaICMDestino,
									   CEST,     		                               
                                       --Rafael chamado 306960       
                                       StatusTransacao)              
                     Values (@Empresa, @AuxNumLancamento, @AuxPerReducaoICM, @NumCstICm, @NumCstIPI, @NumCstPisCofins, @NumCsosn,@NatReceitaPisCofins,@NatBaseCalcCredito,      
                             --Gabriella - 333391  
                             @AuxValorBaseIPI,  
                             @AuxValorIsentoIPI,  
                             @AuxValorOutrasIPI, 
                             --Renato - 360358
		                     @AliqICMSST,
		                     @PercMvaICMSST,   
		                     --Renato - 361650     
		                     @AliqComplICM,   
							 @AliqComplPIS,   
							 @AliqComplCOFINS,      		                       
							 --Gabriella - 471920
							 @AliqFCP,
							 @ValorFCP,
							 @AliqICMDestino,
							 @PercPartilhaICMOrigem,
							 @PercPartilhaICMDestino,
							 @ValorPartilhaICMOrigem,
							 @ValorPartilhaICMDestino,
							 @CEST,   		                                      
                             --Rafael chamado 306960         
                             1)              
              
     end                                 
     Else                                                                            
     begin                           
                          
      Update MovComponente                                                                            
         Set AliqICM=@AuxAliqICM,                                                                                              
             ValorBaseICM=@AuxBaseICM,                                                                               
             ValorIsentoICM=@AuxValorIsentoICM,                                                                                           
             ValorOutrasICM=@AuxValorOutrasICM,                                                                                              
             --MARCELO - CHAMADO 182639                                                         
             ValorBaseSubTrib= @AuxBaseSubTrib,                                                                                
             ValorSubTrib=@AuxValorSubTrib,                                         
             --MARCELO - CHAMADO 195051                                      
             ValorBaseSubTribCarga = @AuxBaseSubTribCarga,                    
             ValorSubTribCarga = @AuxValorSubTribCarga,                                
             NumCFOP=@AuxNumCFOP,                                                                                              
             FatorRedCusto=@AuxFatorRedCusto,                                                                                              
             FatorRedVenda=@AuxFatorRedVenda,                           
             -- Renato - Chamado 272165                            
             ValorBasePisCofins = @ValorBasePisCofins,                           
             AliqPis = @AliqPis,                           
             AliqCofins = @AliqCofins,                       
             --Eder - Chamado 284639              
             PerReducaoICM = @AuxPerReducaoICM,          
             NumCstICM = @NumCstICM,              
             NumCstIPI = @NumCstIPI,              
             NumCstPisCofins = @NumCstPisCofins,                                                                                            
             NumCsosn = @NumCsosn,        
             -- Renato - 297792      
             NatReceitaPisCofins = @NatReceitaPisCofins,         
             -- Renato - 332318  
             NatBaseCalcCredito = @NatBaseCalcCredito,      
             --Gabriella - 333391         
             ValorBaseIPI = @AuxValorBaseIPI,  
             ValorIsentoIPI = @AuxValorIsentoIPI,  
             ValorOutrasIPI = @AuxValorOutrasIPI,  
             --Renato - 360358
		     AliqICMSST = @AliqICMSST,
		     PercMvaICMSST = @PercMvaICMSST,
		     --Renato - 361650 
		     AliqComplICM    = @AliqComplICM,
		     AliqComplPIS    = @AliqComplPIS, 
		     AliqComplCOFINS = @AliqComplCOFINS,		     
		     --Gabriella - 471920
		     AliqFCP = @AliqFCP,
		     ValorFCP = @ValorFCP,
		     AliqICMDestino = @AliqICMDestino,
		     PercPartilhaICMOrigem = @PercPartilhaICMOrigem,
		     PercPartilhaICMDestino = @PercPartilhaICMDestino,
		     ValorPartilhaICMOrigem = @ValorPartilhaICMOrigem,
		     ValorPartilhaICMDestino = @ValorPartilhaICMDestino,
		     CEST = @CEST,    		     
             StatusTransacao=1     
                                                                                                                  
       Where Empresa=@Empresa                                                                                               
         and NumLancamento=@AuxNumLancamento                                                                   
         and NumSequencia=@AuxNumSequencia                                                                            
     end                                                                  
                                                              
     --MARCELO - CHAMADO 182639                                                        
--   If @AuxBaseSubTrib = 0                                                      
--     begin                                                          
--MARCELO - CHAMADO 195051                                      
--       Set @SomaBaseSubTribCarga = @SomaBaseSubTribCarga + @AuxBaseSubTribCarga                                   
--       Set @SomaSubTribCarga = @SomaSubTribCarga + @AuxValorSubTribCarga                                                                                              
--     end                                 
                                    
     Fetch Next From CursorItem into @AuxTipoItem, @AuxNumLancamento, @AuxNumSequencia,                                                                             
                  @AuxCodProduto, @AuxCodTributacao, @AuxCodEntidade,                                                                        
                  @AuxValorTotal, @AuxAliqIPI, @AuxCodClassFiscal, @CodOperacao, @AuxCodListaPreco,                                                                                      
                  @FlagDespesasIPI, @CodSubTributaria, @SubFlagSomaDespesas, @AuxValorCustoFor, @AuxQuantAtendida,                    
                  -- Renato - 278440                    
                  @AuxValorUnitario                                                                  
                                                                                              
End                                                                                           
Close CursorItem                                                                                              
Deallocate CursorItem                                                                                              
                                                                            
                                                                            
--Acumula as variaveis de total da nota fiscal e dos componentes                                                                   
Set @SumValorProdutos = 0                                                                            
Set @SumValorBaseICM = 0                                      
Set @SumValorIPI = 0                                                                            
Set @SumValorICM = 0                                                                            
Set @SumValorSubTrib = 0                                     
Set @SumValorBaseSubTrib = 0                                                                            
--MARCELO - CHAMADO 195051                                      
Set @SumValorSubTribCarga = 0                                                  
Set @SumValorBaseSubTribCarga = 0                                                                            
Set @SumValorServicos = 0                                                                            
Set @SumValorBaseISS = 0                                                                            
Set @SumValorProdutosSemImpostos = 0   
--Gabriella - 471920
Set @SumValorFCP = 0   
Set @SumValorPartilhaICMOrigem = 0 
Set @SumValorPartilhaICMDestino = 0 
                                                                            
Declare CursorTotal Cursor Local Fast_Forward for                                                                            
    Select                                                                             
      Sum(Case When Mov.CodProduto <> 8888888 then Mov.ValorTotal Else 0 End),                                                        
           Sum(Case When Mov.CodProduto <> 8888888 then Mov.ValorBaseICM Else 0 End),                                                                            
           --Gabriella - 333391  
           /*Sum(Case When Mov.CodProduto <> 8888888                                                                                               
                    then round(Mov.ValorTotal * (((100 + Mov.AliqIPI) / 100) - 1),2)                      
                    Else 0 End),*/             
           Sum(Case When Mov.CodProduto <> 8888888                                                                                               
                    then round((MI.ValorBaseIPI + MI.ValorIsentoIPI + MI.ValorOutrasIPI)   
                                * (((100 + Mov.AliqIPI) / 100) - 1),2)                      
                    Else 0 End),                                                                                                
           Sum(Case When Mov.CodProduto <> 8888888                                                             
                    then round(Mov.ValorBaseICM * (((100 + Mov.AliqICM) / 100) - 1),2)                                                              
                    Else 0 End),                                                                            
           --MARCELO - CHAMADO 182639                                                        
           Sum(Case When Mov.CodProduto <> 8888888 then Mov.ValorSubTrib Else 0 End),                                                                            
           Sum(Case When Mov.CodProduto <> 8888888 then Mov.ValorBaseSubTrib Else 0 End),                                                                            
--MARCELO - CHAMADO 195051                                      
           Sum(Case When Mov.CodProduto <> 8888888 then Mov.ValorSubTribCarga Else 0 End),                                                                  
           Sum(Case When Mov.CodProduto <> 8888888 then Mov.ValorBaseSubTribCarga Else 0 End),                                                                 
           Sum(Case When Mov.CodProduto = 8888888 then Mov.ValorTotal Else 0 End),                                                                            
           Sum(Case When Mov.CodProduto = 8888888 and Ser.FlagCalcularISS = 1                                                                            
                    then Mov.ValorBaseICM + Mov.ValorOutrasICM Else 0 End),                                                                   
           Sum(Case When Mov.CodProduto <> 8888888                                                                                               
                    Then Round(Mov.ValorTotal * Mov.FatorRedVenda,2) Else 0 End),
		   --Gabriella - 471920
		   Sum(Case When Mov.CodProduto <> 8888888 then MI.ValorFCP else 0 End), 
		   Sum(Case When Mov.CodProduto <> 8888888 then MI.ValorPartilhaICMOrigem else 0 End), 
		   Sum(Case When Mov.CodProduto <> 8888888 then MI.ValorPartilhaICMDestino else 0 End)                                         
      From MovEstoque Mov                                                                                              
      Left Join Servicos Ser on Ser.codigo = Mov.CodServico  
      --Gabriella - 333391  
      Left Join MovEstoqueImposto MI on MI.Empresa = Mov.Empresa  
                                    and MI.NumLancamento = Mov.NumLancamento                                                                                             
      Where Mov.Empresa = @Empresa                                                        
        and Mov.TipoControle = @TipoControle                                                                                              
        and Mov.CodControle = @CodControle                                                                                              
        and not exists(Select * From MovComponente Comp                                                                      
                        Where Comp.Empresa = Mov.Empresa                                                                            
                          and Comp.NumLancamento = Mov.NumLancamento)                                                                            
    UNION ALL                                                
    Select                                                              
           Sum(Case When Comp.CodProduto <> 8888888 then Comp.ValorTotal Else 0 End),                                                                            
           Sum(Case When Comp.CodProduto <> 8888888 then Comp.ValorBaseICM Else 0 End),                                                                            
           --Gabriella - 333391  
           /*Sum(Case When Comp.CodProduto <> 8888888                               
                    then round(Comp.ValorTotal * (((100 + Comp.AliqIPI) / 100) - 1),2)                                                                                              
                    Else 0 End), */      
           Sum(Case When Comp.CodProduto <> 8888888                               
                    then round((Comp.ValorBaseIPI + Comp.ValorIsentoIPI + Comp.ValorOutrasIPI)  
                          * (((100 + Comp.AliqIPI) / 100) - 1),2)                                                                                              
                    Else 0 End),                                                                                                
           Sum(Case When Comp.CodProduto <> 8888888                                                                            
                    then round(Comp.ValorBaseICM * (((100 + Comp.AliqICM) / 100) - 1),2)                                                                                              
                    Else 0 End),                                                                            
           --MARCELO - CHAMADO 182639                                                  
           Sum(Case When Comp.CodProduto <> 8888888 then Comp.ValorSubTrib Else 0 End),                                                                            
           Sum(Case When Comp.CodProduto <> 8888888 then Comp.ValorBaseSubTrib Else 0 End),                                                                            
--MARCELO - CHAMADO 195051                                      
           Sum(Case When Comp.CodProduto <> 8888888 then Comp.ValorSubTribCarga Else 0 End),                                                                            
           Sum(Case When Comp.CodProduto <> 8888888 then Comp.ValorBaseSubTribCarga Else 0 End),                                                                            
           0,                                                                        
           0,                                                                   
           Sum(Case When Comp.CodProduto <> 8888888                                                                                               
                    Then Round(Comp.ValorTotal * Comp.FatorRedVenda,2) Else 0 End),
		   --Gabriella - 471920
		   Sum(Case When Comp.CodProduto <> 8888888 then Comp.ValorFCP else 0 End), 
		   Sum(Case When Comp.CodProduto <> 8888888 then Comp.ValorPartilhaICMOrigem else 0 End), 
		   Sum(Case When Comp.CodProduto <> 8888888 then Comp.ValorPartilhaICMDestino else 0 End)                                           
    From MovComponente Comp                                                                           
    Where Comp.Empresa = @Empresa                              
      and Comp.TipoControle = @TipoControle                                                                                              
      and Comp.CodControle = @CodControle                                                                                              
                                                                            
Open CursorTotal                                                       
Fetch Next From CursorTotal Into  @AuxSumValorProdutos, @AuxSumValorBaseICM, @AuxSumValorIPI,                                                                            
      @AuxSumValorICM,  @AuxSumValorSubTrib, @AuxSumValorBaseSubTrib,                                       
--MARCELO - CHAMADO 195051                                      
  @AuxSumValorSubTribCarga, @AuxSumValorBaseSubTribCarga, @AuxSumValorServicos,                                                                            
      @AuxSumValorBaseISS, @AuxSumValorProdutosSemImpostos,
      --Gabriella - 471920
      @AuxSumValorFCP,
	  @AuxSumValorPartilhaICMOrigem,
	  @AuxSumValorPartilhaICMDestino                         
while @@fetch_Status = 0                                                                            
begin                                                                            
  If not (@AuxSumValorProdutos is null)                                                                            
     Set @SumValorProdutos = @SumValorProdutos + @AuxSumvalorProdutos                                                                            
                                                                            
  If not (@AuxSumValorBaseICM is null)                                                                            
     Set @SumValorBaseICM = @SumValorBaseICM + @AuxSumValorBaseICM                                                  
                                                                            
  If not (@AuxSumValorIPI is null)                                
     Set @SumValorIPI = @SumValorIPI + @AuxSumValorIPI                                            
                                                                          
  If not (@AuxSumValorICM is null)                                                                            
     Set @SumValorICM = @SumValorICM + @AuxSumValorICM                                                                            
                                                                            
  If not (@AuxSumValorSubTrib is null)                                                                            
     Set @SumValorSubTrib = @SumValorSubTrib + @AuxSumValorSubTrib                                                                            
                                                                            
  If not (@AuxSumValorBaseSubTrib is null)                                                                            
     Set @SumValorBaseSubTrib = @SumValorBaseSubTrib + @AuxSumValorBaseSubTrib                                               
                                      
--MARCELO - CHAMADO 195051                                      
  If not (@AuxSumValorSubTribCarga is null)                                                                            
     Set @SumValorSubTribCarga = @SumValorSubTribCarga + @AuxSumValorSubTribCarga                                      
                                                                            
  If not (@AuxSumValorBaseSubTribCarga is null)                                                                            
     Set @SumValorBaseSubTribCarga = @SumValorBaseSubTribCarga + @AuxSumValorBaseSubTribCarga                                               
                                                                            
  If not (@AuxSumValorServicos is null)                       
     Set @SumValorServicos = @SumValorServicos + @AuxSumValorServicos                                                                            
                                                                            
  If not (@AuxSumValorBaseISS is null)                        
     Set @SumValorBaseISS = @SumValorBaseISS + @AuxSumValorBaseISS                                                                            
                                                                            
  If not (@AuxSumValorProdutosSemImpostos is null)                                                                            
     Set @SumValorProdutosSemImpostos = @SumValorProdutosSemImpostos + @AuxSumValorProdutosSemImpostos 
     
  --Gabriella - 471920
  If not (@AuxSumValorFCP is null)                                                                                         
     Set @SumValorFCP = @SumValorFCP + @AuxSumValorFCP                          
     
  If not (@AuxSumValorPartilhaICMOrigem is null)                                                                                         
     Set @SumValorPartilhaICMOrigem = @SumValorPartilhaICMOrigem + @AuxSumValorPartilhaICMOrigem         
     
  If not (@AuxSumValorPartilhaICMDestino is null)                                                                                         
     Set @SumValorPartilhaICMDestino = @SumValorPartilhaICMDestino + @AuxSumValorPartilhaICMDestino                                                                                
                                            
   Fetch Next From CursorTotal Into  @AuxSumValorProdutos, @AuxSumValorBaseICM, @AuxSumValorIPI,                                                                            
         @AuxSumValorICM,  @AuxSumValorSubTrib, @AuxSumValorBaseSubTrib,                    
--MARCELO - CHAMADO 195051                                      
         @AuxSumValorSubTribCarga, @AuxSumValorBaseSubTribCarga, @AuxSumValorServicos,                                                                            
         @AuxSumValorBaseISS, @AuxSumValorProdutosSemImpostos,
		  --Gabriella - 471920
		  @AuxSumValorFCP,
		  @AuxSumValorPartilhaICMOrigem,
		  @AuxSumValorPartilhaICMDestino                            
end                                                                            
Close CursorTotal                                                                            
Deallocate CursorTotal                                                                            
                                 
                                                                                              
                                                                                              
--Atualiza os Totais referentes a Produtos, somados a partir dos itens da nota fiscal                                                                                              
Update NotasFiscais                                                                                            
   Set ValorProdutos    = @SumValorProdutos,                                                                                              
       ValorIPI         = @SumValorIPI,                                                                                              
       ValorBaseICM     = @SumValorBaseICM,                                                                                              
       ValorICM         = @SumValorICM,                   
       ValorSubTrib     = @SumValorSubTrib,                                                                                              
       ValorBaseSubTrib = @SumValorBaseSubTrib,                                          
       ValorServicos    = @SumValorServicos,                                                                                              
--Eder - Chamado 182639                                                          
--MARCELO - CHAMADO 195051                                      
       ValorSubTribCarga     = @SumValorSubTribCarga,                                                                                              
       ValorBaseSubTribCarga = @SumValorBaseSubTribCarga,                                                                                              
       ValorProdutosSemImpostos = @SumValorProdutosSemImpostos,
	   --Gabriella - 471920  
       ValorFCP = @SumValorFCP,      
       ValorPartilhaICMOrigem = @SumValorPartilhaICMOrigem,                                                                                             
       ValorPartilhaICMDestino = @SumValorPartilhaICMDestino,                                                                                                     
       StatusTransacao=1                                                                                              
 Where Empresa = @Empresa                                                                                    
  and TipoControle = @TipoControle                                             
   and CodControle = @CodControle                                                                                              
                                                                                              
                                                                                              
If @ValorProdutosTotal > 0                       
begin                                                                                              
   Update NotasFiscais                                                                                 
      Set ValorDesconto         = Round(@ValorDesconto * (ValorProdutos / @ValorProdutosTotal),2),                                          
--MARCELO - CHAMADO 195326                                                                                        
--          ValorDescontoServicos = Round(@ValorDescontoServicos * (ValorProdutos / @ValorProdutosTotal),2),                                           
          ValorDescontoServicos = case when ValorServicos > 0                                        
                                  then Round(@ValorDescontoServicos * (ValorProdutos / @ValorProdutosTotal),2)                                        
                                  else 0 end,                                                                                              
          ValorFrete            = Round(@ValorFrete * (ValorProdutos / @ValorProdutosTotal),2),                                               
          ValorSeguro           = Round(@ValorSeguro * (ValorProdutos / @ValorProdutosTotal),2),                                                                                              
          ValorDespesas         = Round(@ValorDespesas * (ValorProdutos / @ValorProdutosTotal),2),                                                                                              
          ValorDespesasNaoInc   = Round(@ValorDespesasNaoInc * (ValorProdutos / @ValorProdutosTotal),2),                                                                                              
          ValorFreteTransp      = Round(@ValorFreteTransp * (ValorProdutos / @ValorProdutosTotal),2),    
          --327726                                                                                              
          --ValorTotalRetencoes   = Round(@ValorTotalRetencoes * (ValorProdutos / @ValorProdutosTotal),2),    
          ValorTotalRetencoes   =  Round(@ValorTotalRetencoes    * ( (ValorProdutos + ValorServicos)  / (@ValorProdutosTotal + @ValorServicosTotal) ),2)+       
                                case when @ValorServicosTotal > 0  
                                     then   Round(@ValorTotalRetencoesISS * (ValorServicos / @ValorServicosTotal),2) else 0 end       
                                + Round(@ValorTotalRetencoesICM * (ValorProdutos / @ValorProdutosTotal),2),     
                                                                                            
          StatusTransacao       = 1                                                                                              
    Where Empresa = @Empresa                                                                                              
      and TipoControle = @TipoControle                                                                                              
      and CodControle = @CodControle                               
end                                                               
Else                                                                                              
begin                         
   Update NotasFiscais                                                                                              
      Set ValorDesconto         = ValorDesconto + @ValorDesconto,                                                                                         
          ValorDescontoServicos = ValorDescontoServicos + @ValorDescontoServicos,                                                                                              
          ValorFrete            = ValorFrete + @ValorFrete,                                                                                      
          ValorSeguro           = ValorSeguro + @ValorSeguro,                                                                                              
          ValorDespesas         = ValorDespesas + @ValorDespesas,                                                                                              
          ValorDespesasNaoInc   = ValorDespesasNaoInc + @ValorDespesasNaoInc,                                                                                              
          ValorFreteTransp      = ValorFreteTransp + @ValorFreteTransp,                                                                                              
          ValorTotalRetencoes   = ValorTotalRetencoes + @ValorTotalRetencoes,                                                                                              
          StatusTransacao       = 1                                                                        
    Where Empresa = @Empresa                                   
      and TipoControle = @TipoControle                                                                      
  and CodControle = @CodControle                                                                                              
end                                                                                              
                                                                                              
--verifica se está na ultima nota processada                                                                                              
Select @Existe = (Count(*) - @ContadorNota) From TempPrft110Nota                                                     
 Where NumSequencia = @Ped_Sequencia                                                                                              
                                                         
If @Existe = 0    --Ultima Nota Processada                                                 
Begin                                           
  Select @SumValorDesconto         = isnull(Sum(ValorDesconto),0),                                                                                              
         @SumValorDescontoServicos = isnull(Sum(ValorDescontoServicos),0),                                            
         @SumValorFrete            = isnull(Sum(ValorFrete),0),                                                                                    
         @SumValorSeguro           = isnull(Sum(ValorSeguro),0),                                                                                              
         @SumValorDespesas         = isnull(Sum(ValorDespesas),0),                                                                   
         @SumValorDespesasNaoInc   = isnull(Sum(ValorDespesasNaoInc),0),                                                                                              
         @SumValorFreteTransp      = isnull(Sum(ValorFreteTransp),0),                                                                    
         @SumValorTotalRetencoes   = isnull(Sum(ValorTotalRetencoes),0),                                                                                              
         @SumValorComplementar     = isnull(Sum(ValorComplementar),0)                                                                                              
    From TempPrft110Nota, NotasFiscais                     
   where TempPrft110Nota.NumSequencia = @Ped_Sequencia                                                                                              
     and TempPrft110Nota.Empresa=NotasFiscais.Empresa                                                                                            
     and TempPrft110Nota.TipoControle=NotasFiscais.TipoControle                                                                                  
     and TempPrft110Nota.CodControle=NotasFiscais.CodControle                                                                                              
                          Update NotasFiscais                                                                           
     Set ValorDesconto = ValorDesconto + (@ValorDesconto - isnull(@SumValorDesconto,0)),                                                                                              
         ValorDescontoServicos  = ValorDescontoServicos + (@ValorDescontoServicos - isnull(@SumValorDescontoServicos,0)),                                                                                              
         ValorFrete  = ValorFrete + (@ValorFrete - isnull(@SumValorFrete,0)),                                                                                              
         ValorSeguro = ValorSeguro + (@ValorSeguro - isnull(@SumValorSeguro,0)),                                                                                              
         ValorDespesas = ValorDespesas + (@ValorDespesas - isnull(@SumValorDespesas,0)),                                 
         ValorDespesasNaoInc = ValorDespesasNaoInc + (@ValorDespesasNaoInc - isnull(@SumValorDespesasNaoInc,0)),                                                   
         ValorFreteTransp = ValorFreteTransp + (@ValorFreteTransp - isnull(@SumValorFreteTransp,0)),     
             
         -- 327726                                                                                          
         --ValorTotalRetencoes = ValorTotalRetencoes + (@ValorTotalRetencoes - isnull(@SumValorTotalRetencoes,0)),    
         ValorTotalRetencoes = ValorTotalRetencoes +       
                             ( (@ValorTotalRetencoes + @ValorTotalRetencoesISS + @ValorTotalRetencoesICM)        
                             - isnull(@SumValorTotalRetencoes,0)),                             
                                                                                                       
         ValorComplementar  = ValorComplementar + (@ValorComplementar - isnull(@SumValorComplementar,0)),                                                                                 
         StatusTransacao=1                                                                                              
   Where Empresa = @Empresa                                                                                              
     and TipoControle = @TipoControle                                                                                       
     and  CodControle = @CodControle                                                        
End                                                                                           
                                           
--Calcula o ISS após terminar os rateios da nota                                                                                              
Update NotasFiscais                                   
   Set ValorISS = Round((@SumValorBaseISS * AliqISS) / 100,2),                                                                                              
       AliqISS  = Case When @SumValorBaseISS > 0 then AliqISS Else 0 End                                                                                              
   Where Empresa = @Empresa                                                                                              
     and TipoControle = @TipoControle                                                                                              
     and  CodControle = @CodControle                                                                                              

--Gabriella - 361043     
--Gabriella - 342854
--Se na NF houver ValorRetencao de ISS os Valores são Zerados
/*if @ValorTotalRetencoesISS > 0     
begin
  Update NotasFiscais                                   
     Set ValorISS = 0,                                                                                              
         AliqISS  = 0                                                                                
     Where Empresa = @Empresa                                                                                              
       and TipoControle = @TipoControle                                                                                              
       and  CodControle = @CodControle    
end*/
  
--Gabriella - 333391                                                                                 
--Somar Valor despesas no IPI                                                                                      
/*Select @Existe=FlagDespesasIPI From Operacoes Where Codigo = @CodOperacao                                                                                              
                            If (@Existe = 1)                                                       
begin                 
/*                                                      
  -- Rafael chamado 281202                                            
  --Select @AuxAliqIPI = Max(AliqIPI)                  
    Select                  
    @MaiorAliqIPI            = Isnull(Max(AliqIPI),0),                                                                                                           
    @ValorProdutosTributados = isnull(Sum(Case When AliqIpi <> 0 then ValorTotal end),0)                                                                                   
    From MovEstoque                                                                                              
   where Empresa = @Empresa                                                                                              
     and TipoControle = @TipoControle                                                                                              
     and CodControle = @CodControle                                                                                              
     and CodProduto <> 8888888                                                                            
     --MARCELO - CHAMADO 187905                                          
     and QuantAtendida > 0                   
                  
  --Rafael chamado 281202                  
  if @ValorProdutosTotal > 0                  
    set @ValorIPIDespesas = Round((@ValorProdutosTributados/@ValorProdutosTotal * (@ValorFrete + @ValorSeguro + @ValorDespesas)) * (@MaiorAliqIPI / 100),2)                   
  else                  
    set @ValorIPIDespesas =0                  
  */                                        
                                                                                             
  Update NotasFiscais                                      
  -- Rafael chamado 281202                  
  --Set ValorIPIDespesas =                                                                                               
  --    round(((ValorFrete + ValorDespesas + ValorSeguro) * isnull(@AuxAliqIPI,0)) / 100,2)                  
   Set ValorIPIDespesas = @ValorIPIDespesas                                       
   where Empresa = @Empresa                                                                                             
     and TipoControle = @TipoControle                                                                                              
   and CodControle = @CodControle                                                                                             
end    */                                                            
            
--Corrige eventuais diferenças de soma dos valores fiscais dos itens                                                                                              
Set @AuxTipoItem          = 0                       
Set @SomaICMProdutos      = 0                                                                    
Set @CompSomaICMProdutos  = 0                                                                    
Set @SomaICMServicos      = 0                                                                                  
Set @CompSomaICMServicos  = 0                                                                      
Set @SomaContabilNotaProdutos = 0                                                                  
Set @SomaContabilNotaServicos  = 0                                                                      
                                                                
Select                                                                   
       @SomaICMProdutos = Sum(Case When CodProduto <> 8888888                                                                       
                                   Then (ValorBaseICM + ValorIsentoICM + ValorOutrasICM)                                                                      
                                   Else 0 End),                         
       --144459                                                                      
       @SomaICMServicos = Sum(Case When CodProduto = 8888888                                                                       
                              Then (ValorBaseICM + ValorIsentoICM + ValorOutrasICM)                                                                      
     Else 0 End)                                                                      
  From MovEstoque                                                                                              
 Where Empresa = @Empresa                                                                                              
   and TipoControle = @TipoControle                                                                                              
   and CodControle  = @CodControle                                                                  
   and not exists(Select * From MovComponente Comp                                                                            
                   Where Comp.Empresa = MovEstoque.Empresa                                                         
                     and Comp.NumLancamento = MovEstoque.NumLancamento)                                                                         
                                                                            
                                                                  
if (@SomaICMProdutos is null)                                                                  
  Set @SomaICMProdutos = 0                                                                  
                                      
if (@SomaICMServicos is null)             
  Set @SomaICMServicos = 0                                                                  
                                                                    
                    
Select --145342                                         
       @CompSomaICMProdutos = Sum(Case When CodProduto <> 8888888                                                                       
                       Then (ValorBaseICM + ValorIsentoICM + ValorOutrasICM)                                                   
                                       Else 0 End),                                                                         
       --144459                                                                      
       @CompSomaICMServicos = Sum(Case When CodProduto = 8888888                                                                       
                                      Then (ValorBaseICM + ValorIsentoICM + ValorOutrasICM)           
                                       Else 0 End)                                                                         
  From MovComponente                                                                           
 Where Empresa = @Empresa                                                                                              
   and TipoControle = @TipoControle                                
   and CodControle = @CodControle                                                                           
                                            
--145342                                                        
if not (@CompSomaICMProdutos is null)                                                                      
begin                                       
   Set @SomaICMProdutos = @SomaICMProdutos + @CompSomaICMProdutos                                                                      
   Set @AuxTipoItem = 1                                                                         
end                                                                            
--144459                                                                      
if not (@CompSomaICMServicos is null)                                                             
begin                                                                      
   Set @SomaICMServicos = @SomaICMServicos + @CompSomaICMServicos                                                                      
   Set @AuxTipoItem = 1                                                                         
end                                                                      
  
--Gabriella - 256424                                                                          
--JALDO - CHAMADO 245729                                                       
--Select @Existe = Case When TipoPessoa = 'J' Then 1 Else 0 End From Entidades                                                                                
-- Where Codigo = @AuxCodEntidade                                                                                                                                           
--JALDO - CHAMADO 248899                            
--Select @Existe = Case When ((Ent.TipoConsideraIPICalculoICM = 0) and (Ent.TipoPessoa <> 'J')) or                                               
--                            (Ent.TipoConsideraIPICalculoICM = 1)                                    
--Select @Existe = Case When (Ent.TipoPessoa in ('J','I')) Then 1 Else 0 End                                    
Select @Existe = Case When (Ent.TipoPessoa in ('J','I')) and (Opr.FlagIPISobreBaseICM = 0) Then 1 Else 0 End                                    
  From Entidades Ent  
  Left Join Operacoes Opr on Opr.Codigo = @CodOperacao                                                                                             
 Where Ent.Codigo = @AuxCodEntidade      
                                     
                                                   
If @Existe = 1                                                                                              
begin                                                                                          
  Select @SomaContabilNotaProdutos = (ValorProdutos - ValorDesconto + ValorFrete + ValorSeguro + ValorDespesas),                                                                      
         @SomaContabilNotaServicos = Case when (ValorProdutos = 0)                                                                  
                     then (ValorServicos - ValorDescontoServicos + ValorFrete + ValorSeguro + ValorDespesas)                                                                  
                     else (ValorServicos - ValorDescontoServicos)                                                                  
                  end                                                                                              
   From NotasFiscais                                      
   Where Empresa = @Empresa                                                                                              
     and TipoControle = @TipoControle              
     and CodControle = @CodControle                                                                                               
end                                                                                              
Else                                                                                              
begin                                                                                              
  Select @SomaContabilNotaProdutos = (ValorProdutos - ValorDesconto + ValorFrete + ValorSeguro + ValorDespesas + ValorIPI),                                                                                             
         @SomaContabilNotaServicos = Case when (ValorProdutos = 0)                                                               
                     then (ValorServicos - ValorDescontoServicos + ValorFrete + ValorSeguro + ValorDespesas)                                                                  
                     else (ValorServicos - ValorDescontoServicos)                                                                  
                  end                               
   From NotasFiscais                                                                                              
   Where Empresa = @Empresa                                                                                              
   and TipoControle = @TipoControle                                                                                              
     and CodControle = @CodControle                                                                                
end                                                                          
                                                                      
Set @Diferenca         = 0                                                                      
Set @FlagTipoDiferenca = 0                                                  
--MARCELO - CHAMADO 182639                                                
Set @DiferencaProduto         = 0                                                                      
Set @FlagTipoDiferencaProduto = 0                                                  
Set @DiferencaServico         = 0                                       
Set @FlagTipoDiferencaServico = 0         
  
--set @SomaICMProdutos =  casT('soma: ' + cast(@SomaICMProdutos as varchar) as int)  
                                                
--MARCELO - CHAMADO 182639                                                   
If ((@SomaContabilNotaProdutos <> 0) and (@SomaContabilNotaProdutos <> @SomaICMProdutos))                                                                      
begin                                                                      
  Set @DiferencaProduto   = (@SomaContabilNotaProdutos - @SomaICMProdutos)                                                                      
  Set @FlagTipoDiferencaProduto = 1                                                                      
end             
--else                                                                      
--begin                                                                      
if (@SomaICMServicos <> 0)                                                                     
begin                                
  If ((@SomaContabilNotaServicos <> 0) and (@SomaContabilNotaServicos <> @SomaICMServicos))                                                                      
  begin                                        
    Set @DiferencaServico     = (@SomaContabilNotaServicos - @SomaICMServicos)                        
    Set @FlagTipoDiferencaServico = 2                                                                      
  end                           
end                                                                    
--end                                             
                                                
--MARCELO - CHAMADO 182639                                                
Set @Contador = 1         
                                                
while (@Contador <= 2)                                                 
begin                                                  
  if (@Contador = 1)                                                 
  begin                                                
    Set @Diferenca = @DiferencaProduto                                                
    Set @FlagTipoDiferenca = @FlagTipoDiferencaProduto                                                
 end                                                
  if (@Contador = 2)                                                 
  begin                                                
    Set @Diferenca = @DiferencaServico                                                
    Set @FlagTipoDiferenca = @FlagTipoDiferencaServico                                                
  end                                         
                                                                              
  If (@Diferenca <> 0)                                                                      
begin                                                                                              
    --Se houver diferencas, altera no primeiro item da nota                                                                                              
    If @AuxTipoItem = 0                                                                            
    begin                                                                            
      Select Top 1 @AuxEmpresa = Empresa, @AuxNumLancamento = NumLancamento,                                                            
        --185753                                                            
        @AuxBaseICM = ValorBaseICM                    
      From MovEstoque                                                                                          
      Where Empresa      = @Empresa                                                                                              
         and TipoControle = @TipoControle                                                                                              
         and CodControle  = @CodControle                                                              
         and Case When @FlagTipoDiferenca = 1 and CodProduto <> 8888888 Then 1                                                                      
                  When @FlagTipoDiferenca = 2 and CodProduto = 8888888  Then 1                                                     
                  Else 0                                                                      
             End = 1                              
         and (ValorBaseICM > 0 or ValorIsentoICM > 0 or ValorOutrasICM > 0)                                                                                             
         and not exists(Select * From MovComponente Comp                                                                            
       Where Comp.Empresa = MovEstoque.Empresa                                                                            
                          and Comp.NumLancamento = MovEstoque.NumLancamento)                                                                                
      Order By NumLancamento                                                                                              
                                                                     
      Update MovEstoque                                                                                              
         Set ValorBaseICM = Case when ValorBaseICM <> 0           
               then ValorBaseICM + @Diferenca                                                                      
                                 Else ValorBaseICM End,                                                                                              
             ValorIsentoICM = Case when ValorIsentoICM <> 0 and ValorBaseICM = 0                                     
     then ValorIsentoICM + @Diferenca                                                  
                                   Else ValorISentoICM End,                                                                                              
             ValorOutrasICM = Case when ValorOutrasICM <> 0 and ValorBaseICM = 0                                                                                              
          then ValorOutrasICM + @Diferenca                                                                      
                                   Else ValorOutrasICM End                                                                                      
      Where Empresa       = @AuxEmpresa                               
        and NumLancamento = @AuxNumLancamento                                                                                              
    end                            
    else                                                                            
    begin                                                                            
      Select Top 1 @AuxEmpresa = Empresa,                                                                             
                   @AuxNumLancamento = NumLancamento,                                      
                   @AuxNumSequencia = NumSequencia,                                               
                   --185753                                                            
                   @AuxBaseICM = ValorBaseICM                                                             
      From MovComponente                                                                     
      Where Empresa = @Empresa                                                                                              
and TipoControle = @TipoControle                                          
        and CodControle = @CodControle                                                                             
        and Case When @FlagTipoDiferenca = 1 and CodProduto <> 8888888 Then 1                                                                      
                 When @FlagTipoDiferenca = 2 and CodProduto = 8888888  Then 1                                                                      
                 Else 0                                                                      
            End = 1                                                                                       
        and (ValorBaseICM > 0 or ValorIsentoICM > 0 or ValorOutrasICM > 0)                                                                                              
      Order By NumLancamento                                                                                              
                                                  
      Update MovComponente                                                           
        Set ValorBaseICM = Case when ValorBaseICM <> 0                                                                                         
                                then ValorBaseICM + @Diferenca                                                                       
                                Else ValorBaseICM End,                                                                                              
            ValorIsentoICM = Case when ValorIsentoICM <> 0 and ValorBaseICM = 0                                                                                        
                                  then ValorIsentoICM + @Diferenca                                                                      
                           Else ValorISentoICM End,                                                    
            ValorOutrasICM = Case when ValorOutrasICM <> 0 and ValorBaseICM = 0                                                                                              
                                  then ValorOutrasICM + @Diferenca                                                                      
                                  Else ValorOutrasICM End                                                                                              
      Where Empresa = @AuxEmpresa                                                                                              
        and NumLancamento = @AuxNumLancamento                                                                                              
        and NumSequencia = @AuxNumSequencia                                                         
    end                                                                            
                                                                                                                         
    Update NotasFiscais                                                                                              
      Set ValorBaseICM = Case when ValorBaseICM <> 0                                                                                              
                              then ValorBaseICM + @Diferenca                                                    
                              Else ValorBaseICM End                                                                                              
    Where Empresa = @Empresa                                                                                              
      and TipoControle = @TipoControle                                    
      and CodControle = @CodControle                                                 
      --185753                                                            
      and IsNull(@AuxBaseICM,0) <> 0                                                            
  end                                                  
                                              
  Set @Contador = @Contador + 1                                                                                          
end      
    
--327726    
Select     
@ValorProdutosNota = isnull(Sum(NF.ValorProdutos),0),     
@ValorServicosNota = isnull(Sum(NF.ValorServicos),0)    
From NotasFiscais NF    
where    
    Empresa =@Empresa    
and TipoControle = @TipoControle    
and CodControle =  @CodControle    
    
        
                                                                                              
Delete From NotasFiscaisRetencao                                                 
 Where Empresa=@Empresa                                                                                              
   and TipoControle=@TipoControle                                                                                              
   and CodControle=@CodControle                                                                                              
                                                                                              
Insert Into NotasFiscaisRetencao (                                                        
       Empresa, TipoControle, CodControle, TipoRetencao,                                                     
       ValorBase, Aliquota,                                                                                               
       ValorRetencao, StatusTransacao)                                                                                              
  Select @Empresa, @TipoControle, @CodControle, PedidosRetencao.TipoRetencao,                                                      
      Sum(PedidosRetencao.ValorBase), Max(PedidosRetencao.Aliquota),                                                                                               
    --338411
    --Sum(PedidosRetencao.ValorRetencao), Min(1)                 
    round( ( (Sum(PedidosRetencao.ValorBase)*Max(PedidosRetencao.Aliquota) )/100 ),2),
    Min(1)                                                                         
    From TempPrft110Pedido, PedidosRetencao                                                                                         
    Where TempPrft110Pedido.NumSequencia = @Ped_Sequencia                                                                                              
      and PedidosRetencao.Empresa = @Empresa                                           
      and PedidosRetencao.CodPedido = TempPrft110Pedido.CodPedido     
      --327726       
      and ( (PedidosRetencao.TipoRetencao = 5 and  @ValorTotalRetencoesISS > 0 and @ValorServicosNota > 0)      
           or  (TipoRetencao = 6  and  @ValorTotalRetencoesICM > 0 and @ValorProdutosNota > 0)      
           or  (@ValorTotalRetencoes > 0 ) )        
                                                              
    Group By PedidosRetencao.TipoRetencao 
           
--Gabriella - 344500
--Está sendo verificado no processamento se houver algum pedido com retenção não haverá registros na
--tabela TempPrft110RelacaoRetencao 
if @ValorServicosNota > 0
begin
    --Atualiza o Registro da Temporária com os dados da Nota Fiscal que tem Serviço
	update TempPrft110RelacaoRetencao
	   set Tipocontrole = @TipoControle,
		   CodControle = @CodControle
	 where NumSequenciaPed = @Ped_Sequencia
	   and TipoControle = 0
	   and CodControle = 0   
	   
	--Insere na tabela de Retenção somente o Registro da Temporária que tem valor de retenção		  
	Insert Into NotasFiscaisRetencao (                                                        
		     Empresa, TipoControle, 
		     CodControle, TipoRetencao,                                                     
		     ValorBase, Aliquota,                                                                                               
		     ValorRetencao, StatusTransacao)       		                                                                                                
	  Select @Empresa, TempRel.TipoControle,
	         TempRel.CodControle, TempRel.TipoRetencao,                                                      
			 Sum(TempRel.ValorBase), max(TempRel.Aliquota),                                                                                                             
			 Sum(TempRel.ValorRetencao), 1                                                                     
		From TempPrft110RelacaoRetencao TempRel                                                                                     
	   Where TempRel.NumSequenciaPed = @Ped_Sequencia
		 and TempRel.TipoControle = @TipoControle
		 and TempRel.CodControle = @CodControle 
		 and TempRel.ValorRetencao > 0 
	  --Gabriella - 358073
	  Group By TempRel.TipoControle, TempRel.CodControle, TempRel.TipoRetencao
	
	--Gabriella - 358073	  
	--Insere na tabela de Relação da Retenção todos os registros da Temporária
	/*Insert Into NotasFiscaisRelacaoRetencao
		  (Empresa, TipoDuplicata, 
		   CodDuplicata, TipoControle, 
		   CodControle, TipoRetencao, 
		   ValorBase, Aliquota,
		   ValorRetencao, FlagRetencaoGerada, 
		   TipoControleRetencao, CodControleRetencao,
		   StatusTransacao, TransacaoEmpresas)
	Select @Empresa, TempRel.TipoDuplicata,
	       TempRel.CodDuplicata, TempRel.TipoControle, 
		   TempRel.CodControle, TempRel.TipoRetencao,
		   TempRel.ValorBase, TempRel.Aliquota,
		   TempRel.ValorRetencao, 1, 
		   @TipoControle, @CodControle,
		   1, ''
	  From TempPrft110RelacaoRetencao TempRel
	 where TempRel.NumSequenciaPed = @Ped_Sequencia*/
end 
                                                                                                                                                                                                             
   --338411   
   Update NotasFiscais
   set ValorTotalRetencoes =  isnull( (Select Top 1 SUM(ValorRetencao)
                                       From NotasFiscaisRetencao                                           
                                       Where Empresa=@Empresa                                                                                        
                                         and TipoControle= @TipoControle                                                                                        
                                         and CodControle=  @CodControle ),0)                                                                                       
                               
   where
        Empresa =@Empresa    
    and TipoControle = @TipoControle    
    and CodControle =  @CodControle   
    
                                                                                              
end  
GO

ALTER procedure [dbo].[Stored_Prce050CalcularICM]                                                                  
(@Empresa numeric(2),                                                                            
 @TipoControle numeric(1),                                                                            
 @CodControle numeric(9),                                                                            
 @CodOperacao numeric(5),                                                                            
 @NotaValorProdutos decimal(11,2),                                                                            
 @NotaValorServicos decimal(11,2),                                                                            
 @NotaValorDesconto decimal(11,2),                                                                            
 @NotaValorDespesas decimal(11,2),                                                                            
 @NotaValorDespesasVenda decimal(11,2),                                                                          
 @NotaValorDescontoServicos decimal(11,2),                                                                          
 @NotaValorSubTribTotal decimal(11,2),                                                                          
 @NotaValorDespesasNaoInc  decimal(11,2),                                    
 @CodEntidade char(7),                                                                            
 @ValorContabilNota decimal(11,2),                                                                            
 @ValorIPINota decimal(11,2),                                                                            
 @FlagAlteraAliquota numeric(1),                                                                            
 @FlagAlterarCFOP numeric(1),                                                                
 @FlagSelectBaseICM numeric(1),      
--Renato - 321936       
 @ModeloDocumento VarChar(3)                                                                 
)                                                                            
as                          
                  
/***********************                  
VERSÃO 3.00                 
***********************/                                                                    
                                                                            
begin                                                                            
                                                                          
declare @AcrescimoBaseICM decimal(11,2)                                                                            
declare @AcrescimoBaseSubTrib decimal(11,2)                                                                            
declare @AcrescimoRedVenda decimal(11,2)                                                                            
-- Renato - 278440              
--declare @AcrescimoRedCusto decimal(15,8)                
declare @PerRedDespesa decimal(15,8)               
                                  
declare @ValorICM decimal(11,2)                                                                            
declare @NumLancamento int                                                                             
declare @SeqTemporaria smallint                                                                            
declare @TipoItem smallint                                          
declare @NumSequenciaComp smallint                                          
declare @CodProduto numeric(7)                                                                            
declare @CodTributacao char(5)                                                                            
declare @ValorTotal decimal(11,2)                                                                            
declare @AliqIPI decimal(4,2)                                                                            
declare @AliqICM decimal(4,2)                                                                            
declare @TempAliqICM decimal(4,2)          
          
declare @ValorBaseICM decimal(11,2)                                               
declare @ValorIsentoICM decimal(11,2)                                                                            
declare @ValorOutrasICM decimal(11,2)               
                   
declare @CompValorBaseICM decimal(11,2)                       
declare @CompValorIsentoICM decimal(11,2)                                                                            
declare @CompValorOutrasICM decimal(11,2)                                                                      
                                          
declare @ValorBaseSubTrib decimal(11,2)                                                                            
declare @ValorSubTrib decimal(11,2)                             
declare @AuxPerRedBaseSubTrib decimal(4,2)                           
declare @PerRedBaseSubTrib decimal(4,2)                                                                        
declare @ValorBaseSubTribCarga decimal(11,2)                                                                            
declare @ValorSubTribCarga decimal(11,2)                                                                            
declare @FatorRedCusto decimal(15,4)                                                                            
declare @FatorRedVenda decimal(7,4)                                                                 
declare @NumCFOP char(10)                                                                            
declare @CodClassFiscal varchar(15)                                                                            
declare @FlagEntrada numeric(1)                                                                        
declare @AliqPISCOFINS decimal(4,2)                                                                          
declare @CodListaPreco numeric(7)                                                                          
declare @FlagSubTribDespesas numeric(1)                                                                          
declare @ValorProdutosComSubTrib decimal(11,2)                                                                    
declare @CodEmpMestre char(7)                                                                          
declare @CodSubTributaria integer                                                          
declare @SubFlagSomaDespesas integer                                                       
declare @FlagDespesasIPI integer                                                     
--Gabriella - 333391      
--declare @ValorIPIDespesas decimal(11,2)                                                    
declare @ValorCustoFor decimal(13,4)                                    
declare @QuantAtendida decimal(10,3)                         
--MARCELO - CHAMADO 195091                        
declare @ValorContabilNotaServico decimal(11,2);                        
declare @ServicoValorBaseICM decimal(11,2);                        
declare @ServicoValorIsentoICM decimal(11,2);                        
declare @ServicoValorOutrasICM decimal(11,2);                        
declare @ServicoCompValorBaseICM decimal(11,2);                        
declare @ServicoCompValorIsentoICM decimal(11,2);                        
declare @ServicoCompValorOutrasICM decimal(11,2);                        
declare @Diferenca decimal(11,2);                        
declare @FlagTipoDiferenca smallint;                        
declare @DiferencaProduto decimal(11,2);                        
declare @FlagTipoDiferencaProduto smallint;                        
declare @DiferencaServico decimal(11,2);                        
declare @FlagTipoDiferencaServico smallint;                        
declare @Contador smallint;                        
--JALDO - CHAMADO 248899              
--JALDO - CHAMADO 243556                  
--declare @TipoConsideraIPICalculoICM int                  
declare @EntTipoPessoa char(1);              
-- Renato - Chamado 272165                
declare @ValorBasePisCofins numeric(11,2);              
declare @AliqPis numeric(4,2);              
declare @AliqCofins numeric(4,2);                
-- Renato - 278440              
declare @ValorUnitario decimal(13,4);                
declare @FlagDeduzirDespNaoInclNaMargem smallint;              
declare @ValorDescontoAux decimal(11,2);            
Declare @ParTipoReducaoICM numeric(1);            
--Rafael chamado 281202            
Declare @ValorProdutosTributados decimal(11,2);            
Declare @MaiorAliqIPI decimal(4,2);                                            
--Gabriella - 284639          
declare @NumCstICM varchar(3);                                                                           
declare @NumCstIPI varchar(3);           
declare @NumCstPisCofins varchar(3);          
declare @NumCsosn varchar(3);          
--Renato - 297792          
declare @NatReceitaPisCofins int;      
--Renato - 332318       
declare @NatBaseCalcCredito smallint;     
--Ronaldo 343696    
declare @IndNaturezaFrete SmallInt;    
    
--Gabriella - 302581        
declare @PerReducaoICM decimal(4,2);      
--Gabriella - 256424      
declare @OprFlagIPISobreBaseICM smallint;         
--Gabriella - 333391      
declare @AcrescimoBaseIPI decimal(11,2)                                                    
declare @ValorBaseIPI decimal(11,2);                                                                            
declare @ValorIsentoIPI decimal(11,2);                                                                            
declare @ValorOutrasIPI decimal(11,2); 

-- Renato - 360358
declare @AliqICMSST decimal(5,2);
declare @PercMvaICMSST decimal(5,2);
--Gabriella - 360317
declare @OprTipoIPI numeric(1);    
--Gabriella - 471920
declare @AliqFCP decimal(5,2);
declare @ValorFCP decimal (11,2);
declare @AliqICMDestino decimal(5,2);
declare @PercPartilhaICMOrigem decimal (5,2);
declare @PercPartilhaICMDestino decimal (5,2);
declare @ValorPartilhaICMOrigem decimal (11,2);
declare @ValorPartilhaICMDestino decimal (11,2);
declare @CEST varchar(7);     
--Renato - 361650 
declare @AliqComplICM    Decimal(5,2);
declare @AliqComplPIS    Decimal(5,2);
declare @AliqComplCOFINS Decimal(5,2);     
              
--Renato - 278440               
Select @FlagDeduzirDespNaoInclNaMargem = FlagDeduzirDespNaoInclNaMargem                
From ConfiguracaoSistema               
--Renato - 278440              
Select @ParTipoReducaoICM=TipoReducaoICM                                                                                                              
From ParamControle where Empresa=@Empresa        
      
--Gabriella - 256424      
Select @OprFlagIPISobreBaseICM = FlagIPISobreBaseICM                    
From Operacoes                                                                                                                   
Where Codigo = @CodOperacao       
      
--Gabriella - 256424      
if (@OprFlagIPISobreBaseICM is null)                      
   Set @OprFlagIPISobreBaseICM = 0                
                                                                       
If @TipoControle=1                                                                            
  Set @FlagEntrada = 1                                                                            
Else                                                                            
  Set @FlagEntrada = 0                                                                            
                                                                            
--JALDO - CHAMADO 243556                  
--If (Select TipoPessoa From Entidades Where Codigo = @CodEntidade) <> 'J'                                                       
--   Set @ValorContabilNota = @ValorContabilNota + @ValorIPINota                                                                            
select @EntTipoPessoa=TipoPessoa                 
       --@TipoConsideraIPICalculoICM=TipoConsideraIPICalculoICM    --JALDO - CHAMADO 248899              
       from Entidades                                                                                                             
       where Entidades.Codigo = @CodEntidade                     
                
--JALDO - CHAMADO 248899              
--if ((@TipoConsideraIPICalculoICM = 0) and (@EntTipoPessoa <> 'J')) or                   
--   (@TipoConsideraIPICalculoICM = 1)                   
--   Set @ValorContabilNota = @ValorContabilNota + @ValorIPINota                           
          
--if (@EntTipoPessoa <> 'J')            
if ((@EntTipoPessoa <> 'J') and (@EntTipoPessoa <> 'I')) or @OprFlagIPISobreBaseICM = 1 --Gabriella - 256424                  
   Set @ValorContabilNota = @ValorContabilNota + @ValorIPINota                           
                                                  
If (@ValorProdutosComSubTrib is null)                                            
   Set @ValorProdutosComSubTrib = 0                                                                          
                                                    
--Considera as despesas sobre IPI quando está marcado na operação fiscal       
--Gabriella - 333391                                                   
--Set @ValorIPIDespesas = 0                                                    
Set @AcrescimoBaseIPI = 0       
                                      
/*Karina - 147820*/                                      
--306221 if (@ValorIPINota <> 0)                                      
--306221 begin                                      
 --Rafael chamado 281202                                     
  --Select @ValorIPIDespesas = Round((isnull(Max(T.AliqIPI),0) * @NotaValorDespesas) /100,2)            
/*  Select             
  @ValorProdutosTributados = isnull(Sum(Case When T.AliqIpi <> 0 then T.ValorTotal end),0),            
  @MaiorAliqIPI            = Isnull(Max(T.AliqIPI),0)              
  from TempPrce050Itens T                                                                           
  left join Operacoes O on O.Codigo = @CodOperacao                                                            
  where T.Empresa = @Empresa                                                                            
    and T.TipoControle = @TipoControle                                                                             
and T.CodControle = @CodControle                                                                             
    and T.Status <> 'E'                                                                            
   and T.Status <> 'L'                                                                            
    and T.CodProduto <> 8888888                         
    --MARCELO - CHAMADO 187905                          
    and T.QuantAtendida > 0                          
    and O.FlagDespesasIPI = 1 */                                                   
--306221 end               
      
--Gabriella - 333391            
--Rafael chamado 281202            
/*if @NotaValorProdutos > 0            
  set @ValorIPIDespesas = Round((@ValorProdutosTributados/@NotaValorProdutos * (@NotaValorDespesas)) * (@MaiorAliqIPI / 100),2)             
else            
  set @ValorIPIDespesas =0           
                                   
                                                    
If @ValorIPIDespesas is null                                                    
  Set @ValorIPIDespesas = 0*/                                                    
                                                     
Declare CursorItem cursor local FAST_FORWARD for                                                                             
     select 0 as TipoItem, T.NumLancamento, T.SeqTemporaria, 0,                                           
            T.CodProduto, T.CodTributacao,      
            -- Renato - 321936 - Notas de Frete é considerado o valor unitario do item      
            Case When (@ModeloDocumento in ('07', '08', '8B', '09', '10', '11', '26', '27', '57')) and       
                      (T.ValorTotal = 0) then T.ValorUnitario else T.ValorTotal end as ValorTotal,       
            T.AliqIPI, T.CodClassFiscal, T.CodListaPreco, T.AliqICM, O.FlagSubTribDespesas,                                                                        
            T.PerRedBaseSubTrib, O.FlagDespesasIPI, T.CodSubTributaria, Sub.FlagSomaDespesas,                                     
            T.ValorCustoFor, T.QuantAtendida,               
            --Renato - 278440              
            T.ValorUnitario,
            --Gabriella - 360317
            O.TipoIPI
     From TempPrce050Itens T                                                               
     left join Operacoes O on O.Codigo = @CodOperacao                                                               
     Left Join SubstituicaoTributaria Sub on Sub.CodSubTributaria = T.CodSubTributaria                                                        
      and Sub.Empresa = T.Empresa                  
     where T.Empresa = @Empresa                                                                            
       and T.TipoControle = @TipoControle                                                
       and T.CodControle = @CodControle                                                            
       and T.Status <> 'E'                                                                            
       and T.Status <> 'L'                                          
     UNION                                       
     select 1 as TipoItem, TComp.NumLancamento, TComp.SeqTemporaria, TComp.NumSequencia,                                          
            TComp.CodProduto, TComp.CodTributacao, TComp.ValorTotal, TComp.AliqIPI,                                          
            TComp.CodClassFiscal, TComp.CodListaPreco, TComp.AliqICM, O.FlagSubTribDespesas,                                          
            TComp.PerRedBaseSubTrib, O.FlagDespesasIPI, TComp.CodSubTributaria, Sub.FlagSomaDespesas,                                    
            TComp.ValorCustoFor, TComp.QuantAtendida,                
            --Renato - 278440              
            TComp.ValorUnitario,
            --Gabriella - 360317
            O.TipoIPI                                              
     from TempPrce050Componentes TComp                                          
     left join Operacoes O on O.Codigo = @CodOperacao                                          
     Left Join SubstituicaoTributaria Sub on Sub.CodSubTributaria = TComp.CodSubTributaria                                          
                                         and Sub.Empresa = TComp.Empresa                                          
     where TComp.Empresa = @Empresa                                                                            
       and TComp.TipoControle = @TipoControle                                                                             
       and TComp.CodControle = @CodControle                                                                             
       and TComp.Status <> 'E'                                                                            
                                                                         
 Open CursorItem                                                                            
 Fetch Next From CursorItem into @TipoItem, @NumLancamento, @SeqTemporaria, @NumSequenciaComp,                                          
       @CodProduto, @CodTributacao, @ValorTotal, @AliqIPI,                                           
       @CodClassFiscal, @CodListaPreco, @TempAliqICM, @FlagSubTribDespesas,                                                                          
       @AuxPerRedBaseSubTrib, @FlagDespesasIPI, @CodSubTributaria, @SubFlagSomaDespesas,                                    
       @ValorCustoFor, @QuantAtendida,       
       -- Renato - 278440              
       @ValorUnitario,
       --Gabriella - 360317
       @OprTipoIPI                                    
 While @@Fetch_Status = 0                                     
 Begin                                                                            
   Set @AcrescimoBaseICM = 0                                                                            
   Set @AcrescimoBaseSubTrib = 0                                                                            
   Set @AcrescimoRedVenda = 0              
   -- Renato - 278440                                                
   --Set @AcrescimoRedCusto = 0                                    
   Set @PerRedDespesa = 0               
                          
   /*Karina - 147820*/                                      
--306221   if (@ValorIPINota = 0)                                      
--306221     Set @AliqIPI = 0                                                           
                 
   -- Renato - 278440                                 
   --Eder - Chamado 170325                                    
   --Calcula o percentual de acrescimo no custo                                    
   --If (@ValorCustoFor > 0) and (@NotaValorDespesasNaoInc > 0) and ((@NotaValorProdutos + @NotaValorServicos) > 0)  and (@QuantAtendida > 0)                                   
   --begin                                    
   --  Set @AcrescimoRedCusto = ((@NotaValorDespesasNaoInc * (@ValorTotal / (@NotaValorProdutos + @NotaValorServicos))) / @QuantAtendida) / @ValorCustoFor                                    
   --end              
   if (@FlagDeduzirDespNaoInclNaMargem = 1) and (@ParTipoReducaoICM <> 2)                
     Set @ValorDescontoAux = @NotaValorDesconto                 
   else              
     Set @ValorDescontoAux = 0             
   /* 298865              
   If (@ValorUnitario > 0) and ((@NotaValorDespesasNaoInc > 0) or (@ValorDescontoAux > 0)) and ((@NotaValorProdutos + @NotaValorServicos) > 0)  and (@QuantAtendida > 0)                                   
   begin                     
     Set @PerRedDespesa = (( (@NotaValorDespesasNaoInc + @ValorDescontoAux) * (@ValorTotal / (@NotaValorProdutos + @NotaValorServicos))) / @QuantAtendida) / @ValorUnitario                                   
   end            
   */          
   If (((@NotaValorDespesasNaoInc > 0) or (@ValorDescontoAux > 0)) and ((@NotaValorProdutos + @NotaValorServicos) > 0)  and (@QuantAtendida > 0))          
   begin          
          
     if ((@FlagDeduzirDespNaoInclNaMargem = 1) and (@ValorUnitario > 0))          
       Set @PerRedDespesa = (( (@NotaValorDespesasNaoInc + @ValorDescontoAux) * (@ValorTotal / (@NotaValorProdutos + @NotaValorServicos))) / @QuantAtendida) / @ValorUnitario;          
          
     else if ((@FlagDeduzirDespNaoInclNaMargem = 0) and (@ValorCustoFor > 0))          
       Set @PerRedDespesa = (( @NotaValorDespesasNaoInc * (@ValorTotal / (@NotaValorProdutos + @NotaValorServicos))) / @QuantAtendida) / @ValorCustoFor;          
            
   end           
                
                                                       
   If (@CodProduto <> 8888888) and (@NotaValorProdutos > 0)                                                                          
   begin           
     --Gabriella - 333391                
     if @FlagDespesasIPI = 1 and @AliqIPI > 0         
       set @AcrescimoBaseIPI = (@ValorTotal/@NotaValorProdutos * (@NotaValorDespesas))
     --Gabriella - 360317               
     else if @AliqIPI = 0 and @OprTipoIPI = 0
       Set @AcrescimoBaseIPI = (@ValorTotal/@NotaValorProdutos) * (0 - @NotaValorDesconto)
     else
       set @AcrescimoBaseIPI = 0                                     
                                                     
     If @AcrescimoBaseIPI is null                                                    
       Set @AcrescimoBaseIPI = 0           
                                                                         
      Set @AcrescimoBaseICM = (@NotaValorDespesas - @NotaValorDesconto) * (@ValorTotal / @NotaValorProdutos)                                                                             
                                                    
      Set @AcrescimoBaseSubTrib = 0                                                    
      If (@FlagSubTribDespesas = 1 and @CodSubTributaria = 0) or                                                        
         (@SubFlagSomaDespesas = 1 and @CodSubTributaria > 0)                                                        
           Set @AcrescimoBaseSubTrib = @NotaValorDespesas           
      
      /*Ronaldo Chamado 358571
      --Gabriella - 298263                                                
      If @FlagDespesasIPI = 1 and @AliqIPI > 0                                                   
      begin       
         --Gabriella - 333391                                             
         --Set @AcrescimoBaseSubTrib = @AcrescimoBaseSubTrib + @ValorIPIDespesas       
         Set @AcrescimoBaseSubTrib = @AcrescimoBaseSubTrib + ((@AcrescimoBaseIPI * @AliqIPI) / 100)                           
           
         --Eder - Chamado 174565                              
         --Set @ValorIPIDespesas = 0                                   
      end */                                               

      Set @AcrescimoBaseSubTrib = (@AcrescimoBaseSubTrib - @NotaValorDesconto) * (@ValorTotal / @NotaValorProdutos)                                                 
                                                    
      Set @AcrescimoRedVenda = @NotaValorDespesasVenda * (@ValorTotal / @NotaValorProdutos)                                                                             
   end                                                                        
   If (@CodProduto = 8888888) and (@NotaValorServicos > 0)                                
   begin                                                                        
     if @NotaValorProdutos > 0                                         
        Set @AcrescimoBaseICM = (@NotaValorDescontoServicos * -1) * (@ValorTotal / @NotaValorServicos)                                                                
     Else                                                                
        Set @AcrescimoBaseICM = (@NotaValorDespesas - @NotaValorDescontoServicos) * (@ValorTotal / @NotaValorServicos)                                                                
     Set @AcrescimoBaseSubTrib = 0                                                                          
     Set @AcrescimoRedVenda = 0                                                                          
   end                                                                          
                                                             
   If @FlagAlteraAliquota = 1                                                                           
      Set @TempAliqICM = 0                                                                          
   Select @AliqICM=AliqICM, @ValorBaseICM = ValorBaseICM,                                                                         
          @ValorICM = ValorICM, @ValorIsentoICM=ValorIsentoICM,  @ValorOutrasICM=ValorOutrasICM,        
          --Gabriella - 302581        
          @PerReducaoICM = PerReducaoICM,                                                                            
          @ValorBaseSubTrib = ValorBaseSubTrib, @ValorSubTrib = ValorSubTrib,                                                                             
          @PerRedBaseSubTrib = PerRedBaseSubTrib,                                                                        
          @FatorRedCusto=FatorRedCusto, @FatorRedVenda=FatorRedVenda,                                                                          
          @NumCFOP=NumCFOP, @AliqPISCOFINS=AliqPISCOFINS,                                                                          
          @ValorBaseSubTribCarga = ValorBaseSubTribCarga, @ValorSubTribCarga = ValorSubTribCarga,              
          -- Renato - Chamado 272165              
          @ValorBasePisCofins = ValorBasePisCofins,              
          @AliqPis = AliqPis,              
          @AliqCofins = AliqCofins,          
          --Gabriella - 284639          
          @NumCstICM = NumCstICM,          
          @NumCstIPI = NumCstIPI,          
          @NumCstPisCofins = NumCstPisCofins,          
          @NumCsosn = NumCsosn,          
          -- Renato - 297792           
          @NatReceitaPisCofins = NatReceitaPisCofins,         
          -- Renato - 332318      
          @NatBaseCalcCredito = NatBaseCalcCredito,      
          --Ronaldo 343696    
          @IndNaturezaFrete   = IndNaturezaFrete,    
          --Gabriella - 333391             
          @ValorBaseIPI = ValorBaseIPI,      
          @ValorIsentoIPI = ValorIsentoIPI,      
          @ValorOutrasIPI = ValorOutrasIPI,
          --Renato - 360358
		  @AliqICMSST = AliqICMSST,
		  @PercMvaICMSST = PercMvaICMSST,
		  --Renato - 361650
		  @AliqComplICM    = AliqComplICM,   
		  @AliqComplPIS	   = AliqComplPIS,   
		  @AliqComplCOFINS = AliqComplCOFINS,		  
		  --Gabriella - 471920
          @AliqFCP = AliqFCP,
		  @ValorFCP = ValorFCP,
		  @AliqICMDestino = AliqICMDestino,
		  @PercPartilhaICMOrigem = PercPartilhaICMOrigem,
		  @PercPartilhaICMDestino = PercPartilhaICMDestino,
		  @ValorPartilhaICMOrigem = ValorPartilhaICMOrigem,
		  @ValorPartilhaICMDestino = ValorPartilhaICMDestino,
		  @CEST = CEST   		        
     From Dbo.Calcular_ICM(@Empresa, @CodProduto, @CodTributacao, @CodEntidade,                                                                       
                           @CodOperacao, @ValorTotal, @AcrescimoBaseICM, @AcrescimoBaseSubTrib,                                           
                           @AuxPerRedBaseSubTrib, @AliqIPI, @CodClassFiscal, @FlagEntrada,                                                                         
                           @AcrescimoRedVenda, @CodListaPreco, @TempAliqICM, @CodSubTributaria, @PerRedDespesa,      
                           @AcrescimoBaseIPI)                                    
                                                             
   if (@TipoItem = 0)                                           
   begin                                          
     Update TempPrce050Itens Set                                          
       ValorBaseICM=@ValorBaseICM,                                                                            
       ValorIsentoICM=@ValorIsentoICM,                                      
       ValorOutrasICM=@ValorOutrasICM,        
       --Gabriella - 302581        
       PerReducaoICM=@PerReducaoICM,                                                                            
--MARCELO - CHAMADO 195051                    
--       ValorBaseSubTrib=Case When @ValorBaseSubTrib > 0 Then @ValorBaseSubTrib                                                               
--                             Else @ValorBaseSubTribCarga End,                                                              
--       ValorSubTrib=Case When @ValorSubTrib > 0 then @ValorSubTrib                                         
--                         Else @ValorSubTribCarga End,                                                              
       ValorBaseSubTrib = @ValorBaseSubTrib,                    
       ValorSubTrib = @ValorSubTrib,                    
       ValorBaseSubTribCarga = @ValorBaseSubTribCarga,                    
       ValorSubTribCarga = @ValorSubTribCarga,                    
       PerRedBaseSubTrib=@PerRedBaseSubTrib,                                                                        
       FatorRedCusto=@FatorRedCusto,                                                                            
       FatorRedVenda=@FatorRedVenda,                                                                          
       NumCFOP= Case @FlagAlterarCFOP when 1 then @NumCFOP else NumCFOP end,                                                                            
       AliqICM= Case @FlagAlteraALiquota when 1 then @AliqICM else AliqICM end,                                                                          
       --JALDO - CHAMADO 315525        
       --AliqPISCOFINS = @AliqPISCOFINS,              
       AliqPISCOFINS = Case @FlagAlterarCFOP when 1 then @ALIQPISCOFINS else AliqPISCOFINS end,               
       -- Renato - Chamado 272165              
       ValorBasePisCofins = @ValorBasePisCofins,              
       AliqPis = @AliqPis,              
       AliqCofins = @AliqCofins,          
       --Gabriella - 284639          
       NumCstICM = @NumCstICM,          
       NumCstIPI = @NumCstIPI,          
       NumCstPisCofins = @NumCstPisCofins,          
       NumCsosn = @NumCsosn,            
       --Renato - 297792          
       NatReceitaPisCofins = @NatReceitaPisCofins,       
       --Renato - 332318        
       NatBaseCalcCredito = @NatBaseCalcCredito,      
       --Ronaldo 343696    
       IndNaturezaFrete   = @IndNaturezaFrete,    
       --Gabriella - 333391             
       ValorBaseIPI = @ValorBaseIPI,      
       ValorIsentoIPI = @ValorIsentoIPI,      
       ValorOutrasIPI = @ValorOutrasIPI,
       --Renato - 360358
	   AliqICMSST = @AliqICMSST,
	   PercMvaICMSST = @PercMvaICMSST,
	   --Renato - 361650
	   AliqComplICM    = @AliqComplICM,   
	   AliqComplPIS	   = @AliqComplPIS,   
	   AliqComplCOFINS = @AliqComplCOFINS,	   
	   --Gabriella - 471920
       AliqFCP = @AliqFCP,
	   ValorFCP = @ValorFCP,
	   AliqICMDestino = @AliqICMDestino,
	   PercPartilhaICMOrigem = @PercPartilhaICMOrigem,
	   PercPartilhaICMDestino = @PercPartilhaICMDestino,
	   ValorPartilhaICMOrigem = @ValorPartilhaICMOrigem,
	   ValorPartilhaICMDestino = @ValorPartilhaICMDestino,
	   CEST = @CEST  	                                                                                    
     where Empresa=@Empresa                 
       and TipoControle=@TipoControle                                                                            
       and CodControle=@CodControle                                          
       and NumLancamento=@NumLancamento                                                                             
       and SeqTemporaria=@SeqTemporaria                                          
   end                                          
   else                                          
   begin                                          
     Update TempPrce050Componentes Set                                          
       ValorBaseICM=@ValorBaseICM,                                                                            
       ValorIsentoICM=@ValorIsentoICM,                                                                            
       ValorOutrasICM=@ValorOutrasICM,        
       --Gabriella - 302581        
       PerReducaoICM=@PerReducaoICM,                    
--MARCELO - CHAMADO 195051             
--       ValorBaseSubTrib=Case When @ValorBaseSubTrib > 0 Then @ValorBaseSubTrib                                                               
--                             Else @ValorBaseSubTribCarga End,                                                              
--       ValorSubTrib=Case When @ValorSubTrib > 0 then @ValorSubTrib                                                               
--                         Else @ValorSubTribCarga End,                                     
       ValorBaseSubTrib = @ValorBaseSubTrib,                    
       ValorSubTrib = @ValorSubTrib,                    
       ValorBaseSubTribCarga = @ValorBaseSubTribCarga,                    
       ValorSubTribCarga = @ValorSubTribCarga,                    
       PerRedBaseSubTrib=@PerRedBaseSubTrib,                                                                        
       FatorRedCusto=@FatorRedCusto,                                          
       FatorRedVenda=@FatorRedVenda,                                          
       NumCFOP= Case @FlagAlterarCFOP when 1 then @NumCFOP else NumCFOP end,                                          
 AliqICM= Case @FlagAlteraALiquota when 1 then @AliqICM else AliqICM end,          
       --Gabriella - 284639          
       NumCstICM = @NumCstICM,          
       NumCstIPI = @NumCstIPI,          
       NumCstPisCofins = @NumCstPisCofins,          
       NumCsosn = @NumCsosn,           
       --Renato - 297792           
       NatReceitaPisCofins = @NatReceitaPisCofins,      
       --Renato - 332318        
       NatBaseCalcCredito = @NatBaseCalcCredito,    
       --Gabriella - 333391             
       ValorBaseIPI = @ValorBaseIPI,      
       ValorIsentoIPI = @ValorIsentoIPI,      
       ValorOutrasIPI = @ValorOutrasIPI,
       --Renato - 360358
	   AliqICMSST = @AliqICMSST,
	   PercMvaICMSST = @PercMvaICMSST,
	   --Renato - 361650
	   AliqComplICM    = @AliqComplICM,   
	   AliqComplPIS	   = @AliqComplPIS,   
	   AliqComplCOFINS = @AliqComplCOFINS,  	   
	   --Gabriella - 471920
       AliqFCP = @AliqFCP,
	   ValorFCP = @ValorFCP,
	   AliqICMDestino = @AliqICMDestino,
	   PercPartilhaICMOrigem = @PercPartilhaICMOrigem,
	   PercPartilhaICMDestino = @PercPartilhaICMDestino,
	   ValorPartilhaICMOrigem = @ValorPartilhaICMOrigem,
	   ValorPartilhaICMDestino = @ValorPartilhaICMDestino,
	   CEST = @CEST 	                                                        
     where Empresa=@Empresa                                                                            
       and TipoControle=@TipoControle                                             
       and CodControle=@CodControle                                                                            
       and NumLancamento=@NumLancamento                                                                             
       and SeqTemporaria=@SeqTemporaria                                          
       and NumSequencia=@NumSequenciaComp                                          
   end                                          
                                                                  
   Fetch Next From CursorItem into @TipoItem, @NumLancamento, @SeqTemporaria, @NumSequenciaComp,                                          
         @CodProduto, @CodTributacao, @ValorTotal, @AliqIPI,                                          
         @CodClassFiscal, @CodListaPreco, @TempAliqICM, @FlagSubTribDespesas,                                          
         @AuxPerRedBaseSubTrib, @FlagDespesasIPI, @CodSubTributaria, @SubFlagSomaDespesas,                                 
         @ValorCustoFor, @QuantAtendida,               
         -- Renato - 278440              
         @ValorUnitario, 
         --Gabriella - 360317
         @OprTipoIPI                                  
 End                                                                        
Close CursorItem                                                                            
Deallocate CursorItem                                                       
                                
                                                                            
Set @TipoItem = 0                                                
Set @ValorBaseICM = 0                                                
Set @ValorIsentoICM = 0                                                
Set @ValorOutrasICM = 0                                                
Set @CompValorBaseICM = 0                                                
Set @CompValorIsentoICM = 0                                                
Set @CompValorOutrasICM = 0                                                
--MARCELO - CHAMADO 195091                        
set @ServicoValorBaseICM = 0            
set @ServicoValorIsentoICM = 0                        
set @ServicoValorOutrasICM = 0                        
set @ServicoCompValorBaseICM = 0                        
set @ServicoCompValorIsentoICM = 0                        
set @ServicoCompValorOutrasICM = 0                        
                                                 
--MARCELO - CHAMADO 195091                                               
Select                        
  @ValorBaseICM = sum(case when CodProduto <> 8888888 then ValorBaseICM else 0 end),                        
  @ValorIsentoICM = sum(case when CodProduto <> 8888888 then ValorIsentoICM else 0 end),                        
  @ValorOutrasICM = sum(case when CodProduto <> 8888888 then ValorOutrasICM else 0 end),                        
  @TipoItem = 0,                        
  @ServicoValorBaseICM = sum(case when CodProduto = 8888888 then ValorBaseICM Else 0 end),                        
  @ServicoValorIsentoICM = Sum(case when CodProduto = 8888888 then ValorIsentoICM else 0 end),                        
  @ServicoValorOutrasICM = sum(case when CodProduto = 8888888 then ValorOutrasICM else 0 end)                        
From TempPrce050Itens T                                      
Where Empresa = @Empresa                                                                            
  and TipoControle = @TipoControle                                                               
  and CodControle = @CodControle                           
--MARCELO - CHAMADO 195091                                                                         
--  and CodProduto <> 8888888                                                                            
  and Status <> 'E'                                                                
  and Status <> 'L'                                                                         
  and not exists (Select * From TempPRCE050Componentes TComp                               
                  Where TComp.Empresa = T.Empresa                                          
                    and TComp.NumLancamento = T.NumLancamento                                          
                    and TComp.SeqTemporaria = T.SeqTemporaria                                        
                    and TComp.TipoControle = T.TipoControle                                        
                    and TComp.CodControle = T.CodControle)                                        
                                          
if (@ValorBaseICM is null)                                          
begin                                          
  Set @ValorBaseICM = 0                                          
  Set @ValorIsentoICM = 0                                          
  Set @ValorOutrasICM = 0                                          
  Set @TipoItem = 0                                          
end          
                        
--MARCELO - CHAMADO 195091                        
if (@ServicoValorBaseICM is null)                         
begin                        
  set @ServicoValorBaseICM = 0;                        
  set @ServicoValorIsentoICM = 0;                        
  set @ServicoValorOutrasICM = 0;                        
end                        
                        
--MARCELO - CHAMADO 195091                                                   
Select                         
  @CompValorBaseICM = sum(case when CodProduto <> 8888888 then ValorBaseICM else 0 end),                        
  @CompValorIsentoICM = sum(case when CodProduto <> 8888888 then ValorIsentoICM else 0 end),                        
  @CompValorOutrasICM = sum(case when CodProduto <> 8888888 then ValorOutrasICM else 0 end),                        
  @TipoItem = 1,                        
  @ServicoCompValorBaseICM = sum(case when CodProduto = 8888888 then ValorBaseICM else 0 end),                        
  @ServicoCompValorIsentoICM = sum(case when CodProduto = 8888888 then ValorIsentoICM else 0 end),                        
  @ServicoCompValorOutrasICM = sum(case when CodProduto = 8888888 then ValorOutrasICM else 0 end)                             
From TempPrce050Componentes TComp                                          
Where Empresa = @Empresa                                                                            
  and TipoControle = @TipoControle                                                                            
  and CodControle = @CodControle                                                                       
  and Status <> 'E'                       
                                          
if (@CompValorBaseICM is not null)                                          
begin                                          
  Set @ValorBaseICM = @ValorBaseICM + @CompValorBaseICM                                          
  Set @ValorIsentoICM = @ValorIsentoICM + @CompValorIsentoICM                                          
  Set @ValorOutrasICM = @ValorOutrasICM + @CompValorOutrasICM                                          
end                                          
else                                          
  Set @TipoItem = 0                          
                        
--MARCELO - CHAMADO 195091                        
if (@ServicoCompValorBaseICM is not null)                         
begin                        
  set @ServicoValorBaseICM = @ServicoValorBaseICM + @ServicoCompValorBaseICM                      
  set @ServicoValorIsentoICM = @ServicoValorIsentoICM + @ServicoCompValorIsentoICM                        
  set @ServicoValorOutrasICM = @ServicoValorOutrasICM + @ServicoCompValorOutrasICM                        
end                        
else                        
  set @TipoItem = 0                        
                        
--MARCELO - CHAMADO 195091                        
set @ValorContabilNotaServico = (@ValorContabilNota + @NotaValorDesconto) - @NotaValorProdutos;                        
      
      
set @ValorContabilNotaServico = @ValorContabilNotaServico + (@NotaValorServicos - @NotaValorDescontoServicos);      
--321475      
if (@NotaValorProdutos > 0)       
 set @ValorContabilNotaServico = @ValorContabilNotaServico  - @NotaValorDespesas;                          
                        
--MARCELO - CHAMADO 195091                        
set @Diferenca         = 0;                        
set @FlagTipoDiferenca = 0;                        
set @DiferencaProduto         = 0;            
set @FlagTipoDiferencaProduto = 0;                        
set @DiferencaServico         = 0;                        
set @FlagTipoDiferencaServico = 0;                        
                        
--MARCELO - CHAMADO 195091                       
if ((@ValorContabilNota <> (@ValorBaseICM + @ValorIsentoICM + @ValorOutrasICM))                        
    and (@NotaValorProdutos > 0))                         
begin                        
  set @FlagTipoDiferencaProduto = 1;                        
  set @DiferencaProduto = @ValorContabilNota - (@ValorBaseICM + @ValorIsentoICM + @ValorOutrasICM);                        
end                        
                        
if ((@ValorContabilNotaServico <> (@ServicoValorBaseICM + @ServicoValorIsentoICM + @ServicoValorOutrasICM))                        
    and (@NotaValorServicos > 0))                         
begin                        
  set @FlagTipoDiferencaServico = 2;                        
  set @DiferencaServico = @ValorContabilNotaServico - (@ServicoValorBaseICM + @ServicoValorIsentoICM + @ServicoValorOutrasICM);                        
end                        
                                      
                                          
--MARCELO - CHAMADO 195091                        
set @Contador = 1;                        
while (@Contador <= 2)                         
begin                        
  if (@Contador = 1)                         
  begin                        
    set @Diferenca = @DiferencaProduto;                        
    set @FlagTipoDiferenca = @FlagTipoDiferencaProduto;                        
  end                        
  if (@Contador = 2)                         
  begin                        
    set @Diferenca = @DiferencaServico;                        
    set @FlagTipoDiferenca = @FlagTipoDiferencaServico;                        
  end                        
                        
  if (@Diferenca <> 0)                         
  begin                        
    Set @NumLancamento = null                                                                        
    Set @SeqTemporaria = null                                                                        
    Set @NumSequenciaComp = null                                          
                                          
    if @TipoItem = 0                                          
    begin                                          
      Select Top 1                         
        @NumLancamento = NumLancamento,                                                                         
        @SeqTemporaria = SeqTemporaria                                                                            
      from TempPrce050Itens                                                                            
      where Empresa = @Empresa                                                             
        and TipoControle = @TipoControle           
        and CodControle = @CodControle                                                                             
--MARCELO - CHAMADO 195091                        
        and Case When @FlagTipoDiferenca = 1 and CodProduto <> 8888888 Then 1                        
                 When @FlagTipoDiferenca = 2 and CodProduto = 8888888  Then 1                        
                 Else 0                        
            End = 1                        
        and Status <> 'E'                                                                            
        and Status <> 'L'                                                                            
        and (ValorBaseICM > 0 or ValorIsentoICM > 0 or ValorOutrasICM > 0)                                                                          
      order by SeqTemporaria, NumLancamento                                                                            
                                                                        
      If not (@NumLancamento is null)                                                                        
      begin                                         
--MARCELO - CHAMADO 195091                                                    
        Update TempPrce050Itens set                                                                            
          ValorBaseICM = Case when ValorBaseICM <> 0                                                                           
                              then ValorBaseICM + @Diferenca                        
                              Else ValorBaseICM End,                                                                            
          ValorIsentoICM = Case when ValorIsentoICM <> 0 and ValorBaseICM = 0                                              
                                then ValorIsentoICM + @Diferenca                         
                                Else ValorIsentoICM End,                                                                            
          ValorOutrasICM = Case when ValorOutrasICM <> 0 and ValorBaseICM = 0                                                                            
                                then ValorOutrasICM + @Diferenca                        
                                Else ValorOutrasICM End                                                                         
        Where Empresa = @Empresa                                                                            
          and TipoControle = @TipoControle                                                                             
          and CodControle = @CodControle                                                                             
          and NumLancamento = @NumLancamento                                                                            
          and SeqTemporaria = @SeqTemporaria      
      end                                          
    end                                          
    else                                          
    begin                                          
      Select Top 1                         
        @NumLancamento = NumLancamento,                                                                         
        @SeqTemporaria = SeqTemporaria,                                          
        @NumSequenciaComp = NumSequencia                                          
      from TempPrce050Componentes                                          
      where Empresa = @Empresa                                                                            
        and TipoControle = @TipoControle                                                                             
        and CodControle = @CodControle                                      
--MARCELO - CHAMADO 195091                        
        and Case When @FlagTipoDiferenca = 1 and CodProduto <> 8888888 Then 1                        
                 When @FlagTipoDiferenca = 2 and CodProduto = 8888888  Then 1                        
                 Else 0                        
            End = 1                                                             
        and Status <> 'E'                                                                            
        and (ValorBaseICM > 0 or ValorIsentoICM > 0 or ValorOutrasICM > 0)                                                                          
      order by SeqTemporaria, NumLancamento, NumSequencia                                          
                                                                        
      If not (@NumLancamento is null)                                                                        
      begin                                     
--MARCELO - CHAMADO 195091                                                           
        Update TempPrce050Componentes set                                          
          ValorBaseICM = Case when ValorBaseICM <> 0                          
                              then ValorBaseICM + @Diferenca                        
                              Else ValorBaseICM End,                            
          ValorIsentoICM = Case when ValorIsentoICM <> 0 and ValorBaseICM = 0                                                                            
                                then ValorIsentoICM + @Diferenca                        
                                Else ValorIsentoICM End,                    
          ValorOutrasICM = Case when ValorOutrasICM <> 0 and ValorBaseICM = 0                                                                            
                                then ValorOutrasICM + @Diferenca                        
                                Else ValorOutrasICM End                                                                            
        Where Empresa = @Empresa                                                                            
          and TipoControle = @TipoControle                                                     
          and CodControle = @CodControle                                                                             
          and NumLancamento = @NumLancamento                                                                            
          and SeqTemporaria = @SeqTemporaria                                                                            
          and NumSequencia = @NumSequenciaComp                                          
      end                                          
    end                            
  end                          
                      
  set @Contador = @Contador + 1                                                                            
end                                                                
  Select @ValorBaseICM = Case when @ValorBaseICM <> 0      
                              then @ValorBaseICM + (@ValorContabilNota - (@ValorBaseICM + @ValorIsentoICM + @ValorOutrasICM))                                                       
                         Else @ValorBaseICM End                                                                            
                                                                            
                      
                                                                
  If @FlagSelectBaseICM = 1                                                                 
    Select @ValorBaseICM as ValorBaseICM                                                                            
End 
GO






Alter table Empresas disable  trigger all
go

if not exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[Empresas]') and 
                                                 Name Like 'TipoContribuinteIPI' And
                                                 OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin
  alter table Empresas  add TipoContribuinteIPI Smallint
end
go

sp_bindefault 'dbo.Numero', 'Empresas.TipoContribuinteIPI' 
go
   
update Empresas set
TipoContribuinteIPI = 0
where
TipoContribuinteIPI is null
go


alter table Empresas  alter column TipoContribuinteIPI Smallint   not null
go

Alter table Empresas enable  trigger all
go