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

--Ronaldo Chamado 398662
Alter procedure [dbo].[Stored_PRFT110Processar]                                    
--PASSAR OS PARAMETROS NUMERIC COMO "INT" POIS CASO CONTRARIO A STORED PROCEDRE DO DBEXPRESS RECONHECE                                                                                                                                                         
--O PARAMETRO COMO FLOAT E ENVIA UM VALOR ERRADO.                                                                                                                                                                      
--QDO. ALTERAR PARAMETROS DA PROC. NÃO ESQUECER DO PRG. PRCE100NOTA                                                                                                                                                                       
@Empresa int,                                                                                                                                                                      
@FlagCupom int,   --0 Nota, 1-Cupom, 2-Nota e Cupom                                                                                                                                                                      
@Ped_Sequencia int,                                                                                                                                                                      
@Venc_Sequencia int,                                                                                                                                                                      
@CodCondPagto char(5),                                                                                                                                                                      
@CodOperacao int,                                                                                            
@CodUsuario int,                                             
@CodBanco int,                                                                                                                                                                      
@CodOperacaoDup char(5),                                                                                                                                                                      
@CodVendInterno int,                                                                                                                                                                      
@CodVendExterno int,                                                                                                                                                                      
@FlagCustoMedio int,                                                                                                                                                                      
@SerieControle char(3),                                                                                                                                                                      
@FlagPrce100 int,                                                                                                                                                                    
@TipoDuplicataPedido int,                                                                                                                                                                  
@CodDepartamento varchar(9),                                                                                                                                                                  
@ObsCupom varchar(400),                                                                                                                                                        
@NumEquipamentoCF int,                                                  
@CodStatusPed int,            
--158510                       
@FlagSepararServico tinyint,                                                               
@SerieControleServico char(3),                                                                    
@CodOperacaoServico int,                              
--Rafael chamado 202157                              
@FlagUnirObservacao tinyint,                                                 
                                                     
@MensagemERRO varchar(400) Output                                            
as                                                       
/********************                                                       
-- VERSÃO 1.99                                                                         
********************/                                                                                
---declaração de variaveis auxiliares para o processamento                                                                                                                                                                                
declare @CodPedido numeric(9)                                                                                                                                
declare @TipoPedido numeric(1)                                                                                                    
declare @CodOs numeric(9)                                                                                                                                                                                                                                      
  
   
       
       
declare @TipoControle numeric(1)                                                                                      
declare @CodControle numeric(9)                                                                                                                           
declare @TipoDuplicata numeric(1)                                                                                                                                                               
declare @EmpresaEstoque numeric(2)                                                                                                                                                                      
Declare @CodTipoEstoque numeric(3)                                                                                                              
Declare @CodTipoEstoqueContra numeric(3)                                                                                                                                          
--MARCELO - CHAMADO 158510/199271                                                  
--Declare @PedCodControle numeric(9)                                                                                                                  
declare @AuxEmpresa numeric(2)                                                                                                                            
declare @AuxNumLancamento int                                                                                                                                                
declare @AuxCodProduto numeric(7)        
--341745                                                                                                                                                      
--declare @AuxCodEntidade char(7)                                                                                                                                                             
declare @AuxValorTotal decimal(11,2)                                                                                                                                                                     
declare @AuxPmvAcumulo decimal(11,2)                                                                              
declare @AuxPmvValores decimal(11,2)                                                                                                                
declare @AuxQuantAtendida decimal(10,3)                           
declare @Existe int                                                                                              
declare @NumDocumento numeric(6)                                                                                         
declare @SalvaNumDocumento numeric(6)                                                                 
--158510                                           
declare @SalvaNumDocumentoServico numeric(6)                                                          
declare @Especie char(3)                                                                                                                                                           
declare @FlagAtualizaDuplicata numeric(1)                                                                                        
declare @PrazoMedio numeric(3)                                                                    
Declare @DataMovimento DateTime                                                 
Declare @ClasseABC char(1)                                                                  
Declare @NumSerieECF varchar(20)                                                                      
--MARCELO - CHAMADO 158510/199271                                                                           
/*declare @SomaBaseICMItem decimal(11,2)                                                                                                                              
declare @SomaIsentoICMItem decimal(11,2)                                                                                                                                   
declare @SomaOutrasICMItem decimal(11,2)                                                                                                                         
declare @SomaContabilNota decimal(11,2)*/                                                  
--158510 declare @QuantNota int                                                                                          
--158510                                                                                          
declare @QuantNotaItem int                                                                                        
declare @QuantNotaServico int                                                                                          
declare @QuantNotaTOTAL int                                                                                          
declare @SerieControleCursor char(3)                                                                                        
declare @FlagServico int                                                                                        
declare @CodOperacaoCursor int                                                                                      
Declare @Resto float                                          
Declare @quantquebranota int                                                                                                                                                  
declare @ContadorItem int                                                                                                          
declare @ContadorNota int                                                                                                                                                                      
declare @EmpresaAntOS numeric(2)                                                                                                                                                     
declare @FlagMovEstoque numeric(1)                                                                                                               
declare @FlagDevolucao numeric(1)                                                                                                                                                                  
declare @FlagGerarDuplicata numeric(1)                                                                                                                                
--MARCELO - CHAMADO 158510/199271                 
--declare @FlagObrigaLancFiscais smallint                                                                               
--183245                                                               
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)                                                                                  
--196249                                                      
declare @AuxCodPedido int                                        
--MARCELO - CHAMADO 215809                                      
declare @ValorSTPedido decimal(18,4)                                                  
declare @ValorSTNota decimal(18,4)                                      
declare @DiaVencimentoST smallint                                      
declare @DataVencimentoDupST datetime                       
-- Renato  - Chamado 271880                  
Declare @TipoAtualizaDataMovEstoque smallint                   
--EDER RAMOS - Chamado 302201              
Declare @FlagNaoGerenciarNumDocumento smallint                 
--Gabriella - 301399            
Declare @EmpID varchar(15)                       
--341745                                                                                                                                                         
Declare @EntidadeNotaFiscal char(7)       
--Ronaldo chamado 346431      
Declare @CodTransp char(7)                    
        
Set @MensagemErro = ''                   
                  
-- Renato  - Chamado 271880                  
Select @TipoAtualizaDataMovEstoque = TipoAtualizaDataMovEstoque                  
From ConfiguracaoSistema             
            
--Gabriella - 301399            
Select @EmpId = Id From Empresas                                                            
Where Codigo = @Empresa                                                                                                                    
                                                                                                                        
Select                   
     @FlagGerarDuplicata = Par.FlagGerarDuplicata,                      
        --Rafael chamado 254456                      
       --@SalvaNumDocumento = isnull(ParSerie.UltimaNota,0)                      
       @SalvaNumDocumento = isnull(ParSeq.UltimaNota,0),                      
       @QuantQuebraNota =  Case When @FlagCupom = 1 then 99999  --Cupom Fiscal não precisa quebrar os itens                          
                                When ParSerie.QuantItemNota > 0 then Cast(ParSerie.QuantItemNota as Int)                           
                                Else 99999 end                                                     
From ParamControle Par                      
Left Join ParamControleSerie ParSerie on ParSerie.Empresa = @Empresa and ParSerie.Serie=@SerieControle                      
Left Join ParamControleSequencia ParSeq on ParSeq.Empresa = @Empresa and ParSeq.Serie=@SerieControle                      
                       
                                                                                    
where Par.Empresa=@Empresa                                                           
                                                 
--158510                                                                                        
if (@FlagSepararServico = 1)                                  
begin                          
  --Rafael chamado 254456                                          
  --Select @SalvaNumDocumentoServico = isnull(ParSerie.UltimaNota,0)                          
   Select @SalvaNumDocumentoServico = isnull(ParSeq.UltimaNota,0)              
 --   @FlagNaoGerenciarNumDocumento = ParSerie.FlagNaoGerenciarNumDocumento                                                                                                 
  From ParamControle Par                          
   --EDER RAMOS 304095                                                                             
    --Left Join ParamControleSerie ParSerie on ParSerie.Empresa = @Empresa              
 --         and ParSerie.Serie = @SerieControleServico                         
     Left Join ParamControleSequencia ParSeq on ParSeq.Empresa = @Empresa                                                                          
      and ParSeq.Serie = @SerieControleServico                                                                                        
  where Par.Empresa = @Empresa                                                       
end                                                                                       
                                                                                        
                                                                                                      
if @FlagGerarDuplicata Is Null                                                                               
begin                                                                                                                                                              
  Set @MensagemErro = 'Não Existe Parâmetro de Controle Cadastrado!'                                                                                                                                                             
  Return                                                                                                                                                                      
end                                                                                                         
                                                                                        
If (@FlagPrce100 = 0) and                                                                                      
   (Exists(select TItem.CodPedido                        
             from TempPrft110Pedido TPed                        
             Left Join TempPrce100Itens TItem on TItem.Empresa = TPed.Empresa                        
                                             and TItem.CodPedido = TPed.CodPedido                        
            where TPed.Empresa=@Empresa                        
              and TPed.NumSequencia = @Ped_Sequencia                        
              and TItem.CodPedido is not null))                                                                                                                           
begin                                                                                                                                                    
  Set @MensagemErro = 'Existem Pedidos em uso e não podem ser processados!'                                                                                                                                                  
  Return                                                                                         
end                                                                        
                                                                                                                                                  
If Exists(Select T.Empresa                                                         
            From TempPrft110Pedido T, Pedidos P                                                                                                                                                  
Where T.Empresa=@Empresa                                                             
             and T.NumSequencia = @Ped_Sequencia                                                                                               
             and P.Empresa = T.Empresa                                                                                 
          and P.CodPedido = T.CodPedido                                                               
          --MARCELO - CHAMADO 204207                                      
          and P.FlagProcessar = 2                                                
        and P.StatusNota <> 0)                    
begin                                                                                                                            
  Set @MensagemErro = 'Existem Pedidos faturados e não podem ser processados novamente!'                                                  
  Return                                                                                                                                      
end                                                                                                                                  
                                                                                                
                                                                          
/* Não permitir que seja informada operaçõe para serviços com parâmetros diferentes                                                                                        
   da operação fiscal principal de produtos*/                                                                                        
--158510                                                  
if (@FlagSepararServico = 1) and                                                                                         
    Exists(Select                                                                        
        OpItem.Codigo                                                                                        
From Operacoes OpItem                                                                                        
        Left Join Operacoes OpServ on OpServ.Codigo = @CodOperacaoServico                                                                                        
      Where                                                                              
        OpItem.Codigo = @CodOperacao                                                                                        
     and                                                                                         
          (OpItem.TipoBaixaEstoquePedido <> OpServ.TipoBaixaEstoquePedido                                                                           
        or OpItem.TipoMovimento <> OpServ.TipoMovimento                                                                          
           or OpItem.CodTipoEstoque <> OpServ.CodTipoEstoque                                                                                        
           or OpItem.CodTipoEstoqueContra <> OpServ.CodTipoEstoqueContra                                                                                        
           or OpItem.TipoDuplicataPedido <> OpServ.TipoDuplicataPedido))                                                                                      
begin                                                                                        
  Set @MensagemErro = 'As configurações da operação fiscal para a Nota Fiscal de Produtos'+Char(13)+                                                                                        
                      'estão diferentes da operação fiscal para a Nota Fiscal de Serviços.'+Char(13)+                                                                                        
                      'Verifique os seguintes campos: Tipo de Movimento, Controle de Baixa de Estoque,'+Char(13)+                                                                                        
                      'Geração de Duplicatas e Detalhamento do Estoque.'                                                                                          
  Return                                                                                             
end                                                                        
                                                                                        
                                                                                                                                                                   
--Limpa os dados da tabela temporaria de nota                                                                                                                   
Delete From TempPrft110Nota Where NumSequencia = @Ped_Sequencia                                      
                                                                                                                                                                      
Set @EmpresaEstoque = (Select EmpresaEstoque From Empresas Where Codigo=@Empresa)                                                                                                          
                                                                                                
                                                                                                                                              
---Pega os Dados do Primeiro Pedido mais antigo que vai processar                                 
Select Top 1 @CodPedido = TempPrft110Pedido.CodPedido,                                                                                       
             @TipoPedido = Pedidos.TipoPedido,                                                                                                                           
             @CodOS = Pedidos.CodOs,                                                             
             @EmpresaAntOS = Pedidos.EmpresaOS,        
             --341745                                                                                                             
             @EntidadeNotaFiscal = Case when isnull(OrdemServico.CodEntidadeNF,'') ='' then Pedidos.CodEntidade         
                                   else OrdemServico.CodEntidadeNF end          
        from TempPrft110Pedido                                                                                                                                                      
        left Join Pedidos On Pedidos.Empresa = TempPrft110Pedido.Empresa and Pedidos.CodPedido = TempPrft110Pedido.CodPedido         
        --341745         
        Left Join OrdemServico On OrdemServico.Codigo = Pedidos.CodOS and OrdemServico.Empresa = Pedidos.EmpresaOS                                                                                                                    
                
        where NumSequencia = @Ped_Sequencia                                                                                                                                                                   
        order By Pedidos.CodOS Desc, TempPrft110Pedido.DataMovimento Desc, TempPrft110Pedido.CodPedido Desc                                                                                                                                                   
  
    
      
        
          
--Ronaldo Chamado 346431      
Declare CursorTranspPedido Cursor Local Fast_Forward for        
  Select Pedidos.codtransp from TempPrft110Pedido      
  left Join Pedidos On Pedidos.Empresa = TempPrft110Pedido.Empresa and Pedidos.CodPedido = TempPrft110Pedido.CodPedido       
  Left Join OrdemServico On OrdemServico.Codigo = Pedidos.CodOS and OrdemServico.Empresa = Pedidos.EmpresaOS                                                                                                                  
  where NumSequencia = @Ped_Sequencia                                                                                                                                                                 
  order By Pedidos.CodOS Desc, TempPrft110Pedido.DataMovimento Desc, TempPrft110Pedido.CodPedido Desc      
Open CursorTranspPedido                                       
Fetch Next From CursorTranspPedido Into @CodTransp                                              
While @@Fetch_Status = 0                                                                                                               
begin       
 if @CodTransp <> ''      
   break      
      
 Fetch Next From CursorTranspPedido Into @CodTransp                                          
end                                                                       
Close CursorTranspPedido                                                                                                          
Deallocate CursorTranspPedido             
                                                       
                                                               
--verifica se existem pedidos de empresa diferente para regravar as empresas                                                                      
Set @Existe = null                      
select Top 1 @Existe = CodPedido                      
  From TempPrft110Pedido                                                                        
 Where NumSequencia = @Ped_Sequencia                                                                                                       
   and Empresa <> @Empresa                                                                                                                                                                      
                                                                                                                   
If (@Existe is not null)                      
begin                                        
  Declare CursorEmp Cursor Local Fast_Forward for                                                                                                                            
    Select Empresa, CodPedido                                                                                                                                                       
      From TempPrft110Pedido                                                                                                                                                                      
     Where NumSequencia = @Ped_Sequencia                                                                                                                                                                        
       and Empresa <> @Empresa                                                                                                                                                                      
  Open CursorEmp                                          
  Fetch Next From CursorEmp Into @AuxEmpresa, @AuxCodPedido                                                      
  While @@Fetch_Status = 0                                                                                                                 
  begin                                    
    --Atualiza a Empresa dos itens dos Pedidos                                                                                                                                                      
    Update MovEstoque                                                                                                                                                                      
       Set Empresa=@Empresa,                              
           StatusTransacao=1                                                                                                                      
     where Empresa = @AuxEmpresa                                                                                                                                                                      
       and CodPedido = @AuxCodPedido                                                      
       and Empresa<>@Empresa                                             
                                                                                                                                                   
    --Atualiza a Empresa dos Pedidos                 
    Update Pedidos                                                                                                                                             
       Set Empresa=@Empresa,                                                                                                                                       
           StatusTransacao=1                                                                                                                             
     where Empresa = @AuxEmpresa                                                    
       and CodPedido = @AuxCodPedido                                                      
   and Empresa<>@Empresa                                                                                
                                                              
    --Atualiza a Empresa dos Vencimentos do Pedido                                                                                                                              
    Update VencPedido                                                                                                         
       Set Empresa=@Empresa,                                                                                                                                          
           StatusTransacao=1                                                                                                                                                  
     where Empresa = @AuxEmpresa                                                                                                                                                                      
       and CodPedido = @AuxCodPedido                                                      
       and Empresa<>@Empresa                                                                                                                                  
                                                                    
    --Atualiza a Empresa das Embalagens do Pedido                                                                                                                                                            
    Update EmbalagemPedido                                                                                                                                                                      
    Set Empresa=@Empresa,                                                                                            
           StatusTransacao=1                                                                                                             
     where Empresa = @AuxEmpresa                                     
       and CodPedido = @AuxCodPedido                                                      
       and Empresa<>@Empresa                                               
                                                                                                       
    --Atualiza a Empresa das Observações do Pedido                                                                                                                                                                      
    Update ObsPedidos                      
       Set Empresa=@Empresa,                                                                                           
           StatusTransacao=1                                                                                                     
     where Empresa = @AuxEmpresa                                                                                                                                         
       and CodPedido = @AuxCodPedido                                                      
       and Empresa<>@Empresa                                                                                                                                                                      
                                                    
    --Atualiza as Retencoes do Pedido                                                                                                                                                                      
    Update PedidosRetencao                                                                                                                                                     
       Set Empresa=@Empresa,                                                                 
    StatusTransacao=1                                                                                                      
     where Empresa = @AuxEmpresa                                                                                                                                                                  
       and CodPedido = @AuxCodPedido                                                      
       and Empresa<>@Empresa                                
                            
    --Atualiza as Anotacoes do Pedido                                                                                      
    Update Anotacoes                                                                                                                                              
       Set EmpresaAnotacao = @Empresa,                                                                                                                                            
           StatusTransacao = 1                                                                                         
     Where EmpresaAnotacao = @AuxEmpresa                                                                                                                              
       and TipoAnotacao = 4                                                                                                         
       and ChaveTipo = cast(@AuxCodPedido as varchar(15))                                                                                                                      
                                                         
    --MARCELO - CHAMADO 191865                                                                        
    --Atualiza a Empresa dos Contatos dos Pedidos                                                                        
    Update PedidoContatos                                                                         
       Set Empresa = @Empresa,                                                                         
           StatusTransacao = 1            
     Where Empresa = @AuxEmpresa                                                             
       and CodPedido = @AuxCodPedido                                                      
       and Empresa <> @Empresa                                                                               
                                              
--208221                    
                                   
    Update ItemEntregas Set                       
      --Renato - Chamado 277570                              
      --EmpresaPedido = @Empresa,                    
      Chave1 = @Empresa,                                                
      StatusTransacao = 1                                                
    Where           
      --Renato - Chamado 277570                                         
      --EmpresaPedido = @AuxEmpresa                                              
    --and CodPedido = @AuxCodPedido                     
      --and EmpresaPedido <> @Empresa                                             
      TipoRelacao = 0                    
      and Chave1 = @AuxEmpresa                    
      and Chave2 = @AuxCodPedido                    
      and Chave2 <> @AuxEmpresa                    
                                                     
                                                        
    Fetch Next From CursorEmp Into @AuxEmpresa, @AuxCodPedido                                                      
  end                                                                         
  Close CursorEmp                                                                                                          
  Deallocate CursorEmp                                                                                                                                                                      
                                                                                                                                                              
  --Atualiza a Empresa dos Pedidos da Tabela Temporaria                                                                                                                                                                      
  Update Tempprft110Pedido                                                                                                                                                                      
    Set Empresa=@Empresa                                                                                                
   where NumSequencia = @Ped_Sequencia --Sequencia da tabela temporaria                                                                                             
     and Empresa<>@Empresa                                                                                                                                                                 
end                                                                                                                                              
                                                                                            
--Controle de baixa de estoque do pedido                                                                                                                                      
--Não baixa estoque se for "baixa na separação" ou "não baixa estoque"                           
Select                                                                                                      
  @FlagMovEstoque = Case When TipoBaixaEstoquePedido = 2 Then 0      --não baixa pois será baixado na seperaçao                                                                                         
                         When TipoBaixaEstoquePedido = 3 then -1     --nunca baixa estoque                                                                                                                                  
          Else 1 End,                  --Baixa estoque                                                     
  @FlagDevolucao = Case TipoMovimento When 1 then 1 Else 0 End--,                                                                                                          
  --MARCELO - CHAMADO 158510/199271                                                  
  --@FlagObrigaLancFiscais = FlagObrigaLancFiscais                                                                                                          
From                                  
  Operacoes                                                                                      
Where                    
  Codigo=@CodOperacao                                                                                                  
                                                                                                                              
If @TipoPedido = 0 or @TipoPedido = 1     ---Pedido/Requisicao                                                                     
Begin                                  
  set @TipoControle = 2   --Saída                                                                                                 
  set @TipoDuplicata = Case @FlagDevolucao when 1 then 1 else 2 end -- Duplicata A receber                                                                           
End                                                                                                                                                                      
Else                                                
if @TipoPedido = 4 -- entrada                                                                                                                                
Begin                                     
  set @TipoControle = 1                                                                                                                                                                      
  set @TipoDuplicata = Case @FlagDevolucao when 1 then 2 else 1 end --Duplicata a Pagar                                                                                                    
End                                                                                        
                                                                                        
/*158510 - movido para dentro do cursor das notas                                                                                        
Set @FlagAtualizaDuplicata = 0                                                                                        
                                                                                        
If Exists(Select NumSequencia From TempPrft110Venc where NumSequencia = @Venc_Sequencia)  ---Tem Duplicatas                                                                                        
      or (not Exists(Select NumSequencia From TempPrft110Venc where NumSequencia = @Venc_Sequencia) --Nao tem Duplicatas                                                                                        
                and (Select abs(UltimaDuplicata - UltimaNota) From ParamControleSerie                                                                                        
                     Where Empresa = @Empresa and Serie=@SerieControle) = 0)  --Numero de Nota igual ao de Duplicata                                                              
  Set @FlagAtualizaDuplicata = 1*/                                                                                        
                                                                                        
                                      
Set @Existe = 1                                                     
While @Existe = 1                                                                                                                      
Begin                                                                                                     
                                                                                   
   If @TipoControle = 1                                                                                                                           
      --MARCELO - CHAMADO 163320                                                                          
--      Execute ProximaSequencia 'NotasFiscaisEntrada', @Empresa, 1, @CodControle OUTPUT                                                        
      Execute @CodControle = ProximaSequencia 'NotasFiscaisEntrada', @Empresa, 1                                                                          
   Else                                                                            
      --MARCELO - CHAMADO 163320               
--      Execute ProximaSequencia 'NotasFiscaisSaida', @Empresa, 1, @CodControle OUTPUT                                                                                                                        
      Execute @CodControle = ProximaSequencia 'NotasFiscaisSaida', @Empresa, 1                                                                          
                     
   --Verifica se existe um controle para a sequencia cadastrada                                                                                                         
   If not Exists(Select CodControle                                                                 
          From NotasFiscais                                                                                                                    
                  where Empresa=@Empresa                 
                    and TipoControle=@TipoControle                                                                           
                    and CodControle = @CodControle)                                                                                                                          
      Set @Existe = 0                                                        
End                                                                                                                                             
                                                                 
                          
--Move o Codigo do controle da Primeira Nota para as embalagens dos pedidos                                                                                                                    
Update EmbalagemPedido                                                                                                                                                                      
   Set TipoControle=@TipoControle,                                                                                                                                                                      
       CodControle=@CodControle,                                                                                                           
       StatusTransacao=1                                                                                                             
 Where Empresa in (Select Empresa From Tempprft110Pedido Where NumSequencia = @Ped_Sequencia)                                                                                                                                                 
   and CodPedido in (Select CodPedido From Tempprft110Pedido Where NumSequencia = @Ped_Sequencia)                                                                                                                                            
                                                                         
                                                                                     
--158510 - movido para dentro do cursor da nota                                                              
-- Select @DataMovimento = DataMovimento                                                                                                                                  
--   from ParamControleSerie                                                                                                                                                           
--  Where Empresa=@Empresa                                                                                                                                                                       
--   and Serie=@SerieControle                                                                                                                                                    
                                                                                       
--MARCELO - CHAMADO 129410                                                                                                                         
Select @NumSerieECF = IsNull(Max(NumSerieECF),'')                             
--From AcumuloECF                                                                                                          
From EquipamentoECF                                                                                            
Where Empresa=@Empresa                                                 
  and NumEquipamento = @NumEquipamentoCF                                                                                                                                                      
                                                                                         
                                                                                                                                                            
--CHAMADO 198678 - MOVIDO PARA O CURSO DA NOTA FISCAL                                           
--Calculo do Prazo Medio                                                           
--Set @PrazoMedio = 0                                                                                      
--Set @AuxPmvAcumulo = (Select Sum(Cast(Vencimento - @DataMovimento as int) * Valor)                                                                                                                                                                      
--                  From TempPrft110Venc Where NumSequencia = @Venc_Sequencia and Vencimento > @DataMovimento)                                                                                                        
                    
                      
--121007                                                                                                       
--Set @AuxPmvValores = (Select Sum(Valor+ValorComplementar) From TempPrft110Venc Where NumSequencia = @Venc_Sequencia)                                                                                   
--If @AuxPmvValores > 0                                                                                                                                       
--   Set @PrazoMedio = isnull(Round(@AuxPmvAcumulo / @AuxPmvValores,0),0)                                                       
                                                                                                                                                                          
  --158510                                                                  
  Set @QuantNotaItem = 0                                                                                        
  Set @QuantNotaServico = 0                                                          
  Set @QuantNotaTOTAL = 0                                                                                        
                                                                                       
                          
  -- Eder Chamado - 252446                          
  select Top 1 @QuantNotaItem = (count(*) / @QuantQuebraNota),                                                                                                
       @Resto = (count(*) % @QuantQuebraNota)                                                                                                                             
  from TempPrft110Pedido, MovEstoque                                                                                                               
  where TempPrft110Pedido.NumSequencia = @Ped_Sequencia                                                                                                                                    
    and MovEstoque.Empresa = TempPrft110Pedido.Empresa                                                   
    and MovEstoque.CodPedido = TempPrft110Pedido.CodPedido                                                                       
  and MovEstoque.CodProduto <> 8888888 ----Nao pode considerar servicos como Item                                                                                        
    and MovEstoque.QuantAtendida > 0 --Itens sem quantidade não podem ser considerados                                                                                                                                                                      
                                        
/*158510                                                                                        
If (@Resto <> 0) or                                                                                        
(@QuantNota <= 0)                                                                                     
  Set @QuantNota = @QuantNota + 1*/                   
                                                                                        
  if (@Resto <> 0)                                                                 
    Set @QuantNotaItem = @QuantNotaItem + 1                                                                                
                           
--158510                                                                                          
-- para processameto que separa NFs de serviços das NFs de produtos, soma ao contador                                                                                           
-- as notas que irão conter os serviços                                          
  if (@FlagSepararServico = 1)                                                                                        
  begin                                                                                           
    select Top 1                                                                                        
      @QuantNotaServico = 1                                                                                        
    from TempPrft110Pedido, MovEstoque                                                                                        
    where TempPrft110Pedido.NumSequencia = @Ped_Sequencia                                                                  
      and MovEstoque.Empresa = TempPrft110Pedido.Empresa                                                                                        
      and MovEstoque.CodPedido = TempPrft110Pedido.CodPedido                                                                                        
      and MovEstoque.CodProduto = 8888888 ----Nao pode considerar servicos como Item                                                                                        
      and MovEstoque.QuantAtendida > 0 --Itens sem quantidade não podem ser considerados                                                                                        
                                           
    if @QuantNotaServico is null                                                                                        
      Set @QuantNotaServico = 0                                                                                        
  end                                                      
                                                               
--158510                            
Set @QuantNotaTOTAL = @QuantNotaItem + @QuantNotaServico                                                                                        
                                                                                        
                                                                                                                               
Set @ContadorNota = 0                                                                                                                       
                                                                            
--MARCELO - CHAMADO 189324                                                                            
if @QuantNotaTOTAL = 0                                                                            
begin                                                                            
  set @QuantNotaTOTAL = 1    
  set @QuantNotaItem = 1                                                                            
end                                                                            
                                                                                                                                                                      
--158510 While @ContadorNota < @QuantNota                                                                                        
While @ContadorNota < @QuantNotaTOTAL                                                                                        
Begin                                                                  
Set @ContadorNota = @ContadorNota + 1                                                                                                                                                                      
                                                                                                           
  If @ContadorNota <> 1                                                            
  Begin                                                
    If @TipoControle = 1                                                                                        
      Execute @CodControle = ProximaSequencia 'NotasFiscaisEntrada', @Empresa, 1                                                                          
    Else                                                                            
      Execute @CodControle = ProximaSequencia 'NotasFiscaisSaida', @Empresa, 1                          
  End                                                                                                             
                                                                                                        
  --MARCELO - CHAMADO 136025                                                                                                        
  --verifica se existem lançamentos de movestoque associados ao controle que está sendo gerado                                                                                                        
  If Exists(Select Top 1 CodControle From MovEstoque                    
            Where Empresa = @Empresa                                                         
              and TipoControle = @TipoControle                                                                                               
              and CodControle = @CodControle)                                                   
 begin                                                                                                        
    Set @MensagemErro = 'O controle ' + cast(@CodControle as varchar(10)) + ' que está sendo gerado, já possui Itens associados ! (Avise a Ribeirão System)'                                                  
    Return                                                                                                        
  end                                                          
  --MARCELO - CHAMADO 136025                                                                                                        
  --verifica se existem duplicatas associadas ao controle que está sendo gerado                        
  If Exists(Select Top 1 CodControle From Duplicatas                                                                                                        
       Where Empresa = @Empresa                                                                                                        
              and TipoControle = @TipoControle                                                                                                        
              and CodControle = @CodControle)                                                                  
  begin                                                                                                        
    Set @MensagemErro = 'O Controle ' + cast(@CodControle as varchar(10)) + ' que está sendo gerado, já possui Duplicatas associadas ! (Avise a Ribeirão System)'                      
           
    Return                                                                                               
  end                                                                                                        
  --MARCELO - CHAMADO 136025                                                                                                        
  If Exists(Select Top 1 CodControle From LancamentosFiscais                                                                                        
            Where Empresa = @Empresa                                                              
              and TipoControle = @TipoControle                                                                                      
              and CodControle = @CodControle)                                                                                         
  begin                                                          
    Set @MensagemErro = 'O controle ' + cast(@CodControle as varchar(10)) + ' que está sendo gerado, já possui Lançamentos Fiscais associados ! (Avise a Ribeirão System)'                                                                                    
  
    
      
        
          
            
              
                
                  
                    
    Return                                                                                                        
  end                                                                                
                                                                                              
  --158510                                                                                        
  -- quando está na primeira nota ou quando vai começar as notas de serviço                                                                   
  -- atualiza os dados lidos da série do parametro de controle                                                                
  if ((@ContadorNota = 1) or (@ContadorNota = (@QuantNotaItem+1)))                                                                                         
  begin                                                                                        
    Set @FlagAtualizaDuplicata = 0                                                                                        
                                                                                        
    if (@ContadorNota <= (@QuantNotaItem))                                                                                        
    begin                                   
      Set @SerieControleCursor = @SerieControle                                                                                        
      Set @CodOperacaoCursor = @CodOperacao                                                                                        
    end                                                                                        
    else                                                                
    begin                                                                                        
      Set @SerieControleCursor = @SerieControleServico                                                                                        
      Set @CodOperacaoCursor = @CodOperacaoServico                                       
    end                                                    
                                                        
    if Exists(Select NumSequencia From TempPrft110Venc where NumSequencia = @Venc_Sequencia)  ---Tem Duplicatas                                                                                        
          or (not Exists(Select NumSequencia From TempPrft110Venc where NumSequencia = @Venc_Sequencia) --Nao tem Duplicatas                          
                   --Rafael chamado 254456                             
                   -- and (Select abs(UltimaDuplicata - UltimaNota) From ParamControleSerie                          
                      and (Select abs(UltimaDuplicata - UltimaNota) From ParamControleSequencia                                                                                                                                
    Where Empresa = @Empresa                                                                                         
                     and Serie = @SerieControleCursor) = 0)  --Numero de Nota igual ao de Duplicata                                                                                        
      Set @FlagAtualizaDuplicata = 1                                                                  
                                                    
    Select @DataMovimento = DataMovimento,              
    --Eder Ramos Chamado 302201               
    @FlagNaoGerenciarNumDocumento = FlagNaoGerenciarNumDocumento                                                                                                                                                  
    from ParamControleSerie                   
    Where Empresa = @Empresa                                                                         
      and Serie = @SerieControleCursor                                                          
                       
    --MARCELO - CHAMADO 198678                                                    
    Set @PrazoMedio = 0                                              
    Set @AuxPmvAcumulo = (Select Sum(Cast(Vencimento - @DataMovimento as int) * Valor)                                                                                                                                                                      
                          From TempPrft110Venc                                                     
                          Where NumSequencia = @Venc_Sequencia                                                     
                            and Vencimento > @DataMovimento)                                                           
    Set @AuxPmvValores = (Select Sum(Valor+ValorComplementar)                                                     
        From TempPrft110Venc                                                     
                          Where NumSequencia = @Venc_Sequencia)                                                                                                                                     
    If @AuxPmvValores > 0                                                                                                                                                                   
      Set @PrazoMedio = isnull(Round(@AuxPmvAcumulo / @AuxPmvValores,0),0)                                                                                     
  end                                                                                    
                                                              
                                                                             
  Insert into TempPrft110Nota (NumSequencia, PosicaoNota, Empresa, TipoControle, CodControle)                                                                                        
                       values (@Ped_Sequencia, @ContadorNota, @Empresa, @TipoControle, @CodControle)                                                                                        
         
                
  --Eder Ramos Chamado 302201              
  If @FlagNaoGerenciarNumDocumento = 0 -- gerar numero documento              
   begin              
                                                                                                  
   If @FlagCupom = 0 or @FlagCupom = 2     --Processamento de Nota, ou nota e cupom pega o numero da nota                                                                                                                                                     
   
         
         
         
             
              
                 
   begin                                                                            
  Set @Especie = 'NF'                                                                                             
                              
  Select @NumDocumento = UltimaNota + 1                          
  --Rafael chamado 254456                            
  --From ParamControleSerie                          
    From ParamControleSequencia                                                                                                      
 --158510 where Empresa=@Empresa and Serie=@SerieControle                                                                           
  where Empresa=@Empresa and Serie=@SerieControleCursor                                                                                        
                                          
  --Verifica Se Ja existe nota fiscal com o numero de documento que achou                  
  If Exists(Select Top 1 CodControle From NotasFiscais                                                                                       
       where Empresa=@Empresa                                             
      and TipoControle=2                                                                                                    
      and NumDocumento = @NumDocumento                                                                     
      --MARCELO 08/05/2006 - CHAMADO 112343                                                                                                                            
      and Especie = @Especie                                                                                                                            
 --158510                 and Serie=@SerieControle)                                                                                        
   and Serie = @SerieControleCursor)                                                                                        
                                                                                         
  begin                                                                                                                                                                      
    Set @MensagemErro = 'Já Existe Nota Fiscal Cadastrada com o Número de Documento: '                                                                                                                   
      + Cast(@NumDocumento as varchar)                                                                                                                
         + ' e série '                                                                                                                                                                       
 --158510                          + Cast(@SerieControle as varchar)                                                                                        
         + Cast(@SerieControleCursor as varchar)                                                     
         + '.'                                                                      
    Return                                                                                                                             
  end                                                                                                         
  --Rafael chamado 254456                                                          
  --Update ParamControleSerie                          
    Update ParamControleSequencia                                                                                                                                                
     Set UltimaNota = @NumDocumento,                                                          
      StatusTransacao=1                                                                               
   where Empresa=@Empresa                                                  
 --158510    and Serie=@SerieControle                                                                                 
 and Serie=@SerieControleCursor                                                                                        
   end                                                                                                                                 
   else                                                                                                               
   begin  --Processamento de cupom, não pega o ultimo documento                                                                                                                                                                      
  Set @Especie = 'CF'                                                                                                              
  Set @NumDocumento = 0                              
   end              
  end              
  -- Eder Ramos Chamado - 302201              
  else                                                                                                                                                             
   begin  -- FlagNaoGerenciar Num Documento nao pega o ultimo documento                                                                                                                                         
  Set @Especie = 'NF'                                                                                                            
  Set @NumDocumento = 0                     
  end                                                                                                                                                                  
                                                                 
  Insert into NotasFiscais (                                                                                        
    Empresa, TipoControle, CodControle,                                                                                        
    DataMovimento, DataDocumento, Especie, NumDocumento, Serie,                                                                                        
    CodEntidade, EmpresaOS, CodOS, CodOperacao, CodVendInterno,                                                                                        
    CodVendExterno, CodVendParceiro, CodCondPagto, CodTransp,CodTranspRedespacho,TipoFrete,                                                                                        
    CodPedido, CodUsuarioInc, CodUsuarioFat,                                                                                        
    StatusImpNota,                                                                                        
    StatusImpCupom,                                                                                        
    FlagCancelada, FlagDuplicataGerada, FlagAtualizaPreco, PrazoMedio,                                                           
    AliqISS,                                                                                        
    CodDepartamento, CodBanco, StatusTransacao, NumEquipamentoCF,                          
--253322                          
    StatusNFe,    
--356099    
    FlagEmissaoPropria,CodcidadeServicoRealizado)         
  Select @Empresa, @TipoControle, @CodControle,                                                        
--158510    @DataMovimento, @DataMovimento, @Especie, @NumDocumento, @SerieControle,                                                                                        
   @DataMovimento, @DataMovimento, @Especie, @NumDocumento, @SerieControleCursor,                                                                                        
--158510    P.CodEntidade, @EmpresaAntOS, @CodOS, @CodOperacao, @CodVendInterno,                                                                                        
    --341745        
    --P.CodEntidade, @EmpresaAntOS, @CodOS, @CodOperacaoCursor, @CodVendInterno,                                                                                        
    @EntidadeNotaFiscal,@EmpresaAntOS, @CodOS, @CodOperacaoCursor, @CodVendInterno,        
    --Ronaldo Chamado 346431      
    --@CodVendExterno, P.CodVendParceiro, @CodCondPagto, P.CodTransp, P.CodTranspRedespacho,P.TipoFrete,                                                                                        
    @CodVendExterno, P.CodVendParceiro, @CodCondPagto, @CodTransp, P.CodTranspRedespacho,P.TipoFrete,                                                                                        
    @CodPedido, @CodUsuario, @CodUsuario,                                                                                        
    Case When @FlagCupom = 0 then 0      --Somente Nota (imprimir nota)                                                                                        
         When @FlagCupom = 1 then -2      --Somente Cupom (nao imprimir Nota)                                        
         When @FlagCupom = 2 then 0 End, --Nota e Cupom (imprimir nota)                                                                                        
    Case When @FlagCupom = 0 then 1      --Somente Nota (nao imprimir cupom)                                                      
         When @FlagCupom = 1 then 0      --Somente Cupom (Imprimir cupom)                                   
         When @FlagCupom = 2 then 0 End, --Nota e Cupom (Imprimir Cupom)                                                                                     
    0, 0, 1, @PrazoMedio,                                                      
    Case When O.FlagCalcularISS <> 1 then 0                                                                                        
--158510         Else(Select Dbo.Calcular_ISS(@Empresa, P.CodEntidade, @CodOperacao)) End,    
--367126         Else(Select Dbo.Calcular_ISS(@Empresa, P.CodEntidade, @CodOperacaoCursor)) End,    
                 Else(Select Dbo.Calcular_ISS(@Empresa, P.CodEntidade, @CodOperacaoCursor,P.CodCidadeServicoRealizado)) End,    
    @CodDepartamento, @CodBanco, 1, @NumSerieECF,                          
--253322                          
    Case When @FlagCupom = 1 then -1 else 0 end,    
    --356099    
    1,    
    --Ronaldo Chamado 367126    
    P.CodCidadeServicoRealizado    
  from Pedidos P                                                                                        
--158510    Left Join Operacoes O on O.Codigo = @CodOperacao                                                                                        
    Left Join Operacoes O on O.Codigo = @CodOperacaoCursor                                                                                        
  Where P.Empresa=@Empresa                                                                                     
    and P.CodPedido=@CodPedido   --Primeiro Pedido da Lista                                                                                        
End --Fim do loop                                                                                                                                                                               
                                                    
--Regrava os Itens dos Pedidos da Tabela Temporaria para as respectivas Notas Fiscais                                                                                                     
                                                                                   
Declare CursorItem cursor local FAST_FORWARD for                                                                                                                                                                       
  select                                                                              
    --158510 garantir que os serviços virão por último quando for                                                                                         
   -- separar nota de produtos das notas de serviços                   
    Case When (@FlagSepararServico = 0) then 0                                                                                        
         When (@FlagSepararServico = 1) and (Mov.CodProduto <> 8888888) then 0                                                                                        
         When (@FlagSepararServico = 1) and (Mov.CodProduto = 8888888) then 1                                                                                        
    end,                                                                                        
    Mov.Empresa, Mov.NumLancamento, Mov.CodProduto,                                                        
    --341745         
    --Mov.QuantAtendida, Ped.CodEntidade, isnull(ES.ClasseABC,'')        
    Mov.QuantAtendida,isnull(ES.ClasseABC,'')                                      
  from TempPrft110Pedido T                                                                         
    Left Join Pedidos Ped on Ped.Empresa = T.Empresa and Ped.CodPedido = T.CodPedido                                                                                                                                                                   
    Left Join MovEstoque Mov on Mov.Empresa = T.Empresa and Mov.CodPedido = T.CodPedido                                                                                                                                                                   
    Left Join EstoqueProduto ES on ES.CodProduto = Mov.CodProduto                                                                                                                                               
                                  and ES.Empresa = @EmpresaEstoque                                                                                                                                                                      
  where T.NumSequencia = @Ped_Sequencia                          
--158510  order By Mov.Empresa, Mov.CodPedido, Mov.NumLancamento                                                             
  Order By 1, Mov.Empresa, Mov.CodPedido, Mov.NumLancamento                                                                                         
                                                                                                                                                                
-- Regrava os itens para as suas respectivas notas fiscais                                                                                                                                                                      
Open CursorItem                                                                                                                                                                      
Fetch Next From CursorItem into @FlagServico, @AuxEmpresa, @AuxNumLancamento, @AuxCodProduto,          
            --341745                                                                                                                                                     
             --@AuxQuantAtendida, @AuxCodEntidade, @ClasseABC        
             @AuxQuantAtendida,@ClasseABC                                                                                                                                                                      
Set @ContadorItem = 0                                                                                                 
Set @ContadorNota = 0                                                                                                                                                   
while @@Fetch_Status = 0                                                                
Begin                                                                                                           
---Contador Item deve comecar do zero, para que a conta dê certo                                                                                   
  -- Eder Chamado - 252446                          
  Set @ContadorNota = (@ContadorItem /  @QuantQuebraNota) + 1                  
                                                                                        
  --158510 quando separa o servico, os movestoques de serviço virão sempre depois                        
  --       dos produtos, então se chegou no 8888888, tem que jogar para a última nota                                                                                        
  --       que conterá todos os serviço                                                                 
                                                                            
--MARCELO - CHAMADO 194083                                                                
  if (@FlagServico = 1) and (@ContadorNota <= @QuantNotaItem)                                                              
    Set @ContadorNota = @contadorNota + 1                                                                                        
                                              
  Select @TipoControle = T.TipoControle,                                                                                                                                                                   
         @CodControle  = T.CodControle,                          
         @CodTipoEstoque = Oper.CodTipoEstoque,                                                             
         @CodTipoEstoqueContra = Oper.CodTipoEstoqueContra                                                                                        
    From TempPrft110Nota T                                                                                                                                                             
    Left Join Operacoes Oper on Oper.Codigo = @CodOperacao                                                                                                       
    Where T.NumSequencia = @Ped_Sequencia                                                                                     
   and T.PosicaoNota = @ContadorNota                                                                                                                                                     
                                                                                        
                                                                                                                                                         
  Update MovEstoque                                                                       
     Set TipoControle  = @TipoControle,                                                                                                                                                
         CodControle     = @CodControle,                                                                                                                                                  
--158510         CodOperacao     = @CodOperacao,                                                                                        
         CodOperacao     = Case @FlagServico When 0 Then @CodOperacao Else @CodOperacaoServico End ,                                                                  
         -- Renato - 271880                    
         --DataMovimento   = @DataMovimento,                  
         DataMovimento   = Case isNull(@TipoAtualizaDataMovEstoque,0) When 0 Then @DataMovimento Else DataMovimento End,                                                                    
         DataFaturamento = @DataMovimento,         
         --341745                                                                                                                                                                                   
         --CodEntidade     = @AuxCodEntidade,                                                    
         CodEntidade = @EntidadeNotaFiscal,         
         ClasseABC       = @ClasseABC,                                                                                                
         --Ronaldo Chamado 398662
         --FlagMovEstoque  = @FlagMovEstoque,
         FlagMovEstoque = Case When @FlagMovEstoque = 0 and FlagMovEstoque = 1 
                                    Then FlagMovEstoque
                                    else @FlagMovEstoque end,
                                                                                 
         CodDepartamento = @CodDepartamento,                                                                                                                                                                
         FlagNaoGeradoNFE = isnull((select top 1             
                                    case when o.FlagDesconsiderarNaoGeradoNFE = 1             
                                         Then 0             
                                    else Prod.FlagNaoGeradoNFE            
                                    end             
                             From Produtos Prod            
                             left join operacoes o on o.codigo = MovEstoque.CodOperacao            
                             where Prod.Codigo = MovEstoque.CodProduto),0),            
   StatusTransacao = 1        
   Where Empresa = @AuxEmpresa                                                       
     and NumLancamento = @AuxNumLancamento                                                                                                                                                                      
                                                                                                                                             
                                                                              
  Update MovEstoqueAux                                                                
     Set CodTipoEstoque = @CodTipoEstoque,                                                                                                   
         CodTipoEstoqueContra = @CodTipoEstoqueContra                                                                                                                                                           
   Where Empresa = @AuxEmpresa                                                                                                    
  and NumLancamento = @AuxNumLancamento                                                                                                                            
                                                                                                                                                            
  If (@CodTipoEstoque <> 0 or @CodTipoEstoqueContra <> 0)                                                
     and Not exists(Select MAux.Empresa                                                                                                                                                           
                      From MovEstoqueAux MAux                                                                                                                       
                     Where MAux.Empresa = @AuxEmpresa                                          
                       and MAux.NumLancamento = @AuxNumLancamento)                                                                                                                                                        
  begin                                                                   
    Insert Into MovEstoqueAux(NumLancamento, Sequencia, Empresa,                                   
      CodProduto, TipoMovimento, FlagMovEstoque, EmpresaEstoque,                                                                                                                                                             
      QuantAtendida, QuantMovimentada, CodTipoEstoque, CodTipoEstoqueContra, StatusTransacao)                  
    Select @AuxNumLancamento, 1, @AuxEmpresa,                                                                          
      Mov.CodProduto, Mov.TipoMovimento, Mov.FlagMovEstoque, Mov.EmpresaEstoque,                                                                                     
      Mov.QuantAtendida, Mov.QuantMovimentada, @CodTipoEstoque, @CodTipoEstoqueContra, 1                                                                                                         
    From MovEstoque Mov                                                                                                       
    Where Mov.Empresa = @AuxEmpresa                                                                                                                                                           
       and Mov.NumLancamento = @AuxNumLancamento                                                                                                                                                                      
  end                                                                                                                                                            
                                                                                                      
  If @AuxCodProduto <> 8888888 and ---Nao pode considerar servicos como sendo Item                            
     @AuxQuantAtendida > 0 --Não pode considerar itens sem quantidade                                                                                                                                                                      
    Set @ContadorItem = @ContadorItem + 1                                                                                                                                                                      
              
  Fetch Next From CursorItem into @FlagServico, @AuxEmpresa, @AuxNumLancamento, @AuxCodProduto,                                                                                                                      
                  --341745        
                  --@AuxQuantAtendida, @AuxCodEntidade, @ClasseABC        
                  @AuxQuantAtendida,@ClasseABC                                                                                                                                                                                                                
  
    
      
                                                                                                                    
End                                                                                                                                                                      
Close CursorItem                                                       
deallocate CursorItem                                                                                   
                                                                                                                                                               
                                                                                                                                           
--Atualizacação do ICM e totais de cada nota processada                                                                                    
Set @ContadorNota = 0                                                                                 
--158510 While @ContadorNota < @QuantNota                                                                                        
While @ContadorNota < @QuantNotaTOTAL                                                                                        
BEGIN                                                                                                                                                              
    Set @ContadorNota = @ContadorNota + 1                                                                         
                                                                                          
    Set @SerieControleCursor = (Case When @ContadorNota <= @QuantNotaItem                                                               
                                 then @SerieControle                                                                                      
                                     else @SerieControleServico end)                                        
                                                          
                                     
    --Le o controle da posição atual da nota (Tabela temporaria)                                                           
    Select @TipoControle = TipoControle,                                                                                                                                                                    
           @CodControle  = CodControle                                                                                                                                                  
      From TempPrft110Nota                                                                                                                     
      Where NumSequencia = @Ped_Sequencia                                                                                                                           
       and PosicaoNota = @ContadorNota                                                                                                                                            
                                 
    if (@TipoControle = 2) --and                                                                                                     
--        ((Select FlagDecomporProdutos From ParamControle Where Empresa = @Empresa) = 1))                                                                                                             
      exec Stored_PRFT110DecomporProdutos @Empresa, @TipoControle, @CodControle                                                                                                      
                                
   --Procedure que Gera os dados da nota                                                                                                     
     exec Stored_Prft110GeraNota @Ped_Sequencia, @Empresa, @TipoControle, @CodControle, @ContadorNota                                                                                             
                                                               
    --MARCELO - CHAMADO 208567                                                                                                                         
    If @FlagCustoMedio = 1                                              
    begin                        
      Exec CalcularCustoMedio 1, @EmpresaEstoque, @Empresa, @TipoControle, @CodControle,                                                                        
               null, null, null, null, null, null, @DataMovimento, @DataMovimento, 0                                                             
    end                                            
    else                                            
    begin                                            
      if (Exists(Select * From MovEstoque Mov                                            
              Left Join Produtos Pro on Pro.Codigo = Mov.CodProduto                                                                
                Where Mov.Empresa = @Empresa                                            
                  and Mov.TipoControle = @TipoControle                                              
                  and Mov.CodControle = @CodControle                                            
                  and Pro.TipoLote = 1                                                                
                  and Pro.FlagLoteUnitario = 1))                                            
      begin                                            
        Declare @SQLTimeStamp datetime                                            
        set @SQLTimeStamp = GetDate()                             
 Exec CalcularCustoMedioLote @SQLTimeStamp, 1, @EmpresaEstoque, @Empresa,                                             
                                    @TipoControle, @CodControle, null, null,                                             
                                    null, null, null                                            
      end                                            
    end                                            
                                                                                                             
    --183245                                                                
    -- Acumula os valores de custo nos campos da nota fiscal                                                                                  
    Select                                                                        
      @ValorCustoForTotal = Sum(Case When Mov.CodProduto <> 8888888                                                                                  
          then (Mov.ValorCustoFor * Mov.FatorRedCusto) * Mov.QuantAtendida                                                                                  
          else 0 End),                                                                                  
      @ValorCustoUltTotal = Sum(Case When Mov.CodProduto <> 8888888                                          
          then (Mov.ValorCustoUlt * Mov.FatorRedCusto) * Mov.QuantAtendida                                                                                
          else 0 End),                                                                                  
      @ValorCustoUltRealTotal = Sum(Case When Mov.CodProduto <> 8888888                                                                                  
          then (Mov.ValorCustoUltReal * Mov.FatorRedCusto) * Mov.QuantAtendida                                                                                  
   Else 0 End),                          
      @ValorCustoMedTotal = Sum(Case When Mov.CodProduto <> 8888888                                                                                  
          then Mov.ValorCustoMed * Mov.QuantAtendida                           
          Else 0 End),                                               
      @ValorCustoSerTotal = Sum(Case When Mov.CodProduto = 8888888                                                                                  
          then Mov.ValorCustoFor * Mov.QuantAtendida                                                                                  
Else 0 End)                                                                                  
    From MovEstoque Mov                                                                                  
    Where                                                                                   
      Empresa = @Empresa                                                               
      And TipoControle = @TipoControle                                                                                  
   And CodControle = @CodControle                                                                                  
                                                                                  
    --183245                                                                                  
    Update NotasFiscais Set                                                                                  
      ValorCustoForTotal = Coalesce(@ValorCustoForTotal,0),                                                                                  
      ValorCustoUltTotal = Coalesce(@ValorCustoUltTotal,0),                                                                                  
      ValorCustoUltRealTotal = Coalesce(@ValorCustoUltRealTotal,0),                                               
      ValorCustoMedTotal = Coalesce(@ValorCustoMedTotal,0),                                                                                  
      ValorCustoSerTotal = Coalesce(@ValorCustoSerTotal,0)                                                                            
    Where                                                                                   
      Empresa = @Empresa                                                                                  
      And TipoControle = @TipoControle                                                                                  
      And CodControle = @CodControle                                                                                  
                                                                                  
                                                    
     ---Calculo de Comissao da Nota                                                                                                                                      
     Exec Stored_Prft110Comissao @Empresa, @TipoControle, @CodControle                                                         
                     
      -- EDER RAMOS 310096                  
     Select             
  @FlagNaoGerenciarNumDocumento = FlagNaoGerenciarNumDocumento                                                                                                                                                                        
  from ParamControleSerie                                                                                             
     Where Empresa = @Empresa                                                                         
      and Serie = @SerieControleCursor              
                                                                                         
     --Atualiza o Número da Ultima duplicata no parametro de controle Quando:                                            
     --1 Tem Duplicatas                                                                                                                          
     --2 Nao tem duplicatas mas segue a mesma numeracao de nota e duplicata                                                                                                                                                         
     -- Eder Ramos Chamado 302201              
     if @FlagNaoGerenciarNumDocumento = 0                 
     begin                                                                                                                         
   If (Select FlagGerarDuplicata from ParamControle Where Empresa = @Empresa) = 1 --Controle de Gerar Duplicata                                                           
   and @FlagCupom in(0,2) and @FlagAtualizaDuplicata = 1                                                                                                                                             
   --Rafael chamado 254456                          
    --Update ParamControleSerie                          
      Update ParamControleSequencia                  
      Set UltimaDuplicata = UltimaDuplicata + 1,                                                                                                                             
       StatusTransacao=1                                                                             
      Where Empresa=@Empresa                                                                                      
 --158510             and Serie=@SerieControle                                                                                        
    and Serie = @SerieControleCursor               
      end                                                
                            
                      
      -- Renato - Chamado 260385 -> Movida para ser executada antes da Stored_Prft110Duplicata                                                                                                                                                                
 
      --Grava as observacoes da Nota Fiscal                              
      --Rafael chamado 202157       
      --Gabriella - 382313              
      --exec Stored_Prft110Observacao @Empresa, @TipoControle, @CodControle, @ObsCupom, @FlagUnirObservacao                       
      exec Stored_Prft110Observacao @Empresa, @TipoControle, @CodControle, @ObsCupom, @FlagUnirObservacao, @Venc_Sequencia                       
                                                                
      If @Venc_Sequencia <> 0  --Vencimentos escohidos                                                                                                                                                             
         and (Select FlagGerarDuplicata from ParamControle Where Empresa = @Empresa) = 1 --Controle de Gerar Duplicata                                                                                                                                         
 
    
      
        
          
                       
         and @TipoDuplicataPedido = 0  --gera duplicatas no processamento                                        
      Begin                                         
        --MARCELO - CHAMADO 215809                                      
        --Recuperar o valor de ST dos Pedidos             
        --Gabriella - 301399            
        if (@EmpId = 'DINAMAR')               
        begin                                   
   select @ValorSTPedido = IsNull(Sum(Ped.ValorSubTrib + Ped.ValorFrete + Ped.ValorDespesas), 0)                                      
   from TempPRFT110Pedido T                                      
     left join Pedidos Ped on Ped.Empresa = T.Empresa                                      
           and Ped.CodPedido = T.CodPedido                                      
   where T.NumSequencia = @Ped_Sequencia                      
  end            
  else            
  begin            
   select @ValorSTPedido = IsNull(Sum(Ped.ValorSubTrib), 0)                                      
   from TempPRFT110Pedido T                                      
     left join Pedidos Ped on Ped.Empresa = T.Empresa                                      
           and Ped.CodPedido = T.CodPedido                                      
   where T.NumSequencia = @Ped_Sequencia                
  end            
                      
       --Rafael chamado 271610                      
       if @ValorSTPedido is null                       
         set @ValorSTPedido=0                       
        
        --Recuperar o valor de ST das Notas Fiscais               
        --Gabriella - 301399            
        if (@EmpId = 'DINAMAR')               
        begin                                             
   select @ValorSTNota = IsNull(Sum(NF.ValorSubTrib + NF.ValorFrete + NF.ValorDespesas), 0)                                      
   from TempPRFT110Nota T                                      
     left join NotasFiscais NF on NF.Empresa = T.Empresa                                      
            and NF.TipoControle = T.TipoControle                                      
            and NF.CodControle = T.CodControle                                      
   where T.NumSequencia = @Ped_Sequencia            
        end            
        else            
        begin            
   select @ValorSTNota = IsNull(Sum(NF.ValorSubTrib), 0)                                      
   from TempPRFT110Nota T                                      
     left join NotasFiscais NF on NF.Empresa = T.Empresa                                      
            and NF.TipoControle = T.TipoControle                                      
            and NF.CodControle = T.CodControle                                      
   where T.NumSequencia = @Ped_Sequencia                    
        end                                      
                      
                           
        --Rafael chamado 271610                      
       if @ValorSTNota is null                       
         set @ValorSTNota=0                       
                       
                                      
        --Recuperar o dias de vencimento da duplicata de ST                                      
        select @DiaVencimentoST = DiasVencimentoDupST                                      
        from ParamControle                                      
        where Empresa = @Empresa                                      
          and ValorMinimoST > 0                                       
          and DiasVencimentoDupST > 0                                      
        if @DiaVencimentoST is null                                      
          set @DiaVencimentoST = 0                                      
                                    
--MARCELO - CHAMADO 233642                                      
/*        if (@DiaVencimentoST > 0) and (@ValorSTPedido <> @ValorSTNota)                                      
        begin                                      
          set @DataVencimentoDupST = DateAdd(day, @DiaVencimentoST, @DataMovimento)                                      
                                               
          update TempPRFT110Venc set                                       
             Valor = (Valor - @ValorSTPedido) + @ValorSTNota                                      
          where NumSequencia = @Venc_Sequencia                                      
            and Vencimento = @DataVencimentoDupST                                      
        end    */                     
                             
        if (@DiaVencimentoST > 0)                                     
        begin                                      
          set @DataVencimentoDupST = DateAdd(day, @DiaVencimentoST, @DataMovimento)                     
            --Gabriella - 301399            
            if (@EmpId = 'DINAMAR')                      
            begin            
    update TempPRFT110Venc set                                       
      Valor = case when (@ValorSTPedido <> @ValorSTNota)                                
     then (Valor - @ValorSTPedido) + @ValorSTNota                                
     else Valor end,                     
      FlagDuplicataST = case when (@ValorSTPedido = 0)                                    
      then 0                      
      else 1 end                                            
    where NumSequencia = @Venc_Sequencia                                      
      and Vencimento = @DataVencimentoDupST            
      --Gabriella - 349341      
      --and Valor = @ValorSTNota;      
      and @DiaVencimentoST < (select min(CPV.DiaVencimento)      
                from CondPagtoVenc CPV      
            where CPV.CodCondPagto = @CodCondPagto      
              and CPV.MesVencimento = 0);                 
            end            
            else            
            begin            
    update TempPRFT110Venc set                                       
      Valor = case when (@ValorSTPedido <> @ValorSTNota)                                
     then (Valor - @ValorSTPedido) + @ValorSTNota                                
     else Valor end,                   
                                    
      --Rafael chamado 271610                       
      --FlagDuplicataST = 1                   
      FlagDuplicataST = case when (@ValorSTPedido = 0)                                    
            then 0                      
            else 1 end                                            
    where NumSequencia = @Venc_Sequencia                                      
      and Vencimento = @DataVencimentoDupST                         
            end                           
        end                                  
                                                                                
        Select @AuxValorTotal=Sum(Valor)                                                                                         
        From TempPrft110Venc                                                                                   
        where NumSequencia = @Venc_Sequencia                         
                      
                              
     --MARCELO - CHAMADO 233642                                    
        if not Exists(select Top 1 Empresa from MovEstoque                                    
                      where Empresa = @Empresa                  
                        and TipoControle = @TipoControle                                    
                        and CodControle = @CodControle                                    
                        and CodProduto <> 8888888)                                    
        begin                                    
          set @AuxValorTotal = @AuxValorTotal - IsNull((select Valor from TempPRFT110Venc                                     
                                                        where NumSequencia = @Venc_Sequencia                                    
                                                          and FlagDuplicataST = 1), 0)                                      
        end                                  
                                    
                                     
        exec Stored_Prft110Duplicata @Empresa, @TipoControle, @CodControle, @CodBanco,                                        
                                     @CodOperacaoDup, @Venc_Sequencia, @AuxValorTotal,                                                                                                              
                                     @FlagCupom, @SerieControleCursor                                        
      End                        
                                                                                                                                                                                    
      If @Venc_Sequencia <> 0 -- vencimentos informados                                                                                              
         and @TipoDuplicataPedido = 1 --duplicatas no pedido                                                                                                 
      begin                                                                                    
                                                                                                                                                                
        Update Duplicatas                                                                                                                
           Set TipoControle=@TipoDuplicata,                                                                  
               CodControle=@CodControle,                                                                                                                                                                  
               StatusTransacao=1                                                                                                                                                               
        Where Duplicatas.Empresa = @Empresa                                                                           
         and Duplicatas.TipoDuplicata = @TipoDuplicata                                                                                                                                                                      
         and Duplicatas.CodDuplicata in (Select CodDuplicata From TempPrft110Venc Where NumSequencia = @Venc_Sequencia)                                                                                                                                        
 
    
       
        
          
           
              
                 
                  
                           
      end                                                                                                                                                
                                
                        
     Exec Stored_Prft110Fiscal @Ped_Sequencia, @Empresa, @TipoControle, @CodControle          
                                                                            
/*183245                                                                              
      If @FlagCustoMedio = 1                                                    
         Exec CalcularCustoMedio 1, @EmpresaEstoque, @Empresa, @TipoControle, @CodControle,                                                                                                                                             
               null, null, null, null, null, null, @DataMovimento, @DataMovimento, 0*/                                                                                    
                            
  -- Renato - Chamado 260385 -> Movida para ser executada antes da Stored_Prft110Duplicata                                                        
      --Grava as observacoes da Nota Fiscal                              
      --Rafael chamado 202157                                                                                                         
      --exec Stored_Prft110Observacao @Empresa, @TipoControle, @CodControle, @ObsCupom,@FlagUnirObservacao                                                                                                                                                    
   
    
      
    --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    
   --Gabriella - 367244    
   Left Join NotasFiscais NF on NF.Empresa = @Empresa                                      
                               and NF.TipoControle = @TipoControle                                     
                               and NF.CodControle = @CodControle       
  where TempRel.NumSequencia = @Venc_Sequencia     
    and TempRel.CodDuplicata <> ''     
    --Gabriella - 367244    
    and TempRel.TipoRetencao in (1,2,3)      
    and NF.ValorServicos > 0       
                                 
                                        
END                                                 
--Fim do Loop                                                                                                                                       
                                                                                                                    
                                                                                                                                             
--Atualiza os dados dos Pedidos/OS                                                                                                                 
exec Stored_Prft110Totalizar @Empresa, @TipoControle, @CodControle, @EmpresaAntOS, @Ped_Sequencia, @CodStatusPed                             
                                  
--MARCELO - CHAMADO 158510/199271                                                              
exec Stored_PRFT110Validar @Empresa, @CodOperacao, @FlagCupom, @Ped_Sequencia,                                                  
                           @Venc_Sequencia, @CodCondPagto, @TipoDuplicata,                                                  
                           @TipoDuplicataPedido, @FlagSepararServico,                                                  
                          @SerieControle, @SalvaNumDocumento,                                                   
 @SerieControleServico, @SalvaNumDocumentoServico,                                               
       @QuantNotaItem, @QuantNotaServico, @MensagemErro output                                                  
                                                  
if (LTRim(RTrim(@MensagemErro)) <> '')                                                   
begin                                                  
  return                                                  
end       
Go

--Gabriella - 397525
Alter table Produtos disable trigger all
GO

if not exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[Produtos]') and 
                                                 Name Like 'UnidadeProducao' And
                                                 OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin
  Alter Table Produtos Add UnidadeProducao varchar(3) COLLATE LATIN1_GENERAL_CI_AS
  Alter Table Produtos Add QuantidadeProducao  decimal(18,8)  
end
go

sp_bindefault 'dbo.Caracter', 'Produtos.UnidadeProducao'
go
sp_bindefault 'dbo.Numero', 'Produtos.QuantidadeProducao'
go

Update Produtos Set UnidadeProducao = '' 
where UnidadeProducao is null
go
Update Produtos Set QuantidadeProducao = 0 
where QuantidadeProducao is null
go

Alter Table Produtos Alter Column UnidadeProducao varchar(3) COLLATE LATIN1_GENERAL_CI_AS Not Null
go
Alter Table Produtos Alter Column QuantidadeProducao decimal(18,8) Not Null
go

Alter table Produtos enable trigger all
GO

Alter table ItemOP disable trigger all
GO

Alter table ItemOP Alter Column QuantPedida decimal(13,4) not null
GO
Alter table ItemOP Alter Column QuantAtendida decimal(13,4) not null
GO

Alter table ItemOP enable trigger all
GO

--400345

if not exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[Bancos]') and 
                                                 Name Like 'MensagemProtesto' And
                                                 OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin
  alter table Bancos  add MensagemProtesto varchar(100) COLLATE LATIN1_GENERAL_CI_AS
end
go

sp_bindefault 'dbo.Caracter', 'Bancos.MensagemProtesto' 
go
   
update Bancos set
MensagemProtesto = ''
where
MensagemProtesto is null
go


alter table Bancos  alter column MensagemProtesto varchar(100)  COLLATE LATIN1_GENERAL_CI_AS not null
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),
@CodEntidade char(7)
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)          
-- 386798 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              
          

/*386798 
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

--Ronaldo Chamado 401206
ALTER procedure [dbo].[Stored_Prft110GeraNota] (                                                                  
@Ped_Sequencia int,                                                                                              
@Empresa numeric(2),                                                                                              
@TipoControle numeric(1),                                                                                              
@CodControle numeric(9),                                                                                              
@ContadorNota numeric(3))                                                                                              
as                                                                                              
/**********************                                      
VERSÃO 3.02                                     
**********************/                                      
--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);
--Gabriella - 392386
declare @SumValorItensSomenteImposto decimal(18,2);
declare @AuxSumValorItensSomenteImposto decimal(18,2);
declare @ValorProdutosTotalCalc decimal(11,2);
declare @ValorItensSomenteImposto decimal(18,2);
declare @FlagSomenteImposto smallint;  
                                                                                       
                                                                                              
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),   
       --Gabriella - 392386
       @ValorItensSomenteImposto = isnull(Sum(Ped.ValorItensSomenteImposto),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  

--Gabriella - 392386
Set @ValorProdutosTotalCalc = @ValorProdutosTotal - @ValorItensSomenteImposto
  
-- 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,
            --Gabriella - 392386
            Mov.FlagSomenteImposto                 
     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,
            --Gabriella - 392386
            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,
              --Gabriella - 392386
              @FlagSomenteImposto                                                                 
                                                                                              
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            
                                                 
    --Gabriella - 392386                             
    --If (@AuxCodProduto <> 8888888) and (@ValorProdutosTotal > 0)                                                                         
    If (@AuxCodProduto <> 8888888) and (@ValorProdutosTotalCalc > 0)                                                                         
    begin                                                                                              
      --Gabriella - 333391         
      if @FlagDespesasIPI = 1 and @AuxAliqIPI > 0    
      begin                       
        --Gabriella - 392386
        --set @AuxAcrescimoBaseIPI = (@AuxValorTotal/@ValorProdutosTotal * (@ValorFrete + @ValorSeguro + @ValorDespesas))
        set @AuxAcrescimoBaseIPI = (@AuxValorTotal/@ValorProdutosTotalCalc * (@ValorFrete + @ValorSeguro + @ValorDespesas))
      end
      --Gabriella - 360317               
      else if @AuxAliqIPI = 0 and @OprTipoIPI = 0 
      begin
        --Gabriella - 392386
        --Set @AuxAcrescimoBaseIPI = (@AuxValorTotal/@ValorProdutosTotal) * (0 - @ValorDesconto)
        Set @AuxAcrescimoBaseIPI = (@AuxValorTotal/@ValorProdutosTotalCalc) * (0 - @ValorDesconto)
      end
      else
        set @AuxAcrescimoBaseIPI = 0   
                                                                                                                                                                      
      if @AuxAcrescimoBaseIPI is null                                                                                        
        Set @AuxAcrescimoBaseIPI = 0       
        
      --Gabriella - 392386
      --Set @AuxAcrescimoBaseICM = (@ValorFrete + @ValorSeguro + @ValorDespesas - @ValorDesconto) * (@AuxValorTotal / @ValorProdutosTotal)                                                                                              
      Set @AuxAcrescimoBaseICM = (@ValorFrete + @ValorSeguro + @ValorDespesas - @ValorDesconto) * (@AuxValorTotal / @ValorProdutosTotalCalc)                                                                                              
                                                                                      
       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                                                                                  
       --Gabriella - 392386
       --Set @AuxAcrescimoBaseSubTrib = (@AuxAcrescimoBaseSubTrib - @ValorDesconto) * (@AuxValorTotal / @ValorProdutosTotal)                                                                 
       Set @AuxAcrescimoBaseSubTrib = (@AuxAcrescimoBaseSubTrib - @ValorDesconto) * (@AuxValorTotal / @ValorProdutosTotalCalc)                                                                 
                                                                                      
       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 
       
      --Gabriella - 392386
      if @FlagSomenteImposto = 1
      begin
        Set @AuxAcrescimoBaseIPI = 0
        Set @AuxAcrescimoBaseICM = 0
        Set @AuxAcrescimoBaseSubTrib = 0
      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,
                  --Gabriella - 392386
                  @FlagSomenteImposto                                                                  
                                                                                              
End                                                                                           
Close CursorItem                                                                                              
Deallocate CursorItem                                                                                              
                                                                            
                                                                            
--Acumula as variaveis de total da nota fiscal e dos componentes                                                                   
Set @SumValorProdutos = 0                                                                            
Set @SumValorBaseICM = 0                                      
Set @SumValorIPI = 0                                                                            
Set @SumValorICM = 0                                                                            
Set @SumValorSubTrib = 0                                     
Set @SumValorBaseSubTrib = 0                                                                            
--MARCELO - CHAMADO 195051                                      
Set @SumValorSubTribCarga = 0                                                  
Set @SumValorBaseSubTribCarga = 0                                                                            
Set @SumValorServicos = 0                                                                            
Set @SumValorBaseISS = 0                                                                            
Set @SumValorProdutosSemImpostos = 0  
--Gabriella - 392386
Set @SumValorItensSomenteImposto = 0  
                                                                            
Declare CursorTotal Cursor Local Fast_Forward for                                                                            
    Select                                                                             
      Sum(Case When Mov.CodProduto <> 8888888 then Mov.ValorTotal Else 0 End),                                                        
           Sum(Case When Mov.CodProduto <> 8888888 then Mov.ValorBaseICM Else 0 End),                                                                            
           --Gabriella - 333391  
           /*Sum(Case When Mov.CodProduto <> 8888888                                                                                               
                    then round(Mov.ValorTotal * (((100 + Mov.AliqIPI) / 100) - 1),2)                      
                    Else 0 End),*/             
           Sum(Case When Mov.CodProduto <> 8888888                                                                                               
                    then round((MI.ValorBaseIPI + MI.ValorIsentoIPI + MI.ValorOutrasIPI)   
                                * (((100 + Mov.AliqIPI) / 100) - 1),2)                      
                    Else 0 End),                                                                                                
           Sum(Case When Mov.CodProduto <> 8888888                                                             
                    then round(Mov.ValorBaseICM * (((100 + Mov.AliqICM) / 100) - 1),2)                                                              
                    Else 0 End),                                                                            
           --MARCELO - CHAMADO 182639                                                        
           Sum(Case When Mov.CodProduto <> 8888888 then Mov.ValorSubTrib Else 0 End),                                                                            
           Sum(Case When Mov.CodProduto <> 8888888 then Mov.ValorBaseSubTrib Else 0 End),                                                                            
--MARCELO - CHAMADO 195051                                      
           Sum(Case When Mov.CodProduto <> 8888888 then Mov.ValorSubTribCarga Else 0 End),                                                                  
           Sum(Case When Mov.CodProduto <> 8888888 then Mov.ValorBaseSubTribCarga Else 0 End),                                                                 
           Sum(Case When Mov.CodProduto = 8888888 then Mov.ValorTotal Else 0 End),                                                                            
           Sum(Case When Mov.CodProduto = 8888888 and Ser.FlagCalcularISS = 1                                                                            
                    then Mov.ValorBaseICM + Mov.ValorOutrasICM Else 0 End),                                                                   
           Sum(Case When Mov.CodProduto <> 8888888                                                                                               
                    Then Round(Mov.ValorTotal * Mov.FatorRedVenda,2) Else 0 End),  
           --Gabriella - 392386
           Sum(Case When Mov.CodProduto <> 8888888 and Mov.FlagSomenteImposto = 1
               then Mov.ValorTotal Else 0 End)
      From MovEstoque Mov                                                                                              
      Left Join Servicos Ser on Ser.codigo = Mov.CodServico  
      --Gabriella - 333391  
      Left Join MovEstoqueImposto MI on MI.Empresa = Mov.Empresa  
                                    and MI.NumLancamento = Mov.NumLancamento                                                                                             
      Where Mov.Empresa = @Empresa                                                        
        and Mov.TipoControle = @TipoControle                                                                                              
        and Mov.CodControle = @CodControle                                                                                              
        and not exists(Select * From MovComponente Comp                                                                      
                        Where Comp.Empresa = Mov.Empresa                                                                            
                          and Comp.NumLancamento = Mov.NumLancamento)                                                                            
    UNION ALL                                                
    Select                                                              
           Sum(Case When Comp.CodProduto <> 8888888 then Comp.ValorTotal Else 0 End),                                                                            
           Sum(Case When Comp.CodProduto <> 8888888 then Comp.ValorBaseICM Else 0 End),                                                                            
           --Gabriella - 333391  
           /*Sum(Case When Comp.CodProduto <> 8888888                               
                    then round(Comp.ValorTotal * (((100 + Comp.AliqIPI) / 100) - 1),2)                                                                                              
                    Else 0 End), */      
           Sum(Case When Comp.CodProduto <> 8888888                               
                    then round((Comp.ValorBaseIPI + Comp.ValorIsentoIPI + Comp.ValorOutrasIPI)  
                          * (((100 + Comp.AliqIPI) / 100) - 1),2)                                                                                              
                    Else 0 End),                                                                                                
           Sum(Case When Comp.CodProduto <> 8888888                                                                            
                    then round(Comp.ValorBaseICM * (((100 + Comp.AliqICM) / 100) - 1),2)                                                                                              
                    Else 0 End),                                                                            
           --MARCELO - CHAMADO 182639                                                  
           Sum(Case When Comp.CodProduto <> 8888888 then Comp.ValorSubTrib Else 0 End),                                                                            
           Sum(Case When Comp.CodProduto <> 8888888 then Comp.ValorBaseSubTrib Else 0 End),                                                                            
--MARCELO - CHAMADO 195051                                      
           Sum(Case When Comp.CodProduto <> 8888888 then Comp.ValorSubTribCarga Else 0 End),                                                                            
           Sum(Case When Comp.CodProduto <> 8888888 then Comp.ValorBaseSubTribCarga Else 0 End),                                                                            
           0,                                                                        
           0,                                                                   
           Sum(Case When Comp.CodProduto <> 8888888                                                                                               
                    Then Round(Comp.ValorTotal * Comp.FatorRedVenda,2) Else 0 End),
           --Gabriella - 392386
           0                                         
    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,
      @AuxSumValorItensSomenteImposto                    
while @@fetch_Status = 0                                                                            
begin                                                                            
  If not (@AuxSumValorProdutos is null)                                                                            
     Set @SumValorProdutos = @SumValorProdutos + @AuxSumvalorProdutos                                                                            
                                                                            
  If not (@AuxSumValorBaseICM is null)                                                                            
     Set @SumValorBaseICM = @SumValorBaseICM + @AuxSumValorBaseICM                                                  
                                                                            
  If not (@AuxSumValorIPI is null)                                
     Set @SumValorIPI = @SumValorIPI + @AuxSumValorIPI                                            
                                                                          
  If not (@AuxSumValorICM is null)                                                                            
     Set @SumValorICM = @SumValorICM + @AuxSumValorICM                                                                            
                                                                            
  If not (@AuxSumValorSubTrib is null)                                                                            
     Set @SumValorSubTrib = @SumValorSubTrib + @AuxSumValorSubTrib                                                                            
                                                                            
  If not (@AuxSumValorBaseSubTrib is null)                                                                            
     Set @SumValorBaseSubTrib = @SumValorBaseSubTrib + @AuxSumValorBaseSubTrib                                               
                                      
--MARCELO - CHAMADO 195051                                      
  If not (@AuxSumValorSubTribCarga is null)                                                                            
     Set @SumValorSubTribCarga = @SumValorSubTribCarga + @AuxSumValorSubTribCarga                                      
                                                                            
  If not (@AuxSumValorBaseSubTribCarga is null)                                                                            
     Set @SumValorBaseSubTribCarga = @SumValorBaseSubTribCarga + @AuxSumValorBaseSubTribCarga                                               
                                                                            
  If not (@AuxSumValorServicos is null)                       
     Set @SumValorServicos = @SumValorServicos + @AuxSumValorServicos                                                                            
                                                                            
  If not (@AuxSumValorBaseISS is null)                        
     Set @SumValorBaseISS = @SumValorBaseISS + @AuxSumValorBaseISS                                                                            
                                                                            
  If not (@AuxSumValorProdutosSemImpostos is null)                                                                            
     Set @SumValorProdutosSemImpostos = @SumValorProdutosSemImpostos + @AuxSumValorProdutosSemImpostos                                                                         
     
  --Gabriella - 392386
  If not (@AuxSumValorItensSomenteImposto is null)                                                                            
     Set @SumValorItensSomenteImposto = @SumValorItensSomenteImposto + @AuxSumValorItensSomenteImposto      
                                            
   Fetch Next From CursorTotal Into  @AuxSumValorProdutos, @AuxSumValorBaseICM, @AuxSumValorIPI,                                                                            
         @AuxSumValorICM,  @AuxSumValorSubTrib, @AuxSumValorBaseSubTrib,                    
--MARCELO - CHAMADO 195051                                      
         @AuxSumValorSubTribCarga, @AuxSumValorBaseSubTribCarga, @AuxSumValorServicos,                                                                            
         @AuxSumValorBaseISS, @AuxSumValorProdutosSemImpostos,
         --Gabriella - 392386
         @AuxSumValorItensSomenteImposto
end                                                                            
Close CursorTotal                                                                            
Deallocate CursorTotal                                                                            
                                 
                                                                                              
                                                                                              
--Atualiza os Totais referentes a Produtos, somados a partir dos itens da nota fiscal                                                                                              
Update NotasFiscais                                                                                            
   Set ValorProdutos    = @SumValorProdutos,                                                                                              
       ValorIPI         = @SumValorIPI,                                                                                              
       ValorBaseICM     = @SumValorBaseICM,                                                                                              
       ValorICM         = @SumValorICM,                   
       ValorSubTrib     = @SumValorSubTrib,                                                                                              
       ValorBaseSubTrib = @SumValorBaseSubTrib,                                          
       ValorServicos    = @SumValorServicos,                                                                                              
--Eder - Chamado 182639                                                          
--MARCELO - CHAMADO 195051                                      
       ValorSubTribCarga     = @SumValorSubTribCarga,                                                                                              
       ValorBaseSubTribCarga = @SumValorBaseSubTribCarga,                                                                                              
       ValorProdutosSemImpostos = @SumValorProdutosSemImpostos,   
       --Gabriella - 392386
       ValorItensSomenteImposto = @SumValorItensSomenteImposto,                                                                                           
       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)                                                                                
      --Ronaldo Chamado 47368
      --Order By NumLancamento                                                                                                     
      Order By ValorTotal desc
      
                                                                     
      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)                                                                                              
      --Ronaldo Chamado 47368
      --Order By NumLancamento                                                                                                     
      Order By ValorTotal desc                                                                                            
                                                  
      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),    
 --Gabriella - 392386    
 @NotaValorItensSomenteImposto decimal(18,2)                                                                    
)                                                                                
as                              
                      
/***********************                      
VERSÃO 3.02    
***********************/                                                                        
                                                                                
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);    
--Gabriella - 392386    
declare @NotaValorProdutosCalc decimal(11,2);      
declare @FlagSomenteImposto smallint;      
           
                  
--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      
    
--Gabriella - 392386    
Set @NotaValorProdutosCalc = @NotaValorProdutos - @NotaValorItensSomenteImposto         
                                          
/*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,    
            --Gabriella - 392386    
            T.FlagSomenteImposto    
     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,     
            --Gabriella - 392386    
            0 as FlagSomenteImposto                                                 
     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,    
       --Gabriella - 392386    
       @FlagSomenteImposto                                        
 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               
                    
                                                           
   --Gabriella - 392386                                                        
   --If (@CodProduto <> 8888888) and (@NotaValorProdutos > 0)                               
   If (@CodProduto <> 8888888) and (@NotaValorProdutosCalc > 0)                                                                              
   begin               
     --Gabriella - 333391                    
     if @FlagDespesasIPI = 1 and @AliqIPI > 0         
     begin    
       --Gabriella - 392386    
       --set @AcrescimoBaseIPI = (@ValorTotal/@NotaValorProdutos * (@NotaValorDespesas))    
       set @AcrescimoBaseIPI = (@ValorTotal/@NotaValorProdutosCalc * (@NotaValorDespesas))    
     end    
     --Gabriella - 360317                   
     else if @AliqIPI = 0 and @OprTipoIPI = 0    
     begin    
       --Gabriella - 392386    
       --Set @AcrescimoBaseIPI = (@ValorTotal/@NotaValorProdutos) * (0 - @NotaValorDesconto)    
       Set @AcrescimoBaseIPI = (@ValorTotal/@NotaValorProdutosCalc) * (0 - @NotaValorDesconto)    
     end    
     else    
       set @AcrescimoBaseIPI = 0                                         
                                                         
     If @AcrescimoBaseIPI is null                                                        
       Set @AcrescimoBaseIPI = 0     
                     
     --Gabriella - 392386                                                                        
     --Set @AcrescimoBaseICM = (@NotaValorDespesas - @NotaValorDesconto) * (@ValorTotal / @NotaValorProdutos)                                                                                 
     Set @AcrescimoBaseICM = (@NotaValorDespesas - @NotaValorDesconto) * (@ValorTotal / @NotaValorProdutosCalc)                                                                                 
                                                        
      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 */                                                   
          
      --Gabriella - 392386    
      --Set @AcrescimoBaseSubTrib = (@AcrescimoBaseSubTrib - @NotaValorDesconto) * (@ValorTotal / @NotaValorProdutos)                                                     
      Set @AcrescimoBaseSubTrib = (@AcrescimoBaseSubTrib - @NotaValorDesconto) * (@ValorTotal / @NotaValorProdutosCalc)                                                     
                                                        
      Set @AcrescimoRedVenda = @NotaValorDespesasVenda * (@ValorTotal / @NotaValorProdutos)       
          
      --Gabriella - 392386    
      if @FlagSomenteImposto = 1    
      begin    
        Set @AcrescimoBaseIPI = 0    
        Set @AcrescimoBaseICM = 0    
        Set @AcrescimoBaseSubTrib = 0    
      end                                                                                    
   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,    
         --Gabriella - 392386    
         @FlagSomenteImposto                               
 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)                                                                              
      --Ronaldo Chamado 401206
      --order by SeqTemporaria, NumLancamento                                                                                
      Order by ValorTotal desc
                                                                            
      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)                                                                              
      --Ronaldo Chamado 401206
      --order by SeqTemporaria, NumLancamento, NumSequencia   
      Order by ValorTotal desc                                          
                                                                            
      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

--402652

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

sp_bindefault 'dbo.Numero', 'ParamControleSerie.TipoGerarInforConsumidorFinal' 
go
   
update ParamControleSerie set
  TipoGerarInforConsumidorFinal = Case when ParamControleSerie.FlagPrincipal = 1 then 1 
                                       when ParamControleSerie.FlagPrincipal = 0 then 2 
                                  Else 0 end
where
TipoGerarInforConsumidorFinal is null

go


alter table ParamControleSerie  alter column TipoGerarInforConsumidorFinal SmallInt   not null
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 (@TipoCalcExterno = 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 (@TipoCalcExterno in(2,3,4,6,7,9,10,11))) and ((@FlagItemContemLetraComissao = 0)  or (@FlagComissaoLetraListaPreco  = 0) ) )  
     OR  
     ((@TipoCalculo = 1) and (@TipoCalcExterno = 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  
  
--401108  ( (@TipoCalculo = 2) and (@TipoCalcInterno = 1) and  (@FlagItemContemLetraComissao = 0) or (@flagcomissaoLetralistaPreco = 0 ) )  
     ( (@TipoCalculo = 2) and (@TipoCalcParceiro = 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 (@TipoCalcParceiro in(2,3,4,6,7,9,10,11))) and ((@flagitemcontemletracomissao = 0)  or (@FlagComissaoLetraListaPreco  = 0) ) )  
     OR  
     ((@TipoCalculo = 1) and (@TipoCalcParceiro = 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 FUNCTION [dbo].[Calcular_ICM]                                        
(@Empresa numeric(2),                                                                                                                                                                                
 @CodProduto numeric(7),                                                                                                                                                                                
 @CodTributacao  char(5),                                                                                                                                                                                
 @CodEntidade char(7),                                                                                                                                                                                
 @CodOperacao numeric(5),                                                                                                                                                                                
 @ValorTotal  decimal(11,2),                                                                                                                                                                                
 @AcrescimoBaseICM decimal(11,2),                                                                                                                                                                                
 @AcrescimoBaseSubTrib decimal(11,2),                                                                                                                                                                            
 @RedBaseSubTrib decimal(5,2),                  
 @AliqIPI decimal(4,2),                                                                                                                                                                                
 @CodClassFiscal varchar(15),                                                                                                                                                                                
 @FlagEntrada numeric(1),                                                                                                                                                                                    
 @AcrescimoRedVenda decimal(11,2),                                                                                                                                                                                
 @CodListaPreco numeric(7),                                                                                                                                                                                
 @AliqICMFixo decimal(4,2),                                                                                                                                                          
 @CodSubTributaria integer,                                                                       
 -- Renato - 278440                                                                                                                 
 --@PerAcrescimoRedCusto decimal(15,8)                                                                    
 @PerRedDespesa decimal(15,8),                                         
 --Gabriella - 333391                                        
 @AcrescimoBaseIPI decimal(11,2)                                        
)                                                                                                                                                                                  
Returns @Campos Table                                                                                                                                                                                
      (AliqICM decimal(4,2),                   
       ValorBaseICM decimal (11,2),                            
       ValorICM decimal (11,2),                      
       ValorIsentoICM decimal(11,2),                     
       ValorOutrasICM decimal(11,2),                           
       ValorBaseSubTrib decimal(11,2),                                                        
       PerReducaoICM decimal(5,2),                                                          
       PerRedBaseSubTrib decimal(5,2),                  
       ValorSubTrib decimal (11,2),                                                                                                
       ValorBaseSubTribCarga decimal(11,2),                                                                                                          
       ValorSubTribCarga decimal(11,2),                                                                                                                       
       FatorRedCusto decimal (15,8),                                                                                                              
       FatorRedVenda decimal (7,4),                                                                                                                                  
       NumCFOP char(10),                                                                                                                                  
       AliqPISCOFINS decimal (4,2),                                                                    
       -- Renato - Chamado 272165                                                                    
       ValorBasePisCofins decimal (11,2),                                                                    
       AliqPis decimal (4,2),                                                            
       AliqCofins decimal (4,2),                                                            
       NumCstICM varchar(3),                                                            
       NumCstIPI varchar(2),                                                            
       NumCstPisCofins varchar(2),                                                            
       NumCsosn varchar(3),                                                      
       -- Renato - 297792                                                      
       NatReceitaPisCofins int,                                        
       -- Renato - 332318                                        
       NatBaseCalcCredito smallint,                                        
       --Ronaldo 343696                            
       IndNaturezaFrete smallint,                            
                                 
       --Gabriella - 333391                                               
       ValorBaseIPI decimal (11,2),                                                                                                                                                                                                                            
 
     
      
        
         
            
              
                
       ValorIsentoIPI decimal(11,2),                                                                                                                                                                                
       ValorOutrasIPI decimal(11,2),                        
         --Renato - 360358                        
       AliqICMSST decimal(5,2),                        
       PercMvaICMSST decimal(5,2),                        
         --Renato - 361650                      
       AliqComplICM Decimal(5,2),                      
       AliqComplPIS Decimal(5,2),                      
       AliqComplCOFINS Decimal(5,2))                                                        
as                                                                                         
                                                                                                  
begin                                                                                                                 
/*********************                                                                                       
   VERSÃO 3.02                
*********************/                                                                                                       
                                                                              
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)                  
--Ronaldo chamado 372149                
Declare @FlagConsiderarSomentePercRedST int                
                                 
                                                                                         
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,                        
       --Ronaldo Chamado 372149                
       @FlagConsiderarSomentePercRedST = FlagConsiderarSomentePercRedST                                                     
  From Tributacoes                                                                                                                                                                                
 Where Codigo=@CodTributacao                                                                                                                
   and IdLeitura = dbo.LeituraTributacao(@CodTributacao,@CodEntidade, @CodOperacao, @AEmpMestre)                                                                  
                                                                                                       
Set @AuxEntidade = @CodEntidade                                                                                                                                                                         
                              
                                                                                                                                                                         
If (@FlagEntrada = 1) and                                                                                                                                                                
   ((Select FlagSubTribEntradaEstado From ParamControle Where Empresa=@Empresa) = 1)                                                                                                                            
begin                                                                                                                                                                                
  select @AuxFlagSubTributaria=FlagSubTributaria,                                                                                                                                                                          
         @AuxCodTributacaoSubTrib=CodTributacaoSubTrib                                                         
    From Tributacoes                                                                                                                                                                                
    Where Codigo=@CodTributacao                                                                          
      and IdLeitura = dbo.LeituraTributacao(@CodTributacao, @AEmpMestre, @CodOperacao, @AEmpMestre)                                          
  If @AuxFlagSubTributaria is null                                                                             
     Set @AuxFlagSubTributaria = 0                                                                                                                                                     
  If @AuxCodTributacaoSubTrib is null                                                                                                 
     Set @AuxCodTributacaoSubTrib = ''                                             
  If (@AuxFlagSubTributaria = 1) and (@AuxCodTributacaoSubTrib <> '')                                                                                                                                                                
  begin                                                                                                                     
    Set @TriCodTributacaoSubTrib = @AuxCodTributacaoSubTrib                                                                                                                                          
    Set @TriFlagSubTributaria =  @AuxFlagSubTributaria                                                             
    Set @AuxEntidade = @AEmpMestre                       
  end                                                                          
end                                                                                       
                                                                                                                                                                                
If (@TriCodTributacaoSubTrib <> '') and                                                                   
   (@TriFlagSubTributaria = 1) and                                             
   (@ClaFlagSubTributaria = 1) and                                
   (@GruFlagSubTributaria = 1) and                                                                                  
   ((@FlagEntrada = 0)  or                                                                                                                                                      
    (@FlagEntrada = 1 and (Select FlagSubTribEntradaEstado From ParamControle Where Empresa=@Empresa) = 1)                                                                                                                                                    
  
    
      
        
          
            
              
                
                  
                    
                    
   )                                                   
begin                                                                                                              
  select @TriAliqICM=AliqICM,                                                                                                                           
         @TriFlagIsentoProdutor=FlagIsentoProdutor,                                                                                                                                         
         @TriFlagSubTributaria=FlagSubTributaria,                                                                            
         @TriMargemLucroSubst=MargemLucroSubst,                                                        
         @TriPerReducaoICM=PerReducaoICM,                                                                                                                                                                               
         @TriPerRedMargem=PerRedMargem,                                                                                                                                  
         @TriTipoCFOP=TipoCFOP,                                                                                                               
         @TriCodTributacaoSubTrib=CodTributacaoSubTrib,                                                        
         @TriTipoValorNaoTributado=TipoValorNaoTributado,                                                                      
         @TriPerReducaoSubTrib = PerReducaoSubTrib,                                                                    
         --Rafael chamado 272635                             
         @TriAliqInternaSubTrib = AliqInternaSubTrib,                                                            
         @TriNumCST_ICM = NumCST_ICM,                                                            
         @TriNumCST_IPI = NumCST_IPI,                                                            
         @TriNumCSOSN = NumCSOSN,                                          
         --Gabriella - 333391                                        
         @TriTipoValorNaoTributadoIPI=TipoValorNaoTributadoIPI,                        
         --Renato - 361650                      
         @TriAliqComplICM = AliqComplICM                                                                    
   From Tributacoes                                                                            
    Where Codigo=@TriCodTributacaoSubTrib                                                                                                                                         
and IdLeitura = dbo.LeituraTributacao(@TriCodTributacaoSubTrib,@AuxEntidade, @CodOperacao, @AEmpMestre)                                                                 
  Set @CodTributacao = @TriCodTributacaoSubTrib                                                        
end                                                                               
                                                                                                                  
If (@TriAliqICM is null)                                                                                                               
   Set @TriAliqICM = 0                                                                          
If (@TriFlagIsentoProdutor is null)                                                                                                                              
   Set @TriFlagIsentoProdutor = 0                                                                                                                                
If (@TriFlagSubTributaria is null)                                                    
   Set @TriFlagSubTributaria = 0                                                                                                                
If (@TriMargemLucroSubst is null)                                                                                                                                                                                
   Set @TriMargemLucroSubst = 0                                                                                                                                                                                
If (@TriPerReducaoICM is null)                                                                                                                                                                                
  Set @TriPerReducaoICM = 0                                                                                                                                  
If (@TriPerRedMargem is null)                                     
   Set @TriPerRedMargem = 0                                                                                                                                      
If (@TriTipoCFOP is null)                                                                                                                                          
   Set @TriTipoCFOP = 0                                                                                  
If (@TriCodTributacaoSubTrib is null)                                                      
   Set @TriCodTributacaoSubTrib = ''                                                                                                                                                                                
If (@TriPerReducaoSubTrib is null)                                                                      
   Set @TriPerReducaoSubTrib = 0                                                                     
--Rafael chamado 272635                                                                    
if (@TriAliqInternaSubTrib is null)                     
   Set @TriAliqInternaSubTrib = 0                                                                    
if @TriNumCST_ICM is null                                                            
  Set @TriNumCST_ICM = 0                                                            
if @TriNumCST_IPI is null                                                            
  Set @TriNumCST_IPI = 0                                                            
if @TriNumCSOSN is null                                                            
  Set @TriNumCSOSN = 0                                                             
if @TriAliqComplICM is null                    
  Set @TriAliqComplICM = 0                    
                                                          
If (@TriTipoValorNaoTributado is null)                                                                                                          
begin                                                                                                                              
  if (@CodProduto = 8888888)                                                 
    Set @TriTipoValorNaoTributado = 1                                                                                                                              
  else                                          
    Set @TriTipoValorNaoTributado = 0                                                                                                                              
end                                           
                                        
--Gabriella - 333391       
If (@TriTipoValorNaoTributadoIPI is null)                                                                                                        
begin                                                                                        
  if (@CodProduto = 8888888)                                                                                                                          
    Set @TriTipoValorNaoTributadoIPI = 1                                                                                                                              
  else                                          
    Set @TriTipoValorNaoTributadoIPI = 0                                                                                                                              
end                                                                     
--Gabriella - 360511                        
--Se não zerar e na tributação estiver zero o item continuará com o perc. de redução de st                        
Set @RedBaseSubTrib = 0                        
                                                                     
--Eder Chamado 271756                          
If @TriPerReducaoSubTrib <> 0                                                    
  Set @RedBaseSubTrib = @TriPerReducaoSubTrib                                     
                                     
                                    
--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                                                
                               
               --Ronaldo Chamado 372149                
               --@RedBaseSubTrib = Case When @RedBaseSubTrib = 0 Then PerReducaoICM Else @RedBaseSubTrib End                                  
               @RedBaseSubTrib = Case When @RedBaseSubTrib = 0 and @FlagConsiderarSomentePercRedST = 0                
                                        Then PerReducaoICM                 
                                        Else @RedBaseSubTrib End                                  
  From Tributacoes                                     
  Where EstadoOrigem=@CodEstadoLeitura                                                                            
     and Codigo=@CodTributacao                                                                                                                
     --MARCELO - CHAMADO 192283                                                                                  
--     and EstadoDestino=@CodEstadoLeitura                                                                                                                                                        
     and RegiaoDestino = @RegiaoDestinoLeitura                                 
     --Eder - 320407                                        
     and AliqICM > 0                                        
   Order By TipoPessoa                   
end                                                                                                           
If (@RedBaseSubTrib is null)                                                                                                          
   Set @RedBaseSubTrib = 0                                    
                                                                                                                                                               
--Gabriella - 381216                                                                 
--Rafael chamado 272635                                                                   
--Sobrepoe a aliquota encontrada, se for informada na tributação                                            
/*If @TriAliqInternaSubTrib <> 0                                                                       
  Set @EstAliqInterna = @TriAliqInternaSubTrib*/                
                                  
If @FlagEntrada = 1                                                                                                                                 
   --Eder - Chamado 184973                                                                                         
   and @OprTipoMovimento <> 1                                                  
   and @TriMargemLucroSubst <> 0                   
   --Ronaldo Chamado 372149                
   --364660                     
   --and @RedBaseSubTrib <> 999.99                  
   and Exists(Select Codigo From Tributacoes                                                                                                                                                                                
               Where EstadoOrigem=@CidEmpCodEstado                                                                                                                                    
                 and Codigo=@CodTributacao                                                                                           
               --MARCELO - CHAMADO 192283                                                                                                              
--               and EstadoDestino=@CidEmpCodEstado                                                                                     
               --Eder - Chamado 243637                                                                                    
               --and RegiaoDestino = @RegiaoDestino                                                                                    
                 and RegiaoDestino = @RegiaoOrigem                                                                                    
                 and AliqICM > 0)                                                                                                                                    
begin                                                                        
  Select Top 1 @EstAliqInterna=AliqICM,                                                                                                                                                          
               --Ronaldo Chamado 372149                
               --@RedBaseSubTrib= Case When @RedBaseSubTrib = 0 Then PerReducaoICM Else @RedBaseSubTrib End                 
               @RedBaseSubTrib = Case When @RedBaseSubTrib = 0 and @FlagConsiderarSomentePercRedST = 0                
                                        Then PerReducaoICM                 
                                        Else @RedBaseSubTrib End                                    
  From Tributacoes                                                                                                                                                                         
  Where EstadoOrigem=@CidEmpCodEstado                                    
     and Codigo=@CodTributacao                                                                                                                                                                                
     --MARCELO - CHAMADO 192283                                                                   
--   and EstadoDestino=@CidEmpCodEstado                                                                                                                                                      
     --Eder - Chamado 243637                                                                            
--   and RegiaoDestino = @RegiaoDestino                                                                                    
     and RegiaoDestino = @RegiaoOrigem                    
     --Eder - 320407                                          
     and AliqICM > 0                                        
   Order By TipoPessoa                                                                             
end                 
                
--Gabriella - 381216                                                                                                               
--Sobrepoe a aliquota encontrada, se for informada na tributação                                                                    
If @TriAliqInternaSubTrib <> 0                                                                       
  Set @EstAliqInterna = @TriAliqInternaSubTrib                
                                                                                                                                                                               
If @EstAliqInterna is null                                                       
   Set @EstAliqInterna = 0                                                                              
                     
--Ronaldo Chamado 372149                
/*--364660                  
-- quando informada 999.99, tem que zerar para não calcular                  
if @RedBaseSubTrib = 999.99                   
  Set @RedBaseSubTrib = 0*/                
                                                                                                                                  
If @CodSubTributaria > 0                                                                               
begin                                                                                                                                     
  Select                                                          
      @SubAliquotaInterna = AliquotaInterna,                       
      @SubMargemLucro = MargemLucro,                                                                                                                                                          
      @SubPercReducao = PercReducao,                                                                                                                                                          
      @SubIndiceReducao = IndiceReducao,                                                                                                                                            
      @SubFlagAbaterICM = FlagAbaterICM,                   
      @SubFlagSomaIPI = FlagSomaIPI                                                                                                                                                          
  From SubstituicaoTributaria                                                                                      
  Where CodSubTributaria = @CodSubTributaria                                                                                                       
    and Empresa = @Empresa                                                                                                                               
end                                                                                                                               
                                                                                                                
  If @SubAliquotaInterna is null                                             
     Set @SubAliquotaInterna = 0                                                                                                                  
  If @SubMargemLucro is null                                      
     Set @SubMargemLucro = 0                                                                                  
  If @SubPercReducao is null                                                                                                                                                   
     Set @SubPercReducao = 0                                                                                                                                                  
  If @SubIndiceReducao is null                                                                                 
     Set @SubIndiceReducao = 0                                                                              
  If @SubFlagAbaterICM is null                                         
     Set @SubFlagAbaterICM = 0                                      
  If @SubFlagSomaIPI is null                                                                                                                     
     Set @SubFlagSomaIPI = 0                                                                                                                                               
                                                                              
--Calculo do CST de ICMS e IPI                                                             
Select @NumCstICM = Case when Op.NumCST_ICM in (-1) then @TriNumCST_ICM                                                             
                         else Op.NumCST_ICM End,                                             
       @NumCstIPI = Case when Op.NumCST_IPI not in (-1)                                        
        then Op.NumCST_IPI   --Operação fiscal prevalece sobre demais.                                                            
                         when @AliqIPI > 0 and Op.TipoIPI = 0 --Item tributado de ipi sera sempre 00 ou 50 (entrada ou saida tributada)                                                            
                         then Case When @FlagEntrada = 1 Then 00 Else 50 End                                                            
                         when Cla.NumCST_IPI not in (-1,0) and (@AliqIPI = 0 or Op.TipoIPI <> 0)                 
                     then Cla.NumCST_IPI -- Class. Fiscal prevalece sobre demais.                                                            
                         when @TriNumCST_IPI not in (-1) and (@AliqIPI = 0 or Op.TipoIPI <> 0)                                                             
                              then @TriNumCST_IPI    -- Item sem ipi pega da tributação se informado                                                                                     
                    End,                                                            
       @NumCsosn  = Case When @ParTipoRegimeTributario in(1,2) --Calculo de CST para Simples nacional                                                            
                       Then Case When Op.NumCSOSN not in(-1,0) then Op.NumCSOSN                                                            
                   Else @TriNumCSOSN                                                     
                              End                                                            
                    End                                                            
  From Produtos Pro                                                            
  Left Join Operacoes Op on Op.Codigo = @CodOperacao                                                            
  Left Join ClassFiscais Cla on Cla.Codigo = @CodClassFiscal                                                            
Where Pro.Codigo = @CodProduto                                            
                                                            
if @NumCstICM <> -1                                 
  Set @NumCstICM = Cast(@ProOrigem as varchar(1)) + Replicate('0', 2 - Len(@NumCstICM)) + Cast(@NumCstICM as varchar(2))                                                            
else               
  Set @NumCstICM = null                                                            
                                                              
--Gabriella - 299680                                                          
if @NumCstIPI <> -1 and @FlagEntrada = 1                                                             
  Set @NumCstIPI = Replicate('0', 2 - Len(@NumCstIPI)) + Cast(@NumCstIPI as varchar(2))                                                           
if @NumCstIPI <> -1 and @FlagEntrada = 0                                                             
  Set @NumCstIPI = Replicate('5', 2 - Len(@NumCstIPI)) + Cast(@NumCstIPI as varchar(2))                                                          
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                                  
              
--Ronaldo Chamado 383605            
if @OprPerRedICM <> 99.99            
begin            
  If @TriPerReducaoICM <> 0 and @ValorBaseIcm <> 0                                                     
  begin                                                                                                                
    Set @ValorBaseIcm = @ValorBaseIcm - ((@ValorBaseIcm * @TriPerReducaoICM) / 100)                                                                                                                                               
    Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino - ((@ValorBaseSubTribDestino * @TriPerReducaoICM) / 100)                                                                                                                                          
  
    
      
        
          
              
    Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino - ((@CalcBaseSubTribDestino * @TriPerReducaoICM) / 100)                                                                                          
  end                                                                                                                     
  If @ValorBaseIcm > 0 and @OprPerRedICM > 0                                                                                                                                                                                
  begin                                                          
    Set @ValorBaseIcm = @ValorBaseIcm - ((@ValorBaseIcm * @OprPerRedICM) / 100)                                                                                                                                                                                
    Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino - ((@ValorBaseSubTribDestino * @OprPerRedICM) / 100)                                                                                                                          
    Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino - ((@CalcBaseSubTribDestino * @OprPerRedICM) / 100)                                                                                   
  end                               
end            
                        
If @ValorBaseIcm > 0 and @AliqICM > 0                                                        
   Set @ValorICM = (@ValorBaseIcm * @AliqICM) / 100                                                     
                                                  
--Ronaldo Chamado 313933                                                  
select @RegTribPercIvaSimplicado = R.PercIvaSimplificado from regimetributario R                                                  
left join entidades E on R.Codigo = E.codRegimeTributario                                                  
where R.empresa = @Empresa and                                                  
      E.codigo  = @CodEntidade                                                  
                                                  
                                                                                                                                                                               
If @TriFlagSubTributaria = 1 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                                                  
   and @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)                                                                                                                                                            
  
   
       
       
          
             
              
  --Ronaldo Chamado 383605             
  --If @RedBaseSubTrib <> 0 and @ValorBaseSubTrib <> 0           
  If @RedBaseSubTrib <> 0 and @ValorBaseSubTrib <> 0 and @OprPerRedICM <> 99.99                                                                                    
     Set @ValorBaseSubTrib = @ValorBaseSubTrib - ((@ValorBaseSubTrib  * @RedBaseSubTrib) / 100)                                                                                
                                                    
  --set @ValorBaseSubTrib = cast('A' + cast(@ValorBaseSubTrib as varchar(20))   as int)             
              
  --Ronaldo Chamado 313933                                                  
  --If @TriMargemLucroSubst <> 999.99                                                                                                     
  --   Set @ValorBaseSubTrib = @ValorBaseSubTrib +  ((@ValorBaseSubTrib * @TriMargemLucroSubst) / 100)                                                                                                                                                         
 
     
      
  --If @ValorBaseSubTrib > 0 and @EstAliqInterna > 0                                                                     
  --   Set @ValorSubTrib = (@ValorBaseSubTrib * @EstAliqInterna) / 100                                                                                                                                                               
  -- Set @ValorSubTrib = @ValorSubTrib - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                                                     
  if @RegTribPercIvaSimplicado > 0 and @EstAliqInterna > 0                                                  
  begin                                                  
     set @ValorSubTrib     = round(@ValorbaseSubTrib * @RegTribPercIvaSimplicado / 100,2)                                                  
     set @ValorBaseSubTrib = round((@ValorIcm + @ValorSubTrib) / @EstAliqInterna * 100,2)                                                  
  end                                                  
  else                                                  
  begin                                                   
    If @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)                                                                                                                                               
  
    
      
        
          
            
                                                                                                      
  --Ronaldo Chamado 383605              
  --If @RedBaseSubTrib <> 0 and @ValorBaseSubTribCarga  <> 0                                                                                                                                                          
  If @RedBaseSubTrib <> 0 and @ValorBaseSubTribCarga  <> 0 and @OprPerRedICM <> 99.99             
   Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga - ((@ValorBaseSubTribCarga  * @RedBaseSubTrib) / 100)                                                                                                                                                   
  
    
      
        
          
              
            
  --Ronaldo Chamado 313933                                                    
  --If @TriMargemLucroSubst <> 999.99                                                                                                                                           
  --   Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga +  ((@ValorBaseSubTribCarga * @TriMargemLucroSubst) / 100)                                                                                                                                          
  
    
      
        
          
            
              
               
  --If @ValorBaseSubTribCarga > 0 and @EstAliqInterna > 0                                                                                                                                   
  --   Set @ValorSubTribCarga = (@ValorBaseSubTribCarga * @EstAliqInterna) / 100                                    
  --Set @ValorSubTribCarga = @ValorSubTribCarga - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                                                  
  if @RegTribPercIvaSimplicado > 0 and @EstAliqInterna > 0                                                  
     begin                                                  
        set @ValorSubTribCarga     = round(@ValorBaseSubTribCarga * @RegTribPercIvaSimplicado / 100,2)                                                  
        set @ValorBaseSubTribCarga = round((@ValorIcm + @ValorSubTribCarga) / @EstAliqInterna * 100,2)                                                  
     end                                                  
  else                                                  
     begin                                                   
       If @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                                                                      
     --Eder - 383214 - Quando ha redução na base, considerar apenas a parte tributada para outras (St)          
     --Set @ValorOutrasICM = @ValorOutrasICM + @ValorBaseICM + @ValorIsentoICM                                  
     if (@ValorIsentoICM <> 0 and @ValorBaseICM <> 0)          
       Set @ValorOutrasICM = @ValorBaseICM          
     else          
     begin        
       Set @ValorOutrasICM = @ValorBaseICM + @ValorIsentoICM          
       Set @ValorIsentoICM = 0     
     end          
  end                                                                                                                                
  Set @ValorBaseIcm = 0                                                                                                                                                                  
  Set @ValorICM = 0                                                                                                                                                                  
end                                                                                                                                                                                
                                                                         
            
              
                
                  
                    
                                                                                                         
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) 
  begin
    --397007  
    if (@AcrescimoRedVenda > @ValorTotal)
      Set @FatorRedVenda = 0
    else  
      Set @FatorRedVenda = @FatorRedVenda - Round(((@AcrescimoRedVenda * 100) / @ValorTotal) / 100,4)
  end
                                                                
  --Renato - 290579                                                                  
  -- Se for uma venda fora do estado com ICMS, e os Percentuais de ICMS e SubTrib da Compra estiverem informados                                                                  
  -- na Lista de Preco vai abater o ICMS da compra no Custo.                                                                  
  If ((@CidEmpCodEstado <> @CidCodEstado) and (@ValorICM > 0) and (@PercICMCusto > 0) and (@PercSubTribCusto > 0))                                                 
    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        
    -- danilo If @EntTipoPessoa in('F','N','C','P')  
    If @EntTipoPessoa in('F','N')  
      Set @NumCFOP = @OprCFOP9_Petroleo_NC                                                                                                                                                                                
    Else                                                                                                                                                                                
      Set @NumCFOP = @OprCFOP9_Petroleo                                                                                                                                     
  end   
end                                                                                                 
                                                                                                                             
If Substring(@NumCFOP,1,1) in ('1','2','3') and @CidCodEstado <> @CidEmpCodEstado                                                                                                                                            
   If @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado = 'EX'                                                    
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'3')                                                                                                                            
 Else                                                                                                  
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'2')                                                                                                                                                                                   
If Substring(@NumCFOP,1,1) in ('5','6','7') and @CidCodEstado <> @CidEmpCodEstado                                                                                                                                                                             
  
    
 If @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado = 'EX'                                                                                                                                               
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'7')                                                                                         
   Else                                                                                                          
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'6')                                                                
                                                                                                      
--MARCELO - CHAMADO 209798                                                                                 
/*                                                                                                      
CFOP 5.405 não existe o seu correlado 6.405 para vendas fora do estado,                                                                                                       
devendo ser utilizado em seu lugar o CFOP 6.404, conforme reunião defina                                                      
com Eder                                                                            
*/                                                                                                    
--Rafael chamado 224824                                                                   
  --6.405  -> 6.404                                                                                                
  --6405  --> 6404                                                                                                
                                                                                                
--if (Replace(@NumCFOP,'.','') = '6405')                                                              
  --set @NumCFOP = '6404'                                                                                                 
                                                                                            
if (@NumCFOP  = '6.405')                                                                                                      
  set @NumCFOP = '6.404'                                                                                                      
                                                                                     
if (@NumCFOP  = '6405')                                                                                                 
  set @NumCFOP = '6404'                                                                                              
                                                                                                                        
If @NumCFOP is null                                                                                                                                                                  
   Set @NumCFOP = ''                                       
                                                                                                                                                                                 
If @AliqICM is null                                                                                        
   Set @AliqICM=0                                       
                                                                                                                                                  
if @CodProduto = 8888888                                  
Begin                                                    
  -- Renato - 341779                                       
  if (@OprFlagICMSSobreServicos = 0) or (@OprTipoIcm in (1,2))                                
  begin                     
    set @AliqICM = 0                                                                                                                                                                  
    set @ValorBaseIcm = 0                                                                               
    set @ValorICM = 0                                                                                
    set @ValorIsentoICM = 0                                                                                                                      
    set @ValorOutrasICM = 0                                                 
                           
    if (@OprFlagICMSSobreServicos = 0)                                      
    begin                                        
 -- Mantendo compatibilidade com versões antigas, ou seja, se o usuario não marcar o FlagICMSSobreServicos                                       
   -- o sistema não muda a forma de gerar os impostos dos serviços.                                                                         
      if (@TriTipoValorNaoTributado = 0)                                                                          
        set @ValorIsentoICM = @ValorTotal + @AcrescimoBaseICM                                                                                                                          
      else                                                                                                                
        set @ValorOutrasICM = @ValorTotal + @AcrescimoBaseICM                                        
    end                                      
    else                                      
    begin                                      
      if (@OprTipoIcm = 1)                                                                          
        set @ValorIsentoICM = @ValorTotal + @AcrescimoBaseICM                                                             
      else                                                                                                                
        set @ValorOutrasICM = @ValorTotal + @AcrescimoBaseICM                                        
    end                                      
                                                                                                                                          
  end                              
  else if ((@OprFlagICMSSobreServicos = 1) and (@OprTipoIcm = 0) and ((@AliqICM = 0) or (@ValorBaseIcm = 0)) )                                      
  begin                                      
    if (@TriTipoValorNaoTributado = 0)                                       
      set @ValorIsentoICM = @ValorTotal + @AcrescimoBaseICM                                                                                                                          
    else                       
      set @ValorOutrasICM = @ValorTotal + @AcrescimoBaseICM                                       
  end                                      
                                          
  set @ValorBaseSubTrib = 0                                                                                                                                                                 
  set @ValorSubTrib = 0                                                                                                                               
  set @ValorBaseSubTribCarga = 0                                                                                                                                       
  set @ValorSubTribCarga = 0                                                                                                                                                                  
  set @RedBaseSubTrib = 0                     
--Eder - Chamado  170325                                                                                                                      
--  set @FatorRedCusto = 1                                                                                                        
  set @FatorRedVenda = 1                                                                                                                                                                  
  set @AliqPISCOFINS = 0                                        
                                                                                                    
end                                                                    
                                                            
                         
--Eder - 297029                                                             
--383214 If (@ValorBaseICM > 0 and @ValorIsentoICM > 0)                        
If ((@ValorBaseICM > 0 or @ValorOutrasICM > 0) and @ValorIsentoICM > 0)                        
begin                          
  --Renato - 361064                         
  if (@TriPerReducaoICM = 0) and (@OprPerRedICM <> 0)                          
    Set @PerReducaoICM = @OprPerRedICM                        
  else if (@TriPerReducaoICM <> 0) and (@OprPerRedICM = 0)                          
    Set @PerReducaoICM = @TriPerReducaoICM                         
  else                        
    Set @PerReducaoICM = Round(@ValorIsentoICM / (@ValorBaseICM + @ValorIsentoICM) * 100,2)                                                                                 
end                       
else                                       
  Set @PerReducaoICM = 0                            
                        
                             
                                                                                                   
--Define o valor de isento ou o valor de outras para o que não foi tributado                                                                                                                                                            
if @CodProduto <> 8888888 and @ValorIsentoICM > 0                                                 
begin                                                                                   
  --Chamado 156315 - calculando errado valor de isentas com tributação com coluna de outras                                                                                                                        
 If @OprTipoICM = 2 or                                                                                     
    (@TriTipoValorNaoTributado = 1 and @OprTipoICM = 0)                                         
  begin                                                                                                                                                          
    If  not (@OprTipoSubTributaria in(2,3) and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                                                                                
           and @EstFlagConvSub = 1                                                                                                                                                             
            and (@TriFlagSubTributaria = 1 or @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

--Gabriella - 403908
if not exists(select * from sysobjects where name like 'EstoqueProdutoCompra')
begin
	Create Table EstoqueProdutoCompra (
      CodProduto                numeric(7,0) not null,	
	  Empresa                   numeric(2,0) not null,	  
	  QuantPendenciaCompra      decimal(10,3) not null,
	  QuantPendenciaVendaCasada decimal(10,3) not null, 	
	  DataEntregaCompra         datetime,	
	  DataAtualizacao           datetime,	  		  	  
	  StatusTransacao           smallint not null,
	  TransacaoEmpresas         varchar(50) Collate Latin1_General_CI_AS not null 
		
	  CONSTRAINT PK_EstoqueProdutoCompra PRIMARY KEY CLUSTERED 
	  (
	    CodProduto ASC,
		Empresa ASC		
	  ) ON [PRIMARY]
	)
	exec sp_bindefault 'dbo.Numero',   'EstoqueProdutoCompra.CodProduto'	
	exec sp_bindefault 'dbo.Numero',   'EstoqueProdutoCompra.Empresa'	
	exec sp_bindefault 'dbo.Numero',   'EstoqueProdutoCompra.QuantPendenciaCompra'		
	exec sp_bindefault 'dbo.Numero',   'EstoqueProdutoCompra.QuantPendenciaVendaCasada'				
	exec sp_bindefault 'dbo.Numero',   'EstoqueProdutoCompra.StatusTransacao'
	exec sp_bindefault 'dbo.Caracter', 'EstoqueProdutoCompra.TransacaoEmpresas'
	
	Insert into EstoqueProdutoCompra(CodProduto, Empresa, QuantPendenciaCompra, QuantPendenciaVendaCasada,
	                                 DataEntregaCompra, StatusTransacao, TransacaoEmpresas)
	Select CodProduto, Empresa, QuantPendenciaCompra, QuantPendenciaVendaCasada,           
           DataEntregaCompra, StatusTransacao, TransacaoEmpresas
    From EstoqueProduto
end									
GO

if exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[EstoqueProduto]') and 
                                              Name Like 'QuantPendenciaCompra' And
                                              OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin
  exec sp_unbindefault 'EstoqueProduto.QuantPendenciaCompra'
  Alter Table EstoqueProduto Drop Column QuantPendenciaCompra

  exec sp_unbindefault 'EstoqueProduto.QuantPendenciaVendaCasada'
  Alter Table EstoqueProduto Drop Column QuantPendenciaVendaCasada

  Alter Table EstoqueProduto Drop Column DataEntregaCompra
end
GO

if exists (Select * from sys.triggers Where object_id = OBJECT_ID(N'[dbo].[UpdateItemPedidoCompra]'))
DROP TRIGGER [dbo].[UpdateItemPedidoCompra]
GO

if exists (Select * from sys.triggers Where object_id = OBJECT_ID(N'[dbo].[DeleteItemPedidoCompra]'))
DROP TRIGGER [dbo].[DeleteItemPedidoCompra]
GO

if exists (Select * from sys.triggers Where object_id = OBJECT_ID(N'[dbo].[InsertItemPedidoCompra]'))
DROP TRIGGER [dbo].[InsertItemPedidoCompra]
GO

ALTER Trigger  [dbo].[TriggerIncluiEmpresa] on [dbo].[Empresas]
for insert, update /*  
                      Insert => Se der um insert manualmente no banco
                      update => Pelo programa é atualizado a EmpresaEstoque pelo Update
                    */
as
/*********************
VERSÃO 3.03
*********************/

--Gabriella - 353832
If Exists(SELECT * from ConfiguracaoSistema where FlagTransacaoSnapShot = 1)
  SET TRANSACTION ISOLATION LEVEL READ COMMITTED  
  
  insert into EstoqueProduto
         (CodProduto, Empresa, ClasseABC, StatusTransacao)
     select 
       distinct
       Produtos.Codigo,
       Inserted.EmpresaEstoque,
       'N',
       1 as StatusTransacao
       from Produtos, Inserted
       where Inserted.EmpresaEstoque > 0
         and not Exists(Select * from EstoqueProduto 
                         where EstoqueProduto.Empresa = Inserted.EmpresaEstoque
                         and EstoqueProduto.CodProduto = Produtos.Codigo)
  
  --Gabriella - 403908                      
  insert into EstoqueProdutoCompra
         (CodProduto, Empresa, StatusTransacao)
     select 
       distinct
       Produtos.Codigo,
       Inserted.EmpresaEstoque,
       1 as StatusTransacao
       from Produtos, Inserted
       where Inserted.EmpresaEstoque > 0
         and not Exists(Select * from EstoqueProdutoCompra 
                         where EstoqueProdutoCompra.Empresa = Inserted.EmpresaEstoque
                         and EstoqueProdutoCompra.CodProduto = Produtos.Codigo)                         

  
  insert into EstoqueDetalhado
      (CodProduto, EmpresaEstoque, CodTipo, StatusTransacao)
   select 
      distinct
      Produtos.Codigo,
      Inserted.EmpresaEstoque,
      TipoEstoque.Codigo,
      1 
      from Produtos, Inserted, TipoEstoque
      where Inserted.EmpresaEstoque > 0
         and not Exists(Select * from EstoqueDetalhado Ed
                        where Ed.EmpresaEstoque = Inserted.EmpresaEstoque
                          and Ed.CodProduto = Produtos.Codigo
                          and Ed.CodTipo = TipoEstoque.Codigo)
GO

ALTER Trigger  [dbo].[TriggerIncluiProduto] on [dbo].[Produtos]
for insert
as
/*********************
VERSÃO 3.03
*********************/

--Gabriella - 353832
If Exists(SELECT * from ConfiguracaoSistema where FlagTransacaoSnapShot = 1)
  SET TRANSACTION ISOLATION LEVEL READ COMMITTED  

Declare @Codigo numeric(7)

declare Cursor1 Cursor Local Fast_Forward for
    Select Codigo
      From Inserted
Open Cursor1
Fetch Next From Cursor1 Into @Codigo
While @@Fetch_Status = 0
Begin
   
   Exec QuebraProdutosPesquisa @Codigo, 0

   Fetch Next From Cursor1 Into @Codigo
End
Close Cursor1
Deallocate Cursor1



insert into EstoqueProduto (CodProduto, Empresa, ClasseABC, StatusTransacao)
      select distinct Inserted.Codigo, Empresas.EmpresaEstoque, 'N', 1
          from Inserted, Empresas
       Where Not exists(Select CodProduto From EstoqueProduto Es
                         Where Es.CodProduto = Inserted.Codigo
                           and Es.Empresa = Empresas.EmpresaEstoque)
                           
--Gabriella - 403908
insert into EstoqueProdutoCompra (CodProduto, Empresa, StatusTransacao)
      select distinct Inserted.Codigo, Empresas.EmpresaEstoque, 1
          from Inserted, Empresas
       Where Not exists(Select CodProduto From EstoqueProdutoCompra Esc
                         Where Esc.CodProduto = Inserted.Codigo
                           and Esc.Empresa = Empresas.EmpresaEstoque)


insert into EstoqueDetalhado
    (CodProduto, EmpresaEstoque, CodTipo, StatusTransacao)
 select 
    distinct
      Inserted.Codigo,
      Empresas.EmpresaEstoque,
      TipoEstoque.Codigo,
      1 
      from Inserted, Empresas, TipoEstoque
      where Empresas.EmpresaEstoque > 0
        and not Exists(Select * from EstoqueDetalhado Ed
                        where Ed.EmpresaEstoque = Empresas.EmpresaEstoque
                          and Ed.CodProduto = Inserted.Codigo
                          and Ed.CodTipo = TipoEstoque.Codigo)
GO

ALTER Trigger  [dbo].[TriggerDeletaProduto] on [dbo].[Produtos]
for delete 
as
/*********************
VERSÃO 3.03
*********************/

--Gabriella - 353832
If Exists(SELECT * from ConfiguracaoSistema where FlagTransacaoSnapShot = 1)
  SET TRANSACTION ISOLATION LEVEL READ COMMITTED  

  Delete ProdutosPesquisa
     From ProdutosPesquisa, Deleted
     Where ProdutosPesquisa.Codigo = Deleted.Codigo


  Delete ItemListaPreco
     From ItemListaPreco, Deleted
     Where ItemListaPreco.CodProduto = Deleted.Codigo


  Delete ComposicaoProduto
     From ComposicaoProduto, Deleted
     Where ComposicaoProduto.CodProdutoPrin = Deleted.Codigo or
           ComposicaoProduto.CodProdutoComp = Deleted.Codigo


  Delete NumerosAux
     From NumerosAux, Deleted
     Where NumerosAux.CodProduto = Deleted.Codigo


  Delete CoeficientesProduto
     From CoeficientesProduto, Deleted
    where CoeficientesProduto.CodProduto = Deleted.Codigo  

  delete Lotes
    From Deleted
    Where Lotes.CodProduto = Deleted.Codigo
     
  

  Update ItemPedidoCompra
       Set CodProduto = 9999999
       From ItemPedidoCompra, Deleted
       Where ItemPedidoCompra.CodProduto = Deleted.Codigo
	 and Deleted.Codigo <> 8888888 


  Update MovEstoque 
     Set CodProduto = 9999999
     From MovEstoque, Deleted
     Where MovEstoque.CodProduto = Deleted.Codigo
       and Deleted.Codigo <> 8888888 

  Update MovEstoque 
     Set CodProdutoMov = 9999999
     From MovEstoque, Deleted
     Where MovEstoque.CodProdutoMov = Deleted.Codigo
       and Deleted.Codigo <> 8888888 

  Delete EstoqueProduto
     from  EstoqueProduto, Deleted
     where EstoqueProduto.CodProduto = Deleted.Codigo
  
  --Gabriella - 403908   
  Delete EstoqueProdutoCompra
     from  EstoqueProdutoCompra, Deleted
     where EstoqueProdutoCompra.CodProduto = Deleted.Codigo     

  Delete EstoqueDetalhado
     from  EstoqueDetalhado, Deleted
     where EstoqueDetalhado.CodProduto = Deleted.Codigo

  Delete DescricaoProduto
     from  DescricaoProduto, Deleted
     where DescricaoProduto.CodProduto = Deleted.Codigo

  
  Delete CodigoBarraProdutos
    from CodigoBarraProdutos, Deleted
    where CodigoBarraProdutos.CodProduto = Deleted.Codigo

  Delete ProdutosSugeridos
     From ProdutosSugeridos, Deleted
     Where ProdutosSugeridos.CodProduto = Deleted.Codigo or
           ProdutosSugeridos.CodProdutoSugerido = Deleted.Codigo

  -- Rafael chamado 268479
  Delete ItensCatalogo
     From ItensCatalogo, Deleted
     Where ItensCatalogo.CodProduto = Deleted.Codigo
  
  --Gabriella - 353940   
  Delete NFeRelacaoProduto
    from NFeRelacaoProduto, Deleted
    where NFeRelacaoProduto.CodProduto = Deleted.Codigo
GO    
     
ALTER procedure [dbo].[AcumulaDetalhadoRetroativo]
(
  @CodUsuario Numeric(10,5),
  @FlagAgruparEntidade smallint,  
  @FlagDevolverPedidosEmAberto smallint,
  @FlagSomenteEmpresa smallint,
  @FlagSomaEntradaReservada smallint,
  @FlagSomaSaidaReservada smallint
)
as 
begin
  set nocount on                                              

--1-Ainda não esta utilizando as variaveis:  @FlagDevolverPedidosEmAberto, @FlagSomenteEmpresa, 
--                                           @FlagSomaEntradaReservada, @FlagSomaSaidaReservada
--2-Não está somando custos

  declare @SaldoEstoque decimal (11,2)
  declare @ValorCustoFor decimal (13,4)
  declare @ValorCustoMed decimal (13,4)
  declare @ValorCustoUlt decimal (13,4)
  declare @ValorCustoUltReal decimal (13,4)
  declare @CodProduto int
  declare @EmpresaEstoque Int
  declare @CodEntidade char(7)
  declare @CodTipo int
  
  declare @Contador int
  declare @AuxCodTipoEstoque int
  declare @AuxCodTipoContra int
  declare @AuxQuantTipo decimal(13,4)
  declare @AuxQuantTipoContra decimal(13,4)

  declare @AuxDataEstoque DateTime
  Declare @AuxNumLancamento int
  
  declare @IDEmpresa varchar(20)
  
  
  Delete From TempDataEstoqueDetalhado
  Where CodUsuario = @CodUsuario

  Declare Cursor1 Cursor Local Fast_Forward
    For
    Select MAux.CodProduto, MAux.EmpresaEstoque,
           Case When @FlagAgruparEntidade = 1 Then Mov.CodEntidade 
                Else '' End as CodEntidade,    
           MAux.CodTipoEstoque, MAux.CodTipoEstoqueContra,                  
           Sum(Case When MAux.CodTipoEstoque > 0 and MAux.TipoMovimento = 1 Then MAux.QuantAtendida                  
                    When MAux.CodTipoEstoque > 0 and MAux.TipoMovimento = 2 Then MAux.QuantAtendida * -1                  
                    Else 0 End) as QuantTipo,                  
           Sum(Case When MAux.CodTipoEstoqueContra > 0 and MAux.TipoMovimento = 1 Then MAux.QuantAtendida * -1                  
                    When MAux.CodTipoEstoqueContra > 0 and MAux.TipoMovimento = 2 Then MAux.QuantAtendida                  
                    Else 0 End) as QuantTipoContra,
           Max(TData.DataEstoque) as DataEstoque
       From TempDataEstoqueRetroativo TData       
       Left Join MovEstoqueAux MAux on MAux.CodProduto = TData.CodProduto 
                                   and MAux.EmpresaEstoque = TData.EmpresaEstoque
       Left Join MovEstoque Mov on Mov.Empresa = MAux.Empresa
                               and Mov.NumLancamento = MAux.NumLancamento   
       Where TData.CodUsuario = @CodUsuario
         and MAux.CodProduto = TData.CodProduto
         and MAux.DataMovimento <= TData.DataEstoque 
         and MAux.TipoMovimento in (1,2)               
         and (Maux.CodTipoEstoque <> 0 or MAux.CodTipoEstoqueContra <> 0)
       Group by MAux.CodProduto, MAux.EmpresaEstoque,
                Case When @FlagAgruparEntidade = 1 Then Mov.CodEntidade 
                     Else '' End,
                MAux.CodTipoEstoque, MAux.CodTipoEstoqueContra                
       Order by MAux.CodProduto, MAux.EmpresaEstoque
      
  Open Cursor1
  Fetch Next From Cursor1 Into @CodProduto, @EmpresaEstoque, @CodEntidade,
                @AuxCodTipoEstoque, @AuxCodTipoContra, @AuxQuantTipo, @AuxQuantTipoContra, @AuxDataEstoque
  While @@FETCH_STATUS = 0
  begin
    Set @Contador = 0
    While @Contador <= 2
    begin
      Set @Contador = @Contador + 1
      
      Set @CodTipo = 0
      Set @SaldoEstoque = 0
      if @Contador = 1
      begin
        Set @CodTipo = @AuxCodTipoEstoque
        Set @SaldoEstoque = @AuxQuantTipo
      end
      else
      begin
        Set @CodTipo = @AuxCodTipoContra
        Set @SaldoEstoque = @AuxQuantTipoContra
      end      
      
      Set @ValorCustoFor = 0
      set @ValorCustoMed = 0
      Set @ValorCustoUlt = 0
      Set @ValorCustoUltReal = 0 

      If @CodTipo <> 0 
      begin  
        Update TempDataEstoqueDetalhado
          Set SaldoEstoque = @SaldoEstoque,
              ValorCustoFor = @ValorCustoFor,
              ValorCustoMed = @ValorCustoMed,
              ValorCustoUlt = @ValorCustoUlt,
              ValorCustoUltReal = @ValorCustoUltReal
        Where CodUsuario = @CodUsuario
          and EmpresaEstoque = @EmpresaEstoque
          and CodProduto = @CodProduto
          and CodTipo = @CodTipo
          and CodEntidade = @CodEntidade
          
        if @@ROWCOUNT = 0
        begin
          Insert into TempDataEstoqueDetalhado(CodUsuario, CodProduto, EmpresaEstoque, CodEntidade, CodTipo, DataEstoque,
                        SaldoEstoque, ValorCustoFor, ValorCustoMed, ValorCustoUlt, ValorCustoUltReal)
                 values (@CodUsuario, @CodProduto, @EmpresaEstoque, @CodEntidade, @CodTipo, @AuxDataEstoque,
                        @SaldoEstoque, @ValorCustoFor, @ValorCustoMed, @ValorCustoUlt, @ValorCustoUltReal)
        end
      end
    end
    
    Fetch Next From Cursor1 Into @CodProduto, @EmpresaEstoque, @CodEntidade,
                  @AuxCodTipoEstoque, @AuxCodTipoContra, @AuxQuantTipo, @AuxQuantTipoContra, @AuxDataEstoque
  end
  Close Cursor1
  Deallocate Cursor1
  
  --398033
  Select Top 1 @IDEmpresa = id from Empresas 
  where id <> ''
  
  Set @IDEmpresa = ISNULL(@IDEmpresa, '')

  --Percorre os itens gerados para acertar o custo  
  Declare Cursor2 Cursor Local Fast_Forward For
    Select CodProduto, CodEntidade, EmpresaEstoque, CodTipo, DataEstoque
       From TempDataEstoqueDetalhado
    Where CodUsuario = @CodUsuario
      and SaldoEstoque <> 0 
  Open Cursor2
  Fetch Next From Cursor2 Into @CodProduto, @CodEntidade, @EmpresaEstoque, @CodTipo, @AuxDataEstoque
  While @@Fetch_Status = 0
  begin
    Select Top 1 @AuxNumLancamento = Mov.NumLancamento, 
                 @ValorCustoFor = Mov.ValorCustoFor, 
                 @ValorCustoMed = Mov.ValorCustoMed, 
                 @ValorCustoUlt = Mov.ValorCustoUlt,
                 @ValorCustoUltReal = Mov.ValorCustoUltReal
      from MovEstoqueAux MAux
      Left Join MovEstoque Mov on Mov.Empresa = MAux.Empresa
                              and Mov.NumLancamento = MAux.NumLancamento
     Where MAux.CodProduto = @CodProduto
       and MAux.EmpresaEstoque = @EmpresaEstoque
       and MAux.DataMovimento <= @AuxDataEstoque

--398033  and MAux.TipoMovimento in (1,2)
       and ((@IdEmpresa = 'C NASSER' and @CodTipo in (20,2) and MAux.TipoMovimento = 1)
             OR
             (@IdEmpresa = 'C NASSER' and @CodTipo in (1,10) and MAux.TipoMovimento = 2)
             OR 
             ((@IdEmpresa <> 'C NASSER' or @CodTipo not in (1,2,10,20)) and Maux.TipoMovimento in (1,2)))

       and (Maux.CodTipoEstoque = @CodTipo or MAux.CodTipoEstoqueContra = @CodTipo)
       and Mov.CodEntidade = Case When @FlagAgruparEntidade = 1 Then @CodEntidade 
                                  Else Mov.CodEntidade End    
    Order by MAux.DataMovimento Desc
    
    Update TempDataEstoqueDetalhado
       Set NumLancamentoUltMovEstoque = @AuxNumLancamento,
           ValorCustoFor = Round(SaldoEstoque * @ValorCustoFor,2),
           ValorCustoMed = Round(SaldoEstoque * @ValorCustoMed,2),
           ValorCustoUlt = Round(SaldoEstoque * @ValorCustoUlt,2),
           ValorCustoUltReal = Round(SaldoEstoque * @ValorCustoUltReal,2)
     Where CodUsuario = @CodUsuario
       and CodProduto = @CodProduto
       and CodEntidade = @CodEntidade
       and EmpresaEstoque = @EmpresaEstoque
       and CodTipo = @CodTipo
       and CodEntidade = @CodEntidade  
    Fetch Next From Cursor2 Into @CodProduto, @CodEntidade, @EmpresaEstoque, @CodTipo, @AuxDataEstoque
  end
  Close Cursor2
  Deallocate Cursor2
  
  
  
  
  set nocount off                                              
end
GO

--Gabriella - 401428
if not exists(select * from sysobjects where name like 'OrdemServicoRelacionamento')
begin
	Create Table OrdemServicoRelacionamento (
	  Empresa                   numeric(2,0) not null,	  
	  CodOS                     numeric(9,0) not null,
	  TipoControle              numeric(1,0) not null,	  
	  CodControle               numeric(9,0) not null,  		  	  
	  StatusTransacao           smallint not null,
	  TransacaoEmpresas         varchar(50) Collate Latin1_General_CI_AS not null 
		
	  CONSTRAINT PK_OrdemServicoRelacionamento PRIMARY KEY CLUSTERED 
	  (
	    Empresa ASC,
		CodOS ASC,
		TipoControle ASC,
		CodControle ASC		
	  ) ON [PRIMARY]
	)
	exec sp_bindefault 'dbo.Numero',   'OrdemServicoRelacionamento.Empresa'	
	exec sp_bindefault 'dbo.Numero',   'OrdemServicoRelacionamento.CodOS'	
	exec sp_bindefault 'dbo.Numero',   'OrdemServicoRelacionamento.TipoControle'		
	exec sp_bindefault 'dbo.Numero',   'OrdemServicoRelacionamento.CodControle'				
	exec sp_bindefault 'dbo.Numero',   'OrdemServicoRelacionamento.StatusTransacao'
	exec sp_bindefault 'dbo.Caracter', 'OrdemServicoRelacionamento.TransacaoEmpresas'
end									
GO

Alter Table Veiculos Alter Column NumFrota varchar(20) collate Latin1_General_CI_AS Not Null
go

Alter table OrdemServico disable trigger all
GO

if not exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[OrdemServico]') and 
                                                 Name Like 'NumOSCliente' And
                                                 OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin
  Alter Table OrdemServico Add NumOSCliente varchar(20) collate Latin1_General_CI_AS
  Alter Table OrdemServico Add NumAutorizaFat varchar(20) collate Latin1_General_CI_AS
end
go

sp_bindefault 'dbo.Caracter', 'OrdemServico.NumOSCliente'
go
sp_bindefault 'dbo.Caracter', 'OrdemServico.NumAutorizaFat'
go

Update OrdemServico Set NumOSCliente = ''  
where NumOSCliente is null
go

Update OrdemServico Set NumAutorizaFat = ''  
where NumAutorizaFat is null
go

Alter Table OrdemServico Alter Column NumOSCliente varchar(20) collate Latin1_General_CI_AS Not Null
go
Alter Table OrdemServico Alter Column NumAutorizaFat varchar(20) collate Latin1_General_CI_AS Not Null
go

Alter table OrdemServico enable trigger all
GO

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

sp_bindefault 'dbo.Numero', 'Operacoes.FlagRelacionarOS'
go

Update Operacoes Set FlagRelacionarOS = 0 
where FlagRelacionarOS is null
go

Alter Table Operacoes Alter Column FlagRelacionarOS smallint Not Null
go

--Gabriella - 386495
if not exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[EstoqueProduto]') and 
                                                 Name Like 'EstoqueMaximo' And
                                                 OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin
  Alter Table EstoqueProduto Add EstoqueMaximo int
end
go

sp_bindefault 'dbo.Numero', 'EstoqueProduto.EstoqueMaximo'
go

Update EstoqueProduto Set EstoqueMaximo = 0
where EstoqueMaximo is null
go 

Alter Table EstoqueProduto Alter Column EstoqueMaximo int Not Null
go

--Eder - Chamado 406360
Create Index MovDespesa4 ON MovDespesa(NumLancamento, NumLote, Periodo, Empresa)
GO

--Gabriella - 404852
if not exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[DetalhesEntidadeEmpresa]') and 
                                                 Name Like 'CodRegiaoEntrega' And
                                                 OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin
  Alter Table DetalhesEntidadeEmpresa Add CodRegiaoEntrega Int
end
go

sp_bindefault 'dbo.Numero', 'DetalhesEntidadeEmpresa.CodRegiaoEntrega'
go

Update DetalhesEntidadeEmpresa Set CodRegiaoEntrega = 0 
where CodRegiaoEntrega is null
go

Alter Table DetalhesEntidadeEmpresa Alter Column CodRegiaoEntrega Int Not Null
go

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

sp_bindefault 'dbo.Numero', 'VendedoresComissao.CodRegiaoEntrega'
go

Update VendedoresComissao Set CodRegiaoEntrega = 0 
where CodRegiaoEntrega is null
go

Alter Table VendedoresComissao Alter Column CodRegiaoEntrega Int Not Null
go

--Gabriella - 402801
if not exists(select * from ProdutosOrigemMercadoria where Codigo = 8)
begin
  Insert Into ProdutosOrigemMercadoria(Codigo, DescOrigem, StatusTransacao, TransacaoEmpresas) 
  Values(8, 'Nacional, mercadoria ou bem com Conteúdo de Importação superior a 70%', 1, '')
end
GO	

update ProdutosOrigemMercadoria
set DescOrigem = 'Nacional, mercadoria ou bem com Conteúdo de Importação superior a 40% e inferior ou igual a 70%'
where Codigo = 3
GO

--Gabriella - 406500
if not exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[PortasRelatorio]') and 
                                                 Name Like 'Empresa' And
                                                 OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin
  Alter Table PortasRelatorio add Empresa smallint
end
go

sp_bindefault 'dbo.Numero', 'PortasRelatorio.Empresa' 
go
   
update PortasRelatorio set Empresa = 0
where Empresa is null
go

Alter Table PortasRelatorio alter column Empresa smallint not null 
go

ALTER TABLE dbo.PortasRelatorio DROP CONSTRAINT PK_PortasRelatorio
GO

ALTER TABLE dbo.PortasRelatorio ADD CONSTRAINT
	PK_PortasRelatorio PRIMARY KEY CLUSTERED 
	(
	Empresa,
	CodUsuario,
	Nome
	) ON [PRIMARY]
GO

--Gabriella - 404958
if not exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[Entidades]') and 
                                                 Name Like 'DataValidadeSuframa' And
                                                 OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin
  Alter Table Entidades Add DataValidadeSuframa DateTime
end
go

if not exists (Select * from syscolumns c 
        where c.name like '%MVABaseEntrada%' and OBJECT_NAME(c.id) = 'CLASSFISCAIS')
Alter Table ClassFiscais
  Add MVABaseEntrada decimal(5,2)
GO

update ClassFiscais set
  MVABaseEntrada = 0
where      
  MVABaseEntrada is null
GO

sp_bindefault 'dbo.Numero', 'ClassFiscais.MVABaseEntrada'
GO

Alter Table ClassFiscais
  Alter column MVABaseEntrada decimal(5,2) not null
GO

Alter FUNCTION [dbo].[Calcular_ICM]                                          
(@Empresa numeric(2),                                                                                                                                                                                  
 @CodProduto numeric(7),                                                                                                                                                                                  
 @CodTributacao  char(5),                                                                                                                                                                                  
 @CodEntidade char(7),                                                                                                                                                                                  
 @CodOperacao numeric(5),                                                                                                                                                                                  
 @ValorTotal  decimal(11,2),                                                                                                                                                                                  
 @AcrescimoBaseICM decimal(11,2),                                                                                                                                                                                  
 @AcrescimoBaseSubTrib decimal(11,2),                                                                                                                                                                              
 @RedBaseSubTrib decimal(5,2),                    
 @AliqIPI decimal(4,2),                                                                                                                                                                                  
 @CodClassFiscal varchar(15),                                                                                                                                                                                  
 @FlagEntrada numeric(1),                                                                                                                                                                                      
 @AcrescimoRedVenda decimal(11,2),                                                                                                                                                                                  
 @CodListaPreco numeric(7),                                                                                                                                                                                  
 @AliqICMFixo decimal(4,2),                                                                                                                                                            
 @CodSubTributaria integer,                                                                         
 -- Renato - 278440                                                                                                                   
 --@PerAcrescimoRedCusto decimal(15,8)                                                                      
 @PerRedDespesa decimal(15,8),                                           
 --Gabriella - 333391                                          
 @AcrescimoBaseIPI decimal(11,2)                                          
)                                                                                                                                                                                    
Returns @Campos Table                                                                                                                                                                                  
      (AliqICM decimal(4,2),                     
       ValorBaseICM decimal (11,2),                         
       ValorICM decimal (11,2),                        
       ValorIsentoICM decimal(11,2),                       
       ValorOutrasICM decimal(11,2),                             
       ValorBaseSubTrib decimal(11,2),                                                          
       PerReducaoICM decimal(5,2),                                                            
       PerRedBaseSubTrib decimal(5,2),                    
       ValorSubTrib decimal (11,2),                                                                                                  
       ValorBaseSubTribCarga decimal(11,2),                                                                                                            
       ValorSubTribCarga decimal(11,2),                                                                                                                         
       FatorRedCusto decimal (15,8),                                                                                                                
       FatorRedVenda decimal (7,4),                                                                                                                                    
       NumCFOP char(10),                                                                                                                                    
       AliqPISCOFINS decimal (4,2),                                                                      
       -- Renato - Chamado 272165                                                                      
       ValorBasePisCofins decimal (11,2),                                                                      
       AliqPis decimal (4,2),                                                              
       AliqCofins decimal (4,2),                                                              
       NumCstICM varchar(3),                                                              
       NumCstIPI varchar(2),                                                              
       NumCstPisCofins varchar(2),                                                              
       NumCsosn varchar(3),                                                        
       -- Renato - 297792                                                        
       NatReceitaPisCofins int,                                          
       -- Renato - 332318                                          
       NatBaseCalcCredito smallint,                                          
       --Ronaldo 343696                              
       IndNaturezaFrete smallint,                              
                                   
       --Gabriella - 333391                                                 
       ValorBaseIPI decimal (11,2),                                                                                                                                                                                                                           
   
   
       
        
          
           
              
                
                  
       ValorIsentoIPI decimal(11,2),                                                                                                                                                                                  
       ValorOutrasIPI decimal(11,2),                          
         --Renato - 360358                          
       AliqICMSST decimal(5,2),                          
       PercMvaICMSST decimal(5,2),                          
         --Renato - 361650                        
       AliqComplICM Decimal(5,2),                        
       AliqComplPIS Decimal(5,2),                        
       AliqComplCOFINS Decimal(5,2))                                                          
as                                                                                           
                                                                                                    
begin                                                                                                                   
/*********************                                                                                         
   VERSÃO 3.03  
*********************/                                                                                                         
                                                                                
declare @CodEstadoLeitura char(2)                                           
declare @AliqICM decimal(4,2)                   
declare @ValorBaseICM decimal (11,2)                                   
declare @ValorICM decimal (11,2)                                                                                                                                
declare @ValorIsentoICM decimal(11,2)                                                       
declare @ValorOutrasICM decimal(11,2)                                                                
declare @PerReducaoICM decimal(5,2)                                          
declare @ValorBaseSubTrib decimal(11,2)                                                                
declare @ValorSubTrib decimal (11,2)                                                                                                                                               
declare @ValorBaseSubTribCarga decimal(11,2)                                                                                                                                                       
declare @ValorSubTribCarga decimal(11,2)                                                                                                                                                   
declare @FatorRedCusto decimal (15,8)                                                                                                                                                  
declare @FatorRedVenda decimal (7,4)                                                                                                                                              
declare @NumCFOP char(10)                                                                                                       
declare @AliqPISCOFINS decimal(4,2)                                                            
declare @NumCstICM varchar(3)                                                              
declare @NumCstIPI varchar(2)                                                              
declare @NumCstPisCofins varchar(2)                                                              
declare @NumCsosn varchar(3)                                                         
--Renato - 297792                                                        
declare @NatReceitaPisCofins Int                                            
--Renato - 332318                                                           
declare @NatBaseCalcCredito SmallInt                               
--Ronaldo 343696                              
Declare @OprIndNaturezaFrete SmallInt                                          
                                                                                                                                                                       
declare @AEmpMestre char(7)                                                                                                                                                           
declare @VAuxValorIPI decimal(11,2)                                                                                                                                                                                  
declare @AuxCodTributacaoSubTrib Char(5)                                                                   
declare @AuxFlagSubTributaria numeric(1)                                                                                                                                                 
declare @AuxEntidade char(7)                                                                                                                                                            
declare @ValorBaseSubTribDestino decimal(11,2)                                                                                                                         
                                         
declare @CalcBaseSubTrib decimal(11,2)                         
declare @CalcValorSubTrib decimal (11,2)                                       
declare @CalcBaseSubTribDestino decimal(11,2)                                                                       
                                                                                    
declare @ParTipoReducaoICM numeric(1)                                                                               
declare @ParAliqCPMF decimal(4,2)                                                                                                                            
declare @ParTipoRegimeTributario smallint                                                              
declare @ParAliqICMSimples decimal(4,2)                                                              
                                                              
declare @EntTipoPessoa char(1)                                                                                                                                                            
declare @CidCodEstado char(2)                                                                                                       
declare @EstAliqContrib decimal(4,2)                                                         
declare @EstFlagConvSub numeric(1)                                                                                                                                        
declare @EstAliqInterna decimal(4,2)                                                                                                                                
                                                                            
declare @CidEmpCodEstado char(2)                                                                                                                                                                          
declare @TriAliqICM decimal(4,2)                                                                             
declare @TriFlagIsentoProdutor numeric(1)                                                                                                                                                                        
declare @TriFlagSubTributaria numeric(1)                                                                                                                                                                                  
declare @TriMargemLucroSubst decimal(5,2)                                                                                                                                    
--Gabriella - 302581                                          
--declare @TriPerReducaoICM decimal(4,2)                                          
declare @TriPerReducaoICM decimal(6,4)                                          
declare @TriPerRedMargem decimal(4,2)                                                                                                                   
declare @TriTipoCFOP numeric(2)                                                                                                                                                        
declare @TriCodTributacaoSubTrib char(5)                                                                              
declare @TriTipoValorNaoTributado numeric(1)                                                                                                                                                                                  
declare @TriPerReducaoSubTrib numeric(6,2)                                                                      
--Rafael chamado 272635                                                                      
declare @TriAliqInternaSubTrib numeric(5,2)        
declare @TriNumCST_ICM smallint                                       
declare @TriNumCST_IPI smallint                                                              
declare @TriNumCSOSN smallint                             
                                                              
declare @ClaFlagSubTributaria numeric(1)                                                            
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)                    
--Ronaldo chamado 372149                  
Declare @FlagConsiderarSomentePercRedST int                  
                                   
--389093
declare @ClaMVABaseEntrada decimal (5,2)
declare @MVA decimal(18,8)

                                                                                           
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,
--389093
         @ClaMVABaseEntrada = MVABaseEntrada
    From ClassFiscais                                              
    Where Codigo=@CodClassFiscal                                                              
end

If (@ClaFlagSubTributaria is null)                                                                                                                                              
  Set @ClaFlagSubTributaria = 1                                                                                                                 
If (@ClaAliqPISCOFINS is null)                                                                              
  Set @ClaAliqPISCOFINS = 0                                                                                       
if @ClaMVABaseEntrada is null
  Set @ClaMVABaseEntrada = 0
                                 
                                           
select @OprTipoICM                      = TipoICM,                                                                                                                                                                                  
       @OprTipoIPI                      = TipoIPI,                                                                                                        
       @OprAliqICMFixo                  = AliqICMFixo,                                                                                                  
       @OprPerRedICM                    = PerRedICM,                                                                                                                                                                                  
       @OprPerRedMargem                 = PerRedMargem,                                    
       @OprCFOP1_Normal                 = CFOP1_Normal,                                                                                      
       @OprCFOP1_Normal_NCFora          = CFOP1_Normal_NCFora,                                                                                                                                                                                  
       @OprCFOP2_Industrializado        = CFOP2_Industrializado,                             
       @OprCFOP2_Industrializado_NCFora = CFOP2_Industrializado_NCFora,                                                           
       @OprCFOP3_SubRevenda             = CFOP3_SubRevenda,                                                                                                                                                                                  
       @OprCFOP3_SubRevenda_NC          = CFOP3_SubRevenda_NC,                                                
       @OprCFOP4_SubRevendaML           = CFOP4_SubRevendaML,                                                                                                                                
       @OprCFOP4_SubRevendaML_NC        = CFOP4_SubRevendaML_NC,                          
       @OprCFOP5_SubFabricacao          = CFOP5_SubFabricacao,                                                                                                                     
       @OprCFOP5_SubFabricacao_NC       = CFOP5_SubFabricacao_NC,                                                               
       @OprCFOP6_SubFabricacaoML        = CFOP6_SubFabricacaoML,                                                                                                                       
       @OprCFOP6_SubFabricacaoML_NC     = CFOP6_SubFabricacaoML_NC,                                                                                               
       @OprCFOP7_Importado              = CFOP7_Importado,                                                                                                                              
       @OprCFOP_Servico                 = CFOP_Servico,                                                                                        
       @OprCFOP_Servico_NCFora          = CFOP_Servico_NCFora,                                                                                                                                                              
       @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,                          
       --Ronaldo Chamado 372149                  
       @FlagConsiderarSomentePercRedST = FlagConsiderarSomentePercRedST                                                       
  From Tributacoes                                                                                                                                                                                  
 Where Codigo=@CodTributacao                                                                                                                  
   and IdLeitura = dbo.LeituraTributacao(@CodTributacao,@CodEntidade, @CodOperacao, @AEmpMestre)                                                                    
                                                                                                         
Set @AuxEntidade = @CodEntidade                                                                                                                                                                           
                                
                                                                                                                                                                           
If (@FlagEntrada = 1) and                                                                                                                                                                  
   ((Select FlagSubTribEntradaEstado From ParamControle Where Empresa=@Empresa) = 1)                                                                                                                              
begin                                                                                                                                                                                  
  select @AuxFlagSubTributaria=FlagSubTributaria,                                                                                                                                                                            
         @AuxCodTributacaoSubTrib=CodTributacaoSubTrib                                                           
    From Tributacoes                                                                                                                                                                                  
    Where Codigo=@CodTributacao                                                                            
      and IdLeitura = dbo.LeituraTributacao(@CodTributacao, @AEmpMestre, @CodOperacao, @AEmpMestre)                                            
  If @AuxFlagSubTributaria is null                                                                               
     Set @AuxFlagSubTributaria = 0                                                                                                                                                       
  If @AuxCodTributacaoSubTrib is null                                                                                                   
     Set @AuxCodTributacaoSubTrib = ''                                               
  If (@AuxFlagSubTributaria = 1) and (@AuxCodTributacaoSubTrib <> '')                                                                                                                                                                  
  begin                                                                                                                       
    Set @TriCodTributacaoSubTrib = @AuxCodTributacaoSubTrib                                                                                                                                            
    Set @TriFlagSubTributaria =  @AuxFlagSubTributaria                                                               
    Set @AuxEntidade = @AEmpMestre                         
  end                                                                            
end                                                                                         
                                                                                                                                                                                  
If (@TriCodTributacaoSubTrib <> '') and                                                                     
   (@TriFlagSubTributaria = 1) and                                               
   (@ClaFlagSubTributaria = 1) and                                  
   (@GruFlagSubTributaria = 1) and                                                                                    
   ((@FlagEntrada = 0)  or                                                                                                                                                        
    (@FlagEntrada = 1 and (Select FlagSubTribEntradaEstado From ParamControle Where Empresa=@Empresa) = 1)                                                                                                                                                    
   )                                                     
begin                                                                                                                
  select @TriAliqICM=AliqICM,                                                                                                                             
         @TriFlagIsentoProdutor=FlagIsentoProdutor,                                                                                                                                           
         @TriFlagSubTributaria=FlagSubTributaria,                                                                              
         @TriMargemLucroSubst=MargemLucroSubst,                                                          
         @TriPerReducaoICM=PerReducaoICM,                                                                                                                                                                                 
         @TriPerRedMargem=PerRedMargem,                                                                                                                                    
         @TriTipoCFOP=TipoCFOP,                                                                                                                 
         @TriCodTributacaoSubTrib=CodTributacaoSubTrib,                                                          
         @TriTipoValorNaoTributado=TipoValorNaoTributado,                                                                        
         @TriPerReducaoSubTrib = PerReducaoSubTrib,                                                                      
         --Rafael chamado 272635                               
         @TriAliqInternaSubTrib = AliqInternaSubTrib,                                                              
         @TriNumCST_ICM = NumCST_ICM,                                                              
         @TriNumCST_IPI = NumCST_IPI,                         
         @TriNumCSOSN = NumCSOSN,                                            
         --Gabriella - 333391                                          
         @TriTipoValorNaoTributadoIPI=TipoValorNaoTributadoIPI,                          
         --Renato - 361650                        
         @TriAliqComplICM = AliqComplICM                                                                      
   From Tributacoes                                                                              
    Where Codigo=@TriCodTributacaoSubTrib                                                                                                                                           
and IdLeitura = dbo.LeituraTributacao(@TriCodTributacaoSubTrib,@AuxEntidade, @CodOperacao, @AEmpMestre)                                                                   
  Set @CodTributacao = @TriCodTributacaoSubTrib                                                          
end                                                                                 
                                                                                                                    
If (@TriAliqICM is null)                                                                                                                 
   Set @TriAliqICM = 0                                                                            
If (@TriFlagIsentoProdutor is null)                                                                                                                                
   Set @TriFlagIsentoProdutor = 0                                                                                                                                  
If (@TriFlagSubTributaria is null)                                                      
   Set @TriFlagSubTributaria = 0                                                                                                                  
If (@TriMargemLucroSubst is null)                                                                                                                                                                                  
   Set @TriMargemLucroSubst = 0                                                                                                                                                                                  
If (@TriPerReducaoICM is null)                                                                                                                                                                                  
  Set @TriPerReducaoICM = 0                                                                                                                                    
If (@TriPerRedMargem is null)                                       
   Set @TriPerRedMargem = 0                                                                                                                                        
If (@TriTipoCFOP is null)                                                                                                                                            
   Set @TriTipoCFOP = 0                                                                                    
If (@TriCodTributacaoSubTrib is null)                                                        
   Set @TriCodTributacaoSubTrib = ''                                                                                                                                                                                  
If (@TriPerReducaoSubTrib is null)                                                                        
   Set @TriPerReducaoSubTrib = 0                                                                       
--Rafael chamado 272635                                                                      
if (@TriAliqInternaSubTrib is null)                       
   Set @TriAliqInternaSubTrib = 0                             
if @TriNumCST_ICM is null                                                              
  Set @TriNumCST_ICM = 0                                                              
if @TriNumCST_IPI is null                                                              
  Set @TriNumCST_IPI = 0                                                              
if @TriNumCSOSN is null                                                              
  Set @TriNumCSOSN = 0                                                               
if @TriAliqComplICM is null                      
  Set @TriAliqComplICM = 0                      
                                                            
If (@TriTipoValorNaoTributado is null)                                                                                                            
begin                                                                                                                                
  if (@CodProduto = 8888888)                                                   
    Set @TriTipoValorNaoTributado = 1                                                                                                                                
  else                                            
    Set @TriTipoValorNaoTributado = 0                                                                                                                                
end                                             
                                          
--Gabriella - 333391         
If (@TriTipoValorNaoTributadoIPI is null)                                                                                                          
begin                                                                                          
  if (@CodProduto = 8888888)                                                                                                                            
    Set @TriTipoValorNaoTributadoIPI = 1                                                                                                                                
  else                                            
    Set @TriTipoValorNaoTributadoIPI = 0                                                                                                                                
end                                                                       
--Gabriella - 360511                          
--Se não zerar e na tributação estiver zero o item continuará com o perc. de redução de st                          
Set @RedBaseSubTrib = 0                          
                                                                       
--Eder Chamado 271756                            
If @TriPerReducaoSubTrib <> 0                                                      
  Set @RedBaseSubTrib = @TriPerReducaoSubTrib                                       
  
--389093
if  (@ClaMVABaseEntrada <> 0) and 
((@FlagEntrada = 1 and @OprTipoMovimento <> 1) or  (@FlagEntrada = 0 and @OprTipoMovimento = 1))
  Set @MVA = @ClaMVABaseEntrada
else
  Set @MVA = @TriMargemLucroSubst
                                       
                                      
--JALDO/RONALDO - CHAMADO 309941                                                           
--If @FlagEntrada = 0                                                                                                                                                         
If (@FlagEntrada = 0 or (@FlagEntrada = 1 and @OprTipoMovimento = 1))                                                        
   and @MVA <> 0                                                                                                                                                                                   
   and Exists(Select Codigo From Tributacoes                                                
               Where EstadoOrigem=@CodEstadoLeitura                                                             
        and Codigo=@CodTributacao                                                                                                           
                 --MARCELO - CHAMADO 192283                                                                                        
--                 and EstadoDestino=@CodEstadoLeitura                                                                                                                    
          and RegiaoDestino = @RegiaoDestinoLeitura                                                                                                    
                 and AliqICM > 0)                                                                                                                                                                                  
begin                                                                                                                                  
  Select Top 1 @EstAliqInterna=AliqICM,                                                                
               --MARCELO - CHAMADO 214200                                                                           
               --@RedBaseSubTrib=PerReducaoICM                                                  
                                 
               --Ronaldo Chamado 372149                  
               --@RedBaseSubTrib = Case When @RedBaseSubTrib = 0 Then PerReducaoICM Else @RedBaseSubTrib End                                    
               @RedBaseSubTrib = Case When @RedBaseSubTrib = 0 and @FlagConsiderarSomentePercRedST = 0                  
                                        Then PerReducaoICM                   
                                        Else @RedBaseSubTrib End                                    
  From Tributacoes                                       
  Where EstadoOrigem=@CodEstadoLeitura                                                                              
     and Codigo=@CodTributacao                                                                                                                  
     --MARCELO - CHAMADO 192283                                                                                    
--     and EstadoDestino=@CodEstadoLeitura                                                                                                                                                          
     and RegiaoDestino = @RegiaoDestinoLeitura                                   
     --Eder - 320407                                          
     and AliqICM > 0                                          
   Order By TipoPessoa                     
end                                                                                                             
If (@RedBaseSubTrib is null)                                                                                                            
   Set @RedBaseSubTrib = 0                                      
                                                                                                                                                                 
--Gabriella - 381216                                                                   
--Rafael chamado 272635                                                                     
--Sobrepoe a aliquota encontrada, se for informada na tributação                                              
/*If @TriAliqInternaSubTrib <> 0                                                                         
  Set @EstAliqInterna = @TriAliqInternaSubTrib*/                  
                                    
If @FlagEntrada = 1                                                                                                                                   
   --Eder - Chamado 184973                                                                                           
   and @OprTipoMovimento <> 1                                                    
   and @MVA <> 0                     
   --Ronaldo Chamado 372149                  
   --364660                       
   --and @RedBaseSubTrib <> 999.99                    
   and Exists(Select Codigo From Tributacoes                                                                                                                                                                                  
               Where EstadoOrigem=@CidEmpCodEstado                                                                                                                                      
                 and Codigo=@CodTributacao                                                                                             
               --MARCELO - CHAMADO 192283                                                                                                                
--               and EstadoDestino=@CidEmpCodEstado                                                                                       
               --Eder - Chamado 243637                                                                                      
               --and RegiaoDestino = @RegiaoDestino                                                                                      
                 and RegiaoDestino = @RegiaoOrigem                                                                                      
                 and AliqICM > 0)                                                                                                                                      
begin                                                                          
  Select Top 1 @EstAliqInterna=AliqICM,                                                                                                                                                            
               --Ronaldo Chamado 372149                  
               --@RedBaseSubTrib= Case When @RedBaseSubTrib = 0 Then PerReducaoICM Else @RedBaseSubTrib End                   
               @RedBaseSubTrib = Case When @RedBaseSubTrib = 0 and @FlagConsiderarSomentePercRedST = 0                  
                                        Then PerReducaoICM                   
                                        Else @RedBaseSubTrib End                                      
  From Tributacoes                                                                                                                                                                           
  Where EstadoOrigem=@CidEmpCodEstado                                      
     and Codigo=@CodTributacao                                                                                                                                                                                  
     --MARCELO - CHAMADO 192283                                                                     
--   and EstadoDestino=@CidEmpCodEstado                                                                                                                                                        
     --Eder - Chamado 243637                                                                              
--   and RegiaoDestino = @RegiaoDestino                                                                                      
     and RegiaoDestino = @RegiaoOrigem                      
     --Eder - 320407                                            
     and AliqICM > 0                                          
   Order By TipoPessoa                                                                               
end                   
                  
--Gabriella - 381216                                                                                                                 
--Sobrepoe a aliquota encontrada, se for informada na tributação                                                                      
If @TriAliqInternaSubTrib <> 0                                                                         
  Set @EstAliqInterna = @TriAliqInternaSubTrib                  
                                                               
If @EstAliqInterna is null                                                         
   Set @EstAliqInterna = 0                                                                                
                       
--Ronaldo Chamado 372149                  
/*--364660                    
-- quando informada 999.99, tem que zerar para não calcular                    
if @RedBaseSubTrib = 999.99                     
  Set @RedBaseSubTrib = 0*/                  
                                                                                                                                    
If @CodSubTributaria > 0                                                                                 
begin                                                                                                                                       
  Select                                                            
      @SubAliquotaInterna = AliquotaInterna,                         
      @SubMargemLucro = MargemLucro,                                                                                                                                                            
      @SubPercReducao = PercReducao,                                                                                                                                                            
      @SubIndiceReducao = IndiceReducao,                                                                                                                                              
      @SubFlagAbaterICM = FlagAbaterICM,                     
      @SubFlagSomaIPI = FlagSomaIPI                                                                                                                                                            
  From SubstituicaoTributaria                                                                                        
  Where CodSubTributaria = @CodSubTributaria                                                                                                         
    and Empresa = @Empresa                                                                                                                                 
end                                                                                                                                 
                                                                                                                  
  If @SubAliquotaInterna is null                                               
     Set @SubAliquotaInterna = 0                                                                                                                    
  If @SubMargemLucro is null                                        
     Set @SubMargemLucro = 0                                                                                    
  If @SubPercReducao is null                                                                                                                                                     
     Set @SubPercReducao = 0                                                                                                                                                    
  If @SubIndiceReducao is null                                                                                   
     Set @SubIndiceReducao = 0                                                                                
  If @SubFlagAbaterICM is null                                           
     Set @SubFlagAbaterICM = 0                                        
  If @SubFlagSomaIPI is null                                                                                                                       
     Set @SubFlagSomaIPI = 0                                                                                                                                                 
                                            
--Calculo do CST de ICMS e IPI                                                               
Select @NumCstICM = Case when Op.NumCST_ICM in (-1) then @TriNumCST_ICM                                                               
                         else Op.NumCST_ICM End,                                               
       @NumCstIPI = Case when Op.NumCST_IPI not in (-1)                                          
        then Op.NumCST_IPI   --Operação fiscal prevalece sobre demais.                                                              
                         when @AliqIPI > 0 and Op.TipoIPI = 0 --Item tributado de ipi sera sempre 00 ou 50 (entrada ou saida tributada)                                                              
                         then Case When @FlagEntrada = 1 Then 00 Else 50 End                                                              
                         when Cla.NumCST_IPI not in (-1,0) and (@AliqIPI = 0 or Op.TipoIPI <> 0)                   
                     then Cla.NumCST_IPI -- Class. Fiscal prevalece sobre demais.                                                              
                         when @TriNumCST_IPI not in (-1) and (@AliqIPI = 0 or Op.TipoIPI <> 0)                                                               
                              then @TriNumCST_IPI    -- Item sem ipi pega da tributação se informado                                                                                       
                    End,                                                              
       @NumCsosn  = Case When @ParTipoRegimeTributario in(1,2) --Calculo de CST para Simples nacional                                                              
                       Then Case When Op.NumCSOSN not in(-1,0) then Op.NumCSOSN                                                              
                   Else @TriNumCSOSN                                                       
                              End                                                              
                    End                                                              
  From Produtos Pro                                                              
  Left Join Operacoes Op on Op.Codigo = @CodOperacao                                                              
  Left Join ClassFiscais Cla on Cla.Codigo = @CodClassFiscal                                                              
Where Pro.Codigo = @CodProduto                                              
                                                              
if @NumCstICM <> -1                                   
  Set @NumCstICM = Cast(@ProOrigem as varchar(1)) + Replicate('0', 2 - Len(@NumCstICM)) + Cast(@NumCstICM as varchar(2))                                                              
else                 
  Set @NumCstICM = null                                                              
                                                                
--Gabriella - 299680                                                            
if @NumCstIPI <> -1 and @FlagEntrada = 1                                                               
  Set @NumCstIPI = Replicate('0', 2 - Len(@NumCstIPI)) + Cast(@NumCstIPI as varchar(2))                                                             
if @NumCstIPI <> -1 and @FlagEntrada = 0                                                               
  Set @NumCstIPI = Replicate('5', 2 - Len(@NumCstIPI)) + Cast(@NumCstIPI as varchar(2))                                                            
 --407202
if @NumCstIPI = 49 and @FlagEntrada = 0
  Set @NumCstIPI = 99  
if @NumCstIPI = -1                                                            
  Set @NumCstIPI = null
  
  
                                             
if @NumCsosn <> -1 and @ParTipoRegimeTributario in (1,2) --CSOSN para Simples Nacional                                                              
  Set @NumCsosn = Replicate('0', 3 - Len(@NumCsosn)) + Cast(@NumCsosn as varchar(3))                                                              
else                                                              
  Set @NumCsosn = null                                                              
                                                              
                                                              
If @EntTipoPessoa = 'F' or                                          
   @EntTipoPessoa = 'N'                                                  
   Set @AliqIcm = @TriAliqICM                                                                                                                          
Else                                                                                                                                                 
 --Ronaldo Chamado 317536                                            
 /*IF @TriAliqICM < @EstAliqContrib                               
      Set @AliqICM = @TriAliqICM                                                                                                                                                     
   Else                                               
      Set @AliqICM = @EstAliqContrib*/                                          
  IF @TriFlagPrevalecerAliqIcm = 1                   
    Set @AliqICM = @TriAliqICM                                          
  else                                          
    begin                                          
      IF @TriAliqICM < @EstAliqContrib                                                                         
        Set @AliqICM = @TriAliqICM                                                                                                                                                                
      Else                                    
        Set @AliqICM = @EstAliqContrib                                          
    end                                           
                                                                              
If @CidEmpCodEstado = @CodEstadoLeitura and @TriFlagIsentoProdutor = 1                     
   If @EntTipoPessoa = 'P' or @EntTipoPessoa = 'J' or @EntTipoPessoa = 'C' OR                                                                                  
      @EntTipoPessoa = 'I' --JALDO - CHAMADO 248899                                                                                
      Set @AliqICM = 0                                                                        
                                                              
                                                                                                      
If (@OprTipoICM = 1) or                                                                                          
   (@OprTipoICM = 2 and @FlagEntrada = 0) or                                                              
   (@OprTipoICM = 2 and @FlagEntrada = 1 and @OprFlagDefaultLancamentoOutras = 0)                                                                                                                                                                           
   Set @AliqICM = 0                                                                                                                                                                                  
                                                                                                                
If @OprAliqICMFixo <> 0                                                                   
   Set @AliqICM = @OprAliqICMFixo                                                                                            
                                                                          
--Eder - Chamado 295277                                             
If @AliqICMFixo <> 0                                                             
begin                                                              
  --O cálculo do ICMS para Simples deve ser feito após o calculo da ST pois a ST considera aliquotas internas normais de ICMS                                                              
  If @ParTipoRegimeTributario in (1,2) and  --- Simples Nacional ou com excesso de sublimite receita bruta                                                              
     (@FlagEntrada = 0 or (@FlagEntrada = 1 and @OprTipoMovimento = 1))  --Saida ou entrada por devolução                                                              
  --Não pode fixar a aliquota de icms no simples senao nao calcula a ST                                           
     Set @AliqICM = @AliqICM                                                              
  else                                                 
     Set @AliqICM = @AliqICMFixo                                                                           
end                             
                                          

--389093
-- calcula MVA ajustado, para fazer equalização de alíquota
if (@ClaMVABaseEntrada <> 0) and 
   ((@FlagEntrada = 1 and @OprTipoMovimento <> 1) or (@FlagEntrada = 0 and @OprTipoMovimento = 1))
begin
/* 
  exemplo:  @AliqICM = 4 e @EstAliqInterna = 18 e @ClaMVABaseEntrada = 52.27
  A = (1 - 0.04) / (1 - 0.18) = 1.170
  B = 1 + 0.5227 = 1.5227
  C = A * B --> 1.170 * 1.5227 = 1.7815
  D = (C - 1) * 100  --> (1.7815 - 1) * 100 = 75.15
*/

  Set @MVA = (1 - (@AliqICM/100)) / (1 - (@EstAliqInterna/100))
  Set @MVA = @MVA * (1 + (@ClaMVABaseEntrada/100))
  Set @MVA = (@MVA - 1) * 100
  Set @MVA = Round (@MVA,2)
end

                                          
--Gabriella - 333391                                                                                      
Set @ValorBaseIPI = @ValorTotal + @AcrescimoBaseIPI                                                                                                                                                                                                           
                                                                                                           
If @ValorBaseIPI > 0 and @AliqIPI > 0                                                         
   Set @VAuxValorIPI = (@ValorBaseIPI * @AliqIPI) / 100                                          
                               
--Somente irá prevalecer o Tipo da Tributação quando a Aliquota de IPI for igual a Zero                                           
-- e o Tipo do Ipi da Operação Fiscal for Tributado                                             
if @AliqIPI = 0 and @OprTipoIPI = 0                                          
begin                                          
 if @TriTipoValorNaoTributadoIPI = 0                                          
   Set @ValorIsentoIPI = @ValorBaseIPI                                            
 if @TriTipoValorNaoTributadoIPI = 1                                          
   Set @ValorOutrasIPI = @ValorBaseIPI                                               
end                                          
                                             
if @OprTipoIPI = 1                                          
  Set @ValorIsentoIPI = @ValorBaseIPI                                           
                         
if @OprTipoIPI = 2                                          
  Set @ValorOutrasIPI = @ValorBaseIPI                                           
                                            
If @AliqIPI = 0                                     
   Set @ValorBaseIPI = 0                                             
                                            
if @ValorIsentoIPI > 0 or @ValorOutrasIPI > 0                                          
  Set @ValorBaseIPI = 0                                                
                                  
                                                                                                                 
---Chamado 114964                                                                                   
--If @OprTipoIPI = 0 or @OprTipoIPI = 3                                                                                                                                                                                  
--Begin             --Gabriella - 333391                                                                                   
--  If @ValorTotal > 0 and @AliqIPI > 0                                               
--     Set @VAuxValorIPI = (@ValorTotal * @AliqIPI) / 100                                                                                                           
--End                                                                                                     
                                                                                                      
                                                                                                                                                    
If @TriFlagSubTributaria = 1                                                                                      
   and @ClaFlagSubTributaria = 1                                                                                                                                                                                   
and @GruFlagSubTributaria = 1                                                                                                                                                                        
   and @MVA <> 0                                           
   and @EstFlagConvSub = 1                                                    
   and @OprTipoICM = 0                                                                                                                
   and @OprTipoSubTributaria > 0                                                                                                                         
begin                                                                                                     
  Set @ValorBaseSubTrib = @ValorTotal + @AcrescimoBaseSubTrib                                                                                                                                        
                              
                                 
  If @OprFlagSubTribIPI = 1                                                                                                                                                                          
     Set @ValorBaseSubTrib = @ValorBaseSubTrib + @VAuxValorIPI                                                                                                                                                             
end                                                                       
                                                                                                                                                                           
--Eder - Chamado 262460                                           
If @OprTipoICM = 0 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1 and @MVA <> 0 and                                                                              
   @OprTipoSubTributariaCarga = 0                                                                               
begin                                    
  Set @ValorBaseSubTribCarga = @ValorTotal + @AcrescimoBaseSubTrib                                                                           
  If @OprFlagSubTribIPI = 1                                                                                       
     Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga + @VAuxValorIPI                                                                                                                                                         
end                                                          
                                                                                                                                              
                                                                        
If @CodSubTributaria > 0                                                                                                                                                        
   and @TriFlagSubTributaria = 1                              
   and @ClaFlagSubTributaria = 1                                                                        
   and @GruFlagSubTributaria = 1                                                              
   and @SubMargemLucro <> 0                                                                                                                                                             
   and @EstFlagConvSub = 1                                                                                                            
begin                                                                                                             
  Set @CalcBaseSubTrib = @ValorTotal + @AcrescimoBaseSubTrib                                                                                     
  If @SubFlagSomaIPI = 1                                                                                                                                                  
     Set @CalcBaseSubTrib = @CalcBaseSubTrib + @VAuxValorIPI                                          
end                                                                                                                                                                               
                                                                                                                                    
Set @ValorBaseICM = @ValorTotal + @AcrescimoBaseICM                                                                                                
Set @ValorBaseSubTribDestino = @ValorTotal + @AcrescimoBaseICM                                                                                                 
Set @CalcBaseSubTribDestino = @ValorTotal + @AcrescimoBaseICM                                                                                                                            
                                                                                                                     
                                                                                 
--JALDO - CHAMADO 243556                              
--O Tipo "2" não estão sendo verificando porque nunca será usado                                                                                              
--If @EntTipoPessoa <> 'J'                                         
--begin                                                                                                              
-- Set @ValorBaseIcm = @ValorBaseIcm + @VAuxValorIPI                                                                                
--  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino + @VAuxValorIPI                                                                                        
--  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino + @VAuxValorIPI                                                                              
--end                                                           
                                                                                      
--JALDO - CHAMADO 248899                                                                                  
--if ((@TipoConsideraIPICalculoICM = 0) and (@EntTipoPessoa <> 'J')) or                                                                                               
--   (@TipoConsideraIPICalculoICM = 1)                                                                                               
--begin                                                                                              
--Set @ValorBaseIcm = @ValorBaseIcm + @VAuxValorIPI                                                                                                                                     
--  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino + @VAuxValorIPI                                                                                                       
--  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino + @VAuxValorIPI                                                                           
--end                      
                                          
--Gabriella - 256424                                                                            
--if (@EntTipoPessoa not in ('J','I'))                              
if (@EntTipoPessoa not in ('J','I')) or (@OprFlagIPISobreBaseICM = 1)                                                             
begin                                                                                          
  Set @ValorBaseIcm = @ValorBaseIcm + @VAuxValorIPI                                                                                         
  Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino + @VAuxValorIPI                                                                              
  Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino + @VAuxValorIPI                                                                                                                
end                                                                             
                                                                                                                                
Set @ValorIsentoICM = @ValorBaseIcm                                    
                
--Ronaldo Chamado 383605              
if @OprPerRedICM <> 99.99              
begin              
  If @TriPerReducaoICM <> 0 and @ValorBaseIcm <> 0                                                       
  begin                                                                                                                  
    Set @ValorBaseIcm = @ValorBaseIcm - ((@ValorBaseIcm * @TriPerReducaoICM) / 100)                                                                                                                                                 
    Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino - ((@ValorBaseSubTribDestino * @TriPerReducaoICM) / 100)                                                                                                                                          
    Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino - ((@CalcBaseSubTribDestino * @TriPerReducaoICM) / 100)                                                                                            
  end                                                                                                                       
  If @ValorBaseIcm > 0 and @OprPerRedICM > 0                                                                                                                                                                                  
  begin                                                            
    Set @ValorBaseIcm = @ValorBaseIcm - ((@ValorBaseIcm * @OprPerRedICM) / 100)                                                                                                                                                                                
    Set @ValorBaseSubTribDestino = @ValorBaseSubTribDestino - ((@ValorBaseSubTribDestino * @OprPerRedICM) / 100)                                                                                                                            
    Set @CalcBaseSubTribDestino = @CalcBaseSubTribDestino - ((@CalcBaseSubTribDestino * @OprPerRedICM) / 100)                                                                                     
  end                                 
end              
                          
If @ValorBaseIcm > 0 and @AliqICM > 0                                                          
   Set @ValorICM = (@ValorBaseIcm * @AliqICM) / 100                                                       
                                                    
--Ronaldo Chamado 313933                                                    
select @RegTribPercIvaSimplicado = R.PercIvaSimplificado from regimetributario R                                                    
left join entidades E on R.Codigo = E.codRegimeTributario                                        
where R.empresa = @Empresa and                                                    
      E.codigo  = @CodEntidade                                                    
                                                    
                                                                                                                                                                                 
If @TriFlagSubTributaria = 1 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                                                    
   and @MVA <> 0 and @EstFlagConvSub = 1 and @OprTipoICM = 0 and @OprTipoSubTributaria > 0                                                                                                                              
Begin                                                                                                          
--Eder - Chamado 243557  -- Teste específico para o Cliente pois ainda não sabemos se outros clientes aceitarão a modificação                                                                                          
--Eder - Chamado 243557                                                     
  if (@EmpId = 'ALPHA PNEUS') and @TriPerReducaoICM > 0                                                                    
     If @OprFlagSubTribIPI = 1                                                                                                     
       Set @ValorBaseSubTrib = @ValorBaseSubTrib - (((@ValorBaseSubTrib - @VAuxValorIPI) * @TriPerReducaoICM) / 100)                                                                                                                                          
     Else                                                                                    
       Set @ValorBaseSubTrib = @ValorBaseSubTrib - ((@ValorBaseSubTrib  * @TriPerReducaoICM) / 100)                                                                                                                                                            
  --Ronaldo Chamado 383605               
  --If @RedBaseSubTrib <> 0 and @ValorBaseSubTrib <> 0             
  If @RedBaseSubTrib <> 0 and @ValorBaseSubTrib <> 0 and @OprPerRedICM <> 99.99                                                                                      
     Set @ValorBaseSubTrib = @ValorBaseSubTrib - ((@ValorBaseSubTrib  * @RedBaseSubTrib) / 100)                                                                                  
                                                      
  --set @ValorBaseSubTrib = cast('A' + cast(@ValorBaseSubTrib as varchar(20))   as int)               
                
  --Ronaldo Chamado 313933                                                    
  --If @TriMargemLucroSubst <> 999.99                                                                                                       
  --   Set @ValorBaseSubTrib = @ValorBaseSubTrib +  ((@ValorBaseSubTrib * @TriMargemLucroSubst) / 100)                                                                                                                                                         
  --If @ValorBaseSubTrib > 0 and @EstAliqInterna > 0                                                                       
  --   Set @ValorSubTrib = (@ValorBaseSubTrib * @EstAliqInterna) / 100                                                                                                                                                                 
  -- Set @ValorSubTrib = @ValorSubTrib - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                                                       
  if @RegTribPercIvaSimplicado > 0 and @EstAliqInterna > 0                                                    
  begin                                                    
     set @ValorSubTrib     = round(@ValorbaseSubTrib * @RegTribPercIvaSimplicado / 100,2)                                                    
     set @ValorBaseSubTrib = round((@ValorIcm + @ValorSubTrib) / @EstAliqInterna * 100,2)                                                    
  end                                                    
  else                                                    
  begin                                                     
    If @MVA <> 999.99                                                                                    
      Set @ValorBaseSubTrib = @ValorBaseSubTrib +  ((@ValorBaseSubTrib * @MVA) / 100)                                                                                                                                                         
    If @ValorBaseSubTrib > 0 and @EstAliqInterna > 0                                                                                                                                                                                  
         Set @ValorSubTrib = (@ValorBaseSubTrib * @EstAliqInterna) / 100                                                                                                                           
    Set @ValorSubTrib = @ValorSubTrib - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                                                       
  end                                                     
End                                                                                             
                                                                                      
                                                                                                                
--Eder - Chamado 262460                                                                              
If @OprTipoICM = 0 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1 and @MVA <> 0 and                                                                              
   @OprTipoSubTributariaCarga = 0                            begin                                                            
--Eder - Chamado 243557 -- Teste específico para o Cliente pois ainda não sabemos se outros clientes aceitarão a modificação                                      
  if (@EmpId = 'ALPHA PNEUS') and @TriPerReducaoICM > 0                               
     If @OprFlagSubTribIPI = 1                                                                                              
       Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga - (((@ValorBaseSubTribCarga - @VAuxValorIPI) * @TriPerReducaoICM) / 100)                                                                                                                            
     Else                        
     Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga - ((@ValorBaseSubTribCarga  * @TriPerReducaoICM) / 100)                                                                                                                                               
  --Ronaldo Chamado 383605                
  --If @RedBaseSubTrib <> 0 and @ValorBaseSubTribCarga  <> 0                                                                                                                                                            
  If @RedBaseSubTrib <> 0 and @ValorBaseSubTribCarga  <> 0 and @OprPerRedICM <> 99.99               
   Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga - ((@ValorBaseSubTribCarga  * @RedBaseSubTrib) / 100)                                                                                                                                                   
  --Ronaldo Chamado 313933                                                      
  --If @TriMargemLucroSubst <> 999.99                                                                                                                                             
  --   Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga +  ((@ValorBaseSubTribCarga * @TriMargemLucroSubst) / 100)                                                                                                                                          
  --If @ValorBaseSubTribCarga > 0 and @EstAliqInterna > 0                                                                                                                                     
  --   Set @ValorSubTribCarga = (@ValorBaseSubTribCarga * @EstAliqInterna) / 100                                      
  --Set @ValorSubTribCarga = @ValorSubTribCarga - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                                                    
  if @RegTribPercIvaSimplicado > 0 and @EstAliqInterna > 0                                                    
     begin                                                    
        set @ValorSubTribCarga     = round(@ValorBaseSubTribCarga * @RegTribPercIvaSimplicado / 100,2)                                                    
        set @ValorBaseSubTribCarga = round((@ValorIcm + @ValorSubTribCarga) / @EstAliqInterna * 100,2)                                                    
     end                                                    
  else                                                    
     begin                                                     
       If @MVA <> 999.99                                                                                                                                             
          Set @ValorBaseSubTribCarga = @ValorBaseSubTribCarga +  ((@ValorBaseSubTribCarga * @MVA) / 100)                                                                                                                               
       If @ValorBaseSubTribCarga > 0 and @EstAliqInterna > 0                                                                                                                                     
          Set @ValorSubTribCarga = (@ValorBaseSubTribCarga * @EstAliqInterna) / 100                                                                                                                                           
          Set @ValorSubTribCarga = @ValorSubTribCarga - Round((@ValorBaseSubTribDestino * @AliqICM) / 100,2)                             
    end                                                     
end                                                                                                                                                                                  
                                                                  
                                                                                   
                           
--Calculo da substituição tributaria pela tabela SubstituicaoTributaria                                                                   
If @CodSubTributaria > 0                                                                                                 
   and @TriFlagSubTributaria = 1 and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                                                                                                   
   and @SubMargemLucro <> 0 and @EstFlagConvSub = 1                                                                                                                                   
begin                                                 
  If @SubPercReducao <> 0                                                                                                                       
     Set @CalcBaseSubTrib  = @CalcBaseSubTrib - ((@CalcBaseSubTrib * @SubPercReducao) / 100)                                                                                           
  If @SubMargemLucro <> 999.99                                                                                                                                                          
     Set @CalcBaseSubTrib = @CalcBaseSubTrib +  ((@CalcBaseSubTrib * @SubMargemLucro) / 100)                                                                        
  If @SubIndiceReducao <> 0                                                                                                   
   Set @CalcBaseSubTrib = @CalcBaseSubTrib * @SubIndiceReducao                                                                                                                                                    
                                                
  --Quando não tem aliquota interna na sub.trib, pega a do estado de origem                                                                                                   
  If @CalcBaseSubTrib > 0 and                                                                                                                
     (@SubAliquotaInterna > 0 or @EstAliqInterna > 0)                                                                         
  begin                                                                            
    if @SubAliquotaInterna > 0                                                                                                                                                  
     Set @CalcValorSubTrib = (@CalcBaseSubTrib * @SubAliquotaInterna) / 100                                                                                                                                            
    Else                                                                                               
       Set @CalcValorSubTrib = (@CalcBaseSubTrib * @EstAliqInterna) / 100                                                                                                                    
  end                               
                                                                                                                                                    
  --Opção que permite abater o icms da operação na substituição tributaria                                                                                                                                                    
  If @SubFlagAbaterICM = 1                                                                                                      
     Set @CalcValorSubTrib = @CalcValorSubTrib - Round((@CalcBaseSubTribDestino * @AliqICM) / 100,2)                                                                       
                                                                                                  
  If @OprTipoICM = 0 and @OprTipoSubTributaria > 0                                                                                     
  begin                                                                                 
 Set @ValorBaseSubTrib = @CalcBaseSubTrib                                                                                         
    Set @ValorSubTrib = @CalcValorSubTrib                                                                                                                                                         
  end                          
                                                          
  --Eder - Chamado 262460                                                        
  If @OprTipoSubTributariaCarga = 0                                                                              
  begin                        
    Set @ValorBaseSubTribCarga = @CalcBaseSubTrib                                                                                                                 
    Set @ValorSubTribCarga = @CalcValorSubTrib                                                                                                                         
  end                                                                              
end                                                                            
                                                                     
--MARCELO - CHAMADO 195051                                                                                                          
if (@ValorBaseSubTrib <> 0) or (@ValorSubTrib <> 0)                                                                                                           
begin                             
  set @ValorBaseSubTribCarga = 0                                                                                                          
  set @ValorSubTribCarga = 0                                                                                   
end                      
                                                              
                                                              
--Eder - Chamado 295277                                                              
--O cálculo do ICMS para Simples deve ser feito após o calculo da ST pois a ST considera aliquotas internas normais de ICMS                                                              
If @ParTipoRegimeTributario in (1,2) and  --- Simples Nacional ou com excesso de sublimite receita bruta                                                              
   (@FlagEntrada = 0 or (@FlagEntrada = 1 and @OprTipoMovimento = 1))  --Saida ou entrada por devolução                                                              
begin                                           
  If @TriAliqICM <= 0                                                               
    Set @AliqICM = 0                                                              
  else                                                              
    Set @AliqICM = @ParAliqICMSimples                                                              
  If (@OprTipoICM = 1) or                                                                                
     (@OprTipoICM = 2 and @FlagEntrada = 0) or                                                                                                                                                                    
     (@OprTipoICM = 2 and @FlagEntrada = 1 and @OprFlagDefaultLancamentoOutras = 0)                                                                                                                                
     Set @AliqICM = 0                                                                                               
Set @ValorICM = (@ValorBaseIcm * @AliqICM) / 100                                                              
end                                                              
                                                                                                                       
If @AliqICM = 0                                                                                                                                                                                  
   Set @ValorBaseIcm = 0                                                                                                                       
Else                                                                                                                             
   Set @ValorIsentoICM = @ValorIsentoICM - @ValorBaseIcm                                                                                                                    
                                                                                                                                                   
                                                       
If @OprTipoSubTributaria in(2,3) and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                      
   and @OprTipoICM = 0 and @EstFlagConvSub = 1                                                                     
   and (@TriFlagSubTributaria = 1 or @MVA <> 0 or @SubMargemLucro <> 0)                                                                                                                               
begin                                                                    
  If @OprTipoSubTributaria = 2                                                                     
     Set @ValorIsentoICM = @ValorIsentoICM + @ValorBaseICM                                                                                                                       
  If @OprTipoSubTributaria = 3                                                                   
  begin                                                                        
     --Eder - 383214 - Quando ha redução na base, considerar apenas a parte tributada para outras (St)            
     --Set @ValorOutrasICM = @ValorOutrasICM + @ValorBaseICM + @ValorIsentoICM                                    
     if (@ValorIsentoICM <> 0 and @ValorBaseICM <> 0)            
       Set @ValorOutrasICM = @ValorBaseICM            
     else            
     begin          
       Set @ValorOutrasICM = @ValorBaseICM + @ValorIsentoICM            
       Set @ValorIsentoICM = 0       
     end            
  end                                                                                                                                  
  Set @ValorBaseIcm = 0                                                                                                                                                                    
  Set @ValorICM = 0                                                                                                                                                                    
end                                                                                                                                                                                  
                                                                                                           
Set @FatorRedCusto = 1                                                                                               
If (@ParTipoReducaoICM = 1) and (Ltrim(@CodEntidade) <> '')                                                                               
   and (@FlagEntrada = 0 or (@FlagEntrada=1 and @OprTipoMovimento = 1))                                        
--Eder Chamado 170325                                                                                                                        
   and (@CodProduto <> 8888888)                                    
begin                                                                                                                                              
--   If @OprTipoSubTributaria not in(2,3)   --não calcula quando a sub. tributaria é isenta/outras                                                                        
--   Isaac - Chamado 191232                                                                                                          
   If not (@OprTipoSubTributaria in(2,3) and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                       
      and @OprTipoICM = 0 and @EstFlagConvSub = 1                                                                                                                  
      and (@TriFlagSubTributaria = 1 or @MVA <> 0 or @SubMargemLucro <> 0))                                                                                                     
      Set @FatorRedCusto = (100 - @TriAliqICM) / (100 - @AliqICM)                                                
                                                                                                                                                                 
   If @OprPerRedMargem <> 0                                                                                                     
     Set @FatorRedCusto = @FatorRedCusto - (@OprPerRedMargem / 100)                                                                                                                                                    
   --Eder - Chamado 270320                                                                          
   --If (@TriPerRedMargem <> 0)                                                                          
   --  Set @FatorRedCusto = @FatorRedCusto - (@TriPerRedMargem / 100)                                                                                            
end                                                                                                                                                     
--Eder - Chamado 270320                                                                          
if (@TriPerRedMargem <> 0) and (@CodProduto <> 8888888)                                              
   Set @FatorRedCusto = @FatorRedCusto - (@TriPerRedMargem / 100)                                                      
                                                                                 
-- 298865                           
--Eder - Chamado 195755                                                                                                            
--Somente vai calcular DespesasNaoInclusas no fator quando for saída ou devolução                                                                                                                  
-- Renato - 278440                                                      
If (@FlagEntrada = 0) or                                                                                                                                                                 
   (@FlagEntrada = 1 and @OprTipoMovimento = 1)                                                                                                                                                                  
begin                                                                                                
  --Eder - Chamado 170325                                                                                                   
  --Adiciona o acrescimo de custo, que já deve vir passado como percentual                                                                                                                        
                                                                           
  If (@PerRedDespesa <> 0) and (@ParTipoReducaoICM in (0,1)) and (@FlagDeduzirDespNaoInclNaMargem = 0)                                                                                                                       
  begin                                                                                                                        
    Set @FatorRedCusto = @FatorRedCusto + @PerRedDespesa                                                                            
  end                                                                              
end                                                                                                             
                                                
                                                                                              
--Calcula o fator de venda para as saídas e entradas por devolução.                  
--Retira o Valor do ICM, a Aliquota de CPMF, a Aliquota de PIS/COFINS e soma o acrescimo de vend                                                                                                    
Set @FatorRedVenda = 1                                                                                                                                                   
If ((@FlagEntrada = 0) or                                                                                                                     
   (@FlagEntrada = 1 and @OprTipoMovimento = 1))                                                                    
   -- Renato - 278440                                           
   and (@ParTipoReducaoICM = 2) -- 2 - Deduzir Impostos da Venda                                                                                      
begin                                                                                                          
                                                                      
  --Eder -Chamado 292832 - Evitar arredondamento desnecessario na aliquota do ICM (Vide Chamado)                                                                
  If (@AliqICM > 0) and (@ValorTotal > 0)                                                                           
     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)   
  begin  
    --397007    
    if (@AcrescimoRedVenda > @ValorTotal)  
      Set @FatorRedVenda = 0  
    else    
      Set @FatorRedVenda = @FatorRedVenda - Round(((@AcrescimoRedVenda * 100) / @ValorTotal) / 100,4)  
  end  
                                                                  
  --Renato - 290579                                                                    
  -- Se for uma venda fora do estado com ICMS, e os Percentuais de ICMS e SubTrib da Compra estiverem informados                                                                    
  -- na Lista de Preco vai abater o ICMS da compra no Custo.                                                                    
  If ((@CidEmpCodEstado <> @CidCodEstado) and (@ValorICM > 0) and (@PercICMCusto > 0) and (@PercSubTribCusto > 0))                       
    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          
    -- danilo If @EntTipoPessoa in('F','N','C','P')    
    If @EntTipoPessoa in('F','N')    
      Set @NumCFOP = @OprCFOP9_Petroleo_NC                                                                     
    Else                                                                                                                                                                                  
      Set @NumCFOP = @OprCFOP9_Petroleo                                                                                                                                       
  end     
end                                                                                                   
                                                                                                                               
If Substring(@NumCFOP,1,1) in ('1','2','3') and @CidCodEstado <> @CidEmpCodEstado                                                                                                                                              
   If @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado = 'EX'                                                      
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'3')                                                                                                                              
 Else                                                                                                    
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'2')                                                                                                                                                                                     
If Substring(@NumCFOP,1,1) in ('5','6','7') and @CidCodEstado <> @CidEmpCodEstado                                                                                                                                                                             
 If @CidCodEstado <> @CidEmpCodEstado and @CidCodEstado = 'EX'                                                                                                                                                 
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'7')                                                                                           
   Else                                                                                                            
      Set @NumCFOP=Stuff(@NumCFOP,1,1,'6')                                                                  
                                                                                                        
--MARCELO - CHAMADO 209798                                                                                   
/*                                                                                                        
CFOP 5.405 não existe o seu correlado 6.405 para vendas fora do estado,                                                                                                         
devendo ser utilizado em seu lugar o CFOP 6.404, conforme reunião defina                                                        
com Eder                                                                              
*/                                                                                                      
--Rafael chamado 224824                                                                     
  --6.405  -> 6.404                                                                                                  
  --6405  --> 6404                                                                                                  
                                                                                                  
--if (Replace(@NumCFOP,'.','') = '6405')                                                                
  --set @NumCFOP = '6404'                                                                                                   
                                                                                              
if (@NumCFOP  = '6.405')                    
  set @NumCFOP = '6.404'                                                                                                        
                                                                                       
if (@NumCFOP  = '6405')                                                                                                   
  set @NumCFOP = '6404'                                                                                                
                                                                                                                          
If @NumCFOP is null                                                                                                                                                                    
   Set @NumCFOP = ''                                         
                                                                                                                                                                                   
If @AliqICM is null                                                                                          
   Set @AliqICM=0                                         
                                                                                                                                                    
if @CodProduto = 8888888                                    
Begin                                                      
  -- Renato - 341779                                         
  if (@OprFlagICMSSobreServicos = 0) or (@OprTipoIcm in (1,2))                                  
  begin                       
    set @AliqICM = 0                                                                                                                                                                    
    set @ValorBaseIcm = 0                                                                                 
    set @ValorICM = 0                                                                                  
    set @ValorIsentoICM = 0                                                                                                                        
    set @ValorOutrasICM = 0                                                   
                             
    if (@OprFlagICMSSobreServicos = 0)                                        
    begin                                          
 -- Mantendo compatibilidade com versões antigas, ou seja, se o usuario não marcar o FlagICMSSobreServicos                                         
   -- o sistema não muda a forma de gerar os impostos dos serviços.                                                                           
      if (@TriTipoValorNaoTributado = 0)                                                                            
        set @ValorIsentoICM = @ValorTotal + @AcrescimoBaseICM                                                                                                                            
      else                                                                                                                  
        set @ValorOutrasICM = @ValorTotal + @AcrescimoBaseICM                                          
    end                                        
    else                                        
    begin                                        
      if (@OprTipoIcm = 1)                                                                            
        set @ValorIsentoICM = @ValorTotal + @AcrescimoBaseICM                                                               
      else                                                                                                                  
        set @ValorOutrasICM = @ValorTotal + @AcrescimoBaseICM                                          
    end                                        
                  
  end                                
  else if ((@OprFlagICMSSobreServicos = 1) and (@OprTipoIcm = 0) and ((@AliqICM = 0) or (@ValorBaseIcm = 0)) )                                        
  begin                                        
    if (@TriTipoValorNaoTributado = 0)                                         
      set @ValorIsentoICM = @ValorTotal + @AcrescimoBaseICM                                                                                                                            
    else                         
      set @ValorOutrasICM = @ValorTotal + @AcrescimoBaseICM                                         
  end                                        
                                            
  set @ValorBaseSubTrib = 0                                                                                                                                                                   
  set @ValorSubTrib = 0                                                                                                                                 
  set @ValorBaseSubTribCarga = 0                                                                                                                                         
  set @ValorSubTribCarga = 0                                                                                                                                                                    
  set @RedBaseSubTrib = 0                       
--Eder - Chamado  170325                                                                                                                        
--  set @FatorRedCusto = 1                                                                                                          
  set @FatorRedVenda = 1                                                                                                                                                                    
  set @AliqPISCOFINS = 0                                          
                                                                                                      
end                                                                      
                                                              
                           
--Eder - 297029                                                               
--383214 If (@ValorBaseICM > 0 and @ValorIsentoICM > 0)                          
If ((@ValorBaseICM > 0 or @ValorOutrasICM > 0) and @ValorIsentoICM > 0)                          
begin                            
  --Renato - 361064                           
  if (@TriPerReducaoICM = 0) and (@OprPerRedICM <> 0)                            
    Set @PerReducaoICM = @OprPerRedICM                          
  else if (@TriPerReducaoICM <> 0) and (@OprPerRedICM = 0)                            
    Set @PerReducaoICM = @TriPerReducaoICM                           
  else                          
    Set @PerReducaoICM = Round(@ValorIsentoICM / (@ValorBaseICM + @ValorIsentoICM) * 100,2)                                                                                   
end                         
else                                         
  Set @PerReducaoICM = 0                              
                          
                               
                                                                                                     
--Define o valor de isento ou o valor de outras para o que não foi tributado                                                                                                                                                              
if @CodProduto <> 8888888 and @ValorIsentoICM > 0                                                   
begin                                                                                     
  --Chamado 156315 - calculando errado valor de isentas com tributação com coluna de outras                                             
 If @OprTipoICM = 2 or                                                                                       
    (@TriTipoValorNaoTributado = 1 and @OprTipoICM = 0)                                           
  begin                                                                                                                                                            
    If  not (@OprTipoSubTributaria in(2,3) and @ClaFlagSubTributaria = 1 and @GruFlagSubTributaria = 1                                                                                                                                                  
           and @EstFlagConvSub = 1                                                                                                                                                               
            and (@TriFlagSubTributaria = 1 or @MVA <> 0))                      
       or @OprTipoICM = 2                                                                                          
    begin                                                                                                                                                                  
      Set @ValorOutrasICM = @ValorIsentoICM                                                                      
      Set @ValorIsentoICM = 0                                                                                                                                                                                                   
    end                                                                                        
  end                                    
end                            
                          
if (@ValorBaseSubTrib = 0  and @ValorSubTrib = 0 and @ValorBaseSubTribCarga = 0 and @ValorSubTribCarga = 0)                          
begin                          
  set @EstAliqInterna = 0                          
  set @MVA = 0                           
end                                                                        
                                                                                                      
Insert Into @Campos (AliqICM, ValorBaseICM, ValorICM, ValorIsentoICM, ValorOutrasICM, PerReducaoICM,                                            
               ValorBaseSubTrib, ValorSubTrib, FatorRedCusto, FatorRedVenda, NumCFOP,                                                                
               ValorBaseSubTribCarga, ValorSubTribCarga, PerRedBaseSubTrib, AliqPISCOFINS,                                                                      
    -- Renato - Chamado 272165                                                                        
               ValorBasePisCofins, AliqPis, AliqCofins,                                                              
               NumCstICM, NumCstIPI, NumCstPisCofins, NumCsosn,                                                         
               -- Renato - 297792                                                        
               NatReceitaPisCofins,                                           
               -- Renato - 332318                                          
               NatBaseCalcCredito,                                 --Ronaldo 343696                              
   IndNaturezaFrete,                                                
               --Gabriella - 333391                               
               ValorBaseIPI,                                          
               ValorIsentoIPI,                                             
               ValorOutrasIPI,                          
               AliqICMSST,                          
               PercMvaICMSST,                        
               --Renato - 361650                        
               AliqComplICM,                        
               AliqComplPis,                        
               AliqComplCofins)                                                        
                                                                                                                                                         
       Values (@AliqICM, @ValorBaseICM, @ValorICM, @ValorIsentoICM, @ValorOutrasICM, @PerReducaoICM,                                                 
               @ValorBaseSubTrib, @ValorSubTrib, @FatorRedCusto, @FatorRedVenda, @NumCFOP,                                                                                                                         
               @ValorBaseSubTribCarga, @ValorSubTribCarga, @RedBaseSubTrib, @AliqPISCOFINS,                                                           
               -- Renato - Chamado 272165                                                                         
               @ValorBasePisCofins, @AliqPis, @AliqCofins,                                                              
               @NumCstICM, @NumCstIPI, @NumCstPisCofins, @NumCsosn,                                                         
               -- Renato - 297792                                                        
               @NatReceitaPisCofins,                                           
               -- Renato - 332318                                          
               @NatBaseCalcCredito,                               
               --Ronaldo 343696                              
               @OprIndNaturezaFrete,                                         
               --Gabriella - 333391                                                 
               @ValorBaseIPI,                                          
               @ValorIsentoIPI,                                                                                                                            
               @ValorOutrasIPI,                          
               --Renato - 360358                          
               @EstAliqInterna,                          
               @MVA,                        
               --Renato - 361650                        
               @TriAliqComplICM,                        
               @AliqComplPis,                        
               @AliqComplCofins)                                                           
Return                                                              
                                                              
end 
GO

--Gabriella - 401561
Alter table Entidades disable trigger all
GO

if not exists (Select * from dbo.SysColumns Where id = object_id(N'[dbo].[Entidades]') and 
                                                 Name Like 'QuantItensNotaGarantia' And
                                                 OBJECTPROPERTY(id, N'IsUserTable') = 1 )
begin
  Alter Table Entidades Add QuantItensNotaGarantia decimal(12,3)  
  Alter Table Entidades Add ValorNotaGarantia decimal(11,2)  
end
go

sp_bindefault 'dbo.Numero', 'Entidades.QuantItensNotaGarantia'
go
sp_bindefault 'dbo.Numero', 'Entidades.ValorNotaGarantia'
go

Update Entidades Set QuantItensNotaGarantia = 0 
where QuantItensNotaGarantia is null
go
Update Entidades Set ValorNotaGarantia = 0 
where ValorNotaGarantia is null
go

Alter Table Entidades Alter Column QuantItensNotaGarantia decimal(12,3) Not Null
go
Alter Table Entidades Alter Column ValorNotaGarantia decimal(11,2) Not Null
go

Alter table Entidades enable trigger all
GO

if not exists(select * from sysobjects where name like 'GarantiaLaudo')
begin
	Create Table GarantiaLaudo (
	  EmpresaEstoque          int not null,
	  CodGarantia             int not null,
	  NumSequenciaLaudo       varchar(20) Collate Latin1_General_CI_AS not null,
	  DataMovimento           datetime,	  	
	  CodProduto              int not null,	  
	  DescricaoLaudo          varchar(4000) Collate Latin1_General_CI_AS not null,	      
	  TipoRetorno             int not null,     
	  StatusTransacao         smallint not null,
	  TransacaoEmpresas       varchar(50) Collate Latin1_General_CI_AS not null 
		
	  CONSTRAINT PK_GarantiaLaudo PRIMARY KEY CLUSTERED 
	  (
	    EmpresaEstoque ASC,
		CodGarantia ASC,
		NumSequenciaLaudo
	  ) ON [PRIMARY]
	)
	exec sp_bindefault 'dbo.Numero',   'GarantiaLaudo.EmpresaEstoque'	
	exec sp_bindefault 'dbo.Numero',   'GarantiaLaudo.CodGarantia'
	exec sp_bindefault 'dbo.Caracter', 'GarantiaLaudo.NumSequenciaLaudo'			
	exec sp_bindefault 'dbo.Numero',   'GarantiaLaudo.CodProduto'	
	exec sp_bindefault 'dbo.Caracter', 'GarantiaLaudo.DescricaoLaudo'			
	exec sp_bindefault 'dbo.Numero',   'GarantiaLaudo.TipoRetorno'				
	exec sp_bindefault 'dbo.Numero',   'GarantiaLaudo.StatusTransacao'
	exec sp_bindefault 'dbo.Caracter', 'GarantiaLaudo.TransacaoEmpresas'
end									
GO
