Provedor: Betha (API Própria) — Padrão Nacional / DPS
Betha.GravarXml.pas — método TNFSeW_BethaAPIPropria.GerarXMLObra
Descrição do problema:
No leiaute do Padrão Nacional, o grupo <obra> é um xs:choice entre cObra, cCIB e end — ou seja, apenas um desses identificadores pode ser enviado. Atualmente o método GerarXMLObra do provedor Betha anexa o grupo <end> (endereço da obra) sempre, mesmo quando já foi informado cObra ou cCIB.
Isso faz a Betha rejeitar a nota com o erro de validação de schema: cvc-complex-type.2.4.d ... dps:end
Correção aplicada:
Gerar o grupo <end> apenas quando não houver cObra nem cCIB, respeitando o xs:choice do schema:
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);
Betha.GravarXml.pas