;** Rm_0071  *******************************************************************
;* Relacao de Itens em Estoque Maximo em Relacao ao Saldo com a Diferen‡a      *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 22/05/2006 por Nikolas M. Mateus
;Ultima Alteracao: 25/05/2006 por Nikolas M. Mateus
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 18/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 27/04/2020 por Bruno Carvalho
;Motivo Alteracao: Otimiza‡Æo na ASK p/ o campo [Tipo do Item] -> Ask_Estoque()
;Ultima Alteracao: 04/08/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes ask tipo do item nova fun‡Æo

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc Seleciona()
ClearAll
{Ask} TypeIn "\\Sistemas\\Estoque\\Itens" Enter
Moveto [Codigo do Item          ] Example "ite"
Moveto [Inativo                 ] TypeIn "Not S"
Ask_EstoqueTpItem("")
{Ask} TypeIn "\\Sistemas\\Estoque\\EstqPrm" Enter Check
Moveto [Codigo da Empresa       ] TypeIn "~VSDGEMPRESA.."
Moveto [Codigo do Item          ] Example "ite"
Do_It!
ClearAll

{Ask} {Answer} Check
Moveto [Codigo da Empresa       ] Example "emp" TypeIn "!"
Moveto [Codigo do Item          ] Example "ite" TypeIn "!"
{Ask} {SdEstq}
Moveto [Codigo da Empresa       ] Example "emp"
Moveto [Codigo do Item          ] Example "ite"
Moveto [Ano Referencia          ] TypeIn "~ANO"
Moveto [Mes Referencia          ] TypeIn "~MES"
Moveto [Saldo Atual             ] Check
Moveto [Custo Total Atual       ] Check
Do_It!
ClearAll

{Ask} {Answer} Check
Switch
   Case VSDGOPCAO=2:
        Moveto [Estoque Maximo    ] Example "EMAX" TypeIn ", Not Blank"
        Moveto [Ponto de Reposicao] Example "EREP" TypeIn ", Not Blank"
EndSwitch
Switch
   Case VSDGOPCAO=2:
        Moveto [Saldo Atual       ] TypeIn "<=" Example "EREP"
EndSwitch
Do_It!
ClearAll

CopyReport "\\Base\\Sistemas\\Estoque\\RM_0060" "2" "Answer" "R"

EndProc   ;  (Seleciona)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() 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"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"        : Campo="NO"
            Case Campo="TG_TIPOEST"        : Campo="TG_EMPRESA"
            Case Campo="TG_MESANO"         : Campo="TG_TIPOEST"
            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_TIPOEST"
                    Case Campo="TG_TIPOEST" : Campo="TG_MESANO"
                    Case Campo="TG_MESANO"  : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
	Case Campo="TG_MESANO":
       MSG_CAMPO="Informe a Ficha como Base p/ os Saldos"
  Case Campo="TG_OPCOES":
       MSG_CAMPO="Selecione o op‡„o desejada !"
       TECLA    ="=Selecionar  "
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

VSDGOPCAO=2
VSDGEMPRESA = ""
VSDGTIPOEST = ""
VSDGMESANO  = AlinhM(StrVal(Month(Today())),2)+"."+AlinhM(StrVal(Year(Today())),4)

While True

  ShowDialog "Comparativo Estoque Atual/M ximo" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,07   Height 11 Width 72

   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 "Tipo do Estoque"  For "TG_TIPOEST"
   Accept @ 03,04 Width 04 "A1"  Picture "!" Tag "TG_TIPOEST" To VSDGTIPOEST
   Accept @ 03,09 Width 25 "A30"  Picture "!*!" Tag "TG_DESCTIPOEST" To VSDGDESCTIPOEST

   Label  @ 04,00 "Mˆs/Ano Ficha Estoque"  For "TG_MESANO"
   Accept @ 05,04 Width 10 "A7"  Picture "##.####" Tag "TG_MESANO"        To VSDGMESANO

   Pushbutton @ 07,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
   Pushbutton @ 07,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  If Not Valida_ShowDialog("") Then Loop EndIf

  DISPOSITIVO()
  If OK="" Then Loop EndIf

	ANO = SubStr(VSDGMESANO,4,4)
	MES = SubStr(VSDGMESANO,1,2)
	If (NumVal(MES)<1 Or NumVal(MES)>12)
		 Then Mensagem("Mˆs inv lido !")
					Loop
	EndIf

  SR_TITULO =""
  SR_TITULO2=""
  VSDGOPCAO=2

  Switch
    Case VSDGOPCAO=1:
         SR_TITULO ="Itens c/ saldo abaixo ou igual ao estoque minimo"
         SR_TITULO2="Minimo"
    Case VSDGOPCAO=2:
         SR_TITULO ="Comparativo entre Saldo/Estoque maximo"
         SR_TITULO2="Maximo"
    Case VSDGOPCAO=3:
         SR_TITULO ="Itens c/ saldo abaixo ou igual ao ponto de reposicao"
         SR_TITULO2="Pto Reposicao"
  EndSwitch

  AGUARDE("Aguarde, Gerando Relat¢rio")
  Seleciona()
  If IsEmpty("Answer")
     Then MENSAGEM("N„o existem registros a processar")
          Delete "Answer"
          Loop
  EndIf
  IMPRIREL("Answer","R")

  Delete "Answer"

EndWhile
ClearAll
Release Vars All
Release Procs All
