;** 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]
;Ultima Alteracao: 25/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   
;Ultima Alteracao: 24/03/2021 por Bruno Carvalho
;Motivo Alteracao: Alterado mensagem de confirma‡Æo ao gerar o arquivo p/ MensagemMP() 
;Ultima Alteracao: 26/03/2021 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ padroniza‡Æo de filtro 
;Ultima Alteracao: 26/03/2021 por Bruno Carvalho             
;Motivo Alteracao: Removido vesti¡gios de ComboBox
;Ultima Alteracao: 20/04/2021 por Bruno Carvalho             
;Motivo Alteracao: Ajustes no processo do filtro "TG_STATUS" na "Bib_Show"

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

SetDir "\\Sistemas\\Cadastro"

{Ask} {Destinat} Check
Moveto [Codigo                 ] TypeIn ">=~VSDGDESTINATINI, <=~VSDGDESTINATFIM"
If VSDGTIPO<>"TODOS"
   Then Moveto [Tipo Pessoa    ] TypeIn "~VSDGTIPO.."
EndIf   
Moveto [UF                     ] TypeIn "~VSDGESTADO.."
Moveto [Cidade                 ] TypeIn CIDADE
Switch
  Case VSDGNOMDEST="TODOS"        : Moveto [Tipo] TypeIn "C Or F"
  Case VSDGNOMDEST="CLIENTES"     : Moveto [Tipo] TypeIn "C"
  Case VSDGNOMDEST="FORNECEDORES" : Moveto [Tipo] TypeIn "F"
EndSwitch  
Switch
  Case VSDGSTATUS="INATIVO" : Moveto [Inativo] TypeIn "S"
  OtherWise                 : Moveto [Inativo] TypeIn "Not 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                                                                      *
;*******************************************************************************
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"]="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_STATUS"         : Campo="TG_NOMDEST"
            Case Campo="TG_TIPO"           : Campo="TG_STATUS"
            Case Campo="TG_CIDADE"         : Campo="TG_TIPO"
            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="TODOS"
                         EndIf
                         Campo="TG_STATUS"                         
                    Case Campo="TG_STATUS"     : Campo="TG_TIPO"
                    Case Campo="TG_TIPO"       : 
                         VSDGTIPO=ControlValue("TG_TIPO")
                         If IsBlank(VSDGTIPO)
                            Then VSDGTIPO="TODOS" 
                         EndIf
                         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_NOMDEST":
       MSG_CAMPO="C=Clientes  F=Fornecedores  Em Branco=Todos"
  Case Campo="TG_STATUS":
       MSG_CAMPO="A=Ativo  I=Inativo  Em Branco=Todos"
  Case Campo="TG_TIPO":
       MSG_CAMPO="F=Fisica  J=Juridica  Em Branco=Todos"
  Case Campo="TG_TIPO":
       MSG_CAMPO="F=Fisica  J=Juridica  Em Branco=Todos"   
Endswitch

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   = ""
VSDGTIPO          = "" 
VSDGSTATUS        = ""
VSDGNOMDEST       = ""
VSDGDEST          = ""
VSDGESTADO        = ""
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 17 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"
    Accept @ 03,01  Width 33 "A12" Picture "CLIENTES,FORNECEDORES,TODOS" Tag "TG_NOMDEST" To VSDGNOMDEST
    
    Label  @ 04,00  "Status do Cliente" For "TG_STATUS"
    Accept @ 05,01  Width 33 "A12" Picture "ATIVO,INATIVO,TODOS" Tag "TG_STATUS" To VSDGSTATUS
    
    Label  @ 06,00  "Tipo de Pessoa" For "TG_TIPO"
    Accept @ 07,01  Width 33 "A9" Picture "FISICA,JURIDICA,TODOS" Tag "TG_TIPO" To VSDGTIPO

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

    Label  @ 10,00 "Per¡odo de InclusÆo/Altera‡Æo de " For "TG_DTINI"
    Accept @ 11,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 11,16 "at‚" For "TG_DTFIM"
    Accept @ 11,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Pushbutton @ 13,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 13,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 MensagemMP("Arquivo gerado com sucesso!////"+VSDGDRIVE+VSDGPASTA+"\\SIGEP.TXT",VSDGDRIVE+VSDGPASTA+"\\SIGEP.TXT")
  EndIf   
 
  Delete "Answer"

  SetDir "\\Sistemas\\Exporta"

EndWhile
ClearAll
Release Vars All
Release Procs All
