Cidade de Piratuba - SC, provedor Betha
Ao emitir uma NFS-e com o cObra preenchido, obtivemos o seguinte retorno na emissão:
cvc-complex-type.2.4.d: Conteúdo inválido encontrado ao iniciar com o elemento 'dps:end'. Nenhum elemento filho é esperado neste ponto.
Olhando a geração da dps, notei que o grupo de endereço estava sendo gerado todo em branco, causando o erro acima.
<dps:obra>
<dps:cObra>0000000000000</dps:cObra>
<dps:end>
<dps:CEP/>
<dps:xLgr/>
<dps:nro/>
<dps:xBairro/>
</dps:end>
</dps:obra>
Fiz a alteração do código dentro do arquivo Betha.GravarXml,
Antes alteração:
function TNFSeW_BethaAPIPropria.GerarXMLObra: TACBrXmlNode;
begin
Result := CreateElement('obra');
Result.AppendChild(AddNode(tcStr, '#1', 'inscImobFisc', 1, 30, 0,
NFSe.ConstrucaoCivil.inscImobFisc, ''));
if NFSe.ConstrucaoCivil.CodigoObra <> '' then
Result.AppendChild(AddNode(tcStr, '#1', 'cObra', 1, 30, 1,
NFSe.ConstrucaoCivil.CodigoObra, ''))
else if NFSe.ConstrucaoCivil.Cib > 0 then
Result.AppendChild(AddNode(tcStr, '#1', 'cCIB', 1, 8, 1,
Poem_Zeros(NFSe.ConstrucaoCivil.Cib, 8)));
Result.AppendChild(GerarXMLEnderecoObra);
end;
Depois alteração:
function TNFSeW_BethaAPIPropria.GerarXMLObra: TACBrXmlNode;
begin
Result := CreateElement('obra');
Result.AppendChild(AddNode(tcStr, '#1', 'inscImobFisc', 1, 30, 0,
NFSe.ConstrucaoCivil.inscImobFisc, ''));
if NFSe.ConstrucaoCivil.CodigoObra <> '' then
Result.AppendChild(AddNode(tcStr, '#1', 'cObra', 1, 30, 1,
NFSe.ConstrucaoCivil.CodigoObra, ''))
else if NFSe.ConstrucaoCivil.Cib > 0 then
Result.AppendChild(AddNode(tcStr, '#1', 'cCIB', 1, 8, 1,
Poem_Zeros(NFSe.ConstrucaoCivil.Cib, 8)))
else
Result.AppendChild(GerarXMLEnderecoObra);
end;
Apenas coloquei a geração do endereço no else seguindo cCIB, inclusive se olhar o arquivo de geração do ambiente nacional também está englobado no else.
Após a correção a nota foi emitida com sucesso. Se puderem avaliar e se estiver correto