01. DADOS GERAIS
Produto: | Solucoes_totvs_cross |
---|
SolucaoCross | TOTVS Backoffice |
---|
|
Solucoes_totvs_parceirosexptotvs |
---|
|
|
---|
Linha de Produto: | |
---|
Segmento: | |
---|
Módulo: | Modulos_cross_segmentos |
---|
ModulosCrossSegmentos | TOTVS Backoffice (Linha Protheus) - Planejamento e Controle Orçamentário (SIGAPCO) |
---|
|
Modulos_totvs_prestadores_de_servicos |
---|
|
---|
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).
...
Bloco de código |
---|
language | cpp |
---|
theme | RDark |
---|
title | Manipulação de PE no sistema |
---|
|
If ExistBlock( "PCOSINC01" )
ExecBlock("PCOSINC01",.F.,.F., {SuperGetMV("MV_PCOSINC",.T.,"1"), "CT1", 2, .T.})
EndIf |
Bloco de código |
---|
language | cpp |
---|
theme | RDark |
---|
title | 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 |
...