;** RM_0050A  ******************************************************************
;*  Conferencia das requisicoes por periodo                                    *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 02/08/2006 por Nikolas M. Mateus
;Motivo Alteracao: Acrescimo campo escolher requisitante
;Ultima Alteracao: 29/03/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 30/01/2015 por Luis Gustavo
;Motivo Alteracao: Implementado Filtro por Referencia e por Marca
;Ultima Alteracao: 02/10/2015 por Bruno Carvalho  
;Motivo Alteracao: Incluido "I" no [Tipo de Operacao] para fornecer registros quando for requisi‡äes de Industrializa‡Æo
;Ultima Alteracao: 01/02/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Ask Itens
;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: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()        
;Ultima Alteracao: 27/01/2017 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Ajustes TG_REFERENCIA
;Ultima Alteracao: 24/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   
;Ultima Alteracao: 27/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes agrupado RM_0050, substituido RM_0050
;Ultima Alteracao: 08/04/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ask          
;Ultima Alteracao: 27/04/2020 por Bruno Carvalho
;Motivo Alteracao: Otimiza‡Æo na ASK p/ o campo [Tipo do Item] -> Ask_Estoque()

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc RM_0050A_Seleciona()
ClearAll

If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca") And
   IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqItem")
   Then 
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca" Enter Check
        Moveto [Numero do Lancamento  ] Example "LANCTO" TypeIn ",>=~VSDGNLANCINI,<=~VSDGNLANCFIM"
        Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA.."
        Moveto [Tipo de Movimento     ] TypeIn "~VSDGTPMOV.."
        Moveto [Tipo de Operacao      ] TypeIn "~VSDGTPOPE.."
        Moveto [Data de Ocorrencia    ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Requisitante          ] TypeIn "~VSDGREQUISIT.."
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqItem" Enter Check
        Moveto [Numero do Lancamento  ] Example "LANCTO"
        Moveto [Codigo do Item        ] TypeIn "_cite, ~VSDGITEM.."
        Ask_Estoque("Tipo do Item","Opcao")
        {Ask} TypeIn "\\Sistemas\\Estoque\\Itens" Enter
        Moveto [Codigo do Item         ] TypeIn "_cite"
        Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
        Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
        Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
        Moveto [Referencia             ] TypeIn "~VSDGREFERENCIA.."

        Moveto [Referencia             ] Check 
        Moveto [Codigo da Marca        ] Check 

        Do_It!
        ClearAll

        If IsTable(Tabela)
           Then Add "Answer" Tabela
           Else Rename "Answer" Tabela
        EndIf
EndIf

If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca") And
   IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"RqMatPri") And
   (VSDGTPMOV="S" Or VSDGTPMOV="") And (VSDGTPOPE="C" Or VSDGTPOPE="")
   Then 
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqCabeca" Enter Check
        Moveto [Numero do Lancamento] Example "LANCTO" TypeIn ",>=~VSDGNLANCINI,<=~VSDGNLANCFIM"
        Moveto [Codigo da Empresa   ] TypeIn "~VSDGEMPRESA.."
        Switch
          Case (VSDGTPMOV="S" Or VSDGTPMOV="") And (VSDGTPOPE="C" Or VSDGTPOPE=""):
                Moveto [Tipo de Movimento   ] TypeIn "E"
                Moveto [Tipo de Operacao    ] TypeIn "P Or I"
          OtherWise:
                Moveto [Tipo de Movimento   ] TypeIn "X" ;nÆo gera dados
                Moveto [Tipo de Operacao    ] TypeIn "X"
        EndSwitch
        Moveto [Data de Ocorrencia  ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Requisitante        ] TypeIn "~VSDGREQUISIT.."
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"RqMatPri" Enter Check
        Moveto [Numero do Lancamento     ] Example "LANCTO"
        Moveto [Sequencia do Item        ] Check
        Moveto [Codigo do Item           ] TypeIn "_cite, ~VSDGITEM.."
        Ask_Estoque("Tipo do Item","Opcao")
        Moveto [Ocorrencia de Alteracao  ] Check
        Moveto [Codigo do Item Substituto] Check
        {Ask} TypeIn "\\Sistemas\\Estoque\\Itens" Enter
        Moveto [Codigo do Item         ] TypeIn "_cite"
        Moveto [Codigo da Familia      ] TypeIn "~VSDGFAMI.."
        Moveto [Codigo do Grupo        ] TypeIn "~VSDGGRP.."
        Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
        Moveto [Referencia             ] TypeIn "~VSDGREFERENCIA.."

        Moveto [Referencia             ] Check 
        Moveto [Codigo da Marca        ] Check 
        Do_It!
        ClearAll

        If Not IsEmpty("Answer")
           Then {Ask} {Answer} TypeIn "Fast"
                Moveto [Tipo de Movimento   ] TypeIn "Changeto S"
                Moveto [Tipo de Operacao    ] TypeIn "Changeto C"
                Do_It!
                ClearAll

                If IsTable(Tabela)
                   Then Add "Answer" Tabela
                   Else Rename "Answer" Tabela
                EndIf
        EndIf
EndIf

EndProc   ;  (Seleciona)

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc RM_0050A_Principal()

AGUARDE("Aguarde, gerando o relat¢rio")
Tabela=Cria_Temp(PrivDir())

Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
While Novo_Dir_Trab()
  RM_0050A_Seleciona()
EndWhile

If IsEmpty(Tabela)
   Then 
        MENSAGEM("N„o existem registros a processar")
   else
        Switch
          Case VSDGCODMODELO="08"  : CopyReport "\\Base\\Sistemas\\Estoque\\RM_0050" "R" Tabela "R"
          Case VSDGCODMODELO="08A" : CopyReport "\\Base\\Sistemas\\Estoque\\RM_0050" "3" Tabela "R"
        EndSwitch
        IMPRIREL(Tabela,"R")  
EndIf
Delete Tabela

EndProc

;-- Chamada principal ----------------------------------------------------------
RM_0050A_Principal()

Release Vars Tabela
Release Procs RM_0050A_Principal, RM_0050A_Seleciona
