Trecho do ponto de entrada que faz a chamada para o Ponto de Entrada que o cliente renomeia para XMT103RCC

O fonte MT103RCC.prx (pasta 0-Pontos Entrada Protheus) apenas chama a função U_ML103RCC() (pasta Pontos Entrada do projeto Central XML), que contém a regra:

User Function MT103RCC()

Return U_ML103RCC()
User Function ML103RCC()

	Local   nX
	Local   aInHeadSDE      := ParamIxb[1]
	Local   aInColsSDE      := ParamIxb[2]
	Local   lUsaCXml        := GetNewPar("XM_USACXML",.T.)
	Local   lMT103RCC       := ExistBlock( "XMT103RCC",,.T. )
	Local   nPosRat         := GetPosSD1("D1_RATEIO")
	Local   nPosItNF        := GetPosSD1("D1_ITEM")

	// Verifica se a Central XML está ativa
	If lUsaCXml .And. Type("aItensSDE") == "A" .And. !Empty(aItensSDE)

		For nX := 1 To Len(aCols)
			If !Empty(aItensSDE) .And. aCols[nX][nPosRat] == "1"
				RatPed2NF(aInHeadSDE,@aInColsSDE,aCols[nX][nPosItNF],0,aItensSDE)
			EndIf
		Next nX
	Endif

	// Verifica se o cliente tem o Ponto de entrada ajustado compilado
	If lMT103RCC
		aInColsSDE := ExecBlock( "XMT103RCC", .F., .F.,{aInHeadSDE,aInColsSDE})
	EndIf

Return aInColsSDE

Uso na Central XML

Finalidade: O ExecAuto padrão do MATA103 não permite informar o Rateio por Centro de Custo (SDE) quando o item também está vinculado a pedido de compra. O ponto de entrada injeta no aColsSDE o rateio informado na tela de lançamento da Central XML.
Origem do rateio: Na rotina XmlDcondor, quando o item possui um código de Rateio Externo informado, o campo D1_RATEIO é enviado como "1" e a função sfGetSDE monta o array Private aItensSDE a partir do cadastro de Rateio Externo (tabela CTJ): DE_PERC = CTJ_PERCEN, DE_CC = CTJ_CCD, DE_CONTA = CTJ_DEBITO, DE_ITEMCTA = CTJ_ITEMD, DE_CLVL = CTJ_CLVLDB.
Regra: Com XM_USACXML ativo e aItensSDE preenchido, para cada item do aCols com D1_RATEIO = "1" é chamada a função padrão RatPed2NF, que grava as linhas de rateio do item no aColsSDE.
Parâmetro: XM_USACXML - Indica se a Central XML está em uso (padrão .T.).
Compatibilização: Caso o cliente já possua o ponto de entrada MT103RCC customizado, renomear a User Function do cliente para XMT103RCC. Ela recebe os mesmos parâmetros {aHeadSDE, aColsSDE} (já com o rateio da Central XML) e deve retornar o aColsSDE.

Documentação oficial no TDN

PCOM12022 - Pontos de Entrada disponíveis no Documento de Entrada (MATA103) - Linha Microsiga Protheus - TDN

Ponto de entrada MT103RCC

Linha de Produto: Microsiga Protheus
Segmento: Serviços
Módulo: Compras (SIGACOM)
Rotina: Documento de Entrada - MATA103
Ponto de Entrada: MT103RCC
País(es): Brasil
Banco(s) de Dados: Todos
Tabelas utilizadas: SD1 - SDE - SC7
Sistema(s) operacional(is): Todos

Ponto de Entrada

Descrição: O Ponto de Entrada MT103RCC permite manipular o array de Rateio por Centro de Custo por item (aColsSDE) do Documento de Entrada.
Localização: 1) Ao carregar os itens do pedido de compra para o documento de entrada (função NFePC2Acol - MATA103X.PRX).
  1. Na inclusão via rotina automática (l103Auto), após copiar o rateio dos pedidos de compra / aRateioCC para o aColsSDE (função A103NFiscal - MATA103.PRW). | | Eventos: | Executado após a montagem do aColsSDE pela função RatPed2NF, permitindo incluir, alterar ou remover linhas de rateio antes da gravação da SDE. | | Programa Fonte: | MATA103.PRW / MATA103X.PRX | | Função: | A103NFiscal / NFePC2Acol | | Parâmetros: | PARAMIXB[1] - Array - aHeadSDE: cabeçalho dos campos da tabela SDE PARAMIXB[2] - Array - aColsSDE: rateios por item, na estrutura {cItemNF, {linhas do rateio}} | | Retorno: | aColsSDE - Array - Rateio por Centro de Custo atualizado, obrigatoriamente na mesma estrutura recebida. Obrigatório. |

Chamada no fonte padrão:

If lMT103RCC
	aColsSDE := ExecBlock( "MT103RCC", .F., .F.,{aHeadSDE,aColsSDE})
EndIf

Exemplo:

#Include 'Protheus.ch'

User Function MT103RCC()

Local aHeadSDE := PARAMIXB[1]
Local aColsSDE := PARAMIXB[2]

//Customizações do cliente

Return aColsSDE