;** Numera‡Æo Para Mostru rio **************************************************
;*  PROGRAMA DE IMPRESSAO DE NUMERA€ÇO PARA MOSTRUARIO                         *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 10/12/2009 por Bruno Carvalho
;Ultima Alteracao: 03/01/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas    
;Ultima Alteracao: 04/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes LimpaRodape()                  
;Ultima Alteracao: 18/02/2013 por Kamila Gomes
;Motivo Alteracao: Ajustes SetaCorRegistro()
;Ultima Alteracao: 23/07/2017 por Andrey Fillipe
;Motivo Alteracao: Adicionado Proc MODELO()
;Ultima Alteracao: 15/05/2017 por Bruno Carvalho
;Motivo Alteracao: Alterado Dispositivo() -> DispositivoEtq()  
;Ultima Alteracao: 28/12/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes nova logica, nova etiqueta
;Ultima Alteracao: 08/03/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado Etiqueta [2,1 x 3,3] para impressora t‚rmica *Modelo 04
;Ultima Alteracao: 09/03/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado tecla [F5] para limpar registros 
;Ultima Alteracao: 16/05/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado Etiqueta [1,5 x 2,6] para impressora t‚rmica *Modelo 05 *4 Colunas
;Ultima Alteracao: 30/05/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes campo Numero 4 caracteres   
;Ultima Alteracao: 29/09/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado Etiqueta [1,5 x 2,6] para impressora t‚rmica *Modelo 06 *5 Colunas
;Ultima Alteracao: 25/11/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes campo e etiquetas INMETRO #0159                  

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()

While True
  SetaCorRegistro("Editar")

  End
  Down

  Moveto [Numero]

  TECLA=""
  AguardaTeclasPadrao()

  If RetVal=-33
       Then Echo Normal
            Echo Off
            ShowPopup " Fun‡”es " CENTERED                           
             "F6  ~I~mprimir       [F6]" : " Imprimir etiquetas"                : "F6",
             "F5  ~L~impar         [F5]" : " Limpar lista de Itens            " : "F5",
             separator,
             "~C~ancelar               " : " Cancelar a Opera‡„o              " : "CANCELAR"
            EndMenu
             To MenuVar

            echo off
            If MenuVar="CANCELAR" or MenuVar="Esc"
                Then Loop                                       
            EndIf

            RetVal=MenuVar
  EndIf

  Switch
  Case RetVal="F3": SemFicha()
  Case RetVal=-94 : MsgTeclasPadrao()
  Case RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
       While True
         PAGINA("RE_0010E","MR")
         If EDITAR="S"
            Then CHAVE=0
                 Controla_EdicaoC()
            Else If EXCLUIR="S"
                    Then If QuerExcluir("")
                            Then DEL
                            Else UnLockRecord
                         EndIf
                    Else QuitLoop
                 EndIf
         EndIf
         SetaPosForm()
       EndWhile
  Case RetVal="F5":
         ConfGeral("Confirma a exclus„o dos registro desta relac„o ?")
         If OK="S"
             Then Del
                  Limpar()
         EndIf
         Loop       
  Case Retval="F6" :
       Del
       SelecaoImprimir()
  Case Retval="ESC":
       CHAVE=9
       Del
       QuitLoop
  Case RetVal="ENTER":
       If IsBlank([])
          Then Mensagem("Informe a Numera‡Æo para Mostru rio") 
               Loop
       EndIf
       CODIGO=[]
       Del
       Locate CODIGO
       If Retval
          Then CHAVE=0
          Else CHAVE=1
               End Down
               [Numero]=CODIGO
       EndIf
       If IsLockRecord()
          Then If CHAVE=1 Then Del EndIf
               Loop
       EndIf
       Quitloop
  EndSwitch  
EndWhile
EndProc

;*******************************************************************************
;* Rotina Limpar Registros                                                     *
;*******************************************************************************
Proc Limpar()
Aguarde("Aguarde, Excluindo registros")
While RecordStatus("New")=False
  Del
EndWhile
EndProc

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITA()
Moveto [Quantidade]
While True

  TECLA=" Esc=Retornar  "

  If CHAVE=0
     Then TECLA=TECLA+"Del=Excluir  "
  EndIf

  MSGCAMPO=""
  Switch
     Case Field()="Numero"       : MSGCAMPO="Numera‡Æo para Mostru rio (Ex: 1, 01, 001 [3 caracteres … dispoi‡Æo]"
     Case Field()="Quantidade"   : MSGCAMPO="Quantidade de Etiquetas a serem Impressas"
     Case Field()="INMETRO"      : MSGCAMPO="N£mero identifica‡Æo INMETRO"
  EndSwitch

  Prompt TECLA
  SetaCorRegistro("Editando")
  Wait Field
       Message MSGCAMPO
       Until "ESC","ENTER","DEL","FIELDVIEW","F35"

  Switch
  Case Retval="ESC":
       Switch
       Case Field()="Numero" :
            If QuerDesfazer("")
                   Then If CHAVE=1
                          Then Del
                          Else If RecordStatus("Modified")
                                  Then Undo
                               EndIf
                       EndIf
                       CHAVE=9
                       QuitLoop
               EndIf
       Otherwise : Left           
       EndSwitch             
                  
  Case Retval="ENTER":
        If IsBlank([Numero])
           Then Mensagem("Informe a Numera‡Æo para Mostru rio") 
           Loop
        EndIf
        Switch
        Case Field() = "Quantidade" : 
             If IsBlank([])
                Then Loop
             EndIf
             moveto [INMETRO]    
        Case Field() = "INMETRO" : 
             Quitloop
             
        Otherwise : Right
       EndSwitch
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVE=0
          Then If QuerExcluir("")
                  Then DEL
                       QuitLoop
               EndIf
       EndIf
  EndSwitch
EndWhile
EndProc  ; (Digita)

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc ORDEM()
ClearAll

{Ask} {\\Sistemas\\Estoque\\RE_0010E} CheckPlus
Do_It!
ClearAll

EndProc  ; (Ordem)

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

VSDGCODMODELO     = ""
VSDGMODELO        = ""

;ModeloRelatoriosAdd("XXX XX maximo 70 XX")

ModeloRelatoriosAdd("Criar") ; linha obrigatoria inicial
;;  tem que redesenhar  vr nova logica ModeloRelatoriosAdd("01  Etiqueta           - 4 colunas X 12 linhas")
;;  tem que redesenhar  vr nova logica ModeloRelatoriosAdd("02  Etiqueta 26mmX15mm - 7 colunas X 18 linhas")
ModeloRelatoriosAdd(Fill(chr(196),3)+" Mostru rio:")
ModeloRelatoriosAdd("03  Etiqueta 2,6cm x 1,5cm - 7 colunas X 18 linhas (126 etiquetas por p gina)")
ModeloRelatoriosAdd("04  Etiqueta 3,3cm X 2,1cm - 3 colunas - Impressora T‚rmica")
ModeloRelatoriosAdd("05  Etiqueta 1,5cm x 2,6cm - 4 colunas - Impressora T‚rmica")
ModeloRelatoriosAdd("06  Etiqueta 1,5cm x 2,6cm - 5 colunas - Impressora T‚rmica")
ModeloRelatoriosAdd("Separator")    
ModeloRelatoriosAdd(Fill(chr(196),3)+" INMETRO:")
ModeloRelatoriosAdd("30  Etiqueta 3,3cm X 2,1cm - 3 colunas - INMETRO")
ModeloRelatoriosAdd("31  Etiqueta 3,5cm X 5,0cm - 3 colunas - INMETRO")
ModeloRelatoriosAdd("Fim")
                           
EndProc ;ModeloRelatoriosCarregaLista

;*******************************************************************************
;* Rotina Impressao                                                            *
;*******************************************************************************
Proc SelecaoImprimir()
private dmsg

campo="TG_CODMODELO"
if not Dialog_F1() 
   then return
endif

Do_It!
ClearAll

while true

  DispositivoEtq()
  If OK=""
     Then quitLoop
  endif
  
  AGUARDE("Aguarde, selecionado dados")
  ORDEM()
  If IsEmpty("Answer")
     Then MENSAGEM("N„o Existem Registros a Processar")
          QuitLoop
  EndIf
  AGUARDE("Aguarde, gerando o relat¢rio")
  switch
  
    ;--- modelos ---------------------------------------------------------------
    case VSDGCODMODELO="01"   or         
         VSDGCODMODELO="02" :      
  
      Empty("Answer")
    
      View "Answer"
      CoEdit "Re_0010E"
      Scan
        CopyToArray REG
    
        Moveto "Answer"
        For I From 1 to [Re_0010E->Quantidade]
          End
          Down
          CopyFromArray Reg
        EndFor
    
        Moveto "Re_0010E"
      EndScan
      Do_It!
      ClearAll
      
      Switch
        Case VSDGCODMODELO = "02" : 
             Play "RE_0352"
             
        Case VSDGCODMODELO = "01" : 
             CopyReport "\\Base\\Sistemas\\Estoque\\Re_0010E" "R" "Answer" "R"
             IMPRIREL("Answer","R")

      EndSwitch  

    ;--- modelos ---------------------------------------------------------------
    case VSDGCODMODELO = "03" : Play "RE_M001"
    
    Case VSDGCODMODELO = "04" : Play "RE_M002"
    
    Case VSDGCODMODELO = "05" : Play "RE_M003"
    
    Case VSDGCODMODELO = "06" : Play "RE_M004"


    Case VSDGCODMODELO = "30" : Play "RE_I159"
    Case VSDGCODMODELO = "31" : Play "RE_I159G"
        
  endswitch
  quitloop
Endwhile

if IsTable("Answer") then Delete "Answer" endif

CoEdit "RE_0010E"
PickForm "F"

EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
DIGITA()
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"

ModeloRelatoriosCarregaLista()

CoEdit "RE_0010E"
PickForm "F"    

While True
  CHAVE()
  If CHAVE=9 Then QuitLoop EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
