Histórico da Página
...
Os adiantamentos selecionados e informados pelo usuário serão abatidos do valor total do título original.
Através da compensação de títulos a pagar é possível:
- Compensar titulos de um mesmo fornecedor/loja com adiantamentos deste mesmo fornecedor/loja
- Compensar titulos de um determinado fornecedor com adiantamentos deste mesmo fornecedor, não importando qual a loja do titulo a compensar
- Compensar título de determinado fornecedor com adiantamentos de diversos fornecedores, podendo ser determinada uma faixa de fornecedores ou todos. Com isso, o título pode ser compensado com qualquer título de adiantamento em aberto no cadastro de títulos, não importando qual o fornecedor deste título.
02. EXECUÇÃO
- Manual
Procedimento efetuado de forma manual via rotina Compensação contas a pagar (FINA340), com exibição das telas envolvidas no processo e necessitando de ações/comandos do usuário
- Automática
Procedimento realizado de forma automática na rotina de Compensação contas a pagar (FINA340), sem exibição de telas ou necessidade de interação do usuário.
Utilizado em customizações onde o processo não necessita de interações do usuário (MSEXECAUTO)
02. EXECUÇÃO
- Manual
Procedimento efetuado de forma manual via rotina Compensação contas a pagar (FINA340), com exibição das telas envolvidas no processo e necessitando de ações/comandos do usuário
- Automática
Procedimento realizado de forma automática na rotina de Compensação contas a pagar (FINA340), sem exibição de telas ou necessidade de interação do usuário.
Utilizado em customizações onde o processo não necessita de interações do usuário (MSEXECAUTO)
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#INCLUDE | ||||||||
Bloco de código | ||||||||
| ||||||||
#INCLUDE 'Protheus.ch'
#INCLUDE "TBICONN.ch"
User Function CMPCPAUT()
Local nSavInd := IndexOrd()
LOCAL nSavRec := RecNO()
PRIVATE nTamTit := TamSX3("E2_PREFIXO")[1]+TamSX3("E2_NUM")[1]+TamSX3("E2_PARCELA")[1]
PRIVATE nTamTip := TamSX3("E2_TIPO")[1]
Private aCores :={ { 'E2_SALDO = E2_VALOR .AND. E2_ACRESC = E2_SDACRES','ENABLE'},; // Titulo nao Compensado
{ 'E2_SALDO = 0' , 'DISABLE'},; // Titulo Compensado Totalmente
{ 'E2_SALDO <> 0' , 'BR_AZUL'} } // Titulo Compensado Parcialmente
//-----------------------------
// Define Variaveis
//-----------------------------
PRIVATE aRotina := { { "Pesquisar","AxPesqui" , 0 , 1,,.F. },; //"Pesquisar"
{ "Visualizar","AxVisual" , 0 , 2 },; //"Visualizar"
{ "Compensar","XAFCMPAD" , 0 , 4 },; //"Compensar"
{ "Excluir","Fa340Desc" , 0 , 4 },; //"Excluir"
{ "Legenda","Fa340Leg" ,0,2, ,.F.} } //"Legenda"
//-----------------------------------------------------------------
// Carrega fun‡„o Pergunte
//-----------------------------------------------------------------
SetKey (VK_F12,{|a,b| AcessaPerg("AFI340",.T.)})
Pergunte("AFI340",.F.)
//-------------------------------------------------
// Define o cabe‡alho da tela de baixas
//-------------------------------------------------
PRIVATE cCadastro := "Compensação de Titulos Automatico"
//------------------------------------------------
// Verifica o numero do Lote
//------------------------------------------------
PRIVATE cLoteLoteCont( "FIN" )
PRIVATE VALOR := 0
PRIVATE VLRINSTR := 0 Private aTxMoedas := {}
dbSelectArea("SE2")
dbSetOrder(1)
dbGoTop()
//----------------------------------------
// Endere‡a a Funçao de BROWSE
//----------------------------------------
mBrowse( 6, 1,22,75,"SE2",,,,,,aCores)
dbSelectArea("SE2")
dbSetOrder(nSavInd)
dbGoTo(nSavRec)
Return
/* Programa | XAFCMPAD
==========================================================
Desc. | Realiza a compensação do titulo de adiantamento
*/
Static Function XAFCMPAD()
Local aArea := GetArea()
Local aAreaSE2 := SE2->(GetArea())
Local aRecPA := {} // Array contendo os Recnos dos titulos PA
Local aRecAux := {}
Local nX := 0
Local lContabiliza := .F.
Local lAglutina := .F.
Local lDigita := .F.
Local aRecSE2 := {SE2->(Recno())}
LOCAL oDlg
LOCAL nOpca := 0
Local dBaixaCMP := dDataBase
//--------------------------------------------------------
// Carrega o pergunte da rotina de compensação financeira
//--------------------------------------------------------
PERGUNTE("AFI340",.F.)
lContabiliza := MV_PAR11 == 1
lAglutina := MV_PAR08 == 1
lDigita := MV_PAR09 == 1
//----------------------------------
//Ordenação das tabelas envolvidas
//----------------------------------
SE2->(dbSetOrder(1)) //E2_FILIAL+E2_PREFIXO+E2_NUM+E2_PARCELA+E2_TIPO+E2_FORNECE+E2_LOJA
aRecAux := {}
aRecAux := XGetTitAd(SE2->E2_FORNECE,SE2->E2_LOJA )
For nX := 1 To Len(aRecAux)
aADD(aRecPA,aRecAux[nX])
Next nX
If !Empty(aRecPA)
DEFINE MSDIALOG oDlg FROM 080,000 TO 190,260 TITLE "Data de Baixa para a Compensação" PIXEL
oDlg:lMaximized := .F.
oPanel := TPanel():New(0,0,'',oDlg,, .T., .T.,, ,20,20)
oPanel:Align := CONTROL_ALIGN_ALLCLIENT
@ 015, 010 SAY "Dt. Baixa: " SIZE 52, 08 OF oPanel PIXEL
@ 015, 035 MSGET dBaixaCMP Valid !Empty(dBaixaCMP) SIZE 52, 08 OF oPanel PIXEL hasbutton
DEFINE SBUTTON FROM 034,050 TYPE 1 ACTION {||oDlg:End(),nOpca:=1} ENABLE OF oDlg
DEFINE SBUTTON FROM 034,080 TYPE 2 ACTION {||oDlg:End(),nOpca:=0} ENABLE OF oDlg
ACTIVATE MSDIALOG oDlg CENTERED
If nOpca == 1 .and. !MaIntBxCP(2,aRecSE2,,aRecPA,,{lContabiliza,lAglutina,lDigita,.F.,.F.,.F.},,,,dBaixaCMP)
Help("XAFCMPAD",1,"HELP","XAFCMPAD","Não foi possível a compensação"+CRLF+" do titulo do adiantamento",1,0)
ElseIf nOpca == 0
MsgInfo("Processo não realizado por desistência do usuário","Atencao")
Else
MsgInfo("Compensação Automática Concluida","Atencao")
EndIf
EndIf
RestArea(aAreaSE2)
RestArea(aArea)
Return
/* Programa| XGetTitAd
=====================================================================
Desc| Função que retorna os titulos de adiantamento do Fornecedor
| e Loja Informados
=====================================================================
*/
Static Function XGetTitAd( cFornece,cLoja )
Local aArea := GetArea()
Local aRecPA := {} // Array contendo os Recnos dos titulos PA
Local cQuery := ""
Local cTab := GetNextAlias()
If Select(cTab) > 0
(cTab)->(dbCloseArea())
EndIf
cQuery += " SELECT "
cQuery += " R_E_C_N_O_ SE2REC "
cQuery += " FROM " + RetSqlTab("SE2")
cQuery += " WHERE " cQuery += " E2_FORNECE = '"+cFornece+"' AND "
cQuery += " E2_LOJA = '"+cLoja+"' AND "
cQuery += " E2_TIPO IN ('PA ','NDF') AND "
cQuery += " E2_SALDO > 0 AND "
cQuery += RetSQLCond("SE2")
cQuery := ChangeQuery(cQuery)
dbUseArea(.T., "TOPCONN", TCGenQry(,,cQuery), cTab, .F., .T.)
(cTab)->(dbGoTop())
While (cTab)->(!EOF())
aAdd(aRecPA,(cTab)->SE2REC)
(cTab)->(dbSkip())
EndDo
(cTab)->(dbCloseArea())
RestArea(aArea)
Return aRecPA
|
Informações | ||
---|---|---|
| ||
A data da baixa desejada, para o processo, poderá ser enviada utilizando o 11º parâmetro da função MaIntBxCP(). Caso isso não ocorra, será considerada a data base com data de baixa. Exemplo: MaIntBxCP(2,aRecSE2,,aRecPA,,{lContabiliza,lAglutina,lDigita,.F.,.F.,.F.},,,,,dBaixaCMP) |
03. OPERAÇÕES
- Compensar
Através desta operação é possível a compensação de títulos a pagar:
- Compensar títulos de um mesmo fornecedor/loja com adiantamentos deste mesmo fornecedor/loja
- Compensar títulos de um determinado fornecedor com adiantamentos deste mesmo fornecedor, não importando qual a loja do titulo a compensar
- Compensar título de determinado fornecedor com adiantamentos de diversos fornecedores, podendo ser determinada uma faixa de fornecedores ou todos. Com isso, o título pode ser compensado com qualquer título de adiantamento em aberto no cadastro de títulos, não importando qual o fornecedor deste título.
- Excluir
Operação que permite realizar a exclusão do movimento gerado pela compensação
- Estorno
Operação que permite realizar o estorno do movimento gerado pela compensação,
...
gerando assim sua contrapartida.
- Legenda
Apresenta quadro das legendas e seus significados referenciados a situação do titulo a pagar.
- Pesquisa
Pesquisa o titulo dentro do arquivo de contas a pagar, tendo como resultado o titulo posicionado e destacado na browse.
- Visualizar
Operação que permite visualizar o titulo posicionado, podendo conferir seu saldo e valor.
04. PARÂMETROS APLICADOS
Lista de parâmetros aplicados ao FINA340 e seu processamento
Deck of Cards | ||||
---|---|---|---|---|
|
03. TELA XXXXX
Outras Ações / Ações relacionadas
...
04. TELA XXXXX
Principais Campos e Parâmetros
...
Card documentos | ||||
---|---|---|---|---|
|
...