;* Dupc ************************************************************************
;* Programa de Digitacao de Duplicatas                                         *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 06/07/2005 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Checa_Supervisor()
;Ultima Alteracao: 11/08/2006 por Antonio Marcelo Alves
;Motivo Alteracao: Adicao da rotina Checa_Supervisor quando Excluir
;Ultima Alteracao: 07/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Indice Inddup1/Duplic
;Ultima Alteracao: 23/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;Ultima Alteracao: 15/03/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F1 Cidades
;Ultima Alteracao: 15/03/2010 por Cleber Alves
;Motivo Alteracao: Ajustes Enter Cidades
;Ultima Alteracao: 30/08/2010 por Karina Andrade
;Motivo Alteracao: Ajustes Novo Layout
;Ultima Alteracao: 30/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas
;Ultima Alteracao: 19/02/2013 por Kamila Gomes
;Motivo Alteracao: Ajustes SetaCorRegistro()
;Ultima Alteracao: 17/04/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes FORM "Codigo_Sacado" e "Codigo da Conta" -> DUPI 
;Ultima Alteracao: 10/04/2014 por Bruno Carvalho
;Motivo Alteracao: Add Verifica_NRegistros() onde ir  informar limite de registros
;Ultima Alteracao: 07/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado/ajustado Grava_LogEx() p/ gravar log de erros ao excluir registros
;Ultima Alteracao: 17/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes dupnf codigo do documento,Tipo do Documento
;Ultima Alteracao: 17/08/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado [Sistema Gerador]="MA" p/ quando duplicatas for MANUAL
;Ultima Alteracao: 18/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes logica
;Ultima Alteracao: 11/08/2020 por Bruno Carvalho                           
;Motivo Alteracao: Adicionado Carrega_Parametros_Cliente() *Ordena Rela‡Æo
;Ultima Alteracao: 10/10/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes layout
;Ultima Alteracao: 23/01/2021 por Bruno Carvalho
;Motivo Alteracao: Adicionado op‡Æo de filtro
;Ultima Alteracao: 10/02/2021 por Bruno Carvalho
;Motivo Alteracao: Add processo para incluir/editar/filtrar titulos apenas da empresa vinculado ao usu rio conforme parƒmetro.
;Ultima Alteracao: 15/02/2021 por Bruno Carvalho
;Motivo Alteracao: Ajustes SERDOC ao paginar  

;*******************************************************************************
;* Rotina para Controlar Chave da Duplicata                                    *
;*******************************************************************************
Proc CHAVEC()

While True
  TOTAL_DESDOBRAMENTO=BlankNum()
  TOTAL_VENCTOS      =BlankNum()
  TOTAL              =BlankNum()
  TOTAL_NFS          =BlankNum()

  Moveto TabelaControle
  Switch
    Case ORDENARPOR="EMPRESA" :
      Moveto [Codigo da Empresa]
      Menu {Image} {OrderTable} Enter {Codigo da empresa}  
  EndSwitch
  End
  Moveto [Codigo da Empresa]
  
  If OPCAO_FORM="F"
     Then Down
     Else CtrlPgdn
  EndIf
  [Codigo da Empresa]=SYS_EMPRESA_DEFAULT
  Moveto [Codigo da Empresa]
 
  SetaCorRegistro("Editar")
  While True

  MSGCAMPO=Field()

  If Field()="Codigo da Empresa"   Or
     Field()="Codigo do Documento"
     Then TECLA="F1=Tabelas"
     Else TECLA=""
  EndIf
          
  AguardaTeclasPadraoCF()
  
  Switch
    Case RetVal="F5" :  
         RetVal = MenuFiltrar()
         Release Vars MfOpcao
   Case  RetVal=-33 :
        Echo Normal
        Echo Off  
        
        ShowPopup " Fun‡”es " CENTERED
         "Ordenar Empresa/Codigo Docto/Numero Docto/Serie Docto" : " Ordenar por Empresa/Codigo Docto/Numero Docto/Serie Docto    " : "ORD_EMPRESA",
         Separator,
         "~C~ancelar                                           " : " Cancelar a Opera‡„o                                          " : "CANCELAR"
        EndMenu
        To MenuVar
        Echo Off

        If MenuVar="CANCELAR" or MenuVar="Esc"
           Then Loop
        EndIf                                         
        
        Switch
          Case MenuVar="ORD_EMPRESA"  : ORDENARPOR="EMPRESA"  
        EndSwitch
        
        FileWrite PrivDir()+"ORD_DUP.ini" From GravaExpressao("VSDGORDEM","S",ORDENARPOR)
        RetVal=MenuVar
        
        If MenuVar="ORD_EMPRESA" 
           Then If IsBlank([Codigo da Empresa])
                   Then Del
                EndIf
                QuitLoop
        EndIf
  EndSwitch    

  Switch
        ;---- FILTRO -------------------------------------------------------------
        Case RetVal="MENUFILTRAR" :
             CHAVEC=99
             Del
             Return
        Case RetVal="MENUFILTROTODOS" :
             MODOFILTRAR=False
             CHAVEC=98
             Del
             Return
        ;-------------------------------------------------------------------------    
        Case RetVal=-33 : SemFuncoes()
        Case RetVal=-94 : MsgTeclasPadrao()
        Case RetVal="F1":
             If Field()="Codigo da Empresa" Or Field()="Codigo do Documento"
                Then CONSULTAF1()
              EndIf
        Case RetVal="F3":
             If OPCAO_FORM="F"
                Then OPCAO_FORM="1"
                Else OPCAO_FORM="F"
             EndIf
             Del
             CHAVEC=5
             Return
        Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
             MODOPAGINA = True
             While True
               TOTAL_DESDOBRAMENTO=BlankNum()
               TOTAL_VENCTOS      =BlankNum()
               TOTAL              =BlankNum()
               TOTAL_NFS          =BlankNum()

               If OPCAO_FORM="F"
                  Then PAGINA(TabelaControle,"MR")
                  Else PAGINA(TabelaControle,"MT")
               EndIf
               CODEMP=[Codigo da Empresa  ]
               NUMDOC=[Numero do Documento]
               CODDOC=[Codigo do Documento]
               SERDOC=[Serie do Documento ]
               SERIE =SERDOC                                ;PegaRegistroControle
               Switch
                 Case EDITAR="S":
                      If PegaRegistroControle("Codigo da Empresa",CODEMP)
                         Then If MODOFILTRAR_EMPRESA<>"" And MODOFILTRAR_EMPRESA<>[Codigo da Empresa] 
                                 Then Mensagem("Empresa informada difere da empresa cadastrada para esse usu rio!")
                                      AtualizaRegistroControle("Codigo da Empresa",CODEMP,MODOPAGINA)
                                 Else PickForm "1"
                                      Echo Normal
                                      Echo Off
                                      If Checa_Controle([Numero_Controle_Dia]) And
                                         Checa_Supervisor()
                                         Then CHAVEC=0
                                              Controla_EdicaoC()
                                         Else UnLockRecord
                                              AtualizaRegistroControle("Codigo da Empresa",CODEMP,MODOPAGINA)        
                                      EndIf
                              EndIf
                      EndIf
                 Case EXCLUIR="S":
                      If PegaRegistroControle("Codigo da Empresa",CODEMP)
                         Then If MODOFILTRAR_EMPRESA<>"" And MODOFILTRAR_EMPRESA<>[Codigo da Empresa] 
                                 Then Mensagem("Empresa informada difere da empresa cadastrada para esse usu rio!")
                                 Else PickForm "1"
                                      Echo Normal
                                      Echo Off
                                      If Checa_Controle([Numero_Controle_Dia]) And
                                         IsBlank([Situacao])
                                         Then If QuerExcluir("") And Checa_Supervisor()
                                                 Then GRAVA_LOG=True
                                                      EXCLUSAO()
                                                 Else UnLockRecord
                                              EndIf
                                         Else UnLockRecord
                                      EndIf
                              EndIf           
                              AtualizaRegistroControle("Codigo da Empresa",CODEMP,MODOPAGINA)     
                     EndIf
                 OtherWise: QuitLoop
               EndSwitch
               If OPCAO_FORM="F"
                  Then PickForm OPCAO_FORM
               EndIf
               SetaPosForm()
             EndWhile
             QuitLoop
        Case Retval="F9" And OPCAO_FORM="F":
             Del
             Editar()
             QuitLoop
        Case Retval="ESC":
             If Field()="Codigo da Empresa"
                Then CHAVEC=9
                     Del
                     Return
                Else Left
             EndIf
        Case Retval="ENTER":
             If IsBlank([]) Then Loop EndIf
             Switch
                  Case Field()="Codigo da Empresa":
                       CODEMP=[Codigo da Empresa]
                       If MODOFILTRAR And MODOFILTRAR_EMPRESA<>""
                          Then If [Codigo da Empresa]<>MODOFILTRAR_EMPRESA
                                  Then Mensagem("Empresa informada difere da empresa cadastrada para esse usu rio!")
                                       Loop
                               EndIf
                       EndIf
                       Moveto [Codigo do Documento]
                  Case Field()="Codigo do Documento":
                       SERDOC =[Serie do Documento]
                       CODDOC=[Codigo do Documento]
                       Moveto [Numero do Documento]

                  Case Field()="Numero do Documento":
                       []=ALINH()
                    
                       CODEMP  = [Codigo da Empresa  ]
                       NUMDOC  = [Numero do Documento]
                       SERDOC  = [Serie do Documento ]
                       CODDOC  = [Codigo do Documento]    
                       SERIE   = SERDOC                                ;PegaRegistroControle
                       
                       ANT_EMPRESA=[Codigo da Empresa  ]
                       ANT_CDDOCTO=[Codigo do Documento]
                      
                       If MODOFILTRAR  
                          Then If TabelaControle<>TabelaPrincipal
                                  Then Del
                                       End Down
                                       FormKey                         
                                       Moveto TabelaPrincipal
                                       End Down FormKey
                                       [Codigo da Empresa  ] = CODEMP
                                       [Numero do Documento] = NUMDOC
                                       [Serie do Documento ] = SERDOC 
                                       SetaCorRegistro("Editar")                
                              EndIf
                       EndIf
                       MODOPAGINA = False
                      
                       Del
                       PickForm "1"
                       Moveto [Codigo da Empresa]
                       Locate CODEMP,NUMDOC,SERDOC
                       If Retval
                          Then CHAVEC=0
                               If MODOFILTRAR Then STATUSFILTRO = "UPDATE" EndIf 
                          Else CHAVEC=1
                               If MODOFILTRAR Then STATUSFILTRO = "INSERT" EndIf
                               CtrlPgdn
                               If MODOFILTRAR_EMPRESA<>""
                                  Then [Codigo da Empresa]=MODOFILTRAR_EMPRESA
                                  Else [Codigo da Empresa]=CODEMP
                               EndIf
                               [Numero do Documento ]=NUMDOC
                               [Codigo do Documento ]=CODDOC
                               [Sistema Gerador     ]="MA"
                       EndIf
                       If Not IsLockRecord()
                          Then Echo Normal
                               Echo Off
                               If (CHAVEC=1 And Checa_Controle(SYS_CONTROLE_DIA)) Or
                                  (CHAVEC=0 And Checa_Controle([Numero_Controle_Dia]) And
                                   Checa_Supervisor())
                                  Then Return
                               EndIf
                       EndIf
                       If CHAVEC=1
                          Then Del
                       EndIf
                       If TabelaControle<>TabelaPrincipal
                          Then FormKey
                               Moveto TabelaControle
                               FormKey
                       EndIf
                       If OPCAO_FORM="F"
                          Then PickForm "F"
                       EndIf
                       QuitLoop
             EndSwitch
        EndSwitch
  EndWhile
EndWhile
EndProc   ; (ChaveC)

;*******************************************************************************
;* Rotina para Digitacao Especial                                              *
;*******************************************************************************
Proc Editar()

Moveto [Duplicata Emitida]

While True

      TECLA=" Esc=Retornar  Del=Excluir   (Use as Teclas p/ mover)"

      Prompt TECLA
      MSGCAMPO=""
      If Field()="Duplicata Emitida"
         Then MSGCAMPO="Duplicata Emitida (Sim/N„o)"
      EndIf
      If Field()="Boleta Emitida"
         Then MSGCAMPO="Boleta Emitida (Sim/N„o)"
      EndIf
      If Field()="Promissoria Emitida"
         Then MSGCAMPO="Promiss¢ria Emitida (Sim/N„o)"
      EndIf
      If Field()="Carne Emitido"
         Then MSGCAMPO="Carnˆ Emitido (Sim/N„o)"
      EndIf
      If Field()="Cta Receber Atualizado"
         Then MSGCAMPO="Contas a Receber Atualizado (Sim/N„o)"
      EndIf

      Wait Field
           Until "ESC","ENTER","DEL","FIELDVIEW","F35","UP","DOWN","PGUP","PGDN","HOME","END","DEL","RIGHT","LEFT"

      Switch
      Case Retval="ESC":
           QuitLoop
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If QuerExcluir("")
              Then PickForm "1"
                   GRAVA_LOG=True
                   EXCLUSAO()
                   PickForm "F"
           EndIf
           If RecordStatus("New")
              Then QuitLoop
           EndIf
           Moveto [Duplicata Emitida]
      OtherWise:
           If RetVal="LEFT" And Field()="Duplicata Emitida"
              Then Loop
           EndIf
           If (RetVal="ENTER" or  RetVal="RIGHT") And Field()="Cta Receber Atualizado"
              Then Down
                   Moveto [Duplicata Emitida]
              Else KeyPress RetVal
            EndIf
            If RecordStatus("New")
               Then QuitLoop
            EndIf
      EndSwitch
EndWhile
EndProc   ; (Editar)

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITA()

If [Situacao]="C"
   Then Mensagem("Duplicata Cancelada !")
        Return
EndIf

If CHAVEC=1
   Then Moveto [Data de Emissao  ]
   Else Moveto [Duplicata Emitida]
EndIf

While True

  TECLA="Esc=Retornar "
  MSGCAMPO=Field()

  If Field()="Codigo" or
     Field()="Codigo do Representante" or
     Field()="Codigo da Destinacao"    or
     Field()="Cidade Fatura"           Or
     Field()="UF Fatura"               Or
     Field()="Cidade de Cobranca"      Or
     Field()="UF de Cobranca"
     Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
  EndIf

  If PageNo()=1
     Then If CHAVEC=0
             Then TECLA=TECLA + "Del=Excluir F4=Cancelar "
             Else TECLA=TECLA + "                        "
          EndIf
     else         TECLA=TECLA + "                        "
  EndIf
  TECLA=TECLA + "F6=Notas F8=Vencimentos "
  
  If PageNo()<>1
     Then TECLA=TECLA+"Pgup PgDn=Finalizar"
     Else TECLA=TECLA+"     PgDn"
  EndIf

  
  If Field()="Duplicata Emitida"
     Then MSGCAMPO="Duplicata Emitida (Sim/N„o)"
  EndIf
  If Field()="Boleta Emitida"
     Then MSGCAMPO="Boleta Emitida (Sim/N„o)"
  EndIf
  If Field()="Promissoria Emitida"
     Then MSGCAMPO="Promiss¢ria Emitida (Sim/N„o)"
  EndIf
  If Field()="Carne Emitido"
     Then MSGCAMPO="Carnˆ Emitido (Sim/N„o)"
  EndIf
  If Field()="Cta Receber Atualizado"
     Then MSGCAMPO="Contas a Receber Atualizado (Sim/N„o)"
  EndIf

  Prompt TECLA

  Wait Field
       Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35","PgDn","PgUp","F8","F4","F6"

  Switch
  Case RetVal="F1":
       If Field()="Codigo" or
          Field()="Codigo do Representante" or
          Field()="Codigo da Destinacao"    Or
          Field()="Cidade Fatura"           Or
          Field()="UF Fatura"               Or
          Field()="Cidade de Cobranca"      Or
          Field()="UF de Cobranca"
          Then If CONSULTAF1()
                  Then If Field()="Cidade Fatura"
                          Then [UF Fatura ]=Reg_ConsultaF1["UF"]
                       EndIf
                       If Field()="Cidade de Cobranca"
                          Then [UF de Cobranca ]=Reg_ConsultaF1["UF"]
                       EndIf
               EndIf
       EndIf
  Case Retval="ESC":
       Switch
       Case Field()="Codigo do Representante":
            Moveto [UF de Cobranca]
       Case Field()="Comissao do Representante":
            Moveto [Codigo do Representante]
       Case Field()="Duplicata Emitida":
            If CHAVEC=1
               Then Moveto [Data de Emissao]
               Else If QuerDesfazer("")
                       Then Undo
                            CHAVEC=9
                            QuitLoop
                    Endif
            EndIf
       Case Field()="Codigo da Destinacao":
            Moveto [Codigo do Representante]
      Case Field()="Condicoes Especiais":
            Moveto [Codigo da Destinacao]
       Case Field()="Numero do Pedido":
            Moveto [Numero_Carregamento]
       Case Field()="Numero_Carregamento":
            Moveto [Condicoes Especiais]
       Case Field()="Valor Nota Fiscal":           
            Moveto [Numero do Pedido]
       Case Field()="Pedido Cliente":
            Moveto [Codigo]
       Case Field()="Codigo":
            If CHAVEC=1
               Then Moveto [Data de Emissao]
               Else Left
            EndIf
       Case Field()="Data de Emissao":
            If QuerDesfazer("")
               Then If CHAVEC=1
                       Then Del
                       Else Undo
                    EndIf
                    STATUSFILTRO=""
                    CHAVEC=9
                    QuitLoop
            Endif
       OtherWise:
            Left
       EndSwitch
  Case Retval="F4":
       If CHAVEC=0
          Then CONFGERAL("Cancelar Duplicata")
               If OK="S"
                  Then Cancelar_Duplicatas()
                       CHAVEC=9
                       QuitLoop
               EndIf
       EndIf
  Case Retval="F8":
       DESDOBRA()
       Moveto [Valor Nota Fiscal]
  Case Retval="F6":
       NOTAS()
       Moveto [Valor Nota Fiscal]
  Case Retval="PgDn":
       If PageNo()=1
          Then Moveto "DupI"
               Soma_Desdobramento()
               SetaCorRegistro("Padrao")
               
               Moveto "DupNF"
               Somar()
               SetaCorRegistro("Padrao")
               
               Moveto "DupC"
               SetaCorRegistro("Editar")
          
               Moveto [Valor Nota Fiscal]
          Else QuitLoop
       EndIf
  Case Retval="PgUp":
       If PageNo()=2
          Then Moveto [Duplicata Emitida]
       Endif
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEC=0
          Then If QuerExcluir("")
                  Then GRAVA_LOG=True
                       EXCLUSAO()
                       CHAVEC=9
                       QuitLoop
               EndIF
       EndIf
  Case Retval="ENTER":
       Switch
       Case Field()="Cidade Fatura":
                If IsBlank([]) Then Loop EndIf                          
                Moveto [Uf Fatura]          
       Case Field() = "UF Fatura":
            If IsBlank([]) Then Loop EndIf                
            If Not IsBlank([Cidade Fatura])
                Then Moveto [Cidade Fatura]
                     Ativa_Lookup()
                     Moveto [Cidade]
                     Locate [DUPC->Cidade Fatura],[DUPC->UF Fatura]
                     If RetVal
                        Then VSD_Cidade=[Cidade ]
                             VSD_UF=[UF]
                             KeyPress "ESC"                             
                             [Cidade Fatura]=VSD_Cidade
                             [UF Fatura]=VSD_UF
                             Moveto [Endereco de Cobranca]                                             
                        Else Mensagem("Cidade n„o Cadastrada !")
                             VSD_Cidade=""                                 
                             KeyPress "ESC"
                             Moveto [Cidade Fatura]
                     EndIf
                     Echo Off                 
            EndIf
       Case Field()="Data de Emissao":
            If IsBlank([])
               Then []=Today()
            EndIf

            If Not IntervaloData([Data de Emissao])
              Then Loop
            EndIf

            Moveto [Duplicata Emitida]
       Case Field() = "Codigo":
            If Isblank([])
               Then Loop
            EndIf
            Controle_Dia()
            ACHOU_CLIENTE=False
            Ativa_Lookup()
            Moveto [Codigo]
            Locate [Dupc->Codigo]
            If RetVal
               Then ACHOU_CLIENTE=True
                    CopyToArray REG_CLIENTE
            EndIf
            KeyPress "ESC"
            If ACHOU_CLIENTE
               Then [Razao Social Fatura]=REG_CLIENTE["Razao Social"]
                    [CGC Fatura         ]=REG_CLIENTE["CGC"]
                    [IE Fatura          ]=REG_CLIENTE["IE"]
                    [Endereco Fatura    ]=REG_CLIENTE["Endereco"]
                    [Bairro Fatura      ]=REG_CLIENTE["Bairro"]
                    [CEP Fatura         ]=REG_CLIENTE["CEP"]
                    [Cidade Fatura      ]=REG_CLIENTE["Cidade"]
                    [UF Fatura          ]=REG_CLIENTE["UF"]
            EndIf

            Moveto [Lookup_End_Cob]
            ACHOU_CLIENTE=False
            Ativa_Lookup()
            Moveto [Codigo]
            Locate [Dupc->Codigo]
            If RetVal
               Then ACHOU_CLIENTE=True
                    CopyToArray REG_CLIENTE
            EndIf
            KeyPress "ESC"
            If ACHOU_CLIENTE
               Then [Endereco de Cobranca    ]=REG_CLIENTE["Endereco de Cobranca"]
                    [Bairro de Cobranca      ]=REG_CLIENTE["Bairro de Cobranca"]
                    [CEP de Cobranca         ]=REG_CLIENTE["CEP de Cobranca"]
                    [Cidade de Cobranca      ]=REG_CLIENTE["Cidade de Cobranca"]
                    [UF de Cobranca          ]=REG_CLIENTE["UF de Cobranca"]
            EndIf
            Moveto [Pedido Cliente]
            Loop
       Case Field()="UF de Cobranca":
            Moveto [Codigo do Representante]
       Case Field()="Codigo do Representante":
            If IsBlank([]) Then Loop EndIf
            Moveto [Comissao do Representante]
       Case Field()="Comissao do Representate":
           Moveto [Codigo da Destinacao]
       Case Field()="Codigo da Destinacao":
            If IsBlank([]) Then Loop EndIf
            Moveto [Condicoes Especiais]
       Case Field()="Condicoes Especiais" :
            Moveto [Numero_Carregamento]
       Case Field() = "Numero_Carregamento":
           []=AlinhM([],6)
           Moveto [Numero do Pedido]
           []=AlinhM([],6)            
       Case Field() = "Numero do Pedido":
           []=AlinhM([],6)          
           Moveto "DupI"
           SetaCorRegistro("Padrao")
           Moveto "DupNF"
           SetaCorRegistro("Padrao")
           
           Moveto "DupC"
           Moveto [Valor Nota Fiscal]
                  [Codigo da Empresa]=CODEMP
       Case Field() = "Valor Nota Fiscal":
           QuitLoop
       OtherWise:
           Right
       EndSwitch
  EndSwitch
EndWhile
EndProc  ; (Digita)

;*******************************************************************************
;* Rotina para Digitacao de Desdobramento de Duplicatas                        *
;*******************************************************************************
Proc CHAVEI()

While True
  Moveto [Ordem do Documento]
  End
  ORDEM = [Ordem do Documento]
  Down
  Moveto [Ordem do Documento]
  
  Soma_Desdobramento()
  
  If Isblank(ORDEM)
     Then ORDEM = "A"
     Else LETASC= Asc(ORDEM) + 1
          ORDEM = CHR(LETASC)
  EndIf
  []=ORDEM
  ODEM=[]
  LockRecord
  Locate ORDEM

  SetaCorRegistro("Editar")
  While True

    Prompt " Esc=Retornar  F7=Paginar"

    Wait Field
         Until "ESC","ENTER","F7","HOME","UP","PGUP"

    Switch
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           PAGINA("Dupi","MR")
           If EDITAR="S"
              Then CHAVEI=0
                   Controla_EdicaoD()
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                              Then Del
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           Soma_Desdobramento()
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         CHAVEI=9
         Del
         Return
    Case Retval="ENTER":
         ORDEM=[]
         Del
         Locate CODEMP,NUMDOC,SERDOC,ORDEM
         If Retval
            Then CHAVEI=0
            Else CHAVEI=1
                 End Down
                 Moveto [Ordem do Documento]
                 [Codigo da Empresa  ]=CODEMP
                 [Numero do Documento]=NUMDOC
                 [Serie do Documento ]=SERDOC
                 [Ordem do Documento ]=ORDEM
         EndIf
         Return
    EndSwitch
  EndWhile
EndWhile
EndProc  ; (ChaveI)

;*******************************************************************************
;* Rotina para Digitacao da Ficha Financeira de Clientes                      *
;*******************************************************************************
Proc DIGITAI()

Moveto [Data Vencimento]
While True
  TECLA=" Esc=Retornar  "

  MSGCAMPO=Field()

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

  Switch
    Case Field()="Data Vencimento"      : MSGCAMPO="Data de Vencimento"
    Case Field()="Valor Duplicata"      : MSGCAMPO="Valor da Duplicata"
    Case Field()="Valor do Descontoa"   : MSGCAMPO="Valor do Desconto" 
    Case Field()="Data Limite Desconto" : MSGCAMPO="Data Limite de Desconto"
    Case Field()="Multa"                : MSGCAMPO="Multa"
    Case Field()="Juros"                : MSGCAMPO="Juros"
    Case Field()="Tipo Taxa de Juros"   : MSGCAMPO="Tipo Taxa de Juros (Dia/Mes/Ano)"
    Case Field()="Codigo_Sacado"        : MSGCAMPO="Codigo do Sacado" 
    Case Field()="Codigo da Conta"      : MSGCAMPO="Codigo da Conta"
    Case Field()="Duplicata Emitida"    : MSGCAMPO="Duplicata Emitida (Sim/N„o)"
    Case Field()="Boleta Emitida"       : MSGCAMPO="Boleta Emitida (Sim/N„o)"
  EndSwitch   

  Prompt TECLA
  SetaCorRegistro("Editando")
  Wait Field
       Until "ESC","ENTER","DEL","FIELDVIEW","F1","F35"

  Switch
  Case RetVal="F1" : 
       If Field()="Codigo_Sacado"   Or
          Field()="Codigo da Conta"           
          Then CONSULTAF1()
       EndIf
           
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEI=0
          Then If QuerExcluir("")
                  Then Del
                       CHAVEI=9
                       QuitLoop
               EndIf
       EndIf
  Case Retval="ESC":
       Switch
         Case Field()="Data Vencimento":
              If QuerDesfazer("")
                 Then If CHAVEI = 1
                         Then Del
                      EndIf
                      QuitLoop
              Endif
         Case Field()="Duplicata Emitida":
              Moveto [Tipo Taxa de Juros]
         OtherWise:
              Left
       EndSwitch
  Case Retval="ENTER":
       Switch
       Case Field()="Data Vencimento":
            If IsBlank([])
               Then []=Today()
            EndIf
            If [] < [Dupc->Data de Emissao]
               Then Mensagem("Data do vencimento menor que data de emiss„o")
                    Loop
            EndIf
            Right
       Case Field()="Data Limite Desconto":
            If [] > [Data Vencimento]
               Then Mensagem("Data do desconto maior que o vencimento")
                    Loop
            Endif
            Right
       Case Field()="Tipo Taxa de Juros":
            Switch
            Case IsBlank([]):
                 [NDias Taxa de Juros]=0
            Case []="D":
                 [NDias Taxa de Juros]=1
            Case []="M":
                 [NDias Taxa de Juros]=30
            Case []="A":
                 [NDias Taxa de Juros]=365
            EndSwitch
            Moveto [Codigo_Sacado]
       Case Field()="Codigo_Sacado" :            
            If IsBlank([])
               Then Loop
               Else Moveto [Codigo da Conta]
            EndIf   
            
       Case Field()="Codigo da Conta" :     
            If IsBlank([])
               Then Loop
               Else QuitLoop
            EndIf   
       Case Field()="Valor Duplicata":
            If IsBlank([])
               Then Loop
               Else Right
            EndIf
       Otherwise:
            Right
       EndSwitch
  EndSwitch
EndWhile
EndProc  ; (DigitaI)

;*******************************************************************************
;* Rotina para Localizar Registro Nota                                         *
;*******************************************************************************
Proc CHAVEN()

Somar()

Moveto [Sequencia]
End
ITEM = [Sequencia]
Down
Moveto [Sequencia]

If Isblank(ITEM)
   Then ITEM="1"
   Else ITEM=StrVal(Numval(ITEM)+1)
EndIf
[]=ITEM
[]=ALINH()
ITEM=[]

SetaCorRegistro("Editar")
While True

  Prompt " Esc=Retornar  F7=Paginar"

  Wait Field
       Until "ESC","ENTER","F7","HOME","UP","PGUP"

  Switch
  Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
       While True
         PAGINA("DupNF","MR")
         If EDITAR="S"
            Then CHAVEN=0
                 Controla_EdicaoN()
            Else If EXCLUIR="S"
                    Then If QuerExcluir("")
                            Then Del
                            Else UnLockRecord
                         EndIf
                    Else QuitLoop
                 EndIf
         EndIf
         Somar()
         SetaPosForm()
       EndWhile
       Moveto [Sequencia]
       End
       ITEM = [Sequencia]
       Down
       Moveto [Sequencia]

       If Isblank(ITEM)
          Then ITEM="1"
          Else ITEM=StrVal(Numval(ITEM)+1)
       EndIf
       []=ITEM
       []=ALINH()
       ITEM=[]
  Case Retval="ESC":
       CHAVEN=9
       Del
       QuitLoop
  Case Retval="ENTER":
       If IsBlank([])
          Then Loop
       EndIf
       []=ALINH()
       ITEM=[]
       Del
       Locate CODEMP,NUMDOC,SERDOC,ITEM
       If Retval
          Then CHAVEN=0
          Else CHAVEN=1
               End Down
               Moveto [Sequencia]
               [Codigo da Empresa  ]=CODEMP
               [Numero do Documento]=NUMDOC
               [Serie do Documento ]=SERDOC
               [Sequencia          ]=ITEM
       EndIf
       QuitLoop
  EndSwitch
EndWhile
EndProc  ; (ChaveN)

;*******************************************************************************
;* Rotina para Digitacao da Ficha Financeira de Clientes                      *
;*******************************************************************************
Proc DIGITAN()

Moveto [Codigo do Documento]
While True

      TECLA=" Esc=Retornar  "
      If CHAVEN=0
         Then TECLA=TECLA+"Del=Excluir"
      EndIf
      
      MSGCAMPO=""
      If Field()="Codigo do Documento"
         Then MSGCAMPO="Codigo do Documento, [F1]Consultar tabela"
      EndIf
      If Field()="Numero da Nota"
         Then MSGCAMPO="Numero da Nota"
      EndIf
      If Field()="Serie da Nota"
         Then MSGCAMPO="Serie do Documento"
      EndIf
      If Field()="Valor da Nota Fiscal"
         Then MSGCAMPO="Valor do Documento"
      EndIf
      
      Prompt TECLA
      SetaCorRegistro("Editando")
      Wait Field
           Until "ESC","ENTER","DEL","FIELDVIEW","F35","F1"
 
      Switch
      Case RetVal="F1": 
           If Field()="Codigo do Documento"
              Then CONSULTAF1()
           EndIf
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVEN=0
              Then If QuerExcluir("")
                      Then Del
                           CHAVEN=9
                           QuitLoop
                   EndIf
           EndIf
      Case Retval="ESC":
           If Field()="Codigo do Documento"
              Then If QuerDesfazer("")
                      Then If CHAVEN = 1
                              Then Del
                           EndIf
                           QuitLoop
                   EndIf
           endif        
           If Field()="Numero da Nota"
              Then moveto [Codigo do Documento]
              Else Left
           EndIf

      Case Retval="ENTER":
           Switch
           Case Field()="Codigo do Documento" :
                If IsBlank([])
                   Then fastmsg("Valor Inv lido !")
                   else GetRecord "\\Sistemas\\Cadastro\\TpDoctos" [Codigo do Documento] To REG_TPDOCTO
                        If Not RetVal
                           Then Mensagem("Tipo de documento "+[Codigo do Documento]+" inv lido!")
                                Loop
                           Else [Tipo do Documento] = REG_TPDOCTO["Tipo do Documento" ] 
                                [Serie da Nota    ] = REG_TPDOCTO["Serie do Documento"] 

                        EndIf
                        Moveto [Numero da Nota]      
                EndIf
           Case Field()="Numero da Nota":
                If IsBlank([])
                   Then fastmsg("Valor Inv lido !")
                   else []=ALINH()
                        Moveto [Serie da Nota]
                EndIf

           Case Field()="Valor da Nota Fiscal":
                If IsBlank([])
                   Then fastmsg("Valor Inv lido !")
                   else UnLockRecord
                        QuitLoop
                EndIf
           Otherwise:
                Right
           EndSwitch
      EndSwitch
EndWhile

EndProc   ; (Digitan)

;*******************************************************************************
;* Rotina para Digitacao da Ficha Financeira de Clientes                      *
;*******************************************************************************
Proc Somar()

Moveto "DupNF"
Moveto [Valor da Nota Fiscal]
TOTAL    =ImageCSum()
TOTAL_NFS=ImageCCount()
Moveto "Dupc"
[Valor Nota Fiscal]=TOTAL

Moveto "DupNF"
SetaCorRegistro("Editar")

EndProc  ; (Somar)

;*******************************************************************************
;* Rotina para Digitacao de Desdobramento de Duplicatas                        *
;*******************************************************************************
Proc Soma_Desdobramento()
Private Tab_Ant,Fie_Ant

Tab_Ant = Table()
Fie_Ant = Field()

Moveto "DupI"
Moveto [Valor Duplicata] 
TOTAL_DESDOBRAMENTO =ImageCsum()
TOTAL_VENCTOS       =ImageCCount()
Moveto Tab_Ant
Moveto Field Fie_Ant

EndProc ;Soma_Desdobramento()

;*******************************************************************************
;* Exclusao de Registros                                                       *
;*******************************************************************************
Proc EXCLUSAO()
If Not Isassigned(GRAVA_LOG) Then GRAVA_LOG=False EndIf

If OPCAO_FORM=0
   Then ImageRights
        PickForm "1"
EndIf
Moveto "DupI"
While RecordStatus("New")=False
  If GRAVA_LOG Then Grava_LogEx("Item da DupI") EndIf
  Del
EndWhile

Moveto "DupNF"
While RecordStatus("New")=False
  Del
EndWhile

Moveto "Dupc"
If GRAVA_LOG Then Grava_LogEx("DupC") EndIf
Del

If MODOFILTRAR and STATUSFILTRO="UPDATE" Then STATUSFILTRO="DEL" EndIf
If MODOFILTRAR and STATUSFILTRO="INSERT" Then STATUSFILTRO=""    EndIf   
 
If OPCAO_FORM=0
   Then ImageRights ReadOnly
        PickForm "F"
EndIf
EndProc  ; (Exclusao)

;*******************************************************************************
;* Desdobramentos                                                              *
;*******************************************************************************
Proc DESDOBRA()

Moveto "DupNF"
SetaCorRegistro("Padrao")

Moveto "Dupi"
While True
  CHAVEI()
  If CHAVEI=9 Then QuitLoop EndIf
  Controla_EdicaoD()
EndWhile

Moveto "DupI"
SetaCorRegistro("Padrao")
Moveto "DupC"
SetaCorRegistro("Editar")

EndProc  ; (Desdobra)

;*******************************************************************************
;* Relacao de Notas                                                            *
;*******************************************************************************
Proc NOTAS()

Moveto "DupI"
SetaCorRegistro("Padrao")

Moveto "DupNF"
While True
  CHAVEN()
  If CHAVEN=9 Then QuitLoop EndIf
  Controla_EdicaoN()
EndWhile

Moveto "DupNF"
SetaCorRegistro("Padrao")
Moveto "DupC"
SetaCorRegistro("Editar")

EndProc  ; (Notas)

;*******************************************************************************
;* Rotina p/ Montar Opcoes p/ Grade                                            *
;*******************************************************************************
Proc Monta_Opcoes(OPCAODIVERSAS, ITEMDESEJADO)
Private OPCAODIVERSAS, ITEMDESEJADO, wcg, icg, icgt, tnovo, nomecampo,opconta
nomecampo=Field()

If IsAssigned(Opcoes)
   Then Release Vars Opcoes
EndIf
DynArray Opcoes[]
Switch
  Case OPCAODIVERSAS="Codigo da Conta":
       VSDGTPLANC =[Codigo da Conta]
       Moveto [Codigo da Conta]
EndSwitch
Ativa_Lookup()
wcg=0

While Not EOT()
  Switch
    Case OPCAODIVERSAS="Codigo da Conta":
         Switch
           Case [Dupc->Codigo da Empresa]=[Codigo da Empresa]:
                wcg=wcg+1
                Opcoes[wcg]=Completa([Descricao da Conta],31," ")+[Codigo da Conta]
         EndSwitch
  EndSwitch
  Skip
EndWhile
KeyPress "ESC"
Moveto Field nomecampo
EndProc    ; (Monta_Opcoes)

;*******************************************************************************
;* Rotina p/ Checagem Opcoes p/ Grade                                          *
;*******************************************************************************
Proc Checa_Opcoes(OPCAODIVERSAS, VALORDESEJADO)
Private OPCAODIVERSAS, VALORDESEJADO, icg, resultado

If DynArraySize(Opcoes)=0
   Then Return False
EndIf

resultado=false
For icg From 1 To DynArraySize(Opcoes)
  Switch
    Case OPCAODIVERSAS="Codigo da Conta":
         If RTrim(SubStr(Opcoes[icg],32,4))=VALORDESEJADO
            Then resultado=true
         EndIf
  EndSwitch
  If resultado
     then MontaRegistro_F1(OPCAODIVERSAS,icg)
          QuitLoop
  EndIf
EndFor
return resultado
EndProc         ;  (Checa_Opcoes)

;*******************************************************************************
;* Rotina Montar Registro_F1 p/ Grade                                          *
;*******************************************************************************
Proc MontaRegistro_F1(OPCAODIVERSAS, indice)
private OPCAODIVERSAS, indice

If IsAssigned(Registro_F1)
   Then Release Vars Registro_F1
EndIf
DynArray Registro_F1[]
Switch
  Case OPCAODIVERSAS="Codigo da Conta"       :
       Registro_F1["Codigo da Conta"]         =RTrim(SubStr(Opcoes[indice],32,4))
       Registro_F1["Descricao da Conta"]      =RTrim(SubStr(Opcoes[indice],1,30))
       If IsAssigned(VSDGCONTA)
          Then VSDGCONTA          =Registro_F1["Codigo da Conta"]
       EndIf
EndSwitch
EndProc    ;  (Monta_RegistroF1)

;*******************************************************************************
;* Rotina de Selecionar Grade                                                  *
;*******************************************************************************
Proc Seleciona_Opcoes(OPCAODIVERSAS,SEMRETORNO)
Private OPCAODIVERSAS, LJ, AJ, nc, SEMRETORNO

If DynArraySize(Opcoes)=0
   Then Mensagem("Tabela sem Registros !")
        Return False
EndIf

AJ=DynArraySize(Opcoes)
If AJ>15
   Then AJ=15
   Else If AJ<3 Then AJ=3 EndIf
EndIf

Switch
  Case OPCAODIVERSAS="Codigo da Conta"   : LJ=37 nc=1
EndSwitch

ArrayElement=0
Showdialog "Consulta "+OPCAODIVERSAS Proc "Opcoes_Dialog"
   Trigger "OPEN","ARRIVE"
    Key "TAB","ReverseTab","ENTER","ESC"
     @ 02,01 height AJ+2 width LJ+5

   PickDynArray @0,01 Height AJ width LJ
   Columns nc
   Opcoes
   Tag "TG_OPCAO"
   To ArrayElement
EndDialog
If RetVal
   Then If SEMRETORNO<>"SR"
           Then Switch
                  Case OPCAODIVERSAS="Codigo da Conta":
                  [Codigo da Conta   ]=Registro_F1["Codigo da Conta"]
                  [Descricao da Conta]=Registro_F1["Descricao da Conta"]
                EndSwitch
                Return True
        EndIf
   Else Return False
EndIf
EndProc   ; (Seleciona_Opcoes)

;*******************************************************************************
;* Rotina de Controle p/ ShowDialog Grade                                      *
;*******************************************************************************
Proc Opcoes_Dialog(Disparo,Campo,Evento,Elemento)

Temp=True
TECLA=" Esc=Retornar  Enter=Selecionar  =Mover  "
If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
      Case Evento["KeyCode"] = 9 Or Evento["KeyCode"] = -15: Temp=False
      Case Evento["KeyCode"] = 27:
           Resultado_F1=False
           CancelDialog
      Case Evento["KeyCode"] = 13:
           Temp=False
           MontaRegistro_F1(OPCAODIVERSAS,ArrayElement)
           Resultado_F1=True
           AcceptDialog
   EndSwitch
EndIf

@ 24,0 ?? TECLA+Spaces(80-Len(TECLA))
PaintCanvas Attribute 31 24,0,24,79
Return Temp
EndProc      ; (Opcoes_Dialog)

;*******************************************************************************
;* Cancelar Lancamentos                                                        *
;*******************************************************************************
Proc Cancelar_Duplicatas()
Private CHV_EMPRESA, CHV_TPDOCTO, CHV_NUMERO_ORDEM

UnLockRecord
Formkey

Moveto "DupI"
Moveto [Codigo da Empresa]
Locate [Dupc->Codigo da Empresa ], [DupI->Numero do Documento], [Dupc->Serie do Documento]
If RetVal
   Then While [Codigo da Empresa  ]=[Dupc->Codigo da Empresa  ] And
              [Numero do Documento]=[Dupc->Numero do Documento] And
              [Serie do Documento ]=[Dupc->Serie do Documento ]

          CHV_EMPRESA=[DupI->Codigo da Empresa ]
          CHV_TPDOCTO=[Dupc->Codigo do Documento]
          If [DupI->Ordem do Documento]<>""
             Then CHV_NUMERO_ORDEM=[DupI->Numero do Documento]+"/"+[DupI->Ordem do Documento]
             Else CHV_NUMERO_ORDEM=[DupI->Numero do Documento]
          EndIf

          Moveto "\\Sistemas\\CtaRec\\Duplic"
          Moveto [Codigo da Empresa]
          Locate IndexOrder by "IndDup1" CHV_EMPRESA,CHV_TPDOCTO,CHV_NUMERO_ORDEM
          If RetVal
             Then If [Saldo do Documento]<>[Valor do Documento]
                     Then MSG="O estorno do lan‡amento no Contas a Receber,//"
                          MSG=MSG+"referente a este documento: "+
                              CHV_EMPRESA+" / "+CHV_TPDOCTO+" / "+CHV_NUMERO_ORDEM+"//"
                          MSG=MSG+"n„o ser  efetuado, pois o T¡tulo J  teve baixa ! // //"
                          MSG=MSG+"Verificar !"
                          Mensagem(MSG)
                          QuitLoop
                     Else Del
                  EndIf
          EndIf

          Moveto "DupI"
          Skip
          If EOT() Then QuitLoop EndIf
        EndWhile
EndIf

Moveto "Dupc"
FormKey
[Situacao]="C"

EndProc

;*******************************************************************************
;* Rotina p/ Carregar Parƒmetros do Cliente                                    *
;*******************************************************************************
Proc Carrega_Parametros_Cliente()

If IsFile(PrivDir()+"ORD_DUP.ini")
   Then LeiaINI(PrivDir()+"ORD_DUP.ini","VSDGORDEM.S.1")
        Switch
          Case VSDGORDEM="EMPRESA" : ORDENARPOR="EMPRESA"
        EndSwitch   
   Else ORDENARPOR="EMPRESA"      
EndIf

EndProc ;Carrega_Parametros_Cliente()

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoD()
DIGITAI()
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoN()
DIGITAN()
If RecordStatus("modified") Then UnLockRecord EndIf
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
If Not IsAssigned(STATUSFILTRO) then STATUSFILTRO="" Endif

DIGITA()

If RecordStatus("modified") Then UnLockRecord EndIf
If RecordStatus("Locked")   Then UnLockRecord EndIf         
AtualizaRegistroControle("Codigo da Empresa",CODEMP,MODOPAGINA)
If OPCAO_FORM="F" Then PickForm "F" EndIf

EndProc ;Controla_EdicaoC()

;*******************************************************************************
;* Selecionar Registros                                                       *
;*******************************************************************************
Proc SelecionaFiltroDupC()
ClearAll

If Not IsAssigned(SDFILTRO_ATIVO) Then SDFILTRO_ATIVO = False EndIf

If Not SDFILTRO_ATIVO
   Then {Ask} {DupC} Check
        If MODOFILTRAR_EMPRESA<>""
           Then Moveto [Codigo da Empresa] TypeIn "~FILTRAREMPRESA.."
        EndIf
        Do_It!
        ClearAll 
   Else Switch
          Case MODOFILTRAR_EMPRESA<>"" And VSDGEMPRESA<>"" And MODOFILTRAR_EMPRESA<>VSDGEMPRESA : 
               Mensagem("O usu rio deve informar a empresa "+VSDGEMPRESA+"!")
               Return False
          Case VSDGEMPRESA<>"" And MODOFILTRAR_EMPRESA=""           : 
               MODOFILTRAR_EMPRESA=VSDGEMPRESA 
        EndSwitch
        {Ask} {DupC} Check   
        If MODOFILTRAR_EMPRESA<>""
           Then Moveto [Codigo da Empresa] TypeIn "~FILTRAREMPRESA.." 
           Else Moveto [Codigo da Empresa] TypeIn  "~VSDGEMPRESA.."
        EndIf
        Moveto [Codigo                   ] TypeIn "~VSDGDESTINAT.."
        Moveto [Numero do Pedido         ] TypeIn "~VSDGPEDIDO.." 
        Moveto [Codigo do Documento      ] TypeIn "~VSDGTPDOCTO.."
        Moveto [Codigo do Representante  ] TypeIn "~VSDGREPRESEN.."
        Moveto [Cidade Fatura            ] TypeIn CIDADE
        Moveto [UF Fatura                ] TypeIn "~VSDGESTADO.."
        Moveto [Codigo da Destinacao     ] TypeIn "~VSDGDESTIN.."
        Moveto [Data de Emissao          ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Numero_Carregamento      ] TypeIn "~VSDGNCARREG.."
        Do_It!
        ClearAll
EndIf  

Release Vars REG_USUARIO
CriaTabelaControle()

Edit TabelaControle
For ii From 1 To 4
  Switch
    Case ii=1 : Moveto [Codigo da Empresa  ]
                {Valcheck} {Define} Enter {TableLookup} TypeIn "\\Sistemas\\Cadastro\\Empresas" Enter {AllCorrespondingFields} {HelpAndFill} 
    Case ii=2 : Moveto [Codigo do Documento]
                {Valcheck} {Define} Enter {TableLookup} TypeIn "\\Sistemas\\Cadastro\\TpDoctos" Enter {AllCorrespondingFields} {HelpAndFill} 
    Case ii=3 : Moveto [Serie do Documento ]  
    Case ii=4 : Moveto [Numero do Documento]
  EndSwitch
  {Valcheck} {Define} Enter {Picture} TypeIn "!*!" Enter
EndFor
Do_it!
ClearImage

Return True

EndPRoc ;SelecionaFiltroDupC()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_DialogDUPC(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento, Temp, MSG_CAMPO, TECLA
 
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_PEDIDO"        : Campo="TG_EMPRESA"
            Case Campo="TG_NCARREG"       : Campo="TG_PEDIDO"     
            Case Campo="TG_TPDOCTO"       : Campo="TG_NCARREG"     
            Case Campo="TG_DESTINAT"      : Campo="TG_TPDOCTO"     
            Case Campo="TG_REPRESEN"      : Campo="TG_DESTINAT"    
            Case Campo="TG_CIDADE"        : Campo="TG_REPRESEN"    
            Case Campo="TG_ESTADO"        : Campo="TG_CIDADE"      
            Case Campo="TG_DESTIN"        : Campo="TG_ESTADO"      
            Case Campo="TG_DTINI"         : Campo="TG_DESTIN"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"     
            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_PEDIDO"
                         If Not IsBlank(VSDGEMPRESA) And MODOFILTRAR_EMPRESA<>"" And MODOFILTRAR_EMPRESA<>VSDGEMPRESA
                            Then Mensagem("Empresa informada difere da empresa cadastrada para esse usu rio!")
                                 Campo="TG_EMPRESA"
                         EndIf 
                    Case Campo="TG_PEDIDO"       : Campo="TG_NCARREG"  
                    Case Campo="TG_NCARREG"      : Campo="TG_TPDOCTO"     
                    Case Campo="TG_TPDOCTO"      : Campo="TG_DESTINAT"    
                    Case Campo="TG_DESTINAT"     : Campo="TG_REPRESEN"    
                    Case Campo="TG_REPRESEN"     : 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_DESTIN"      
                    Case Campo="TG_DESTIN"       : Campo="TG_DTINI"
                    Case Campo="TG_DTINI"        : Campo="TG_DTFIM"        
                    Case Campo="TG_DTFIM"        : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_DialogDUPC

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc FiltrarDupC()
Private Result
LimpAguarde()                 
Do_It!                            
ClearAll                                                                  

Echo Normal
Echo Off

If MODOFILTRAR_EMPRESA<>"" Then VSDGEMPRESA=MODOFILTRAR_EMPRESA EndIf

CONSULTAF1     =  False
SDFILTRO_ATIVO = True
While True
  Result=False 
          
  ShowDialog "Crit‚rio para filtro ?" Proc "SD_DialogDUPC"
  Trigger "OPEN","ARRIVE","SELECT"  
  Mouse "UP"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140
  @ 05,00   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 "Pedido"  For "TG_PEDIDO"
    Accept @ 03,01 Width 9  "A6"  Picture "[&,#][#*#]" Tag "TG_PEDIDO"    To VSDGPEDIDO
    Accept @ 03,09 Width 25 "A25" Picture "!*!"        Tag "TG_NOMPEDIDO" To VSDGNOMPEDIDO

    Label  @ 04,00 "Carregamento" For "TG_NCARREG"
    Accept @ 05,01 Width 09  "A6"  Picture "[&,#][#*#]" Tag "TG_NCARREG"    To VSDGNCARREG
    Accept @ 05,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMNCARREG" To VSDGNOMNCARREG
                                                                                                            
    Label  @ 06,00 "Tipo do Documento"  For "TG_TPDOCTO"
    Accept @ 07,01 Width 07 "A4"  Picture "!*!" Tag "TG_TPDOCTO" To VSDGTPDOCTO                             
    Accept @ 07,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMTPDOCTO"  To VSDGNOMTPDOCTO                                                

    Label  @ 08,00 "Pessoa"  For "TG_DESTINAT"
    Accept @ 09,01 Width 07 "A4"  Picture "!*!" Tag "TG_DESTINAT" To VSDGDESTINAT
    Accept @ 09,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMDEST"  To VSDGNOMDEST

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

    Label  @ 12,00 "Cidade"  For "TG_CIDADE"
    Accept @ 13,01 Width 27 "A20"  Picture "!*!" Tag "TG_CIDADE"  To VSDGCIDADE

    Label  @ 12,27 "Estado"  For "TG_ESTADO"
    Accept @ 13,28 Width 06 "A2"  Picture "!*!" Tag "TG_ESTADO" To VSDGESTADO
    
    Label  @ 14,00 "Destinacao"  For "TG_DESTIN"
    Accept @ 15,02 Width 06 "A3"  Picture "[&,#][#*#]" Tag "TG_DESTIN"    To VSDGDESTIN
    Accept @ 15,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMDESTIN" To VSDGNOMDESTIN

    Label  @ 00,35 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 01,38 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 01,51 "at‚" For "TG_DTFIM"
    Accept @ 01,56 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    @ 19,52 ?? "[NÆo filtra mˆs fechado!]"

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  
  If VSDGEMPRESA="0000"
     Then VSDGEMPRESA2=""
     Else VSDGEMPRESA2=VSDGEMPRESA
  EndIf
  
  If MODOFILTRAR_EMPRESA<>"" And MODOFILTRAR_EMPRESA<>VSDGEMPRESA
     Then Mensagem("O usu rio deve informar a empresa "+MODOFILTRAR_EMPRESA+"!")
          Loop
  EnDIf  
  
  AGUARDE("Filtrando dados")
  If Not SelecionaFiltroDupC() Then Loop EndIf    
  Result=True
                             
  QuitLoop
EndWhile

SDFILTRO_ATIVO=False

Return Result

EndProc ;FiltrarDupC

;*******************************************************************************
;* Rotina Limpa Variaveis do Filtro                                            *
;*******************************************************************************
Proc LimpaFiltroDupC()                                                                        
                                                                                       
CIDADE           = ""
VSDGEMPRESA      = ""
VSDGNOMEMP       = ""
VSDGNCARREG      = ""
VSDGNOMNCARREG   = ""
VSDGTPDOCTO      = ""
VSDGNOMTPDOCTO   = ""
VSDGDESTINAT     = ""
VSDGNOMDEST      = ""
VSDGREPRESEN     = ""
VSDGNOMREPR      = ""
VSDGCIDADE       = ""
VSDGESTADO       = ""
VSDGDESTIN       = ""
VSDGNOMDESTIN    = ""
VSDGDTINI        = BlankDate()
VSDGDTFIM        = Today()
REGRAFILTRO      = ""
REGRAFILTRO      = ""

EndProc ;LimpaFiltroDupC()     

;*******************************************************************************
;* Rotina para Carregar Tabelas                                               *
;*******************************************************************************
Proc Carrega_Tabelas()
CleaRall

View NOWINDOW "\\Sistemas\\Ctarec\\Duplic"
View NOWINDOW "DupI"
If Not MODOFILTRAR
   Then CoEdit "Dupc"
        ;************** Rotina para tratar o erro de tabela locada ********************
        If ErrorCode()=4
           Then Do_It!
                Return False
        EndIf
        If Verifica_NRegistros("Dupi")
           Then COR_MENSAGEM="1"
                Mensagem(MSG_TABELA)
                Release Vars COR_MENSAGEM,MSG_TABELA
           Else Release Vars MSG_TABELA     
        EndIf
   Else If Not CoEditaTabelaControle() 
           Then Return False
        EndIf
EndIf

Moveto TabelaControle
PickForm OPCAO_FORM

Return True   

EndProc ;Carrega_Tabelas()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="" EndIf
If Not IsAssigned(SYS_CONTROLE_DIA)    Then SYS_CONTROLE_DIA=""    EndIf
If Not IsAssigned(SYS_NOME_USUARIO)    Then SYS_NOME_USUARIO=""    EndIf
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO=""   EndIf
SYS_VALOR()
LimpaFiltroDupC()

Carrega_Parametros_Cliente()

TOTAL_DESDOBRAMENTO=BlankNum()
TOTAL_VENCTOS      =BlankNum()
TOTAL              =BlankNum()
TOTAL_NFS          =BlankNum()

OPCAO_FORM             = "F"
TabelaTemp             = ""
TabelaPrincipal        = "DupC"
TabelaControle         = TabelaPrincipal
MODOFILTRAR            = True
MODOFILTRARATIVO       = True
MODOFILTRAR_EMPRESA    = ""        
MODOFILTRATODOS        = False      
If IsAssigned(MODOFILTRAR) And MODOFILTRAR 
   Then FILTRAREMPRESA = ""
        GetRecord "\\Sistemas\\Cadastro\\Usuarios" SYS_CHAPA_USUARIO To REG_USUARIO
        If RetVal
            Then If Not isblank(REG_USUARIO["Cod_Empresa"])
                    Then FILTRAREMPRESA = REG_USUARIO["Cod_Empresa"]
                 EndIf 
        EndIf
        If FILTRAREMPRESA<>""
           Then MODOFILTRAR_EMPRESA = FILTRAREMPRESA
                SelecionaFiltroDupC()      
        EndIf
EndIf

If MODOFILTRAR_EMPRESA=""
   Then TabelaControle    = TabelaPrincipal
        MODOFILTRAR       = False
        MODOFILTRARATIVO  = True
        MODOFILTRARINCLUI = False
        MODOFILTRATODOS   = True
EndIf

If Carrega_Tabelas()
   Then While True
          CHAVEC()
          ;--- FILTRO ----------------------------------------------------------
          If CHAVEC=99 
             Then If FiltrarDupC()
                     Then MODOFILTRAR=True
                  EndIf
                  Carrega_Tabelas()
                  Loop
          EndIf                 
          If CHAVEC=98 
             Then AGUARDE("Visualizando todos registros")
                  MODOFILTRAR=False
                  Do_It!
                  
                  TabelaControle=TabelaPrincipal
                  Carrega_Tabelas()
                  Loop
          EndIf   
          ;---------------------------------------------------------------------             
          If CHAVEC=9 Then QuitLoop  EndIf
          If CHAVEC=5
             Then If OPCAO_FORM="F"
                     Then PickForm "F"
                     Else PickForm "1"
                  EndIf
                  Loop
          EndIf
          Controla_EdicaoC()
        EndWhile
EndIf
Do_It!
ClearAll
Release Vars All
Release Procs All