Home

Linha Microsiga Protheus

Páginas filhas
  • PCOSINC01 - Sincronismo do cadastro -- 12566

Ponto-de-Entrada: PCOSINC01 - Sincronismo do cadastro
Versões: Microsiga Protheus 8.11
Idiomas: Espanhol , Inglês
Descrição:

O ponto de entrada PCOSINC01 permite que no módulo SIGAPCO possa se sincronizar o cadastro de contas orçamentárias com o plano de contas contábeis. Isso se dá através da configuração do valor “2” no parâmetro MV_PCOSINC.

Utilizando esta configuração do parâmetro MV_PCOSINC, a rotina de “sincronismo” do cadastro de contas orçamentárias (PCOA010), faz uma carga inicial na tabela de contas orçamentárias (AK5), a partir das contas contábeis do módulo de contabilidade gerencial (CT1).

Este ponto de entrada permite customizar a regra que realiza a importação e sincronismo das contas contábeis para a tabela de contas orçamentárias.

Observe abaixo um exemplo de utilização deste ponto de entrada.

#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

Programa Fonte
PCOSINCCO.PRW
Sintaxe

PCOSINC01 - Sincronismo do cadastro ( < cSinc> , < cAlias> , < nOpc> , < lSinc> ) --> Nil

Parâmetros:
Nome Tipo Descrição Default Obrigatório Referência
cSinc Caracter X
cAlias Caracter X
nOpc Numérico X
lSinc Lógico X
Retorno
    Nil(nulo)
  • Nil