;** DestRel ********************************************************************
;*  Listagem/Cadastro de Clientes                                              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 09/01/2012 por Bruno Carvalho
;Ultima Alteracao: 20/01/2012 por Bruno Carvalho
;Motivo Alteracao: Novos ajustes para a esolha do modelo de relat¢rio                
;Ultima Alteracao: 31/01/2012 por Karina Andrade
;Motivo Alteracao: Ajustes sele‡Æo representante
;Ultima Alteracao: 16/04/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes e Corre‡Æo de BUGS (Vari veis nÆo estavam setadas)
;Ultima Alteracao: 01/10/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes controle botao TG_ICO
;Ultima Alteracao: 11/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Mascara FONE, CEL, FAX
;Ultima Alteracao: 12/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CEP fora de padrÆo nÆo gera
;Ultima Alteracao: 14/04/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Numero endereco fora de padrÆo nÆo gera
;Ultima Alteracao: 09/05/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Periodo de Inclusao/Altera‡Æo de Dados 
;Ultima Alteracao: 01/10/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog.                  
;Ultima Alteracao: 24/11/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes                   
;Ultima Alteracao: 29/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                  
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc
;Ultima Alteracao: 11/02/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes de padroniza‡Æo nos campos [TG_CIDADE] e [TG_ESTADO]

;*******************************************************************************
;* Rotina para selecionar registros                                            *
;*******************************************************************************
Proc Selecao()
AGUARDE("Aguarde, Selecionando dados")

SetDir "\\Sistemas\\Cadastro"

{Ask} {Destinat} Check
Moveto [Codigo                 ] TypeIn ">=~VSDGDESTINATINI, <=~VSDGDESTINATFIM"
Moveto [Tipo Pessoa            ] TypeIn "~VSDGTIPO.."
Moveto [UF                     ] TypeIn "~VSDGESTADO.."
Moveto [Cidade                 ] TypeIn CIDADE

Switch
  Case VSDGNOMDEST="AMBOS" : Moveto [Tipo] TypeIn "C Or F"
  OtherWise                : Moveto [Tipo] TypeIn "~VSDGDEST.."
EndSwitch  

Switch
  Case VSDGSTATUS="1" : Moveto [Inativo] TypeIn "N"
  Case VSDGSTATUS="2" : Moveto [Inativo] TypeIn "S"
EndSwitch     
      
Do_It!
ClearAll
         
EndProc ;Selecao()

;*******************************************************************************
;* Desmembra campo endereco em Logradouro, Numero e Complemento                *
;*******************************************************************************
Proc PegaEndereco(s)
Private s,posl,posn

End_Logradouro =""
End_Numero     =""
End_Complemento=""

posl=SearchFrom(",",s,1)
If posl<2
   Then End_Logradouro =s
   Else End_Logradouro=LTrim(RTrim(SubStr(s,1,posl-1)))
       
        posn=SearchFrom(",",s,posl+1)
        If posn>1
           Then End_Numero     =LTrim(RTrim(SubStr(s,posl+1,(posn-posl)-1)))
                End_Complemento=LTrim(RTrim(SubStr(s,posn+1,40)))
           Else End_Numero     =LTrim(RTrim(SubStr(s,posl+1,40)))     
        EndIf
EndIf   

EndProc

;*******************************************************************************
;* Rotina para selecionar registros                                            *
;*******************************************************************************
Proc Gera_Arquivo()

AGUARDE("Aguarde, Gerando arquivo")

VSDGDRIVE=SubStr(Directory(),1,2)

VSDGPASTA="\\Sistemas\\Exporta\\Dados\\SIGEP"
If DirExists(VSDGPASTA)=0
   Then Cria_Pasta(VSDGPASTA)
        Sleep 2000
EndIf

ARQ = VSDGDRIVE+VSDGPASTA+"\\SIGEP.TXT"
Deleta_Arquivo(ARQ)

If Not IsEmpty("Answer")
   Then gerou_arquivos=True
        ;arquivos=arquivos+Completa(ARQ,62," ")+"//"
        CONTADOR=0
        
        Print File ARQ "1"
        Print File ARQ "SIGEP DESTINATARIO NACIONAL"
        Print File ARQ "\n"
        
        View "Answer"
        Scan

          If [Data da Manutencao]=BlankDate()
             Then If (VSDGDTINI<>BlankDate() And [Data_Cadastro] < VSDGDTINI) Or [Data_Cadastro] > VSDGDTFIM
                     Then Loop  
                  EndIf
             Else If (VSDGDTINI<>BlankDate() And [Data da Manutencao] < VSDGDTINI) Or [Data da Manutencao] > VSDGDTFIM
                     Then Loop  
                  EndIf
          EndIf        
                  
          PegaEndereco([Endereco])
        
          CPF_CNPJ = Tira_CharNum([CGC])
          
          FONE = SubStr(Tira_CharNum([Telefone]),1,18)
          CEL  = SubStr(Tira_CharNum([Celular ]),1,12)
          FAX  = SubStr(Tira_CharNum([fax     ]),1,12)
                        
          If Search("@",[Endereco_Eletronico])>0
             Then EMAIL = Upper(SubStr([Endereco_Eletronico],1,50))
             Else EMAIL = ""
          EndIf   
        
          If [Contato]<>""
             Then CONTATO = SubStr([Contato],1,20)
             Else CONTATO = ""
          EndIf   
          
          CEP = Tira_CharNum([CEP])
          
          if isblank(CEP) or CEP="00000000" then loop endif
          if not isblank(End_Numero) and not ConteudoNumerico(End_Numero) then loop endif

          CONTADOR=CONTADOR+1
          
          Print File ARQ "2"
          Print File ARQ Completa(CPF_CNPJ,14," ")
          Print File ARQ Completa([Razao Social  ],50," ")
          Print File ARQ Completa(EMAIL,50," ")
          Print File ARQ Completa([Razao Social  ],50," ")
          Print File ARQ Completa(CONTATO,50," ")
          Print File ARQ Completa(CEP,8," ")
          Print File ARQ Completa(End_Logradouro,50," ")
          Print File ARQ Completa(End_Numero,6," ")
          Print File ARQ Completa(End_Complemento,30," ")
          Print File ARQ Completa([Bairro],50," ")
          Print File ARQ Completa([Cidade],50," ")
          Print File ARQ Completa(FONE,18," ")
          Print File ARQ Completa(CEL ,12," ")
          Print File ARQ Completa(FAX ,12," ")

          Print File ARQ "\n"
          
        EndScan
        
        Print File ARQ "9"
        Print File ARQ AlinhM(StrVal(CONTADOR),6)
        Print File ARQ "\n"
        
        ClearAll
        Close Printer
EndIf

EndProc ;Gera_Arquivo()

;*******************************************************************************
;* ROTINA PARAR MONTAR LAYOUT COMBOBOX                                         *
;*******************************************************************************
Proc Carrega_ComboBox()
Private Janela_Lista, WinArray_Lista, Result

;LI = Linha Inicial
;CI = Coluna Inicial 
;NL = N§ de Linhas do ComboBox
;LC = Largura do ComboBox  

Window Handle Dialog To Janela_Lista
Window GetAttributes Janela_Lista To WinArray_Lista
LISD=WinArray_Lista["ORIGINROW"]
CISD=WinArray_Lista["ORIGINCOL"]

LISD=-1
CISD=-1

Result=True
Switch 
  Case Campo="TG_ICODEST"        Or     
       Campo="TG_NOMDEST"        : LI=09 CI=09 NL=03 LC=32 

  Case Campo="TG_ICOSTATUS"      Or     
       Campo="TG_NOMSTATUS"      : LI=11 CI=09 NL=03 LC=32 

  Case Campo="TG_ICOTIPO"        Or  
       Campo="TG_NOMTIPO"        : LI=13 CI=09 NL=03 LC=32

  OtherWise                      : Result=False
EndSwitch

Return Result
EndProc ;Carrega_ComboBox()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)  
Private Disparo,Campo,Evento,Elemento

Temp=True
MSG_CAMPO=""
TECLA=""

If Disparo="OPEN" Then AoCriarShowDialog() 
   If RELATORIOS 
      Then Mostra_Informacoes()
   EndIf
EndIf

If Disparo="UPDATE" And Campo="TG_Registro"
   Then If RELATORIOS 
           Then Temp=True
                Mostra_Informacoes()
                Return Temp
        EndIf     
EndIf

If Disparo="EVENT" And Evento["Type"]="MOUSE" And SubStr(Campo,1,6)="TG_ICO"
   Then Temp=False
        MONTA_COMBOBOX()
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_DESTINATINI"    : Campo="NO"
            Case Campo="TG_DESTINATFIM"    : Campo="TG_DESTINATINI"
            Case Campo="TG_NOMDEST"        : Campo="TG_DESTINATFIM"
            Case Campo="TG_NOMSTATUS"      : Campo="TG_NOMDEST"
            Case Campo="TG_NOMTIPO"        : Campo="TG_NOMSTATUS"
            Case Campo="TG_CIDADE"         : Campo="TG_NOMTIPO"
            Case Campo="TG_ESTADO"         : Campo="TG_CIDADE"
            Case Campo="TG_DTINI"          : Campo="TG_ESTADO"
            Case Campo="TG_DTFIM"          : Campo="TG_DTINI"
            Case Campo="YES" Or Campo="NO" : Campo="TG_DESTINATINI"
          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_DESTINATINI" :Campo="TG_DESTINATFIM"
                    Case Campo="TG_DESTINATFIM" :
                         If VSDGDESTINATFIM < VSDGDESTINATINI
                            Then Mensagem("Codigo final menor que codigo inicial !")
                            Else Campo="TG_NOMDEST"
                         EndIf          
                    Case Campo="TG_NOMDEST"     : 
                         VSDGNOMDEST=ControlValue("TG_NOMDEST")
                         If IsBlank(VSDGNOMDEST)
                            Then VSDGNOMDEST="AMBOS"
                         EndIf
                         Carrega_VarSeleciona()
                         Campo="TG_NOMSTATUS"                         
                    Case Campo="TG_NOMSTATUS"     : 
                         VSDGNOMSTATUS=ControlValue("TG_NOMSTATUS")
                         If IsBlank(VSDGNOMSTATUS)
                            Then VSDGNOMSTATUS="ATIVO"
                         EndIf
                         Carrega_VarSeleciona()
                         Campo="TG_NOMTIPO"
                    Case Campo="TG_NOMTIPO"       : 
                         VSDGNOMTIPO=ControlValue("TG_NOMTIPO")
                         If IsBlank(VSDGNOMTIPO)
                            Then VSDGNOMTIPO="TODOS" 
                         EndIf
                         Carrega_VarSeleciona()
                         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_DTINI"
                    Case Campo="TG_DTINI"       : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"       : Campo="YES"
                    
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
  Case Campo="TG_NOMSTATUS":
       MSG_CAMPO="A=Ativo  I=Inativo  Em Branco=Todos"
  Case Campo="TG_NOMTIPO":
       MSG_CAMPO="F=Fisica  J=Juridica  Em Branco=Todos"
  Case Campo="TG_NOMSITUACAO":
       MSG_CAMPO="B=Bom  R=Regular  P=Pessimo  E=Recadastro  Em Branco=Todos"
  Case Campo="TG_NOMTPASSIST":
       MSG_CAMPO="C=Contratante  E=Eventual  Em Branco=Todos"
  Case Campo="TG_NOMCONSFINAL" :
       MSG_CAMPO="S=Sim  N=N„o  Em Branco=Todos"
  Case Campo="TG_NOMDATA":
       MSG_CAMPO="A=Anivers rio  C=Cadastro  P=Com Compras  S=Sem Compras  I=Ignorar"   
  Case Campo="TG_NOMOPRELCODALF":
       MSG_CAMPO="C=C¢digo  A=Alfab‚tica"   
Endswitch

If Campo="TG_NOMSTATUS"         Or
   Campo="TG_NOMSITUACAO"       Or
   Campo="TG_NOMTIPO"           Or
   Campo="TG_NOMCONSFINAL"      Or
   Campo="TG_NOMTPASSIST"       Or
   Campo="TG_NOMDATA"           Or    
   Campo="TG_NOMOPRELCODALF"    
   Then TECLA="F1=Consulta"
EndIf

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc   

 
;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bib_Proc,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()

CIDADE            = ""
VSDGDESTINATINI   = ""
VSDGDESTINATFIM   = ""
VSDGNOMSTATUS     = ""
VSDGSTATUS        = ""
VSDGTIPO          = ""
VSDGNOMDEST       = ""
VSDGDEST          = ""
VSDGESTADO        = ""
VSDGCIDADE        = ""
VSDGDTINI         = BlankDate()
VSDGDTFIM         = BlankDate()
VSDGCIDADE        = ""
VSDGDTINI   =BlankDate()
VSDGDTFIM   =BlankDate()

RELATORIOS        = False
Checa_Lista       = False
CONSULTAF1        = False
FACA_RELATORIO    = "0"

While True

  ShowDialog "Destinat rios SIGEP/Correios" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE","SELECT"  
  Mouse "UP"
  Key "TAB","ReverseTab","F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 13 Width 72

    Label  @ 00,00 "Intervalo C¢digo de"  For "TG_DESTINATINI"
    Accept @ 01,01 Width 14 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINATINI" To VSDGDESTINATINI
    Label  @ 01,15 "at‚"  For "TG_DESTINATFIM"
    Accept @ 01,20 Width 14 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINATFIM" To VSDGDESTINATFIM

    Label  @ 02,00  "Tipo" For "TG_NOMDEST"  
    Label  @ 03,32  chr(31) For "TG_ICODEST"
    Accept @ 03,01  Width 32 "A12" Picture "CLIENTES,FORNECEDORES,AMBOS" Tag "TG_NOMDEST" To VSDGNOMDEST
    Accept @ 03,100 Width 1   "A1" Picture "!*!" Tag "TG_ICODEST" To VSDGICODEST

    Label  @ 04,00  "Status do Cliente" For "TG_NOMSTATUS"  
    Label  @ 05,32  chr(31) For "TG_ICOSTATUS"
    Accept @ 05,01  Width 32 "A12" Picture "ATIVO,INATIVO,TODOS" Tag "TG_NOMSTATUS" To VSDGNOMSTATUS
    Accept @ 05,100 Width 1   "A1" Picture "!*!" Tag "TG_ICOSTATUS" To VSDGICOSTATUS

    Label  @ 06,00  "Tipo de Pessoa" For "TG_NOMTIPO"
    Label  @ 07,32  chr(31) For "TG_ICOTIPO"
    Accept @ 07,01  Width 32 "A9" Picture "FISICA,JURIDICA,TODOS" Tag "TG_NOMTIPO" To VSDGNOMTIPO
    Accept @ 07,100 Width 1   "A1" Picture "!*!" Tag "TG_ICOTIPO" To VSDGICOTIPO

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

    Label  @ 04,35 "Per¡odo de InclusÆo/Altera‡Æo de " For "TG_DTINI"
    Accept @ 05,38 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 05,51 "at‚" For "TG_DTFIM"
    Accept @ 05,56 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

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

  EndDialog 
  If Not RetVal Then QuitLoop EndIf
  If Not Valida_ShowDialog("") Then Loop EndIf  
  
  Selecao()
  AGUARDE("Aguarde, Gerando Relat¢rio")
  
  If IsEmpty("Answer")      
     Then MENSAGEM("N„o Existem Registros a Processar")
          Loop
  EndIf   
   
  gerou_arquivos=False
  Gera_Arquivo()

  If gerou_arquivos
     Then Mensagem("Arquivo gerado com sucesso!//"+
                   "//"+VSDGDRIVE+VSDGPASTA+"\\SIGEP.TXT")
  EndIf   
 
  Delete "Answer"

  SetDir "\\Sistemas\\Exporta"

EndWhile
ClearAll
Release Vars All
Release Procs All
