;** RE_0020 ********************************************************************
;*  Emissao de Etiquetas Representantes                                        *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 20/09/2001 por Anivel Augusto Rodrigues
;Ultima Alteracao: 03/12/2004 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 23/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;Ultima Alteracao: 29/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas
;Ultima Alteracao: 01/01/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes SetaCorRegistro("Editando") 
;Ultima Alteracao: 04/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes LimpaRodape()                  
;Ultima Alteracao: 09/09/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 05/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 07/01/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes cor editar 
;Ultima Alteracao: 15/05/2017 por Bruno Carvalho
;Motivo Alteracao: Alterado Dispositivo() -> DispositivoEtq()
;Ultima Alteracao: 11/02/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes de padroniza‡Æo nos campos [TG_CIDADE] e [TG_ESTADO]

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()
While True
  End
  Down Down
  Moveto [Codigo do Representante]

  SetaCorRegistro("Editar")
  While True

  TECLA="F1=Tabelas"
  AguardaTeclasPadrao()

  If RetVal=-33
    Then Echo Normal
         Echo Off
         ShowPopup " Fun‡”es " CENTERED
          "~I~mprimir [F6]  ": " Selecionar/Imprimir etiqueta     " :"F6",
          "~L~impar   [F5]  ": " Limpar a lista corrente          " :"F5",
          "~S~ele‡„o  [F4]  ": " Selecionar dados                 " :"F4",
          "~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="F5":
         ConfGeral("Confirma a exclus„o dos registro desta relac„o ?")
         If OK="S"
             Then Limpar()
         EndIf
         QuitLoop
    Case RetVal="F4":
         Del
         Selecao()
         QuitLoop
    Case RetVal="F6":
         Del
         If Not IsEmpty("RE_0020")
            Then Imprimir()
         EndIf
         QuitLoop
    Case RetVal="F1":
         If Field()="Codigo do Representante"
            Then If Not CONSULTAF1()
                    Then Loop
                 EndIf   
         EndIf
    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":
         CHAVE=9
         Del
         Return
    Case RetVal="ENTER":
         If IsBlank([])
            Then Loop
         EndIf
         []=Alinh()
         CODIGO=[]
         Del
         Locate CODIGO
         If Retval
            Then CHAVE=0
            Else CHAVE=1
                 End Down
                 [Codigo do Representante]=CODIGO
         EndIf
         If Not IsLockRecord()
            Then Return
         EndIf
         Quitloop
    EndSwitch
  EndWhile
EndWhile
EndProc

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

  TECLA=" Esc=Retornar  "

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

  Prompt TECLA
  SetaCorRegistro("Editando")
  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

;*******************************************************************************
;* Rotina Limpar Registros                                                     *
;*******************************************************************************
Proc Limpar()
Aguarde("Aguarde, Excluindo registros")
Do_It!
Empty("RE_0020")
CoEditKey
PickForm "R"
;PickForm "1"
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_CIDADE"         : Campo="NO"
            Case Campo="TG_ESTADO"         : Campo="TG_CIDADE"
            Case Campo="TG_QUANTIDADE"     : Campo="TG_ESTADO"
            ;** Imprimir **
            Case Campo="TG_OPRELLISTCAD"   : Campo="NO"
            Case Campo="TG_OPRELCODALFDIG" : Campo="TG_OPRELLISTCAD"

            Case Campo="YES" Or Campo="NO" :
                 If OP_SHOW="S"
                    Then Campo="TG_CIDADE"
                    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_CIDADE"         : Campo="TG_ESTADO"
                         If Upper(VSDGCIDADE)="TODAS"
                            Then CIDADE=""
                            Else CIDADE=VSDGCIDADE
                         EndIf
                    Case Campo="TG_ESTADO"         : Campo="TG_QUANTIDADE"     
                    Case Campo="TG_QUANTIDADE"     :
                         VSDGQUANTIDADE=ControlValue("TG_QUANTIDADE")
                         If Not Isblank(VSDGQUANTIDADE)
                            Then Campo="YES"
                         EndIf
                    ;** Imprimir **
                    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" :Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  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

VSDGCIDADE   =""
VSDGESTADO   ="" 

OP_SHOW="S"
ShowDialog "Sele‡„o de Registros a Incluir" 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 09 Width 72

  Label  @ 00,00 "Cidade"  For "TG_CIDADE"
  Accept @ 01,01 Width 27 "A20"  Picture "!*!" Tag "TG_CIDADE"  To VSDGCIDADE
                                   
  Label  @ 00,27 "Estado"  For "TG_ESTADO"
  Accept @ 01,28 Width 06 "A2"  Picture "!*!" Tag "TG_ESTADO" To VSDGESTADO

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

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

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

        {Ask} {Represen}
        Moveto [Codigo do Representante] Check
        Moveto [Cidade Represent       ] Check TypeIn CIDADE
        Moveto [UF Represent           ] TypeIn "~VSDGESTADO.."
        Do_It!
        ClearAll

        {Ask} {Re_0020}
        Moveto [Codigo do Representante] Example "a1"
        {Ask} {Answer} TypeIn "Fast Delete"
        Moveto [Codigo do Representante] Example "a1"
        Do_It!
        ClearAll

        If IsEmpty("Answer")
           Then Mensagem("N„o exite registro conforme sele‡„o !")
           Else View "Re_0020"
                CoEdit "Answer"
                Scan
                  Moveto "Re_0020"
                  End Down
                  [Codigo do Representante]=[Answer->Codigo do Representante]
                  [Quantidade]=VSDGQUANTIDADE
                  Moveto "Answer"
                EndScan
                Do_It!
                ClearAll
        EndIf

EndIf

ClearAll
CoEdit "RE_0020"
PickForm "R"
;PickForm "1"
EndProc

;*******************************************************************************
;* 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 09 Width 72

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

    Label  @ 02,00 "Ordem" For "TG_OPRELCODALFDIG"
    Accept @ 03,04 Width 04 "A1"  Picture "1,2,3" Tag "TG_OPRELCODALFDIG" To VSDGOPRELCODALFDIG
    Accept @ 03,09 Width 25 "A12" Picture "!*!" Tag "TG_NOMOPRELCODALFDIG" To VSDGNOMOPRELCODALFDIG

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  DispositivoEtq()
  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 "Codigo do Representante" EndIf
  If VSDGOPRELCODALFDIG  = "2" Then Sort "Answer" On "Razao Social Represent"  EndIf
  If VSDGOPRELLISTCAD = "1" Then CopyReport "Re_0020" "1" "Answer" "R" EndIf
  If VSDGOPRELLISTCAD = "2" Then CopyReport "Re_0020" "2" "Answer" "R" EndIf
  If VSDGOPRELLISTCAD = "3" Then CopyReport "Re_0020" "3" "Answer" "R" EndIf

  IMPRIREL("Answer","R")
  Delete "Answer"
  QuitLoop
EndWhile

ClearAll
CoEdit "RE_0020"
PickForm "R"
;PickForm "1"
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"

VSDGOPRELCODALFDIG    =""
VSDGNOMOPRELCODALFDIG =""
VSDGOPRELLISTCAD      =""
VSDGNOMOPRELLISTCAD   =""
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
