01. DADOS GERAIS
| Produto: |
TOTVS Backoffice
|
|---|---|
| Linha de Produto: | Linha Protheus |
| Segmento: | Serviços |
| Módulo: | TOTVS Backoffice (Linha Protheus) - Planejamento e Controle Orçamentário (SIGAPCO)
|
| Função: | PCOSINCCO |
| País: | Brasil |
| Ticket: | Interno |
| Requisito/Story/Issue | DSERCTR1-46829 |
02. DESCRIÇÃO
O ponto de entrada PCOSINC01 permite customizar a sincronização do cadastro de contas orçamentárias no módulo SIGAPCO com o plano de contas contábeis, de acordo com uma regra específica definida pelo usuário. Quando o parâmetro MV_PCOSINC é configurado com o valor “2”, a rotina de sincronismo (PCOA010) realiza uma carga inicial das contas orçamentárias (tabela AK5) com base nas contas contábeis gerenciais (tabela CT1).
03. DEMAIS INFORMAÇÕES
Manipulação de PE no sistema
If ExistBlock( "PCOSINC01" )
ExecBlock("PCOSINC01",.F.,.F., {SuperGetMV("MV_PCOSINC",.T.,"1"), "CT1", 2, .T.})
EndIf
Exemplo de PE
#include 'rwmake.ch'
User Function PCOSinc01()
Local aArea := GetArea()
Local cSinc := ParamIxb[1]
Local cAlias := ParamIxb[2]
Local nOpc := ParamIxb[3]
Local lSinc := ParamIxb[4] // Forca sincronismo entre os cadastros
Local cFilCT1 := ''
If cSinc == '2' .And. cAlias == 'CT1'
If nOpc == 1 .Or. nOpc == 2 // 1- Inclusao , 2- Alteracao
// Inclui ou altera conta orçamentária (AK5)
// a partir da conta contábil (CT1)
If lSinc
cFilCT1 := xFilial('CT1')
CT1->(dbSetOrder(3))
CT1->(dbSeek(cFilCT1))
ProcRegua(CT1->(LastRec()))
Do While CT1->(!Eof() .And. cFilCT1==CT1_FILIAL)
IncProc()
PCOPrcSinc() // Grava tabela AK5
CT1->(dbSkip())
EndDo
Else
PCOPrcSinc() // Grava tabela AK5
EndIf
ElseIf nOpc == 3 // 3 - Exclusao
// Exclui a conta orçamentária após excluir a conta contábil relacionada
dbSelectArea('AK5')
dbSetOrder(1)
MsSeek(xFilial()+PadR(CT1->CT1_CONTA,Len(AK5->AK5_CODIGO)))
RecLock('AK5',.F.,.T.)
dbDelete()
MsUnlock()
ElseIf nOpc == 4 // Verificacao periodica de sincronismo
dbSelectArea('CT1')
dbSetOrder(3)
// Faz a verificacao da regra de contas analiticas (CT1->CT1_CLASSE == '2') e que
// comecem com '11' (SubStr(CT1->CT1_CONTA,1,2) == '11') da funcao PCOPrcSinc(),
// para evitar carga da tabela AK5 toda vez que entrar no PCO.
dbSeek(xFilial()+'2'+'11'+Replicate('z',Len(CT1->CT1_CONTA)-2),.T.)
dbSkip(-1)
If !Bof() .And. !Eof()
dbSelectArea('AK5')
dbSetOrder(1)
If !MsSeek(xFilial()+PadR(CT1->CT1_CONTA,Len(AK5->AK5_CODIGO)))
Processa({||ExecBlock('PCOSinc01',.F.,.F.,{cSinc,cAlias,2,.T.}) },'Verificando sincronização do Plano de Contas. Aguarde...')
Endif
EndIf
EndIf
EndIf
RestArea(aArea)
Return
// Atualiza as contas orcamentarias a partir da tabela de contas contabeis
Static Function PCOPrcSinc()
If CT1->CT1_CLASSE == '2' .And. SubStr(CT1->CT1_CONTA,1,2) == '11'
// Soh inclui ou atualiza se for uma conta analitica e com prefixo '11'
dbSelectArea('AK5')
dbSetOrder(1)
If MsSeek(xFilial()+PadR(CT1->CT1_CONTA,Len(AK5->AK5_CODIGO)))
RecLock('AK5',.F.)
Else
RecLock('AK5',.T.)
EndIf
AK5->AK5_FILIAL := xFilial('AK5')
AK5->AK5_CODIGO := CT1->CT1_CONTA
AK5->AK5_DESCRI := CT1->CT1_DESC01
AK5->AK5_TIPO := CT1->CT1_CLASSE
AK5->AK5_DEBCRE := CT1->CT1_NORMAL
AK5->AK5_DTINC := MsDate()
AK5->AK5_DTINI := CT1->CT1_DTEXIS
AK5->AK5_MSBLQL := CT1->CT1_BLOQ
MsUnlock()
EndIf
Return
Importante !!
- Observa-se que a utilização do PE e os impactos dele no sistema são de responsabilidade do cliente.
- Os exemplos utilizados nessa documentação são apenas para fins de demonstração, cada cliente deve verificar qual comportamento deseja realizar de acordo com o escopo do ponto de entrada.
04. ASSUNTOS RELACIONADOS
- Não se aplica.
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas