Pesquisar na Comunidade
Showing results for tags 'xsd'.
Encontrado 13 registros
-
Pessoal, quando dá erro de schema xml, é apresentado uma mensagem de erro amigável e uma outra com mais detalhes, só que em inglês. Eu quero formatar a mensagem que apresento para o meu usuário com o máximo de informação possível e em Português. Exemplo de mensagem retornada: TAG:<emit><enderEmit> ID:C06/xLgr(Logradouro) - Tamanho maior que o máximo permitido [RUA BELO HORIZONTEHORIZONTEHORIZONTEHORIZONTEHORIZONTEHORIZONTEHORIZONTEHORIZONTEHORIZONTEHORIZONTEHORIZONTE]. --> 1832 - Element '{http://www.portalfiscal.inf.br/nfe%7DxLgr': [facet 'maxLength'] The value has a length of '108'; this exceeds the allowed maximum length of '60'. Exemplo de mensagem que pretendo retornar ao meu usuário: { "message": "Erro Schema 1832: O campo 'xLgr' (Logradouro) da tag '<emit> <enderEmit>' apresentou o seguinte problema: 'Tamanho maior que o máximo permitido [RUA BELO HORIZONTEHORIZONTEHORIZONTEHORIZONTEHORIZONTEHORIZONTEHORIZONTEHORIZONTEHORIZONTEHORIZONTE]. Tamanho máximo: 60'. Por favor, revise os dados informados.", "error": "Bad Request", "statusCode": 400 } Estou utilizando regex para pegar alguns dados, mas o maior problema é que existe erro de schema para tamanho mínimo, máximo, enumeradores, tipos e etc. Teria alguma forma mais fácil para eu abranger todos os erros possíveis do schema de forma a capturar os dados e formatar eles para apresentar ao meu usuário? Linguagem de programação utilizada: Node.js - Nest.js
-
Configurei o ACBrNFSe_Exemplo para emitir NFSe no provedor DSF (em particular a prefeitura de Uberlândia), no início os testes foram OK, mas quando consegui começar a emitir lotes de teste começou a aparecer um problema na validação de um XSD. A mensagem de erro que aparece é essa: Comecei a depurar e cheguei na unit ACBrDFeXsMsXml, mais precisamente na função TDFeSSLXmlSignMsXml.Validar: function TDFeSSLXmlSignMsXml.Validar(const ConteudoXML, ArqSchema: String; out MsgErro: String): Boolean; var DOMDocument: IXMLDOMDocument2; ParseError: IXMLDOMParseError; Schema: XMLSchemaCache50; AXml: String; ResultInitialize: HRESULT; Inicializado: Boolean; begin Result := False; ResultInitialize := CoInitialize(nil); if (ResultInitialize = E_FAIL) then raise EACBrDFeException.Create('Erro ao inicializar biblioteca COM'); Inicializado := (ResultInitialize in [ S_OK, S_FALSE ]); try DOMDocument := CoDOMDocument50.Create; Schema := CoXMLSchemaCache50.Create; try DOMDocument.async := False; DOMDocument.resolveExternals := False; DOMDocument.validateOnParse := True; // Carregando ConteudoXML em XMLDOC. Nota: IXMLDOMDocument2 deve usar a String Nativa da IDE // {$IfDef FPC2} AXml := ACBrUTF8ToAnsi(ConteudoXML); {$Else} AXml := UTF8ToNativeString(ConteudoXML); {$EndIf} if (not DOMDocument.loadXML(WideString(AXml))) then begin ParseError := DOMDocument.parseError; MsgErro := ACBrStr('Não foi possível carregar o arquivo.')+sLineBreak+ 'Err: '+IntToStr(ParseError.errorCode) + ', ' + 'Lin: '+IntToStr(ParseError.line) + ', ' + 'Pos: '+IntToStr(ParseError.linepos) + ' - ' + String(ParseError.reason); exit; end; Schema.add(WideString(FpDFeSSL.NameSpaceURI), ArqSchema); <<<--- CHAMADA QUE GERA A EXCEÇÃO DOMDocument.schemas := Schema; ParseError := DOMDocument.validate; Result := (ParseError.errorCode = 0); MsgErro := String(ParseError.reason); finally ParseError := nil; DOMDocument := nil; Schema := nil; end; finally if Inicializado then CoUninitialize; end; end; No momento em que o depurador passa a linha "Schema.add(WideString(FpDFeSSL.NameSpaceURI), ArqSchema);" o delphi lança uma "excepiton". O valor das variáveis são os seguintes: FpDFeSSL.NameSpaceURI := 'http://localhost:8080/WsNFe2/lote' ArqSchema := 'D:\Install\Componentes\ACBr\Exemplos\ACBrDFe\ACBrNFSe\Delphi\ReqEnvioLoteRPS.xsd' O conteúdo de ReqEnvioLoteRPS.xsd é: <xs:schema xmlns:tipos="http://localhost:8080/WsNFe2/tp" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ns1="http://localhost:8080/WsNFe2/lote" targetNamespace="http://localhost:8080/WsNFe2/lote"> <xs:import namespace="http://localhost:8080/WsNFe2/tp" schemaLocation="Tipos.xsd" /> <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema_v1.01.xsd" /> <xs:element name="ReqEnvioLoteRPS"> <xs:annotation> <xs:documentation>Schema utilizado para envio de lote de RPS.</xs:documentation> <xs:documentation>Este Schema XML é utilizado pelos prestadores de serviços para substituição em lote de RPS por NFS-e. </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="Cabecalho"> <xs:annotation> <xs:documentation>Cabeçalho do Lote.</xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="CodCidade" type="tipos:tpCodCidade" minOccurs="1" maxOccurs="1"> <xs:annotation> <xs:documentation>Informe o Codigo da Cidade no Padrão SIAFI. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="CPFCNPJRemetente" type="tipos:tpCPFCNPJ" minOccurs="1" maxOccurs="1"> <xs:annotation> <xs:documentation> CNPJ do contribuinte ou CPF do Responsável Legal autorizado a entregar o lote. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="RazaoSocialRemetente" type="tipos:tpRazaoSocial" minOccurs="1" maxOccurs="1"> <xs:annotation> <xs:documentation> Informe o Nome do Contribuinte ou do Responsável Legal </xs:documentation> </xs:annotation> </xs:element> <xs:element name="transacao" type="xs:boolean" default="true" minOccurs="1" maxOccurs="1"> <xs:annotation> <xs:documentation> Informe se os RPS a serem substituídos por NF-e farão parte de uma mesma transação. True - Os RPS só serão substituídos por NF-e se não ocorrer nenhum evento de erro durante o processamento de todo o lote; False - Os RPS válidos serão substituídos por NF-e, mesmo que ocorram eventos de erro durante processamento de outros RPS deste lote. Por definição estão sendo aceitos apenas lotes com RPS válidos, o lote é recusado caso haja algum RPS inválido. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="dtInicio" type="xs:date" minOccurs="1" maxOccurs="1"> <xs:annotation> <xs:documentation> Informe a data de início do período transmitido (AAAA-MM-DD). </xs:documentation> </xs:annotation> </xs:element> <xs:element name="dtFim" type="xs:date" minOccurs="1" maxOccurs="1"> <xs:annotation> <xs:documentation> Informe a data final do período transmitido (AAAA-MM-DD). </xs:documentation> </xs:annotation> </xs:element> <xs:element name="QtdRPS" type="tipos:tpQtdRpsLote" minOccurs="1" maxOccurs="1"> <xs:annotation> <xs:documentation> Informe o total de RPS contidos na mensagem XML. OBS: O xml não pode ultrapassar o tamanho maximo de 500kb. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="ValorTotalServicos" type="tipos:tpValor" minOccurs="1" maxOccurs="1"> <xs:annotation> <xs:documentation> Informe o valor total dos serviços prestados dos RPS contidos na mensagem XML. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="ValorTotalDeducoes" type="tipos:tpValor" minOccurs="1" maxOccurs="1"> <xs:annotation> <xs:documentation> Informe o valor total das deduções dos RPS contidos na mensagem XML. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="Versao" type="tipos:tpVersao" fixed="1" minOccurs="1" maxOccurs="1"> <xs:annotation> <xs:documentation> Informe a Versão do Schema XML utilizado. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="MetodoEnvio" type="tipos:tpMetodoEnvio" minOccurs="1" maxOccurs="1"> <xs:annotation> <xs:documentation>Informe o Método de Envio</xs:documentation> </xs:annotation> </xs:element> <xs:element name="VersaoComponente" type="tipos:tpVersaoComponente" minOccurs="0" maxOccurs="1"> <xs:annotation> <xs:documentation>Versão da DLL de envio de lote. Não é necessário informar esse campo caso não utilize a DLL. </xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Lote" type="tipos:tpLote" minOccurs="1" maxOccurs="1"> <xs:annotation> <xs:documentation>Informe os RPS a serem substituidos por NF-e.</xs:documentation> </xs:annotation> </xs:element> <xs:element ref="ds:Signature" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> A exceção é gerada devido ao sistema encontrar um tipo não declarado, mas pelo que eu vejo no XSD me parece correto. O que pode estar acontecendo? Descobrimos o problema, no diretório raiz do exemplo faltou dois XSD que estavam em um subdiretório, e isso gerou o erro. Corrigimos colocando todos no mesmo diretório raiz do exemplo. Vlw galera!
-
'Arquivo servico_enviar_lote_rps_envio.xsd Não encontrado'
um tópico no fórum postou jeanPatrick ACBrNFSe
Boa noite. Estou implementando a emissão da NFS-e GINFES para São Jose do rio preto, utilizando o ACBRNFSE, em ambiente de homologação, mas a alguns minutos o sistema começou a apresentar a mensagem " 'Arquivo ...\Schemas\Ginfes\servico_enviar_lote_rps_envio.xsd Não encontrado' " Dentro da pasta ...\Schemas\Ginfes\ apresenta o arquivo "servico_enviar_lote_rps_envio_v03.xsd"... O acbr esta pegando a versão incorreta ? Grato. -
Boa tarde pessoal, Por acaso, é possível fazer a validação contra um XSD que não seja via arquivo e sim, via stream? Exemplo: O conteúdo XDS de um evento qualquer está gravado em uma tabela no banco de dados e assim, o ACBr faria a carga desse XSD via stream do banco, sem precisar gravar um arquivo fisicamente em disco? Antecipo meus agradecimentos .
-
Boa tarde pessoal. Estou tentando validar o CT-e em anexo pelo método: ACBrCTe1.Conhecimentos.LoadFromFile(...); ACBrCTe1.Conhecimentos.Validar; mas retorna o seguinte erro: Arquivo "Erro_v3.00.xsd" não encontrado. Acabei de atualizar os fontes (a pasta de Schemas também está atualizada), mas o erro persiste. Alguma ideia? Obrigado. 41180448740351000327570000013704871471254024.xml
-
Boa tarde. O que eu estou precisando fazer é teoricamente muito simples, mas não está funcionando. Eu preciso validar um XML do eSocial utilizando os arquivos .XSD que estão na pasta "...\Exemplos\ACBrDFe\Schemas\eSocial\v2_04_01". Fiz testes usando o ExemploEsocial com diferentes valores para o parâmetro SSLXmlSignLib, mas nenhum funcionou. Criei uma nova TabSheet no pgcEventos e nela um botão para validar o XML. Anexei uma imagem de como ficou a tela. No evento onClick do botão, codifique desta forma a chamada da função Validar: procedure TFExemploEsocial.Button1Click(Sender: TObject); var erros: String; begin Memo2.Lines.Clear; try if not ACBreSocial1.SSL.Validar( Memo1.Lines.Text, EditXSD.Text, erros ) then Memo2.Lines.Add( erros ); except on E: Exception do Memo2.Lines.Add( E.Message ); end; end; O XML que estou tentando validar é: <evtTabCargo xmlns="http://www.esocial.gov.br/schema/evt/evtTabCargo/v02_04_01" Id="ID1036136580000002018030705033194714"> <ideEvento> <tpAmb>2</tpAmb> <procEmi>1</procEmi> <verProc>11.0.0</verProc> </ideEvento> <ideEmpregador> <tpInsc>1</tpInsc> <nrInsc>03613658</nrInsc> </ideEmpregador> <infoCargo> <inclusao> <ideCargo> <codCargo>0001</codCargo> <iniValid>2018-03</iniValid> </ideCargo> <dadosCargo> <nmCargo>ASSISTENTE ADMINISTRATIVO</nmCargo> <codCBO>444444</codCBO> </dadosCargo> </inclusao> </infoCargo> </evtTabCargo> O XSD é o "...\Exemplos\ACBrDFe\Schemas\eSocial\v2_04_01\evtTabCargo.xsd" Abaixo, os erros que ocorrem de acordo com o parâmetro SSLXmlSignLib: - xsXmlSec e xsLibXml2: 1845 - Element '{http://www.esocial.gov.br/schema/evt/evtTabCargo/v02_04_01}evtTabCargo': No matching global declaration available for the validation root. - xsMsXml e xsMsXmlCapicom: evtTabCargo.xsd#/schema The 'http://www.esocial.gov.br/servicos/empregador/lote/eventos/envio/v1_1_0' namespace provided differs from the schema's 'http://www.esocial.gov.br/schema/evt/evtTabCargo/v02_04_01' targetNamespace Preciso do apoio de vocês para identificar onde eu estou errando. Que me deem uma orientação de como usar corretamente a função validar. Antecipadamente, agradeço pela atenção.
-
Bom dia, Estou realizando o envio do evento da Manifestação do Destinatário, e estou testando com certificado A1 e A3. Com o certificado A1 o evento é enviado e registrado com sucesso, porém com o certificado A3 ele me retorna a seguinte falha no schema: leiauteEvento_v1.00.xsd#/schema/complexType[1][@name = 'TEvento']/sequence[1]/element[1][@name = 'infEvento']/complexType[1]/sequence[1]/element[4][@name = 'dhEvento'] Undeclared XSD type : '{http://www.portalfiscal.inf.br/nfe}TDateTimeUTC' Lembrando, me retorna esse erro apenas com o certificado A3 e com o A1 não. Estou usando a nova lib WinCrypt e os schemas estão todos atualizados. Alguém poderia ajudar por favor? Obrigado.
-
Basicamente, explicando melhor, eu preciso que em apenas um botao se crie o xml da nota e transmita para os servidores. Estou tentando assim: procedure TForm1.Button2Click(Sender: TObject); begin If MessageDlg('Tem certeza que quer enviar esta NFe?',mtConfirmation,[mbyes,mbno],0)=mryes then begin GerarNFe(cds.Fields[0].AsString+'001'); end; end; daí conforme o exemplo do ACBrNFE2 segue: ACBrNFe1.NotasFiscais.Clear; with ACBrNFe1.NotasFiscais.Add.NFe do begin Ide.cNF := StrToInt(NumNFe); //Caso não seja preenchido será gerado um número aleatório pelo componente Ide.natOp := 'VENDA PRODUCAO DO ESTAB.'; Ide.indPag := ipVista; Ide.modelo := 55; Ide.serie := 1; Ide.nNF := StrToInt(NumNFe); Ide.dEmi := Date; Ide.dSaiEnt := Date; Ide.hSaiEnt := Now; Ide.tpNF := tnSaida; Ide.tpEmis := TpcnTipoEmissao(cbFormaEmissao.ItemIndex); Ide.tpAmb := taHomologacao; //Lembre-se de trocar esta variável quando for para ambiente de produção Ide.verProc := '1.0.0.0'; //Versão do seu sistema Ide.cUF := NotaUtil.UFtoCUF(edtEmitUF.Text); Ide.cMunFG := strtoint(trim(edtEmitCodCidade.Text)); Ide.finNFe := fnNormal; . Form1.SQLAUX.Close; //minha query buscando os dados do cliente Form1.SQLAUX.SQL.Text := 'select * from cliente where ...' Form1.SQLAUX.Open; Dest.CNPJCPF := Form1.SQLAUX.FieldByName('CGC').AsString; Dest.IE := Form1.SQLAUX.FieldByName('IE').AsString; Dest.ISUF := ''; Dest.xNome := Form1.SQLAUX.FieldByName('NOME').AsString; Dest.EnderDest.Fone := Form1.SQLAUX.FieldByName('FONE').AsString; //'1532599600'; azmask if Form1.SQLAUX.FieldByName('CEP').asstring <> '' then Dest.EnderDest.CEP := Form1.SQLAUX.FieldByName('CEP').AsInteger else Dest.EnderDest.CEP := 0; Dest.EnderDest.xLgr := Form1.SQLAUX.FieldByName('ENDERE').AsString; Dest.EnderDest.nro := Form1.SQLAUX.FieldByName('COMPLE').AsString; Dest.EnderDest.xCpl := ''; . i := 0; Form1.cds2.First; while not cds2.Eof do begin inc(i); with Det.Add do begin Prod.nItem := i; // Número sequencial, para cada item deve ser incrementado Prod.cProd := cds2.FieldByName('CODIGO').AsString; Prod.cEAN := cds2.FieldByName('REFERENCIA').AsString; Prod.xProd := cds2.FieldByName('DESCRICAO').AsString; Form1.SQLAUX.Close; Form1.SQLAUX.SQL.Text := 'select * from estoque where CODIGO = ' + QuotedStr(Prod.cProd); Form1.SQLAUX.Open; Prod.NCM := Form1.SQLAUX.FieldByName('CF').AsString; // Tabela NCM disponível em http://www.receita.fazenda.gov.br/Aliquotas/DownloadArqTIPI.htm Prod.EXTIPI := ''; Prod.CFOP := Form1.SQLAUX.FieldByName('CFOP').AsString; Prod.uCom := Form1.SQLAUX.FieldByName('MEDIDA').AsString; Prod.qCom := Form1.SQLQuery2.FieldByName('QUANTIDADE').AsFloat; Prod.vUnCom := Form1.SQLQuery2.FieldByName('UNITARIO').AsFloat; . Transp.veicTransp.placa := ''; Transp.veicTransp.UF := ''; Transp.veicTransp.RNTC := ''; end; //fim tenta enviar . ACBrNFe1.Configuracoes.Geral.ModeloDF := moNFe; ACBrNFe1.Configuracoes.Geral.VersaoDF := TpcnVersaoDF(ve310); ACBrNFe1.NotasFiscais.Valida; ACBrNFe1.Enviar(NumNFe,True); MemoResp.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.Retorno.RetWS); memoRespWS.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.Retorno.RetornoWS); LoadXML(MemoResp, WBResposta); --------------------------- Project --------------------------- nfe_v3.10.xsd#/schema/element[1][@name = 'NFe'] Tipo XSD não declarado: '{http://www.portalfiscal.inf.br/nfe}TNFe' --------------------------- OK --------------------------- o erro acontece quando o ponteiro está no Valida... existe o arquivo nfe_v3.10.xsd na pasta corretamente copiada... Alguém já passou por isso?
-
Bom dia galera Andei pesquisando pela web a respeito da liberação de arquivos XSDs do SAT para nós Desenvolvedores, porém nada encontrei até o momento. Alguem sabe da existência destes arquivos, que não sejam aqueles do site da Receita, cujos são destinados apenas a Fabricantes do Equipamento? Grato desde já.
-
Boa tarde! Alguém conseguiu validar o XML de venda e cancelamento com os XSDS? Não utilizo do componente ACBRSAT. Ja pesquisei sobre o assunto mais não consegui fazer essa validação no delphi 7 Se alguem ter algum exemplo ou onde posso encontrar sobre essa informação agradeço.
-
Boa tarde! Ontem eu tive problemas para emissão de NFe em SP, e li no fórum que a solução seria mudar a versão do XML para 3.10. Fiz isso, e começou a haver um problema que imaginei que fosse pela versão do ACBr, que não estava atualizada; atualizei, recompilei os pacotes necessários e tornei a compilar minha aplicação. O uso desta aplicação não é na mesma máquina do desenvolvimento, de modo que só substituí (na máquina de produção) o executável e inseri o nfe_v3.10.xsd. Os demais arquivos da aplicação continuaram os mesmos existentes antes. Porém, no processo de geração da nota, ao invocar "ACBrNFe.NotasFiscais.Valida", obtive a seguinte exceção: nfe_v3.10.xsd#/schema/element[1][@name = 'NFe'] Tipo XSD não declarado: '{http://www.portalfiscal.inf.br/nfe}TNFe' Alguém sabe o que pode estar errado e como corrigir? Obrigado!
-
Problemas Na Validação Com O Xsd De Valores Decimais
um tópico no fórum postou rafaeldalbosco ACBrNFe
Olá pessoal, encontrei um Bug no parse do XSD do XML da NFe, quando o valor total do produto for 1210085.66 ao passar pelo método TGerador.wCampo especificamente pela linha de código: ConteudoProcessado := FormatFloat('0.0000000000', valor); Retornava o valor de string na variável ConteudoProcessado = 1210085.6599999999 sendo que o campo vProd do produto é somente duas decimais, definido por tcDe2 era emitido um alerta, então fiz alguns testes e consegui resolver somente desta maneira, código abaixo: // Tipo numerico com decimais case Tipo of tcDe2 : begin NumeroDecimais := 2; ConteudoProcessado := FormatFloat('0.00', valor); end; tcDe3 : begin NumeroDecimais := 3; ConteudoProcessado := FormatFloat('0.000', valor); end; tcDe4 : begin NumeroDecimais := 4; ConteudoProcessado := FormatFloat('0.0000', valor); end; tcDe6 : begin NumeroDecimais := 6; // Incluido por Italo em 30/09/2010 ConteudoProcessado := FormatFloat('0.000000', valor); end; tcDe10: begin NumeroDecimais := 10; ConteudoProcessado := FormatFloat('0.0000000000', valor); end; end; //VlrExt := StrToFloat(valor); //ConteudoProcessado := FormatFloat('0.0000000000', valor); Alguém tem outra idéia de como solucionar o caso, se não precisaria que fosse enviado o ajuste no svn desta situação.