Árvore de páginas

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/IssueDSERCTR1-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.