;** RE_0020 ********************************************************************
;*  Emissao de Etiquetas p/ Cartao de Ponto                                    *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 20/09/2001 por Douglas Rodrigues
;Ultima Alteracao: 30/03/2007 por Nikolas
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 23/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;Ultima Alteracao: 03/01/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas   

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()
While True
  End
  Down
  Moveto [Codigo da Empresa]
  [Codigo da Empresa]=SYS_EMPRESA_DEFAULT

  SetaCorRegistro("Editar")
  While True

  TECLA="F1=Tabelas"
  AguardaTeclasPadrao()

  If RetVal=-33
     Then Echo Normal
          Echo Off
          ShowPopup " Fun‡”es " CENTERED
             "F5 ~L~impar          " : " Limpar lista de Itens           " : "F5",
             "F6 ~I~mprimir        " : " Imprimir etiquetas              " : "F6",
             "F7 ~S~ele‡„o         " : " Sele‡„o de Itens                " : "F7",
             "~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="F5":
         ConfGeral("Confirma a exclus„o dos registro desta relac„o ?")
         If OK="S"
             Then Limpar()
         EndIf
         QuitLoop
    Case RetVal="F7":
         Del
         Selecao()
         QuitLoop
    Case RetVal="F6":
         Del
         If Not IsEmpty("Re_0020")
            Then Imprimir()
         EndIf
         QuitLoop
    Case RetVal="F1":
         Switch
           Case Field()="Codigo da Empresa":
                CONSULTAF1()
           Case Field()="Numero_Registro":
                Moveto [Lookup_Empregad]
                KeyPress "F1"
                Ok=""
                If Consulta_Sem_F1()
                   Then CopyToArray REGISTRO
                        Ok="S"
                EndIf
                KeyPress "ESC"
                []=""
                Moveto [Numero_Registro]
                If Ok="S"
                   Then CopyFromArray REGISTRO
                EndIf
         EndSwitch
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         While True
           PAGINA("Re_0020","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
         QuitLoop
    Case Retval="ESC":
         Switch
           Case Field()="Codigo da Empresa":
                CHAVE=9
                Del
                Return
           Case Field()="Numero_Registro":
                Moveto [Codigo da Empresa]
         EndSwitch
    Case RetVal="ENTER":
         If IsBlank([]) Then Loop EndIf
         Switch
           Case Field()="Codigo da Empresa":
                EMPRESA=[]
                Moveto [Numero_Registro]
                Loop
           Case Field()="Numero_Registro":
                NUMERO=[]
                Moveto [Lookup_Empregad]
                KeyPress "F1"
                Moveto [Codigo da Empresa]
                Locate EMPRESA,NUMERO
                If Not RetVal
                   Then Mensagem("Numero do Registro Invalido !")
                        KeyPress "ESC"
                        Loop
                EndIf
                CopyToArray REGISTRO
                KeyPress "ESC"
         EndSwitch
         Del
         Locate EMPRESA,NUMERO
         If Retval
            Then CHAVE=0
            Else CHAVE=1
                 End Down
                 CopyFromArray REGISTRO
         EndIf
         If Not IsLockRecord()
            Then Return
         EndIf
         Quitloop
    EndSwitch
  EndWhile
EndWhile
EndProc  ; (Chave)

;*******************************************************************************
;* Rotina para Digitar Quantidade                                              *
;*******************************************************************************
Proc DIGITA()
Moveto [Quantidade]
While True

  TECLA=" Esc=Retornar  "

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

  Prompt TECLA

  Wait Field
       Until "ESC","ENTER","DEL","FIELDVIEW","F35"

  Switch
  Case Retval="ESC":
       If QuerDesfazer("")
          Then If CHAVE=1
                  Then Del
                  Else Undo
               EndIf
               CHAVE=9
               QuitLoop
       EndIf
  Case Retval="ENTER":
       If IsBlank([])
          Then []=1
       EndIf
       QuitLoop
  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 Limpar Registros                                                     *
;*******************************************************************************
Proc Limpar()
Aguarde("Aguarde, Excluindo registros")
Do_It!
Empty("Re_0020")
CoEditKey
PickForm "F"
EndProc

;*******************************************************************************
;* 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
            ;** Selecao **
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_DTINI2"        : Campo="TG_EMPRESA"
            Case Campo="TG_DTFIM2"        : Campo="TG_DTINI2"
            Case Campo="TG_QUANTIDADE"    :
                 If IsBlank(VSDGDTFIM2)
                    Then Campo="TG_DTINI2"
                    Else Campo="TG_DTFIM2"
                 EndIf
            ;** Imprimir **
            Case Campo="TG_TPETIQUETA"     : Campo="NO"
            Case Campo="TG_OPRELLISTCAD"   : Campo="TG_TPETIQUETA"
            Case Campo="TG_OPRELCODALFDIG" : Campo="TG_OPRELLISTCAD"
            Case Campo="TG_MESANO"         : Campo="TG_OPRELCODALFDIG"


            Case Campo="YES" Or Campo="NO" :
                 If OP_SHOW="S"
                    Then Campo="TG_EMPRESA"
                    Else Campo="TG_OPRELLISTCAD"
                 EndIf
          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
                    ;** Selecao **
                    Case Campo="TG_EMPRESA"  : Campo="TG_DTINI2"
                    Case Campo="TG_DTINI2"   :
                         VSDGDTINI2=ControlValue("TG_DTINI2")
                         If IsBlank(VSDGDTINI2)
                            Then VSDGDTFIM2=BlankDate()
                                 Campo="TG_QUANTIDADE"
                            Else Campo="TG_DTFIM2"
                         EndIf
                    Case Campo="TG_DTFIM2"   :
                         VSDGDTFIM2=ControlValue("TG_DTFIM2")
                         If Not IsBlank(VSDGDTFIM2)
                            Then If VSDGDTFIM2<VSDGDTINI2
                                    Then Mensagem("Data Invalida !")
                                    Else Campo="TG_QUANTIDADE"
                                 EndIf
                         EndIf
                    Case Campo="TG_QUANTIDADE"  :
                         VSDGQUANTIDADE=ControlValue("TG_QUANTIDADE")
                         If Not Isblank(VSDGQUANTIDADE)
                            Then Campo="YES"
                         EndIf

                    ;** Imprimir **
                    Case Campo="TG_TPETIQUETA":
                         VSDGTPETIQUETA=ControlValue("TG_TPETIQUETA")
                         Switch
                           Case VSDGTPETIQUETA="1": VSDGNOMTPETIQUETA="CARTAO DE PONTO"
                           Case VSDGTPETIQUETA="2": VSDGNOMTPETIQUETA="ANIVERSARIANTE"
                                VSDGMESANO=""
                           OtherWise:
                                VSDGTPETIQUETA=""
                         EndSwitch
                         If Not IsBlank(VSDGTPETIQUETA)
                            Then Campo="TG_OPRELLISTCAD"
                         EndIf
                    Case Campo="TG_OPRELLISTCAD":
                         Switch
                           Case VSDGOPRELLISTCAD="1":  VSDGNOMOPRELLISTCAD="1 Coluna de 8,9x2,4 cm"
                           Case VSDGOPRELLISTCAD="2":  VSDGNOMOPRELLISTCAD="2 Colunas de 8,9x2,4 cm"
                           Case VSDGOPRELLISTCAD="3":  VSDGNOMOPRELLISTCAD="3 Colunas de 8,9x2,4 cm"
                         EndSwitch
                         Campo="TG_OPRELCODALFDIG"
                    Case Campo="TG_OPRELCODALFDIG" :
                         If VSDGTPETIQUETA="1"
                            Then Campo="TG_MESANO"
                            Else Campo="YES"
                         EndIf
                    Case Campo="TG_MESANO"  :
                         VSDGMES=SubStr(VSDGMESANO,1,2)
                         VSDGANO=SubStr(VSDGMESANO,4,4)
                         If NumVal(VSDGMES) > 12 Or NumVal(VSDGMES) = 0
                            Then MENSAGEM("Mˆs Inv lido!")
                            Else Campo = "YES"
                         EndIf
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_TPETIQUETA":
     MSG_CAMPO="Informe 1=Cart„o de Ponto, 2=Aniversariante"
  Case Campo="TG_OPRELLISTCAD":
     MSG_CAMPO="Informe 1, 2, 3 (Coluna(s) 8,9x2,4 cm)"
  Case Campo="TG_QUANTIDADE":
     MSG_CAMPO="Informe a quantidade de repeti‡„o da etiqueta"
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Rotina Filtrar Registros                                                    *
;*******************************************************************************
Proc Selecao()
LimpAguarde()
Do_It!
ClearAll
Echo Normal
Echo Off

VSDGEMPRESA       =""
VSDGDTINI2        =BlankDate()
VSDGDTFIM2        =BlankDate()
VSDGTPETIQUETA    =""
VSDGNOMTPETIQUETA =""
VSDGOPRELCODALF   =""
VSDGNOMOPRELCODALF=""
OP_SHOW="S"

ShowDialog "Etiqueta p/ Cart„o de Ponto" Proc "SD_Dialog"
Trigger "OPEN","ARRIVE"
Key "F1","ENTER","ESC",
    -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140
 @ 05,12   Height 11 Width 56
  Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
  Accept @ 1,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA" To VSDGEMPRESA
  Accept @ 1,09 Width 23 "A20" Picture "!*!" Tag "TG_NOMEMP" To VSDGNOMEMP

  Label  @ 02,00 "Per¡odo de Anivers rio" For "TG_DTINI2"
  Label  @ 03,00 "de" For "TG_DTINI2"
  Accept @ 03,04 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI2" To VSDGDTINI2
  Label  @ 03,17 "at‚" For "TG_DTFIM2"
  Accept @ 03,22 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM2" To VSDGDTFIM2

  Label  @ 04,00 "Quantidade" For "TG_QUANTIDADE"
  Accept @ 05,01 Width 10 "S"  Tag "TG_QUANTIDADE" To VSDGQUANTIDADE

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

EndDialog
If RetVal
   Then LimpaRodape(0)
        Aguarde("Aguarde, Selecionando registros")
        ClearAll

        {Ask} {Empregad} Check
        Moveto [Codigo da Empresa] TypeIn "~VSDGEMPRESA.."
        Moveto [Data_Demissao    ] TypeIn "Blank"
        Do_It!
        ClearAll

        {Ask} {Re_0020}
        Moveto [Codigo da Empresa ] Example "a1"
        Moveto [Numero_Registro   ] Example "a2"
        {Ask} {Answer} TypeIn "Fast Delete"
        Moveto [Codigo da Empresa ] Example "a1"
        Moveto [Numero_Registro   ] Example "a2"
        Do_It!
        ClearAll

        If IsEmpty("Answer")
           Then Mensagem("N„o exite registro conforme sele‡„o !")
           Else If (Not IsBlank(VSDGDTINI2)  And Not IsBlank(VSDGDTFIM2))
                   Then wc=0
                        CoEdit "Empregad","Re_0020","Answer"
                        Scan
                          Moveto "Empregad"
                          Moveto [Codigo da Empresa]
                          Locate [Answer->Codigo da Empresa],[Answer->Numero_Registro]
                          If RetVal
                             Then If Not IsBlank([Data_Nascimento])
                                     Then datai=DateVal(StrVal(Month([Data_Nascimento]))+"/"+StrVal(Day([Data_Nascimento]))+"/"+StrVal(Year(VSDGDTINI2)))
                                          dataf=DateVal(StrVal(Month([Data_Nascimento]))+"/"+StrVal(Day([Data_Nascimento]))+"/"+StrVal(Year(VSDGDTFIM2)))
                                          If Datai>=VSDGDTINI2 And Dataf<=VSDGDTFIM2
                                             Then CopytoArray REGISTRO
                                                  Moveto "Re_0020"
                                                  End Down
                                                  [Codigo da Empresa ]= REGISTRO["Codigo da Empresa"]
                                                  [Numero_Registro   ]= REGISTRO["Numero_Registro"]
                                                  [Nome_Empregado    ]= REGISTRO["Nome_Empregado"]
                                                  [Endereco_Empregado]= REGISTRO["Endereco_Empregado"]
                                                  [Bairro_Empregado  ]= REGISTRO["Bairro_Empregado"]
                                                  [CEP_Empregado     ]= REGISTRO["CEP_Empregado"]
                                                  [Cidade_Empregado  ]= REGISTRO["Cidade_Empregado"]
                                                  [Estado_Empregado  ]= REGISTRO["Estado_Empregado"]
                                                  [Telefone_Empregado]= REGISTRO["Telefone_Empregado"]
                                                  [Data_Nascimento   ]= REGISTRO["Data_Nascimento"]
                                                  [Data_Admissao     ]= REGISTRO["Data_Admissao"]
                                                  [Data_Demissao     ]= REGISTRO["Data_Demissao"]
                                                  [Local_Trabalho    ]= REGISTRO["Local_Trabalho"]
                                                  [Mes_Referente     ]= REGISTRO["Mes_Referente"]
                                                  [Ano_Referente     ]= REGISTRO["Ano_Referente"]
                                                  [Hora_Entrada      ]= REGISTRO["Hora_Entrada"]
                                                  [Hora_Intervalo    ]= REGISTRO["Hora_Intervalo"]
                                                  [Hora_Saida        ]= REGISTRO["Hora_Saida"]
                                                  [Situacao          ]= REGISTRO["Situacao"]
                                                  [Observacao        ]= REGISTRO["Observacao"]
                                                  [Quantidade        ]=VSDGQUANTIDADE
                                                  wc=wc+1
                                          EndIf
                                  EndIf
                          EndIf
                          Moveto "Answer"
                        EndScan
                        Do_It!
                        ClearAll
                        If wc=0
                           Then Mensagem("N„o exite registro conforme sele‡„o !")
                        EndIf
                   Else CoEdit "Re_0020","Answer"
                        Scan
                          CopyToArray REGISTRO
                          Moveto "Re_0020"
                          End Down
                          CopyFromArray REGISTRO
                          [Quantidade]=VSDGQUANTIDADE
                          Moveto "Answer"
                        EndScan
                        Do_It!
                        ClearAll
                EndIf
        EndIf
EndIf

ClearAll
CoEdit "Re_0020"
PickForm "F"
EndProc  ; (Selecao)

;*******************************************************************************
;* Rotina Impressao                                                            *
;*******************************************************************************
Proc Imprimir()
LimpaRodape(0)
Do_It!
ClearAll

While True

  OP_SHOW="I"
  ShowDialog "Imprimir" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 01,01 Height 13 Width 45

    Label  @ 00,00 "Tipo" For "TG_TPETIQUETA"
    Accept @ 01,01 Width 04 "A1"  Picture "1,2" Tag "TG_TPETIQUETA" To VSDGTPETIQUETA
    Accept @ 01,06 Width 30 "A30"  Picture "!*!" Tag "TG_NOMTPETIQUETA" To VSDGNOMTPETIQUETA

    Label  @ 02,00 "Op‡„o" For "TG_OPRELLISTCAD"
    Accept @ 03,01 Width 04 "A1"  Picture "1,2,3" Tag "TG_OPRELLISTCAD" To VSDGOPRELLISTCAD
    Accept @ 03,06 Width 30 "A30"  Picture "!*!" Tag "TG_NOMOPRELLISTCAD" To VSDGNOMOPRELLISTCAD

    Label  @ 04,00 "Ordem" For "TG_OPRELCODALFDIG"
    Accept @ 05,01 Width 04 "A1"  Picture "1,2,3" Tag "TG_OPRELCODALFDIG" To VSDGOPRELCODALFDIG
    Accept @ 05,06 Width 15 "A12" Picture "!*!" Tag "TG_NOMOPRELCODALFDIG" To VSDGNOMOPRELCODALFDIG

    Label  @ 06,00 "Mˆs/Ano Referente"  For "TG_MESANO"
    Accept @ 07,01  Width 10 "A07"  Picture "##;.####" Tag "TG_MESANO" To VSDGMESANO

    Pushbutton @ 09,10 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 09,24 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  Dispositivo()
  If OK="" Then Loop EndIf

  AGUARDE("Aguarde, Gerando Relat¢rio")
  {Ask} {Re_0020} Check
  Do_It!
  ClearAll
  Empty("Answer")

  View "Answer"
  CoEdit "Re_0020"
  Scan
    CopyToArray REG
    Moveto "Answer"
    For I From 1 to [Re_0020->Quantidade]
      End
      Down
      CopyFromArray Reg
    EndFor
    Moveto "Re_0020"
  EndScan
  Do_It!
  ClearAll
  
  If VSDGOPRELCODALFDIG  = "1" Then Sort "Answer" On "Numero_Registro" EndIf
  If VSDGOPRELCODALFDIG  = "2" Then Sort "Answer" On "Nome_Empregado"  EndIf


  If VSDGOPRELLISTCAD = "1" Then CopyReport "\\Base\\Sistemas\\Cartaop\\Re_0020" "R" "Answer" "R" EndIf
  If VSDGOPRELLISTCAD = "2" Then CopyReport "\\Base\\Sistemas\\Cartaop\\Re_0020" "1" "Answer" "R" EndIf
  If VSDGOPRELLISTCAD = "3" Then CopyReport "\\Base\\Sistemas\\Cartaop\\Re_0020" "2" "Answer" "R" EndIf

  IMPRIREL("Answer","R")
  Delete "Answer"
  QuitLoop
EndWhile
ClearAll
CoEdit "Re_0020"
PickForm "F"
EndProc   ;  (Imprimir)

;*******************************************************************************
;* Rotina para Limpar Aguarde                                               ****
;*******************************************************************************
Proc LimpAguarde2L()
@ 23,0 ?? Fill(" ",80)
PaintCanvas Attribute 31 23,0,23,79
@ 24,0 ?? Fill(" ",80)
PaintCanvas Attribute 31 24,0,24,79
EndProc ; (LimpAguarde2L)

;*******************************************************************************
;* 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"
If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="" EndIf
VSDGEMPRESA        =""
VSDGDTINI2         =BlankDate()
VSDGDTFIM2         =BlankDate()
VSDGTPETIQUETA     =""
VSDGNOMTPETIQUETA  =""
VSDGOPRELCODALF    =""
VSDGNOMOPRELCODALF =""
VSDGQUANTIDADE     =1

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