;** Rm_0110 ********************************************************************
;*  Relatorio de Clientes que nao compraram em um periodo                      *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/11/1997 por Anivel Augusto Rodrigues
;Ultima Alteracao: 18/11/2003 por Jos‚ Lu¡s Ameno da Silva
;Motivo Alteracao: Periodo em que clientes nÆo compraram
;Ultima Alteracao: 20/10/2009 por Bruno Carvalho
;Motivo Alteracao: Inclusao do Campo VCDGESTADO
;Ultima Alteracao: 28/10/2009 por Bruno Carvalho
;Motivo Alteracao: Ajustes Seleciona()  
;Ultima Alteracao: 15/10/2010 por Bruno Carvalho
;Motivo Alteracao: Adicionado TG_SITUACAOCLIENTE
;Ultima Alteracao: 19/10/2010 por Bruno Carvalho
;Motivo Alteracao: Adicionado TG_INATIVO
;Ultima Alteracao: 23/05/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes CIDADE
;Ultima Alteracao: 16/08/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes exibir valores ?
;Ultima Alteracao: 21/08/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes "Situacao do Cliente" p/ permitir situa‡Æo como OTIMO
;Ultima Alteracao: 08/01/2014 por Bruno Carvalho
;Motivo Alteracao: Adicionado filtro por marca
;Ultima Alteracao: 28/07/2015 por Andrey Fillipe
;Motivo Alteracao: Adicionado filtro Gerencia
;Ultima Alteracao: 12/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog   
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()                
;Ultima Alteracao: 27/11/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ask com representante nÆo cadastrado
;Ultima Alteracao: 10/02/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes de padroniza‡Æo nos campos [TG_CIDADE] e [TG_ESTADO]
;Ultima Alteracao: 10/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   

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc Seleciona()
ClearAll       

{Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
Moveto [Codigo do Representante] Example "crep"
If VSDGGERENCIA<>""
   Then Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA"
   Else Moveto [Codigo da Gerencia     ] TypeIn "~VSDGGERENCIA.."
EndIf
 
{Ask} {\\Sistemas\\Cadastro\\FichaCli}
Moveto [Codigo                  ] Example "COD"
Moveto [Data da Primeira Compra ] Check
Moveto [Valor da Primeira Compra] Check
Moveto [Data da Ultima Compra   ] Check

If CheckTG_OPVR[1]
   Then Moveto [Valor da Ultima Compra  ] Check
EndIf   

{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo                  ] Check Example "COD" TypeIn "!"
Moveto [Tipo                    ] TypeIn "C"
Moveto [Razao Social            ] Check

If VSDGNOMINATIVO="TODOS" 
   Then Moveto [Inativo         ] Check
   Else Moveto [Inativo         ] Check TypeIn "~VSDGINATIVO.."
EndIf

If VSDGNOMSITUACAOCLIENTE="TODOS" 
   Then Moveto [Situacao do Cliente] Check
   Else Moveto [Situacao do Cliente] Check TypeIn "~VSDGNOMSITUACAOCLIENTE.."
EndIf

If UPPER(CIDADE)<>"TODAS"
   Then Moveto [Cidade          ] Check TypeIn CIDADE
EndIf

Moveto [UF                      ] Check TypeIn "~VSDGESTADO.."
Moveto [Telefone                ] Check
Moveto [Contato                 ] Check
Moveto [Codigo do Representante ] Check Example "crep" TypeIn "!, ~VSDGREPRESEN.."
Moveto [Nome Fantasia Represent ] Check
Moveto [Endereco                ] Check
Moveto [Bairro                  ] Check
Moveto [CEP                     ] Check
Do_It!
ClearAll

EndProc   ; (Seleciona)

;*******************************************************************************
;* Rotina p/ Selecionar Vendas                                                 *
;*******************************************************************************
Proc Sel_Vendas()
ClearAll

If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC") 
   Then {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
        If VSDGMARCA<>""
           Then If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")       
                   Then Moveto [Codigo da Empresa      ] Example "CodE" TypeIn ", ~VSDGEMPRESA.."
                        Moveto [Numero do Documento    ] Example "NumD" 
                        Moveto [Serie do Documento     ] Example "SerD"
                EndIf
           else Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."     
        EndIf        
        Moveto [Codigo                 ] Check
        Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Descricao da Destinacao] TypeIn "..VEND.. or ..SERV.. or ..SAIDA.."
        Moveto [Tipo Movimento Estoque ] TypeIn "S"
        Moveto [Situacao               ] TypeIn "Not C"
 
        If VSDGMARCA<>""  
           Then If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI")
                   Then {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI" Enter
                        Moveto [Codigo da Empresa      ] Example "CodE"
                        Moveto [Numero do Documento    ] Example "NumD" 
                        Moveto [Serie do Documento     ] Example "SerD"
                        Moveto [Codigo do Item         ] Example "CodI"
                        {Ask} {\\Sistemas\\Estoque\\Itens}
                        Moveto [Codigo do Item         ] Example "CodI"
                        Moveto [Codigo da Marca        ] TypeIn "~VSDGMARCA.."
                        Do_It!
                        ClearAll
                   Else Do_It!
                        ClearAll
                        Delete "Answer"
                EndIf   
           Else Do_It!
                ClearAll
        EndIf
Endif

EndProc   ; (Sel_Vendas)

;*******************************************************************************
;* Rotina p/ Excluir registros                                               *
;*******************************************************************************
Proc Exclui_Registros()
ClearAll

If IsEmpty(Tabela2)
   Then Return
EndIf   

{Ask} TypeIn Tabela2 Enter
Moveto [Codigo] Example "Cod"
{Ask} TypeIn Tabela  Enter TypeIn "Fast Delete"
Moveto [Codigo] Example "Cod"
Do_It!
ClearAll

EndProc   ; (Exclui_Registros)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
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_EMPRESA"        : Campo="NO"
            Case Campo="TG_CIDADE"         : Campo="TG_EMPRESA"
            Case Campo="TG_ESTADO"         : Campo="TG_CIDADE"
            Case Campo="TG_REPRESEN"       : Campo="TG_ESTADO"
            Case Campo="TG_GERENCIA"       : Campo="TG_REPRESEN"
            Case Campo="TG_MARCA"          : Campo="TG_GERENCIA"
            Case Campo="TG_DTINI"          : Campo="TG_MARCA"
            Case Campo="TG_DTFIM"          : Campo="TG_DTINI"
            Case Campo="TG_SITUACAOCLIENTE": Campo="TG_DTFIM"
            Case Campo="TG_INATIVO"        : Campo="TG_SITUACAOCLIENTE"
            Case Campo="TG_OPRELCODALF"    : Campo="TG_INATIVO"
            Case Campo="TG_OPVR"           : Campo="TG_OPRELCODALF"
            Case Campo="TG_CODMODELO"      : Campo="TG_OPVR"
            Case Campo="YES" Or Campo="NO" : Campo="TG_EMPRESA"
          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_EMPRESA"        :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_REPRESEN"
                    Case Campo="TG_REPRESEN"       :Campo="TG_GERENCIA"
                    Case Campo="TG_GERENCIA"       :Campo="TG_MARCA"
                    Case Campo="TG_MARCA"          :Campo="TG_DTINI"      
                    Case Campo="TG_DTINI"          :Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"          :Campo="TG_SITUACAOCLIENTE"
                    Case Campo="TG_SITUACAOCLIENTE":Campo="TG_INATIVO"
                    Case Campo="TG_INATIVO"        :
                         VSDGINATIVO=ControlValue("TG_INATIVO")
                         If Isblank (VSDGINATIVO)
                            Then VSDGINATIVO=""
                         EndIf
                         Switch
                           Case VSDGINATIVO="S": VSDGNOMINATIVO="SIM"
                           Case VSDGINATIVO="N": VSDGNOMINATIVO="NAO"
                           Otherwise : VSDGINATIVO=""
                                       VSDGNOMINATIVO="TODOS"
                         EndSwitch                   
                         Campo="TG_OPRELCODALF"
                    Case Campo="TG_OPRELCODALF"    :Campo="TG_OPVR"
                    Case Campo="TG_OPVR"           :Campo="TG_CODMODELO"
                    Case Campo="TG_CODMODELO"      :Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_DTINI":
       MSG_CAMPO="Informe a Data Inicial do Periodo"
  Case Campo="TG_DTFIM":
       MSG_CAMPO="Informe a Data Final do Periodo"
  Case Campo="TG_INATIVO":
       MSG_CAMPO="Cliente Inativo? S/N   Em Branco = Todos"       
  Case Campo="TG_SITUACAOCLIENTE":
       MSG_CAMPO="Informe a Situa‡„o do Cliente: OTIMO/BOM/REGULAR/PESSIMO   Em Branco = Todos"
  Case Campo="":
       MSG_CAMPO=""
  Case Campo="TG_OPVR":
     MensagemCheckBoxes()
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;************************************
;* ROTINA PARA Ler/Gravacao Opcao   *
;************************************
Proc ModeloRelatoriosCarregaLista()

VSDGCODMODELO     = ""
VSDGMODELO        = ""

;ModeloRelatoriosAdd("XXX XX maximo 70 XX")

ModeloRelatoriosAdd("Criar") ; linha obrigatoria inicial
ModeloRelatoriosAdd("1   Simples")
ModeloRelatoriosAdd("2   Com Endere‡o")
ModeloRelatoriosAdd("Fim")

EndProc ;ModeloRelatoriosCarregaLista

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*****************************************************************************+*
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()

VSDGEMPRESA         = ""
VSDGDTINI           = BlankDate()
VSDGDTFIM           = BlankDate()
VSDGESTADO          = ""
VSDGCIDADE          = ""
VSDGMARCA           = ""
VSDGNOMMARCA        = ""
VSDGREPRESEN        = ""
VSDGOPRELCODALF     = ""
VSDGSITUACAOCLIENTE = ""
VSDGINATIVO         = ""
VSDGGERENCIA        = ""
VSDGDESCGERENCIA    = ""

Array TG_OPVR[1]
TG_OPVR[1]="Exibe valores!"

Array CheckTG_OPVR[ArraySize(TG_OPVR)]
CheckTG_OPVR[1]=True

ModeloRelatoriosCarregaLista()

While True
  ShowDialog "Clientes que n„o compraram em um per¡odo" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,09   Height 22 Width 80

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA"    To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP

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

    Label  @ 04,00 "Representante"  For "TG_REPRESEN"
    Accept @ 05,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_REPRESEN" To VSDGREPRESEN
    Accept @ 05,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMREPR"  To VSDGNOMREPR

    Label  @ 06,00 "Gerˆncia " For "TG_GERENCIA"
    Accept @ 07,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_GERENCIA" To VSDGGERENCIA
    Accept @ 07,09 Width 25 "A10"  Picture "!*!" Tag "TG_DESCGERENCIA" To VSDGDESCGERENCIA
    
    Label  @ 08,00 "Marca" For "TG_MARCA"
    Accept @ 09,02 Width 06 "A3"  Picture "#*#" Tag "TG_MARCA"     To VSDGMARCA
    Accept @ 09,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMMARCA"  To VSDGNOMMARCA

    Label  @ 10,00 "Per¡odo Referente 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

    Label  @ 00,35 "Situa‡„o do Cliente"  For "TG_SITUACAOCLIENTE"
    Accept @ 01,39 Width 04 "A1"  Picture "O,B,R,P" Tag "TG_SITUACAOCLIENTE"    To VSDGSITUACAOCLIENTE
    Accept @ 01,44 Width 25 "A10"  Picture "!*!"  Tag "TG_NOMSITUACAOCLIENTE" To VSDGNOMSITUACAOCLIENTE
    
    Label  @ 02,35 "Inativo"  For "TG_INATIVO"
    Accept @ 03,39 Width 04 "A1"  Picture "S,N"   Tag "TG_INATIVO"    To VSDGINATIVO
    Accept @ 03,44 Width 25 "A10"  Picture "!*!"  Tag "TG_NOMINATIVO" To VSDGNOMINATIVO  
    
    Label  @ 04,35 "Ordem" For "TG_OPRELCODALF"
    Accept @ 05,39 Width 04 "A1"  Picture "1,2" Tag "TG_OPRELCODALF" To VSDGOPRELCODALF
    Accept @ 05,44 Width 25 "A12" Picture "!*!" Tag "TG_NOMOPRELCODALF" To VSDGNOMOPRELCODALF

    CheckBoxes @ 07,35 Height 1 Width 33 Tag "TG_OPVR"
    TG_OPVR[1] to CheckTG_OPVR[1]
    
    Label  @ 17,00  "Modelo de ~R~elat¢rio"  For "TG_CODMODELO"
    Accept @ 18,01  Width 06 "A3"  Picture "!*!" Tag "TG_CODMODELO" To VSDGCODMODELO
    Accept @ 18,06  Width 47 "A60"  Picture "!*!" Tag "TG_MODELO" To VSDGMODELO        

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  If Not Valida_ShowDialog("") Then Loop EndIf
  If IsBlank(VSDGDTFIM)
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf
  If VSDGDTFIM < VSDGDTINI
     Then Mensagem("Data Final deve ser maior que Data Inicial !")
          Loop
  EndIf

  DISPOSITIVO()
  If OK=""  Then Loop EndIf

  AGUARDE("Aguarde, gerando o relat¢rio")
  Tabela=Cria_Temp(PrivDir())
  Seleciona()
  
  Rename "Answer" Tabela
  Tabela2=Cria_Temp(PrivDir())

  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
    If IsTable("Answer")     Then Delete "Answer" EndIf
    Sel_Vendas()
    If Not IsTable("Answer") Then Loop EndIf
    If IsTable(Tabela2)
       Then Add "Answer" Tabela2
       Else Rename "Answer" Tabela2
    EndIf
  EndWhile

  Exclui_Registros()
                 
  If IsEmpty(Tabela)
     Then MENSAGEM("N„o existem registros a processar")
          Delete Tabela
          Loop
  EndIf

  Switch
    Case VSDGCODMODELO="1":
      If VSDGOPRELCODALF="1"
         Then CopyReport "\\Base\\Sistemas\\Vendas\\Rm_0110" "R" Tabela "R"
         Else CopyReport "\\Base\\Sistemas\\Vendas\\Rm_0110" "1" Tabela "R"
      EndIf
    Case VSDGCODMODELO="2":
      If VSDGOPRELCODALF="1"
         Then CopyReport "\\Base\\Sistemas\\Vendas\\Rm_0110" "6" Tabela "R"
         Else CopyReport "\\Base\\Sistemas\\Vendas\\Rm_0110" "7" Tabela "R"
      EndIf
  EndSwitch

  IMPRIREL(Tabela,"R")

  If IsTable("Answer")     Then Delete "Answer" EndIf
  If IsTable(Tabela)       Then Delete Tabela   EndIf
  If IsTable(Tabela2)      Then Delete Tabela2  EndIf

EndWhile
ClearAll
Release Vars All
Release Procs All
