;** Rm_3160 ********************************************************************
;* Resumo de Vendas/Custo por Familia/Grupo/Produto                            *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 17/09/2002 por Anivel Augusto Rodrigues
;Ultima Alteracao: 02/03/2006 por Nikolas M. Mateus
;Motivo Alteracao: Ajustes Bug
;Ultima Alteracao: 26/08/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Selecao Marca
;Ultima Alteracao: 15/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: TOTALIZA EMPRESAS
;Ultima Alteracao: 08/10/2009 por Bruno Carvalho
;Motivo Alteracao: Selecao Clientes
;Ultima Alteracao: 04/08/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes para Filtrar por Cliente (Report 3 Alterado)
;Ultima Alteracao: 10/07/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro na ask do NotaI "Situacao_Item"
;Ultima Alteracao: 17/02/2014 por Andrey Fillipe
;Motivo Alteracao: Ajustes na Ask para Filtrar por Cliente(Report 3 e 4 Alterado)
;Ultima Alteracao: 24/02/2014 por Kamila Gomes
;Motivo Alteracao: Inclus~]ao OpĈo Preo da F˘rmula
;Ultima Alteracao: 03/04/2014 por Luis Gustavo
;Motivo Alteracao: InclusĈo Opao de Relatorio Simples ou por Cliente
;Ultima Alteracao: 23/06/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao escolher MARCA 
;Ultima Alteracao: 07/07/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao buscar o custo na Ficha de Estoque
;Ultima Alteracao: 29/08/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes e adicionado modelo "3" e "4" de relat˘rios 
;Ultima Alteracao: 12/09/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes Processa()
;Ultima Alteracao: 21/01/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes de procedimento e erros, ajustes reportïs totais porcetagem
;Ultima Alteracao: 22/01/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes no ShowDialog c/ opäes de F1 e adicionado nova opĈo de custa "V"
;Ultima Alteracao: 29/01/2015 por Bruno Carvalho
;Motivo Alteracao: Ajsutes novo modelo de opĈo de custo "V" #0239#
;Ultima Alteracao: 02/02/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustes na opĈo de custo "V" p/ calculos mais exatos com mais casas decimais #0239#
;Ultima Alteracao: 04/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes e inclusao opĈo de custo "R" 
;Ultima Alteracao: 02/08/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes opĈo de custo "V" 
;Ultima Alteracao: 12/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 17/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_EMPRESATE 
;Ultima Alteracao: 28/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes ShowDialog TG_DESTINAT    
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Incluso TG_CODMODELO            
;Ultima Alteracao: 23/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nova logica e novos reports
;Ultima Alteracao: 29/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ValidarModelosRelatorios()
;Ultima Alteracao: 01/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado novo medelo c/ descricao complemntar #0272
;Ultima Alteracao: 12/04/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado novo medelo por referencia #0388
;Ultima Alteracao: 10/10/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado novo custo FORMULA 2    
;Ultima Alteracao: 14/01/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes na opĈo de valor "C" ULTIMA COMPRA
;Ultima Alteracao: 10/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado filro tipo do item      
;Ultima Alteracao: 03/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes descriĈo modelo relatorio 
;Ultima Alteracao: 05/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes mesi=13 erro
;Ultima Alteracao: 13/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novo modelo 03B #0227
;Ultima Alteracao: 25/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   
;Ultima Alteracao: 03/04/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Deletar itens com qtde de vendas <=0
;Ultima Alteracao: 09/04/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Deletar itens com qtde de vendas 0 ou blank

;*******************************************************************************
;* Rotina p/ Selecionar Registros                                              *
;*******************************************************************************
Proc Seleciona()
ClearAll

AGUARDE("Aguarde, selecioando dados")

;****** Vendas *****************************************************************
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
   Then If Not IsBlank(VSDGMARCA) Or
           Not IsBlank(VSDGFAMI)  Or
           Not IsBlank(VSDGGRP)
           Then {Ask} {\\Sistemas\\Estoque\\Itens}
                Moveto [Codigo do Item         ] Example "cite"
                Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
                Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
                Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
        EndIf
        
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
        Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA2.."
        Moveto [Numero do Documento    ] Example "ndoc"
        Moveto [Serie do Documento     ] Example "sdoc"
        Moveto [Codigo                 ] Check TypeIn "~VSDGDESTINAT.." 
        Moveto [Nome Fantasia EmitDest ] Check
        Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Descricao da Destinacao] TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."
        Moveto [Tipo Movimento Estoque ] TypeIn "S"
        Moveto [Situacao               ] TypeIn "Not C"
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI" Enter
        Moveto [Codigo da Empresa      ] Example "cemp"
        Moveto [Numero do Documento    ] Example "ndoc"
        Moveto [Serie do Documento     ] Example "sdoc"
        Moveto [Codigo do Item         ] Check
        Moveto [Tipo do Item           ]       TypeIn "~VSDGTPITEM.." 
        If Not IsBlank(VSDGMARCA) Or
           Not IsBlank(VSDGFAMI)  Or
           Not IsBlank(VSDGGRP)
           Then Moveto [Codigo do Item ] Example "cite"
        EndIf
        Moveto [Custo Medio Unitario   ] Check
        Moveto [Quantidade             ] TypeIn "Calc Sum as Quantidade"
        Moveto [Preco Total            ] TypeIn "Calc Sum as Preco Total"
        Moveto [Valor Desconto Total   ] TypeIn "Calc Sum as Valor Desconto Total"
        Moveto [Situacao_Item          ] TypeIn "Not C"
        Do_It!
        ClearAll    

        Adiciona_Dados("VENDAS")
EndIf

;****** Devolucoes - Estoque ***************************************************
If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC") And
   IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI")
   Then If Not IsBlank(VSDGMARCA) Or
           Not IsBlank(VSDGFAMI)  Or
           Not IsBlank(VSDGGRP)
           Then {Ask} {\\Sistemas\\Estoque\\Itens}
                Moveto [Codigo do Item         ] Example "cite"
                Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
                Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
                Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
        EndIf
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC" Enter
        Moveto [Numero do Lancamento   ] Example "nlan"
        Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA2.."
        Moveto [Codigo                 ] Check TypeIn "~VSDGDESTINAT.." 
        Moveto [Nome Fantasia EmitDest ] Check
        Moveto [Data de Entrada        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Tipo de Operacao       ] TypeIn "D"
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI" Enter
        Moveto [Numero do Lancamento   ] Example "nlan"
        Moveto [Codigo do Item         ] Check
        Moveto [Tipo do Item           ]       TypeIn "~VSDGTPITEM.." 
        If Not IsBlank(VSDGMARCA) Or
           Not IsBlank(VSDGFAMI)  Or
           Not IsBlank(VSDGGRP)
           Then Moveto [Codigo do Item ] Example "cite"
        EndIf
        Moveto [Custo Medio Unitario   ] Check
        Moveto [Quantidade             ] TypeIn "Calc Sum as Quantidade"
        Moveto [Preco Total            ] TypeIn "Calc Sum as Preco Total"
        Moveto [Valor Desconto Total   ] TypeIn "Calc Sum as Valor Desconto Total"
        Do_It!
        ClearAll

        Adiciona_Dados("DEVOLUCOES")
EndIf

;****** Devolucoes - Vendas ****************************************************
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") And
   IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
   Then If Not IsBlank(VSDGMARCA) Or
           Not IsBlank(VSDGFAMI)  Or
           Not IsBlank(VSDGGRP)
           Then {Ask} {\\Sistemas\\Estoque\\Itens}
                Moveto [Codigo do Item         ] Example "cite"
                Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
                Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
                Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
        EndIf
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
        Moveto [Codigo da Empresa      ] Check Example "cemp" TypeIn ", ~VSDGEMPRESA2.."
        Moveto [Numero do Documento    ] Example "ndoc"
        Moveto [Serie do Documento     ] Example "sdoc"
        Moveto [Codigo                 ] Check TypeIn "~VSDGDESTINAT.."   
        Moveto [Nome Fantasia EmitDest ] Check
        Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Descricao da Destinacao] TypeIn "..DEVOL.."
        Moveto [Tipo Movimento Estoque ] TypeIn "E"
        Moveto [Situacao               ] TypeIn "Not C"
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI" Enter
        Moveto [Codigo da Empresa      ] Example "cemp"
        Moveto [Numero do Documento    ] Example "ndoc"
        Moveto [Serie do Documento     ] Example "sdoc"
        Moveto [Codigo do Item         ] Check
        Moveto [Tipo do Item           ]       TypeIn "~VSDGTPITEM.." 
        If Not IsBlank(VSDGMARCA) Or
           Not IsBlank(VSDGFAMI)  Or
           Not IsBlank(VSDGGRP)
           Then Moveto [Codigo do Item ] Example "cite"
        EndIF
        Moveto [Custo Medio Unitario   ] Check
        Moveto [Quantidade             ] TypeIn "Calc Sum as Quantidade"
        Moveto [Preco Total            ] TypeIn "Calc Sum as Preco Total"
        Moveto [Valor Desconto Total   ] TypeIn "Calc Sum as Valor Desconto Total"
        Moveto [Situacao_Item          ] TypeIn "Not C"  
        Do_It!
        ClearAll

        Adiciona_Dados("DEVOLUCOES")
EndIf

EndProc   ; (Seleciona)

;*******************************************************************************
;* Rotina adicionar dados na Db temporaria                                     *
;*******************************************************************************
Proc Adiciona_Dados(Tipo)

If IsEmpty("Answer")
   Then Return
EndIf

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Codigo                 ] Example "CodC"
Moveto [Nome Fantasia EmitDest ] Example "CodF"
Moveto [Codigo do Item         ] Example "cite"
Moveto [Quantidade             ] Example "qtde"
Moveto [Preco Total            ] Example "ptot"
Moveto [Valor Desconto Total   ] Example "vdes"   
Moveto [Custo Medio Unitario   ] Example "cmu"
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert"   
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Codigo                 ] Example "CodC"
Moveto [Nome Fantasia EmitDest ] Example "CodF"
Moveto [Codigo do Item         ] Example "cite" 
Switch
  Case Tipo="VENDAS":
       Moveto [VendasLiquidaQuantidade  ] Example "qtde"
       Moveto [VendasLiquidaVrTotal     ] Example "ptot" TypeIn"-" Example "vdes"
  Case Tipo="DEVOLUCOES":
       Moveto [VendasLiquidaQuantidade  ] TypeIn "_qtde*-1"
       Moveto [VendasLiquidaVrTotal     ] TypeIn "(_ptot-_vdes)*-1"
EndSwitch

if VSDGOPCUSTO="R"
   then
        moveto [CustoVrTotal          ] TypeIn "_cmu*_qtde"
endif

Do_It!
ClearAll

EndProc


;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Totalizar()

AGUARDE("Aguarde, totalizando dados")

{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa       ] Check
Moveto [Codigo do Item          ] Check 
Moveto [Codigo                  ] Check
Moveto [Nome Fantasia EmitDest  ] Check
Moveto [VendasLiquidaQuantidade ] TypeIn "Calc Sum as VendasLiquidaQuantidade"
Moveto [VendasLiquidaVrTotal    ] TypeIn "Calc Sum as VendasLiquidaVrTotal"
Moveto [CustoVrTotal            ] TypeIn "Calc Sum as CustoVrTotal"
Do_It!
ClearAll

Delete Tabela

{Ask} {Answer} Typein "Fast Delete"
Moveto [VendasLiquidaQuantidade ] TypeIn "0 or blank"
Do_It!
ClearAll

MudaEstruturaDaTabelaPara("Answer","\\Base\\Sistemas\\Vendas\\Rm_3102C")

Rename "Answer" Tabela

endproc


;*******************************************************************************
;* Rotina p/ processar Db temporaria                                           *
;*******************************************************************************
Proc Processa()
private NR, ctmp

AGUARDE("Aguarde, processando dados")


If VSDGCODMODELO<>"02" ;nĈo totalizar por cliente
   Then
        {Ask} TypeIn Tabela Enter TypeIn "Fast"
        Moveto [Codigo                 ] TypeIn "Changeto Blank"
        Moveto [Nome Fantasia EmitDest ] TypeIn "Changeto Blank"
        Do_It!
        ClearAll
EndIf   

;***** Totaliza Dados ************************************
Totalizar()                                                 

Switch
  Case VSDGOPCUSTO="R":
    NR=NRecords(Tabela)
    Coedit Tabela
    Scan
      Barra(NR, RecNo())
      Aguarde("Aguarde, processando "+VSDGNOMOPCUSTO+" "+BARRA_STRING)

      [CustoVrUnitario       ]=[CustoVrTotal]/[VendasLiquidaQuantidade]
      UnLockRecord
    endscan
    Do_It!
    ClearAll
  
  Case VSDGOPCUSTO="C":
    {Ask} {\\Sistemas\\Estoque\\NotaEC}
    Moveto [Numero do Lancamento ] Example "nlanc"
    Moveto [Data de Entrada      ] Check TypeIn "<=~VSDGDTFIM"
    Moveto [Tipo de Operacao     ] TypeIn "C"
    {Ask} {\\Sistemas\\Estoque\\NotaEI}
    Moveto [Numero do Lancamento ] Example "nlanc"
    Moveto [Codigo do Item       ] Check
    Moveto [Quantidade           ] Check
    Moveto [Preco Total          ] Check
    Moveto [Valor Desconto Total ] Check
    Moveto [Quantidade Convertida] Check
    Do_It!
    ClearAll

    If VSDGCODMODELO="04B"
       Then Edit "Answer"
            Scan
              Barra(NRecords("Answer"), RecNo())
              Aguarde("Aguarde, processando "+VSDGNOMOPCUSTO+" "+BARRA_STRING)
              [Codigo do Item   ]=PegaCodigoRaiz([Codigo do Item])   
            EndScan
            Do_it!
            Clearall

            {Ask} {Answer}
            Moveto [Data de Entrada      ] Check 
            Moveto [Codigo do Item       ] Check
            Moveto [Quantidade           ] typeIn "Calc sum as \"Quantidade\""
            Moveto [Preco Total          ] typeIn "Calc sum as \"Preco Total\""
            Moveto [Valor Desconto Total ] typeIn "Calc sum as \"Valor Desconto Total\""
            Moveto [Quantidade Convertida] typeIn "Calc sum as \"Quantidade Convertida\""
            Do_It!
            ClearAll
    EndIf

    Tabela2=Cria_Temp(PrivDir())
    Rename "Answer" Tabela2
    ClearAll

    {Ask} TypeIn Tabela2 Enter
    Moveto [Codigo do Item ] Check
    Moveto [Data de Entrada] TypeIn "Calc Max as Data de Entrada"
    Do_It!
    ClearAll
    Tabela3=Adiciona_Indice_Temp("Codigo do Item,Data de Entrada")

    {Ask} TypeIn Tabela3 Enter
    Moveto [Codigo do Item       ] Example "codite"
    Moveto [Data de Entrada      ] Example "dtcomp"
    {Ask} TypeIn Tabela2 Enter
    Moveto [Codigo do Item       ] Check Example "codite"
    Moveto [Data de Entrada      ] Example "dtcomp"
    Moveto [Quantidade           ] Check
    Moveto [Preco Total          ] Check
    Moveto [Valor Desconto Total ] Check
    Moveto [Quantidade Convertida] Check
    Do_It!
    ClearAll

    Delete Tabela2
    Delete Tabela3

    Rename "Answer" Tabela2
    ClearAll

    If VSDGCODMODELO="04B"
       Then Edit Tabela
            Scan
              Barra(NRecords(Tabela), RecNo())
              Aguarde("Aguarde, verificando registros "+BARRA_STRING)
    
              [Codigo do Item   ]=PegaCodigoRaiz([Codigo do Item])   
            EndScan
            Do_it!
            Clearall
                   
            Totalizar()
    Endif

    View Tabela2    
    Coedit Tabela
    Scan
      Barra(NRecords(Tabela), RecNo())
      Aguarde("Aguarde, processando "+VSDGNOMOPCUSTO+" "+BARRA_STRING)

      citem=[Codigo do Item         ]
      qtd  =[VendasLiquidaQuantidade]

      CUSTO=0
      Moveto Tabela2
      Moveto [Codigo do Item]
      Locate citem
      If RetVal
         Then CUSTO=NDecimal(([Preco Total]-[Valor Desconto Total])/([Quantidade Convertida]),5)
              Moveto Tabela
              [CustoVrUnitario ]=CUSTO
              [CustoVrTotal    ]=NDecimal(CUSTO*qtd,2)
              UnLockRecord
         Else Moveto Tabela 
      EndIf
    EndScan
    Do_It!
    ClearAll
    
    Delete Tabela2
  
  Case VSDGOPCUSTO="V":
       NR=NRecords(Tabela)
       View "\\Sistemas\\Estoque\\SdEstq"
       Coedit Tabela
       Scan   
          Barra(NR, RecNo())
          Aguarde("Aguarde, processando "+VSDGNOMOPCUSTO+" "+BARRA_STRING)

         cempr=[Codigo da Empresa]
         citem=[Codigo do Item   ]
         qtd  =[VendasLiquidaQuantidade]
       
         CUSTO=0
      
         ;--- Mes e Ano Inicial ------
         Mesi=Month(VSDGDTINI)
         Anoi=Year(VSDGDTINI)
         ;--- Mes e Ano Final --------
         Mesf=Month(VSDGDTFIM)
         Anof=Year(VSDGDTFIM)
         
         DATA=DateVal("01."+AlinhM(StrVAl(Mesi),2)+"."+StrVal(Anoi))
         
         Moveto "\\Sistemas\\Estoque\\SdEstq"
         While True

           Moveto [Codigo da Empresa]
           Locate cempr,citem,StrVal(Year(DATA)),AlinhM(StrVal(Month(DATA)),2)
           If RetVal
              Then if [Ultimo Custo Atual]>0
                      then CUSTO=[Ultimo Custo Atual]
                   endif     
           EndIf                                              
           
           If Anoi=Anof And Mesi=Mesf Then QuitLoop EndIf
           Mesi=Mesi+1 
           If Mesi=13   
              Then Anoi=Anoi+1 
                   Mesi=1
           EndIf
           DATA=DateVal("01."+AlinhM(StrVAl(Mesi),2)+"."+StrVal(Anoi))
           If Anoi=Anof And Mesi=Mesf Then QuitLoop EndIf
         EndWhile 
         
         Release Vars SAIR_ROTINA,Mesi,Anoi
         
         Moveto Tabela  
         [CustoVrUnitario ] = CUSTO  
         [CustoVrTotal    ] = NDecimal(CUSTO*qtd,2)
         UnLockRecord
       EndScan
       Do_It!
                               
  Case VSDGOPCUSTO="F": 
       NR=NRecords(Tabela)
       View "\\Sistemas\\Producao\\FormulaC"
       Coedit Tabela
       Scan
          Barra(NR, RecNo())
          Aguarde("Aguarde, processando "+VSDGNOMOPCUSTO+" "+BARRA_STRING)


         cempr=[Codigo da Empresa]
         citem=[Codigo do Item   ]
         qtd  =[VendasLiquidaQuantidade]
       
         CUSTO=0
         Moveto "\\Sistemas\\Producao\\FormulaC"
         Moveto [Codigo do Produto]
         Locate citem
         If RetVal
            Then CUSTO = [Custo Unitario]
         EndIf 
       
         Moveto Tabela
         [CustoVrUnitario ]=CUSTO
         [CustoVrTotal    ]=NDecimal(CUSTO*qtd,2)
         UnLockRecord
       EndScan
       Do_It!
       ClearAll

  Case VSDGOPCUSTO="2": 
       NR=NRecords(Tabela)
       View "\\Sistemas\\Producao\\FormulaI"
       View "\\Sistemas\\Producao\\FormulaC"
       Coedit Tabela
       Scan
          Barra(NR, RecNo())
          Aguarde("Aguarde, processando "+VSDGNOMOPCUSTO+" "+BARRA_STRING)

         cempr=[Codigo da Empresa]
         citem=MudaCodigoPara([Codigo do Item   ],"S")
         qtd  =[VendasLiquidaQuantidade]
       
         CUSTO=0
         Moveto "\\Sistemas\\Producao\\FormulaC"
         Moveto [Codigo do Produto]
         Locate citem
         If RetVal and [Tipo do Item]="S"
            Then 
                 Moveto "\\Sistemas\\Producao\\FormulaI"
                 Moveto [Codigo do Produto]
                 Locate citem
                 If RetVal
                    then while [Codigo do Produto]=citem
                         
                           if [Tipo do Item]="M" 
                              then ctmp=[Valor Unitario]*[Quantidade]  
                                   CUSTO=CUSTO+ctmp
                           endif   
                           skip
                           if eot() then quitloop endif   
                         endwhile
                 endif
         EndIf 
         CUSTO=NDecimal(CUSTO,5)
        
         Moveto Tabela
         [CustoVrUnitario ]=CUSTO
         [CustoVrTotal    ]=NDecimal(CUSTO*qtd,2)
         UnLockRecord
       EndScan
       Do_It!
       ClearAll
       
  OTherWise:
      ;---- Custo Atual --------------------------------------------------------------
      If IsTable("\\FechAno\\"+VSDGANO+"\\Estoque\\Sdestq") 
         Then TAB_TEMP = "\\FechAno\\"+VSDGANO+"\\Estoque\\Sdestq"
         Else TAB_TEMP = "\\Sistemas\\Estoque\\SdEstq"
      EndIf     
      
      NR=NRecords(Tabela)
      View TAB_TEMP
      Coedit Tabela
      Scan
          Barra(NR, RecNo())
          Aguarde("Aguarde, processando "+VSDGNOMOPCUSTO+" "+BARRA_STRING)

        cempr=[Codigo da Empresa]
        citem=[Codigo do Item   ]
        qtd  =[VendasLiquidaQuantidade]
  
        CUSTO=0
        Moveto TAB_TEMP
        Moveto [Codigo da Empresa]
        Locate cempr, citem, VSDGANO, VSDGMES
        If RetVal
           Then If VSDGOPCUSTO="M"
                   Then CUSTO=[Custo Total Atual]/[Saldo Atual]
                        If CUSTO=0
                           Then CUSTO=[Ultimo Custo Atual]
                        EndIf
                   Else CUSTO=[Preco de Custo]
                EndIf
        EndIf
  
        Moveto Tabela
        [CustoVrUnitario ]=CUSTO
        [CustoVrTotal    ]=NDecimal(CUSTO*qtd,2)
        UnLockRecord
      EndScan
      Do_It!
      ClearAll
EndSwitch

Aguarde("Aguarde, ajustando dados")


If VSDGCODMODELO="04B" And VSDGOPCUSTO<>"C"       
   Then Edit Tabela
        Scan
          Barra(NRecords(Tabela), RecNo())
          Aguarde("Aguarde, verificando registros "+BARRA_STRING)

          [Codigo do Item   ]=PegaCodigoRaiz([Codigo do Item])   
        EndScan
        Do_it!
        Clearall
               
        Totalizar()
EndIf

;***** Ajusta Dados ************************************************************
If VSDGEMPRESA="0000"
   Then {Ask} TypeIn Tabela Enter TypeIn "Fast"
        Moveto [Codigo da Empresa      ] TypeIn "changeto 0000"
        Moveto [Nome Fantasia Empresa  ] TypeIn "changeto TOTALIZA EMPRESAS"
        Do_It!
        ClearAll
   Else {Ask} {\\Sistemas\\Cadastro\\Empresas}
        Moveto [Codigo da Empresa      ] Example "cemp"
        Moveto [Nome Fantasia Empresa  ] Example "nemp"
        {Ask} TypeIn Tabela Enter TypeIn "Fast"
        Moveto [Codigo da Empresa      ] Example "cemp"
        Moveto [Nome Fantasia Empresa  ] TypeIn "changeto _nemp"
        Do_It!
        ClearAll
EndIf

{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item         ] Example "cite"
Moveto [Descricao do Item      ] Example "dite"
Moveto [Descricao Complementar ] Example "dcom"
Moveto [Unidade Fiscal         ] Example "unf"
Moveto [Codigo da Familia      ] Example "cfam"
Moveto [Descricao da Familia   ] Example "dfam"
Moveto [Codigo do Grupo        ] Example "cgru"
Moveto [Descricao do Grupo     ] Example "dgru"
Moveto [Referencia             ] Example "ref"
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo do Item         ] Example "cite"
Moveto [Descricao do Item      ] TypeIn "changeto _dite"
Moveto [Descricao Complementar ] typein "changeto _dcom"
Moveto [Unidade Fiscal         ] TypeIn "changeto _unf"
Moveto [Codigo da Familia      ] TypeIn "changeto _cfam"
Moveto [Descricao da Familia   ] TypeIn "changeto _dfam"
Moveto [Codigo do Grupo        ] TypeIn "changeto _cgru"
Moveto [Descricao do Grupo     ] TypeIn "changeto _dgru"
Moveto [Referencia             ] Typein "changeto _ref"
Do_It!
ClearAll

;*** Totaliza Empresa *****
{Ask} TypeIn Tabela Enter
Moveto [Codigo da Empresa      ] Check
Moveto [VendasLiquidaVrTotal   ] TypeIn "Calc Sum as VendasPreco"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [VendasPreco            ] Example "vp"
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo da Empresa      ] Example "cemp"
Moveto [Total_Vendas_Empresa   ] TypeIn "changeto _vp"
Do_It!
ClearAll

{Ask} TypeIn Tabela Enter typein "Fast"
Moveto [VendasLiquidaVrTotal   ] TypeIn "_vlt"
Moveto [VendasLiquidaQuantidade] TypeIn "_qtd"
Moveto [VendasLiquidaVrMedio   ] TypeIn "changeto _vlt/_qtd"
Do_It!
ClearAll

{Ask} TypeIn Tabela Enter typein "Fast"
Moveto [VendasLiquidaVrTotal   ] TypeIn "_vlt"
Moveto [Total_Vendas_Empresa   ] TypeIn "_vte"
Moveto [VendasLiquida%         ] TypeIn "changeto (_vlt/_vte)*100"
Do_It!
ClearAll

{Ask} TypeIn Tabela Enter typein "Fast"
Moveto [VendasLiquidaVrTotal   ] TypeIn "_vlt"
Moveto [CustoVrTotal           ] TypeIn "_ct"
Moveto [DiferencaVendaCusto    ] TypeIn "changeto (_vlt-_ct)"
Do_It!
ClearAll

{Ask} TypeIn Tabela Enter typein "Fast"
Moveto [VendasLiquidaVrTotal   ] TypeIn "_vlt"
Moveto [CustoVrTotal           ] TypeIn "_ct"
Moveto [Diferenca%V/C          ] TypeIn "changeto (_ct/_vlt)*100"
Do_It!
ClearAll

{Ask} TypeIn Tabela Enter typein "Fast"
Moveto [VendasLiquidaVrTotal   ] TypeIn "_vlt"
Moveto [CustoVrTotal           ] TypeIn "_ct"
Moveto [Diferenca%V-C          ] TypeIn "changeto ((_vlt*100)/_ct)-100"
Do_It!
ClearAll

Return True

EndProc    ;  (Processa)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
EndIf   
If Disparo="EVENT" And Evento["Type"]="KEY" Then

   Switch
     Case Evento["KeyCode"] = 9   : Temp=False
     Case Evento["KeyCode"] = -59 : 
     
          Switch
            Case Campo="TG_OPCUSTO" : 
                 LimpaRodape(0)
            
                 Echo Normal
                 Echo Off
                 ShowPopup " Opo Custo " CENTERED
                  "~C~ éltima Compra"                : " éltimo preo de compra registrado no perĦodo informado !" :"C",
                  "~F~ Custo da F˘rmula"             : " Custo da f˘rmula atual !"                       :"F",
                  "~2~ Custo da F˘rmula 2"           : " Custo da f˘rmula atual s˘ Materia Prima do SemiAcabado!" :"2",
                  "~M~ Custo Mdio em "+MESANOREF    : " Custo mdio em "+MESANOREF                    :"M",
                  "~U~ Custo em "+MESANOREF          : " Custo em "+MESANOREF                          :"U",
                  "~V~ éltimo Custo Mdio"           : " éltimo custo mdio registrado no perĦodo informado !"  :"V",
                  "~R~ Mdia Custo Mdio Registrado" : " Mdia do Custo mdio registrado no ato da venda !"  :"R",
                  
                  Separator,
                  "~C~ancelar                 " : " Cancelar a Operao                 " : "CANCELAR"
                 EndMenu
                 To MenuVar
                 Echo Off
                  
                 If MenuVar="CANCELAR" or MenuVar="Esc"
                    Then VSDGOPCUSTO=""
                    Else VSDGOPCUSTO=MenuVar
                 EndIf   
                  
                 Switch
                   Case VSDGOPCUSTO="C": VSDGNOMOPCUSTO="éLTIMA COMPRA"                      
                   Case VSDGOPCUSTO="F": VSDGNOMOPCUSTO="CUSTO DA FORMULA"
                   Case VSDGOPCUSTO="2": VSDGNOMOPCUSTO="CUSTO DA FORMULA 2"
                   Case VSDGOPCUSTO="M": VSDGNOMOPCUSTO="CUSTO MDIO "+MESANOREF
                   Case VSDGOPCUSTO="U": VSDGNOMOPCUSTO="CUSTO "+MESANOREF
                   Case VSDGOPCUSTO="V": VSDGNOMOPCUSTO="éLTIMO CUSTO MDIO REGISTRADO"
                   Case VSDGOPCUSTO="R": VSDGNOMOPCUSTO="MDIA DO CUSTO MDIO REGISTRADO NA VENDA"
                   OtherWise           : VSDGOPCUSTO=""
                                         VSDGNOMOPCUSTO=""                  
                 EndSwitch
             OtherWise : Dialog_F1()     
           EndSwitch          
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESATE"     : Campo="NO"
            Case Campo="TG_DESTINAT"      : Campo="TG_EMPRESATE"
            Case Campo="TG_TPITEM"        : Campo="TG_DESTINAT"      
            Case Campo="TG_MARCA"         : Campo="TG_TPITEM"
            Case Campo="TG_FAMI"          : Campo="TG_MARCA"
            Case Campo="TG_GRP"           : Campo="TG_FAMI"
            Case Campo="TG_DTINI"         : Campo="TG_GRP"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_OPCUSTO"       : Campo="TG_DTFIM"
            Case Campo="TG_OPRELCODALF"   : Campo="TG_OPCUSTO"
            Case Campo="TG_CODMODELO"     : Campo="TG_OPRELCODALF"
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESATE"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESATE"     :Campo="TG_DESTINAT"
                         If VSDGOPCUSTO="V" And VSDGEMPRESA = ""
                            Then Mensagem("A empresa deve ser informada !")
                                 Campo="TG_EMPRESATE"
                         EndIf   
                    Case Campo="TG_DESTINAT"    :Campo="TG_TPITEM"
                    Case Campo="TG_TPITEM"      :Campo="TG_MARCA"      
                    Case Campo="TG_MARCA"       :Campo="TG_FAMI"
                    Case Campo="TG_FAMI"        :Campo="TG_GRP"
                    Case Campo="TG_GRP"         :Campo="TG_DTINI"
                    Case Campo="TG_DTINI"       :Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"       :Campo="TG_OPCUSTO"
                    
                      VSDGMES=AlinhM(StrVal(Month(VSDGDTFIM)),2)
                      VSDGANO=StrVal(Year(VSDGDTFIM))
                      
                      MESANOREF=VSDGMES+"/"+VSDGANO

                    
                    Case Campo="TG_OPCUSTO"     :Campo="TG_OPRELCODALF"
                         VSDGOPCUSTO=ControlValue("TG_OPCUSTO")
                         Switch
                           Case VSDGOPCUSTO="C": VSDGNOMOPCUSTO="éLTIMA COMPRA"                      
                           Case VSDGOPCUSTO="F": VSDGNOMOPCUSTO="CUSTO DA FORMULA"
                           Case VSDGOPCUSTO="2": VSDGNOMOPCUSTO="CUSTO DA FORMULA 2"
                           Case VSDGOPCUSTO="M": VSDGNOMOPCUSTO="CUSTO MDIO "+MESANOREF
                           Case VSDGOPCUSTO="U": VSDGNOMOPCUSTO="CUSTO "+MESANOREF
                           Case VSDGOPCUSTO="V": VSDGNOMOPCUSTO="éLTIMO CUSTO MDIO REGISTRADO"
                           Case VSDGOPCUSTO="R": VSDGNOMOPCUSTO="MDIA DO CUSTO MDIO REGISTRADO NA VENDA"
                           OtherWise           : VSDGOPCUSTO=""
                                                 VSDGNOMOPCUSTO=""                  
                         EndSwitch

                         If VSDGOPCUSTO = ""
                            Then Mensagem("Informe a opĈo de custo no relat˘rio!")
                                 Campo="TG_OPCUSTO"
                         EndIf             

                    Case Campo="TG_OPRELCODALF" :Campo="TG_CODMODELO"
                    Case Campo="TG_CODMODELO"   :Campo="YES"
                        
                                        
                         Switch             
                           Case VSDGCODMODELO = "03" : ORDENA = "A"
                           Case VSDGCODMODELO = "04" : ORDENA = "B"
                           OtherWise : ORDENA = "" 
                         EndSwitch             
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf        

MSG_CAMPO=""                                          
Switch     
  Case Campo="TG_OPCUSTO":
     MSG_CAMPO="Opäes de Custo, [F1]Consultar tabela"
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;************************************
;* ROTINA PARA Ler/Gravacao Opcao   *
;************************************
Proc ModeloRelatoriosCarregaLista()

VSDGCODMODELO     = ""
VSDGMODELO        = ""

;ModeloRelatoriosAdd("XXX XX maximo 70 XX")

ModeloRelatoriosAdd("Criar") ; linha obrigatoria inicial
ModeloRelatoriosAdd("03  Por Produto")
ModeloRelatoriosAdd("03B Por Produto II")
ModeloRelatoriosAdd("01  Por FamĦlia/Grupo")
ModeloRelatoriosAdd("01B Por FamĦlia/Grupo c/ DescriĈo Complementar")
ModeloRelatoriosAdd("04  Por Grupo/Produto")
ModeloRelatoriosAdd("04B Por Grupo/Referncia")
ModeloRelatoriosAdd("02  Por Cliente/FamĦlia/Grupo")

ModeloRelatoriosAdd("Fim")
                      
                           
EndProc ;ModeloRelatoriosCarregaLista

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()

Sys_Valor()

VSDGEMPRESA =""
VSDGDESTINAT=""
VSDGTPITEM  =""
VSDGMARCA   =""
VSDGFAMI    =""
VSDGGRUP    =""
VSDGDTINI   =BlankDate()
VSDGDTFIM   =BlankDate()
VSDGOPRELCODALF=""
VSDGOPCUSTO  =""

ModeloRelatoriosCarregaLista()

While True

  ShowDialog "Vendas X Custo por ?" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
    @ 01,00 Height 22 Width 80

    Label  @ 00,00 "Empresa"  For "TG_EMPRESATE"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESATE"    To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP
    
    Label  @ 02,00 "Pessoa"  For "TG_DESTINAT"
    Accept @ 03,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINAT" To VSDGDESTINAT
    Accept @ 03,09 Width 25 "A24" Picture "!*!" Tag "TG_NOMCLI" To VSDGNOMDEST

    Label  @ 04,00 "Tipo Item"  For "TG_TPITEM"
    Accept @ 05,04 Width 04 "A1"  Picture "&" Tag "TG_TPITEM" To VSDGTPITEM
    Accept @ 05,09 Width 25 "A12"  Picture "!*!" Tag "TG_NOMTPITEM" To VSDGNOMTPITEM

    Label  @ 06,01 "Marca"  For "TG_MARCA"
    Accept @ 07,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 07,09 Width 25 "A24" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA

    Label  @ 08,00 "Familia"  For "TG_FAMI"
    Accept @ 09,02 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI"    To VSDGFAMI
    Accept @ 09,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI

    Label  @ 10,00 "Grupo"  For "TG_GRP"
    Accept @ 11,02 Width 06 "A3"  Picture "#*#" Tag "TG_GRP"    To VSDGGRP
    Accept @ 11,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMGRP" To VSDGNOMGRP

    Label  @ 12,00 "PerĦodo Referente de" For "TG_DTINI"
    Accept @ 13,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 13,16 "at" For "TG_DTFIM"
    Accept @ 13,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Label  @ 00,35 "Opo Custo" For "TG_OPCUSTO"
    Accept @ 01,39 Width 04 "A1"  Picture "M,U,C,F,2,V,R" Tag "TG_OPCUSTO" To VSDGOPCUSTO
    Accept @ 01,44 Width 25 "A27"  Picture "!*!" Tag "TG_NOMOPCUSTO" To VSDGNOMOPCUSTO
    
    Label  @ 02,35 "Opo de Ordem" For "TG_OPRELCODALF"
    Accept @ 03,39 Width 04 "A1"  Picture "1,2,3,4" Tag "TG_OPRELCODALF" To VSDGOPRELCODALF
    Accept @ 03,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMOPRELCODALF" To VSDGNOMOPRELCODALF

    Label  @ 17,00  "Modelo de ~R~elat˘rio"  For "TG_CODMODELO"
    Accept @ 18,01  Width 06 "A3"  Picture "!*!" Tag "TG_CODMODELO" To VSDGCODMODELO
    Accept @ 18,06  Width 47 "A60"  Picture "!*!" Tag "TG_MODELO" To VSDGMODELO        

    Pushbutton @ 18,54 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 18,66 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  If Not Valida_ShowDialog("") Then Loop EndIf
  if not ValidarModelosRelatorios() then loop endif         
  
  If IsBlank(VSDGDTFIM)
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf
              
  If IsBlank(VSDGDTINI)
     Then Mensagem("Data Inicial Invalida !")
          Loop
  EndIf
 
  If VSDGEMPRESA="0000"
     Then VSDGEMPRESA2=""
     Else VSDGEMPRESA2=VSDGEMPRESA
  EndIf

  DISPOSITIVO()
  If OK=""  Then Loop EndIf

  AGUARDE("Aguarde, gerando o relat˘rio")

  Tabela=Cria_Temp(PrivDir())
  Empty "\\Base\\Sistemas\\Vendas\\RM_3102C"
  Copy "\\Base\\Sistemas\\Vendas\\RM_3102C" Tabela

  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
    Seleciona()
  EndWhile
  
  If IsEmpty(Tabela)
     Then MENSAGEM("No existem registros a processar")
          Delete Tabela
          Loop
  EndIf
  If Not Processa()
     Then If Not IsAssigned(MSG)
             Then MSG = ""
          EndIf
          If MSG = ""   
             Then MSG = "No existem registros a processar"
          EndIf
          Mensagem(MSG)   
          Loop
     Else
          Impressao_Orientacao=""
          Switch
            Case VSDGCODMODELO="01" : 

              CopyReport "\\Base\\Sistemas\\Vendas\\RM_3102C"  "R"  Tabela "R"
              If VSDGOPRELCODALF="2"
                 Then Seta_Ordem_Report(Tabela,"R","Codigo do Item","Descricao do Item","")
              EndIf
              
            Case VSDGCODMODELO="01B" : 
              Impressao_Orientacao="Paisagem"
                            
              CopyReport "\\Base\\Sistemas\\Vendas\\RM_3102C"  "4"  Tabela "R"
              If VSDGOPRELCODALF="2"
                 Then Seta_Ordem_Report(Tabela,"R","Codigo do Item","Descricao Complementar","")
              EndIf
              
            Case VSDGCODMODELO="04" : 
              CopyReport "\\Base\\Sistemas\\Vendas\\RM_3102C"  "1"  Tabela "R"
              If VSDGOPRELCODALF="2"
                 Then Seta_Ordem_Report(Tabela,"R","Codigo do Item","Descricao do Item","")
              EndIf
              
            Case VSDGCODMODELO="04B" : 
              Impressao_Orientacao="Paisagem"
                            
              CopyReport "\\Base\\Sistemas\\Vendas\\RM_3102C"  "5"  Tabela "R"
              If VSDGOPRELCODALF="2"
                 Then Seta_Ordem_Report(Tabela,"R","Codigo do Item","Descricao do Item","")
              EndIf
              
            Case VSDGCODMODELO="03" : 
              CopyReport "\\Base\\Sistemas\\Vendas\\RM_3102C"  "2"  Tabela "R"
              If VSDGOPRELCODALF="2"
                 Then Seta_Ordem_Report(Tabela,"R","Codigo do Item","Descricao do Item","")
              EndIf
              
            Case VSDGCODMODELO="03B" : 
              CopyReport "\\Base\\Sistemas\\Vendas\\RM_3102C"  "6"  Tabela "R"
              If VSDGOPRELCODALF="2"
                 Then Seta_Ordem_Report(Tabela,"R","Codigo do Item","Descricao do Item","")
              EndIf
              
            Case VSDGCODMODELO="02" : 
              CopyReport "\\Base\\Sistemas\\Vendas\\RM_3102C"  "3"  Tabela "R"
              If VSDGOPRELCODALF="2"
                 Then Seta_Ordem_Report(Tabela,"R","Codigo do Item","Descricao do Item","")
              EndIf
              
          EndSwitch
          IMPRIREL(Tabela,"R")
  EndIf
     
  Delete Tabela
EndWhile  
ClearAll
Release Vars All
Release Procs All
