Entendendo o problema.
O Manifesto Eletrônico de Documentos Fiscais (MDF-e), conforme seu leiaute, permite que sejam referenciados documentos originários.
Estes documentos podem ser CT-es, NF-es ou outros MDF-es.
Esta é a regra de validação corresponde a esta rejeição de acordo com o MOC Anexo I - Leiaute e as Regras de Validação:
Conforme é possível observar, se você está recebendo está rejeição significa que essas informações não foram encontradas no arquivo XML que foi enviado ao web service.
Como resolver?
Se você utiliza o componente nativo para Delphi/Lazarus, precisa referenciar o documento conforme exemplo:
var
LManifesto: TManifesto;
LInfMunDescarga: TinfMunDescargaCollectionItem;
LInfCTe: TinfCTeCollectionItem;
LInfCT: TinfCTCollectionItem;
LinfNFe: TinfNFeCollectionItem;
LInfMDFeTransp: TinfMDFeTranspCollectionItem;
LInfUnidTransp: TinfUnidTranspCollectionItem;
Lperi: TPeriCollectionItem;
begin
LManifesto := ACBrMDFe1.Manifestos.Add;
LInfMunDescarga := LManifesto.MDFe.infDoc.infMunDescarga.New;
//=============>CT-e<=============================
LInfCTe := LInfMunDescarga.infCTe.New;
LInfCTe.chCTe := '';
LInfCTe.SegCodBarra := '';
LInfCTe.indReentrega := '';
LInfUnidTransp := LInfCTe.infUnidTransp.New;
LinfUnidTransp.tpUnidTransp := utOutros;
LinfUnidTransp.idUnidTransp := '';
with LinfUnidTransp.lacUnidTransp.New do
nLacre := '';
with LinfUnidTransp.infUnidCarga.New do
begin
tpUnidCarga := ucOutros;
idUnidCarga := '';
with lacUnidCarga.New do
nLacre := '';
qtdRat := 0;
end;
LinfUnidTransp.qtdRat := 0;
Lperi := LInfCTe.peri.New;
Lperi.nONU := '';
lperi.xNomeAE := '';
Lperi.xClaRisco := '';
Lperi.grEmb := '';
Lperi.qTotProd := '';
Lperi.qVolTipo := '';
LinfCTe.infEntregaParcial.qtdTotal := 0;
LinfCTe.infEntregaParcial.qtdParcial := 0;
with LinfCTe.infNFePrestParcial.New do
chNFe := '';
//=============>CT<=============================
LinfCT := LInfMunDescarga.infCT.New;
LInfCT.nCT := '';
LInfCT.serie := 0;
LinfCT.subser := 0;
LinfCT.dEmi := Now;
LinfCT.vCarga := 0;
LInfUnidTransp := LInfCT.infUnidTransp.New;
LinfUnidTransp.tpUnidTransp := utOutros;
LinfUnidTransp.idUnidTransp := '';
with LinfUnidTransp.lacUnidTransp.New do
nLacre := '';
with LinfUnidTransp.infUnidCarga.New do
begin
tpUnidCarga := ucOutros;
idUnidCarga := '';
with lacUnidCarga.New do
nLacre := '';
qtdRat := 0;
end;
LinfUnidTransp.qtdRat := 0;
//=============>NF-e<=============================
LinfNFe := LInfMunDescarga.infNFe.New;
LinfNFe.chNFe := '';
LinfNFe.SegCodBarra := '';
LinfNFe.indReentrega := '';
LInfUnidTransp := LInfNFe.infUnidTransp.New;
LinfUnidTransp.tpUnidTransp := utOutros;
LinfUnidTransp.idUnidTransp := '';
with LinfUnidTransp.lacUnidTransp.New do
nLacre := '';
with LinfUnidTransp.infUnidCarga.New do
begin
tpUnidCarga := ucOutros;
idUnidCarga := '';
with lacUnidCarga.New do
nLacre := '';
qtdRat := 0;
end;
LinfUnidTransp.qtdRat := 0;
Lperi := LInfNFe.peri.New;
Lperi.nONU := '';
lperi.xNomeAE := '';
Lperi.xClaRisco := '';
Lperi.grEmb := '';
Lperi.qTotProd := '';
Lperi.qVolTipo := '';
//=============>MDF-e<=============================
LInfMDFeTransp := LInfMunDescarga.infMDFeTransp.New;
LInfMDFeTransp.chMDFe := '';
LInfMDFeTransp.indReentrega := '';
LInfUnidTransp := LInfMDFeTransp.infUnidTransp.New;
LinfUnidTransp.tpUnidTransp := utOutros;
LinfUnidTransp.idUnidTransp := '';
with LinfUnidTransp.lacUnidTransp.New do
nLacre := '';
with LinfUnidTransp.infUnidCarga.New do
begin
tpUnidCarga := ucOutros;
idUnidCarga := '';
with lacUnidCarga.New do
nLacre := '';
qtdRat := 0;
end;
LinfUnidTransp.qtdRat := 0;
Lperi := LInfMDFeTransp.peri.New;
Lperi.nONU := '';
lperi.xNomeAE := '';
Lperi.xClaRisco := '';
Lperi.grEmb := '';
Lperi.qTotProd := '';
Lperi.qVolTipo := '';
Caso utilize ACBrMonitorPLUS ou ACBrLib:
; Utilize tags abaixo para Adicionar CTes Relacionados
[infCTe001001]
chCTe=
SegCodBarra=
indReentrega=
[peri001001001]
nONU=
xNomeAE=
xClaRisco=
grEmb=
qTotProd=
qVolTipo=
[infEntregaParcial001001]
qtdTotal=0
qtdParcial=0
[infUnidTransp001001001]
idUnidTransp=
tpUnidTransp=
qtdRat=
[lacUnidTransp001001001001]
nLacre=
[infUnidCarga001001001001]
idUnidCarga=
tpUnidCarga
qtdRat=
[lacUnidCarga001001001001001]
nLacre=
; Utilize tags abaixo para Adicionar NFes Relacionadas
[infNFe001001]
chNFe=
SegCodBarra=
indReentrega=
[peri001001001]
nONU=
xNomeAE=
xClaRisco=
grEmb=
qTotProd=
qVolTipo=
[infUnidTransp001001001]
idUnidTransp=
tpUnidTransp=
qtdRat=
[lacUnidTransp001001001001]
nLacre=
[infUnidCarga001001001001]
idUnidCarga=
tpUnidCarga
qtdRat=
[lacUnidCarga001001001001001]
nLacre=
; Utilize tags abaixo para Adicionar MDFes Relacionados
[infMDFeTransp001001]
chMDFe=
indReentrega=
[peri001001001]
nONU=
xNomeAE=
xClaRisco=
grEmb=
qTotProd=
qVolTipo=
[infUnidTransp001001001]
idUnidTransp=
tpUnidTransp=
qtdRat=
[lacUnidTransp001001001001]
nLacre=
[infUnidCarga001001001001]
idUnidCarga=
tpUnidCarga
qtdRat=
[lacUnidCarga001001001001001]
nLacre=
Eu preenchi estas informações, mas mesmo assim elas não foram geradas no meu XML.
Para entender isso, primeiro precisamos observar as regras de validação das rejeições 638, 639 e 540:
Veja que de acordo com o Tipo do Emitente (tpEmit) que foi preenchido no MDF-e, um determinado tipo de documento não pode ser referenciado.
As soluções do ACBr já fazem estas tratativas internamente.
Então se, por exemplo, você preencheu o valor 1 para o tpEmit, e preencheu as informações de uma NF-e referenciada, essas informações não serão adicionadas no XML.
Você deve corrigir o tpEmit.