;** Rm_0072  *******************************************************************
;* Relacao de Itens em Para Reposicao de Estoque                               *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 02/08/2016 por Anivel Augusto Rodrigues
;Ultima Alteracao: 15/05/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes report modo retrato
;Ultima Alteracao: 17/08/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes op‡Æo estoque minimo/estoque zerado
;Ultima Alteracao: 29/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Preco tabela nota de Entrada             
;Ultima Alteracao: 11/11/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes liberar itens de natal                   
;Ultima Alteracao: 18/11/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_LOCAL
;Ultima Alteracao: 05/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_NE       
;Ultima Alteracao: 27/04/2020 por Bruno Carvalho
;Motivo Alteracao: Otimiza‡Æo na ASK p/ o campo [Tipo do Item] -> Ask_Estoque()
;Ultima Alteracao: 29/04/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Otimiza‡Æo na ASK p/ o campo [Tipo do Item] -> Ask_Estoque()

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

switch
  Case Not IsBlank(VSDGNE) :
    {Ask} {\\Sistemas\\Estoque\\NotaEC} Check
    Moveto [Numero do Lancamento   ] TypeIn "~VSDGNE.."
    Do_It!
    
    if not IsEmpty("Answer")
       then TituloRelatorio="NE "+[Numero do Lancamento]+", "+[Tipo Do Documento]+"/"+[Numero do Documento]+"  "+ 
                            [Razao Social]+", "+Format("D13",[Data de Entrada]) 
    endif
    ClearAll

    {Ask} {\\Sistemas\\Estoque\\NotaEI}
    Moveto [Numero do Lancamento   ] TypeIn "~VSDGNE.."
    Moveto [Codigo do Item         ] Check
    Ask_Estoque("Tipo do Item","NaoControlaEstoque")
    Do_It!
    ClearAll

  otherwise:
    {Ask} TypeIn "\\Sistemas\\Estoque\\Itens" Enter 
    Moveto [Codigo do Item          ] Check           
    if search("..",VSDGLOCAL)>0
       then Moveto [Localizacao         ] TypeIn VSDGLOCAL
       else Moveto [Codigo_Localizacao  ] TypeIn "~VSDGLOCAL.."
    endif   
    Moveto [Inativo                 ] TypeIn "Not S"
    Ask_Estoque("Tipo do Item","Opcao")
    
    switch
      case Not IsBlank(VSDGFAMI):
        Moveto [Codigo da Familia   ] TypeIn "~VSDGFAMI.."
      OtherWise                 :
;;;     Moveto [Codigo da Familia   ] TypeIn "Not 017"  ; itens de natal
    endswitch
    
    switch
      case Not IsBlank(VSDGGRP):
        Moveto [Codigo do Grupo     ] TypeIn "~VSDGGRP.."
      OtherWise                 :
;;;     Moveto [Codigo do Grupo     ] TypeIn "Not 273"  ; itens de natal
    endswitch
    
    Moveto [Codigo da Marca         ] TypeIn "~VSDGMARCA.."
    Do_It!
    ClearAll

  
endswitch

{Ask} {Answer}
Moveto [Codigo do Item          ] Example "ite"
{Ask} {SdEstq}
Moveto [Codigo da Empresa       ] Check TypeIn "0003"
Moveto [Codigo do Item          ] Check Example "ite"
Moveto [Ano Referencia          ] TypeIn "~ANO"
Moveto [Mes Referencia          ] TypeIn "~MES"
Moveto [Saldo Atual             ] Check Typein ">0, as Estoque"
Do_It!
ClearAll

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

{Ask} {Answer} Check
Moveto [Codigo do Item          ] Example "ite"
{Ask} TypeIn "\\Sistemas\\Estoque\\EstqPrm" Enter
Moveto [Codigo da Empresa       ] TypeIn "0001"
Moveto [Codigo do Item          ] Example "ite" TypeIn "!"
Moveto [Estoque Minimo          ] Check
Do_It!
ClearAll

switch
  Case Not IsBlank(VSDGNE) :
    {Ask} {\\Sistemas\\Estoque\\NotaEI}
    Moveto [Numero do Lancamento   ] TypeIn "~VSDGNE.."
    Moveto [Codigo do Item         ] Example "ite"  
    moveto [Preco Unitario Tabela  ] Example "pr1"         
    moveto [Preco_Venda            ] Example "pr2"
    {Ask} {Answer} 
    Moveto [Codigo da Empresa      ] Example "empr"
    Moveto [Codigo do Item         ] Example "ite"  
    Moveto [Estoque Minimo         ] Example "EMIM"  
    Moveto [Estoque                ] Example "estq" 
    Moveto [Loja                   ] Example "loja"
    {Ask} TypeIn TabelaP ENTER TypeIn "Fast Insert"
    Moveto [Codigo da Empresa      ] Example "empr"
    Moveto [Codigo do Item         ] Example "ite"  
    Moveto [Estoque Minimo         ] Example "EMIM"  
    Moveto [Estoque                ] Example "estq" 
    Moveto [Loja                   ] Example "loja"
    moveto [Preco Unitario Tabela  ] Example "pr1"         
    moveto [Preco_Venda            ] Example "pr2"
    Do_It!
    ClearAll

  otherwise:
    {Ask} {Answer} 
    Moveto [Codigo da Empresa      ] Example "empr"
    Moveto [Codigo do Item         ] Example "ite"  
    Moveto [Estoque Minimo         ] Example "EMIM"  
    Moveto [Estoque                ] Example "estq" 
    Moveto [Loja                   ] Example "loja"
    {Ask} TypeIn TabelaP ENTER TypeIn "Fast Insert"
    Moveto [Codigo da Empresa      ] Example "empr"
    Moveto [Codigo do Item         ] Example "ite"  
    Moveto [Estoque Minimo         ] Example "EMIM"  
    Moveto [Estoque                ] Example "estq" 
    Moveto [Loja                   ] Example "loja"
    Do_It!
    ClearAll

endswitch

ajusta_dados()

EndProc   ;  (Seleciona)

;*******************************************************************************
;* Ajustando dados                                                             *
;*******************************************************************************
Proc Ajusta_Dados()
private minimo 

AGUARDE("Aguarde, calculando reposi‡Æo")
ClearAll

CoEdit TabelaP
Scan

   minimo=[Estoque Minimo]
   if minimo<=0 then minimo=1 endif 
   
   if [loja]<minimo
      then [Falta]=minimo-[loja]
           if [Estoque]>=[Falta]
              then [Reposicao]=[Falta]
              else [Reposicao]=[Estoque]
           endif     
   endif

   if Not IsBlank(VSDGNE)
      then if [Preco Unitario Tabela]<>[Preco_Venda]
              then [PrecoAlterado]="S"
           endif   
   endif
   
EndScan
Do_It!
ClearAll

switch
  Case Not IsBlank(VSDGNE) :
    {Ask} TypeIn TabelaP Enter TypeIn "Fast Delete"
    Moveto [Reposicao              ] TypeIn "<1"
    Moveto [PrecoAlterado          ] TypeIn "not S"
    Do_It!
    ClearAll

    if VSDGOPESTQ="2"
       then
            {Ask} TypeIn TabelaP Enter TypeIn "Fast Delete"
            Moveto [Loja                   ] TypeIn ">0"
            Moveto [PrecoAlterado          ] TypeIn "not S"
            Do_It!
            ClearAll
    endif   

  otherwise:
    {Ask} TypeIn TabelaP Enter TypeIn "Fast Delete"
    Moveto [Reposicao              ] TypeIn "<1"
    Do_It!
    ClearAll
    
    if VSDGOPESTQ="2"
       then
            {Ask} TypeIn TabelaP Enter TypeIn "Fast Delete"
            Moveto [Loja                   ] TypeIn ">0"
            Do_It!
            ClearAll
    endif   
  
endswitch

{Ask} TypeIn "\\Sistemas\\Cadastro\\Empresas" Enter
Moveto [Codigo da Empresa       ] Example "cemp"
Moveto [Nome Fantasia Empresa   ] Example "nemp"
{Ask} TypeIn TabelaP Enter TypeIn "Fast"
Moveto [Codigo da Empresa       ] Example "cemp"
Moveto [Nome Fantasia Empresa   ] TypeIn "Changeto _nemp"
Do_It!
ClearAll

{Ask} TypeIn "\\Sistemas\\Estoque\\Itens" Enter
Moveto [Codigo do Item          ] Example "ite"
Moveto [Descricao do Item       ] Example "dite"
Moveto [Unidade Interna         ] Example "uint"
Moveto [Localizacao             ] Example "loc"
Moveto [Codigo de Barras        ] Example "cdb"
Moveto [Codigo da Familia       ] Example "cfam"
Moveto [Descricao da Familia    ] Example "nfam"
Moveto [Codigo do Grupo         ] Example "cgru"
Moveto [Descricao do Grupo      ] Example "ngru"
Moveto [Codigo da Marca         ] Example "cmar"
Moveto [Descricao da Marca      ] Example "nmar"
{Ask} TypeIn TabelaP Enter TypeIn "Fast"
Moveto [Codigo do Item          ] Example "ite"
Moveto [Descricao do Item       ] TypeIn "Changeto _dite"
Moveto [Unidade Interna         ] TypeIn "Changeto _uint"
Moveto [Localizacao             ] TypeIn "Changeto _loc"
Moveto [Codigo de Barras        ] TypeIn "Changeto _cdb"
Moveto [Codigo da Familia       ] TypeIn "Changeto _cfam"
Moveto [Descricao da Familia    ] TypeIn "Changeto _nfam"
Moveto [Codigo do Grupo         ] TypeIn "Changeto _cgru"
Moveto [Descricao do Grupo      ] TypeIn "Changeto _ngru"
Moveto [Codigo da Marca         ] TypeIn "Changeto _cmar"
Moveto [Descricao da Marca      ] TypeIn "Changeto _nmar"
Do_It!
ClearAll

EndProc   ;  (Ajusta_Dados)

;*******************************************************************************
;* 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_FAMI"           : Campo="TG_TIPOEST"
            Case Campo="TG_GRP"            : Campo="TG_FAMI"
            Case Campo="TG_MARCA"          : Campo="TG_GRP"
            Case Campo="TG_MESANO"         : Campo="TG_MARCA" 
            Case Campo="TG_NE"             : Campo="TG_MESANO"
            Case Campo="TG_LOCAL"          : Campo="TG_NE"
            Case Campo="TG_MODELOREL"      : Campo="TG_LOCAL"
            Case Campo="TG_OPESTQ"         : Campo="TG_MODELOREL"
            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_FAMI"
                    Case Campo="TG_FAMI"       : Campo="TG_GRP"
                    Case Campo="TG_GRP"        : Campo="TG_MARCA"
                    Case Campo="TG_MARCA"      : Campo="TG_MESANO"
                    Case Campo="TG_MESANO"     : Campo="TG_NE"  
                    
                    Case Campo="TG_NE"         : Campo="TG_LOCAL"
                      if isblank(VSDGNE)
                         then VSDGNOMNE="IGNORAR"
                      endif   

                    Case Campo="TG_LOCAL"      : Campo="TG_MODELOREL" 
                     
                    Case Campo="TG_MODELOREL"  : Campo="TG_OPESTQ" 
                         VSDGMODELOREL=ControlValue("TG_MODELOREL")
                         Switch
                           Case VSDGMODELOREL="2": VSDGNOMMODELOREL=""
                           OtherWise:
                                VSDGMODELOREL="1"  VSDGNOMMODELOREL="SIMPLES"
                         EndSwitch
                    Case Campo="TG_OPESTQ"  : Campo="YES" 
                         VSDGOPESTQ=ControlValue("TG_OPESTQ")
                         Switch
                           Case VSDGOPESTQ="2": VSDGNOMOPESTQ="Sà SEM ESTOQUE"
                           OtherWise:
                                VSDGOPESTQ="1"  VSDGNOMOPESTQ="ABAIXO DO MÖNMO"
                         EndSwitch

                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
	Case Campo="TG_MESANO":
       MSG_CAMPO="Informe a Ficha como Base p/ os Saldos"
  Case Campo="TG_OPESTQ":
       MSG_CAMPO="Reposi‡Æo do Estoque: 1=Abaixo do M¡nimo  2=S¢ sem estoque"
  Case Campo="TG_MODELOREL":
       MSG_CAMPO="Modelo: 1=Simples  2="
  Case Campo="TG_NE":
       MSG_CAMPO="Nota de Entrada ou EM BRANCO=Ignorar"
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

VSDGEMPRESA = ""
VSDGMARCA = ""
VSDGTIPOEST = ""
VSDGFAMI    =""
VSDGGRUP    =""
VSDGMESANO  = AlinhM(StrVal(Month(Today())),2)+"."+AlinhM(StrVal(Year(Today())),4)
VSDGMODELOREL=""
VSDGNE      = ""

While True

  ShowDialog "Itens em Estoque Reposi‡„o Loja" 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 17 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 "Familia"  For "TG_FAMI"
   Accept @ 05,02 Width 06 "A3"  Picture "#*#" Tag "TG_FAMI"    To VSDGFAMI
   Accept @ 05,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMFAMI" To VSDGNOMFAMI

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


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

   Label  @ 00,35 "Nota Entrada"  For "TG_NE"
   Accept @ 01,36 Width 09 "A6"  Picture "!*!" Tag "TG_NE" To VSDGNE
   Accept @ 01,44 Width 25 "A25"  Picture "!*!" Tag "TG_NOMNE" To VSDGNOMNE

   Label  @ 02,35 "Localiza‡„o"  For "TG_LOCAL"
   Accept @ 03,36 Width 33 "A12"  Picture "!*!" Tag "TG_LOCAL" To VSDGLOCAL
   Accept @ 04,36 Width 33 "A30"  Picture "!*!" Tag "TG_NOMLOCAL" To VSDGNOMLOCAL

   Label  @ 06,35 "Modelo Relat¢rio" For "TG_MODELOREL"
   Accept @ 07,39 Width 04 "A1"   Picture "1,2" Tag "TG_MODELOREL" To VSDGMODELOREL
   Accept @ 07,44 Width 25 "A15"  Picture "!*!" Tag "TG_NOMMODELOREL" To VSDGNOMMODELOREL

   Label  @ 08,35 "Op‡Æo Reposi‡Æo" For "TG_OPESTQ"
   Accept @ 09,39 Width 04 "A1"   Picture "1,2" Tag "TG_OPESTQ" To VSDGOPESTQ
   Accept @ 09,44 Width 25 "A15"  Picture "!*!" Tag "TG_NOMOPESTQ" To VSDGNOMOPESTQ

   Pushbutton @ 13,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
   Pushbutton @ 13,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

  AGUARDE("Aguarde, Gerando Relat¢rio")
  
  TabelaP=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Estoque\\Rm_0072" TabelaP
  Empty TabelaP

  TituloRelatorio=""
  
  Seleciona()
  
  If IsEmpty(TabelaP)
     Then MENSAGEM("N„o existem registros a processar")
          Delete TabelaP
          Loop
  EndIf

  If VSDGMODELOREL="1"
     Then 
          If IsBlank(VSDGNE) 
             Then Impressao_Orientacao=""
                  CopyReport "\\Base\\Sistemas\\Estoque\\Rm_0072" "R" TabelaP "R"
             Else Impressao_Orientacao="Paisagem"
                  CopyReport "\\Base\\Sistemas\\Estoque\\Rm_0072" "1" TabelaP "R"
          EndIf
          IMPRIREL(TabelaP,"R")
  EndIf
  Delete TabelaP

EndWhile
ClearAll
Release Vars All
Release Procs All
