;** AltConta  ******************************************************************
;*  Alteracao de Conta                                                         *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 22/02/2005 por Davi Pereira Carrano
;Motivo Alteracao: Atualiza‡Æo do Preco Total ap¢s deletar itens da AltContI
;Ultima Alteracao: 23/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;Ultima Alteracao: 24/12/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Seta_Sequencia
;Ultima Alteracao: 05/04/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Conta<>Empresa 
;Ultima Alteracao: 30/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas

;*******************************************************************************
;* Rotina para Localizar Registro Carteira                                     *
;*******************************************************************************
Proc CHAVEC()
FACA_DIGITAC=True
While True
  Moveto [Numero do Lote]
  End
  NLOTE=[]
  If OPCAO_FORM="1"
     Then Down
     Else PgDn
  EndIf

  SetaCorRegistro("Editar")
  While true

  TECLA=""
  AguardaTeclasPadrao()

    Switch
      Case RetVal=-33 : SemFuncoes()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           While True
             FACA_DIGITAC=True
             If OPCAO_FORM="1"
                Then PAGINA("AltContC","MR")
                Else PAGINA("AltContC","MT")
             EndIf
             NLOTE  =[Numero do Lote]
             If EDITAR="S"
                Then PickForm "F"
                     CHAVE=0
                     Controla_EdicaoC()
                Else If EXCLUIR="S"
                        Then If QuerExcluir("este lote")
                                Then PickForm "F"
                                     EXCLUSAO()
                                Else UnLockRecord
                             EndIf
                             If OPCAO_FORM="1"
                                Then PickForm "1"
                                Else PickForm "F"
                             EndIf
                        Else QuitLoop
                     EndIf
             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"
           Locate NLOTE
           If Retval
              Then CHAVE=0
              Else CHAVE=1
                   End Pgdn
                   [Numero do Lote]=NLOTE
           EndIf
           If IsLockRecord()
              Then If OPCAO_FORM="1"
                      Then PickForm "1"
                           QuitLoop
                   EndIf
           EndIf
           Return
      EndSwitch
  EndWhile
EndWhile
EndProc  ; (CHAVEC)

;*******************************************************************************
;* Rotina para Digitacao da Cabeca                                             *
;*******************************************************************************
Proc DIGITAC()
FACA_CHAVEI=True
If CHAVE=0 Then
   Return
EndIf
Moveto [Data da Operacao]
While True

  TECLA=" Esc=Retornar  "

  If Field()="Codigo da Conta"
     Then TECLA=TECLA+"F1=Tabelas  "
  EndIf
  If CHAVE=0
     Then TECLA=TECLA+"F8=Itens  Del=Excluir  "
  EndIf

  Prompt TECLA

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

  Switch
  Case RetVal="F1":
       If Field()="Codigo da Conta"
          Then CONSULTAF1()
       EndIf
  Case RetVal="F8":
       If CHAVE = 0
          Then QuitLoop
          Else Loop
       EndIf
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVE=0
          Then If QuerExcluir("este lote")
                  Then EXCLUSAO()
                       QuitLoop
               EndIf
       EndIf
  Case Retval="ESC":
       Switch
       Case Field()="Data da Operacao":
            If QuerDesfazer("")
               Then If CHAVE=1
                       Then Exclusao()
                       Else Undo
                    EndIf
                    FACA_DIGITAC=False
                    CHAVE=9
                    QuitLoop
            EndIf
       Case Field()="Codigo da Conta": Moveto [Data da Operacao]
       OtherWise:
            Left
       EndSwitch
  Case Retval="ENTER":
       If IsBlank([])
          Then If Field()="Data da Operacao"
                  Then []=Today()
                  Else Loop
               EndIf
       EndIf
       Switch
       Case Field()="Data da Operacao":
            If Not IntervaloData([Data da Operacao])
               Then Loop
            EndIf
            Moveto [Codigo da Conta]
       Case Field()="Codigo da Conta":
            QuitLoop
       OtherWise:
            Right
       EndSwitch
  EndSwitch
EndWhile
EndProc  ; (DIGITAC)

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

Moveto "AltContI"
While True

  Moveto [Saldo do Documento]
  VALORTOT=ImagecSum()
  Moveto "AltContC"
  [Valor Total]=VALORTOT
  Moveto "AltContI"

  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=Retornar  F7=Paginar  PgDn=Finalizar  "

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

    Switch
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
      Del
      While True
         Campo_Anterior=Field()
         Moveto [Saldo do Documento]
         VALORTOT=ImagecSum()
         Moveto "AltContC"
         [Valor Total]=VALORTOT
         Moveto "AltContI"
         Moveto Field Campo_Anterior

         PAGINA("AltContI","MR")
         If EDITAR="S"
            Then CHAVEI=0
                 NLOTE  =[Numero do Lote]
                 NITEM  =[Numero do Item]
                 Controla_EdicaoI()
            Else If EXCLUIR="S"
                    Then If QuerExcluir("")
                           Then EMPRESA =[Codigo da Empresa  ]
                                TPDOCTO =[Tipo do Documento  ]
                                NUMDOCTO=[Numero do Documento]
                                Moveto "Titulos"
                                Locate IndexOrder by "IndTit1" EMPRESA,TPDOCTO,NUMDOCTO
                                If RetVal
                                   Then While True
                                              If not IsLockRecord()
                                                 Then [Codigo da Conta   ]=[AltContI->Codigo da Conta  ]
                                                      [Codigo da Empresa ]=[AltContI->Codigo da Empresa]
                                                      UnlockRecord
                                                      QuitLoop
                                              EndIf
                                        EndWhile
                                EndIf
                                Moveto "AltContI"
;                                VALORTOT=VALORTOT-[Saldo do Documento]
                                Del
                           Else UnLockRecord
                         EndIf
                    Else Quitloop
                 EndIf
         EndIf
         SetaPosForm()
      EndWhile
      QuitLoop
    Case RetVal="PGDN":
         Del
         If RecordStatus("New")
            Then Mensagem("Tabela sem Registros !")
                 Exclusao()
         EndIf
         FACA_DIGITAC=False
         FACA_CHAVEI=False
         CHAVEI=9
         Return
    Case Retval="ESC":
         Del
         If RecordStatus("New")
            Then Mensagem("Tabela sem Registros !")
                 Exclusao()
         EndIf
         FACA_DIGITAC=False
         FACA_CHAVEI=False
         CHAVEI=9
         Return
    Case Retval="ENTER":
         If Not Seta_Sequencia(NITEM,True)
            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

;*******************************************************************************
;* Rotina para Digitacao dos Itens                                             *
;*******************************************************************************
Proc DIGITAI()

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

While True

      TECLA=" Esc=Retornar  "

      If Field()="Codigo da Empresa" Or
         Field()="Codigo do Documento"
         Then TECLA=TECLA+"F1=Tabelas  "
      EndIf
      If CHAVE=0
         Then TECLA=TECLA+"Del=Excluir  "
      EndIf

      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 CONSULTAF1()
           EndIf
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVEI=0
              Then If QuerExcluir("")
                     Then EMPRESA =[Codigo da Empresa  ]
                          TPDOCTO =[Tipo do Documento  ]
                          NUMDOCTO=[Numero do Documento]
                          Moveto "Titulos"
                          Locate IndexOrder by "IndTit1" EMPRESA,TPDOCTO,NUMDOCTO
                          If RetVal
                             Then While True
                                        If not IsLockRecord()
                                           Then [Codigo da Conta   ]=[AltContI->Codigo da Conta  ]
                                                [Codigo da Empresa ]=[AltContI->Codigo da Empresa]
                                                UnlockRecord
                                                QuitLoop
                                        EndIf
                                  EndWhile
                          EndIf
                          Moveto "AltContI"
                          VALORTOT=VALORTOT-[Saldo do Documento]
                          Del
                   EndIf
           EndIf
      Case Retval="ESC":
           Switch
           Case Field()="Codigo da Empresa":
                If QuerDesfazer("")
                   Then If CHAVEI=1
                           Then Del
                           Else Undo
                        EndIf
                        QuitLoop
                Endif
           Case Field()="Codigo do Documento": Moveto [Codigo da Empresa  ]
           Case Field()="Numero do Documento": Moveto [Codigo do Documento]
           EndSwitch
      Case Retval="ENTER":
           If IsBlank([]) Then Loop EndIf
           Switch
           Case Field()="Codigo da Empresa"  : Moveto [Codigo do Documento]
           Case Field()="Codigo do Documento": Moveto [Numero do Documento]
           Case Field()="Numero do Documento":
                EMPRESA =[Codigo da Empresa  ]
                TPDOCTO =[Tipo do Documento  ]
                NUMDOCTO=[Numero do Documento]
                Moveto "Titulos"
                Locate IndexOrder by "IndTit1" EMPRESA,TPDOCTO,NUMDOCTO
                If RetVal
                   Then Moveto "AltContI"
                        [Numero do Lancamento]=[Titulos->Numero do Lancamento]
                        Moveto "Titulos"
                        While True
                              If not IsLockRecord()
                                 Then [Codigo da Conta   ]=[AltContC->Codigo da Conta  ]
                                      [Codigo da Empresa ]=[AltContI->Codigo da Empresa]
                                      UnlockRecord
                                      QuitLoop
                               EndIf
                        EndWhile
                   Else Moveto "AltContI"
                        MENSAGEM("Documento Invalido")
                        Loop
                EndIf
                Moveto "AltContI"
                [Data da Operacao    ]=[AltContC->Data da Operacao]
                VALORTOT=VALORTOT+[Saldo do Documento]
                QuitLoop
           EndSwitch
      EndSwitch
EndWhile

EndProc

;*******************************************************************************
;* Exclusao de Lote                                                            *
;*******************************************************************************
Proc EXCLUSAO()
Moveto "AltContI"
While RecordStatus("New")=False
  EMPRESA =[Codigo da Empresa  ]
  TPDOCTO =[Tipo do Documento  ]
  NUMDOCTO=[Numero do Documento]
  Moveto "Titulos"
  Locate IndexOrder by "IndTit1" EMPRESA,TPDOCTO,NUMDOCTO
  If RetVal
     Then [Codigo da Conta   ]=[AltContI->Codigo da Conta  ]
          [Codigo da Empresa ]=[AltContI->Codigo da Empresa]
          UnLockRecord
  EndIf
  Moveto "AltContI"
  Del
EndWhile
Moveto "AltContC"
Del
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoI()
DIGITAI()
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
While FACA_DIGITAC
  DIGITAC()
  If CHAVE=9 Then QuitLoop EndIf
  VALORTOT=[Valor Total]
  While FACA_CHAVEI
    Moveto "AltContC"
    [Valor Total]=VALORTOT
    Moveto "AltContI"
    CHAVEI()
    If CHAVEI=9 Then QuitLoop EndIf
    Controla_EdicaoI()
  EndWhile
  Moveto "AltContC"
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"
CoEdit "AltContC"
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
