



; em altera‡ao por anivel nÆo deletar !!

; em testes

; original= [ dupbxiia ]






;** DupBXII ********************************************************************
;*  Consulta/Edi‡Æo e Baixa de Titulos por Cliente                             *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 02/06/2004 por Anivel Augusto Rodrigues
;Ultima Alteracao: 23/03/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes padronizar com script Duplic usando apenas paramentro
;                  diferenciador assim este script nunca muda !!
;Ultima Alteracao: 21/07/2011 por Karina Andrade
;Motivo Alteracao: Ajustes Codigo do Cliente com Letra
;Ultima Alteracao: 16/11/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes calculo WCSW_BAIXA =vr recebido * COTTA
;Ultima Alteracao: 25/11/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes para adi‡Æo das Anota‡äes
;Ultima Alteracao: 12/12/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes para rotina de anota‡äes
;Ultima Alteracao: 04/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes LimpaRodape(1)
;Ultima Alteracao: 18/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes VSDGRAZDEST, razao social/nome cliente
;Ultima Alteracao: 25/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes parametros/layout/saldos

;*******************************************************************************
;* Rotina para Localizar Registro Carteira                                     *
;*******************************************************************************
Proc Localiza_Lancto()   
Private ok

OPCAO_FORM="4"
Moveto "Duplic"
PickForm "4"
Moveto [Numero do Lancamento]  

Coeditkey

Ok=True                     
PASSOU=False
COPIOU_REGISTRO=False

IndiceReg=ControlValue("I_Registro")
NLANC=SubStr(Array_Registro[IndiceReg],78,6)

campoorig=campo  

While True
  Moveto [Numero do Lancamento]
  Locate NLANC
  If Retval
     Then If IsLockRecord()
             Then Ok=False
                  QuitLoop
          EndIf
          
          If Not Checa_Controle([Numero_Controle_Dia])
             Then Ok=False
                  UnLockRecord
                  QuitLoop
          EndIf

          WinArray6["FLOATING"]=False
          Window SetAttributes JANELA_DIALOG From WinArray6

          Verifica_Agendamento=True
          SetaCorRegistro("Editar")
          CHAVEC=0
          Controla_EdicaoC()
          SetaCorRegistro("Paginar")

          If VSDGTP="B"
             Then Moveto "DupBaixa"
                  Home
                  If RecordStatus("New")
                     Then max_dtpagto=BlankDate()
                     Else max_dtpagto=[Data do Pagamento]
                          Scan
                            If [Data do Pagamento]>max_dtpagto Then max_dtpagto=[Data do Pagamento] EndIf
                          EndScan
                  EndIf 
                  Moveto "Duplic"
          EndIf    
          If VSDGTP<>"G"
             Then Seta_Array(IndiceReg)
          EndIf

          WinArray6["FLOATING"]=True
          Window SetAttributes JANELA_DIALOG From WinArray6
          Window Select JANELA_DIALOG
          Agendamento=False
          Echo Normal
          Echo Off
                                     
     Else Mensagem("Lan‡amento n„o encontrado !")
          Ok=False
  EndIf
  QuitLoop
EndWhile

Do_It!

TECLA    =""
MSG_CAMPO=""
campo=campoorig

Return Ok
EndProc  ; (CHAVEC)

;*******************************************************************************
;* Rotina para Calcular JUros/Multa                                            *
;*******************************************************************************
Proc CalcJuros()
Private Saldo

If Agendamento 
   Then Moveto "Duplic"
EndIf   

If [Saldo do Documento]<=0
   Then Saldo=[Saldo do Documento]
        If Agendamento 
           Then Moveto "DupNotas"
        EndIf
        Return Saldo
EndIf

If [Data de Vencimento]<Today()
   Then NDA=Today()-[Data de Vencimento]
        TXM=[Multa]
   Else NDA=0
        TXM=0
EndIf
If [Data Limite Desconto]>=Today()
   Then VRDESCT=[Valor do Desconto]
   Else VRDESCT=0
EndIf

If [Taxa de Juros]>0
   Then TXJ=([Taxa de Juros]/[NDias Taxa de Juros])*NDA
        VRJUROS=Round((([Saldo do Documento]*TXJ)/100)+([Saldo do Documento]*TXM/100),2)
   Else VRJUROS=Round((([Valor de Juros]/[NDias Taxa de Juros])*NDA),2)
        VRJUROS=VRJUROS+Round((([Saldo do Documento]*TXM)/100),2)
EndIf

Saldo=([Saldo do Documento]+VRJUROS)-VRDESCT

If Agendamento 
   Then Moveto "DupNotas"
EndIf

Return Saldo
EndProc

;*******************************************************************************
;* Rotina para Montar Valores no Array                                         *
;*******************************************************************************
Proc Seta_Array(Indice)
Private Indice,Saldo,dtpagto,SaldoOrig

SaldoOrig=[Saldo do Documento]
Saldo    =CalcJuros()

If SaldoOrig<=0
   Then SaldoOrig=[Valor do Documento]
EndIf 

If IsAssigned(Array_Registro[Indice])
   Then If Not IsBlank(Array_Registro[Indice])
           Then 
                WCSW_SDATU_ORIG=WCSW_SDATU_ORIG-NumVal(SubStr(Array_Registro[Indice],102,13))
                WCSW_SDATU_ORIG=WCSW_SDATU_ORIG+[Saldo do Documento]
           
                WCSW_SDATU_ATUA=WCSW_SDATU_ATUA-NumVal(SubStr(Array_Registro[Indice],89,13))
                WCSW_SDATU_ATUA=WCSW_SDATU_ATUA+Saldo
        EndIf
EndIf

If Not IsAssigned(max_dtpagto) Then max_dtpagto=BlankDate() EndIf
If VSDGTP="B"
   Then If Table()="Answer"
           Then dtpagto=[Data do Pagamento]
           Else dtpagto=max_dtpagto
        EndIf   
EndIf

Switch 
  Case VSDGTP="B" And VSDGORDEM="P" : 
    Array_Registro[Indice]=AlinhM(StrVal(Indice),4)+" "+
                           Completa(Format("D10",dtpagto),08," ")+" "+
                           [Codigo da Empresa]+" "+
                           Completa([Tipo do Documento],5," ")+
                           Completa(SubStr([Numero do Documento],1,10),10," ")+" "+
                           Format("D10",[Data de Vencimento])+" "+
                           [Numero do Lancamento]+
                           Format("W13.2,EIC",SaldoOrig)+
                           Format("W13.2,EIC",Saldo)+" "+
                           [Numero do Lancamento]+" "+Spaces(3)+" "+Completa(StrVal(Saldo),13," ")+Completa(StrVal([Saldo do Documento]),13," ")

  Case VSDGTP="B" And VSDGORDEM="V" :
    Array_Registro[Indice]=AlinhM(StrVal(Indice),4)+" "+
                           Format("D10",[Data de Vencimento])+" "+
                           [Codigo da Empresa]+" "+
                           Completa([Tipo do Documento],5," ")+
                           Completa(SubStr([Numero do Documento],1,10),10," ")+" "+
                           Completa(Format("D10",dtpagto),08," ")+" "+
                           [Numero do Lancamento]+
                           Format("W13.2,EIC",SaldoOrig)+
                           Format("W13.2,EIC",Saldo)+" "+
                           [Numero do Lancamento]+" "+Spaces(3)+" "+Completa(StrVal(Saldo),13," ")+Completa(StrVal([Saldo do Documento]),13," ")
   
  Case VSDGTP="B" And VSDGORDEM="D" : 
    Array_Registro[Indice]=AlinhM(StrVal(Indice),4)+" "+
                           [Codigo da Empresa]+" "+
                           Completa([Tipo do Documento],5," ")+
                           Completa(SubStr([Numero do Documento],1,10),10," ")+" "+
                           Format("D10",[Data de Vencimento])+" "+
                           Completa(Format("D10",dtpagto),08," ")+" "+
                           [Numero do Lancamento]+
                           Format("W13.2,EIC",SaldoOrig)+
                           Format("W13.2,EIC",Saldo)+" "+
                           [Numero do Lancamento]+" "+Spaces(3)+" "+Completa(StrVal(Saldo),13," ")+Completa(StrVal([Saldo do Documento]),13," ")

  Case VSDGTP="G" :   
    Array_Registro[Indice]=AlinhM(StrVal(Indice),4)+" "+
                           Completa(NOTAS_NOME,18," ")+" "+ 
                           Completa(Format("D10",[Data da Anotacao]),8," ")+" "+
                           Completa([Hora da Anotacao],5," ")+" "+
                           Completa(NOTAS_SITU,8," ")+" "+   
                           Completa(NOTAS_TDOC,4," ")+" "+                    
                           Completa(SubStr(NOTAS_NDOC,1,10),10," ")+   
                           Format("W13.2,EIC",Saldo)+" "+
                           NOTAS_NLAN+" "+Alinhm(StrVal([Sequencia da Anotacao]),3)+" "+Completa(StrVal(Saldo),13," ")+Completa(StrVal([Saldo do Documento]),13," ")

  Case VSDGTP="V" : 
    Array_Registro[Indice]=AlinhM(StrVal(Indice),4)+" "+
                           Format("D10",[Data de Vencimento])+" "+
                           [Codigo da Empresa]+" "+
                           Completa([Tipo do Documento],5," ")+
                           Completa(SubStr([Numero do Documento],1,10),10," ")+" "+
                           Completa(Format("D10",[Dt_Ultima_Anotacao]),8," ")+" "+
                           [Numero do Lancamento]+
                           Format("W13.2,EIC",SaldoOrig)+
                           Format("W13.2,EIC",Saldo)+" "+
                           [Numero do Lancamento]+" "+Spaces(3)+" "+Completa(StrVal(Saldo),13," ")+Completa(StrVal([Saldo do Documento]),13," ")
                                 
  Case VSDGORDEM="E" : 
    Array_Registro[Indice]=AlinhM(StrVal(Indice),4)+" "+
                           Format("D10",[Data de Emissao])+" "+
                           [Codigo da Empresa]+" "+
                           Completa([Tipo do Documento],5," ")+
                           Completa(SubStr([Numero do Documento],1,10),10," ")+" "+
                           Format("D10",[Data de Vencimento])+" "+
                           [Numero do Lancamento]+
                           Format("W13.2,EIC",SaldoOrig)+
                           Format("W13.2,EIC",Saldo)+" "+
                           [Numero do Lancamento]+" "+Spaces(3)+" "+Completa(StrVal(Saldo),13," ")+Completa(StrVal([Saldo do Documento]),13," ")
                                     
  Case VSDGORDEM="V" : 
    Array_Registro[Indice]=AlinhM(StrVal(Indice),4)+" "+
                           Format("D10",[Data de Vencimento])+" "+
                           [Codigo da Empresa]+" "+
                           Completa([Tipo do Documento],5," ")+
                           Completa(SubStr([Numero do Documento],1,10),10," ")+" "+
                           Format("D10",[Data de Emissao])+" "+
                           [Numero do Lancamento]+
                           Format("W13.2,EIC",SaldoOrig)+
                           Format("W13.2,EIC",Saldo)+" "+
                           [Numero do Lancamento]+" "+Spaces(3)+" "+Completa(StrVal(Saldo),13," ")+Completa(StrVal([Saldo do Documento]),13," ")
                           
  Case VSDGORDEM="D" : 
    Array_Registro[Indice]=AlinhM(StrVal(Indice),4)+" "+
                           [Codigo da Empresa]+" "+
                           Completa([Tipo do Documento],5," ")+
                           Completa(SubStr([Numero do Documento],1,10),10," ")+" "+
                           Format("D10",[Data de Emissao])+" "+
                           Format("D10",[Data de Vencimento])+" "+
                           [Numero do Lancamento]+
                           Format("W13.2,EIC",SaldoOrig)+
                           Format("W13.2,EIC",Saldo)+" "+
                           [Numero do Lancamento]+" "+Spaces(3)+" "+Completa(StrVal(Saldo),13," ")+Completa(StrVal([Saldo do Documento]),13," ")
                           
EndSwitch

EndProc

;*******************************************************************************
;* Rotina para Selecionar Registros                                            *
;*******************************************************************************
Proc Seleciona()
Private wc,pesq,msg

Verifica_Lancamentos=False

LimpaRodape(1)
Aguarde("Aguarde, Selecionando Registros")
If IsAssigned(Array_Registro)
   Then Release Vars Array_Registro
EndIf
DynArray Array_Registro[]

wc=0
WCSW_NLANC      =BlankNum()
WCSW_SDINI_ORIG =BlankNum()
WCSW_SDINI_ATUA =BlankNum()
WCSW_SDATU_ORIG =BlankNum()
WCSW_SDATU_ATUA =BlankNum()
WCSW_BAIXA      =BlankNum()

Moveto "Duplic"

{Ask} {Duplic} Check
Moveto [Codigo do Destinatario] TypeIn "~VSDGDESTINAT.."

Switch 
  Case VSDGTP="V" : Moveto [Saldo do Documento   ] TypeIn ">0.01" 
                    Moveto [Data de Vencimento   ] TypeIn "<Today"
  Case VSDGTP="G" : Moveto [Numero do Lancamento ] Example "NLanc"
                    {Ask} {DupNotas} 
                    Moveto [Numero do Lancamento ] Example "NLanc"
                    Moveto [Sequencia da Anotacao] Check
                    Moveto [Data da Anotacao     ] Check 
                    Moveto [Hora da Anotacao     ] Check
                    Moveto [Situacao da Anotacao ] Check TypeIn "AGENDAM"
  Case VSDGTP="A" : Moveto [Saldo do Documento   ] TypeIn ">0.01"
  Case VSDGTP="B" : Moveto [Saldo do Documento   ] TypeIn "<=0.01"
                    Moveto [Numero do Lancamento ] Example "NLanc" TypeIn "!"
                    {Ask} {DupBaixa}
                    Moveto [Numero do Lancamento] Example "NLanc"
                    Moveto [Data do Pagamento   ] TypeIn "Calc max as Data do Pagamento"
EndSwitch
Do_It!

If Not IsEmpty("Answer")
   Then Verifica_Lancamentos=True      
EndIf

If Verifica_Lancamentos
   Then Switch
          Case VSDGTP="V"    : Sort "Answer" On "Data de Vencimento","Codigo do Destinatario","Numero do Documento"    
          Case VSDGTP="G"    : Sort "Answer" On "Data da Anotacao","Hora da Anotacao","Codigo do Destinatario","Data de Vencimento","Numero do Documento"                 
          Case VSDGORDEM="E" : Sort "Answer" On "Codigo do Destinatario","Data de Emissao","Tipo do Documento","Numero do Documento","Numero do Lancamento"
          Case VSDGORDEM="V" : Sort "Answer" On "Codigo do Destinatario","Data de Vencimento","Tipo do Documento","Numero do Documento","Numero do Lancamento"
          Case VSDGORDEM="D" : Sort "Answer" On "Codigo do Destinatario","Tipo do Documento","Numero do Documento","Numero do Lancamento"
          Case VSDGORDEM="P" : Sort "Answer" On "Codigo do Destinatario","Data do Pagamento","Tipo do Documento","Numero do Documento","Numero do Lancamento"

        EndSwitch

        While True
          wc=wc+1
                       
          If VSDGTP="G"
             Then NOTAS_NOME=[Nome Fantasia EmitDest]
                  NOTAS_NLAN=[Numero do Lancamento  ]
                  NOTAS_TDOC=[Tipo do Documento     ]
                  NOTAS_NDOC=[Numero do Documento   ]
                  If [Situacao da Anotacao]="AGENDAM"
                      Then NOTAS_SITU="" 
                      Else NOTAS_SITU="REALIZADO"
                  EndIf
          EndIf   

          Seta_Array(wc)  

          If VSDGTP<>"G"
             Then 
                  WCSW_SDINI_ORIG=WCSW_SDINI_ORIG+[Saldo do Documento]
                  WCSW_SDINI_ATUA=WCSW_SDINI_ATUA+CalcJuros()
                                     
                  WCSW_SDATU_ORIG=WCSW_SDINI_ORIG                     
                  WCSW_SDATU_ATUA=WCSW_SDINI_ATUA
          EndIf                     
                             
          Skip
          If EOT() Then QuitLoop EndIf
             
          If wc=1000   
             Then MSG = "Sr. USUARIO. // //"
                  MSG = MSG +"MEMORIA INSUFICIENTE. (DOS/EMS)//"
                  MSG = MSG +"Somente parte da Pesquisa ser  mostrado.//"
                  MSG = MSG +"Caso queira continuar com a pesquisa,   //"
                  MSG = MSG +"preencha com mais informa‡”es o campo   //"
                  MSG = MSG +"para diminuir o numero de itens.          "
                  Mensagem(MSG)
                  QuitLoop
          EndIf          
            
        EndWhile
        WCSW_NLANC=wc         
        
        LinhaCab1="                                                          Saldo        Saldo"
        RODAPE_DUP0="                                                 -------------- ------------  "
        RODAPE_DUP1="                                   Saldo inicial:                             "
        RODAPE_DUP2=" Lan‡to(s)                                Baixas:                             "
        RODAPE_DUP3="                                   Saldo final..:                             "

        Switch                                                   
          Case VSDGTP="G"    : LinhaCab1="                                                                       Saldo"
                               LinhaCab2="Seq  Nome               Ocorrˆncia              Documento         Atualizado"  

                               RODAPE_DUP0="                                                                              " 
                               RODAPE_DUP1="                                                                              " 
                               RODAPE_DUP2=" Lan‡to(s)                                                                    "
                               RODAPE_DUP3="                                                                              "

          Case VSDGTP="B" And VSDGORDEM="P" : LinhaCab2="Seq     Pagto Empr Documento        Vencto  Lan‡to     Original   Atualizado"
          Case VSDGTP="B" And VSDGORDEM="V" : LinhaCab2="Seq    Vencto Empr Documento         Pagto  Lan‡to     Original   Atualizado"
          Case VSDGTP="B" And VSDGORDEM="D" : LinhaCab2="Seq  Empr Documento        Vencto   Pagto   Lan‡to     Original   Atualizado"

          Case VSDGTP="V"                   : LinhaCab2="Seq    Vencto Empr Documento       Notas    Lan‡to     Original   Atualizado"
          Case VSDGORDEM="E"                : LinhaCab2="Seq   Emiss„o Empr Documento        Vencto  Lan‡to     Original   Atualizado"
          Case VSDGORDEM="V"                : LinhaCab2="Seq    Vencto Empr Documento       Emiss„o  Lan‡to     Original   Atualizado"
          Case VSDGORDEM="D"                : LinhaCab2="Seq  Empr Documento       Emiss„o  Vencto   Lan‡to     Original   Atualizado"
        EndSwitch





EndIf

Moveto "Answer"
ClearImage
Moveto "Duplic"
ClearImage
If VSDGTP="G"
   Then Moveto "DupNotas"
        ClearImage 
EndIf            
If VSDGTP="B"
   Then Moveto "DupBaixa"
        ClearImage 
EndIf            

If DynArraySize(Array_Registro)=0 Or Not Verifica_Lancamentos
   Then Mensagem("Pesquisa sem Registro !")
        Return False
EndIf
LimpAguarde()
Return True
EndProc ; (Seleciona)

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

Temp=True
TECLA    =""
MSG_CAMPO=""
If INICIO_DIALOG2
   Then Campo="TG_DESTINAT"
        INICIO_DIALOG2=False
EndIf

If Disparo="OPEN"
   Then Dynarray WinArray6[]
        Window Handle Dialog To JANELA_DIALOG
        Window GetAttributes JANELA_DIALOG To WinArray6
        WinArray6["HASSHADOW"]  =False
        WinArray6["CANCLOSE"]   =True
        Window SetAttributes JANELA_DIALOG From WinArray6
EndIf   

If Disparo="CLOSE"
   Then If Campo="I_Registro"
           Then 
                WCSW_NLANC      =BlankNum()
                WCSW_SDINI_ORIG =BlankNum()
                WCSW_SDINI_ATUA =BlankNum()
                WCSW_SDATU_ORIG =BlankNum()
                WCSW_SDATU_ATUA =BlankNum()
                WCSW_BAIXA      =BlankNum()
                Release Vars Array_Registro
                DynArray Array_Registro[]

                Moveto "Duplic"
                Moveto [Numero do Lancamento]
        Endif
        CancelDialog
EndIf

If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9 Or
          Evento["KeyCode"] = -15:
          Temp=False
     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"] = -59: 
          If Dialog_F1()
            Then VSDGCONTATO=Reg_ConsultaF1["Contato"]+" - "+Reg_ConsultaF1["Telefone"]
          EndIf
     Case Evento["KeyCode"] = -67:
          If Campo="I_Registro"
             Then If TITULOS_EDITBX
                     Then TITULOS_SOBAIXAS=False
                          Localiza_Lancto()
                          TITULOS_SOBAIXAS=True
                          PER_ANOTACAO=True
                          
                          If Seleciona()
                             Then Campo="I_Registro"
                             Else Moveto "Duplic"
                                  Moveto [Numero do Lancamento]
                                  Campo="I_ORDEM"
                          EndIf
                          PER_ANOTACAO=False
                  EndIf        
          EndIf        
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_DESTINAT" : CancelDialog
            Case Campo="I_TP"        : Campo="TG_DESTINAT"
                 VSDGTP      =""
                 VSDGDESTINAT=""
                 VSDGRAZDEST =""
                 VSDGCONTATO =""
                 VSDGORDEM   =""
            Case Campo="I_ORDEM"     :  Campo="I_TP"
            Case Campo="I_Registro"   : Campo="TG_DESTINAT"
                 LinhaCab1=""
                 LinhaCab2=""
                 WCSW_NLANC      =BlankNum()
                 WCSW_SDINI_ORIG =BlankNum()
                 WCSW_SDINI_ATUA =BlankNum()
                 WCSW_SDATU_ORIG =BlankNum()
                 WCSW_SDATU_ATUA =BlankNum()
                 WCSW_BAIXA      =BlankNum()
                 Release Vars Array_Registro
                 DynArray Array_Registro[]

                 Moveto "Duplic"
                 Moveto [Numero do Lancamento]
          EndSwitch
     Case Evento["KeyCode"] =  13:
          Temp=False
          Switch
            Case Campo="TG_DESTINAT":
                 If Checa_TAG()
                    Then If IsBlank(VSDGDESTINAT)
                            Then VSDGRAZDEST="TODOS"
                                 VSDGCONTATO =""
                         EndIf
                         Campo="I_TP"   
                    Else Campo="TG_DESTINAT"    
                 EndIf 
            Case Campo="I_TP"      : 
                 VSDGTP=ControlValue("I_TP")
                 Switch
                   Case IsBlank(VSDGDESTINAT) And TITULOS_SOBAIXAS:
                     VSDGTP="V"
                     Campo="I_ORDEM"  
                   Case IsBlank(VSDGDESTINAT) And (VSDGTP<>"V" And VSDGTP<>"G"):
                     FastMsg("Tipo de lan‡amento inv lido !")
                   Case IsBlank(VSDGDESTINAT) And (VSDGTP="V" Or VSDGTP="G"):
                     Campo="I_ORDEM"  
                   Case Not IsBlank(VSDGDESTINAT):
                     If IsBlank(VSDGTP)
                        Then VSDGTP="A"     
                     EndIf
                     Switch
                       Case VSDGTP<>"T" And VSDGTP<>"A" And VSDGTP<>"V" And VSDGTP<>"B" And VSDGTP<>"G":
                         FastMsg("Tipo de lan‡amento inv lido !")
                       OtherWise:
                         Campo="I_ORDEM"  
                     EndSwitch
                 EndSwitch
                 Switch
                   Case VSDGTP="G" : VSDGORDEM="A"
                   Case VSDGTP="V" : VSDGORDEM="V"
                 EndSwitch
            Case Campo="I_ORDEM"   :
                 VSDGORDEM=ControlValue("I_ORDEM")
                 If IsBlank(VSDGORDEM)
                    Then Switch
                           Case VSDGTP="B" : VSDGORDEM="P" 
                           Case VSDGTP="G" : VSDGORDEM="A"
                           Case VSDGTP="V" : VSDGORDEM="V"
                           OtherWise       : VSDGORDEM="V"
                         EndSwitch
                 EndIf
                 Switch
                   Case VSDGTP="B" And (VSDGORDEM<>"P" And VSDGORDEM<>"D" And VSDGORDEM<>"V"):
                     FastMsg("Ordem inv lida !")
                   Case VSDGTP="G" And VSDGORDEM<>"A":
                     FastMsg("Ordem inv lida !")
                   Case VSDGTP="V" And VSDGORDEM<>"V":
                     FastMsg("Ordem inv lida !")
                   Case (VSDGTP="T" Or VSDGTP="A") And (VSDGORDEM<>"E" And VSDGORDEM<>"V" And VSDGORDEM<>"D"):
                     FastMsg("Ordem inv lida !")
                   OtherWise: 
                     RefreshDialog
                     If Seleciona()
                        Then Campo="I_Registro"
                        Else Moveto "Duplic"
                             Moveto [Numero do Lancamento]
                     EndIf
                 EndSwitch
            Case Campo="I_Registro" And DynArraySize(Array_Registro)>0:
                 Localiza_Lancto()
          EndSwitch
   EndSwitch
EndIf

If Disparo="SELECT" And Campo="I_Registro"
   Then Temp=False
        Localiza_Lancto()
EndIf      
If Disparo="ARRIVE" And 
   (Campo="TG_DESTINAT" Or
    Campo="I_NOMCLI"   Or
    Campo="I_CONTATO"  Or
    Campo="I_TP"       Or
    Campo="I_ORDEM") And 
   DynArraySize(Array_Registro)>0
   Then; Temp=False
        LinhaCab1=""
        LinhaCab2=""
        WCSW_NLANC      =BlankNum()
        WCSW_SDINI_ORIG =BlankNum()
        WCSW_SDINI_ATUA =BlankNum()
        WCSW_SDATU_ORIG =BlankNum()
        WCSW_SDATU_ATUA =BlankNum()
        WCSW_BAIXA      =BlankNum()
        Release Vars Array_Registro
        DynArray Array_Registro[]
        
        Moveto "Duplic"
        Moveto [Numero do Lancamento]
EndIf

Switch
  Case Campo="TG_DESTINAT"           : MSG_CAMPO="Em Branco = Todos"
                                       TECLA="F1=Consulta  "
  Case Campo="I_TP" And 
       IsBlank(VSDGDESTINAT) And
       TITULOS_SOBAIXAS              : MSG_CAMPO="Lan‡amentos: V=Vencidos"  
  Case Campo="I_TP" And               
       IsBlank(VSDGDESTINAT)         : MSG_CAMPO="Lan‡amentos: V=Vencidos  G=Agendados"
  Case Campo="I_TP"                  : MSG_CAMPO="Lan‡amentos: T=Todos  A=Em Aberto  V=Vencidos  B=Baixados  G=Agendados"
  Case Campo="I_ORDEM" And 
       VSDGTP="V"                    : MSG_CAMPO="Ordem: V=Vencimento"
  Case Campo="I_ORDEM" And 
       IsBlank(VSDGDESTINAT) And
       VSDGTP="G"                    : MSG_CAMPO="Ordem: A=Agendado"
  Case Campo="I_ORDEM" And VSDGTP="B": MSG_CAMPO="Ordem: P=Pagamento  V=Vencimento  D=Documento"
  Case Campo="I_ORDEM" And VSDGTP="G": MSG_CAMPO="Ordem: A=Agendado"
  Case Campo="I_ORDEM"               : MSG_CAMPO="Ordem: E=Emiss„o  V=Vencimento  D=Documento"
  Case Campo="I_Registro"            : If TITULOS_EDITBX
                                          Then TECLA="// Esc=Retornar  Enter=Baixar  F9=Editar  "+Chr(31)+Chr(30)+"=Selecionar  "
                                          Else TECLA="// Esc=Retornar  Enter=Baixar             "+Chr(31)+Chr(30)+"=Selecionar  "
                                       EndIf   
  Case Campo="I_Flag"                : TECLA="// Esc=Retornar"
EndSwitch
SelectControl Campo
RefreshDialog
Monta_Prompt(MSG_CAMPO,TECLA)
ResyncControl Campo
Return Temp
EndProc  ; (Sd_Dialog)

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
; Chamado pelo Duplic.sc
Do_It!

Moveto "Duplic"
PickForm "4"
Moveto [Numero do Lancamento]  

VRANT_NCARREG=""
VRANT_PLCONTA=""
VRANT_CTCUSTO=""

WCSW_NLANC      =BlankNum()
WCSW_SDINI_ORIG =BlankNum()
WCSW_SDINI_ATUA =BlankNum()
WCSW_SDATU_ORIG =BlankNum()
WCSW_SDATU_ATUA =BlankNum()
WCSW_BAIXA      =BlankNum()

DynArray Array_Registro[]
INICIO_DIALOG2=True
Agendamento=False

LinhaCab1=""
LinhaCab2=""

RODAPE_DUP0="" 
RODAPE_DUP1="" 
RODAPE_DUP2=""
RODAPE_DUP3=""

Switch
  Case TITULOS_SOANOTACOES : 
    TITULO_DUP="Anota‡”es de t¡tulos a receber"
  OtherWise : 
    TITULO_DUP="Baixa de t¡tulos a receber"
EndSwitch

ShowDialog TITULO_DUP Proc "SD_Consulta"
 Trigger "OPEN","ARRIVE","SELECT","CLOSE"
 Mouse "ALL"
  Key "F1","ENTER","ESC","ClearArea","TAB","ReverseTab","F9",
       -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140
  @ 01,00   Height 22 Width 80

  Label  @ 00,00 "Cliente" For "TG_DESTINAT"
  Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINAT" To VSDGDESTINAT

  Label  @ 00,08 "Nome"  For "I_NOMCLI"
  Accept @ 01,09 Width 43 "A40" Picture "!*!" Tag "I_NOMCLI" To VSDGRAZDEST

  Label  @ 00,52 "TL"  For "I_TP"
  Accept @ 01,53 Width 04 "A1"  Picture "G,T,A,B,V" Tag "I_TP" To VSDGTP

  Label  @ 00,57 "Ordem"  For "I_ORDEM"
  Accept @ 01,58 Width 04 "A1"  Picture "E,V,D,P,A" Tag "I_ORDEM" To VSDGORDEM
  Accept @ 02,09 Width 43 "A40" Picture "!*!"   Tag "I_CONTATO" To VSDGCONTATo

  @ 03,01 ?? LinhaCab1
  @ 04,01 ?? LinhaCab2
  
  PickDynArray @5,00 Height 11 width 78
   Columns 1
    Array_Registro
     Tag "I_Registro"          
      To ArrayElement

  @ 16,01 ?? RODAPE_DUP0
  @ 17,01 ?? RODAPE_DUP1
  @ 18,01 ?? RODAPE_DUP2
  @ 19,01 ?? RODAPE_DUP3

  @ 17,51 ?? Format("W13.2,EIC",WCSW_SDINI_ORIG)
  @ 17,64 ?? Format("W13.2,EIC",WCSW_SDINI_ATUA)  

  @ 18,64 ?? Format("W13.2,EIC",WCSW_BAIXA)

  @ 19,03 ?? Format("W5,EIC",WCSW_NLANC)

  @ 19,51 ?? Format("W13.2,EIC",WCSW_SDATU_ORIG)
  @ 19,64 ?? Format("W13.2,EIC",WCSW_SDATU_ATUA)  


;|                                   Saldo inicial: 9.999.999,12 | 9.999.999,12 |
;| Lan‡to(s)                                Baixas:              | 9.999.999,12 |
;|  9.999                            Saldo final..: 9.999.999,12 | 9.999.999,12 |
EndDialog

CoeditKey
Mouse Show
