;** RM_3002 ********************************************************************
;*  Resumo de Compra/Venda/Estoque                                             *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 25/01/2010 por Bruno Carvalho
;Ultima Alteracao: 24/03/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Itens Inativos
;Ultima Alteracao: 17/05/2010 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo p/ nÆo aparecer itens inativos mesmo com saldo
;Ultima Alteracao: 30/08/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Entradas Faturamento para custo medio DEVOL/MANIF/CONSIG/REQUIS
;Ultima Alteracao: 01/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes OF em aberto situa‡Æo TROCA
;Ultima Alteracao: 10/04/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado Pre‡o de Venda no Report e Ajustado no Script
;Ultima Alteracao: 03/05/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro por tabela de pre‡o "PRECO DE VENDA"
;Ultima Alteracao: 17/05/2012 por Karina Andrade
;Motivo Alteracao: Ajustes Op‡Æo de Pre‡o
;Ultima Alteracao: 10/07/2012 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro na ask do NotaI "Situacao_Item"
;Ultima Alteracao: 19/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Substitui‡Æo Editor novo arquivo por FileWrite
;Ultima Alteracao: 19/05/2016 por Bruno Carvalho
;Motivo Alteracao: Ajustes GetRecord "Iten_Com" p/ o campo [Situacao]
;Ultima Alteracao: 18/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 28/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 22/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_CODMODELO, TG_CODMODELO_COMCASASDECIMAIS
;Ultima Alteracao: 26/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado SetaVisualizarCasasDecimais(),ConfigOpcoes()
;Ultima Alteracao: 29/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado ValidarModelosRelatorios()
;Ultima Alteracao: 10/12/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtro fornecedor             
;Ultima Alteracao: 01/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado modelo 01B
;Ultima Alteracao: 19/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes origem da tabela
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc
;Ultima Alteracao: 16/01/2020 por Bruno Carvalho                                     
;Motivo Alteracao: Adicionado scripts "RM_3002B" (58) neste script "RM_3002" (55)
;Ultima Alteracao: 08/04/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   
;Ultima Alteracao: 30/04/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Otimiza‡Æo na ASK p/ o campo [Tipo do Item] -> Ask_Estoque()
;Ultima Alteracao: 07/05/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado op‡Æo de escolha do "Tipo de Opera‡Æo" (Compra e/ou Transferˆncia) e ajustes na ASK pelo controle VSDGOPDT  
;Ultima Alteracao: 07/05/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes no modelo "58" para ser acionado por um play "RM_3002X", processo realizado devido … complexidade do script  
;Ultima Alteracao: 08/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novo logica e estrutura
;Ultima Alteracao: 12/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog
;Ultima Alteracao: 13/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CheckTG_OPOF[1]

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc Seleciona()
ClearAll
AGUARDE("Aguarde, selecionando entradas/saidas")

;*** Faturamento ***
For I From 1 To 3
  If Not IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") Or
     Not IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
     Then Loop
  EndIf

  {Ask} Typein TabelaRItens Enter
  Moveto [Codigo do Item         ] Example "cite"
  {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
  Moveto [Codigo da Empresa        ] Check Example "emp" TypeIn ", ~VSDGEMPRESA.."
  Moveto [Numero do Documento      ] Example "doc"
  Moveto [Serie do Documento       ] Example "ser"
  Moveto [Data de Emissao          ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
  Moveto [Codigo                   ] TypeIn "~VSDGDESTINAT.."
  Switch
    Case i=1: Moveto [Tipo Movimento Estoque   ] TypeIn "S"
              Moveto [Descricao da Destinacao  ] TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."            

    Case i=2: Moveto [Tipo Movimento Estoque   ] TypeIn "E"
              Moveto [Descricao da Destinacao  ] TypeIn "..DEVOL.."

    Case i=3: Moveto [Tipo Movimento Estoque   ] TypeIn "S"
              Moveto [Descricao da Destinacao  ] TypeIn "..DEVOL.."
                            
  EndSwitch
  Moveto [Situacao                 ] TypeIn "Not C"
  {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI" Enter
  Moveto [Codigo da Empresa        ] Example "emp"
  Moveto [Numero do Documento      ] Example "doc"
  Moveto [Serie do Documento       ] Example "ser"
  Moveto [Codigo do Item           ] Check Example "cite"
  Moveto [Situacao_Item            ] TypeIn "Not C"
  Switch
    Case i=3 :
      Moveto [Quantidade               ] TypeIn "Calc Sum As Quantidade"
      Moveto [Custo Medio Unitario     ] Check 
     
    otherwise:
      Moveto [Preco Total              ] TypeIn "Calc Sum as Preco Total"
      Moveto [Valor Desconto Total     ] TypeIn "Calc Sum as Valor Desconto Total"
      Moveto [Quantidade               ] TypeIn "Calc Sum as Quantidade"
    
  EndSwitch
  Do_It!
  ClearAll

  Switch
    Case i=1 : Adiciona_Dados("VENDAS")
    Case i=2 : Adiciona_Dados("DEVOL_CLI")
    Case i=3 : Adiciona_Dados("DEVOL_FOR")    
  EndSwitch
EndFor

If CheckTG_OPOF[1]=False And Dir_Trab="" And IsTable("\\Sistemas\\Vendas\\FaturaC")
   Then
        For I From 1 To 3
          {Ask} Typein TabelaRItens Enter
          Moveto [Codigo do Item         ] Example "cite"
          ;*** Ordem de Faturamento ***
          {Ask} {\\Sistemas\\Vendas\\FaturaC}
          Moveto [Numero da OF             ] Example "doc"
          Moveto [Codigo da Empresa        ] Check TypeIn "~VSDGEMPRESA.."
          Moveto [Data de Emissao          ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
          Moveto [Codigo                   ] TypeIn "~VSDGDESTINAT.."
          Switch
            Case i=1: Moveto [Tipo Movimento Estoque   ] TypeIn "S"
                      Moveto [Descricao da Destinacao  ] TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."            

            Case i=2: Moveto [Tipo Movimento Estoque   ] TypeIn "E"
                      Moveto [Descricao da Destinacao  ] TypeIn "..DEVOL.."

            Case i=3: Moveto [Tipo Movimento Estoque   ] TypeIn "S"
                      Moveto [Descricao da Destinacao  ] TypeIn "..DEVOL.."              
          EndSwitch
          Moveto [Numero Nota Gerada       ] TypeIn "Blank"
          {Ask} {\\Sistemas\\Vendas\\FaturaI}
          Moveto [Numero da OF             ] Example "doc"
          Moveto [Codigo do Item           ] Check Example "cite"
          Switch
            Case i=3 :
              Moveto [Quantidade               ] TypeIn "Calc Sum As Quantidade"
              Moveto [Custo Medio Unitario     ] Check 
             
            otherwise:
              Moveto [Preco Total              ] TypeIn "Calc Sum as Preco Total"
              Moveto [Valor Desconto Total     ] TypeIn "Calc Sum as Valor Desconto Total"
              Moveto [Quantidade               ] TypeIn "Calc Sum as Quantidade"
            
          EndSwitch
          Do_It!
          ClearAll

          Switch
            Case i=1 : Adiciona_Dados("VENDAS")
            Case i=2 : Adiciona_Dados("DEVOL_CLI")
            Case i=3 : Adiciona_Dados("DEVOL_FOR")    
          EndSwitch
        EndFor

        ;*** Ordem de Faturamento de Entrada/Troca ***
        {Ask} Typein TabelaRItens Enter
        Moveto [Codigo do Item         ] Example "cite"
        {Ask} {\\Sistemas\\Vendas\\FaturaC}
        Moveto [Numero da OF             ] Example "doc"
        Moveto [Codigo da Empresa        ] Check TypeIn "~VSDGEMPRESA.."
        Moveto [Data de Emissao          ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Tipo Movimento Estoque   ] TypeIn "S"
        Moveto [Descricao da Destinacao  ] TypeIn "..TROCA.. ..VEND.."
        Moveto [Numero Nota Gerada       ] TypeIn "Blank"
        {Ask} {\\Sistemas\\Vendas\\FaturaID}
        Moveto [Numero da OF             ] Example "doc"
        Moveto [Codigo do Item           ] Check Example "cite"
        Moveto [Preco Total              ] TypeIn "Calc Sum as Preco Total"
        Moveto [Valor Desconto Total     ] TypeIn "Calc Sum as Valor Desconto Total"
        Moveto [Quantidade               ] TypeIn "Calc Sum as Quantidade"
        Do_It!
        ClearAll

        Adiciona_Dados("DEVOL_CLI")
EndIf

;*** Notas de Entrada/Estoque ***
For I From 1 To 2
  If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC") And
     IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI")
     Then 
          {Ask} Typein TabelaRItens Enter
          Moveto [Codigo do Item         ] Example "cite"
          {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC" Enter
          Moveto [Numero do Lancamento     ] Example "doc"
          Moveto [Codigo da Empresa        ] Check TypeIn "~VSDGEMPRESA.."
          Moveto [Data de Entrada          ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
          Moveto [Codigo                   ] TypeIn "~VSDGDESTINAT.."
          Switch
            Case i=1: Switch
                        Case VSDGOPDT=1 : Moveto [Tipo de Operacao] TypeIn "C"
                        Case VSDGOPDT=2 : Moveto [Tipo de Operacao] TypeIn "T"
                        Case VSDGOPDT=3 : Moveto [Tipo de Operacao] TypeIn "C or T"
                      EndSwitch

            Case i=2: Moveto [Tipo de Operacao         ] TypeIn "D"

          EndSwitch  
          {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI" Enter
          Moveto [Numero do Lancamento     ] Example "doc"
          Moveto [Codigo do Item           ] Check Example "cite"
          Switch
            Case i=1 :
              Moveto [Quantidade Convertida    ] TypeIn "Calc Sum As Quantidade"
              Moveto [Custo Medio Unitario     ] Check 
             
            otherwise:
              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"
            
          EndSwitch
          Do_It!
          ClearAll

          Switch
            Case i=1 : Adiciona_Dados("COMPRAS")
            Case i=2 : Adiciona_Dados("DEVOL_CLI")
          EndSwitch
  EndIf
EndFor  
EndProc

;*******************************************************************************
;* Adiciona Dados                                                              *
;*******************************************************************************
Proc Adiciona_Dados(Tipo)

ClearAll
If IsEmpty("Answer")
   Then Return
EndIf

{Ask} {Answer}
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Codigo do Item           ] Example "ite"
Moveto [Quantidade               ] Example "qtd"
Switch
 Case Tipo="COMPRAS"   : 
  Moveto [Custo Medio Unitario] TypeIn "_ctut" 

 Case Tipo="DEVOL_FOR" : 
  Moveto [Custo Medio Unitario] TypeIn "_ctut"

 otherwise             :
  Moveto [Preco Total         ] TypeIn "_ptot"
  Moveto [Valor Desconto Total] TypeIn "_vdes"

EndSwitch

{Ask} TypeIn TabelaP Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa        ] Example "emp"
Moveto [Codigo do Item           ] Example "ite"

Switch
 Case Tipo="COMPRAS"   : Moveto [Entradas            ] Example "qtd"
                         Moveto [ValorTotalEntradas  ] TypeIn "_ctut*_qtd"
                         
 Case Tipo="DEVOL_FOR" : Moveto [Entradas            ] TypeIn "_qtd*-1"
                         Moveto [ValorTotalEntradas  ] TypeIn "(_ctu*_qtd)*-1"


 Case Tipo="VENDAS"    : Moveto [Saidas              ] Example "qtd"
                         Moveto [ValorTotalSaidas    ] TypeIn "_ptot - _vdes" 
                         
 Case Tipo="DEVOL_CLI" : Moveto [Saidas              ] TypeIn "_qtd*-1"
                         Moveto [ValorTotalSaidas    ] TypeIn "(_ptot-_vdes)*-1"

EndSwitch
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Ajusta Dados                                                                *
;*******************************************************************************
Proc SelecionaItens()
ClearAll

{Ask} {\\Sistemas\\Estoque\\Iten_Com}
Moveto [Codigo do Item         ] Example "cite"
Moveto [Situacao               ] TypeIn VSDGSITITEM
{Ask} {\\Sistemas\\Estoque\\Itens}
Moveto [Codigo do Item         ] Example "cite"  TypeIn ", ~VSDGITEM.."
Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
Moveto [Inativo                ] TypeIn "Not S"
Ask_Estoque("Tipo do Item","Opcao")
  
Moveto [Codigo do Item         ] check
Moveto [Descricao do Item      ] check
Moveto [Descricao Complementar ] check
Moveto [Tipo do Item           ] check
Moveto [Descricao Tipo do Item ] check
Moveto [Unidade Interna        ] check
Moveto [Codigo da Familia      ] check
Moveto [Descricao da Familia   ] check
Moveto [Codigo do Grupo        ] check
Moveto [Descricao do Grupo     ] check
Moveto [Codigo da Marca        ] check
Moveto [Descricao da Marca     ] check
Do_It!
ClearAll

TabelaRItens=Adiciona_Indice_Temp("Codigo do Item")

TabelaP=Cria_Temp(PrivDir())
cria_tabela(TabelaP,"Codigo da Empresa(A4),Codigo do Item(A10),Entradas(N),ValorTotalEntradas($),Saidas(N),ValorTotalSaidas($)")

endproc

;*******************************************************************************
;* Ajusta Dados                                                                *
;*******************************************************************************
Proc Ajusta_Dados()
ClearAll

AGUARDE("Aguarde, processando dados")

;******** Agrupa Dados *******
{Ask} TypeIn TabelaP Enter
Moveto [Codigo da Empresa     ] Check
Moveto [Codigo do Item        ] Check
Moveto [Entradas              ] TypeIn "Calc Sum As Entradas"
Moveto [ValorTotalEntradas    ] TypeIn "Calc Sum As ValorTotalEntradas"
Moveto [Saidas                ] TypeIn "Calc Sum As Saidas"
Moveto [ValorTotalSaidas      ] TypeIn "Calc Sum As ValorTotalSaidas"
Do_It!
ClearAll

{Ask} {Answer} check
Moveto [Entradas              ] typein "_qtde"
Moveto [ValorTotalEntradas    ] TypeIn "_vte, Calc _vte/_qtde as \"Preco de Custo\""        
Moveto [Saidas                ] typein "_qtds"
Moveto [ValorTotalSaidas      ] TypeIn "_vts, Calc _vts/_qtds as \"Preco de Venda\""        
Do_It!
ClearAll

CRIAR_TABELA = False                                                          
Adiciona_Campo("Answer","Saldo Atual(N),Data do Preco de Custo(D)")

Delete TabelaP

TabelaP=Adiciona_Indice_Temp("Codigo da Empresa,Codigo do Item")


;******** Saldo Atual *******
{Ask} Typein TabelaRItens Enter
Moveto [Codigo do Item        ] Example "cite"
{Ask} {\\Sistemas\\Estoque\\SdEstq}
Moveto [Codigo da Empresa     ] Check TypeIn "~VSDGEMPRESA.."
Moveto [Codigo do Item        ] Check Example "cite"
Moveto [Mes Referencia        ]       TypeIn "~VSDGMES"
Moveto [Ano Referencia        ]       TypeIn "~VSDGANO"
Moveto [Saldo Atual           ] Check
Moveto [Preco de Custo        ] Check 
Moveto [Data do Preco de Custo] Check 
Do_It!
ClearAll

if not isempty("Answer")
   then
        TabelaE=Adiciona_Indice_Temp("Codigo da Empresa,Codigo do Item")

        {Ask} TypeIn TabelaE Enter 
        Moveto [Codigo da Empresa     ] TypeIn "_cemp"
        Moveto [Codigo do Item        ] TypeIn "_cite"
        Moveto [Saldo Atual           ] TypeIn "_sd"
        if VSDGCODMODELO="55A" Or 
           VSDGCODMODELO="55B"  
           then
                Moveto [Preco de Custo        ] TypeIn "_pc"
                Moveto [Data do Preco de Custo] TypeIn "_dc"
        endif
        {Ask} TypeIn TabelaP Enter TypeIn "Fast"
        Moveto [Codigo da Empresa     ] TypeIn "_cemp"
        Moveto [Codigo do Item        ] TypeIn "_cite"
        Moveto [Saldo Atual           ] TypeIn "changeto _sd"
        if VSDGCODMODELO="55A" Or 
           VSDGCODMODELO="55B"  
           then
                Moveto [Preco de Custo        ] TypeIn "changeto _pc"
                Moveto [Data do Preco de Custo] TypeIn "changeto _dc"
        endif
        Do_It!
        ClearAll


        {Ask} TypeIn TabelaP Enter 
        Moveto [Codigo da Empresa     ] check
        Moveto [Codigo do Item        ] check
        Do_It!
        ClearAll
        TabelaT=Adiciona_Indice_Temp("Codigo da Empresa,Codigo do Item")

        {Ask} TypeIn TabelaT Enter 
        Moveto [Codigo da Empresa     ] TypeIn "_cemp"
        Moveto [Codigo do Item        ] TypeIn "_cite"
        {Ask} TypeIn TabelaE Enter TypeIn "Fast Delete"
        Moveto [Codigo da Empresa     ] TypeIn "_cemp"
        Moveto [Codigo do Item        ] TypeIn "_cite"
        Do_It!
        ClearAll

        if not isempty(TabelaE)
           then
                {Ask} TypeIn TabelaE Enter 
                Moveto [Codigo da Empresa     ] TypeIn "_cemp"
                Moveto [Codigo do Item        ] TypeIn "_cite"
                Moveto [Saldo Atual           ] TypeIn "_sd"
                if VSDGCODMODELO="55A" Or 
                   VSDGCODMODELO="55B"  
                   then
                        Moveto [Preco de Custo        ] TypeIn "_pc"
                        Moveto [Data do Preco de Custo] TypeIn "_dc"
                endif
                {Ask} TypeIn TabelaP Enter TypeIn "Fast Insert"
                Moveto [Codigo da Empresa     ] TypeIn "_cemp"
                Moveto [Codigo do Item        ] TypeIn "_cite"
                Moveto [Saldo Atual           ] TypeIn "_sd"
                if VSDGCODMODELO="55A" Or 
                   VSDGCODMODELO="55B"  
                   then
                        Moveto [Preco de Custo        ] TypeIn "_pc"
                        Moveto [Data do Preco de Custo] TypeIn "_dc"
                endif
                Do_It!
                ClearAll
        endif   

        Delete TabelaE
        Delete TabelaT
endif


If VSDGOPCUSTO="V" and VSDGCODMODELO<>"58"  
   Then 
        {Ask} Typein TabelaRItens Enter
        Moveto [Codigo do Item        ]       TypeIn "_cite"
        {Ask} {\\sistemas\\vendas\\tbprite}  
        Moveto [Codigo da Tabela      ]       TypeIn "~VSDGTABELA"
        Moveto [Codigo do Item        ] check TypeIn "_cite"
        Moveto [Preco Unitario        ] check
        Do_It!
        ClearAll
        TabelaT=Adiciona_Indice_Temp("Codigo do Item")

        {Ask} Typein TabelaT Enter
        Moveto [Codigo do Item        ] TypeIn "_cite"
        Moveto [Preco Unitario        ] TypeIn "_pu"
        {Ask} TypeIn TabelaP Enter TypeIn "Fast"
        Moveto [Codigo do Item        ] TypeIn "_cite"
        Moveto [Saidas                ] TypeIn "_qtds"
        Moveto [Preco de Venda        ] TypeIn "changeto _pu"
        Moveto [ValorTotalSaidas      ] TypeIn "changeto _qtds*_pu"
        Do_It!
        ClearAll

        Delete TabelaT
EndIf

;******* Ajusta dados do Empresas/Itens ******
{Ask} {\\Sistemas\\Cadastro\\Empresas}
Moveto [Codigo da Empresa      ] example "empr"
Moveto [Nome Fantasia Empresa  ] check
{Ask} TypeIn TabelaRItens Enter Check
Moveto [Codigo do Item         ] check Example "item" check
{Ask} TypeIn TabelaP Enter check
Moveto [Codigo da Empresa     ] example "empr"
Moveto [Codigo do Item        ] example "item"
Do_It!
ClearAll

{Ask} {Answer} TypeIn "Fast"
Moveto [Entradas              ] TypeIn "blank, changeto 0" Down
Moveto [ValorTotalEntradas    ] TypeIn "blank, changeto 0" Down
Moveto [Saidas                ] TypeIn "blank, changeto 0" Down
Moveto [ValorTotalSaidas      ] TypeIn "blank, changeto 0" Down
Moveto [Saldo Atual           ] TypeIn "blank, changeto 0"
Do_It!
ClearAll

MudaEstruturaDaTabelaPara("Answer","\\base\\sistemas\\estoque\\rm_3002")

EndProc    ; (Seleciona)

;*******************************************************************************
;* 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: Dialog_F1()
     Case Evento["KeyCode"] = -68  :
            Temp=False
            Relatorios()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"        : Campo="NO"
            Case Campo="TG_DESTINAT"       : Campo="TG_EMPRESA"
            Case Campo="TG_TIPOEST"        : Campo="TG_DESTINAT"
            Case Campo="TG_FAMI"           : Campo="TG_TIPOEST"
            Case Campo="TG_GRP"            : Campo="TG_FAMI"
            Case Campo="TG_MARCA"          : Campo="TG_GRP"
            Case Campo="TG_ITEM"           : Campo="TG_MARCA"
            Case Campo="TG_OPSP"           : Campo="TG_ITEM"
            Case Campo="TG_OPCUSTO"        : Campo="TG_OPSP"
            Case Campo="TG_TABELA"         : Campo="TG_OPCUSTO"
            Case Campo="TG_DTINI"          : Campo="TG_OPCUSTO"
            Case Campo="TG_DTFIM"          : Campo="TG_DTINI"
            Case Campo="TG_OPRELCODALF"    : Campo="TG_DTFIM"
            Case Campo="TG_OPDT"           : Campo="TG_OPRELCODALF"
            Case Campo="TG_CODMODELO"      : Campo="TG_OPDT"                    
            Case Campo="YES" Or Campo="NO" : Campo="TG_EMPRESA"
          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_EMPRESA"     : Campo="TG_DESTINAT"
                    Case Campo="TG_DESTINAT"    : Campo="TG_TIPOEST"
                    Case Campo="TG_TIPOEST"     : Campo="TG_FAMI"                        
                    Case Campo="TG_FAMI"        : Campo="TG_GRP"
                    Case Campo="TG_GRP"         : Campo="TG_MARCA"
                    Case Campo="TG_MARCA"       : Campo="TG_ITEM"
                    Case Campo="TG_ITEM"        : Campo="TG_OPSP"
                    Case Campo="TG_OPSP"        : Campo="TG_OPCUSTO"
                         VSDGOPSP=ControlValue("TG_OPSP")
                         Switch
                           Case VSDGOPSP="2": VSDGNOMOPSP="FORA DE LINHA"
                           OtherWise:
                                VSDGOPSP="1"  VSDGNOMOPSP="EM LINHA"
                         EndSwitch
                    Case Campo="TG_OPCUSTO" : 
                         VSDGOPCUSTO=ControlValue("TG_OPCUSTO") 
                         Switch
                           Case VSDGOPCUSTO="V" : VSDGNOMOPCUSTO="PRECO TABELA" 
                                                  Campo="TG_TABELA"    

                           OtherWise            : VSDGOPCUSTO="M" 
                                                  VSDGNOMOPCUSTO="MEDIA VENDA"
                                                  VSDGTABELA=""
                                                  VSDGNOMTAB=""
                                                  Campo="TG_DTINI"
                         EndSwitch   
                         
                    Case Campo="TG_TABELA"      : Campo="TG_DTINI" 
                         If IsBlank(VSDGTABELA)
                            Then VSDGNOMTAB=""
                                 If VSDGOPCUSTO="V"    
                                    Then FastMsg("Informe a Tabela de Pre‡o!")
                                         Campo="TG_TABELA" 
                                 EndIf    
                         EndIf                          
                    Case Campo="TG_DTINI"       : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"       : Campo="TG_OPRELCODALF"
                    Case Campo="TG_OPRELCODALF" : Campo="TG_OPDT"
                    Case Campo="TG_OPDT"        : Campo="TG_CODMODELO"
                         VSDGOPDT=ControlValue("TG_OPDT")
                    Case Campo="TG_CODMODELO"   : Campo="YES"                   
                  EndSwitch
          EndIf
   EndSwitch
EndIf
Switch
  Case Campo="TG_OPDT"    : MensagemRadioButtons() 
  Case Campo="TG_OPSP"    : MSG_CAMPO="1=Em Linha  2=Fora de Linha"
  Case Campo="TG_OPCUSTO" : MSG_CAMPO="M=Media Vendas  V=Preco Tabela a informar"       
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

TG_CODMODELO_COMCASASDECIMAIS=true

VSDGCODMODELO     = ""
VSDGMODELO        = ""

ConfigOpcoes("ModeloRelatorio/CasasDecimais","Ler","PO_3002")  

;ModeloRelatoriosAdd("XXX XX maximo 70 XX")

ModeloRelatoriosAdd("Criar") ; linha obrigatoria inicial
ModeloRelatoriosAdd("55A Resumo de Entradas/Vendas + Estoque, PrCusto, PrVenda")
ModeloRelatoriosAdd("55B Resumo de Entradas/Vendas + Estoque, PrCusto, PrVenda c/ Descri‡Æo Complementar")
ModeloRelatoriosAdd("58  Resumo de Entradas/Vendas + Estoque, Diferen‡a Vendas-Entradas")
ModeloRelatoriosAdd("Fim")

EndProc ;ModeloRelatoriosCarregaLista

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Proc"
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf
LimpAguarde()

  COR_MENSAGEM="1"
  MSG=    "Para a exibi‡Æo correta deste relat¢rio ‚ necess rio que//"
  MSG=MSG+"vocˆ tenha executado o reprocessamento do estoque do mˆs//"
  MSG=MSG+"atual,  caso  esteja  em d£vida sobre a realiza‡Æo deste//"
  MSG=MSG+" procedimento, execute entÆo o reprocessamento.            "
        Mensagem(MSG)
        Release Vars COR_MENSAGEM

ClearAll

VSDGEMPRESA     = ""
VSDGTIPOEST     = ""
VSDGDTINI       = BlankDate()
VSDGDTFIM       = BlankDate()
VSDGFAMI        = ""
VSDGMARCA       = ""
VSDGGRP         = ""
VSDGITEM        = ""
VSDGOPRELCODALF = ""
VSDGMESANO      = AlinhM(StrVal(Month(Today())),2)+"."+AlinhM(StrVal(Year(Today())),4)
VSDGMESES       = ""
VSDGDIAS        = BlankNum()
VSDGNOMOPPE     = ""
VSDGTABELA      = ""
VSDGOPCUSTO     = ""
VSDGDESTINAT    = ""
VSDGCODMODELO   = ""
VSDGMODELO      = ""   

Array CheckTG_OPOF[1]        CheckTG_OPOF[1]       =True ; False=+OF, True=-OF

ModeloRelatoriosCarregaLista()

While True

  ShowDialog "Resumo de Entradas/Venda/Estoque" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140
    @ 01,07 Height 22 Width 80

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA"    To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP

    Label  @ 02,00 "Pessoa/Fornecedor"  For "TG_DESTINAT"
    Accept @ 03,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINAT" To VSDGDESTINAT
    Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMCLI" To VSDGNOMDEST

    Label  @ 04,00 "Tipo do Estoque"  For "TG_TIPOEST"
    Accept @ 05,04 Width 04 "A1"  Picture "!" Tag "TG_TIPOEST" To VSDGTIPOEST
    Accept @ 05,09 Width 25 "A30"  Picture "!*!" Tag "TG_DESCTIPOEST" To VSDGDESCTIPOEST
        
    Label  @ 06,00 "Familia"  For "TG_FAMI"
    Accept @ 07,02 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI" To VSDGFAMI
    Accept @ 07,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI

    Label  @ 08,00 "Grupo"  For "TG_GRP"
    Accept @ 09,02 Width 06 "A3"  Picture "#*#" Tag "TG_GRP" To VSDGGRP
    Accept @ 09,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMGRP" To VSDGNOMGRP
    
    Label  @ 10,00 "Marca"  For "TG_MARCA"
    Accept @ 11,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"    To VSDGMARCA
    Accept @ 11,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMMARCA" To VSDGNOMMARCA

    Label  @ 12,00 "Item"  For "TG_ITEM"
    Accept @ 13,01 Width 33 "A10" Picture "#*#" Tag "TG_ITEM"     To VSDGITEM
    Accept @ 14,01 Width 33 "A35" Picture "!*!" Tag "TG_NOMITEM" To VSDGNOMITEM

    Label  @ 15,00 "Item em" For "TG_OPSP"
    Accept @ 16,04 Width 04 "A1"  Picture "1,2" Tag "TG_OPSP" To VSDGOPSP
    Accept @ 16,09 Width 25 "A15"  Picture "!*!" Tag "TG_NOMOPSP" To VSDGNOMOPSP

    Label  @ 00,35 "Op‡„o de Pre‡o" For "TG_OPCUSTO"
    Accept @ 01,39 Width 04 "A1"  Picture "M,V" Tag "TG_OPCUSTO" To VSDGOPCUSTO
    Accept @ 01,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMOPCUSTO" To VSDGNOMOPCUSTO

    Label  @ 02,35 "Tabela"  For "TG_TABELA"
    Accept @ 03,36 Width 08 "A5"  Picture "#*#" Tag "TG_TABELA" To VSDGTABELA
    Accept @ 03,44 Width 25 "A18" Picture "!*!" Tag "TG_NOMTAB" To VSDGNOMTAB

    Label  @ 04,35 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 05,38 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 05,51 "at‚" For "TG_DTFIM"
    Accept @ 05,56 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Label  @ 06,35 "Op‡Æo de Ordem" For "TG_OPRELCODALF"
    Accept @ 07,39 Width 04 "A1"  Picture "1,2" Tag "TG_OPRELCODALF" To VSDGOPRELCODALF
    Accept @ 07,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMOPRELCODALF" To VSDGNOMOPRELCODALF
    
    Label  @ 09,35 "Opera‡äes"  For "TG_OPDT"
    RadioButtons @ 10,35 Height 3 Width 28
     "Compra",
     "Transferˆncia",
     "Compra + Transferˆncia"
    Tag "TG_OPDT"
    To VSDGOPDT

    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 VSDGOPCUSTO="V" And VSDGTABELA=""  
     Then Mensagem("Tabela de Pre‡o nÆo informada !// Op‡Æo "+VSDGNOMOPCUSTO)
          Loop
  endif    

  If VSDGOPCUSTO="V" And VSDGCODMODELO="58"   
     Then 
          VSDGOPCUSTO="M" 
          VSDGNOMOPCUSTO="MEDIA VENDA"
  endif    

  DISPOSITIVO()
  If OK="" Then Loop EndIf

  AGUARDE("Aguarde, processando dados")

  If VSDGOPSP="1"
     Then VSDGSITITEM="L Or Blank"
     Else VSDGSITITEM="F"
  EndIf
  
  SelecionaItens()
  
  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
   Seleciona()
  EndWhile
  
  If IsEmpty(TabelaP)
     Then 
          MENSAGEM("N„o Existem Registros a Processar")
     else
          AGUARDE("Aguarde, gerando o relat¢rio")

          VSDGMES=AlinhM(StrVal(Month(Today())),2)
          VSDGANO=AlinhM(StrVal( Year(Today())),4)

          Ajusta_Dados()
          
          Switch
            Case VSDGOPDT = 2 : TIT_RELATORIO = "Resumo de Entradas/Transferencias e Vendas "
            Case VSDGOPDT = 3 : TIT_RELATORIO = "Resumo de Entradas/Compras+Transferencias e Vendas "
            OtherWise         : TIT_RELATORIO = "Resumo de Entradas/Compras e Vendas " 
          EndSwitch      
          TIT_RELATORIO=TIT_RELATORIO+"+ Estoque - Periodo de "+Format("D13",VSDGDTINI)+" at‚ "+Format("D13",VSDGDTFIM)
          
          Switch
            Case VSDGCODMODELO="55A"  : 
                Impressao_Orientacao=""
                SetaVisualizarCasasDecimais("12")
                
                CopyReport "\\Base\\Sistemas\\Estoque\\Rm_3002" "R"  "Answer" "R"
                If VSDGOPRELCODALF="2"
                   Then Seta_Ordem_Report("Answer","R","Codigo do Item","Descricao do Item","")
                Endif  
          
            Case VSDGCODMODELO="55B"  :
                Impressao_Orientacao="Paisagem"
                SetaVisualizarCasasDecimais("12")  
              
                CopyReport "\\Base\\Sistemas\\Estoque\\Rm_3002" "1"  "Answer" "R"
                 If VSDGOPRELCODALF="2"
                      Then Seta_Ordem_Report("Answer","1","Codigo do Item","Descricao Complementar","")
                 EndIf
          
            Case VSDGCODMODELO="58"   :
                Impressao_Orientacao="Paisagem"
                SetaVisualizarCasasDecimais("14")
                
                CopyReport "\\Base\\Sistemas\\Estoque\\Rm_3002" "2"  "Answer" "R"
                If VSDGOPRELCODALF="2"
                   Then Seta_Ordem_Report("Answer","R","Codigo do Item","Descricao do Item","")
                EndIf
          
          EndSwitch
          
          IMPRIREL("Answer","R")
          
          ConfigOpcoes("ModeloRelatorio/CasasDecimais","Gravar","PO_3002")
  EndIf
                                                     
  If IsAssigned(TabelaP)        And IsTable(TabelaP)        Then Delete TabelaP        Endif
  If IsAssigned(TabelaRItens)   And IsTable(TabelaRItens)   Then Delete TabelaRItens   Endif
  
EndWhile
ClearAll
Release Vars All
Release Procs All
