;** AltTit *********************************************************************
;*  Alteracao de Titulos (Conta e Carteira)                                   *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 12/04/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Novo layout
;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: 30/07/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Exportacao Bradesco
;Ultima Alteracao: 24/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Seta_Sequencia
;Ultima Alteracao: 22/04/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Conta<>Empresa
;Ultima Alteracao: 27/05/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes BB2
;Ultima Alteracao: 07/07/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Alterar Plano Conta/Centro de Custo se Informado na Cabeca
;Ultima Alteracao: 20/01/2010 por Cleber Alves
;Motivo Alteracao: Ascrecimo CEF2
;Ultima Alteracao: 23/09/2010 por Bruno Carvalho
;Motivo Alteracao: Novos Ajustes Form e Add Avalista
;Ultima Alteracao: 24/09/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Layout checagem                                               
;Ultima Alteracao: 29/11/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Exclusao() GERCONTA() CONTA()
;Ultima Alteracao: 14/02/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas                                   
;Ultima Alteracao: 03/05/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Incluso Bradesco/Plus                   
;Ultima Alteracao: 09/05/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Checagem de t¡tulo j  existente na rela‡Æo
;Ultima Alteracao: 08/06/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Libera‡Æo novos bancos                      
;Ultima Alteracao: 26/08/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes lerar avalista pra outras situa‡äes       
;Ultima Alteracao: 11/10/2011 por Karina Andrade
;Motivo Alteracao: InclusÆo Cobrador - Altera‡Æo e Sele‡Æo
;Ultima Alteracao: 14/10/2011 por Karina Andrade
;Motivo Alteracao: Liberado Bradesco Plus para SYS_CODIGO_CLIENTE="0079"
;Ultima Alteracao: 21/10/2011 por Nikolas
;Motivo Alteracao: Liberado Santander para SYS_CODIGO_CLIENTE="0293 Xanadu"
;Ultima Alteracao: 08/11/2011 por Nikolas
;Motivo Alteracao: Liberado Santander para SYS_CODIGO_CLIENTE="0185 Territorio"
;Ultima Alteracao: 01/12/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Selecionar a Empresa - Lupus              
;Ultima Alteracao: 15/12/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes e Add filtro especial em consulta F1 na rotina AltTitI
;Ultima Alteracao: 15/12/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Locate Index Moveto [Codigo da Empresa]             
;Ultima Alteracao: 06/01/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes grava‡Æo duplic novos dados                         
;Ultima Alteracao: 19/01/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes na altera‡Æo da carteira quando ‚ feito a sele‡Æo   
;Ultima Alteracao: 06/01/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Plano de Contas/Centro de Custo s¢ tipo analitica
;Ultima Alteracao: 29/02/2012 por Nikolas
;Motivo Alteracao: Liberacao BradescoPlus para cliente 0274 Podium
;Ultima Alteracao: 25/05/2012 por Karina Andrade
;Motivo Alteracao: Liberado Santander para todos os clientes.
;Ultima Alteracao: 25/05/2012 por Bruno Carvalho
;Motivo Alteracao: Comentando a linha ITAU -> exporta‡Æo para o banco "F9"
;Ultima Alteracao: 30/06/2014 por Kamila Gomes
;Motivo Alteracao: F6-> inclusÆo de op‡Æo por datas
;Ultima Alteracao: 04/10/2014 por Luis Gustavo
;Motivo Alteracao: Implementado CheckBox para desprezar Cartäes.
;Ultima Alteracao: 16/12/2014 por Bruno Carvalho
;Motivo Alteracao: Adicionado rotina de impressÆo de duplicatas avulsas em PDF com imagem de fundo                                              
;Ultima Alteracao: 24/12/2014 por Bruno Carvalho
;Motivo Alteracao: Adicionado logo em duplicata avulsa #0343# 
;Ultima Alteracao: 18/03/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado logo em duplicata avulsa #0361#
;Ultima Alteracao: 08/06/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado logo em duplicata avulsa #0357#
;Ultima Alteracao: 30/07/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado logo em duplicata avulsa #0359#
;Ultima Alteracao: 26/08/2015 por Bruno Carvalho
;Motivo Alteracao: Adicionado logo em duplicata avulsa #0318#
;Ultima Alteracao: 03/08/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustes Imprime_Duplicata_Avulsa()
;Ultima Alteracao: 14/01/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado logo em duplicata avulsa #0144#
;Ultima Alteracao: 17/02/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado logo em duplicata avulsa #0263#
;Ultima Alteracao: 16/03/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado Imprimir_DP_Avulsa_Modelo2()
;                  ** #0263# pediu p/ que o BAIRRO fosse impresso, assim como alterar a posi‡Æo do CEP e alterar o nome PRA€A p/ CIDADE no layout da impressÆo 
;Ultima Alteracao: 24/03/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado [Data de Emissao] #0144#
;Ultima Alteracao: 11/04/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado logo em duplicata avulsa #0185#
;Ultima Alteracao: 06/06/2016 por Bruno Carvalho 
;Motivo Alteracao: Adaptado processo para gera‡Æo do [Numero do Lancamento] "Interno"
;Ultima Alteracao: 09/08/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado logo em duplicata avulsa #0296#
;Ultima Alteracao: 27/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog
;Ultima Alteracao: 28/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes showdialog TG_DESTINAT    
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()               
;Ultima Alteracao: 08/03/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog, MSGCAMPO, filtro sele‡Æo
;Ultima Alteracao: 14/03/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes chegar status do cliente, incluir t¡tulo sim/nÆo
;Ultima Alteracao: 24/03/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado logo em duplicata avulsa #0110#
;Ultima Alteracao: 28/03/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes na duplicata avulsa #0110#
;Ultima Alteracao: 27/04/2017 por Rafael Matos
;Motivo Alteracao: InclusÆo filtro por lote e ajustes para nÆo incluir lan‡amentos que j  estÆo no lote.
;Ultima Alteracao: 05/05/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes na duplicata avulsa #0237#
;Ultima Alteracao: 11/07/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CL=CartÆo Parcelado
;Ultima Alteracao: 07/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtro Codigo do Documento
;Ultima Alteracao: 02/10/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes na duplicata avulsa #0397#
;Ultima Alteracao: 12/11/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes na duplicata avulsa #0419#
;Ultima Alteracao: 21/11/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado PARAM_REPETE_DUPFOLHA p/ imprimir a mesma duplicata duas vezes na mesma folha A4 
;Ultima Alteracao: 21/11/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado PARAM_DUAS_VIAS p/ imprimir duas duplicatas por folha A4 #0425#
;Ultima Alteracao: 14/03/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Numero_Lancamento("Interno","Locked_Down")
;Ultima Alteracao: 21/05/2019 por Kamila Gomes                           
;Motivo Alteracao: InclusÆo do Sistema Gerador
;Ultima Alteracao: 01/07/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Selecao(), DigitaI()
;Ultima Alteracao: 19/11/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes lancamento caixa/banco 
;Ultima Alteracao: 31/01/2020 por Bruno Carvalho             
;Motivo Alteracao: Adicionado processo para escolher mais de um tipo de carteira
;Ultima Alteracao: 31/01/2020 por Bruno Carvalho             
;Motivo Alteracao: Adicionado processo para escolher mais de uma forma de pagamento
;Ultima Alteracao: 04/02/2020 por Bruno Carvalho             
;Motivo Alteracao: Adicionado proc ListaRegra_Funcao(), onde foi ajustado ListaRegra_TGAtivado
;Ultima Alteracao: 26/04/2021 por Bruno Carvalho             
;Motivo Alteracao: Alterado TG_SITUACAO p/ TG_SITUACAOCLIENTE
;Ultima Alteracao: 29/04/2021 por Bruno Carvalho
;Motivo Alteracao: Ajustes no filtro ao buscar a empresa -> Monta_Opcoes("Empresas","")
;Ultima Alteracao: 30/04/2021 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes sele‡Æo tratar cobrador
;Ultima Alteracao: 30/04/2021 por Bruno Carvalho
;Motivo Alteracao: Alterado "TG_OPDT" para "TG_OPDTEMISVENC"

;******************************************************************************
;* Rotina para Localizar Registro Carteira                                     *
;*******************************************************************************
Proc CHAVEC()
FACA_DIGITAC=True
TITULO=""

TOTVALOR=0
 VCITENS=0

While True
TOTVALOR=0
 VCITENS=0

  Moveto [Numero do Lote]
  End
  NLOTE=[]
  If OPCAO_FORM="1"
     Then Down
     Else PgDn
  EndIf
  ;***** se for cart
  Controle=False

  SetaCorRegistro("Editar")
  While True

  MSGCAMPO=""
  TECLA=""
  AguardaTeclasPadrao()

  Switch
      Case RetVal=-33 : SemFuncoes()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           Del
           While True
              TOTVALOR=0
               VCITENS=0

             FACA_DIGITAC=True
             TITULO=""

             If OPCAO_FORM="1"
                Then PAGINA("AltTitC","MR")
                Else PAGINA("AltTitC","MT")
             EndIf
             NLOTE=[Numero do Lote]
             Switch
               Case EDITAR="S":
                    PickForm "F"
                    Echo Normal
                    Echo Off
                    If Checa_Controle([Numero_Controle_Dia])
                       Then CHAVE=0
                            Controla_EdicaoC()
                       Else UnLockRecord
                    EndIf
               Case EXCLUIR="S":
                    PickForm "F"
                    Echo Normal
                    Echo Off
                    If Checa_Controle([Numero_Controle_Dia])
                       Then If QuerExcluir("")
                               Then EXCLUSAO()
                               Else UnLockRecord
                            EndIf
                       Else UnLockRecord
                    EndIf
               OtherWise: QuitLoop
             EndSwitch
             If OPCAO_FORM="F"
                Then PickForm "F"
                Else PickForm "1"
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case RetVal="F3":
           If OPCAO_FORM="F"
              Then OPCAO_FORM="1"
              Else OPCAO_FORM="F"
           EndIf
           Del
           CHAVE=6
           Return
      Case Retval="ESC":
           CHAVE=9
           Del
           Return
      Case Retval="ENTER":
           If IsBlank([])
              Then If IsBlank(NLOTE)
                      Then []=1
                      Else []=NLOTE+1
                   EndIf
           EndIf
           NLOTE=[]
           Del
           PickForm "F"
           Moveto "\\Sistemas\\Ctacor\\movcont"  SetHighLight Current Record 51  Field 51
           Moveto "\\Sistemas\\Ctacor\\saldcont" SetHighLight Current Record 51  Field 51
           Moveto "Duplic" SetHighLight Current Record 51  Field 51

           Moveto "AltTitC"
           Locate NLOTE
           If Retval
              Then CHAVE=0
              Else CHAVE=1
                   End Pgdn
                   [Numero do Lote ]=NLOTE
                   [Sistema Gerador]="MA"
           EndIf
           If Not IsLockRecord()
              Then Echo Normal
                   Echo Off
                   If (CHAVE=1 And Checa_Controle(SYS_CONTROLE_DIA)) Or
                      (CHAVE=0 And Checa_Controle([Numero_Controle_Dia]))
                      Then Return
                   EndIf
           EndIf
           If CHAVE=1
              Then Del
           EndIf
           If OPCAO_FORM="1"
              Then PickForm "1"
           EndIf
           QuitLoop
      EndSwitch
  EndWhile
EndWhile
EndProc ; (CHAVEC)

;*******************************************************************************
;* Rotina para Digitacao da Cabeca                                             *
;*******************************************************************************
Proc DIGITAC()
FACA_CHAVEI=True

Moveto "AltTitC"
Moveto "AltTitI" SetaCorRegistro("Padrao")
Moveto "AltTitC"

VROLD=[Valor da Operacao]
If CHAVE=1
   Then Moveto [Data da Operacao]
   Else If [Tipo do Lancamento]="A"
           Then Moveto [Documento no Banco]  
           Else Return
        EndIf
EndIf

While True

  TECLA=" Esc=Retornar  "
  If CHAVE=0
     Then TECLA=TECLA+"F8/=Titulos  Del=Excluir  "
  EndIf

  MSGCAMPO=Field()
  Switch
    Case Field()="Codigo da Conta"    : MSGCAMPO="Nova conta"
    Case Field()="Tipo do Lancamento" : MSGCAMPO="Nova carteira"
    Case Field()="Multa"              : MSGCAMPO="Nova % multa (Em Branco=mant‚m do t¡tulo)"
    Case Field()="Valor de Juros"     : MSGCAMPO="Novo valor do juros (Em Branco=mant‚m do t¡tulo)"
    Case Field()="Taxa de Juros"      : MSGCAMPO="Nova taxa de juros % (Em Branco=mant‚m do t¡tulo)"
    Case Field()="Tipo Taxa de Juros" : MSGCAMPO="Novo tipo de juros: Di rio/Mensal/Anual"
    Case Field()="Codigo Plano_Conta" : MSGCAMPO="Novo plano de conta (Em Branco=mant‚m do t¡tulo)"
    Case Field()="Codigo CCusto"      : MSGCAMPO="Novo centro de custo (Em Branco=mant‚m do t¡tulo)"
    Case Field()="Codigo do Cobrador" : MSGCAMPO="Novo cobrador (Em Branco=mant‚m do t¡tulo)"
    Case Field()="Despesas"           : MSGCAMPO="Valor do Desconto dos t¡tulos"
    Case Field()="Codigo_Empresa_Avalista" : MSGCAMPO="Empresa Avalista dos t¡tulos"
  EndSwitch
  If Field()="Tipo do Lancamento" Or
     Field()="Codigo da Empresa"  Or
     Field()="Codigo_Empresa_Avalista" Or
     Field()="Codigo da Conta"    Or
     Field()="Codigo Plano_Conta" Or
     Field()="Codigo CCusto"      Or
     Field()="Codigo do Cobrador"
     Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
  EndIf
  
  If Field()="Codigo da Empresa"      
     Then Monta_Opcoes("Empresas","")     
  EndIf
                                     
  Prompt TECLA

  Wait Field
     Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35","F8","DOWN"

  Switch
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case RetVal="F1":
       If Field()="Tipo do Lancamento"      Or
          Field()="Codigo_Empresa_Avalista" Or
          Field()="Codigo da Conta"         Or
          Field()="Codigo Plano_Conta"      Or
          Field()="Codigo CCusto"           Or
          Field()="Codigo do Cobrador"
          Then CONSULTAF1()
       EndIf
       If Field()="Codigo da Empresa"         
          Then Seleciona_Opcoes("Empresas","CR")
       Endif
  Case RetVal="F8" Or
       RetVal="DOWN":
       If CHAVE = 0
          Then QuitLoop
          Else Loop
       EndIf
  Case Retval="DEL" And CHAVE=0:
       If QuerExcluir("este lote")
          Then EXCLUSAO()
               CHAVE=9
               QuitLoop
       EndIf
  Case Retval="ESC":
       Switch
       Case Field()="Data da Operacao":
            If QuerDesfazer("")
               Then If CHAVE=1
                       Then Exclusao()
                    EndIf
                    FACA_CHAVEI =False
                    FACA_DIGITAC=False
                    CHAVE=9
                    QuitLoop
            EndIf
       Case Field()="Codigo da Conta"        : Moveto [Data da Operacao   ]
       Case Field()="Codigo da Empresa"      : Moveto [Codigo da Conta    ]
       Case Field()="Tipo do Lancamento"     : Moveto [Codigo da Empresa  ]
       Case Field()="Multa"                  : Moveto [Tipo do Lancamento ]
       Case Field()="Valor de Juros"         : Moveto [Multa              ]
       Case Field()="Tipo Taxa de Juros"     : Moveto [Valor de Juros     ]
       Case Field()="Codigo Plano_Conta"     : Moveto [Valor de Juros     ]
       Case Field()="Codigo CCusto"          : Moveto [Codigo Plano_Conta ]
       Case Field()="Codigo do Cobrador"     : Moveto [Codigo CCusto      ] 
       Case Field()="Codigo_Empresa_Avalista":
            If Isblank([]) 
               Then [Razao Social_Avalista]=""
               Else If Busca_Lookup("Codigo da Empresa",[Codigo_Empresa_Avalista],"")
                       Then If [Codigo da Empresa]=[Codigo_Empresa_Avalista]
                               Then Mensagem("Avalista inv lido, nÆo pode ser a mesma pessoa empresa !")
                                    Loop
                            EndIf         
                            [Razao Social_Avalista]=REG_BUSCA_LOOKUP["Nome Fantasia Empresa"]
                    EndIf
            EndIf 
            Moveto [Codigo do Cobrador ]
       Case Field()="Documento no Banco":
            If CHAVE=0
               Then If QuerDesfazer("")
                       Then Undo
                            
                            CHAVE=9
                            FACA_CHAVEI =False
                            FACA_DIGITAC=False
                            QuitLoop
                    EndIf        
               Else Moveto [Codigo_Empresa_Avalista]
            EndIf
       OtherWise:
            Left
       EndSwitch
  Case Retval="ENTER":
       Switch
       Case Field()="Data da Operacao":
            If IsBlank([])
               Then []=Today()
            EndIf
            If IntervaloData([Data da Operacao])
               Then Moveto [Codigo da Conta  ]
            EndIf  
       Case Field()="Codigo da Conta":
            If Not IsFieldNull([])
               Then Moveto [Codigo da Empresa]
            EndIf            
       Case Field()="Codigo da Empresa":
            If Not Checa_Opcoes("Empresas",[])
               Then Mensagem("Empresa inv lida !")
                    Loop
            EndIf       
            If Not IsFieldNull([])
               Then Moveto [Tipo do Lancamento]
            EndIf                   
       Case Field()="Tipo do Lancamento":
            If Not IsFieldNull([])
               Then Moveto [Multa]
           EndIf
       Case Field()="Multa":
           Moveto [Valor de Juros]
       Case Field()="Valor de Juros":
            If IsBlank([])
               Then Moveto [Taxa de Juros]
               Else Moveto [Tipo Taxa de Juros]
            EndIf       
       Case Field()="Taxa de Juros":
            If IsBlank([])
               Then [Tipo Taxa de Juros ]=""
                    [NDias Taxa de Juros]=BlankNum()
                    Moveto [Codigo Plano_Conta]
               Else Moveto [Tipo Taxa de Juros]
            EndIf
       Case Field()="Tipo Taxa de Juros":
            If []<>"D" and []<>"M" and []<>"A" Then Loop EndIf
            If []="D" Then [NDias Taxa de Juros]=1   EndIf
            If []="M" Then [NDias Taxa de Juros]=30  EndIf
            If []="A" Then [NDias Taxa de Juros]=365 EndIf
            Moveto [Codigo Plano_Conta]
       Case Field()="Codigo Plano_Conta":
            If IsBlank([])
               Then [Descricao Plano_Conta]=""
               Else If Busca_Lookup("Codigo Plano_Conta",[],"SM")
                       Then If REG_BUSCA_LOOKUP["Tipo de Conta"]<>"A"
                               Then Mensagem("Tipo conta inv lida!// //Somente conta tipo anal¡tica!")
                                    Loop
                            EndIf
                    EndIf
            EndIf
            Moveto [Codigo CCusto]
       Case Field()="Codigo CCusto":
            If IsBlank([])
               Then [Descricao CCusto]=""
               Else If Busca_Lookup("Codigo CCusto",[],"SM")
                       Then If REG_BUSCA_LOOKUP["Tipo de Conta"]<>"A"
                               Then Mensagem("Tipo conta inv lida!// //Somente conta tipo anal¡tica!")
                                    Loop
                            EndIf
                    EndIf
            EndIf
            Moveto [Codigo do Cobrador]
       Case Field()="Codigo do Cobrador":
            If IsBlank([]) Then [Descricao do Cobrador]="" EndIf     
            Moveto [Codigo_Empresa_Avalista]
       Case Field()="Codigo_Empresa_Avalista":
            If Not Isblank([]) 
               Then If Busca_Lookup("Codigo da Empresa",[Codigo_Empresa_Avalista],"")
                       Then If [Codigo da Empresa]=[Codigo_Empresa_Avalista]
                               Then Mensagem("Avalista inv lido, nÆo pode ser a mesma pessoa empresa !")
                                    Loop
                            EndIf         
                            [Razao Social_Avalista]=REG_BUSCA_LOOKUP["Nome Fantasia Empresa"]
                    EndIf
               Else [Razao Social_Avalista]=""    
            EndIf 
            Moveto [Documento no Banco]  
       Case Field()="Documento no Banco":
            Moveto [Despesas]     
       Case Field()="Despesas":
            [Valor da Operacao]=[Valor Total]-[Despesas]
            Quitloop
       OtherWise:
            Right
       EndSwitch
  EndSwitch
EndWhile
EndProc ; (DIGITAC)

;*******************************************************************************
;* Rotina para Localizar Item                                                  *
;*******************************************************************************
Proc CHAVEI()

While True
  Moveto [Saldo do Documento]  TOTVALOR=ImageCSum()
  Moveto [Numero do Item    ]   VCITENS=ImageCCount()
  
  Moveto "AltTitC"
  [Valor Total]=TOTVALOR
  [Valor da Operacao]=[Valor Total]-[Despesas]
  Moveto "AltTitI"

  Moveto [Numero do Item]
  End
  NITEM=[Numero do Item ]
  Down
  Moveto [Numero do Item]

  Seta_Sequencia(NITEM,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  SetaCorRegistro("Editar")
  While True
    Prompt " Esc=Sair   Alt+F=Fun‡”es   PgDn=Finalizar  "
    MSGCAMPO=""

    Wait Field
         Until "ESC","ENTER","F3","F7","HOME","UP","PGUP","PGDN","F9","F6",-33

    If RetVal = -33
       Then ShowPopup " Fun‡äes " CENTERED
               "F3 Imprimir ~D~uplicata" : " Impress„o de Duplicata Avulsa" : "F3",
               "F6 ~S~ele‡„o"            : " Sele‡„o                      " : "F6",
               "F9 ~E~xportar"           : " Exportar                     " : "F9",
               Separator,
               "~C~ancelar"     : " Cancelar procedimento        " : "CANCELAR"
             EndMenu
             To MenuVar
             Echo Off
     
             If Upper(MenuVar)="CANCELAR" Or Upper(MenuVar)="ESC" 
                 Then Loop
                 Else RetVal = MenuVar 
             EndIf
    EndIf              
     
    Switch
    Case RetVal="F3" :          
         Del
         ConfGeral("Deseja imprimir em PDF duplicatas avulsas desta rela‡Æo ?")
         If OK="S"
            Then DISPOSITIVO_OPCAO="V"  
                 Imprime_Duplicata_Avulsa()
         EndIf        
         QuitLoop        
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           Moveto [Saldo do Documento]  TOTVALOR=ImageCSum()
           Moveto [Numero do Item    ]   VCITENS=ImageCCount()
           
           Moveto "AltTitC"
           [Valor Total]=TOTVALOR
           [Valor da Operacao]=[Valor Total]-[Despesas]
           Moveto "AltTitI"

           PAGINA("AltTitI","MR")
           If EDITAR="S"
              Then CHAVEI=0
                   NLOTE  =[Numero do Lote]
                   NITEM  =[Numero do Item]
                   UnLockRecord
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                              Then EMPRESA =[AltTitC->Codigo da Empresa  ]
                                   TPDOCTO =[Codigo do Documento]
                                   NUMDOCTO=[Numero do Documento]

                                   Moveto "Duplic"
                                   Moveto [Numero do Lancamento]
                                   Locate [AltTitI->Numero do Lancamento]
                                   If RetVal
                                      Then While True
                                                 If Not IsLockRecord()
                                                    Then
                                                         [Codigo da Conta        ]=[AltTitI->Codigo da Conta        ]
                                                         [Codigo da Empresa      ]=[AltTitI->Codigo da Empresa      ]
                                                         [Multa                  ]=[AltTitI->Multa                  ]
                                                         [Taxa de Juros          ]=[AltTitI->Taxa de Juros          ]
                                                         [Valor de Juros         ]=[AltTitI->Valor de Juros         ]
                                                         [Tipo Taxa de Juros     ]=[AltTitI->Tipo Taxa de Juros     ]
                                                         [NDias Taxa de Juros    ]=[AltTitI->NDias Taxa de Juros    ]
                                                         [Tipo do Lancamento     ]=[AltTitI->Tipo do Lancamento     ]
                                                         [Documento no Banco     ]=[AltTitI->Documento no Banco     ]
                                                         [Codigo Plano_Conta     ]=[AltTitI->Codigo Plano_Conta     ]
                                                         [Codigo CCusto          ]=[AltTitI->Codigo CCusto          ]
                                                         [Codigo do Cobrador     ]=[AltTitI->Codigo do Cobrador     ]
                                                         UnlockRecord

                                                         QuitLoop
                                                 EndIf
                                           EndWhile
                                   EndIf

                                   Moveto "AltTitI"
                                   Del
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case RetVal="F9":
         Del
         If RecordStatus("New")
            Then Mensagem("Tabela sem Registros !")
                 QuitLoop
         EndIf

         ShowPopup " Exportar Dados " CENTERED
          "Banco do ~B~rasil  "       : " BB Cobran‡a                 "  : "BB2",
          Separator,
          "Caixa Economica ~F~ederal/CobCaixa " : " CobCaixa          "  : "CEF",
          "Caixa Economica F~e~deral/Cobranca" : " CobCaixa2          "  : "CEF2",
          Separator,
          "Bradesco                 " : " Office Banking Bradesco     "  : "BRAD",
          "Bradesco/Plus            " : " Office Banking Bradesco/Plus"  : "BRADPLUS",
          Separator,
          "Santander                " : " Santander                   "  : "SANTANDER",
          Separator,
          ;"Ita£                     " : " Ita£                        "  : "ITAU",
          ;Separator,
          "SISCOB                   " : " SISCOB                      "  : "SISCOB",
          Separator,
          "~C~ancelar"                : " Cancelar a Opera‡„o         "  : "CANCELAR"
         EndMenu
          To MenuVar

         echo off
         If MenuVar="CANCELAR" or MenuVar="Esc"
             Then QuitLoop
         EndIf

         ;*   PARA LIBERAR ESTA ROTINA PARA CLIENTE
         ;    VERIFICAR ANTES COM ANIVEL
         
         RotinaLiberada=True  
         Switch
           Case MenuVar="BRADPLUS" :
             Switch
               Case SYS_CODIGO_CLIENTE="0003" Or
                    SYS_CODIGO_CLIENTE="0274" Or
                    SYS_CODIGO_CLIENTE="0185" Or
                    SYS_CODIGO_CLIENTE="0079"    : RotinaLiberada=True
               OtherWise                         : RotinaLiberada=False
             EndSwitch
           ;Liberado para todos os clientes - Deve ser configurado programa do banco
           ;Case MenuVar="SANTANDER": 
             ;Switch
             ;  Case SYS_CODIGO_CLIENTE="0112" Or
             ;       SYS_CODIGO_CLIENTE="0185" Or
             ;       SYS_CODIGO_CLIENTE="0293": RotinaLiberada=True
             ;  OtherWise                     : RotinaLiberada=False
             ;EndSwitch
           Case MenuVar="ITAU": 
             Switch
               Case SYS_CODIGO_CLIENTE="0112": RotinaLiberada=True
               OtherWise                     : RotinaLiberada=False
             EndSwitch
           Case MenuVar="SISCOB": 
             Switch
               Case SYS_CODIGO_CLIENTE="0112": RotinaLiberada=True
               OtherWise                     : RotinaLiberada=False
             EndSwitch
         EndSwitch 
         If Not RotinaLiberada
            Then Mensagem("Rotina nÆo dispon¡vel, ainda a desenvolver ! Verificar com suporte da VISE")
                 QuitLoop
         EndIf   

         TABEXP="TITU"
         Switch
         Case MenuVar="BB"  :
              Do_It!
              ClearAll
              Play "ExpBB"
           Case MenuVar="BB2"  :
                Do_It!
                ClearAll
                Play "ExpBB2"
           Case MenuVar="CEF" :
                ShowPopup " Tipo de Carteira " CENTERED
                 "~S~imples"                 : " Carteira Simples [0011]   "  : "0011",
                 "~R~ pida"                  : " Carteira R pida  [0012]   "  : "0012",
                 "S~e~m Registro"            : " Sem Registro     [0014]   "  : "0014",
                 "~C~ancelar"                : " CANCELAR                  "  : "CANCELAR"
                EndMenu
                  To TIPO_CART
                  echo Off

                If TIPO_CART <> "CANCELAR" And TIPO_CART <> "Esc"
                   Then Do_It!
                        ClearAll
                        Play "ExpCEF"
                   Else QuitLoop
                EndIf
           Case MenuVar="CEF2" :
                ShowPopup " Tipo de Carteira " CENTERED
                 "~S~imples"                 : " Carteira Simples [0011]   "  : "0011",
                 "~R~ pida"                  : " Carteira R pida  [0012]   "  : "0012",
                 "S~e~m Registro"            : " Sem Registro     [0014]   "  : "0014",
                 "~C~ancelar"                : " CANCELAR                  "  : "CANCELAR"
                EndMenu
                  To TIPO_CART2
                  echo Off

                If TIPO_CART2 <> "CANCELAR" And TIPO_CART2 <> "Esc"
                   Then Do_It!
                        ClearAll
                        Play "ExpCEF2"
                   Else QuitLoop
                EndIf     
           Case MenuVar="BRAD"  :
                Do_It!
                ClearAll
                Play "ExpBrad"
           Case MenuVar="BRADPLUS"  :
                Do_It!
                ClearAll
                Play "ExpBradP"
           Case MenuVar="SANTANDER"  :
                Do_It!
                ClearAll
                Play "ExpSant"
         EndSwitch

         CoEdit "AltTitC"
         PickForm "F"
         Moveto [Numero do Lote]
         Locate NLOTE

         FACA_CHAVEI =False
         FACA_DIGITAC=False
         CHAVEI=9
         Return
    Case RetVal="F6":
    
         TPLANC_OPERACAO=[AltTitC->Tipo do Lancamento]
         TPCONT_OPERACAO=[AltTitC->Tipo da Conta     ]
         CDCONT_OPERACAO=[AltTitC->Codigo da Conta   ]
         CCOBRA_OPERACAO=[AltTitC->Codigo do Cobrador]
    
         Del
         Do_It!
         ClearAll

         Selecao(TPLANC_OPERACAO,TPCONT_OPERACAO,CDCONT_OPERACAO,CCOBRA_OPERACAO)

         CoEdit "AltTitC"
         PickForm "F"
         Moveto [Numero do Lote]
         Locate NLOTE
         SetaCorRegistro("Padrao")

         Moveto "AltTitI"
         QuitLoop
    Case Retval="ESC" Or Retval="PGDN":
         Del
         If RecordStatus("New")
            Then Mensagem("Tabela sem Registros !")
                ;**se for carteira
                 Controle=True
                 FACA_DIGITAC=False
                 ;***se for carteira
                 Exclusao()
         EndIf
         FACA_DIGITAC=False
         FACA_CHAVEI =False
         CHAVEI=9
         Return
    Case Retval="ENTER":
         If Not Seta_Sequencia(NITEM,True)       ;***** false
            Then Del
                 QuitLoop
         EndIf
         NITEM=[]
         Del
         Locate NLOTE,NITEM
         If Retval
            Then CHAVEI=0
            Else CHAVEI=1
                 End Down
                 [Numero do Lote]=NLOTE
                 [Numero do Item]=NITEM
                 UnLockRecord
                 Locate NLOTE,NITEM
         EndIf
         Return
    EndSwitch
  EndWhile
EndWhile
EndProc  ; (ChaveI)

;*******************************************************************************
;* Rotina para Digitacao dos Itens                                             *
;*******************************************************************************
Proc DIGITAI()
Private vrcampo, titok, regdestinat, msg

If CHAVEI=0
   Then Return
   Else Moveto [Codigo da Empresa]
EndIf
While True

  TECLA=" Esc=Retornar  "

  MSGCAMPO=Field()
  MSGCAMPO=MSGCAMPO+", [F1]Consultar T¡tulos"

  Prompt TECLA
  
  Wait Field
       Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35"

  Switch
  Case RetVal="F1":  
       If Field()="Codigo da Empresa" Or
          Field()="Codigo do Documento"
          Then vrcampo=Field()
               Moveto [Numero do Lancamento]
               If ConsultaF1()
                  Then Moveto "\\Sistemas\\Ctarec\\Duplic"
                       Moveto [Numero do Lancamento]
                       Locate Reg_ConsultaF1["Numero do Lancamento"]
                       If Retval
                          Then CopyToArray Reg_ConsultaF1
                               Moveto "AltTitI"
                               Del
                               CHECATITULO()
                               Return
                       EndIf 
                       Moveto "AltTitI"         
                       Moveto Field vrcampo
                  Else Moveto [Codigo da Empresa]
               EndIf
       EndIf         
    Case Retval="FIELDVIEW" or Retval="F35":
         EDITFIELD()
    Case Retval="ESC":                        
         Switch
           Case Field()="Codigo da Empresa":
                If CHAVEI=1
                   Then Del
                EndIf
                QuitLoop
           OtherWise: Left
         EndSwitch
    Case Retval="ENTER":
         If IsBlank([]) Then Loop EndIf

         Switch
           Case Field() = "Numero do Documento":
                EMPRESA =[Codigo da Empresa  ]
                TPDOCTO =[Codigo do Documento]
                NUMDOCTO=[Numero do Documento]
                Del

                dpjaexiste=False
                Moveto [Numero do Documento]
                Locate NUMDOCTO
                If RetVal
                   Then While True
                          If [Codigo da Empresa  ]=EMPRESA And
                             [Codigo do Documento]=TPDOCTO
                             Then dpjaexiste=True
                                  Echo Normal
                                  Echo Off 
                                  Mensagem("T¡tulo j  existe nesta rela‡Æo !")
                                  Return
                          EndIf
                          Skip
                          If EOT() Then QuitLoop EndIf
                          Locate Next NUMDOCTO
                          If Not RetVal
                             Then QuitLoop
                          EndIf           
                        EndWhile
                EndIf

                Moveto [Numero do Item]
                End Down        
                [Numero do Lote     ]=NLOTE
                [Numero do Item     ]=NITEM
                [Codigo da Empresa  ]=EMPRESA 
                [Codigo do Documento]=TPDOCTO 
                [Numero do Documento]=NUMDOCTO
                UnLockRecord
                Locate NLOTE,NITEM

                Moveto "Duplic"
                Moveto [Codigo da Empresa]
                Locate IndexOrder by "IndDup1" EMPRESA,TPDOCTO,NUMDOCTO
                If RetVal
                  Then If [Saldo do Documento]<=0
                          Then
                               Moveto "AltTitI"
                               MENSAGEM("Titulo j  foi baixado !")
                               Moveto [Numero do Documento]
                               Loop
                          Else
                               if [Codigo da Conta   ]=[AltTitC->Codigo da Conta   ] and
                                  [Tipo do Lancamento]=[AltTitC->Tipo do Lancamento] and
                                  [Codigo do Cobrador]=[AltTitC->Codigo do Cobrador] 
                                  then
                                       Moveto "AltTitI"
                                       MENSAGEM("Titulo j  esta na Conta e Carteira desejada !")
                                       Moveto [Numero do Documento]
                                       Loop
                               endif   
                          
                               Moveto "AltTitI"
                               [Numero do Lancamento]=[Duplic->Numero do Lancamento]
                               [Codigo da Conta     ]=[Duplic->Codigo da Conta     ]
                               [Codigo da Empresa   ]=[Duplic->Codigo da Empresa   ]
                               
                               titok=true
                               
                               if [AltTitC->Tipo da Conta]="C"
                                  then getrecord "\\sistemas\\cadastro\\destinat" [Duplic->Codigo do Destinatario] to regdestinat
                                       if retval
                                          then if regdestinat["Situacao do Cliente"]="REGULAR" or
                                                  regdestinat["Situacao do Cliente"]="PESSIMO"   
                                                  then
                                                       msg=" // Situa‡„o deste Cliente, Status="+regdestinat["Situacao do Cliente"]+"// //"
                                                       msg=msg+regdestinat["Codigo"]+" - "+regdestinat["Razao Social"]+"//"
                                                       msg=msg+"Deseja incluir este t¡tulo do cliente ?"
                                                       titok=ConfGeral(msg)
                                               endif
                                       endif
                               endif        
                               
                               if not titok
                                  then del
                                       quitloop
                               endif
                                       
                               Moveto "Duplic"
                               While True
                                 If Not IsLockRecord()
                                    Then
                                         [Codigo da Conta        ]=[AltTitC->Codigo da Conta        ]
                                         [Codigo da Empresa      ]=[AltTitC->Codigo da Empresa      ]
                                         [Tipo do Lancamento     ]=[AltTitC->Tipo do Lancamento     ]
                                                                                  If Not IsBlank([AltTitC->Multa])
                                            Then [Multa          ]=[AltTitC->Multa                  ]
                                         EndIf                                               
                                         If Not IsBlank([AltTitC->Tipo Taxa de Juros])
                                            Then [Multa              ]=[AltTitC->Multa                  ]
                                                 [Taxa de Juros      ]=[AltTitC->Taxa de Juros          ]
                                                 [Valor de Juros     ]=[AltTitC->Valor de Juros         ]
                                                 [Tipo Taxa de Juros ]=[AltTitC->Tipo Taxa de Juros     ]
                                                 [NDias Taxa de Juros]=[AltTitC->NDias Taxa de Juros    ]
                                         EndIf        
                                         If Not IsBlank([AltTitC->Codigo Plano_Conta])
                                            Then [Codigo Plano_Conta     ]=[AltTitC->Codigo Plano_Conta     ]
                                         EndIf
                                         If Not IsBlank([AltTitC->Codigo CCusto])
                                            Then [Codigo CCusto          ]=[AltTitC->Codigo CCusto          ]
                                         EndIf
                                         If Not IsBlank([AltTitC->Codigo do Cobrador])
                                            Then [Codigo do Cobrador     ]=[AltTitC->Codigo do Cobrador     ]
                                         EndIf
                                         UnLockRecord

                                         QuitLoop
                                 EndIf
                               EndWhile
                       EndIf
                  Else Moveto "AltTitI"
                       MENSAGEM("Titulo n„o encontrado !")
                       Moveto [Numero do Documento]
                       Loop
               EndIf
               Moveto "AltTitI"
               [Data da Operacao    ]=[AltTitC->Data da Operacao]
               UnLockRecord
               QuitLoop
           OtherWise: Right
         EndSwitch
  EndSwitch
EndWhile                 
EndProc  ; (DIGITAI)

;*******************************************************************************
;* Imprime Duplicata Avulsa                                                    *
;*******************************************************************************
Proc Imprime_Duplicata_Avulsa()
Private TabAnt,AUX_CODIGO,AUX_EMPRESA,AUX_NUMERO,AUX_SERIE,AUX_NLANCTO

TabAnt = Table()
Do_It!

Copia_Imagem()
           
AUX_EMPRES  = "***"            
AUX_CODIGO  = "***"
AUX_EMPRESA = "***"
AUX_NUMERO  = "***"
AUX_SERIE   = "***"
AUX_NLANCTO = "***"
PULA_PAGINA = False
PAGINA      = 1 

Moveto "AltTiti"
Moveto[Numero do Item]  NR =ImageCCount()
Home
Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, imprimindo rela‡„o de duplicatas "+BARRA_STRING)

  DOCTO_LOTE    = [Numero do Lote]
  DOCLTO_ITEM   = [Numero do Item]

  ;---- Dados Principais -----------------------------------------------
  GetRecord "\\Sistemas\\Ctarec\\AltTiti" DOCTO_LOTE,DOCLTO_ITEM To REG_DOCTO
  DOCTO_CODIGO  = REG_DOCTO["Codigo do Destinatario"]
  DOCTO_NOME    = REG_DOCTO["Nome Fantasia EmitDest"]
  DOCTO_RAZSOC  = REG_DOCTO["Razao Social"]
  
  DOCTO_EMP     = REG_DOCTO["Codigo da Empresa"]
  DOCTO_NOMEMP  = REG_DOCTO["Nome Fantasia Empresa"] 
  
  DOCTO_SALDO   = REG_DOCTO["Saldo do Documento"]
  DOCTO_VENCTO  = REG_DOCTO["Data de Vencimento"]
  DOCTO_NUM_SEQ = REG_DOCTO["Numero do Documento"]
  DOCTO_LANCTO  = REG_DOCTO["Numero do Lancamento"]
  
  ;---- Valor por Extenso ----------------------------------------------
  ESCEXT(DOCTO_SALDO)

  ;---- Informa‡äes da Empresa -o Cliente -----------------------------------------
  If AUX_EMPRES <> DOCTO_EMP
     Then AUX_EMPRES = DOCTO_EMP
          GetRecord "\\Sistemas\\Cadastro\\Empresas" DOCTO_EMP To REG_EMPRESA
          If RetVal
             Then EMPRESA_RAZ = REG_EMPRESA["Razao Social Empresa"]
                  EMPRESA_FAN = REG_EMPRESA["Nome Fantasia Empresa"]
                  EMPRESA_END = REG_EMPRESA["Endereco Empresa"]
                  EMPRESA_BAI = REG_EMPRESA["Bairro Empresa"]
                  EMPRESA_CEP = REG_EMPRESA["CEP Empresa"]
                  EMPRESA_EST = REG_EMPRESA["UF Empresa"]
                  EMPRESA_CID = REG_EMPRESA["Cidade Empresa"]
                  EMPRESA_CGC = REG_EMPRESA["CGC Empresa"]
                  EMPRESA_IE  = REG_EMPRESA["IE Empresa"]       
             Else EMPRESA_RAZ = ""
                  EMPRESA_FAN = ""
                  EMPRESA_END = ""               
                  EMPRESA_BAI = ""
                  EMPRESA_CEP = ""
                  EMPRESA_EST = ""
                  EMPRESA_CID = ""
                  EMPRESA_CGC = ""
                  EMPRESA_IE  = "" 
          EndIf      
  EndIf   
         
  ;---- Informa‡äes do Cliente -----------------------------------------
  If AUX_CODIGO <> DOCTO_CODIGO
     Then AUX_CODIGO = DOCTO_CODIGO
          GetRecord "\\Sistemas\\Cadastro\\Destinat" DOCTO_CODIGO To REG_CLIENTE 
          If RetVal     
             Then DOCTO_END = REG_CLIENTE["Endereco"]
                  DOCTO_CEP = REG_CLIENTE["CEP"]
                  DOCTO_CID = REG_CLIENTE["Cidade"]
                  DOCTO_BAI = REG_CLIENTE["Bairro"]
                  DOCTO_EST = REG_CLIENTE["UF"]
                  DOCTO_INS = REG_CLIENTE["IE"]
                  DOCTO_CPF = REG_CLIENTE["CGC"]
             Else DOCTO_END = ""
                  DOCTO_CEP = ""
                  DOCTO_CID = ""
                  DOCTO_BAI = ""
                  DOCTO_EST = ""
                  DOCTO_INS = ""
                  DOCTO_CPF = ""
          EndIf    
          Release Vars REG_CLIENTE
  EndIf   

  ;---- Dados da Duplicata ---------------------------------------------
  If AUX_NLANCTO <> DOCTO_LANCTO
     Then AUX_NLANCTO = DOCTO_LANCTO
          GetRecord "\\Sistemas\\CtaRec\\Duplic" DOCTO_LANCTO To REG_CTAREC
          If RetVal     
             Then DOCTO_EMPRESA   = REG_CTAREC["Codigo da Empresa"]
                  DOCTO_NUMERO    = REG_CTAREC["Numero Docto Gerador"]
                  DOCTO_SERIE     = REG_CTAREC["Serie do Documento"]
                  DOCTO_TIPO      = REG_CTAREC["Tipo Docto Gerador"]
                  DOCTO_SG        = REG_CTAREC["Sistema Gerador"]
                  DOCTO_DTEMISSAO = REG_CTAREC["Data de Emissao"]
             Else DOCTO_EMPRESA   = ""
                  DOCTO_NUMERO    = ""
                  DOCTO_SERIE     = ""
                  DOCTO_TIPO      = ""
                  DOCTO_SG        = ""
                  DOCTO_DTEMISSAO = ""
          EndIf
          Release Vars REG_CTAREC
  EndIf
  
  ;---- Valor da Nota Fiscal -------------------------------------------
  AUX_EMPRESA = DOCTO_EMPRESA
  AUX_NUMERO  = DOCTO_NUMERO 
  AUX_SERIE   = DOCTO_SERIE
  
  GetRecord "\\Sistemas\\Vendas\\Notac" DOCTO_EMPRESA,DOCTO_NUMERO,DOCTO_SERIE To REG_NOTA
  If RetVal     
     Then DOCTO_VR_NF = REG_NOTA["Valor Nota Fiscal"]
     Else DOCTO_VR_NF = ""
  EndIf
  Release Vars REG_NOTA
  
  Switch
    Case SYS_CODIGO_CLIENTE = "0263" : Imprimir_DP_Avulsa_Modelo2()
    Case SYS_CODIGO_CLIENTE = "0110" : Imprimir_DP_Avulsa_Modelo3()
    OtherWise                        : Imprimir_DP_Avulsa()
  EndSwitch  
EndScan

ImpriArq(ARQIMP)
Deleta_Arquivo(ARQIMP)
Moveto "AltTitC"
CoeditKey

Moveto TabAnt

Release Vars DOCTO_CODIGO, DOCTO_NOME, DOCTO_RAZSOC, DOCTO_EMP, DOCTO_NOMEMP,  
             DOCTO_SALDO, DOCTO_VENCTO, DOCTO_NUM_SEQ, DOCTO_LANCTO,
             DOCTO_END, DOCTO_CEP, DOCTO_CID, DOCTO_BAI, DOCTO_EST, DOCTO_INS, DOCTO_CPF,
             DOCTO_EMPRESA, DOCTO_NUMERO, DOCTO_SERIE, DOCTO_TIPO, DOCTO_SG,DOCTO_VR_NF,
             AUX_CODIGO,AUX_EMPRESA,AUX_NUMERO,AUX_SERIE,AUX_NLANCTO,IMAGEM_FUNDO,  
             EMPRESA_RAZ,EMPRESA_FAN,EMPRESA_END,EMPRESA_BAI,EMPRESA_CEP,EMPRESA_EST,
             EMPRESA_CID,EMPRESA_CGC,DOCTO_DTEMISSAO,
             REG_EMPRESA,REG_NOTA,REG_CLIENTE,REG_CTAREC,REG_DOCTO             
                       
EndProc ;Imprime_Duplicata_Avulsa()

;*******************************************************************************
;* Checagem de Titulos                                                         *
;*******************************************************************************
Proc Imprimir_DP_Avulsa()
Private ii,CONTADOR

If PARAM_REPETE_DUPFOLHA
   Then CONTADOR = 2 
   Else CONTADOR = 1 
EnDIf   

If PULA_PAGINA = True
   Then Print File ARQIMP "\f"
EnDIf

For ii From 1 To CONTADOR  
  Print File ARQIMP Chr(27)+Chr(77) + "\n"   

  Print File ARQIMP Spaces(43) + Format("W23",EMPRESA_RAZ)
  Print File ARQIMP Spaces(04) + Format("W23",EMPRESA_END) + "\n"
  Print File ARQIMP Spaces(43) + Format("W18",EMPRESA_CGC)
  Print File ARQIMP Spaces(09) + Format("W23",EMPRESA_BAI) + "\n"
  Print File ARQIMP Spaces(70) + Format("W10",EMPRESA_CEP) + "\n"
  Print File ARQIMP Spaces(70) + Rtrim(Format("W20",EMPRESA_CID))+"/"+Rtrim(EMPRESA_EST)
                                                        
  Print File ARQIMP Chr(27)+Chr(77) + "\n\n\n\n\n"
  Print File ARQIMP Spaces(18) + Format("W6",DOCTO_NUMERO)
  Print File ARQIMP Spaces(08) + Format("W12.2,EIC",DOCTO_VR_NF)
  Print File ARQIMP Spaces(05) + Format("W12.2,EIC",DOCTO_SALDO) 
  Print File ARQIMP Spaces(07) + Format("W9",DOCTO_NUM_SEQ)
  Print File ARQIMP Spaces(07) + Format("D13",DOCTO_VENCTO) 
  Print File ARQIMP "\n\n\n"
  
  Print File ARQIMP Spaces(32) + Format("W30",DOCTO_RAZSOC)  + "\n"
  Print File ARQIMP Spaces(32) + Format("W30",DOCTO_END)     + "\n"
  Print File ARQIMP Spaces(32) + DOCTO_CEP                   + "\n"
  Print File ARQIMP Spaces(32) + Format("W20",DOCTO_CID)     
  Print File ARQIMP Spaces(25) + Format("W2",DOCTO_EST)      + "\n"
  
  If SYS_CODIGO_CLIENTE="0144"
   Then ;----- Data de EmissÆo -------------------------------------------- 
        Print File ARQIMP Spaces(32) + Format("D13",DOCTO_DTEMISSAO)+ "\n"
   Else Print File ARQIMP "\n"
  EndIf
  
  Print File ARQIMP Spaces(32) + Format("W18",DOCTO_CPF)
  Print File ARQIMP Spaces(33) + Format("W18",DOCTO_INS)     + "\n\n\n\n"
  Print File ARQIMP Spaces(31) + Format("W64",EXTENSO)       + "\n\n\n"
  Print File ARQIMP Spaces(14) + Format("W30",DOCTO_NOMEMP)
  
  If ii=1 And PARAM_REPETE_DUPFOLHA
     Then Print File ARQIMP "\n\n\n\n\n\n\n\n"
  EndIf  
EndFor  

If PARAM_DUAS_VIAS
   Then If PAGINA = 1
            Then PAGINA      = 2
                 PULA_PAGINA = False
                 Print File ARQIMP "\n\n\n\n\n\n\n\n" 
            Else PAGINA      = 1
                 PULA_PAGINA = True 
        EndIf    
   Else PULA_PAGINA = True     
EndIf
                                   
EndProc ;Imprimir_DP_Avulsa()

;*******************************************************************************
;* Checagem de Titulos                                                         *
;*******************************************************************************
Proc Imprimir_DP_Avulsa_Modelo2()

If PULA_PAGINA = True
   Then Print File ARQIMP "\f"
EnDIf

Print File ARQIMP Chr(27)+Chr(77) + "\n"   

Print File ARQIMP Spaces(43) + Format("W23",EMPRESA_RAZ)
Print File ARQIMP Spaces(04) + Format("W23",EMPRESA_END) + "\n"
Print File ARQIMP Spaces(43) + Format("W18",EMPRESA_CGC)
Print File ARQIMP Spaces(09) + Format("W23",EMPRESA_BAI) + "\n"
Print File ARQIMP Spaces(70) + Format("W10",EMPRESA_CEP) + "\n"
Print File ARQIMP Spaces(70) + Rtrim(Format("W20",EMPRESA_CID))+"/"+Rtrim(EMPRESA_EST)
                                                        
Print File ARQIMP Chr(27)+Chr(77) + "\n\n\n\n\n"
Print File ARQIMP Spaces(18) + Format("W6",DOCTO_NUMERO)
Print File ARQIMP Spaces(08) + Format("W12.2,EIC",DOCTO_VR_NF)
Print File ARQIMP Spaces(05) + Format("W12.2,EIC",DOCTO_SALDO) 
Print File ARQIMP Spaces(07) + Format("W9",DOCTO_NUM_SEQ)
Print File ARQIMP Spaces(07) + Format("D13",DOCTO_VENCTO) 
Print File ARQIMP "\n\n\n"

Print File ARQIMP Spaces(32) + Format("W30",DOCTO_RAZSOC)  + "\n"
Print File ARQIMP Spaces(32) + Format("W30",DOCTO_END)     
Print File ARQIMP Spaces(12) + DOCTO_CEP                   + "\n"
Print File ARQIMP Spaces(32) + DOCTO_BAI                   + "\n"
Print File ARQIMP Spaces(32) + Format("W20",DOCTO_CID)     
Print File ARQIMP Spaces(25) + Format("W2",DOCTO_EST)      + "\n\n"
Print File ARQIMP Spaces(32) + Format("W18",DOCTO_CPF)
Print File ARQIMP Spaces(33) + Format("W18",DOCTO_INS)     + "\n\n\n\n"       

Print File ARQIMP Spaces(31) + Format("W64",EXTENSO)       + "\n\n\n"

Print File ARQIMP Spaces(14) + Format("W30",DOCTO_NOMEMP) 

PULA_PAGINA = True
                                   
EndProc ;Imprimir_DP_Avulsa_Modelo2()

;*******************************************************************************
;* Checagem de Titulos                                                         *
;*******************************************************************************
Proc Imprimir_DP_Avulsa_Modelo3()

If PULA_PAGINA = True
   Then Print File ARQIMP "\f"
EnDIf 

Print File ARQIMP Chr(27)+Chr(77) 

Print File ARQIMP Spaces(25) + Format("W50",EMPRESA_RAZ) + "\n"
Print File ARQIMP Spaces(66) + Format("W18",EMPRESA_CGC) + "\n"

Print File ARQIMP Spaces(25) + Format("W40",EMPRESA_END) + "\n"
Print File ARQIMP Spaces(25) + Format("W41",EMPRESA_BAI)
Print File ARQIMP Format("W18",EMPRESA_IE) + Spaces(2) + StrVal(DOCTO_DTEMISSAO) + "\n"
Print File ARQIMP Spaces(25) + Rtrim(Format("W20",EMPRESA_CID))+"/"+Rtrim(EMPRESA_EST) + Spaces(5) + Rtrim(EMPRESA_CEP)   
                                                                                
Print File ARQIMP Chr(27)+Chr(77) + "\n\n\n\n\n"

Print File ARQIMP Spaces(18) + Format("W6",DOCTO_NUMERO)
Print File ARQIMP Spaces(08) + Format("W12.2,EIC",DOCTO_VR_NF)
Print File ARQIMP Spaces(05) + Format("W12.2,EIC",DOCTO_SALDO) 
Print File ARQIMP Spaces(07) + Format("W9",DOCTO_NUM_SEQ)
Print File ARQIMP Spaces(07) + Format("D13",DOCTO_VENCTO) 
Print File ARQIMP "\n\n\n"

Print File ARQIMP Spaces(32) + Format("W30",DOCTO_RAZSOC)  + "\n"
Print File ARQIMP Spaces(32) + Format("W30",DOCTO_END)     + "\n"
Print File ARQIMP Spaces(32) + DOCTO_CEP                   + "\n"
Print File ARQIMP Spaces(32) + Format("W20",DOCTO_CID)     
Print File ARQIMP Spaces(25) + Format("W2",DOCTO_EST)      + "\n"
Print File ARQIMP "\n"

Print File ARQIMP Spaces(32) + Format("W18",DOCTO_CPF)
Print File ARQIMP Spaces(33) + Format("W18",DOCTO_INS)     + "\n\n\n\n"       

Print File ARQIMP Spaces(31) + Format("W64",EXTENSO)       + "\n\n\n"

Print File ARQIMP Spaces(12) + Format("W32",Rtrim(EMPRESA_RAZ)) 

PULA_PAGINA = True
                                   
EndProc ;Imprimir_DP_Avulsa_Modelo3()

;*******************************************************************************
;* Copia Imagem para Raiz                                                      *
;*******************************************************************************
Proc Copia_Imagem()
Private VSDGDRIVE,VSDGPASTA

VSDGDRIVE = SubStr(Directory(),1,2)
VSDGPASTA = "\\Sistemas\\IMAGENS\\IMG_FUN\\"

Switch
  Case SYS_CODIGO_CLIENTE="0110" : IMAGEM_FUNDO = "dpAv0110"
  Case SYS_CODIGO_CLIENTE="0263" : IMAGEM_FUNDO = "dpAv0263"
  Case SYS_CODIGO_CLIENTE="0318" : IMAGEM_FUNDO = "dpAv0318"
  Case SYS_CODIGO_CLIENTE="0343" : IMAGEM_FUNDO = "dpAv0343"
  Case SYS_CODIGO_CLIENTE="0296" : IMAGEM_FUNDO = "dpAv0296"
  Case SYS_CODIGO_CLIENTE="0361" : IMAGEM_FUNDO = "dpAv0361"
  Case SYS_CODIGO_CLIENTE="0185" : IMAGEM_FUNDO = "dpAv0185"
  Case SYS_CODIGO_CLIENTE="0357" : IMAGEM_FUNDO = "dpAv0357"
  Case SYS_CODIGO_CLIENTE="0359" : IMAGEM_FUNDO = "dpAv0359"
  Case SYS_CODIGO_CLIENTE="0144" : IMAGEM_FUNDO = "dpAv0144"
  Case SYS_CODIGO_CLIENTE="0237" : IMAGEM_FUNDO = "dpAv0237"
  Case SYS_CODIGO_CLIENTE="0397" : IMAGEM_FUNDO = "dpAv0397"
  Case SYS_CODIGO_CLIENTE="0419" : IMAGEM_FUNDO = "dpAv0419"         
  OtherWise                      : If PARAM_REPETE_DUPFOLHA Or PARAM_DUAS_VIAS
                                      Then IMAGEM_FUNDO = "dup_Av2x"
                                      Else IMAGEM_FUNDO = "dup_Av"
                                   EndIf
EndSwitch

If IsFile(VSDGDRIVE+VSDGPASTA+IMAGEM_FUNDO+".JPG")
   Then Copia_Arquivo(VSDGDRIVE+VSDGPASTA+IMAGEM_FUNDO+".JPG c:\\vise\\"+IMAGEM_FUNDO+".JPG")
EndIf    

EndProc ;Copia_Imagem()

;*******************************************************************************
;* Checagem de Titulos                                                         *
;*******************************************************************************
Proc CHECATITULO()

Moveto "AltTitI"
NUMDOCTO=Reg_ConsultaF1["Numero do Documento"]

dpjaexiste=False
Moveto [Numero do Documento]
Locate NUMDOCTO
If RetVal                                  
Then While True
          If [Codigo da Empresa  ]=Reg_ConsultaF1["Codigo da Empresa"]   And
             [Codigo do Documento]=Reg_ConsultaF1["Codigo do Documento"]
             Then dpjaexiste=True
                  Echo Normal
                  Echo Off 
                  Mensagem("T¡tulo j  existe nesta rela‡Æo !")
                  Return False  
          EndIf
          Skip
          If EOT() Then QuitLoop EndIf
          Locate Next NUMDOCTO
          If Not RetVal
             Then QuitLoop
          EndIf           
        EndWhile
EndIf
End Down
Moveto [Numero do Item]
[Numero do Lote         ]=NLOTE
[Numero do Item         ]=NITEM
[Codigo do Documento    ]=Reg_ConsultaF1["Codigo do Documento"]
[Tipo do Documento      ]=Reg_ConsultaF1["Tipo do Documento"]
[Serie do Documento     ]=Reg_ConsultaF1["Serie do Documento"]
[Numero do Documento    ]=Reg_ConsultaF1["Numero do Documento"]
[Numero do Lancamento   ]=Reg_ConsultaF1["Numero do Lancamento"]
[Tipo                   ]=Reg_ConsultaF1["Tipo"]
[Codigo do Destinatario ]=Reg_ConsultaF1["Codigo do Destinatario"]
[Nome Fantasia EmitDest ]=Reg_ConsultaF1["Nome Fantasia EmitDest"]  
[Razao Social           ]=Reg_ConsultaF1["Razao Social"]
[Saldo do Documento     ]=Reg_ConsultaF1["Saldo do Documento"]
[Data de Vencimento     ]=Reg_ConsultaF1["Data de Vencimento"]
[Codigo da Conta        ]=Reg_ConsultaF1["Codigo da Conta"]
[Descricao da Conta     ]=Reg_ConsultaF1["Descricao da Conta"]
[Codigo da Empresa      ]=Reg_ConsultaF1["Codigo da Empresa"]
[Nome Fantasia Empresa  ]=Reg_ConsultaF1["Nome Fantasia Empresa"]                               
[Data da Operacao       ]=Today()
[Tipo do Lancamento     ]=Reg_ConsultaF1["Tipo do Lancamento"]
[Descricao do Lancamento]=Reg_ConsultaF1["Descricao do Lancamento"]
[Multa                  ]=Reg_ConsultaF1["Multa"]
[Taxa de Juros          ]=Reg_ConsultaF1["Taxa de Juros"]
[Valor de Juros         ]=Reg_ConsultaF1["Valor de Juros"]
[Tipo Taxa de Juros     ]=Reg_ConsultaF1["Tipo Taxa de Juros"]
[NDias Taxa de Juros    ]=Reg_ConsultaF1["NDias Taxa de Juros"]
[Documento no Banco     ]=Reg_ConsultaF1["Documento no Banco"]
UnLockRecord

Moveto "Duplic"
While True
 If Not IsLockRecord()
    Then
         [Codigo da Conta        ]=[AltTitC->Codigo da Conta        ]
         [Codigo da Empresa      ]=[AltTitC->Codigo da Empresa      ]
         [Tipo do Lancamento     ]=[AltTitC->Tipo do Lancamento     ]
         If Not IsBlank([AltTitC->Multa])
            Then [Multa          ]=[AltTitC->Multa                  ]
         EndIf                                               
         If Not IsBlank([AltTitC->Tipo Taxa de Juros])
            Then [Multa              ]=[AltTitC->Multa                  ]
                 [Taxa de Juros      ]=[AltTitC->Taxa de Juros          ]
                 [Valor de Juros     ]=[AltTitC->Valor de Juros         ]
                 [Tipo Taxa de Juros ]=[AltTitC->Tipo Taxa de Juros     ]
                 [NDias Taxa de Juros]=[AltTitC->NDias Taxa de Juros    ]
         EndIf        
         If Not IsBlank([AltTitC->Codigo Plano_Conta])
            Then [Codigo Plano_Conta     ]=[AltTitC->Codigo Plano_Conta     ]
         EndIf
         If Not IsBlank([AltTitC->Codigo CCusto])
            Then [Codigo CCusto          ]=[AltTitC->Codigo CCusto          ]
         EndIf
         If Not IsBlank([AltTitC->Codigo do Cobrador])
            Then [Codigo do Cobrador     ]=[AltTitC->Codigo do Cobrador     ]
         EndIf
         UnLockRecord

         QuitLoop
 EndIf
EndWhile

Moveto "AltTitI"
Return True

EndProc ;CHECATITULO()

;*******************************************************************************
;* Exclusao de Lote                                                            *
;*******************************************************************************
Proc EXCLUSAO()

Aguarde("Processando exclusÆo")

Moveto "AltTitC"

CHAVE=8
VROLD=[Valor da Operacao]
CONTA()

Moveto "AltTitC"
Moveto "AltTitI"
While RecordStatus("New")=False
  EMPRESA =[AltTitC->Codigo da Empresa  ]
  TPDOCTO =[Codigo do Documento]
  NUMDOCTO=[Numero do Documento]

  Moveto "Duplic"
  Moveto [Numero do Lancamento]
  Locate [AltTitI->Numero do Lancamento]
  If RetVal
     Then While True
            If Not IsLockRecord()
               Then
                    [Codigo da Conta        ]=[AltTitI->Codigo da Conta        ]
                    [Codigo da Empresa      ]=[AltTitI->Codigo da Empresa      ]
                    [Multa                  ]=[AltTitI->Multa                  ]
                    [Taxa de Juros          ]=[AltTitI->Taxa de Juros          ]
                    [Valor de Juros         ]=[AltTitI->Valor de Juros         ]
                    [Tipo Taxa de Juros     ]=[AltTitI->Tipo Taxa de Juros     ]
                    [NDias Taxa de Juros    ]=[AltTitI->NDias Taxa de Juros    ]
                    [Tipo do Lancamento     ]=[AltTitI->Tipo do Lancamento     ]
                    [Documento no Banco     ]=[AltTitI->Documento no Banco     ]
                    [Codigo Plano_Conta     ]=[AltTitI->Codigo Plano_Conta     ]
                    [Codigo CCusto          ]=[AltTitI->Codigo CCusto          ]
                    [Codigo do Cobrador     ]=[AltTitI->Codigo do Cobrador     ]
                    UnLockRecord
                    QuitLoop
            EndIf
          EndWhile
  EndIf

  Moveto "AltTitI"
  Del
EndWhile

Moveto "AltTitC"
UnLockRecord
Del

LimpAguarde()
EndProc; (Exclusao)

;*******************************************************************************
;* Gera Saldo de Conta                                                         *
;*******************************************************************************
Proc GERCONT()
End 
Down
[Codigo da Conta]=CONTAREF
[Ano Referencia ]=ANOREF
[Mes Referencia ]=MesREF
[Saldo Inicial  ]=0
[Entradas       ]=0
[Saidas         ]=0
If IsLockRecord()
   Then Del
   Else UnLockRecord
EndIf   

EndProc ; (GERCONT)

;*******************************************************************************
;* Atualizacao Conta Corrente                                                  *
;*******************************************************************************
Proc CONTA()
private ndocto

If [AltTitC->Tipo do Lancamento]<>"A" ;DESCONTADA
   Then Return
EndIf

ndocto=[\Sistemas\CtaRec\AltTitC->Documento no Banco]
if isblank(ndocto)
   then ndocto=strval([\Sistemas\CtaRec\AltTitC->Numero do Lote]) 
endif   

While True

  ANOREF=StrVal(Year([\Sistemas\CtaRec\AltTitC->Data da Operacao]))
  MESREF=AlinhM(StrVal(Month([\Sistemas\CtaRec\AltTitC->Data da Operacao])),2)

  While True
    Moveto "\\Sistemas\\CtaCor\\SaldCont"
    Moveto [Codigo da Conta]
    Locate [\Sistemas\CtaRec\AltTitC->Codigo da Conta],ANOREF,MESREF
    If Not RetVal
       Then ;;If CHAVE<>1
            ;;   Then MENSAGEM("Saldo da Conta n„o Cadastrada")
            ;;        WB=1
            ;;        Moveto "\\Sistemas\\CtaRec\\AltTitC"
            ;;        QuitLoop
            ;;EndIf
            CONTAREF=[\Sistemas\CtaRec\AltTitC->Codigo da Conta]
            GERCONT()
            Loop
    EndIf
    QuitLoop
  EndWhile
  
  Switch
  Case CHAVE=0:
       Moveto "\\Sistemas\\CtaCor\\MovCont"
       Moveto [Numero do Lancamento]
       Locate [\Sistemas\CtaRec\AltTitC->Numero do Lancamento],
              [\Sistemas\CtaRec\AltTitC->Codigo da Conta]
       If Not RetVal
          Then MSG="Movimento de Conta Corrente n„o encontrado !// //"
               MSG=MSG+"Lan‡amento: "+[\Sistemas\CtaRec\AltTitC->Numero do Lancamento]+"/"+
                                      [\Sistemas\CtaRec\AltTitC->Codigo da Conta]
               Mensagem(MSG)
               CHAVE=1
               Loop
          Else WB=0
               [Valor                 ]=[\Sistemas\CtaRec\AltTitC->Valor da Operacao       ]
               [Valor do Desconto     ]=BlankNum()
               [Valor do Juros        ]=[\Sistemas\CtaRec\AltTitC->Despesas                ]
               [Codigo do Documento   ]="BORD"
               [Numero do Documento   ]=ndocto
               [Codigo do EmitDest    ]=""
               [Descricao do Historico]="VR. REF. DUPL. DESC. BORDERO "+[Numero do Documento]
               [Sistema Gerador       ]="AC"
               [Empresa Gerador       ]=[\Sistemas\CtaRec\AltTitC->Codigo da Empresa   ]
               [Lancamento Gerador    ]=strval([\Sistemas\CtaRec\AltTitC->Numero do Lote])
               [Sequencia Gerador     ]=""
               Controle_Dia()

               If Not IsBlank([AltTitC->Codigo Plano_Conta])
                  Then [Codigo Plano_Conta    ]=[AltTitC->Codigo Plano_Conta     ]
               EndIf
               If Not IsBlank([AltTitC->Codigo CCusto])
                  Then [Codigo CCusto         ]=[AltTitC->Codigo CCusto          ]
               EndIf
               [Codigo do Historico   ]=""
               UnLockRecord

               While True               
                 Moveto "\\Sistemas\\CtaCor\\SaldCont"
                 If IsLockRecord()
                    Then Loop
                 EndIf   
                 [Entradas]=[Entradas]-VROLD+
                            [\Sistemas\CtaRec\AltTitC->Valor da Operacao]
                 UnLockRecord
                 QuitLoop
               Endwhile

               Moveto "\\Sistemas\\CtaRec\\AltTitC"
               [Numero do Lancamento]=[\Sistemas\CtaCor\MovCont->Numero do Lancamento]
               UnLockRecord
       EndIf
  Case CHAVE=1:
       WB=0
       Moveto "\\Sistemas\\CtaCor\\MovCont"
       While True
         End
         Moveto [Numero do Lancamento]
         If Numero_Lancamento("Interno","Locked_Down")
            Then NLANCMC = PROXLANCTO_NLANC
                 Release Vars PROXLANCTO_NLANC
                 quitloop
         EndIf    
       EndWhile
       
       [Codigo da Conta       ]=[\Sistemas\CtaRec\AltTitC->Codigo da Conta  ]
       [Codigo da Empresa     ]=[\Sistemas\CtaRec\AltTitC->Codigo da Empresa]
       [Tipo de Operacao      ]="07"
       [Tipo do Lancamento    ]="L"
       [Data                  ]=[\Sistemas\CtaRec\AltTitC->Data da Operacao ]
       [Data Competencia      ]=[\Sistemas\CtaRec\AltTitC->Data da Operacao ]
       [Valor                 ]=[\Sistemas\CtaRec\AltTitC->Valor da Operacao]
       [Valor do Desconto     ]=BlankNum()
       [Valor do Juros        ]=[\Sistemas\CtaRec\AltTitC->Despesas         ]
       [Codigo do Documento   ]="BORD"
       [Numero do Documento   ]=ndocto
       [Codigo do EmitDest    ]=""
       [Descricao do Historico]="VR. REF. DUPL. DESC. BORDERO "+[Numero do Documento]
       [Sistema Gerador       ]="AC"
       [Empresa Gerador       ]=[\Sistemas\CtaRec\AltTitC->Codigo da Empresa   ]
       [Lancamento Gerador    ]=strval([\Sistemas\CtaRec\AltTitC->Numero do Lote])
       [Sequencia Gerador     ]=""
       Controle_Dia()

       If Not IsBlank([AltTitC->Codigo Plano_Conta])
          Then [Codigo Plano_Conta    ]=[AltTitC->Codigo Plano_Conta     ]
       EndIf
       If Not IsBlank([AltTitC->Codigo CCusto])
          Then [Codigo CCusto         ]=[AltTitC->Codigo CCusto          ]
       EndIf
       [Codigo do Historico   ]=""
       UnLockRecord

       While True               
         Moveto "\\Sistemas\\CtaCor\\SaldCont"
         If IsLockRecord()
            Then Loop
         EndIf   
         [Entradas]=[Entradas]+[\Sistemas\CtaRec\AltTitC->Valor da Operacao]
         UnLockRecord
         QuitLoop
       Endwhile

       Moveto "\\Sistemas\\CtaRec\\AltTitC"
       [Numero do Lancamento]=[\Sistemas\CtaCor\MovCont->Numero do Lancamento]
       UnLockRecord
  Case CHAVE=8:
       Moveto "\\Sistemas\\CtaCor\\MovCont"
       Moveto [Numero do Lancamento]
       Locate [\Sistemas\CtaRec\AltTitC->Numero do Lancamento],
              [\Sistemas\CtaRec\AltTitC->Codigo da Conta]
       If Not RetVal
          Then MENSAGEM("Movimento Conta Corrente N„o Existe")
               WB=1
               Moveto "\\Sistemas\\CtaRec\\AltTitC"
               QuitLoop
          Else WB=0
               Del

               While True               
                 Moveto "\\Sistemas\\CtaCor\\SaldCont"
                 If IsLockRecord()
                    Then Loop
                 EndIf   
                 [Entradas]=[Entradas]-VROLD
                 UnLockRecord
                 QuitLoop
               Endwhile

               Moveto "\\Sistemas\\CtaRec\\AltTitC"
       EndIf
  EndSwitch
  QuitLoop
EndWhile
EndProc ; (CONTA)                       

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp = True
TECLA    =""
MSG_CAMPO=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] = -60 Or 
          Evento["KeyCode"] = "F2" : ListaRegra_F2()     
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_NLACRC"        : Campo="NO"
            Case Campo="TG_CONTA"         : Campo="TG_NLACRC"
            Case Campo="TG_DESTINAT"      : Campo="TG_CONTA"
            Case Campo="TG_OPDTEMISVENC"  : Campo="TG_DESTINAT"
            Case Campo="TG_DTINI"         : Campo="TG_OPDTEMISVENC"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_SITUACAOCLIENTE": Campo="TG_DTFIM"
            Case Campo="TG_TPDOCTO"       : Campo="TG_SITUACAOCLIENTE"
            Case Campo="TG_TPCART"        : Campo="TG_TPDOCTO"
            Case Campo="TG_TPPAGTO"       : Campo="TG_TPCART"
            Case Campo="TG_COBRADOR"      : Campo="TG_TPPAGTO"
            Case Campo="TG_DESPCARTAO"    : Campo="TG_COBRADOR"
            Case Campo="YES" Or Campo="NO": Campo="TG_NLACRC"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
              
                    Case Campo="TG_NLACRC"     :
                    
                         If Numval(VSDGNLACRC)=0 Or IsBlank(VSDGNLACRC)
                            Then Campo="TG_CONTA"
                            Else VSDGCONTA      =""
                                 VSDGNOMCONTA   =""
                                 VSDGDESTINAT   =""
                                 VSDGNOMDEST    =""
                                 VSDGCOBRADOR   =""
                                 VSDGNOMCOBRADOR=""
                                 VSDGTPPAGTO    =""
                                 VSDGNOMTPPAGTO =""
                                 VSDGTPCART     =""
                                 VSDGNOMCART    =""
                                 VSDGDTFIM      =BlankDate()
                                 VSDGDTINI      =BlankDate()
                                 VSDGOPDTEMISVENC   =""
                                 VSDGNOMOPDTEMISVENC=""
                                 VSDGSITUACAOCLIENTE= ""
                                 Campo="YES"
                         EndIf   
                    
                    Case Campo="TG_CONTA"      : Campo="TG_DESTINAT"
                    Case Campo="TG_DESTINAT"   : Campo="TG_OPDTEMISVENC"
                    Case Campo="TG_OPDTEMISVENC" : Campo="TG_DTINI"
                    Case Campo="TG_DTINI"      : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"      : Campo="TG_SITUACAOCLIENTE"
                    Case Campo="TG_SITUACAOCLIENTE" : Campo="TG_TPDOCTO"
                    Case Campo="TG_TPDOCTO"    : Campo="TG_TPCART"
                    Case Campo="TG_TPCART"     : Campo="TG_TPPAGTO"
                    Case Campo="TG_TPPAGTO"    : Campo="TG_COBRADOR" 
                    Case Campo="TG_COBRADOR"   : Campo="TG_DESPCARTAO"
                    Case Campo="TG_DESPCARTAO" : Campo="YES"
                    
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="":
       MSG_CAMPO=""
  Case Campo="TG_DESPCARTAO" :
       MensagemCheckBoxes()
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Rotina Selecao                                                              *
;*******************************************************************************
Proc Selecao(tpl,tpc,cdc,ccob)
private tpl,tpc,cdc,ccob,NR

LimpAguarde()

Array TG_DESPCARTAO[1]
TG_DESPCARTAO[1]="Desprezar F.Pagto=Cartäes"

Array CheckTG_DESPCARTAO[ArraySize(TG_DESPCARTAO)]

CheckTG_DESPCARTAO[1]=False

VSDGCONTA      =""
VSDGNOMCONTA   =""
VSDGDESTINAT   =""
VSDGNOMDEST    =""
VSDGCOBRADOR   =""
VSDGNOMCOBRADOR=""
VSDGTPPAGTO    =""
VSDGNOMTPPAGTO =""
VSDGTPDOCTO    =""
VSDGNOMTPDOCTO =""
VSDGTPCART     =""
VSDGNOMCART    =""
VSDGDTFIM      =BlankDate()
VSDGDTINI      =BlankDate()
VSDGNLACRC     =""
VSDGNOMNLACRC  =""      
VSDGSITUACAOCLIENTE = ""
VSDGOPDTEMISVENC = ""        
VSDGNOMOPDTEMISVENC = ""

ListaRegra_Funcao("ListaRegra_TGAtivado","[TG_TPCART],[TG_TPPAGTO],[TG_SITUACAOCLIENTE]")  

While True
  ShowDialog "Sele‡„o de T¡tulos" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC", -60, "F2" 
   @ 05,16   Height 17 Width 72

    Label  @ 00,00 "Lote" For "TG_NLACRC"
    Accept @ 01,01 Width 09 "S"                 Tag "TG_NLACRC" To VSDGNLACRC
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMNLACRC" To VSDGNOMNLACRC

    Label  @ 02,00 "Conta"  For "TG_CONTA"
    Accept @ 03,01 Width 07 "A4"  Picture "#*#" Tag "TG_CONTA" To VSDGCONTA
    Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMCONT" To VSDGNOMCONTA

    Label  @ 04,00 "Pessoa" For "TG_DESTINAT"
    Accept @ 05,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_DESTINAT"  To VSDGDESTINAT
    Accept @ 05,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMCLI" To VSDGNOMDEST
    
    Label  @ 06,00 "Op‡äes de Datas" For "TG_OPDTEMISVENC"
    Accept @ 07,04 Width 04 "A1"  Picture "1,2" Tag "TG_OPDTEMISVENC" To VSDGOPDTEMISVENC
    Accept @ 07,09 Width 25 "A20"  Picture "!*!" Tag "TG_NOMOPDTEMISVENC" To VSDGNOMOPDTEMISVENC

    Label  @ 08,00 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 09,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 09,16 "at‚" For "TG_DTFIM"
    Accept @ 09,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Label  @ 10,00 "Situa‡Æo do Cliente" For "TG_SITUACAOCLIENTE"
    Accept @ 11,01 Width 33 "A30" Picture "!*!" Tag "TG_SITUACAOCLIENTE" To VSDGSITUACAOCLIENTE

    Label  @ 00,35 "Tipo do Documento"  For "TG_TPDOCTO"
    Accept @ 01,36 Width 07 "A4"  Picture "!*!" Tag "TG_TPDOCTO" To VSDGTPDOCTO
    Accept @ 01,44 Width 25 "A20" Picture "!*!" Tag "TG_NOMTPDOCTO"  To VSDGNOMTPDOCTO

    Label  @ 02,35 "Tipo de Carteira"  For "TG_TPCART"
    Accept @ 03,39 Width 04 "A1"  Picture "!" Tag "TG_TPCART"  To VSDGTPCART
    Accept @ 03,44 Width 25 "A20" Picture "!*!" Tag "TG_NOMCART" To VSDGNOMCART

    Label  @ 04,35 "Forma de Pagamento"  For "TG_TPPAGTO"
    Accept @ 05,38 Width 05 "A2"  Picture "!*!" Tag "TG_TPPAGTO"    To VSDGTPPAGTO
    Accept @ 05,44 Width 25 "A20" Picture "!*!" Tag "TG_NOMTPPG"    To VSDGNOMTPPAGTO

    Label  @ 06,35 "Cobrador"  For "TG_COBRADOR"
    Accept @ 07,36 Width 07 "A4"  Picture "#*#" Tag "TG_COBRADOR" To VSDGCOBRADOR
    Accept @ 07,44 Width 25 "A30" Picture "!*!" Tag "TG_NOMCOBRADOR"  To VSDGNOMCOBRADOR
        
    CheckBoxes @ 09,35 Height 1 Width 30 Tag "TG_DESPCARTAO" 
    TG_DESPCARTAO[1] to CheckTG_DESPCARTAO[1]

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If (Numval(VSDGNLACRC)=0 Or IsBlank(VSDGNLACRC)) and VSDGDTFIM=BlankDate()
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf
  AGUARDE("Aguarde, Processando Dados")

  ClearAll
  
  If Numval(VSDGNLACRC)>0
     Then NUMEROLOTE = Numval(VSDGNLACRC)
          {Ask} {AltTitI}
          Moveto [Numero do Lote      ] TypeIn NUMEROLOTE
          Moveto [Numero do Lancamento] Example "nlanc" 
          {Ask} {Duplic} Check
          Moveto [Numero do Lancamento] Example "nlanc"
          Do_It!
          ClearAll
     Else
          {Ask} {\\Sistemas\\Cadastro\\Destinat} 
          Moveto [Codigo                ] TypeIn "_cclie"
          Switch
            Case ListaRegra_VSDGSITUACAOCLIENTE_Ativo : Moveto [Situacao do Cliente] TypeIn ListaRegra_VSDGSITUACAOCLIENTE
            Case VSDGSITUACAOCLIENTE<>"TODAS"         : Moveto [Situacao do Cliente] TypeIn "~VSDGSITUACAOCLIENTE.."
          EndSwitch
          {Ask} {Duplic} Check
          Moveto [Codigo do Documento   ] TypeIn "~VSDGTPDOCTO.."
          Moveto [Codigo da Conta       ] TypeIn "~VSDGCONTA.."
          Switch
            Case VSDGOPDTEMISVENC="2": Moveto [Data de Emissao    ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
            Case VSDGOPDTEMISVENC="1": Moveto [Data de Vencimento ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
          EndSwitch
          Moveto [Saldo do Documento    ] TypeIn "> 0.01"
          Switch                                                                                                                            
            Case ListaRegra_VSDGTPCART_Ativo  : Moveto [Tipo do Lancamento] TypeIn ListaRegra_VSDGTPCART
            Otherwise                         : Moveto [Tipo do Lancamento] TypeIn "~VSDGTPCART.."
          EndSwitch
          If CheckTG_DESPCARTAO[1]
             Then Moveto [Tipo do Pagamento     ] TypeIn "Not CT, Not CD, Not CL"
             Else Switch
                    Case ListaRegra_VSDGTPPAGTO_Ativo  : Moveto [Tipo do Pagamento] TypeIn ListaRegra_VSDGTPPAGTO
                    Otherwise                          : Moveto [Tipo do Pagamento] TypeIn "~VSDGTPPAGTO.."
                  EndSwitch   
          EndIf   
          Moveto [Codigo do Destinatario] TypeIn "_cclie, ~VSDGDESTINAT.."
          Moveto [Codigo do Cobrador    ] TypeIn "~VSDGCOBRADOR.."
          Do_It!
          ClearAll

  EndIf

  edit "Answer"
  scan
    [Situacao         ]=""
    if [Codigo da Conta       ]=cdc  and
       [Tipo do Lancamento    ]=tpl  and
       [Codigo do Cobrador    ]=ccob 
       then [Situacao         ]="X"
    endif   
  endscan     
  Do_It!
  ClearAll
 
        
  {Ask}{Answer} typein "Fast Delete"
  moveto [Situacao         ] typein "X"
  Do_It!
  ClearAll

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

  NR=NRecords("Answer")
  
  View "Answer"
  View "Duplic"
  View "AltTitI"
  CoEdit "AltTitC"
  Moveto [Numero do Lote]
  Locate NLOTE

  Moveto "Answer"
  Scan
    Barra(NR, RecNo())
    Aguarde("Aguarde, adicionado t¡tulos "+BARRA_STRING)

    EMPRESA =[Codigo da Empresa  ]
    TPDOCTO =[Codigo do Documento]
    NUMDOCTO=[Numero do Documento]

    Moveto "Duplic"
    Moveto [Numero do Lancamento]
    Locate [Answer->Numero do Lancamento]
    If RetVal 
       Then ACHOU_LANCTO=False
            NLANC=[Numero do Lancamento]
            Moveto "AltTitI"
            Moveto [Numero do Lancamento]
            Locate NLANC
            If Retval
               Then While NLANC = [Numero do Lancamento]
                          If NLOTE = [Numero do Lote]
                             Then ACHOU_LANCTO=True
                                  QuitLoop
                          EndIf                        
                          Skip
                          If Eot() Then QuitLoop EndIf
                          Locate Next NLANC
                          If Not RetVal Then QuitLoop EndIf
                    EndWhile             
            EndIf   
            
            If Not ACHOU_LANCTO
               Then NITEM=NITEM+1
                    End Down
                    [Numero do Lote      ]=NLOTE
                    [Numero do Item      ]=NITEM
                    [Numero do Lancamento]=NLANC
                    [Codigo da Conta     ]=[Answer->Codigo da Conta  ]
                    [Codigo da Empresa   ]=[Answer->Codigo da Empresa]
                    [Data da Operacao    ]=[AltTitC->Data da Operacao]
                    UnLockRecord
            
                    Moveto "Duplic"
                    While True
                      If Not IsLockRecord()
                         Then [Codigo da Conta        ]=[AltTitC->Codigo da Conta        ]
                              [Codigo da Empresa      ]=[AltTitC->Codigo da Empresa      ]
                              [Tipo do Lancamento     ]=[AltTitC->Tipo do Lancamento     ]
                              If Not IsBlank([AltTitC->Multa])
                                 Then [Multa          ]=[AltTitC->Multa                  ]
                              EndIf
                              If Not IsBlank([AltTitC->Tipo Taxa de Juros ]) 
                                 Then [Taxa de Juros      ]=[AltTitC->Taxa de Juros      ]
                                      [Valor de Juros     ]=[AltTitC->Valor de Juros     ]
                                      [Tipo Taxa de Juros ]=[AltTitC->Tipo Taxa de Juros ]
                                      [NDias Taxa de Juros]=[AltTitC->NDias Taxa de Juros]
                              EndIf
                              If Not IsBlank([AltTitC->Codigo Plano_Conta])
                                 Then [Codigo Plano_Conta    ]=[AltTitC->Codigo Plano_Conta     ]
                              EndIf
                              If Not IsBlank([AltTitC->Codigo CCusto])
                                 Then [Codigo CCusto         ]=[AltTitC->Codigo CCusto          ]
                              EndIf
                              If Not IsBlank([AltTitC->Codigo do Cobrador])
                                 Then [Codigo do Cobrador    ]=[AltTitC->Codigo do Cobrador     ]
                              EndIf   
                              UnLockRecord
                              QuitLoop
                      EndIf
                    EndWhile
            EndIf        
    EndIf

    Moveto "Answer"
  EndScan
  Do_It!
  ClearAll
  
  LimpAguarde()

  Delete "Answer"
  Mensagem("Sele‡„o Processada !")
  QuitLoop
EndWhile
ClearAll
EndProc

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

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
While FACA_DIGITAC
  DIGITAC()
  SetaCorRegistro("Padrao")

  If CHAVE=9 Then QuitLoop EndIf
  If CHAVE=1 Then Controle_Dia() EndIf

  While FACA_CHAVEI
    Moveto "AltTitI"
    CHAVEI()
    If CHAVEI=9 Then QuitLoop EndIf
    Controla_EdicaoI()
  EndWhile
  If Controle
     Then Moveto "AltTitC"
     Else CONTA()
          Moveto "AltTitC"
  EndIf
EndWhile
If RecordStatus("Locked") Then UnLockRecord EndIf         
If OPCAO_FORM="1"
   Then PickForm "1"
EndIf
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bib_Proc"
SYS_VALOR()
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf
If Not IsAssigned(SYS_CONTROLE_DIA)    Then SYS_CONTROLE_DIA=""    EndIf

ARQIMP = PrivDir()+"DUP_AV.Txt"
If IsFile(ARQIMP)
   Then Deleta_Arquivo(ARQIMP)
EndIf
        
PARAM_DUAS_VIAS       = False    ;Imprime duas duplicatas por folha A4
PARAM_REPETE_DUPFOLHA = False    ;Imprime a mesma duplicata duas vezes na mesma folha A4    
                       
If SYS_CODIGO_CLIENTE="0425"
   Then PARAM_DUAS_VIAS = True
EndIf

If PARAM_REPETE_DUPFOLHA=True Then PARAM_DUAS_VIAS=False EndIf
                  
TPLANC_OPERACAO = ""
TPCONT_OPERACAO = ""

CoEdit "AltTitC"
PickForm "1"
NLOTE=0
DIGITENS = 0
OPCAO_FORM="1"
While True
  CHAVEC()
  If CHAVE=9 Then QuitLoop EndIf

  If CHAVE=6
     Then If OPCAO_FORM="F"
             Then PickForm "F"
             Else PickForm "1"
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
