;** FolhaChq *******************************************************************
;*  Emissao de Cheque Livre                                                    *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 17/11/2011 por Karina Andrade
;Ultima Alteracao: 05/01/2012 por Anivel Augusto Rodrigues
;Ultima Alteracao: Ajustes Voltar Edi‡Æo da Tabela e numero cheque a imprimir
;Ultima Alteracao: 10/01/2012 por Bruno Carvalho
;Ultima Alteracao: Ajustes na rotina de impressÆo de cheques
;Ultima Alteracao: 09/02/2012 por Bruno Carvalho
;Ultima Alteracao: Ajustes ImpressÆo Cheque Continuo
;Ultima Alteracao: 05/01/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes getp_titulo() em Carrega_Parametros()
;Ultima Alteracao: 06/06/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado CONTINUO=1 p/ #0167# -> CONTINUO=0 ??? 
;Motivo Alteracao: Adicionado Bib_Proc
;Ultima Alteracao: 03/01/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado Cliente_Inativo()
;Ultima Alteracao: 14/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_CCUSTO            

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()

Moveto [Numero do Lancamento]
End
SEQ=[Numero do Lancamento]
Down
While True     

  SetaCorRegistro("Editar")

  TECLA="Esc=Retornar  "
  AguardaTeclasPadrao()

  If RetVal=-33
    Then Echo Normal
         Echo Off
         ShowPopup " Fun‡”es " CENTERED
           "~O~rdenar   [F4]  " : " Ordenar registros por ordem Alfab‚tica, Codigo ou Digita‡Æo " : "F4",
           "~L~impar    [F5]  " : " Limpar a rela‡Æo, Valor e/ou Atualiza‡Æo Conta Corrente     " : "F5",       
           "~I~mprimir  [F6]  " : " Imprimir Cheque                                             " : "F6",
           "~A~tualizar [F8]  " : " Atualizar Conta Corrente                                    " : "F8",
           "~C~ancelar        " : " Cancelar a Opera‡„o                                         " : "CANCELAR"
         EndMenu
         To MenuVar
         Echo Off

        If MenuVar="CANCELAR" or MenuVar="Esc"
            Then Loop
        EndIf                                         
        RetVal=MenuVar
  EndIf

  Switch
  Case RetVal=-94 : MsgTeclasPadrao()
  Case RetVal="F3": SemFicha()
  Case RetVal=-59:
       If Field()="Codigo"
          Then CONSULTAF1()
       EndIf
  Case RetVal="F4":
       Del
       Ordenar()
       CHAVE=8
       QuitLoop
  Case RetVal="F5":
       Del
       Limpar()
       CHAVE=8
       QuitLoop
  Case RetVal="F6":
       Del
       If SD_IMPCHQ()
         Then IMPRIME_CHEQUE()
       EndIf
       CHAVE=8
       QuitLoop
  Case RetVal="F8": 
       Del
       Atualizar()
       CHAVE=8
       QuitLoop
  Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
       While True 
         PAGINA("Folha","MR") 
         If EDITAR="S"
            Then CHAVE=0
                 Controla_EdicaoC()
            Else If EXCLUIR="S"
                    Then If QuerExcluir("")
                            Then CHAVE=8 
                                 DEL
                            Else UnLockRecord
                         EndIf
                    Else Moveto [Numero do Lancamento]
                         End
                         SEQ=[Numero do Lancamento]
                         Down
                         QuitLoop
                 EndIf
         EndIf
         SetaPosForm()
       EndWhile
  Case Retval="ESC":
       CHAVE=9
       Del
       Return
  Case Retval="ENTER": 
       If IsBlank([])
          Then If IsBlank(SEQ)
                Then SEQ=1
                Else SEQ=SEQ+1
               EndIf
       EndIf
       Del
       Locate SEQ
       If Retval
          Then CHAVE=0
          Else CHAVE=1
               End Down
               [Numero do Lancamento]=SEQ
      EndIf
      If IsLockRecord()
         Then Loop
      EndIf
      Quitloop
  EndSwitch
EndWhile

EndProc

;*******************************************************************************
;* Rotina para Digita                                                          *
;*******************************************************************************
Proc DIGITA()

If CHAVE=1 
  Then Moveto [Codigo            ]
  Else Moveto [Valor do Pagamento]
EndIf
  
While True

  TECLA="Esc=Retornar  Enter=Avancar  "
  If CHAVE=0
     Then TECLA=TECLA+"Del=Excluir  "
  EndIf
  
  If [Numero do Cheque]<>BlankNum()
    Then TECLA=TECLA+"F5=Limpar n§ cheque  "
  EndIf  
  If Field()="Codigo" Then TECLA=TECLA+"F1=Tabela  " EndIf
  MSGCAMPO=Field()

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

  Switch
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="F1" :
       If Field()="Codigo"
        Then ConsultaF1()
       EndIf          
  Case RetVal="F5":
       [Atualizado Conta Corrente  ]=""
       [Codigo da Conta            ]=""
       [Numero do Cheque           ]=BlankNum()
       [Numero do Lancamento CC    ]=""   
       QuitLoop 
  Case Retval="ESC":
       Switch
        Case Field()="Codigo": 
             If QuerDesfazer("")
                Then If CHAVE=1
                        Then Del
                        Else Undo
                     EndIf
                     CHAVE=9
                     QuitLoop
             EndIf
        Case Field()="Razao Social" Or Field()="Valor do Pagamento":
             If CHAVE=1
              Then Moveto [Codigo]
              Else If QuerDesfazer("") Then Undo EndIf
                   CHAVE=9
                   QuitLoop
             EndIf
       EndSwitch      
  Case Retval="ENTER":
       Switch
        Case Field()="Codigo":
          If IsBlank([])
            Then Moveto [Razao Social]
            Else If CHAVE=1
                    Then If Cliente_Inativo([Codigo])
                            Then Loop
                         EndIf   
                 EndIf
                 Moveto [Valor do Pagamento]  
          EndIf
        Case Field()="Razao Social":
             If IsBlank([]) Then Loop EndIf 
             Moveto [Valor do Pagamento]
        Case Field()="Valor do Pagamento":
             If IsBlank([]) Then Loop EndIf
             Quitloop
       EndSwitch
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVE=0
          Then If QuerExcluir("")
                  Then DEL
                       QuitLoop
               EndIf
       EndIf
  EndSwitch
EndWhile
EndProc

;*******************************************************************************
;* Rotina para Ordenar dados                                                   *
;*******************************************************************************
Proc Ordenar()
Private OPCAOC
Opcaoc="Digitado"

If IsEmpty("Folha")
  Then Return
EndIf

Echo Normal
Echo Off
ShowPopup " Rela‡Æo por Ordem " CENTERED
   "~A~lfab‚tica  " : " Rela‡Æo em ordem Alfab‚tica   " : "Alfabetica",
   "~C~¢digo      " : " Rela‡Æo em ordem de C¢digo    " : "Codigo",
   "~C~ancelar    " : " Cancelar a Opera‡„o           " : "Cancelar"
EndMenu
To OPCAOC

Echo off

If OPCAOC="Cancelar" or OPCAOC="Esc"
   Then Return
EndIF

Do_it!
Aguarde("Aguarde,Ordenando registros")  
Switch
  Case OPCAOC="Alfabetica": Sort "Folha" on "Razao Social" 
  Case OPCAOC="Codigo"    : Sort "Folha" on "Codigo"
EndSwitch  

Coedit "Folha"
Scan
  [Numero do Lancamento]=RecNo()
EndScan   

PickForm "F"
CHAVE=8
EndProc ;Ordenar

;*******************************************************************************
;* Rotina para Limpar dados                                                    *
;*******************************************************************************
Proc Limpar()
Private OPCAOC

If IsEmpty("Folha")
  Then Return
EndIf
  
  Echo Normal
  Echo Off
  ShowPopup " Limpar Dados " CENTERED
     "~L~istagem    " : " Limpar todos os dados                                                   " : "Total",
     "~V~alor       " : " Limpar os valores preenchidos e dados de atualiza‡Æo da Conta Corrente  " : "Valor",
     "~A~tualiza‡Æo " : " Limpar somente os dados de atualiza‡Æo da Conta Corrente                " : "CxBco",
     "~C~ancelar    " : " Cancelar a Opera‡„o                                                     " : "Cancelar"
  EndMenu
  To Opcaoc

  Echo off

  If OPCAOC="Cancelar" or OPCAOC="Esc"
     Then Return
  EndIF
  
  Switch 
    Case OPCAOC="Total":
         Aguarde("Aguarde, Excluindo registros")
         Do_It!
         Empty("Folha")
    Case OPCAOC="Valor":
         Aguarde("Aguarde, Excluindo os valores e os dados de atualiza‡Æo da CC")
         Scan 
            [Valor do Pagamento         ]=BlankNum()
            [Atualizado Conta Corrente  ]=""
            [Codigo da Conta            ]=""
            [Numero do Cheque           ]=BlankNum()
            [Numero do Lancamento CC    ]=""    
         EndScan
         Do_it!
    Case OPCAOC="CxBco":
         Aguarde("Aguarde, Excluindo os dados de atualiza‡Æo da Conta Corrente")
         Scan 
            [Atualizado Conta Corrente  ]=""
            [Codigo da Conta            ]=""
            [Numero do Cheque           ]=BlankNum()
            [Numero do Lancamento CC    ]=""    
         EndScan
         Do_it!
  EndSwitch

CoeditKey
PickForm "F"
CHAVE=8

EndProc ;Limpar

;*******************************************************************************
;* Imprimir Cheque                                                            *
;*******************************************************************************
Proc IMPRIME_CHEQUE()
Private CH_Valor, CH_Numero, CH_Historico, CH_CEmitente, CH_DtE, CH_DtV, CH_Data,
CH_Juros, CH_Desconto, CH_Custo, CH_Conta, CH_Lanc, CH_Cidade, CH_DESC, Continuar, BANCO,
CH_Observacoes, CH_Ndocto
FormKey  

View "\\Sistemas\\Cadastro\\Empresas"
Moveto [Codigo da Empresa]
Locate VSDGEMPRESA
If RetVal
   Then CH_Titular=[\Sistemas\Cadastro\Empresas->Razao Social Empresa]
        CH_Cidade =[\Sistemas\Cadastro\Empresas->Cidade Empresa]
EndIf

View "\\Sistemas\\CtaCor\\Conta"
Moveto [Codigo da Conta]
Locate VSDGCONTA
If RetVal
   Then CH_CBanco=[\Sistemas\CtaCor\Conta->Numero do Banco]
        CH_NBanco=[\Sistemas\CtaCor\Conta->Nome do Banco  ]
        CH_NConta=[\Sistemas\CtaCor\Conta->Numero da Conta]
EndIf

Continuar=False

While True
  AGUARDE("Imprimindo Cheque")
  
  View "\\Sistemas\\CTAPAG\\P_Cheque"
  Moveto [Numero do Banco]
  Locate CH_CBanco
  If RetVal
     Then If VSDGFOLHA="1"
             Then SCRIPT="\\Sistemas\\Ctapag\\"+[Script_Avulso]
             Else SCRIPT="\\Sistemas\\Ctapag\\"+[Script_Continuo]
          EndIf
     Else Mensagem("Banco n„o cadastrado nos parametros do Cheque! // //Verificar com o Suporte!")
          Moveto "Folha"
          QuitLoop              
  EndIf
  ClearImage
    
  If Search("CH",SCRIPT)=0
   Then Mensagem("Falha ao imprimir o cheque! // Script n„o encontrado! // //Verificar com o Suporte!")
        Moveto "Folha"
        QuitLoop
  EndIf            
  
  Seta_Printer = PARAM_PORTA_CHEQ
  
  If SYS_CODIGO_CLIENTE = "0167"
     Then CONTINUO=1
     Else CONTINUO=0
  EndIf    
  If VSDGFOLHA="2"
     Then IMPRIME_CONTINUO=True
     Else IMPRIME_CONTINUO=False
  EndIf
   
  Coedit "Folha"
  NR=NRecords("Folha")

  Scan
    Imp=False
    Barra(NR, RecNo())
    Aguarde("Aguarde, Imprimindo Cheque "+Completa(StrVal(Recno())+"/"+StrVal(NR),9," ")+BARRA_STRING)
  
    If [Valor do Pagamento]>0 And [Numero do Cheque]=BlankNum()
       Then Ch_NumConta   = VSDGCONTA
            Ch_DesConta   = VSDGNOMCONTA
            CH_Nominal    = [Razao Social]
            CH_Numero     = VSDGNUMCHQ
            CH_Serie      = "???"
            CH_Data       = VSDGDTREF
            CH_Valor      = [Valor do Pagamento]
            CH_Lanc       = ""
            CH_PreDat     = BlankDate()
            If Not IsBlank([Codigo])
              Then CH_CEmitente = [Codigo]
              Else CH_CEmitente = PARAM_COD_NOMINAL
            EndIf  
            CH_Destino    = [Razao Social]
            Ch_Rotina     = "CAIXA/BANCO"
            CH_CodCusto   = VSDGCCUSTO
            CH_Custo      = VSDGNOMCUST    
            CH_CodPlConta = VSDGPLCONTAS
            CH_PlConta    = VSDGNOMPLCONTAS
            CH_Ndocto     = "PG CH/"+StrVal(VSDGNUMCHQ)
            CH_Historico  = ""
            CH_Observacoes= "" 

            CH_DESC       = VSDGDTREF 
            CH_Desconto   = 0
            CH_DtE        = VSDGDTREF
            CH_DtV        = VSDGDTREF
            
            If Seta_Printer="" Or CONTINUO=1
                Then If VSDGFOLHA<>"2"
                        Then CONFGERAL("Deseja Imprimir o Cheque "+StrVal(VSDGNUMCHQ)+" ?")
                             If OK="N"
                                Then Loop
                             Endif
                     EndIf   
                     Switch 
                       Case VSDGFOLHA="1" : MSGDISPOSITIVO="Impress„o de Cheque"
                                            DispositivoI("CHQ")
                                            If OK=""
                                               Then Loop
                                               Else Imp=true
                                            EndIf
                                            Play SCRIPT        
                       Case VSDGFOLHA="2" :
                            If IMPRIME_CONTINUO
                               Then MSGDISPOSITIVO="Impress„o de Cheque"
                                    DispositivoI("CHQ")
                                    If OK=""
                                       Then Loop
                                       Else Imp=true
                                            IMPRIME_CONTINUO=False
                                            CONTINUO=1
                                            
                                            ARQIMP=PrivDir()+"CHF.Txt"
                                            If IsFile(ARQIMP)
                                               Then Deleta_Arquivo(ARQIMP)
                                            EndIf
                                            Play SCRIPT   
                                    EndIf
                               Else If CONTINUO=1
                                       Then Imp=true
                                            Play SCRIPT
                                    EndIf   
                            EndIf
                     Endswitch             
                Else ConfGeral("Coloque o cheque: "+StrVal(VSDGNUMCHQ)+"// na impressora e clique em SIM para prosseguir!")
                     If OK="N"
                        Then Loop
                        Else Imp=true
                             Play SCRIPT
                     Endif
            EndIf
  
            ;LIMPAGUARDE()
            
            If VSDGFOLHA<>"2"
               Then CONFGERAL("Deseja realizar a Impress„o do Historico? // //"+
                              "Coloque Apenas a Copia de Cheque p/ a impress„o !")
                    If OK<>"N"
                       Then AGUARDE("Imprimindo o Hist¢rico")
                            If Seta_Printer=""
                               Then MSGDISPOSITIVO="Impress„o de Cheque"
                                    DispositivoI("CHQ")
                                    If OK<>""
                                       Then Play "\\Sistemas\\Ctapag\\C_Ch"
                                    EndIf
                               Else Play "\\Sistemas\\Ctapag\\C_Ch"
                           EndIf
                    EndIf
            EndIf        
            
            If Imp
               Then [Codigo da Empresa     ]=VSDGEMPRESA
                    [Codigo da Conta       ]=VSDGCONTA 
                    [Numero do Cheque      ]=VSDGNUMCHQ
                    [Codigo Plano_Conta    ]=VSDGPLCONTAS
                    [Codigo CCusto         ]=VSDGCCUSTO
                    [Data                  ]=VSDGDTREF
                    VSDGNUMCHQ=VSDGNUMCHQ+1      
            EndIf            
            
       Else Mensagem("Existem lan‡amentos com numera‡Æo de cheques preenchida. // // Opera‡Æo nÆo conclu¡da!")
            QuitLoop        
    EndIf    
    If EOT() Then Quitloop EndIf
  EndScan
  Do_It!
  ClearAll 
  
  LIMPAGUARDE()
  Continuar=True
  QuitLoop
EndWhile

If CONTINUO=1
   Then AGUARDE("Imprimindo Cheque...")
        ImpriArq(ARQIMP)
        Deleta_Arquivo(ARQIMP) 
EndIf

Release Vars CONTINUO, CH_Observacoes, CH_Historico, VSDGEMPRESA,VSDGNOMEMP,VSDGCONTA,VSDGNOMCONTA,
             VSDGPLCONTAS, VSDGNOMPLCONTAS,VSDGCCUSTO,VSDGNOMCUST,VSDGNUMCHQ,BANCO,VSDGNOMFL
                
If Not Atualizar()
   Then Coedit "Folha"
        PickForm "F" 
EndIf

Return Continuar
EndProc  ; (Imprimi_Cheque)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_CONTA"         : Campo="TG_EMPRESA" 
            Case Campo="TG_PLCONTAS"      : Campo="TG_CONTA"
            Case Campo="TG_CCUSTO"        : Campo="TG_PLCONTAS"
            Case Campo="TG_NUMCHQ"        : Campo="TG_CCUSTO"
            Case Campo="TG_FOLHA"         : Campo="TG_NUMCHQ"
            Case Campo="TG_DTREF"         : Campo="TG_FOLHA" 
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESA"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA"    : 
                         If Not IsBlank(VSDGEMPRESA)
                            Then If getp_titulo(VSDGEMPRESA)
                                    then Campo="TG_CONTA"
                                 endif   
                         EndIf
                    Case Campo="TG_CONTA"      : 
                         If Not IsBlank(VSDGCONTA) 
                            Then If VSDGTPCONTA="C"
                                  Then Campo="TG_PLCONTAS"
                                  Else VSDGCONTA    = ""
                                       VSDGNOMCONTA = "" 
                                       MENSAGEM("Tipo da Conta Inv lido!")      
                                 EndIf
                         EndIf                    
                    Case Campo="TG_PLCONTAS"   : Campo="TG_CCUSTO"
                    Case Campo="TG_CCUSTO"     : Campo="TG_NUMCHQ"
                    Case Campo="TG_NUMCHQ"     :
                         VSDGNUMCHQ=ControlValue("TG_NUMCHQ")
                         If Not IsBlanK(VSDGNUMCHQ) And VSDGNUMCHQ<>0
                          Then Campo="TG_FOLHA"
                         EndIf
                    Case Campo="TG_FOLHA"    :
                         VSDGFOLHA= ControlValue("TG_FOLHA")
                         If Not IsBlank(VSDGFOLHA)
                            Then If VSDGFOLHA="1"
                                  Then VSDGNOMFL="AVULSO"
                                  Else VSDGNOMFL="CONTINUO"
                                 EndIf
                                 Campo="TG_DTREF"
                         EndIf
                    Case Campo="TG_DTREF"      : Campo="YES"
                         
                  EndSwitch              
          EndIf
          Temp=False
   EndSwitch
EndIf

Switch
  Case Campo="TG_EMPRESA":
       MSG_CAMPO="Informe a Empresa"
       TECLA=TECLA+"F1=Consulta  "
  Case Campo="TG_NUMCHQ":
       MSG_CAMPO="Informe numero do cheque inicial"
  Case Campo="TG_FOLHA": 
       MSG_CAMPO=" 1-Avulso  2-Continuo "
  Case Campo="TG_CONTA":
       MSG_CAMPO="Informe a Conta Corrente"
       TECLA=TECLA+"F1=Consulta  "
  Case Campo="TG_PLCONTAS" Or Campo="TG_CCUSTO":
       TECLA=TECLA+"F1=Consulta  "      
EndSwitch       

Monta_Prompt(MSG_CAMPO,TECLA)
RefreshDialog

Return TEMP
EndProc ;(SD_Dialog)

;*******************************************************************************
;* ShowDialog Imprimir Cheque                                                  *
;*******************************************************************************
Proc SD_IMPCHQ()

LimpAguarde()
Do_It!
ClearAll

If IsEmpty("Folha")
   Then Return False
EndIf 

LimpAguarde()
Do_It!
ClearAll

Echo Normal
Echo Off

VSDGEMPRESA     = ""
VSDGNOMEMP      = ""
VSDGCONTA       = ""
VSDGNOMCONTA    = ""  
VSDGPLCONTAS    = ""
VSDGNOMPLCONTAS = ""
VSDGCCUSTO      = ""
VSDGNOMCUST     = ""           
VSDGDTREF       = BlankDate()
VSDGNUMCHQ      = BlankNum()
VSDGFOLHA       = ""
VSDGNOMFL       = ""

ShowDialog "Informe" Proc "SD_Dialog"
 Trigger "OPEN","ARRIVE"
   Key "F1","ENTER","ESC","TAB","ReverseTab" 
 @ 05,12   Height 17 Width 43

  Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
  Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA" To VSDGEMPRESA
  Accept @ 01,09 Width 23 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP
  
  Label  @ 02,00 "Conta"  For "TG_CONTA"
  Accept @ 03,01 Width 07 "A4"  Picture "#*#" Tag "TG_CONTA"    To VSDGCONTA
  Accept @ 03,09 Width 23 "A20" Picture "!*!" Tag "TG_NOMCONTA" To VSDGNOMCONTA

  Label  @ 04,00 "Plano de Conta" For "TG_PLCONTAS"
  Accept @ 05,01 Width 15 "A13"  Picture "!*!" Tag "TG_PLCONTAS" To VSDGPLCONTAS
  Accept @ 05,17 Width 22 "A20" Picture "!*!" Tag "TG_NOMPLCONTAS"  To VSDGNOMPLCONTAS

  Label  @ 06,00 "CentroDeCusto" For "TG_CCUSTO"
  Accept @ 07,01 Width 15 "A7"  Picture "###.###" Tag "TG_CCUSTO" To VSDGCCUSTO
  Accept @ 07,17 Width 22 "A20" Picture "!*!" Tag "TG_NOMCUST"  To VSDGNOMCUST

  Label  @ 08,00 "N§ Chq. Inicial" For "TG_NUMCHQ"
  Accept @ 09,01 width 15 "N" Picture "######"  tag "TG_NUMCHQ" to VSDGNUMCHQ  

  Label  @ 08,16 "Tipo"  For "TG_FOLHA"
  Accept @ 09,17 Width 4 "A1" Picture "1,2" Tag "TG_FOLHA" To VSDGFOLHA
  Accept @ 09,22 Width 17 "A15" Picture "!*!" Tag "TG_NOMFL"  To VSDGNOMFL
  
  Label  @ 10,00 "Data Emiss„o" For "TG_DTREF"
  Accept @ 11,01 Width 15 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTREF" To VSDGDTREF  
  
  Pushbutton @ 13,09 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
  Pushbutton @ 13,23 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

EndDialog

If Not RetVal
   Then CoEdit "Folha"
        PickForm "F"
        Return False
EndIf

Return True
ClearAll
EndProc

;*******************************************************************************
;* Rotina De Atualiza‡Æo Conta Corrente                                        *
;*******************************************************************************
Proc Atualizar()

If IsEmpty("Folha")
   Then Return False
EndIf   

If Not ConfGeral("Confirma atualiza‡Æo na Conta Corrente?")
   Then Return False
EndIf  

Home
LimpAguarde()
Do_It!

View "Conta"
View "MovCont"
View "SaldCont"
View "TalaoChq"
Coedit "Folha" 

CONTA=""
DTREF=BlankDate()

Scan
 
  If [Folha->Atualizado Conta Corrente]="" And Not IsBlank([Folha->Numero do Cheque])
     Then 
          If CONTA<>[Codigo da Conta] Or 
             DTREF<>[Data           ] 
             Then 
                  if not getp_titulo([Codigo da Empresa])
                     then Mensagem("Atualiza‡Æo nÆo foi totalmente concluida !// // Verificar Parƒmetros !")
                          quitloop
                  endif   
                  
                  CONTA=[Codigo da Conta]
                  DTREF=[Data           ]
          
                  Moveto "Conta"
                  Moveto [Codigo da Conta]
                  Locate CONTA
                  
                  ANOREF=StrVal(Year(DTREF))
                  MESREF=StrVal(Month(DTREF))
                  ALINHM(MESREF, 2)
                  
                  Moveto "SaldCont"
                  Moveto [Codigo da Conta]
                  Locate CONTA,ANOREF,MESREF
                  If Not RetVal
                     Then End Down
                          [Codigo da Conta]=CONTA
                          [Ano Referencia ]=ANOREF
                          [Mes Referencia ]=MesREF
                          [Saldo Inicial  ]=0
                          [Entradas       ]=0
                          [Saidas         ]=0
                  EndIf
          EndIf
          
          Moveto "MovCont"
          End
          NLANCMC=[Numero do Lancamento]
          Down
          If NLANCMC=""
             Then NLANCMC=0
          EndIf
          
          NLANCMC=StrVal(NumVal(NLANCMC)+1)
          [Numero do Lancamento  ]=ALINHM(NLANCMC,6)
          [Codigo da Conta       ]=CONTA
          [Tipo de Operacao      ]="05"
          [Data                  ]=DTREF
          [Valor                 ]=[Folha->Valor do Pagamento]
          [Numero do Cheque      ]=StrVal([Folha->Numero do Cheque])
          [Codigo do Documento   ]="CH"
          [Numero do Documento   ]=StrVal([Folha->Numero do Cheque])
          [Tipo do Documento     ]="CH"
          [Serie do Documento    ]=""  
          [Descricao do Historico]=""
          [Sistema Gerador       ]="FL"
          [Empresa Gerador       ]=[Folha->Codigo da Empresa  ]
          If [Folha->Codigo]<>""
            Then [Codigo do EmitDest    ]=[Folha->Codigo      ]
            Else [Codigo do EmitDest    ]=PARAM_COD_NOMINAL
                 [Nome Fantasia EmitDest]=[Folha->Razao Social]
          EndIf        
          [Tipo do Lancamento    ]="B"
          [Codigo CCusto         ]=[Folha->Codigo CCusto      ]
          [Codigo Plano_Conta    ]=[Folha->Codigo Plano_Conta ]
          [Descricao do Historico]="PG CH/"+StrVal([Folha->Numero do Cheque])
          UnLockRecord
        
          Moveto "SaldCont"
          [Saidas]=[Saidas]+[Folha->Valor do Pagamento]
          UnLockRecord
        
          If PARAM_CONTROLA_TALAO="S"
             Then 
                  Moveto "TalaoChq"
                  Moveto [Codigo da Conta]
                  Locate [Folha->Codigo da Conta], [Folha->Numero do Cheque]
                  If RetVal
                     Then [Situacao                 ]="DESCONTADO"
                          [Data Descontado          ]=[MovCont->Data                  ]
                          [Valor do Pagamento       ]=[MovCont->Valor                 ]
                          [Data do Pagamento        ]=[MovCont->Data                  ]
                          [Numero do Lancamento     ]=[MovCont->Numero do Lancamento  ]
                          [Codigo do Emitente       ]=[MovCont->Codigo do EmitDest    ]
                          [Data de Emissao          ]=[MovCont->Data                  ]
                          [Data de Vencimento       ]=[MovCont->Data                  ]
                          [Codigo CCusto            ]=[MovCont->Codigo CCusto         ]
                          [Descricao CCusto         ]=[MovCont->Descricao CCusto      ]
                          [Razao Social Destinatario]=[MovCont->Nome Fantasia EmitDest]
                          [Tipo do Documento        ]=[MovCont->Tipo do Documento     ]
                          [Numero do Documento      ]=[MovCont->Numero do Documento   ]
                          UnLockRecord
                  EndIf
          EndIf
          
          Moveto "Folha"
          [Atualizado Conta Corrente]="S"
          [Numero do Lancamento CC  ]=NLANCMC
          UnLockRecord
          
  EndIf
  
EndScan

Do_it!
ClearAll
CoEdit "Folha"
PickForm "F"

Return True
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
DIGITA()
If RecordStatus("Locked") Then UnLockRecord EndIf         

Endproc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc Carrega_Parametros()
Seta_Tipo_Impressora("Matricial")

if not getp_titulo(VSDGEMPRESA)
   then return False
endif

return true   
EndProc ;Carrega_Parametros()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,"+
        "\\Sistemas\\Cadastro\\Bib_Show,"+
        "\\Sistemas\\Cadastro\\Bib_Proc,"+
        "\\Sistemas\\Cadastro\\Bib_Parm"
SYS_VALOR()
If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="" EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf
If Not IsAssigned(SYS_CONTROLE_DIA)    Then SYS_CONTROLE_DIA  =""  EndIf
If Not IsAssigned(SYS_NIVEL_USUARIO)   Then SYS_NIVEL_USUARIO ="S" EndIf
If Not IsAssigned(SYS_NOME_USUARIO)    Then SYS_NOME_USUARIO  ="S" EndIf
If Not IsAssigned(APLIC_ORIGEM)        Then APLIC_ORIGEM      =""  EndIf
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO =""  EndIf
If Not IsAssigned(SYS_NCONEXAO)        Then SYS_NCONEXAO      =""  EndIf
If Not IsAssigned(SYS_ESTACAO)         Then SYS_ESTACAO       =""  EndIf

CoEdit "Folha"
PickForm "F"
While True
  CHAVE()
  If CHAVE=9 Then QuitLoop EndIf
  If CHAVE=8 Then Loop     EndIf
  Controla_EdicaoC()
EndWhile

Do_It!
ClearAll
Release Vars All
Release Procs All
