;** Ft_CxECF *******************************************************************
;*  Geracao de Vendas a Vista p/ o Caixa                                       *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 30/08/2002 por Anivel Augusto Rodrigues
;Ultima Alteracao: 01/09/2003 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 07/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: exclusao referencia ao campo INSS
;Ultima Alteracao: 27/05/2016 por Bruno Carvalho 
;Motivo Alteracao: Adaptado processo para gera‡Æo do [Numero do Lancamento] "Interno"
;Ultima Alteracao: 16/03/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Numero_Lancamento("Interno","Locked_Down")

;*******************************************************************************
;* Rotina de Gravacao de Lancamento                                            *
;*******************************************************************************
Proc Grava_Caixa()
Moveto "\\Sistemas\\CtaCor\\MovCont"
While True
  End
  Moveto [Numero do Lancamento]
  If Numero_Lancamento("Interno","Locked_Down")
     Then CX_LANC = PROXLANCTO_NLANC
          Release Vars PROXLANCTO_NLANC
          quitloop
  EndIf    
EndWhile

;While True
;  End
;  Moveto [Numero do Lancamento]
;  If Numero_Lancamento("Interno","")
;     Then CX_LANC = PROXLANCTO_NLANC
;          Release Vars PROXLANCTO_NLANC
;  EndIf      
;  Locate CX_LANC
;  If Retval
;     Then Loop
;     Else End Down
;          [Numero do Lancamento ]=CX_LANC
;          If IsLockRecord()
;             Then UnLockRecord
;                  Loop
;          EndIf
;  EndIf
;  QuitLoop
;EndWhile

[Codigo da Conta       ]=CX_CONTA_CAIXA
[Codigo da Empresa     ]=[NotaC->Codigo da Empresa]
[Tipo de Operacao      ]="07"
[Data                  ]=[Notac->Data de Emissao]
[Valor                 ]=CX_VRLANC
[Codigo do Documento   ]=[NotaC->Codigo do Documento]
[Numero do Documento   ]=[NotaC->Numero do Documento]
[Descricao do Historico]="REC. "+[Tipo do Documento]+" "+[NotaC->Numero do Documento]
If [NotaC->Tipo de Pagamento]="P"
   Then [Descricao do Historico]=[Descricao do Historico]+" VENCTO COMO ENTRADA"
EndIf
[Tipo                  ]="C"
[Codigo do EmitDest    ]=CX_CODIGOC
If CX_CODIGOC=""
   Then [Nome Fantasia EmitDest]="VENDA A VISTA ?"
EndIf
[Tipo do Lancamento    ]="I"
[Sistema Gerador       ]="NF"
[Empresa Gerador       ]=[NotaC->Codigo da Empresa]
UnLockRecord

Saldo_Caixa("E",CX_VRLANC)

Moveto "NotaC"
[Exportado_Caixa]="S"
UnLockRecord

EndProc

;*******************************************************************************
;* Rotina de Estornar Lancamentos                                              *
;*******************************************************************************
Proc Estorno_Caixa()
Private CHV_EMPRESA, CHV_TPDOCTO, CHV_NUMERO_ORDEM

CHV_EMPRESA     =[NotaC->Codigo da Empresa  ]
CHV_TPDOCTO     =[NotaC->Tipo do Documento  ]
CHV_NUMERO_ORDEM=[NotaC->Numero do Documento]

Moveto "\\Sistemas\\CtaCor\\MovCont"
Moveto [Codigo da Empresa]
Locate IndexOrder by "IndCxa1" CHV_EMPRESA,CHV_TPDOCTO,CHV_NUMERO_ORDEM
If RetVal
   Then While True
          If [Tipo do Lancamento]="I" and [Sistema Gerador]="NF"
             Then Saldo_Caixa("S",[Valor])
                  Moveto "\\Sistemas\\CtaCor\\MovCont"
                  Del
                  QuitLoop
          EndIf
          Skip
          If EOT() Then QuitLoop EndIf
          Locate IndexOrder by "IndCxa1" Next CHV_EMPRESA,CHV_TPDOCTO,CHV_NUMERO_ORDEM
          If Not RetVal Then QuitLoop EndIf
        EndWhile
EndIf
EndProc

;*******************************************************************************
;* Rotina de Atualizar Saldos                                                  *
;*******************************************************************************
Proc Saldo_Caixa(tp,vr)
private tp,vr
Moveto "\\Sistemas\\CtaCor\\SaldCont"
Moveto [Codigo da Conta]
Locate CX_CONTA_CAIXA, AlinhM(StrVal(Year([NotaC->Data de Emissao])),4), AlinhM(StrVal(Month([NotaC->Data de Emissao])),2)
If Not RetVal
   Then End
        Down
        [Codigo da Conta]=CX_CONTA_CAIXA
        [Ano Referencia ]=AlinhM(StrVal(Year([NotaC->Data de Emissao])),4)
        [Mes Referencia ]=AlinhM(StrVal(Month([NotaC->Data de Emissao])),2)
EndIf
If tp="E" Then [Entradas]=[Entradas]+vr EndIf
If tp="S" Then [Entradas]=[Entradas]-vr EndIf
UnLockRecord
EndProc

;****** Rotina Principal *********
If CANCELA_CX
   Then Estorno_Caixa()
   Else Moveto "NotaC"
        Moveto [Codigo da Empresa]
        Locate [NotaC->Codigo da Empresa], NOTAFISC, SERIEFISC

        If Search("VEND",[NotaC->Descricao da Destinacao])>0 Or
           Search("FATURA CUPOM FISCAL",[NotaC->Descricao da Destinacao])>0
           Then CX_CONDICAOS = "VEND"
                CX_CONDICAOL = "2204"
        EndIf
        If Search("SERV",[NotaC->Descricao da Destinacao])>0
           Then CX_CONDICAOS = "SERV"
                CX_CONDICAOL = "2204"
        EndIf
        If Search("REGISTRA",[NotaC->Descricao da Destinacao])>0
           Then CX_CONDICAOS = "REGISTRA"
                CX_CONDICAOL = "2204"
        EndIf

        Moveto "NotaC"
        Moveto [Codigo]
        Ativa_Lookup()
        Moveto [Conta Contabil]
        Locate CX_CONDICAOL
        If RetVal
           Then CX_CODIGOC=[Codigo]
           Else Locate "0815"
                If RetVal
                   Then CX_CODIGOC=[CODIGO]
                   Else CX_CODIGOC=""
                EndIf
        EndIf
        KeyPress "ESC"

        Estorno_Caixa()
        Grava_Caixa()
EndIf

Release vars cx_codigoc, cx_condicaos, cx_condicaol
Release procs grava_caixa, saldo_caixa, estorno_caixa
