If PARAM_UTILIZA_PONTOS<>"S"
   Then Return
EndIf     
   
;** Ft_GRP *********************************************************************
;*  Geracao de Resgate de Pontos                                               *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 10/10/2019 por Bruno Carvalho
;Ultima Alteracao:   /  /     por                 
;Motivo Alteracao: 
 
;*******************************************************************************
;* Exportacao p/ Contas a Pagar                                                *
;*******************************************************************************
Proc Atualiza_CPRP() 

Moveto "\\Sistemas\\CtaPag\\Titulos"
While True
  End
  Moveto [Numero do Lancamento]
  If Numero_Lancamento("Interno","Locked_Down")
     Then CP_LANC = PROXLANCTO_NLANC
          Release Vars PROXLANCTO_NLANC
          quitloop
  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     ]+"-RP"
[Codigo do Emitente      ]=[NotaC->Codigo                  ]
[Nome Fantasia EmitDest  ]=[NotaC->Nome Fantasia EmitDest  ]
[Data de Emissao         ]=[NotaC->Data de Emissao         ]
[Data de Vencimento      ]=[NotaC->Data de Emissao         ]
[Data de Entrada         ]=[NotaC->Data de Emissao         ]
[Data a Pagar            ]=[NotaC->Data de Emissao         ]
[Data Competencia        ]=[NotaC->Data de Emissao         ]
[Valor do Documento      ]=VALOR_RESGATE_PONTOS
[Saldo do Documento      ]=VALOR_RESGATE_PONTOS
[Observacoes             ]="CREDITO CONCEDIDO REF. "+[NotaC->Tipo do Documento]+"/"+
                                                     [NotaC->Numero do Documento]+" * "+
                                                     [NotaC->Descricao da Destinacao]

[Tipo do Lancamento      ]="E"     
[Descricao do Lancamento ]="OUTROS PAGAMENTOS"
[Tipo do Pagamento       ]="RP"    
[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
[Lancamento Gerador      ]=[NotaC->Numero do Documento]
[Sequencia Gerador       ]=blanknum()
[Documento Referente     ]=[NOTAC->Tipo do Documento]+"/"+[Lancamento Gerador]

Switch
   Case sys_Codigo_Cliente="0377":
     if [NotaC->Tipo Movimento Estoque]="E" and
        Search("DEVOL",[NotaC->Descricao da Destinacao])>0 and
        Search("VEND" ,[NotaC->Descricao da Destinacao])>0     
        then [Codigo Plano_Conta      ]="2.1.01.01.001"
     endif   
EndSwitch

Controle_Dia()

UnLockRecord

EndProc

;*******************************************************************************
;* Atualiza RP                                                                 *
;*******************************************************************************
Proc Atualiza_CPRPBX(nlancto)
Private nlancto   

Moveto "\\Sistemas\\CtaPag\\Titulos"
Moveto [Numero do Lancamento]
Locate nlancto
If Retval
   Then if [Tipo do Pagamento]="RP" And Strval([Valor do Documento])=Strval([NotaV->Valor])
           Then While true
                
                  If IsLockRecord()
                     Then Loop
                  EndIf
                  
                  [Saldo do Documento]=0
                  Unlockrecord
                
                  Moveto "\\Sistemas\\CtaPag\\Titbaixa"
                  Moveto [Numero do Lancamento]
                  locate nlancto
                  if retval
                     then while [Numero do Lancamento]=nlancto
                            if not islockrecord()
                               then 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 Pagamento     ]=[NotaV->Valor          ]
                  [Codigo da Conta        ]=CX_CONTA_CAIXA
                  [Tipo de Operacao       ]="14"
                  [Tipo de Lancamento     ]=[\Sistemas\Ctapag\Titulos->Tipo do Lancamento]
                  [Codigo da Empresa      ]=[\Sistemas\Ctapag\Titulos->Codigo da Empresa ]
                  [Tipo da Baixa          ]="DEVOLUCAO"
                  [Codigo CCusto          ]=[\Sistemas\Ctapag\Titulos->Codigo CCusto     ]
                  [Codigo Plano_Conta     ]=[\Sistemas\Ctapag\Titulos->Codigo Plano_Conta]
                  [Descricao do Historico ]="LIQUIDACAO RP "+[\Sistemas\CtaPag\Titulos->Tipo do Documento]+
                                               "/"+[\Sistemas\CtaPag\Titulos->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 RP Gerados                                                          *
;*******************************************************************************
Proc Estorna_CPRP()
Private CHV_EMPRESA, CHV_TPDOCTO, CHV_NUMERO, ci, Achou_Lancto

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

  Moveto "\\Sistemas\\CtaPag\\Titulos"
  Moveto [Codigo da Empresa]
  Locate IndexOrder by "Indtit30" CHV_EMPRESA,CHV_TPDOCTO,CHV_NUMERO
  If RetVal
     Then While [Codigo da Empresa  ]=CHV_EMPRESA and
                [Codigo do Documento]=CHV_TPDOCTO and
                [Lancamento Gerador ]=CHV_NUMERO  
     
            if [Tipo do Pagamento  ]="RP" and
               [Numero do Documento]=CHV_NUMERO+"-RP"
               then Achou_Lancto = True
                    If (Format("W11.2,EIC",[Saldo do Documento])<>Format("W11.2,EIC",[Valor do Documento])) Or
                       ([Codigo do Emitente ]<>[NotaC->Codigo])
                       Then MSG="O estorno ou atualiza‡„o do RP no Contas a Pagar,//"
                            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 Pagar!"
                            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
            
            Moveto [Codigo da Empresa]
            Locate Next IndexOrder by "Indtit30" CHV_EMPRESA,CHV_TPDOCTO,CHV_NUMERO
            
          EndWhile
  EndIf
EndFor

If Not Achou_Lancto
   Then Return False
   Else Return True
EndIf
   
EndProc


;*******************************************************************************
;* Estorna RP utilizados                                                       *
;*******************************************************************************
Proc Estorna_CPRPBX()
Private CHV_EMPRESA, CHV_TPDOCTO, CHV_NUMERO, nlancto

CHV_EMPRESA =[NotaC->Codigo da Empresa  ]
CHV_TPDOCTO =[NotaC->Codigo do Documento]
CHV_NUMERO  =[NotaC->Numero do Documento]
  
Moveto "\\Sistemas\\CtaPag\\Titbaixa"
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\\CtaPag\\Titulos"
          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\\CtaPag\\Titbaixa"
          while true
             if not islockrecord()
                then 
                    unlockrecord
                    del
                    quitloop
              endif        
          endwhile

          If EOT() Then QuitLoop EndIf
          
          Moveto [Codigo da Empresa]
          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 RP/CONTAS A PAGAR "+Opcaoc+" "+NOTAFISC)
               
               If Estorno_CPRPBX_Ok
                  Then Estorna_CPRPBX()
               EndIf
               
               If Estorno_CPRP_Ok=Estorna_CPRP()
                  Then Estorna_CPRPBX()
               EndIf   
               
          Case OP_MOVDP="ATUALIZAR" And Not CANCELA_DUP:
               Aguarde("Atualizando RP/ESGATE DE PONTOS A PAGAR "+Opcaoc+" "+NOTAFISC)
                        
               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]="RP" 
                            Then VALOR_RESGATE_PONTOS = [Valor]
                                 PARAM_PLANO_CONTA_GC = ""
                                 If GetP_Titulo([NotaC->Codigo da Empresa])
                                    Then PARAM_PLANO_CONTA_GC = regp_titulo["Plano_Conta_GCredito"]
                                 EndIf
                                 
                                 Atualiza_CPRP()
                                 
                                 Moveto "NotaV"
                                 [Numero do Cartao  ]="CP-"+CP_LANC
                                 Atualiza_CPRPBX(CP_LANC)        
                         Endif   
                         Moveto "NotaV"
                         Skip
                         If EOT() Then QuitLoop EndIf
                       EndWhile
               EndIf
               
        EndSwitch
endif

Release Vars PARAM_PLANO_CONTA_GC,CP_LANC             
Release Procs Atualiza_CPRP, Estorna_CPRP, Atualiza_CPRPBX, Estorna_CPRPBX