Home

Linha Microsiga Protheus

Páginas filhas
  • Baixa Automatizada em Lotes - CP - CR -- 30437

Baixa Automatizada em Lotes - CP - CR

A função FBXLOTAUT() permite a Baixa Automatizada em lotes para Contas a Pagar e Receber. 

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