update Versao
set PatchVersao = 3
where versao = 3
  and subversao = 2
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(5,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(5,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))                                                            
as                                        
                                                                                                      
begin                                                                                                                     
/*********************                                                                                           
   VERSÃO 3.03    
*********************/                                                                                                           
                                                                                  
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)                                                              
--408846 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)                                                                                                                                                             
--408846 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                              
                          
--Renato - 361650                          
declare @TriAliqComplICM Decimal(5,2)                          
declare @AliqComplPIS Decimal(5,2)                          
declare @AliqComplCOFINS Decimal(5,2)                      
--Ronaldo chamado 372149                    
Declare @FlagConsiderarSomentePercRedST int                    
                                     
--389093  
declare @ClaMVABaseEntrada decimal (5,2)  
declare @MVA decimal(18,8)  

--408846
declare @TipoMargemLucro smallint
declare @LisPercDesconto1 decimal(4,2)
declare @LisPercDesconto2 decimal(4,2)
declare @LisPercDesconto3 decimal(4,2)
declare @LisPercDesconto4 decimal(4,2)
declare @LisPercDesconto5 decimal(4,2)
declare @LisPercAcrescimo1 decimal(4,2)
declare @LisPercAcrescimo2 decimal(4,2)
declare @LisPercAcrescimo3 decimal(4,2)
declare @LisValorCustoBruto decimal (13,4)
declare @LisValorCustoLiquido decimal (13,4)
declare @ValorCustoCalc decimal (13,4)
declare @ValorICMCustoCalc decimal (13,2)
declare @TipoMargemLiquida smallint
--408846
declare @ValorPIS decimal(11,2)
declare @ValorCOFINS decimal(11,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 From Empresas                                                                                     
Where Codigo = @Empresa                                                                                            
                                    
select
  @ParTipoReducaoICM=TipoReducaoICM,
  @ParAliqCPMF=AliqCPMF,
  --Eder - Chamado 295853
  @ParTipoRegimeTributario=TipoRegimeTributario,
  @ParAliqICMSimples=AliqICMSimples,
  --408846
  @TipoMargemLucro = TipoMargemLucro
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
if (@TipoMargemLucro is null)   
  Set @TipoMargemLucro = 0

--Renato - 278440                                                                       
Select @FlagDeduzirDespNaoInclNaMargem = FlagDeduzirDespNaoInclNaMargem,
    --408846
  @TipoMargemLiquida = TipoMargemLiquida
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                                                                
       --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                                                                  
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                                                                                                                                                                                    
                                      
                                                                                               
set @ClaFlagSubTributaria = 1                                                            
--408846 Set @ClaAliqPISCOFINS = 0                                                                                 
                                                       
If ltrim(@CodClassFiscal) <> ''                                                                                                                                       
begin                                                     
  Select @ClaFlagSubTributaria = FlagSubTributaria,                                                                                                                       
--408846    @ClaAliqPISCOFINS = AliqPISCOFINS,  
--389093  
         @ClaMVABaseEntrada = MVABaseEntrada  
    From ClassFiscais                                                
    Where Codigo=@CodClassFiscal                                                                
end  
  
If (@ClaFlagSubTributaria is null)                                                                                                                                                
  Set @ClaFlagSubTributaria = 1                                                                                                                   
--408846 If (@ClaAliqPISCOFINS is null)                                                                                
--408846   Set @ClaAliqPISCOFINS = 0                                                                                         
if @ClaMVABaseEntrada is null  
  Set @ClaMVABaseEntrada = 0  
                                   
                                             
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,                                                                                                                                                                
--408846       @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                                                                                                                                                       
/*408846 
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               
  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                                                                
                                                                                                             
                                                                
           
                        
Select 
  @LisPercAcrescimoAdm1=Ilp.PercAcrescimoAdm1,
  @LisPercAcrescimoAdm2=Ilp.PercAcrescimoAdm2,
  @LisPercAcrescimoAdm3=Ilp.PercAcrescimoAdm3,
  --Renato - 290579
  @PercSubTribCusto = Ilp.PercSubTrib,
  @PercICMCusto   = Ilp.PercICMCusto,
  --408846
  @LisPercDesconto1 = Ilp.PercDesconto1,
  @LisPercDesconto2 = Ilp.PercDesconto2,
  @LisPercDesconto3 = Ilp.PercDesconto3,
  @LisPercDesconto4 = Ilp.PercDesconto4,
  @LisPercDesconto5 = Ilp.PercDesconto5,
  @LisPercAcrescimo1 = Ilp.PercAcrescimo1,
  @LisPercAcrescimo2 = Ilp.PercAcrescimo2,
  @LisPercAcrescimo3 = Ilp.PercAcrescimo3,
  @LisValorCustoBruto = Ilp.ValorCustoBruto,
  @LisValorCustoLiquido = Ilp.ValorCustoLiquido
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,                            
       --Ronaldo Chamado 372149                    
       @FlagConsiderarSomentePercRedST = FlagConsiderarSomentePercRedST                                                         
  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                                                                         
--Gabriella - 360511                            
--Se não zerar e na tributação estiver zero o item continuará com o perc. de redução de st                            
Set @RedBaseSubTrib = 0                            
                                                                         
--Eder Chamado 271756                              
If @TriPerReducaoSubTrib <> 0                                                        
  Set @RedBaseSubTrib = @TriPerReducaoSubTrib                                         
    
--389093  
if  (@ClaMVABaseEntrada <> 0) and   
((@FlagEntrada = 1 and @OprTipoMovimento <> 1) or  (@FlagEntrada = 0 and @OprTipoMovimento = 1))  
  Set @MVA = @ClaMVABaseEntrada  
else  
  Set @MVA = @TriMargemLucroSubst  
                                         
                                        
--JALDO/RONALDO - CHAMADO 309941                                                             
--If @FlagEntrada = 0                                                                                                                                                           
If (@FlagEntrada = 0 or (@FlagEntrada = 1 and @OprTipoMovimento = 1))                                                          
   and @MVA <> 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                                                    
                                   
               --Ronaldo Chamado 372149                    
               --@RedBaseSubTrib = Case When @RedBaseSubTrib = 0 Then PerReducaoICM Else @RedBaseSubTrib End                                      
               @RedBaseSubTrib = Case When @RedBaseSubTrib = 0 and @FlagConsiderarSomentePercRedST = 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                                        
                                                                                                                                                                   
--Gabriella - 381216                                                                     
--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 @MVA <> 0                       
   --Ronaldo Chamado 372149                    
   --364660                         
   --and @RedBaseSubTrib <> 999.99                      
   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,                                                                                                                                                              
               --Ronaldo Chamado 372149                    
               --@RedBaseSubTrib= Case When @RedBaseSubTrib = 0 Then PerReducaoICM Else @RedBaseSubTrib End                     
               @RedBaseSubTrib = Case When @RedBaseSubTrib = 0 and @FlagConsiderarSomentePercRedST = 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                     
                    
--Gabriella - 381216                                                                                                                   
--Sobrepoe a aliquota encontrada, se for informada na tributação                                                                        
If @TriAliqInternaSubTrib <> 0                                                                           
  Set @EstAliqInterna = @TriAliqInternaSubTrib                    
                                                                 
If @EstAliqInterna is null                                                           
   Set @EstAliqInterna = 0                                                                                  
                         
--Ronaldo Chamado 372149                    
/*--364660                      
-- quando informada 999.99, tem que zerar para não calcular                      
if @RedBaseSubTrib = 999.99                       
  Set @RedBaseSubTrib = 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))                                                              
 --407202  
if @NumCstIPI = 49 and @FlagEntrada = 0  
  Set @NumCstIPI = 99    
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                                                                
                                                                
                                                                
If @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                                             
                                                                                
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                               
                                            
  
--389093  
-- calcula MVA ajustado, para fazer equalização de alíquota  
if (@ClaMVABaseEntrada <> 0) and   
   ((@FlagEntrada = 1 and @OprTipoMovimento <> 1) or (@FlagEntrada = 0 and @OprTipoMovimento = 1))  
begin  
/*   
  exemplo:  @AliqICM = 4 e @EstAliqInterna = 18 e @ClaMVABaseEntrada = 52.27  
  A = (1 - 0.04) / (1 - 0.18) = 1.170  
  B = 1 + 0.5227 = 1.5227  
  C = A * B --> 1.170 * 1.5227 = 1.7815  
  D = (C - 1) * 100  --> (1.7815 - 1) * 100 = 75.15  
*/  
  
  Set @MVA = (1 - (@AliqICM/100)) / (1 - (@EstAliqInterna/100))  
  Set @MVA = @MVA * (1 + (@ClaMVABaseEntrada/100))  
  Set @MVA = (@MVA - 1) * 100  
  Set @MVA = Round (@MVA,2)  
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 @MVA <> 0                                             
   and @EstFlagConvSub = 1                                                      
   and @OprTipoICM = 0                                                                                                                  
   and @OprTipoSubTributaria > 0                                                                                                                           
begin                                                                                                       
  Set @ValorBaseSubTrib = @ValorTotal + @AcrescimoBaseSubTrib                                                                                                                                          
                                
                                   
  If @OprFlagSubTribIPI = 1                                                                                                                                                                            
     Set @ValorBaseSubTrib = @ValorBaseSubTrib + @VAuxValorIPI                                                                                                                                                               
end                                                                         
                                                                                                                                                                             
--Eder - Chamado 262460                                      
If @OprTipoICM = 0 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1 and @MVA <> 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                                      
                  
--Ronaldo Chamado 383605                
if @OprPerRedICM <> 99.99                
begin                
  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                                   
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 @MVA <> 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)                                                                                                                                                            
  
  --Ronaldo Chamado 383605                 
  --If @RedBaseSubTrib <> 0 and @ValorBaseSubTrib <> 0               
  If @RedBaseSubTrib <> 0 and @ValorBaseSubTrib <> 0 and @OprPerRedICM <> 99.99                                                                                        
     Set @ValorBaseSubTrib = @ValorBaseSubTrib - ((@ValorBaseSubTrib  * @RedBaseSubTrib) / 100)                                                                                    
                                                        
  --set @ValorBaseSubTrib = cast('A' + cast(@ValorBaseSubTrib as varchar(20))   as int)                 
                  
  --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 @MVA <> 999.99                                                                                      
      Set @ValorBaseSubTrib = @ValorBaseSubTrib +  ((@ValorBaseSubTrib * @MVA) / 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 @MVA <> 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)                                                                                                                                               
  
  --Ronaldo Chamado 383605                  
  --If @RedBaseSubTrib <> 0 and @ValorBaseSubTribCarga  <> 0                                                                                                                                                              
  If @RedBaseSubTrib <> 0 and @ValorBaseSubTribCarga  <> 0 and @OprPerRedICM <> 99.99                 
   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 @MVA <> 999.99                                                                                                                                               
          Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga +  ((@ValorBaseSubTribCarga * @MVA) / 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                                                                
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 @MVA <> 0 or @SubMargemLucro <> 0)                                                                                                                                 
begin                                                                      
  If @OprTipoSubTributaria = 2                                                                       
     Set @ValorIsentoICM = @ValorIsentoICM + @ValorBaseICM                                                                                                                         
  If @OprTipoSubTributaria = 3                                                                     
  begin                                                                          
     --Eder - 383214 - Quando ha redução na base, considerar apenas a parte tributada para outras (St)              
     --Set @ValorOutrasICM = @ValorOutrasICM + @ValorBaseICM + @ValorIsentoICM                                      
     if (@ValorIsentoICM <> 0 and @ValorBaseICM <> 0)              
       Set @ValorOutrasICM = @ValorBaseICM              
     else              
     begin            
       Set @ValorOutrasICM = @ValorBaseICM + @ValorIsentoICM              
       Set @ValorIsentoICM = 0         
     end              
  end                                                                                                                                    
  Set @ValorBaseIcm = 0                                                                                                                                                                      
  Set @ValorICM = 0                                                                                                                                                                      
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,
       @ValorPis = ValorPis,
       @ValorCofins = ValorCofins
From dbo.Calcular_PisCofins(@Empresa, @CodProduto, @CodEntidade, @CodTributacao, @CodOperacao,                                                                       
                            @CodClassFiscal, @ValorTotal, @AcrDespesasPisCOFINS,              
                            -- Renato - 297792                                                              
            @FlagEntrada)                                                                                                                                                                                    

--408846
Set @aliqpiscofins = 0
if (@AliqPIS is not null) 
  Set @aliqpiscofins = @aliqpiscofins + @AliqPIS
if (@aliqcofins is not null) 
  Set @aliqpiscofins = @aliqpiscofins + @aliqcofins 

                                                                                                             
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 @MVA <> 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)                                                                             
     --408846 if @ValorBaseICM = @ValorTotal + @AcrescimoBaseICM                                                                  
     if @ValorBaseICM = @ValorTotal 
       Set @FatorRedVenda = @FatorRedVenda - (@AliqICM / 100)                                                                  
     Else                                                        
       Set @FatorRedVenda = @FatorRedVenda - Round(((@ValorICM * 100) / @ValorTotal) / 100,4)                                                                  
                                                                  
  If @ParAliqCPMF > 0                                                                                                                                                                                    
     Set @FatorRedVenda = @FatorRedVenda - (@ParAliqCPMF / 100)                                                 
                                                                        
  IF (@AliqPISCOFINS > 0) 
  begin
     --408846 FatorRedVenda = FatorRedVenda - (AliqPISCOFINS / 100));
     if (@ValorBasePisCofins = @ValorTotal) 
       Set @FatorRedVenda = @FatorRedVenda - (@AliqPISCOFINS / 100)
     else
     if (@ValorTotal > 0) 
       Set @FatorRedVenda = @FatorRedVenda - Round(((@Valorpis + @ValorCofins  * 100) / @ValorTotal ) / 100,4)
  end
                                                                                                                         
                                                                        
  If (@LisPercAcrescimoAdm1 + @LisPercAcrescimoAdm2 + @LisPercAcrescimoAdm3) > 0                                                                                                                 
     Set @FatorRedVenda = @FatorRedVenda - ((@LisPercAcrescimoAdm1 + @LisPercAcrescimoAdm2 + @LisPercAcrescimoAdm3) / 100)                                                               
          
  If (@AcrescimoRedVenda <> 0) and (@ValorTotal > 0)     
  begin    
 --397007      
    if (@AcrescimoRedVenda > @ValorTotal)    
      Set @FatorRedVenda = 0    
    else      
      Set @FatorRedVenda = @FatorRedVenda - Round(((@AcrescimoRedVenda * 100) / @ValorTotal) / 100,4)    
  end    
                                                                    
  --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))
  begin
    --408846    
    -- checagem tipomargemliquida = 0 é para evitar mudança no cálculo da margem de 
    -- clientes que utilizam este tipo de cálculo
    if (@TipoMargemLucro = 0 and @TipoMargemLiquida = 0)
    begin
      Set @ValorCustoCalc = dbo.CalculaCustoLiquido (@Empresa, @LisValorCustoBruto, 
            @LisPercDesconto1, @LisPercDesconto2, @LisPercDesconto3, @LisPercDesconto4, 
            @LisPercDesconto5, @LisPercAcrescimo1, @LisPercAcrescimo2, @LisPercAcrescimo3, 
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
  
      Set @ValorICMCustoCalc = Round((@PercICMCusto / 100.00) * @ValorCustoCalc,2)
      Set @FatorRedCusto = @FatorRedCusto - (@ValorICMCustoCalc / @LisValorCustoLiquido)
    end  
    else
      Set @FatorRedCusto = @FatorRedCusto - (@PercICMCusto / 100)
  end  
                                                                  
end                                                                         
  --Renato - 278440                                                                     
If (@PerRedDespesa <> 0) and (@FlagDeduzirDespNaoInclNaMargem = 1) and (@ParTipoReducaoICM <> 2)                                                                                                                         
begin                                                                                                                          
  Set @FatorRedVenda = @FatorRedVenda - @PerRedDespesa                                                                                    
end                                                                                                            
                                                                

/* 408846 - calculo do pis/cofins movido para mais acima                                                                
--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            
    -- danilo If @EntTipoPessoa in('F','N','C','P')      
    If @EntTipoPessoa in('F','N')      
      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                                                                 
--383214 If (@ValorBaseICM > 0 and @ValorIsentoICM > 0)                            
If ((@ValorBaseICM > 0 or @ValorOutrasICM > 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 @MVA <> 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 @MVA = 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)                                                          
                                                                                                                                                           
       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,                            
               @MVA,                          
               --Renato - 361650                          
               @TriAliqComplICM,                          
               @AliqComplPis,                          
               @AliqComplCofins)                                                             
Return                                                                
                                                                
end   

go