01. DADOS GERAIS

Produto:

Linha de Produto:

Segmento:

Módulo:

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


If ExistBlock( "PCOSINC01" ) 
	ExecBlock("PCOSINC01",.F.,.F., {SuperGetMV("MV_PCOSINC",.T.,"1"), "CT1", 2, .T.})
EndIf
#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


  • 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