;fun‡Æo ativada FT_NOTA
If PARAM_TITCRED<>"T"
   then return
endif   
   
;** Ft_GTCE ********************************************************************
;*  Geracao de Titulos a Receber (Credito) para Saidas                         *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 06/12/2015 por Anivel Augusto Rodrigues
;Ultima Alteracao: 17/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes procedimentos
;Ultima Alteracao: 16/06/2016 por Bruno Carvalho 
;Motivo Alteracao: Alterado NUM_LANCTO = PROXLANCTO_NLANC -> Padroniza‡Æo da rotina de Numero_Lancamento()              
;Ultima Alteracao: 05/08/2017 por Bruno Carvalho
;Motivo Alteracao: Substituido [Valor INSS] -> [Valor TC]
;Ultima Alteracao: 16/03/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Numero_Lancamento("Interno","Locked_Down")
 
;*******************************************************************************
;* Exportacao p/ Contas a Receber - Gera titulo de Credito                     *
;*******************************************************************************
Proc Atualiza_CRTC()
Private CR_LANC   
                         
Moveto "\\Sistemas\\CtaRec\\Duplic"
While True
  End
  Moveto [Numero do Lancamento]
  If Numero_Lancamento("Interno","Locked_Down")
     Then CR_LANC = PROXLANCTO_NLANC
          Release Vars PROXLANCTO_NLANC
          quitloop
  EndIf    
EndWhile

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

[Codigo da Conta         ]=CX_CONTA_CAIXA
[Codigo da Empresa       ]=[NotaC->Codigo da Empresa       ]
[Nome Fantasia Empresa   ]=[NotaC->Nome Fantasia Empresa   ]
[Codigo do Documento     ]=[NotaC->Codigo do Documento     ]
[Numero do Documento     ]=[NotaC->Numero do Documento     ]+"-TC"
[Codigo do Destinatario  ]=[NotaC->Codigo                  ]
[Nome Fantasia EmitDest  ]=[NotaC->Nome Fantasia EmitDest  ]
[Data de Emissao         ]=[NotaC->Data de Emissao         ]
[Data de Vencimento      ]=[NotaC->Data de Emissao         ]
[Data a Receber          ]=[NotaC->Data de Emissao         ]
[Valor do Documento      ]=[NotaC->Valor TC                ]
[Saldo do Documento      ]=[NotaC->Valor TC                ]
[Observacoes             ]="CREDITO OBTIDO REF. "+[NotaC->Tipo do Documento]+"/"+
                                                  [NotaC->Numero do Documento]+" * "+
                                                  [NotaC->Descricao da Destinacao]

[Tipo do Lancamento      ]="E"
[Descricao do Lancamento ]="CARTEIRA"
[Tipo do Pagamento       ]="TC"    ; GERACAO TITULO DE CREDITO
[Codigo Plano_Conta      ]=PARAM_PLANO_CONTA_GC  

Switch
   Case APLIC_ORIGEM="FATURA": [Sistema Gerador]="FT"
   Case APLIC_ORIGEM="BALCAO": [Sistema Gerador]="BA"
   Case APLIC_ORIGEM="TROCA" : [Sistema Gerador]="TR"
   Case APLIC_ORIGEM="NOTA"  : [Sistema Gerador]="DI"
EndSwitch
[Tipo Docto Gerador  ]=[NotaC->Codigo do Documento]
[Numero Docto Gerador]=[NotaC->Numero do Documento]
[Sequencia Gerador   ]=""
[Documento Referente ]=[Tipo Docto Gerador]+"/"+[Numero Docto Gerador]

Controle_Dia()

[Data de Entrada         ]=Today()
[Codigo do Representante ]=[NotaC->Codigo do Representante ]
[Nome Fantasia Represent ]=[NotaC->Nome Fantasia Represent ]

;Codigo do Cobrador do Cadastro de Representantes
If [Codigo do Cobrador]=""
   Then Moveto [Codigo do Representante]
        Busca_Lookup("Codigo do Representante",[\Sistemas\Ctarec\Duplic->Codigo do Representante],"")
        [Codigo do Cobrador   ]=REG_BUSCA_LOOKUP["Codigo_Cobrador"]
        [Descricao do Cobrador]=REG_BUSCA_LOOKUP["Descricao_Cobrador"]
EndIf   
                             
UnLockRecord

EndProc


;*******************************************************************************
;* Atualiza TC utilizado                                                       *
;*******************************************************************************
Proc Atualiza_CRTCBX(nlancto)
Private nlancto   
                         
Moveto "\\Sistemas\\CtaRec\\Duplic"
Moveto [Numero do Lancamento]
Locate nlancto
If Retval
   Then if [Tipo do Pagamento]="TC" and 
           strval([Valor do Documento])=strval([NotaV->Valor])
           then
                while true
                
                  If IsLockRecord()
                     Then Loop
                  EndIf
                  
                  [Saldo do Documento]=0
                  Unlockrecord
                
                  Moveto "\\Sistemas\\CtaRec\\Dupbaixa"
                  Moveto [Numero do Lancamento]
                  locate nlancto
                  if retval
                     then while [Numero do Lancamento]=nlancto
                            if not islockrecord()
                               then unlockrecord
                                    del
                            endif
                            
                            if eot() then quitloop endif
                          endwhile
                  endif       
                          
                  While True
                    Moveto [Numero do Lancamento]
                    End
                    Down
                    [Numero do Lancamento ]=nlancto
                    [Sequencia da Baixa   ]="1"       
                    If Not IsLockRecord()
                       Then QuitLoop
                       Else Del
                    EndIf
                  EndWhile
                  
                  [Data do Pagamento      ]=[NotaC->Data de Emissao]
                  [Valor do Recebimento   ]=[NotaV->Valor          ]
                  [Codigo da Conta        ]=CX_CONTA_CAIXA
                  [Codigo da Empresa      ]=[\Sistemas\Ctarec\Duplic->Codigo da Empresa ]
                  [Tipo da Baixa          ]="DEVOLUCAO"
                  [Codigo CCusto          ]=[\Sistemas\Ctarec\Duplic->Codigo CCusto     ]
                  [Codigo Plano_Conta     ]=[\Sistemas\Ctarec\Duplic->Codigo Plano_Conta]
                  [Descricao do Historico ]="LIQUIDACAO TC "+[\Sistemas\Ctarec\Duplic->Tipo do Documento]+
                                                         "/"+[\Sistemas\Ctarec\Duplic->Numero do Documento]
                  Switch
                     Case APLIC_ORIGEM="FATURA": [BX Sistema Gerador]="FT"
                     Case APLIC_ORIGEM="BALCAO": [BX Sistema Gerador]="BA"
                     Case APLIC_ORIGEM="TROCA" : [BX Sistema Gerador]="TR"
                     Case APLIC_ORIGEM="NOTA"  : [BX Sistema Gerador]="DI"
                  EndSwitch
                  [Bx Tipo Docto Gerador  ]=[NotaC->Codigo do Documento]
                  [Bx Numero Docto Gerador]=[NotaC->Numero do Documento]
                  [Bx Sequencia Gerador   ]=[NotaV->Sequencia]
                  
                  Controle_Dia()
                  UnLockRecord
                  
                  quitloop
                endwhile
        endif
EndIf
EndProc

;*******************************************************************************
;* Estorna TC Gerados                                                          *
;*******************************************************************************
Proc Estorna_CRTC()
Private CHV_EMPRESA, CHV_TPDOCTO, CHV_NUMERO, ci

CHV_EMPRESA =[NotaC->Codigo da Empresa  ]
CHV_TPDOCTO =[NotaC->Codigo do Documento]
CHV_NUMERO  =[NotaC->Numero do Documento]
  
For ci From 1 to 2

  Moveto "\\Sistemas\\CtaRec\\Duplic"
  Moveto [Codigo da Empresa]
  Locate IndexOrder by "Inddup30" CHV_EMPRESA,CHV_TPDOCTO,CHV_NUMERO
  If RetVal
     Then While [Codigo da Empresa   ]=CHV_EMPRESA and
                [Tipo Docto Gerador  ]=CHV_TPDOCTO and
                [Numero Docto Gerador]=CHV_NUMERO
     
            if [Tipo do Pagamento  ]="TC" and
               [Numero do Documento]=CHV_NUMERO+"-TC"
               then
                    If ( Format("W11.2,EIC",[Saldo do Documento])<>Format("W11.2,EIC",[Valor do Documento]) ) Or
                       ( [Codigo do Destinatario]<>[NotaC->Codigo ] )
                       Then MSG="O estorno ou atualiza‡„o do TC no Contas a Receber,//"
                            MSG=MSG+"referente a este documento: "+
                                CHV_EMPRESA+" / "+
                                CHV_TPDOCTO+" / "+
                                CHV_NUMERO +"//"
                            MSG=MSG+"n„o foi efetuado, pois j  foi utilizado ou nÆo confere dados ! //"
                            MSG=MSG+"Verificar o documento "+[Codigo da Empresa]+" / "+[Codigo do Documento]+" / "+[Numero do Documento]+" no Contas a Receber!"
                            Mensagem(MSG)
                            return false
                    EndIf
                    
                    if ci=2  
                       then while true
                              if not islockrecord()
                                 then unlockrecord
                                      del
                                      quitloop
                               endif        
                            endwhile
                       else Skip
                    endif
            endif

            If EOT() Then QuitLoop EndIf
            Locate Next IndexOrder by "Inddup30" CHV_EMPRESA,CHV_TPDOCTO,CHV_NUMERO
            
          EndWhile
  EndIf
EndFor

return true
EndProc


;*******************************************************************************
;* Estorna TC utilizados                                                       *
;*******************************************************************************
Proc Estorna_CRTCBX()
Private CHV_EMPRESA, CHV_TPDOCTO, CHV_NUMERO, ci, nlancto

CHV_EMPRESA =[NotaC->Codigo da Empresa  ]
CHV_TPDOCTO =[NotaC->Codigo do Documento]
CHV_NUMERO  =[NotaC->Numero do Documento]
  
Moveto "\\Sistemas\\CtaRec\\Dupbaixa"
Moveto [Codigo da Empresa]
Locate IndexOrder by "Indbxa1" CHV_EMPRESA,CHV_TPDOCTO,CHV_NUMERO
If RetVal
   Then While [Codigo da Empresa      ]=CHV_EMPRESA and
              [Bx Tipo Docto Gerador  ]=CHV_TPDOCTO and
              [Bx Numero Docto Gerador]=CHV_NUMERO 

          nlancto=[Numero do Lancamento]
   
          Moveto "\\Sistemas\\CtaRec\\Duplic"
          Moveto [NUmero do Lancamento]
          locate nlancto
          if retval
             then while true
                    if not islockrecord()
                       then [Saldo do Documento]=[Valor do Documento]
                            Unlockrecord
                            quitloop
                    endif
                  endwhile
          endif             
          
          Moveto "\\Sistemas\\CtaRec\\Dupbaixa"
          while true
            if not islockrecord()
               then unlockrecord
                    del
                    quitloop
             endif        
          endwhile

          If EOT() Then QuitLoop EndIf
          Locate Next IndexOrder by "Indbxa1" CHV_EMPRESA,CHV_TPDOCTO,CHV_NUMERO
          
        EndWhile
EndIf

EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
If Not IsAssigned(Opcaoc) Then Opcaoc="" EndIf

Moveto "NotaC"
Moveto [Codigo da Empresa]
Locate EMPRESAFISC, NOTAFISC, SERIEFISC
if retval
   then 
        Switch
          Case OP_MOVDP="ESTORNAR" or CANCELA_DUP:
               Aguarde("Efetuando Estorno TC/CONTAS A RECEBER "+Opcaoc+" "+NOTAFISC)
               
               Estorno_CRTC_Ok=Estorna_CRTC()
               Estorna_CRTCBX()
               
          Case OP_MOVDP="ATUALIZAR" and not CANCELA_DUP:
               Aguarde("Atualizando TC/TITULOS A RECEBER "+Opcaoc+" "+NOTAFISC)
               if [Valor TC]>0
                  then
                  
                       PARAM_PLANO_CONTA_GC =""
                       GetRecord "\\Sistemas\\Ctarec\\P_duplic" [NotaC->codigo da empresa] To reg_p_duplic   
                       If RetVal 
                          then PARAM_PLANO_CONTA_GC     =reg_p_duplic["Plano_Conta_GCredito"  ]
                       endif   
      
                       if Estorno_CRTC_Ok
                          then Atualiza_CRTC()
                       endif
               endif
               
               Moveto "NotaV"
               Moveto [Codigo da Empresa]
               Locate EMPRESAFISC, NOTAFISC, SERIEFISC
               If RetVal
                  Then While [Codigo da Empresa  ]=[NotaC->Codigo da Empresa  ] and
                             [Numero do Documento]=[NotaC->Numero do Documento] and
                             [Serie do Documento ]=[NotaC->Serie do Documento ]
                             
                         if [Forma de Pagamento ]="TC" and SubsTr([Numero do Cartao],1,3)="CR-"
                            then Atualiza_CRTCBX(Substr([Numero do Cartao],4,6))
                         endif   
                         
                         Moveto "NotaV"
                         Skip
                         If EOT() Then QuitLoop EndIf
                       EndWhile
               EndIf
               
        EndSwitch
endif

Release Vars PARAM_PLANO_CONTA_GC
             
Release Procs Atualiza_CRTC, Estorna_CRTC, Atualiza_CRTCBX, Estorna_CRTCBX

