Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

01. DADOS GERAIS

Produto:

Solucoes_totvs

Solucoes_totvs_cross
SolucaoCrossTOTVS Backoffice

Solucoes_totvs_parceiros
SolucaoParceiros

Solucoes_totvs_parceirosexptotvs
SolucaoParcsExpsTOTVS

Linha de Produto:

Linhas_totvs
LinhaLinha Protheus

Segmento:

Segmentos_totvs
SegmentoServiços

Módulo:

Modulos_cross_segmentos
ModulosCrossSegmentosTOTVS Backoffice (Linha Protheus) - Planejamento e Controle Orçamentário (SIGAPCO)

Modulos_framework

Modulos_totvs_construcao

Modulos_totvs_juridico

Modulos_totvs_logistica

Modulos_totvs_manufatura

Modulos_totvs_rh

Modulos_totvs_saude

Modulos_totvs_prestadores_de_servicos

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).

...

Bloco de código
languagecpp
themeRDark
titleManipulaçã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
languagecpp
themeRDark
titleExemplo 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

...