Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Proyecto SIF/Veri*Factu/Ley Antifraude > General/Noticias
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-07-2025
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 667
Poder: 18
espinete Va camino a la fama
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Perdona, creo que soy yo el que no te había entendido.
Revisa el mensaje #2, donde hay referencias a varios códigos e hilos donde muestra cómo generar el XML de la factura.
https://www.clubdelphi.com/foros/sho...92&postcount=2
Gracias. He probado el código y efectivamente me genera el XML del RF que estoy creando, pero me añade un nodo que no debería ir:

<?xml version="1.0"?>
<RegistroAlta>
<RegistroFacturacionType>
<IDVersion>1.0</IDVersion>
<IDFactura>

Y además añade ese <?xml version="1.0"?> al principio, aunque eso es lo de menos porque puedo quitarlo a mano.

Supongo que también debo quitar a mano el <RegistroFacturacionType> y </RegistroFacturacionType> para dejarlo limpio?

Ahora que tengo la parte del XML correspondiente al RF (uno o varios), habría que crear el XML del envío, con el "bloque" de RF a enviar.

¿Hay algún ejemplo para extraer todos los XML de los RF a enviar al crear el XML del envío?

Yo lo tengo más o menos así:

Código:
            veriFactu:=RegFactuSistemaFacturacion.Create;

            veriFactu.Cabecera   := cabeceratype.Create;
            veriFactu.Cabecera.ObligadoEmision := PersonaFisicaJuridicaESType.Create;
            veriFactu.Cabecera.ObligadoEmision.NombreRazon := VeriFactuForm.Edit7.Text;
            veriFactu.Cabecera.ObligadoEmision.NIF  := VeriFactuForm.Edit8.Text;
            veriFactu.Cabecera.RemisionVoluntaria := RemisionVoluntaria.Create;
            veriFactu.Cabecera.RemisionVoluntaria.Incidencia := IncidenciaType(1);  //0=S / 1=N

            setLength(listaFacturas,Query.RecordCount);

            j:=0;
            while not (Query.Eof) do
            begin
                mov:=Query.FieldByName('TIPO').AsString;
                fac:=Query.FieldByName('NUM').AsString;
                ser:=Query.FieldByName('SER').AsString;

                //Añadiendo Fac. al bloque...

                FacturaEnvio := obtenerXMLdelRF();
                listaFacturas[ j]:= FacturaEnvio;

                Query.next;
                inc(j);
            end;

            veriFactu.RegistroFactura:= listaFacturas;

            if length(listaFacturas)>0 then
                enviarbloque(verifactu);
La verdad es que no esperaba encontrarme con este inconveniente de tener que tratar con los XML. Yo era super feliz generando y enviando los XML sobre la marcha
Responder Con Cita
  #2  
Antiguo 09-07-2025
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 667
Poder: 18
espinete Va camino a la fama
Ok, he estado haciendo pruebas para convertir ahora de XML al objeto adecuado y tengo esta función:

Código:
function CargarRegistroAltaDesdeXML(const XMLText: string): RegistroFacturaType;
var
  XMLDoc: IXMLDocument;
  RootNode: IXMLNode;
  SOAPConv: TOPToSoapDomConvert;
  Resultado: RegistroFacturaType;
begin
  XMLDoc := TXMLDocument.Create(nil);
  try
    XMLDoc.LoadFromXML(XMLText);
    XMLDoc.Active := True;

    RootNode := XMLDoc.DocumentElement;

    SOAPConv := TOPToSoapDomConvert.Create(nil);
    try
      SOAPConv.Encoding := 'utf-8';
      SOAPConv.Options := [
        TSOAPConvertOption.soDontSendEmptyNodes,
        TSOAPConvertOption.soSendUntyped,
        TSOAPConvertOption.soTryAllSchema,
        TSOAPConvertOption.soUTF8EncodeXML
      ];

      Resultado := RegistroFacturaType.Create;
      Resultado.SOAPToObject(RootNode, RootNode, SOAPConv);

      Result := Resultado;

    finally
      SOAPConv.Free;
    end;

  finally
    XMLDoc := nil;
  end;
end;
Me estoy liando un poco con el objeto que debo usar: RegistroFacturaType, RegistroFacturacionAltaType... pero creo que con calma lo conseguiré.

Si alguien puede echarme un cable se lo agradecería, porque no sé si voy por buen camino o no. Nunca he usado los conversores estos Soap <-> XML
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Guardar y Leer fotos directamente a una base de datos sin antes guardar como archivo rmeckbell Desarrollo en Delphi para Android 6 26-06-2017 18:24:20
como guardar en postgresql (como trabaja el datamodule) mematanlimon Lazarus, FreePascal, Kylix, etc. 0 15-02-2010 19:06:12
Como guardar .JPG como Bitmap en Base de Datos Javi2 Gráficos 4 25-03-2007 17:21:57
¿Cómo guardar el Valor de TColor como un String? nesetru Gráficos 3 27-02-2004 20:21:32


La franja horaria es GMT +2. Ahora son las 04:54:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi