Sao características desta rotina:
- Permitir a execução de baixas automáticas em lote, utilizando os mesmos conceitos das baixas automáticas manuais existentes hoje no sistema.
- De acordo com a configuração do parâmetro MV_BXCNAB, permitirá a geração de movimento bancário totalizador:
- Se MV_BXCNAB = S, será gerado um movimento bancário totalizador.
- Se MV_BXCNAB = N, será gerado um movimento bancário para cada baixa.
- Esta rotina não será executada caso a contabilização da rotina Baixa Automática (FINA090/FINA110) seja online e exista a possibilidade de demonstração de telas.
/--------------------------------------------------------------------------------------------------------------------------
Funcao - FBXLOTAUT()
Descricao - Baixa Automática em lotes
Sintaxe - FBxLotAut(ExpC1,ExpA2,ExpC3,ExpC4,ExpC5,ExpC6)
Parametros
----------------
ExpC1 = Alias (SE1 ou SE2)
ExpA2 = Array contendo o Recno dos arquivos a serem baixados
ExpC3 = Banco para baixa
ExpC4 = Agência para Baixa
ExpC5 = Conta para Baixa
ExpC6 = Cheque (apenas para C.Pagar)
ExpC7 = Lote para agrupamento das baixas (LoteFin - se este parâmetro não for informado, a rotina cria uma numeração específica)
ExpC8 = Natureza do Movimento Bancário totalizador (apenas C.Pagar)
Exemplo de rotina para chamada da Baixa Automática em lotes para Contas a Receber:
Observação: Neste exemplo, foi utilizado um prefixo específico para a chamada da rotina:
/----------------------------------------------------------------------------------------------------------------------------
#include "PROTHEUS.CH"
//---------------------------------------------------------------------------------------------------------------
//Baixa Automatizada CR com Totalizador
User Function AUTBXCR()
Local cBanco := PADR("001",TAMSX3("A6_COD")[1])
Local cAgencia := PADR("001",TAMSX3("A6_AGENCIA")[1])
Local cConta := PADR("001",TAMSX3("A6_NUMCON")[1])
Local aTitulos := {}
//Baixa Titulos a receber
dbSelectArea("SE1")
dbSetOrder(1)
If MsSEEK(xFilial("SE1")+"BXA")
While SE1->(!Eof()) .and. se1->(e1_filial+e1_prefixo) == xFilial("SE1")+"BXA"
//Adiciono o Array acima ao array de baixas
If SE1->E1_SALDO > 0 .and. !(SE1->E1_TIPO $ MVABATIM+"/"+MVIRABT+"/"+MVINABT)
AADD(aTitulos , SE1->(Recno()))
Endif
dbSkip()
Enddo
//Efetuo Baixa
If FBxLotAut("SE1",aTitulos,cBanco,cAgencia,cConta)
ALERT ("Baixas Executadas")
Else
ALERT ("Baixas Não Foram Executadas")
Endif
Else
Help(" ",1,"RECNO")
Endif
Return
//---------------------------------------------------------------------------------------------------------------
//Baixa Automatizada CP com Totalizador
User Function AUTBXCP()
Local cBanco := Criavar("A6_COD")
Local cAgencia := Criavar("A6_AGENCIA")
Local cConta := Criavar("A6_NUMCON")
Local cCheque := Criavar("A6_NUMCON")
Local cNatureza:= Criavar("ED_CODIGO")
Local aTitulos := {}
While .T.
nOpca := 0
DEFINE MSDIALOG oDlg FROM 10, 5 TO 26, 60 TITLE "Dados bancários para baixa"
// BANCO
@ 1.0,2 Say "Banco : "
@ 1.0,8 MSGET cBanco F3 "SA6"
// AGENCIA
@ 2.0,2 Say "Agência : "
@ 2.0,8 MSGET cAgencia
// CONTA
@ 3.0,2 Say "Conta : "
@ 3.0,8 MSGET cConta
// NUMERO CHEQUE
@ 4.0,2 Say "Núm Cheque : "
@ 4.0,8 MSGET cCheque When (Substr(cBanco,1,2)!="CX" .And. !(cBanco $ GEtMV("MV_CARTEIR")))
// NUMERO CHEQUE
@ 5.0,2 Say "Natureza : "
@ 5.0,8 MSGET cNatureza F3 "SED"
bAction := {|| oDlg:End() }
DEFINE SBUTTON FROM 105,180.1 TYPE 1 ACTION ( Eval(bAction) ) ENABLE OF oDlg
ACTIVATE MSDIALOG oDlg CENTERED
Exit
EndDo
//Baixa Titulos a Pagar
dbSelectArea("SE2")
dbSetOrder(1)
If MsSEEK(xFilial("SE2")+"BPA")
While SE2->(!Eof()) .and. SE2->(E2_FILIAL+E2_PREFIXO) == xFilial("SE2")+"BPA"
//Adiciono o Array acima ao array de baixas
If SE2->E2_SALDO > 0 .and. !(SE2->E2_TIPO $ MVABATIM+"/"+MVIRABT+"/"+MVINABT)
AADD(aTitulos , SE2->(Recno()))
Endif
dbSkip()
Enddo
//Efetuo Baixa
If FBxLotAut("SE2",aTitulos,cBanco,cAgencia,cConta,cCheque,,cNatureza)
ALERT ("Baixas Executadas")
Else
ALERT ("Baixas Não Foram Executadas")
Endif
Else
Help(" ",1,"RECNO")
Endif
Return