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

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

ALTER FUNCTION [dbo].[Calcular_ICM]                
(@Empresa numeric(2),                                                                                                                                                        
 @CodProduto numeric(7),                                                                                                                                                        
 @CodTributacao  char(5),                                                                                                                                                        
 @CodEntidade char(7),                                                                                                                                                        
 @CodOperacao numeric(5),                                                                                                                                                        
 @ValorTotal  decimal(11,2),                                                                                                                                                        
 @AcrescimoBaseICM decimal(11,2),                                                                                                                                                        
 @AcrescimoBaseSubTrib decimal(11,2),                                                                                                                                                    
 @RedBaseSubTrib decimal(4,2),                                                                                                                                                    
 @AliqIPI decimal(4,2),                                                                                                                                                        
 @CodClassFiscal varchar(15),                                                                                                                                                        
 @FlagEntrada numeric(1),                                                                                                                                                            
 @AcrescimoRedVenda decimal(11,2),                                                                                                                                                        
 @CodListaPreco numeric(7),                                                                                                                                                        
 @AliqICMFixo decimal(4,2),                                                                                                                                  
 @CodSubTributaria integer,                                               
-- Renato - 278440                                                                                         
 --@PerAcrescimoRedCusto decimal(15,8)                                            
 @PerRedDespesa decimal(15,8),                 
 --Gabriella - 333391                
 @AcrescimoBaseIPI decimal(11,2)                
)                                                                                                                                                          
Returns @Campos Table                                                                                                                                                        
      (AliqICM decimal(4,2),                                                                                                                                                        
       ValorBaseICM decimal (11,2),                                                                                                                                                        
       ValorICM decimal (11,2),      
       ValorIsentoICM decimal(11,2),            
       ValorOutrasICM decimal(11,2),                               
       ValorBaseSubTrib decimal(11,2),                                
       PerReducaoICM decimal(5,2),                                  
       PerRedBaseSubTrib decimal(4,2),                                             
       ValorSubTrib decimal (11,2),                                                                        
       ValorBaseSubTribCarga decimal(11,2),                                                                                  
       ValorSubTribCarga decimal(11,2),                                                                                               
       FatorRedCusto decimal (15,8),                                                                                      
       FatorRedVenda decimal (7,4),                                                                                                          
       NumCFOP char(10),                                                                                                          
       AliqPISCOFINS decimal (4,2),                                            
       -- Renato - Chamado 272165                                            
       ValorBasePisCofins decimal (11,2),                                            
       AliqPis decimal (4,2),                                    
       AliqCofins decimal (4,2),                                    
       NumCstICM varchar(3),                                    
       NumCstIPI varchar(2),                                    
       NumCstPisCofins varchar(2),                                    
       NumCsosn varchar(3),                              
       -- Renato - 297792                              
       NatReceitaPisCofins int,                
       -- Renato - 332318                
       NatBaseCalcCredito smallint,                
       --Ronaldo 343696    
       IndNaturezaFrete smallint,    
           
       --Gabriella - 333391                       
       ValorBaseIPI decimal (11,2),                                                                                                                                                                                                                           
       ValorIsentoIPI decimal(11,2),                                                                                                                                                        
       ValorOutrasIPI decimal(11,2),
       
       --Renato - 360358
       AliqICMSST decimal(5,2),
       PercMvaICMSST decimal(5,2)
       )                                
as                                                                 
                                                                          
begin                                                                                         
/*********************                                                                                      
   VERSÃO 3.01                                                                                     
*********************/                                                                                 
                                                                                                            
declare @CodEstadoLeitura char(2)                                                                                                               
declare @AliqICM decimal(4,2)                                                                                                                                    
declare @ValorBaseICM decimal (11,2)                                                                                                                                                        
declare @ValorICM decimal (11,2)                                                                                                                                                        
declare @ValorIsentoICM decimal(11,2)                             
declare @ValorOutrasICM decimal(11,2)                                      
declare @PerReducaoICM decimal(5,2)                
declare @ValorBaseSubTrib decimal(11,2)                                      
declare @ValorSubTrib decimal (11,2)                                                                                                                     
declare @ValorBaseSubTribCarga decimal(11,2)                                                                                                                             
declare @ValorSubTribCarga decimal(11,2)                                                                                                                         
declare @FatorRedCusto decimal (15,8)                                                                                                                        
declare @FatorRedVenda decimal (7,4)                                                                                                                    
declare @NumCFOP char(10)                                                                             
declare @AliqPISCOFINS decimal(4,2)                                  
declare @NumCstICM varchar(3)                                    
declare @NumCstIPI varchar(2)                                    
declare @NumCstPisCofins varchar(2)                                    
declare @NumCsosn varchar(3)                               
--Renato - 297792                              
declare @NatReceitaPisCofins Int                  
--Renato - 332318                                 
declare @NatBaseCalcCredito SmallInt     
--Ronaldo 343696    
Declare @OprIndNaturezaFrete SmallInt                
                                                                                                                                             
declare @AEmpMestre char(7)                                                                                                                                 
declare @VAuxValorIPI decimal(11,2)                                                                                                                                                        
declare @AuxCodTributacaoSubTrib Char(5)                                         
declare @AuxFlagSubTributaria numeric(1)                                                                                                                       
declare @AuxEntidade char(7)                                                                                                                                  
declare @ValorBaseSubTribDestino decimal(11,2)                                                                                                                                                              
                                                                                                                  
declare @CalcBaseSubTrib decimal(11,2)                                                                                           
declare @CalcValorSubTrib decimal (11,2)                                                                                                                                                        
declare @CalcBaseSubTribDestino decimal(11,2)                                                                                        
                                                                                               
                                                             
declare @ParTipoReducaoICM numeric(1)                                                                                                           
declare @ParAliqCPMF decimal(4,2)                                                                                                  
declare @ParTipoRegimeTributario smallint                                    
declare @ParAliqICMSimples decimal(4,2)                                    
                                    
declare @EntTipoPessoa char(1)                                                                                                                                  
declare @CidCodEstado char(2)                                                                             
declare @EstAliqContrib decimal(4,2)                               
declare @EstFlagConvSub numeric(1)                                                                                                              
declare @EstAliqInterna decimal(4,2)                                                                                                      
                                                  
declare @CidEmpCodEstado char(2)                                                                                                                                                
declare @TriAliqICM decimal(4,2)                                                   
declare @TriFlagIsentoProdutor numeric(1)                                                                                                                                              
declare @TriFlagSubTributaria numeric(1)                                                                                                                                                        
declare @TriMargemLucroSubst decimal(5,2)                                                                                                          
--Gabriella - 302581                
--declare @TriPerReducaoICM decimal(4,2)                
declare @TriPerReducaoICM decimal(6,4)                
declare @TriPerRedMargem decimal(4,2)                                                                                         
declare @TriTipoCFOP numeric(2)                                                                                                                              
declare @TriCodTributacaoSubTrib char(5)                                                    
declare @TriTipoValorNaoTributado numeric(1)                                                                                                                                                        
declare @TriPerReducaoSubTrib numeric(6,2)                                            
--Rafael chamado 272635                                            
declare @TriAliqInternaSubTrib numeric(5,2)                                                                                                                          
declare @TriNumCST_ICM smallint                                    
declare @TriNumCST_IPI smallint                                    
declare @TriNumCSOSN smallint                                    
                                    
declare @ClaFlagSubTributaria numeric(1)                                                         
declare @ClaAliqPISCOFINS decimal(4,2)                                                                                                            
declare @GruFlagSubTributaria numeric(1)                                                                                                                                           
                                                                                                                                                    
declare @LisPercAcrescimoAdm1 decimal(4,2)                                                                                                                                                        
declare @LisPercAcrescimoAdm2 decimal(4,2)                                                       
declare @LisPercAcrescimoAdm3 decimal(4,2)                                                                                               
                                                                                                                          
declare @SubAliquotaInterna decimal(5, 2)                                                
declare @SubMargemLucro decimal(5, 2)                                                      
declare @SubPercReducao decimal(5, 2)                                                                                                                                  
declare @SubIndiceReducao decimal(9, 6)                                                                                                                
declare @SubFlagAbaterICM smallint                                                    
declare @SubFlagSomaIPI smallint                                                                                                                            
                   
declare @OprTipoICM numeric(1)                                                                                             
declare @OprTipoIPI numeric(1)                                                    
declare @OprAliqICMFixo decimal(4,2)                                                                   
declare @OprPerRedICM decimal(4,2)                                                                                                           
declare @OprPerRedMargem decimal(4,2)                                                             
declare @OprCFOP1_Normal char(10)                                                                                                   
declare @OprCFOP1_Normal_NCFora char(10)                                                                            
declare @OprCFOP2_Industrializado char(10)                                                                                                                                                        
declare @OprCFOP2_Industrializado_NCFora char(10)                                                                         
declare @OprCFOP3_SubRevenda char(10)                                                                                                                                           
declare @OprCFOP3_SubRevenda_NC char(10)                                                                                                          
declare @OprCFOP4_SubRevendaML char(10)                                                                                                       
declare @OprCFOP4_SubRevendaML_NC char(10)                                                           
declare @OprCFOP5_SubFabricacao char(10)                                                                                                             
declare @OprCFOP5_SubFabricacao_NC char(10)                                                                            
declare @OprCFOP6_SubFabricacaoML char(10)                                                                                                                                                       
declare @OprCFOP6_SubFabricacaoML_NC char(10)                                   
declare @OprCFOP7_Importado char(10)                                                                                                                                                        
declare @OprCFOP_Servico    char(10)                                                                                                                              
declare @OprCFOP_Servico_NCFora char(10)                                                                                         
declare @OprCFOP9_Petroleo varchar(10)                                                                      
declare @OprCFOP9_Petroleo_NC varchar(10)                                                                                                                                 
declare @OprFlagCalcPIS_COFINS numeric(1)                                                                                                                                                        
declare @OprFlagDefaultLancamentoOutras numeric(1)                                              
declare @OprFlagSubTribIPI numeric(5)                                                                                     
declare @OprTipoMovimento smallint                                                                                                                                            
declare @OprTipoSubTributaria smallint                                
--Eder - Chamado 262460                                                    
declare @OprTipoSubTributariaCarga smallint                                                         
--Eder - 303720                                
declare @OprFlagIPISobrePisCofins smallint                 
--Gabriella - 256424                
declare @OprFlagIPISobreBaseICM smallint                                 
declare @ProOrigem smallint                                    
--MARCELO - CHAMADO 192283            
declare @RegiaoDestino varchar(10)                                                                                                                                                        
declare @RegiaoDestinoLeitura varchar(10)                                                                                                                                                    
--Eder - Chamado 243637                                                                   
declare @RegiaoOrigem varchar(10)                                                            
--Eder - Chamado 243557                                                                
declare @EmpId varchar(15)                     
                                                                
--JALDO - CHAMADO 248899                                                        
--JALDO - CHAMADO 243556                                                                    
--declare @TipoConsideraIPICalculoICM int                                                 
                                
--Eder - 303720                                            
declare @AcrDespesasPisCOFINS numeric(11,2)                                
-- Renato - Chamado 272165                                              
declare @ValorBasePisCofins numeric(11,2)                                            
declare @AliqPis numeric(4,2)                                         
declare @AliqCofins numeric(4,2)                                           
-- Renato - 278440                                          
declare @FlagDeduzirDespNaoInclNaMargem SmallInt                                            
-- Renato - 290579                                          
declare @PercSubTribCusto decimal(5,2)                                          
declare @PercICMCusto decimal(5,2)                            
--Ronaldo Chamado 313933                          
declare @RegTribPercIvaSimplicado decimal(5,2)                                                      
--Ronaldo Chamado 317536                
declare @TriFlagPrevalecerAliqIcm SmallInt                
--Gabriella - 333391                     
declare @ValorBaseIPI decimal (11,2)                                                                                                                                                                                                                          
  
    
      
        
          
            
              
                                                                   
declare @ValorIsentoIPI decimal(11,2)                                                                                                                                                       
declare @ValorOutrasIPI decimal(11,2)                
declare @TriTipoValorNaoTributadoIPI numeric(1)                 
-- Renato - 341779                             
declare @OprFlagICMSSobreServicos SmallInt             
                                                                                                                           
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                                    
  From ParamControle                                     
  where Empresa=@Empresa                                    
                                                                          
If (@ParTipoReducaoICM is null)                                                                                                                                                        
   Set @ParTipoReducaoICM = 0                    
If (@ParAliqCPMF is null)                                                          
   Set @ParAliqCPMF = 0                                                
If (@ParTipoRegimeTributario is null)                                    
   Set @ParTipoRegimeTributario = 0                                     
If (@ParAliqICMSImples = 0)                                    
   Set @ParAliqICMSImples = 0                                    
                                    --Renato - 278440                                           
Select @FlagDeduzirDespNaoInclNaMargem = FlagDeduzirDespNaoInclNaMargem                                            
From ConfiguracaoSistema                                                                                                                         
                      
                                                                                                                  
select @CidEmpCodEstado=Cidades.CodEstado,                                                            
       --Eder - Chamado 243637                                                            
       @RegiaoOrigem=Est.RegiaoDestino                                           
  from Entidades                                       
  Left Join Cidades on Cidades.Codigo = Entidades.CodCidade                                                          
  Left Join Estados Est on Est.CodOrigem = Cidades.CodEstado                                                            
                    and Est.CodDestino = Cidades.CodEstado                                                            
 where Entidades.Codigo = @AEmpMestre                    
                                                                                                             
                                                                  
select @EntTipoPessoa=TipoPessoa,                                                                          
       @CidCodEstado=Cidades.CodEstado,                                                   
       @CodEstadoLeitura=Cidades.CodEstado                                    
       --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                                                                                                                                
Set @ClaAliqPISCOFINS = 0                                                     
                                                   
If ltrim(@CodClassFiscal) <> ''                                                                                                           
begin                                                                                                                                    
  Select @ClaFlagSubTributaria = FlagSubTributaria,                                                                                           
         @ClaAliqPISCOFINS = AliqPISCOFINS                                                                                                                                                        
    From ClassFiscais                                                                                                                     
    Where Codigo=@CodClassFiscal                                    
  If (@ClaFlagSubTributaria is null)                                                                                                                    
     Set @ClaFlagSubTributaria = 1                                                                                                                                                        
  If (@ClaAliqPISCOFINS is null)                                                    
     Set @ClaAliqPISCOFINS = 0                                                             
end                                                                                                                             
       
                                                                                          
select @OprTipoICM                      = TipoICM,                                                                                                                                                        
       @OprTipoIPI                      = TipoIPI,                                                                              
       @OprAliqICMFixo                  = AliqICMFixo,                                                                        
       @OprPerRedICM                    = PerRedICM,                                                                                                                                                        
       @OprPerRedMargem                 = PerRedMargem,          
       @OprCFOP1_Normal                 = CFOP1_Normal,                                                                                  
       @OprCFOP1_Normal_NCFora          = CFOP1_Normal_NCFora,                                                                                                                                                        
       @OprCFOP2_Industrializado        = CFOP2_Industrializado,                                                                                                                                                        
       @OprCFOP2_Industrializado_NCFora = CFOP2_Industrializado_NCFora,                                 
       @OprCFOP3_SubRevenda             = CFOP3_SubRevenda,                                                                                                                                                        
       @OprCFOP3_SubRevenda_NC          = CFOP3_SubRevenda_NC,                      
       @OprCFOP4_SubRevendaML           = CFOP4_SubRevendaML,                                                                                                      
       @OprCFOP4_SubRevendaML_NC        = CFOP4_SubRevendaML_NC,                                                                                                                               
       @OprCFOP5_SubFabricacao          = CFOP5_SubFabricacao,                                                                                           
       @OprCFOP5_SubFabricacao_NC       = CFOP5_SubFabricacao_NC,                                     
       @OprCFOP6_SubFabricacaoML        = CFOP6_SubFabricacaoML,                                                                                                                    
       @OprCFOP6_SubFabricacaoML_NC     = CFOP6_SubFabricacaoML_NC,                                                                                                                                              
       @OprCFOP7_Importado              = CFOP7_Importado,                                                                                                    
       @OprCFOP_Servico                 = CFOP_Servico,                                                              
       @OprCFOP_Servico_NCFora          = CFOP_Servico_NCFora,                                                                                                                                    
       @OprFlagCalcPIS_COFINS           = FlagCalcPIS_COFINS,                                                                      
       @OprFlagDefaultLancamentoOutras  = FlagDefaultLancamentoOutras,                                                                                                     
       @OprCFOP9_Petroleo               = CFOP9_Petroleo,                                                  
       @OprCFOP9_Petroleo_NC            = CFOP9_Petroleo_NC,                                                                                                                    
       @OprFlagSubTribIPI               = FlagSubTribIPI,                                      
       @OprTipoMovimento                = TipoMovimento,                                                                                                                                      
       @OprTipoSubTributaria            = TipoSubTributaria,                                                    
       --Eder - Chamado 262460                    
       @OprTipoSubTributariaCarga       = TipoSubTributariaCarga,                                
       --Eder 303720                                
       @OprFlagIPISobrePisCofins        = FlagIPISobrePisCofins,                  
       --Gabriella - 256424                
       @OprFlagIPISobreBaseICM          = FlagIPISobreBaseICM,                   
       -- Renato - 341779                             
       @OprFlagICMSSobreServicos        = FlagICMSSobreServicos,      
       --Ronaldo 343696    
       @OprIndNaturezaFrete             = IndNaturezaFrete    
  From Operacoes                                                                                                                
 where Codigo = @CodOperacao                                                                                             
                                                                                          
                                                                                             
If (@OprTipoICM is null)                                                                                          
   Set @OprTipoICM = 0                                                                                                                             
If (@OprTipoIPI is null)                                                                        
   Set @OprTipoIPI = 0                                                                    
If (@OprAliqICMFixo is null)                                     
   Set @OprAliqICMFixo = 0                                                                                                                                        
If (@OprPerRedICM is null)                                                                                                                          
   Set @OprPerRedICM = 0                                                                                                                                                        
If (@OprPerRedMargem is null)                                                                                                                                                        
   Set @OprPerRedMargem = 0                                                                                                                           
If (@OprFlagCalcPIS_COFINS is null)                                                                                                                                                        
Set @OprFlagCalcPIS_COFINS = 0                                
If @OprFlagCalcPIS_COFINS = 1                                                                                                                                                        
   Set @AliqPISCOFINS = @ClaAliqPISCOFINS                                       
If (@OprFlagDefaultLancamentoOutras is null)                                                                             
   Set @OprFlagDefaultLancamentoOutras = 0                                                                                                                              
If (@OprFlagSubTribIPI is null)                                                                                                                                                        
   Set @OprFlagSubTribIPI = 0                                                          
If (@OprTipoSubTributaria is null)                                                                                                       
   Set @OprTipoSubTributaria = 0                                                        
If (@OprTipoMovimento is null)                                                                                            
   Set @OprTipoMovimento = 0                  
--Eder - Chamado 262460                                                    
If (@OprTipoSubTributariaCarga is null)                                                    
   Set @OprTipoSubTributariaCarga = 0                                 
if (@OprFlagIPISobrePisCofins is null)                                
   Set @OprFlagIPISobrePisCofins = 0                 
--Gabriella - 256424                
if (@OprFlagIPISobreBaseICM is null)                                
   Set @OprFlagIPISobreBaseICM = 0                                                                                                                         
                                                                                                   
Set @GruFlagSubTributaria = 1                           
Select @GruFlagSubTributaria = Gru.FlagSubTributaria,                                    
     @ProOrigem = Pro.Origem                                    
  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                                                                                                                                       
  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    
                              
  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                                             
   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 (@TriTipoValorNaoTributado is null)                                                                                  
begin                                                                                                      
  if (@CodProduto = 8888888)                                                                                                      
    Set @TriTipoValorNaoTributado = 1                                                                                                      
  else                  
    Set @TriTipoValorNaoTributado = 0                                                                                                      
end                   
                
--Gabriella - 333391                
If (@TriTipoValorNaoTributadoIPI is null)                                                                                  
begin                                                                
  if (@CodProduto = 8888888)                                                                                                      
    Set @TriTipoValorNaoTributadoIPI = 1                                                                                                      
  else                  
    Set @TriTipoValorNaoTributadoIPI = 0                                                                                                      
end                         
                                              
--Eder Chamado 271756                                              
If @TriPerReducaoSubTrib <> 0                            
  Set @RedBaseSubTrib = @TriPerReducaoSubTrib             
             
            
--JALDO/RONALDO - CHAMADO 309941                                 
--If @FlagEntrada = 0                                                                                                                                                     
If (@FlagEntrada = 0 or (@FlagEntrada = 1 and @OprTipoMovimento = 1))                              
   and @TriMargemLucroSubst <> 0                                                                                                                                                         
   and Exists(Select Codigo From Tributacoes                                                                                                                                                        
               Where EstadoOrigem=@CodEstadoLeitura                                   
                 and Codigo=@CodTributacao                                                                                 
                 --MARCELO - CHAMADO 192283                                                                                      
--                 and EstadoDestino=@CodEstadoLeitura                                                                                          
                 and RegiaoDestino = @RegiaoDestinoLeitura                                                                          
                 and AliqICM > 0)                                                                                                                                                        
begin                                                                                                        
  Select Top 1 @EstAliqInterna=AliqICM,                                      
               --MARCELO - CHAMADO 214200                                                                            
               --@RedBaseSubTrib=PerReducaoICM                        
               @RedBaseSubTrib = Case When @RedBaseSubTrib = 0 Then PerReducaoICM Else @RedBaseSubTrib End          
  From Tributacoes                                                                     
  Where EstadoOrigem=@CodEstadoLeitura                                                    
     and Codigo=@CodTributacao                                                                                        
     --MARCELO - CHAMADO 192283                                                          
--     and EstadoDestino=@CodEstadoLeitura                                                                                                                                
     and RegiaoDestino = @RegiaoDestinoLeitura         
     --Eder - 320407                
     and AliqICM > 0                
   Order By TipoPessoa                                                                                                  
end                                                                                   
If (@RedBaseSubTrib is null)                                                                                                                                                        
   Set @RedBaseSubTrib = 0                                                                                                                                                        
                                            
--Rafael chamado 272635                                           
--Sobrepoe a aliquota encontrada, se for informada na tributação                                            
If @TriAliqInternaSubTrib <> 0                                               
  Set @EstAliqInterna = @TriAliqInternaSubTrib                                                
          
If @FlagEntrada = 1                                                                                                         
   --Eder - Chamado 184973                                                                 
   and @OprTipoMovimento <> 1                          
   and @TriMargemLucroSubst <> 0                                                                                                                                             
   and Exists(Select Codigo From Tributacoes                                                                                                                                                        
               Where EstadoOrigem=@CidEmpCodEstado                                                                                                            
                 and Codigo=@CodTributacao                                                                   
               --MARCELO - CHAMADO 192283                                                                                      
--               and EstadoDestino=@CidEmpCodEstado                                                                   
               --Eder - Chamado 243637                                                            
               --and RegiaoDestino = @RegiaoDestino                                                            
     and RegiaoDestino = @RegiaoOrigem                                                            
                 and AliqICM > 0)                                                                                                            
begin                                                                                     
  Select Top 1 @EstAliqInterna=AliqICM,                                                                                                                                  
               @RedBaseSubTrib= Case When @RedBaseSubTrib = 0 Then PerReducaoICM Else @RedBaseSubTrib End                                                                                              
  From Tributacoes                                                                                                                                                 
  Where EstadoOrigem=@CidEmpCodEstado            
     and Codigo=@CodTributacao                                                                                                                                                        
     --MARCELO - CHAMADO 192283                                                                                      
--   and EstadoDestino=@CidEmpCodEstado                                                                                                                              
     --Eder - Chamado 243637                                                    
--   and RegiaoDestino = @RegiaoDestino                                                            
     and RegiaoDestino = @RegiaoOrigem                                    
     --Eder - 320407                  
     and AliqICM > 0                
   Order By TipoPessoa                                                                                                                  
end                                                                                                                                                        
If @EstAliqInterna is null                                                                                                                  
   Set @EstAliqInterna = 0                                                      
                                                                                                          
If @CodSubTributaria > 0                                                                                                                                  
begin                                                                                                             
  Select                                                                     
      @SubAliquotaInterna = AliquotaInterna,                                                 
      @SubMargemLucro = MargemLucro,                                                                                                                                  
      @SubPercReducao = PercReducao,                                                                                                                                  
      @SubIndiceReducao = IndiceReducao,                                                                                                                    
      @SubFlagAbaterICM = FlagAbaterICM,                                                                                                   
      @SubFlagSomaIPI = FlagSomaIPI                                                                                                                                  
  From SubstituicaoTributaria                                                              
  Where CodSubTributaria = @CodSubTributaria                                                                               
    and Empresa = @Empresa                                                                                                                                  
end                                                                                                       
                                                                                        
  If @SubAliquotaInterna is null                     
     Set @SubAliquotaInterna = 0                                                                                          
  If @SubMargemLucro is null                                                                 
     Set @SubMargemLucro = 0                                                          
  If @SubPercReducao is null                                                                                                                           
     Set @SubPercReducao = 0                                                                                                                          
  If @SubIndiceReducao is null                                                         
     Set @SubIndiceReducao = 0                                                      
  If @SubFlagAbaterICM is null                 
     Set @SubFlagAbaterICM = 0                                                                          
  If @SubFlagSomaIPI is null                                                                                             
     Set @SubFlagSomaIPI = 0                                                                                                                       
                                                            
--Calculo do CST de ICMS e IPI                                     
Select @NumCstICM = Case when Op.NumCST_ICM in (-1) then @TriNumCST_ICM                                     
                         else Op.NumCST_ICM End,                                    
       @NumCstIPI = Case when Op.NumCST_IPI not in (-1)                
        then Op.NumCST_IPI   --Operação fiscal prevalece sobre demais.                                    
                         when @AliqIPI > 0 and Op.TipoIPI = 0 --Item tributado de ipi sera sempre 00 ou 50 (entrada ou saida tributada)                                    
                         then Case When @FlagEntrada = 1 Then 00 Else 50 End                                    
                         when Cla.NumCST_IPI not in (-1,0) and (@AliqIPI = 0 or Op.TipoIPI <> 0)                                     
                              then Cla.NumCST_IPI -- Class. Fiscal prevalece sobre demais.                                    
                         when @TriNumCST_IPI not in (-1) and (@AliqIPI = 0 or Op.TipoIPI <> 0)                                     
                              then @TriNumCST_IPI    -- Item sem ipi pega da tributação se informado                                                             
                    End,                                    
       @NumCsosn  = Case When @ParTipoRegimeTributario in(1,2) --Calculo de CST para Simples nacional                                    
                       Then Case When Op.NumCSOSN not in(-1,0) then Op.NumCSOSN                                    
                   Else @TriNumCSOSN                                     
                              End                                    
                    End                                    
  From Produtos Pro                                    
  Left Join Operacoes Op on Op.Codigo = @CodOperacao                                    
  Left Join ClassFiscais Cla on Cla.Codigo = @CodClassFiscal                                    
Where Pro.Codigo = @CodProduto                                    
                                    
if @NumCstICM <> -1                                    
  Set @NumCstICM = Cast(@ProOrigem as varchar(1)) + Replicate('0', 2 - Len(@NumCstICM)) + Cast(@NumCstICM as varchar(2))                                    
else                                    
  Set @NumCstICM = null                                    
                                      
--Gabriella - 299680                                  
if @NumCstIPI <> -1 and @FlagEntrada = 1                                     
  Set @NumCstIPI = Replicate('0', 2 - Len(@NumCstIPI)) + Cast(@NumCstIPI as varchar(2))                                   
if @NumCstIPI <> -1 and @FlagEntrada = 0                                     
  Set @NumCstIPI = Replicate('5', 2 - Len(@NumCstIPI)) + Cast(@NumCstIPI as varchar(2))                                  
if @NumCstIPI = -1                                  
  Set @NumCstIPI = null                                     
                                  
if @NumCsosn <> -1 and @ParTipoRegimeTributario in (1,2) --CSOSN para Simples Nacional                                    
  Set @NumCsosn = Replicate('0', 3 - Len(@NumCsosn)) + Cast(@NumCsosn as varchar(3))                                    
else                                    
  Set @NumCsosn = null                                    
                                    
                                    
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                  
                
                
--Gabriella - 333391                                                                                                                                                                                               
Set @ValorBaseIPI = @ValorTotal + @AcrescimoBaseIPI                                                                                                                                                                                          
                                                                                 
If @ValorBaseIPI > 0 and @AliqIPI > 0                                
   Set @VAuxValorIPI = (@ValorBaseIPI * @AliqIPI) / 100                
     
--Somente irá prevalecer o Tipo da Tributação quando a Aliquota de IPI for igual a Zero                 
-- e o Tipo do Ipi da Operação Fiscal for Tributado                   
if @AliqIPI = 0 and @OprTipoIPI = 0                
begin                
 if @TriTipoValorNaoTributadoIPI = 0                
   Set @ValorIsentoIPI = @ValorBaseIPI                  
 if @TriTipoValorNaoTributadoIPI = 1                
   Set @ValorOutrasIPI = @ValorBaseIPI                     
end                
                   
if @OprTipoIPI = 1                
  Set @ValorIsentoIPI = @ValorBaseIPI                 
                  
if @OprTipoIPI = 2                
  Set @ValorOutrasIPI = @ValorBaseIPI                 
                  
If @AliqIPI = 0                                                                                                                                                        
   Set @ValorBaseIPI = 0                   
                  
if @ValorIsentoIPI > 0 or @ValorOutrasIPI > 0                
  Set @ValorBaseIPI = 0                      
        
                                                                                                                              
---Chamado 114964                                                         
--If @OprTipoIPI = 0 or @OprTipoIPI = 3                                                                                                                                                        
--Begin             --Gabriella - 333391                                                         
--  If @ValorTotal > 0 and @AliqIPI > 0                                                                                                                                                        
--     Set @VAuxValorIPI = (@ValorTotal * @AliqIPI) / 100                                                                                 
--End                                                                           
                                                                            
                                                                                                                          
If @TriFlagSubTributaria = 1                                                            
   and @ClaFlagSubTributaria = 1                                                                                                                                                         
and @GruFlagSubTributaria = 1                                                                                                                                                        
   and @TriMargemLucroSubst <> 0                                                                                                  
   and @EstFlagConvSub = 1                                                                        
   and @OprTipoICM = 0                                                                                      
   and @OprTipoSubTributaria > 0                                                                                               
begin                                                                           
  Set @ValorBaseSubTrib = @ValorTotal + @AcrescimoBaseSubTrib                                                                                                              
    
      --teste Ronaldo  
  --set @ValorBaseSubTrib = cast('A  ' + cast(@AcrescimoBaseSubTrib  as varchar(20))   as int)   
       
  If @OprFlagSubTribIPI = 1                                                                                                                                                         
     Set @ValorBaseSubTrib = @ValorBaseSubTrib + @VAuxValorIPI                                                                                                                                                   
end                                             
                                                                                                                                                 
--Eder - Chamado 262460                                                    
If @OprTipoICM = 0 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1 and @TriMargemLucroSubst <> 0 and                                                    
   @OprTipoSubTributariaCarga = 0                                                     
begin                                                    
  Set @ValorBaseSubTribCarga = @ValorTotal + @AcrescimoBaseSubTrib                                                 
  If @OprFlagSubTribIPI = 1                                                                                                           
     Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga + @VAuxValorIPI                                                                                                                               
end                                                                                                                                                        
                                                                                                                    
                                              
If @CodSubTributaria > 0                                                                                                                              
   and @TriFlagSubTributaria = 1                                                                                                                                                         
   and @ClaFlagSubTributaria = 1                                              
   and @GruFlagSubTributaria = 1                                                               
   and @SubMargemLucro <> 0                                                                                                                                   
   and @EstFlagConvSub = 1                                                                                  
begin                                                                                   
  Set @CalcBaseSubTrib = @ValorTotal + @AcrescimoBaseSubTrib                                                           
  If @SubFlagSomaIPI = 1                                                                                                                        
     Set @CalcBaseSubTrib = @CalcBaseSubTrib + @VAuxValorIPI                                                                                                                            
end                                                                                                                                                     
                                                                                                               
Set @ValorBaseICM = @ValorTotal + @AcrescimoBaseICM                                                                                                                   
Set @ValorBaseSubTribDestino = @ValorTotal + @AcrescimoBaseICM                                                                       
Set @CalcBaseSubTribDestino = @ValorTotal + @AcrescimoBaseICM                                                                                                  
                                                                                           
                                                                    
--JALDO - CHAMADO 243556                                                                    
--O Tipo "2" não estão sendo verificando porque nunca será usado                                                                    
--If @EntTipoPessoa <> 'J'                                                  
--begin                                                                                    
-- Set @ValorBaseIcm = @ValorBaseIcm + @VAuxValorIPI                                                      
--  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino + @VAuxValorIPI                                                              
--  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino + @VAuxValorIPI                                                                                    
--end                                 
                                                            
--JALDO - CHAMADO 248899                                                        
--if ((@TipoConsideraIPICalculoICM = 0) and (@EntTipoPessoa <> 'J')) or                                                                     
--   (@TipoConsideraIPICalculoICM = 1)                                                                     
--begin                                                                    
--Set @ValorBaseIcm = @ValorBaseIcm + @VAuxValorIPI                                                                                                           
--  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino + @VAuxValorIPI                                                                             
--  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino + @VAuxValorIPI                                                 
--end                                                                    
                
--Gabriella - 256424                                                  
--if (@EntTipoPessoa not in ('J','I'))                                   
if (@EntTipoPessoa not in ('J','I')) or (@OprFlagIPISobreBaseICM = 1)                                   
begin                                                                    
  Set @ValorBaseIcm = @ValorBaseIcm + @VAuxValorIPI                                                               
  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino + @VAuxValorIPI                                                    
  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino + @VAuxValorIPI                                                                                      
end                                                   
                                                                                                      
Set @ValorIsentoICM = @ValorBaseIcm          
                                                                              
If @TriPerReducaoICM <> 0 and @ValorBaseIcm <> 0                             
begin                                                                                        
  Set @ValorBaseIcm = @ValorBaseIcm - ((@ValorBaseIcm * @TriPerReducaoICM) / 100)                                                                                                                       
  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino - ((@ValorBaseSubTribDestino * @TriPerReducaoICM) / 100)                                                                                                                                            
  
    
      
        
          
            
  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino - ((@CalcBaseSubTribDestino * @TriPerReducaoICM) / 100)                                                                  
end                                                                  
                                                                                                                    
                                                                      
If @ValorBaseIcm > 0 and @OprPerRedICM > 0                                                                                                                                                        
begin                                  
  Set @ValorBaseIcm = @ValorBaseIcm - ((@ValorBaseIcm * @OprPerRedICM) / 100)                                                                                                                                                        
  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino - ((@ValorBaseSubTribDestino * @OprPerRedICM) / 100)                                                                                                  
  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino - ((@CalcBaseSubTribDestino * @OprPerRedICM) / 100)                                                           
end                                       
                                                                                 
If @ValorBaseIcm > 0 and @AliqICM > 0                                
   Set @ValorICM = (@ValorBaseIcm * @AliqICM) / 100                             
                          
--Ronaldo Chamado 313933                          
select @RegTribPercIvaSimplicado = R.PercIvaSimplificado from regimetributario R                          
left join entidades E on R.Codigo = E.codRegimeTributario                          
where R.empresa = @Empresa and                          
      E.codigo  = @CodEntidade                          
                          
                                                                                                                                                       
If @TriFlagSubTributaria = 1 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                          
   and @TriMargemLucroSubst <> 0 and @EstFlagConvSub = 1 and @OprTipoICM = 0 and @OprTipoSubTributaria > 0                                                                                                    
Begin                                                                                                              
--Eder - Chamado 243557  -- Teste específico para o Cliente pois ainda não sabemos se outros clientes aceitarão a modificação                                                                
--Eder - Chamado 243557                                              
  if (@EmpId = 'ALPHA PNEUS') and @TriPerReducaoICM > 0                                          
     If @OprFlagSubTribIPI = 1                                                                                                                                                     
       Set @ValorBaseSubTrib = @ValorBaseSubTrib - (((@ValorBaseSubTrib - @VAuxValorIPI) * @TriPerReducaoICM) / 100)                                                                                                                     
     Else                                                          
       Set @ValorBaseSubTrib = @ValorBaseSubTrib - ((@ValorBaseSubTrib  * @TriPerReducaoICM) / 100)                                                                                                                                                        
                                                                
  If @RedBaseSubTrib <> 0 and @ValorBaseSubTrib <> 0                                                                                                                                  
     Set @ValorBaseSubTrib = @ValorBaseSubTrib - ((@ValorBaseSubTrib  * @RedBaseSubTrib) / 100)                                                                                                                                  
                            
  --Ronaldo Chamado 313933                          
  --If @TriMargemLucroSubst <> 999.99                                                                             
  --   Set @ValorBaseSubTrib = @ValorBaseSubTrib +  ((@ValorBaseSubTrib * @TriMargemLucroSubst) / 100)                                                                                                                                       
  --If @ValorBaseSubTrib > 0 and @EstAliqInterna > 0                                                                                                                                                        
  --   Set @ValorSubTrib = (@ValorBaseSubTrib * @EstAliqInterna) / 100                                                                                                                                       
  -- Set @ValorSubTrib = @ValorSubTrib - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                             
  if @RegTribPercIvaSimplicado > 0 and @EstAliqInterna > 0                          
     begin                          
        set @ValorSubTrib     = round(@ValorbaseSubTrib * @RegTribPercIvaSimplicado / 100,2)                          
        set @ValorBaseSubTrib = round((@ValorIcm + @ValorSubTrib) / @EstAliqInterna * 100,2)                          
     end                          
  else                          
     begin                           
 If @TriMargemLucroSubst <> 999.99                                                                                                       
         Set @ValorBaseSubTrib = @ValorBaseSubTrib +  ((@ValorBaseSubTrib * @TriMargemLucroSubst) / 100)                                                                                                                                       
        If @ValorBaseSubTrib > 0 and @EstAliqInterna > 0                                                                                                                                                        
           Set @ValorSubTrib = (@ValorBaseSubTrib * @EstAliqInterna) / 100                                                                                                 
        Set @ValorSubTrib = @ValorSubTrib - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                             
    end                           
End                                                                                               
                                                            
                                                                                      
--Eder - Chamado 262460                                                    
If @OprTipoICM = 0 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1 and @TriMargemLucroSubst <> 0 and                                                    
   @OprTipoSubTributariaCarga = 0                            begin                                  
--Eder - Chamado 243557 -- Teste específico para o Cliente pois ainda não sabemos se outros clientes aceitarão a modificação            
  if (@EmpId = 'ALPHA PNEUS') and @TriPerReducaoICM > 0                                                            
     If @OprFlagSubTribIPI = 1                                                                    
       Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga - (((@ValorBaseSubTribCarga - @VAuxValorIPI) * @TriPerReducaoICM) / 100)                                                                                                                           
  
    
      
        
          
            
              
                
                
                  
     Else                                                          
     Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga - ((@ValorBaseSubTribCarga  * @TriPerReducaoICM) / 100)                                                                                                                                               
  
    
      
        
         
                                                                            
  If @RedBaseSubTrib <> 0 and @ValorBaseSubTribCarga  <> 0                                                                                                                                  
     Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga - ((@ValorBaseSubTribCarga  * @RedBaseSubTrib) / 100)                                                                                                                                                 
 
     
      
        
          
            
              
                          
  --Ronaldo Chamado 313933                            
  --If @TriMargemLucroSubst <> 999.99                                                                                                                   
  --   Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga +  ((@ValorBaseSubTribCarga * @TriMargemLucroSubst) / 100)                                                                                                                                 
  --If @ValorBaseSubTribCarga > 0 and @EstAliqInterna > 0                                                                                                           
  --   Set @ValorSubTribCarga = (@ValorBaseSubTribCarga * @EstAliqInterna) / 100             
  --Set @ValorSubTribCarga = @ValorSubTribCarga - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                          
  if @RegTribPercIvaSimplicado > 0 and @EstAliqInterna > 0                          
     begin                          
        set @ValorSubTribCarga     = round(@ValorBaseSubTribCarga * @RegTribPercIvaSimplicado / 100,2)                          
        set @ValorBaseSubTribCarga = round((@ValorIcm + @ValorSubTribCarga) / @EstAliqInterna * 100,2)                          
     end                          
  else                          
     begin                           
       If @TriMargemLucroSubst <> 999.99                                                                                                                   
          Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga +  ((@ValorBaseSubTribCarga * @TriMargemLucroSubst) / 100)                                                                                                                                 
       If @ValorBaseSubTribCarga > 0 and @EstAliqInterna > 0                                                                                                           
          Set @ValorSubTribCarga = (@ValorBaseSubTribCarga * @EstAliqInterna) / 100                                                                                                                 
          Set @ValorSubTribCarga = @ValorSubTribCarga - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                                                                 
    end                           
end                                                                                                                                                        
                                        
                                                         
                                                                                                  
--Calculo da substituição tributaria pela tabela SubstituicaoTributaria                                         
If @CodSubTributaria > 0                                                                       
   and @TriFlagSubTributaria = 1 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                                                                                        
   and @SubMargemLucro <> 0 and @EstFlagConvSub = 1                                                                                                         
begin                                                                                                                              
  If @SubPercReducao <> 0                                                                                             
     Set @CalcBaseSubTrib  = @CalcBaseSubTrib - ((@CalcBaseSubTrib * @SubPercReducao) / 100)                                                                 
  If @SubMargemLucro <> 999.99                                                                                                                                
     Set @CalcBaseSubTrib = @CalcBaseSubTrib +  ((@CalcBaseSubTrib * @SubMargemLucro) / 100)                                                                                                                   
  If @SubIndiceReducao <> 0                                                                         
     Set @CalcBaseSubTrib = @CalcBaseSubTrib * @SubIndiceReducao                                                                                                                          
                                                                                                                          
  --Quando não tem aliquota interna na sub.trib, pega a do estado de origem                                                                         
  If @CalcBaseSubTrib > 0 and                                                                                      
     (@SubAliquotaInterna > 0 or @EstAliqInterna > 0)                                                           
  begin                                                  
    if @SubAliquotaInterna > 0                                                                                                                        
     Set @CalcValorSubTrib = (@CalcBaseSubTrib * @SubAliquotaInterna) / 100                                                                                                                  
    Else                                                                     
       Set @CalcValorSubTrib = (@CalcBaseSubTrib * @EstAliqInterna) / 100                                                                                          
  end                                                                                                                            
                                                                                                                          
  --Opção que permite abater o icms da operação na substituição tributaria                                                                                                                          
  If @SubFlagAbaterICM = 1                                                                                                                        
     Set @CalcValorSubTrib = @CalcValorSubTrib - Round((@CalcBaseSubTribDestino * @AliqICM) / 100,2)                                                                                                                    
                                                                        
  If @OprTipoICM = 0 and @OprTipoSubTributaria > 0                                                           
  begin                                                       
    Set @ValorBaseSubTrib = @CalcBaseSubTrib                                                               
    Set @ValorSubTrib = @CalcValorSubTrib                                                                                                                               
  end                                                                                                                              
                                
  --Eder - Chamado 262460                              
  If @OprTipoSubTributariaCarga = 0                                                    
  begin                                                                              
    Set @ValorBaseSubTribCarga = @CalcBaseSubTrib                                                                                       
    Set @ValorSubTribCarga = @CalcValorSubTrib                                                                                               
  end                                                    
end                                                                                                     
                                           
--MARCELO - CHAMADO 195051                                                                                
if (@ValorBaseSubTrib <> 0) or (@ValorSubTrib <> 0)                                                                                 
begin                                                                                
  set @ValorBaseSubTribCarga = 0                                                                                
  set @ValorSubTribCarga = 0                                                         
end                                                                                
                                    
                                    
--Eder - Chamado 295277                                    
--O cálculo do ICMS para Simples deve ser feito após o calculo da ST pois a ST considera aliquotas internas normais de ICMS                                    
If @ParTipoRegimeTributario in (1,2) and  --- Simples Nacional ou com excesso de sublimite receita bruta                                    
   (@FlagEntrada = 0 or (@FlagEntrada = 1 and @OprTipoMovimento = 1))  --Saida ou entrada por devolução                                    
begin                 
  If @TriAliqICM <= 0                                     
    Set @AliqICM = 0                                    
  else                                    
    Set @AliqICM = @ParAliqICMSimples                                    
  If (@OprTipoICM = 1) or                                                                                                                                                        
     (@OprTipoICM = 2 and @FlagEntrada = 0) or                                                                                                                                          
     (@OprTipoICM = 2 and @FlagEntrada = 1 and @OprFlagDefaultLancamentoOutras = 0)                                                                                                      
     Set @AliqICM = 0                                                                     
Set @ValorICM = (@ValorBaseIcm * @AliqICM) / 100                                    
end                                    
                                                                                             
If @AliqICM = 0                                                                                                                                                        
   Set @ValorBaseIcm = 0                                                                                             
Else                                                                                                                      
   Set @ValorIsentoICM = @ValorIsentoICM - @ValorBaseIcm                                                                                          
                                                                                                                         
                                                                   
If @OprTipoSubTributaria in(2,3) and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                   
   and @OprTipoICM = 0 and @EstFlagConvSub = 1                                           
   and (@TriFlagSubTributaria = 1 or @TriMargemLucroSubst <> 0 or @SubMargemLucro <> 0)                                                                                                     
begin                                                                                                                                          
  If @OprTipoSubTributaria = 2                                           
     Set @ValorIsentoICM = @ValorIsentoICM + @ValorBaseICM                                                                                             
  If @OprTipoSubTributaria = 3                                         
  begin                                              
     Set @ValorOutrasICM = @ValorOutrasICM + @ValorBaseICM + @ValorIsentoICM                                                                                              
Set @ValorIsentoICM = 0                                                                              
  end                                                                                                        
  Set @ValorBaseIcm = 0                                                                                                                                          
  Set @ValorICM = 0                                                                                                                                          
end                                                                                                                                                        
                                                                                                                                                                                                                                                          
                                                                                 
Set @FatorRedCusto = 1                                                                     
If (@ParTipoReducaoICM = 1) and (Ltrim(@CodEntidade) <> '')                                                     
   and (@FlagEntrada = 0 or (@FlagEntrada=1 and @OprTipoMovimento = 1))                                                                                                                                            
--Eder Chamado 170325                                                                                              
   and (@CodProduto <> 8888888)                                                                                              
begin                                                                                                                    
--   If @OprTipoSubTributaria not in(2,3)   --não calcula quando a sub. tributaria é isenta/outras                                              
--   Isaac - Chamado 191232                                                                                
   If not (@OprTipoSubTributaria in(2,3) and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                             
      and @OprTipoICM = 0 and @EstFlagConvSub = 1                                                                                                                                       
      and (@TriFlagSubTributaria = 1 or @TriMargemLucroSubst <> 0 or @SubMargemLucro <> 0))                                                                               
      Set @FatorRedCusto = (100 - @TriAliqICM) / (100 - @AliqICM)                      
                                                                                                                                                
   If @OprPerRedMargem <> 0                                                                           
     Set @FatorRedCusto = @FatorRedCusto - (@OprPerRedMargem / 100)                                                                                                                          
   --Eder - Chamado 270320                                                
   --If (@TriPerRedMargem <> 0)                                                
   --  Set @FatorRedCusto = @FatorRedCusto - (@TriPerRedMargem / 100)                                                                  
end                                                                                                                           
--Eder - Chamado 270320                                                
if (@TriPerRedMargem <> 0) and (@CodProduto <> 8888888)                                                 
   Set @FatorRedCusto = @FatorRedCusto - (@TriPerRedMargem / 100)                            
                                                       
-- 298865                                                                           
--Eder - Chamado 195755                                                                                  
--Somente vai calcular DespesasNaoInclusas no fator quando for saída ou devolução                                                                                        
-- Renato - 278440                            
If (@FlagEntrada = 0) or                                                                                                                                       
   (@FlagEntrada = 1 and @OprTipoMovimento = 1)                                                                                                                                        
begin                                                                                  
  --Eder - Chamado 170325                                                                         
  --Adiciona o acrescimo de custo, que já deve vir passado como percentual                                                                                              
                                                 
  If (@PerRedDespesa <> 0) and (@ParTipoReducaoICM in (0,1)) and (@FlagDeduzirDespNaoInclNaMargem = 0)                                                                                             
  begin                                                                                              
    Set @FatorRedCusto = @FatorRedCusto + @PerRedDespesa                                                  
  end                                                    
end                                                                                   
                                                                                                                                          
                                                                    
--Calcula o fator de venda para as saídas e entradas por devolução.                                                                                                                                                        
--Retira o Valor do ICM, a Aliquota de CPMF, a Aliquota de PIS/COFINS e soma o acrescimo de vend                                                                                                                      
Set @FatorRedVenda = 1                                                                                                                         
If ((@FlagEntrada = 0) or                                                                                           
   (@FlagEntrada = 1 and @OprTipoMovimento = 1))                                          
   -- Renato - 278440                 
   and (@ParTipoReducaoICM = 2) -- 2 - Deduzir Impostos da Venda                                                            
begin                                                                                
                                            
  --Eder -Chamado 292832 - Evitar arredondamento desnecessario na aliquota do ICM (Vide Chamado)                                      
  If (@AliqICM > 0) and (@ValorTotal > 0)                                                 
     if @ValorBaseICM = @ValorTotal + @AcrescimoBaseICM                                      
       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                                                                                                                                                        
   Set @FatorRedVenda = @FatorRedVenda - (@AliqPISCOFINS / 100)                                          
                                                                                             
                                            
  If (@LisPercAcrescimoAdm1 + @LisPercAcrescimoAdm2 + @LisPercAcrescimoAdm3) > 0                                                                                     
     Set @FatorRedVenda = @FatorRedVenda - ((@LisPercAcrescimoAdm1 + @LisPercAcrescimoAdm2 + @LisPercAcrescimoAdm3) / 100)                                                                                                                                    
                                                                                
  If (@AcrescimoRedVenda <> 0) and (@ValorTotal > 0)                                                                                                                                                        
    Set @FatorRedVenda = @FatorRedVenda - Round(((@AcrescimoRedVenda * 100) / @ValorTotal) / 100,4)                                                                            
                                        
  --Renato - 290579                                          
  -- Se for uma venda fora do estado com ICMS, e os Percentuais de ICMS e SubTrib da Compra estiverem informados                                          
  -- na Lista de Preco vai abater o ICMS da compra no Custo.                                          
  If ((@CidEmpCodEstado <> @CidCodEstado) and (@ValorICM > 0) and (@PercICMCusto > 0) and (@PercSubTribCusto > 0))                                          
    Set @FatorRedCusto = @FatorRedCusto - (@PercICMCusto / 100)                                           
                                        
end                                             
  --Renato - 278440                                          
If (@PerRedDespesa <> 0) and (@FlagDeduzirDespNaoInclNaMargem = 1) and (@ParTipoReducaoICM <> 2)                                                                                             
begin                                                                                              
  Set @FatorRedVenda = @FatorRedVenda - @PerRedDespesa                                                        
end                                                                                
                                    
                                    
--Eder - 303720                                            
Set @AcrDespesasPisCOFINS = @AcrescimoBaseICM                                
if (@OprFlagIPISobrePisCofins = 1)  --Calcula IPI sobre Pis e COFINS                                 
  Set @AcrDespesasPisCOFINS = @AcrDespesasPisCOFINS + @VAuxValorIPI                                
                                    
-- Renato - Chamado 272165                                             
Select @ValorBasePisCofins = ValorBasePisCofins,                                             
       @AliqPis = AliqPis,                                    
       @AliqCofins = AliqCofins,                                    
       @NumCstPisCofins = NumCstPisCofins,                               
       -- Renato - 297792                              
       @NatReceitaPisCofins = NatReceitaPisCofins,                  
       -- Renato - 332318                
       @NatBaseCalcCredito = NatBaseCalcCredito                             
                                          
From dbo.Calcular_PisCofins(@Empresa, @CodProduto, @CodEntidade, @CodTributacao, @CodOperacao,                                           
                            @CodClassFiscal, @ValorTotal, @AcrDespesasPisCOFINS,                              
                            -- Renato - 297792                                  
              @FlagEntrada)                                                                                                                                                        
                                                                         
if @CodProduto = 8888888                                                        
begin                                                                                                                                                        
  If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                                                                               
     and Ltrim(@OprCFOP_Servico_NCFora) <> ''                                                                                      
     Set @NumCFOP = @OprCFOP_Servico_NCFora                                                                                                                    
  Else                                                                                                               
     Set @NumCFOP = @OprCFOP_Servico                                                                                                                                
end                                                                                            
else                                                                                                                                    
  Begin                                                                                                  
      If @TriTipoCFOP = 1 or @TriTipoCFOP = 0                                                            
         begin                                                                                                 
           If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                                                                                       
 
              and Ltrim(@OprCFOP1_Normal_NCFora) <> ''                                                                                 
       Set @NumCFOP = @OprCFOP1_Normal_NCFora                                                                                                                                                        
           Else                                                                                                                                
              Set @NumCFOP = @OprCFOP1_Normal                                                   
         end                                                                                
      If @TriTipoCFOP = 2                                                                                                                                                        
         begin                                                                                                                         
           If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                                                                                      
  
              and Ltrim(@OprCFOP2_Industrializado_NCFora) <> ''                                                                                                                 
 Set @NumCFOP = @OprCFOP2_Industrializado_NCFora                                                            
                                                  
           Else                                                                                         
         Set @NumCFOP = @OprCFOP2_Industrializado                                      
         end                                                                                                                            
      If @TriTipoCFOP = 3                                                            
         begin                                                                                                                                              
           -- JALDO - CHAMADO 184880                                                                                          
           -- If @EntTipoPessoa in('F','N')                                                                                                     
           If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                            
              Set @NumCFOP = @OprCFOP3_SubRevenda_NC                                                                            
           Else                                                                                                 
             Set @NumCFOP = @OprCFOP3_SubRevenda                                                                                                                                                        
         end                                                   
      If @TriTipoCFOP = 4                                                                                                                                                        
         begin                               
           -- JALDO - CHAMADO 184880                                               
           --If @EntTipoPessoa in('F','N')                                                                                           
           If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                     
              Set @NumCFOP = @OprCFOP4_SubRevendaML_NC                                                                                                                                                        
           Else                                                                      
              Set @NumCFOP = @OprCFOP4_SubRevendaML                                                                                                                    
         end                                                                                                
      If @TriTipoCFOP = 5                                                                                                                
         begin               
           If @EntTipoPessoa in('F','N')                              
             Set @NumCFOP = @OprCFOP5_SubFabricacao_NC                                                                
           Else                                                                                                                                                        
              Set @NumCFOP = @OprCFOP5_SubFabricacao                                        
         end                                                                                                                         
      If @TriTipoCFOP = 6                                                                                             
         begin                                                                                                
           If @EntTipoPessoa in('F','N')                                                              
              Set @NumCFOP = @OprCFOP6_SubFabricacaoML_NC                                                                                         
           Else                                   
              Set @NumCFOP = @OprCFOP6_SubFabricacaoML                                                                                            
         end                                                                   
      If @TriTipoCFOP = 7                                                                                                                             
         begin                                                                                                                                          
           Set @NumCFOP = @OprCFOP7_Importado                                                                                                                               
         end                                                                                                                          
      If @TriTipoCFOP = 9                         
         begin                                                                                 
           If @EntTipoPessoa in('F','N','C','P')                                                                                                                             
           Set @NumCFOP = @OprCFOP9_Petroleo_NC                                                                                                                                                        
   Else                                                                                                                                                        
              Set @NumCFOP = @OprCFOP9_Petroleo                                                                                                             
         end end                                                                         
                                                                                                           
If Substring(@NumCFOP,1,1) in ('1','2','3') and @CidCodEstado <> @CidEmpCodEstado                                                                                                                    
   If @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado = 'EX'                                                                                                      
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'3')                                                                                                    
   Else                                                                          
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'2')                                                                                                                                                           
If Substring(@NumCFOP,1,1) in ('5','6','7') and @CidCodEstado <> @CidEmpCodEstado                                                                                                                                                         
 If @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado = 'EX'                                                                                                                       
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'7')                                                                 
   Else                                                                                     
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'6')                                                  
                                                                              
--MARCELO - CHAMADO 209798                                                         
/*                                                                              
CFOP 5.405 não existe o seu correlado 6.405 para vendas fora do estado,                                                                               
devendo ser utilizado em seu lugar o CFOP 6.404, conforme reunião defina                              
com Eder                                                    
*/                                                                            
--Rafael chamado 224824                                                     
  --6.405  -> 6.404                                                                        
  --6405  --> 6404                                                                        
                                                                        
--if (Replace(@NumCFOP,'.','') = '6405')                                      
  --set @NumCFOP = '6404'                                                                         
                                                                        
if (@NumCFOP  = '6.405')                                                                              
  set @NumCFOP = '6.404'                                                                              
                                                                         
if (@NumCFOP  = '6405')                                                                         
  set @NumCFOP = '6404'                                                                      
                                                                                                
If @NumCFOP is null                                                                                                                                          
   Set @NumCFOP = ''               
                                                                                                                                                         
If @AliqICM is null                                                                             
   Set @AliqICM=0               
                                                                                                                                                          
if @CodProduto = 8888888          
Begin                                                                                                          
  -- Renato - 341779               
  if (@OprFlagICMSSobreServicos = 0) or (@OprTipoIcm in (1,2))              
  begin              
    set @AliqICM = 0                                                                                                                                          
    set @ValorBaseIcm = 0                                                       
    set @ValorICM = 0                                                        
    set @ValorIsentoICM = 0                                                                                              
    set @ValorOutrasICM = 0                         
                                                       
    if (@OprFlagICMSSobreServicos = 0)              
    begin                
      -- Mantendo compatibilidade com versões antigas, ou seja, se o usuario não marcar o FlagICMSSobreServicos               
   -- o sistema não muda a forma de gerar os impostos dos serviços.                                                 
      if (@TriTipoValorNaoTributado = 0)                                                  
        set @ValorIsentoICM = @ValorTotal + @AcrescimoBaseICM                                                                                                  
      else                                                                                        
        set @ValorOutrasICM = @ValorTotal + @AcrescimoBaseICM                
    end              
    else              
    begin              
      if (@OprTipoIcm = 1)                                                  
        set @ValorIsentoICM = @ValorTotal + @AcrescimoBaseICM                                     
      else                                                                                        
        set @ValorOutrasICM = @ValorTotal + @AcrescimoBaseICM                
    end              
                                                                                                                  
  end              
  else if ((@OprFlagICMSSobreServicos = 1) and (@OprTipoIcm = 0) and ((@AliqICM = 0) or (@ValorBaseIcm = 0)) )              
  begin              
    if (@TriTipoValorNaoTributado = 0)               
      set @ValorIsentoICM = @ValorTotal + @AcrescimoBaseICM                                                                                                  
    else                                                                                        
      set @ValorOutrasICM = @ValorTotal + @AcrescimoBaseICM               
  end              
                  
  set @ValorBaseSubTrib = 0                                                                                                                                         
  set @ValorSubTrib = 0                                                                                                       
  set @ValorBaseSubTribCarga = 0                                                                                                               
  set @ValorSubTribCarga = 0                                                                                                                                          
  set @RedBaseSubTrib = 0                                    
--Eder - Chamado  170325                                                                                              
--  set @FatorRedCusto = 1                                                                                              
  set @FatorRedVenda = 1                                                                                                                                          
  set @AliqPISCOFINS = 0                
                                                                                                                             
end                                            
                                    
 
--Eder - 297029                                      
If (@ValorBaseICM > 0 and @ValorIsentoICM > 0)  
begin  
  --Renato - 361064 
  if (@TriPerReducaoICM = 0) and (@OprPerRedICM <> 0)  
    Set @PerReducaoICM = @OprPerRedICM
  else if (@TriPerReducaoICM <> 0) and (@OprPerRedICM = 0)  
    Set @PerReducaoICM = @TriPerReducaoICM 
  else
    Set @PerReducaoICM = Round(@ValorIsentoICM / (@ValorBaseICM + @ValorIsentoICM) * 100,2)                                                         
end 
else                                      
  Set @PerReducaoICM = 0    

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

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

GO

--Gabriella - 361171
ALTER procedure [dbo].[AtualizarCupomFiscal]          
(          
  @Empresa smallint,           
  @TipoControle smallint,           
  @CodControle integer,          
  @NumeroCupom varchar(10),          
  @NumeroSerieECF varchar(20)          
)          
AS          
declare @DataEmissao datetime          
declare @CodDuplicata varchar(15)          
declare @NovoCodigo varchar(15)          
declare @Parcela smallint          
declare @ContParcela smallint          
declare @FlagGravacao smallint          
declare @ExisteTemp smallint          
declare @Existe smallint   
declare @LcPeriodo varchar(10)  
declare @LcNumLote numeric(3)  
declare @LcNumLancamento numeric(9)  
--EDER RAMOS Chamado 302201  
declare @EhNotaServico varchar(20)  
--JALDO - CHAMADO 330290
declare @EmpId varchar(15)
  
--EDER RAMOS Chamado 302201  
set @EhNotaServico = 'managernfse'  
              
     
begin          
   
  --JALDO - CHAMADO 330290
  Select Top 1 @EmpId = Id From Empresas 
  Where Codigo = @Empresa
  

  set @DataEmissao = Cast(Convert(varchar(10), GetDate(), 111) as DateTime)           
  set @NumeroCupom = LTrim(RTrim(@NumeroCupom))          
  set @NumeroSerieECF = LTRim(RTrim(@NumeroSerieECF))          
            
  Update NotasFiscais set          
  --EDER RAMOS Chamado 302201  
    NumCupomCF = (case when @NumeroSerieECF = @EhNotaServico  
      then 0  
      else @NumeroCupom end),          
    -- EDER RAMOS Chamado 307902        
    NumDocumento = (case when @NumeroSerieECF = @EhNotaServico  
      then @NumeroCupom   
      else(Case StatusImpNota       
        when 1 then @NumeroCupom          
        when -2 then @NumeroCupom          
        else NumDocumento end)  
      end),          
    DataEmissaoCF = @DataEmissao,           
    StatusTransacao = 1,          
    NumEquipamentoCF = (case when @NumeroSerieECF = @EhNotaServico  
       then ''  
      else @NumeroSerieECF end),          
    StatusImpCupom = 1          
  Where Empresa = @Empresa           
    and TipoControle = @TipoControle          
    and CodControle = @CodControle    
  
  --Gabriella - 295935  
  Select @LcPeriodo = Periodo,   
         @LcNumLote = NumLote,  
         @LcNumLancamento = NumLancamento  
  from NotasFiscais  
  where Empresa = @Empresa  
   and TipoControle = @TipoControle  
   and CodControle = @CodControle  
  
  Update LancamentosContabeis  
  set NumDocumento = @NumeroCupom  
  where Empresa = @Empresa  
   and Periodo = @LcPeriodo  
   and NumLote = @LcNumLote  
   and NumLancamento = @LcNumLancamento;      
    
  Declare CursorDuplicata Cursor Local Fast_Forward For           
    Select CodDuplicata           
    from Duplicatas          
    where Empresa = @Empresa           
      and TipoControle = @TipoControle           
      and CodControle = @CodControle  
    --Gabriella - 361171
    Union All   
    Select CodDuplicata           
    from MovDuplicata         
    where Empresa = @Empresa           
      and TipoControle = @TipoControle           
      and CodControle = @CodControle
      and TipoMovimento = 0            
      and exists (Select Nome from Empresas
                   where id = 'MGF')
    
       
  Open CursorDuplicata   
                    
                      
  Fetch Next From CursorDuplicata Into @CodDuplicata          
          
  set @Parcela = 0          
                      
  While @@Fetch_Status = 0                        
  begin               
    set @Parcela = @Parcela + 1          
    set @ContParcela = 0    
    
    
    --360235
   /*
    --JALDO - CHAMADO 330290   
    ----EDER RAMOS Chamado 302201         
    set @NovoCodigo = cast((case when @NumeroSerieECF = @EhNotaServico then  
       ''  
  
       --JALDO - CHAMADO 330290 
      -- else 'CF' end) as varchar) +  Replicate('0', 6 - Len(@NumeroCupom)) + @NumeroCupom + '/' + cast(@Parcela as varchar(2))         
      
      
       else case when @EmpId = 'SELEGATO' then 
         '' 
       else 'CF' end end) as varchar) +  Replicate('0', 6 - Len(@NumeroCupom)) + @NumeroCupom + '/' + cast(@Parcela as varchar(2))         

    */
    
    
    if (@NumeroSerieECF <> @EhNotaServico)
      set @NovoCodigo = 'CF' +  Replicate('0', 6 - Len(@NumeroCupom)) + @NumeroCupom + '/' + cast(@Parcela as varchar(2))   
    else 
      set @NovoCodigo = Replicate('0', 6 - Len(@NumeroCupom)) + @NumeroCupom + '/' + cast(@Parcela as varchar(2))
      
      
      
    set @FlagGravacao = 0          
      
          
    While (@FlagGravacao = 0) and (@ContParcela < 99)          
    begin       
      --MARCELO - CHAMADO 191733     
      if Exists(select CodDuplicata from Duplicatas          
                Where Empresa = @Empresa          
                  and TipoDuplicata = @TipoControle          
                  and CodDuplicata = @NovoCodigo) or  
         Exists(Select CodDuplicata from MovDuplicata          
                where Empresa= @Empresa          
                  and TipoMovimento = 0          
                  and TipoDuplicata = @TipoControle          
                  and CodDuplicata = @NovoCodigo)  
      begin  
        set @ContParcela = @ContParcela + 1    
        
        if @NumeroSerieECF = @EhNotaServico 
          set @NovoCodigo = Left(@NovoCodigo,8) + Replicate('0', 2 - Len(@ContParcela)) + Cast(@ContParcela as varchar)  
        else      
          set @NovoCodigo = Left(@NovoCodigo, 10) + Replicate('0', 2 - Len(@ContParcela)) + Cast(@ContParcela as varchar)  
        

      end          
      else          
      begin          
        set @FlagGravacao = 1            
      end   
     
    end    
         
    Update Duplicatas Set          
      CodDuplicata = @NovoCodigo,          
      ValorRecebido = 0,          
      ValorJuros = 0,          
      ValorDesconto = 0,          
      ValorDespesa = 0,    
        ----EDER RAMOS Chamado 302201  
   NumDocumento = (case when @NumeroSerieECF = @EhNotaServico  
    then 'NF' + Replicate('0', 6 - Len(@NumeroCupom)) + @NumeroCupom    
    else NumDocumento end),        
      ValorAdicional = 0,          
      StatusTransacao = 1      
    Where Empresa = @Empresa          
      and TipoDuplicata = @TipoControle          
      and CodDuplicata = @CodDuplicata    
      ----EDER RAMOS Chamado 302201        
      and (Select  
   (case when @NumeroSerieECF = @EhNotaServico  
     then -2  
     else StatusImpNota end)  
     from NotasFiscais          
           Where Empresa = @Empresa          
             and TipoControle = @TipoControle          
             and CodControle = @CodControle) = -2          
  
          
    Update MovDuplicata Set          
      CodDuplicata = @NovoCodigo,           
      StatusTransacao = 1          
    Where EmpresaDuplicata = @Empresa           
      and TipoDuplicata = @TipoControle          
      and CodDuplicata = @CodDuplicata  
      ----EDER RAMOS Chamado 302201        
      and (Select   
    (case when @NumeroSerieECF = @EhNotaServico  
     then -2  
     else StatusImpNota end)  
    from NotasFiscais          
            Where Empresa = @Empresa          
             and TipoControle = @TipoControle          
             and CodControle = @CodControle) = -2          
      
     
    Update MovDespesa Set          
      CodDuplicata = @NovoCodigo,           
      StatusTransacao = 1          
    Where Empresa = @Empresa          
      and TipoDuplicata = @TipoControle          
      and CodDuplicata = @CodDuplicata     
      --EDER RAMOS Chamado 302201       
      and (Select  
    (case when @NumeroSerieECF = @EhNotaServico  
     then -2  
     else StatusImpNota end)   
     from NotasFiscais          
           Where Empresa = @Empresa          
             and TipoControle = @TipoControle          
             and CodControle = @CodControle) = -2   
          
    Update MovCaixa Set          
      Observacao = Replace(Observacao, @CodDuplicata, @NovoCodigo),          
      StatusTransacao = 1          
    Where Empresa = @Empresa          
      And TipoMovimento = 3          
      And NumSequencia in (Select MD.NumSequencia From MovDuplicata MD          
                           Where MD.EmpresaDuplicata = @Empresa          
                             And MD.TipoDuplicata = @TipoControle          
                             And MD.CodDuplicata = @NovoCodigo)  
      --EDER RAMOS Chamado 302201          
      And (Select   
    (case when @NumeroSerieECF = @EhNotaServico  
     then -2  
     else StatusImpNota end)   
     From NotasFiscais          
           Where Empresa = @Empresa          
             and TipoControle = @TipoControle          
             and CodControle = @CodControle) = -2         
      
      
    Fetch Next From CursorDuplicata Into @CodDuplicata          
  
  end          
          
  Close CursorDuplicata   
  
  Deallocate CursorDuplicata                        
          
  Update NotasFiscais Set          
    StatusImpCupom = 1,          
    StatusTransacao = 1,          
    StatusImpNota = case when StatusImpNota = -2 then 1 else 0 end           
  Where Empresa = @Empresa          
    and TipoControle = @TipoControle          
    and CodControle = @CodControle    
      
       
end  

GO

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

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

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

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

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

ALTER FUNCTION [dbo].[Calcular_ICM]                
(@Empresa numeric(2),                                                                                                                                                        
 @CodProduto numeric(7),                                                                                                                                                        
 @CodTributacao  char(5),                                                                                                                                                        
 @CodEntidade char(7),                                                                                                                                                        
 @CodOperacao numeric(5),                                                                                                                                                        
 @ValorTotal  decimal(11,2),                                                                                                                                                        
 @AcrescimoBaseICM decimal(11,2),                                                                                                                                                        
 @AcrescimoBaseSubTrib decimal(11,2),                                                                                                                                                    
 @RedBaseSubTrib decimal(4,2),                                                                                                                                                    
 @AliqIPI decimal(4,2),                                                                                                                                                        
 @CodClassFiscal varchar(15),                                                                                                                                                        
 @FlagEntrada numeric(1),                                                                                                                                                            
 @AcrescimoRedVenda decimal(11,2),                                                                                                                                                        
 @CodListaPreco numeric(7),                                                                                                                                                        
 @AliqICMFixo decimal(4,2),                                                                                                                                  
 @CodSubTributaria integer,                                               
 -- Renato - 278440                                                                                         
 --@PerAcrescimoRedCusto decimal(15,8)                                            
 @PerRedDespesa decimal(15,8),                 
 --Gabriella - 333391                
 @AcrescimoBaseIPI decimal(11,2)                
)                                                                                                                                                          
Returns @Campos Table                                                                                                                                                        
      (AliqICM decimal(4,2),                                                                                                                                                        
       ValorBaseICM decimal (11,2),                                                                                                                                                        
       ValorICM decimal (11,2),      
       ValorIsentoICM decimal(11,2),            
       ValorOutrasICM decimal(11,2),                               
       ValorBaseSubTrib decimal(11,2),                                
       PerReducaoICM decimal(5,2),                                  
       PerRedBaseSubTrib decimal(4,2),                                             
       ValorSubTrib decimal (11,2),                                                                        
       ValorBaseSubTribCarga decimal(11,2),                                                                                  
       ValorSubTribCarga decimal(11,2),                                                                                               
       FatorRedCusto decimal (15,8),                                                                                      
       FatorRedVenda decimal (7,4),                                                                                                          
       NumCFOP char(10),                                                                                                          
       AliqPISCOFINS decimal (4,2),                                            
       -- Renato - Chamado 272165                                            
       ValorBasePisCofins decimal (11,2),                                            
       AliqPis decimal (4,2),                                    
       AliqCofins decimal (4,2),                                    
       NumCstICM varchar(3),                                    
       NumCstIPI varchar(2),                                    
       NumCstPisCofins varchar(2),                                    
       NumCsosn varchar(3),                              
       -- Renato - 297792                              
       NatReceitaPisCofins int,                
       -- Renato - 332318                
       NatBaseCalcCredito smallint,                
       --Ronaldo 343696    
       IndNaturezaFrete smallint,    
           
       --Gabriella - 333391                       
       ValorBaseIPI decimal (11,2),                                                                                                                                                                                                                           
       ValorIsentoIPI decimal(11,2),                                                                                                                                                        
       ValorOutrasIPI decimal(11,2),
       
       --Renato - 360358
       AliqICMSST decimal(5,2),
       PercMvaICMSST decimal(5,2)
       )                                
as                                                                 
                                                                          
begin                                                                                         
/*********************                                                                                      
   VERSÃO 3.01                                                                                     
*********************/                                                                                 
                                                                                                            
declare @CodEstadoLeitura char(2)                                                                                                               
declare @AliqICM decimal(4,2)                                                                                                                                    
declare @ValorBaseICM decimal (11,2)                                                                                                                                                        
declare @ValorICM decimal (11,2)                                                                                                                                                        
declare @ValorIsentoICM decimal(11,2)                             
declare @ValorOutrasICM decimal(11,2)                                      
declare @PerReducaoICM decimal(5,2)                
declare @ValorBaseSubTrib decimal(11,2)                                      
declare @ValorSubTrib decimal (11,2)                                                                                                                     
declare @ValorBaseSubTribCarga decimal(11,2)                                                                                                                             
declare @ValorSubTribCarga decimal(11,2)                                                                                                                         
declare @FatorRedCusto decimal (15,8)                                                                                                                        
declare @FatorRedVenda decimal (7,4)                                                                                                                    
declare @NumCFOP char(10)                                                                             
declare @AliqPISCOFINS decimal(4,2)                                  
declare @NumCstICM varchar(3)                                    
declare @NumCstIPI varchar(2)                                    
declare @NumCstPisCofins varchar(2)                                    
declare @NumCsosn varchar(3)                               
--Renato - 297792                              
declare @NatReceitaPisCofins Int                  
--Renato - 332318                                 
declare @NatBaseCalcCredito SmallInt     
--Ronaldo 343696    
Declare @OprIndNaturezaFrete SmallInt                
                                                                                                                                             
declare @AEmpMestre char(7)                                                                                                                                 
declare @VAuxValorIPI decimal(11,2)                                                                                                                                                        
declare @AuxCodTributacaoSubTrib Char(5)                                         
declare @AuxFlagSubTributaria numeric(1)                                                                                                                       
declare @AuxEntidade char(7)                                                                                                                                  
declare @ValorBaseSubTribDestino decimal(11,2)                                                                                                                                                              
                                                                                                                  
declare @CalcBaseSubTrib decimal(11,2)                                                                                           
declare @CalcValorSubTrib decimal (11,2)                                                                                                                                                        
declare @CalcBaseSubTribDestino decimal(11,2)                                                                                        
                                                                                               
                                                             
declare @ParTipoReducaoICM numeric(1)                                                                                                           
declare @ParAliqCPMF decimal(4,2)                                                                                                  
declare @ParTipoRegimeTributario smallint                                    
declare @ParAliqICMSimples decimal(4,2)                                    
                                    
declare @EntTipoPessoa char(1)                                                                                                                                  
declare @CidCodEstado char(2)                                                                             
declare @EstAliqContrib decimal(4,2)                               
declare @EstFlagConvSub numeric(1)                                                                                                              
declare @EstAliqInterna decimal(4,2)                                                                                                      
                                                  
declare @CidEmpCodEstado char(2)                                                                                                                                                
declare @TriAliqICM decimal(4,2)                                                   
declare @TriFlagIsentoProdutor numeric(1)                                                                                                                                              
declare @TriFlagSubTributaria numeric(1)                                                                                                                                                        
declare @TriMargemLucroSubst decimal(5,2)                                                                                                          
--Gabriella - 302581                
--declare @TriPerReducaoICM decimal(4,2)                
declare @TriPerReducaoICM decimal(6,4)                
declare @TriPerRedMargem decimal(4,2)                                                                                         
declare @TriTipoCFOP numeric(2)                                                                                                                              
declare @TriCodTributacaoSubTrib char(5)                                                    
declare @TriTipoValorNaoTributado numeric(1)                                                                                                                                                        
declare @TriPerReducaoSubTrib numeric(6,2)                                            
--Rafael chamado 272635                                            
declare @TriAliqInternaSubTrib numeric(5,2)                                                                                                                          
declare @TriNumCST_ICM smallint                                    
declare @TriNumCST_IPI smallint                                    
declare @TriNumCSOSN smallint                                    
                                    
declare @ClaFlagSubTributaria numeric(1)                                                         
declare @ClaAliqPISCOFINS decimal(4,2)                                                                                                            
declare @GruFlagSubTributaria numeric(1)                                                                                                                                           
                                                                                                                                                    
declare @LisPercAcrescimoAdm1 decimal(4,2)                                                                                                                                                        
declare @LisPercAcrescimoAdm2 decimal(4,2)                                                       
declare @LisPercAcrescimoAdm3 decimal(4,2)                                                                                               
                                                                                                                          
declare @SubAliquotaInterna decimal(5, 2)                                                
declare @SubMargemLucro decimal(5, 2)                                                      
declare @SubPercReducao decimal(5, 2)                                                                                                                                  
declare @SubIndiceReducao decimal(9, 6)                                                                                                                
declare @SubFlagAbaterICM smallint                                                    
declare @SubFlagSomaIPI smallint                                                                                                                            
                   
declare @OprTipoICM numeric(1)                                                                                             
declare @OprTipoIPI numeric(1)                                                    
declare @OprAliqICMFixo decimal(4,2)                                                                   
declare @OprPerRedICM decimal(4,2)                                                                                                           
declare @OprPerRedMargem decimal(4,2)                                                             
declare @OprCFOP1_Normal char(10)                                                                                                   
declare @OprCFOP1_Normal_NCFora char(10)                                                                            
declare @OprCFOP2_Industrializado char(10)                                                                                                                                                        
declare @OprCFOP2_Industrializado_NCFora char(10)                                                                         
declare @OprCFOP3_SubRevenda char(10)                                                                                                                                           
declare @OprCFOP3_SubRevenda_NC char(10)                                                                                                          
declare @OprCFOP4_SubRevendaML char(10)                                                                                                       
declare @OprCFOP4_SubRevendaML_NC char(10)                                                           
declare @OprCFOP5_SubFabricacao char(10)                                                                                                             
declare @OprCFOP5_SubFabricacao_NC char(10)                                                                            
declare @OprCFOP6_SubFabricacaoML char(10)                                                                                                                                                       
declare @OprCFOP6_SubFabricacaoML_NC char(10)                                   
declare @OprCFOP7_Importado char(10)                                                                                                                                                        
declare @OprCFOP_Servico    char(10)                                                                                                                              
declare @OprCFOP_Servico_NCFora char(10)                                                                                         
declare @OprCFOP9_Petroleo varchar(10)                                                                      
declare @OprCFOP9_Petroleo_NC varchar(10)                                                                                                                                 
declare @OprFlagCalcPIS_COFINS numeric(1)                                                                                                                                                        
declare @OprFlagDefaultLancamentoOutras numeric(1)                                              
declare @OprFlagSubTribIPI numeric(5)                                                                                     
declare @OprTipoMovimento smallint                                                                                                                                            
declare @OprTipoSubTributaria smallint                                
--Eder - Chamado 262460                                                    
declare @OprTipoSubTributariaCarga smallint                                                         
--Eder - 303720                                
declare @OprFlagIPISobrePisCofins smallint                 
--Gabriella - 256424                
declare @OprFlagIPISobreBaseICM smallint                                 
declare @ProOrigem smallint                                    
--MARCELO - CHAMADO 192283            
declare @RegiaoDestino varchar(10)                                                                                                                                                        
declare @RegiaoDestinoLeitura varchar(10)                                                                                                                                                    
--Eder - Chamado 243637                                                                   
declare @RegiaoOrigem varchar(10)                                                            
--Eder - Chamado 243557                                                                
declare @EmpId varchar(15)                     
                                                                
--JALDO - CHAMADO 248899                                                        
--JALDO - CHAMADO 243556                                                                    
--declare @TipoConsideraIPICalculoICM int                                                 
                                
--Eder - 303720                                            
declare @AcrDespesasPisCOFINS numeric(11,2)                                
-- Renato - Chamado 272165                                              
declare @ValorBasePisCofins numeric(11,2)                                            
declare @AliqPis numeric(4,2)                                         
declare @AliqCofins numeric(4,2)                                           
-- Renato - 278440                                          
declare @FlagDeduzirDespNaoInclNaMargem SmallInt                                            
-- Renato - 290579                                          
declare @PercSubTribCusto decimal(5,2)                                          
declare @PercICMCusto decimal(5,2)                            
--Ronaldo Chamado 313933                          
declare @RegTribPercIvaSimplicado decimal(5,2)                                                      
--Ronaldo Chamado 317536                
declare @TriFlagPrevalecerAliqIcm SmallInt                
--Gabriella - 333391                     
declare @ValorBaseIPI decimal (11,2)                                                                                                                                                                                                                          
  
    
      
        
          
            
              
                                                                   
declare @ValorIsentoIPI decimal(11,2)                                                                                                                                                       
declare @ValorOutrasIPI decimal(11,2)                
declare @TriTipoValorNaoTributadoIPI numeric(1)                 
-- Renato - 341779                             
declare @OprFlagICMSSobreServicos SmallInt             
                                                                                                                           
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                                    
  From ParamControle                                     
  where Empresa=@Empresa                                    
                                                                          
If (@ParTipoReducaoICM is null)                                                                                                                                                        
   Set @ParTipoReducaoICM = 0                    
If (@ParAliqCPMF is null)                                                          
   Set @ParAliqCPMF = 0                                                
If (@ParTipoRegimeTributario is null)                                    
   Set @ParTipoRegimeTributario = 0                                     
If (@ParAliqICMSImples = 0)                                    
   Set @ParAliqICMSImples = 0                                    
                                    --Renato - 278440                                           
Select @FlagDeduzirDespNaoInclNaMargem = FlagDeduzirDespNaoInclNaMargem                                            
From ConfiguracaoSistema                                                                                                                         
                      
                                                                                                                  
select @CidEmpCodEstado=Cidades.CodEstado,                                                            
       --Eder - Chamado 243637                                                            
       @RegiaoOrigem=Est.RegiaoDestino                                           
  from Entidades                                       
  Left Join Cidades on Cidades.Codigo = Entidades.CodCidade                                                          
  Left Join Estados Est on Est.CodOrigem = Cidades.CodEstado                                                            
                    and Est.CodDestino = Cidades.CodEstado                                                            
 where Entidades.Codigo = @AEmpMestre                    
                                                                                                             
                                                                  
select @EntTipoPessoa=TipoPessoa,                                                                          
       @CidCodEstado=Cidades.CodEstado,                                                   
       @CodEstadoLeitura=Cidades.CodEstado                                    
       --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                                                                                                                                
Set @ClaAliqPISCOFINS = 0                                                     
                                                   
If ltrim(@CodClassFiscal) <> ''                                                                                                           
begin                                                                                                                                    
  Select @ClaFlagSubTributaria = FlagSubTributaria,                                                                                           
         @ClaAliqPISCOFINS = AliqPISCOFINS                                                                                                                                                        
    From ClassFiscais                                                                                                                     
    Where Codigo=@CodClassFiscal                                    
  If (@ClaFlagSubTributaria is null)                                                                                                                    
     Set @ClaFlagSubTributaria = 1                                                                                                                                                        
  If (@ClaAliqPISCOFINS is null)                                                    
     Set @ClaAliqPISCOFINS = 0                                                             
end                                                                                                                             
       
                                                                                          
select @OprTipoICM                      = TipoICM,                                                                                                                                                        
       @OprTipoIPI                      = TipoIPI,                                                                              
       @OprAliqICMFixo                  = AliqICMFixo,                                                                        
       @OprPerRedICM                    = PerRedICM,                                                                                                                                                        
       @OprPerRedMargem                 = PerRedMargem,          
       @OprCFOP1_Normal                 = CFOP1_Normal,                                                                                  
       @OprCFOP1_Normal_NCFora          = CFOP1_Normal_NCFora,                                                                                                                                                        
       @OprCFOP2_Industrializado        = CFOP2_Industrializado,                                                                                                                                                        
       @OprCFOP2_Industrializado_NCFora = CFOP2_Industrializado_NCFora,                                 
       @OprCFOP3_SubRevenda             = CFOP3_SubRevenda,                                                                                                                                                        
       @OprCFOP3_SubRevenda_NC          = CFOP3_SubRevenda_NC,                      
       @OprCFOP4_SubRevendaML           = CFOP4_SubRevendaML,                                                                                                      
       @OprCFOP4_SubRevendaML_NC        = CFOP4_SubRevendaML_NC,                                                                                                                               
       @OprCFOP5_SubFabricacao          = CFOP5_SubFabricacao,                                                                                           
       @OprCFOP5_SubFabricacao_NC       = CFOP5_SubFabricacao_NC,                                     
       @OprCFOP6_SubFabricacaoML        = CFOP6_SubFabricacaoML,                                                                                                                    
       @OprCFOP6_SubFabricacaoML_NC     = CFOP6_SubFabricacaoML_NC,                                                                                                                                              
       @OprCFOP7_Importado              = CFOP7_Importado,                                                                                                    
       @OprCFOP_Servico                 = CFOP_Servico,                                                              
       @OprCFOP_Servico_NCFora          = CFOP_Servico_NCFora,                                                                                                                                    
       @OprFlagCalcPIS_COFINS           = FlagCalcPIS_COFINS,                                                                      
       @OprFlagDefaultLancamentoOutras  = FlagDefaultLancamentoOutras,                                                                                                     
       @OprCFOP9_Petroleo               = CFOP9_Petroleo,                                                  
       @OprCFOP9_Petroleo_NC            = CFOP9_Petroleo_NC,                                                                                                                    
       @OprFlagSubTribIPI               = FlagSubTribIPI,                                      
       @OprTipoMovimento                = TipoMovimento,                                                                                                                                      
       @OprTipoSubTributaria            = TipoSubTributaria,                                                    
       --Eder - Chamado 262460                    
       @OprTipoSubTributariaCarga       = TipoSubTributariaCarga,                                
       --Eder 303720                                
       @OprFlagIPISobrePisCofins        = FlagIPISobrePisCofins,                  
       --Gabriella - 256424                
       @OprFlagIPISobreBaseICM          = FlagIPISobreBaseICM,                   
       -- Renato - 341779                             
       @OprFlagICMSSobreServicos        = FlagICMSSobreServicos,      
       --Ronaldo 343696    
       @OprIndNaturezaFrete             = IndNaturezaFrete    
  From Operacoes                                                                                                                
 where Codigo = @CodOperacao                                                                                             
                                                                                          
                                                                                             
If (@OprTipoICM is null)                                                                                          
   Set @OprTipoICM = 0                                                                                                                             
If (@OprTipoIPI is null)                                                                        
   Set @OprTipoIPI = 0                                                                    
If (@OprAliqICMFixo is null)                                     
   Set @OprAliqICMFixo = 0                                                                                                                                        
If (@OprPerRedICM is null)                                                                                                                          
   Set @OprPerRedICM = 0                                                                                                                                                        
If (@OprPerRedMargem is null)                                                                                                                                                        
   Set @OprPerRedMargem = 0                                                                                                                           
If (@OprFlagCalcPIS_COFINS is null)                                                                                                                                                        
Set @OprFlagCalcPIS_COFINS = 0                                
If @OprFlagCalcPIS_COFINS = 1                                                                                                                                                        
   Set @AliqPISCOFINS = @ClaAliqPISCOFINS                                       
If (@OprFlagDefaultLancamentoOutras is null)                                                                             
   Set @OprFlagDefaultLancamentoOutras = 0                                                                                                                              
If (@OprFlagSubTribIPI is null)                                                                                                                                                        
   Set @OprFlagSubTribIPI = 0                                                          
If (@OprTipoSubTributaria is null)                                                                                                       
   Set @OprTipoSubTributaria = 0                                                        
If (@OprTipoMovimento is null)                                                                                            
   Set @OprTipoMovimento = 0                  
--Eder - Chamado 262460                                                    
If (@OprTipoSubTributariaCarga is null)                                                    
   Set @OprTipoSubTributariaCarga = 0                                 
if (@OprFlagIPISobrePisCofins is null)                                
   Set @OprFlagIPISobrePisCofins = 0                 
--Gabriella - 256424                
if (@OprFlagIPISobreBaseICM is null)                                
   Set @OprFlagIPISobreBaseICM = 0                                                                                                                         
                                                                                                   
Set @GruFlagSubTributaria = 1                           
Select @GruFlagSubTributaria = Gru.FlagSubTributaria,                                    
     @ProOrigem = Pro.Origem                                    
  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                                                                                                                                       
  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    
                              
  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                                             
   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 (@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             
             
            
--JALDO/RONALDO - CHAMADO 309941                                 
--If @FlagEntrada = 0                                                                                                                                                     
If (@FlagEntrada = 0 or (@FlagEntrada = 1 and @OprTipoMovimento = 1))                              
   and @TriMargemLucroSubst <> 0                                                                                                                                                         
   and Exists(Select Codigo From Tributacoes                                                                                                                                                        
               Where EstadoOrigem=@CodEstadoLeitura                                   
                 and Codigo=@CodTributacao                                                                                 
                 --MARCELO - CHAMADO 192283                                                                                      
--                 and EstadoDestino=@CodEstadoLeitura                                                                                          
                 and RegiaoDestino = @RegiaoDestinoLeitura                                                                          
                 and AliqICM > 0)                                                                                                                                                        
begin                                                                                                        
  Select Top 1 @EstAliqInterna=AliqICM,                                      
               --MARCELO - CHAMADO 214200                                                                            
               --@RedBaseSubTrib=PerReducaoICM                        
               @RedBaseSubTrib = Case When @RedBaseSubTrib = 0 Then PerReducaoICM Else @RedBaseSubTrib End          
  From Tributacoes                                                                     
  Where EstadoOrigem=@CodEstadoLeitura                                                    
     and Codigo=@CodTributacao                                                                                        
     --MARCELO - CHAMADO 192283                                                          
--     and EstadoDestino=@CodEstadoLeitura                                                                                                                                
     and RegiaoDestino = @RegiaoDestinoLeitura         
     --Eder - 320407                
     and AliqICM > 0                
   Order By TipoPessoa                                                                                                  
end                                                                                   
If (@RedBaseSubTrib is null)                                                                                                                                                        
   Set @RedBaseSubTrib = 0                                                                                                                                                        
                                            
--Rafael chamado 272635                                           
--Sobrepoe a aliquota encontrada, se for informada na tributação                                            
If @TriAliqInternaSubTrib <> 0                                               
  Set @EstAliqInterna = @TriAliqInternaSubTrib                                                
          
If @FlagEntrada = 1                                                                                                         
   --Eder - Chamado 184973                                                                 
   and @OprTipoMovimento <> 1                          
   and @TriMargemLucroSubst <> 0                                                                                                                                             
   and Exists(Select Codigo From Tributacoes                                                                                                                                                        
               Where EstadoOrigem=@CidEmpCodEstado                                                                                                            
                 and Codigo=@CodTributacao                                                                   
               --MARCELO - CHAMADO 192283                                                                                      
--               and EstadoDestino=@CidEmpCodEstado                                                                   
               --Eder - Chamado 243637                                                            
               --and RegiaoDestino = @RegiaoDestino                                                            
     and RegiaoDestino = @RegiaoOrigem                                                            
                 and AliqICM > 0)                                                                                                            
begin                                                                                     
  Select Top 1 @EstAliqInterna=AliqICM,                                                                                                                                  
               @RedBaseSubTrib= Case When @RedBaseSubTrib = 0 Then PerReducaoICM Else @RedBaseSubTrib End                                                                                              
  From Tributacoes                                                                                                                                                 
  Where EstadoOrigem=@CidEmpCodEstado            
     and Codigo=@CodTributacao                                                                                                                                                        
     --MARCELO - CHAMADO 192283                                                                                      
--   and EstadoDestino=@CidEmpCodEstado                                                                                                                              
     --Eder - Chamado 243637                                                    
--   and RegiaoDestino = @RegiaoDestino                                                            
     and RegiaoDestino = @RegiaoOrigem                                    
     --Eder - 320407                  
     and AliqICM > 0                
   Order By TipoPessoa                                                                                                                  
end                                                                                                                                                        
If @EstAliqInterna is null                                                                                                                  
   Set @EstAliqInterna = 0                                                      
                                                                                                          
If @CodSubTributaria > 0                                                                                                                                  
begin                                                                                                             
  Select                                                                     
      @SubAliquotaInterna = AliquotaInterna,                                                 
      @SubMargemLucro = MargemLucro,                                                                                                                                  
      @SubPercReducao = PercReducao,                                                                                                                                  
      @SubIndiceReducao = IndiceReducao,                                                                                                                    
      @SubFlagAbaterICM = FlagAbaterICM,                                                                                                   
      @SubFlagSomaIPI = FlagSomaIPI                                                                                                                                  
  From SubstituicaoTributaria                                                              
  Where CodSubTributaria = @CodSubTributaria                                                                               
    and Empresa = @Empresa                                                                                                                                  
end                                                                                                       
                                                                                        
  If @SubAliquotaInterna is null                     
     Set @SubAliquotaInterna = 0                                                                                          
  If @SubMargemLucro is null                                                                 
     Set @SubMargemLucro = 0                                                          
  If @SubPercReducao is null                                                                                                                           
     Set @SubPercReducao = 0                                                                                                                          
  If @SubIndiceReducao is null                                                         
     Set @SubIndiceReducao = 0                                                      
  If @SubFlagAbaterICM is null                 
     Set @SubFlagAbaterICM = 0                                                                          
  If @SubFlagSomaIPI is null                                                                                             
     Set @SubFlagSomaIPI = 0                                                                                                                       
                                                            
--Calculo do CST de ICMS e IPI                                     
Select @NumCstICM = Case when Op.NumCST_ICM in (-1) then @TriNumCST_ICM                                     
                         else Op.NumCST_ICM End,                                    
       @NumCstIPI = Case when Op.NumCST_IPI not in (-1)                
        then Op.NumCST_IPI   --Operação fiscal prevalece sobre demais.                                    
                         when @AliqIPI > 0 and Op.TipoIPI = 0 --Item tributado de ipi sera sempre 00 ou 50 (entrada ou saida tributada)                                    
                         then Case When @FlagEntrada = 1 Then 00 Else 50 End                                    
                         when Cla.NumCST_IPI not in (-1,0) and (@AliqIPI = 0 or Op.TipoIPI <> 0)                                     
                              then Cla.NumCST_IPI -- Class. Fiscal prevalece sobre demais.                                    
                         when @TriNumCST_IPI not in (-1) and (@AliqIPI = 0 or Op.TipoIPI <> 0)                                     
                              then @TriNumCST_IPI    -- Item sem ipi pega da tributação se informado                                                             
                    End,                                    
       @NumCsosn  = Case When @ParTipoRegimeTributario in(1,2) --Calculo de CST para Simples nacional                                    
                       Then Case When Op.NumCSOSN not in(-1,0) then Op.NumCSOSN                                    
                   Else @TriNumCSOSN                                     
                              End                                    
                    End                                    
  From Produtos Pro                                    
  Left Join Operacoes Op on Op.Codigo = @CodOperacao                                    
  Left Join ClassFiscais Cla on Cla.Codigo = @CodClassFiscal                                    
Where Pro.Codigo = @CodProduto                                    
                                    
if @NumCstICM <> -1                                    
  Set @NumCstICM = Cast(@ProOrigem as varchar(1)) + Replicate('0', 2 - Len(@NumCstICM)) + Cast(@NumCstICM as varchar(2))                                    
else                                    
  Set @NumCstICM = null                                    
                                      
--Gabriella - 299680                                  
if @NumCstIPI <> -1 and @FlagEntrada = 1                                     
  Set @NumCstIPI = Replicate('0', 2 - Len(@NumCstIPI)) + Cast(@NumCstIPI as varchar(2))                                   
if @NumCstIPI <> -1 and @FlagEntrada = 0                                     
  Set @NumCstIPI = Replicate('5', 2 - Len(@NumCstIPI)) + Cast(@NumCstIPI as varchar(2))                                  
if @NumCstIPI = -1                                  
  Set @NumCstIPI = null                                     
                                  
if @NumCsosn <> -1 and @ParTipoRegimeTributario in (1,2) --CSOSN para Simples Nacional                                    
  Set @NumCsosn = Replicate('0', 3 - Len(@NumCsosn)) + Cast(@NumCsosn as varchar(3))                                    
else                                    
  Set @NumCsosn = null                                    
                                    
                                    
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                  
                
                
--Gabriella - 333391                                                                                                                                                                                               
Set @ValorBaseIPI = @ValorTotal + @AcrescimoBaseIPI                                                                                                                                                                                          
                                                                                 
If @ValorBaseIPI > 0 and @AliqIPI > 0                                
   Set @VAuxValorIPI = (@ValorBaseIPI * @AliqIPI) / 100                
     
--Somente irá prevalecer o Tipo da Tributação quando a Aliquota de IPI for igual a Zero                 
-- e o Tipo do Ipi da Operação Fiscal for Tributado                   
if @AliqIPI = 0 and @OprTipoIPI = 0                
begin                
 if @TriTipoValorNaoTributadoIPI = 0                
   Set @ValorIsentoIPI = @ValorBaseIPI                  
 if @TriTipoValorNaoTributadoIPI = 1                
   Set @ValorOutrasIPI = @ValorBaseIPI                     
end                
                   
if @OprTipoIPI = 1                
  Set @ValorIsentoIPI = @ValorBaseIPI                 
                  
if @OprTipoIPI = 2                
  Set @ValorOutrasIPI = @ValorBaseIPI                 
                  
If @AliqIPI = 0                                                                                                                                                        
   Set @ValorBaseIPI = 0                   
                  
if @ValorIsentoIPI > 0 or @ValorOutrasIPI > 0                
  Set @ValorBaseIPI = 0                      
        
                                                                                                                              
---Chamado 114964                                                         
--If @OprTipoIPI = 0 or @OprTipoIPI = 3                                                                                                                                                        
--Begin             --Gabriella - 333391                                                         
--  If @ValorTotal > 0 and @AliqIPI > 0                                                                                                                                                        
--     Set @VAuxValorIPI = (@ValorTotal * @AliqIPI) / 100                                                                                 
--End                                                                           
                                                                            
                                                                                                                          
If @TriFlagSubTributaria = 1                                                            
   and @ClaFlagSubTributaria = 1                                                                                                                                                         
and @GruFlagSubTributaria = 1                                                                                                                                                        
   and @TriMargemLucroSubst <> 0                                                                                                  
   and @EstFlagConvSub = 1                                                                        
   and @OprTipoICM = 0                                                                                      
   and @OprTipoSubTributaria > 0                                                                                               
begin                                                                           
  Set @ValorBaseSubTrib = @ValorTotal + @AcrescimoBaseSubTrib                                                                                                              
    
      --teste Ronaldo  
  --set @ValorBaseSubTrib = cast('A  ' + cast(@AcrescimoBaseSubTrib  as varchar(20))   as int)   
       
  If @OprFlagSubTribIPI = 1                                                                                                                                                         
     Set @ValorBaseSubTrib = @ValorBaseSubTrib + @VAuxValorIPI                                                                                                                                                   
end                                             
                                                                                                                                                 
--Eder - Chamado 262460                                                    
If @OprTipoICM = 0 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1 and @TriMargemLucroSubst <> 0 and                                                    
   @OprTipoSubTributariaCarga = 0                                                     
begin                                                    
  Set @ValorBaseSubTribCarga = @ValorTotal + @AcrescimoBaseSubTrib                                                 
  If @OprFlagSubTribIPI = 1                                                                                                           
     Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga + @VAuxValorIPI                                                                                                                               
end                                                                                                                                                        
                                                                                                                    
                                              
If @CodSubTributaria > 0                                                                                                                              
   and @TriFlagSubTributaria = 1                                                                                                                                                         
   and @ClaFlagSubTributaria = 1                                              
   and @GruFlagSubTributaria = 1                                                               
   and @SubMargemLucro <> 0                                                                                                                                   
   and @EstFlagConvSub = 1                                                                                  
begin                                                                                   
  Set @CalcBaseSubTrib = @ValorTotal + @AcrescimoBaseSubTrib                                                           
  If @SubFlagSomaIPI = 1                                                                                                                        
     Set @CalcBaseSubTrib = @CalcBaseSubTrib + @VAuxValorIPI                                                                                                                            
end                                                                                                                                                     
                                                                                                               
Set @ValorBaseICM = @ValorTotal + @AcrescimoBaseICM                                                                                                                   
Set @ValorBaseSubTribDestino = @ValorTotal + @AcrescimoBaseICM                                                                       
Set @CalcBaseSubTribDestino = @ValorTotal + @AcrescimoBaseICM                                                                                                  
                                                                                           
                                                                    
--JALDO - CHAMADO 243556                                                                    
--O Tipo "2" não estão sendo verificando porque nunca será usado                                                                    
--If @EntTipoPessoa <> 'J'                                                  
--begin                                                                                    
-- Set @ValorBaseIcm = @ValorBaseIcm + @VAuxValorIPI                                                      
--  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino + @VAuxValorIPI                                                              
--  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino + @VAuxValorIPI                                                                                    
--end                                 
                                                            
--JALDO - CHAMADO 248899                                                        
--if ((@TipoConsideraIPICalculoICM = 0) and (@EntTipoPessoa <> 'J')) or                                                                     
--   (@TipoConsideraIPICalculoICM = 1)                                                                     
--begin                                                                    
--Set @ValorBaseIcm = @ValorBaseIcm + @VAuxValorIPI                                                                                                           
--  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino + @VAuxValorIPI                                                                             
--  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino + @VAuxValorIPI                                                 
--end                                                                    
                
--Gabriella - 256424                                                  
--if (@EntTipoPessoa not in ('J','I'))                                   
if (@EntTipoPessoa not in ('J','I')) or (@OprFlagIPISobreBaseICM = 1)                                   
begin                                                                    
  Set @ValorBaseIcm = @ValorBaseIcm + @VAuxValorIPI                                                               
  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino + @VAuxValorIPI                                                    
  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino + @VAuxValorIPI                                                                                      
end                                                   
                                                                                                      
Set @ValorIsentoICM = @ValorBaseIcm          
                                                                              
If @TriPerReducaoICM <> 0 and @ValorBaseIcm <> 0                             
begin                                                                                        
  Set @ValorBaseIcm = @ValorBaseIcm - ((@ValorBaseIcm * @TriPerReducaoICM) / 100)                                                                                                                       
  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino - ((@ValorBaseSubTribDestino * @TriPerReducaoICM) / 100)                                                                                                                                            
  
    
      
        
          
            
  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino - ((@CalcBaseSubTribDestino * @TriPerReducaoICM) / 100)                                                                  
end                                                                  
                                                                                                                    
                                                                      
If @ValorBaseIcm > 0 and @OprPerRedICM > 0                                                                                                                                                        
begin                                  
  Set @ValorBaseIcm = @ValorBaseIcm - ((@ValorBaseIcm * @OprPerRedICM) / 100)                                                                                                                                                        
  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino - ((@ValorBaseSubTribDestino * @OprPerRedICM) / 100)                                                                                                  
  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino - ((@CalcBaseSubTribDestino * @OprPerRedICM) / 100)                                                           
end                                       
                                                                                 
If @ValorBaseIcm > 0 and @AliqICM > 0                                
   Set @ValorICM = (@ValorBaseIcm * @AliqICM) / 100                             
                          
--Ronaldo Chamado 313933                          
select @RegTribPercIvaSimplicado = R.PercIvaSimplificado from regimetributario R                          
left join entidades E on R.Codigo = E.codRegimeTributario                          
where R.empresa = @Empresa and                          
      E.codigo  = @CodEntidade                          
                          
                                                                                                                                                       
If @TriFlagSubTributaria = 1 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                          
   and @TriMargemLucroSubst <> 0 and @EstFlagConvSub = 1 and @OprTipoICM = 0 and @OprTipoSubTributaria > 0                                                                                                    
Begin                                                                                                              
--Eder - Chamado 243557  -- Teste específico para o Cliente pois ainda não sabemos se outros clientes aceitarão a modificação                                                                
--Eder - Chamado 243557                                              
  if (@EmpId = 'ALPHA PNEUS') and @TriPerReducaoICM > 0                                          
     If @OprFlagSubTribIPI = 1                                                                                                                                                     
       Set @ValorBaseSubTrib = @ValorBaseSubTrib - (((@ValorBaseSubTrib - @VAuxValorIPI) * @TriPerReducaoICM) / 100)                                                                                                                     
     Else                                                          
       Set @ValorBaseSubTrib = @ValorBaseSubTrib - ((@ValorBaseSubTrib  * @TriPerReducaoICM) / 100)                                                                                                                                                        
                                                                
  If @RedBaseSubTrib <> 0 and @ValorBaseSubTrib <> 0                                                                                                                                  
     Set @ValorBaseSubTrib = @ValorBaseSubTrib - ((@ValorBaseSubTrib  * @RedBaseSubTrib) / 100)                                                                                                                                  
                            
  --Ronaldo Chamado 313933                          
  --If @TriMargemLucroSubst <> 999.99                                                                             
  --   Set @ValorBaseSubTrib = @ValorBaseSubTrib +  ((@ValorBaseSubTrib * @TriMargemLucroSubst) / 100)                                                                                                                                       
  --If @ValorBaseSubTrib > 0 and @EstAliqInterna > 0                                                                                                                                                        
  --   Set @ValorSubTrib = (@ValorBaseSubTrib * @EstAliqInterna) / 100                                                                                                                                       
  -- Set @ValorSubTrib = @ValorSubTrib - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                             
  if @RegTribPercIvaSimplicado > 0 and @EstAliqInterna > 0                          
     begin                          
        set @ValorSubTrib     = round(@ValorbaseSubTrib * @RegTribPercIvaSimplicado / 100,2)                          
        set @ValorBaseSubTrib = round((@ValorIcm + @ValorSubTrib) / @EstAliqInterna * 100,2)                          
     end                          
  else                          
     begin                           
 If @TriMargemLucroSubst <> 999.99                                                                                                       
         Set @ValorBaseSubTrib = @ValorBaseSubTrib +  ((@ValorBaseSubTrib * @TriMargemLucroSubst) / 100)                                                                                                                                       
        If @ValorBaseSubTrib > 0 and @EstAliqInterna > 0                                                                                                                                                        
           Set @ValorSubTrib = (@ValorBaseSubTrib * @EstAliqInterna) / 100                                                                                                 
        Set @ValorSubTrib = @ValorSubTrib - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                             
    end                           
End                                                                                               
                                                            
                                                                                      
--Eder - Chamado 262460                                                    
If @OprTipoICM = 0 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1 and @TriMargemLucroSubst <> 0 and                                                    
   @OprTipoSubTributariaCarga = 0                            begin                                  
--Eder - Chamado 243557 -- Teste específico para o Cliente pois ainda não sabemos se outros clientes aceitarão a modificação            
  if (@EmpId = 'ALPHA PNEUS') and @TriPerReducaoICM > 0                                                            
     If @OprFlagSubTribIPI = 1                                                                    
       Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga - (((@ValorBaseSubTribCarga - @VAuxValorIPI) * @TriPerReducaoICM) / 100)                                                                                                                           
  
    
      
        
          
            
              
                
                
                  
     Else                                                          
     Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga - ((@ValorBaseSubTribCarga  * @TriPerReducaoICM) / 100)                                                                                                                                               
  
    
      
        
         
                                                                            
  If @RedBaseSubTrib <> 0 and @ValorBaseSubTribCarga  <> 0                                                                                                                                  
     Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga - ((@ValorBaseSubTribCarga  * @RedBaseSubTrib) / 100)                                                                                                                                                 
 
     
      
        
          
            
              
                          
  --Ronaldo Chamado 313933                            
  --If @TriMargemLucroSubst <> 999.99                                                                                                                   
  --   Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga +  ((@ValorBaseSubTribCarga * @TriMargemLucroSubst) / 100)                                                                                                                                 
  --If @ValorBaseSubTribCarga > 0 and @EstAliqInterna > 0                                                                                                           
  --   Set @ValorSubTribCarga = (@ValorBaseSubTribCarga * @EstAliqInterna) / 100             
  --Set @ValorSubTribCarga = @ValorSubTribCarga - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                          
  if @RegTribPercIvaSimplicado > 0 and @EstAliqInterna > 0                          
     begin                          
        set @ValorSubTribCarga     = round(@ValorBaseSubTribCarga * @RegTribPercIvaSimplicado / 100,2)                          
        set @ValorBaseSubTribCarga = round((@ValorIcm + @ValorSubTribCarga) / @EstAliqInterna * 100,2)                          
     end                          
  else                          
     begin                           
       If @TriMargemLucroSubst <> 999.99                                                                                                                   
          Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga +  ((@ValorBaseSubTribCarga * @TriMargemLucroSubst) / 100)                                                                                                                                 
       If @ValorBaseSubTribCarga > 0 and @EstAliqInterna > 0                                                                                                           
          Set @ValorSubTribCarga = (@ValorBaseSubTribCarga * @EstAliqInterna) / 100                                                                                                                 
          Set @ValorSubTribCarga = @ValorSubTribCarga - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                                                                 
    end                           
end                                                                                                                                                        
                                        
                                                         
                                                                                                  
--Calculo da substituição tributaria pela tabela SubstituicaoTributaria                                         
If @CodSubTributaria > 0                                                                       
   and @TriFlagSubTributaria = 1 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                                                                                        
   and @SubMargemLucro <> 0 and @EstFlagConvSub = 1                                                                                                         
begin                                                                                                                              
  If @SubPercReducao <> 0                                                                                             
     Set @CalcBaseSubTrib  = @CalcBaseSubTrib - ((@CalcBaseSubTrib * @SubPercReducao) / 100)                                                                 
  If @SubMargemLucro <> 999.99                                                                                                                                
     Set @CalcBaseSubTrib = @CalcBaseSubTrib +  ((@CalcBaseSubTrib * @SubMargemLucro) / 100)                                                                                                                   
  If @SubIndiceReducao <> 0                                                                         
     Set @CalcBaseSubTrib = @CalcBaseSubTrib * @SubIndiceReducao                                                                                                                          
                                                                                                                          
  --Quando não tem aliquota interna na sub.trib, pega a do estado de origem                                                                         
  If @CalcBaseSubTrib > 0 and                                                                                      
     (@SubAliquotaInterna > 0 or @EstAliqInterna > 0)                                                           
  begin                                                  
    if @SubAliquotaInterna > 0                                                                                                                        
     Set @CalcValorSubTrib = (@CalcBaseSubTrib * @SubAliquotaInterna) / 100                                                                                                                  
    Else                                                                     
       Set @CalcValorSubTrib = (@CalcBaseSubTrib * @EstAliqInterna) / 100                                                                                          
  end                                                                                                                            
                                                                                                                          
  --Opção que permite abater o icms da operação na substituição tributaria                                                                                                                          
  If @SubFlagAbaterICM = 1                                                                                                                        
     Set @CalcValorSubTrib = @CalcValorSubTrib - Round((@CalcBaseSubTribDestino * @AliqICM) / 100,2)                                                                                                                    
                                                                        
  If @OprTipoICM = 0 and @OprTipoSubTributaria > 0                                                           
  begin                                                       
    Set @ValorBaseSubTrib = @CalcBaseSubTrib                                                               
    Set @ValorSubTrib = @CalcValorSubTrib                                                                                                                               
  end                                                                                                                              
                                
  --Eder - Chamado 262460                              
  If @OprTipoSubTributariaCarga = 0                                                    
  begin                                                                              
    Set @ValorBaseSubTribCarga = @CalcBaseSubTrib                                                                                       
    Set @ValorSubTribCarga = @CalcValorSubTrib                                                                                               
  end                                                    
end                                                                                                     
                                           
--MARCELO - CHAMADO 195051                                                                                
if (@ValorBaseSubTrib <> 0) or (@ValorSubTrib <> 0)                                                                                 
begin                                                                                
  set @ValorBaseSubTribCarga = 0                                                                                
  set @ValorSubTribCarga = 0                                                         
end                                                                                
                                    
                                    
--Eder - Chamado 295277                                    
--O cálculo do ICMS para Simples deve ser feito após o calculo da ST pois a ST considera aliquotas internas normais de ICMS                                    
If @ParTipoRegimeTributario in (1,2) and  --- Simples Nacional ou com excesso de sublimite receita bruta                                    
   (@FlagEntrada = 0 or (@FlagEntrada = 1 and @OprTipoMovimento = 1))  --Saida ou entrada por devolução                                    
begin                 
  If @TriAliqICM <= 0                                     
    Set @AliqICM = 0                                    
  else                                    
    Set @AliqICM = @ParAliqICMSimples                                    
  If (@OprTipoICM = 1) or                                                                                                                                                        
     (@OprTipoICM = 2 and @FlagEntrada = 0) or                                                                                                                                          
     (@OprTipoICM = 2 and @FlagEntrada = 1 and @OprFlagDefaultLancamentoOutras = 0)                                                                                                      
     Set @AliqICM = 0                                                                     
Set @ValorICM = (@ValorBaseIcm * @AliqICM) / 100                                    
end                                    
                                                                                             
If @AliqICM = 0                                                                                                                                                        
   Set @ValorBaseIcm = 0                                                                                             
Else                                                                                                                      
   Set @ValorIsentoICM = @ValorIsentoICM - @ValorBaseIcm                                                                                          
                                                                                                                         
                                                                   
If @OprTipoSubTributaria in(2,3) and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                   
   and @OprTipoICM = 0 and @EstFlagConvSub = 1                                           
   and (@TriFlagSubTributaria = 1 or @TriMargemLucroSubst <> 0 or @SubMargemLucro <> 0)                                                                                                     
begin                                                                                                                                          
  If @OprTipoSubTributaria = 2                                           
     Set @ValorIsentoICM = @ValorIsentoICM + @ValorBaseICM                                                                                             
  If @OprTipoSubTributaria = 3                                         
  begin                                              
     Set @ValorOutrasICM = @ValorOutrasICM + @ValorBaseICM + @ValorIsentoICM                                                                                              
Set @ValorIsentoICM = 0                                                                              
  end                                                                                                        
  Set @ValorBaseIcm = 0                                                                                                                                          
  Set @ValorICM = 0                                                                                                                                          
end                                                                                                                                                        
                                                                                                                                                                                                                                                          
                                                                                 
Set @FatorRedCusto = 1                                                                     
If (@ParTipoReducaoICM = 1) and (Ltrim(@CodEntidade) <> '')                                                     
   and (@FlagEntrada = 0 or (@FlagEntrada=1 and @OprTipoMovimento = 1))                                                                                                                                            
--Eder Chamado 170325                                                                                              
   and (@CodProduto <> 8888888)                                                                                              
begin                                                                                                                    
--   If @OprTipoSubTributaria not in(2,3)   --não calcula quando a sub. tributaria é isenta/outras                                              
--   Isaac - Chamado 191232                                                                                
   If not (@OprTipoSubTributaria in(2,3) and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                             
      and @OprTipoICM = 0 and @EstFlagConvSub = 1                                                                                                                                       
      and (@TriFlagSubTributaria = 1 or @TriMargemLucroSubst <> 0 or @SubMargemLucro <> 0))                                                                               
      Set @FatorRedCusto = (100 - @TriAliqICM) / (100 - @AliqICM)                      
                                                                                                                                                
   If @OprPerRedMargem <> 0                                                                           
     Set @FatorRedCusto = @FatorRedCusto - (@OprPerRedMargem / 100)                                                                                                                          
   --Eder - Chamado 270320                                                
   --If (@TriPerRedMargem <> 0)                                                
   --  Set @FatorRedCusto = @FatorRedCusto - (@TriPerRedMargem / 100)                                                                  
end                                                                                                                           
--Eder - Chamado 270320                                                
if (@TriPerRedMargem <> 0) and (@CodProduto <> 8888888)                                                 
   Set @FatorRedCusto = @FatorRedCusto - (@TriPerRedMargem / 100)                            
                                                       
-- 298865                                                                           
--Eder - Chamado 195755                                                                                  
--Somente vai calcular DespesasNaoInclusas no fator quando for saída ou devolução                                                                                        
-- Renato - 278440                            
If (@FlagEntrada = 0) or                                                                                                                                       
   (@FlagEntrada = 1 and @OprTipoMovimento = 1)                                                                                                                                        
begin                                                                                  
  --Eder - Chamado 170325                                                                         
  --Adiciona o acrescimo de custo, que já deve vir passado como percentual                                                                                              
                                                 
  If (@PerRedDespesa <> 0) and (@ParTipoReducaoICM in (0,1)) and (@FlagDeduzirDespNaoInclNaMargem = 0)                                                                                             
  begin                                                                                              
    Set @FatorRedCusto = @FatorRedCusto + @PerRedDespesa                                                  
  end                                                    
end                                                                                   
                                                                                                                                          
                                                                    
--Calcula o fator de venda para as saídas e entradas por devolução.                                                                                                                                                        
--Retira o Valor do ICM, a Aliquota de CPMF, a Aliquota de PIS/COFINS e soma o acrescimo de vend                                                                                                                      
Set @FatorRedVenda = 1                                                                                                                         
If ((@FlagEntrada = 0) or                                                                                           
   (@FlagEntrada = 1 and @OprTipoMovimento = 1))                                          
   -- Renato - 278440                 
   and (@ParTipoReducaoICM = 2) -- 2 - Deduzir Impostos da Venda                                                            
begin                                                                                
                                            
  --Eder -Chamado 292832 - Evitar arredondamento desnecessario na aliquota do ICM (Vide Chamado)                                      
  If (@AliqICM > 0) and (@ValorTotal > 0)                                                 
     if @ValorBaseICM = @ValorTotal + @AcrescimoBaseICM                                      
       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                                                                                                                                                        
   Set @FatorRedVenda = @FatorRedVenda - (@AliqPISCOFINS / 100)                                          
                                                                                             
                                            
  If (@LisPercAcrescimoAdm1 + @LisPercAcrescimoAdm2 + @LisPercAcrescimoAdm3) > 0                                                                                     
     Set @FatorRedVenda = @FatorRedVenda - ((@LisPercAcrescimoAdm1 + @LisPercAcrescimoAdm2 + @LisPercAcrescimoAdm3) / 100)                                                                                                                                    
                                                                                
  If (@AcrescimoRedVenda <> 0) and (@ValorTotal > 0)                                                                                                                                                        
    Set @FatorRedVenda = @FatorRedVenda - Round(((@AcrescimoRedVenda * 100) / @ValorTotal) / 100,4)                                                                            
                                        
  --Renato - 290579                                          
  -- Se for uma venda fora do estado com ICMS, e os Percentuais de ICMS e SubTrib da Compra estiverem informados                                          
  -- na Lista de Preco vai abater o ICMS da compra no Custo.                                          
  If ((@CidEmpCodEstado <> @CidCodEstado) and (@ValorICM > 0) and (@PercICMCusto > 0) and (@PercSubTribCusto > 0))                                          
    Set @FatorRedCusto = @FatorRedCusto - (@PercICMCusto / 100)                                           
                                        
end                                             
  --Renato - 278440                                          
If (@PerRedDespesa <> 0) and (@FlagDeduzirDespNaoInclNaMargem = 1) and (@ParTipoReducaoICM <> 2)                                                                                             
begin                                                                                              
  Set @FatorRedVenda = @FatorRedVenda - @PerRedDespesa                                                        
end                                                                                
                                    
                                    
--Eder - 303720                                            
Set @AcrDespesasPisCOFINS = @AcrescimoBaseICM                                
if (@OprFlagIPISobrePisCofins = 1)  --Calcula IPI sobre Pis e COFINS                                 
  Set @AcrDespesasPisCOFINS = @AcrDespesasPisCOFINS + @VAuxValorIPI                                
                                    
-- Renato - Chamado 272165                                             
Select @ValorBasePisCofins = ValorBasePisCofins,                                             
       @AliqPis = AliqPis,                                    
       @AliqCofins = AliqCofins,                                    
       @NumCstPisCofins = NumCstPisCofins,                               
       -- Renato - 297792                              
       @NatReceitaPisCofins = NatReceitaPisCofins,                  
       -- Renato - 332318                
       @NatBaseCalcCredito = NatBaseCalcCredito                             
                                          
From dbo.Calcular_PisCofins(@Empresa, @CodProduto, @CodEntidade, @CodTributacao, @CodOperacao,                                           
                            @CodClassFiscal, @ValorTotal, @AcrDespesasPisCOFINS,                              
                            -- Renato - 297792                                  
              @FlagEntrada)                                                                                                                                                        
                                                                         
if @CodProduto = 8888888                                                        
begin                                                                                                                                                        
  If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                                                                               
     and Ltrim(@OprCFOP_Servico_NCFora) <> ''                                                                                      
     Set @NumCFOP = @OprCFOP_Servico_NCFora                                                                                                                    
  Else                                                                                                               
     Set @NumCFOP = @OprCFOP_Servico                                                                                                                                
end                                                                                            
else                                                                                                                                    
  Begin                                                                                                  
      If @TriTipoCFOP = 1 or @TriTipoCFOP = 0                                                            
         begin                                                                                                 
           If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                                                                                       
 
              and Ltrim(@OprCFOP1_Normal_NCFora) <> ''                                                                                 
       Set @NumCFOP = @OprCFOP1_Normal_NCFora                                                                                                                                                        
           Else                                                                                                                                
              Set @NumCFOP = @OprCFOP1_Normal                                                   
         end                                                                                
      If @TriTipoCFOP = 2                                                                                                                                                        
         begin                                                                                                                         
           If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                                                                                      
  
              and Ltrim(@OprCFOP2_Industrializado_NCFora) <> ''                                                                                                                 
 Set @NumCFOP = @OprCFOP2_Industrializado_NCFora                                                            
                                                  
           Else                                                                                         
         Set @NumCFOP = @OprCFOP2_Industrializado                                      
         end                                                                                                                            
      If @TriTipoCFOP = 3                                                            
         begin                                                                                                                                              
           -- JALDO - CHAMADO 184880                                                                                          
           -- If @EntTipoPessoa in('F','N')                                                                                                     
           If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                            
              Set @NumCFOP = @OprCFOP3_SubRevenda_NC                                                                            
           Else                                                                                                 
             Set @NumCFOP = @OprCFOP3_SubRevenda                                                                                                                                                        
         end                                                   
      If @TriTipoCFOP = 4                                                                                                                                                        
         begin                               
           -- JALDO - CHAMADO 184880                                               
           --If @EntTipoPessoa in('F','N')                                                                                           
           If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                     
              Set @NumCFOP = @OprCFOP4_SubRevendaML_NC                                                                                                                                                        
           Else                                                                      
              Set @NumCFOP = @OprCFOP4_SubRevendaML                                                                                                                    
         end                                                                                                
      If @TriTipoCFOP = 5                                                                                                                
         begin               
           If @EntTipoPessoa in('F','N')                              
             Set @NumCFOP = @OprCFOP5_SubFabricacao_NC                                                                
           Else                                                                                                                                                        
              Set @NumCFOP = @OprCFOP5_SubFabricacao                                        
         end                                                                                                                         
      If @TriTipoCFOP = 6                                                                                             
         begin                                                                                                
           If @EntTipoPessoa in('F','N')                                                              
              Set @NumCFOP = @OprCFOP6_SubFabricacaoML_NC                                                                                         
           Else                                   
              Set @NumCFOP = @OprCFOP6_SubFabricacaoML                                                                                            
         end                                                                   
      If @TriTipoCFOP = 7                                                                                                                             
         begin                                                                                                                                          
           Set @NumCFOP = @OprCFOP7_Importado                                                                                                                               
         end                                                                                                                          
      If @TriTipoCFOP = 9                         
         begin                                                                                 
           If @EntTipoPessoa in('F','N','C','P')                                                                                                                             
           Set @NumCFOP = @OprCFOP9_Petroleo_NC                                                                                                                                                        
   Else                                                                                                                                                        
              Set @NumCFOP = @OprCFOP9_Petroleo                                                                                                             
         end end                                                                         
                                                                                                           
If Substring(@NumCFOP,1,1) in ('1','2','3') and @CidCodEstado <> @CidEmpCodEstado                                                                                                                    
   If @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado = 'EX'                                                                                                      
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'3')                                                                                                    
   Else                                                                          
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'2')                                                                                                                                                           
If Substring(@NumCFOP,1,1) in ('5','6','7') and @CidCodEstado <> @CidEmpCodEstado                                                                                                                                                         
 If @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado = 'EX'                                                                                                                       
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'7')                                                                 
   Else                                                                                     
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'6')                                                  
                                                                              
--MARCELO - CHAMADO 209798                                                         
/*                                                                              
CFOP 5.405 não existe o seu correlado 6.405 para vendas fora do estado,                                                                               
devendo ser utilizado em seu lugar o CFOP 6.404, conforme reunião defina                              
com Eder                                                    
*/                                                                            
--Rafael chamado 224824                                                     
  --6.405  -> 6.404                                                                        
  --6405  --> 6404                                                                        
                                                                        
--if (Replace(@NumCFOP,'.','') = '6405')                                      
  --set @NumCFOP = '6404'                                                                         
                                                                        
if (@NumCFOP  = '6.405')                                                                              
  set @NumCFOP = '6.404'                                                                              
                                                                         
if (@NumCFOP  = '6405')                                                                         
  set @NumCFOP = '6404'                                                                      
                                                                                                
If @NumCFOP is null                                                                                                                                          
   Set @NumCFOP = ''               
                                                                                                                                                         
If @AliqICM is null                                                                             
   Set @AliqICM=0               
                                                                                                                                                          
if @CodProduto = 8888888          
Begin                                                                                                          
  -- Renato - 341779               
  if (@OprFlagICMSSobreServicos = 0) or (@OprTipoIcm in (1,2))              
  begin              
    set @AliqICM = 0                                                                                                                                          
    set @ValorBaseIcm = 0                                                       
    set @ValorICM = 0                                                        
    set @ValorIsentoICM = 0                                                                                              
    set @ValorOutrasICM = 0                         
                                                       
    if (@OprFlagICMSSobreServicos = 0)              
    begin                
      -- Mantendo compatibilidade com versões antigas, ou seja, se o usuario não marcar o FlagICMSSobreServicos               
   -- o sistema não muda a forma de gerar os impostos dos serviços.                                                 
      if (@TriTipoValorNaoTributado = 0)                                                  
        set @ValorIsentoICM = @ValorTotal + @AcrescimoBaseICM                                                                                                  
      else                                                                                        
        set @ValorOutrasICM = @ValorTotal + @AcrescimoBaseICM                
    end              
    else              
    begin              
      if (@OprTipoIcm = 1)                                                  
        set @ValorIsentoICM = @ValorTotal + @AcrescimoBaseICM                                     
      else                                                                                        
        set @ValorOutrasICM = @ValorTotal + @AcrescimoBaseICM                
    end              
                                                                                                                  
  end              
  else if ((@OprFlagICMSSobreServicos = 1) and (@OprTipoIcm = 0) and ((@AliqICM = 0) or (@ValorBaseIcm = 0)) )              
  begin              
    if (@TriTipoValorNaoTributado = 0)               
      set @ValorIsentoICM = @ValorTotal + @AcrescimoBaseICM                                                                                                  
    else                                                                                        
      set @ValorOutrasICM = @ValorTotal + @AcrescimoBaseICM               
  end              
                  
  set @ValorBaseSubTrib = 0                                                                                                                                         
  set @ValorSubTrib = 0                                                                                                       
  set @ValorBaseSubTribCarga = 0                                                                                                               
  set @ValorSubTribCarga = 0                                                                                                                                          
  set @RedBaseSubTrib = 0                                    
--Eder - Chamado  170325                                                                                              
--  set @FatorRedCusto = 1                                                                                              
  set @FatorRedVenda = 1                                                                                                                                          
  set @AliqPISCOFINS = 0                
                                                                                                                             
end                                            
                                    
 
--Eder - 297029                                      
If (@ValorBaseICM > 0 and @ValorIsentoICM > 0)
begin  
  --Renato - 361064 
  if (@TriPerReducaoICM = 0) and (@OprPerRedICM <> 0)  
    Set @PerReducaoICM = @OprPerRedICM
  else if (@TriPerReducaoICM <> 0) and (@OprPerRedICM = 0)  
    Set @PerReducaoICM = @TriPerReducaoICM 
  else
    Set @PerReducaoICM = Round(@ValorIsentoICM / (@ValorBaseICM + @ValorIsentoICM) * 100,2)                                                         
end  
else                                      
  Set @PerReducaoICM = 0    

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

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

GO

if not exists(select * from information_schema.columns 
where Table_name = 'PrePedido' and Column_name = 'CodOperacao')
begin
  Alter Table PrePedido Add CodOperacao Int
end

go
sp_bindefault 'dbo.Numero', 'PrePedido.CodOperacao'
go
Update PrePedido Set CodOperacao = 512 where CodOperacao is null 
go
Alter Table PrePedido Alter Column CodOperacao Int Not Null
go  
  --Gabriella - 352043
if not exists (Select * from syscolumns where name like 'CodEntidadeOficina' and id = object_id('Veiculos'))
begin
  Alter Table Veiculos Add CodEntidadeOficina char(7) collate Latin1_General_CI_AS
end
GO   

exec sp_bindefault 'dbo.Caracter', 'Veiculos.CodEntidadeOficina'
GO
 
update Veiculos Set CodEntidadeOficina = ''
Where CodEntidadeOficina is null
GO

alter table Veiculos
alter column CodEntidadeOficina char(7) not null 
GO

if not exists (Select * from syscolumns where name like 'EmpresaOSGarantia' and id = object_id('Veiculos'))
begin
  Alter Table Veiculos Add EmpresaOSGarantia numeric(2,0) 
end
GO   

exec sp_bindefault 'dbo.Numero', 'Veiculos.EmpresaOSGarantia'
GO
 
update Veiculos set EmpresaOSGarantia = 0
where EmpresaOSGarantia is null
GO
 
Alter table Veiculos alter column EmpresaOSGarantia numeric(2,0) not null
GO


if not exists (Select * from sysobjects where name like 'RessarcSTProduto')
begin
  CREATE TABLE RessarcSTProduto(
	CodProduto int NOT NULL,
	DataInclusao datetime NULL,
	DataExclusao datetime NULL,
	FlagInativo smallint Null)
end	
GO


if not exists (Select * from sysobjects where name like 'PK_RessarcSTProduto')
begin
  Alter table RessarcSTProduto Add	
    CONSTRAINT PK_RessarcSTProduto PRIMARY KEY CLUSTERED 
       (CodProduto)
end
GO

if not exists (Select * from sysobjects where name like 'RessarcSTSaldo')
begin
	Create Table RessarcSTSaldo ( 
		CodProduto Int not null,
		DataSaldo DateTime not null,
		EmpresaEstoque int not null,
		TipoSaldo smallint, 
		QuantEstoque decimal(18,2),
		ValorBaseStUnitario decimal(18,2),
		AliqICM decimal(5,2),
		ValorBaseConfronto decimal(18,2))
end	
Go

if not exists (Select * from sysobjects where name like 'PK_RessarcSTSaldo')
begin
	Alter Table RessarcSTSaldo Add Constraint PK_RessarcSTSaldo Primary key
	(CodProduto, DataSaldo, EmpresaEstoque)
end
GO

if exists (Select * from sysobjects where name like 'RessarcSTSaida')
  Drop Table RessarcSTSaida
GO
  
CREATE TABLE RessarcSTSaida(
		NumLancamento int NOT NULL,
		NumSequencia int NOT NULL,
		Empresa smallint NOT NULL,
		DataGeracao datetime NULL,
		ValorBaseST decimal(18,2),
		ValorST  decimal(18,2),
		AliqIntST decimal(18,2),
		ValorBaseICM decimal(18,2),
		ValorICM  decimal(18,2),
		ALIQICM  decimal(5,2),
		ValorBaseConfronto decimal(18,2),
		FlagRessarcimento smallint,
		DadosPesquisa varchar(1000) Collate Latin1_General_CI_AS)
Go


Alter Table RessarcSTSaida
	Add CONSTRAINT PK_RessarcSTSaida PRIMARY KEY CLUSTERED 
	(
		NumLancamento ASC,
		NumSequencia ASC,
		Empresa
	)
GO

if exists (Select * from sysobjects where name like 'RessarcSTEntrada')
  Drop Table RessarcSTEntrada
GO

CREATE TABLE RessarcSTEntrada(
		Empresa smallint NOT NULL,
		NumLancamentoSaida int NOT NULL,
		NumSequenciaSaida int NOT NULL,
		TipoOrigem smallint NOT NULL,
		DataInventario datetime NULL,
		Perciva decimal(4, 2) NOT NULL,
		TipoCalculo smallint NOT NULL,
		NumLancamentoEntrada int NOT NULL,
		QuantEntrada decimal(10, 3) NOT NULL,
		ValorUnitario decimal(13, 4) NOT NULL,
		AliqICM decimal(4, 2) NOT NULL,
		ValorBaseST decimal(11, 2) NOT NULL,
		ValorICM decimal(11, 2) NOT NULL)
GO

Alter table RessarcSTEntrada Add 
	 CONSTRAINT PK_RessarcSTEntrada PRIMARY KEY CLUSTERED 
	(
		Empresa,
		NumLancamentoSaida,
		NumSequenciaSaida,
		NumLancamentoEntrada)
GO

if exists (Select * from sysobjects where name like 'RessarcStTemp')
  Drop Table RessarcStTemp
GO

CREATE TABLE RessarcStTemp(
		NumLancamento int NOT NULL,
		NumSequencia int NOT NULL,
		Empresa smallint NOT NULL,
		CodProduto int NOT NULL,
		TipoMovimento smallint NOT NULL,
		CodOperacao int Not Null, 
		QuantRestante decimal(10, 3) NOT NULL,
		DataMovimento datetime NULL,
		FlagST smallint NOT NULL,
		ValorUnitario decimal(13, 4) NOT NULL,
		AliqICM decimal(4, 2) NOT NULL,
		ValorBaseST decimal(11, 2) NOT NULL,
		ValorICM decimal(11, 2) NOT NULL)
GO

alter TABLE RessarcStTemp
Add CONSTRAINT PK_RessarcStTemp PRIMARY KEY CLUSTERED 
(
	NumLancamento,
	NumSequencia,
	CodProduto,
	Empresa
)
GO

CREATE NONCLUSTERED INDEX RessarcStTemp1 ON dbo.RessarcStTemp 
(
	CodProduto,
	TipoMovimento,
	DataMovimento
)
GO


--Gabriella - 351621
Alter table Veiculos Alter Column Observacao varchar(500) not null
GO

--Gabriella - 352337
if not exists (Select * from syscolumns where name like 'DataRevisao' and id = object_id('VeiculoChequeGarantia'))
begin
  Alter table VeiculoChequeGarantia add DataRevisao datetime
end
go



ALTER procedure [dbo].[Stored_PRFT110Validar]        
(        
  @Empresa int,        
  @CodOperacao int,        
  @FlagCupom int, --0 Nota, 1-Cupom, 2-Nota e Cupom        
  @Ped_Sequencia int,        
  @Venc_Sequencia int,        
  @CodCondPagto char(5),         
  @TipoDuplicata int,        
  @TipoDuplicataPedido int,        
  @FlagSepararServico tinyint,        
  @SerieControle char(3),        
  @SalvaNumDocumento numeric(6),        
  @SerieControleServico char(3),        
  @SalvaNumDocumentoServico numeric(6),        
  @QuantNotaItem int,        
  @QuantNotaServico int,        
  @MensagemERRO varchar(400) Output                                                  
)        
AS        
BEGIN        
  /******************        
  VERSÃO 3.01        
  ******************/        
  declare @EmpresaEstoque int        
  declare @ValorTotalPedidos decimal(11,2)                                                                                                                             
  declare @ValorTotalSubTrib decimal(11,2)                                                                                                                            
  --Gabriella - 333391
  --declare @ValorIPIDespesas decimal(11,2)                                                                                                                            
  declare @ValorTotalRetencoes decimal(11,2)          
  --MARCELO - CHAMADO 184942                                      
  declare @DuplicataST tinyint             
  declare @FlagGerarDuplicata numeric(1)        
  declare @DataMovimento dateTime        
  declare @FlagObrigaLancFiscais smallint  
    
  --EDER RAMOS - CHAMADO 302201  
  declare @FlagNaoGerenciarNumDocumento smallint        

  --JALDO - CHAMADO 301399
  declare @valor1 decimal(11,2)
  declare @valor2 decimal(11,2)
  --Gabriella - 301399
  declare @EmpID varchar(15) 
   
--Eder Ramos Chamado 302201  
Select   
  @FlagNaoGerenciarNumDocumento = FlagNaoGerenciarNumDocumento                                                         
From ParamControleSerie          
where Empresa = @Empresa and Serie= @SerieControle  
  
if(@FlagSepararServico = 1)  
begin  
 Select   
  @FlagNaoGerenciarNumDocumento = FlagNaoGerenciarNumDocumento                                                         
 From ParamControleSerie          
 where Empresa = @Empresa and Serie= @SerieControleServico  
end  

--Gabriella - 301399
Select @EmpId = Id From Empresas                                                
Where Codigo = @Empresa     
        
  --MARCELO - CHAMADO 158510/199271        
  select @EmpresaEstoque = EmpresaEstoque        
  from Empresas        
  where Codigo = @Empresa        
        
  -- JALDO - CHAMADO 173858                                                    
  --  Verifica se existem pedidos de empresa de estoque diferente e bloqueia                                                    
  if Exists(Select  top 1  P.CodPedido                                                   
            From TempPRFT110Pedido T                                                   
              left join Pedidos P on P.Empresa = T.Empresa                                                  
                                 and P.CodPedido = T.CodPedido                                                  
              Left join Empresas E on E.Codigo = P.Empresa                                        
            Where T.NumSequencia = @Ped_Sequencia          
              and E.EmpresaEstoque <> @EmpresaEstoque)                                                  
  begin                                                  
    Set @MensagemErro = 'Existem Pedidos de empresa de estoque diferente  do processamento e esta operação não é permitida. Processamento Cancelado!'                                                    
    Return                                                  
  end                                                  
                                                    
  --163317                                                                                                        
  if Exists(Select Min(P.CodEntidade) as MenorEntidade                                                    
            From TempPRFT110Pedido T                                                    
              Left Join Pedidos P on T.Empresa = P.Empresa                                                    
                                 And T.CodPedido = P.CodPedido  
              --Gabriella - 359419
              Left Join OrdemServico OS On OS.Codigo = P.CodOS 
                                       and OS.Empresa = P.EmpresaOS                                                  
            Where NumSequencia = @Ped_Sequencia 
            --Gabriella - 359419                                                   
            --Having Min(P.CodEntidade) <> Max(P.CodEntidade))                                                     
            Having Min(Case When IsNull(OS.CodEntidadeNF, '') = '' Then P.CodEntidade     
                            Else OS.CodEntidadeNF End) <> 
                   Max(Case When IsNull(OS.CodEntidadeNF, '') = '' Then P.CodEntidade     
                            Else OS.CodEntidadeNF End))                                                     
  begin                                                    
    Set @MensagemErro = 'Pedidos de diferentes entidades foram processados e esta operação não é permitida. Processamento Cancelado!'                                                    
    Return                                                                       
  end                                                    
         
  --Acumula os totais dos pedidos                               
  Select         
    @ValorTotalPedidos   = Sum(ValorTotalPedido),                                                                                                                           
    @ValorTotalSubTrib     = Sum(ValorSubTrib),                                                                                                                            
    --Gabriella - 333391
    --@ValorIPIDespesas      = Sum(ValorIPIDespesas),                                                                                                  
    @ValorTotalRetencoes   = Sum(ValorTotalRetencoes)                                                                                                                      
  from Pedidos Ped, TempPrft110Pedido Temp                                                                                                                            
  Where Ped.Empresa = Temp.Empresa                                                                                             
    and Ped.CodPedido = Temp.CodPedido                                                                                
    and Temp.NumSequencia = @Ped_Sequencia                                                                                                                            
        
  --Confere os totais processados 
  --Gabriella - 333391                                                                                         
  /*If (@ValorTotalPedidos - @ValorTotalSubTrib - @ValorIPIDespesas + @ValorTotalRetencoes) <>                                                                                  
     (Select Sum(ValorTotalNota - ValorSubTrib - ValorIPIDespesas + ValorTotalRetencoes)                                                                                                                                                                                                                                             
      from TempPrft110Nota T, NotasFiscais N                                                                               
      where T.NumSequencia = @Ped_Sequencia                                               
        and N.Empresa = T.Empresa                                                                                                                             
        and N.TipoControle = T.TipoControle                                                                                                                             
        and N.CodControle = T.CodControle)*/
  If (@ValorTotalPedidos - @ValorTotalSubTrib + @ValorTotalRetencoes) <>                                                                                  
     (Select Sum(ValorTotalNota - ValorSubTrib + ValorTotalRetencoes)                                                                                                                                                                                                                                             
      from TempPrft110Nota T, NotasFiscais N                                                                               
      where T.NumSequencia = @Ped_Sequencia                                               
        and N.Empresa = T.Empresa                                                                                                                             
        and N.TipoControle = T.TipoControle                                                                                                                             
        and N.CodControle = T.CodControle)                                                                                                                                    
  Begin                                                                                                                            
    Set @MensagemErro = 'Valor Processado não confere com o Total das Notas Geradas. Operação Cancelada!'                                                                                                             
    Return                                      
  End                                                                               
                    
  --Confere a quantidade de duplicatas                                        
  --MARCELO - CHAMADO 184942      
  set @DuplicataST = 0
                                        
  --Gabriella - 301399
  if (@EmpId = 'DINAMAR') 
  begin  
    select @DuplicataST = Coalesce(1,0)
    from ParamControle PC
    where PC.Empresa = @Empresa
      and PC.ValorMinimoST <> 0
      --Gabriella - 347726
      /*and PC.ValorMinimoST <= (Select isNull(Sum(Ped.ValorSubTrib), 0)
                               From TempPrft110Pedido T
                               left join Pedidos Ped on Ped.Empresa = T.Empresa
                                                    and Ped.CodPedido = T.CodPedido
                                                    and Ped.TipoPedido <> 4
                                Where T.Empresa = @Empresa
                                  and T.NumSequencia = @Ped_Sequencia)*/
      and PC.ValorMinimoST <= (Select isNull(Sum(N.ValorSubTrib), 0)
                               From TempPrft110Nota T
                               left join NotasFiscais N on N.Empresa = T.Empresa
                                                    and N.TipoControle = T.TipoControle
                                                    and N.CodControle = T.CodControle
                                Where T.NumSequencia = @Ped_Sequencia)                                
      and Exists(select top 1 CPV.CodCondPagto
                 from CondPagtoVenc CPV
                 where CPV.CodCondPagto = @CodCondPagto)
                 
      and not PC.DiasVencimentoDupST < (select CPV.DiaVencimento
                                         from CondPagtoVenc CPV
                                         where CPV.CodCondPagto = @CodCondPagto
                                           and CPV.MesVencimento = 0)                 
      --Gabriella - 347726           
      /*and Exists(Select top 1 TmpV.Vencimento
                     From Tempprft110venc TmpV
                     where TmpV.NumSequencia = @Ped_Sequencia
                     and TmpV.Vencimento = (Convert(datetime, (Convert(Char(10), GetDate(), 103)), 103) + PC.DiasVencimentoDupST)
                     and TmpV.Valor = isNull((Select Sum(Ped.ValorSubTrib) + Sum(Ped.ValorFrete) + Sum(Ped.valordespesas)
                                                 From TempPrft110Pedido T
                                                 left join Pedidos Ped on Ped.Empresa = T.Empresa
                                                                      and Ped.CodPedido = T.CodPedido
                                                                      and Ped.TipoPedido <> 4
                                                 Where T.Empresa = @Empresa
                                                 and T.NumSequencia = @Ped_Sequencia),0))       */
                                                      
  end
  else
  begin                               
	  select @DuplicataST =         
	  Coalesce(1,0)                                           
	  from ParamControle PC                                      
	  where PC.Empresa = @Empresa                                      
		and PC.ValorMinimoST <> 0                                      
		and PC.ValorMinimoST <= (Select IsNull(Sum(Ped.ValorSubTrib), 0)                                      
								 From TempPrft110Pedido T                                      
								   left join Pedidos Ped on Ped.Empresa = T.Empresa                                      
								 and Ped.CodPedido = T.CodPedido  
								 --Gabriella - Chamado 281636  
								 and Ped.TipoPedido <> 4                                        
								 Where T.Empresa = @Empresa                                                    
								   and T.NumSequencia = @Ped_Sequencia)                     
		--MARCELO - CHAMADO 193583                            
		and Exists(select top 1 CPV.CodCondPagto                            
				   from CondPagtoVenc CPV                            
				   where CPV.CodCondPagto = @CodCondPagto)                         
		--MARCELO - CHAMADO 193772                        
		and not PC.DiasVencimentoDupST in (select CPV.DiaVencimento                        
		                                   from CondPagtoVenc CPV                        
		                                  where CPV.CodCondPagto = @CodCondPagto                        
		                                    and CPV.MesVencimento = 0)                        
		and PC.DiasVencimentoDupST < (select Max(CPV.DiaVencimento)
										   from CondPagtoVenc CPV                        
										   where CPV.CodCondPagto = @CodCondPagto                        
											 and CPV.MesVencimento = 0)
    end                                                                 

                                             
  if @DuplicataST is null                            
    set @DuplicataST = 0                             
      
  --MARCELO - CHAMADO 233642      
  set @DuplicataST = @DuplicataST * @QuantNotaItem      
        
  Select        
    @FlagGerarDuplicata = Par.FlagGerarDuplicata,        
    @DataMovimento = ParSerie.DataMovimento        
  From ParamControle Par        
    Left Join ParamControleSerie ParSerie on ParSerie.Empresa = @Empresa        
                                         and ParSerie.Serie = @SerieControle        
  where Par.Empresa = @Empresa                                                                                                
                                                                                                       
  If (LTrim(@CodCondPagto)<>'') and                                                                    
     ((Select Count(*)                                                                                                                          
       from TempPrft110Nota T                                                                                                                        
         Left Join Duplicatas D On T.Empresa = D.Empresa                                                                      
                               and T.TipoControle = D.TipoControle                                                                                   
                               and T.CodControle = D.CodControle                                                                            
         Left Join CondPagto Cond on Cond.Codigo = @CodCondPagto                                                                                                                  
       Where D.TipoDuplicata = @TipoDuplicata                                                                                                                            
         and T.NumSequencia = @Ped_Sequencia                                                                           
         and Cond.FlagAVista = 0) <>                                 
     --MARCELO - CHAMADO 184942                                      
     (Select (Count(*) * Case When (@FlagGerarDuplicata = 1) or (@TipoDuplicataPedido = 1)                                       
                              Then (select Count(CPV.CodCondPagto)                                       
                                    from CondPagtoVenc CPV                                       
                                    where CPV.CodCondPagto = @CodCondPagto)                                       
                              Else 0 End) + @DuplicataST                                      
      From TempPrft110Nota TAux                                       
        Left Join CondPagto Cond On Cond.Codigo = @CodCondPagto                                                         
      Where TAux.NumSequencia = @Ped_Sequencia                                                 
        and Cond.FlagAVista = 0))                                                                    
  begin                                                                                                                          
    Set @MensagemErro = 'Quantidade de duplicatas geradas não confere com a condição de Pagamento. Operação Cancelada!'                                                                                                                            
    Return                                                                                
            
        
  end                                                                                           
          
  --Confere os valores da duplicata com a nota                                                                                                                          
  If (@FlagGerarDuplicata = 1) and        
     (Select Sum(ValorTotalNota)                                                       
      from TempPrft110Nota T, NotasFiscais N                                  
      where N.Empresa = T.Empresa                                                                  
        and N.TipoControle = T.TipoControle                                                                                                                           
        and N.CodControle = T.CodControle                                                                                                           
        and T.NumSequencia = @Ped_Sequencia) <>                                                                                                                          
     (Select Abs(Sum(ValorTitulo))                                                                                                                           
      from TempPrft110Nota T, Duplicatas D                                                                                                               
      where T.Empresa = D.Empresa                                                                                                                             
        and T.TipoControle = D.TipoControle                                                                                                                             
        and D.CodControle = T.CodControle                                                                                                        
        and D.TipoDuplicata = @TipoDuplicata                                                     
        and T.NumSequencia = @Ped_Sequencia)                                                                                             
  Begin                                                                                                                            
    Set @MensagemErro = 'Valor das Notas não confere com o Total das Duplicatas Geradas. Operação Cancelada!'                                                                                      
    Return                  
  End                                                                                                                            
                                                                        
  --Confere os valores das Duplicatas Geradas e o Movimento de Caixa                                                                         

  --JALDO - CHAMADO 301399

  set @valor1 =  abs(IsNull( (Select ABS(Sum(ValorRecebido))                                                                            
                                     from  TempPrft110Caixa T                                                                        
                              Where T.NumSequencia   = @Venc_Sequencia                                                                        
                             and T.TipoLancamento = 'E'),0) -
                     IsNull((Select ABS(Sum(ValorRecebido))                                                   
                              from  TempPrft110Caixa T                                                                        
                            Where T.NumSequencia  = @Venc_Sequencia                                                                        
                           and T.TipoLancamento = 'S'),0))

  set @valor2 = (Select Abs(Sum(ValorDuplicata))                                                                                                                       
                   from TempPrft110Nota T, Duplicatas D                                                                                                                         
                 where T.Empresa        = D.Empresa                                                                                                                         
                    and T.TipoControle   = D.TipoControle                                                                                                                         
                    and D.CodControle    = T.CodControle                                                                                           
                    and D.TipoDuplicata  = @TipoDuplicata                                                                   
                    and D.DataPagamento is not NULL                                                                                                                        
                    and T.NumSequencia   = @Ped_Sequencia)

  If (@FlagGerarDuplicata = 1) and                                                                         
     (ABS(IsNull((Select ABS(Sum(ValorRecebido))                                                                            
                  from  TempPrft110Caixa T                                                                        
                  Where T.NumSequencia   = @Venc_Sequencia                                                                        
                    and T.TipoLancamento = 'E'),0) -                                          
          IsNull((Select ABS(Sum(ValorRecebido))                                                   
                  from  TempPrft110Caixa T                                                                        
                  Where T.NumSequencia  = @Venc_Sequencia                                                                        
      and T.TipoLancamento = 'S'),0)) <>                                                                                                     
     (Select Abs(Sum(ValorDuplicata))                                                                                                                       
      from TempPrft110Nota T, Duplicatas D                                                                                                                         
      where T.Empresa        = D.Empresa                                                                                                                         
        and T.TipoControle   = D.TipoControle                                                                                                                         
        and D.CodControle    = T.CodControle                                                                                           
        and D.TipoDuplicata  = @TipoDuplicata                                                                   
        and D.DataPagamento is not NULL                                                                                                                        
        and T.NumSequencia   = @Ped_Sequencia))                          
  Begin                                                                                                                        
   --Set @MensagemErro = 'Valor do Movimento de Caixa não confere com o Total das Baixas. Operação Cancelada!'      
   Set @MensagemErro = 'Valor do Movimento de Caixa ' + cast(@valor1 as varchar(10)) + ' não confere com o Total das Baixas. ' + cast(@valor2 as varchar(10)) + ' Operação Cancelada!'            
   Return                                                                                                                       
  End   

    
  --Eder Ramos Chamado 302201          
  if(@FlagNaoGerenciarNumDocumento = 0)  
  begin                                                                                                                                                                                                                                                     
   --Confere se a sequencia de numeração de nota esta correta    
   -- Rafael chamado 254456                                                                                                                          
   --If (@FlagCupom = 0) and Exists(Select Empresa From ParamControleSerie    
   If (@FlagCupom = 0) and Exists(Select Empresa From ParamControleSequencia                                                                      
          Where Empresa=@Empresa                                                                                                                          
            and Serie=@SerieControle                                                               
 --158510                             and UltimaNota <> (@SalvaNumDocumento + @QuantNota))                                              
            and UltimaNota <> (@SalvaNumDocumento + @QuantNotaItem))                                  
                                                         
   begin                                                                                                                   
  Set @MensagemErro = 'Nota Fiscal gerada está com numeração fora da sequência. Operação Cancelada!'                  
  Return                                                                                                                            
   end  
  end                                                                                    
                                              
  --Eder Ramos Chamado 302201  
  if (@FlagNaoGerenciarNumDocumento = 0)  
  begin  
   --158510                                              
   --Confere se a sequencia de numeração de nota esta correta                                   
   if (@FlagCupom = 0) and (@FlagSepararServico = 1) and     
   --Rafael chamado 254456                                        
   -- Exists(Select Empresa From ParamControleSerie    
    Exists(Select Empresa From ParamControleSequencia                                        
     Where Empresa = @Empresa                                              
       and Serie   = @SerieControleServico                                              
 --158510         and UltimaNota <> (@SalvaNumDocumento + @QuantNota))                     --MARCELO - CHAMADO 194026                      
 --               and UltimaNota <> (@SalvaNumDocumentoServico + @QuantNotaItem))                                              
       and UltimaNota <> (@SalvaNumDocumentoServico + @QuantNotaServico))                                                                                              
   begin                        
  Set @MensagemErro = 'Nota Fiscal de Serviço gerada está com numeração fora da sequência. Operação Cancelada!'                       
   Return                                                                                                                            
   end  
  end                                                                                                        
                                                                                                                                                              
  --Confere se há duplicatas com vencimento inferior a data da nota                                                                                             
  If (@FlagGerarDuplicata = 1) and                                                                                                                
      Exists(Select D.Empresa                                                             
             From TempPrft110Nota T, Duplicatas D                                                         
             Where T.Empresa = D.Empresa                                                                                                                             
               and T.TipoControle = D.TipoControle                                                                      
               and D.CodControle = T.CodControle                                                                                                                             
               and D.TipoDuplicata = @TipoDuplicata                                                                                                                          
               and T.NumSequencia = @Ped_Sequencia                                                                                                                        
               and (D.DataEmissao < @DataMovimento or                                                                                                                         
                    D.DataVencimento < @DataMovimento or                                                                                       
                    (D.DataPagamento is not null And D.DataPagamento < @DataMovimento)))                                                                                                                        
  begin                                                                                                                          
    Set @MensagemErro = 'Há duplicatas com vencimento ou pagamento inferior a data da nota. Operação Cancelada!'                       
    Return                                                                                                                            
  end            
        
  select @FlagObrigaLancFiscais = FlagObrigaLancFiscais        
  from Operacoes        
  where Codigo = @CodOperacao        
                                                                
  if (@FlagObrigaLancFiscais = 1) and      
     (not Exists (Select T.Empresa From TempPrft110Nota T                                                                
                    Left Join LancamentosFiscais LF on LF.Empresa = T.Empresa                                                                
                                                   and LF.TipoControle = T.TipoControle                                                                
                                                   and LF.CodControle = T.CodControle                                                                
                  Where T.NumSequencia = @Ped_Sequencia                                      
                    and LF.Empresa is not null))                                                                
  begin                                                                
    Set @MensagemErro = 'Lançamentos Fiscais não foram gerados, mas são obrigatórios de acordo com a operação fiscal. Operação Cancelada!'                                                                
    Return                   
  end          
END
GO

Alter Table NotasFiscais Add ValorComplICM Decimal(13,2)
Alter Table NotasFiscais Add ValorComplPIS Decimal(13,2)
Alter Table NotasFiscais Add ValorComplCOFINS Decimal(13,2)
go
sp_bindefault 'dbo.Numero', 'NotasFiscais.ValorComplICM'
go
sp_bindefault 'dbo.Numero', 'NotasFiscais.ValorComplPIS'
go
sp_bindefault 'dbo.Numero', 'NotasFiscais.ValorComplCOFINS'
go
Update NotasFiscais Set 
  ValorComplICM = 0, 
  ValorComplPIS = 0, 
  ValorComplCOFINS = 0  
go
Alter Table NotasFiscais Alter Column ValorComplICM Decimal(13,2) Not Null
Alter Table NotasFiscais Alter Column ValorComplPIS Decimal(13,2) Not Null
Alter Table NotasFiscais Alter Column ValorComplCOFINS Decimal(13,2) Not Null
go


Alter Table MovEstoqueImposto Add AliqComplICM Decimal(5,2)
Alter Table MovEstoqueImposto Add AliqComplPIS Decimal(5,2)
Alter Table MovEstoqueImposto Add AliqComplCOFINS Decimal(5,2)
go
sp_bindefault 'dbo.Numero', 'MovEstoqueImposto.AliqComplICM'
go
sp_bindefault 'dbo.Numero', 'MovEstoqueImposto.AliqComplPIS'
go
sp_bindefault 'dbo.Numero', 'MovEstoqueImposto.AliqComplCOFINS'
go
Update MovEstoqueImposto Set 
  AliqComplICM = 0, 
  AliqComplPIS = 0, 
  AliqComplCOFINS = 0  
go
Alter Table MovEstoqueImposto Alter Column AliqComplICM Decimal(5,2) Not Null
Alter Table MovEstoqueImposto Alter Column AliqComplPIS Decimal(5,2) Not Null
Alter Table MovEstoqueImposto Alter Column AliqComplCOFINS Decimal(5,2) Not Null
go

Alter Table MovComponente Add AliqComplICM Decimal(5,2)
Alter Table MovComponente Add AliqComplPIS Decimal(5,2)
Alter Table MovComponente Add AliqComplCOFINS Decimal(5,2)
go
sp_bindefault 'dbo.Numero', 'MovComponente.AliqComplICM'
go
sp_bindefault 'dbo.Numero', 'MovComponente.AliqComplPIS'
go
sp_bindefault 'dbo.Numero', 'MovComponente.AliqComplCOFINS'
go
Update MovComponente Set 
  AliqComplICM = 0, 
  AliqComplPIS = 0, 
  AliqComplCOFINS = 0  
go
Alter Table MovComponente Alter Column AliqComplICM Decimal(5,2) Not Null
Alter Table MovComponente Alter Column AliqComplPIS Decimal(5,2) Not Null
Alter Table MovComponente Alter Column AliqComplCOFINS Decimal(5,2) Not Null
go


Alter Table TempPrce050Itens Add AliqComplICM Decimal(5,2)
Alter Table TempPrce050Itens Add AliqComplPIS Decimal(5,2)
Alter Table TempPrce050Itens Add AliqComplCOFINS Decimal(5,2)
go
sp_bindefault 'dbo.Numero', 'TempPrce050Itens.AliqComplICM'
go
sp_bindefault 'dbo.Numero', 'TempPrce050Itens.AliqComplPIS'
go
sp_bindefault 'dbo.Numero', 'TempPrce050Itens.AliqComplCOFINS'
go
Update TempPrce050Itens Set 
  AliqComplICM = 0, 
  AliqComplPIS = 0, 
  AliqComplCOFINS = 0  
go
Alter Table TempPrce050Itens Alter Column AliqComplICM Decimal(5,2) Not Null
Alter Table TempPrce050Itens Alter Column AliqComplPIS Decimal(5,2) Not Null
Alter Table TempPrce050Itens Alter Column AliqComplCOFINS Decimal(5,2) Not Null
go


Alter Table TempPrce050Componentes Add AliqComplICM Decimal(5,2)
Alter Table TempPrce050Componentes Add AliqComplPIS Decimal(5,2)
Alter Table TempPrce050Componentes Add AliqComplCOFINS Decimal(5,2)
go
sp_bindefault 'dbo.Numero', 'TempPrce050Componentes.AliqComplICM'
go
sp_bindefault 'dbo.Numero', 'TempPrce050Componentes.AliqComplPIS'
go
sp_bindefault 'dbo.Numero', 'TempPrce050Componentes.AliqComplCOFINS'
go
Update TempPrce050Componentes Set 
  AliqComplICM = 0, 
  AliqComplPIS = 0, 
  AliqComplCOFINS = 0  
go
Alter Table TempPrce050Componentes Alter Column AliqComplICM Decimal(5,2) Not Null
Alter Table TempPrce050Componentes Alter Column AliqComplPIS Decimal(5,2) Not Null
Alter Table TempPrce050Componentes Alter Column AliqComplCOFINS Decimal(5,2) Not Null
go


Alter Table ClassFiscais Add AliqComplPIS Decimal(5,2)
Alter Table ClassFiscais Add AliqComplCOFINS Decimal(5,2)
Alter Table ClassFiscais Add FlagPisCofinsComplExterior SmallInt
go
sp_bindefault 'dbo.Numero', 'ClassFiscais.AliqComplPIS'
go
sp_bindefault 'dbo.Numero', 'ClassFiscais.AliqComplCOFINS'
go
sp_bindefault 'dbo.Numero', 'ClassFiscais.FlagPisCofinsComplExterior'
go
Update ClassFiscais Set 
  AliqComplPIS = 0, 
  AliqComplCOFINS = 0,
  FlagPisCofinsComplExterior = 0  
go
Alter Table ClassFiscais Alter Column AliqComplPIS Decimal(5,2) Not Null
Alter Table ClassFiscais Alter Column AliqComplCOFINS Decimal(5,2) Not Null
Alter Table ClassFiscais Alter Column FlagPisCofinsComplExterior SmallInt Not Null
go


Alter Table Tributacoes Add AliqComplICM Decimal(5,2)
Alter Table Tributacoes Add AliqComplPIS Decimal(5,2)
Alter Table Tributacoes Add AliqComplCOFINS Decimal(5,2)
Alter Table Tributacoes Add FlagPisCofinsComplExterior SmallInt
go
sp_bindefault 'dbo.Numero', 'Tributacoes.AliqComplICM'
go
sp_bindefault 'dbo.Numero', 'Tributacoes.AliqComplPIS'
go
sp_bindefault 'dbo.Numero', 'Tributacoes.AliqComplCOFINS'
go
sp_bindefault 'dbo.Numero', 'Tributacoes.FlagPisCofinsComplExterior'
go
Update Tributacoes Set 
  AliqComplICM = 0, 
  AliqComplPIS = 0, 
  AliqComplCOFINS = 0,
  FlagPisCofinsComplExterior = 0   
go
Alter Table Tributacoes Alter Column AliqComplICM Decimal(5,2) Not Null
Alter Table Tributacoes Alter Column AliqComplPIS Decimal(5,2) Not Null
Alter Table Tributacoes Alter Column AliqComplCOFINS Decimal(5,2) Not Null
Alter Table Tributacoes Alter Column FlagPisCofinsComplExterior SmallInt Not Null
go

ALTER FUNCTION [dbo].[Calcular_PisCofins]        
(@Empresa numeric(2),                                  
 @CodProduto numeric(7),            
 @CodEntidade char(7),                 
 @CodTributacao  char(5),                
 @CodOperacao numeric(5),             
 @CodClassFiscal varchar(15),            
 @ValorTotal  decimal(11,2),                  
 @ValorAcrDespesas decimal(11,2),             
 @FlagEntrada smallint)                                           
Returns @Campos Table                         
      (ValorBasePisCofins decimal(11,2),               
       AliqPis decimal (4,2),                
       ValorPis decimal (11,2),              
       AliqCofins decimal(4,2),              
       ValorCofins decimal(11,2),        
       NumCstPisCofins varchar(2),      
       NatReceitaPisCofins int,     
       NatBaseCalcCredito smallint,
       AliqComplPIS Decimal(5,2),
       AliqComplCOFINS Decimal(5,2))            
as                                 
                                          
Begin             
/*********************                                                          
   VERSÃO 2.10                                                          
*********************/                                                     
  Declare @AEmpMestre char(7)            
  Declare @ValorBasePisCofins decimal(11,2)               
  Declare @AliqPis decimal (4,2)                
  Declare @ValorPis decimal (11,2)              
  Declare @AliqCofins decimal(4,2)              
  Declare @ValorCofins decimal(11,2)            
  Declare @FlagOpCalcPISCOFINS smallint --JALDO - CHAMADO 290329          
  Declare @NumCstPisCofins varchar(2)       
  Declare @CSTPisCofins smallint          
  -- Renato - 297792      
  Declare @NatReceitaPISCOFINS int      
  -- Renato - 332318    
  Declare @NatBaseCalcCredito smallint  
  -- Renato - 361650
  Declare @AliqComplPIS Decimal(5,2)
  Declare @AliqComplCOFINS Decimal(5,2)   
      
  Set @AEmpMestre = 'M' + Replicate('0',(6 - Len(@Empresa))) + Cast(@Empresa as varchar)               
            
  -- Calculando Valor Base do PIS e COFINS            
  Set @ValorBasePisCofins = @ValorTotal + @ValorAcrDespesas             
              
  -- Obtendo Aliquota de PIS e COFINS            
  Select             
     @CSTPisCofins =        
       
    Case When (Op.FlagTribGrupoEconomico = 1) and (CF.FlagIsentoCofins = 1) and (@FlagEntrada = 0) Then 1            
    Else            
       Case             
       When (isNull(Op.NumCST_PISCOFINS,-1) not in(-1,0)) Then Op.NumCST_PISCOFINS          
       -- Renato - 317372          
       When (isNull(CF.NumCST_PISCOFINSDevol,-1) not in (-1,0)) and (@FlagEntrada = 1) and (Op.TipoMovimento = 1) Then CF.NumCST_PISCOFINSDevol       
       -- Renato - 297792      
       When (isNull(CF.NumCST_PISCOFINSEntr,-1) not in(-1,0)) and (@FlagEntrada = 1) Then CF.NumCST_PISCOFINSEntr         
       When (isNull(CF.NumCST_PISCOFINS,-1) not in(-1,0)) Then CF.NumCST_PISCOFINS        
       Else Trib.NumCST_PISCOFINS             
     End            
   End,        
            
     @AliqPis =             
       Case             
         When PC.AliqPisSimples > 0 Then PC.AliqPisSimples             
         When isNull(CF.NumCST_PISCOFINS,-1) not in (-1,0) Then CF.AliqPIS             
         Else Trib.AliqPIS             
       End,             
            
     @AliqCofins =                         
       Case             
         When PC.AliqCofinsSimples > 0 Then PC.AliqCofinsSimples            
         When isNull(CF.NumCST_PISCOFINS,-1) not in (-1,0) Then CF.AliqCOFINS            
         Else Trib.AliqCOFINS             
       End,   
       
     @AliqComplPis =             
       Case     
         When (CF.FlagPisCofinsComplExterior = 1) and 
              (isNull(CF.NumCST_PISCOFINS,-1) not in (-1,0)) and 
              (Cid.CodEstado <> 'EX') Then 0    
                         
         When isNull(CF.NumCST_PISCOFINS,-1) not in (-1,0) Then CF.AliqComplPis 
         
         When (Trib.FlagPisCofinsComplExterior = 1) and 
              (Cid.CodEstado <> 'EX') Then 0    
                      
         Else Trib.AliqComplPis             
       End,             
            
     @AliqComplCofins =                         
       Case         
         When (CF.FlagPisCofinsComplExterior = 1) and 
              (isNull(CF.NumCST_PISCOFINS,-1) not in (-1,0)) and 
              (Cid.CodEstado <> 'EX') Then 0   
                  
         When isNull(CF.NumCST_PISCOFINS,-1) not in (-1,0) Then CF.AliqComplCofins 
         
         When (Trib.FlagPisCofinsComplExterior = 1) and 
              (Cid.CodEstado <> 'EX') Then 0    
                  
         Else Trib.AliqComplCofins             
       End,
              
     -- Renato - 332318     
     @NatBaseCalcCredito =        
    Case       
      -- Só retorna a natureza da base de calculo do crédito quando for movimento de entrada    
      When (@FlagEntrada = 0) Then -1            
   When (isNull(Op.NatBaseCalcCredito,-1) not in(-1,0)) Then Op.NatBaseCalcCredito          
   When (isNull(CF.NatBaseCalcCredito,-1) not in(-1,0)) Then CF.NatBaseCalcCredito        
   Else Trib.NatBaseCalcCredito                   
    End,            
       --JALDO - CHAMADO 290329                
       @FlagOpCalcPISCOFINS = Op.FlagCalcPIS_COFINS    
          
                   
  From  Operacoes Op             
        left join ParamControle PC on PC.Empresa = @Empresa             
        left join ClassFiscais CF on CF.Codigo = @CodClassFiscal             
        left join Tributacoes Trib on Trib.Codigo = @CodTributacao            
              and Trib.IdLeitura = dbo.LeituraTributacao(@CodTributacao,@CodEntidade, @CodOperacao, @AEmpMestre)  
        Left Join Entidades E on E.Codigo = @CodEntidade
        Left Join Cidades Cid on Cid.Codigo = E.CodCidade
           
  Where Op.Codigo = @CodOperacao            
  -- Renato - 283519             
  -- and @CodProduto <> 8888888            
            
  if (@AliqPis is null)            
    Set @AliqPis = 0            
            
  if (@AliqCofins is null)            
    Set @AliqCofins = 0        
      
  if (@AliqComplPis is null)            
    Set @AliqComplPis = 0            
            
  if (@AliqComplCofins is null)            
    Set @AliqComplCofins = 0     
  
  --327889    
  if @NatBaseCalcCredito is null    
    Set @NatBaseCalcCredito = -1    
        
  --Renato - 297792      
  Select @NatReceitaPisCofins = NatReceitaPisCofins       
  From ClassFiscaisNatReceita       
  Where CodClassFiscal = @CodClassFiscal      
    and NumCST_PISCOFINS = @CSTPisCofins        
      
  if (@NatReceitaPisCofins is null)            
  Set @NatReceitaPisCofins = 0               
              
  -- Verificando CST e definindo os Valores de Pis e Cofins            
  --Renato - 297792        
  --If ( (@CSTPisCofins in (1,2,99)) and (@FlagOpCalcPISCOFINS = 1) )          
  If ( (@CSTPisCofins in (1,2,49,50,51,52,53,54,55,56,60,61,62,63,64,65,66,67,98,99)) and (@FlagOpCalcPISCOFINS = 1) )         
  Begin             
    Set @ValorPis    = Round((@ValorBasePisCofins * (@AliqPIS / 100)),2)            
    Set @ValorCofins = Round((@ValorBasePisCofins * (@AliqCOFINS / 100)),2)             
  End            
  Else            
  Begin            
    --Ronaldo Chamado 358.954  
    --Set @ValorBasePisCofins = 0            
    if @CSTPisCofins not in (4,6,73)  
      Set @ValorBasePisCofins = 0 
                 
    Set @AliqPis = 0   
    Set @AliqComplPis = 0               
    Set @ValorPis = 0            
    Set @AliqCofins = 0            
    Set @AliqComplCofins = 0  
    Set @ValorCofins = 0            
  End        
            
  if @CSTPisCofins <> -1    
    Set @NumCstPisCofins = Replicate('0', 2 - len(@CSTPisCofins)) + Cast(@CSTPisCofins as varchar(2))        
  else        
    Set @NumCstPisCofins = null         
        
  Insert Into @Campos         
           (ValorBasePisCofins, AliqPis, AliqComplPis, ValorPis, AliqCofins, AliqComplCofins, ValorCofins, NumCstPisCofins, NatReceitaPisCofins, NatBaseCalcCredito)        
         Values         
           (@ValorBasePisCofins, @AliqPis, @AliqComplPis, @ValorPis,  @AliqCofins, @AliqComplCofins, @ValorCofins, @NumCstPisCofins, @NatReceitaPisCofins, @NatBaseCalcCredito)        
            
  Return            
End 

Go


ALTER FUNCTION [dbo].[Calcular_ICM]                  
(@Empresa numeric(2),                                                                                                                                                          
 @CodProduto numeric(7),                                                                                                                                                          
 @CodTributacao  char(5),                                                                                                                                                          
 @CodEntidade char(7),                                                                                                                                                          
 @CodOperacao numeric(5),                                                                                                                                                          
 @ValorTotal  decimal(11,2),                                                                                                                                                          
 @AcrescimoBaseICM decimal(11,2),                                                                                                                                                          
 @AcrescimoBaseSubTrib decimal(11,2),                                                                                                                                                      
 @RedBaseSubTrib decimal(4,2),                                                                                                                                                      
 @AliqIPI decimal(4,2),                                                                                                                                                          
 @CodClassFiscal varchar(15),                                                                                                                                                          
 @FlagEntrada numeric(1),                                                                                                                                                              
 @AcrescimoRedVenda decimal(11,2),                                                                                                                                                          
 @CodListaPreco numeric(7),                                                                                                                                                          
 @AliqICMFixo decimal(4,2),                                                                                                                                    
 @CodSubTributaria integer,                                                 
 -- Renato - 278440                                                                                           
 --@PerAcrescimoRedCusto decimal(15,8)                                              
 @PerRedDespesa decimal(15,8),                   
 --Gabriella - 333391                  
 @AcrescimoBaseIPI decimal(11,2)                  
)                                                                                                                                                            
Returns @Campos Table                                                                                                                                                          
      (AliqICM decimal(4,2),                                                                                                                                                          
       ValorBaseICM decimal (11,2),                                                                                                                                                          
       ValorICM decimal (11,2),        
       ValorIsentoICM decimal(11,2),              
       ValorOutrasICM decimal(11,2),                  
       ValorBaseSubTrib decimal(11,2),                                  
       PerReducaoICM decimal(5,2),                                    
       PerRedBaseSubTrib decimal(4,2),                                               
       ValorSubTrib decimal (11,2),                                                                          
       ValorBaseSubTribCarga decimal(11,2),                                                                                    
       ValorSubTribCarga decimal(11,2),                                                                                                 
       FatorRedCusto decimal (15,8),                                                                                        
       FatorRedVenda decimal (7,4),                                                                                                            
       NumCFOP char(10),                                                                                                            
       AliqPISCOFINS decimal (4,2),                                              
       -- Renato - Chamado 272165                                              
       ValorBasePisCofins decimal (11,2),                                              
       AliqPis decimal (4,2),                                      
       AliqCofins decimal (4,2),                                      
       NumCstICM varchar(3),                                      
       NumCstIPI varchar(2),                                      
       NumCstPisCofins varchar(2),                                      
       NumCsosn varchar(3),                                
       -- Renato - 297792                                
       NatReceitaPisCofins int,                  
       -- Renato - 332318                  
       NatBaseCalcCredito smallint,                  
       --Ronaldo 343696      
       IndNaturezaFrete smallint,      
             
       --Gabriella - 333391                         
       ValorBaseIPI decimal (11,2),                                                                                                                                                                                                                           
       ValorIsentoIPI decimal(11,2),                                                                                                                                                          
       ValorOutrasIPI decimal(11,2),  
         
       --Renato - 360358  
       AliqICMSST decimal(5,2),  
       PercMvaICMSST decimal(5,2),  
       
       --Renato - 361650
       AliqComplICM Decimal(5,2),
       AliqComplPIS Decimal(5,2),
       AliqComplCOFINS Decimal(5,2)
              
       )                                  
as                                                                   
                                                                            
begin                                                                                           
/*********************                                                                                        
   VERSÃO 3.01                                                                                       
*********************/                                                                                   
                                                                                                              
declare @CodEstadoLeitura char(2)                                                                                                                 
declare @AliqICM decimal(4,2)                                                                                                                                      
declare @ValorBaseICM decimal (11,2)                                                                                                                                                          
declare @ValorICM decimal (11,2)                                                                                                                                                          
declare @ValorIsentoICM decimal(11,2)                               
declare @ValorOutrasICM decimal(11,2)                                        
declare @PerReducaoICM decimal(5,2)                  
declare @ValorBaseSubTrib decimal(11,2)                                        
declare @ValorSubTrib decimal (11,2)                                                                                                                       
declare @ValorBaseSubTribCarga decimal(11,2)                                                                                                                               
declare @ValorSubTribCarga decimal(11,2)                                                                                                                           
declare @FatorRedCusto decimal (15,8)                                                                                                                          
declare @FatorRedVenda decimal (7,4)                                                                                                                      
declare @NumCFOP char(10)                                                                               
declare @AliqPISCOFINS decimal(4,2)                                    
declare @NumCstICM varchar(3)                                      
declare @NumCstIPI varchar(2)                                      
declare @NumCstPisCofins varchar(2)                                      
declare @NumCsosn varchar(3)                                 
--Renato - 297792                                
declare @NatReceitaPisCofins Int                    
--Renato - 332318                                   
declare @NatBaseCalcCredito SmallInt       
--Ronaldo 343696      
Declare @OprIndNaturezaFrete SmallInt                  
                                                                                                                                               
declare @AEmpMestre char(7)                                                                                                                                   
declare @VAuxValorIPI decimal(11,2)                                                                                                                                                          
declare @AuxCodTributacaoSubTrib Char(5)                                           
declare @AuxFlagSubTributaria numeric(1)                                                                                                                         
declare @AuxEntidade char(7)                                                                                                                                    
declare @ValorBaseSubTribDestino decimal(11,2)                                                                                                                                                                
                                                                                                                    
declare @CalcBaseSubTrib decimal(11,2)                                                                                             
declare @CalcValorSubTrib decimal (11,2)                                                                                                                                                          
declare @CalcBaseSubTribDestino decimal(11,2)                                                                                          
                                                                                                 
                                                               
declare @ParTipoReducaoICM numeric(1)                                                                                                             
declare @ParAliqCPMF decimal(4,2)                                                                                                    
declare @ParTipoRegimeTributario smallint                                      
declare @ParAliqICMSimples decimal(4,2)                                      
                                      
declare @EntTipoPessoa char(1)                                                                                                                                    
declare @CidCodEstado char(2)                                                                               
declare @EstAliqContrib decimal(4,2)                                 
declare @EstFlagConvSub numeric(1)                                                                                                                
declare @EstAliqInterna decimal(4,2)                                                                                                        
                                                    
declare @CidEmpCodEstado char(2)                                                                                                                                                  
declare @TriAliqICM decimal(4,2)                                                     
declare @TriFlagIsentoProdutor numeric(1)                                                                                                                                                
declare @TriFlagSubTributaria numeric(1)                                                                                                                                                          
declare @TriMargemLucroSubst decimal(5,2)                                                                                                            
--Gabriella - 302581                  
--declare @TriPerReducaoICM decimal(4,2)                  
declare @TriPerReducaoICM decimal(6,4)                  
declare @TriPerRedMargem decimal(4,2)                                                                                           
declare @TriTipoCFOP numeric(2)                                                                                                                                
declare @TriCodTributacaoSubTrib char(5)                                                      
declare @TriTipoValorNaoTributado numeric(1)                                                                                                                                                          
declare @TriPerReducaoSubTrib numeric(6,2)                                              
--Rafael chamado 272635                                              
declare @TriAliqInternaSubTrib numeric(5,2)                                                                                                                            
declare @TriNumCST_ICM smallint                                      
declare @TriNumCST_IPI smallint                                      
declare @TriNumCSOSN smallint                                      
                                      
declare @ClaFlagSubTributaria numeric(1)                                                           
declare @ClaAliqPISCOFINS decimal(4,2)                                                                                                              
declare @GruFlagSubTributaria numeric(1)                                                                                                                                             
                                                                                                                                                      
declare @LisPercAcrescimoAdm1 decimal(4,2)                                                                                                                                                          
declare @LisPercAcrescimoAdm2 decimal(4,2)                                                         
declare @LisPercAcrescimoAdm3 decimal(4,2)                                                                                                 
                                                                                                                            
declare @SubAliquotaInterna decimal(5, 2)                                                  
declare @SubMargemLucro decimal(5, 2)                                                        
declare @SubPercReducao decimal(5, 2)                                                                                                                                    
declare @SubIndiceReducao decimal(9, 6)                                                                                                                  
declare @SubFlagAbaterICM smallint                                                      
declare @SubFlagSomaIPI smallint                                                                                                                              
                     
declare @OprTipoICM numeric(1)                                                                                               
declare @OprTipoIPI numeric(1)                                                      
declare @OprAliqICMFixo decimal(4,2)                                                                     
declare @OprPerRedICM decimal(4,2)                                                                                                             
declare @OprPerRedMargem decimal(4,2)                                                               
declare @OprCFOP1_Normal char(10)                                                                                                     
declare @OprCFOP1_Normal_NCFora char(10)                                                                              
declare @OprCFOP2_Industrializado char(10)                                                                                                                                                          
declare @OprCFOP2_Industrializado_NCFora char(10)                                                                           
declare @OprCFOP3_SubRevenda char(10)                                                                                                                                             
declare @OprCFOP3_SubRevenda_NC char(10)                                                                                                            
declare @OprCFOP4_SubRevendaML char(10)                                                                                                         
declare @OprCFOP4_SubRevendaML_NC char(10)                                                             
declare @OprCFOP5_SubFabricacao char(10)                                                                                                               
declare @OprCFOP5_SubFabricacao_NC char(10)                                                                              
declare @OprCFOP6_SubFabricacaoML char(10)                                                                                                                                                         
declare @OprCFOP6_SubFabricacaoML_NC char(10)                                     
declare @OprCFOP7_Importado char(10)                                                                                                                                                          
declare @OprCFOP_Servico    char(10)                                                                                                                                
declare @OprCFOP_Servico_NCFora char(10)                                                                                           
declare @OprCFOP9_Petroleo varchar(10)                                                                        
declare @OprCFOP9_Petroleo_NC varchar(10)                                                                                                                                   
declare @OprFlagCalcPIS_COFINS numeric(1)                                                                                                                                                          
declare @OprFlagDefaultLancamentoOutras numeric(1)                                                
declare @OprFlagSubTribIPI numeric(5)                                                                                       
declare @OprTipoMovimento smallint                                                                                                                                              
declare @OprTipoSubTributaria smallint                                  
--Eder - Chamado 262460                                                      
declare @OprTipoSubTributariaCarga smallint                                                           
--Eder - 303720                                  
declare @OprFlagIPISobrePisCofins smallint                   
--Gabriella - 256424                  
declare @OprFlagIPISobreBaseICM smallint                                   
declare @ProOrigem smallint                                      
--MARCELO - CHAMADO 192283              
declare @RegiaoDestino varchar(10)                                                                                                                                                          
declare @RegiaoDestinoLeitura varchar(10)                                                                                                                                                      
--Eder - Chamado 243637                                                                     
declare @RegiaoOrigem varchar(10)                                                              
--Eder - Chamado 243557                                                                  
declare @EmpId varchar(15)                       
                                                                  
--JALDO - CHAMADO 248899                                                          
--JALDO - CHAMADO 243556                                                                      
--declare @TipoConsideraIPICalculoICM int                                                   
                                  
--Eder - 303720                                              
declare @AcrDespesasPisCOFINS numeric(11,2)                                  
-- Renato - Chamado 272165                                                
declare @ValorBasePisCofins numeric(11,2)                                              
declare @AliqPis numeric(4,2)                                           
declare @AliqCofins numeric(4,2)                                             
-- Renato - 278440                                            
declare @FlagDeduzirDespNaoInclNaMargem SmallInt                                              
-- Renato - 290579                                            
declare @PercSubTribCusto decimal(5,2)                                            
declare @PercICMCusto decimal(5,2)                              
--Ronaldo Chamado 313933                            
declare @RegTribPercIvaSimplicado decimal(5,2)                                                        
--Ronaldo Chamado 317536                  
declare @TriFlagPrevalecerAliqIcm SmallInt                  
--Gabriella - 333391                       
declare @ValorBaseIPI decimal (11,2)                                                                                                                                                                                                                                                                                       
declare @ValorIsentoIPI decimal(11,2)                                                                                                                                                         
declare @ValorOutrasIPI decimal(11,2)                  
declare @TriTipoValorNaoTributadoIPI numeric(1)                   
-- Renato - 341779                               
declare @OprFlagICMSSobreServicos SmallInt    

--Renato - 361650
declare @TriAliqComplICM Decimal(5,2)
declare @AliqComplPIS Decimal(5,2)
declare @AliqComplCOFINS Decimal(5,2)
           
                                                                   
set @VAuxValorIPI = 0                                                                                      
set @AliqICM = 0                                                                                                          
set @ValorBaseICM = 0                                                       
set @ValorICM = 0                                                                                                          
set @ValorIsentoICM = 0                                                                       
set @ValorOutrasICM = 0                                                                                                                                     
set @ValorBaseSubTrib = 0                                                                     
set @ValorSubTrib = 0               
set @ValorBaseSubTribCarga = 0                                  
set @ValorSubTribCarga = 0                                                                                                                                                      
set @FatorRedCusto = 0                                   
set @FatorRedVenda = 0                                                                               
set @NumCFOP = ''                                                                                                                                            
Set @AliqPISCOFINS = 0                                                
                                         
--Renato - Chamado 272165                                                               
set @ValorBasePisCofins = 0                                              
set @AliqPis = 0                                              
set @AliqCofins = 0                                                   
                            
set @AEmpMestre = 'M' + Replicate('0',(6 - Len(@Empresa))) + Cast(@Empresa as varchar)                  
                  
--Gabriella - 333391                    
set @ValorBaseIPI = 0                                                                               
set @ValorIsentoIPI = 0                  
set @ValorOutrasIPI = 0                  
              
--JALDO - CHAMADO 353913        
set @CalcValorSubTrib = 0        
set @CalcBaseSubTrib = 0     
                                                                                                                                                          
    
--Eder - Chamado 243557                                                                  
Select @EmpId = Id From Empresas                                                                  
Where Codigo = @Empresa                                                                  
                                                                                                                                
                                                                                                                                 
select @ParTipoReducaoICM=TipoReducaoICM,                                      
       @ParAliqCPMF=AliqCPMF,                                      
       --Eder - Chamado 295853                                      
       @ParTipoRegimeTributario=TipoRegimeTributario,                                      
       @ParAliqICMSimples=AliqICMSimples                                      
  From ParamControle                                       
  where Empresa=@Empresa                                      
                                                                            
If (@ParTipoReducaoICM is null)                                                                                                                                                          
   Set @ParTipoReducaoICM = 0                      
If (@ParAliqCPMF is null)                                                            
   Set @ParAliqCPMF = 0                                                  
If (@ParTipoRegimeTributario is null)                                      
   Set @ParTipoRegimeTributario = 0                                       
If (@ParAliqICMSImples = 0)                                      
   Set @ParAliqICMSImples = 0                                      
                                    --Renato - 278440                                             
Select @FlagDeduzirDespNaoInclNaMargem = FlagDeduzirDespNaoInclNaMargem                                              
From ConfiguracaoSistema                                                                                                                           
                        
                                                                                                                    
select @CidEmpCodEstado=Cidades.CodEstado,                                                              
       --Eder - Chamado 243637                                                              
       @RegiaoOrigem=Est.RegiaoDestino                                             
  from Entidades                                         
  Left Join Cidades on Cidades.Codigo = Entidades.CodCidade                                                            
  Left Join Estados Est on Est.CodOrigem = Cidades.CodEstado                                                              
                    and Est.CodDestino = Cidades.CodEstado                                                              
 where Entidades.Codigo = @AEmpMestre                      
                                                                                                               
                                                                    
select @EntTipoPessoa=TipoPessoa,                                                                            
       @CidCodEstado=Cidades.CodEstado,                                                     
       @CodEstadoLeitura=Cidades.CodEstado                                      
       --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                                                                                                                                  
Set @ClaAliqPISCOFINS = 0                                                       
                                                     
If ltrim(@CodClassFiscal) <> ''                                                                                                             
begin                                                                                                                                      
  Select @ClaFlagSubTributaria = FlagSubTributaria,                                                                                             
         @ClaAliqPISCOFINS = AliqPISCOFINS                                                                                                                                                          
    From ClassFiscais                                                                                                                       
    Where Codigo=@CodClassFiscal                                      
  If (@ClaFlagSubTributaria is null)                                                                                                                      
     Set @ClaFlagSubTributaria = 1                                                                                         
  If (@ClaAliqPISCOFINS is null)                                                      
     Set @ClaAliqPISCOFINS = 0                                                               
end                                                                                                                               
         
                                                                                            
select @OprTipoICM                      = TipoICM,                                                                                                                                                          
       @OprTipoIPI                      = TipoIPI,                                                                                
       @OprAliqICMFixo                  = AliqICMFixo,                                                                          
       @OprPerRedICM                    = PerRedICM,                                                                                                                                                          
       @OprPerRedMargem                 = PerRedMargem,            
       @OprCFOP1_Normal                 = CFOP1_Normal,                                                                                    
       @OprCFOP1_Normal_NCFora          = CFOP1_Normal_NCFora,                                                                                                                                                          
       @OprCFOP2_Industrializado        = CFOP2_Industrializado,                                                                                                                                                          
       @OprCFOP2_Industrializado_NCFora = CFOP2_Industrializado_NCFora,                                   
       @OprCFOP3_SubRevenda             = CFOP3_SubRevenda,                                                                                                                                                          
       @OprCFOP3_SubRevenda_NC          = CFOP3_SubRevenda_NC,                        
       @OprCFOP4_SubRevendaML           = CFOP4_SubRevendaML,                                                                                                        
       @OprCFOP4_SubRevendaML_NC        = CFOP4_SubRevendaML_NC,                                                                                                                                 
       @OprCFOP5_SubFabricacao          = CFOP5_SubFabricacao,                                                                                             
       @OprCFOP5_SubFabricacao_NC       = CFOP5_SubFabricacao_NC,                                       
       @OprCFOP6_SubFabricacaoML        = CFOP6_SubFabricacaoML,                                                                                                                      
       @OprCFOP6_SubFabricacaoML_NC     = CFOP6_SubFabricacaoML_NC,                                                                                                                                                
       @OprCFOP7_Importado              = CFOP7_Importado,                                                                                                      
       @OprCFOP_Servico                 = CFOP_Servico,                                                                
       @OprCFOP_Servico_NCFora          = CFOP_Servico_NCFora,                                                                                                                                      
       @OprFlagCalcPIS_COFINS           = FlagCalcPIS_COFINS,                                                                        
       @OprFlagDefaultLancamentoOutras  = FlagDefaultLancamentoOutras,   
       @OprCFOP9_Petroleo               = CFOP9_Petroleo,                                                    
       @OprCFOP9_Petroleo_NC            = CFOP9_Petroleo_NC,                                                                                                                      
       @OprFlagSubTribIPI               = FlagSubTribIPI,                                        
       @OprTipoMovimento                = TipoMovimento,                                                                                                                                        
       @OprTipoSubTributaria            = TipoSubTributaria,                                                      
       --Eder - Chamado 262460                      
       @OprTipoSubTributariaCarga       = TipoSubTributariaCarga,                                  
       --Eder 303720                                  
       @OprFlagIPISobrePisCofins        = FlagIPISobrePisCofins,                    
       --Gabriella - 256424                  
       @OprFlagIPISobreBaseICM          = FlagIPISobreBaseICM,                     
       -- Renato - 341779                               
       @OprFlagICMSSobreServicos        = FlagICMSSobreServicos,        
       --Ronaldo 343696      
       @OprIndNaturezaFrete             = IndNaturezaFrete      
  From Operacoes                                                                                                                  
 where Codigo = @CodOperacao                                                                                               
                                                                                            
                                                                                               
If (@OprTipoICM is null)                                                                                            
   Set @OprTipoICM = 0                                                                                                                               
If (@OprTipoIPI is null)                                                                          
   Set @OprTipoIPI = 0                                                                      
If (@OprAliqICMFixo is null)                                       
   Set @OprAliqICMFixo = 0                                                                                                                                          
If (@OprPerRedICM is null)                                                                                                                            
   Set @OprPerRedICM = 0                                                                                                                                                          
If (@OprPerRedMargem is null)                                                                                                                                                          
   Set @OprPerRedMargem = 0                                                                                                                             
If (@OprFlagCalcPIS_COFINS is null)                                                                                                                                                          
Set @OprFlagCalcPIS_COFINS = 0                                  
If @OprFlagCalcPIS_COFINS = 1                                                                                                                                                          
   Set @AliqPISCOFINS = @ClaAliqPISCOFINS                                         
If (@OprFlagDefaultLancamentoOutras is null)                                                                               
   Set @OprFlagDefaultLancamentoOutras = 0                                                                                                                                
If (@OprFlagSubTribIPI is null)                                                                                                                    
   Set @OprFlagSubTribIPI = 0                                                            
If (@OprTipoSubTributaria is null)                                                                                                         
   Set @OprTipoSubTributaria = 0                                                          
If (@OprTipoMovimento is null)                                                                                              
   Set @OprTipoMovimento = 0                    
--Eder - Chamado 262460                                                      
If (@OprTipoSubTributariaCarga is null)                                                      
   Set @OprTipoSubTributariaCarga = 0                                   
if (@OprFlagIPISobrePisCofins is null)                                  
   Set @OprFlagIPISobrePisCofins = 0                   
--Gabriella - 256424                  
if (@OprFlagIPISobreBaseICM is null)                                  
   Set @OprFlagIPISobreBaseICM = 0                                                                                                                           
                                                                                                     
Set @GruFlagSubTributaria = 1                             
Select @GruFlagSubTributaria = Gru.FlagSubTributaria,                                      
     @ProOrigem = Pro.Origem                                      
  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                                                                                                                                         
  From ItemlistaPreco Ilp                                                                                                                               
  Left Join Empresas Emp on Emp.Codigo = @Empresa                                                                                                                                
 Where Ilp.CodLista=@CodListaPreco                                                                                 
   and Ilp.CodProduto=@CodProduto                                                                        
   and Ilp.Empresa = Emp.EmpresaListaPreco                                                                                    
                                                                                                                                                          
If (@LisPercAcrescimoAdm1 is null)                                                                                                                                   
  Set @LisPercAcrescimoAdm1 = 0                                                                                                    
If (@LisPercAcrescimoAdm2 is null)                                                                                                                              
  Set @LisPercAcrescimoAdm2 = 0                                                                                                                                                          
If (@LisPercAcrescimoAdm3 is null)                                                                                                              
  Set @LisPercAcrescimoAdm3 = 0                                             
                                                                                                
                                                                                                                               
select @TriAliqICM=AliqICM,                                             
       @TriFlagIsentoProdutor=FlagIsentoProdutor,                                                                   
       @TriFlagSubTributaria=FlagSubTributaria,                                                                                                         
       @TriMargemLucroSubst=MargemLucroSubst,                                                                                                             
       @TriPerReducaoICM=PerReducaoICM,                                                                                                                                                          
       @TriPerRedMargem=PerRedMargem,                                    
       @TriTipoCFOP=TipoCFOP,                                                                                                                          
       @TriCodTributacaoSubTrib=CodTributacaoSubTrib,                                                                                                                                                          
       @TriTipoValorNaoTributado=TipoValorNaoTributado,                                                        
       @TriPerReducaoSubTrib = PerReducaoSubTrib,                                              
       --Rafael chamado 272635                                              
       @TriAliqInternaSubTrib= AliqInternaSubTrib,                                      
       @TriNumCST_ICM = NumCST_ICM,                                      
       @TriNumCST_IPI = NumCST_IPI,                                      
       @TriNumCSOSN = NumCSOSN,                  
       --Ronaldo Chamado 317536                  
       @TriFlagPrevalecerAliqIcm = flagPrevalecerAliqIcm,                  
       --Gabriella - 333391                  
       @TriTipoValorNaoTributadoIPI = TipoValorNaoTributadoIPI,   
       --Renato - 361650
       @TriAliqComplICM = AliqComplICM   
                                
  From Tributacoes                                                                                                                                                          
 Where Codigo=@CodTributacao                                                                                          
   and IdLeitura = dbo.LeituraTributacao(@CodTributacao,@CodEntidade, @CodOperacao, @AEmpMestre)                                            
                                                                                 
Set @AuxEntidade = @CodEntidade                                                                                                                                                   
            
                                                                                                                                                   
If (@FlagEntrada = 1) and                                                                                                                                          
   ((Select FlagSubTribEntradaEstado From ParamControle Where Empresa=@Empresa) = 1)                                                                                                      
begin                                                                                                                                                          
  select @AuxFlagSubTributaria=FlagSubTributaria,                                                                                                                                                    
         @AuxCodTributacaoSubTrib=CodTributacaoSubTrib                                                                                      
    From Tributacoes                                                                                                                                                          
    Where Codigo=@CodTributacao                                                    
      and IdLeitura = dbo.LeituraTributacao(@CodTributacao, @AEmpMestre, @CodOperacao, @AEmpMestre)                    
  If @AuxFlagSubTributaria is null                                                       
     Set @AuxFlagSubTributaria = 0                                                                                                                               
  If @AuxCodTributacaoSubTrib is null                                                                           
     Set @AuxCodTributacaoSubTrib = ''                                                       
  If (@AuxFlagSubTributaria = 1) and (@AuxCodTributacaoSubTrib <> '')                                                                                                                                          
  begin                                                                                                                     
    Set @TriCodTributacaoSubTrib = @AuxCodTributacaoSubTrib                                                                                                                    
    Set @TriFlagSubTributaria =  @AuxFlagSubTributaria                                       
    Set @AuxEntidade = @AEmpMestre                                         
  end                                                                                
end                                                                                                                                               
                                                                                                                                                          
If (@TriCodTributacaoSubTrib <> '') and                                             
   (@TriFlagSubTributaria = 1) and                                                                  
   (@ClaFlagSubTributaria = 1) and                                                                                                
   (@GruFlagSubTributaria = 1) and                                                            
   ((@FlagEntrada = 0)  or                                                                                                                                
    (@FlagEntrada = 1 and (Select FlagSubTribEntradaEstado From ParamControle Where Empresa=@Empresa) = 1)                                                                                                                                                    
   )                             
begin                                                                                        
  select @TriAliqICM=AliqICM,                                                                                                     
         @TriFlagIsentoProdutor=FlagIsentoProdutor,                                                                                                                   
         @TriFlagSubTributaria=FlagSubTributaria,                                                      
         @TriMargemLucroSubst=MargemLucroSubst,                                  
         @TriPerReducaoICM=PerReducaoICM,                                                                                                                                                         
         @TriPerRedMargem=PerRedMargem,                                                                                                            
         @TriTipoCFOP=TipoCFOP,                                                                                                                           
         @TriCodTributacaoSubTrib=CodTributacaoSubTrib,                                  
         @TriTipoValorNaoTributado=TipoValorNaoTributado,                                                
         @TriPerReducaoSubTrib = PerReducaoSubTrib,                                              
         --Rafael chamado 272635                                              
         @TriAliqInternaSubTrib = AliqInternaSubTrib,                                      
         @TriNumCST_ICM = NumCST_ICM,                                      
         @TriNumCST_IPI = NumCST_IPI,                                      
         @TriNumCSOSN = NumCSOSN,                    
         --Gabriella - 333391                  
         @TriTipoValorNaoTributadoIPI=TipoValorNaoTributadoIPI,  
         --Renato - 361650
         @TriAliqComplICM = AliqComplICM                                              
   From Tributacoes                                                      
    Where Codigo=@TriCodTributacaoSubTrib                                                                                                                   
      and IdLeitura = dbo.LeituraTributacao(@TriCodTributacaoSubTrib,@AuxEntidade, @CodOperacao, @AEmpMestre)                                           
  Set @CodTributacao = @TriCodTributacaoSubTrib                                  
end                                                         
                                                                                            
If (@TriAliqICM is null)                                                                                                                                                          
   Set @TriAliqICM = 0                                                                                                                
If (@TriFlagIsentoProdutor is null)                                                                                                        
   Set @TriFlagIsentoProdutor = 0                                                                                                          
If (@TriFlagSubTributaria is null)                                                                             
   Set @TriFlagSubTributaria = 0                                                                                          
If (@TriMargemLucroSubst is null)                                                                                                                                                          
   Set @TriMargemLucroSubst = 0                                                                                                                                                          
If (@TriPerReducaoICM is null)                                                                                                                                                          
  Set @TriPerReducaoICM = 0                                                                                                            
If (@TriPerRedMargem is null)                                                                                                                                                          
   Set @TriPerRedMargem = 0                                                                                                                
If (@TriTipoCFOP is null)                                                                                                                    
   Set @TriTipoCFOP = 0                                                            
If (@TriCodTributacaoSubTrib is null)                                
   Set @TriCodTributacaoSubTrib = ''                                                                                                                                                          
If (@TriPerReducaoSubTrib is null)                                                
   Set @TriPerReducaoSubTrib = 0                                               
--Rafael chamado 272635                                              
if (@TriAliqInternaSubTrib is null)                                              
   Set @TriAliqInternaSubTrib = 0                                              
if @TriNumCST_ICM is null                                      
  Set @TriNumCST_ICM = 0                                      
if @TriNumCST_IPI is null                                      
  Set @TriNumCST_IPI = 0                                      
if @TriNumCSOSN is null                                      
  Set @TriNumCSOSN = 0 
if @TriAliqComplICM is null
  Set @TriAliqComplICM = 0 
                                      
If (@TriTipoValorNaoTributado is null)                                                                                    
begin                                                                                                        
  if (@CodProduto = 8888888)                                                                                                        
    Set @TriTipoValorNaoTributado = 1                                                                                                        
  else                    
    Set @TriTipoValorNaoTributado = 0                                                                                                        
end                     
                  
--Gabriella - 333391                  
If (@TriTipoValorNaoTributadoIPI is null)                                                                                    
begin                                                                  
  if (@CodProduto = 8888888)                                                                                                        
    Set @TriTipoValorNaoTributadoIPI = 1                                                                                                        
  else                    
    Set @TriTipoValorNaoTributadoIPI = 0                                                                                                        
end                           
  
--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               
               
              
--JALDO/RONALDO - CHAMADO 309941                                   
--If @FlagEntrada = 0                                                                                                                                                       
If (@FlagEntrada = 0 or (@FlagEntrada = 1 and @OprTipoMovimento = 1))                                
   and @TriMargemLucroSubst <> 0                                                                                                                                                           
   and Exists(Select Codigo From Tributacoes                                                                                                                                                          
               Where EstadoOrigem=@CodEstadoLeitura                                     
        and Codigo=@CodTributacao                                                                                   
                 --MARCELO - CHAMADO 192283                                                                                        
--                 and EstadoDestino=@CodEstadoLeitura                                                                                            
                 and RegiaoDestino = @RegiaoDestinoLeitura                                                                            
                 and AliqICM > 0)                                                                                                                                                          
begin                                                                                                          
  Select Top 1 @EstAliqInterna=AliqICM,                                        
               --MARCELO - CHAMADO 214200                                                                              
               --@RedBaseSubTrib=PerReducaoICM                          
               @RedBaseSubTrib = Case When @RedBaseSubTrib = 0 Then PerReducaoICM Else @RedBaseSubTrib End            
  From Tributacoes                                                                       
  Where EstadoOrigem=@CodEstadoLeitura                                                      
     and Codigo=@CodTributacao                                                                                          
     --MARCELO - CHAMADO 192283                                                            
--     and EstadoDestino=@CodEstadoLeitura                                                                                                                                  
     and RegiaoDestino = @RegiaoDestinoLeitura           
     --Eder - 320407                  
     and AliqICM > 0                  
   Order By TipoPessoa                                                                                                    
end                                                                                     
If (@RedBaseSubTrib is null)                                                                                                                                                          
   Set @RedBaseSubTrib = 0                                                                                                                                                          
                                              
--Rafael chamado 272635                                             
--Sobrepoe a aliquota encontrada, se for informada na tributação                                              
If @TriAliqInternaSubTrib <> 0                                                 
  Set @EstAliqInterna = @TriAliqInternaSubTrib                                                  
            
If @FlagEntrada = 1                                                                                                           
   --Eder - Chamado 184973                                                                   
   and @OprTipoMovimento <> 1                            
   and @TriMargemLucroSubst <> 0                                                                                                                                               
   and Exists(Select Codigo From Tributacoes                                                                                                                                                          
               Where EstadoOrigem=@CidEmpCodEstado                                                                                                              
                 and Codigo=@CodTributacao                                                                     
               --MARCELO - CHAMADO 192283                                                                                        
--               and EstadoDestino=@CidEmpCodEstado                                                               
               --Eder - Chamado 243637                                                              
               --and RegiaoDestino = @RegiaoDestino                                                              
     and RegiaoDestino = @RegiaoOrigem                                                              
                 and AliqICM > 0)                                                                                                              
begin                                                                                       
  Select Top 1 @EstAliqInterna=AliqICM,                                                                                                                                    
               @RedBaseSubTrib= Case When @RedBaseSubTrib = 0 Then PerReducaoICM Else @RedBaseSubTrib End                                                                                                
  From Tributacoes                                                                                                                                                   
  Where EstadoOrigem=@CidEmpCodEstado              
     and Codigo=@CodTributacao                                                                                                                                                          
     --MARCELO - CHAMADO 192283                                                                                        
--   and EstadoDestino=@CidEmpCodEstado                                                                                                                                
     --Eder - Chamado 243637                                                      
--   and RegiaoDestino = @RegiaoDestino                                                              
     and RegiaoDestino = @RegiaoOrigem                                      
     --Eder - 320407                    
     and AliqICM > 0                  
   Order By TipoPessoa                                                                                                                    
end                                                                                                                                                          
If @EstAliqInterna is null                                                                                                                    
   Set @EstAliqInterna = 0                                                        
                                                                                                            
If @CodSubTributaria > 0                                                                                                                                    
begin                                                                                                               
  Select                                                                       
      @SubAliquotaInterna = AliquotaInterna,                                                   
      @SubMargemLucro = MargemLucro,                                                                                                                                    
      @SubPercReducao = PercReducao,                                                                                                                                    
      @SubIndiceReducao = IndiceReducao,                                                                                                                      
      @SubFlagAbaterICM = FlagAbaterICM,                                                                                                     
      @SubFlagSomaIPI = FlagSomaIPI                                                                                                                                    
  From SubstituicaoTributaria                                                                
  Where CodSubTributaria = @CodSubTributaria                                                                                 
    and Empresa = @Empresa                                                                                                                                    
end                                                                                                         
                                                                                          
  If @SubAliquotaInterna is null                       
     Set @SubAliquotaInterna = 0                                                                                            
  If @SubMargemLucro is null                                                                   
     Set @SubMargemLucro = 0                                                            
  If @SubPercReducao is null                                                                                                                             
     Set @SubPercReducao = 0                                                                                                                            
  If @SubIndiceReducao is null                                                           
     Set @SubIndiceReducao = 0                                                        
  If @SubFlagAbaterICM is null                   
     Set @SubFlagAbaterICM = 0                                                                            
  If @SubFlagSomaIPI is null                                                                                               
     Set @SubFlagSomaIPI = 0                                                                                                                         
                                                              
--Calculo do CST de ICMS e IPI                                       
Select @NumCstICM = Case when Op.NumCST_ICM in (-1) then @TriNumCST_ICM                                       
                         else Op.NumCST_ICM End,                                      
       @NumCstIPI = Case when Op.NumCST_IPI not in (-1)                  
        then Op.NumCST_IPI   --Operação fiscal prevalece sobre demais.                                      
                         when @AliqIPI > 0 and Op.TipoIPI = 0 --Item tributado de ipi sera sempre 00 ou 50 (entrada ou saida tributada)                                      
                         then Case When @FlagEntrada = 1 Then 00 Else 50 End                                      
                         when Cla.NumCST_IPI not in (-1,0) and (@AliqIPI = 0 or Op.TipoIPI <> 0)                                       
                              then Cla.NumCST_IPI -- Class. Fiscal prevalece sobre demais.                                      
                         when @TriNumCST_IPI not in (-1) and (@AliqIPI = 0 or Op.TipoIPI <> 0)                                       
                              then @TriNumCST_IPI    -- Item sem ipi pega da tributação se informado                                                               
                    End,                                      
       @NumCsosn  = Case When @ParTipoRegimeTributario in(1,2) --Calculo de CST para Simples nacional                                      
                       Then Case When Op.NumCSOSN not in(-1,0) then Op.NumCSOSN                                      
                   Else @TriNumCSOSN                                       
                              End                                      
                    End                                      
  From Produtos Pro                                      
  Left Join Operacoes Op on Op.Codigo = @CodOperacao                                      
  Left Join ClassFiscais Cla on Cla.Codigo = @CodClassFiscal                                      
Where Pro.Codigo = @CodProduto                                      
                                      
if @NumCstICM <> -1           
  Set @NumCstICM = Cast(@ProOrigem as varchar(1)) + Replicate('0', 2 - Len(@NumCstICM)) + Cast(@NumCstICM as varchar(2))                                      
else                                      
  Set @NumCstICM = null                                      
                                        
--Gabriella - 299680                                    
if @NumCstIPI <> -1 and @FlagEntrada = 1                                       
  Set @NumCstIPI = Replicate('0', 2 - Len(@NumCstIPI)) + Cast(@NumCstIPI as varchar(2))                                     
if @NumCstIPI <> -1 and @FlagEntrada = 0                                       
  Set @NumCstIPI = Replicate('5', 2 - Len(@NumCstIPI)) + Cast(@NumCstIPI as varchar(2))                                    
if @NumCstIPI = -1                                    
  Set @NumCstIPI = null                                       
                                    
if @NumCsosn <> -1 and @ParTipoRegimeTributario in (1,2) --CSOSN para Simples Nacional                                      
  Set @NumCsosn = Replicate('0', 3 - Len(@NumCsosn)) + Cast(@NumCsosn as varchar(3))                                      
else                                      
  Set @NumCsosn = null                                      
                                      
                                      
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                    
                  
                  
--Gabriella - 333391                                                                                                                                                                                                 
Set @ValorBaseIPI = @ValorTotal + @AcrescimoBaseIPI                                                                                                                                                                                            
                                                                                   
If @ValorBaseIPI > 0 and @AliqIPI > 0                                  
   Set @VAuxValorIPI = (@ValorBaseIPI * @AliqIPI) / 100                  
       
--Somente irá prevalecer o Tipo da Tributação quando a Aliquota de IPI for igual a Zero                   
-- e o Tipo do Ipi da Operação Fiscal for Tributado                     
if @AliqIPI = 0 and @OprTipoIPI = 0                  
begin                  
 if @TriTipoValorNaoTributadoIPI = 0                  
   Set @ValorIsentoIPI = @ValorBaseIPI                    
 if @TriTipoValorNaoTributadoIPI = 1                  
   Set @ValorOutrasIPI = @ValorBaseIPI                       
end                  
                     
if @OprTipoIPI = 1                  
  Set @ValorIsentoIPI = @ValorBaseIPI                   
                    
if @OprTipoIPI = 2                  
  Set @ValorOutrasIPI = @ValorBaseIPI                   
                    
If @AliqIPI = 0                                                                                                                                                          
   Set @ValorBaseIPI = 0                     
                    
if @ValorIsentoIPI > 0 or @ValorOutrasIPI > 0                  
  Set @ValorBaseIPI = 0                        
          
                                                                                                                                
---Chamado 114964                                                           
--If @OprTipoIPI = 0 or @OprTipoIPI = 3                                                                                                                                                          
--Begin             --Gabriella - 333391                                                           
--  If @ValorTotal > 0 and @AliqIPI > 0                                                                                                                                                          
--     Set @VAuxValorIPI = (@ValorTotal * @AliqIPI) / 100                                                                                   
--End                                                                             
                                                                              
                                                                                                                            
If @TriFlagSubTributaria = 1                                                              
   and @ClaFlagSubTributaria = 1                                                                                                                                                           
and @GruFlagSubTributaria = 1                                                                                                                                                          
   and @TriMargemLucroSubst <> 0                                                                                                    
   and @EstFlagConvSub = 1                                                                          
   and @OprTipoICM = 0                                                                                        
   and @OprTipoSubTributaria > 0                                                                                                 
begin                                                                             
  Set @ValorBaseSubTrib = @ValorTotal + @AcrescimoBaseSubTrib                                                                                                                
      
         
  If @OprFlagSubTribIPI = 1                                                                                                                                                           
     Set @ValorBaseSubTrib = @ValorBaseSubTrib + @VAuxValorIPI                                                                                                                                                     
end                                               
                                                                                                                                                   
--Eder - Chamado 262460                                                      
If @OprTipoICM = 0 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1 and @TriMargemLucroSubst <> 0 and                                                      
   @OprTipoSubTributariaCarga = 0                                                       
begin                                                      
  Set @ValorBaseSubTribCarga = @ValorTotal + @AcrescimoBaseSubTrib                                                   
  If @OprFlagSubTribIPI = 1                                                                                                             
     Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga + @VAuxValorIPI                                                                                                                                 
end                                                                                                                                                          
                                                                                                                      
                                                
If @CodSubTributaria > 0                                                                                                                                
   and @TriFlagSubTributaria = 1      
   and @ClaFlagSubTributaria = 1                                                
   and @GruFlagSubTributaria = 1                                                                 
   and @SubMargemLucro <> 0                                                                                                                                     
   and @EstFlagConvSub = 1                                                                                    
begin                                                                                     
  Set @CalcBaseSubTrib = @ValorTotal + @AcrescimoBaseSubTrib                                                             
  If @SubFlagSomaIPI = 1                                                                                                                          
     Set @CalcBaseSubTrib = @CalcBaseSubTrib + @VAuxValorIPI                                                                                                                              
end                                                                                                                                                       
                                                                                                                 
Set @ValorBaseICM = @ValorTotal + @AcrescimoBaseICM                                                                                                                     
Set @ValorBaseSubTribDestino = @ValorTotal + @AcrescimoBaseICM                                                                         
Set @CalcBaseSubTribDestino = @ValorTotal + @AcrescimoBaseICM                                                                                                    
                                                                                             
                                                                      
--JALDO - CHAMADO 243556                                                                      
--O Tipo "2" não estão sendo verificando porque nunca será usado                                                                      
--If @EntTipoPessoa <> 'J'                                                    
--begin                                                                                      
-- Set @ValorBaseIcm = @ValorBaseIcm + @VAuxValorIPI                                                        
--  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino + @VAuxValorIPI                                                                
--  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino + @VAuxValorIPI                                                                                      
--end                                   
                                                              
--JALDO - CHAMADO 248899                                                          
--if ((@TipoConsideraIPICalculoICM = 0) and (@EntTipoPessoa <> 'J')) or                                                                       
--   (@TipoConsideraIPICalculoICM = 1)                                                                       
--begin                                                                      
--Set @ValorBaseIcm = @ValorBaseIcm + @VAuxValorIPI                                                                                                             
--  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino + @VAuxValorIPI                                                                               
--  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino + @VAuxValorIPI                                                   
--end                                                                      
                  
--Gabriella - 256424                                                    
--if (@EntTipoPessoa not in ('J','I'))                                     
if (@EntTipoPessoa not in ('J','I')) or (@OprFlagIPISobreBaseICM = 1)                                     
begin                                                                  
  Set @ValorBaseIcm = @ValorBaseIcm + @VAuxValorIPI                                                                 
  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino + @VAuxValorIPI                                                      
  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino + @VAuxValorIPI                                                                                        
end                                                     
                                                                                                        
Set @ValorIsentoICM = @ValorBaseIcm            
                                                                                
If @TriPerReducaoICM <> 0 and @ValorBaseIcm <> 0                               
begin                                                                                          
  Set @ValorBaseIcm = @ValorBaseIcm - ((@ValorBaseIcm * @TriPerReducaoICM) / 100)                                                                                                                         
  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino - ((@ValorBaseSubTribDestino * @TriPerReducaoICM) / 100)                                                                                                                                            
  
    
      
        
          
            
              
  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino - ((@CalcBaseSubTribDestino * @TriPerReducaoICM) / 100)                                                                    
end                                                                    
                                                                                                                      
                                                                        
If @ValorBaseIcm > 0 and @OprPerRedICM > 0                                                                                                                                                          
begin                                    
  Set @ValorBaseIcm = @ValorBaseIcm - ((@ValorBaseIcm * @OprPerRedICM) / 100)                                                                                                                                                          
  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino - ((@ValorBaseSubTribDestino * @OprPerRedICM) / 100)                                                                                                    
  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino - ((@CalcBaseSubTribDestino * @OprPerRedICM) / 100)                                                             
end                                         
                                                                                   
If @ValorBaseIcm > 0 and @AliqICM > 0                                  
   Set @ValorICM = (@ValorBaseIcm * @AliqICM) / 100                               
                            
--Ronaldo Chamado 313933                            
select @RegTribPercIvaSimplicado = R.PercIvaSimplificado from regimetributario R                            
left join entidades E on R.Codigo = E.codRegimeTributario                            
where R.empresa = @Empresa and                            
      E.codigo  = @CodEntidade                            
                            
                                                                                                                                                         
If @TriFlagSubTributaria = 1 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                            
   and @TriMargemLucroSubst <> 0 and @EstFlagConvSub = 1 and @OprTipoICM = 0 and @OprTipoSubTributaria > 0                                                                                                      
Begin                                                                                  
--Eder - Chamado 243557  -- Teste específico para o Cliente pois ainda não sabemos se outros clientes aceitarão a modificação                                                                  
--Eder - Chamado 243557                                                
  if (@EmpId = 'ALPHA PNEUS') and @TriPerReducaoICM > 0                                            
     If @OprFlagSubTribIPI = 1                                                                                                                                                       
       Set @ValorBaseSubTrib = @ValorBaseSubTrib - (((@ValorBaseSubTrib - @VAuxValorIPI) * @TriPerReducaoICM) / 100)                                                                                                                       
     Else                                                            
       Set @ValorBaseSubTrib = @ValorBaseSubTrib - ((@ValorBaseSubTrib  * @TriPerReducaoICM) / 100)                                                                                                                                                          
                                                                  
  If @RedBaseSubTrib <> 0 and @ValorBaseSubTrib <> 0                                                                                                                                    
     Set @ValorBaseSubTrib = @ValorBaseSubTrib - ((@ValorBaseSubTrib  * @RedBaseSubTrib) / 100)                                                                                                                                    
                              
  --Ronaldo Chamado 313933                            
  --If @TriMargemLucroSubst <> 999.99                                                                               
  --   Set @ValorBaseSubTrib = @ValorBaseSubTrib +  ((@ValorBaseSubTrib * @TriMargemLucroSubst) / 100)                                                                                                                                         
  --If @ValorBaseSubTrib > 0 and @EstAliqInterna > 0                                                                                                                                                          
  --   Set @ValorSubTrib = (@ValorBaseSubTrib * @EstAliqInterna) / 100                                                                                                                                         
  -- Set @ValorSubTrib = @ValorSubTrib - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                               
  if @RegTribPercIvaSimplicado > 0 and @EstAliqInterna > 0                            
     begin                            
        set @ValorSubTrib     = round(@ValorbaseSubTrib * @RegTribPercIvaSimplicado / 100,2)                            
        set @ValorBaseSubTrib = round((@ValorIcm + @ValorSubTrib) / @EstAliqInterna * 100,2)                            
     end                            
  else                            
     begin                             
 If @TriMargemLucroSubst <> 999.99                                                                                                         
         Set @ValorBaseSubTrib = @ValorBaseSubTrib +  ((@ValorBaseSubTrib * @TriMargemLucroSubst) / 100)                                                                                                                                         
        If @ValorBaseSubTrib > 0 and @EstAliqInterna > 0                                                                                                                                                          
           Set @ValorSubTrib = (@ValorBaseSubTrib * @EstAliqInterna) / 100                                                                                                   
        Set @ValorSubTrib = @ValorSubTrib - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                               
end                             
End                                                                                                 
                                                              
                                                                                        
--Eder - Chamado 262460                                                      
If @OprTipoICM = 0 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1 and @TriMargemLucroSubst <> 0 and                                                      
   @OprTipoSubTributariaCarga = 0                            begin                                    
--Eder - Chamado 243557 -- Teste específico para o Cliente pois ainda não sabemos se outros clientes aceitarão a modificação              
  if (@EmpId = 'ALPHA PNEUS') and @TriPerReducaoICM > 0                                                              
     If @OprFlagSubTribIPI = 1                                                                      
       Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga - (((@ValorBaseSubTribCarga - @VAuxValorIPI) * @TriPerReducaoICM) / 100)                                                                                                                           
  
    
      
        
          
            
              
                
                  
                  
                    
     Else                                                            
     Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga - ((@ValorBaseSubTribCarga  * @TriPerReducaoICM) / 100)                                                                                                                                               
  
    
      
        
          
           
                                                                              
  If @RedBaseSubTrib <> 0 and @ValorBaseSubTribCarga  <> 0                                                                                                                                    
     Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga - ((@ValorBaseSubTribCarga  * @RedBaseSubTrib) / 100)                                                                                                                                                 
  
   
       
        
          
            
              
                
                            
  --Ronaldo Chamado 313933                              
  --If @TriMargemLucroSubst <> 999.99                                                                                                                     
  --   Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga +  ((@ValorBaseSubTribCarga * @TriMargemLucroSubst) / 100)                                                                                                                                   
  --If @ValorBaseSubTribCarga > 0 and @EstAliqInterna > 0                                                                                                             
  --   Set @ValorSubTribCarga = (@ValorBaseSubTribCarga * @EstAliqInterna) / 100               
  --Set @ValorSubTribCarga = @ValorSubTribCarga - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                            
  if @RegTribPercIvaSimplicado > 0 and @EstAliqInterna > 0                            
     begin                            
        set @ValorSubTribCarga     = round(@ValorBaseSubTribCarga * @RegTribPercIvaSimplicado / 100,2)                            
        set @ValorBaseSubTribCarga = round((@ValorIcm + @ValorSubTribCarga) / @EstAliqInterna * 100,2)                            
     end                            
  else                            
     begin                             
       If @TriMargemLucroSubst <> 999.99                                                                                                                     
          Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga +  ((@ValorBaseSubTribCarga * @TriMargemLucroSubst) / 100)                                                                                                       
       If @ValorBaseSubTribCarga > 0 and @EstAliqInterna > 0                                                                                                             
          Set @ValorSubTribCarga = (@ValorBaseSubTribCarga * @EstAliqInterna) / 100                                                                                                                   
          Set @ValorSubTribCarga = @ValorSubTribCarga - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                                                                   
    end                             
end                                                                                                                                                          
                                          
                                                           
                                                                                                    
--Calculo da substituição tributaria pela tabela SubstituicaoTributaria                                           
If @CodSubTributaria > 0                                                                         
   and @TriFlagSubTributaria = 1 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                                                                                          
   and @SubMargemLucro <> 0 and @EstFlagConvSub = 1                                                                                                           
begin                                                                                                                                
  If @SubPercReducao <> 0                                                                                               
     Set @CalcBaseSubTrib  = @CalcBaseSubTrib - ((@CalcBaseSubTrib * @SubPercReducao) / 100)                                                                   
  If @SubMargemLucro <> 999.99                                                                                                                                  
     Set @CalcBaseSubTrib = @CalcBaseSubTrib +  ((@CalcBaseSubTrib * @SubMargemLucro) / 100)                                                                                                                     
  If @SubIndiceReducao <> 0                                                                           
     Set @CalcBaseSubTrib = @CalcBaseSubTrib * @SubIndiceReducao                                                                                                                            
                                                                                                                            
  --Quando não tem aliquota interna na sub.trib, pega a do estado de origem                                                                           
  If @CalcBaseSubTrib > 0 and                                                                                        
     (@SubAliquotaInterna > 0 or @EstAliqInterna > 0)                                                             
  begin                                                    
    if @SubAliquotaInterna > 0                                                                                                                          
     Set @CalcValorSubTrib = (@CalcBaseSubTrib * @SubAliquotaInterna) / 100                                                                                                                    
    Else                                                                       
       Set @CalcValorSubTrib = (@CalcBaseSubTrib * @EstAliqInterna) / 100                                                                                            
  end       
                                                                                                                            
  --Opção que permite abater o icms da operação na substituição tributaria                                                                                                                            
  If @SubFlagAbaterICM = 1                                                                                                                          
     Set @CalcValorSubTrib = @CalcValorSubTrib - Round((@CalcBaseSubTribDestino * @AliqICM) / 100,2)                                                                                                                      
                                                                          
  If @OprTipoICM = 0 and @OprTipoSubTributaria > 0                                                             
  begin                                                         
    Set @ValorBaseSubTrib = @CalcBaseSubTrib                                                                 
    Set @ValorSubTrib = @CalcValorSubTrib                                                                                                                                 
  end                                                                                                                                
                                  
  --Eder - Chamado 262460                                
  If @OprTipoSubTributariaCarga = 0                                                      
  begin                                                                                
    Set @ValorBaseSubTribCarga = @CalcBaseSubTrib                                                                                         
    Set @ValorSubTribCarga = @CalcValorSubTrib                                                                                                 
  end                                                      
end                                                                                                       
                                             
--MARCELO - CHAMADO 195051                                                                                  
if (@ValorBaseSubTrib <> 0) or (@ValorSubTrib <> 0)                                                                                   
begin                                                                                  
  set @ValorBaseSubTribCarga = 0                                                                                  
  set @ValorSubTribCarga = 0                                                           
end                                                                                  
                                      
                                      
--Eder - Chamado 295277                                      
--O cálculo do ICMS para Simples deve ser feito após o calculo da ST pois a ST considera aliquotas internas normais de ICMS                                      
If @ParTipoRegimeTributario in (1,2) and  --- Simples Nacional ou com excesso de sublimite receita bruta                                      
   (@FlagEntrada = 0 or (@FlagEntrada = 1 and @OprTipoMovimento = 1))  --Saida ou entrada por devolução                                      
begin                   
  If @TriAliqICM <= 0                                       
    Set @AliqICM = 0                                      
  else                                      
    Set @AliqICM = @ParAliqICMSimples                                      
  If (@OprTipoICM = 1) or                                                                                                                                                          
     (@OprTipoICM = 2 and @FlagEntrada = 0) or                                                                                                                                            
     (@OprTipoICM = 2 and @FlagEntrada = 1 and @OprFlagDefaultLancamentoOutras = 0)                                                                                                        
     Set @AliqICM = 0                                                                       
Set @ValorICM = (@ValorBaseIcm * @AliqICM) / 100                                      
end                                      
                                                                                               
If @AliqICM = 0                                                                                                                                                          
   Set @ValorBaseIcm = 0                                                                                               
Else                                                                                                                        
   Set @ValorIsentoICM = @ValorIsentoICM - @ValorBaseIcm                                                                                            
                                                                                                                           
                                                                     
If @OprTipoSubTributaria in(2,3) and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                     
   and @OprTipoICM = 0 and @EstFlagConvSub = 1                                             
   and (@TriFlagSubTributaria = 1 or @TriMargemLucroSubst <> 0 or @SubMargemLucro <> 0)                                                                                                       
begin                                                                                                                                            
  If @OprTipoSubTributaria = 2                                             
     Set @ValorIsentoICM = @ValorIsentoICM + @ValorBaseICM                                                                                               
  If @OprTipoSubTributaria = 3                                           
  begin                                                
     Set @ValorOutrasICM = @ValorOutrasICM + @ValorBaseICM + @ValorIsentoICM                                                                                                
Set @ValorIsentoICM = 0                                                                                
  end                                                                                                          
  Set @ValorBaseIcm = 0                                                                                                                                            
  Set @ValorICM = 0                                                                                                                                            
end                                                                                                                                                          
                                                                                                                                                                                                                                                            
                                                                                   
Set @FatorRedCusto = 1                                                                       
If (@ParTipoReducaoICM = 1) and (Ltrim(@CodEntidade) <> '')                                                       
   and (@FlagEntrada = 0 or (@FlagEntrada=1 and @OprTipoMovimento = 1))                                                                                                                                              
--Eder Chamado 170325                                                                                                
   and (@CodProduto <> 8888888)            
begin                                                                                                                      
--   If @OprTipoSubTributaria not in(2,3)   --não calcula quando a sub. tributaria é isenta/outras                                                
--   Isaac - Chamado 191232                                                                                  
   If not (@OprTipoSubTributaria in(2,3) and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                               
      and @OprTipoICM = 0 and @EstFlagConvSub = 1                                                                                                                                         
      and (@TriFlagSubTributaria = 1 or @TriMargemLucroSubst <> 0 or @SubMargemLucro <> 0))                                                                                 
      Set @FatorRedCusto = (100 - @TriAliqICM) / (100 - @AliqICM)                        
                                                                                                                                                  
   If @OprPerRedMargem <> 0                                                                             
     Set @FatorRedCusto = @FatorRedCusto - (@OprPerRedMargem / 100)                                                                                                                            
   --Eder - Chamado 270320                                                  
   --If (@TriPerRedMargem <> 0)                                                  
   --  Set @FatorRedCusto = @FatorRedCusto - (@TriPerRedMargem / 100)                                                                    
end                                                                                                                             
--Eder - Chamado 270320                                                  
if (@TriPerRedMargem <> 0) and (@CodProduto <> 8888888)                                                   
   Set @FatorRedCusto = @FatorRedCusto - (@TriPerRedMargem / 100)                              
                                                         
-- 298865                                                                             
--Eder - Chamado 195755                                                                                    
--Somente vai calcular DespesasNaoInclusas no fator quando for saída ou devolução                                                                                          
-- Renato - 278440                              
If (@FlagEntrada = 0) or                                                                                                                                         
   (@FlagEntrada = 1 and @OprTipoMovimento = 1)                                                                                                                                          
begin                                                                                    
  --Eder - Chamado 170325                                                                           
  --Adiciona o acrescimo de custo, que já deve vir passado como percentual                                                                                                
                                                   
  If (@PerRedDespesa <> 0) and (@ParTipoReducaoICM in (0,1)) and (@FlagDeduzirDespNaoInclNaMargem = 0)                                                                                               
  begin                                                                                                
    Set @FatorRedCusto = @FatorRedCusto + @PerRedDespesa                                                    
  end                                                      
end                                                                                     
                        
                                                                      
--Calcula o fator de venda para as saídas e entradas por devolução.                                                                                                                                                          
--Retira o Valor do ICM, a Aliquota de CPMF, a Aliquota de PIS/COFINS e soma o acrescimo de vend                                                                                                                        
Set @FatorRedVenda = 1                                                                                                                           
If ((@FlagEntrada = 0) or                                                                                             
   (@FlagEntrada = 1 and @OprTipoMovimento = 1))                                            
   -- Renato - 278440                   
   and (@ParTipoReducaoICM = 2) -- 2 - Deduzir Impostos da Venda                                                              
begin                                                                                  
                                              
  --Eder -Chamado 292832 - Evitar arredondamento desnecessario na aliquota do ICM (Vide Chamado)                                        
  If (@AliqICM > 0) and (@ValorTotal > 0)                                                   
     if @ValorBaseICM = @ValorTotal + @AcrescimoBaseICM                                        
       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                                                                                                                                                          
   Set @FatorRedVenda = @FatorRedVenda - (@AliqPISCOFINS / 100)                                            
                                                                                               
                                              
  If (@LisPercAcrescimoAdm1 + @LisPercAcrescimoAdm2 + @LisPercAcrescimoAdm3) > 0                                                                                       
     Set @FatorRedVenda = @FatorRedVenda - ((@LisPercAcrescimoAdm1 + @LisPercAcrescimoAdm2 + @LisPercAcrescimoAdm3) / 100)                                                                                                                                    
  
                                                                                  
  If (@AcrescimoRedVenda <> 0) and (@ValorTotal > 0)                                                                                                                                                          
    Set @FatorRedVenda = @FatorRedVenda - Round(((@AcrescimoRedVenda * 100) / @ValorTotal) / 100,4)                                                                              
                                          
  --Renato - 290579                                            
  -- Se for uma venda fora do estado com ICMS, e os Percentuais de ICMS e SubTrib da Compra estiverem informados                                            
  -- na Lista de Preco vai abater o ICMS da compra no Custo.                                            
  If ((@CidEmpCodEstado <> @CidCodEstado) and (@ValorICM > 0) and (@PercICMCusto > 0) and (@PercSubTribCusto > 0))                           
    Set @FatorRedCusto = @FatorRedCusto - (@PercICMCusto / 100)                                             
                                          
end                                               
  --Renato - 278440                                            
If (@PerRedDespesa <> 0) and (@FlagDeduzirDespNaoInclNaMargem = 1) and (@ParTipoReducaoICM <> 2)                                                                                               
begin                                                                                                
  Set @FatorRedVenda = @FatorRedVenda - @PerRedDespesa                                                          
end                                                                                  
                                      
                                      
--Eder - 303720                                              
Set @AcrDespesasPisCOFINS = @AcrescimoBaseICM                                  
if (@OprFlagIPISobrePisCofins = 1)  --Calcula IPI sobre Pis e COFINS                                   
  Set @AcrDespesasPisCOFINS = @AcrDespesasPisCOFINS + @VAuxValorIPI                                  
                                      
-- Renato - Chamado 272165                                               
Select @ValorBasePisCofins = ValorBasePisCofins,                                               
       @AliqPis = AliqPis,                                      
       @AliqCofins = AliqCofins,                                      
       @NumCstPisCofins = NumCstPisCofins,                                 
       -- Renato - 297792                                
       @NatReceitaPisCofins = NatReceitaPisCofins,                    
       -- Renato - 332318                  
       @NatBaseCalcCredito = NatBaseCalcCredito,  
       -- Renato - 361650
       @AliqComplPis = AliqComplPis,                             
       @AliqComplCofins = AliqComplCofins
                                            
From dbo.Calcular_PisCofins(@Empresa, @CodProduto, @CodEntidade, @CodTributacao, @CodOperacao,                                             
                            @CodClassFiscal, @ValorTotal, @AcrDespesasPisCOFINS,                                
                            -- Renato - 297792                                    
                            @FlagEntrada)                                                                                                                                                          
                                                                           
if @CodProduto = 8888888                                                          
begin                                                                                                                                                          
  If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                                                                                 
     and Ltrim(@OprCFOP_Servico_NCFora) <> ''                                                                                        
     Set @NumCFOP = @OprCFOP_Servico_NCFora                                                                                                                      
  Else                                                                                                                 
     Set @NumCFOP = @OprCFOP_Servico                                                                                                                                  
end                                                                                              
else                                                                                                                                      
  Begin                                                                                                    
      If @TriTipoCFOP = 1 or @TriTipoCFOP = 0    
         begin                                                                                                   
           If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                                                                                      
   
   
              and Ltrim(@OprCFOP1_Normal_NCFora) <> ''                                                                                   
       Set @NumCFOP = @OprCFOP1_Normal_NCFora                                                                                                                                                          
           Else                                                                                                                                  
              Set @NumCFOP = @OprCFOP1_Normal                                                     
         end                                                                                  
      If @TriTipoCFOP = 2                                                                                                                                                          
         begin                                                                                                                           
           If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                                                                                       
 
    
              and Ltrim(@OprCFOP2_Industrializado_NCFora) <> ''                                                                                                                   
 Set @NumCFOP = @OprCFOP2_Industrializado_NCFora                                                              
                                                    
           Else                                                                                           
         Set @NumCFOP = @OprCFOP2_Industrializado                                        
         end                                                                                                                              
      If @TriTipoCFOP = 3                                                              
         begin                                                                                                                                                
           -- JALDO - CHAMADO 184880                                                                                            
           -- If @EntTipoPessoa in('F','N')                                                                                                       
           If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                              
              Set @NumCFOP = @OprCFOP3_SubRevenda_NC                                                                              
           Else                                                                                                   
             Set @NumCFOP = @OprCFOP3_SubRevenda                                                                                                                                                          
         end                                                     
      If @TriTipoCFOP = 4                                                                                                                                                          
         begin                                 
           -- JALDO - CHAMADO 184880                                                 
           --If @EntTipoPessoa in('F','N')                                                                                             
           If @EntTipoPessoa in('F','N') and @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado <> 'EX'                                                                                       
              Set @NumCFOP = @OprCFOP4_SubRevendaML_NC                                                                                                                                                          
           Else                                                                        
              Set @NumCFOP = @OprCFOP4_SubRevendaML                                                                                                                      
         end                                                                                                  
      If @TriTipoCFOP = 5                                                                                                                  
         begin                 
           If @EntTipoPessoa in('F','N')                                
             Set @NumCFOP = @OprCFOP5_SubFabricacao_NC                                                                  
           Else                                                                                                                                                          
              Set @NumCFOP = @OprCFOP5_SubFabricacao                                          
         end                                                                                                                           
      If @TriTipoCFOP = 6                                                                                               
         begin                                                                                                  
           If @EntTipoPessoa in('F','N')                                                                
              Set @NumCFOP = @OprCFOP6_SubFabricacaoML_NC                                                                                           
           Else                                     
              Set @NumCFOP = @OprCFOP6_SubFabricacaoML                                                                                              
         end                                                                     
      If @TriTipoCFOP = 7                                                                                                                               
         begin                                                                                                                                            
           Set @NumCFOP = @OprCFOP7_Importado                                                                                                                                 
         end                                                                                                                            
      If @TriTipoCFOP = 9                           
         begin                                                                                   
           If @EntTipoPessoa in('F','N','C','P')                                                                                                                               
           Set @NumCFOP = @OprCFOP9_Petroleo_NC                                                                                                                                                          
   Else                                                                                                                                                          
              Set @NumCFOP = @OprCFOP9_Petroleo                                                                                                               
         end end                                                                           
                                                                                                             
If Substring(@NumCFOP,1,1) in ('1','2','3') and @CidCodEstado <> @CidEmpCodEstado                                                                                                                      
   If @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado = 'EX'                                                                                                        
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'3')                                                                                                      
   Else                                                                            
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'2')                                                                                                                                                             
If Substring(@NumCFOP,1,1) in ('5','6','7') and @CidCodEstado <> @CidEmpCodEstado                                                                                                                                                           
 If @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado = 'EX'                                                                                                                         
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'7')                                                                   
   Else                                                                                       
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'6')                                                    
                                                                                
--MARCELO - CHAMADO 209798                                                           
/*                                                                                
CFOP 5.405 não existe o seu correlado 6.405 para vendas fora do estado,                                                                                 
devendo ser utilizado em seu lugar o CFOP 6.404, conforme reunião defina                                
com Eder                                                      
*/                                                                              
--Rafael chamado 224824                                                       
  --6.405  -> 6.404                                                                          
  --6405  --> 6404                                                                          
                                                                          
--if (Replace(@NumCFOP,'.','') = '6405')                                        
  --set @NumCFOP = '6404'                                                                           
                                                                          
if (@NumCFOP  = '6.405')                                                                                
  set @NumCFOP = '6.404'                                                                                
                                                                           
if (@NumCFOP  = '6405')                                                                           
  set @NumCFOP = '6404'                                                                        
                                                                                                  
If @NumCFOP is null                                                                                                                                            
   Set @NumCFOP = ''                 
                                                                                                                                                           
If @AliqICM is null                                                                               
   Set @AliqICM=0                 
                                                                                                                                                            
if @CodProduto = 8888888            
Begin                              
  -- Renato - 341779                 
  if (@OprFlagICMSSobreServicos = 0) or (@OprTipoIcm in (1,2))                
  begin                
    set @AliqICM = 0                                                                                                                                            
    set @ValorBaseIcm = 0                                                         
    set @ValorICM = 0                                                          
    set @ValorIsentoICM = 0                                                                                                
    set @ValorOutrasICM = 0                           
                                                         
    if (@OprFlagICMSSobreServicos = 0)                
    begin                  
      -- Mantendo compatibilidade com versões antigas, ou seja, se o usuario não marcar o FlagICMSSobreServicos                 
   -- o sistema não muda a forma de gerar os impostos dos serviços.                                                   
      if (@TriTipoValorNaoTributado = 0)                                                    
        set @ValorIsentoICM = @ValorTotal + @AcrescimoBaseICM                                                                                                    
      else                                                                                          
        set @ValorOutrasICM = @ValorTotal + @AcrescimoBaseICM                  
    end                
    else                
    begin                
      if (@OprTipoIcm = 1)                                                    
        set @ValorIsentoICM = @ValorTotal + @AcrescimoBaseICM                                       
      else                                                                                          
        set @ValorOutrasICM = @ValorTotal + @AcrescimoBaseICM                  
    end                
                                                                                                                    
  end                
  else if ((@OprFlagICMSSobreServicos = 1) and (@OprTipoIcm = 0) and ((@AliqICM = 0) or (@ValorBaseIcm = 0)) )                
  begin                
    if (@TriTipoValorNaoTributado = 0)                 
      set @ValorIsentoICM = @ValorTotal + @AcrescimoBaseICM                                                                                                    
    else                                                                                          
      set @ValorOutrasICM = @ValorTotal + @AcrescimoBaseICM                 
  end                
                    
  set @ValorBaseSubTrib = 0                                                                                                                                           
  set @ValorSubTrib = 0                                                                                                         
  set @ValorBaseSubTribCarga = 0                                                                                                                 
  set @ValorSubTribCarga = 0                                                                                                                                            
  set @RedBaseSubTrib = 0                                      
--Eder - Chamado  170325                                                                                                
--  set @FatorRedCusto = 1                                                                                                
  set @FatorRedVenda = 1                                                                                                                                            
  set @AliqPISCOFINS = 0                  
                                                                                                                               
end                                              
                                      
   
--Eder - 297029                                       
If (@ValorBaseICM > 0 and @ValorIsentoICM > 0)  
begin    
  --Renato - 361064   
  if (@TriPerReducaoICM = 0) and (@OprPerRedICM <> 0)    
    Set @PerReducaoICM = @OprPerRedICM  
  else if (@TriPerReducaoICM <> 0) and (@OprPerRedICM = 0)    
    Set @PerReducaoICM = @TriPerReducaoICM   
  else  
    Set @PerReducaoICM = Round(@ValorIsentoICM / (@ValorBaseICM + @ValorIsentoICM) * 100,2)                                                           
end    
else                                        
  Set @PerReducaoICM = 0      
  
       
                                                                             
--Define o valor de isento ou o valor de outras para o que não foi tributado                                                                                                                                      
if @CodProduto <> 8888888 and @ValorIsentoICM > 0                           
begin                                                             
  --Chamado 156315 - calculando errado valor de isentas com tributação com coluna de outras                                                                                                  
 If @OprTipoICM = 2 or                                                               
    (@TriTipoValorNaoTributado = 1 and @OprTipoICM = 0)                                                                                                  
  begin                                                                                                                                    
    If  not (@OprTipoSubTributaria in(2,3) and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                                                          
           and @EstFlagConvSub = 1                                                                                                                                       
            and (@TriFlagSubTributaria = 1 or @TriMargemLucroSubst <> 0))                                                                                 
       or @OprTipoICM = 2                                                                  
    begin                                                                                                                                          
      Set @ValorOutrasICM = @ValorIsentoICM                                              
      Set @ValorIsentoICM = 0                                                                                                                                                                           
    end                                                                
  end                                                                          
end    
  
if (@ValorBaseSubTrib = 0  and @ValorSubTrib = 0 and @ValorBaseSubTribCarga = 0 and @ValorSubTribCarga = 0)  
begin  
  set @EstAliqInterna = 0  
  set @TriMargemLucroSubst = 0   
end                                                
                                                                              
Insert Into @Campos (AliqICM, ValorBaseICM, ValorICM, ValorIsentoICM, ValorOutrasICM, PerReducaoICM,                                      
               ValorBaseSubTrib, ValorSubTrib, FatorRedCusto, FatorRedVenda, NumCFOP,                                        
               ValorBaseSubTribCarga, ValorSubTribCarga, PerRedBaseSubTrib, AliqPISCOFINS,                                              
               -- Renato - Chamado 272165                                                
               ValorBasePisCofins, AliqPis, AliqCofins,                                      
               NumCstICM, NumCstIPI, NumCstPisCofins, NumCsosn,                                 
               -- Renato - 297792                                
               NatReceitaPisCofins,                   
               -- Renato - 332318                  
               NatBaseCalcCredito,                                 --Ronaldo 343696      
               IndNaturezaFrete,                        
               --Gabriella - 333391       
               ValorBaseIPI,                  
               ValorIsentoIPI,                                                                                                                                                          
               ValorOutrasIPI,  
               AliqICMSST,  
               PercMvaICMSST,
               --Renato - 361650
               AliqComplICM,
               AliqComplPis,
               AliqComplCofins)                                      
                                                                                                                                 
       Values (@AliqICM, @ValorBaseICM, @ValorICM, @ValorIsentoICM, @ValorOutrasICM, @PerReducaoICM,                         
               @ValorBaseSubTrib, @ValorSubTrib, @FatorRedCusto, @FatorRedVenda, @NumCFOP,                                                                                                 
               @ValorBaseSubTribCarga, @ValorSubTribCarga, @RedBaseSubTrib, @AliqPISCOFINS,                                   
               -- Renato - Chamado 272165                                                 
               @ValorBasePisCofins, @AliqPis, @AliqCofins,                                      
               @NumCstICM, @NumCstIPI, @NumCstPisCofins, @NumCsosn,                                 
               -- Renato - 297792                                
               @NatReceitaPisCofins,                   
               -- Renato - 332318                  
               @NatBaseCalcCredito,       
               --Ronaldo 343696      
               @OprIndNaturezaFrete,                 
               --Gabriella - 333391                         
               @ValorBaseIPI,                  
               @ValorIsentoIPI,                                                                                                                                                          
               @ValorOutrasIPI,  
               --Renato - 360358  
               @EstAliqInterna,  
               @TriMargemLucroSubst,
               --Renato - 361650
               @TriAliqComplICM,
               @AliqComplPis,
               @AliqComplCofins)                                   
Return                                      
                                      
end   
    
Go

ALTER procedure [dbo].[Stored_Prft110GeraNota] (                                                                  
@Ped_Sequencia int,                                                                                              
@Empresa numeric(2),                                                                                              
@TipoControle numeric(1),                                                                                              
@CodControle numeric(9),                                                                                              
@ContadorNota numeric(3))                                                                                              
as                                                                                              
/**********************                                      
VERSÃO 3.00                                      
**********************/                                      
--MARCELO - CHAMADO 195051                                     
 
--declare @SomaBaseSubTribCarga decimal(11,2)                                                                                              
--declare @SomaSubTribCarga decimal(11,2)                                                                                              
declare @SomaContabilNotaProdutos decimal(11,2)                                                                                              
declare @FlagEntrada numeric(1)                                                                                              
                                                                                              
declare @CodOperacao numeric(5)                                                                                              
declare @existe int                                                                                              
                                                                                                                                
declare @AuxEmpresa numeric(2)                                                                                              
Declare @AuxTipoItem int                                                                            
Declare @AuxNumSequencia int                                                                            
declare @AuxNumLancamento int                                                                                              
declare @AuxCodProduto numeric(7)                                                                                              
declare @AuxAliqICM decimal(4,2)                                                                                              
declare @AuxBaseICM decimal (11,2)                                                                                              
declare @AuxValorICM decimal (11,2)                                                                                              
declare @AuxValorIsentoICM decimal(11,2)                                                                                              
declare @AuxValorOutrasICM decimal(11,2)                                                                                              
declare @AuxPerReducaoICM decimal(5,2)          
declare @AuxBaseSubTrib decimal(11,2)                                                                                              
declare @AuxValorSubTrib decimal (11,2)                                                                                              
declare @AuxBaseSubTribCarga decimal(11,2)                                                                                              
declare @AuxValorSubTribCarga decimal (11,2)                                                                                              
declare @AuxAcrescimoBaseICM decimal(11,2)                                                                                              
declare @AuxAcrescimoBaseSubTrib decimal(11,2)                                                   
declare @AuxAcrescimoRedVenda decimal(11,2)                                         
-- Renato - 278440                    
--declare @AuxAcrescimoRedCusto decimal(15,8)                      
declare @AuxPerRedDespesa decimal(15,8)                      
                                                 
declare @AuxFatorRedCusto decimal (15,4)                                                                                              
declare @AuxFatorRedVenda  decimal (7,4)                                                    
declare @AuxValorLimiteOutrosCOFINS decimal(11,2)                                                                                              
declare @AuxCodTributacao char(5)                          
declare @AuxCodEntidade char(7)                                           
declare @AuxCodClassFiscal varchar(15)                                          
declare @AuxValorTotal decimal(11,2)                                                      
declare @AuxAliqIPI decimal(4,2)                                                              
declare @AuxNumCFOP char(10)                                                                
declare @AuxCodListaPreco numeric(7)                                                                  
declare @AuxAliqPISCOFINS decimal(4,2)                                                                    
declare @AuxValorCustoFor decimal(13,4)                                                                  
declare @AuxQuantAtendida decimal(10,3)                                                                  
                                                                          
declare @ValorTotalPedidos decimal(11,2)                                                                           
declare @ValorTotalSubTrib decimal(11,2)                                                                       
declare @ValorProdutosTotal decimal(11,2)                                                                
declare @ValorServicosTotal decimal(11,2)     
    
--327726      
declare @ValorProdutosNota decimal(11,2)                                                                
declare @ValorServicosNota decimal(11,2)    
                                                    
declare @ValorDesconto decimal(11,2)                                                                                              
declare @ValorDescontoServicos decimal(11,2)                                                                                              
declare @ValorFrete decimal(11,2)                                                                                              
declare @ValorSeguro decimal(11,2)                                                              
declare @ValorDespesas decimal(11,2)                                                                                              
declare @ValorTotalRetencoes decimal(11,2)     
--327726      
declare @ValorTotalRetencoesISS decimal(11,2)                                                                                              
declare @ValorTotalRetencoesICM decimal(11,2)      
    
                                                                                             
declare @ValorComplementar decimal(11,2)                                                                          
                                                                                              
                                                                                              
declare @SumValorProdutos decimal(11,2)                                                                                              
declare @SumValorBaseICM decimal(11,2)                                                                                              
declare @SumValorIPI decimal(11,2)                                                                                              
declare @SumValorICM decimal(11,2)                                                                 
declare @SumValorSubTrib decimal(11,2)                                                                                              
declare @SumValorBaseSubTrib decimal(11,2)                                                                             
--MARCELO - CHAMADO 195051                                      
declare @SumValorSubTribCarga decimal(11,2)                                                                                              
declare @SumValorBaseSubTribCarga decimal(11,2)                  
declare @SumValorServicos decimal(11,2)                                             
declare @SumValorDesconto decimal(11,2)                 
declare @SumValorDescontoServicos decimal(11,2)                                                                                              
declare @SumValorFrete decimal(11,2)                                                                                       
declare @SumValorSeguro decimal(11,2)                                                
declare @SumValorDespesas decimal(11,2)                                                                                              
declare @SumValorDespesasNaoInc decimal(11,2)                                                                                              
declare @SumValorFreteTransp decimal(11,2)                                                                                              
declare @SumValorTotalRetencoes decimal(11,2)                                                                                     
declare @SumValorBaseISS decimal(11,2)                                                                                              
declare @SumValorProdutosSemImpostos decimal(11,2)                                           
                      
declare @SumValorComplementar decimal(11,2)                                     
                                                                            
declare @AuxSumValorProdutos decimal(11,2)                                                        
declare @AuxSumValorBaseICM decimal(11,2)                                                                                              
declare @AuxSumValorIPI decimal(11,2)                                                                                              
declare @AuxSumValorICM decimal(11,2)                                                                                   
declare @AuxSumValorSubTrib decimal(11,2)                                      
declare @AuxSumValorBaseSubTrib decimal(11,2)                                                                                              
--MARCELO - CHAMADO 195051                                      
declare @AuxSumValorSubTribCarga decimal(11,2)                                                                                              
declare @AuxSumValorBaseSubTribCarga decimal(11,2)                                                                     
declare @AuxSumValorServicos decimal(11,2)                                                                                              
declare @AuxSumValorBaseISS decimal(11,2)                                                                                              
declare @AuxSumValorProdutosSemImpostos decimal(11,2)                                                                                              
                                                                            
                                                                                              
declare @ValorDespesasNaoInc decimal(11,2)                                                                                              
declare @ValorFreteTransp decimal(11,2)                                                                                              
       
Declare @FlagSubTribDespesas numeric(1)                                                                                                
Declare @CodSubTributaria integer                                                                       
declare @SubFlagSomaDespesas integer                                                                                            
--Gabriella - 333391  
--declare @ValorIPIDespesas decimal(11,2)                                                                                        
declare @FlagDespesasIPI int                                                                          
--145342                                                                    
declare @SomaICMProdutos     decimal(11,2)                                                                                  
declare @CompSomaICMProdutos decimal(11,2)                                                                   
--144459                                                                      
declare @SomaICMServicos     decimal(11,2)                                                     
declare @CompSomaICMServicos decimal(11,2)                                                                       
declare @SomaContabilNotaServicos decimal(11,2)                                                      
declare @Diferenca decimal(11,2)                                                            
declare @FlagTipoDiferenca numeric(1)                                       
--MARCELO - CHAMADO 182639                                                
declare @DiferencaProduto decimal(11,2)                                                            
declare @FlagTipoDiferencaProduto numeric(1)                                            
declare @DiferencaServico decimal(11,2)                                                            
declare @FlagTipoDiferencaServico numeric(1)                     
declare @Contador numeric(1)                            
                          
-- Renato - Chamado 272165                            
declare @ValorBasePisCofins numeric(11,2)                          
declare @AliqPis numeric(4,2)                          
declare @AliqCofins numeric(4,2)                     
              
declare @NumCstICM varchar(3)              
declare @NumCstIPI varchar(3)              
declare @NumCstPisCofins varchar(3)              
declare @NumCsosn varchar(3)              
-- Renato - 278440                    
declare @AuxValorUnitario decimal(13,4)                      
declare @FlagDeduzirDespNaoInclNaMargem smallint                    
declare @ValorDescontoAux decimal(11,2)                  
declare @ParTipoReducaoICM numeric(1)                  
--Rafael chamado 281202                  
declare @ValorProdutosTributados decimal(11,2)                  
declare @MaiorAliqIPI decimal(4,2)           
-- Renato - 297792      
declare @NatReceitaPisCofins Int      
-- Renato - 332318  
declare @NatBaseCalcCredito Smallint     
--Gabriella - 324462      
declare @EmpId varchar(15)    
--Gabriella - 333391  
declare @AuxAcrescimoBaseIPI decimal(11,2)   
declare @AuxValorBaseIPI decimal(11,2);                                                                        
declare @AuxValorIsentoIPI decimal(11,2);                                                                        
declare @AuxValorOutrasIPI decimal(11,2);    
-- Renato - 360358
declare @AliqICMSST decimal(5,2);
declare @PercMvaICMSST decimal(5,2);  
--Gabriella - 360317
declare @OprTipoIPI numeric(1);

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

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

Go

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

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

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

Go



Alter procedure [dbo].[Stored_Prft110Duplicata]                                                                                      
@Empresa numeric(2),                                                                                        
@TipoControle numeric(1),                                                                                        
@CodControle numeric(9),                                                                                        
--@CodBanco numeric(5),                                                                                        
@CodBanco int,                                                                                      
@CodOperacaoDup char(5),                                                                                        
@Venc_Sequencia int,    --Numero de Sequencia da tabela temporaria de Vencimentos do Processar NF                                                                                        
@ValorTotalProcessado decimal(11,2),                                                                                        
@FlagCupom numeric(1), --0 Nota, 1-Cupom 2-Nota e Cupom,                                                                                    
@SerieControle char(3)                                                                                    
as                                                                                        
                                                                     
/********************                                                    
-- VERSÃO 1.99                                                   
********************/                                                    
                                                                       
--ATENÇÃO: Esta procedure só pode ser chamada de dentro da Stored_Prft110Processar, senão dá erro.                                                                                        
                                                                                        
--Variaveis auxiliares                                                                                        
Declare @TipoDuplicata numeric(1)                                                                                        
Declare @CodDuplicata varchar(15)                                                                                        
Declare @NumDocumento numeric(6)                                                                                        
Declare @FlagGravacao numeric(1)                                                                                        
Declare @ContParcela numeric(2)                                                                                        
Declare @Parcela numeric(3)                                                                                        
Declare @Vencimento datetime                                                                                        
Declare @ValorParcela decimal(11,2)                                                                                        
Declare @SalvaDup varchar(15)                                                                                        
Declare @QtdTotal numeric(6)                                                                                        
Declare @NumSequenciaBaixa numeric(9)                                                                                        
Declare @NumSequenciaOcorrencia numeric(9)                                                                                        
Declare @NumOcorrenciaMovBaixa numeric(6)                                                                                        
Declare @NumOcorrenciaMovOcorr numeric(6)                                                                                        
-- ALTERADO NA VERSAO 1.51                                                                                        
--Declare @CodDespesa numeric(5)                                     
Declare @CodConta numeric(6)                                                                             
Declare @FlagDevolucao numeric(1)                                              
                                                         
--Declare @CodBancoCheque numeric(3)                  
Declare @CodBancoCheque int                                   
Declare @NumContaCheque numeric(9)                                                           
Declare @NumAgenciaCheque numeric(4)                                                                                    
Declare @NumCNPJ bigint                                                                                       
Declare @TipoPessoa numeric(1)                                                                                        
Declare @DigitoContaCheque char(1)                                                                                        
Declare @Emitente varchar(40)                                                                                        
Declare @NumCheque varchar(15)                                                                                        
Declare @ValorPrecision1 float                                                                                        
Declare @ValorPrecision2 float                                                                             
Declare @Fator float                                                   
                                                                                        
Declare @CodFormaPagamento numeric(5)                                                                                        
Declare @CodCondPagto char(5)                                                             
Declare @FlagBaixar numeric(1)                                                                                        
--Declare @CodBancoBaixa numeric(5)                                                                                        
Declare @CodBancoBaixa int                                                                       
Declare @CodContaAdicional numeric(6)                                                                                        
Declare @ValorAdicional decimal(11,2)                                                                                        
Declare @StrDupBaixadas varchar(100)                                                                           
Declare @Contador Int                                                                                      
Declare @CodContaTotalNota Int                                                                           
Declare @CodBancoDupl Int                                                                                   
--121007                                                                          
Declare @ValorComplementar decimal(11,2)                                                                     
--Karina - 125968                                                                    
Declare @PrimeiraDuplicata Varchar(15)                                                                   
Declare @RelacaoVendedores Numeric(1)                                                                
Declare @ValorTotalNotaInicial  decimal(11,2)                                                                 
Declare @ValorTotalNotaTratada  decimal(11,2) /*Será utilizada somente no calculo da comissao*/                                                                    
Declare @ValorTituloDuplInicial decimal(11,2)                                                                
Declare @ValorTituloDuplTratado decimal(11,2) /*Será utilizada somente no calculo da comissao*/                                                                        
Declare @ValorIPI     decimal(11,2)                                                                   
Declare @ValorFrete    decimal(11,2)                                                                  
Declare @ValorICM          decimal(11,2)                                                                   
Declare @ValorSubTrib    decimal(11,2)                                     
Declare @ValorDespesas    decimal(11,2)                                                                 
Declare @FlagSomaIPI      Numeric(1)                                                                 
Declare @FlagSomaFrete     Numeric(1)                                                              
Declare @FlagSomaICM       Numeric(1)                                    
Declare @FlagSomaSubTrib   Numeric(1)                                                                
Declare @FlagSomaDespesas  Numeric(1)                                                        
Declare @ValoresAdicionais decimal(11,2)                                                       
--JALDO/RAFAEL - CHAMADO 201195                                            
Declare @NumSequenciaMovCaixa numeric(9)                                            
--MARCELO - CHAMADO 233642                                        
Declare @DesconsiderarVencimentos smallint --1 - Ignora vencimentos de duplicatas de ST; 2 - Não ignora nenhum vencimento                                      
Declare @FlagDuplicataST smallint                                           
Declare @ExisteDuplicataST smallint                                      
Declare @TempValorTotalProcessado decimal(11,2)                                      
Declare @TempValorTotalNotaInicial  decimal(11,2)                                                                 
Declare @ValorDuplicataST decimal(11,2)                               
-- Renato - Chamado 260385                          
Declare @ComplementoDupl varchar(200)                          
Declare @Valordiferenca decimal(11,2)          
          
Declare @FlagNaoGerenciarNumDocumento smallint -- Eder Ramos Chamado 302201     
--Gabriella - 301399  
Declare @EmpID varchar(15)        
    
-- Declare @FlagSomarDespesasDupST smallint -- JALDO - CHAMADO 301399    
        
                                            
Set @NumSequenciaMovCaixa = 0                                                                                   
Set @NumOcorrenciaMovBaixa = 0                                                                                      
Set @NumOcorrenciaMovOcorr = 0                                                                                      
--MARCELO - CHAMADO 127544                                                              
Set @NumSequenciaBaixa = 0                                      
Set @StrDupBaixadas = ''                                                                                   
/*                                                                                        
-Pega a CodContaTotalNota e CodDespesa da Operação Informada na Nota                                                                                         
-Seta o Tipo da Duplicata... se for Operacao de Devolucao, o Tipo da Duplicata                                         
 é o inverso do Tipo de Controle, se não, é igual ao Tipo de Controle                                                                                        
*/     
  
--Gabriella - 301399  
Select @EmpId = Id From Empresas                                                  
Where Codigo = @Empresa             
          
--Eder Ramos Chamado 302201          
Select           
  @FlagNaoGerenciarNumDocumento = FlagNaoGerenciarNumDocumento        
From ParamControleSerie                  
where Empresa = @Empresa and Serie= @SerieControle          
                                                                                     
begin                                                                                    
                                                                                    
Select Top 1 @CodContaTotalNota = Dop.CodContaTotalNota                                       
  From NotasFiscais NF                                                                                    
  Left Join DetalhesOperacoes Dop on  Dop.CodOperacao = NF.CodOperacao                                                                                    
                and Dop.Empresa in(0, Nf.Empresa)                                               
Where NF.Empresa = @Empresa                                                                                        
   And NF.TipoControle  = @TipoControle   
   And NF.CodControle   = @CodControle                                                                                    
Order By Dop.Empresa Desc                                              
                                                                
Select @RelacaoVendedores = FlagTipoRelacaoVendedores    
      -- @FlagSomarDespesasDupST = FlagSomarDespesasDupST --JALDO- CHAMADO 301399    
  From ParamControle                                                                        
   Where Empresa=@Empresa                                             
                                                                                    
                                                                                        
Select                                                                                         
-- ALTERADO NA VERSAO 1.51                                                                                  
-- @CodDespesa = isnull(Op.CodDespesa,0),                                                                                        
  @CodCondPagto = NF.CodCondPagto,                              
  @CodConta   = Case when (isnull(Op.FlagIgnorarContaEntidade,0) = 1) or (isnull(E.CodConta,0) = 0)                            
         then isnull(@CodContaTotalNota,0)                                                                                      
                     else isnull(E.CodConta,0) end,                                                        
  @FlagDevolucao = Case isnull(Op.TipoMovimento,0) When 1 then 1 Else 0 End,                                                                                        
  @CodBancoBaixa = Case IsNull(U.CodBanco,0) When 0 Then @CodBanco Else U.CodBanco End,                                                                                        
  @CodContaAdicional = Case isnull(Op.TipoMovimento,0) When 1 then 0 Else      -- nao pode ser devolucao                                                                            
                       -- tem que ser despesa na Nota/Pedido, e ter valor de despesa informado                                                          
                       --Ronaldo Chamado 362382
                       --(Case When (IsNull(B.TipoDespesa,0) <> 2) and (B.ValorDespesa <>0) Then 0 Else                                                                                           
                         (Case When (IsNull(B.TipoDespesa,0) = 2) and (B.ValorDespesa <>0) Then                                                                                      
                            --nota de entrada, tem que ter a conta adicional pagar informada no cad. de op. de dup.                                             
                            Case When @TipoControle = 1 and IsNull(OpDup.CodContaAdicionalPagar,0) <> 0                                                                                         
                                   Then OpDup.CodContaAdicionalPagar                                                                                        
                            --nota de saida, tem que ter a conta adicional receber informada no cad. de op. de dup.                                                                                        
                                 When @TipoControle = 2 and IsNull(OpDup.CodContaAdicionalReceber,0) <> 0                                                             
                                   Then OpDup.CodContaAdicionalReceber                                                                                        
                                 Else 0 End
                          Else 0 End)                                                                                        
                       End,                               
  @ValorAdicional         = IsNull(B.ValorDespesa,0),                                                                
  @ValorTotalNotaInicial  = IsNull(NF.ValorTotalNota,0),                                                                
  @ValorIPI = IsNull(NF.ValorIPI,0),                                                                
  @ValorFrete    = IsNull(NF.ValorFrete,0),                                 
  @ValorICM        = IsNull(NF.ValorICM,0),                                                                
  @ValorSubTrib    = IsNull(NF.ValorSubTrib,0),                                                                  
  @ValorDespesas   = IsNull(NF.ValorDespesas,0)                                           
                                                                                      
From                                                      
  NotasFiscais NF                                                                                    
  Left Join Operacoes Op On Op.Codigo = NF.CodOperacao                                                                                        
  Left Join Usuarios U On U.Codigo = NF.CodUsuarioInc                                                                                        
  Left Join Bancos B on B.Codigo = @CodBanco                                                                
  Left Join OperacoesDup OpDup on OpDup.Codigo = @CodOperacaoDup                                                   
  Left Join Entidades E on E.Codigo = NF.CodEntidade                                                                                        
Where NF.Empresa = @Empresa                                                                                        
  And NF.TipoControle = @TipoControle                                       
  And NF.CodControle = @CodControle                                                                                        
                                                                                        
if @FlagDevolucao = 1                                                                    
begin                                                                                        
  if @TipoControle = 1                                                                                        
    Set @TipoDuplicata = 2                              
  else                                                                                        
   Set @TipoDuplicata = 1                                                                                        
end                                                                                        
else                                                        
  Set @TipoDuplicata = @TipoControle                                                                                          
                                                                                        
                                                                
Set @ValorTotalNotaTratada = @ValorTotalNotaInicial                                                                
                                                
--Karina - 125968                                                                
if (@RelacaoVendedores = 0)                                                                
begin                                                                
  Set @ValoresAdicionais = 0                                                                
                                 
  Select @FlagSomaIPI = FlagSomaIPI, @FlagSomaFrete = FlagSomaFrete,                                                                
  @FlagSomaICM = FlagSomaICM, @FlagSomaSubTrib = FlagSomaSubTrib,                                                                
  @FlagSomaDespesas = FlagSomaDespesas                                                                
  From CondPagto                                                                
  where Codigo = @CodCondPagto             
                                                   
  if @FlagSomaIPI = 1                                                                 
    Set @ValoresAdicionais = @ValoresAdicionais + @ValorIPI                                                                
  if @FlagSomaFrete = 1                                                                 
    Set @ValoresAdicionais = @ValoresAdicionais + @ValorFrete                                 
  if @FlagSomaICM = 1                                      
    Set @ValoresAdicionais = @ValoresAdicionais + @ValorICM                                                                 
  if @FlagSomaSubTrib = 1                        
    Set @ValoresAdicionais = @ValoresAdicionais + @ValorSubTrib                                                                    
  if @FlagSomaDespesas = 1                                             
    Set @ValoresAdicionais = @ValoresAdicionais + @ValorDespesas                                                                       
                                  
  Set @ValorTotalNotaTratada = @ValorTotalNotaTratada - @ValoresAdicionais                                                                
end                                                                 
                                                                
                                            
                                                                
--@FlagCupom: 0 Nota, 1-Cupom 2-Nota e Cupom                                                                                        
                                                                    
--Karina - 125968                                                                    
Set @PrimeiraDuplicata = ''                                               
                                        
--MARCELO - CHAMADO 233642                                        
set @DesconsiderarVencimentos = 2                                        
if not Exists(select Top 1 Empresa from MovEstoque                                        
              where Empresa = @Empresa                                        
                and TipoControle = @TipoControle                                        
                and CodControle = @CodControle                                        
                and CodProduto <> 8888888)                                              
  set @DesconsiderarVencimentos = 1                                      
                                      
                                      
--MARCELO - CHAMADO 233642                                        
set @ExisteDuplicataST = 0                                      
if Exists(select * from TempPRFT110Venc                                      
          where NumSequencia = @Venc_Sequencia                                      
            and FlagDuplicataST = 1)                                      
 set @ExisteDuplicataST = 1                                      
                                      
--MARCELO - CHAMADO 233642                                        
set @ValorDuplicataST = 0        
    
--JALDO - CHAMADO 301399                                      
if @ExisteDuplicataST = 1   
begin    
 --Gabriella - 301399  
 if (@EmpId <> 'DINAMAR')   
 begin                                   
   set @ValorDuplicataST = IsNull((select Sum(ME.ValorSubTrib) from MovEstoque ME                                       
                                   where ME.Empresa = @Empresa                                      
                                     and ME.TipoControle = @TipoControle                                      
                                     and ME.CodControle = @CodControle), 0)                                      
 end  
 else  
 begin  
   set @ValorDuplicataST = IsNull((select (NF.ValorSubTrib + NF.ValorFrete + NF.ValorDespesas) from NotasFiscais NF                                      
                                   where NF.Empresa = @Empresa                                      
                                     and NF.TipoControle = @TipoControle                                      
                                     and NF.CodControle = @CodControle), 0)     
 end                                                     
end  
    
--JALDO - CHAMADO 301399  
/*    
if @ExisteDuplicataST = 1     
begin          
  set @ValorDuplicataST = Case When @FlagSomarDespesasDupST = 0 Then     
                               IsNull((select Sum(ME.ValorSubTrib) from MovEstoque ME                                       
                                      where ME.Empresa = @Empresa                                      
                                      and ME.TipoControle = @TipoControle                                      
                                      and ME.CodControle = @CodControle), 0)    
                          Else          
                            IsNull((select T.Valor from TempPRFT110Venc T    
                                    where T.NumSequencia = @Venc_Sequencia    
                                     and T.FlagDuplicataST = 1),0)    
                          End      
end    
*/  
                                    
--MARCELO - CHAMADO 233642                                  
set @TempValorTotalProcessado = @ValorTotalProcessado                                    
set @TempValorTotalNotaInicial = @ValorTotalNotaInicial                               
                          
                          
-- Renato - Chamado 260385                          
-- Copiando a primeira observação do tipo duplicata da nota fiscal para armazenar no campo Complemento das Duplicatas.                          
Set @ComplementoDupl = IsNull((Select Top 1 Substring(Observacao,1,200)                           
         From ObsNotasFiscais                           
         Where Empresa = @Empresa                           
           and TipoControle = @TipoControle                           
              and CodControle = @CodControle                           
           and TipoObs = 6                           
         Order By Sequencia),'')                          
                          
                          
                               
                                                            
Declare CursorDup Cursor  Local Fast_Forward for                                                                                        
       Select                                                                                                 
          T.NumParcela, T.Vencimento, T.Valor,                                             
         (Select Count(*) From TempPrft110Venc                                                                                        
--MARCELO - CHAMADO 233642                                        
--          Where NumSequencia = @Venc_Sequencia) as QtdTotal,                                                          
          Where NumSequencia = @Venc_Sequencia                                        
     and FlagDuplicataST <> @DesconsiderarVencimentos) as QtdTotal,                                                          
         T.NumCheque, T.EmitenteCheque, T.CodBancoCheque, T.NumContaCheque,                                                 
         T.NumAgenciaCheque, T.NumCNPJ, T.TipoPessoa, T.DigitoContaCheque,                                                                                        
         T.CodFormaPagamento, T.FlagBaixa, T.CodBanco, T.ValorComplementar,                                      
--MARCELO - CHAMADO 233642                                      
         T.FlagDuplicataST                                      
    From TempPrft110Venc T                                                        
       Where T.NumSequencia = @Venc_Sequencia                                        
--MARCELO - CHAMADO 233642                                        
         and T.FlagDuplicataST <> @DesconsiderarVencimentos                                        
                        
Open CursorDup                                                                                        
Fetch Next from CursorDup into @Parcela, @Vencimento, @ValorParcela, @QtdTotal,                         
                               @NumCheque, @Emitente, @CodBancoCheque, @NumContaCheque,                                      
                               @NumAgenciaCheque, @NumCNPJ, @TipoPessoa, @DigitoContaCheque,                                                                                        
                               @CodFormaPagamento, @FlagBaixar, @CodBancoDupl, @ValorComplementar,                                      
                --MARCELO - CHAMADO 233642                                      
                               @FlagDuplicataST                                                      
                                      
While @@Fetch_Status = 0                                                               
Begin                                                                     
            
       --Eder Ramos Chamado 302201                                                               
   If (@FlagNaoGerenciarNumDocumento = 0) and ((@FlagCupom = 0) or (@FlagCupom = 2)) --Somente Nota ou Nota e Cupom                                                                                        
   begin                            
  --Rafael chamado 254456                                                                                     
  -- Set @NumDocumento = (select UltimaDuplicata From ParamControleSerie where Empresa=@Empresa and Serie=@SerieControle) -- É o Numero da Proxima Duplicata porque foi atualizada antes de entrar no While                            
  Set @NumDocumento = (select UltimaDuplicata From ParamControleSequencia where Empresa=@Empresa and Serie=@SerieControle) -- É o Numero da Proxima Duplicata porque foi atualizada antes de entrar no While                                                  
  
    
      
        
             
               
                 
                   
                     
                       
                         
                           
                                                                                       
  Set @CodDuplicata = Replicate('0',(6 - Len(@NumDocumento))) + Cast(@NumDocumento as varchar) +                                                                
       '/' + Cast(@Parcela as varchar)                                                                                        
   end                                                                                        
   Else  --somente cupom  ou quando a flagNaoGerenciarNumDocumento estiver selecionada                                                                                       
   begin                                                                                        
  Set @NumDocumento = @CodControle                                                                                        
  Set @CodDuplicata = 'CTR' +                                                                                       
       Replicate('0',(6 - Len(@NumDocumento))) + Cast(@NumDocumento as varchar) +                                                                                         
       '/' + Cast(@Parcela as varchar)                                                                                     
   end                                                                     
                                                                    
                                                                    
  Set @FlagGravacao = 0                                                 
  Set @ContParcela = 0                                                                    
  Set @SalvaDup = @CodDuplicata                                                                                        
  While @FlagGravacao = 0 and @ContParcela < 99                                                                                        
  Begin                                                                                        
    If Exists(Select Empresa from Duplicatas                                                                 
      Where Empresa=@Empresa                                                                                         
                 and TipoDuplicata=@TipoDuplicata                                                                                         
                 and CodDuplicata=@CodDuplicata) or                                                                                        
       Exists(Select Empresa from MovDuplicata               
               where Empresa=@Empresa                                                                                         
                 and TipoMovimento=0                                                                                        
                 and TipoDuplicata=@TipoDuplicata                                                                                        
                 and CodDuplicata=@CodDuplicata)                                                      
    Begin                                                                                        
      Set @ContParcela = @ContParcela + 1                                                                                        
      Set @CodDuplicata = @SalvaDup + Replicate('0',2-len(@ContParcela)) +  Cast(@ContParcela as varchar) --Sequencia Auxiliar Ex: 000001/101                                                                                        
    End                                                                       
    Else                                                                    
      Set @FlagGravacao = 1                                                         
  End                                     
                                      
  --MARCELO - CHAMADO 233642                                      
  --  set @TempValorTotalProcessado = @ValorTotalProcessado                                    
  --  set @TempValorTotalNotaInicial = @ValorTotalNotaInicial                                    
                                  
                          
  if @ExisteDuplicataST = 1                                      
  begin                                      
    set @ExisteDuplicataST = 0                                      
    set @TempValorTotalProcessado = @TempValorTotalProcessado - @ValorDuplicataST                                      
    set @TempValorTotalNotaInicial = @TempValorTotalNotaInicial - @ValorDuplicataST                                           
  end                                      
                                      
  if @FlagDuplicataST = 1                                       
  begin                                   
    set @ValorParcela = @ValorDuplicataST                                          
    set @ValorTituloDuplInicial = @ValorParcela                                      
    Set @ValorTituloDuplTratado = @ValorParcela                                     
                              
    Set @Fator = 0                                                                              
    Set @ValorPrecision1 = @ValorParcela                                                                                       
    Set @ValorPrecision2 = @ValorTotalProcessado                            
    If @ValorPrecision2 > 0                                                                                        
      Set @Fator = @ValorPrecision1 / @ValorPrecision2                                              
    If @Fator = 0                                                                              
      Set @Fator = 1                                                                         
  end                                                                               
  else                                       
  begin                                              
    --Move para uma variável float só para ficar igual ao firebird                                                                                        
    Set @Fator = 0                                                                              
    Set @ValorPrecision1 = @ValorParcela                                                                                        
    --MARCELO - CHAMADO 233642                                        
    --Set @ValorPrecision2 = @ValorTotalProcessado                                      
    Set @ValorPrecision2 = @TempValorTotalProcessado                         
    If @ValorPrecision2 > 0                                  
      Set @Fator = @ValorPrecision1 / @ValorPrecision2                                                                                        
    If @Fator = 0                
      Set @Fator = 1                                                                         
                                      
    --MARCELO - CHAMADO 233642                                                                
    --Set @ValorTituloDuplInicial = case when @ValorTotalProcessado = 0 then 0                                                          
    --Else (Round(@ValorTotalNotaInicial * @Fator,2) * Case @FlagDevolucao When 1 then -1 Else 1 End)                                                                 
    Set @ValorTituloDuplInicial = case when @TempValorTotalProcessado = 0 then 0                                                          
        Else (Round(@TempValorTotalNotaInicial * @Fator,2) * Case @FlagDevolucao When 1 then -1 Else 1 End) End                 
    Set @ValorTituloDuplTratado = @ValorTituloDuplInicial                                
                              
    --MARCELO - CHAMADO 233642                              
    if @TempValorTotalProcessado <> @ValorTotalProcessado                              
    begin                              
      Set @Fator = 0                          
      Set @ValorPrecision1 = @ValorParcela                                                                                        
      Set @ValorPrecision2 = @ValorTotalProcessado                                      
      If @ValorPrecision2 > 0                                                                                        
        Set @Fator = @ValorPrecision1 / @ValorPrecision2                                                                                        
      If @Fator = 0                                                                              
        Set @Fator = 1                                                                         
    end                                                              
  end                                      
                                                                
  --Karina - 125968                                                                    
  if (@PrimeiraDuplicata = '')                                                                    
  begin                                                                
    if (@RelacaoVendedores = 0)                                                                
      Set @ValorTituloDuplTratado = @ValorTituloDuplTratado - (@ValoresAdicionais * Case @FlagDevolucao When 1 then -1 Else 1 End)                                                         
                                                        
    Set @PrimeiraDuplicata = @CodDuplicata                                                                   
  end                            
                                                                               
  Insert into Duplicatas (Empresa, TipoDuplicata, CodDuplicata, CodEntidade,                 
               NumDocumento,                                                                                         
               DataEmissao, DataDocumento, DataVencimento,                                                                                   
               DataPagamento,                                                                                        
               ValorFatura,                                                                                         
               ValorTitulo,                                                                                         
               CodBanco, CodOperacaoDup, CodOperacao,                                                                                        
               CodVendInterno, CodVendExterno, CodVendParceiro, CodCondPagto,                                                                                         
               CodConta, TipoControle, CodControle, StatusTransacao, FlagDevolucao,                                                                         
               CodBancoCheque, NumContaCheque, NumAgenciaCheque, NumCheque,                                                                             
               EmitenteCheque, NumCNPJ, TipoPessoa, DigitoContaCheque, CodDepartamento,                                                                                        
               ValorComissaoInterno,                                                                                        
               ValorComissaoExterno,                                                                                        
               ValorComissaoParceiro,                                                      
               ValorComplementar,                                                           
               --133864                                      
               ValorBaseComissao,                          
               -- Renato - Chamado 260385                          
               Complemento)                                                                                        
         Select @Empresa, @TipoDuplicata, @CodDuplicata, N.CodEntidade,                                                                    
                 'NF' + Replicate('0',6 - Len(N.NumDocumento)) + Cast(N.NumDocumento as varchar(6)),                                         
                 N.DataDocumento, N.DataDocumento, @Vencimento,                                                                                        
                 case when @FlagBaixar = 1 then N.DataMovimento Else null End,                                                                                   
                 N.ValorTotalNota,                                                                
                 @ValorTituloDuplInicial,               
             Case @FlagBaixar When 1               
                  Then Case when isnull(@CodBancoDupl,0) = 0 then @CodBancoBaixa else @CodBancoDupl End                                                                           
                  Else Case when isnull(@CodBancoDupl,0) = 0 then @CodBanco else @CodBancoDupl End                                                  
                 End,                                                                           
               @CodOperacaoDUp, N.CodOperacao,                                                                                         
               N.CodVendInterno, N.CodVendExterno, N.CodVendParceiro, N.CodCondPagto,                                                                                        
               @CodConta, N.TipoControle, N.CodControle, 1, @FlagDevolucao,      
               @CodBancoCheque, @NumContaCheque, @NumAgenciaCheque, @NumCheque,                                                                                        
               @Emitente, @NumCNPJ, @TipoPessoa, @DigitoContaCheque, N.CodDepartamento,                                                                
  --MARCELO - CHAMADO 200837                                                            
               case @ValorTotalNotaTratada                                               
                    when 0 then 0                                               
                    else isnull(((Abs(@ValorTituloDuplTratado) / @ValorTotalNotaTratada) *                                               
                                 ((N.ValorComissaoInterno * (VenInt.AliqComissaoDup)) / 100)),0) *                                               
                         Case @FlagDevolucao When 1 Then -1 Else 1 End end,                                       
               --MARCELO - CHAMADO 200837                                                            
               case @ValorTotalNotaTratada                                               
                    when 0 then 0                                               
                    else isnull(((Abs(@ValorTituloDuplTratado) / @ValorTotalNotaTratada) *                                               
              ((N.ValorComissaoExterno * (VenExt.AliqComissaoDup)) / 100)),0) *                                               
                         Case @FlagDevolucao When 1 Then -1 Else 1 End end,                                                      
               --MARCELO - CHAMADO 200837                                                            
               case @ValorTotalNotaTratada                                               
                    when 0 then 0                                               
                    else isnull(((Abs(@ValorTituloDuplTratado) /@ValorTotalNotaTratada) *                                               
                                ((N.ValorComissaoParceiro * (VenPar.AliqComissaoDup)) / 100)),0) *                                              
                         Case @FlagDevolucao When 1 Then -1 Else 1 End end,                                                      
               @ValorComplementar,                                                          
               --133864                                                          
               case @ValorTotalNotaTratada when 0 then 0 else                                                      
               Abs((@ValorTituloDuplTratado / @ValorTotalNotaTratada) * N.ValorBaseComissao) end,                          
               -- Renato - Chamado 260385                          
               @ComplementoDupl                                                      
           From NotasFiscais N                                                                                         
             Left Join Vendedores VenInt on VenInt.Codigo = N.CodVendInterno                                                                                        
             Left Join Vendedores VenExt on VenExt.Codigo = N.CodVendExterno                                                                                    
             Left Join Vendedores VenPar on VenPar.Codigo = N.CodVendParceiro                                                                                        
           Where N.Empresa=@Empresa                                                                                         
             and N.TipoControle=@TipoControle                                                                            
             and N.CodControle=@CodControle                                                                                        
                                                                                        
--Inclui Mov. de Ocorrência para lançar o valor adicional, dependendo do banco que deve                                                                                        
--estar com despesa do Tipo de despesa = 2, com valor de despesa informado, e ter a                                                        --conta informada na operação da dup                                              
  
 
  if @CodContaAdicional <> 0                                                                                        
  begin                                                                                        
    --Adianta a Ultima Sequencia                                                                       
    if (@NumOcorrenciaMovOcorr = 0)                                                                                        
    begin                                                                            
       --MARCELO - CHAMADO 163320                                                     
--       exec ProximaSequencia 'MOVDUPLICATAOCORR', @Empresa, 1, @NumSequenciaOcorrencia OUTPUT                                                                            
--MARCELO - CHAMADO 225117                                          
--       exec @NumSequenciaOcorrencia = ProximaSequencia 'MOVDUPLICATAOCORR', @Empresa, 1                                                    
       exec @NumSequenciaOcorrencia = ProximaSequencia 'MOVFINANCEIRO', @Empresa, 1                       
    end                                                                            
                               
    Set @NumOcorrenciaMovOcorr = @NumOcorrenciaMovOcorr + 1                                                                                        
    Insert Into MovDuplicata                                                                         
         (                                                                 
           Empresa,               TipoMovimento,   NumSequencia,                                                                                        
           NumOcorrencia,         TipoDuplicata,   CodDuplicata,                                                                                         
           DataMovimento,         DataVencimento,                                                                                          
           ValorRecebido,                                                                                           
           CodBanco,              CodOperacaoDup,                                                                                               
           CodUsuario,                                                           
           CodEntidade,           NumDocumento,                                                                    
           DataEmissao,                           
           DataDocumento,         StatusTransacao,                                                                                              
           CodConta,              EmpresaDuplicata, ValorAdicional,                                                                                      
       CodDepartamento                                                                      
         )                   
         Select                                                                                        
           @Empresa,               2,               @NumSequenciaOcorrencia,                                                                                        
           @NumOcorrenciaMovOcorr, @TipoDuplicata,  @CodDuplicata,                                                                                        
           N.DataMovimento,        @Vencimento,                                                                                                     
--MARCELO - CHAMADO 233642                                      
--           case @ValorTotalProcessado when 0 then 0 Else Round((N.ValorTotalNota+N.ValorComplementar) * @Fator,2) end,                                                  
           case @TempValorTotalProcessado when 0 then 0 Else Round((N.ValorTotalNota+N.ValorComplementar) * @Fator,2) end,                                                                                        
         Case @FlagBaixar When 1 Then                                                                           
      Case when isnull(@CodBancoDupl,0) = 0 then @CodBancoBaixa else @CodBancoDupl End                                                                            
           Else                                                                           
             Case when isnull(@CodBancoDupl,0) = 0 then @CodBanco else @CodBancoDupl End                                                                            
           End, @CodoperacaoDup,                                                                                                
          (Case N.CodUsuarioAlt when 0 then N.CodUsuarioInc else N.CodUsuarioAlt End),                                                              
           N.CodEntidade,          N.NumDocumento,  N.DataDocumento,                                                                                                 
           N.DataDocumento,        1,      @CodConta,                                                                                               
           @Empresa,               @ValorAdicional,                  
           N.CodDepartamento                                                                      
         From                                                                                         
           NotasFiscais N                                                                                        
         Where                                                                                         
          N.Empresa          = @Empresa                                                                        
 and N.TipoControle = @TipoControle                                                                                         
           and N.CodControle  = @CodControle                                                                                         
  end                                                                                        
                                                                                      
  --MARCELO - CHAMADO 127544                                                                  
  if @FlagBaixar = 1                                                                                         
  begin                                                       
    --MARCELO - CHAMADO 127544                                                              
    Set @StrDupBaixadas = @StrDupBaixadas + ' ' + @CodDuplicata                                       
                                                                                      
                                                               
  --MARCELO - CHAMADO 127544                                                              
   --VERIFICA SE EXISTE ALGUMA BAIXA JÁ GERADA PARA OS CONTROLES PROCESSADOS                                                              
  select @NumSequenciaBaixa = IsNull(MD.NumSequencia, 0)                                                         
    From MovDuplicata MD                                                              
    Where MD.Empresa = @Empresa                                            
      And MD.EmpresaDuplicata = @Empresa                                                              
      And MD.TipoMovimento = 3                                                              
  And Exists(Select * From TempPRFT110Nota TNota                                                              
                 Where TNota.Empresa = MD.Empresa                                                                
                   And TNota.TipoControle = MD.TipoControle                                                          
               And TNota.CodControle = MD.CodControle                                              
                   And TNota.CodControle <> 0                                                               
                   And TNota.TipoControle <> 0                                                              
                   And TNota.NumSequencia = (Select NumSequencia From TempPRFT110Nota                                                                                           Where Empresa = @Empresa                                                      
  
    
      
        
                                               And TipoControle = @TipoControle                                                              
                                               And CodControle = @CodControle))                             
                                                              
                                                              
    --Adianta a Ultima Sequencia                                                                                      
    --MARCELO - CHAMADO 127544                                                              
    if (@NumOcorrenciaMovBaixa = 0)                                                               
    begin                                                              
       if (@NumSequenciaBaixa = 0)       
--MARCELO - CHAMADO 163320                                                    
--          exec ProximaSequencia 'MOVFINANCEIRO', @Empresa, 1, @NumSequenciaBaixa OUTPUT                                                                            
          exec @NumSequenciaBaixa = ProximaSequencia 'MOVFINANCEIRO', @Empresa, 1                                                    
       else                                                               
       begin                                                              
         select @NumOcorrenciaMovBaixa = Max(NumOcorrencia)                                                               
         from MovDuplicata                                             
         where NumSequencia = @NumSequenciaBaixa            
           and Empresa = @Empresa                                                              
           and TipoMovimento = 3                                                              
       end                                                              
    end                                                              
                                                                                     
    Set @NumOcorrenciaMovBaixa = @NumOcorrenciaMovBaixa + 1                                                                                        
    Insert Into MovDuplicata                                                                                        
         (                                                                                      
           Empresa,               TipoMovimento,   NumSequencia,                              
           NumOcorrencia,         TipoDuplicata,   CodDuplicata,                                                                                         
           DataMovimento,         DataVencimento,                                                                                          
           DataPagamento,                                                                                        
           ValorRecebido,                                                                                           
           CodBanco,             CodOperacaoDup,                                                   
           CodUsuario,                                                            
           CodEntidade,           NumDocumento,    CodVendInterno,                                    
           CodVendExterno,        CodVendParceiro, ValorFatura,        
           ValorComissaoInterno,                                                                                         
           ValorComissaoExterno,                                                                                  
           ValorComissaoParceiro,                                                                                         
           TipoControle,          CodControle,     DataEmissao,                                                                                                   
           DataDocumento,         StatusTransacao,                                                                                              
           ValorBaseComissao,                                                                                             
           CodConta,              EmpresaDuplicata, CodDepartamento                                                      
         )                                                        
         Select                                                                                        
           @Empresa,               3,             @NumSequenciaBaixa,                                                                                        
           @NumOcorrenciaMovBaixa, @TipoDuplicata,    @CodDuplicata,                                                                                        
           N.DataMovimento,        @Vencimento,                                    
           N.DataMovimento,                                                                                
           --Eder - Chamado 274473              
           --Dupl.ValorTitulo * case @FlagDevolucao when 1 then -1 else 1 end,                         
           --JALDO - CHAMADO 300734    
           --Dupl.ValorTitulo,         --Já está tratado de acordo com o flagdevolucao              
           (Dupl.ValorTitulo + Dupl.ValorComplementar),    
           Case when isnull(@CodBancoDupl,0) = 0 then @CodBancoBaixa else @CodBancoDupl End,                                                                           
           @CodoperacaoDup,                                                                                                
          (Case N.CodUsuarioAlt when 0 then N.CodUsuarioInc else N.CodUsuarioAlt End),                                                                                         
           N.CodEntidade,          N.NumDocumento,    N.CodVendInterno,                                          
           N.CodVendExterno,       N.CodVendParceiro, N.ValorTotalNota,                                      
           Dupl.ValorComissaoInterno,                                                                                        
           Dupl.ValorComissaoExterno,                                                                          
           Dupl.ValorComissaoParceiro,                                                                                       
           @TipoControle,          @CodControle,      N.DataDocumento,                                                                                       
           N.DataDocumento,        1,                                                                       
--MARCELO - CHAMADO 233642                                      
--           case @ValorTotalProcessado when 0 then 0 Else Round((N.ValorTotalNota+N.ValorComplementar) * @Fator,2) * Case @FlagDevolucao When 1 then -1 Else 1 End End,            
           --JALDO - CHAMADO 268529                        
           --case @TempValorTotalProcessado when 0 then 0 Else Round((N.ValorTotalNota+N.ValorComplementar) * @Fator,2) * Case @FlagDevolucao When 1 then -1 Else 1 End End,                                                                                  
  
    
       
       
          
           --Eder - Chamado 274473              
           --Dupl.ValorTitulo * case @FlagDevolucao when 1 then -1 else 1 end,                                   
      Dupl.ValorTitulo,                         
           @CodConta,              @Empresa,          N.CodDepartamento                                                                                      
         From                                                                           
           NotasFiscais N                                                                 
             Left Join Duplicatas Dupl on Dupl.Empresa       = @Empresa       and                                                                    
       Dupl.TipoDuplicata = @TipoDuplicata and                                                                    
       Dupl.CodDuplicata  = @CodDuplicata                                                              
Where N.Empresa       = @Empresa                                                                                           
  and N.TipoControle  = @TipoControle                                                                                         
  and N.CodControle   = @CodControle                                                                                         
  end        
    
  --Gabriella - 358073  
  update TempPrft110RelacaoRetencao  
     set TipoDuplicata = @TipoDuplicata,  
         CodDuplicata = @CodDuplicata  
  where NumSequencia = @Venc_Sequencia  
    and NumParcela = @Parcela                                                                                  
                                                        
  Fetch Next from CursorDup into @Parcela, @Vencimento, @ValorParcela, @QtdTotal,                                                  
                                 @NumCheque, @Emitente, @CodBancoCheque, @NumContaCheque,                                                   
                                 @NumAgenciaCheque, @NumCNPJ, @TipoPessoa, @DigitoContaCheque,                                                                                        
                                 @CodFormaPagamento, @FlagBaixar, @CodBancoDupl, @ValorComplementar,                                      
                                 --MARCELO - CHAMADO 233642                                      
                                 @FlagDuplicataST                                      
End                                                                                        
Close CursorDup                                                                 
Deallocate CursorDup                                                                                        
                                                                                
                                                                  
--Inclui Movimento de Baixa, caso existam duplicatas a serem baixadas                                                                                      
--MARCELO - CHAMADO 127544                                                              
if  (@NumSequenciaBaixa <> 0) and                          
    (not Exists(select MC.NumMovimento from MovCaixa MC                                                               
                where MC.Empresa = @Empresa                                                              
                  and MC.TipoMovimento = 3                                         
                  and MC.NumSequencia = @NumSequenciaBaixa))                                                              
begin                                                              
  Declare CursorCaixa Cursor Local Fast_Forward For                                                                                      
    Select Contador                                               
      From Tempprft110Caixa                                                                                      
   Where NumSequencia = @Venc_Sequencia                                                                       
        and Exists(Select TAux.FlagBaixa                                        
  From TempPrft110Venc TAux                                                                                      
                   Where TAux.NumSequencia = @Venc_Sequencia                                                                                        
                     and TAux.FlagBaixa > 0)                                                                                     
     Order By Contador                                                                                      
  Open CursorCaixa                                                            
  Fetch Next From CursorCaixa into @Contador                                                 
  While @@Fetch_Status = 0                                                                                      
  begin                                                                                          
    --JALDO/RAFAEL - CHAMADO 201195                                            
    exec @NumSequenciaMovCaixa = ProximaSequencia 'MOVCAIXA', @Empresa, 1                                            
    Insert Into MovCaixa                                                                  
           (                                                                                                
             Empresa,           NumMovimento,                                                                                              
             TipoLancamento,                                  
             CodFormaPagamento, NomeBanco,         NomeAgencia,                                                                                        
             NumCheque,         Emitente,                                                           
             Observacao,                                                                                        
             ValorRecebido,                                                                                             
             TipoMovimento,     NumSequencia,                                                                                        
             DataVencimento,    CodBanco,          CodEntidade,                                                                                        
             DataMovimento, Periodo,           NumLote,                                                                                        
             NumLancamento,     NumSequencia_Cont, StatusTransacao,                                                                                        
             CodDepartamento,   CodBancoCheque,    NumContaCheque,                                                                               
             NumAgenciaCheque,  NumCNPJ,           TipoPessoa,                                                                                        
             DigitoContaCheque                                                                                        
           )                                                   
        Select                                             
             --JALDO/RAFAEL - CHAMADO 201195                                            
             --@Empresa,              (Select IsNull(Max(NumMovimento),0) From MovCaixa Where Empresa = @Empresa) + 1,                                                                                  
             @Empresa, @NumSequenciaMovCaixa,                                            
             T.TipoLancamento,                                                                                       
             T.CodFormaPagamento,   '',                 '',                                                                                        
             T.NumCheque,           T.EmitenteCheque,                                               
             'Ref. Duplicatas: ' + @StrDupBaixadas +                                                                           
       + Case When T.Observacao <> '' Then ' - Obs: ' + T.Observacao                                                                                      
                                        Else '' End,                                                                                      
             T.ValorRecebido,                                         
  3,                     @NumSequenciaBaixa,                                                        
--235854       T.DataMovimento,       @CodBanco,          N.CodEntidade,                                                                                         
             T.DataMovimento,       @CodBancoBaixa,          N.CodEntidade,                            
             N.DataMovimento,       '',       0,                                                                                        
             0,                     0,            1,                                                                                        
             N.CodDepartamento,     T.CodBancoCheque,   T.NumContaCheque,                                                                                        
             T.NumAgenciaCheque,    T.NumCNPJ,          T.TipoPessoa,                                                                                        
             T.DigitoContaCheque                                                                                        
        From TempPrft110Caixa T                                                                                      
          Left Join NotasFiscais N On N.Empresa       = @Empresa                                                                                           
                                  and N.TipoControle  = @TipoControle                     
                     and N.CodControle   = @CodControle                                                                                         
        Where T.NumSequencia = @Venc_Sequencia                         
          and T.Contador = @Contador                                                                                   
    Fetch Next From CursorCaixa into @Contador                                                                      
  end                                                                    
  Close CursorCaixa                                                                                      
  Deallocate CursorCaixa                                                                   
end                                                              
            
           
          
Select @ValorParcela=Sum(ValorTitulo)                                                                                        
  From Duplicatas                                                                                         
 where Empresa = @Empresa                                                                                        
   and TipoDuplicata = @TipoDuplicata                                                                      
   and TipoControle = @TipoControle                                                           
   and CodControle = @CodControle                                                                                        
            
--Vai corrigir as diferenças na duplicata de maior valor, dando preferencia para a duplicata que esta "Em Aberto"            
Select Top 1 @CodDuplicata = CodDuplicata,            
   @ValorDiferenca = (ValorFatura * Case @FlagDevolucao When 1 Then -1 Else 1 End) - @ValorParcela            
  From Duplicatas            
 Where Empresa=@Empresa                                                                                         
   and TipoControle=@TipoControle            
   and CodControle = @CodControle            
Order By ValorRecebido, ValorTitulo Desc            
            
                                                                                        
--Corrige a diferença na duplicata escolhida            
Update Duplicatas                                                        
   Set ValorTitulo = ValorTitulo + @ValorDiferenca            
 Where Empresa=@Empresa                                                                                         
   and TipoDuplicata=@TipoDuplicata                                                                                         
   and CodDuplicata=@CodDuplicata                                                                             
                                                  
if (@NumSequenciaBaixa <> 0)                                                  
begin                              
  --Corrige a diferença no movimento de baixa da duplicata escolhida, caso ela seja baixada            
  update MovDuplicata set                                   
         ValorRecebido = ValorRecebido + @ValorDiferenca,            
         ValorBaseComissao = ValorBaseComissao + @ValorDiferenca            
   where Empresa = @Empresa                                                  
     and TipoMovimento = 3                                     
     and NumSequencia = @NumSequenciaBaixa                                                  
     and CodDuplicata = @CodDuplicata             
     and EmpresaDuplicata = @Empresa          
end                                           
            
            
                                                  
Update Duplicatas Set                                                           
  ValorComissaoInterno = D.ValorComissaoInterno + Isnull(((N.ValorComissaoInterno * Case @FlagDevolucao When 1 Then -1 Else 1 End) -                                                                     
                (Select Sum(Dupl.ValorComissaoInterno)                                                                     
                 From Duplicatas Dupl where Dupl.Empresa=@Empresa and Dupl.TipoDuplicata=@TipoDuplicata and                                                                     
         Dupl.TipoControle = @TipoControle and Dupl.CodControle=@CodControle )),0),                                                                              
                                                                    
  ValorComissaoExterno = D.ValorComissaoExterno + Isnull(((N.ValorComissaoExterno * Case @FlagDevolucao When 1 Then -1 Else 1 End)-                                  
                   (Select Sum(Dupl.ValorComissaoExterno)                          
                    From Duplicatas Dupl where Dupl.Empresa=@Empresa and Dupl.TipoDuplicata=@TipoDuplicata and                                                 
   Dupl.TipoControle = @TipoControle and Dupl.CodControle=@CodControle )),0),                                                                               
                                                                               
  ValorComissaoParceiro = D.ValorComissaoParceiro + Isnull(((N.ValorComissaoParceiro * Case @FlagDevolucao When 1 Then -1 Else 1 End) -                                                                     
                   (Select Sum(Dupl.ValorComissaoParceiro)                                                                     
                    From Duplicatas Dupl where Dupl.Empresa=@Empresa and Dupl.TipoDuplicata=@TipoDuplicata and                                                                     
                      Dupl.TipoControle = @TipoControle and Dupl.CodControle=@CodControle )),0),                                                          
                               
  --133864                                               
  ValorBaseComissao = D.ValorBaseComissao + Abs(Isnull(((N.ValorBaseComissao) -                                                                     
                   (Select Sum(Dupl.ValorBaseComissao)                                                                     
                    From Duplicatas Dupl where Dupl.Empresa=@Empresa and Dupl.TipoDuplicata=@TipoDuplicata and                                                                     
                      Dupl.TipoControle = @TipoControle and Dupl.CodControle=@CodControle )),0))                         
From Duplicatas D                                                                   
   Left Join NotasFiscais N on N.Empresa = @Empresa and N.TipoControle = @TipoControle and N.CodControle=@CodControle                                      
   Where D.Empresa = @Empresa and D.TipoDuplicata = @TipoDuplicata and D.CodDuplicata = @PrimeiraDuplicata and                                                                    
  (D.ValorComissaoInterno <> 0 and D.ValorComissaoExterno <> 0 and D.ValorComissaoParceiro <> 0)                                                          
                                                                    
Update MovDuplicata                                                                    
  Set ValorComissaoInterno  = D.ValorComissaoInterno,                                                                    
      ValorComissaoExterno  = D.ValorComissaoExterno,                                                                                       
      ValorComissaoParceiro = D.ValorComissaoParceiro                                                                    
   From MovDuplicata MovD                                                                            
   Left Join Duplicatas D on D.Empresa = @Empresa and D.TipoDuplicata = @TipoDuplicata and D.CodDuplicata = @PrimeiraDuplicata                                                                             
   Where MovD.Empresa = @Empresa and MovD.TipoDuplicata = @TipoDuplicata and MovD.CodDuplicata = @PrimeiraDuplicata and                                                                    
  MovD.TipoMovimento = 3                                                                     
  and MovD.EmpresaDuplicata = @Empresa          
                                                                 
                                                                                        
--Subtrai a comissao da duplicata da comissao da nota                                                        
Update NotasFiscais                                                                                        
   Set ValorComissaoInterno = ValorComissaoInterno -                                                                                         
                             ((ValorComissaoInterno * isnull((Select AliqComissaoDup From Vendedores Where Codigo=CodVendInterno),0)) / 100),                                                             
       ValorComissaoExterno = ValorComissaoExterno -                                                                                         
                             ((ValorComissaoExterno * isnull((Select AliqComissaoDup From Vendedores Where Codigo=CodVendExterno),0)) / 100),                                 
       ValorComissaoParceiro = ValorComissaoParceiro -                                             
                      ((ValorComissaoParceiro * isnull((Select AliqComissaoDup From Vendedores Where Codigo=CodVendParceiro),0)) / 100),                                                                                        
       StatusTransacao = 1                                                                                        
   Where Empresa=@Empresa                                                                                        
     and TipoControle=@TipoControle                                                                                        
     and CodControle=@CodControle                                                                   
     and ((Select AliqComissaoDup From Vendedores Where Codigo=CodVendInterno) not in(0,100) or                                                                                        
          (Select AliqComissaoDup From Vendedores Where Codigo=CodVendExterno) not in(0,100) or                       
          (Select AliqComissaoDup From Vendedores Where Codigo=CodVendParceiro) not in(0,100))                                   
            
end  

Go

-- Renato - 360462
ALTER procedure [dbo].[CalcularCustoMedio]                                                                
(@TipoItens numeric(1),                                                                          
 @EmpresaEstoque numeric(2),                                                                          
 @Empresa numeric(2),                                                                          
 @NFTipoControle numeric(1),                                                                          
 @NFCodControle numeric(9),                                                           
 @PedCodPedido numeric(9),                                                                          
 @PedCompraCodPedido numeric(9),                                                                          
 @LanNumLancamento int,                                                                          
 @ProCodProdutoIni numeric(7),                                                                          
 @ProCodProdutoFim numeric(7),                                                                          
 @InvDataInventario datetime,                                                                
 @DataAnterior datetime,                                                                          
 @DataAtual datetime,                                                                          
 @FlagExclusao numeric(1)                                                                          
)                                                                          
                                                                          
as                                                                          
-- Tipo de Itens:                                                                          
------ 1-Nota Fiscal, 2-Pedido, 3-Lancamento, 4-Produto Inicial/Final, 5-Pedido de Compra(Componentes),                                                                
------ 6-Registro de Inventario       
------ 7-Apropriação de Custos                                                                   
------ Se for exclusao tem que chamar esta procedure antes de excluir os itens. Não pode chamar                                                                          
------ exclusão se for nota de saída                                                                                 
                                                                          
begin                                                                           
                                                                          
--Variaveis do cursor de Produtos                                                                          
Declare @AuxProCodProduto numeric(7)                                                                          
Declare @AuxProDataMovimento datetime                                                                          
                                                                          
--Variaveis do Cursor do MovEstoque                                                                          
Declare @MovEmpresa numeric(2)                                                                          
Declare @MovEmpresaEstoque numeric(2)                                                                          
Declare @MovNumLancamento int                                                                          
Declare @MovSaldoQtd decimal(13,2)                                                                          
Declare @MovValorAtual decimal(13,4)                                                                          
Declare @MovQuantAtual decimal(13,2)                                                                          
Declare @MovValorICM decimal(11,2)                                                                          
Declare @MovValorPISCOFINS decimal(11,2)                                                                          
--Eder 307377                      
--Declare @MovEntradaOK numeric(1)                              
Declare @MovTipoAtualizacaoCusto smallint           
Declare @MovTipoControle numeric(1)                                                                          
Declare @MovTipoMovimento numeric(1)                              
--JALDO - CHAMADO 287693                                                                          
--Declare @MovFlagMovEstoque numeric(1)                        
Declare @MovFlagMovEstoque smallint                              
Declare @MovCodControle numeric(9)                                                                          
Declare @MovCodPedido numeric(9)                                                                          
Declare @MovCodPedCompra numeric(9)                                                                          
Declare @MovValorCustoMed decimal(13,4)                                                                          
Declare @MovValorCustoUlt decimal(13,4)                                                                          
Declare @MovValorCustoUltReal Decimal(13,4)                                                                          
Declare @MovValorUnitario decimal(13,4)                                                                
Declare @MovValorAjusteCusto decimal(13,4)                                                                
Declare @MovValorApropriacaoCusto decimal(13,4)            
Declare @MovQuantAtendida decimal(13,2)                                  
Declare @MovDataMovimento Datetime                              
                                                                          
--Variaveis do Parametro de Controle                                                     
Declare @QtdCasasCusto numeric(1)                                                                          
Declare @TipoICMCustoMedio numeric(1)                                         
Declare @TipoICMUltimaCompra numeric(1)                                                                          
Declare @TipoCustoMedio numeric(1)                                                                          
Declare @FlagAtualizarCustoMedioPreco smallint         
Declare @EmpresaListaPreco int        
                                                                          
--Variaveis de Calculo                                                                 
Declare @AuxValorAnterior decimal(13,4)                                                                          
Declare @AuxValorUltAnterior decimal(13,4)                                                                          
Declare @AuxValorUltRealAnterior decimal(13,4)                                                          
Declare @AuxDataMovimento datetime                                                                          
                                                                                                          
Declare @AtuValorCustoMed decimal(13,4)                                                                          
Declare @AtuValorCustoUlt decimal(13,4)                                                                          
Declare @AtuValorCustoUltReal decimal(13,4)                                                                          
                                                      
Declare @AuxValorCustoMed decimal(13,4)                                                                          
Declare @AuxValorCustoUlt decimal(13,4)                                                                          
Declare @AuxValorCustoUltReal decimal(13,4)                                                                          
                                                                         
Declare @CustoMedio decimal(13,4)                                                                          
Declare @FlagLanExcluido numeric(1)             
Declare @ValorAux decimal(13,4)                                                                          
Declare @SalvaPrimeiroCusto decimal(13,4)                                 
Declare @Contador int                                                                          
Declare @DataAux datetime                                                                
Declare @SQLTimeStamp datetime                                                                          
  
--Eder 345018  
--Variaveis de atualização de custo considerando outras empresa.  
--Estoque fechado galpao assume que seu custo médio é sempre o custo da empresa principal. Ex: Galpao GOOP  
Declare @CmeEmpCusto smallint  
Declare @CmeEmpPrincipal smallint  
Declare @CmeNumMovEstoque int   
Declare @CmeCustoMed decimal(13,4)  
Declare @CmeCustoUlt decimal(13,4)  
Declare @CmeCustoUltReal decimal(13,4)  
                                                    
--Leitura do Parametro de Controle da empresa principal                                                                     
Select @QtdCasasCusto = QtdCasasCusto,                                                                          
       @TipoICMCustoMedio = TipoICMCustoMedio,                               
       @TipoICMUltimaCompra = TipoICMUltimaCompra,                  
       @TipoCustoMedio = TipoCustoMedio,                                                                          
       @FlagAtualizarCustoMedioPreco = FlagAtualizarCustoMedioPreco,        
       @SQLTimeStamp = GetDate()                                                                          
From ParamControle                                                                     
Where Empresa = @EmpresaEstoque                                                                          
        
--Eder - 321038        
Select @EmpresaListaPreco = EmpresaListaPreco        
   from Empresas        
where Codigo = @Empresa        
  
--Eder 345018  
Select @CmeEmpCusto = ECusto.EmpresaCustoMedio,  
       @CMeEmpPrincipal = ECusto.EmpresaPrincipal  
  From EmpresasCustoMedio ECusto  
 Where (ECusto.EmpresaPrincipal = @EmpresaEstoque     --Esta Calculando CME na empresa principal  
     or ECusto.EmpresaCustoMedio = @EmpresaEstoque)    --Esta calculando cme na empresa onde mantem o custo igual (Galpao)  
if @CmeEmpCusto is null  
  Set @CmeEmpCusto = 0  
if @CMeEmpPrincipal is null  
  Set @CMeEmpPrincipal = 0  
    
                                
-- Renato - 280210                                
---- Quando processar nota fiscal de saída, com a data de processamento sendo mesma data do dia,                                 
---- pegar o custo médio da estoqueproduto e atualizar nos lançamentos da nota que está sendo                                 
---- processada.                                
If (@TipoItens = 1) and (@NFTipoControle = 2) and (@DataAtual = Convert(datetime, (Convert(Char(10), GetDate(), 103)), 103))                                                                     
begin                                
                                
  Declare CursorMov Cursor Local Fast_Forward For                                 
                                  
  (Select Mov.Empresa, Mov.NumLancamento, Mov.CodProduto,                                   
      Mov.QuantAtendida, Mov.ValorCustoMed, Mov.ValorCustoUlt,                                 
            Mov.ValorCustoUltReal, Mov.TipoControle, Mov.CodControle,                                 
            Mov.CodPedido                                                    From MovEstoque Mov                                
       Left Join Produtos Pro on Pro.Codigo = Mov.CodProduto                                                             
   Where Mov.Empresa = @Empresa                                                                          
   and Mov.TipoControle = @NFTipoControle                                                                          
    and Mov.CodControle = @NFCodControle                                                           
    and Mov.CodProduto <> 9999999                                                                         
    and Mov.CodProduto <> 8888888                                
       and ((Pro.TipoLote <> 1) or  --Não carrega os produtos controlados por lote unitário                                    
      (Pro.TipoLote = 1 and Pro.FlagLoteUnitario = 0)) )                                 
                                
  Open CursorMov                                                                                                     
  Fetch Next From CursorMov Into                                 
    @MovEmpresa, @MovNumLancamento, @AuxProCodProduto,                                 
    @MovQuantAtendida, @MovValorCustoMed, @MovValorCustoUlt,                                 
    @MovValorCustoUltReal, @MovTipoControle, @MovCodControle,                                
    @MovCodPedido                                                                           
                                  
  While @@Fetch_Status = 0                                              
  begin                                
    Set @AtuValorCustoMed = 0                                                                        
    Set @AtuValorCustoUlt = 0                              
    Set @AtuValorCustoUltReal = 0                                 
                                                                        
    Select @AtuValorCustoMed = ValorCustoMed,                                                                      
           @AtuValorCustoUlt = ValorCustoUlt,                                
           @AtuValorCustoUltReal = ValorCustoUltReal                                
    From EstoqueProduto                               
    --302533                            
    --Where Empresa = @Empresa                            
      Where Empresa = @EmpresaEstoque                                    
      and CodProduto = @AuxProCodProduto                                
                                
    If (@AtuValorCustoMed     <> @MovValorCustoMed) or                                                                          
       (@AtuValorCustoUlt     <> @MovValorCustoUlt) or                                                                 
       (@AtuValorCustoUltReal <> @MovValorCustoUltReal)                                                                          
  begin                                                                          
      Update MovEstoque Set                                 
        ValorCustoMed = @AtuValorCustoMed,                                  
        ValorCustoUlt = @AtuValorCustoUlt,                                  
        ValorCustoUltReal = @AtuValorCustoUltReal                                  
      Where Empresa = @MovEmpresa                                  
        and NumLancamento = @MovNumLancamento                                  
                                    
      if @MovCodPedido <> 0                                                    
      begin                                                             
        update Pedidos set                            
          ValorCustoMedTotal     = ValorCustoMedTotal - Round(@MovQuantAtendida * @MovValorCustoMed, @QtdCasasCusto)                                  
                                                      + Round(@MovQuantAtendida * @AtuValorCustoMed, @QtdCasasCusto),                                  
          ValorCustoUltTotal     = ValorCustoUltTotal - Round(@MovQuantAtendida * @MovValorCustoUlt, @QtdCasasCusto)                                  
                                                      + Round(@MovQuantAtendida * @AtuValorCustoUlt, @QtdCasasCusto),                                  
          ValorCustoUltRealTotal = ValorCustoUltRealTotal - Round(@MovQuantAtendida * @MovValorCustoUltReal, @QtdCasasCusto)                                  
                             + Round(@MovQuantAtendida * @AtuValorCustoUltReal, @QtdCasasCusto)                                  
        where Empresa = @MovEmpresa                                                    
          and CodPedido = @MovCodPedido                                                    
      end                                                    
                                   
      if @MovCodControle <> 0                                                    
      begin                                                             
        update NotasFiscais set                                                    
          ValorCustoMedTotal     = ValorCustoMedTotal - Round(@MovQuantAtendida * @MovValorCustoMed, @QtdCasasCusto)                                
                                                      + Round(@MovQuantAtendida * @AtuValorCustoMed, @QtdCasasCusto),                                  
          ValorCustoUltTotal     = ValorCustoUltTotal - Round(@MovQuantAtendida * @MovValorCustoUlt, @QtdCasasCusto)                                  
                                                      + Round(@MovQuantAtendida * @AtuValorCustoUlt, @QtdCasasCusto),                                  
          ValorCustoUltRealTotal = ValorCustoUltRealTotal - Round(@MovQuantAtendida * @MovValorCustoUltReal, @QtdCasasCusto)                                  
                                                          + Round(@MovQuantAtendida * @AtuValorCustoUltReal, @QtdCasasCusto)                                  
        where Empresa = @MovEmpresa                                                    
          and TipoControle = @MovTipoControle                                                    
          and CodControle = @MovCodControle                                                    
      end                                                    
    end                                     
            
    Fetch Next From CursorMov into                                                                            
      @MovEmpresa, @MovNumLancamento, @AuxProCodProduto,                                 
      @MovQuantAtendida, @MovValorCustoMed, @MovValorCustoUlt,                                 
      @MovValorCustoUltReal, @MovTipoControle, @MovCodControle,                                
      @MovCodPedido                                                                        
  end                                                                 
                                                                          
  Close CursorMov                                                                        
  Deallocate CursorMov                                
                                     
end                                
Else                                
begin                                
                                
                         
 --Apaga os itens da temporaria caso exista algum                                                                           
 Delete From TempCalculoCustoMedio                                                                           
  Where SqlTimeStamp = @SQLTimeStamp                                                                          
                                                                           
 --Se for recalculo por produtos, tem que refazer todos os itens do movestoque                                                                          
 If @TipoItens = 4 and @TipoCustoMedio = 1                                                                           
   Set @TipoCustoMedio = 0                                                                          
                                                                           
 --Na exclusão, processa os lançamentos posteriores                                                                          
 If @TipoCustoMedio = 1 and @FlagExclusao = 1                            
   Set @TipoCustoMedio = 0                                                                          
     
 --Gabriella - 347262  
 --If (@DataAtual is null) or (@TipoItens = 4)                                        
 If (@DataAtual is null)                                        
  Set @AuxProDataMovimento = '1900-01-01'                                                                          
 Else                                                                          
  If @DataAnterior <= @DataAtual                                                                           
   Set @AuxProDataMovimento = @DataAnterior                                                                          
  Else                                 
   Set @AuxProDataMovimento = @DataAtual                                                                  
                                                                           
 Set @DataAux = @AuxProDataMovimento - 1                                  
                                                              
 If @TipoItens = 1                                                                          
 begin                                                     
  Insert Into TempCalculoCustoMedio(SqlTimeStamp, CodProduto, NumLancamentoUltCompra)                                                                          
    Select @SqlTimeStamp, CodProduto, Null
     From MovEstoque                                                              
     Where Empresa=@Empresa                                                                          
      and TipoControle = @NFTipoControle                                                                          
      and CodControle = @NFCodControle                                                                          
      and CodProduto <> 9999999                                                                          
      and CodProduto <> 8888888                                                          
     Group By CodProduto                                                                          
 end                                                                          
 Else                                                                          
 If @TipoItens = 2                                                                          
 begin                                                                          
  Insert Into TempCalculoCustoMedio(SqlTimeStamp, CodProduto, NumLancamentoUltCompra)                                                                          
    Select @SqlTimeStamp, CodProduto, Null
     From MovEstoque                                                                          
     Where Empresa=@Empresa                                                                          
      and CodPedido = @PedCodPedido                                                                          
      and CodProduto <> 9999999                                                                          
      and CodProduto <> 8888888                                               
     Group By CodProduto                                                                          
 end                                                                          
 Else                                                 
 If @TipoItens = 3                                                                          
 begin                               
  Insert Into TempCalculoCustoMedio(SqlTimeStamp, CodProduto, NumLancamentoUltCompra)                                                                        
    Select @SqlTimeStamp, CodProduto, Null
     From MovEstoque                                                                          
     Where Empresa=@Empresa                                                                          
      and NumLancamento = @LanNumLancamento                                                                          
      and CodProduto <> 9999999                                      
      and CodProduto <> 8888888                                                                          
     Group By CodProduto                                                                          
 end                                                                          
 Else                                                                          
 If @TipoItens = 4                                                                          
 begin    
   Insert Into TempCalculoCustoMedio(SqlTimeStamp, CodProduto, NumLancamentoUltCompra)                                                                          
     Select @SqlTimeStamp, Codigo,  Null
      From Produtos                                                                          
      Where Codigo >= @ProCodProdutoIni                                                                         
       and Codigo <= @ProCodProdutoFim                                                                          
       and Codigo <> 9999999                                                                          
       and Codigo <> 8888888           
 end                                                                          
 Else                                                                          
 If @TipoItens = 5                                                                          
 begin                                                  
    --Eder - 330852    
    Insert Into TempCalculoCustoMedio(SqlTimeStamp, CodProduto, NumLancamentoUltCompra)                                                                          
    Select @SqlTimeStamp, CodProduto, Null
      From ItemPedidoCompra Ip    
   Where IP.EmpresaEstoque = @EmpresaEstoque    
       and IP.CodPedido = @PedCompraCodPedido    
       and Ip.TipoGerarEntrada <> 0    
       and not Ip.CodProduto in (8888888,9999999)    
     Group By CodProduto                                                                          
 end                                                                          
 Else                                                                
 If @TipoItens = 6                                                                
 begin                                                              
  Insert Into TempCalculoCustoMedio (SqlTimeStamp, CodProduto, NumLancamentoUltCompra, DataMovimentoUltCompra,                                                                 
   SaldoMovimento)                                             
  select @SqlTimeStamp, RegInv.CodProduto, 0, Max(RegInv.DataInventario), --Max(RegInv.QuantEstoque)                                                                
   (select QuantEstoque from RegistroInventario                                                                 
    where DataInventario = Max(RegInv.DataInventario) and                                            
       CodProduto = RegInv.CodProduto and                                           
       EmpresaEstoque = RegInv.EmpresaEstoque) --250506                                          
  From RegistroInventario RegInv                                                             
  where RegInv.EmpresaEstoque = @EmpresaEstoque                                          
    --Rafael chamado 255209                                                                              
   --and RegInv.DataInventario < @InvDataInventario                                                                
   and exists(Select RegNov.CodProduto                                                                
         From RegistroInventario RegNov                                                                
         Where RegNov.EmpresaEstoque = @EmpresaEstoque                                                                
          and RegNov.CodProduto = RegInv.CodProduto                                                                
          and RegNov.DataInventario = @InvDataInventario)                                                                
  Group By RegInv.CodProduto, RegInv.EmpresaEstoque                                    
 end  
 else
 If @TipoItens = 7 --Gabriella - 344416 Apropriação de Custo
 begin                               
  Insert Into TempCalculoCustoMedio(SqlTimeStamp, CodProduto, NumLancamentoUltCompra)                                                                        
    Select @SqlTimeStamp, Aprop.CodProduto, M.NumLancamento 
     From ApropCustoItem Aprop
     Left Join MovEstoque M on M.Empresa = Aprop.Empresa
                           and M.NumLancamento = Aprop.NumMovEstoqueGerado                                                                         
     Where Aprop.Empresa=@Empresa                                                                          
      and Aprop.CodApropCusto = @LanNumLancamento                                                                           
      and Aprop.CodProduto <> 9999999                                      
      and Aprop.CodProduto <> 8888888                                                                                                                                                      
 end                            


  --Eder 330852
  --Calcula o Lançamento de Ultima Compra.
  if ((@TipoItens in (1,2,3,5)) or
      ((@TipoItens = 4) and (@DataAux is not null))) 
  begin
    Update TempCalculoCustoMedio
       Set NumlancamentoUltCompra = (Select Top 1 Mov.NumLancamento From  MovEstoque Mov
                                       Left Join Operacoes Opr on Opr.Codigo = Mov.CodOperacao
                                      Where Mov.EmpresaEstoque = @EmpresaEstoque
                                        And Mov.CodProduto     = TempCalculoCustoMedio.CodProduto
                                        And Mov.TipoMovimento  = 1
                                        And Mov.FlagMovEstoque = 1
                                        And Opr.FlagCustoMedio = 1
                                        And Mov.DataMovimento  <= @DataAux
                                        And Mov.ValorUnitario > 0
                                      Order By DataMovimento Desc, NumLancamento Asc)
      Where SqlTimeStamp = @SqlTimeStamp
  end
                                  
 If @TipoItens <> 6 --Quando nao for por registro de inventario                                                                
 begin                                         
  --Pega a data da Ultima compra dos itens e o saldo do estoque atual                                                                          
  --Eder - 329718 - Considera empresas adicionais no estoque para custo medio      
  Update TempCalculoCustoMedio                                                                        
    Set DataMovimentoUltCompra = (Select Top 1 Mov.DataMovimento From MovEstoque Mov      
                                   Where Mov.EmpresaEstoque=@EmpresaEstoque      
                                     and Mov.Numlancamento = TempCalculoCustoMedio.NumLancamentoUltCompra)      
     ,SaldoMovimento = isnull((Select Sum(Es.QuantEstoque) From EstoqueProduto Es      
                                where Es.CodProduto = TempCalculoCustoMedio.CodProduto      
                                  and Es.Empresa in (Select Emp.EmpresaEstoque From Empresas Emp      
                                                      Where Emp.Codigo = @EmpresaEstoque      
                                                     Union      
                                                     Select ECusto.EmpresaCustoMedio From EmpresasCustoMedio ECusto       
                                                      Where ECusto.EmpresaPrincipal = @EmpresaEstoque)),0)      
   Where SqlTimeStamp = @SqlTimeStamp                                                            
                                                                           
  --Grava o Saldo (retroativo) desconsiderando o saldo atual, até o lançamento atual                                                                          
  --Eder - 329718 - Considera empresas adicionais no estoque para custo medio      
  Update TempCalculoCustoMedio      
    Set SaldoMovimento = SaldoMovimento +       
        isnull((Select       
                 Sum(Case When M.TipoMovimento = 1      
                           and ((M.DataMovimento > TAux.DataMovimentoUltCompra)      
                                or (TAux.DataMovimentoUltCompra is null))      
                          Then (M.QuantMovimentada * -1)      
                          When M.TipoMovimento = 1      
                           and M.DataMovimento = TAux.DataMovimentoUltCompra      
                           and M.NumLancamento >= TAux.NumLancamentoUltCompra      
                          Then (M.QuantMovimentada * -1)      
                          When M.TipoMovimento = 2      
                           and ((M.DataMovimento > TAux.DataMovimentoUltCompra)      
                            or (TAux.DataMovimentoUltCompra is null))      
                          Then M.QuantMovimentada      
                          When M.TipoMovimento = 2      
                           and M.DataMovimento = TAux.DataMovimentoUltCompra      
                          Then M.QuantMovimentada      
                          Else 0 End)      
                 From TempCalculoCustoMedio TAux,  MovEstoque M      
                 Where TAux.CodProduto = TempCalculoCustoMedio.CodProduto      
                   and TAux.SqlTimeStamp = TempCalculoCustoMedio.SqlTimeStamp      
                   and M.CodProdutoMov = TAux.CodProduto      
                   and M.Empresa in       
                       (Select Emp.Codigo From Empresas Emp      
                         Where Emp.Codigo = @EmpresaEstoque      
                         Union      
                        Select ECusto.EmpresaCustoMedio From EmpresasCustoMedio ECusto       
                         Where ECusto.EmpresaPrincipal = @EmpresaEstoque)      
                   and M.TipoMovimento in(1,2)      
                   and M.FlagMovEstoque=1      
                   and ((M.DataMovimento >= TAux.DataMovimentoUltCompra) or      
                        (TAux.DataMovimentoUltCompra is null))),0)      
   Where SqlTimeStamp = @SqlTimeStamp     
 end                                                                
                                            
 /*if @TipoItens = 6 --Quando for registro de inventario                                                                
 begin                                                                
  Update TempCalculoCustoMedio                                                                          
    Set DataMovimentoUltCompra = (Select Inv.DataInventario From RegistroInventario Inv                                                                
                    Where Inv.CodProduto = TempCalculoCustoMedio.CodProduto                                                                
                     and Inv.EmpresaEstoque = @EmpresaEstoque                                                    
                     and Inv.DataInventario = @InvDataInventario),                
    SaldoMovimento =  (Select Inv.QuantEstoque From RegistroInventario Inv                                                                
                    Where Inv.CodProduto = TempCalculoCustoMedio.CodProduto                                                                
                     and Inv.EmpresaEstoque = @EmpresaEstoque                                                                 
                     and Inv.DataInventario = @InvDataInventario)                                                                
   Where SqlTimeStamp = @SqlTimeStamp                                                               
 end*/                                                               
                                                                           
 --Abre o cursor dos produtos a partir dos dados da temporaria                                                                
 --Atenção: Não carrega os produtos que são controlados por Lote Unitário                                                                        
  Declare CursorProduto Cursor Local Fast_Forward For      
   Select T.CodProduto,      
          Case When @TipoItens <> 6 Then isnull(Mov.ValorCustoMed,0) End,      
          Case When @TipoItens <> 6 Then isnull(Mov.ValorCustoUlt,0)       
               When @TipoItens = 6 Then 0 End,                                                                  
          Case When @TipoItens <> 6 Then isnull(Mov.ValorCustoUlt,0)                                                              
               When @TipoItens = 6 Then 0 End,      
          Case When @TipoItens <> 6 then Mov.DataMovimento      
               When @TipoItens = 6 then T.DataMovimentoUltCompra end,      
          isnull(T.SaldoMovimento,0)      
     From TempCalculoCustoMedio T      
     Left Join Produtos Pro on Pro.Codigo = T.CodProduto      
     Left Join MovEstoque Mov on Mov.EmpresaEstoque=@EmpresaEstoque      
                             and Mov.Numlancamento = T.NumLancamentoUltCompra      
                             and @TipoItens <> 6      
     Left Join RegistroInventario Inv on Inv.CodProduto = T.CodProduto      
                     and Inv.EmpresaEstoque = @EmpresaEstoque      
                     and Inv.DataInventario = T.DataMovimentoUltCompra      
                     and @TipoItens = 6      
   Where T.SqlTimeStamp = @SqlTimeStamp      
     and ((Pro.TipoLote <> 1) or      
          (Pro.TipoLote = 1 and Pro.FlagLoteUnitario = 0))      
 Open CursorProduto      
                                                                           
 Fetch Next From CursorProduto into @AuxProCodProduto,                                                                           
            @AuxValorAnterior, @AuxValorUltAnterior,                                                             
            @AuxValorUltRealAnterior, @AuxDataMovimento,                                                  
            @MovSaldoQtd                                                                          
 While @@Fetch_Status = 0                                                                          
 begin                                            
   Set @CustoMedio = @AuxValorAnterior                                                                          
   Set @SalvaPrimeiroCusto = @AuxValorAnterior                          
   Set @AtuValorCustoMed = 0                                                                        
   Set @AtuValorCustoUlt = 0                                                                        
   Set @AtuValorCustoUltReal = 0                                                                                        
   Set @Contador = 0                                                                          
                                                                        
   --Cursor dos Itens do MovEstoque      
   Declare CursorMov Cursor Local Fast_Forward For      
    Select M.Empresa, M.EmpresaEstoque, M.NumLancamento,      
        Case When M.QuantMovimentada > 0 then (M.ValorUnitario * M.QuantMovimentada)      
             Else M.ValorUnitario End as ValorAtual,      
                                              
        --Gabriella - 295380                              
        --Case When AliqICM > 0 and ValorBaseICM > 0                                
        Case When isnull(Oper.TipoCalculoICMCustoMedio,0) = 0 and M.AliqICM > 0 and M.ValorBaseICM > 0                                                                         
             -- Renato - 360462
             -- Then Round((M.ValorBaseICM * M.AliqICM) / 100,2)
             Then Round((M.ValorBaseICM * (M.AliqICM + isNull(MI.AliqComplICM,0))) / 100,2)                       
             Else 0 End as ValorICM,                                                                           
                                              
                                     
        --Eder - 329685        
        --Case When isnull(Oper.TipoCalculoICMCustoMedio,0) <> 0 Then 0 Else      
        Round(((Case When M.QuantAtendida > 0      
                     Then Round((M.ValorBruto - Round((M.ValorBruto * M.PercDesconto / 100),2)) * M.QuantAtendida,2)      
                     Else 0 End +      
                Case When isnull(Oper.FlagIPISobrePisCofins,0) = 1      
                     Then Round((M.ValorBruto - Round((M.ValorBruto * M.PercDesconto / 100),2)) * M.QuantAtendida * M.AliqIPI / 100,2)      
                     Else 0 End)      
                * M.AliqPISCOFINS) / 100,2) as ValorPISCOFINS,                                              
                                             
        M.QuantMovimentada,                                                                          
                      
        --Eder - 307257      
        --Case When isnull(Oper.FlagCustoMedio,0) = 1 and M.TipoMovimento = 1      
        --     Then 1 Else 0 End as EntradaOK,      
        Case When M.TipoMovimento = 1 and isnull(Oper.FlagCustoMedio,0) = 1      
             Then Case      
                       When M.QuantAtendida = 0 And M.ValorUnitario = 0 and M.ValorTotal > 0      
                           Then 2  --2 - Apropriação de custo no custo médio      
                       When isnull(Oper.FlagEstoqueReservadoContabil,0) = 0    --Calcula independente de ser entrada reservada (CALCULO PADRAO)      
                           Then 1  --1 - Calculo do Custo Médio      
                       When isnull(Oper.FlagEstoqueReservadoContabil,0) = 1 and M.FlagMovEstoque <> 0   --Só calcula se NÃO for entrada reservada      
                           Then 1  --1 - Calculo do Custo Médio      
                       Else 0 End      
             Else 0 End as TipoAtualizacaoCusto,      
        M.TipoMovimento, M.FlagMovEstoque, M.TipoControle,      
        M.CodControle, M.CodPedido, M.CodPedCompra,      
        M.ValorCustoMed, M.ValorCustoUlt, M.ValorCustoUltReal,      
        M.ValorAjusteCusto, M.ValorUnitario, M.QuantAtendida,  
        Case When M.QuantAtendida = 0 And M.ValorUnitario = 0 and M.ValorTotal > 0      
             Then M.ValorTotal Else 0 End as ValorApropriacaoCusto,  --Valor da apropriação é armazenado totalizado      
        M.DataMovimento               
     From MovEstoque M      
       Left Join Operacoes Oper on Oper.Codigo = M.CodOperacao    
       --Renato - 360462
       Left Join MovEstoqueImposto MI on M.Empresa = MI.Empresa
                                     and M.NumLancamento = MI.NumLancamento  
     Where M.CodProduto =  @AuxProCodProduto      
 --Eder - 329718      
       --and M.EmpresaEstoque = @EmpresaEstoque       
       and M.EmpresaEstoque in (Select Emp.EmpresaEstoque From Empresas Emp      
                                 Where Emp.Codigo = @EmpresaEstoque      
                                Union      
                                Select ECusto.EmpresaCustoMedio From EmpresasCustoMedio ECusto       
                                 Where ECusto.EmpresaPrincipal = @EmpresaEstoque)      
      
       and ((@AuxDataMovimento is Null) or      
            (M.DataMovimento = @AuxDataMovimento and M.TipoMovimento > 0 and @TipoItens <> 6) or      
            (M.DataMovimento > @AuxDataMovimento))      
     Order By M.DataMovimento, M.TipoMovimento, M.NumLancamento       
      
   --Fica em Loop nos Itens do MovEstoque do produto atual      
   Open CursorMov      
                                                                           
   Fetch Next From CursorMov Into @MovEmpresa, @MovEmpresaEstoque, @MovNumLancamento,      
         @MovValorAtual, @MovValorICM, @MovValorPISCOFINS,      
         @MovQuantAtual, @MovTipoAtualizacaoCusto,      
         @MovTipoMovimento, @MovFlagMovEstoque,      
         @MovTipoControle, @MovCodControle, @MovCodPedido, @MovCodPedCompra,      
         @MovValorCustoMed, @MovValorCustoUlt, @MovValorCustoUltReal,      
         @MovValorAjusteCusto, @MovValorUnitario, @MovQuantAtendida,      
         @MovValorApropriacaoCusto, @MovDataMovimento  
                                                                 
  --CASO NÃO EXISTA MOVIMENTAÇÃO DO PRODUTO E SEJA ATUALIZAÇÃO DE CUSTO MÉDIO PELO REGISTRO DE INVENTARIO      
  --PEGA O CUSTO MEDIO DO REGISTRO DE INVENTARIO ANTERIOR      
  if (@@Fetch_Status <> 0) and (@TipoItens = 6)      
   SET @AtuValorCustoMed = @CustoMedio      
                                                                           
   While @@Fetch_Status = 0      
   Begin      
    Set @Contador = @Contador + 1      
                                                                           
    --Atenção: as Variaveis @AuxValorAnterior e @AuxQuantAnterior são acumuladas      
    Set @FlagLanExcluido  = 0      
    --Se for exclusao não considera os itens do Pedido/Nota/Lançamento Excluido      
    If @FlagExclusao = 1      
    begin      
      If (@TipoItens = 1 and @MovEmpresa = @Empresa      
        and @MovTipoControle = 1 and @MovCodControle = @NFCodControle) or      
       (@TipoItens = 2 and @MovEmpresa = @Empresa      
        and @MovCodPedido = @PedCodPedido) or      
       (@TipoItens = 3 and @MovEmpresa = @Empresa      
        and @MovNumLancamento = @LanNumLancamento) or      
       (@TipoItens = 5 and @MovEmpresa=@Empresa and @MovCodPedido=0      
        and @MovTipoMovimento = 1 and @MovCodPedCompra = @PedCompraCodPedido)      
      begin      
       Set @MovTipoAtualizacaoCusto = 0      
       Set @FlagLanExcluido = 1      
      end      
    end      
             
                
    --Eder - 307377      
    --Calculo de Custo Medio - Entradas que Calculam Custo Medio      
    if @MovTipoAtualizacaoCusto = 1       
       and @MovEmpresaEstoque = @EmpresaEstoque --Eder - 329718      
    begin      
      If @TipoICMCustoMedio = 1      
       Set @ValorAux = @MovValorAtual - @MovValorICM      
      Else      
       If @TipoICMCustoMedio = 2      
         Set @ValorAux = @MovValorAtual - @MovValorICM - @MovValorPISCOFINS      
       Else      
         Set @ValorAux = @MovValorAtual      
                               
      If (@MovSaldoQtd > 0) and (@MovQuantAtual > 0)      
       Set @CustoMedio = ((@AuxValorAnterior * @MovSaldoQtd) + @ValorAux)      
                 / (@MovSaldoQtd + @MovQuantAtual)      
      Else      
       If @MovQuantAtual > 0      
         Set @CustoMedio =  @ValorAux / @MovQuantAtual      
                                                                           
      If @Contador = 1 and (not (@AuxDataMovimento is null)) and @TipoItens <> 6      
       Set @CustoMedio = Round(@SalvaPrimeiroCusto,@QtdCasasCusto)      
      Else      
       Set @CustoMedio = Round(@CustoMedio,@QtdCasasCusto)      
                
      Set @AuxValorAnterior = @CustoMedio      
                                                                         
      --Custo da Ultima Compra      
      If @TipoICMUltimaCompra = 1      
       Set @ValorAux = @MovValorAtual - @MovValorICM      
      Else      
       If @TipoICMUltimaCompra = 2      
         Set @ValorAux = @MovValorAtual - @MovValorICM - @MovValorPISCOFINS      
       Else      
         Set @ValorAux = @MovValorAtual      
      If @MovQuantAtual > 0      
       Set @AuxValorUltAnterior = Round(@ValorAux / @MovQuantAtual,@QtdCasasCusto)      
      Else      
       Set @AuxValorUltAnterior = Round(@ValorAux,@QtdCasasCusto)      
                                                                           
      --Custo da Ultima Compra REAL é sempre sem impostos      
      Set @ValorAux = @MovValorAtual - @MovValorICM - @MovValorPISCOFINS      
      If @MovQuantAtual > 0      
       Set @AuxValorUltRealAnterior = Round(@ValorAux / @MovQuantAtual,@QtdCasasCusto)      
      Else      
       Set @AuxValorUltRealAnterior = Round(@ValorAux,@QtdCasasCusto)      
      Set @AtuValorCustoMed = @AuxValorAnterior      
      Set @AtuValorCustoUlt = @AuxValorUltAnterior      
      Set @AtuValorCustoUltReal = @AuxValorUltRealAnterior      
    end      
                      
                      
    --Eder - 307377                                      
    --Apropriação do Custo médio / Lançamentos sem valor unitario e com Valor Ajuste de Custo                      
    if @MovTipoAtualizacaoCusto = 2 and @MovSaldoQtd > 0       
       and @MovEmpresaEstoque = @EmpresaEstoque --Eder - 329718      
    begin      
      Set @AtuValorCustoMed = Round(((@MovSaldoQtd * @AtuValorCustoMed) + @MovValorApropriacaoCusto) / @MovSaldoQtd, @QtdCasasCusto)      
      Set @AuxValorAnterior = @AtuValorCustoMed      
    end      
                       
                      
    If @MovFlagMovEstoque = 1 and @FlagLanExcluido  = 0      
    begin      
      If @MovTipoMovimento = 1      
        Set @MovSaldoQtd = @MovSaldoQtd + @MovQuantAtual      
      Else If @MovTipoMovimento = 2      
         Set @MovSaldoQtd = @MovSaldoQtd - @MovQuantAtual      
    end      
                      
 -- lanc. de saida com ajuste de custo, foi gerado pelo programa de juncao na opcao      
 -- desmembrar, usa este campo pra poder chegar ao valor original, antes da reducao      
 -- Cálculo: soma ao valor unitario o custo, obtendo o valor original antes do desmembramento,      
 --      acha o percentual que foi reduzido e reajusta os valores de custo.      
    If @MovTipoMovimento = 2 and @MovValorAjusteCusto <> 0        
       and @MovEmpresaEstoque = @EmpresaEstoque --Eder - 329718      
    begin      
     Set @AtuValorCustoMed     = ((@MovValorUnitario)/(@MovValorUnitario+@MovValorAjusteCusto)) * @AtuValorCustoMed      
     Set @AtuValorCustoUlt     = ((@MovValorUnitario)/(@MovValorUnitario+@MovValorAjusteCusto)) * @AtuValorCustoUlt      
     Set @AtuValorCustoUltReal = ((@MovValorUnitario)/(@MovValorUnitario+@MovValorAjusteCusto)) * @AtuValorCustoUltReal      
    end      
                                                                            
    If (@TipoCustoMedio = 0 and @TipoItens <> 6) or      
       (@TipoCustoMedio = 1 and      
         (@TipoItens = 1 and @MovEmpresa=@Empresa and @MovTipoControle=@NFTipoControle      
           and @MovCodControle = @NFCodControle) or      
         (@TipoItens = 2 and @MovEmpresa=@Empresa and @MovCodPedido=@PedCodPedido) or      
         (@TipoItens = 3 and @MovEmpresa=@Empresa and @MovNumLancamento=@LanNumLancamento) or      
         (@TipoItens = 5 and @MovEmpresa=@Empresa and @MovTipoMovimento=1 and @MovCodPedido=0      
             and @MovCodPedCompra = @PedCompraCodPedido)      
       )      
    begin      
  
     --Eder - 345018  
     --Manter custo de empresa igual a empresa principal somente quando está na empresa que recebe o custo (Ex: Galpao GOOP)  
     If (@CmeEmpCusto > 0)  and (@CmeEmpCusto = @EmpresaEstoque)  
     begin  
       --Pega o custo medio da empresa principal, na data do movimento  
       select @CmeNumMovEstoque = dbo.UltimaCompraMovEstoque(@CmeEmpPrincipal,@AuxProCodProduto,  
                                  @MovDataMovimento,1,0)  --Considera se houver, a ultima entrada do dia  
        
       Select Top 1 @AtuValorCustoMed = Mov.ValorCustoMed,  
                    @AtuValorCustoUlt = Mov.ValorCustoUlt,  
                    @AtuValorCustoUltReal = Mov.ValorCustoUltReal  
       From MovEstoque Mov  
       Where Mov.EmpresaEstoque = @CmeEmpPrincipal  
         and Mov.NumLancamento = @CmeNumMovEstoque           
     end  
       
     If (@MovEmpresaEstoque = @EmpresaEstoque) and --Eder - 329718      
        (@AtuValorCustoMed     <> @MovValorCustoMed or      
         @AtuValorCustoUlt     <> @MovValorCustoUlt or      
         @AtuValorCustoUltReal <> @MovValorCustoUltReal)      
     begin      
      Update MovEstoque      
        Set ValorCustoMed = @AtuValorCustoMed  
           ,ValorCustoUlt = @AtuValorCustoUlt  
           ,ValorCustoUltReal = @AtuValorCustoUltReal      
       Where Empresa=@MovEmpresa      
        and NumLancamento = @MovNumLancamento      
                                   
      --Eder - Chamado 261402      
      if @MovCodPedido <> 0      
      begin      
       update Pedidos set      
         ValorCustoMedTotal = ValorCustoMedTotal - Round(@MovQuantAtendida * @MovValorCustoMed, @QtdCasasCusto)      
                               + Round(@MovQuantAtendida * @AtuValorCustoMed, @QtdCasasCusto),      
         ValorCustoUltTotal = ValorCustoUltTotal - Round(@MovQuantAtendida * @MovValorCustoUlt, @QtdCasasCusto)      
                               + Round(@MovQuantAtendida * @AtuValorCustoUlt, @QtdCasasCusto),      
         ValorCustoUltRealTotal = ValorCustoUltRealTotal - Round(@MovQuantAtendida * @MovValorCustoUltReal, @QtdCasasCusto)      
                                  + Round(@MovQuantAtendida * @AtuValorCustoUltReal, @QtdCasasCusto)      
        where Empresa = @MovEmpresa      
         and CodPedido = @MovCodPedido      
      end      
                                   
      --Eder - Chamado 261402      
      if @MovCodControle <> 0      
      begin      
       update NotasFiscais set      
         ValorCustoMedTotal     = ValorCustoMedTotal - Round(@MovQuantAtendida * @MovValorCustoMed, @QtdCasasCusto)      
                               + Round(@MovQuantAtendida * @AtuValorCustoMed, @QtdCasasCusto),      
         ValorCustoUltTotal     = ValorCustoUltTotal - Round(@MovQuantAtendida * @MovValorCustoUlt, @QtdCasasCusto)      
                               + Round(@MovQuantAtendida * @AtuValorCustoUlt, @QtdCasasCusto),      
         ValorCustoUltRealTotal = ValorCustoUltRealTotal - Round(@MovQuantAtendida * @MovValorCustoUltReal, @QtdCasasCusto)      
                                 + Round(@MovQuantAtendida * @AtuValorCustoUltReal, @QtdCasasCusto)      
        where Empresa = @MovEmpresa      
         and TipoControle = @MovTipoControle      
         and CodControle = @MovCodControle      
      end      
     end      
    end      
                                                                 
    Set @AtuValorCustoMed = @AuxValorAnterior      
    Set @AtuValorCustoUlt = @AuxValorUltAnterior      
    Set @AtuValorCustoUltReal = @AuxValorUltRealAnterior      
                                                                           
    Fetch Next From CursorMov Into @MovEmpresa, @MovEmpresaEstoque, @MovNumLancamento,      
          @MovValorAtual, @MovValorICM, @MovValorPISCOFINS,      
          @MovQuantAtual, @MovTipoAtualizacaoCusto,      
          @MovTipoMovimento, @MovFlagMovEstoque,      
          @MovTipoControle, @MovCodControle, @MovCodPedido, @MovCodPedCompra,      
          @MovValorCustoMed, @MovValorCustoUlt, @MovValorCustoUltReal,      
          @MovValorAjusteCusto, @MovValorUnitario, @MovQuantAtendida,      
          @MovValorApropriacaoCusto, @MovDataMovimento  
   --Fim do Loop do MovEstoque do Produto      
   end      
   Close CursorMov      
   Deallocate CursorMov      
                                                       
   If @TipoItens <> 6      
   begin      
    Set @AuxValorCustoMed = null      
    Set @AuxValorCustoUlt = null      
    Set @AuxValorCustoUltReal = null      
                     
    Select Top 1 @AuxValorCustoMed = Mov.ValorCustoMed,      
          @AuxValorCustoUlt = Mov.ValorCustoUlt,      
          @AuxValorCustoUltReal = Mov.ValorCustoUltReal      
     From MovEstoque Mov      
     Left Join Operacoes Opr on Opr.Codigo = Mov.CodOperacao      
     Where Mov.EmpresaEstoque = @EmpresaEstoque      
      And Mov.CodProduto     = @AuxProCodProduto      
      And Mov.TipoMovimento  = 1      
      And Mov.FlagMovEstoque = 1      
      And Opr.FlagCustoMedio = 1      
     Order By DataMovimento Desc, NumLancamento Desc      
                                                       
     Update EstoqueProduto      
      Set ValorCustoMed     = isnull(@AuxValorCustoMed,0),      
          ValorCustoUlt     = isnull(@AuxValorCustoUlt,0),      
          ValorCustoUltReal = isnull(@AuxValorCustoUltReal,0),      
          StatusTransacao   = 1      
      Where CodProduto = @AuxProCodProduto      
        and Empresa = @EmpresaEstoque      
  
     --Eder - 345018  
     --Verifica se existe configuração para utilizar uma outra empresa para calcular custo medio e  
     --para Manter o custo medio em outras empresas (Ex: Galpao GOOP).   
     if @CmeEmpCusto > 0  
     begin  
       Select @CmeCustoMed = Es.ValorCustoMed,  
              @CmeCustoUlt = Es.ValorCustoUlt,  
              @CmeCustoUltReal = Es.ValorCustoUltReal  
         From EstoqueProduto Es   
        Where Es.CodProduto = @AuxProCodProduto  
         and Es.Empresa = @CmeEmpPrincipal  
  
       Update EstoqueProduto      
          Set ValorCustoMed     = isnull(@CmeCustoMed,0),  
              ValorCustoUlt     = isnull(@CmeCustoUlt,0),      
              ValorCustoUltReal = isnull(@CmeCustoUltReal,0),      
              StatusTransacao   = 1      
       Where CodProduto = @AuxProCodProduto      
         and Empresa = @CmeEmpCusto  
     end  
          
          
        
     --Eder = 321038      
     --Atualiza o preço de custo com o custo médio      
     If @FlagAtualizarCustoMedioPreco = 1 and isnull(@AuxValorCustoMed,0) > 0        
     begin        
       Update ItemListaPreco      
          Set ValorCustoBruto = isnull(@AuxValorCustoMed,0),      
              ValorCustoLiquido = dbo.CalculaCustoLiquido(@EmpresaEstoque, isnull(@AuxValorCustoMed,0),        
                                      PercDesconto1, PercDesconto2, PercDesconto3, PercDesconto4, PercDesconto5,        
                                      PercAcrescimo1, PercAcrescimo2, PercAcrescimo3, PercFrete,        
                                      FlagIPIVenda, AliqIPI, PercICMCusto, PercPISCOFINSCusto, PercDescontoAdicional,        
                                      PercSubTrib, PercAcrescimoInc1, PercAcrescimoInc2, PercAcrescimoInc3,        
                                      PercFreteInc, PercDescontoNaoInc)        
         Where CodProduto = @AuxProCodProduto      
           and FlagPrincipal = 1      
           and Empresa = @EmpresaListaPreco      
     end      
        
   end      
   Else      
   If @TipoItens = 6      
   begin                                         
                                              
   --Rafael chamado 255209      
    if  @DataAux is not null      
    begin                                      
     Select                                                                   
     @AtuValorCustoMed = case when RI.QuantEstoque > 0 then (RI.ValorTotalCustoMed / RI.QuantEstoque) else 0 end                                           
     from RegistroInventario RI                                                                  
     where RI.DataInventario =  @DataAnterior                                                   
      and RI.CodProduto     =  @AuxProCodProduto                                                   
      and RI.EmpresaEstoque =  @EmpresaEstoque                                       
                                     
   if (@AtuValorCustoMed<0)                                    
      set @AtuValorCustoMed=0                                    
      --print 'produto: '+cast(@AuxProCodProduto as varchar(30))+' - '+cast(@AtuValorCustoMed as varchar(30))                                    
                                     
    end                                            
                                       
                                       
                                            
   if (@AtuValorCustoMed is null) or(@AtuValorCustoMed=0)      
   begin      
                                             
    Select Top 1      
        @AtuValorCustoMed = Mov.ValorCustoMed      
    From MovEstoque Mov      
    Left Join Operacoes Opr on Opr.Codigo = Mov.CodOperacao      
    where Mov.EmpresaEstoque = @EmpresaEstoque      
    And Mov.CodProduto    = @AuxProCodProduto      
    And Mov.TipoMovimento = 1                                           
    And Mov.DataMovimento  < = @InvDataInventario      
    And Opr.FlagCustoMedio = 1      
    And Opr.TipoMovimento in(0,3)            
    Order By Mov.DataMovimento Desc, Mov.NumLancamento Desc      
   end      
                                             
   if (@AtuValorCustoMed is null)      
    Set @AtuValorCustoMed = 0      
                                         
    Update RegistroInventario      
     Set ValorTotalCustoMed = Round(isnull(@AtuValorCustoMed, 0) * QuantEstoque, @QtdCasasCusto)      
    Where CodProduto = @AuxProCodProduto      
     and EmpresaEstoque = @EmpresaEstoque      
     and DataInventario = @InvDataInventario      
   end      
                                                                           
   Fetch Next From CursorProduto into @AuxProCodProduto,      
           @AuxValorAnterior, @AuxValorUltAnterior,      
           @AuxValorUltRealAnterior, @AuxDataMovimento,      
           @MovSaldoQtd      
  End      
                                                                           
 Close CursorProduto      
 Deallocate CursorProduto      
                                                             
                                
end      
                                
--Quando Houver algum produto com lote unitario, cria os lotes na tabela temporaria para                                                 
If (@TipoItens <> 6)      
  and ( Exists(Select *      
           From TempCalculoCustoMedio T      
             Left Join Produtos Pro on Pro.Codigo = T.CodProduto      
           Where T.SqlTimeStamp = @SqlTimeStamp      
            and Pro.TipoLote = 1      
            and Pro.FlagLoteUnitario = 1)      
          --Renato - 280210      
          or ( (@TipoItens = 1) and (@NFTipoControle = 2) and (@DataAtual =  Convert(datetime, (Convert(Char(10), GetDate(), 103)), 103)) )      
       )      
begin      
 Exec CalcularCustoMedioLote  @SqlTimeStamp, @TipoItens, @EmpresaEstoque,      
    @Empresa, @NFTipoControle, @NFCodControle, @PedCodPedido,      
    @PedCompraCodPedido, @LanNumLancamento, @ProCodProdutoIni, @ProCodProdutoFim      
end      
  
                                                          
--Apaga os itens quer foram usados na temporaria      
Delete From TempCalculoCustoMedio      
Where SqlTimeStamp = @SQLTimeStamp      
  
end    

GO

ALTER procedure [dbo].[CalcularCustoMedioLote]                    
(@SqlTimeStamp datetime,                    
 @TipoItens numeric(1),                                
 @EmpresaEstoque numeric(2),                                
 @Empresa numeric(2),                                
 @NFTipoControle numeric(1),                                
 @NFCodControle numeric(9),                                
 @PedCodPedido numeric(9),                                
 @PedCompraCodPedido numeric(9),                                
 @LanNumLancamento int,                                
 @ProCodProdutoIni numeric(7),                                
 @ProCodProdutoFim numeric(7)                    
)                                
as                    
begin                    
                    
                    
Declare @SvCodProduto int                    
Declare @SvCodLote varchar(20)                    
Declare @SvLocalizacao varchar(20)                    
Declare @CodProduto int                    
Declare @CodLote varchar(20)                    
Declare @Localizacao varchar(20)                    
Declare @TipoMovimento smallint                    
Declare @OperTipoMovimento smallint                    
Declare @MovEmpresa smallint                    
Declare @MovNumLancamento integer                    
Declare @ValorUnitario decimal(11,2)                    
Declare @ValorICM decimal(11,2)                    
Declare @ValorPisCofins decimal(11,2)                    
Declare @ValorCustoFor decimal(11,2)                    
Declare @ValorCustoMed decimal(11,2)                    
Declare @ValorCustoUlt decimal(11,2)                    
Declare @ValorCustoUltReal decimal(11,2)                    
Declare @QuantAtendida decimal(19,4)                    
Declare @TipoAtualizacaoCusto smallint      
Declare @ValorApropriacaoCusto decimal(13,4)    
                    
--Variaveis do Parametro de Controle                                  
Declare @QtdCasasCusto numeric(1)                                  
Declare @TipoICMCustoMedio numeric(1)                                  
Declare @TipoICMUltimaCompra numeric(1)              
                              
--MARCELO - CHAMADO 188892            
Declare @ValorCustoForTotal decimal(18,4)            
Declare @ValorCustoUltTotal decimal(18,4)            
Declare @ValorCustoUltRealTotal decimal(18,4)            
Declare @ValorCustoMedTotal decimal(18,4)            
Declare @ValorCustoSerTotal decimal(18,4)            
Declare @MovCodPedido numeric(9)            
Declare @MovTipoControle numeric(1)            
Declare @MovCodControle numeric(9)            
            
--Leitura do Parametro de Controle da empresa principal                                  
Select @QtdCasasCusto = QtdCasasCusto,                                  
       @TipoICMCustoMedio = TipoICMCustoMedio,                                  
       @TipoICMUltimaCompra = TipoICMUltimaCompra                    
 From ParamControle                                  
 Where Empresa = @EmpresaEstoque                                  
                    
                    
If @TipoItens = 1                                
begin                                
  Insert Into TempCalculoCustoMedioLote(SqlTimeStamp, CodProduto,                     
                                        CodLote, Localizacao)                                
     Select Distinct @SqlTimeStamp, Mov.CodProduto,                    
            MovAux.CodLote, MovAux.Localizacao                    
       From MovEstoque Mov                    
       Left Join MovEstoqueAux MovAux on MovAux.Empresa = Mov.Empresa                    
                                     and MovAux.NumLancamento = Mov.NumLancamento                    
       Left Join Produtos Pro on pro.Codigo = Mov.CodProduto                    
       Where Mov.Empresa=@Empresa                                
         and Mov.TipoControle = @NFTipoControle                                
         and Mov.CodControle = @NFCodControle                     
         and Mov.CodProduto <> 9999999                                
         and Mov.CodProduto <> 8888888                    
         and Pro.TipoLote = 1                    
         and Pro.FlagLoteUnitario = 1                        
         and MovAux.CodLote <> ''                    
end                                
Else                    
If @TipoItens = 2                    
begin                                
  Insert Into TempCalculoCustoMedioLote(SqlTimeStamp, CodProduto,                     
                                        CodLote, Localizacao)                                
     Select Distinct @SqlTimeStamp, Mov.CodProduto,                    
            MovAux.CodLote, MovAux.Localizacao                    
       From MovEstoque Mov                    
       Left Join MovEstoqueAux MovAux on MovAux.Empresa = Mov.Empresa                    
                                     and MovAux.NumLancamento = Mov.NumLancamento                    
       Left Join Produtos Pro on pro.Codigo = Mov.CodProduto                    
       Where Mov.Empresa=@Empresa                                
         and Mov.CodPedido = @PedCodPedido                                  
         and Mov.CodProduto <> 9999999                                
         and Mov.CodProduto <> 8888888                    
         and Pro.TipoLote = 1                    
         and Pro.FlagLoteUnitario = 1                      
         and MovAux.CodLote <> ''                    
end                                
Else                    
If @TipoItens = 3                    
begin                                
  Insert Into TempCalculoCustoMedioLote(SqlTimeStamp, CodProduto,                     
                                        CodLote, Localizacao)                                
     Select Distinct @SqlTimeStamp, Mov.CodProduto,                    
            MovAux.CodLote, MovAux.Localizacao                    
       From MovEstoque Mov                    
       Left Join MovEstoqueAux MovAux on MovAux.Empresa = Mov.Empresa                    
                                     and MovAux.NumLancamento = Mov.NumLancamento                    
       Left Join Produtos Pro on pro.Codigo = Mov.CodProduto                    
       Where Mov.Empresa=@Empresa                                
         and Mov.NumLancamento = @LanNumLancamento                                  
         and Mov.CodProduto <> 9999999                                
         and Mov.CodProduto <> 8888888                    
         and Pro.TipoLote = 1                    
         and Pro.FlagLoteUnitario = 1                        
         and MovAux.CodLote <> ''                    
end                                
Else                    
If @TipoItens = 4                                  
begin                                  
  Insert Into TempCalculoCustoMedioLote(SqlTimeStamp, CodProduto,                     
                                        CodLote, Localizacao)                                
     Select Distinct @SqlTimeStamp, Pro.Codigo,                    
            Lotes.CodLote, Lotes.Localizacao                    
       From Produtos Pro                    
       Left Join Lotes on Lotes.EmpresaEstoque = @EmpresaEstoque                    
                      and Lotes.CodProduto = Pro.Codigo                    
       Where Pro.Codigo between @ProCodProdutoIni and @ProCodProdutoFim                    
         and Pro.Codigo not in(9999999,8888888)                    
         and Pro.TipoLote = 1                    
         and Pro.FlagLoteUnitario = 1                        
         and Lotes.CodLote <> ''                            
end                                  
Else                    
If @TipoItens = 5                    
begin                                
  Insert Into TempCalculoCustoMedioLote(SqlTimeStamp, CodProduto,                     
                                        CodLote, Localizacao)                
     Select Distinct @SqlTimeStamp, Mov.CodProduto,                    
            MovAux.CodLote, MovAux.Localizacao                    
       From MovEstoque Mov                    
       Left Join MovEstoqueAux MovAux on MovAux.Empresa = Mov.Empresa                    
                                     and MovAux.NumLancamento = Mov.NumLancamento                    
       Left Join Produtos Pro on pro.Codigo = Mov.CodProduto                    
       Where Mov.Empresa=@Empresa                                
         and Mov.TipoMovimento = 1                                   
         and Mov.CodPedCompra = @PedCompraCodPedido                                  
         and Mov.CodProduto <> 9999999                                
         and Mov.CodProduto <> 8888888                    
         and Pro.TipoLote = 1                    
         and Pro.FlagLoteUnitario = 1                        
         and MovAux.CodLote <> ''                    
end 
else  
if @TipoItens = 7 --Gabriella - 344416 Apropriação de Custo
begin                               
  Insert Into TempCalculoCustoMedioLote(SqlTimeStamp, CodProduto,
                                        CodLote, Localizacao)                                                                        
    Select @SqlTimeStamp, Aprop.CodProduto, MovAux.CodLote, MovAux.Localizacao
     From ApropCustoItem Aprop                                                                         
     Left Join MovEstoqueAux MovAux on MovAux.Empresa = Aprop.Empresa                    
                                   and MovAux.NumLancamento = Aprop.NumMovEstoqueGerado
     Left Join Produtos Pro on pro.Codigo = Aprop.CodProduto                                                                           
     Where Aprop.Empresa=@Empresa                                                                          
      and Aprop.CodApropCusto = @LanNumLancamento                                                                           
      and Aprop.CodProduto <> 9999999                                      
      and Aprop.CodProduto <> 8888888
      and Pro.TipoLote = 1                    
      and Pro.FlagLoteUnitario = 1                        
      and MovAux.CodLote <> ''                                                                                                                                                                    
end                               
                    
                    
                    
Declare CursorLote Cursor Local Fast_Forward for                    
  Select T.CodProduto, T.CodLote, T.Localizacao,                     
         Mov.Empresa, Mov.NumLancamento,     
         Case When Mov.QuantAtendida = 0 Then 1 Else Mov.QuantAtendida End as QuantAtendida,                    
         Mov.ValorUnitario,           
         --Gabriella - 295380          
         --Round((Mov.ValorBaseICM * Mov.AliqICM) / 100,2) as ValorICM,           
         Case When isnull(Oper.TipoCalculoICMCustoMedio,0) = 0  
              --Then Round((Mov.ValorBaseICM * Mov.AliqICM) / 100,2) Else 0 End as ValorICM,        
              Then Round((Mov.ValorBaseICM * (Mov.AliqICM + isNull(MI.AliqComplICM,0))) / 100,2) Else 0 End as ValorICM,             
         --Ronaldo Chamado 326721
         --Round((Mov.QuantAtendida * Mov.ValorUnitario * Mov.AliqPISCOFINS) / 100,2) as ValorPISCOFINS,            
         Case When isnull(Oper.TipoCalculoICMCustoMedio,0) = 0                      
              Then Round(((Case When Mov.QuantAtendida > 0                                         
                                Then Round((Mov.ValorBruto - Round((Mov.ValorBruto * Mov.PercDesconto / 100),2)) * Mov.QuantAtendida,2)                                        
                                Else 0 End +           
                           Case When isnull(Oper.FlagIPISobrePisCofins,0) = 1           
                                Then Round((Mov.ValorBruto - Round((Mov.ValorBruto * Mov.PercDesconto / 100),2)) * Mov.QuantAtendida * Mov.AliqIPI / 100,2)          
                                Else 0 End)                                  
                           * Mov.AliqPISCOFINS) / 100,2)                       
              Else 0 End as ValorPISCOFINS,
         Mov.CodPedido, Mov.TipoControle, Mov.CodControle, --MARCELO - CHAMADO 188892            
         -- 307377      
         Case When Mov.QuantAtendida = 0 And Mov.ValorUnitario = 0 and Mov.ValorTotal > 0    
              Then Mov.ValorTotal Else 0 End as ValorApropriacaoCusto,  --Valor da apropriação é armazenado totalizado    
         Case When Mov.TipoMovimento = 1 and isnull(Oper.FlagCustoMedio,0) = 1                 
              Then Case           
                       When Mov.QuantAtendida = 0 And Mov.ValorUnitario = 0 and Mov.ValorTotal > 0    
                           Then 2  --2 - Apropriação de custo no custo médio                
                       When isnull(Oper.FlagEstoqueReservadoContabil,0) = 0    --Calcula independente de ser entrada reservada (CALCULO PADRAO)          
                           Then 1  --1 - Calculo do Custo Médio                
                       When isnull(Oper.FlagEstoqueReservadoContabil,0) = 1 and Mov.FlagMovEstoque <> 0   --Só calcula se NÃO for entrada reservada          
                           Then 1  --1 - Calculo do Custo Médio                
                       Else 0 End          
              Else 0 End as TipoAtualizacaoCusto                                       
    From TempCalculoCustoMedioLote T                    
    Left Join MovEstoqueAux MovAux on MovAux.CodProduto = T.CodProduto                    
                                  and MovAux.EmpresaEstoque = @EmpresaEstoque                    
                                  and MovAux.CodLote = T.CodLote                    
                                  and MovAux.Localizacao = T.Localizacao                    
    Left Join MovEstoque Mov on Mov.Empresa = MovAux.Empresa                    
                            and Mov.NumLancamento = MovAux.NumLancamento  
    --Renato - 360462
    Left Join MovEstoqueImposto MI on Mov.Empresa = MI.Empresa
                                  and Mov.NumLancamento = MI.NumLancamento                           
                                             
    Left Join Operacoes Oper on Oper.Codigo = Mov.CodOperacao                    
   Where T.SqlTimeStamp = @SqlTimeStamp                    
  Order By T.CodProduto, T.CodLote, T.Localizacao,                    
           Mov.DataMovimento, Mov.TipoMovimento, Mov.NumLancamento                    
                    
Open CursorLote                    
                    
Set @SvCodProduto = null                    
Set @SvCodLote = null                    
Set @SvLocalizacao = null                    
                    
Fetch Next From CursorLote into @CodProduto, @CodLote, @Localizacao,                    
      @MovEmpresa, @MovNumLancamento,     
      @QuantAtendida, @ValorUnitario, @ValorICM, @ValorPisCofins,            
      @MovCodPedido, @MovTipoControle, @MovCodControle,       
      @ValorApropriacaoCusto, @TipoAtualizacaoCusto      
            
While @@Fetch_Status = 0                    
begin                    
  If (@CodProduto <> @SvCodProduto) or (@SvCodProduto is null) or              
     (@CodLote <> @SvCodLote) or (@SvCodLote is null) or               (@Localizacao <> @SvLocalizacao) or (@SvLocalizacao is null)              
  begin                    
    Set @SvCodProduto = @CodProduto                    
    Set @SvCodLote = @CodLote                    
    Set @SvLocalizacao = @Localizacao                    
    Set @ValorCustoFor = 0                    
    Set @ValorCustoMed = 0                    
    Set @ValorCustoUlt = 0                    
    Set @ValorCustoUltReal = 0                    
  end                    
                    
                    
  -- Eder - 307377      
  --Calculo de Custo Medio - Entradas que Calculam Custo Medio                
  If @TipoAtualizacaoCusto = 1       
  begin                    
    --Custo do Fornecedor                    
    Set @ValorCustoFor = Round(@ValorUnitario,@QtdCasasCusto)                    
                    
    --Custo Médio                    
    If @TipoICMCustoMedio = 1                                  
       Set @ValorCustoMed = (@ValorUnitario * @QuantAtendida) - @ValorICM                                  
    Else                                  
    If @TipoICMCustoMedio = 2                                  
       Set @ValorCustoMed = (@ValorUnitario * @QuantAtendida) - @ValorICM - @ValorPISCOFINS                                  
    Else                             
       Set @ValorCustoMed = (@ValorUnitario * @QuantAtendida)                    
    Set @ValorCustoMed = Round(@ValorCustoMed / @QuantAtendida,@QtdCasasCusto)                    
                    
    --Custo da Ultima Compra                                  
    If @TipoICMUltimaCompra = 1                             
       Set @ValorCustoUlt = (@ValorUnitario * @QuantAtendida) - @ValorICM                                  
    Else                                  
    If @TipoICMUltimaCompra = 2                                  
       Set @ValorCustoUlt = (@ValorUnitario * @QuantAtendida) - @ValorICM - @ValorPISCOFINS                                  
    Else                             
       Set @ValorCustoUlt = (@ValorUnitario * @QuantAtendida)                    
    Set @ValorCustoUlt = Round(@ValorCustoUlt / @QuantAtendida,@QtdCasasCusto)                    
                    
    --Custo da Ultima Compra Real, sempre sem impostos                    
    Set @ValorCustoUltReal = (@ValorUnitario * @QuantAtendida) - @ValorICM - @ValorPISCOFINS                    
    Set @ValorCustoUltReal = Round(@ValorCustoUltReal / @QuantAtendida,@QtdCasasCusto)                    
  end                    
      
  --Eder - 307377                                
  --Apropriação do Custo médio / Lançamentos sem valor unitario e com Valor Ajuste de Custo                
  if @TipoAtualizacaoCusto = 2              
  begin              
    Set @ValorCustoFor = @ValorCustoFor + @ValorApropriacaoCusto         
    Set @ValorCustoMed = @ValorCustoMed + @ValorApropriacaoCusto         
  end      
                    
  Update MovEstoque                    
     Set ValorCustoFor     = isnull(@ValorCustoFor,0)                    
        ,ValorCustoMed     = isnull(@ValorCustoMed,0)                    
        ,ValorCustoUlt     = isnull(@ValorCustoUlt,0)                    
        ,ValorCustoUltReal = isnull(@ValorCustoUltReal,0)             
   Where Empresa = @MovEmpresa                    
     and NumLancamento = @MovNumlancamento                    
            
  --MARCELO - CHAMADO 188892            
  --ATUALIZAR VALORES DE CUSTOS TOTALIZADOS NOS PEDIDOS            
  if @MovCodPedido <> 0            
  begin                     
    Set @ValorCustoForTotal = 0            
    Set @ValorCustoUltTotal = 0            
    Set @ValorCustoUltRealTotal = 0            
    Set @ValorCustoMedTotal = 0            
    Set @ValorCustoSerTotal = 0            
            
    Select            
      @ValorCustoForTotal = round(isnull(Sum(Case When Mov.CodProduto <> 8888888                
                                                  Then (Mov.ValorCustoFor * Mov.FatorRedCusto) * Mov.QuantAtendida                
                                                  Else 0 End),0), isnull(Max(Par.QtdCasasCusto),4)),            
      @ValorCustoUltTotal = round(isnull(Sum(Case When Mov.CodProduto <> 8888888                
                                                  Then (Mov.ValorCustoUlt * Mov.FatorRedCusto) * Mov.QuantAtendida                
                                                  Else 0 End),0),isnull(Max(Par.QtdCasasCusto),4)),            
      @ValorCustoUltRealTotal = round(isnull(Sum(Case When Mov.CodProduto <> 8888888                
                                                      Then (Mov.ValorCustoUltReal * Mov.FatorRedCusto) * Mov.QuantAtendida                
                                                      Else 0 End),0),isnull(Max(Par.QtdCasasCusto),4)),                
      @ValorCustoMedTotal = round(isnull(Sum(Case When Mov.CodProduto <> 8888888                
                                                  Then Mov.ValorCustoMed * Mov.QuantAtendida                
                                                  Else 0 End),0),isnull(Max(Par.QtdCasasCusto),4)),            
      @ValorCustoSerTotal = round(isnull(Sum(Case When Mov.CodProduto = 8888888                
                                                  Then Mov.ValorCustoFor * Mov.QuantAtendida                
                                                  Else 0 End),0),isnull(Max(Par.QtdCasasCusto),4))            
    From MovEstoque Mov            
      Left Join ParamControle Par On Par.Empresa = Mov.Empresa            
    where Mov.Empresa = @MovEmpresa            
      and Mov.CodPedido = @MovCodPedido            
      and Mov.CodPedido > 0            
            
    update Pedidos set            
      ValorCustoForTotal     = @ValorCustoForTotal,            
      ValorCustoUltTotal     = @ValorCustoUltTotal,            
      ValorCustoUltRealTotal = @ValorCustoUltRealTotal,            
      ValorCustoMedTotal     = @ValorCustoMedTotal,            
      ValorCustoSerTotal     = @ValorCustoSerTotal            
    where Empresa = @MovEmpresa            
      and CodPedido = @MovCodPedido            
  end            
            
  --MARCELO - CHAMADO 188892            
  --ATUALIZAR VALORES DE CUSTOS TOTALIZADOS NAS NOTAS FISCAIS            
  if @MovCodControle <> 0            
  begin                     
    Set @ValorCustoForTotal = 0            
    Set @ValorCustoUltTotal = 0            
    Set @ValorCustoUltRealTotal = 0            
    Set @ValorCustoMedTotal = 0            
    Set @ValorCustoSerTotal = 0            
            
    Select            
      @ValorCustoForTotal = isnull(Sum(Case When Mov.CodProduto <> 8888888                
                                            Then (Mov.ValorCustoFor * Mov.FatorRedCusto) * Mov.QuantAtendida                
                                            Else 0 End),0),            
      @ValorCustoUltTotal = isnull(Sum(Case When Mov.CodProduto <> 8888888                
                                            Then (Mov.ValorCustoUlt * Mov.FatorRedCusto) * Mov.QuantAtendida            
                                            Else 0 End),0),            
      @ValorCustoUltRealTotal = isnull(Sum(Case When Mov.CodProduto <> 8888888                
                                                Then (Mov.ValorCustoUltReal * Mov.FatorRedCusto) * Mov.QuantAtendida                
                                                Else 0 End),0),            
      @ValorCustoMedTotal = isnull(Sum(Case When Mov.CodProduto <> 8888888                
                                            Then Mov.ValorCustoMed * Mov.QuantAtendida                
                                            Else 0 End),0),            
      @ValorCustoSerTotal = isnull(Sum(Case When Mov.CodProduto = 8888888                
                                            Then Mov.ValorCustoFor * Mov.QuantAtendida                
                                            Else 0 End),0)            
    From MovEstoque Mov                
    where Mov.Empresa = @MovEmpresa            
      and Mov.TipoControle = @MovTipoControle            
      and Mov.CodControle = @MovCodControle            
      and Mov.CodControle > 0            
            
    update NotasFiscais set            
      ValorCustoForTotal     = @ValorCustoForTotal,            
      ValorCustoUltTotal     = @ValorCustoUltTotal,            
      ValorCustoUltRealTotal = @ValorCustoUltRealTotal,            
      ValorCustoMedTotal     = @ValorCustoMedTotal,            
     ValorCustoSerTotal     = @ValorCustoSerTotal            
    where Empresa = @MovEmpresa            
      and TipoControle = @MovTipoControle            
      and CodControle = @MovCodControle            
  end            
                    
  Fetch Next From CursorLote into @CodProduto, @CodLote, @Localizacao,                    
        @MovEmpresa, @MovNumLancamento,     
        @QuantAtendida, @ValorUnitario, @ValorICM, @ValorPisCofins,            
        @MovCodPedido, @MovTipoControle, @MovCodControle,       
        @ValorApropriacaoCusto, @TipoAtualizacaoCusto --MARCELO - CHAMADO 188892                   
end                    
Close CursorLote                    
Deallocate CursorLote                    
                    
Delete From TempCalculoCustoMedioLote                    
 Where SqlTimeStamp = @SqlTimeStamp                    
                    
end  

GO

--Gabriella - 363000
if not exists(select * from sysobjects where name like 'Unidades')
begin
	Create Table Unidades (
	  Codigo               Char(6) Collate Latin1_General_CI_AS not null,
	  Descricao            Varchar(200) Collate Latin1_General_CI_AS not null,  
	  FatorConversao       decimal(14,6) not null,
	  StatusTransacao      Smallint not null,
	  TransacaoEmpresas    Varchar(50) Collate Latin1_General_CI_AS not null 
		
	  CONSTRAINT PK_Unidades PRIMARY KEY CLUSTERED 
	  (
		  Codigo ASC
	  ) ON [PRIMARY]
	)
	exec sp_bindefault 'dbo.Caracter', 'Unidades.Codigo'
	exec sp_bindefault 'dbo.Caracter', 'Unidades.Descricao'
	exec sp_bindefault 'dbo.Numero', 'Unidades.FatorConversao'
	exec sp_bindefault 'dbo.Numero', 'Unidades.StatusTransacao'
	exec sp_bindefault 'dbo.Caracter', 'Unidades.TransacaoEmpresas'
end
GO


ALTER FUNCTION [dbo].[Calcular_Comissao]                                    
(@Empresa numeric(2),                                    
 @TipoCalculo numeric(2),                   
 @CodVendInterno int,                   
 @CodVendExterno int,                   
 @CodVendParceiro int,                   
 @CodProduto numeric(7),                                    
 @ValorTotal decimal(13,4),                                    
 @CodLetraComissao char(5),                                    
 @MargemLucro decimal(8,2),                                    
 @PrazoMedio numeric(5),                                   
 @TipoPrecoProduto numeric(1),                                    
 @MargemLucroLiquido decimal(5,2),                                    
 @ValorLucroLiquido decimal(13,4),                                
 --JALDO - CHAMADO 268462        
 --@PercDesconto decimal(5,2),                    
 @PercDesconto decimal(8,4),        
 @PercDesconto1 decimal(5,2),                   
 @PercDesconto2 decimal(5,2),                   
 @PercDesconto3 decimal(5,2),                   
 @PercDesconto4 decimal(5,2),                   
 @PercDesconto5 decimal(5,2),                    
 @CodEntidade char(7),                         
--Rafael chamado 266574             
 --@PercDescontoCondPagto decimal(5,2)            
@PercDescontoCondPagto decimal(8,4),        
--279456        
@ValorServicosTotal decimal(11,2)                      
)                                    
                                    
Returns @Campos Table                                    
  (InternoOK int,                      
   ExternoOK int,                      
   ParceiroOK int,                     
   ValorInterno decimal(11,2),                                    
   ValorExterno decimal(11,2),                                    
   ValorParceiro decimal(11,2))                                    
as                                    
begin                                    
                                    
Declare @RetInternoOK int                      
Declare @RetExternoOK int                      
Declare @RetParceiroOK int                     
Declare @RetValorInterno decimal(11,2)                                    
Declare @RetValorExterno decimal(11,2)                                    
Declare @RetValorParceiro decimal(11,2)                                    
Declare @ValorDesconto decimal(5,2)                   
Declare @FlagDesconto  decimal(5,2)                   
Declare @FlagDesconto1 decimal(5,2)                   
Declare @FlagDesconto2 decimal(5,2)                   
Declare @FlagDesconto3 decimal(5,2)                   
Declare @FlagDesconto4 decimal(5,2)                   
Declare @FlagDesconto5 decimal(5,2)                                        
Declare @TipoCalcInterno numeric(2)                                    
Declare @TipoCalcExterno numeric(2)                                    
Declare @TipoCalcParceiro numeric(2)                                    
Declare @FlagAliqVendedorSemComissaoInterno numeric(2)                                  
Declare @FlagAliqVendedorSemComissaoExterno numeric(2)                                  
Declare @FlagAliqVendedorSemComissaoParceiro numeric(2)                                  
Declare @FlagComissaoServico numeric(1)                                  
Declare @ValorCalculo decimal(13,4)                                    
Declare @Aliquota decimal(5,2)                                    
Declare @Tabela int                                    
Declare @CodGrupo numeric(8)                                    
Declare @FlagNaoVendaExt int                                    
Declare @TabelaComissaoDesconto numeric(5)                                        
Declare @FlagTipoRelacaoVendedores numeric(1)                   
Declare @FlagRetiraDescCondPgtoComissao numeric(1)                        
Declare @TipoPreco numeric(1)                        
Declare @ValorCusto decimal(13,4)                        
Declare @ValorVenda decimal(13,4)                        
Declare @FlagEncontrouComissaoInt Smallint                      
Declare @FlagEncontrouComissaoExt Smallint                      
--319353    
Declare @FlagComissaoLetraListaPreco Smallint
--353932      
Declare @FlagItemContemLetraComissao Smallint      
          
                                   
Set @RetInternoOK = 0                                    
Set @RetExternoOK = 0                                    
Set @RetParceiroOK = 0                            
Set @RetValorInterno = 0                                    
Set @RetValorExterno = 0                                    
Set @RetValorParceiro = 0                                  
                        
                  
Set @FlagRetiraDescCondPgtoComissao = 0                        
Set @TipoPreco = 0                        
Set @ValorCusto = 0                        
Set @ValorVenda = 0                        
                      
                  
Set @FlagEncontrouComissaoInt = 0                      
Set @FlagEncontrouComissaoExt = 0                      
                      
                  
Select @TabelaComissaoDesconto = CodComissaoDesc                                
  From Entidades                                  
 Where Codigo = @CodEntidade                                       
                                  
Select @FlagComissaoServico = FlagComissaoServico,                            
       @FlagTipoRelacaoVendedores = FlagTipoRelacaoVendedores                                   
                   
       ,@FlagRetiraDescCondPgtoComissao = FlagRetiraDescCondPgtoComissao                        
       ,@TipoPreco = TipoPreco                        
  From ParamControle                                  
 Where Empresa = @Empresa                                  
                      
Select @TipoCalcInterno = TipoCalcComissao,                                  
       @FlagAliqVendedorSemComissaoInterno =  FlagAliqVendedorSemComissao,    
       --319353    
       @FlagComissaoLetraListaPreco    =  FlagComissaoLetraListaPreco                              
  From Vendedores                                   
 Where Codigo=@CodVendInterno                                    
    
If (@TipoCalcInterno is null)                                    
   Set @TipoCalcInterno = 0     
    
--319353    
if (@FlagComissaoLetraListaPreco = 1)and (not @CodLetraComissao = '')    
begin
  Set @TipoCalcInterno = 6    
  --353932
  Set @FlagItemContemLetraComissao = 1
end  
 
--353932
if (@FlagItemContemLetraComissao is null )
  Set @FlagItemContemLetraComissao = 0;
  
                                     
Select @TipoCalcExterno = TipoCalcComissao,                                  
       @FlagAliqVendedorSemComissaoExterno = FlagAliqVendedorSemComissao                                  
  From Vendedores                                   
  Where Codigo=@CodVendExterno                                    
If (@TipoCalcExterno is null)                                     
   Set @TipoCalcExterno = 0                                    
                                    
Select @TipoCalcParceiro = TipoCalcComissao,                                  
       @FlagAliqVendedorSemComissaoParceiro = FlagAliqVendedorSemComissao                                  
  From Vendedores                                   
 Where Codigo=@CodVendParceiro                                    
If (@TipoCalcParceiro is null)                                    
   Set @TipoCalcParceiro = 0                                    
                        
                  
if (@FlagRetiraDescCondPgtoComissao = 1) and (@PercDescontoCondPagto < 0) and (@ValorTotal <> 0)                        
begin                        
  if (@TipoPreco = 0)                        
     Set @ValorCusto = ((100 - @MargemLucro) * @ValorTotal) / 100                          
  if (@TipoPreco = 1)                      
     Set @ValorCusto = (100 * @MargemLucro) / @ValorTotal                               
  Set @ValorVenda = @ValorTotal /(1-(@PercDescontoCondPagto/100))                        
                  
  if (@TipoPreco = 0)                        
    Set @MargemLucro = 100 - ((@ValorCusto/@ValorVenda) * 100)                        
                  
                  
  if (@TipoPreco = 1) and (@ValorCusto <> 0)                  
    Set @MargemLucro = ((@ValorVenda - @ValorCusto)/@ValorCusto) * 100                  
  else                  
    Set @MargemLucro = 0                  
                    
  Set @ValorTotal = @ValorVenda                          
end                  
                                  
Set @ValorCalculo = @ValorTotal                                    
                                    
                                
/****************************************************/                  
/******        COMISSOES POR ITEM           *********/                                  
/****************************************************/                                  
/****************************************************/                                  
/****************************************************/                  
                                  
                  
                  
                  
                  
If (@TipoCalculo = 1)                                    
   and (@TipoCalcInterno = 2)                                    
   and ((@CodProduto = 8888888 and @FlagComissaoServico = 1) or                                  
        (@CodProduto <> 8888888))                                  
   and (@CodVendInterno <> 0)                                    
   begin                
     Set @RetInternoOK = 1                                    
     Set @Aliquota = 0                         
     Select @Tabela = TabComissao From Vendedores Where Codigo=@CodVendInterno                                    
     If (@Tabela is null)                                    
        Set @Tabela = 0                                    
     Select @CodGrupo = CodGrupo From Produtos Where Codigo = @CodProduto                                    
     If (@CodGrupo is null)                                    
        Set @CodGrupo = 0                                
     Select @Aliquota = Aliquota From dbo.PegaComissaoGrupo(@CodGrupo, @CodVendInterno, @CodVendExterno, 1, @Tabela)                                    
     Set @RetValorInterno = round((@ValorCalculo * @Aliquota) / 100, 2)                                    
   end                                    
                                  
      If (@TipoCalculo = 1)                                    
   and (@TipoCalcExterno = 2)                                    
   and ((@CodProduto = 8888888 and @FlagComissaoServico = 1) or                                  
        (@CodProduto <> 8888888))                                  
   and (@CodVendExterno <> 0)                                    
   begin                                    
     Set @RetExternoOK = 1                                    
     Set @Aliquota = 0                                    
     Select @Tabela = TabComissao From Vendedores Where Codigo=@CodVendExterno                                    
     If (@Tabela is null)                                    
        Set @Tabela = 0                                    
     Select @CodGrupo = CodGrupo From Produtos Where Codigo = @CodProduto                                    
     If (@CodGrupo is null)                                    
        Set @CodGrupo = 0                                    
     Select @Aliquota = Aliquota From dbo.PegaComissaoGrupo(@CodGrupo, @CodVendInterno, @CodVendExterno, 2, @Tabela)                                    
     Set @RetValorExterno = round((@ValorCalculo * @Aliquota) / 100, 2)                                    
   end                                    
                                  
   
                  
                  
                  
                  
If (@TipoCalculo = 1)  and                                  
   ((@TipoCalcInterno = 3) or                                  
    (@TipoCalcInterno = 6 and isnull((Select FlagComissaoPreco From LetraComissao Where Codigo=@CodLetraComissao),0) = 0))                                  
   If ((@CodProduto = 8888888 and @FlagComissaoServico = 1) or             
       (@CodProduto <> 8888888)) and                                  
       (@CodVendInterno <> 0)                                    
   begin                                    
     Set @RetInternoOK = 1                              
     Set @Aliquota = 0                                    
                       
     If @CodVendExterno = 0 or                                    
        @CodVendExterno <> 0 and (Select FlagNaoVendaExt From Vendedores Where Codigo = @CodVendExterno) = 1                                    
        begin                                    
          Select @Aliquota = PerComissaoDir From LetraComissao Where Codigo=@CodLetraComissao                                    
        end                     
     Else                                   
        Select @Aliquota = PerComissaoInd From LetraComissao Where Codigo=@CodLetraComissao                                    
     If (@Aliquota is null)                                    
        Set @Aliquota = 0                                    
     Set @RetValorInterno = round((@ValorCalculo * @Aliquota) / 100, 2)                                    
   end                                    
                
                  
If (@TipoCalculo = 1)  and                                  
   ((@TipoCalcExterno = 3) or                                  
    (@TipoCalcExterno = 6 and isnull((Select FlagComissaoPreco From LetraComissao Where Codigo=@CodLetraComissao),0) = 0))                                  
   If ((@CodProduto = 8888888 and @FlagComissaoServico = 1) or                                  
       (@CodProduto <> 8888888)) and                                  
      (@CodVendExterno <> 0)                                    
   begin                                    
     Set @RetExternoOK = 1                                    
     Set @Aliquota = 0                                    
     Set @FlagNaoVendaExt = (Select FlagNaoVendaExt From Vendedores Where Codigo = @CodVendInterno)                                    
                       
     If ((@CodVendInterno = 0) or                                    
         ((@CodVendInterno <> 0) and (@FlagNaoVendaExt = 1)))                                    
        begin                                          
          Select @Aliquota = PerComissaoDir From LetraComissao Where Codigo=@CodLetraComissao                                    
        end                                    
     Else                                    
        Select @Aliquota = PerComissaoInd From LetraComissao Where Codigo=@CodLetraComissao                                    
     If (@Aliquota is null)                                    
        Set @Aliquota = 0                            
     Set @RetValorExterno = round((@ValorCalculo * @Aliquota) / 100, 2)                                    
   end                                    
                                  
                                  
                  
                  
                  
                  
If (@TipoCalculo = 1)                                    
   and (@TipoCalcInterno = 9)                                    
   and ((@CodProduto = 8888888 and @FlagComissaoServico = 1) or                                  
        (@CodProduto <> 8888888))                                  
   and (@CodVendInterno <> 0)                                    
   begin                                    
     Set @RetInternoOK = 1                                    
     Set @CodGrupo = null                                  
     Select @CodGrupo = CodGrupo From Produtos Where Codigo = @CodProduto                                    
     If (@CodGrupo is null)                                    
        Set @CodGrupo = 0                                    
                                    
                  
     Set @Aliquota = null                      
     Select @Aliquota = Aliquota From dbo.PegaComissaoGrupoMargemPMV(@CodGrupo, @MargemLucro, @PrazoMedio, @CodVendInterno, @CodVendExterno, 1)                      
                  
     if @Aliquota is null                      
       Set @Aliquota = 0                      
     else                      
       Set @FlagEncontrouComissaoInt = 1                      
     Set @RetValorInterno = round((@ValorCalculo * @Aliquota) / 100, 2)                                    
   end                                    
                                  
                  
If (@TipoCalculo = 1)                                    
 and (@TipoCalcExterno = 9)                                    
   and ((@CodProduto = 8888888 and @FlagComissaoServico = 1) or                                  
        (@CodProduto <> 8888888))                                  
   and (@CodVendExterno <> 0)                                    
   begin                                    
     Set @RetExternoOK = 1                                    
     Set @CodGrupo = null                                  
     Select @CodGrupo = CodGrupo From Produtos Where Codigo = @CodProduto                                    
     If (@CodGrupo is null)                                    
        Set @CodGrupo = 0                                    
                                    
                  
     Set @Aliquota = null                      
     Select @Aliquota = Aliquota From dbo.PegaComissaoGrupoMargemPMV(@CodGrupo, @MargemLucro, @PrazoMedio, @CodVendInterno, @CodVendExterno, 2)                                    
                  
     if @Aliquota is null                      
       Set @Aliquota = 0                      
     else                      
       Set @FlagEncontrouComissaoExt = 1                      
     Set @RetValorExterno = round((@ValorCalculo * @Aliquota) / 100, 2)                                    
   end                                    
                                  
                  
                  
                  
                  
If (@TipoCalculo = 1)                                    
   and (@TipoCalcInterno = 10)                                    
   and ((@CodProduto = 8888888 and @FlagComissaoServico = 1) or                                  
        (@CodProduto <> 8888888))                                  
   and (@CodVendInterno <> 0)                                    
   begin                                    
     Set @RetInternoOK = 1                                    
     Set @CodGrupo = null                            
     Select @CodGrupo = CodGrupo From Produtos Where Codigo = @CodProduto                                    
     If (@CodGrupo is null)                                    
        Set @CodGrupo = 0                                    
                      
                  
     Set @Aliquota = null                      
     Select @Aliquota = Aliquota From dbo.PegaComissaoGrupoMargemPMV(@CodGrupo, @MargemLucroLiquido, @PrazoMedio, @CodVendInterno, @CodVendExterno, 1)                                    
                  
     if @Aliquota is null                      
       Set @Aliquota = 0                      
     else                      
       Set @FlagEncontrouComissaoInt = 1                      
     Set @RetValorInterno = round((@ValorLucroLiquido * @Aliquota) / 100, 2)                                    
   end                                    
                                  
                  
If (@TipoCalculo = 1)                                    
   and (@TipoCalcExterno = 10)                                    
   and ((@CodProduto = 8888888 and @FlagComissaoServico = 1) or                                          (@CodProduto <> 8888888))                                  
   and (@CodVendExterno <> 0)                                    
   begin                                    
     Set @RetExternoOK = 1                                    
     Set @CodGrupo = null                                  
     Select @CodGrupo = CodGrupo From Produtos Where Codigo = @CodProduto                                    
     If (@CodGrupo is null)                                    
        Set @CodGrupo = 0                   
                      
                  
     Set @Aliquota = null                      
     Select @Aliquota = Aliquota From dbo.PegaComissaoGrupoMargemPMV(@CodGrupo, @MargemLucroLiquido, @PrazoMedio, @CodVendInterno, @CodVendExterno, 2)                                    
                  
     if @Aliquota is null                      
       Set @Aliquota = 0                      
     else                      
       Set @FlagEncontrouComissaoExt = 1                      
     Set @RetValorExterno = round((@ValorLucroLiquido * @Aliquota) / 100, 2)                                    
   end                                    
                                  
                  
                  
                  
                  
                  
If (@TipoCalculo = 1)                                    
   and ((@TipoCalcInterno = 4) or                                  
                  
        (@TipoCalcInterno = 9 and @FlagEncontrouComissaoInt = 0))                     
   and ((@CodProduto = 8888888 and @FlagComissaoServico = 1) or                                  
        (@CodProduto <> 8888888))                                  
   and (@CodVendInterno <> 0)                                    
   begin                                    
     Set @RetInternoOK = 1                                    
     Set @Aliquota = 0                                    
     Select @Aliquota = Aliquota From dbo.PegaComissaoMargem(@MargemLucro, @PrazoMedio, @CodVendInterno, @CodVendExterno, 1)                                    
     Set @RetValorInterno = round((@ValorCalculo * @Aliquota) / 100, 2)                                    
   end                                    
                                    
                  
If (@TipoCalculo = 1)                                    
   and ((@TipoCalcExterno = 4) or                                  
                  
        (@TipoCalcExterno = 9 and @FlagEncontrouComissaoExt = 0))                      
   and ((@CodProduto = 8888888 and @FlagComissaoServico = 1) or                                  
        (@CodProduto <> 8888888))                                  
   and (@CodVendExterno <> 0)                                    
   begin                                    
     Set @RetExternoOK = 1                                    
     Set @Aliquota = 0                                    
     Select @Aliquota = Aliquota From dbo.PegaComissaoMargem(@MargemLucro, @PrazoMedio, @CodVendInterno, @CodVendExterno, 2)                                    
     Set @RetValorExterno = round((@ValorCalculo * @Aliquota) / 100, 2)                                    
   end                                    
                                    
                  
                  
                  
                  
If (@TipoCalculo = 1)                                    
   and (@TipoCalcInterno = 6 and isnull((Select FlagComissaoPreco From LetraComissao Where Codigo=@CodLetraComissao),0) = 1)                                  
   and ((@CodProduto = 8888888 and @FlagComissaoServico = 1) or                                  
        (not @CodProduto in(9999999,8888888)))                                  
   and (@CodVendInterno <> 0)                                    
   begin                                    
     Set @RetInternoOK = 1                                    
     Set @Aliquota = 0                            
     Select @Aliquota = PerComissaoInterno From LetraComissaoPreco        
      Where CodLetraComissao=@CodLetraComissao                                    
        and TipoPreco=@TipoPrecoProduto                                    
     If (@Aliquota is null)                                    
        Set @Aliquota = 0                                    
     Set @RetValorInterno = round((@ValorCalculo * @Aliquota) / 100, 2)                                    
   end                                    
                                  
                  
If (@TipoCalculo = 1)                                    
   and (@TipoCalcExterno = 6 and isnull((Select FlagComissaoPreco From LetraComissao Where Codigo=@CodLetraComissao),0) = 1)                                  
   and ((@CodProduto = 8888888 and @FlagComissaoServico = 1) or                                  
        (not @CodProduto in(9999999,8888888)))                                  
   and (@CodVendExterno <> 0)                                    
   begin                                    
     Set @RetExternoOK = 1                                    
     Set @Aliquota = 0                                    
     Set @FlagNaoVendaExt = (Select FlagNaoVendaExt From Vendedores Where Codigo = @CodVendInterno)                                    
     -- Eder - Chamado 268373          
     Select @Aliquota = Case When @CodVendInterno = 0 or @FlagNaoVendaExt = 1 then PerComissaoExternoDir                                     
                             Else PerComissaoExternoInd End                                     
       From LetraComissaoPreco                                    
      Where CodLetraComissao=@CodLetraComissao                       
        and TipoPreco=@TipoPrecoProduto                                    
     If (@Aliquota is null)                                    
        Set @Aliquota = 0                                    
     Set @RetValorExterno = round((@ValorCalculo * @Aliquota) / 100, 2)                                    
   end                            
                                    
                  
                  
                  
                  
                  
If (@TipoCalculo = 1)                                     
   and ((@TipoCalcInterno = 7) or                                  
                  
        (@TipoCalcInterno = 10 and @FlagEncontrouComissaoInt = 0))                                  
   and ((@CodProduto = 8888888 and @FlagComissaoServico = 1) or                                  
        (@CodProduto <> 8888888))                                  
   and (@CodVendInterno <> 0)                                    
   begin                                    
     Set @RetInternoOK = 1                                    
   Set @Aliquota = 0                                    
     Select @Aliquota = Aliquota From dbo.PegaComissaoMargem(@MargemLucroLiquido, @PrazoMedio, @CodVendInterno, @CodVendExterno, 1)               
     Set @RetValorInterno = round((@ValorLucroLiquido * @Aliquota) / 100, 2)                                    
   end                                    
                                    
                  
If (@TipoCalculo = 1)                                    
   and ((@TipoCalcExterno = 7) or                                  
                  
        (@TipoCalcExterno = 10 and @FlagEncontrouComissaoExt <= 0))                      
   and ((@CodProduto = 8888888 and @FlagComissaoServico = 1) or                                  
        (@CodProduto <> 8888888))                                  
   and (@CodVendExterno <> 0)                                    
   begin                                    
     Set @RetExternoOK = 1                                    
     Set @Aliquota = 0                                    
     Select @Aliquota = Aliquota From dbo.PegaComissaoMargem(@MargemLucroLiquido, @PrazoMedio, @CodVendInterno, @CodVendExterno, 2)                        
     Set @RetValorExterno = round((@ValorLucroLiquido * @Aliquota) / 100, 2)                         
   end                                
                                
                  
                  
                  
                  
                  
If (@TipoCalculo = 1)                                    
   and (@TipoCalcInterno = 11)                                  
   and ((@CodProduto = 8888888 and @FlagComissaoServico = 1) or                                  
        (@CodProduto <> 8888888))                                  
   and (@CodVendInterno <> 0)                                    
   begin                                    
     Set @RetInternoOK = 1                                    
     Set @Aliquota = 0                                   
                                
                       
     Select @FlagDesconto  = FlagPercDesconto, @FlagDesconto1  = FlagPercDesconto1,                                
     @FlagDesconto2 = FlagPercDesconto2, @FlagDesconto3 = FlagPercDesconto3,                                   
     @FlagDesconto4 = FlagPercDesconto4, @FlagDesconto5 = FlagPercDesconto5                                   
     from dbo.ComissaoDesconto                                 
     where Codigo = @TabelaComissaoDesconto                                
                                
     if @FlagDesconto = 1                    
       set @ValorDesconto = @PercDesconto             
     else                                
     begin                                
       set @ValorDesconto = 100                                
       if @FlagDesconto1 = 1                                 
       begin                                
         if @PercDesconto1 > 0                                 
           Set @ValorDesconto = @ValorDesconto - ((@ValorDesconto * @PercDesconto1) / 100)                                  
       end                                 
       if @FlagDesconto2 = 1                                 
       begin                                
         if @PercDesconto2 > 0                                 
           Set @ValorDesconto = @ValorDesconto - ((@ValorDesconto * @PercDesconto2) / 100)                                  
       end                                 
       if @FlagDesconto3 = 1                                 
       begin                                
         if @PercDesconto3 > 0                                 
           Set @ValorDesconto = @ValorDesconto - ((@ValorDesconto * @PercDesconto3) / 100)                                  
       end                                        
       if @FlagDesconto4 = 1                                 
       begin                   
         if @PercDesconto4 > 0                                 
           Set @ValorDesconto = @ValorDesconto - ((@ValorDesconto * @PercDesconto4) / 100)                                  
       end                                        
       if @FlagDesconto5 = 1                                 
       begin                                
         if @PercDesconto5 > 0                                 
           Set @ValorDesconto = @ValorDesconto - ((@ValorDesconto * @PercDesconto5) / 100)                                  
       end                                   
       If @ValorDesconto > 0                                  
         Set @ValorDesconto = 100 - @ValorDesconto                                       
     end                      
                              
     Select @Aliquota = Aliquota From dbo.PegaComissaoDesconto(@ValorDesconto, @TabelaComissaoDesconto, @CodVendInterno, @CodVendExterno, 1)                                    
     Set @RetValorInterno = round((@ValorTotal * @Aliquota) / 100, 2)                                    
   end                                    
                                    
                  
If (@TipoCalculo = 1)                                    
   and (@TipoCalcExterno = 11)                                  
   and ((@CodProduto = 8888888 and @FlagComissaoServico = 1) or                                  
        (@CodProduto <> 8888888))                        
   and (@CodVendExterno <> 0)                                    
   begin                               
     Set @RetExternoOK = 1                                    
     Set @Aliquota = 0                                 
                                
                       
     Select @FlagDesconto  = FlagPercDesconto, @FlagDesconto1  = FlagPercDesconto1,                                
     @FlagDesconto2 = FlagPercDesconto2, @FlagDesconto3 = FlagPercDesconto3,                                   
     @FlagDesconto4 = FlagPercDesconto4, @FlagDesconto5 = FlagPercDesconto5                                   
     from dbo.ComissaoDesconto                                 
     where Codigo = @TabelaComissaoDesconto                                
                                
                              
     if @FlagDesconto = 1                    
       set @ValorDesconto = @PercDesconto                                
     else                                
     begin                                
       set @ValorDesconto = 100           
       if @FlagDesconto1 = 1                                 
       begin                                
         if @PercDesconto1 > 0                                 
           Set @ValorDesconto = @ValorDesconto - ((@ValorDesconto * @PercDesconto1) / 100)                                  
       end                                 
       if @FlagDesconto2 = 1                                 
       begin                                
         if @PercDesconto2 > 0                                 
           Set @ValorDesconto = @ValorDesconto - ((@ValorDesconto * @PercDesconto2) / 100)                                  
       end                                 
       if @FlagDesconto3 = 1                                 
       begin                                
         if @PercDesconto3 > 0                                 
           Set @ValorDesconto = @ValorDesconto - ((@ValorDesconto * @PercDesconto3) / 100)                            
       end                                        
       if @FlagDesconto4 = 1                                 
       begin                                
         if @PercDesconto4 > 0                                 
           Set @ValorDesconto = @ValorDesconto - ((@ValorDesconto * @PercDesconto4) / 100)                                  
       end                                        
       if @FlagDesconto5 = 1                                 
       begin                            
         if @PercDesconto5 > 0                                 
           Set @ValorDesconto = @ValorDesconto - ((@ValorDesconto * @PercDesconto5) / 100)                                  
       end                                   
       If @ValorDesconto > 0                                  
         Set @ValorDesconto = 100 - @ValorDesconto                                       
     end                                
                                   
     Select @Aliquota = Aliquota From dbo.PegaComissaoDesconto(@ValorDesconto, @TabelaComissaoDesconto, @CodVendInterno, @CodVendExterno, 2)                                    
     Set @RetValorExterno = round((@ValorTotal * @Aliquota) / 100, 2)                                    
   end                                     
                                  
/****************************************************/                                  
/******     COMISSOES POR PEDIDO/NF         *********/                                  
/****************************************************/                                  
/****************************************************/                     
/****************************************************/                                  
        
--279456        
if ((@TipoCalculo = 2) and (@FlagComissaoServico = 0))         
  Set @ValorCalculo = @ValorCalculo - @ValorServicosTotal        
                  
                  
/*                  
If (@TipoCalculo = 2 and @TipoCalcInterno = 1 and @CodVendInterno <> 0) or                                    
   (@TipoCalculo = 1 and @TipoCalcInterno in(2,3,4,6,7,9,10,11) and @CodVendInterno <> 0)                                     
   begin                                    
*/


  if (( @CodVendInterno <> 0 )  and (
-- chamada por pedido com tipo de calc. interno por pedido e não tem letra de comissão ou não calcula por letra de comissao

     ( (@TipoCalculo = 2) and (@TipoCalcInterno = 1) and  (@FlagItemContemLetraComissao = 0) or (@FlagComissaoLetralistaPreco = 0 ) )
     OR
-- chamada por item, com tipo de calc. interno por item e não tem letra de comissão ou não calcula por letra de comissao
     (((@TipoCalculo = 1) and (@TipoCalcInterno in(2,3,4,6,7,9,10,11))) and ((@FlagItemContemLetraComissao = 0)  or (@FlagComissaoLetraListaPreco = 0) ) )
     OR
     ((@TipoCalculo = 1) and (@TipoCalcInterno = 1) and (@FlagItemContemLetraComissao = 0) and (@flagcomissaoLetralistaPreco = 1)  )
     ))  
  begin

     Set @RetInternoOK = 1                                    
     Set @Aliquota = 0                                    
     Set @FlagNaoVendaExt = (Select FlagNaoVendaExt From Vendedores Where Codigo=@CodVendExterno)                                    
                       
     If ((@CodVendExterno = 0) or                                    
         ((@CodVendExterno <> 0) and (@FlagNaoVendaExt = 1)))                                    
     begin                                    
       Select @Aliquota = Ven.AliqComissaoDir + isnull(VCom.AliqComissaoDir,0)                                    
         From Vendedores Ven                                    
         Left Join VendedoresComissao VCom on VCom.CodVendedor = Ven.Codigo                                    
                                          and VCom.Empresa=@Empresa                                    
 Where Ven.Codigo=@CodVendInterno                  
     end                                    
     Else                                    
     begin                                    
       Select @Aliquota = Ven.AliqComissaoInd + isnull(VCom.AliqComissaoInd,0)                                    
         From Vendedores Ven                                    
         Left Join VendedoresComissao VCom on VCom.CodVendedor = Ven.Codigo                                    
                                          and VCom.Empresa=@Empresa                                    
        Where Ven.Codigo=@CodVendInterno                                    
     end                                    
                                    
     If (@Aliquota is null)                                    
        Set @Aliquota = 0                                    
                       
     If ((@TipoCalculo = 2) or                                    
         (@TipoCalculo = 1 and @RetValorInterno > 0) or  
        --353932
       ((@TipoCalculo = 1) and (@FlagItemContemLetraComissao = 0) and (@flagcomissaoLetralistaPreco = 1)) or                                
         (@TipoCalculo = 1 and @FlagAliqVendedorSemComissaoInterno = 1))                                  
        Set @RetValorInterno = @RetValorInterno + round((@ValorCalculo * @Aliquota) / 100,2)   
                                               
   end                                
                                    
--353932
/*                  
  If (@TipoCalculo = 2 and @TipoCalcExterno = 1 and @CodVendExterno <> 0) or                                    
     (@TipoCalculo = 1 and @TipoCalcExterno in(2,3,4,6,7,9,10,11) and @CodVendExterno <> 0)                       
 begin                                    
*/
 
  
  if (( @CodVendExterno <> 0 )  and (
-- chamada por pedido com tipo de calc. interno por pedido e não tem letra de comissão ou não calcula por letra de comissao

     ( (@TipoCalculo = 2) and (@TipoCalcInterno = 1) and  (@FlagItemContemLetraComissao = 0) or (@FlagComissaoLetralistaPreco = 0 ) )
     OR
-- chamada por item, com tipo de calc. interno por item e não tem letra de comissão ou não calcula por letra de comissao
     (((@TipoCalculo = 1) and (@TipoCalcInterno in(2,3,4,6,7,9,10,11))) and ((@FlagItemContemLetraComissao = 0)  or (@FlagComissaoLetraListaPreco  = 0) ) )
     OR
     ((@TipoCalculo = 1) and (@TipoCalcInterno = 1) and (@FlagItemContemLetraComissao = 0) and (@FlagComissaoLetraListaPreco  = 1))
     ))  
   begin 
     Set @RetExternoOK = 1                                    
     Set @Aliquota = 0                                    
                                 
                       
     if (@FlagTipoRelacaoVendedores = 0)                   
     begin                            
       Set @FlagNaoVendaExt = (Select FlagNaoVendaExt From Vendedores Where Codigo=@CodVendInterno)                                     
                            
                         
       If ((@CodVendInterno = 0) or                                    
           ((@CodVendInterno <> 0) and (@FlagNaoVendaExt = 1)))                   
       begin                                    
         Select @Aliquota = Ven.AliqComissaoDir + isnull(VCom.AliqComissaoDir,0)                                    
           From Vendedores Ven                                    
           Left Join VendedoresComissao VCom on VCom.CodVendedor = Ven.Codigo                                    
                                           and VCom.Empresa=@Empresa                                    
           Where Ven.Codigo=@CodVendExterno                                    
       end                                    
       Else                                    
       begin                
         Select @Aliquota = Ven.AliqComissaoInd + isnull(VCom.AliqComissaoInd,0)                                    
         From Vendedores Ven                                    
         Left Join VendedoresComissao VCom on VCom.CodVendedor = Ven.Codigo                                    
                                          and VCom.Empresa=@Empresa                                    
         Where Ven.Codigo=@CodVendExterno                                          
       end                                    
     end                            
     else if (@FlagTipoRelacaoVendedores = 1)                   
     begin                            
       Set @FlagNaoVendaExt = (Select FlagNaoVendaExt From Vendedores Where Codigo=@CodVendParceiro)                                     
                            
                         
       If ((@CodVendParceiro = 0) or                                    
           ((@CodVendParceiro <> 0) and (@FlagNaoVendaExt = 1)))                   
       begin                                    
         Select @Aliquota = Ven.AliqComissaoDir + isnull(VCom.AliqComissaoDir,0)                                    
           From Vendedores Ven                                    
           Left Join VendedoresComissao VCom on VCom.CodVendedor = Ven.Codigo                                    
                                           and VCom.Empresa=@Empresa                                    
           Where Ven.Codigo=@CodVendExterno                                    
       end                                    
  Else                                    
       begin                                         
         Select @Aliquota = Ven.AliqComissaoInd + isnull(VCom.AliqComissaoInd,0)                                    
         From Vendedores Ven                                 
         Left Join VendedoresComissao VCom on VCom.CodVendedor = Ven.Codigo                                    
                                          and VCom.Empresa=@Empresa                                    
         Where Ven.Codigo=@CodVendExterno                                          
       end                             
                            
     end                            
     If (@Aliquota is null)                                    
        Set @Aliquota = 0                                    
                       
     If ((@TipoCalculo = 2) or                                    
         (@TipoCalculo = 1 and @RetValorExterno > 0) or  
        --353932   
        ((@TipoCalculo = 1) and (@FlagItemContemLetraComissao = 0) and (@FlagComissaoLetralistaPreco = 1)) or                             
         (@TipoCalculo = 1 and @FlagAliqVendedorSemComissaoExterno = 1))                                  
        Set @RetValorExterno = @RetValorExterno + round((@ValorCalculo * @Aliquota) / 100,2)                                    
   end                                    
                                  
  --353932                
  /*
  If (CTipoCalculo = 2 and @TipoCalcParceiro = 1 and @CodVendParceiro <> 0) or                                    
     (@TipoCalculo = 1 and @TipoCalcParceiro in(2,3,4,6,7,9,10,11) and @CodVendParceiro <> 0)                                     
   begin                                    
  */
  
    if ((@CodVendParceiro <> 0 )  and (
-- chamada por pedido com tipo de calc. interno por pedido e não tem letra de comissão ou não calcula por letra de comissao

     ( (@TipoCalculo = 2) and (@TipoCalcInterno = 1) and  (@FlagItemContemLetraComissao = 0) or (@flagcomissaoLetralistaPreco = 0 ) )
     OR
-- chamada por item, com tipo de calc. interno por item e não tem letra de comissão ou não calcula por letra de comissao
     (((@TipoCalculo = 1) and (@TipoCalcInterno in(2,3,4,6,7,9,10,11))) and ((@flagitemcontemletracomissao = 0)  or (@FlagComissaoLetraListaPreco  = 0) ) )
     OR
     ((@TipoCalculo = 1) and (@TipoCalcInterno = 1) and (@FlagItemcontemLetraComissao = 0) and (@FlagComissaoLetralistaPreco = 1)  )
     ))
   begin
 
     Set @RetParceiroOK = 1                                    
     Set @Aliquota = 0                                    
                                 
             
     if (@FlagTipoRelacaoVendedores = 0)                   
     begin                                 
       Select @Aliquota = Ven.AliqComissaoDir + isnull(VCom.AliqComissaoDir,0)                                    
  From Vendedores Ven                                    
         Left Join VendedoresComissao VCom on VCom.CodVendedor = Ven.Codigo                                    
                                          and VCom.Empresa=@Empresa                                    
         Where Ven.Codigo=@CodVendParceiro                            
     end                            
     else if (@FlagTipoRelacaoVendedores = 1)                   
     begin                            
       Set @FlagNaoVendaExt = (Select FlagNaoVendaExt From Vendedores Where Codigo=@CodVendExterno)                                     
                            
                         
       If ((@CodVendExterno = 0) or                                    
           ((@CodVendExterno <> 0) and (@FlagNaoVendaExt = 1)))          
       begin                                    
         Select @Aliquota = Ven.AliqComissaoDir + isnull(VCom.AliqComissaoDir,0)                                    
   From Vendedores Ven                                    
           Left Join VendedoresComissao VCom on VCom.CodVendedor = Ven.Codigo                                    
                                           and VCom.Empresa=@Empresa                                    
           Where Ven.Codigo=@CodVendParceiro                                    
       end                                    
       Else                                    
       begin                                         
  Select @Aliquota = Ven.AliqComissaoInd + isnull(VCom.AliqComissaoInd,0)                                    
         From Vendedores Ven                                    
         Left Join VendedoresComissao VCom on VCom.CodVendedor = Ven.Codigo                                    
                                          and VCom.Empresa=@Empresa                                    
         Where Ven.Codigo=@CodVendParceiro                                          
       end                                 
     end                                
                                    
     If (@Aliquota is null)                                    
        Set @Aliquota = 0                                    
                       
     If ((@TipoCalculo = 2) or                                    
         (@TipoCalculo = 1 and @RetValorParceiro > 0) or    
         --353932
        ((@TipoCalculo = 1) and (@FlagItemContemLetraComissao = 0) and (@FlagComissaoLetralistaPreco = 1)) or                              
         (@TipoCalculo = 1 and @FlagAliqVendedorSemComissaoParceiro = 1))                                  
        Set @RetValorParceiro = @RetValorParceiro + round((@ValorCalculo * @Aliquota) / 100,2)                                    
   end                                    
                                  
                  
                  
                  
                  
If (@TipoCalculo = 2)                                    
   and (@TipoCalcInterno = 5)                                    
   and (@CodVendInterno <> 0)                                    
   begin                                    
     Set @RetInternoOK = 1                                    
     Set @Aliquota = 0                                    
     Select @Aliquota = Aliquota From dbo.PegaComissaoMargem(@MargemLucro, @PrazoMedio, @CodVendInterno, @CodVendExterno, 1)                                    
     Set @RetValorInterno = round((@ValorCalculo * @Aliquota) / 100, 2)                                    
   end                                    
                                    
                  
If (@TipoCalculo = 2)                                    
   and (@TipoCalcExterno = 5)                                    
   and (@CodVendExterno <> 0)                                    
  begin                                    
     Set @RetExternoOK = 1                                    
     Set @Aliquota = 0                              
     Select @Aliquota = Aliquota From dbo.PegaComissaoMargem(@MargemLucro, @PrazoMedio, @CodVendInterno, @CodVendExterno, 2)                                    
     Set @RetValorExterno = round((@ValorCalculo * @Aliquota) / 100, 2)                                    
   end                                    
                                    
                  
                  
                  
                  
If (@TipoCalculo = 2)                                    
   and (@TipoCalcInterno = 8)                                    
   and (@CodVendInterno <> 0)                                    
   begin                                    
     Set @RetInternoOK = 1             
     Set @Aliquota = 0                                    
     Select @Aliquota = Aliquota From dbo.PegaComissaoMargem(@MargemLucroLiquido, @PrazoMedio, @CodVendInterno, @CodVendExterno, 1)                                    
     Set @RetValorInterno = round((@ValorLucroLiquido * @Aliquota) / 100, 2)                                    
   end                                    
                                    
                  
If (@TipoCalculo = 2)                                    
   and (@TipoCalcExterno = 8)                                    
   and (@CodVendExterno <> 0)                                    
   begin                                    
     Set @RetExternoOK = 1                                    
     Set @Aliquota = 0                                    
     Select @Aliquota = Aliquota From dbo.PegaComissaoMargem(@MargemLucroLiquido, @PrazoMedio, @CodVendInterno, @CodVendExterno, 2)                                    
     Set @RetValorExterno = round((@ValorLucroLiquido * @Aliquota) / 100, 2)                                    
   end                                    
                                    
                                  
                  
                  
Insert into @Campos (InternoOK, ExternoOK, ParceiroOK,                                    
                     ValorInterno, ValorExterno, ValorParceiro)                                    
            Values (@RetInternoOK, @RetExternoOK, @RetParceiroOK,                                   
                    @RetValorInterno, @RetValorExterno, @RetValorParceiro)                                    
                                    
Return                                    
End 

go








ALTER procedure [dbo].[Stored_TotalizaPedidoComissao]                    
@TipoOrigem numeric(1),  --1-Digitação do Pedido / 2-Recalculo de Totais                    
@Empresa numeric(2),                    
@CodPedido numeric(7),                    
@CodVendInterno int, -- JALDO 206942 numeric(5)                    
@CodVendExterno int, -- JALDO 206942 numeric(5)                    
@CodVendParceiro int, -- JALDO 206942 numeric(5)                    
@ValorProdutos decimal(11,2),                    
@ValorServicos decimal(11,2),                    
@ValorDesconto decimal(11,2),                    
@ValorDescontoServicos decimal(11,2),                    
@MargemLucro decimal(5,2),                    
@PrazoMedio decimal(5,2),                
@CodEntidade char(7),                     
--JALDO/RAFAEL - 197595            
--@PercDescontoCondPagto decimal(5,2)      
--266574      
@PercDescontoCondPagto decimal(8,4)                                  
as                    
--Variaveis para passar para a StoredProcedure                    
Declare @AuxValor decimal(13,4)                    
Declare @InternoOK numeric(1)                    
Declare @ExternoOK numeric(1)                    
Declare @ParceiroOK numeric(1)                    
Declare @ValorInterno decimal(11,2)                    
Declare @ValorExterno decimal(11,2)                    
Declare @ValorParceiro decimal(11,2)                    
Declare @AuxCodLetraComissao char(5)                    
Declare @MargemLucroLiquido decimal(5,2)                    
Declare @ValorLucroLiquido decimal(13,4)                    
Declare @FlagComissaoServico numeric(1)                  
                    
--Variaveis que usa para acumular o valor da comissao quando é por itens                    
Declare @AuxCodProduto numeric(7)                    
Declare @AuxValorTotal decimal(13,4)                    
Declare @AuxValorInterno decimal(11,2)                    
Declare @AuxValorExterno decimal(11,2)                    
Declare @AuxValorParceiro decimal(11,2)                    
Declare @TipoMargemLucro numeric(1)                    
Declare @TipoPrecoProduto numeric(1)                  
                
--JALDO - CHAMADO 268462    
--Karina - 123971                
--Declare @PercDesconto decimal(5,2)                
Declare @PercDesconto decimal(8,4)                
--Karina - 125025                
Declare @PercDesconto1 decimal(5,2)                
Declare @PercDesconto2 decimal(5,2)                
Declare @PercDesconto3 decimal(5,2)                
Declare @PercDesconto4 decimal(5,2)                
Declare @PercDesconto5 decimal(5,2)                 
    
--279456    
Declare @ValorServicosTotal decimal(11,2)   
  
--304454    
--Renato - 292957    
--Declare @FlagMargemLiquidaGerencial numeric(1)                       
Declare @TipoMargemLiquida numeric(1)  
  
/*VERSÃO 2.06: CHAMADO 304454*/     
  
                    
--Zera as variaveis de retorno                    
Set @AuxValorInterno = 0                    
Set @AuxValorExterno = 0                    
Set @AuxValorParceiro = 0                    
                  
Select @TipoMargemLucro = TipoMargemLucro,                  
       @FlagComissaoServico = FlagComissaoServico                  
  From ParamControle                    
 Where Empresa=@Empresa                    
  
--304454    
--Renato - 292957    
--Select @FlagMargemLiquidaGerencial = FlagMargemLiquidaGerencial  
Select @TipoMargemLiquida = TipoMargemLiquida      
From ConfiguracaoSistema                  
                  
If @FlagComissaoServico = 1                  
  Set @AuxValorTotal = (@ValorProdutos + @ValorServicos - @ValorDesconto - @ValorDescontoServicos)                    
Else                  
  Set @AuxValorTotal = (@ValorProdutos - @ValorDesconto)                    
                  
--279456 - revisar    
Set @ValorServicosTotal = 0    
                    
If @TipoOrigem = 1                    
begin       
  --Renato - 278668               
  /*Select @MargemLucroLiquido  = Dbo.CalculaLucroLiquido(Sum(QuantAtendida * ValorCustoUltReal),                    
                                     Sum(QuantAtendida * ValorUnitario),                     
                                     Sum(QuantAtendida * ValorUnitario * FatorRedVenda)),                    
         @ValorLucroLiquido = Case When (sum(QuantAtendida * ValorUnitario * FatorRedVenda)) > Sum(QuantAtendida * ValorCustoUltReal)                    
                                   Then Sum(QuantAtendida * ValorUnitario * FatorRedVenda) -                    
                                        Sum(QuantAtendida * ValorCustoUltReal)                    
                                   Else 0 End */  
 --304454     
  --Select @MargemLucroLiquido  = Dbo.CalculaLucroLiquido(Sum(QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0   
  Select @MargemLucroLiquido  = Dbo.CalculaLucroLiquido(Sum(QuantAtendida * (Case When @TipoMargemLiquida = 0       
                                                                                  Then ValorCustoUltReal     
                                                                                  Else (ValorCustoFor * FatorRedCusto) End)),                    
                                     Sum(QuantAtendida * ValorUnitario),                     
                                     Sum(QuantAtendida * ValorUnitario * FatorRedVenda)),                    
         @ValorLucroLiquido = Case When (sum(QuantAtendida * ValorUnitario * FatorRedVenda)) >   
                                        --304454  
                                        -- Sum(QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0  
                                        Sum(QuantAtendida * (Case When @TipoMargemLiquida = 0         
                                                                   Then ValorCustoUltReal     
                                                                   Else (ValorCustoFor * FatorRedCusto) End))                    
                                   Then Sum(QuantAtendida * ValorUnitario * FatorRedVenda) -        
                                      --30454    
                                      --  Sum(QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0  
                                        Sum(QuantAtendida * (Case When @TipoMargemLiquida = 0          
                                                                  Then ValorCustoUltReal     
                                                                  Else (ValorCustoFor * FatorRedCusto) End))                    
                                   Else 0 End    
                                   
   
         --353932
         ,  @AuxCodLetraComissao =(Select TOP  1   
                                   T2.CodLetraComissao 
                                   From TempPrce100Itens T2
                                   WHERE  T2.Empresa = @Empresa
                                     AND  T2.CodPedido = @CodPedido 
                                     AND  T2.CodLetraComissao <> ''
                                     and  T2.Status <> 'E'                                   
                                     and  T2.Status <> 'L'    
                                     AND ( ( T2.CodProduto = 8888888 AND @FlagComissaoServico = 1) OR ( T2.CodProduto <> 8888888) )
                                   )
 
                       
    From TempPrce100Itens                     
   Where Empresa=@Empresa                     
     and CodPedido=@CodPedido                     
     and Status <> 'E'                    
     and Status <> 'L'                    
     and ((CodProduto = 8888888 and @FlagComissaoServico = 1) or (CodProduto <> 8888888))                  
end                    
Else                    
begin     
 -- Renato - 278668                   
 /* Select @MargemLucroLiquido  = Dbo.CalculaLucroLiquido(Sum(QuantAtendida * ValorCustoUltReal),                    
                                     Sum(QuantAtendida * ValorUnitario),                     
          Sum(QuantAtendida * ValorUnitario * FatorRedVenda)),                    
         @ValorLucroLiquido = Case When (sum(QuantAtendida * ValorUnitario * FatorRedVenda)) > Sum(QuantAtendida * ValorCustoUltReal)                    
                                   Then Sum(QuantAtendida * ValorUnitario * FatorRedVenda) -                    
                                        Sum(QuantAtendida * ValorCustoUltReal)                    
                               Else 0 End */  
     
   -- 304454    
   --Select @MargemLucroLiquido  = Dbo.CalculaLucroLiquido(Sum(QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0  
   Select @MargemLucroLiquido  = Dbo.CalculaLucroLiquido(Sum(QuantAtendida * (Case When @TipoMargemLiquida = 0        
                                                                           Then ValorCustoUltReal     
                                                                                   Else (ValorCustoFor * FatorRedCusto) End)),                    
                                     Sum(QuantAtendida * ValorUnitario),                     
                                     Sum(QuantAtendida * ValorUnitario * FatorRedVenda)),                    
          @ValorLucroLiquido = Case When (sum(QuantAtendida * ValorUnitario * FatorRedVenda)) >   
                                          --304454       
                                          --Sum(QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0  
                                           Sum(QuantAtendida * (Case When @TipoMargemLiquida = 0         
                                                                    Then ValorCustoUltReal     
                                                                    Else (ValorCustoFor * FatorRedCusto) End))                    
                                    Then Sum(QuantAtendida * ValorUnitario * FatorRedVenda) -  
                                        --304454  
                                        -- Sum(QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0   
                                        Sum(QuantAtendida * (Case When @TipoMargemLiquida = 0       
                                                                  Then ValorCustoUltReal     
                                                                  Else (ValorCustoFor * FatorRedCusto) End))                    
                                    Else 0 End   
                                    
                              --353932
                             , @AuxCodLetraComissao =( Select TOP  1  M2.CodLetraComissao  
                                                       From  MovEstoque M2
                                                       WHERE M2.Empresa = @Empresa
                                                         AND M2.CodPedido = @CodPedido
                                                         AND M2.CodLetraComissao <> ''
                                                         AND ((M2.CodProduto = 8888888 AND @FlagComissaoServico = 1) OR (M2.CodProduto <> 8888888))
                                                     )       
                     
    From MovEstoque                    
   Where Empresa=@Empresa                     
     and CodPedido=@CodPedido                     
     and ((CodProduto = 8888888 and @FlagComissaoServico = 1) or (CodProduto <> 8888888))                  
end                  
                    
If @MargemLucroLiquido is null                    
  Set @MargemLucroLiquido = 0                    
If @ValorLucroLiquido is null                    
  Set @ValorLucroLiquido = 0                    
                    
--Verifica se existem comissoes calculadas sobre o valor do pedido.                    
Select @InternoOK= InternoOK, @ExternoOK=ExternoOK,@ParceiroOK=ParceiroOK,                    
       @ValorInterno=ValorInterno, @ValorExterno=ValorExterno, @ValorParceiro=ValorParceiro                    
       From dbo.Calcular_Comissao(@Empresa, 2, @CodVendInterno, @CodVendExterno,                     
                              @CodVendParceiro, null, @AuxValorTotal, @AuxCodLetraComissao,                     
                              @MargemLucro, @PrazoMedio, 0,                    
                              @MargemLucroLiquido, @ValorLucroLiquido,0,0,0,0,0,0,@CodEntidade            
                              --JALDO/RAFAEL - 197595            
                              ,@PercDescontoCondPagto, 0)                    
          
If (@InternoOK = 1)                    
   Set @AuxValorInterno = @ValorInterno                    
If (@ExternoOK = 1)                    
   Set @AuxValorExterno = @ValorExterno                    
If (@ParceiroOK = 1)                    
   Set @AuxValorParceiro = @ValorParceiro                    
                    
                    
--OBS: Só vai mover a comissao para o vendedor que tiver por produto.                    
--Exemplo: Vendedor Interno por pedido e vendedor externo por produto.                    
If @TipoOrigem = 1                    
begin                    
  Declare Cursor1 Cursor Local Fast_Forward For                    
    Select CodProduto, ValorTotal, CodLetraComissao, 
           --JALDO - CHAMADO 313712
           /*        
           Dbo.CalculaMargem(@Empresa,                     
           Case When @TipoMargemLucro = 0 Then (ValorCustoFor * FatorRedCusto)                    
                When @TipoMargemLucro = 1 Then (ValorCustoUlt * FatorRedCusto)   
                When @TipoMargemLucro = 2 Then (ValorCustoMed) End,                    
                ValorUnitario) as MargemLucro,      
           */
           Dbo.CalculaMargemLucro(@Empresa, 9, --FORÇA SEMPRE MARGEM DE LUCRO NORMAL
           Case When @TipoMargemLucro = 0 Then (ValorCustoFor * FatorRedCusto)
                When @TipoMargemLucro = 1 Then (ValorCustoUlt * FatorRedCusto)
                When @TipoMargemLucro = 2 Then (ValorCustoMed) End,
                ValorUnitario, ValorUnitario * fatorredvenda,
                Round(ValorBaseICM * AliqICM / 100,2)) AS MargemLucro,
           /* Renato - 278668      
           Dbo.CalculaLucroLiquido((QuantAtendida * ValorCustoUltReal),                    
                (QuantAtendida * ValorUnitario), (QuantAtendida * ValorUnitario * FatorRedVenda))                     
                as MargemLucroLiquido,                    
           Case When (QuantAtendida * ValorUnitario * FatorRedVenda) > (QuantAtendida * ValorCustoUltReal)                    
                Then ((QuantAtendida * ValorUnitario * FatorRedVenda) - (QuantAtendida * ValorCustoUltReal))                    
                Else 0 End as ValorLucroLiquido,     
           */  
             
           -- 304454   
           --Dbo.CalculaLucroLiquido((QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0  
             Dbo.CalculaLucroLiquido((QuantAtendida * (Case When @TipoMargemLiquida = 0      
                                                          Then ValorCustoUltReal     
                                                          Else (ValorCustoFor * FatorRedCusto) End)),                    
                (QuantAtendida * ValorUnitario), (QuantAtendida * ValorUnitario * FatorRedVenda))                     
                as MargemLucroLiquido,                    
           Case When (QuantAtendida * ValorUnitario * FatorRedVenda) >    
                     --304454   
                     --(QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0  
                      (QuantAtendida * (Case When @TipoMargemLiquida = 0          
                                            Then ValorCustoUltReal     
                                            Else (ValorCustoFor * FatorRedCusto) End))                    
                Then ((QuantAtendida * ValorUnitario * FatorRedVenda) -  
                      --304454     
                      --(QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0   
                       (QuantAtendida * (Case When @TipoMargemLiquida = 0     
                                             Then ValorCustoUltReal     
                                             Else (ValorCustoFor * FatorRedCusto) End)))                    
                Else 0 End as ValorLucroLiquido,     
               
                   
           TipoPrecoProduto, PercDesconto, PercDesconto1, PercDesconto2, PercDesconto3, PercDesconto4, PercDesconto5                 
           --JALDO/RAFAEL - 197595                       
,@PercDescontoCondPagto            
          
      From TempPrce100Itens                     
    Where Empresa=@Empresa                     
       and CodPedido=@CodPedido                     
       and Status <> 'E'                    
       and Status <> 'L'                    
end                    
Else                    
begin                    
  Declare Cursor1 Cursor Local Fast_Forward For                    
    Select CodProduto, ValorTotal, CodLetraComissao,    
        --JALDO - 313712                
        /*
        Dbo.CalculaMargem(@Empresa,                     
           Case When @TipoMargemLucro = 0 Then (ValorCustoFor * FatorRedCusto)                    
                When @TipoMargemLucro = 1 Then (ValorCustoUlt * FatorRedCusto)                    
                When @TipoMargemLucro = 2 Then (ValorCustoMed) End,                    
                ValorUnitario) as MargemLucro,         
        */
        Dbo.CalculaMargemLucro(@Empresa, 9, --FORÇA SEMPRE MARGEM DE LUCRO NORMAL
         Case When @TipoMargemLucro = 0 Then (ValorCustoFor * FatorRedCusto)
              When @TipoMargemLucro = 1 Then (ValorCustoUlt * FatorRedCusto)
              When @TipoMargemLucro = 2 Then (ValorCustoMed) End,
              ValorUnitario, ValorUnitario * fatorredvenda,
              Round(ValorBaseICM * AliqICM / 100,2)) AS MargemLucro,
           /* Renato - 278668               
           Dbo.CalculaLucroLiquido((QuantAtendida * ValorCustoUltReal),                    
                   (QuantAtendida * ValorUnitario), (QuantAtendida * ValorUnitario * FatorRedVenda))                     
                as MargemLucroLiquido,                    
           Case When (QuantAtendida * ValorUnitario * FatorRedVenda) > (QuantAtendida * ValorCustoUltReal)                    
                Then ((QuantAtendida * ValorUnitario * FatorRedVenda) - (QuantAtendida * ValorCustoUltReal))     
                Else 0 End as ValorLucroLiquido,    
           */   
  
        --304454    
        --Dbo.CalculaLucroLiquido((QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0   
         Dbo.CalculaLucroLiquido((QuantAtendida * (Case When @TipoMargemLiquida = 0     
                                                       Then ValorCustoUltReal     
                                                       Else (ValorCustoFor * FatorRedCusto) End)),                    
                                (QuantAtendida * ValorUnitario),     
                                (QuantAtendida * ValorUnitario * FatorRedVenda)) as MargemLucroLiquido,     
                   
        Case When (QuantAtendida * ValorUnitario * FatorRedVenda) >     
                   --304454    
                   --(QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0  
                   (QuantAtendida * (Case When @TipoMargemLiquida = 0                   
                                          Then ValorCustoUltReal     
                                          Else (ValorCustoFor * FatorRedCusto) End))                    
             Then ((QuantAtendida * ValorUnitario * FatorRedVenda) -     
                   --304454  
                   --(QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0  
                     (QuantAtendida * (Case When @TipoMargemLiquida = 0        
                                          Then ValorCustoUltReal     
                                          Else (ValorCustoFor * FatorRedCusto) End)))                    
             Else 0 End as ValorLucroLiquido,    
                 
           TipoPrecoProduto, PercDesconto, PercDesconto1, PercDesconto2, PercDesconto3, PercDesconto4, PercDesconto5                     
           --JALDO/RAFAEL - 197595            
           ,PercDescontoCondPagto            
      From MovEstoque                    
     Where Empresa=@Empresa                     
       and CodPedido=@CodPedido                     
end                    
                    
Open Cursor1                    
Fetch Next From Cursor1 Into @AuxCodProduto, @AuxValorTotal, @AuxCodLetraComissao,                     
           @MargemLucro, @MargemLucroLiquido, @ValorLucroLiquido, @TipoPrecoProduto,                 
    @PercDesconto, @PercDesconto1, @PercDesconto2, @PercDesconto3, @PercDesconto4, @PercDesconto5                               
    --JALDO/RAFAEL - 197595            
    ,@PercDescontoCondPagto            
While @@Fetch_Status = 0                    
begin                    
  Select @InternoOK=InternoOK, @ExternoOK=ExternoOK,@ParceiroOK=ParceiroOK,                    
         @ValorInterno=ValorInterno, @ValorExterno=ValorExterno, @ValorParceiro=ValorParceiro                    
    From dbo.Calcular_Comissao(@Empresa, 1, @CodVendInterno, @CodVendExterno,                     
                               @CodVendParceiro, @AuxCodProduto, @AuxValorTotal, @AuxCodLetraComissao,                    
                               @MargemLucro, @PrazoMedio, @TipoPrecoProduto,                    
                               @MargemLucroLiquido, @ValorLucroLiquido, @PercDesconto, @PercDesconto1,                 
          @PercDesconto2, @PercDesconto3, @PercDesconto4, @PercDesconto5,@CodEntidade            
          --JALDO/RAFAEL - 197595            
          ,@PercDescontoCondPagto, 0)                    
          
  If (@InternoOK = 1)                    
     Set @AuxValorInterno = @AuxValorInterno + @ValorInterno                    
  If (@ExternoOK = 1)                    
     Set @AuxValorExterno = @AuxValorExterno + @ValorExterno                    
  If (@ParceiroOK = 1)                    
     Set @AuxValorParceiro = @AuxValorParceiro + @ValorParceiro                    
  Fetch Next From Cursor1 Into @AuxCodProduto, @AuxValorTotal, @AuxCodLetraComissao,                     
             @MargemLucro, @MargemLucroLiquido, @ValorLucroLiquido, @TipoPrecoProduto, @PercDesconto,@PercDesconto1,    
             @PercDesconto2, @PercDesconto3, @PercDesconto4, @PercDesconto5            
             --JALDO/RAFAEL - 197595            
             ,@PercDescontoCondPagto            
                         
end                    
Close Cursor1                    
Deallocate Cursor1                    
                    
--Retorna o valor das comissoes para o programa                    
Select @AuxValorInterno as ValorComissInterno,                    
       @AuxValorExterno as ValorComissExterno,                    
       @AuxValorParceiro as ValorComissParceiro



GO






GO






ALTER procedure [dbo].[Stored_Prce050Comissao]              
@Empresa numeric(2),               
@TipoControle numeric(1),              
@CodControle numeric(7),              
@CodVendInterno int, -- JALDO 206942 numeric(5)              
@CodVendExterno int, -- JALDO 206942 numeric(5)              
@CodVendParceiro int, -- JALDO 206942 numeric(5)              
@ValorProdutos decimal(11,2),              
@ValorServicos decimal(11,2),              
@ValorDesconto decimal(11,2),              
@ValorDescontoServicos decimal(11,2),              
@MargemLucro decimal(5,2),              
@PrazoMedio decimal(5,2),      
--Rafael chamado 266574      
--@PercDescontoCondPagto decimal(5,2) --JALDO/RAFAEL - 197595      
@PercDescontoCondPagto decimal(8,4)       
as              
--Variaveis para passar para a StoredProcedure              
Declare @AuxValor decimal(13,4)              
Declare @InternoOK numeric(1)              
Declare @ExternoOK numeric(1)              
Declare @ParceiroOK numeric(1)              
Declare @ValorInterno decimal(11,2)              
Declare @ValorExterno decimal(11,2)              
Declare @ValorParceiro decimal(11,2)              
Declare @AuxCodLetraComissao char(5)              
              
--Variaveis que usa para acumular o valor da comissao quando é por itens              
Declare @AuxCodProduto numeric(7)              
Declare @AuxValorTotal decimal(13,4)              
Declare @AuxValorInterno decimal(11,2)              
Declare @AuxValorExterno decimal(11,2)              
Declare @AuxValorParceiro decimal(11,2)              
Declare @TipoMargemLucro numeric(1)              
Declare @TipoPrecoProduto numeric(1)              
Declare @MargemLucroLiquido decimal(5,2)              
Declare @ValorLucroLiquido decimal(13,4)              
Declare @FlagComissaoServico numeric(1)            
--JALDO - CHAMADO 268462    
--Karina - 123971          
--Declare @PercDesconto decimal(5,2)          
Declare @PercDesconto decimal(8,4)          
Declare @CodEntidade char(7)          
--Karina - 125025          
Declare @PercDesconto1  decimal(5,2)          
Declare @PercDesconto2  decimal(5,2)           
Declare @PercDesconto3  decimal(5,2)           
Declare @PercDesconto4  decimal(5,2)           
Declare @PercDesconto5  decimal(5,2)        
    
--279456    
Declare @ValorServicosTotal decimal(11,2)   
--304454   
--Renato - 292957    
--Declare @FlagMargemLiquidaGerencial numeric(1)  
Declare @TipoMargemLiquida numeric(1)             
  
/*VERSÃO 2.06: CHAMADO 304454*/    
  
    
--Zera as variaveis de retorno              
Set @AuxValorInterno = 0              
Set @AuxValorExterno = 0              
Set @AuxValorParceiro = 0              
              
Set @AuxValorTotal =  (@ValorProdutos + @ValorServicos - @ValorDesconto - @ValorDescontoServicos)       
    
--279456    
Set @ValorServicosTotal = @ValorServicos - @ValorDescontoServicos    
  
--304454    
--Renato - 292957    
--Select @FlagMargemLiquidaGerencial = FlagMargemLiquidaGerencial  
Select @TipoMargemLiquida = TipoMargemLiquida    
From ConfiguracaoSistema    
             
Select @TipoMargemLucro=TipoMargemLucro,             
       @FlagComissaoServico=FlagComissaoServico            
  From ParamControle              
   Where Empresa=@Empresa              
          
--Karina - 123971          
Select @CodEntidade = CodEntidade          
 From NotasFiscais              
 Where Empresa         = @Empresa               
      and TipoControle = @TipoControle               
      and CodControle  = @CodControle       
       
-- Renato - 278668            
/*Select @MargemLucroLiquido = Dbo.CalculaLucroLiquido(Sum(QuantAtendida * ValorCustoUltReal),              
              Sum(QuantAtendida * ValorUnitario), Sum(QuantAtendida * ValorUnitario * FatorRedVenda)),              
       @ValorLucroLiquido = Case When (sum(QuantAtendida * ValorUnitario * FatorRedVenda)) > Sum(QuantAtendida * ValorCustoUltReal)              
              Then (Sum(QuantAtendida * ValorUnitario * FatorRedVenda) - Sum(QuantAtendida * ValorCustoUltReal))               
              Else 0 End */      
  
--304454  
--Select @MargemLucroLiquido = Dbo.CalculaLucroLiquido(Sum(QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0   
Select @MargemLucroLiquido = Dbo.CalculaLucroLiquido(Sum(QuantAtendida * (Case When @TipoMargemLiquida = 0       
                                                                               Then ValorCustoUltReal     
                      Else (ValorCustoFor * FatorRedCusto) End)),              
             Sum(QuantAtendida * ValorUnitario), Sum(QuantAtendida * ValorUnitario * FatorRedVenda)),    
              
       @ValorLucroLiquido = Case When (sum(QuantAtendida * ValorUnitario * FatorRedVenda)) >    
                                       --304454   
                                       --Sum(QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0   
                                         Sum(QuantAtendida * (Case When @TipoMargemLiquida = 0       
                                                                 Then ValorCustoUltReal     
                                                                 Else (ValorCustoFor * FatorRedCusto) End))     
             
                                 Then (Sum(QuantAtendida * ValorUnitario * FatorRedVenda) -     
                                      --304454    
                                      --Sum(QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0  
                                      Sum(QuantAtendida * (Case When @TipoMargemLiquida = 0         
                                                                Then ValorCustoUltReal     
                                                                Else (ValorCustoFor * FatorRedCusto) End)))               
                                 Else 0 End   

         --353932
         ,  @AuxCodLetraComissao =(Select TOP  1   
                                   T2.CodLetraComissao 
                                   From TempPrce050Itens T2
                                   WHERE 
                                          T2.Empresa=@Empresa    
                                     and  T2.TipoControle=@TipoControle               
                                     and  T2.CodControle=@CodControle       
                                     AND  T2.CodLetraComissao <> ''
                                     and  T2.Status <> 'E'                                   
                                     and  T2.Status <> 'L'    
                                     AND ( ( T2.CodProduto = 8888888 AND @FlagComissaoServico = 1) OR ( T2.CodProduto <> 8888888) )
                                   )
 

        
From TempPrce050Itens               
Where Empresa=@Empresa               
  and TipoControle=@TipoControle               
  and CodControle=@CodControle               
  and Status <> 'E'               
  and Status <> 'L'              
  and ((CodProduto = 8888888 and @FlagComissaoServico = 1) or (CodProduto <> 8888888))              
           
If @MargemLucroLiquido is null              
  Set @MargemLucroLiquido = 0              
If @ValorLucroLiquido is null              
  Set @ValorLucroLiquido = 0              
              
--Verifica se existem comissoes calculadas sobre o valor da nota              
Select @InternoOK= InternoOK, @ExternoOK=ExternoOK,@ParceiroOK=ParceiroOK,              
       @ValorInterno=ValorInterno, @ValorExterno=ValorExterno, @ValorParceiro=ValorParceiro              
       From dbo.Calcular_Comissao(@Empresa, 2, @CodVendInterno, @CodVendExterno,               
                              @CodVendParceiro, null, @AuxValorTotal, @AuxCodLetraComissao, @MargemLucro,               
                              @PrazoMedio, 0,              
                              @MargemLucroLiquido, @ValorLucroLiquido, 0,0,0,0,0,0,@CodEntidade      
                              --JALDO/RAFAEL - 197595      
                              ,@PercDescontoCondPagto,     
                              --279456    
                              @ValorServicosTotal)              
If (@InternoOK = 1)              
   Set @AuxValorInterno = @ValorInterno              
If (@ExternoOK = 1)              
   Set @AuxValorExterno = @ValorExterno              
If (@ParceiroOK = 1)              
   Set @AuxValorParceiro = @ValorParceiro              
              
              
Declare Cursor1 Cursor Local Fast_Forward For              
  Select CodProduto, ValorTotal, CodLetraComissao,              
         --JALDO - CHAMADO 313712
         /*
         Dbo.CalculaMargem(@Empresa,               
         Case When @TipoMargemLucro = 0 Then (ValorCustoFor * FatorRedCusto)              
              When @TipoMargemLucro = 1 Then (ValorCustoUlt * FatorRedCusto)              
              When @TipoMargemLucro = 2 Then (ValorCustoMed) End,              
              ValorUnitario) as MargemLucro,      
         */
        Dbo.CalculaMargemLucro(@Empresa, 9, --FORÇA SEMPRE MARGEM DE LUCRO NORMAL
         Case When @TipoMargemLucro = 0 Then (ValorCustoFor * FatorRedCusto)
              When @TipoMargemLucro = 1 Then (ValorCustoUlt * FatorRedCusto)
              When @TipoMargemLucro = 2 Then (ValorCustoMed) End,
              ValorUnitario, ValorUnitario * fatorredvenda,
              Round(ValorBaseICM * AliqICM / 100,2)) aS MargemLucro,
       -- Renato - 278668            
     /*Dbo.CalculaLucroLiquido((QuantAtendida * ValorCustoUltReal),              
              (QuantAtendida * ValorUnitario), (QuantAtendida * ValorUnitario * FatorRedVenda))               
              as MargemLucroLiquido,              
         Case When (QuantAtendida * ValorUnitario * FatorRedVenda) > (QuantAtendida * ValorCustoUltReal)              
              Then ((QuantAtendida * ValorUnitario * FatorRedVenda) - (QuantAtendida * ValorCustoUltReal))               
              Else 0 End as ValorLucroLiquido, */  
  
         --304454  
         --Dbo.CalculaLucroLiquido((QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0   
           Dbo.CalculaLucroLiquido((QuantAtendida * (Case When @TipoMargemLiquida = 0     
                                                        Then ValorCustoUltReal     
                                                        Else (ValorCustoFor * FatorRedCusto) End)),      
              (QuantAtendida * ValorUnitario), (QuantAtendida * ValorUnitario * FatorRedVenda)) as MargemLucroLiquido,        
         --304454       
         --Case When (QuantAtendida * ValorUnitario * FatorRedVenda) > (QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0  
         Case When (QuantAtendida * ValorUnitario * FatorRedVenda) > (QuantAtendida * (Case When @TipoMargemLiquida = 0        
                                                                                            Then ValorCustoUltReal     
                                                                                            Else (ValorCustoFor * FatorRedCusto) End))              
             --304454   
             --Then ((QuantAtendida * ValorUnitario * FatorRedVenda) - (QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0  
              Then ((QuantAtendida * ValorUnitario * FatorRedVenda) - (QuantAtendida * (Case When @TipoMargemLiquida = 0        
                                                                                             Then ValorCustoUltReal     
                                                                                             Else (ValorCustoFor * FatorRedCusto) End)))               
              Else 0 End as ValorLucroLiquido,     
                 
         TipoPrecoProduto, PercDesconto, PercDesconto1, PercDesconto2, PercDesconto3, PercDesconto4,           
  PercDesconto5              
    From TempPrce050Itens               
    Where Empresa=@Empresa               
      and TipoControle=@TipoControle               
      and CodControle=@CodControle               
      and Status <> 'E'               
      and Status <> 'L'              
Open Cursor1              
Fetch Next From Cursor1 Into @AuxCodProduto, @AuxValorTotal, @AuxCodLetraComissao,               
           @MargemLucro, @MargemLucroLiquido, @ValorLucroLiquido, @TipoPrecoProduto, @PercDesconto, @PercDesconto1,           
    @PercDesconto2, @PercDesconto3, @PercDesconto4, @PercDesconto5                  
While @@Fetch_Status = 0              
begin              
              
   Select @InternoOK=InternoOK, @ExternoOK=ExternoOK,@ParceiroOK=ParceiroOK,              
          @ValorInterno=ValorInterno, @ValorExterno=ValorExterno, @ValorParceiro=ValorParceiro              
     From dbo.Calcular_Comissao(@Empresa, 1, @CodVendInterno, @CodVendExterno,               
                                @CodVendParceiro, @AuxCodProduto, @AuxValorTotal, @AuxCodLetraComissao,              
                                @MargemLucro, @PrazoMedio, @TipoPrecoProduto,              
                                @MargemLucroLiquido, @ValorLucroLiquido, @PercDesconto, @PercDesconto1, @PercDesconto2,           
    @PercDesconto3, @PercDesconto4, @PercDesconto5, @CodEntidade      
    --JALDO/RAFAEL - 197595      
   ,@PercDescontoCondPagto,0)              
   If (@InternoOK = 1)              
      Set @AuxValorInterno = @AuxValorInterno + @ValorInterno              
   If (@ExternoOK = 1)              
      Set @AuxValorExterno = @AuxValorExterno + @ValorExterno              
   If (@ParceiroOK = 1)              
      Set @AuxValorParceiro = @AuxValorParceiro + @ValorParceiro              
   Fetch Next From Cursor1 Into @AuxCodProduto, @AuxValorTotal, @AuxCodLetraComissao,               
              @MargemLucro, @MargemLucroLiquido, @ValorLucroLiquido, @TipoPrecoProduto,@PercDesconto, @PercDesconto1,           
       @PercDesconto2, @PercDesconto3, @PercDesconto4, @PercDesconto5                  
End              
Close Cursor1              
Deallocate Cursor1              
              
--Retorna o valor das comissoes para o programa              
Select @AuxValorInterno as ValorComissInterno,              
       @AuxValorExterno as ValorComissExterno,              
       @AuxValorParceiro as ValorComissParceiro


Go




alter procedure [dbo].[Stored_Prft110Comissao]                        
@Empresa numeric(2),                        
@TipoControle numeric(1),                        
@CodControle numeric(9)                        
as                        
                        
--Variaveis para passar para a StoredProcedure de calculo de comissao                        
              
Declare @InternoOK numeric(1)                        
Declare @ExternoOK numeric(1)                        
Declare @ParceiroOK numeric(1)                        
Declare @ValorInterno decimal(11,2)                        
Declare @ValorExterno decimal(11,2)                        
Declare @ValorParceiro decimal(11,2)                        
Declare @CodVendInterno int -- JALDO 206942 numeric(5)                        
Declare @CodVendExterno int -- JALDO 206942 numeric(5)                        
Declare @CodVendParceiro int -- JALDO 206942 numeric(5)                        
                        
                        
--Variaveis que usa para acumular o valor da comissao quando é por itens                        
Declare @AuxCodProduto numeric(7)                        
Declare @AuxCodLetraComissao char(5)                        
Declare @AuxValorTotal decimal(13,4)                        
Declare @AuxValorInterno decimal(11,2)                        
Declare @AuxValorExterno decimal(11,2)                        
Declare @AuxValorParceiro decimal(11,2)                        
Declare @MargemLucro decimal(5,2)                        
Declare @PrazoMedio numeric(5)                        
Declare @TipoMargemLucro numeric(1)                        
Declare @TipoPrecoProduto numeric(1)                        
Declare @MargemLucroLiquido decimal(5,2)                        
Declare @ValorLucroLiquido decimal(13,4)                        
Declare @FlagComissaoServico numeric(1)                      
Declare @FlagDevolucao smallint                      
--JALDO - CHAMADO 268462      
--Karina -123971                    
--Declare @PercDesconto decimal(5,2)                    
Declare @PercDesconto decimal(8,4)                    
Declare @CodEntidade char(7)                    
--Karina - 125025                    
Declare @PercDesconto1 decimal(5,2)                        
Declare @PercDesconto2 decimal(5,2)                        
Declare @PercDesconto3 decimal(5,2)                        
Declare @PercDesconto4 decimal(5,2)                        
Declare @PercDesconto5 decimal(5,2)                        
--Karina - 128025                  
Declare @RelacaoVendedores Numeric(1)                        
                
Declare @AuxValorBaseComissao Decimal(11,2)                
-- JALDO/RAFAEL -197595          
--Declare @PercDescontoCondPagto Decimal(5,2)--266574                        
Declare @PercDescontoCondPagto Decimal(8,4)          
--279456      
Declare @ValorServicosTotal Decimal(11,2)      
    
--304454    
--Renato - 292957      
--Declare @FlagMargemLiquidaGerencial numeric(1)    
Declare @TipoMargemLiquida numeric(1)            
    
/*VERSÃO 2.06: CHAMADO 304454*/       
      
--Zera as de acumulo de comissao                        
Set @AuxValorInterno = 0                        
Set @AuxValorExterno = 0                        
Set @AuxValorParceiro = 0          
-- JALDO/RAFAEL -197595          
Set @PercDescontoCondPagto = 0        
                
Select @TipoMargemLucro=TipoMargemLucro,                      
       @FlagComissaoServico=FlagComissaoServico,                  
       -- Karina - 128025                   
       @RelacaoVendedores = FlagTipoRelacaoVendedores                      
  From ParamControle                        
   Where Empresa=@Empresa         
    
--304454      
--Renato - 292957      
--Select @FlagMargemLiquidaGerencial = FlagMargemLiquidaGerencial    
Select @TipoMargemLiquida = TipoMargemLiquida        
From ConfiguracaoSistema                      
                        
Select @CodVendInterno = NF.CodVendInterno,                        
       @CodVendExterno = NF.CodVendExterno,                        
       @CodVendParceiro = NF.CodVendParceiro,                       
       --Karina - 128025                  
       @AuxValorTotal = Case When @RelacaoVendedores = 0                   
               Then (NF.ValorProdutos + NF.ValorServicos - NF.ValorDesconto - NF.ValorDescontoServicos)                  
          When @RelacaoVendedores = 1                  
               Then (NF.ValorTotalNota) End,                        
       @MargemLucro = Dbo.CalculaMargem(@Empresa,                         
                          Case When @TipoMargemLucro = 0 then VN.ValorCustoFor                        
-- 183245                               When @TipoMargemLucro = 1 then VN.ValorCustoFor              
-- 183245                               When @TipoMargemLucro = 2 then VN.ValorCustoFor End,              
                  When @TipoMargemLucro = 1 then VN.ValorCustoUlt              
                               When @TipoMargemLucro = 2 then VN.ValorCustoMed End,              
              
                          (NF.ValorProdutos - NF.ValorDesconto)),                        
       @PrazoMedio = NF.PrazoMedio,                      
       @FlagDevolucao = (Case IsNull(Op.TipoMovimento,0) When 1 Then 1 Else 0 End),                     
       @CodEntidade = NF.CodEntidade          
       -- JALDO/RAFAEL - 197595          
       ,@PercDescontoCondPagto = (select Max(IsNull(Mov.PercDescontoCondPagto,0))          
                                    from MovEstoque Mov          
                                 where           
                                     Mov.Empresa = NF.Empresa          
                                 and Mov.TipoControle = NF.TipoControle          
                                 and Mov.CodControle = NF.CodControle),                                          
--279456      
  @ValorServicosTotal = NF.ValorServicos - NF.ValorDescontoServicos      
From NotasFiscais NF                        
  Left Join ViewNotasFiscais VN on VN.Empresa = @Empresa                        
        and VN.TipoControle=@TipoControle                         
     and VN.CodControle=@CodControle                       
  Left join Operacoes Op on Op.Codigo = NF.CodOperacao                      
Where NF.Empresa=@Empresa                         
  and NF.TipoControle=@TipoControle                         
  and NF.CodControle=@CodControle                        
                
Set @AuxValorBaseComissao = @AuxValorTotal                
                      
--102759                      
if (@TipoControle = 1) and (@FlagDevolucao = 1)                      
begin                      
  Select @PrazoMedio = Max(IsNull(NF.PrazoMedio,@PrazoMedio))                      
  From MovEstoque Mov                      
    Left Join MovEstoqueReferencia MAux on MAux.Empresa = Mov.Empresa                       
      and MAux.NumLancamento = Mov.NumLancamento                      
      and MAux.TipoReferencia = 1                      
    Left Join MovEstoque MRef on MRef.Empresa = MAux.empresaReferencia                      
      and MRef.NumLancamento = MAux.NumLancamentoReferencia                      
    Left Join NotasFiscais NF on NF.Empresa = MRef.Empresa                      
       and NF.TipoControle = MRef.TipoControle                      
       and NF.Codcontrole = MRef.CodControle                      
  Where Mov.Empresa = @Empresa                      
    and Mov.TipoControle = @TipoControle                      
    and Mov.CodControle = @CodControle                      
end                      
/* Renato - 292957                       
Select @MargemLucroLiquido  = Dbo.CalculaLucroLiquido(Sum(QuantAtendida * ValorCustoUltReal),                        
              Sum(QuantAtendida * ValorUnitario), Sum(QuantAtendida * ValorUnitario * FatorRedVenda)),                        
       @ValorLucroLiquido = Case When (sum(QuantAtendida * ValorUnitario * FatorRedVenda)) > Sum(QuantAtendida * ValorCustoUltReal)     
              Then (Sum(QuantAtendida * ValorUnitario * FatorRedVenda) - Sum(QuantAtendida * ValorCustoUltReal))                         
              Else 0 End      
*/    
    
--304454      
--Select @MargemLucroLiquido  = Dbo.CalculaLucroLiquido(Sum(QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0    
Select @MargemLucroLiquido  = Dbo.CalculaLucroLiquido(Sum(QuantAtendida * (Case When @TipoMargemLiquida = 0       
                                                                                Then ValorCustoUltReal       
                                                                                Else (ValorCustoFor * FatorRedCusto) End)),                        
              Sum(QuantAtendida * ValorUnitario), Sum(QuantAtendida * ValorUnitario * FatorRedVenda)),                        
       @ValorLucroLiquido = Case When (sum(QuantAtendida * ValorUnitario * FatorRedVenda)) >    
                                    --304454    
                                    -- Sum(QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0    
                                    Sum(QuantAtendida * (Case When @TipoMargemLiquida = 0           
                                                                 Then ValorCustoUltReal       
                                                                 Else (ValorCustoFor * FatorRedCusto) End))                        
              Then (Sum(QuantAtendida * ValorUnitario * FatorRedVenda) -    
                   --304454    
                   --Sum(QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0    
                   Sum(QuantAtendida * (Case When @TipoMargemLiquida = 0            
                                              Then ValorCustoUltReal       
                                              Else (ValorCustoFor * FatorRedCusto) End)))                         
              Else 0 End 
            
         ,@AuxCodLetraComissao =  ( Select Top 1 mov2.CodLetraComissao     
                                    From MovEstoque mov2                        
                                    Where mov2.Empresa=@Empresa                         
                                      and mov2.TipoControle=@TipoControle                         
                                      and mov2.CodControle=@CodControle                 
                                      and mov2.CodLetraComissao <> ''         
                                      and ((mov2.CodProduto = 8888888 and @FlagComissaoServico = 1) or (mov2.CodProduto <> 8888888))                        

                                  )  
                                     

                        
  From MovEstoque                        
Where Empresa=@Empresa                         
  and TipoControle=@TipoControle                         
  and CodControle=@CodControle                        
  and ((CodProduto = 8888888 and @FlagComissaoServico = 1) or (CodProduto <> 8888888))                        
                      
If @MargemLucroLiquido is null                        
  Set @MargemLucroLiquido = 0                        
If @ValorLucroLiquido is null                        
  Set @ValorLucroLiquido = 0                        
                        
                        
--Verifica se existem comissoes calculadas sobre o valor do pedido.                        
Select @InternoOK=InternoOK, @ExternoOK=ExternoOK, @ParceiroOK=ParceiroOK,                        
       @ValorInterno=ValorInterno, @ValorExterno=ValorExterno, @ValorParceiro=ValorParceiro                        
       From dbo.Calcular_Comissao(@Empresa, 2, @CodVendInterno, @CodVendExterno,                         
            @CodVendParceiro, null, @AuxValorTotal, @AuxCodLetraComissao,                         
            @MargemLucro, @PrazoMedio, 0,                      
            @MargemLucroLiquido, @ValorLucroLiquido,0,0,0,0,0,0,@CodEntidade          
            --JALDO/RAFAEL 197595                       
            ,@PercDescontoCondPagto,      
            --279456      
            @ValorServicosTotal)           
        
If @InternoOK = 1                        
   Set @AuxValorInterno = @ValorInterno                        
If @ExternoOK = 1                        
   Set @AuxValorExterno = @ValorExterno                   
If @ParceiroOK = 1                        
   Set @AuxValorParceiro = @ValorParceiro                        
                        
                        
Declare Cursor1 Cursor Local Fast_Forward For                        
  Select CodProduto, ValorTotal,CodLetraComissao,                        
         --JALDO - CHAMADO 313712  
         /*  
         Dbo.CalculaMargem(@Empresa,                         
              Case When @TipoMargemLucro = 0 Then (ValorCustoFor * FatorRedCusto)                        
                   When @TipoMargemLucro = 1 Then (ValorCustoUlt * FatorRedCusto)                        
                   When @TipoMargemLucro = 2 Then (ValorCustoMed) End,                        
              ValorUnitario) as MargemLucro,              
          */  
         Dbo.CalculaMargemLucro(@Empresa, 9, --FORÇA SEMPRE MARGEM DE LUCRO NORMAL  
         Case When @TipoMargemLucro = 0 Then (ValorCustoFor * FatorRedCusto)  
              When @TipoMargemLucro = 1 Then (ValorCustoUlt * FatorRedCusto)  
              When @TipoMargemLucro = 2 Then (ValorCustoMed) End,  
              ValorUnitario, ValorUnitario * fatorredvenda,  
              Round(ValorBaseICM * AliqICM / 100,2)) AS MargemLucro,       
         /* Renato - 292957      
         Dbo.CalculaLucroLiquido((QuantAtendida * ValorCustoUltReal),                        
              (QuantAtendida * ValorUnitario), (QuantAtendida * ValorUnitario * FatorRedVenda))                         
              as MargemLucroLiquido,                        
         Case When (QuantAtendida * ValorUnitario * FatorRedVenda) > (QuantAtendida * ValorCustoUltReal)                        
              Then ((QuantAtendida * ValorUnitario * FatorRedVenda) - (QuantAtendida * ValorCustoUltReal))                        
              Else 0 End as ValorLucroLiquido,       
         */    
         --304454      
         --Dbo.CalculaLucroLiquido((QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0    
          Dbo.CalculaLucroLiquido((QuantAtendida * (Case When @TipoMargemLiquida = 0       
                                                        Then ValorCustoUltReal       
                                                        Else (ValorCustoFor * FatorRedCusto) End)),                        
              (QuantAtendida * ValorUnitario), (QuantAtendida * ValorUnitario * FatorRedVenda))                         
              as MargemLucroLiquido,                 
         Case When (QuantAtendida * ValorUnitario * FatorRedVenda) >    
                   --304454    
                   --(QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0    
                   (QuantAtendida * (Case When @TipoMargemLiquida = 0       
                                          Then ValorCustoUltReal       
                                          Else (ValorCustoFor * FatorRedCusto) End))                        
              Then ((QuantAtendida * ValorUnitario * FatorRedVenda) -       
                    --304454    
                    --(QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0     
                     (QuantAtendida * (Case When @TipoMargemLiquida = 0         
                                           Then ValorCustoUltReal       
                                           Else (ValorCustoFor * FatorRedCusto) End)))                        
              Else 0 End as ValorLucroLiquido,      
      
            
         TipoPrecoProduto, PercDesconto, PercDesconto1, PercDesconto2, PercDesconto3,                     
    PercDesconto4, PercDesconto5, CodEntidade          
    --JALDO/RAFAEL - 197595          
    ,PercDescontoCondPagto                         
    From MovEstoque                        
   Where Empresa=@Empresa and TipoControle=@TipoControle and CodControle=@CodControle                        
Open Cursor1                        
Fetch Next From Cursor1 Into @AuxCodProduto, @AuxValorTotal, @AuxCodLetraComissao,                         
           @MargemLucro, @MargemLucroLiquido, @ValorLucroLiquido, @TipoPrecoProduto, @PercDesconto, @PercDesconto1,                     
    @PercDesconto2, @PercDesconto3, @PercDesconto4, @PercDesconto5, @CodEntidade          
    --JALDO/RAFAEL - 197595                        
    ,@PercDescontoCondPagto                         
While @@Fetch_Status = 0                        
begin                       
  Select @InternoOK=InternoOK, @ExternoOK=ExternoOK, @ParceiroOK=ParceiroOK,                        
         @ValorInterno=ValorInterno, @ValorExterno=ValorExterno, @ValorParceiro=ValorParceiro                        
    From dbo.Calcular_Comissao(@Empresa, 1, @CodVendInterno, @CodVendExterno,                         
         @CodVendParceiro, @AuxCodProduto, @AuxValorTotal, @AuxCodLetraComissao,                         
         @MargemLucro, @PrazoMedio, @TipoPrecoProduto,                        
         @MargemLucroLiquido, @ValorLucroLiquido,@PercDesconto,@PercDesconto1,                     
         @PercDesconto2, @PercDesconto3, @PercDesconto4, @PercDesconto5, @CodEntidade          
         --JALDO/RAFAEL - 197595                       
         ,@PercDescontoCondPagto, 0)           
                        
  If @InternoOK = 1                        
     Set @AuxValorInterno = @AuxValorInterno + @ValorInterno                        
                        
  If @ExternoOK = 1                        
     Set @AuxValorExterno = @AuxValorExterno + @ValorExterno                        
  If @ParceiroOK = 1                 
     Set @AuxValorParceiro = @AuxValorParceiro + @ValorParceiro                        
  Fetch Next From Cursor1 Into @AuxCodProduto, @AuxValorTotal, @AuxCodLetraComissao,                         
        @MargemLucro, @MargemLucroLiquido, @ValorLucroLiquido, @TipoPrecoProduto, @PercDesconto,@PercDesconto1,                     
        @PercDesconto2, @PercDesconto3, @PercDesconto4, @PercDesconto5, @CodEntidade                        
        --JALDO/RAFAEL - 197595          
        ,@PercDescontoCondPagto          
End                
Close Cursor1                        
Deallocate Cursor1                        
                        
                        
--Altera o Valor das comissoes na nota fiscal                        
Update NotasFiscais                        
   Set ValorComissaoInterno = @AuxValorInterno,                        
       ValorComissaoExterno = @AuxValorExterno,                        
       ValorComissaoParceiro = @AuxValorParceiro,                        
       ValorBaseComissao = @AuxValorBaseComissao,                
       StatusTransacao = 1                        
   Where Empresa=@Empresa                         
     and TipoControle=@TipoControle                         
     and CodControle=@CodControle  
     
     
GO     





Alter procedure [dbo].[Stored_Prut040]                              
@Empresa numeric(2),                              
@DataInicial datetime,                              
@DataFinal datetime                              
as                              
                              
                              
--Variaveis para passar para a StoredProcedure de calculo de comissao                              
Declare @AuxValor decimal(13,4)                              
Declare @InternoOK numeric(1)                              
Declare @ExternoOK numeric(1)                              
Declare @ParceiroOK numeric(1)                              
Declare @ValorInterno decimal(11,2)                              
Declare @ValorExterno decimal(11,2)                              
Declare @ValorParceiro decimal(11,2)                              
Declare @CodVendInterno int -- JALDO 206942 numeric(5)                              
Declare @CodVendExterno int -- JALDO 206942 numeric(5)                              
Declare @CodVendParceiro int -- JALDO 206942 numeric(5)                              
Declare @QtdTotal numeric(6)                              
Declare @MargemLucroLiquido decimal(5,2)                              
Declare @ValorLucroLiquido decimal(13,4)                              
Declare @FlagComissaoServico numeric(1)                            
                              
                              
--Variaveis que usa para acumular o valor da comissao quando é por itens                              
Declare @AuxCodProduto numeric(7)                              
Declare @AuxValorTotal decimal(13,4)                              
Declare @AuxValorInterno decimal(11,2)                              
Declare @AuxValorExterno decimal(11,2)                              
Declare @AuxValorParceiro decimal(11,2)                              
Declare @AuxCodLetraComissao char(5)                              
                              
Declare @MargemLucro decimal(5,2)                              
Declare @PrazoMedio numeric(5)                              
Declare @TipoMargemLucro numeric(1)                              
Declare @TipoPrecoProduto numeric(1)                              
                              
Declare @CodPedido numeric(9)                              
Declare @TipoControle numeric(1)                              
Declare @CodControle numeric(9)                              
Declare @CodDuplicata varchar(15)                              
Declare @TipoDuplicata smallint                              
Declare @FlagDevolucao smallint                              
--JALDO - CHAMADO 268462        
--Karina - 123971                          
--Declare @PercDesconto decimal(5,2)                          
Declare @PercDesconto decimal(8,4)        
Declare @CodEntidade char(7)                          
--Karina - 125025                          
Declare @PercDesconto1 decimal(5,2)                           
Declare @PercDesconto2 decimal(5,2)                           
Declare @PercDesconto3 decimal(5,2)                           
Declare @PercDesconto4 decimal(5,2)                           
Declare @PercDesconto5 decimal(5,2)                          
--Karina - 128025                        
Declare @RelacaoVendedores Numeric(1)                         
Declare @PrimeiraDuplicata Varchar(15)                         
Declare @ValorTotalNota    decimal(11,2)                         
Declare @ValorTituloDupl   decimal(11,2)                         
Declare @ValorIPI     decimal(11,2)                         
Declare @ValorFrete    decimal(11,2)                         
Declare @ValorICM          decimal(11,2)                         
Declare @ValorSubTrib    decimal(11,2)                         
Declare @ValorDespesas    decimal(11,2)                       
Declare @CodCondPagto     char(5)                            
Declare @FlagSomaIPI       Numeric(1)                       
Declare @FlagSomaFrete     Numeric(1)                      
Declare @FlagSomaICM       Numeric(1)                      
Declare @FlagSomaSubTrib   Numeric(1)                      
Declare @FlagSomaDespesas  Numeric(1)                      
Declare @ValoresAdicionais decimal(11,2)                       
--266574          
-- JALDO/RAFAEL - 197595           
--Declare @PercDescontoCondPagto decimal(5,2)          
Declare @PercDescontoCondPagto decimal(8,4)       
--279456      
Declare @ValorServicosTotal decimal(11,2)       
    
-- 304454    
--Renato - 292957      
--Declare @FlagMargemLiquidaGerencial numeric(1)    
Declare @TipoMargemLiquida numeric(1)        
    
/*VERSÃO 2.06: CHAMADO 304454*/       
                        
Select @TipoMargemLucro=TipoMargemLucro,                            
       @FlagComissaoServico=FlagComissaoServico,                        
       -- Karina - 128025                         
       @RelacaoVendedores = FlagTipoRelacaoVendedores                               
  From ParamControle                              
   Where Empresa=@Empresa    
        
--304454      
--Renato - 292957      
--Select @FlagMargemLiquidaGerencial = FlagMargemLiquidaGerencial    
Select @TipoMargemLiquida = TipoMargemLiquida        
From ConfiguracaoSistema                             
                              
--------------------------------------------------                              
--- RECALCULAR COMISSAO DOS PEDIDOS      ---------                              
--------------------------------------------------                              
Declare CursorPedido Cursor Local Fast_Forward For                              
  Select CodPedido                              
     From Pedidos                              
     Where Empresa=@Empresa                              
       and DataMovimento between @DataInicial and @DataFinal                              
       and TipoPedido <> 4  --(nao considera pedido de entrada)                              
Open CursorPedido                     
Fetch Next From CursorPedido into @CodPedido                              
While @@Fetch_status = 0                              
begin                              
    --Zera as variaveis de acumulo de comissão do pedido                              
  Set @AuxValorInterno = 0                              
  Set @AuxValorExterno = 0                              
  Set @AuxValorParceiro = 0                              
    --Karina - 128025                          
  Select           
    @AuxValorTotal = Case When @RelacaoVendedores = 0          
   Then (min(Ped.ValorProdutos + Ped.ValorServicos - Ped.ValorDesconto - Ped.ValorDescontoServicos))                        
   When @RelacaoVendedores = 1                        
   Then (min(Ped.ValorTotalPedido))                        
     end,                              
           @CodVendInterno = min(Ped.CodVendInterno),                              
           @CodVendExterno = min(Ped.CodVendExterno),                              
           @CodVendParceiro = min(Ped.CodVendParceiro),                              
--251897           @MargemLucro = Dbo.CalculaMargem(@Empresa,                               
           @MargemLucro = Dbo.CalculaMargemLucro(@Empresa, @TipoMargemLucro,          
                             (Case When @TipoMargemLucro = 0 then min(Ped.ValorCustoForTotal)                              
--251897                                  When @TipoMargemLucro = 1 then min(VP.ValorCustoFor)                              
--251897                                  When @TipoMargemLucro = 2 then min(VP.ValorCustoFor) End,                              
                                  When @TipoMargemLucro = 1 then min(Ped.ValorCustoUltTotal)          
                                  When @TipoMargemLucro = 2 then min(Ped.ValorCustoMedTotal) End) + min(Ped.ValorCustoSerTotal),          
--251897                             (min(Ped.ValorProdutos) - min(Ped.ValorDesconto))),                              
                             min(Ped.ValorProdutos)+min(Ped.ValorServicos)-min(Ped.ValorDesconto)-min(Ped.ValorDescontoServicos),          
                             min(Ped.ValorProdutosSemImpostos)+min(Ped.ValorServicos)-min(Ped.ValorDescontoServicos),          
                             min(Ped.ValorICM)),          
           @PrazoMedio = min(Ped.PrazoMedio),         
           -- Renato - 278668                           
         /*  @MargemLucroLiquido= Dbo.CalculaLucroLiquido(Sum(Mov.QuantAtendida * Mov.ValorCustoUltReal),                              
              Sum(Mov.QuantAtendida * Mov.ValorUnitario), Sum(Mov.QuantAtendida * Mov.ValorUnitario * Mov.FatorRedVenda)),                              
           @ValorLucroLiquido = Case When (sum(Mov.QuantAtendida * Mov.ValorUnitario * Mov.FatorRedVenda)) > Sum(Mov.QuantAtendida * Mov.ValorCustoUltReal)                              
              Then (Sum(Mov.QuantAtendida * Mov.ValorUnitario * Mov.FatorRedVenda) - Sum(Mov.QuantAtendida * Mov.ValorCustoUltReal)) */      
               
           --304454        
           --@MargemLucroLiquido = Dbo.CalculaLucroLiquido(Sum(Mov.QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0    
           @MargemLucroLiquido = Dbo.CalculaLucroLiquido(Sum(Mov.QuantAtendida * (Case When @TipoMargemLiquida = 0          
                                                                                       Then Mov.ValorCustoUltReal       
                                                                                       Else (Mov.ValorCustoFor * Mov.FatorRedCusto) End)),                              
                                                         Sum(Mov.QuantAtendida * Mov.ValorUnitario),       
                                                         Sum(Mov.QuantAtendida * Mov.ValorUnitario * Mov.FatorRedVenda)),                              
                 
           @ValorLucroLiquido = Case When (Sum(Mov.QuantAtendida * Mov.ValorUnitario * Mov.FatorRedVenda)) >    
                                           --304454      
                                           --Sum(Mov.QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0    
                                           Sum(Mov.QuantAtendida * (Case When @TipoMargemLiquida = 0            
                                                                         Then Mov.ValorCustoUltReal       
                                                                         Else (Mov.ValorCustoFor * Mov.FatorRedCusto) End))                              
                                     Then (Sum(Mov.QuantAtendida * Mov.ValorUnitario * Mov.FatorRedVenda) -    
                                           --304454       
                                           --Sum(Mov.QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0    
                                          Sum(Mov.QuantAtendida * (Case When @TipoMargemLiquida = 0         
                                                                         Then Mov.ValorCustoUltReal       
                                                                         Else (Mov.ValorCustoFor * Mov.FatorRedCusto) End)))                               
                                     Else 0 End,       
                         
    @CodEntidade = Min(Ped.CodEntidade)          
    --JALDO/RAFAEL - 197595              
   ,@PercDescontoCondPagto = Max(Mov.PercDescontoCondPagto),      
     --279456      
     @ValorServicosTotal = Min(Ped.ValorServicos - Ped.ValorDescontoServicos)     
    
    --319353
    ,@AuxCodLetraComissao = ( Select Top 1  mov2.CodLetraComissao 
                              from Movestoque mov2
                              Where  Mov2.Empresa = @Empresa 
                                 and Mov2.CodPedido=@CodPedido   
                                 and mov2.CodLetraComissao <> ''                           
                             ) 
  From Pedidos Ped                              
--251897     Left Join ViewPedidos VP on VP.Empresa = @Empresa and VP.CodPedido=@CodPedido                              
             Left Join MovEstoque Mov on Mov.Empresa = @Empresa and Mov.CodPedido=@CodPedido                              
           Where Ped.Empresa=@Empresa                             
             and Ped.CodPedido=@CodPedido                              
             and ((Mov.CodProduto = 8888888 and @FlagComissaoServico = 1) or (Mov.CodProduto <> 8888888))                              
                              
    --Verifica se existem comissoes calculadas sobre o valor do pedido.                              
    Select @InternoOK=InternoOK, @ExternoOK=ExternoOK, @ParceiroOK=ParceiroOK,                              
           @ValorInterno=ValorInterno, @ValorExterno=ValorExterno, @ValorParceiro=ValorParceiro                              
       From dbo.Calcular_Comissao(@Empresa, 2, @CodVendInterno, @CodVendExterno,                               
            @CodVendParceiro, null, @AuxValorTotal, @AuxCodLetraComissao,                               
            @MargemLucro, @PrazoMedio, 0,                              
            @MargemLucroLiquido, @ValorLucroLiquido, 0,0,0,0,0,0,@CodEntidade          
            --JALDO/RAFAEL - 197595          
            ,@PercDescontoCondPagto,      
            --279456      
            @ValorServicosTotal)                              
                  
    If @InternoOK = 1                              
       Set @AuxValorInterno = @ValorInterno                              
    If @ExternoOK = 1                              
       Set @AuxValorExterno = @ValorExterno                              
    If @ParceiroOK = 1                              
       Set @AuxValorParceiro = @ValorParceiro                              
                              
                
    Declare CursorItens Cursor Local Fast_Forward For                              
       Select CodProduto, ValorTotal, CodLetraComissao,                              
/*251897      Dbo.CalculaMargem(@Empresa,                   
              Case When @TipoMargemLucro = 0 Then (ValorCustoFor * FatorRedCusto)                              
                   When @TipoMargemLucro = 1 Then (ValorCustoUlt * FatorRedCusto)                              
                   When @TipoMargemLucro = 2 Then (ValorCustoMed) End,                             
                   ValorUnitario) as MargemLucro,                    */          
              Dbo.CalculaMargemLucro(@Empresa, @TipoMargemLucro,          
                (Case When @TipoMargemLucro = 0 Then (ValorCustoFor * FatorRedCusto)                              
                    When @TipoMargemLucro = 1 Then (ValorCustoUlt * FatorRedCusto)                              
                    When @TipoMargemLucro = 2 Then (ValorCustoMed) End) * QuantAtendida,                             
                ValorUnitario * QuantAtendida,          
                QuantAtendida * ValorUnitario * FatorRedVenda,                            
                ((ValorBaseICM*AliqICM)/100)) as MargemLucro,                              
             -- Renato - 278668      
             /* Dbo.CalculaLucroLiquido((QuantAtendida * ValorCustoUltReal),                              
                  (QuantAtendida * ValorUnitario), (QuantAtendida * ValorUnitario * FatorRedVenda))                               
           as MargemLucroLiquido,                              
              Case When (QuantAtendida * ValorUnitario * FatorRedVenda) > (QuantAtendida * ValorCustoUltReal)                              
                   Then ((QuantAtendida * ValorUnitario * FatorRedVenda) - (QuantAtendida * ValorCustoUltReal))                              
                Else 0 End as ValorLucroLiquido, */      
    
              --304454    
              --Dbo.CalculaLucroLiquido((QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0     
                Dbo.CalculaLucroLiquido((QuantAtendida * (Case When @TipoMargemLiquida = 0          
                                                             Then ValorCustoUltReal       
                                                             Else (ValorCustoFor * FatorRedCusto) End)),                              
                  (QuantAtendida * ValorUnitario), (QuantAtendida * ValorUnitario * FatorRedVenda)) as MargemLucroLiquido,       
                  
              --304454               
 --Case When (QuantAtendida * ValorUnitario * FatorRedVenda) > (QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0    
               Case When (QuantAtendida * ValorUnitario * FatorRedVenda) > (QuantAtendida * (Case When @TipoMargemLiquida = 0           
                                                                                                 Then ValorCustoUltReal       
                              Else (ValorCustoFor * FatorRedCusto) End))                              
                   --304454    
                    --Then ((QuantAtendida * ValorUnitario * FatorRedVenda) - (QuantAtendida * (Case When @FlagMargemLiquidaGerencial = 0    
                    Then ((QuantAtendida * ValorUnitario * FatorRedVenda) - (QuantAtendida * (Case When @TipoMargemLiquida = 0          
                                                                                                  Then ValorCustoUltReal       
                                                                                                  Else (ValorCustoFor * FatorRedCusto) End)))                              
                   Else 0 End as ValorLucroLiquido,      
                             
              TipoPrecoProduto, PercDesconto, PercDesconto1, PercDesconto2, PercDesconto3, PercDesconto4,                           
       PercDesconto5, CodEntidade                              
       --JALDO/RAFAEL - 197595          
      ,PercDescontoCondPagto          
         From MovEstoque                              
         Where Empresa=@Empresa and CodPedido=@CodPedido                              
    Open CursorItens                              
    Fetch Next From CursorItens Into @AuxCodProduto, @AuxValorTotal, @AuxCodLetraComissao,                               
              @MargemLucro, @MargemLucroLiquido, @ValorLucroLiquido, @TipoPrecoProduto,                           
       @PercDesconto, @PercDesconto1, @PercDesconto2, @PercDesconto3, @PercDesconto4,                           
       @PercDesconto5, @CodEntidade                             
       --JALDO/RAFAEL - 197595          
      ,@PercDescontoCondPagto          
    While @@Fetch_Status = 0                              
    begin                              
      Select @InternoOK=InternoOK, @ExternoOK=ExternoOK, @ParceiroOK=ParceiroOK,                              
             @ValorInterno=ValorInterno, @ValorExterno=ValorExterno, @ValorParceiro=ValorParceiro                              
        From dbo.Calcular_Comissao(@Empresa, 1, @CodVendInterno, @CodVendExterno,                               
                @CodVendParceiro, @AuxCodProduto, @AuxValorTotal, @AuxCodLetraComissao, @MargemLucro,                               
                @PrazoMedio, @TipoPrecoProduto,                              
                @MargemLucroLiquido, @ValorLucroLiquido,@PercDesconto, @PercDesconto1, @PercDesconto2, @PercDesconto3,                           
  @PercDesconto4, @PercDesconto5, @CodEntidade          
  --JALDO/RAFAEL - 197595          
 ,@PercDescontoCondPagto, 0)          
      If @InternoOK = 1                              
         Set @AuxValorInterno = @AuxValorInterno + @ValorInterno                              
      If @ExternoOK = 1                              
         Set @AuxValorExterno = @AuxValorExterno + @ValorExterno                              
      If @ParceiroOK = 1                              
         Set @AuxValorParceiro = @AuxValorParceiro + @ValorParceiro                              
      Fetch Next From CursorItens Into @AuxCodProduto, @AuxValorTotal, @AuxCodLetraComissao,                               
            @MargemLucro, @MargemLucroLiquido, @ValorLucroLiquido, @TipoPrecoProduto, @PercDesconto, @PercDesconto1,                           
            @PercDesconto2, @PercDesconto3, @PercDesconto4, @PercDesconto5, @CodEntidade                                 
            --JALDO/RAFAEL - 197595          
           ,@PercDescontoCondPagto          
    end                       
    Close CursorItens                              
    Deallocate CursorItens                              
                              
    --Altera as Comissões no Pedido                              
    Update Pedidos                              
       Set ValorComissInterno = @AuxValorInterno,                              
           ValorComissExterno = @AuxValorExterno,                              
           ValorComissParceiro = @AuxValorParceiro                     
       Where Empresa=@Empresa and CodPedido=@CodPedido                              
                              
    Fetch Next From CursorPedido into @CodPedido                              
  End                              
                              
                              
--------------------------------------------------                              
--- RECALCULAR COMISSAO DA NOTA FISCAL   ---------                              
--------------------------------------------------                              
Declare CursorNota Cursor Local Fast_Forward For                              
  Select NF.TipoControle, NF.CodControle,                              
         Case IsNull(Op.TipoMovimento,0) When 1 then 1 else 0 end,                      
  ValorTotalNota, ValorIPI, ValorFrete, ValorICM, ValorSubTrib, ValorDespesas,                      
  CodCondPagto                               
  From NotasFiscais NF                              
    Left Join Operacoes Op on Op.Codigo = NF.CodOperacao                              
  Where NF.Empresa=@Empresa                              
    and NF.DataMovimento between @DataInicial and @DataFinal                              
and (NF.TipoControle = 2 --Somente notas de saida                              
 or (NF.TipoControle = 1 and IsNull(Op.TipoMovimento,0) = 1))                              
Open CursorNota                              
Fetch Next From CursorNota into @TipoControle, @CodControle, @FlagDevolucao, @ValorTotalNota,                      
      @ValorIPI, @ValorFrete, @ValorICM, @ValorSubTrib, @ValorDespesas,                      
           @CodCondPagto                      
While @@Fetch_status = 0                              
begin                      
    Set @ValoresAdicionais = 0                      
                      
    --Karina - 125968                      
    if (@RelacaoVendedores = 0)                      
    begin                      
      Select @FlagSomaIPI = FlagSomaIPI, @FlagSomaFrete = FlagSomaFrete,                      
      @FlagSomaICM = FlagSomaICM, @FlagSomaSubTrib = FlagSomaSubTrib,                      
      @FlagSomaDespesas = FlagSomaDespesas                      
      From CondPagto                      
      where Codigo = @CodCondPagto                      
                          
      if @FlagSomaIPI = 1                       
        Set @ValoresAdicionais = @ValoresAdicionais + @ValorIPI                      
      if @FlagSomaFrete = 1                       
        Set @ValoresAdicionais = @ValoresAdicionais + @ValorFrete                      
      if @FlagSomaICM = 1                       
        Set @ValoresAdicionais = @ValoresAdicionais + @ValorICM                       
      if @FlagSomaSubTrib = 1                      
        Set @ValoresAdicionais = @ValoresAdicionais + @ValorSubTrib                          
      if @FlagSomaDespesas = 1                       
        Set @ValoresAdicionais = @ValoresAdicionais + @ValorDespesas                           
                      
      Set @ValorTotalNota = @ValorTotalNota - @ValoresAdicionais                       
    end                             
                      
                              
  -- se for devolução, tem que inverter o controle para referenciar o tipoduplicata                              
    Set @TipoDuplicata = Case @FlagDevolucao                               
                           When 1 Then Case @TipoControle when 1 then 2 else 1 end             
                           Else @TipoControle                              
            End                               
                              
    --Calcula a Comissao da Nota Fiscal                              
    Exec Stored_Prft110Comissao @Empresa, @TipoControle, @CodControle                              
                          
    --Karina -125968                       
    Set @PrimeiraDuplicata = ''                      
                      
    --Calcula a Comissao das Duplicatas da nota                              
    Declare CursorDup Cursor Local Fast_Forward For                     
       Select CodDuplicata,                               
            (Select Count(*) From Duplicatas                              
              Where Empresa=@Empresa                               
                and TipoControle =@TipoControle                              
                and TipoDuplicata=@TipoDuplicata                              
                and CodControle=@CodControle) as QtdTotal, ValorTitulo                              
         From Duplicatas                              
         Where Empresa=@Empresa                               
           and TipoDuplicata=@TipoDuplicata                              
           and TipoControle =@TipoControle                              
           and CodControle=@CodControle                              
    Open CursorDup                              
    Fetch Next From CursorDup into @CodDuplicata, @QtdTotal, @ValorTituloDupl                              
    While @@fetch_Status = 0                              
       begin                        
         if (@PrimeiraDuplicata = '')                       
         begin                      
           if (@RelacaoVendedores = 0)                      
             Set @ValorTituloDupl = @ValorTituloDupl - (@ValoresAdicionais * Case @FlagDevolucao When 1 then -1 Else 1 End)                      
                      
       Set @PrimeiraDuplicata = @CodDuplicata                            
         end                      
                              
         --Calculo da Comissao da Duplicata                              
         Update Duplicatas                              
            --Karina 125968                      
            Set ValorComissaoInterno = case @ValorTotalNota when 0 then 0 else        
            -- Rafael chamado 252414      
            --  isnull(((@ValorTituloDupl / @ValorTotalNota) * ((N.ValorComissaoInterno *        
                   isnull((( Abs(@ValorTituloDupl) / @ValorTotalNota) * ((N.ValorComissaoInterno *                    
                   (Select AliqComissaoDup From Vendedores Where Codigo=N.CodVendInterno)) / 100)),0)                             
                                         * Case @FlagDevolucao When 1 Then -1 Else 1 End End,                                
                      
                ValorComissaoExterno = case @ValorTotalNota when 0 then 0 else              
                   --Rafael chamado 252414        
                   -- isnull(((@ValorTituloDupl / @ValorTotalNota) * ((N.ValorComissaoExterno *       
                   isnull(((Abs( @ValorTituloDupl) / @ValorTotalNota) * ((N.ValorComissaoExterno *                                     
                   (Select AliqComissaoDup From Vendedores Where Codigo=N.CodVendExterno)) / 100)),0)                             
                                         * Case @FlagDevolucao When 1 Then -1 Else 1 End End,                       
                                 
                ValorComissaoParceiro = case @ValorTotalNota when 0 then 0 else       
                --Rafael chamado 252414         
                --   isnull(((@ValorTituloDupl / @ValorTotalNota) * ((N.ValorComissaoParceiro *       
                   isnull(((Abs(@ValorTituloDupl) / @ValorTotalNota) * ((N.ValorComissaoParceiro *       
                   (Select AliqComissaoDup From Vendedores Where Codigo=N.CodVendParceiro)) / 100)),0)                             
                                         * Case @FlagDevolucao When 1 Then -1 Else 1 End End,                  
               --133864                      
                ValorBaseComissao = case @ValorTotalNota when 0 then 0 else              
                   Abs((@ValorTituloDupl / @ValorTotalNota) * (N.ValorBaseComissao)) End              
            From Duplicatas D                              
            Left Join NotasFiscais N on N.Empresa = @Empresa and N.TipoControle = @TipoControle and N.CodControle=@CodControle                              
            Where D.Empresa=@Empresa and D.TipoDuplicata=@TipoDuplicata and D.CodDuplicata=@CodDuplicata                              
                                            
         Fetch Next From CursorDup into @CodDuplicata, @QtdTotal, @ValorTituloDupl                               
       end                              
    Close CursorDup                              
    Deallocate CursorDup                          
                      
    /* Karina - 125968 - Calculando a Diferença entre a comissão da Nota Fiscal e o Total de Comissão das Duplicatas */                      
    Update Duplicatas Set                   
      ValorComissaoInterno = D.ValorComissaoInterno + Isnull(((N.ValorComissaoInterno * Case @FlagDevolucao When 1 Then -1 Else 1 End) -                       
            (Select Sum(Dupl.ValorComissaoInterno)                       
             From Duplicatas Dupl where Dupl.Empresa=@Empresa and Dupl.TipoDuplicata=@TipoDuplicata and                       
                   Dupl.TipoControle = @TipoControle and Dupl.CodControle=@CodControle )),0),                                
                      
      ValorComissaoExterno = D.ValorComissaoExterno + Isnull(((N.ValorComissaoExterno * Case @FlagDevolucao When 1 Then -1 Else 1 End) -                       
            (Select Sum(Dupl.ValorComissaoExterno)                       
             From Duplicatas Dupl where Dupl.Empresa=@Empresa and Dupl.TipoDuplicata=@TipoDuplicata and                       
                   Dupl.TipoControle = @TipoControle and Dupl.CodControle=@CodControle )),0),                                 
                                 
      ValorComissaoParceiro = D.ValorComissaoParceiro + Isnull(((N.ValorComissaoParceiro * Case @FlagDevolucao When 1 Then -1 Else 1 End) -                       
            (Select Sum(Dupl.ValorComissaoParceiro)                       
             From Duplicatas Dupl where Dupl.Empresa=@Empresa and Dupl.TipoDuplicata=@TipoDuplicata and                
                   Dupl.TipoControle = @TipoControle and Dupl.CodControle=@CodControle )),0),                  
                      
      --133864                
      ValorBaseComissao = D.ValorBaseComissao + Abs(Isnull(((N.ValorBaseComissao) -                                 
                   (Select Sum(Dupl.ValorBaseComissao)                                 
                    From Duplicatas Dupl where Dupl.Empresa=@Empresa and Dupl.TipoDuplicata=@TipoDuplicata and                                 
                      Dupl.TipoControle = @TipoControle and Dupl.CodControle=@CodControle )),0))                      
    From Duplicatas D                              
       Left Join NotasFiscais N on N.Empresa = @Empresa and N.TipoControle = @TipoControle and N.CodControle=@CodControle                              
    Where D.Empresa=@Empresa and D.TipoDuplicata=@TipoDuplicata and D.CodDuplicata=@PrimeiraDuplicata and                      
      (D.ValorComissaoInterno <> 0 and D.ValorComissaoExterno <> 0 and D.ValorComissaoParceiro <> 0)                          
                              
                              
   --Subtrai a comissao da duplicata da comissao da nota                              
   Update NotasFiscais                              
 Set ValorComissaoInterno = ValorComissaoInterno -                               
              ((ValorComissaoInterno * isnull((Select AliqComissaoDup From Vendedores Where Codigo=CodVendInterno),0)) / 100),                              
          ValorComissaoExterno = ValorComissaoExterno -                               
                                ((ValorComissaoExterno * isnull((Select AliqComissaoDup From Vendedores Where Codigo=CodVendExterno),0)) / 100),                              
          ValorComissaoParceiro = ValorComissaoParceiro -                               
                                ((ValorComissaoParceiro * isnull((Select AliqComissaoDup From Vendedores Where Codigo=CodVendParceiro),0)) / 100)                              
      Where Empresa=@Empresa                              
        and TipoControle=@TipoControle          
        and CodControle=@CodControle                      
        and ((Select AliqComissaoDup From Vendedores Where Codigo=CodVendInterno) not in(0,100) or                              
             (Select AliqComissaoDup From Vendedores Where Codigo=CodVendExterno) not in(0,100) or                              
             (Select AliqComissaoDup From Vendedores Where Codigo=CodVendParceiro) not in(0,100))                              
                              
    Fetch Next From CursorNota into @TipoControle, @CodControle, @FlagDevolucao, @ValorTotalNota,                      
            @ValorIPI, @ValorFrete, @ValorICM, @ValorSubTrib, @ValorDespesas,                      
               @CodCondPagto                            
  end                              
Close CursorNota                              
Deallocate CursorNota  



GO


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

sp_bindefault 'dbo.Numero', 'Trocas.TipoBloqueado' 
go
   
update trocas set
TipoBloqueado= 0
where
TipoBloqueado is null
go


alter table trocas  alter column TipoBloqueado Smallint   not null
go


if not exists (Select * from sysobjects where name like 'liScript')
begin
	Create Table liScript(
	  IdScript int not null,
	  NomeScript varchar(200) collate Latin1_General_CI_AS not null ,
	  FlagInativo smallint not null,
	  DiaInicio smallint not null,
	  DiasRepeticao smallint not null,
	  VersaoMinima smallint not null,
	  FlagUltimaExecucao smallint not null,
	  DataUltimaExecucao DateTime,
	  StatusTransacao smallint not null,
	  TransacaoEmpresas varchar(50) collate Latin1_General_CI_AS not null)
end	  
GO  
  
exec sp_bindefault 'dbo.caracter', 'liScript.NomeScript'
exec sp_bindefault 'dbo.numero', 'liScript.FlagInativo'
exec sp_bindefault 'dbo.numero', 'liScript.DiaInicio'
exec sp_bindefault 'dbo.numero', 'liScript.DiasRepeticao'
exec sp_bindefault 'dbo.numero', 'liScript.VersaoMinima'
exec sp_bindefault 'dbo.numero', 'liScript.FlagUltimaExecucao'
exec sp_bindefault 'dbo.numero', 'liScript.StatusTransacao'
exec sp_bindefault 'dbo.caracter', 'liScript.TransacaoEmpresas'
GO

if not exists (Select * from sysobjects where name like 'Pk_liScript')
  Alter Table liScript add constraint Pk_liScript 
       primary key (IdScript)
GO



if not exists (Select * from sysobjects where name like 'liScriptComando')
begin
	Create Table liScriptComando(
	  IdScript int not null,
	  IdComando int not null,
	  NomeComando varchar(200) collate Latin1_General_CI_AS not null ,
	  Ordem smallint not null,
	  ComandoSQL NText collate Latin1_General_CI_AS not null ,
	  FiltroSQL NText  collate Latin1_General_CI_AS not null ,
	  TipoRetorno smallint not null,
	  FlagInativo smallint not null,
	  StatusTransacao smallint not null,
	  TransacaoEmpresas varchar(50) collate Latin1_General_CI_AS not null)
end
GO

exec sp_bindefault 'dbo.caracter', 'liScriptComando.NomeComando'
exec sp_bindefault 'dbo.numero', 'liScriptComando.Ordem'
exec sp_bindefault 'dbo.caracter', 'liScriptComando.ComandoSQL'
exec sp_bindefault 'dbo.caracter', 'liScriptComando.FiltroSQL'
exec sp_bindefault 'dbo.caracter', 'liScriptComando.TipoRetorno'
exec sp_bindefault 'dbo.caracter', 'liScriptComando.FlagInativo'
exec sp_bindefault 'dbo.numero', 'liScriptComando.StatusTransacao'
exec sp_bindefault 'dbo.caracter', 'liScriptComando.TransacaoEmpresas'
GO



if not exists (Select * from sysobjects where name like 'Pk_liScriptComando')
  Alter Table liScriptComando add constraint Pk_liScriptComando 
      primary key (IdScript, idComando)
GO


if not exists (Select * from sysobjects where name like 'liScriptLog')
begin
	Create Table liScriptLog(
	  DataExecucao DateTime not null,
	  IdScript	smallint not null,
	  IdComando smallint not null,
	  QuantResultado integer,
	  ResultadoXML ntext,
	  CodUsuario smallint,
	  MensagemErro varchar(4000) COllate Latin1_General_CI_As,
	  FlagAtuRsys smallint not null)
end
GO

exec sp_bindefault 'dbo.caracter', 'liScriptLog.FlagAtuRsys'
GO

if not exists (Select * from sysobjects where name like 'Pk_liScriptLog')
	Alter Table liScriptLog add constraint Pk_liScriptLog
		 primary key (DataExecucao, IdScript, IdComando)
GO


if not exists (Select * from sysindexes where name like 'liScriptLog1')
Create Index liScriptLog1 on liScriptLog (FlagAtuRsys)
GO

Alter table ItemPedidoCompra disable  trigger all

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

sp_bindefault 'dbo.Numero', 'ItemPedidoCompra.PesoLiquido' 
go
   
update ItemPedidoCompra set
PesoLiquido = 0
where
PesoLiquido is null
go


alter table ItemPedidoCompra  alter column PesoLiquido decimal(10,3)   not null
go







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

sp_bindefault 'dbo.Numero', 'TempPrpc100Itens.PesoLiquido' 
go
   
update TempPrpc100Itens set
PesoLiquido = 0
where
PesoLiquido is null
go


alter table TempPrpc100Itens  alter column PesoLiquido decimal(10,3)   not null
go

alter table ItemPedidoCompra enable  trigger all

go