;** GT_GTIT ********************************************************************
;*  Geracao de Titulos a Pagar para Faturamento do Contas a Pagar              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 03/07/2018 por Bruno Carvalho
;Ultima Alteracao: 28/08/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ quando lan‡amento "Interno" -> Numero_Lancamento("Interno","Locked_Down")
;Ultima Alteracao: 14/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Data de Entrada

;*******************************************************************************
;* Exportacao p/ Contas a Pagar                                                *
;*******************************************************************************
Proc Atualiza_CP()
Private CHV_NUMERO_ORDEM, CP_NDIAS, CP_DATA,   
        reg_tppagto,PLCONTA
                         
If DP_NPARC>1
   Then CHV_NUMERO_ORDEM=[FatC->Numero do Documento]+"/"+CHR(65+(DP_CONTDP-1))
   Else CHV_NUMERO_ORDEM=[FatC->Numero do Documento]
EndIf

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

;Moveto [Numero do Lancamento]
;End
;If Numero_Lancamento("Interno","Locked_Down")
;   Then CP_LANC = PROXLANCTO_NLANC
;        Release Vars PROXLANCTO_NLANC
;   Else Return
;EndIf

[Codigo da Conta         ]=[FatC->Codigo da Conta         ]
[Codigo da Empresa       ]=[FatC->Codigo da Empresa       ]
[Nome Fantasia Empresa   ]=[FatC->Nome Fantasia Empresa   ]
[Codigo do Documento     ]=[FatC->Codigo do Documento     ]
[Numero do Documento     ]=CHV_NUMERO_ORDEM
[Codigo do Emitente      ]=[FatC->Codigo                  ]
[Nome Fantasia EmitDest  ]=[FatC->Nome Fantasia EmitDest  ]
[Data de Emissao         ]=[FatC->Data de Emissao         ]
[Data de Vencimento      ]=[FatV->Data                    ]
[Data a Pagar            ]=[FatV->Data                    ]
[Data Competencia        ]=[FatC->Data Competencia        ]
[Data de Entrada         ]=[FatC->Data de Entrada         ]
[Sistema Gerador         ]="FF"
[Lancamento Gerador      ]=[FatC->Numero do Lancamento    ]
[Sequencia Gerador       ]=NumVal([FatV->Sequencia])
[Documento Referente     ]=[FatC->Tipo do Documento]+"/"+[Lancamento Gerador]+"-"+StrVal([Sequencia Gerador])

While True
  CP_NDIAS=0
  If Dow([Data a Pagar])="Sat"
     Then CP_NDIAS=2
     Else If Dow([Data a Pagar])="Sun"
             Then CP_NDIAS=1
          EndIf
  EndIf
  CP_DATA = [Data a Pagar]
  Moveto "\\Sistemas\\Cadastro\\Feriados"
  Moveto [Data do Feriado]
  Locate CP_DATA
  If Retval
     Then If [Dias a Pagar]>0
             Then CP_NDIAS=[Dias a Pagar]
          EndIf
          UnLockRecord
  EndIf
  Moveto "\\Sistemas\\CtaPag\\Titulos"
  [Data a Pagar]=[Data a Pagar]+CP_NDIAS
  If CP_NDIAS=0
     Then QuitLoop
  EndIf
EndWhile

[Valor do Documento      ]=[FatV->Valor                   ]
[Saldo do Documento      ]=[FatV->Valor                   ]
[Observacoes             ]=[FatC->Tipo do Documento]+"/"+[FatC->Numero do Documento]
[Tipo do Pagamento       ]=[FatV->Forma de Pagamento      ]
[Tipo do Lancamento      ]="E"     
[Descricao do Lancamento ]="OUTROS PAGAMENTOS"
[Tipo do Pagamento       ]=[FatC->Tipo do Pagamento       ]
[Codigo Plano_Conta      ]=[FatC->Codigo Plano_Conta      ]
[Codigo CCusto           ]=[FatC->Codigo CCusto           ]
[Multa                   ]=[FatC->Multa                   ]
[Valor de Juros          ]=[FatC->Valor de Juros          ]
[Taxa de Juros           ]=[FatC->Taxa de Juros           ]           
[Tipo Taxa de Juros      ]=[FatC->Tipo Taxa de Juros      ]
[Valor do Desconto       ]=[FatC->Valor do Desconto       ] 
[Data Limite Desconto    ]=[FatC->Data Limite Desconto    ]
Controle_Dia()

UnLockRecord

EndProc

;*******************************************************************************
;* Elimina Lancamentos existentes ou regerados                                 *
;*******************************************************************************
Proc Estorna_CP()
Private CHV_EMPRESA, CHV_CODDOCTO, CHV_NUMERO, ci

CHV_EMPRESA  = [FatC->Codigo da Empresa   ]
CHV_GERSIS   = "FF"
CHV_GERLANC  = [FatC->Numero do Lancamento]

For ci From 1 To 2
  Moveto "\\Sistemas\\CtaPag\\Titulos"
  Moveto [Codigo da Empresa]
  Locate IndexOrder by "Indtit31" CHV_EMPRESA,CHV_GERSIS,CHV_GERLANC
  If RetVal
     Then While [Codigo da Empresa   ] = CHV_EMPRESA And
                [Lancamento Gerador  ] = CHV_GERLANC And
                "FF"                   = CHV_GERSIS  And
                [Sequencia Gerador   ]>0
     
            If Format("W11.2,EIC",[Saldo do Documento])<>Format("W11.2,EIC",[Valor do Documento])
               Then MSG="O estorno ou atualiza‡„o do lan‡amento no Contas a Pagar, referente//"
                    MSG=MSG+"a este lancamento n„o foi efetuado, pois j  teve baixa(s)!"+"////"
                    MSG=MSG+"Verificar o lancamento "+[Numero do Lancamento]+" referente ao documento//"
                    MSG=MSG+[Codigo da Empresa]+" / "+[Codigo do Documento]+" / "+[Numero do Documento]+" no Contas a Pagar!"
                    Mensagem(MSG)
                    Return False
            
            EndIf            
            If ci=2 
               Then Del
               Else Skip 
            EndIf
            If EOT() Then QuitLoop EndIf
            Locate Next IndexOrder by "Indtit31" CHV_EMPRESA,CHV_GERSIS,CHV_GERLANC
          EndWhile
  EndIf
EndFor

Return True
EndProc

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

CP_LANC=""

Moveto "FatC"
Moveto [Numero do Lancamento]
Locate NLANC
if retval
   then
        Switch
          Case OP_MOVDP="ESTORNAR" :
               Aguarde("Efetuando Estorno CONTAS A PAGAR "+Opcaoc+" "+NLANC)
               Estorno_CP_Ok=Estorna_CP() 
               
          Case OP_MOVDP="ATUALIZAR" :
               Aguarde("Atualizando CONTAS A PAGAR "+Opcaoc+" "+NLANC)
               DP_NPARC=0 
               
               Moveto "FatV"
               Moveto [Numero do Lancamento]
               Locate NLANC
               If RetVal
                  Then While [Numero do Lancamento] = NLANC
                         ;If [Data]>[FatC->Data de Emissao] Or [Forma de Pagamento]="CD" Or [Forma de Pagamento]="NP"
                         ;   Then DP_NPARC=DP_NPARC+1     
                         ;EndIf
                         ;Ver como vai proceder os numeros de parcelas
                         
                         ;Temporariamente comentei o trecho acima e inclui a linha a baixo
                         DP_NPARC=DP_NPARC+1
                         
                         Skip
                         If EOT() Then QuitLoop EndIf
                       EndWhile
               EndIf
        
               If DP_NPARC>0
                  Then Moveto "FatV"
                       Home
                       Moveto [Numero do Lancamento]
                       Locate NLANC
                       If RetVal
                          Then DP_CONTDP=0
                               Moveto "FatV"
                               While [Numero do Lancamento] = NLANC
                                 ;If [Data]>[FatC->Data de Emissao] Or [Forma de Pagamento]="CD" or [Forma de Pagamento]="NP"
                                 ;   then DP_CONTDP=DP_CONTDP+1
                                 ;        Atualiza_CP()
                                 ;endif
                                 ;Ver como vai proceder os numeros de parcelas
                         
                                 ;Temporariamente comentei o trecho acima e inclui a linha a baixo
                                 DP_CONTDP=DP_CONTDP+1
                                 Atualiza_CP()
                                 
                                 Moveto "FatV"
                                 [Numero Lancamento Titulos] = CP_LANC
                                 
                                 Moveto "FatV"
                                 Skip
                                 If EOT() Then QuitLoop EndIf
                               EndWhile
                       EndIf
               EndIf
        EndSwitch
endif

Release Vars dp_nparc, dp_contdp,
             PARAM_PLANO_CONTA_AVISTA, PARAM_PLANO_CONTA_APRAZO
             
Release Procs Atualiza_CP, Estorna_CP
