;** Ft_Caixa *******************************************************************
;*  Geracao de Vendas a Vista p/ o Caixa                                       *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 11/07/2001 por Anivel Augusto Rodrigues
;Alterado em     : 12/06/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Busca_Lookup
;Ultima Alteracao: 13/10/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes P_Duplic
;Ultima Alteracao: 30/10/2008 por Davi Carrano
;Motivo Alteracao: Corre‡Æo extorno_caixa
;Ultima Alteracao: 05/04/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Conta<>Empresa
;Ultima Alteracao: 08/07/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes para Efetuar Transferencia (CX_CONDICAOL sem valor)
;Ultima Alteracao: 27/08/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes CX_CONDICAO?=""
;Ultima Alteracao: 25/05/2012 por Karina Andrade
;Motivo Alteracao: Ajustes Carrega_Parametros de acordo com a empresa 
;Ultima Alteracao: 18/07/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes empresa 0270 "Razao Social" 
;Ultima Alteracao: 18/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CX_CODIGOC=[NotaC->Codigo] para CX_CONDICAOL = "?????"

;*******************************************************************************
;* Rotina de Gravacao de Lancamento                                            *
;*******************************************************************************
Proc Grava_Caixa()
                               
Moveto "\\Sistemas\\Ctarec\\P_Duplic"
Moveto [Codigo_Empresa]
Locate [NotaC->codigo da empresa]
If Not RetVal
   Then PARAM_PLANO_CONTA_AVISTA=""
   Else PARAM_PLANO_CONTA_AVISTA=[Plano_Conta_AVista]
EndIf

Moveto "\\Sistemas\\CtaCor\\MovCont"
While True
  Moveto [Numero do Lancamento]
  End
  If IsBlank([Numero do Lancamento])
     Then CX_LANC="000001"
     Else CX_LANC=AlinhM(StrVal(NumVal([Numero do Lancamento])+1),6)
  EndIf
  Locate CX_LANC
  If Not Retval
     Then End Down
          [Numero do Lancamento ]=CX_LANC
          [Codigo da Conta      ]=CX_CONTA_CAIXA
          If Not IsLockRecord()
             Then QuitLoop
             Else Del
          EndIf
  EndIf
EndWhile

[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"
Switch
  Case APLIC_ORIGEM="FATURA": [Sistema Gerador       ]="FT"
  Case APLIC_ORIGEM="TROCA" : [Sistema Gerador       ]="TR"
  Case APLIC_ORIGEM="BALCAO": [Sistema Gerador       ]="BA"
  Case APLIC_ORIGEM="NOTA"  : [Sistema Gerador       ]="DI"
EndSwitch
[Empresa Gerador       ]=[NotaC->Codigo da Empresa]
[Codigo Plano_Conta    ]=PARAM_PLANO_CONTA_AVISTA

If SYS_CODIGO_CLIENTE="0270"
   Then [Razao Social]=[Notac->Razao Social]
EndIf 
   
Controle_Dia()
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 [Codigo da Empresa  ]=CHV_EMPRESA And
              [Tipo do Documento  ]=CHV_TPDOCTO And
              [Numero do Documento]=CHV_NUMERO_ORDEM
          If IsLockRecord()
             Then Loop
          EndIf
          If [Tipo do Lancamento]="I" and
             (([Sistema Gerador]="FT") Or
              ([Sistema Gerador]="BA") Or
              ([Sistema Gerador]="TR") Or
              ([Sistema Gerador]="DI") Or
              ([Sistema Gerador]=""))
             Then Saldo_Caixa("S",[Valor])
                  Moveto "\\Sistemas\\CtaCor\\MovCont"
                  Del
          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,regnew

While True
 regnew=false
 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)
         regnew=true
 EndIf
 If Not IsLockRecord()
    Then QuitLoop
    Else If regnew
            Then Del
         EndIf
 EndIf
EndWhile
If tp="E" Then [Entradas]=[Entradas]+vr EndIf
If tp="S" Then [Entradas]=[Entradas]-vr EndIf
UnLockRecord
EndProc

;****** Rotina Principal *********
Aguarde("Atualizando CAIXA "+Opcaoc+" "+NOTAFISC)

CX_CONDICAOS = "?????"
CX_CONDICAOL = "?????"

Switch
  Case OP_MOVCX="ESTORNAR" Or OP_MOVCX="CANCELAR" :
       Moveto "NotaC"
       Moveto [Codigo da Empresa]
       Locate EMPRESAFISC, 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 = "411010001/4000"
       EndIf
       If Search("SERV",[NotaC->Descricao da Destinacao])>0
          Then CX_CONDICAOS = "SERV"
               CX_CONDICAOL = "411010001/4000"
       EndIf
       If Search("REGISTRA",[NotaC->Descricao da Destinacao])>0
          Then CX_CONDICAOS = "REGISTRA"
               CX_CONDICAOL = "411010001/4000"
       EndIf
       If Search("TRANS",[NotaC->Descricao da Destinacao])>0
          Then CX_CONDICAOS = "TRANS"
               CX_CONDICAOL = "411010001/4000"
       EndIf

       Moveto "NotaC"
       Moveto [Codigo]
       If Busca_Lookup("Conta Contabil",CX_CONDICAOL,"SM")
          Then CX_CODIGOC=REG_BUSCA_LOOKUP["Codigo"]
          Else If Busca_Lookup("Codigo",[NotaC->Codigo],"")
                  Then CX_CODIGOC=REG_BUSCA_LOOKUP["Codigo"]
                  Else CX_CODIGOC=""
               EndIf
       EndIf
       If APLIC_ORIGEM<>"NOTA"
          Then UnLockRecord
       EndIf
       Estorno_Caixa()
  Case OP_MOVCX="ATUALIZAR":
       Moveto "NotaC"
       Moveto [Codigo da Empresa]
       Locate EMPRESAFISC, 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 = "411010001/4000"
       EndIf
       If Search("SERV",[NotaC->Descricao da Destinacao])>0
          Then CX_CONDICAOS = "SERV"
               CX_CONDICAOL = "411010001/4000"
       EndIf
       If Search("REGISTRA",[NotaC->Descricao da Destinacao])>0
          Then CX_CONDICAOS = "REGISTRA"
               CX_CONDICAOL = "411010001/4000"
       EndIf
       If Search("TRANS",[NotaC->Descricao da Destinacao])>0
          Then CX_CONDICAOS = "TRANS"
               CX_CONDICAOL = "411010001/4000"
       EndIf

       Moveto "NotaC"
       Moveto [Codigo]
       If Busca_Lookup("Conta Contabil",CX_CONDICAOL,"SM")
          Then CX_CODIGOC=REG_BUSCA_LOOKUP["Codigo"]
          Else If Busca_Lookup("Codigo",[NotaC->Codigo],"")
                  Then CX_CODIGOC=REG_BUSCA_LOOKUP["Codigo"]
                  Else CX_CODIGOC=""
               EndIf
       EndIf
       If APLIC_ORIGEM<>"NOTA"
          Then UnLockRecord
       EndIf

       Continua_Caixa=True
       If SYS_CODIGO_CLIENTE="0117"
          Then If [NotaC->Codigo da Destinacao]="001" Or
                  [NotaC->Codigo da Destinacao]="002"
                  Then Continua_Caixa=False
               EndIf
               If (Search("VEND",[NotaC->Descricao da Destinacao])>0 And
                   Search("MANIF",[NotaC->Descricao da Destinacao])>0)
                  Then Continua_Caixa=False
               EndIf
       EndIf
       If Continua_Caixa
          Then Grava_Caixa()
       EndIf
EndSwitch

Release vars cx_conta_caixa, cx_vrlanc, cx_codigoc, cx_condicaos, cx_condicaol, Continua_Caixa
Release procs grava_caixa, saldo_caixa, estorno_caixa
