;** RE_0010 ********************************************************************
;*  Emissao de Etiquetas Clientes/Fornecedores                                 *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 20/09/2001 por Anivel Augusto Rodrigues
;Ultima Alteracao: 11/12/2006 por Nikolas M. Mateus
;Motivo Alteracao: Inclusao nova etiqueta
;Ultima Alteracao: 04/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes LimpaRodape()                  
;Ultima Alteracao: 15/05/2017 por Bruno Carvalho
;Motivo Alteracao: Alterado DispositivoI() -> DispositivoEtq()
;Ultima Alteracao: 26/04/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ [Data de Nascimento] ser consultada/armazenada pela Destinat
;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
  Moveto [Codigo]

  While True

    Prompt " Esc=Sair  F1=Tabelas  F3=Imprimir  F5=Limpar  F6=Selec„o  F7=Paginar  "

    Wait Field
    Until "ESC","ENTER","F1","F7","HOME","UP","PGUP","F5","F6","F3",
          -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140

    If SubStr(RetVal,1,2)="-1"
       Then SYS_TECLA_ACIONADA=RetVal
            Seta_Tecla_Acionada()
            RetVal="ESC"
    EndIf

    Switch
    Case RetVal="F5":
         ConfGeral("Confirma a exclus„o dos registro desta relac„o ?")
         If OK="S"
             Then Limpar()
         EndIf
         QuitLoop
    Case RetVal="F6":
         Del
         Selecao()
         QuitLoop
    Case RetVal="F3":
         Del
         If Not IsEmpty("Re_0010")
            Then Imprimir()
         EndIf
         QuitLoop
    Case RetVal="F1":
         If Field()="Codigo"
            Then CONSULTAF1()
         EndIf
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         While True
           PAGINA("Re_0010","MR")
           If EDITAR="S"
              Then CHAVE=0
                   Return
              Else If EXCLUIR="S"
                      Then CONFIRMA()
                           If OK="S"
                              Then DEL
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
         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]=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

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

  Switch
  Case Retval="ESC":
       If CHAVE=1
          Then Del
          Else If RecordStatus("Modified")
                  Then Undo
               EndIf
       EndIf
       CHAVE=9
       QuitLoop
  Case Retval="ENTER":
       If IsBlank([])
          Then []=1
       EndIf
       [Codigo Empresa]="0001"
       QuitLoop
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVE=0
          Then CONFIRMA()
               If OK="S"
                  Then DEL
                       QuitLoop
               EndIf
       EndIf
  EndSwitch
EndWhile
EndProc

;*******************************************************************************
;* Rotina Limpar Registros                                                     *
;*******************************************************************************
Proc Limpar()
Aguarde("Aguarde, Excluindo registros")
Do_It!
Empty("RE_0010")
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_TIPO"           : Campo="NO"
            Case Campo="TG_REPRESEN"       : Campo="TG_TIPO"
            Case Campo="TG_ATIVIDADE"      : Campo="TG_REPRESEN"
            Case Campo="TG_AREA"           : Campo="TG_ATIVIDADE"
            Case Campo="TG_CIDADE"         : Campo="TG_AREA"
            Case Campo="TG_ESTADO"         : Campo="TG_CIDADE"
            Case Campo="TG_STATUS"         :
                    If VSDGTIPO="F"
                       Then Campo="TG_TIPO"
                       Else Campo="TG_ESTADO"
                    EndIf
            Case Campo="TG_DTINI2"         : Campo="TG_STATUS"
            Case Campo="TG_DTFIM2"         : Campo="TG_DTINI2"
            Case Campo="TG_QUANTIDADE"     :
                 If VSDGTIPO="C"
                    Then If IsBlank(VSDGDTFIM2)
                            Then Campo="TG_DTINI2"
                            Else Campo="TG_DTFIM2"
                         EndIf
                    Else Campo="TG_STATUS"
                 EndIf
            ;** Imprimir **
            Case Campo="TG_OPETIQUETA"     : Campo="NO"
            Case Campo="TG_OPRELCODALFDIG" : Campo="TG_OPETIQUETA"

            Case Campo="YES" Or Campo="NO" :
                 If OP_SHOW="S"
                    Then Campo="TG_TIPO"
                    Else Campo="TG_OPETIQUETA"
                 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_TIPO" :
                         VSDGTIPO=ControlValue("TG_TIPO")
                         If Not IsBlank(VSDGTIPO)
                            Then Switch
                                   Case VSDGTIPO="C":
                                        VSDGNOMTIPO="CLIENTES"
                                        Campo="TG_REPRESEN"
                                   Case VSDGTIPO="F":
                                        VSDGNOMTIPO="FORNECEDORES"
                                        VSDGREPRESEN =""
                                        VSDGNOMREPR  =""
                                        VSDGATIVIDADE=""
                                        VSDGNOMATIV  =""
                                        VSDGAREA     =""
                                        VSDGNOMAREA  =""
                                        VSDGCIDADE   =""
                                        VSDGESTADO   =""
                                        Campo="TG_STATUS"
                                 EndSwitch
                         EndIf
                    Case Campo="TG_REPRESEN" : Campo="TG_ATIVIDADE"
                    Case Campo="TG_ATIVIDADE": Campo="TG_AREA"
                    Case Campo="TG_AREA"     : Campo="TG_CIDADE"
                    Case Campo="TG_CIDADE"   : Campo="TG_ESTADO"
                         If Upper(VSDGCIDADE)="TODAS"
                            Then CIDADE=""
                            Else CIDADE=VSDGCIDADE
                         EndIf
                    Case Campo="TG_ESTADO"   : Campo="TG_STATUS"
                    Case Campo="TG_STATUS"   :
                         If VSDGTIPO="F"
                            Then VSDGDTINI2   =BlankDate()
                                 VSDGDTFIM2   =BlankDate()
                                 Campo="TG_QUANTIDADE"
                            Else Campo="TG_DTINI2"
                         EndIf
                    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_OPETIQUETA"     : Campo="TG_OPRELCODALFDIG"
                    Case Campo="TG_OPRELCODALFDIG" : Campo="YES"

                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_TIPO":
     MSG_CAMPO="Informe C -> Cliente, F -> Fornecedor"
  Case Campo="TG_OPETIQUETA":
      MSG_CAMPO="Selecione o op‡„o desejada !"
      TECLA    ="=Selecionar  "
  Case Campo="TG_QUANTIDADE":
     MSG_CAMPO="Informe a quantidade de repeti‡„o da etiqueta ou Cartao Postal"
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

VSDGTIPO     =""
VSDGNOMTIPO  =""
VSDGREPRESEN =""
VSDGNOMREPR  =""
VSDGATIVIDADE=""
VSDGNOMATIV  =""
VSDGAREA     =""
VSDGNOMAREA  =""
VSDGCIDADE   =""
VSDGESTADO   =""
VSDGDTINI2   =BlankDate()
VSDGDTFIM2   =BlankDate()
VSDGSTATUS   =""

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 21 Width 45

  Label  @ 00,00 "Tipo" For "TG_TIPO"
  Accept @ 01,01 Width 04 "A1"  Picture "C,F, " Tag "TG_TIPO" To VSDGTIPO
  Accept @ 01,06 Width 16 "A13" Picture "!*!" Tag "TG_NOMTIPO" To VSDGNOMTIPO

  Label  @ 02,00 "Representante"  For "TG_REPRESEN"
  Accept @ 03,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_REPRESEN"   To VSDGREPRESEN
  Accept @ 03,09 Width 33 "A30" Picture "!*!" Tag "TG_NOMREPR" To VSDGNOMREPR

  Label  @ 04,00 "Atividade"  For "TG_ATIVIDADE"
  Accept @ 05,01 Width 07 "A4"  Picture "#*#" Tag "TG_ATIVIDADE"  To VSDGATIVIDADE
  Accept @ 05,09 Width 33 "A20" Picture "!*!" Tag "TG_NOMATIV" To VSDGNOMATIV

  Label  @ 06,00 "Area"  For "TG_AREA"
  Accept @ 07,01 Width 07 "A2"  Picture "#*#" Tag "TG_AREA"  To VSDGAREA
  Accept @ 07,09 Width 33 "A30" Picture "!*!" Tag "TG_NOMAREA" To VSDGNOMAREA
                                        
  Label  @ 08,00 "Cidade"  For "TG_CIDADE"
  Accept @ 09,01 Width 28 "A20"  Picture "!*!" Tag "TG_CIDADE"  To VSDGCIDADE
                                   
  Label  @ 08,28 "Estado"  For "TG_ESTADO"
  Accept @ 09,29 Width 06 "A2"  Picture "!*!" Tag "TG_ESTADO" To VSDGESTADO

  Label  @ 10,00 "Status"  For "TG_STATUS"
  Accept @ 11,01 Width 04 "A1"  Picture "1,2,3" Tag "TG_STATUS" To VSDGSTATUS
  Accept @ 11,06 Width 29 "A12" Picture "!*!" Tag "TG_NOMSTATUS" To VSDGNOMSTATUS

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

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

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

EndDialog
If RetVal Or Not Valida_ShowDialog("") 
   Then 
   
        LimpaRodape(0)
        Aguarde("Aguarde, Selecionando registros")
        ClearAll
        {Ask} {Destinat}
        Moveto [Codigo                 ] Check
        Moveto [Tipo                   ] TypeIn "~VSDGTIPO"
        Moveto [Cidade                 ] TypeIn CIDADE
        Moveto [UF                     ] TypeIn "~VSDGESTADO.."
        Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN.."
        Moveto [Codigo da Area         ] TypeIn "~VSDGAREA.."
        Moveto [Codigo Atividade       ] TypeIn "~VSDGATIVIDADE.."
        Moveto [Data de Nascimento     ] Check
        Moveto [Inativo                ]
        Switch
          Case VSDGSTATUS="1": TypeIn "N"
          Case VSDGSTATUS="2": TypeIn "S"
        EndSwitch
        Do_It!
        ClearAll
        {Ask} {Re_0010}
        Moveto [Codigo                 ] Example "a1"
        {Ask} {Answer} TypeIn "Fast Delete"
        Moveto [Codigo                 ] Example "a1"
        Do_It!
        ClearAll

        If IsEmpty("Answer")
           Then Mensagem("N„o existe registro conforme sele‡„o !")
           Else If (Not IsBlank(VSDGDTINI2)  And Not IsBlank(VSDGDTFIM2))
                   Then wc=0
                        View "Re_0010"
                        CoEdit "Answer"
                        Scan
                          If Not IsBlank([Data de Nascimento])
                             Then datai=DateVal(StrVal(Month([Data de Nascimento]))+"/"+StrVal(Day([Data de Nascimento]))+"/"+StrVal(Year(VSDGDTINI2)))
                                  dataf=DateVal(StrVal(Month([Data de Nascimento]))+"/"+StrVal(Day([Data de Nascimento]))+"/"+StrVal(Year(VSDGDTFIM2)))
                                  If Datai>=VSDGDTINI2 And Dataf<=VSDGDTFIM2
                                     Then Moveto "Re_0010"
                                          End Down
                                          [Codigo            ]=[Answer->Codigo]
                                          [Data de Nascimento]=[Answer->Data de Nascimento]
                                          [Quantidade        ]=VSDGQUANTIDADE
                                          wc=wc+1
                                  EndIf
                          EndIf
                          Moveto "Answer"
                        EndScan
                        Do_It!
                        ClearAll
                        If wc=0
                           Then Mensagem("N„o exite registro conforme sele‡„o !")
                        EndIf
                   Else
                        View "Re_0010"
                        CoEdit "Answer"
                        Scan
                          Moveto "Re_0010"
                          End Down
                          [Codigo    ]=[Answer->Codigo]
                          [Quantidade]=VSDGQUANTIDADE
                          Moveto "Answer"
                        EndScan
                        Do_It!
                        ClearAll
                EndIf
        EndIf
EndIf

ClearAll
CoEdit "RE_0010"
PickForm "F"
EndProc

;*******************************************************************************
;* Rotina Impressao                                                            *
;*******************************************************************************
Proc Imprimir()
LimpaRodape(0)
Do_It!
ClearAll
DynArray Array_OpEtiquetas[]
MSG_CAMPO="Escolha o modelo desejado"

Array_OpEtiquetas[01]="01 - M01/1 Coluna  8,9x2,4 cm"
Array_OpEtiquetas[02]="02 - M01/2 Colunas 8,9x2,4 cm"
Array_OpEtiquetas[03]="03 - M01/3 Colunas 8,9x2,4 cm"

Array_OpEtiquetas[04]="04 - Modelo Cart„o Postal "
Array_OpEtiquetas[05]="05 - Modelo Cart„o Postal (Jato de Tinta)"

Array_OpEtiquetas[06]="06 - M01/1 Coluna  8,9x3,6 cm"

Array_OpEtiquetas[07]="07 - M01/2 Coluna  10,1x5,8 cm"

Array_OpEtiquetas[08]="08 - M01/1 Coluna  8,9x2,4 cm sem AT:"
Array_OpEtiquetas[09]="09 - M01/2 Coluna  10,16x2,54 cm"

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 14 Width 55
    PickDynArray @1,01 Height 6 width 51
     Columns 1
      Array_OpEtiquetas
       Tag "TG_OPETIQUETA"
        To VSDGOPETIQUETA
    Label @ 00,00 "Op‡”es Para Impress„o"  For "TG_OPETIQUETA"

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

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If SubStr(Array_OpEtiquetas[VSDGOPETIQUETA],1,2)<>"25"
     Then DispositivoEtq()
          If OK="" Then Loop EndIf
  EndIf

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

  View "Answer"
  CoEdit "Re_0010"
  Scan
    CopyToArray REG
    Moveto "Answer"
    For I From 1 to [Re_0010->Quantidade]
      End
      Down
      CopyFromArray Reg
      [Codigo Empresa]=SYS_EMPRESA_DEFAULT
    EndFor
    Moveto "Re_0010"
  EndScan
  Do_It!
  ClearAll

  If VSDGOPRELCODALFDIG  = "1" Then Sort "Answer" On "Codigo"        EndIf
  If VSDGOPRELCODALFDIG  = "2" Then Sort "Answer" On "Razao Social"  EndIf

  If SubStr(Array_OpEtiquetas[VSDGOPETIQUETA],1,2)="01" Then CopyReport "RE_0010" "1"  "Answer" "R" EndIf
  If SubStr(Array_OpEtiquetas[VSDGOPETIQUETA],1,2)="02" Then CopyReport "RE_0010" "2"  "Answer" "R" EndIf
  If SubStr(Array_OpEtiquetas[VSDGOPETIQUETA],1,2)="03" Then CopyReport "RE_0010" "3"  "Answer" "R" EndIf

  If SubStr(Array_OpEtiquetas[VSDGOPETIQUETA],1,2)="04" Then CopyReport "RE_0010" "4"  "Answer" "R" EndIf
  If SubStr(Array_OpEtiquetas[VSDGOPETIQUETA],1,2)="05" Then CopyReport "RE_0010" "5"  "Answer" "R" EndIf

  If SubStr(Array_OpEtiquetas[VSDGOPETIQUETA],1,2)="06" Then CopyReport "RE_0010" "6"  "Answer" "R" EndIf
  If SubStr(Array_OpEtiquetas[VSDGOPETIQUETA],1,2)="07" Then CopyReport "RE_0010" "7"  "Answer" "R" EndIf
  If SubStr(Array_OpEtiquetas[VSDGOPETIQUETA],1,2)="08" Then CopyReport "RE_0010" "8"  "Answer" "R" EndIf
  If SubStr(Array_OpEtiquetas[VSDGOPETIQUETA],1,2)="09" Then CopyReport "RE_0010" "9"  "Answer" "R" EndIf

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

ClearAll
CoEdit "RE_0010"
PickForm "F"
EndProc

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

VSDGOPRELCODALFDIG   =""
VSDGNOMOPRELCODALFDIG=""
VSDGOPRELLISTCAD     =""
VSDGNOMOPRELLISTCAD  =""
VSDGQUANTIDADE       =1
CIDADE               =""
CoEdit "Re_0010"
PickForm "F"

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